Vous êtes sur la page 1sur 40

Teora de la Informacin y Teora de Cdigos

Algoritmo DES
Y Criptoanlisis Diferencial
Carlos Snchez Snchez

3 de Grado en Ingeniera Informtica

ndice

1.

Introduccin

2.

Cifrado por Bloques

3.

El Algoritmo DES

4.

Red De Feistel

5.

Funcin de Feistel

12

6.

S-Boxes

17

7.

Generacin de Claves

18

8.

Fundamentos del Criptoanlisis Diferencial

21

9.

Criptoanlisis Diferencial de las S-Boxes

23

10.

Criptoanlisis Diferencial Completo (DES Simplificado)

27

11.

Obtencin de la Clave Completa

31

12.

Resultados del Criptoanlisis Diferencial

32

13.

Otros Ataques al Algoritmo DES

34

14.

Mejoras al Algoritmo DES

35

Anexo A: Cdigo en Mathematica

37

Anexo B: ablas S-Boxes

38

Bibliografa

40
40

1.

Introduccin

En este trabajo se realizar una breve introduccin al cifrado por bloques y las tcnicas
que se usan para despus pasar a un estudio del algoritmo de cifrado Data Encryption Standard
(DES) y una introduccin al criptoanlisis diferencial.
Una de las principales motivaciones de este trabajo es la importancia el algoritmo DES por
ser el inicio de una gran cantidad de trabajos acadmicos que dieron como resultado el desarrollo del conocimiento sobre el cifrado de bloques y su criptoanlisis. Este algoritmo, aunque
hoy se considera inseguro fue un estndar en los Estados Unidos durante ms de 25 aos.
En un primer lugar se explicar qu consiste el cifrado por bloques para despus pasar a las
caractersticas propias del algoritmo DES.
Una vez conocido el algoritmo se har una introduccin al criptoanlisis diferencial, un ataque
a los cdigos de bloques que apareci como un ataque al algoritmo DES. Adems de explicar
sus fundamentos se realizar una muestra del ataque a una versin simplicada del algoritmo.
Finalmente se har referencia a otros posibles ataques al algoritmo y algunas de las modicaciones y mejoras que se pueden sobre el DES.
Adems de la parte terica se adjunta el cdigo necesario en Mathematica tanto para
cifrar/descifrar como para obtener la clave de la versin simplicada mediante el criptoanlisis
diferencial.

2.

Cifrado por Bloques

El algoritmo DES es un algoritmo de cifrado simtrico y de bloques.


Es simtrico ya que se utiliza la misma clave para cifrar y descifrar, a diferencia del cifrado
asimtrico donde aparece una clave pblica que cualquiera puede conocer y una privada que
solo conocer el destinatario. Al existir una nica clave, esta solo podr ser conocida por aquellas personas que puedan leer los mensajes.
El hecho de ser un algoritmo de bloques signica que la informacin que deseamos cifrar se
dividir en bloques y se aplicar el algoritmo a cada uno de ellos. En contraposicin a estos
existen los algoritmos de ujo, en los que se cifra bit a bit.
Una consecuencia del cifrado de bloques es que cifrar un bloque siempre tendr el mismo
resultado. Es decir, si usaramos bloques de 4 letras y ciframos el mensaje Hola, soy Pedro,
que dividido en bloques sera Hola, , so, y Pe, dro. tendramos el resultado:
Hola = c1
, so = c2
y Pe = c3
dro. = c4
Y si posteriormente ciframos el mensaje Chao, soy Pedro, el resultado para los tres ltimos
bloques coincidira:
Chao = c5
, so = c2
y Pe = c3
dro. = c4
El descifrado se har de forma similar. A cada bloque se le aplicar la funcin inversa, que
dar como resultado el texto en plano para ese bloque. A lo anterior se le denomina cifrado
invariante.
Existen algunas soluciones que permiten que se realice un cifrado de varios bloques y evitar
lo anterior, los veremos ms adelante.
Visto lo anterior ser necesario denir un tamao de bloque, aunque en el ejemplo lo
hemos hecho por nmero de letras, el tamao se dar habitualmente en bits. En caso de que
el mensaje a transmitir no fuera mltiplo del tamao de bloque se rellenara con bytes extra.
Para conseguir esto se suele utilizar un estndar. En caso de que el tamao de bloque sea
menor de 256 se suele utilizar el denido en PKCS#5, que es un estndar PKCS (Public-Key
Cryptography Standards). [2]
Segn el estndar PKCS#5 si faltan n bytes para completar el bloque se aadirn n bytes
con valor binario n. Por ejemplo, para cifrar el mensaje 0010 con un bloque de tamao 3 bytes
se aadiran 2 bytes con valor dos (00000010).
Como en otros cifrados simtricos se tendr una clave que ser necesaria tanto en el cifrado
como en el descifrado de los mensajes, llamaremos a esta clave K.
6

Teniendo en cuenta esto podemos denir el cifrado con un algoritmo de bloque M de tamao

n con una clave K de k bits como una funcin:


E(M, K) : {0, 1}n {0, 1}k {0, 1}n

Que dar como resultado un mensaje cifrado C . El descifrado ser la funcin inversa de la
anterior.
D(C, K) = E 1 (C, K) : {0, 1}m {0, 1}k {0, 1}n

Que dar como resultado, de nuevo, el valor M .


Dado que es una funcin que da un valor de {0, 1}n a partir de otro tambin de {0, 1}n
de lo anterior se tiene como resultado que cifrar un mensaje con la clave K siempre ser una
permutacin de elementos de {0, 1}n . Hay, por tanto, 2n ! permutaciones posibles.
Actualmente los diseos de cifrado por bloques suelen ser iterativos (se denominan iterative
product cipher ), de modo que se combinan varias transformaciones simples, consiguiendo un
resultado ms seguro que el de sus componentes. Estas transformaciones sern una combinacin
de sustituciones, permutaciones y operaciones de aritmtica modular. Este concepto fue presentado por Shannon en su publicacin Communication Theory of Secrecy Systems (1949)[3].

3.

El Algoritmo DES

