SNOW es una familia de cifrados de flujo sincrónico basados en palabras desarrollados por Thomas Johansson y Patrik Ekdahl en la Universidad de Lund .
Tienen un registro de desplazamiento de retroalimentación lineal de 512 bits en su núcleo, seguido de una máquina de estados de salida no lineal con algunas palabras de estado adicionales.
SNOW 1.0 , SNOW 2.0 y SNOW 3G utilizan un registro de desplazamiento de 16 palabras de 32 bits y una transformación de salida de suma-rotación-XOR (ARX) de 32 bits con 2 o 3 palabras de estado. Cada iteración avanza el registro de desplazamiento 32 bits y produce 32 bits de salida.
SNOW-V y SNOW-Vi utilizan un registro de desplazamiento de 32 palabras de 16 bits (diseñado para implementarse como 4 registros SIMD de 128 bits ) que avanza 16 bits por iteración. Se pueden realizar 8 iteraciones LFSR simultáneamente utilizando operaciones SIMD, después de lo cual se realiza un paso de transformación de salida, que produce 128 bits de salida. La transformación de salida utiliza la función de redondeo del Estándar de cifrado avanzado (AES) (comúnmente implementado en hardware en procesadores recientes) y mantiene 2 palabras de estado adicionales de 128 bits.
SNOW 1.0, originalmente simplemente SNOW, fue presentado al proyecto NESSIE . [1] El cifrado no tiene ninguna propiedad intelectual conocida u otras restricciones. El cifrado funciona con palabras de 32 bits y admite claves de 128 y 256 bits. El cifrado consiste en una combinación de un LFSR y una máquina de estados finitos (FSM) donde el LFSR también alimenta la función de siguiente estado de la FSM. El cifrado tiene una fase de inicialización corta y un muy buen rendimiento tanto en procesadores de 32 bits como en hardware.
Durante la evaluación se descubrieron debilidades y, como resultado, SNOW no se incluyó en el conjunto de algoritmos NESSIE. Los autores han desarrollado una nueva versión, la versión 2.0 del cifrador, que soluciona las debilidades y mejora el rendimiento. [2]
Durante la evaluación ETSI SAGE, el diseño se modificó aún más para aumentar su resistencia contra ataques algebraicos con el resultado denominado SNOW 3G. [3]
Se ha descubierto que existen claves relacionadas tanto para SNOW 2.0 como para SNOW 3G, [4] lo que permite ataques contra SNOW 2.0 en el modelo de clave relacionada.
SNOW se ha utilizado en el proyecto ESTREAM como cifrado de referencia para la evaluación del rendimiento.
SNOW 2.0 es uno de los cifrados de flujo elegidos para el estándar ISO/ IEC 18033-4. [5]
Se ha elegido SNOW 3G [6] como cifrado de flujo para los algoritmos de cifrado 3GPP UEA2 y UIA2. [7]
SNOW-V fue un rediseño extenso publicado en 2019 [8], diseñado para igualar las velocidades de la red celular 5G al generar 128 bits de salida por iteración. SNOW-Vi [9] fue modificado para lograr una velocidad aún mayor mediante pequeños cambios en el LFSR; la transformación de salida es idéntica.