
Un cifrado de flujo es un cifrado de clave simétrica donde los dígitos del texto plano se combinan con una secuencia de dígitos cifrados pseudoaleatorios ( secuencia de clave ). En un cifrado de flujo, cada dígito del texto plano se cifra individualmente con el dígito correspondiente de la secuencia de clave, para obtener un dígito de la secuencia de texto cifrado . Dado que el cifrado de cada dígito depende del estado actual del cifrado, también se conoce como cifrado de estado . En la práctica, un dígito suele ser un bit y la operación de combinación es una operación XOR ( combinación exclusiva ).
La secuencia de claves pseudoaleatorias se genera típicamente en serie a partir de un valor semilla aleatorio mediante registros de desplazamiento digitales . El valor semilla sirve como clave criptográfica para descifrar la secuencia de texto cifrado. Los cifrados de flujo representan un enfoque diferente para el cifrado simétrico en comparación con los cifrados de bloques . Los cifrados de bloques operan sobre grandes bloques de dígitos con una transformación fija e invariable. Esta distinción no siempre es clara: en algunos modos de operación , una primitiva de cifrado de bloques se utiliza de tal manera que actúa efectivamente como un cifrado de flujo. Los cifrados de flujo generalmente se ejecutan a mayor velocidad que los cifrados de bloques y tienen menor complejidad de hardware. Sin embargo, los cifrados de flujo pueden ser susceptibles a brechas de seguridad (véase ataques a cifrados de flujo ); por ejemplo, cuando se utiliza el mismo estado inicial (semilla) dos veces.
Inspiración libre del antiguo apartamento
Los cifrados de flujo pueden considerarse una aproximación al funcionamiento de un cifrado inquebrantable probado: la libreta de un solo uso (OTP). Una libreta de un solo uso utiliza una secuencia de claves compuesta por dígitos completamente aleatorios . Esta secuencia se combina con los dígitos del texto plano uno a uno para formar el texto cifrado. Claude E. Shannon demostró la seguridad de este sistema en 1949. [ 1 ] Sin embargo, la secuencia de claves debe generarse completamente al azar, con al menos la misma longitud que el texto plano, y no puede utilizarse más de una vez. Esto dificulta la implementación del sistema en muchas aplicaciones prácticas, por lo que la libreta de un solo uso no se ha extendido, salvo en las aplicaciones más críticas. La generación, distribución y gestión de claves son fundamentales para dichas aplicaciones.
Un cifrado de flujo utiliza una clave mucho más pequeña y conveniente, como una de 128 bits. A partir de esta clave, genera una secuencia de claves pseudoaleatoria que se puede combinar con los dígitos del texto plano de forma similar a la libreta de un solo uso. Sin embargo, esto tiene un costo. La secuencia de claves ahora es pseudoaleatoria y, por lo tanto, no es verdaderamente aleatoria. La prueba de seguridad asociada con la libreta de un solo uso ya no es válida. Es muy posible que un cifrado de flujo sea completamente inseguro. [ 2 ]
Tipos
Un cifrador de flujo genera elementos sucesivos de la secuencia de claves a partir de un estado interno. Este estado se actualiza esencialmente de dos maneras: si cambia independientemente de los mensajes en texto plano o cifrado , el cifrador se clasifica como síncrono . Por el contrario, los cifradores de flujo autosincronizados actualizan su estado en función de los dígitos anteriores del texto plano o cifrado. Un sistema que incorpora el texto plano a la clave también se conoce como cifrador de clave automática o cifrador de autoclave.
Cifrados de flujo síncronos

