stringtranslate.com

Vector de inicialización

En criptografía , un vector de inicialización ( IV ) o variable de inicio [1] es una entrada a una primitiva criptográfica que se utiliza para proporcionar el estado inicial. Normalmente se requiere que el IV sea aleatorio o pseudoaleatorio , pero a veces un IV solo necesita ser impredecible o único. La aleatorización es crucial para que algunos esquemas de cifrado logren seguridad semántica , una propiedad por la cual el uso repetido del esquema bajo la misma clave no permite que un atacante infiera relaciones entre segmentos (potencialmente similares) del mensaje cifrado. Para los cifrados de bloque , el uso de un IV se describe mediante los modos de operación .

Algunas primitivas criptográficas requieren que el IV solo sea no repetitivo, y la aleatoriedad requerida se deriva internamente. En este caso, el IV se denomina comúnmente nonce ( un número que se usa solo una vez), y las primitivas (por ejemplo, CBC ) se consideran con estado en lugar de aleatorizadas . Esto se debe a que un IV no necesita reenviarse explícitamente a un destinatario, sino que puede derivarse de un estado común actualizado tanto en el lado del remitente como del receptor. (En la práctica, un nonce corto aún se transmite junto con el mensaje para considerar la pérdida del mensaje). Un ejemplo de esquemas de cifrado con estado es el modo de operación de contador, que tiene un número de secuencia para un nonce.

El tamaño del IV depende de la primitiva criptográfica utilizada; para los cifrados de bloque, generalmente es el tamaño del bloque del cifrado. En los esquemas de cifrado, la parte impredecible del IV tiene, en el mejor de los casos, el mismo tamaño que la clave para compensar los ataques de compromiso de tiempo/memoria/datos. [2] [3] [4] [5] Cuando el IV se elige al azar, se debe tener en cuenta la probabilidad de colisiones debido al problema del cumpleaños . Los cifrados de flujo tradicionales, como RC4, no admiten un IV explícito como entrada, y se necesita una solución personalizada para incorporar un IV en la clave del cifrado o en el estado interno. Se sabe que algunos diseños realizados en la práctica son inseguros; el protocolo WEP es un ejemplo notable y es propenso a ataques relacionados con el IV.

Motivación

Cifrado inseguro de una imagen como resultado de la codificación en modo de libro de códigos electrónico .

Un cifrado de bloques es uno de los elementos primitivos más básicos de la criptografía y se utiliza con frecuencia para el cifrado de datos . Sin embargo, por sí solo, solo se puede utilizar para codificar un bloque de datos de un tamaño predefinido, llamado tamaño de bloque . Por ejemplo, una única invocación del algoritmo AES transforma un bloque de texto simple de 128 bits en un bloque de texto cifrado de 128 bits de tamaño. La clave , que se proporciona como una entrada al cifrado, define la asignación entre el texto simple y el texto cifrado. Si se van a cifrar datos de longitud arbitraria, una estrategia sencilla es dividir los datos en bloques que coincidan cada uno con el tamaño de bloque del cifrado y cifrar cada bloque por separado utilizando la misma clave. Este método no es seguro, ya que los bloques de texto simple iguales se transforman en textos cifrados iguales, y un tercero que observe los datos cifrados puede determinar fácilmente su contenido incluso sin conocer la clave de cifrado.

Para ocultar patrones en datos cifrados y evitar la reemisión de una nueva clave después de cada invocación de cifrado de bloque, se necesita un método para aleatorizar los datos de entrada. En 1980, el NIST publicó un documento estándar nacional denominado Estándar Federal de Procesamiento de Información (FIPS) PUB 81, que especificaba cuatro modos de operación de cifrado de bloque , cada uno de los cuales describe una solución diferente para cifrar un conjunto de bloques de entrada. El primer modo implementa la estrategia simple descrita anteriormente y se especificó como el modo de libro de códigos electrónico (ECB). Por el contrario, cada uno de los otros modos describe un proceso en el que el texto cifrado de un paso de cifrado de bloque se entremezcla con los datos del siguiente paso de cifrado. Para iniciar este proceso, se requiere mezclar un valor de entrada adicional con el primer bloque, que se denomina vector de inicialización . Por ejemplo, el modo de encadenamiento de bloques de cifrado (CBC) requiere un valor impredecible, de tamaño igual al tamaño del bloque del cifrado, como entrada adicional. Este valor impredecible se añade al primer bloque de texto simple antes del cifrado posterior. A su vez, el texto cifrado producido en el primer paso de cifrado se añade al segundo bloque de texto simple, y así sucesivamente. El objetivo final de los esquemas de cifrado es proporcionar seguridad semántica : gracias a esta propiedad, es prácticamente imposible que un atacante extraiga información alguna del texto cifrado observado. Se puede demostrar que cada uno de los tres modos adicionales especificados por el NIST son semánticamente seguros en los denominados ataques de texto simple elegido .