El algoritmo DES, llamado as por sus siglas en ingls (Data Encryption Standard ) fue el
estndar de encriptacin de datos en Estados Unidos a partir de 1976. Actualmente, como ya se
adelant, el algoritmo no se considera seguro y ha sido ya sustiuido, en concreto por el algoritmo
AES.
Estudiaremos sus principales caractersticas tcnicas y trataremos de conocer los motivos
reales de preocupacin que hay ante este algoritmo, adems de algunos ataques, centrndonos
en el criptoanlisis diferencial.
El diseo del algoritmo fue realizado a principios de los 70 para satisfacer las necesidades
de seguridad del gobierno de los EEUU. Entre 1973 y 1974 un equipo de IBM desarrollo el
algoritmo DES basndose en el cifrador de Lucifer[6].
En un principio fue polmico dado que parte de su diseo no se hizo pblico, utilizaba una
clave corta y fue una de las primeras propuestas de cifrado de bloques simtrico, adems de
haber sido modicada la propuesta inicial por la Agencia Nacional de Seguridad de Estados
Unidos (NSA), segn indica uno de los autores[4].
Sobre el algoritmo propuesto, durante 1975, Martin Hellman y Whiteld Die (autores del
protocolo Die-Hellman) alegaron que la clave era demasiado corta y criticaron la modicacin
de la NSA. Entre estos cambios se inclua la reduccin de la clave, lo que se sospech que poda
permitir a las agencias de inteligencia leer fcilmente mensajes cifrados .
Pese a las alegaciones, durante 1976 fue aprobado el algortmo DES como estndar y continu sindolo hasta 2002 cuando fue sustituido por el algoritmo AES. Pese a esto, algunas
modicaciones del DES continan utilizndose.
Dado que es un algoritmo de cifrado por bloques, habr que dar los parmetros propios de
estos, el tamao de bloque y el de clave.
n = 64. El tamao
k = 64. El tamao

es de 64 bits.
de la clave es de 64 bits, sin embargo, 8 de estos bits no se usarn
en el cifrado, por lo que el valor real de la clave ser de 48 bits.
de bloque

El algoritmo DES, igual que su predecesor Lucifer, se basa en una tcnica denominada
cifrador de Feistel. Los detalles de su implementacin han sido obtenidos de la publicacin
por parte del Instituto Nacional de Estndares y Tecnologa (NIST)[5].

4.

Red De Feistel

El cifrador de Feistel, cuyo desarrollo comenz Hosrst Feistel, establece la estructura que
utilizan diversos algoritmos de cifrado. En el cifrado de Lucifer apareci por primera vez, y
despus, con algunas modicaciones, se utiliz en el DES.
Consiste en un cifrado de bloques por iteracin, en los que, como ya se ha dicho, se suceden
una serie de operaciones sobre el texto en claro que permiten obtener un texto cifrado con
mayor seguridad.
Algunas ventajas de esta tcnica son que el algoritmo de cifrado y el de descifrado sean
prcticamente idnticos y que su implementacin es muy sencilla en hardware.
Se sigue una estructura denominada Red de Feistel. El bloque a cifrar se divide en dos
partes de igual tamao y a cada una de estas se le irn realizando las operaciones necesarias.
Si nuestro mensaje a cifrar es un bloque de n bits M = m0 m1 . . . mn1 (n par) obtendremos
dos bloques R0 = m0 m1 . . . mn/21 y L0 = mn/2 mn/2+1 . . . mn1 .

A partir de aqu, estas dos partes se irn combinando mediante distintas operaciones, entre
las que destaca la funcin Feistel (F ). En cada paso esta funcin depender de una clave Ki ,
que se puede obtener a partir de la clave K denida para el cifrado. Tanto la forma de obtener
las claves Ki como la funcin F dependern del algoritmo concreto y los estudiaremos ms
adelante para el algoritmo DES.
La forma de actuar ser la siguiente. En cada paso se tomar :
Li+1 = Ri
Ri+1 = L1 F (K i , , Ri )

Para cada i = 0, ...r, siendo r el nmero de pasadas que se darn.

Se continuara haciendo lo mismo para el nmero de pasadas deseado.

10

Sern necesarias r claves y el resultado nal ser el mensaje cifrado C de n bits.


Este mensaje sera:
C = c0 c1 . . . cn1 = Lr1 Rr1

Y:
Lr1 = c0 c1 . . . cn/21 = Rr2 = Lr3 F (Kr3 , Rr3 ) = . . .
Rr1 = cn/2 . . . cn1 = Lr2 F (Kr2 , Rr2 ) = Rr3 F (Kr2 , Lr3 F (Kr3 , Rr3 )) =
...

Que en ltimo lugar dependen de R0 y L0 (es decir,M ) y K0 , . . . , Kr2 (es decir, la clave K ),
como era de esperar para un cifrado de bloques.
En el caso concreto del algoritmo DES el nmero de pasadas es 16 (r = 16) y cada bloque

Ri y Li ser de 64/2 = 32bits.

Las claves Ki sern cada una de 48 bits.

11

5.

Funcin de Feistel

Esta es la funcin de Feistel que se utiliza en el algoritmo DES. Deber cumplir las propiedades
de confusin y difusin. Estas fueron propuestas por Shannon ([3] p.708-709) y tienen como
n proteger frente a analisis estadsticos, aumentando la complejidad de un posible ataque.
La difusin es el hecho de que la estructura del mensaje sea disipada, es decir, que la parte
afectada por un bit sea repartida en una cadena lo ms larga posible y que se mezcle con la
inuencia de un nmero mayor de bits. Con esto se consigue que el enemigo deba interceptar
una cantidad mucho mayor de datos para llevar a cabo un ataque y que el trabajo para descubrirlo sea mayor.
La confusin tiene como n hacer que la relacin entre la clave y el cifrado sea muy compleja
y por tanto ms difcil de descubrir.
La funcin de Feistel se divide en cuatro partes:
Expansin. Recibe uno de los bloques de 32 bits y lo transforma en un bloque de 48 bits.
Esta ampliacin es necesaria ya que la clave Ki ser tambin de 48 bits. Esto se conseguir
simplemente duplicando algunos de los bits recibidos segn la tabla siguiente. Los nmeros indican cada uno de los 32 bits y el resultado ser la concatenacin de las siguientes las, siendo
las celdas en azul los bits aadidos:

E
32
4
8
12
16
20
24
28

1
5
9
13
17
21
25
29

2
6
10
14
18
22
26
30

3
7
11
15
19
23
27
31

4
8
12
16
20
24
28
32

5
9
13
17
21
25
29
1

En la especicacin del algoritmo esta operacin se representa con la letra E. Por lo tanto
para un bloque M se tendra E(M ).
Si fuera M = 10110110100001100110010101111010. El resultado de la operacin sera:
E
0
1
0
0
0
0
1
1

