Confidencialidad significa que los datos no se pueden descifrar sin una clave conocida. Autenticidad significa que puede verificar criptográficamente que los datos no han sido manipulados. Un CMAC es un tipo de código de autenticación de mensaje (MAC) que utiliza cifrados de bloque para garantizar que no se haya manipulado un mensaje. . Un esquema alternativo, llamado HMACs que usa hashes se usa típicamente en su lugar. Ambos tienen el mismo resultado, asegurando que, a menos que conozca la clave, no pueda manipular los datos sin que la otra parte lo sepa.
Piénsalo de esta manera. Si envío un mensaje cifrado a mi ejército, "8F0ajc8a Op", luego, con la clave correcta, "sekrit", se puede descifrar a "ataque a las 4 PM". Por supuesto, con la clave equivocada, incluso si la clave que intentan tiene un carácter desactivado, como "sikrit", se descifra y se convierte en una tontería total. Ahora, si el enemigo atrapa el mensaje cifrado, no puede leerlo. Eso se llama confidencialidad. Sin saber "sekrit", no tendrán idea de cuándo atacaremos. Pero ¿y si lo pueden modificar? Es posible que no sepan en qué lo están convirtiendo, pero si se modifican solo un poquito, pueden descifrarlo de formas ligeramente predecibles. No pueden hacer que diga lo que quieran, pero tal vez puedan decir "atacar a las 9 PM" en su lugar. Una pequeña diferencia, pero suficiente para que puedan ganar la batalla. Cambiar solo una parte del texto cifrado puede terminar cambiando solo una parte del texto descifrado, en este caso cambia el número 4 al número 9. No sabían en qué número cambiaría, pero sabían que lo haría. Basta con confundir a nuestras tropas. Si ese cifrado usara un tipo de autenticación, como un mensaje adjunto que se deriva de alguna manera del mensaje descifrado, entonces usted podría fácilmente saber si ha sido manipulado, y nadie podría modificarlo sin que lo sepa, a menos que sepan que la clave es "sekrit". Ahora, por supuesto, los algoritmos de MAC son mucho más complejos, al igual que los cifrados, por lo que este es solo un ejemplo simple, pero debería ser claro.
En cuanto a CBC y ECB son dos modos de cifrado. Le sugiero que eche un vistazo a la página de Wikipedia para saber más sobre esto. Sin embargo, diré que, si bien el CBC tiene sus propios problemas, el BCE nunca debe usarse a menos que esté cifrando un bloque de datos, que es de 16 bytes para AES, de lo contrario esto sucederá .