Propiedades

Las propiedades de un IV dependen del esquema criptográfico utilizado. Un requisito básico es la unicidad , lo que significa que ningún IV puede reutilizarse con la misma clave. Para los cifrados de bloque, los valores de IV repetidos hacen que el esquema de cifrado pase al modo de libro de códigos electrónico: un IV igual y un texto simple igual dan como resultado un texto cifrado igual. En el cifrado de flujo, la unicidad es de importancia crucial, ya que de lo contrario el texto simple puede recuperarse fácilmente.

Ejemplo: Los cifrados de flujo cifran el texto simple P en el texto cifrado C derivando un flujo de claves K a partir de una clave y un IV dados y calculando C como C = P x o K. Supongamos que un atacante ha observado dos mensajes C 1 y C 2, ambos cifrados con la misma clave y IV. Entonces, el conocimiento de P 1 o P 2 revela el otro texto simple, ya que
C 1 x o C 2 = ( P 1 x o K) x o ( P 2 x o K) = P 1 x o P 2 .

Muchos esquemas requieren que el IV sea impredecible para un adversario . Esto se logra seleccionando el IV de forma aleatoria o pseudoaleatoria . En tales esquemas, la probabilidad de un IV duplicado es insignificante , pero se debe considerar el efecto del problema del cumpleaños . En cuanto al requisito de unicidad, un IV predecible puede permitir la recuperación de texto simple (parcial).

Ejemplo: considere un escenario donde una parte legítima llamada Alice encripta mensajes usando el modo de encadenamiento de bloques de cifrado. Considere además que hay un adversario llamado Eve que puede observar estos cifrados y es capaz de reenviar mensajes de texto simple a Alice para cifrado (en otras palabras, Eve es capaz de un ataque de texto simple elegido ). Ahora suponga que Alice ha enviado un mensaje que consiste en un vector de inicialización IV 1 y que comienza con un bloque de texto cifrado C Alice . Sea además P Alice el primer bloque de texto simple del mensaje de Alice, sea E el cifrado y sea P Eve la suposición de Eve para el primer bloque de texto simple. Ahora, si Eve puede determinar el vector de inicialización IV 2 del siguiente mensaje, podrá probar su suposición reenviando un mensaje de texto simple a Alice que comience con ( IV 2 xor IV 1 xor P Eve ); si su suposición fue correcta, este bloque de texto simple será cifrado a C Alice por Alice. Esto se debe a la siguiente observación simple:
C Alice = E ( IV 1 x o P Alice ) = E ( IV 2 x o ( IV 2 x o IV 1 x o P Alice )). [6]

Dependiendo de si el IV de un esquema criptográfico debe ser aleatorio o solo único, el esquema se denomina aleatorio o con estado . Mientras que los esquemas aleatorios siempre requieren que el IV elegido por un remitente se reenvíe a los receptores, los esquemas con estado permiten que el remitente y el receptor compartan un estado de IV común, que se actualiza de una manera predefinida en ambos lados.

Cifrados de bloque

El procesamiento de datos mediante cifrado de bloques suele describirse como un modo de operación. Los modos se definen principalmente para el cifrado y la autenticación , aunque existen diseños más nuevos que combinan ambas soluciones de seguridad en los denominados modos de cifrado autenticado . Si bien los modos de cifrado y cifrado autenticado suelen adoptar un IV que coincide con el tamaño del bloque del cifrado, los modos de autenticación se implementan comúnmente como algoritmos deterministas y el IV se establece en cero o en algún otro valor fijo.

Cifrados de flujo

