Digamos que tengo tres mensajes cifrados por AES-128 con la misma clave y IV cada vez. ¿Es posible descifrar la clave utilizada? Y lo que es más importante, ¿es posible descifrar el texto de la queja de esos mensajes?
Digamos que tengo tres mensajes cifrados por AES-128 con la misma clave y IV cada vez. ¿Es posible descifrar la clave utilizada? Y lo que es más importante, ¿es posible descifrar el texto de la queja de esos mensajes?
Lo que sucede aquí depende del modo de operación . Como regla básica, el conocimiento de los mensajes no le permitirá volver a calcular la clave en sí, pero puede proporcionarle suficiente información para (instantáneamente) descifrar cualquier otro mensaje cifrado con la misma clave y IV.
Con el modo CTR, se genera un flujo dependiente de la clave cifrando los valores sucesivos de un contador, y el contador comienza en el valor dado en el IV. El cifrado de datos real se realiza mediante XORing esta secuencia con los datos para cifrar. Si se utilizan la misma clave y IV, obtiene el mismo flujo, por lo que está en las condiciones de la (in) famosa dos veces pad . Sin conocer la clave, aún puede calcular el XOR de cualquiera de los dos mensajes, que a menudo es suficiente para descifrarlos, explotando su estructura interna. Una vez que se conoce uno de los mensajes, esto revela el flujo dependiente de la clave (hasta la longitud del mensaje) y esto permite el descifrado inmediato de cualquier otro mensaje (hasta esa longitud) cifrado con la misma clave + IV.
El modoOFB se encuentra en una situación similar: produce un flujo pseudoaleatorio dependiente de la clave. Por lo tanto, se puede romper con el mismo nivel de facilidad que el CTR.
Con el modo CBC, las cosas son un poco más difíciles para el atacante. Si los mensajes comienzan con los mismos bytes, entonces podrá verlos. Después de los primeros bytes distintos, el descifrado se vuelve mucho más difícil. Esto se debe a que, en efecto, cada bloque en el cifrado CBC se usa como IV para el resto del mensaje, y el cifrado de los datos con un cifrado de bloque tiende a producir un IV distribuido correctamente para el CBC. En general, el CBC requiere un IV aleatoriamente uniforme que es impredecible para el atacante, pero en su situación usted prevé un atacante solo pasivo, y contra tal adversario, un IV seleccionado por cifrado en un bloque de datos conocido es suficiente para el CBC, siempre que como la fuente IV no se reutiliza; esto es lo que obtienes con tus mensajes, comenzando con el primer bloque en el que los mensajes difieren.
El modo CFB está en algún punto intermedio. Si dos mensajes comienzan con los mismos bytes n , entonces los mensajes cifrados comenzarán con los mismos bytes n ; luego, para el resto del bloque que contiene el byte n + 1 , este es un relleno dos veces. Para los bytes subsiguientes, los flujos se han dividido y la potencia del atacante se detiene.
Importante: aunque los párrafos anteriores parecen indicar que CBC o CFB serían seguros para la reutilización de la clave + IV siempre que incluya un contador en el encabezado de cada mensaje, recuerde que esto es para un atacante pasivo solamente. En muchos (la mayoría) de los escenarios, el atacante también puede incrustar un poco de su propia información en los mensajes que se van a cifrar, y / o alterar los bytes cifrados y ver qué sucede cuando se descifran. Para estos escenarios, que son realistas ( muchos ataques recientes nuevamente SSL son todo sobre eso), la reutilización IV, e incluso la selección IV predecible (con CBC), son irremediablemente débiles . No reutilizar IV .
La única situación en la que un IV fijo está bien es cuando keys nunca se reutilizan, es decir, cada clave se usa para un solo mensaje. Esto es, en la práctica, más difícil de obtener que un nuevo por mensaje IV, porque las claves deben mantenerse confidenciales: ya es un desafío tener una clave conocida tanto por el remitente como por el destinatario, pero por nadie más. Al menos, IV no tiene este requisito de confidencialidad y, por lo tanto, puede transmitirse junto con el mensaje en sí.
Usar el mismo IV y la clave para más de un mensaje no pone en peligro la clave, pero sí facilita que un atacante obtenga el texto sin formato. La forma de hacerlo depende del modo de operación utilizado.
Si el modo de operación es un cifrado de flujo (como el modo Contador u OFB), usar el mismo IV y la clave para dos mensajes es como usar el mismo "pad de una vez" para dos mensajes: el atacante puede obtener un XOR de los mensajes simplemente XORIANDO los mensajes cifrados. Esto debe ser suficiente información para que un atacante competente obtenga los mensajes claros. Para obtener más detalles, consulte ¿Aprovechando la reutilización de la tecla del teclado una sola vez? .
Pero incluso si el modo de operación no es un cifrado de flujo (por ejemplo, CBC), reutilizar el mismo IV y la clave filtrará información sobre los mensajes, por ejemplo, si comienzan con los mismos datos.
Por lo tanto, la regla es: no reutilizar los IV.
Lea otras preguntas en las etiquetas aes