You are on page 1of 18

TEMA

Data Encryption Standard DES


El algoritmo Data Encryption Standard (DES), tambin conocido como Data
Encryption Algorithm (DEA), es el mtodo de cifrado simtrico ms ampliamente
conocido. Ha sido el primer algoritmo moderno de cifrado para intereses
comerciales, difundido de forma abierta y completa a todo el mundo, en todos
sus detalles de implementacin. Su estndar queda recogido en American
Standard FIPS 462 y FIPS 463 (donde se aade el algoritmo TripleDES o
TDEA: Triple Data Encryption Algorithm). Estos documentos estn disponibles y
se encuentran fcilmente en la web: vale la pena disponer de ellos.
(FIPS: Federal Information Processing Standards son estndares anunciados
pblicamente desarrollados por el gobierno de los Estados Unidos para su
utilizacin por parte de todas las agencias del gobierno no militares y por los
contratistas del gobierno. Muchos estndares FIPS son versiones modificadas de
los estndares usados en las comunidades ms amplias como por ejemplo ANSI,
IEEE, ISO, etc.)

1.

UNA BREVE INTRODUCCIN HISTRICA (www.wikipedia.es).


Los orgenes de DES se remontan a principios de los 70. En 1972, la autoridad de
estndares

estadounidense

NBS

(National

Bureau

of

Standards)

ahora

rebautizado NIST (National Institute of Standards and Technology) seal, en


un estudio sobre las necesidades del gobierno en el mbito de la seguridad
informtica, la necesidad de un estndar a nivel gubernamental para cifrar
informacin confidencial.
El 15 de mayo de 1973, tras consultar con la NSA (National Security Agency), el
NBS solicit propuestas para un algoritmo que cumpliera rigurosos criterios de
diseo: ninguna de las propuestas que recibi pareci adecuada. Se realiz una

Data Encryption Standard - DES

Pgina 1

segunda peticin el 27 de agosto de 1974. Esta vez IBM present un


algoritmo que fue considerado aceptable, desarrollado durante el periodo 1973
1974 y basado en otro anterior, el algoritmo Lucifer de Horst Feistel.
El papel de la NSA en el diseo. El 17 de marzo de 1975, la propuesta de
IBM fue publicada en el Registro Federal. En algunos sectores se critic la
seguridad del algoritmo, sealando dos aspectos que podan hacerlo vulnerable:

La corta longitud de la clave.

Las misteriosas S-cajas (ms adelante, en esta presentacin de DES se ver


a qu nos referimos), que evidenciaban la inadecuada interferencia de la NSA.

La sospecha era que el algoritmo haba sido debilitado de manera secreta por la
agencia de inteligencia de forma que ellos y nadie ms pudiesen leer
mensajes cifrados fcilmente.
Algunas de las sospechas sobre puntos dbiles ocultos en las S-cajas fueron
descartadas en 1990, con el descubrimiento independiente y la publicacin libre
por Eli Biham y Adi Shamir del criptoanlisis diferencial, un mtodo general
para romper cifrados de bloque. Las S-cajas de DES eran mucho ms resistentes
al ataque que si hubiesen sido escogidas al azar, lo que sugera que IBM conoca
la tcnica all en los 70. ste era de hecho, el caso: en 1994, se publicaron los
criterios de diseo originales para las S-cajas; IBM haba descubierto el
criptoanlisis diferencial en los 70 y, tras asegurar DES, la NSA les orden
mantener en secreto la tcnica. De hecho no hay evidencias de una influencia
negativa en el diseo de DES destinada a debilitar el criptosistema. Al menos en
lo que hace referencia a las S-cajas.
Las otras crticas sobre que la longitud de la clave era demasiado corta se
fundaban en el hecho de que la razn dada por la NSA para reducir la longitud de
la clave de 64 bits a 56 era que los 8 bits restantes podan servir como bits de
paridad, lo que en cierto modo resultaba sospechoso (tambin esta caracterstica
de la clave se ver ms adelante). Se sabe que la NSA anim, o incluso
persuadi a IBM para que redujera el tamao de clave de 128 bits a 64, y de ah
a 56 bits; con frecuencia esto se ha interpretado como una evidencia de que la
NSA posea suficiente capacidad de computacin para romper claves de este
tamao incluso a mediados de los 70.
El algoritmo como estndar. A pesar de la polmica, DES fue aprobado como
estndar federal en noviembre de 1976, y publicado el 15 de enero de 1977

Data Encryption Standard - DES

Pgina 2