1
0
1
0
0
0
0
1

0
1
0
1
1
1
1
0

1
1
0
1
1
0
1
1

O, utilizando el cdigo que se ha realizado:


12

1
0
0
0
0
1
1
0

0
1
0
0
0
0
1
1

XOR con la clave.

Se har la operacin XOR entre los 48 bits resultantes y la clave.

Tomemos como clave K = 111010001110001101100011011011011011011000101101


Tendremos como resultado de esta operacin:
K E(R) = 101100011110001101101100110110010111110010011000

Sustitucin. Los 48 bits que obtenemos sern divididos en 8 bloques de 6 bits (como se
ve en la tabla anterior, siendo cada la de la tabla un bloque) y a cada uno se aplicar una
operacin de sustitucin que da como resultado 4 bits. La funcin de sustitucin no es lineal
y en ello radica la seguridad del algoritmo, pues es el nico elemento con esta caracterstica. Si
no fuera as el algoritmo completo sera lineal y se podra romper de forma sencilla.

Cada uno de los operadores que realiza la sustitucin se denomina S-box (substitution box )
y entre las 8 darn de nuevo 32 bits. La tabla para la primera de las S-Boxes es:
S-Box 1
0
1
2
3

3 4

10 11 12 13 14 15

14
0
4
15

4
15
1
12

13
7
14
8

1
4
8
2

15
2
6
9

11
13
2
1

8
1
11
7

3
10
15
5

10
6
12
11

6
12
9
3

2
14
13
4

12
11
7
14

5
9
3
10

9
5
10
0

0
3
5
6

7
8
0
13

El resto de S-Boxes pueden ser consultadas en el Anexo II: Tablas S-Boxes, no se incluyen
aqu por motivos de espacio.
En este caso la funcin que realiza la sustitucin ser Si para la S-Box i. Sea B la entrada la
salida ser Si (B)
Para una entrada de 6 bits B = b0 b1 b2 b3 b4 b5 el primer y ltimo bit b0 b5 (22 = 4 valores entre
0 y 3) representan la la a elegir. Los cuatro centrales representan la columna (24 = 16 valores
entre 0 y 15).
Como se ve la tabla es de 4 16, por lo que incluye 64 celdas, pero los valores estn entre 0
y 15 (24 = 16 valores) ya que que la salida debe ser de 4 bits.
13

Para la entrada que obtuvimos de la operacin XOR, 101100, se tendra la la 2 (10 = 2) y
la columna 6 (0110 = 6). Por tanto la salida ser Si (7) = 2, 0010 en binario.

Repitiendo lo mismo para el resto y concatenando el resultado, tendremos:

Permutacin.

Finalmente se permuta la unin de los bloques de 4 bits dando los 32 bits


nales. Esta operacin se har de forma que los bits de salida de cada S-Box estn en una S-Box
diferente la siguiente iteracin. La permutacin de los 32 bits es la indicada por la tabla que se
muestra a continuacin.
P
16
1
2
19

7
15
8
13

20
23
24
30

21
26
14
6

29
5
32
22

12
18
27
11

28
31
3
4

17
10
9
25

La funcin en este caso ser P (L) y la salida se corresponder con la permutacin de los
elementos de modo que el primero de P (L) sea el indicado por la priemra celda (16), el segundo
el indicado por la segunda celda (7) y as hasta nalizar.

La concatenacin de los cuatro elementos se puede ver representada en la siguiente imagen.


14

Que se puede resumir en la funcin F (R, Ki ) = P (S(E(R) Ki ))


De lo anterior, la sustitucin (S-Boxes) se corresponde con la propiedad de confusin, ya
que no permite saber cual es la relacin entre la entrada, la clave y la salida y la permutacin
nal con la difusin, ya que hace que se pierda la estructura de los bits de entrada al ser
repartidos por la cadena nal.
Las redes de Feisel han sido ampliamente estudiadas. Michael Luby y Charles Racko probaron que si la funcin F utilizada es una funcin pseudoaleatoria, con tres iteraciones es
suciente para que el cifrado sea una permutacin pseudoaleatoria[8][9].
Una funcin pseudoaleatoria es aquella que no es posible diferenciar de una verdaderamente
aleatoria (modelo de orculo) con algoritmos ecientes. La misma denicin se aplica a permutaciones pseudoaleatorias, siendo las que no es posible distinguir de una permutacin aleatoria
con algoritmos ecientes. Estos resultados permitieron realizar funciones de este tipo con una
mayor seguridad.
Los vectores que hemos utilizado y los pasos seguidos sern los mismos para cualquier aplicacin del algoritmo, variando nicamente el valor de la clave, por lo que todos ellos podrn
ser pblicos. El peso de la seguridad recaer solamente en la ocultacin de la clave privada.
15

El descifrado de un mensaje se realizara de forma idntica, en este caso utilizando como


claves los mismos valores pero de forma inveresa. Es decir, las subclaves k 'j , j = 1 . . . 16 para
descifrar seran aquellas tales que kj0 = k16j+1 , siendo ki las utilizadas para cifrar.

16

6.

S-Boxes

Como se ha dicho, las S-Boxes hacen que el sistema no sea lineal. En caso de no ser as se
podra realizar un ataque por texto plano conocido (Known-plaintext attack, KPA) en el que se
puede obtener informacin de las claves a partir de un texto plano y el correspondiente cifrado.
Para que las S-Boxes sean seguras hay que tener en consideracin ciertas propiedades
que fueron publicados por Coppersmith en 1994[10], uno de los integrantes del equipo que lo
dise. Esta publicacin se realiz tras la publicacin del criptoanlisis diferencial que veremos
y permiti descubrir que en las S-Boxes ya se haban tenido cuenta criterios para evitarlo, pues
era ya conocido por sus diseadores bajo el nombre de T-Attack.
Los criterios incluyen lo siguiente:
1. La salida de una S-Box no debe ser cercana a una funcin lineal d la entrada. Esto
signica que los bits de salida que son iguales al XOR de un subconjunto de los bits de
entradas deben ser cercanos a 1/2.
2. Si se jan los bits de los extremos de una entrada y se varan los 4 bits centrales, cada
una de las 16 posibles salidas debe ocurrir una vez.
3. Si dos entradas de una S-Box tienen un solo bit distinto, las salidas deben diferenciarse
al menos en 2 bits.
4. Si dos entradas dieren en los 2 bits centrales las salidas deben tener al menos 2 bits
distintos.
5. Si dos entradas dieren en los primeros dos bits y son iguales en sus ultimos dos bits, las
salidas no deben ser las mismas.
6. Para cualquier diferencia entre pares de entrada, no ms de 8 de las 32 posibles opciones
deben dar la misma diferencia de salida.

