¿Por qué IV no necesita ser secreto en el cifrado AES CBC?

18

Según Wikipedia , el vector de inicialización (IV) no tiene que ser secreto, cuando se utiliza el modo de operación CBC. Aquí está el esquema de cifrado CBC (también de Wikipedia):

¿Qué sucede si cifro un archivo de texto sin formato, donde el primer bloque tiene una estructura estandarizada y conocida, como un encabezado?

Imaginemos el siguiente escenario:

Encripto file.pnm usando AES-CBC . El archivo pnm tiene una estructura de encabezado conocida, como:

P6
1200 800
255

Además, las dimensiones (1200 x 800) y el modo de color (P6) se pueden adivinar a partir del tamaño de archivo cifrado.

Si se conocen tanto IV como el primer bloque de texto sin formato, ¿esto no compromete a toda la cadena CBC?

    
pregunta Martin Vegter 04.05.2016 - 12:21
fuente

6 respuestas

32

Creo que es más fácil dividir esto en sus partes componentes y considerarlas como entidades separadas: AES y CBC.

AES en sí mismo "no consiste básicamente en XORingar juntos trozos del bloque", es un asunto mucho más complicado. Al ignorar la parte interna de la misma por un momento, AES se considera seguro porque sin conocer la clave, es prácticamente imposible recuperar el texto sin formato o cualquier información sobre el texto sin formato dado solo un bloque cifrado, o incluso en situaciones en las que se le da parte de El texto en claro y usted necesita encontrar el resto. Sin la clave, AES también podría ser una función de una sola vía (¡y hay esquemas MAC que se basan en esto!). Discutir los aspectos técnicos en torno a la seguridad de AES y cifrados de bloque similares es extremadamente complicado y no es algo que pueda cubrir en una respuesta, pero basta con decir que miles de criptógrafos lo han estado observando durante casi dos décadas y nadie ha encontrado nada remotamente práctico en términos de un ataque.

El diagrama que publicaste arriba describe CBC. Los cifrados de bloque, como AES, pretenden ser seguros para cifrar un bloque con una clave secreta. El problema es que rara vez queremos cifrar solo un bloque, sino un flujo de datos de longitud indeterminada. Aquí es donde los modos de bloque, como CBC, entran en juego.

Los modos de bloque tienen como objetivo hacer que los cifrados sean seguros para cifrar múltiples bloques con la misma clave. El modo de bloque más simple es el BCE, que ofrece una seguridad cero en este sentido. El BCE implica el cifrado independiente de cada bloque con la misma clave, sin ningún tipo de datos entre los bloques. Esto filtra información de dos maneras: primero, si tiene dos bloques de texto plano idénticos, obtendrá dos bloques de texto cifrado idénticos si usa la misma clave; en segundo lugar, obtendrá dos flujos de texto cifrado idénticos para dos encriptaciones del mismo mensaje con la misma clave. Este es un problema ya que filtra información sobre el texto plano.

CBC resuelve este problema introduciendo un efecto "en cascada". Cada bloque de texto sin formato se combina con el bloque de texto cifrado anterior, lo que da como resultado que los bloques de texto simple originalmente iguales ya no son iguales en el paso de cifrado, por lo que ya no producen bloques de texto cifrado iguales. Para el primer bloque de texto simple, no hay un bloque de texto cifrado anterior (aún no ha cifrado nada), y aquí es donde entra la IV. Considere, por un momento, qué pasaría si en lugar de una IV simplemente usáramos ceros para el bloque -1 th (es decir, el bloque de texto cifrado imaginario "antes" del primer bloque de texto simple). Si bien el efecto en cascada haría que los bloques de texto simple igual produjeran bloques de texto cifrado diferentes, el mismo mensaje completo se conectaría en cascada de la misma manera cada vez, dando como resultado un texto cifrado idéntico cuando el mismo mensaje completo se cifra varias veces con la misma clave. La IV resuelve esto. Al elegir un IV único, no hay dos textos cifrados que sean iguales, independientemente de si el mensaje de texto simple que se está cifrando es el mismo o diferente cada vez.

Esto debería, con suerte, ayudarlo a comprender por qué la IV no necesita ser secreta. Saber que la IV no tiene un atacante en ninguna parte, porque la IV solo está allí para garantizar la no igualdad de los textos cifrados. La clave secreta es lo que protege los datos reales.

Para enfatizar esto aún más, ni siquiera necesita el IV para descifrar todo excepto el primer bloque. El proceso de descifrado para CBC funciona a la inversa: descifre un bloque usando la clave secreta, luego xo el resultado con el bloque de texto cifrado anterior. Para todos, excepto el primer bloque, usted conoce el bloque de texto cifrado anterior (tiene el texto cifrado), por lo que el descifrado es solo un caso de conocer la clave. El único caso en el que necesita la IV para el descifrado es el primer bloque cifrado, donde el bloque de texto cifrado anterior es imaginario y se reemplaza por la IV.

    
respondido por el Polynomial 04.05.2016 - 14:48
fuente
9