como FIPS PUB 46, autorizado para el uso no clasificado de datos. Fue
posteriormente confirmado como estndar en 1983, 1988 (revisado como FIPS46-1), 1993 (FIPS-46-2), y de nuevo en 1998 (FIPS-46-3), ste ltimo
definiendo "TripleDES". El 26 de mayo de 2002, DES fue finalmente
reemplazado por AES (Advanced Encryption Standard), tras una competicin
pblica. Hasta hoy da DES contina siendo ampliamente utilizado. Fue un
ataque por fuerza bruta en 1998 el que demostr que DES podra ser atacado en
la prctica, y se destac la necesidad de un algoritmo de repuesto.

2.

FUNDAMENTOS TERICOS PREVIOS DE DES


El diseo de DES se basa en dos conceptos generales de criptografa: en el
cifrado de producto y en el cifrado de Feistel. Es conveniente, antes de
entrarnos en la descripcin del algoritmo DES, presentar estos dos conceptos,
que dan luego forma al algoritmo. Veamos pues cada uno de estos dos
conceptos:
Cifrado de producto.
La idea bsica del cifrado de producto es la de construir una funcin de
cifrado compleja a partir de la composicin de varias operaciones
simples

que

se

ofrecen

de

forma

complementaria,

que

son

individualmente insuficientes para lograr un criptosistema robusto. Sus


operaciones bsicas incluyen las trasposiciones, las traslaciones (por ejemplo, las
realizadas mediante el operador XOR) y transformaciones lineales, operadores
aritmticos, multiplicacin modular y simple sustitucin.
Un cifrado de producto combina dos o ms transformaciones con una intencin
determinada, de manera que el cifrado resultante es ms seguro que el de cada
transformacin por separado. Muchos de los algoritmos simtricos de cifrado en
la prctica son cifrados de producto.
Llamamos ITERACIN DE CIFRADO DE BLOQUE a un cifrado de bloque que
implica la repeticin secuencial de una funcin interna. Los parmetros que
definen este cifrado son el nmero de vueltas o iteraciones,
bloque, , y el nmero de bits, , del total de la clave

Data Encryption Standard - DES

, el tamao del

que tomaremos en cada

Pgina 3

vuelta para crear cada una de las

sub-claves

se realiza con su correspondiente clave

: Cada una de las

iteraciones

Cifrados de Feistel.
El cifrado de Feistel es un cifrado iterado, que transforma un texto plano
de longitud 2

bits en un texto cifrado

despus de repetir un proceso

veces, donde

1. Cada bloque

longitud igual a . El tamao de la clave de cifrado


Cada iteracin (1

, al que se llega

,
es de

bits.

) que realiza la transformacin

define de la siguiente manera:

clave derivada de la clave de cifrado

,
,

y donde

tiene una

, donde

se

es una

es la operacin OR exclusivo,

tambin llamada de suma mdulo 2


Queda pendiente determinar cmo se generan las sucesivas
clave

a partir de la

, que pertenece al campo de claves del criptosistema. Tambin queda

pendiente definir la funcin

. Eso ser una cuestin de cada criptosistema que

use el esquema de los cifrados de Feistel.


La seguridad del cifrado de Feistel depende de la seguridad de su cifrado de
bloque interno (la funcin

). La seguridad aumenta al iterar repetidamente esa

transformacin. En los cifrados de Feistel se toma

3, y habitualmente un valor

par. Como se ha visto, la estructura de los algoritmos de Feisel lleva a un texto


cifrado de la forma

, y no

; de forma general, despus de la ltima

vuelta, los dos bloques se intercambian.


Para descifrar un texto cifrado con la tcnica de Feistel se sigue el proceso
inverso:

, para 1

veces con la secuencia de claves a la inversa,


plano

3.

. Realizando esta operacin


,

, llegaremos al texto

UN ALGORITMO TIPO DES SIMPLIFICADO.


Presentamos un algoritmo de aspecto muy semejante al DES, pero mucho ms
reducido. Al igual que DES es un algoritmo de cifrado por bloques. Como se ver,
es un algoritmo basado en los cifrados de Feistel. Este algoritmo fue presentado
por el profesor Edward Schaefer, de la Universidad de Santa Clara. Es un
algoritmo vlido para la docencia, y no pretende ser un algoritmo de seguridad
criptogrfica. Tiene propiedades y estructura muy similares a las del algoritmo

Data Encryption Standard - DES

Pgina 4

DES, con parmetros muchos menores. Puede ser un buen ejercicio implementar
este algoritmo y probar su funcionamiento.
Como cada bloque se cifra por separado, vamos a suponer que nuestro mensaje
a cifrar consiste en un solo bloque. El mensaje plano
dividimos en dos mitades:
mensaje, y
La clave