17

7.

Generacin de Claves

Hemos visto que es necesario generar 16 claves de 48 bits a partir de una clave de 64, con
este mecanismo es posible reducir el tamao de la clave que se almacena de 1152 bits a 64. Sin
embargo el tamao a efectos criptogcos no ser tal. Aunque la clave es de 64 bits, 8 de ellos
no intervienen, por lo que su valor criptogrco quedar reducido a 56, y el modo en que se
generan las 16 claves es conocido, por lo que la generacin de subclaves no aumentar el valor
criptogrco.
Las posibilidades para la clave, teniendo esto en cuenta, sern 256 .
Para la generacin de las claves se utilizarn dos vectores, PC-1 y PC-2.
El primero se utilizar para reducir el tamao de 64 a 56 bits y permutar estos valores. Se
aplicar antes de comenzar con la generacin de claves y dar como resultado dos cadenas de
bits (C0 y D0 ) de 28 bits y cada una se permutar de la forma siguiente, se muestra el vector
de la permutacin igual que se hizo en el apartado anterior:
PC-1 (generar C0 )
54
1
10
19

49
58
2
11

41
50
59
3

33
42
51
60

25
34
43
52

17
26
35
44

9
18
27
36

PC-1 (generar D0 )
63
7
14
21

55
62
6
13

47
54
61
5

39
46
53
28

31
38
45
20

23
30
37
12

15
22
29
4

A partir de aqu, los bits de cada uno de los dos vectores resultantes de la permutacin PC-1
se irn rotando hacia la izquierda. El segundo de los vectores de permutacin (PC-2) se aplicar
a la concatenacin de los mismo tras cada desplazamiento para generar cada una de las claves
a partir de los dos anteriores:

14
3
23
16
41
30
44
46

17
28
19
7
52
40
49
42

PC-2
11 24
15 6
12 4
27 20
31 37
51 45
39 56
50 36
18

1
21
26
13
47
33
34
29

5
10
8
2
55
48
53
32

El nmero de rotaciones a la izquierda que se har para cada vuelta es el siguiente:


Iteracin Bits desplaz. Iteracin Bits desplaz.
1
1
9
1
2
1
10
2
3
2
11
2
4
2
12
2
5
2
13
2
6
2
14
2
7
2
15
2
8
2
16
1
En la imgen podemos ver este proceso:

19

Con el cdigo que se incluye podemos generar estas claves.

Con lo anterior tendramos 16 claves, cada una de las cuales contiene 48 bits de los 56 de la
clave original. Conocer cualquiera de estas subclaves reduce un ataque por fuerza bruta de las
256 posibilidades iniciales a solo 28 .
Ya hemos denido el comportamiento completo del algoritmo. Por lo que uniendo todo lo
anterior es posible cifrar y descifrar mensajes. En el cdigo adjunto se encuentran las secciones
de prueba de cifrado por bloques y de texto, que cifra un mensaje completo.

20

8.

El

Fundamentos del Criptoanlisis Diferencial

se basa en el estudio de las diferencias entre pares de


textos planos y cifrados. Es posible aplicarlo a los cifradores de Feistel y otros en los que se
tiene una funcin sencilla que se repite varias veces.
criptoanlisis diferencial

Conociendo la estructura del algoritmo y sus tablas se tratar de obtener informacin de la


clave a partir de esas diferencias. Sin embargo, estos pares no se tomarn de forma arbitraria
sino que se seguirn unas pautas para su obtencin, por lo que es especialmente til cuando es
posible obtener el texto cifrado para unos textos planos previamente elegidos. En caso contrario,
sera necesario obtener una gran cantidad de texto plano y cifrado para aplicarlo, ya que habra
que buscar pares vlidos dentro de los que tenemos.
Este ataque fue introducido por los investigadores israeles Eli Biham y Adi Shamir en 1990,
sin embargo ya era conocido por los investigadores de IBM, que pusieron las precauciones comentadas para evitarlo.
Estudiaremos las bases del criptoanlisis diferencial aplicndolas al cifrador de Feistel, dado
que las permutaciones inicial y nal del DES son conocidas y no aportar valor criptogrco se
eliminarn para simplicar, aunque aadirlas sera trivial.
Tenemos que en cada vuelta se cifra una cadena de 32 bits (R), por lo que habr que centrarse
en ella para estudar el ataque.
En primer lugar tomamos dos de estas cadenas R y R0 y su diferencia, siendo esta la suma
exclusiva.
4R = R R0

La importancia de elegir la diferencia entre pares en lugar de el texto plano y estudiar el texto
cifrado se debe a que de este modo es posible rastrear las modicaciones que se producen
en el algoritmo, en concreto en la S-Box. Veremos que esto se debe a la no-linealidad de las
S-Boxes en un algoritmo en el que el resto de pasos s son lineales.
Como la expansin E es lineal, se cumplir:
E(4R) = E(R R0 ) = E(R) E(R0 ) = A A0 = 4A

Podemos comprobar que se cumple para una pareja dada con el cdigo incluido.

La operacin que se realiza a continuacin es la suma exclusiva con la clave, que, de nuevo,
es lineal, por tanto:
(A Ki ) (A0 Ki ) = A A0 (Ki Ki ) = A A0 0 = A A0 = 4A
21

De nuevo lo comprobamos para este caso:

Sin embargo, para las S-Boxes, como es de esperar, no ocurrir lo mismo, es decir:
Si (4B) = Si (B B 0 ) 6= Si (B) Si (B 0 )

Podemos ver con una de las cajas que es as:

Con la permutacin ocurrira lo mismo que con la expansin inicial.


De este modo vemos que el nico elemento que hace que se modique la diferencia son las
S-Boxes. Se podr estudiar la relacin entre entradas y salidas para obtener informacin de las
claves.
El algoritmo DES, como hemos dicho, se cre con la idea de que las salidas fueran pseudoaleatorias. Para un cambio de un bit en la entrada se espera que cambin aproximadamente
32 bits en la salida. Sin embargo, cuando tomamos la diferencia como hemos hecho la salida no
es uniforme, permitiendo de este modo ataques estadsticos.
A partir de esta base se construir un metodo que, analizando la diferencia entre dos textos
cifrados, estudiar las salidas ms frecuentes y se aprovechar de ellas para obtener informacin
de la clave.

