Vector de inicialización
En criptografía, un vector de inicialización (IV) o variable de inicio (SV) es una entrada para una primitiva criptográfica que se utiliza para proporcionar el estado inicial. Por lo general, 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 encriptación logren la 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 encriptado. Para cifrados de bloque, el uso de un IV se describe por los modos de operación.
Algunas primitivas criptográficas requieren que el IV solo no se repita, 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 no es necesario reenviar explícitamente un IV a un destinatario, sino que puede derivarse de un estado común actualizado tanto en el lado del remitente como en el del receptor. (En la práctica, se sigue transmitiendo un nonce corto 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 contador, que tiene un número de secuencia para un nonce.
El tamaño del IV depende de la primitiva criptográfica utilizada; para cifrados de bloque, generalmente es el tamaño de 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. Cuando el IV se elige al azar, se debe tener en cuenta la probabilidad de colisiones por el 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 IV relacionados.
Motivación
Un cifrado de bloque es una de las primitivas más básicas de la criptografía y se usa con frecuencia para el cifrado de datos. Sin embargo, por sí solo, solo se puede usar para codificar un bloque de datos de un tamaño predefinido, denominado tamaño de bloque. Por ejemplo, una única invocación del algoritmo AES transforma un bloque de texto sin formato de 128 bits en un bloque de texto cifrado de 128 bits de tamaño. La clave, que se proporciona como una entrada para el cifrado, define el mapeo entre el texto sin formato y el texto cifrado. Si se van a cifrar datos de longitud arbitraria, una estrategia simple es dividir los datos en bloques, cada uno de los cuales coincide con el tamaño de bloque del cifrado, y cifrar cada bloque por separado con la misma clave. Este método no es seguro, ya que los bloques de texto sin formato iguales se transforman en textos cifrados iguales, y un tercero que observa los datos cifrados puede determinar fácilmente su contenido, incluso si no conoce 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 que se mezcle un valor de entrada adicional con el primer bloque, y 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 de cifrado, como entrada adicional. Este valor impredecible se agrega al primer bloque de texto sin formato antes del cifrado posterior. A su vez, el texto cifrado producido en el primer paso de cifrado se agrega al segundo bloque de texto sin formato, y así sucesivamente. El objetivo final de los esquemas de encriptación es proporcionar seguridad semántica: por esta propiedad, es prácticamente imposible que un atacante extraiga conocimiento del texto cifrado observado. Se puede demostrar que cada uno de los tres modos adicionales especificados por el NIST son semánticamente seguros bajo los llamados ataques de texto sin formato elegido.
Propiedades
Las propiedades de un IV dependen del esquema criptográfico utilizado. Un requisito básico es la exclusividad, lo que significa que ningún IV puede reutilizarse bajo la misma clave. Para los cifrados de bloque, los valores repetidos de IV devuelven el esquema de cifrado al modo de libro de códigos electrónico: un IV igual y un texto sin formato igual dan como resultado un texto cifrado igual. En el cifrado de flujo, la singularidad es de vital importancia, ya que, de lo contrario, el texto sin formato puede recuperarse trivialmente.
- Ejemplo: Stream ciphers encrypt plaintext P al texto cifrado C por conducir una corriente clave K de una llave determinada y IV y computación C como C = P xor K. Supongamos que un atacante ha observado dos mensajes C1 y C2 ambos encriptados con la misma llave y IV. Entonces conocimiento de cualquiera P1 o P2 revela el otro texto desde entonces
- C1 xor C2 =P1 xor K) xor (P2 xor K) = P1 xor P2.
Muchos esquemas requieren que el IV sea impredecible por un adversario. Esto se efectúa seleccionando el IV al azar o pseudoaleatoriamente. En tales esquemas, la posibilidad 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 sin formato (parcial).
- Ejemplo: Considere un escenario donde un partido legítimo llamado Alice encripta mensajes usando el modo de encadenamiento de bloques de cifrado. Considere más allá que hay un adversario llamado Eva que puede observar estas encriptaciones y es capaz de enviar mensajes de texto a Alice para encriptar (en otras palabras, Eva es capaz de un ataque de texto elegido). Ahora asuma que Alice ha enviado un mensaje consistente en un vector de inicialización IV1 y empezar con un bloque de ciphertext CAlice. Let further PAlice denota el primer bloque de texto claro del mensaje de Alice, E denota encriptación, y deja PEve Sé la suposición de Eve para el primer bloque de texto. Ahora, si Eva puede determinar el vector de inicialización IV2 del siguiente mensaje ella será capaz de probar su conjetura enviando un mensaje de texto a Alice comenzando con (IV2 xor IV1 xor PEve); si su suposición fue correcta este bloque de texto claro se encriptará a CAlice por Alice. Esto se debe a la siguiente simple observación:
- CAlice = E()IV1 xor PAlice) E()IV2 xorIV2 xor IV1 xor PAlice)).
Dependiendo de si el IV de un esquema criptográfico debe ser aleatorio o solo único, el esquema se denomina aleatorizado 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 IV común, que se actualiza de forma predefinida en ambos lados.
Bloquear cifrados
El procesamiento de datos con cifrado de bloques generalmente se describe 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 llamados modos de cifrado autenticado. Si bien los modos de cifrado y cifrado autenticado suelen tener un IV que coincide con el tamaño del bloque del cifrado, los modos de autenticación se realizan 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 varias rondas de cifrado antes de liberar el primer bit de salida. Por razones de rendimiento, los diseñadores de cifrados de flujo intentan mantener ese número de rondas lo más pequeño posible, pero debido a que determinar el número mínimo seguro de rondas para los cifrados de flujo no es una tarea trivial, y teniendo en cuenta otros problemas como la pérdida de entropía, única para cada La 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 grave y un tema de investigación en curso.
WEP IV
El algoritmo de encriptación 802.11 llamado WEP (abreviatura de Wired Equivalent Privacy) usaba un IV corto de 24 bits, lo que generaba IV reutilizados con la misma clave, lo que facilitaba su descifrado. La inyección de paquetes permitió descifrar WEP en tiempos tan cortos como varios segundos. Esto finalmente condujo a la desaprobació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 sin formato, no debe ser posible predecir el IV que se asociará al texto sin formato 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. En particular, la práctica común (anteriormente) 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 sin formato, puede verificar su conjetura sobre el texto sin formato de algún bloque que se haya cifrado con la misma clave anteriormente. Esto se conoce como ataque TLS CBC IV, también llamado ataque BEAST.
Contenido relacionado
Problema de decisión
Registro de pulsaciones de teclas
Representación del conocimiento y razonamiento.