En criptografía , un vector de inicialización ( IV ) o variable de inicio [ 1 ] es una entrada para 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 bloques , el uso de un IV se describe mediante los modos de operación .
Algunos algoritmos criptográficos básicos requieren que el vector de inicialización (IV) no se repita, y la aleatoriedad necesaria se deriva internamente. En este caso, el IV se suele denominar nonce (un número que se usa solo una vez), y los algoritmos básicos (por ejemplo, CBC ) se consideran con estado en lugar de aleatorios . Esto se debe a que no es necesario enviar explícitamente un IV al destinatario, sino que puede derivarse de un estado común actualizado tanto en el emisor como en el receptor. (En la práctica, se sigue transmitiendo un nonce corto junto con el mensaje para tener en cuenta la posible pérdida de mensajes). Un ejemplo de esquemas de cifrado con estado es el modo de operación de contador, que tiene un número de secuencia para el nonce.
El tamaño del IV depende de la primitiva criptográfica utilizada; para los cifrados de bloques, 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 compensación de tiempo/memoria/datos. [ 2 ] [ 3 ] [ 4 ] [ 5 ] Cuando el IV se elige aleatoriamente, debe tenerse 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 o el estado interno del cifrado. Se sabe que algunos diseños implementados en la práctica son inseguros; el protocolo WEP es un ejemplo notable y es propenso a ataques de IV relacionados.
Motivación