22

9.

Criptoanlisis Diferencial de las S-Boxes

El primer paso que se lleva a cabo es estudiar las posibles salidas para cada entrada en las SBoxes. Dado que la entrada es de 6 bits y la salida de 4, habr 64 posibles entradas y 16 valores
distintos de salida. Del mismo modo, si tomamos el par de entradas (B, B 0 ), tambin habr 64
posibles diferencias 4B = B B 0 y 16 para la diferencia de las salidas 4S(B) = S(B) S(B 0 ).
Estos valores se pueden representar en forma de una tabla de diferencias como la siguiente, en la que veremos que no todos los valores tienen la misma probabilidad. Cada la ser
un valor para la diferencia de la entrada y las columnas sern los 16 valores distintos para la
salida, el elemento para la la i y la columna j ser el nmero de entradas entre las 64 posibles
que producen esa salida. Por ejemplo, para la tabla 1 podramos obtenerlo de la forma siguiente.

Y las primeras las de la tabla (de las 64 totales) tendran una forma como la de la imagen.

Cada la sumar un total de 64 dado que es el nmero de posibles entradas para cada diferencia. En concreto, para la primera vemos que el resultado es siempre 0 dado que las dos entradas
son iguales.
Para el resto de las podemos observar que no todos los valores son posibles. En el caso de la
entrada con diferencia 1 vemos que nunca tenemos como resultado 0, 1, 2, 4, 8 y que la diferencia
10 aparece en 14 de las 64 ocasiones ( 22 %). Se ve de nuevo que la distribucin no es uniforme.
En el diseo de las S-Boxes vimos que una de los principios era:
23

Para cualquier diferencia entre pares de entrada, no ms de 8 de las 32 posibles opciones


deben dar la misma diferencia de salida.

El valor 16 sera el mayor que nos encontremos de acuerdo a esta regla, ya que en la lista
habr pares repetidos, dado que se consideran 64 posibilidades aparecer tanto (a, b) como
(b, a). Por este motivo observamos tambin que todos los valores son pares.
Vamos a estudiar los valores para una entrada en concreto, utilizaremos una para la que haya
una distribucin ms desequilibrada. En la que la diferencia de entrada es 52 encontramos los
siguientes valores:

Es decir, 8, 16, 6, 2, 12, 6, 8, 6 para las salidas 1, 2, 3, 4, 7, 8, 13, 15, teniendo para una de ellas
16 entradas, el mximo posible.
Si obtenemos los valores para los que ocurren estas salidas tenemos lo siguiente:

A partir de estos elementos vamos a tratar de obtener la clave. Supongamos un par de entradas que dieran en 52, E(R) = 1 y E(R0 ) = 53 y la porcin de la clave K1 que corresponde
a la parte que entrar a la S-Box.
Sea el resultado de la suma exclusiva B1 = E(R1 ) K1 y B10 = E(R10 ) K1 sabemos que
4B = B B10 = E(R)1 E(R0 )1 = 4E(R) = 52.
Adems, como B1 = E(R1 )K1 entonces K1 = B1 E(R1 ) y de igual modo K1 = B10 E(R10 ).
Supongamos que en este caso tenemos como salida 4B = 13. Conocemos los valores de
E(R1 ) y E(R10 ) y que los posibles valores para B 1 y B10 son los de la la 13 de la tabla superior.
24

16=7

53 6 = 51

1 16 = 17 53 16 = 37
1 22 = 23 53 22 = 35
1 28 = 29 53 28 = 41
1 34 = 35 53 34 = 23
1 36 = 37 53 36 = 17
1 40 = 41 53 40 = 29
1 50 = 51

53 50 = 7

La clave est entre {7, 17, 23, 29, 35, 37, 41, 51}.
Si adems de este conocieramos el resultado para otra entrada, por ejemplo, para 21 y 33,
tambin con diferencia 52 y con salida 3, tendramos la siguiente tabla.
21 1 = 20

33 1 = 32

21 2 = 23

33 2 = 35

21 21 = 0

33 21 = 52

21 33 = 52

33 33 = 0

21 53 = 32 33 53 = 20
21 54 = 35 33 54 = 23

Con lo que ahora sabemos que la clave tambin esta en {20, 23, 0, 52, 32, 35}. Por lo que estar
en:
{7, 17, 23, 29, 35, 37, 41, 51} {20, 23, 0, 52, 32, 35} = {23, 35}

La clave ser 23 o 35. Vemos que ambas son posibles:

25

No podremos decidir cul de ellas es la correcta ya que 23 35 = 52 = 4B . Sin embargo,


si podramos encontrar la clave correcta repitiendo para una nueva difrencia de entrada y buscando la interseccin entra la nueva lista y la que tenemos.

26

10.

Criptoanlisis Diferencial Completo (DES Simplificado)

Para realizar el criptoanlisis del algoritmo completo nos basaremos en la idea anterior, pero
ahora es necesario rastrear la salida tras pasar por distintas rondas del algoritmo. Vamos a
estudiarlo para una versin simplicada con solo las dos primeras rondas.
Se usar la idea del caracterstico. Esta es la entrada que ser posible seguir a travs de
varias rondas y que ofrece la mayor probabilidad para una de sus salidas.
Los 32 ltimos bits (R0 ) del caracterstico entrarn a la funcin de Feistel. Tendrn que ser
aquellos que nos permitan trazar el camino despus de pasar por la expansin E.
Para nuestro caso esta entrada ser 4R = 60 00 00 00 (cada dgito son 6 bits). Para el primer
byte, se tiene que todos los bits que estn a uno irn a la S-Box 1 y los otros al resto.

De este modo la entrada para todas las cajas ser 0 menos para la primera, y lo mismo
ocurrir para la salida de las mismas.
En este caso la entrada para la S-Box 1 es 001100 = 12. Consultaremos las salidas ms
probables para la entrada con diferencia 12.

La salida ms probable es 14 con probabilidad 14/64. Del resto de salidas de S-Boxes tenemos
la seguridad de que tendrn como resultado cero. Buscaremos aquellas entradas que produzcan
esta salida.
Para esta salida, tras la permutacin obtenemos el valor:
4P (L) = P (14 00...) = 00 80 82 00 (cada dgito son 4 bits).

Tras la salida de la funcin de Feistel se har el XOR con la parte restante (L0 ) y se desea que
el resultado sea 0 para poder rastrear lo realizado hasta ahora. De otro modo sera modicado en
la segunda ronda. Ser aquel tal que L0 00 80 82 00 = R1 = 0. Ser, por tanto, L0 = 00 80 82 00.
27

