standard proceso encriptación criptografia cifrado algoritmo advanced cryptography aes initialization-vector

cryptography - criptografia - proceso de encriptación aes



Encriptación AES Cómo transportar IV. (2)

Entiendo que el IV único es importante en el cifrado para evitar ataques como el análisis de frecuencia. La pregunta: para el cifrado AES CBC, ¿cuál es la importancia de la IV? Tiene una respuesta bastante clara explicando la importancia del IV.

¿Habría agujeros de seguridad al enviar el IV en texto claro? ¿O debería estar cifrado con la misma clave pública / privada que se utilizó para enviar la clave simétrica?

Si la IV debe enviarse cifrada, ¿por qué no generar una nueva clave simétrica cada vez y considerar la IV como parte de la clave? ¿Es que generar una clave simétrica es demasiado costoso? ¿O es para minimizar la cantidad de datos transportados?

La respuesta principal al Vector de Inicialización Secreto vs. No Secreto dice:

Un protocolo de establecimiento de claves típico resultará en que ambas partes involucren el cálculo de una parte de los datos que ellos, pero solo ellos, ambos conocen. Con Diffie-Hellman (o cualquier variante de la curva elíptica de la misma), dicho dato compartido tiene una longitud fija y no tienen control sobre su valor (ambos obtienen la misma secuencia de bits aparentemente aleatoria).

¿Cómo dos entidades derivan la "misma secuencia de bits aparentemente aleatoria" sin tener una información compartida? ¿Se supone que la información compartida se envió encriptada? Y, si la información compartida se envía encriptada, ¿por qué no enviar la IV cifrada?

Debido a que una aplicación necesita transportar la clave simétrica de manera segura, parecería que separar la IV de la clave en sí es esencialmente una optimización. ¿O me estoy perdiendo algo?


La principal diferencia entre el vector de inicialización y la clave es que la clave debe mantenerse secreta, mientras que la IV no tiene que serlo, puede ser leída por un atacante sin peligro para la seguridad del esquema de encriptación en cuestión.

La idea es que puede usar la misma clave para varios mensajes, solo para usar diferentes vectores de inicialización (aleatorios) para cada uno, por lo que las relaciones entre los textos simples no se muestran en los textos cifrados correspondientes.

Dicho esto, si está utilizando un esquema de acuerdo clave como Diffie-Hellman, que le proporciona un nuevo secreto compartido para cada sesión, también puede usarlo para generar el primer vector de inicialización. Esto realmente no ofrece muchas ventajas de seguridad en comparación con elegir el vector de inicialización directamente y enviarlo con el mensaje, pero guarda algunos bits de ancho de banda y algunos bits de entropía de su fuente aleatoria. Y hace que la IV sea un poco más aleatoria en caso de que uno de los socios tenga una mala fuente de aleatoriedad (aunque DH tampoco es realmente seguro en este caso).

¿Cómo dos entidades derivan la "misma secuencia de bits aparentemente aleatoria" sin tener una información compartida? ¿Se supone que la información compartida se envió encriptada? Y, si la información compartida se envía encriptada, ¿por qué no enviar la IV cifrada?

Diffie-Hellman se basa en un problema de teoría de grupos: Eve conoce un grupo G (cíclico) con generador g y ve los dos valores g^a (transmitidos de Alicia a Bob) y g^b (transmitidos de Bob a Alicia) , donde a y b son enteros grandes aleatorios elegidos por Alice y Bob, y desconocidos para Eve e incluso para el otro compañero). El secreto compartido es entonces (g^a)^b = g^(a·b) = (g^b)^a . Obviamente, Bob (quien sabe b ) puede calcular el secreto como (g^a)^b , mientras que Alice (quien sabe a ) puede calcular (g^b)^a . Eva de alguna manera necesita derivar este secreto para romper el protocolo.

En algunos grupos, esto (conocido como el problema computacional de Diffie-Hellman ) parece ser un problema difícil, y estamos utilizando estos grupos en la criptografía. (En el DH original, usamos un subgrupo de primer orden del grupo multiplicativo de un gran campo primo finito, en la curva elíptica DH usamos un grupo de curva elíptica sobre un campo finito. Otros grupos también funcionan (pero algunos de ellos son débil, por ejemplo, en el grupo aditivo de un campo es trivial de resolver).

Luego, tanto Alice como Bob utilizan una función de derivación de clave para derivar el material de clave real (es decir, las claves de cifrado para ambas direcciones, las claves MAC y los IV iniciales).


No hay un agujero de seguridad al enviar el IV en texto claro: esto es similar a almacenar la sal para un hash en texto sin formato: siempre que el atacante no tenga control sobre el IV / sal, y mientras sea aleatorio, no hay problema.