En los cifrados de flujo, los IV se cargan en el estado secreto interno con clave del cifrado, después de lo cual se ejecutan una serie de rondas de cifrado antes de liberar el primer bit de salida. Por razones de rendimiento, los diseñadores de cifrados de flujo intentan mantener esa cantidad de rondas lo más pequeña posible, pero debido a que determinar la cantidad mínima segura de rondas para los cifrados de flujo no es una tarea trivial, y considerando otras cuestiones como la pérdida de entropía , exclusiva de cada construcción de cifrado, los IV relacionados y otros ataques relacionados con IV son un problema de seguridad conocido para los cifrados de flujo, lo que hace que la carga de IV en los cifrados de flujo sea una preocupación seria y un tema de investigación en curso.

WEP4

El algoritmo de cifrado 802.11 , llamado WEP (abreviatura de Wired Equivalent Privacy, privacidad equivalente a cableado ), utilizaba un IV corto de 24 bits, lo que daba lugar a IV reutilizados con la misma clave, lo que hacía que fuera fácil de descifrar. [7] La ​​inyección de paquetes permitió descifrar el WEP en tiempos tan breves como unos pocos segundos. Esto, en última instancia, llevó a la desuso del WEP.

SSL 2.0 IV

En el modo de encadenamiento de bloques cifrados (modo CBC), el IV no necesita ser secreto, pero debe ser impredecible (en particular, para cualquier texto simple dado, no debe ser posible predecir el IV que se asociará al texto simple antes de la generación del IV) en el momento del cifrado. Además, para el modo de retroalimentación de salida (modo OFB), el IV debe ser único. [8] En particular, la práctica (anteriormente) común de reutilizar el último bloque de texto cifrado de un mensaje como IV para el siguiente mensaje es insegura (por ejemplo, este método fue utilizado por SSL 2.0). Si un atacante conoce el IV (o el bloque anterior de texto cifrado) antes de especificar el siguiente texto simple, puede verificar su suposición sobre el texto simple de algún bloque que fue cifrado con la misma clave anteriormente. Esto se conoce como el ataque TLS CBC IV, también llamado ataque BEAST . [9]

Véase también

Referencias

  1. ^ ISO/IEC 10116:2006 Tecnología de la información — Técnicas de seguridad — Modos de operación para un cifrado de bloque de n bits
  2. ^ Alex Biryukov (2005). "Algunas reflexiones sobre las disyuntivas entre tiempo, memoria y datos". Archivo de publicaciones electrónicas de la IACR .
  3. ^ Jin Hong; Palash Sarkar (2005). "Redescubrimiento de las compensaciones de la memoria temporal". Archivo de publicaciones electrónicas de la IACR .
  4. ^ Biryukov, Alex; Mukhopadhyay, Sourav; Sarkar, Palash (2005). "Mejoras en el equilibrio entre tiempo y memoria con múltiples datos". En Preneel, Bart; Tavares, Stafford E. (eds.). Selected Areas in Cryptography, 12th International Workshop, SAC 2005, Kingston, ON, Canadá, 11-12 de agosto de 2005, Documentos revisados ​​seleccionados . Lecture Notes in Computer Science. Vol. 3897. Springer. págs. 110–127. doi : 10.1007/11693383_8 . ISBN. 978-3-540-33108-7.
  5. ^ Christophe De Cannière; Joseph Lano; Bart Preneel (2005). Comentarios sobre el redescubrimiento del algoritmo de compensación entre tiempo, memoria y datos (PDF) (informe técnico). Proyecto de cifrado de flujo ECRYPT. 40.
  6. ^ CWE-329: No utilizar un IV aleatorio con el modo CBC
  7. ^ Borisov, Nikita ; Goldberg, Ian ; Wagner, David . "Interceptación de comunicaciones móviles: la inseguridad de 802.11" (PDF) . Consultado el 12 de septiembre de 2006 .
  8. ^ Morris Dworkin (2001), Recomendación del NIST para los modos de operación del cifrado por bloques; capítulos 6.2 y 6.4 (PDF)
  9. ^ B. Moeller (20 de mayo de 2004), Seguridad de los conjuntos de cifrados CBC en SSL/TLS: problemas y contramedidas, archivado desde el original el 30 de junio de 2012 , consultado el 1 de septiembre de 2014

Lectura adicional