Por tanto el caracterstico ser R0 L0 :

Y enemos como resultado de la ronda 1:


L0 = 00 80 82 00
R0 = 60 00 00 00
L1 = 60 00 00 00
R1 = 00 00 00 00

Si ralizamos la ronda dos, observamos que la entrada a la funcin de Feistel es 0, por lo que
solo queda hacer:
L2 = R1 = 00 00 00 00
R2 = L1 0 = 60 00 00 00

Vamos a recapitular lo anterior para realizar un ataque a nuestra versin simplicada del
algoritmo.

1. En primer lugar necesitaremos obtener pares de texto plano tal que su diferencia es:
4M = M M 0 = 00 80 82 00 60 00 00 00

A la que hemos llamado caracterstico.


28

2. Habr que obtener un texto plano aleatorio y hacer la suma exclusiva con la diferencia
deseada.
Despus necesitaremos tener el texto cifrado (C, C 0 ) para el par de textos planos.
3. De estos textos cifrados sabemos que su diferencia es 00 00 00 00 60 00 00 00 en 14 de cada
64 ocasiones. Si en este caso no es as, simplemente tomaremos un nuevo par de textos
planos con sus correspondientes textos cifrados hasta obtener uno con este resultado.
El nmero aproximado de entradas que necesitaremos ser de 64/14, aproximadamente 5.
4. Ahora que tenemos el resultado que queremos, sabemos que ha sido producido por una
de las 14 opciones para este resultado que vimos en la tabla, igual que realizamos en el
anlisis de una sola S-Box. Solo habr que crear las listas para ambas entradas y calcular
su interseccin.
Para lograr esto, primero reproduciremos los pasos hasta el punto en el que entra en juego
la subclave, punto desde el que partimos en el anlisis de la S-Box, a partir de aqu solo hay
que repetir lo realizado en el apartado anterior para el anlisis de una S-Box.
Se realizar la funcin de expansin sobre los primeros 6 bits de la parte izquierda. Posteriormente se toman los valores correspondientes a la S-Box 1 y se hace el XOR para cada par de
entrada posible con distancia dos que producen la salida 14.
En la lista creada estar la subclave K1 .

Tras esto repetiremos el proceso con distintos pares de texto y la misma diferencia hasta que
en la intereseccin de las tablas de todos ellos queden solamente dos valores, que ser la parte
de la subclave deseada.
En el caso anterior, si repetimos otra vez el resultado de la interseccin ser:

Y tras una interaccin mas nos quedarn solo dos valores

De los cuales, uno, en efecto, era la parte de la subclave buscada:


29

Como sabemos, no es posible saber cual de los dos es el correcto. Pero se podra realizar de
nuevo tomando un valor diferente al caracterstico con las mismas propiedades, por ejemplo,
cambiando el 6 por el 2 (no se incluyen nuevos bits).
A partir de este punto ser necesario ir creando caractersticos para cada una de las S-Boxes
S2 a S8. Con esto tendremos los 48 bits de la subclave.

30

11.

Obtencin de la Clave Completa

Llegados a este punto tenemos una de las subclaves, sin embargo hay que obtener 56 bits
y tenemos solamente 48. Para conseguirlos habr que retroceder los pasos que se dan en la
generacin de claves.
En primer lugar haremos la inversa de la funcin PC-2. No ser posible obtener los 56 valores,
por lo que se generarn 28 = 256 posibilidades.
A cada una de ellas se aplicar la funcin inversa de PC-1. Esta funcin deber generar 64
bits a partir de los 56 que tenemos. Sin embargo, como los bits que se aadiran no tienen
importancia a la hora de cifrar/descifrar, bastara con ponerlos todos a 0 o a 1.
Llegados a este punto tenemos 256 posibles claves, sobre las que se har un ataque por fuerza
bruta. Ya sea teniendo acceso a pares de texto claro/cifrado o generandolos, se ir comprobando
el resultado de cifrar los textos planos con cada una de las cifras contra los que sabemos que
son correctos. En el momento en que encontramos uno que funcione, tendremos la clave nal.
El resultado nal es el siguiente.

31

12.

Resultados del Criptoanlisis Diferencial

Hemos visto como para la versin simplicada el criptoanlisis reduce el tiempo necesario
para encontrar una clave de un espacio de bsqueda que no era tratable, 256 , a uno de solo 28 .
En este caso encontrar los pares de entrada es sencillo ya que la probabilidad de encontrar una
coincidencia era muy grande.
En caso de aadir ms rondas, encontrar estas coincidencias ser ms complicado, principalmente por los criterios de diseo de las S-Boxes vistos ya que el diseo se hizo pensando en la
posibilidad de un criptoanlisis diferencial.
En este ejemplo ha sido necesario un nico caracterstico, pero para un nmero mayor de
rondas no ser as y habr que utilizar varios caractersticos diferentes. La dicultad para encontrar las coincidencias aumentar con el nmero de rondas.
La dicultad para encontrar la clave una vez descubierta la subclave seguir siendo la misma,
por lo que ser en el problema de encontrar las coincidencias el que aada complejidad.
En su publicacin Eli Biham y Adi Shamir incluyen una tabla que indica el nmero de pares
necesarios para realizar el criptoanlisis y la probabilidad de que ocurra(p.253).
Rondas Pares Necesarios Probabilidad
4

23

27

1
16

215

1
10486

226

224

10

234

232

11

235

232

12

242

240

13

243

240

14

250

248

15

251

248

16

257

256

El algoritmo hasta 8 rondas se podra romper fcilmente en unos minutos. Pero como se
ve, para el caso del DES original el criptoanlisis diferencial no ofrece una verdadera ventaja
respecto a una bsqueda por fuerza bruta al necesitar tener disponibles 257 pares. Sin embargo,
en caso de poder generar los pares se podra realizar el ataque con tan solo 247 , donde s habra
una mejora respecto a una busqueda exahustiva.
Como se ha dicho esta dicultad viene dada por las caractersticas tcnicas del algoritmo,
modicar algunas de ellas hara que la fortaleza del algoritmo disminuyera notablemente y el
criptoanlisis ponen de maniesto la importancia de la eleccin. Estas modicaciones incluiran
32

la permutacin P, el orden de las S-Boxes y su contenido o la expansin E.


