Un “stream cipher” (cifrado de flujo) es un tipo de algoritmo de cifrado que funciona cifrando un mensaje un bit, un byte o una palabra de computadora a la vez. Este método contrasta con los cifradores de bloque, que cifran bloques de datos de tamaños fijos en una sola operación.
Funcionamiento
El funcionamiento de un stream cipher se basa en la generación de una secuencia de bits, llamada keystream (flujo de claves), que se combina con el mensaje original (texto en claro) bit a bit utilizando operaciones de tipo XOR. La seguridad del cifrado depende de la aleatoriedad y la imprevisibilidad del keystream.
Keystream
El keystream es una secuencia de bits pseudoaleatorios generada por un generador de números pseudoaleatorios (PRNG). El PRNG se inicializa con una clave secreta que debe permanecer desconocida para cualquiera que no esté autorizado a descifrar el mensaje.
Operación de XOR
La operación de XOR (OR exclusivo) es una función lógica que produce un valor verdadero (1) solo cuando sus dos variables de entrada son diferentes. Esta operación se aplica entre cada bit del mensaje original y el bit correspondiente del keystream. Si un bit del mensaje es 1 y el bit del keystream es 0, el resultado será 1, y viceversa.
Ejemplos de Stream Cipher
Algunos ejemplos conocidos de stream cipher incluyen:
- RC4: uno de los cifradores de flujo más conocidos, aunque hoy en día se considera inseguro para muchas aplicaciones.
- Salsa20 y ChaCha20: cifradores de flujo modernos diseñados para ofrecer un alto nivel de seguridad y un rendimiento elevado.
Ventajas y Desventajas
Ventajas
- Eficiencia: Los cifradores de flujo son generalmente más rápidos que los cifradores de bloque porque cifran los datos bit a bit.
- Flexibilidad: Pueden cifrar flujos de datos de cualquier longitud sin tener que dividir el mensaje en bloques.
Desventajas
- Vulnerabilidad a ataques: Si el mismo keystream se utiliza varias veces (por ejemplo, si la clave secreta no se cambia), el cifrador de flujo puede volverse vulnerable a ataques conocidos como el ataque de “reutilización de keystream”.
- Gestión de la clave: La necesidad de mantener la clave secreta completamente segura es crucial, y cualquier compromiso de la clave puede llevar a la vulneración de todo el sistema de cifrado.
Aplicaciones
Los stream ciphers se utilizan a menudo en aplicaciones donde la velocidad de cifrado es crítica, como el cifrado de comunicaciones en tiempo real (por ejemplo, en conexiones de red) o en sistemas embebidos con recursos limitados.
Conclusión
Los cifradores de flujo representan una categoría importante de algoritmos criptográficos, apreciados por su velocidad y flexibilidad. Sin embargo, requieren una gestión cuidadosa de la clave y una generación segura del keystream para garantizar su eficacia y seguridad.