consiste en el bloque de los 6 primeros bits del

los 6 bits ltimos.

es de 9 bits.

La iteracin

Feistel.) La funcin

de 8 bits, derivada de la clave

. (Esquema de

de Feistel toma una entrada de 6 bits

y una

de 8 bits y produce una salida de 6 bits. La salida de la

iteracin queda definida as:


itera

en la salida

del algoritmo transforma una entrada

, usando una subclave


entrada

tiene 12 bits, que

, y

veces y produce el texto cifrado

. Este proceso se

.
. En un primer paso,

Para descifrar, comenzamos por el texto cifrado

intercambiamos los bloques de la izquierda y la derecha para obtener

: sa

es la cadena que vamos a someter al descifrado. Ahora realizamos las mismas


operaciones que antes, pero usando las claves
paso toma como entrada

en orden inverso: El primer

y da como salida

.
, y que

Por el procedimiento seguido en el cifrado, sabemos que


,

Entonces

Para la ltima igualdad hemos tenido en cuenta que


,

, as que

0.

De forma similar, el segundo paso del proceso de descifrado transforma


en

. Y as, vemos que al final del proceso se habr regresado al valor


. Intercambiando los bloques de izquierda y derecha llegamos finalmente al

texto plano original

El proceso de descifrado es esencialmente el mismo que el de cifrado.


Simplemente se han de intercambiar inicialmente los bloques izquierdo y derecho
y se han de usar las claves en orden inverso. Por lo tanto, tanto el que enva
como el que recibe usan una misma clave comn, y pueden usar mquinas
idnticas: el mismo algoritmo.

Data Encryption Standard - DES

Pgina 5

Queda pendiente explicar en qu consiste la funcin


los claves

. Cualquier

y aclarar cmo se generan

podra trabajar en el procedimiento antes descrito. Pero

algunas elecciones son mucho mejores que otras. El tipo de la funcin

usado

en DES es similar al que se describe a continuacin. Para definir ahora nuestra


funcin

necesitamos construir primero sus componentes:

Figura 1: La funcin de expansin.


El primer componente es una funcin de expansin. Tiene una entrada de 6 bits
y una salida de 8: por ejemplo, podra ser la que se recoge en la figura 1.
Por ejemplo, 011001 se expande a 01010101: El tercer bit ocupa la cuarta y la
sexta posicin; el cuarto bit ocupa la tercera y quinta posicin.
Los componentes principales de nuestro algoritmo de cifrado se llaman Sboxes
(cajas). Ahora usaremos dos:
101 010
001 100
100 000
101 011

001 110 011 100


110 010 000 111
110 101 111 001
000 111 110 010

111 000
101 011
011 010
001 100

La entrada a las cajas es de 4 bits. El primer bit especifica qu fila se va a


utilizar: un 0 indica la fila de arriba; un 1 indica la fila de abajo. Los otros tres
bits representan la codificacin binaria de la columna que se va a utilizar: desde
la columna 0 (000) situada en el extremo izquierdo hasta la columna 7 (111)
situada en el extremo derecho. Por ejemplo, la entrada 1010 para

da como

salda el valor de la fila de abajo, en la columna tercera: 110.


Ya hemos indicado que la clave
claves

est formada por 9 bits y que las distintas

para cada una de las iteraciones de cifrado se obtienen de

. El

procedimiento que se va a seguir para la obtencin de cada una de las claves es


tomar 8 bits de

, comenzando por el bit en la posicin . Por ejemplo, si

010011001, entonces

01100101 (despus de tomar del bit 4 al bit 9,

tomamos los dos restantes del inicio de los bits de

Data Encryption Standard - DES

).

Pgina 6

Con todos estos elementos o componentes ya podemos definir la funcin


(ver figura 2):

est formada por 6 bits: primero la expandimos con la

1. La entrada

funcin de expansin y obtenemos 8 bits.


2. Con el resultado se realiza la operacin OR exclusivo con la clave

3. Los nuevos 8 bits obtenidos se dividen en dos bloques de 4 bits: los 4


primeros se toman como entrada para
para

, y los cuatro ltimos como entrada

. Cada una de las dos cajas da una salida de 3 bits, que al concatenar

forman una cadena de 6 bits.

4 bits
,
4 bits
Figura 2.: La funcin

La concatenacin de las salidas de las dos cajas forma la salida de


Por ejemplo, si

100110 y

10101010

11001111. Los primeros cuatro bits se envan a

01100101

cuatro ltimos a

01100101, tendremos que

,
100110

, y los

. Tendremos las salidas 000 y 100, que concatenados nos da

000100.

Veamos una iteracin completa. Supongamos que tenemos la entrada


011100 100110 y
100110, por lo que
,y

4.

01100101. Hemos tomado los valores de antes, y


000100. Por lo tanto tenemos que la salida final es

,
,

, es decir,

100110 011000.

DES.
Es un algoritmo de cifrado de bloques de 64 bits. Su clave es de 56 bits, pero
viene expresada en una cadena de 64 bits: En cada byte tenemos introducido un
bit de paridad. La salida cifrada ser otro bloque de 64 bits.

Data Encryption Standard - DES

Pgina 7

Los espacios de los textos planos y los


textos cifrados son

. El

0, 1

espacio de las claves est formado por


todas

las

cadenas

verifiquen

la

de

siguiente

64

bits

Texto Plano

que

propiedad:

si

dividimos esos 64 bits en sus 8 bytes,


entonces la suma de esos ocho bites en
cada byte debe ser impar: eso significa
que siete de los ocho bits determinan el
valor del octavo. Es decir, el espacio de
claves es

0,1

,,
7,

2; 0

donde

(1

8)

son los bits de paridad.


El nmero de claves posibles es 2 ~7.2
10 . Un ejemplo de clave DES vlida
dada en hexadecimal es, por ejemplo, 13
34 57 79 9B BC DF F1.

bloque

de

texto

un

El algoritmo DES de cifrado comienza con


plano

, de 64 bits, y sigue los

siguientes tres pasos (en la figura 3 se


puede ver un esquema del funcionamiento
del algoritmo):
1. Los

bits

de

son

permutados

mediante una permutacin fija inicial


(ver tabla 1), para obtener
donde

es el bloque formado por los

32 primeros bits de

, y

el bloque

formado por los 32 ltimos bits de


;

decir,

2. Para

es

16,

se

realizan

siguientes operaciones:
;

Data Encryption Standard - DES

:
.
las

Texto Cifrado
Figura 3: Algoritmo DES.

.
Pgina 8

Donde

es una cadena de 48 bits obtenida de la clave

,y

es una funcin

que describiremos ms tarde.


3. Se intercambian derecha e izquierda para obtener

(bloques derecho e izquierdo de 32 bits, sobre los que se ha aplicado ya 16


veces el paso 2 del algoritmo). Se aplica entonces la inversa de la
permutacin inicial (ver de nuevo la tabla 1) para llegar finalmente al texto
cifrado:

La operacin de descifrado se realiza de forma anloga a la del cifrado, excepto


que las claves

se usan en orden inverso.

,,

Permutacin
58 50 42
62 54 46
57 49 41
61 53 45

IP
34
38
33
37

18
22
17
21

10
14
9
13

2
6
1
5

60
64
59
63

52
56
51
55

44
48
43
47

36
40
35
39

28
32
27
31

20
24
19
23

12
16
11
15

4
8
3
7

Permutacin
40 8
48
38 6
46
36 4
44
34 2
42

IP inversa
16 56 24
14 54 22
12 52 20
10 50 18

64
62
60
58

32
30
28
26

39
37
35
33

7
5
3
1

47
45
43
41

15
13
11
9

55
53
51
49

23
21
19
17

63
61
59
57

31
29
27
25

26
30
25
29

Tabla 1: Permutacin inicial DES (IP) y final inversa.


Veamos con ms detalle cada uno de los tres pasos descritos.
PERMUTACIN.
La permutacin inicial no tiene ningn valor criptogrfico. Quiz se defini para
otorgar mayor eficiencia al algoritmo en los chips de los aos 70 (?). La
permutacin se realiza de acuerdo con la tabla 1.
Esto quiere decir que la cadena que tomaremos comienza con el bit 58, seguido
del bit 50, y luego el bit 42, La permutacin inversa es la que se realiza como
ltimo paso del descifrado.
FUNCIN

En nuestro proceso interno de cifrado, nuestro alfabeto es 0, 1 , la longitud de


nuestros bloques es de 32 bits y el espacio de sus claves es 0,1
La funcin de cifrado es

: 0,1

Data Encryption Standard - DES

0,1

, que se calcula en una serie de pasos:

Pgina 9

1. Primero, el argumento
: 0,1

0,1

ser expandido mediante la funcin

2. A continuacin se calcula
bloques

, y el resultado se divide en ocho

, de longitud 6, donde

0,1 .

3. Luego se somete a cada bloque a una operacin llamada Sboxes, de la


siguiente forma:

0,1 , para 1

: 0,1

obtiene una salida

8. Cada

de seis bits

de cuatro bits. Pasamos, pues, de una cadena de 48

bits a una ms corta de 32.


4. Finalmente se somete a la cadena resultante de 32 bits a una
permutacin.
Veamos cada uno de los pasos brevemente enunciados:

(32 bits)

Expansin

(48 bits)
(48 bits)

(6 bits)

(4 bits)

Permutacin

,
Figura 4: La funcin

Data Encryption Standard - DES

(32 bits)
para DES

Pgina 10

1. Primero,
32
8
16
24

se expande, de acuerdo con lo indicado en la tabla 2.


1
9
17
25

2
10
18
26

3
11
19
27

4
12
20
28

5
13
21
29

4
12
20
28

5
13
21
29

6
14
22
30

7
15
23
31

8
16
24
32

9
17
25
1

Tabla 2: Funcin de expansin


El primer bit de

es el 32 de

, etc. La funcin de expansin tiene una

entrada de 32 bits y una salida de 48 bits. Quedan remarcados en negrita y


recuadrados los bits que se replican en la funcin de expansin.
2. Luego se calcula
distintas

(ms adelante veremos cmo se definen las

: queda claro por ahora que son valores de 48 bits). El resultado

de esta operacin lo dividimos en 8 bloques de 6 bits cada uno:


.
3. Tomamos ahora ocho Sboxes segn se definen en la tabla 3. Cada
entrada de la correspondiente caja
la caja

viene indicado por

. Si tomamos

es la

, la fila de

, mientras que la columna viene indicada por

.
Por ejemplo, si

001001, entonces tomaremos la fila 01 que es la segunda

(la primera fila es la 00), y la columna 0100, que es la quinta (la primera
columna es la 0000). El valor obtenido es el 3, que se obtendr en
codificacin binaria con cuatro bits:

0011: todas las salidas se codifican

con 4 dgitos binarios. Obtenemos, por tanto, 4 bits de cada caja; en total 32
bits:

Las Sboxes constituyen el corazn de DES y son los que proveen de


seguridad al criptosistema.
4. Los 32 bits de la cadena

permutan de acuerdo con la tabla

4. El resultado de esa permutacin es la cadena de salida


16
2

7
8

20
24

21
14

29
32

12
27

28
3

17
9

1
19

15
13

23
30

26
6

5
22

,
18
11

, de 32 bits.
31
4

10
25

Tabla 4: Permutaciones de los bits de salida de las Sboxes.

Data Encryption Standard - DES

Pgina 11

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

13
7
14
8

1
4
8
2

2
14
13
4

15
2
6
9

11
13
2
1

8
1
11
7

3
10
15
5

10
6
12
11

6
12
9
3

12
11
7
14

5
9
3
10

9
5
10
0

0
3
5
6

7
8
0
13

8
4
7
10

14
7
11
1

6
15
10
3

11
2
4
15

3
8
13
4

4
14
1
2

9
12
5
11

7
0
8
6

2
1
12
7

13
10
6
12

12
6
9
0

0
9
3
5

5
11
2
14

10
5
15
9

9
0
4
13

14
9
9
0

6
3
8
6

3
4
15
9

15
6
3
8

5
10
0
7

1
2
11
4

13
8
1
15

12
5
2
14

7
14
12
3

11
12
5
11

4
11
10
5

2
15
14
2

8
1
7
12

14
11
9
0

3
5
0
6

0
6
12
10

6
15
11
1

9
0
7
13

10
3
13
8

1
4
15
9

2
7
1
4

8
2
3
5

5
12
14
11

11
1
5
12

12
10
2
7

4
14
8
2

15
9
4
14

4
2
1
12

1
12
11
7

7
4
10
1

10
7
13
14

11
13
7
2

6
1
8
13

8
5
15
6

5
0
9
15

3
15
12
0

15
10
5
9

13
3
6
10

0
9
3
4

14
8
0
5

9
6
14
3

10
4
15
2

15
2
5
12

9
7
2
9

2
12
8
5

6
9
12
15

8
5
3
10

0
6
7
11

13
1
0
14

3
13
4
1

4
14
10
7

14
0
1
6

7
11
13
0

5
3
11
8

11
8
6
13

2
11
11
13

14
7
13
8

15
4
12
1

0
9
3
4

8
1
7
10

13
10
14
7

3
14
10
9

12
3
15
5

9
5
6
0

7
12
8
15

5
2
0
14

10
15
5
2

6
8
9
3

1
6
2
12

8
13
4
14

4
8
1
7

6
10
9
4

15
3
12
10

11
7
14
8

1
4
2
13

10
12
0
15

9
5
6
12

3
6
10
9

14
11
13
0

5
0
15
3

0
14
3
5

12
9
5
6

7
2
8
11

Tabla 3: SBoxes para DES


LAS CLAVES

, ,

Queda pendiente describir cmo se obtienen las diecisis claves


recordar, la clave del criptosistema DES,

. Como se

, es una clave de 64 bits, de los

cuales, 8 son bits de paridad: se dispone de un total de 56 bits de clave til. Los
pasos a seguir para obtener las sucesivas

son los siguientes:

1. Descartar los bits de paridad y, con los bits que resten, realizar una

Data Encryption Standard - DES

Pgina 12

permutacin segn indica la tabla 5. Una vez permutada la clave, la tomamos


como

, (con

57
10
63
14

49
2
55
6

41
59
47
61

33
51
39
53

de 28 bits).

25
43
31
45

17
35
23
37

9
27
15
29

1
19
7
21

58
11
62
13

50
3
54
5

42
60
46
28

34
52
38
20

26
44
30
12

18
36
22
4

Tabla 5: Permutacin inicial para la obtencin de la claves


.
Supone tambin una seleccin de bits: se eliminan los bits de
, para 1
8. Esta permutacin se llama PC-1.
paridad: bits
2. Para 1

16 realizamos la operacin:

, y

es

una funcin de rotacin a izquierda en una o en dos posiciones, de acuerdo


con la tabla 6.

1
1

2
1

3
2

4
2

5
2

6
2

7
2

8
2

9
1

10 11 12 13 14 15 16
2
2
2
2
2
2
1

Tabla 6: Desplazamiento de la clave (fila 2) en cada una de las 16


iteraciones (fila 1).
3. En cada iteracin tomamos 48 de los 56 bits de la cadena

de acuerdo con

las indicaciones de la tabla 7. La salida de esta operacin es ya

. De esta

forma cada bit de la clave es usado aproximadamente 14 de las 16


iteraciones.
14
23
41
44

17
19
52
49

11
12
31
39

24
4
37
56

1
26
47
34

5
8
55
53

3
16
30
46

28
7
40
42

15
27
51
50

6
20
45
36

21
13
33
29

10
2
48
32

Tabla 7: Bits seleccionados de la cadena


para la construccin
de la clave
. Esta operacin supone una seleccin y una
permutacin de los bits tomados. Esta permutacin se llama PC-2.

5.

SEGURIDAD DE DES.
Data Encryption Standard - DES

Pgina 13

Desde su invencin, la seguridad que ofrece el algoritmo DES ha sido estudiada


de forma intensiva. De hecho, DES ha sido el criptosistema estndar durante los
20 ltimos aos del siglo XX. Se han presentado algunas tcnicas de
criptoanlisis, pero el ataque ms eficaz resulta ser el de la bsqueda exhaustiva
de la clave en su espacio de claves. DES se demostr finalmente inseguro en
julio de 1998, cuando la Electronic Frontier Foundation (EFF) anunci que haba
logrado romper un criptograma usando una maquina de diseo especial, llamada
DESCracker, construida por menos de 250.000 dlares. El ataque se tom
menos de 3 das.
El sistema de ataque consiste en recorrer todas las posibles claves. Adems de
llegar as a encontrar la clave correcta dentro del amplio dominio de claves, es
necesario que el algoritmo discierna cundo la clave probada es realmente la
clave buscada. Para ello, el algoritmo debe reconocer un texto plano correcto en
un determinado idioma cada vez que realiza la operacin de descifrado sobre el
texto cifrado. Debe asumir diferentes idiomas vlidos. Y debe asumir la
posibilidad de que el texto haya sido comprimido antes de su cifrado, cosa que es
bastante habitual. Por ltimo, debe aceptar tambin que el mensaje plano use un
alfabeto amplio, con signos de puntuacin, o caracteres numricos.
Ataque por fuerza bruta. Para cualquier tipo de cifrado, el mtodo de ataque
ms simple es el ataque por fuerza bruta, probando una por una cada posible
clave. La longitud de clave determina el nmero posible de claves, y por tanto la
factibilidad del ataque. En el caso de DES, ya en sus comienzos se plantearon
cuestiones sobre su longitud de clave, incluso antes de ser adoptado como
estndar, y fue su reducido tamao de clave, ms que el criptoanlisis terico, el
que provoc la necesidad de reemplazarlo.
Acadmicamente, se adelantaron varias propuestas de una mquina para romper
DES. En 1977, Diffie y Hellman propusieron una mquina con un coste estimado
de 20 millones de dlares que podra encontrar una clave DES en un slo da.
Hacia 1993, Wiener propuso una mquina de bsqueda de claves con un coste
de un milln de dlares que encontrara una clave en 7 horas. La vulnerabilidad
de DES fue demostrada en la prctica en 1998 cuando la Electronic Frontier
Foundation (EFF), un grupo dedicado a los derechos civiles en el ciberespacio,
construy una mquina a medida para romper DES, con un coste aproximado de
250.000 dlares. Su motivacin era demostrar que se poda romper DES tanto
en la teora como en la prctica: "Hay mucha gente que no creer una verdad

Data Encryption Standard - DES

Pgina 14

hasta que puedan verla con sus propios ojos. Mostrarles una mquina fsica que
pueda romper DES en unos pocos das es la nica manera de convencer a
algunas personas de que realmente no pueden confiar su seguridad a DES." La
mquina rompi una clave por fuerza bruta en una bsqueda que dur poco ms
de 2 das; Ms o menos al mismo tiempo, un abogado del Departamento de
Justicia de los Estados Unidos proclamaba que DES era irrompible.
Ataques ms rpidos que la fuerza bruta. Existen tres ataques conocidos
que pueden romper las diecisis rondas completas de DES con menos
complejidad que un ataque por fuerza bruta: el criptoanlisis diferencial (CD), el
criptoanlisis lineal (CL) y el ataque de Davies. De todas maneras, stos ataques
son slo tericos y no es posible llevarlos a la prctica.
El criptoanlisis diferencial fue descubierto a finales de los 80 por Eli Biham y Adi
Shamir, aunque era conocido anteriormente tanto por la NSA como por IBM y
mantenido en secreto. Para romper las 16 rondas completas, el criptoanlisis
diferencial requiere 247 textos planos escogidos. DES fue diseado para ser
resistente al CD.
El criptoanlisis lineal fue descubierto por Mitsuru Matsui, y necesita 243 textos
planos escogidos (Matsui, 1993); el mtodo fue implementado (Matsui, 1994), y
fue el primer criptoanlisis experimental de DES que se dio a conocer. No hay
evidencias de que DES fuese adaptado para ser resistente a este tipo de ataque.
Una generalizacin del CL el criptoanlisis lineal mltiple se propuso en 1994
Kaliski and Robshaw), y fue mejorada por Biryukov y otros (2004); su anlisis
sugiere que se podran utilizar mltiples aproximaciones lineales para reducir los
requisitos de datos del ataque en al menos un factor de 4 (es decir, 241 en lugar
de 243). Una reduccin similar en la complejidad de datos puede obtenerse con
una variante del criptoanlisis lineal de textos planos escogidos (Knudsen y
Mathiassen, 2000). Junod (2001) realiz varios experimentos para determinar la
complejidad real del criptoanlisis lineal, y descubri que era algo ms rpido de
lo predicho, requiriendo un tiempo equivalente a 239241 comprobaciones en
DES.
El ataque mejorado de Davies: mientras que el anlisis lineal y diferencial son
tcnicas generales y pueden aplicarse a multitud de esquemas diferentes, el
ataque de Davies es una tcnica especializada para DES. Propuesta por vez
primera por Davies en los 80, y mejorada por Biham y Biryukov (1997). La forma

