software. Fue presentado en el eSTREAM Project como parte del programa ECRYPT (European Network of Excellence for Cryptology), iniciado en el ao 2004 y que finaliz en el ao 2006. La mayora de los autores de Sosemanuk pertenecen a distintas instituciones y escuelas francesas, como Universit de Versailles Orange Labs, entre otras.
Su diseo est inspirado en el cifrado de flujo
SNOW 2.0 y tambin implementa funciones del cifrado por bloques SERPENT. Utiliza bloques de 32-bits y la longitud de la llave puede variar desde 128 hasta 256 bits. No obstante, slo puede garantizar una seguridad de 128 bits.
Sosemanuk trabaja cada cuatro iteraciones,
generando cuatro bloques de 32 bits. Sus principales componentes son:
Un LFSR (Linear feedback shift register)
Un FSM (Finite state machine)
Una ronda de Serpent1
LFSR consta de 10 elementos que
pertenecen al campo finito F232, desde s0 hasta s10. En cada paso los nuevos valores son generados de la siguiente manera:
FSM es un componente de 64 bits, pues
consta de dos registros de 32 bits, llamados R1 y R2. Desde el segundo paso (t > 1), actualiza su estado interno con los resultados del LFSR.
Los resultados del FSM (ft+3, ft+2, ft+1, ft) se agrupan
en cuatro grupos, luego pasan por Serpent1. Los resultados de Serpent1 realizan una operacin XOR con los correspondientes valores de LFSR (st+3, st+2, st+1, st), generando al final las salidas zt+3, zt+2, zt+1, zt, cada una de 32 bits.
En sntesis, las primeras cuatro iteraciones de
Sosemanuk consisten en:
Inicializar el LFSR con los valores de s1 hasta s10.
Inicializar el FSM con los valores de R10 y R20.
En el primer paso (t = 0), los valores de R11, R21 y
f1 son computados a partir de R10, R20, s2, s9 y s10.
Se genera los valores intermedios de s1 y f1.
Se actualiza el LFSR.
Se genera z1, z2, z3 y 4.
La inicializacin de Sosemanuk es llevado a cabo en dos
pasos:
Un generador de llaves (key schedule), correspondiente al de
Serpent24. Por tanto puede trabajar con llaves de longitud variada, desde 1 hasta 256 bits, aunque se recomienda llaves de 128 bits.
Una inyeccin IV, que inicializa el estado interno de Sosemanuk con
Serpent24 y que tiene como entrada los resultados del generador de llaves y del IV (initialization vector). Los resultados de Serpent24 corresponden a los distintos componentes internos de Sosemanuk.
En China se ha realizado una investigacin [1]
para atacar este algoritmo, utilizando llaves conocidas para recuperar el estado interno de Sosemanuk. Tambin se han hecho implementaciones en microcontroladores AVR de 8 bits [2], por lo que se puede deducir que es un algoritmo de gran inters para el rea de electrnica y telecomunicaciones.
Bibliografa
[1] Feng et al, A Byte-Based Guess and
Determine Attack on SOSEMANUK", 2010
[2] Meiser et al, "Efcient Implementation of
eSTREAM Ciphers on 8-bit AVR Microcontrollers", 2008