El cifrado por bloques es una de las primitivas más básicas de la criptografía y se utiliza con frecuencia para el cifrado de datos . Sin embargo, por sí solo, solo puede utilizarse para codificar un bloque de datos de un tamaño predefinido, denominado tamaño de bloque . Por ejemplo, una sola invocación del algoritmo AES transforma un bloque de texto plano de 128 bits en un bloque de texto cifrado de 128 bits. La clave , que se proporciona como entrada al cifrador, define la correspondencia entre el texto plano y el texto cifrado. Si se desea cifrar datos de longitud arbitraria, una estrategia sencilla consiste en dividir los datos en bloques, cada uno del mismo tamaño que el del cifrador, y cifrar cada bloque por separado utilizando la misma clave. Este método no es seguro, ya que bloques de texto plano 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 emisión de una nueva clave tras cada invocación del cifrado por bloques, 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 por bloques , 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 denominó modo de libro de códigos electrónico (ECB). En cambio, cada uno de los demás modos describe un proceso en el que el texto cifrado de un paso de cifrado por bloques se mezcla con los datos del siguiente paso de cifrado. Para iniciar este proceso, se requiere un valor de entrada adicional que se mezcla con el primer bloque, denominado 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 plano antes del cifrado posterior. A su vez, el texto cifrado generado en el primer paso de cifrado se añade al segundo bloque de texto plano, y así sucesivamente. El objetivo final de los esquemas de cifrado es proporcionar seguridad semántica : gracias a esta propiedad, resulta prácticamente imposible para un atacante obtener información a partir del texto cifrado observado. Se puede demostrar que cada uno de los tres modos adicionales especificados por el NIST es semánticamente seguro frente a los denominados ataques de texto plano elegido .
Propiedades
Las propiedades de un vector de inicialización (IV) dependen del esquema criptográfico utilizado. Un requisito fundamental es la unicidad , lo que significa que ningún IV puede reutilizarse con la misma clave. En los cifrados por bloques, la repetición de valores de IV convierte el esquema de cifrado en un modelo de libro de códigos electrónico: un IV igual y un texto plano idéntico dan como resultado un texto cifrado idéntico. En el cifrado de flujo, la unicidad es crucial, ya que, de lo contrario, el texto plano podría recuperarse fácilmente.
- Ejemplo: Los cifradores de flujo cifran el texto plano P en texto cifrado C derivando un flujo de claves K a partir de una clave y un IV dados, y calculando C como C = P xor 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 plano, ya que
- C 1 xor C 2 = ( P 1 xor K) xor ( P 2 xor K) = P 1 xor P 2 .
Muchos esquemas requieren que el vector de inicialización (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 debe considerarse el efecto del problema del cumpleaños . En cuanto al requisito de unicidad, un IV predecible puede permitir la recuperación de texto plano (parcial).
- Ejemplo: Consideremos un escenario donde una parte legítima llamada Alice cifra mensajes utilizando el modo de encadenamiento de bloques de cifrado. Consideremos además que hay un adversario llamado Eve que puede observar estos cifrados y es capaz de reenviar mensajes en texto plano a Alice para su cifrado (en otras palabras, Eve es capaz de un ataque de texto plano elegido ). Ahora supongamos que Alice ha enviado un mensaje que consta de 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 plano del mensaje de Alice, sea E el cifrado y sea P Eve la suposición de Eve para el primer bloque de texto plano. 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 plano a Alice que comience con ( IV 2 xor IV 1 xor P Eve ); si su suposición fue correcta, Alice cifrará este bloque de texto plano en C Alice . Esto se debe a la siguiente observación simple:
- C Alice = E ( IV 1 xor P Alice ) = E ( IV 2 xor ( IV 2 xor IV 1 xor P Alice )). [ 6 ]
Según si el vector de inicialización (IV) de un esquema criptográfico debe ser aleatorio o único, el esquema se denomina aleatorio o con estado . Mientras que los esquemas aleatorios siempre requieren que el IV elegido por el emisor se envíe a los receptores, los esquemas con estado permiten que el emisor y el receptor compartan un estado común del IV, que se actualiza de forma predefinida en ambos lados.
Cifrados de bloques
El procesamiento de datos mediante cifrado por bloques se suele describir como un modo de operación. Los modos se definen principalmente para el cifrado y la autenticación , aunque existen diseños más recientes que combinan ambas soluciones de seguridad en los llamados modos de cifrado autenticado . Mientras que los modos de cifrado y cifrado autenticado suelen utilizar un vector de inicialización (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 cifradores de flujo, los vectores de inicialización (IV) se cargan en el estado secreto interno del cifrador, tras lo cual se ejecutan varias rondas de cifrado antes de liberar el primer bit de salida. Por razones de rendimiento, los diseñadores de cifradores de flujo intentan mantener ese número de rondas lo más pequeño posible, pero dado que determinar el número mínimo seguro de rondas para los cifradores de flujo no es una tarea trivial, y considerando otros problemas como la pérdida de entropía , que es única para cada construcción de cifrado, los ataques relacionados con los IV y otros ataques relacionados con los IV son un problema de seguridad conocido para los cifradores de flujo, lo que hace que la carga de IV en los cifradores de flujo sea una preocupación seria y un tema de investigación en curso.
WEP IV
El algoritmo de cifrado 802.11 , denominado WEP (acrónimo de Wired Equivalent Privacy ), utilizaba un vector de inicialización (IV) corto de 24 bits, lo que provocaba la reutilización de IV con la misma clave y, por consiguiente, su fácil descifrado. [ 7 ] La inyección de paquetes permitía descifrar WEP en cuestión de segundos. Esto, en última instancia, condujo a la descontinuación de WEP.
SSL 2.0 IV
En el modo de encadenamiento de bloques de cifrado (modo CBC), el IV no necesita ser secreto, pero debe ser impredecible (en particular, para cualquier texto plano dado, no debe ser posible predecir el IV que se asociará al texto plano antes de su generación) 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 de texto cifrado anterior) antes de especificar el siguiente texto plano, puede comprobar su suposición sobre el texto plano 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
- ↑ ISO/IEC 10116:2006 Tecnología de la información — Técnicas de seguridad — Modos de operación para un cifrado de bloques de n
- ↑ Alex Biryukov (2005). "Algunas reflexiones sobre las compensaciones entre tiempo, memoria y datos" . Archivo de preimpresiones de la IACR .
- ↑ Jin Hong; Palash Sarkar (2005). "Redescubrimiento de las compensaciones de la memoria temporal" . Archivo de preimpresiones de la IACR .
- ↑ Biryukov, Alex; Mukhopadhyay, Sourav; Sarkar, Palash (2005). "Mejora de las compensaciones tiempo-memoria con datos múltiples". En Preneel, Bart; Tavares, Stafford E. (eds.). Áreas selectas en criptografía, 12.º Taller Internacional, SAC 2005, Kingston, ON, Canadá, 11-12 de agosto de 2005, Artículos seleccionados revisados . Lecture Notes in Computer Science. Vol. 3897. Springer. pp. 110–127 . doi : 10.1007/11693383_8 . ISBN 978-3-540-33108-7.
- ↑ Christophe De Cannière; Joseph Lano; Bart Preneel (2005). Comentarios sobre el redescubrimiento del algoritmo de compensación tiempo/memoria/datos (PDF) (Informe técnico). Proyecto de cifrado de flujo ECRYPT. 40.
- ↑ CWE-329: No utilizar una variable independiente aleatoria con el modo CBC
- ↑ Borisov, Nikita ; Goldberg, Ian ; Wagner, David . "Interceptación de comunicaciones móviles: la inseguridad del 802.11" (PDF) . Consultado el 12 de septiembre de 2006 .
- ↑ 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)
- ↑ B. Moeller (20 de mayo de 2004), Seguridad de los conjuntos de cifrado CBC en SSL/TLS: Problemas y contramedidas , archivado del original el 30 de junio de 2012 , consultado el 1 de septiembre de 2014.
Lecturas adicionales
- Schneier, B. (1996). Criptografía aplicada (2.ª ed.). Nueva York: Wiley. ISBN 978-0-471-12845-8.
- Ferguson, N.; Schneier, B. (2003). Criptografía práctica . Nueva York: Wiley. ISBN 978-0-471-22894-3.
- Modos de operación del cifrado por bloques
- Criptografía