Data Encryption Standard - DES

Pgina 15

ms potente del ataque requiere 250 textos planos escogidos y tiene un 51% de
probabilidad de xito.
Existen tambin ataques pensados para versiones del algoritmo con menos
rondas, es decir versiones de DES con menos de diecisis rondas. Dichos anlisis
ofrecen una perspectiva sobre cuntas rondas son necesarias para conseguir
seguridad, y cunto margen de seguridad proporciona la versin completa.
Propiedades criptoanalticas. DES presenta la propiedad complementaria,
, donde

dado que

es el complemento a bit de

. La

propiedad complementaria implica que el factor de trabajo para un ataque por


fuerza bruta se podra reducir en un factor de 2 (o de un nico bit) asumiendo un
ataque con texto plano escogido.

6.

DES NO ES UN GRUPO.
Un posible modo de incrementar de modo efectivo el tamao de la clave de DES
sera realizar una doble operacin de cifrado sobre el texto plano. Tomando
y el texto plano
transformacin

, podramos obtener el criptograma a travs de la doble


.

Para

descifrar,

bastara

hacer

ahora

. Y ahora para el atacante la tarea es enormemente mayor: encontrar


ambas claves que juntamente llegan a nuestra transformacin.
Aumentara eso la seguridad de nuestro criptosistema?
En realidad, para muchos criptosistemas, aplicar dos veces el proceso de cifrado
con dos claves diferentes es equivalente a realizar el proceso de cifrado con una
tercera clave diferente. Es as para DES?: Dadas las claves
clave

