Sunteți pe pagina 1din 16

Autor: Kevin Michelle Contreras Gonzlez

Cifrado de flujo elegido: Sosemanuk

Referencia:

Berbain et al, "Sosemanuk, a fast software-oriented stream cipher",


2008

Enlace al artculo en Springer:

http://link.springer.com/chapter/10.1007/978-3-540-68351-3_9

Sosemanuk es un cifrado de flujo enfocado a


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