¿Sabes qué es la criptografía de stream? Los algoritmos de cifrado por bloques marcaron un hito para la criptología y se utilizan en gran parte de la tecnología de computación que conocemos actualmente. Sin embargo, su principal limitación es la del tamaño de cada bloque. Además, hace falta tener un tipo de criptografía que permita hacer cambios rápidamente en la información, sin modificar los demás datos ni requerir de demasiado tiempo para procesarlos.
En este post, hablaremos acerca de un modelo de criptografía que se utiliza, por ejemplo, para la reproducción de vídeos de streaming en plataformas como Twitch o videoconferencias a través de Zoom. A continuación, te explicaremos qué es la criptografía de stream y cómo se usa para cifrar información de manera segura.
¿Qué es la criptografía de stream?
Algunos modos de operación de cifrado por bloques que permiten encriptar un conjunto de bloques de información pueden resultar poco prácticos para algunas funciones de la computación. Por eso, en la criptografía de stream se utiliza la generación de un keystream (Ks) infinito, a partir del cual se encriptan los datos. Esto permite hacer cambios de manera rápida en la información sin afectar la eficiencia del algoritmo.
La criptografía de stream funciona de forma similar al algoritmo de la libreta de un solo uso (One Time Pad) y su proceso es el siguiente:
- Se genera un keystream (Ks) infinito a partir de una clave corta. Este paso es el más difícil e importante del algoritmo, pues de él depende que el cifrado no pueda romperse.
- Se hace una operación XOR entre el keystream (Ks) y el texto plano.
- El mensaje se desencripta con la misma clave (porque es un tipo de cifrado simétrico) y aparece como texto plano nuevamente.
Ahora bien, para terminar de entender qué es la criptografía de stream y cómo puede ejecutarse de forma segura, hablaremos sobre el primer paso del proceso, que será el más determinante en este tipo de cifrado.
¿Cómo se genera un keystream seguro?
Ya hemos visto qué es la criptografía de stream. Ahora, te explicaremos cómo generar un keystream de forma segura.
🔴 ¿Quieres entrar de lleno a la Ciberseguridad? 🔴
Descubre el Ciberseguridad Full Stack Bootcamp de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada
👉 Prueba gratis el Bootcamp en Ciberseguridad por una semanaPara que un keystream sea seguro tendrá que cumplir algunas características:
- Debe parecer aleatorio para alguien que no conoce la clave.
- No se debe poder encontrar la clave a partir del keystream.
- No se debe poder predecir a partir del keystream anterior.
- Se debe generar un keystream nuevo cada vez que se vaya a utilizar.
Generador de números pseudoaleatorios
Una de las herramientas más importantes para generar un keystream seguro es un generador de números pseudoaleatorios (PRNG).
Un PRNG (pseudo-random numbers generator) es un algoritmo capaz de producir números que parecen aleatorios a simple vista, pero que siguen un patrón difícil de deducir a partir de una clave corta que se conoce como semilla o seed.
La acción de escoger una semilla segura también es fundamental para que no se pueda romper el algoritmo de un PRNG y, por eso, no todos se consideran seguros para usar en criptografía. Sin embargo, aquellos que sí se consideran criptográficamente seguros son esenciales para generar keystreams en algunos modos de operación de cifrado, como el que explicaremos brevemente a continuación.
Modo de operación de cifrado CTR
Ya sabes qué es la criptografía de stream y cómo se generan keystreams seguros. Ahora, veremos un modo de cifrado por bloques que utiliza algo de los conceptos esenciales del cifrado de stream.
El modo de operación de cifrado CTR (counter) es un sistema de encriptación por bloques que hace uso de un keystream para cifrar la información. De hecho, el algoritmo de bloques cifra el keystream y, después, se hace una operación XOR entre dicho resultado y el bloque de texto plano. Funciona de forma muy similar a un algoritmo de libreta de un solo uso (One Time Pad), solo que agregando la tecnología del keystream para cifrar y descifrar la información.
La forma en la que funciona el modo de cifrado CTR es la siguiente:
- Se crea un nonce, que es un valor totalmente aleatorio y público. Este no se genera por medio de un PRNG, ya que su aleatoriedad debe ser completamente real. El mismo nonce se utilizará en la encriptación de todos los bloques y su tamaño debe ser de la mitad de la extensión de un bloque.
- La otra mitad del campo se rellena con un contador que puede ir desde “0000” hasta “9999”, dependiendo de la cantidad de bits que reciba el algoritmo de bloques. Esto hará que cada bloque se cifre de manera única, rápida y práctica.
- A continuación, la cadena que produce la unión entre el nonce y el contador es el bloque que se encripta. Esto dará como resultado nuestro keystream.
- Finalmente, se hace una operación XOR entre el keystream y el bloque de texto plano, lo cual dará el mensaje cifrado final.
Ahora sabes qué es la criptografía de stream, cómo funciona y para qué se utiliza. Si quieres aprender más y convertirte en un experto en ciberseguridad, aquí tenemos la mejor opción para conseguirlo. Entra en nuestro Ciberseguridad Full Stack Bootcamp y especialízate en este campo menos de 7 meses. ¡Únete ya!