tal que

, existe una

? Esta cuestin se plantea frecuentemente de la

siguiente forma: Es DES un grupo?, o tambin Es DES una transformacin


cerrada bajo la operacin de composicin?
La respuesta es que NO. Afortunadamente no es as, en el caso de DES: la
composicin de dos cifrados DES no es equivalente a un cifrado DES con una
tercera clave en principio distinta a las otras dos. Una demostracin de esta
afirmacin se puede encontrar en [3], en 4.5., en un apartado titulado DES is
not a group.
Cabe pensar, por tanto, que efectivamente, cifrar DES dos veces es equivalente
a trabajar con un algoritmo de longitud de clave 112.

Data Encryption Standard - DES

Pgina 16

Pero no es as, por otro motivo. Existe una forma de ataque que anula esa
posibilidad. Para levarla a cabo basta con tener la herramienta que rompe DES y
una enorme capacidad de memoria. El procedimiento para atacar esta cifra es el
siguiente:
1. Supngase que el atacante ha interceptado el mensaje plano a transmitir,
y el criptograma

. Quiere ahora hallar

2. Computa y almacena en memoria todos los valores


posibles valores

.
para todos los

3. Computa y almacena en memoria todos los valores


posibles valores

para todos los

4. Compara ambas listas en busca de encontrar cadenas de texto iguales. Entre