En un cifrado de flujo síncrono, se genera una secuencia de dígitos pseudoaleatorios independientemente de los mensajes en texto plano y cifrado, y luego se combina con el texto plano (para cifrar) o el texto cifrado (para descifrar). En su forma más común, se utilizan dígitos binarios ( bits ), y la secuencia de claves se combina con el texto plano mediante la operación XOR ( o exclusivo ). Esto se denomina cifrado de flujo aditivo binario .
En un cifrado de flujo síncrono, el emisor y el receptor deben estar perfectamente sincronizados para que el descifrado sea exitoso. Si se añaden o eliminan dígitos del mensaje durante la transmisión, se pierde la sincronización. Para restablecerla, se pueden probar sistemáticamente diferentes desfases hasta obtener el descifrado correcto. Otro método consiste en marcar el texto cifrado con marcadores en puntos regulares de la salida.
Sin embargo, si un dígito se corrompe durante la transmisión, en lugar de añadirse o perderse, solo se ve afectado un único dígito del texto plano y el error no se propaga a otras partes del mensaje. Esta propiedad resulta útil cuando la tasa de errores de transmisión es alta; no obstante, reduce la probabilidad de que el error se detecte sin mecanismos adicionales. Además, debido a esta propiedad, los cifradores de flujo síncronos son muy susceptibles a ataques activos : si un atacante puede modificar un dígito del texto cifrado, podría realizar cambios predecibles en el bit correspondiente del texto plano; por ejemplo, invertir un bit en el texto cifrado provoca que el mismo bit se invierta en el texto plano.
Cifrados de flujo autosincronizados
Otro método utiliza varios de los N dígitos del texto cifrado anterior para calcular la secuencia de claves. Estos esquemas se conocen como cifrados de flujo autosincronizados , cifrados de flujo asíncronos o autoclave de texto cifrado ( CTAK ). La idea de la autosincronización se patentó en 1946 y tiene la ventaja de que el receptor se sincroniza automáticamente con el generador de la secuencia de claves tras recibir N dígitos del texto cifrado, lo que facilita la recuperación si se pierden o se añaden dígitos al flujo del mensaje. Los errores de un solo dígito tienen un efecto limitado, afectando solo hasta N dígitos del texto plano.
Un ejemplo de cifrado de flujo auto-sincronizado es un cifrado de bloques en modo de retroalimentación de cifrado (CFB) .
Basado en registros de desplazamiento con retroalimentación lineal
Los cifradores de flujo binario suelen construirse utilizando registros de desplazamiento con retroalimentación lineal (LFSR) debido a su fácil implementación en hardware y su sencillo análisis matemático. Sin embargo, el uso de LFSR por sí solos resulta insuficiente para garantizar una seguridad óptima. Se han propuesto diversos métodos para aumentar la seguridad de los LFSR.
Funciones de combinación no lineales

Dado que los LFSR son inherentemente lineales, una técnica para eliminar esta linealidad consiste en introducir las salidas de varios LFSR paralelos en una función booleana no lineal para formar un generador de combinación . Diversas propiedades de dicha función de combinación son cruciales para garantizar la seguridad del esquema resultante, por ejemplo, para evitar ataques de correlación .
Generadores controlados por reloj
Normalmente, los LFSR se configuran con pasos regulares. Un método para introducir no linealidad consiste en configurar el LFSR con una señal de reloj irregular, controlada por la salida de un segundo LFSR. Entre estos generadores se incluyen el generador de parada y arranque , el generador de pasos alternos y el generador de reducción .
Un generador de pasos alternados consta de tres registros LFSR, que denominaremos LFSR0, LFSR1 y LFSR2. La salida de uno de los registros determina cuál de los otros dos se utilizará; por ejemplo, si LFSR2 genera un 0, se activa LFSR0, y si genera un 1, se activa LFSR1. La salida es la operación OR exclusiva del último bit generado por LFSR0 y LFSR1. El estado inicial de los tres registros LFSR es la clave.
El generador de parada y arranque (Beth y Piper, 1984) consta de dos registros LFSR. Un LFSR se activa si la salida del segundo es un 1; de lo contrario, repite su salida anterior. Esta salida se combina (en algunas versiones) con la salida de un tercer LFSR que se activa a una frecuencia regular.
El generador de reducción adopta un enfoque diferente. Se utilizan dos registros LFSR, ambos sincronizados regularmente. Si la salida del primer LFSR es 1, la salida del segundo LFSR se convierte en la salida del generador. Sin embargo, si la salida del primer LFSR es 0, la salida del segundo se descarta y el generador no emite ningún bit. Este mecanismo es vulnerable a ataques de temporización en el segundo generador, ya que la velocidad de salida varía en función de su estado. Esto se puede mitigar almacenando la salida en un búfer.
Generador de filtros
Otro enfoque para mejorar la seguridad de un LFSR es pasar el estado completo de un único LFSR a una función de filtrado no lineal .
Otros diseños