Aunque el criptoanlisis diferencial no fuera nalmente efectivo contra un DES completo, s
se puede utilizar con xito contra otros algoritmos similares al DES y se ha convertido en uno
de los ataques en los que se tiene que poner especial cuidado a la hora de disear un sistema
criptogrco simtrico de bloques.
Un ejemplo de sistemas contra los que se ha tenido xito con el criptoanlisis diferencial son
los sistemas de la familia Feal. Tambin se han realizado ataques a funciones hash como la
funcin Merkle's Snefru y variaciones de la funcin Miyaguchi's N-Hash.

33

13.

Otros Ataques al Algoritmo DES

Desde su creacin se han utilizado otros ataques contra el algoritmo DES. La empresa RSA
Security, dedicada a la criptografa y seguridad creo a modo de concurso los DES Challenges
en 1997 con el n de demostrar la debilidad del algoritmo DES.
Los ataques por fuerza bruta tuvieron xito, logrando el proyecto DESCHALL resolver el
problema 96 das despus. En nmerosas ocasiones se ha vuelto a poner de maniesto la posibilidad de realizar ataques por fuerza bruta efectivos contra el DES. En uno de los concursos
posteriores (1998) el proyecto de computacin distribuida distributed.net, en el que voluntarios
de todo el mundo prestan tiempo de clculo de sus equipos mientras no estn en uso, lo consigi
en 41 das. El mensaje que se tuvo que descubrir, en referencia a esta red de computacin, fue:
"The secret message is: Many hands make light work."

Solo unos meses despus esta cifra fue superada por la mquina Deep Crack, diseada para
romper el algoritmo DES en concreto, puedo hacerlo en solo 56 horas. En esta ocasin el mensaje
hizo referencia directamente a la necesidad de un cambio en el estndar, que segua siendo el
DES: "The secret message is: It's time for those 128-, 192-, and 256-bit keys.". Finalmente, en
el ltimo concurso DES Challenge (III, 1999), la clave fue encontrada en 22 horas y 15 minutos.
Otro ataque existente es el criptoanlisis lineal. Este se ha desarrollado tanto para sistemas
lineales de bloque como de ujo, siendo junto al diferencial uno de los ms usados contra los
primeros. Su descubrimiento fue realizado por Mitsuru Matsui que lo aplic al cifrador FEAL y
public posteriormente una propuesta para hacerlo contra el DES. Esta era mejor que el criptoanlisis lineal necesitando disponer de 243 textos para los que se conozca su correspondiente
cifrado.
El criptoanlisis lineal es un ataque de tipo estadstico que consiste en realizar operaciones
de suma exclusiva entre los bits de un texto en claro mientras que se hace lo mismo entre los
del texto cifrado. Esta accin se ir repitiendo con distintos bits de cada uno de los textos,
proceso mediante el cual se puede reucuperar informacin de la clave.
Otra propuesta que consiste en una variacin del criptoanlisis diferencial es el criptoanlisis
diferencial imposible. En esta ocasion no se estudiar como se propaga una modicacin en el
proceso de codicacin sino que se aprovechara las derencias entre dos textos que se estn
cifrando y que es imposible que se den en ciertas partes del cifrado. Fue presentado por Lars
Knudsen en 1998 y se ha utilizado contra algoritmos como IDEA, Keops o Kefrn.

34

14.

Mejoras al Algoritmo DES

Una de las primeras opciones para mejorar el algoritmo DES son los modos de operacin que
se aplican a los algoritmos de cifrado por bloques. Estos permiten cifrar mensajes de mayor
tamao que el tamao de bloque. Algunos de estos modos son los siguientes[11] (en la referencia
se pueden ver de modo grco):
(Electronic Codebook) Es el modo ms sencillo, cada bloque se cifrar de modo independiente y se concatenarn del mismo modo que se vi en la introduccin. Este modo
tiene algunos incovenientes ya que no proporciona condencialidad. Uno de los ejemplos
tpicos es en el que se codica una imagen, dado que un bloque de un color se codica
siempre igual, podremos recuperar la forma de los objetos a partir de los bloques cifrados.

ECB:

(Cipher-Block Chaining) En este caso a cada bloque se le aplica una suma exclusiva
con el resultado de cifrar el anterior bloque. Este modo soluciona el problema anterior,
pero hace que no sea posible un cifrado en paralelo, ya que para cifrar cada mensaje ser
necesario haber realizado el cifrado del anterior previamente.

CBC:

(Propagating Cipher-Block Chaining) No se har la suma exclusiva solo con el


anterior bloque cifrado, sino que se har entre el anterior bloque en claro, cifrado y el
bloque a codicar en ese momento.

PCBC:

(Cipher Feedback) Como el CBC pero se cifrar el resultado del bloque anterior y
posteriormente se har la suma exclusiva con el bloque a cifrar actual, en lugar de hacerla
antes del cifrado. El descifrado se har del mismo modo que el CBC.

CFC:

(Output Feedback) El cifrado no se har del resultado del bloque anterior sino solo
de la salida del cifrador (es decir, antes de hacer el XOR con el texto plano).

OFB:

CTR:

(Cipher Feedback) Este modo imita el cifrado en ujo.

Una de las propuestas para mejorar el algoritmo surgi debido a los problemas que existan
con el algoritmo, fue el Triple DES, o TDEA (Triple Data Encryption Algorithm ). Esta modicacin realizaba tres cifrados con DES sobre cada bloque. De este modo se consegua una
resistencia frente al ataque por fuerza bruta al conseguir una clave de tamao mayor.
Existen tres opciones a la hora de tomar la clave, que las tres sean independientes, con lo que
se consigue una clave de tamao 168, que sean iguales la primera y la tercera, que supondra
una clave de 112 o que sean las tres iguales, con lo que el tamao de la clave seguira siendo 56,
esta ltima es equivalente al DES normal ya que el primer y el segundo cifrado se cancelaran,
pero apareci por razones de compatibilidad con el DES.
Finalmente se reemplaz el algoritmo DES. Hubo diversas propuestas para la creacin de
un nuevo estndar. Algunas de ellas fueron RC5, BlowFish, IDEA o FEAL aunque nalmente
fue el algoritmo AES (Advanced Encryption Standard ) el elegido. Este algoritmo supone igualmente u nsistema de cifrado por bloques y es uno de los ms utilizados en criptografa asimetrica.
El tamao del bloque para este algoritmo es de 128bits y permite varios tamaos de clave
mayores que el DES, en concreto 128, 192 y 256. En lugar de utilizar una red de Feistel se utiliza
una red de sustitucin-permutacin, aunque sigue una losofa similar. Se har un nmero de
35