las claves que han conducido a estas cadenas coincidentes estn las dos
claves buscadas.
Por tanto, el atacante ha de probar todas las claves para el paso n. 2, y ha de
probar todas las claves para el paso n. 3. Por tanto, si

es el nmero total de

claves posibles, al realizar el proceso de cifrado dos veces deber realizar una
bsqueda de 2

claves, y no de

como habamos esperado al principio.

A este ataque se le ha dado el nombre meetinthemiddle attack, o ataque de


encuentroenlamitad.

7. TRIPLE DES
DobleDES queda por tanto descartado como criptosistema seguro una vez se ha
logrado comprometer el criptosistema DES. Qu ocurre en el caso de Triple
DES? En ese caso, el algoritmo de ataque meetinthemiddle no funciona
correctamente.
Existen dos formas habituales de aplicar TripleDES:
1. Con tres claves

2. Con dos claves

y
y

, aplicamos la transformacin
, aplicamos la transformacin

este caso, evidentemente, cuando

. En

el algoritmo TripleDES se reduce

al DES tradicional.
Ambas formas dan gozan de una seguridad equivalente a la de un criptosistema
de longitud de clave igual a 112 bits. Ambas formas son resistentes, como ya se
ha dicho, al ataque meetinthemiddle. Existen, sin embargo, otras formas de