En lugar de un dispositivo de control lineal, se puede utilizar una función de actualización no lineal. Por ejemplo, Klimov y Shamir propusieron funciones triangulares ( funciones T ) con un solo ciclo en palabras de n bits.
Seguridad
Para que un cifrado de flujo sea seguro, su secuencia de claves debe tener un período largo y debe ser imposible recuperar la clave o el estado interno del cifrado a partir de la secuencia de claves. Los criptógrafos también exigen que la secuencia de claves esté libre incluso de sesgos sutiles que permitan a los atacantes distinguir una secuencia del ruido aleatorio, y libre de relaciones detectables entre secuencias de claves que correspondan a claves relacionadas o nonces criptográficos relacionados . Esto debe ser cierto para todas las claves (no debe haber claves débiles ), incluso si el atacante puede conocer o elegir algún texto plano o cifrado .
Al igual que otros ataques en criptografía, los ataques al cifrado de flujo pueden ser de carácter certificativo, por lo que no son necesariamente métodos prácticos para romper el cifrado, pero indican que este podría tener otras debilidades.
Para utilizar de forma segura un cifrado de flujo síncrono, es fundamental no reutilizar la misma secuencia de claves. Esto generalmente implica proporcionar un valor aleatorio (nonce) o clave diferente en cada invocación del cifrado. Los diseñadores de aplicaciones también deben tener en cuenta que la mayoría de los cifrados de flujo no garantizan la autenticidad , sino la privacidad : los mensajes cifrados aún podrían haber sido modificados durante la transmisión.
Los periodos cortos en los cifrados de flujo han sido un problema práctico. Por ejemplo, los cifrados de bloques de 64 bits como DES pueden generar un flujo de claves en modo de retroalimentación de salida (OFB). Sin embargo, cuando no se utiliza la retroalimentación completa, el flujo resultante tiene un periodo de aproximadamente 2³² bloques en promedio; para muchas aplicaciones, este periodo es demasiado corto. Por ejemplo, si el cifrado se realiza a una velocidad de 8 megabytes por segundo, un flujo con un periodo de 2³² bloques se repetirá después de aproximadamente una hora.
Algunas aplicaciones que utilizan el cifrado de flujo RC4 son vulnerables debido a las debilidades en la rutina de configuración de claves de RC4; las nuevas aplicaciones deberían evitar RC4 o asegurarse de que todas las claves sean únicas e idealmente no estén relacionadas (como las generadas por un generador de números pseudoaleatorios criptográficamente seguro con una buena semilla o una función hash criptográfica ) y que se descarten los primeros bytes del flujo de claves.
Los elementos de los cifradores de flujo suelen ser mucho más sencillos de entender que los cifradores de bloques y, por lo tanto, es menos probable que oculten debilidades accidentales o maliciosas.
Uso
Los cifradores de flujo se utilizan a menudo por su velocidad y simplicidad de implementación en hardware, y en aplicaciones donde el texto plano se presenta en cantidades de longitud desconocida, como una conexión inalámbrica segura. Si se utilizara un cifrador de bloques (que no opere en modo de cifrado de flujo) en este tipo de aplicación, el diseñador tendría que elegir entre la eficiencia de transmisión o la complejidad de la implementación, ya que los cifradores de bloques no pueden trabajar directamente con bloques más cortos que su tamaño. Por ejemplo, si un cifrador de bloques de 128 bits recibiera ráfagas separadas de 32 bits de texto plano, tres cuartas partes de los datos transmitidos serían relleno . Los cifradores de bloques deben utilizarse en modo de robo de texto cifrado o terminación de bloque residual para evitar el relleno, mientras que los cifradores de flujo eliminan este problema al operar de forma natural con la unidad más pequeña que se puede transmitir (normalmente bytes).
Otra ventaja de los cifradores de flujo en la criptografía militar es que el flujo cifrado se puede generar en un equipo independiente sujeto a estrictas medidas de seguridad y enviarse a otros dispositivos, como un equipo de radio, que realizará la operación XOR como parte de su funcionamiento. Este último dispositivo puede diseñarse y utilizarse en entornos menos restrictivos.
ChaCha se está convirtiendo en el cifrado de flujo más utilizado en software; [ 3 ] otros incluyen: RC4 , A5/1 , A5/2 , Chameleon , FISH , Helix , ISAAC , MUGI , Panama , Phelix , Pike , Salsa20 , SEAL , SOBER , SOBER-128 , y WAKE .
Varios algoritmos de cifrado de flujo tienen origen nacional o están contemplados en estándares nacionales o internacionales específicos. Algunos ejemplos destacados son ZUC (China), SNOW /SNOW 3G (Suecia, utilizado en los estándares 3GPP junto con ZUC para el cifrado 5G) y los algoritmos A5/1 y A5/2 (diseñados por ETSI para GSM). Los finalistas del portafolio eSTREAM también tienen origen nacional, como Grain (Suecia), Trivium (Bélgica) y Rabbit (Dinamarca).
Comparación
Véase también
Notas
- ↑ Deane, Arthur; Kraus, Aaron (2021). «Capítulo 3: Dominio 3: Arquitectura e ingeniería de seguridad». The Official (ISC)2 CISSP CBK Reference (6.ª ed.). Hoboken, Nueva Jersey: John Wiley & Sons, Inc. pág. 232. ISBN 978-1-119-78999-4.
- ↑ "Stream Cipher - una descripción general | Temas de ScienceDirect" . www.sciencedirect.com . Consultado el 27 de febrero de 2026 .
- ↑ "Haz el ChaCha: Mejor rendimiento móvil con criptografía" . 23 de febrero de 2015.
- ↑ Garcia, Flavio D.; de Koning Gans, Gerhard; Muijrers, Ruben; van Rossum, Peter; Verdult, Roel; Schreur, Ronny Wichers; Jacobs, Bart (4 de octubre de 2008). "Desmantelando MIFARE Classic" (PDF) . XIII Simposio Europeo sobre Investigación en Seguridad Informática (ESORICS 2008), LNCS, Springer. Archivado del original (PDF) el 23 de febrero de 2021. Recuperado el 25 de junio de 2022 .
- ↑ Lu, Yi; Meier, Willi; Vaudenay, Serge (2005). "El ataque de correlación condicional: un ataque práctico al cifrado Bluetooth". Avances en criptología – CRYPTO 2005 (PDF) . Notas de clase en ciencias de la computación. Vol. 3621. Santa Bárbara, California, EE. UU. pp. 97–117 . CiteSeerX 10.1.1.323.9416 . doi : 10.1007/11535218_7 . ISBN 978-3-540-28114-6.
{{cite book}}: CS1 mantenimiento: falta el editor de ubicación ( enlace ) - ↑ Côme Berbain ; Henri Gilbert ; Alexander Maximov (2006-01-02). "Criptoanálisis del grano" (PDF) . eSTREAM. Archivado del original (PDF) el 11-10-2006 . Recuperado el 26-02-2006 .
- ^ Banik, Subhadeep; Maitra, Subhamoy; Sarkar, Santanu (2013). "Un ataque de falla diferencial a MICKEY 2.0" . Archivo ePrint de criptología .
- ↑ P. Prasithsangaree y P. Krishnamurthy (2003). "Análisis del consumo de energía de los algoritmos RC4 y AES en redes LAN inalámbricas" (PDF) . IEEE Globecom . Archivado del original (PDF) el 3 de diciembre de 2013.
Referencias
- Matt JB Robshaw, Informe técnico sobre cifrados de flujo TR-701, versión 2.0, RSA Laboratories, 1995 (PDF) Archivado el 3 de septiembre de 2021 en Wayback Machine .
- Beth, Thomas; Piper, Fred (1985). "El generador de parada y arranque" (PDF) . Avances en criptología . Notas de clase en ciencias de la computación. Vol. 209. págs. 88–92 . doi : 10.1007/3-540-39757-4_9 . ISBN 978-3-540-16076-2Archivado (PDF) del original el 29 de marzo de 2019 .
- Christof Paar, Jan Pelzl, «Cifrados de flujo» , Capítulo 2 de «Comprendiendo la criptografía: un libro de texto para estudiantes y profesionales». (El sitio web complementario contiene un curso de criptografía en línea que abarca los cifrados de flujo y los LFSR), Springer, 2009.
Enlaces externos
- Informe técnico de RSA sobre el funcionamiento del cifrado de flujo.
- Criptoanálisis y diseño de cifradores de flujo (tesis de Hongjun Wu).
- Análisis de cifradores de flujo ligeros (tesis de S. Fischer).
- Cifrados de flujo
- Primitivas criptográficas