Con el cifrado AES y una clave conocida y texto sin formato, ¿puede un atacante crear una clave diferente y texto sin formato que resulte en el mismo texto cifrado?

Aug 19 2020

En resumen: con el cifrado AES, un atacante puede crear una nueva clave2 y texto plano2 de modo que AES clave1 (texto plano1 ) = clave AES2 (texto plano2 )

Si es así, ¿se puede resolver simplemente aplicando, por ejemplo, un MAC como AES-GCM o un AES-CTR con un HMAC SHA256?

Aplicación prevista: el cifrado de un archivo. Cada cliente que tenga la clave puede descifrar el archivo. El archivo cifrado es manejado ciegamente por un servidor (sin conocer la clave) por su hash SHA256. Cuando un nuevo cliente recibe una clave falsa con el archivo alojado, debería poder detectar que es la clave incorrecta. Y no obtener ningún otro binario (ruidoso) del mismo archivo cifrado como resultado. Observando que un atacante que entrega la clave falsa tiene acceso a la clave original, el texto cifrado y, por lo tanto, también al texto sin formato.

(La opción de cifrar archivos idénticos con claves diferentes debería estar ahí. Por lo tanto, el cifrado determinista no es mi intención)

Otra posible solución sencilla que pensé sería almacenar el hash de la clave secreta junto con el archivo cifrado en el servidor y enviarlo al cliente para verificarlo. Pero en realidad prefiero usar una solución lista para usar bien conocida, y no algo que se me ocurrió. ¿Es suficiente aplicar un MAC / HMAC para garantizar que solo una clave resulte en el texto cifrado dado?

Espero que mi intención sea clara y que alguien con conocimientos pueda indicarme la dirección correcta.

Respuestas

5 YehudaLindell Aug 19 2020 at 03:49

Para AES básico, es fácil encontrar dos claves de esta manera. Tomar cualquiera$key1$ y $plaintext1$ y calcular $c=AES_{key1}(plaintext1)$. Entonces, toma cualquier$key2$ y calcular $plaintext2 = AES^{-1}_{key2}(c)$. Resulta que$AES_{key1}(plaintext1) = AES_{key2}(plaintext2)$. Dicho esto, si AES se utiliza en un modo de cifrado autenticado con un MAC, esto puede no ser necesariamente posible. Deseo enfatizar que no hay garantía de que no, y tal cosa tendría que ser probada. En particular, si hiciera el cifrado-luego-MAC estándar (con claves diferentes), entonces esto sería vulnerable exactamente de la misma manera, ya que la parte de "cifrado" no se modifica. En pocas palabras, esto debería ser posible de lograr, pero ciertamente no está garantizado y, a menudo, no se cumple en absoluto.