Data Encryption Standard - DES

Pgina 17

ataque definidas, de factura similar a la presentada en este algoritmo, pero


requieren una cantidad de memoria tal que la hacen impracticable. Queda
indicada, por tanto, la posible debilidad, que no supone hoy por hoy una
amenaza viable.
Rivest tiene presentada otra va para reforzar DES. Tomando tres claves
, realizamos la transformacin
con la operacin XOR con la clave
con la clave
ahora la clave

: Modificar el texto plano


; al resultado aplicar la transformacin DES

, y operar el resultado obtenido de nuevo con el operador XOR y


. Este mtodo se conoce como DESX y se ha mostrado tambin

suficientemente seguro.

REFERENCIAS
[1]

Handbook of Applied Cryptography. A. Menezes, P. van Oorschot, and S.


Vanstone. CRC Press, Inc. 1997.

[2]

Cryptography and Network Security. Principles and practices. William


Stallings. Prentice Hall. Pearson Education. Third edition. 2003.

[3]

Introduction of Cryptography with coding theory. Wade Trappe and


Lawrence C. Washington. Prentice Hall, 2002.

[4]

Introduction to Cryptography. Johannes A. Buchmann. Springer Verlag,


2004. Second Edition.

[5]

Data encryption Standard (DES), FIPS PUB 463. 1999 October 25.
http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf.

[6]

Wikipedia. http://es.wikipedia.org/wiki/Data_Encryption_Standard.

Data Encryption Standard - DES

Pgina 18

You might also like