No, porque la clave es secreta.

El bloque "cifrado de cifrado de bloque" en el diagrama mezcla los datos según la clave. El XOR en el diagrama no proporciona la seguridad, el cifrado sí lo hace. El XOR y el IV son solo para asegurarse de que el mismo texto simple se cifra como texto cifrado diferente para cada bloque.

    
respondido por el Sjoerd 04.05.2016 - 12:34
fuente
5

Todos los métodos modernos de encriptación (AES, blowfish, etc.) están diseñados para ser mucho más seguros de lo que parece. Veamos rápidamente algunos ataques contra los que están diseñados tales sistemas de cifrado para resistir.

Ataque conocido de texto simple: en este caso, asumimos que el atacante tiene acceso a muchos bloques de texto simple junto con los correspondientes bloques de texto cifrado cifrados bajo una clave dada K. Su objetivo es encontrar K.

Ataque de texto sin formato elegido: en este caso, asumimos que el atacante elige muchos bloques de texto sin formato y obtiene los bloques de texto cifrado correspondientes cifrados con una clave dada K. Su objetivo es encontrar K.

Ataque de texto cifrado elegido: en este caso, asumimos que el atacante elige muchos bloques de texto cifrado para los cuales obtiene los bloques de texto simple correspondientes descifrados bajo una clave dada K. Su objetivo es encontrar K.

Ataque de texto de cifrado adaptativo elegido: en este caso, asumimos que el atacante elige muchos bloques de texto de cifrado para los cuales obtiene los bloques de texto sin formato correspondientes descifrados bajo una clave K dada y luego repite este proceso con su nuevo conocimiento . Su objetivo es encontrar a K.

Si se encuentra un ataque en cualquiera de estos escenarios que logra obtener K para un cifrado moderno, dicho cifrado se declara roto y no se utilizará más. En realidad los requisitos son mucho más estrictos. Si se encuentra un ataque que puede mostrar que puede obtener incluso información parcial sobre K, diga que la paridad ya es un gran problema. O si puede demostrar que realmente no puede encontrar la clave K, pero puede hacerlo significativamente mejor que la fuerza bruta (incluso 2 ^ 110 vs 2 ^ 126 generalmente se consideraría que vale la pena publicar) para buscarla, el cifrado generalmente se declararía roto. .

En conclusión, no, no puede obtener la clave de un cifrado simplemente porque conoce un bloque de texto simple y su correspondiente texto cifrado.

    
respondido por el DRF 04.05.2016 - 16:07
fuente
3

El IV tiene los mismos requisitos de seguridad que los bloques cifrados.

Para que CBC funcione, necesita XORAR los datos no cifrados en el bloque actual con los datos cifrados del bloque anterior. Debido a que no hay un bloque antes del primer bloque (por lo que no se puede obtener un bloque encriptado) se usa un IV en su lugar.

    
respondido por el Trisped 04.05.2016 - 21:30
fuente
0

¡Vamos a contar una parábola! Aquí están los participantes:

  1. Alicia, el remitente
  2. Bob, el destinatario
  3. Eva, la persona que escucha a escondidas
  4. Jake, el asistente desesperadamente inútil de Eve

Alicia le envía un mensaje cifrado a Bob. Eve intercepta el texto cifrado y está tratando de decodificarlo. Para "ayudarla", Jake lanza una moneda equitativa 128 veces, anota sus resultados, los codifica como un número hexadecimal y se la entrega a Eva: 1eff4bb16388e2ee263eb5a8a2bf56b1 . Eve está desconcertada por esto, pero Jake insiste en que los resultados de estos lanzamientos aleatorios de monedas la ayudarán a descifrar el mensaje de Alice.

¿No crees que Jake está completamente loco? Los resultados de las 128 tiradas de monedas de Jake no tienen nada que ver con el texto del mensaje que Alice envió a Bob o la clave que usó para cifrarlo. ¡Entonces, es posible que Eve no pueda aprender nada sobre el texto simple del mensaje de las tiradas de moneda de Jake!

Y es por eso que el IV para el modo CBC no necesita ser secreto. CBC requiere un IV aleatorio para cada cifrado. Por lo tanto, las IV no están correlacionadas completamente con los colores o las teclas; por lo que el conocimiento de la IV no revela información sobre el texto simple.

    
respondido por el Luis Casillas 17.02.2017 - 04:00
fuente
-4

El vector de inicialización utilizado es un número aleatorio también llamado nonce que, cuando se combina con una clave secreta, hace que los datos originales sean completamente ilegibles. Los datos cuando primero XOR con datos de texto sin formato, los aleatoriza. La encriptación de clave secreta adicional hará que sea aún más difícil de leer. Por lo tanto, IV esencialmente no necesita ser secreto, ya que el cifrado con una clave secreta proporciona el secreto requerido. Además, los datos dentro del archivo encriptado no se pueden adivinar en AES-CBC ya que entran en muchas rondas de encriptación.

    
respondido por el Kishore 04.05.2016 - 12:49
fuente

Lea otras preguntas en las etiquetas