Los cifradores de flujo , en los que los bits del texto plano se combinan con un flujo de bits cifrados mediante una operación XOR (o exclusiva ), pueden ser seguros si se utilizan correctamente. Sin embargo, son vulnerables a ataques si no se toman ciertas precauciones:
- Las claves nunca deben reutilizarse.
- Nunca se debe confiar en un descifrado válido como indicador de autenticidad.
Ataque de clave reutilizada
Los cifradores de flujo son vulnerables a ataques si se utiliza la misma clave más de una vez (una profundidad de dos o más).
Supongamos que los mensajes A y B , de la misma longitud, se cifran utilizando la misma clave K. El cifrado de flujo produce una cadena de bits C(K) de la misma longitud que los mensajes. Las versiones cifradas de los mensajes son:
- E(A) = A xor C
- E(B) = B xor C
donde la operación XOR se realiza bit a bit.
Si un adversario intercepta E(A) y E(B) , puede calcular:
- E(A) xor E(B)
Debido a que xor es conmutativo y tiene la propiedad de que X xor X = 0 (autoinverso):
- E(A) xor E(B) = (A xor C) xor (B xor C) = A xor B xor C xor C = A xor B
Si un mensaje es más largo que el otro, el adversario puede truncar el mensaje más largo al tamaño del más corto, revelando solo esa parte. En otras palabras, si dos mensajes están cifrados con la misma clave, un atacante puede recuperar A xor B , que es una forma de cifrado de clave corrida . Incluso si no se conoce ninguno de los mensajes, siempre que ambos estén en un lenguaje natural, este cifrado a menudo se puede descifrar manualmente. Durante la Segunda Guerra Mundial , el criptoanalista británico John Tiltman lo logró con el cifrado de Lorenz (apodado "Tunny"). Con una computadora personal promedio , estos cifrados generalmente se pueden descifrar en minutos. Si se conoce un mensaje, la solución es trivial.
Otra situación en la que la recuperación es trivial se da cuando las medidas de seguridad del flujo de tráfico requieren que cada estación envíe un flujo continuo de bits cifrados, con caracteres nulos (por ejemplo, LTRS en Baudot ) transmitidos cuando no hay tráfico real. Esto es común en las comunicaciones militares. En ese caso, si el canal de transmisión no está completamente cargado, existe una alta probabilidad de que uno de los flujos de texto cifrado consista únicamente en caracteres nulos. La NSA ha tomado medidas exhaustivas para evitar la reutilización de claves. En la década de 1960, los sistemas de cifrado a menudo incluían un lector de tarjetas perforadas para cargar las claves. El mecanismo cortaba automáticamente la tarjeta por la mitad al retirarla, impidiendo su reutilización. [ 1 ] : p. 6
Una forma de evitar este problema es usar un vector de inicialización (IV), enviado en texto plano, que se combina con una clave maestra secreta para crear una clave de un solo uso para el cifrado de flujo. Esto se hace en varios sistemas que usan el popular cifrado de flujo RC4 , incluyendo Wired Equivalent Privacy (WEP), Wi-Fi Protected Access (WPA) y Ciphersaber . Uno de los problemas con WEP era que su IV era demasiado corto (24 bits). Esto significaba que había una alta probabilidad de que el mismo IV se reutilizara si se enviaban más de unos pocos miles de paquetes con la misma clave maestra (ver ataque de cumpleaños ), lo que exponía esos paquetes al ataque de reutilización de clave. Este problema se solucionó en WPA cambiando la clave "maestra" con frecuencia.
Ataque de inversión de bits
Supongamos que un adversario conoce el contenido exacto de todo o parte de un mensaje. Como parte de un ataque de intermediario o un ataque de repetición , puede alterar el contenido sin conocer la clave, K. Por ejemplo, si sabe que una parte del mensaje contiene la cadena ASCII "$1000.00" , puede cambiarla a "$9500.00" mediante la operación XOR de esa parte del texto cifrado con la cadena: "$1000.00" xor "$9500.00" .
El texto cifrado que se envía es C(K) xor "$1000.00" . El adversario crea un nuevo mensaje:
- (C(K) xor "$1000.00") xor ("$1000.00" xor "$9500.00") = C(K) xor "$1000.00" xor "$1000.00" xor "$9500.00" = C(K) xor "$9500.00"
Dado que una cadena sometida a XOR consigo misma produce todos ceros, y una cadena de ceros sometida a XOR con otra cadena deja esa cadena sin cambios, el resultado C(K) xor "$9500.00" es lo que habría sido el texto cifrado si $9500 hubiera sido la cantidad original.
Los ataques de manipulación de bits pueden prevenirse incluyendo un código de autenticación de mensajes , lo que aumenta la probabilidad de que se detecte cualquier alteración.
Ataque de Chosen-IV
Los cifradores de flujo combinan una clave secreta con un vector de inicialización (IV) acordado para producir una secuencia pseudoaleatoria que se resincroniza periódicamente. [ 2 ]
Un ataque de "vector de inicialización elegido" se basa en encontrar vectores de inicialización específicos que, en conjunto, puedan revelar información sobre la clave secreta. Normalmente, se eligen varios pares de vectores de inicialización y se analizan estadísticamente las diferencias en las secuencias de clave generadas para detectar una correlación lineal o una relación booleana algebraica (véase también Criptoanálisis diferencial ). Si la elección de valores específicos del vector de inicialización revela un patrón no aleatorio en la secuencia generada, el ataque puede recuperar algunos bits y reducir la longitud efectiva de la clave. Un síntoma de este tipo de ataque sería la resincronización frecuente. Los cifradores de flujo modernos incluyen pasos para mezclar adecuadamente la clave secreta con el vector de inicialización, generalmente mediante la realización de varias rondas iniciales.
Referencias
- ↑ Asegurando las comunicaciones de registros: El TSEC/KW-26 Archivado el 10/10/2012 en Wayback Machine , Melville Klein, Serie de historia de la NSA
- ↑ Englund, Hakan; Johansson, Thomas; Sonmez Turan, Meltem (2007). "Un marco para el análisis estadístico de cifrados de flujo con IV elegido". Progress in Cryptology – INDOCRYPT 2007 (PDF) . Lecture Notes in Computer Science. Vol. 4859 (INDOCRYPT / volumen 4859 de la edición LNCS). Springer. pp. 268–281 . doi : 10.1007/978-3-540-77026-8_20 . ISBN 978-3-540-77025-1. S2CID 18097959 . Archivado del original (PDF) el 1 de octubre de 2018 . Consultado el 1 de octubre de 2018 .
Enlaces externos
- Seguridad del algoritmo WEP
- "Ataques en cifrados de flujo: una revisión" – una descripción general de 2014 de diferentes ataques a cifrados de flujo.
- "Ataques a los cifradores de flujo: una perspectiva" – diapositivas de la presentación de 2011
- ataques criptográficos