rondas que depende del tamao de clave, 10, 12 y 14 respectivamente. A da de hoy no hay
ataques realizables contra el algoritmo AES.

36

Anexo A: Cdigo en Mathematica

En el cdigo adjunto en Mathematica se ha implementado la funcionalidad necesaria para


el cifrado y descifrado con el lgoritmo DES. Mediante el cdigo se ha tratado de comprender
el funcionamiento del algoritmo en su totalidad y ofrecer la posibilidad de obtener los datos
intermedios que se producen. El cdigo se ha utilizado en distintas secciones del trabajo para
mostrar los resultados de los ejemplos.
Para implementar el algoritmo se han realizado las siguientes partes, que aparecen como
secciones en el cuaderno de Mathematica: Generacin de Claves, Funcin de Feistel, Algoritmo
DES, Cifrar/Descifrar (cifrado de bloques) y Cifrar/Descifrar Textos (cifrado de textos completos)
Tambin se ha implementado el cdigo necesario para obtener las claves mediante un criptoanlisis diferencial de una versin simplicada del algoritmo DES a 2 rondas.
Aunque sera posible realizar optimizaciones que supusieran una reduccin del tiempo que
tarda es actualmente lo hace en tiempos de aproximadamente 3 segundos con un ordenador
equipado con un procesador Intel Quad Core Q6600. Dado que no era el objetivo conseguir una
implementacin eciento sino ayudar en la comprensin del criptoanlisis no se ha puesto un
mayor empeo en la optimizacin.

37

Anexo B: ablas S-Boxes

S-Box 1
6 7 8

0 14 4 13 1 2 15 11 8 3
1 0 15 7 4 14 2 13 1 10
2 4 1 14 8 13 6 2 11 15
3 15 12 8 2 4 9 1 7 5
S-Box 2
0 1 2 3 4 5 6 7 8
0 15 1 8 14 6 11 3 4 9
1 3 13 4 7 15 2 87 14 12
2 0 14 7 11 10 4 13 1 5
3 13 8 10 1 3 15 4 2 11
S-Box 3
0 1 2 3 4 5 6 7 8

10 11 12 13 14 15

10 6 12 5 9
6 12 11 9 5
12 9 7 3 10
11 3 14 10 0

0
3
5
6

7
8
0
13

9 10 11 12 13 14 15
7 2 13 12
0 1 10 6
8 12 6 9
6 7 12 0
9

0
9
3
5

5 10
11 5
2 15
14 9

10 11 12 13 14 15

0 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8
1 13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1
2 13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7
3 1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12
S-Box 4
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 7 13 14 3 0 6 9 10 1
1 13 8 11 5 6 15 0 3 4
2 10 6 9 0 12 11 7 13 15
3 3 15 0 6 10 1 13 8 9
S-Box 5
0 1 2 3 4 5 6 7 8

2
7
1
4

8
2
3
5

5 11 12 4 15
12 1 10 14 9
14 5 2 8 4
11 12 7 2 14

10 11 12 13 14 15

0 2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9
1 14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6
2 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14
3 11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3
S-Box 6
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 12 1 10 15
1 10 15 4 2
2 9 14 15 5
3 4 3 2 12

9 2 6 8 0 13 3 4 14 7 5 11
7 12 9 5 6 1 13 14 0 11 3 8
2 8 12 3 7 0 4 10 1 13 11 6
9 5 15 10 11 14 1 7 6 0 8 13
S-Box 7
38

0lo
0
1
2
3

4 11 2 14 15 0 8 13 3 12
13 0 11 7 4 9 1 10 14 3
1 4 11 13 12 3 7 14 10 15
6 11 13 8 1 4 10 7 9 5

0 13 2 8
1 1 15 13
2 7 11 4
3 2 1 14

S-Box 8
6 7 8

10 11 12 13 14 15
9
5
6
0

7 5 10
12 2 15
8 0 5
15 14 2

6
8
9
3

1
6
2
12

10 11 12 13 14 15

4 6 15 11 1 10 9 3 14 5 0 12 7
8 10 3 7 4 12 5 6 11 0 14 9 2
1 9 12 14 2 0 6 10 13 15 3 5 8
7 4 10 8 13 15 12 9 0 3 5 6 11

39

Bibliografa

[1] wikipedia.org, Block Cipher.http://en.wikipedia.org/wiki/Block_cipher


[2] RFC2898 , PKCS #5: Password-Based Cryptography Specication 2.0http://tools.ietf.org/html/
rfc2898 2
[3] Claude Shannon, Communication Theory of Secrecy Systems, 1949 - http://netlab.cs.ucla.edu/
wiki/files/shannon1949.pdf 2, 5
[4] wikipedia.org, Data Encryption Standard - http://en.wikipedia.org/wiki/Data_Encryption_
Standard 3
[5] National Institute of Standards and Technology (NIST), Data Encryption Standard (DES), 199910-25. FIPS PUB 46-3. http://en.wikipedia.org/wiki/National_Institute_of_Standards_and_
Technology 3
[6] wikipedia.org, Lucer Cipher http://en.wikipedia.org/wiki/Lucifer_(cipher) 3
[7] wikipedia.org, Pseudorandom Function http://en.wikipedia.org/wiki/Pseudorandom_function
[8] wikipedia.org, Feistel Cipher http://en.wikipedia.org/wiki/Feistel_cipher#Theoretical_work 5
[9] Michael Luby, Charles Racko, How to Construct Pseudorandom Permutations from Pseudorandom Functions http://epubs.siam.org/doi/abs/10.1137/0217022 5
[10] Don Coppersmith, The Data Encryption Standard (DES) and its strength against attacks http://
ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=5389567 6
[11] wikipedia.org, Block Cipher Modes of Operation http://en.wikipedia.org/wiki/Block_cipher_
modes_of_operation 14
[12] L.De Meyer, B. Bilgin, B. Preneel, Extended Analysis of DES S-Boxes http://www.cosic.esat.
kuleuven.be/publications/article-2335.pdf

[13] Cetin Kaya Koc Dierential Cryptanalysis http://cs.ucsb.edu/~koc/ac/notes/dc.pdf


[14] Eli Biham, Adi Shamir, Dierential Cryptanalysis of DES_like Cryptosystems http://sota.gen.nz/
crypt_blues/biham91differentia.pdf

40

Vous aimerez peut-être aussi