Está en la página 1de 13

2.3. DATA ENCRYPTION STANDARD (DES)

17

con un n´umero entero de 0 a n, y posteriormente se aplica un corrimiento de k posiciones, esto es equivalente a realizar la suma modular descrita l´ıneas arriba:

( a + k ) m´od n

donde a es el caracter, k el corrimiento y n el tama˜no del alfabeto. En la secci´on correspondiente a teor´ıa de n´umeros, se abordar´a ´este tema con m´as detalle.

2.3. Data Encryption Standard (DES)

A mediados de los 60’s y principios de los 70’s, debido a la evoluci´on

de las computadoras y a que en consecuencia el costo y el tama˜no de las mismas disminuy´o considerablemente, diversas empresas e instituciones co- menzaron a utilizarlas. Al mismo tiempo, era necesario cifrar comunicaciones importantes como las transferencias de dinero. Pero para que dos compa˜n´ıas intercambiaran informaci´on cifrada deb´ıan poseer el mismo algoritmo. Esto era un problema entre 1960 y 1970 ya que no exist´ıa un unico´ algoritmo de cifrado, es decir no hab´ıa un est´andar. Por tal raz´on en mayo de 1973, la Ame-

rican National Bureau of Standards hoy la National Institute of Standards and Technology (NIST) decidi´o resolver el problema y solicit´o formalmente propuestas para establecer un sistema de cifrado est´andar. Una de esas pro- puestas fue un algoritmo propuesto por la IBM, resultado de un proyecto de investigaci´on a cargo de Walter Tuchman y Carl Meyer. [STA03, SIN99]

A finales de los 60’s IBM estableci´o un proyecto de investigaci´on en crip-

tograf´ıa conducido por Horst Feistel, un emigrado alem´an que lleg´o a E.U.A. en 1934. El proyecto concluy´o en 1971 con el desarrollo de un algoritmo de- nominado LUCIFER, el cual operaba con bloques de 64 bits y una clave de 128 bits y que fue vendido a la LLoyd’s de Londres para ser usado en un sistema de cajero autom´atico, igualmente desarrollado por la IBM. Posteriormente, dado que la IBM deseaba que LUCIFER se volviese un producto m´as comercial inici´o un nuevo proyecto a cargo de Walter Tuchman y Carl Meyer. Cabe mencionar que en dicho proyecto no s´olo estuvieron involucrados investigadores de la IBM, sino tambi´en la consultor´ıa y el apoyo t´ecnico de la National Security Agency (NSA). El resultado fue una versi´on refinada del LUCIFER que era m´as resistente al criptoan´alisis pero que usaba una clave de tama˜no m´as peque˜no: 56 bits. Este ultimo´ fue el algoritmo

´

´

18 CAP ITULO 2. CRIPTOGRAF IA DE CLAVE SECRETA

que la IBM someti´o a consideraci´on del National Institute of Standards and Technology (NIST) en 1973, y que de hecho se adopt´o formalmente como el algoritmo de cifrado est´andar en 1977. A partir de ese momento se le denomin´o: Data Encryption Standard (DES). [STA03] Cabe se˜nalar que el DES ha generado mucha controversia principalmente en dos ´areas. La primera era el tama˜no de clave de 56 bits, puesto que inicialmente era de 128 bits, y la segunda era el dise˜no de las S-cajas, en las cuales se basa la seguridad del DES, ya que ´este era material clasificado. Adem´as corri´o el rumor, de que la NSA hab´ıa impuesto tales criterios porque de esa manera podr´ıa leer cualquier mensaje cifrado sin conocer la clave, utilizando sus propios recursos. [SIN99] Aunque el DES, actualmente ya no es el est´andar, se considera un objeto de estudio interesante en la criptograf´ıa y por ello se aborda a continuaci´on usando una versi´on simplificada: DES simplificado (S-DES) . El DES simplificado (S-DES) fue dise˜nado por el profesor Edward Schae- fer de la universidad de Santa Clara, como una herramienta para ser usada con fines educativos m´as que de seguridad. Dicha versi´on permitir´a que el lector pueda realizar f´acilmente, cada paso del algoritmo usando l´apiz y pa- pel.

S-DES

El S-DES es un algoritmo de cifrado por bloques [STA03]. Utiliza un ta- ma˜no de bloque de 8 bits, y una clave secreta de 10 bits. Esto significa que si tenemos un mensaje de tama˜no mayor, ´este deber´a partirse en bloques de 8 bits. Esto puede resultar muy conveniente, sobretodo si se esta trabajan- do con caracteres codificados en c´odigo ASCII 2 en el cual cada caracter se codifica con 8 bits, de esta manera tomar´ıamos caracter por caracter y lo cifrar´ıamos usando la clave. El S-DES es un algoritmo de clave secreta, cuyo funcionamiento esta basado en el uso de permutaciones y sustituciones, que ya han sido analizadas previamente. Su estructura general, se muestra en la figura 2.2. Como se puede observar en la figura, para cifrar un bloque, inicial- mente se aplica una permutaci´on inicial (IP); una funci´on f k , la cual se

2 ASCII, significa American Standard Code for Information Interchange. Dado que las computadoras entienden s´olo n´umeros, un c´odigo ASCII es la representaci´on num´erica de un caracter como ’a’ o ’!’.

2.3. DATA ENCRYPTION STANDARD (DES)

CLAVE

19

(10 bits) DESCIFRADO CIFRADO Texto claro Texto claro (8 bits) (8 bits) P 10 SHIFT
(10 bits)
DESCIFRADO
CIFRADO
Texto claro
Texto claro
(8 bits)
(8 bits)
P
10
SHIFT
P − 1
I
P
I
P
8
K
1
K
1
f
f
k
k
SHIFT
S
W
S
W
P
8
K
2
K
2
f
k
f
k
P − 1
I
I
P
Texto cifrado
Texto cifrado
(8 bits)
(8 bits)

Figura 2.2: Diagrama general del DES

describir´a m´as adelante; una permutaci´on simple SW que lo unico´

es intercambiar las mitades derecha e izquierda del bloque; luego se vuelve a aplicar la funci´on f k y finalmente se aplica nuevamente una permutaci´on, que de hecho es la permutaci´on inversa (IP 1 ) .

Para descifrar un bloque, se llevan a cabo las mismas operaciones, lo

que cambia es el orden en el que se utilizan las subclaves k 1 y k 2 que

son generadas de la clave k como se explica a continuaci´on.

que hace

unico´

Generaci´on de claves para S-DES

Como ya se hab´ıa mencionado anteriormente, tanto DES como S-DES, son algoritmos de clave secreta, lo cual implica que dos entidades que deseen comunicarse deben compartir la misma clave, pues depende de dicho dato, que se puedan cifrar y descifrar los mensajes f´acilmente.

´

´

20 CAP ITULO 2. CRIPTOGRAF IA DE CLAVE SECRETA

S-DES utiliza una clave k de 10 bits, de la cual, se derivar´an un par de subclaves k 1 y k 2 , que se utilizar´an en distintas etapas del proceso de cifrado y descifrado. La forma de generar dichas subclaves se muestra en la figura 2.3. A continuaci´on ayud´andonos de dicha figura, veremos con un ejemplo,

CLAVE

(10 bits)

P10 CI − 1 CI − 1 P 8 K 1 CI − 2 CI
P10
CI
− 1
CI
− 1
P
8
K 1
CI
− 2
CI
− 2
P
8
K 2

Figura 2.3: Generaci´on de subclaves del S-DES

c´omo se obtienen las subclaves. Sup´onga que la clave es k = 1010000010. A dicha k , se le aplicar´a la permutaci´on P 10, que se muestra enseguida:

P10 3 5 2 7 4 10 1 9 8 6
P10
3
5
2
7
4 10
1
9
8
6

Dicha permutaci´on nos indica, que ahora colocaremos primero el bit que se encuentra en la tercera posici´on, luego el bit que se encuentra en la quinta posici´on, luego el que se encuentra en la segunda posici´on, y as´ı sucesivamente hasta que al ultimo´ colocaremos el bit que se encuentra en la sexta posici´on. Antes de aplicar la permutaci´on, la clave se ver´ıa como en la siguiente tabla

2.3. DATA ENCRYPTION STANDARD (DES)

21

Clave k k 1 k 2 k 3 k 4 k 5 k 6 k
Clave k
k 1
k 2
k 3
k 4
k 5
k 6
k 7
k 8
k 9
k 10
1
0
1
0
0
0
0
0
1
0

Despu´es de haber aplicado la permutaci´on, se observar´ıa de la siguiente forma

k 3 k 5 k 2 k 7 k 4 k 10 k 1 k
k 3
k 5
k 2
k 7
k 4
k 10
k 1
k 9
k 8
k 6
1
0
0
0
0
0
1
1
0
0

A dicho resultado, se le divide en dos partes:

1 0 0 0 0 0 1 1 0 0
1
0 0
0
0
0
1
1
0
0

a cada una de las cuales se le hace un corrimiento circular a la izquierda. Esto es el bit m´as a la izquierda se coloca m´as a a la derecha, y los dem´as se corren un lugar, lo cual se observa en la siguiente tabla:

0 0 0 0 1 1 1 0 0 0
0
0 0
0
1
1
1
0
0
0

Este resultado nos va a servir para realizar dos operaciones. La primera de ellas ser´a tomar el conjunto de 10 bits concatenando ambos bloques como sigue

k 1 k 2 k 3 k 4 k 5 k 6 k 7 k
k 1
k 2
k 3
k 4
k 5
k 6
k 7
k 8
k 9
k 10
0
0
0
0
1
1
1
0
0
0

y se le aplica la permutaci´on P 8 que aparece a continuaci´on:

 

P8

 

6

3

7

4

8

5

10 9

Observa que dicha permutaci´on no incluye los bits 1 y 2 y que p or lo tanto, despu´es de aplicarla nos quedar´an solamente 8 bits, a este tipo de permuta- ciones, se les conoce como permutaciones de compresi´on. Despu´es de lo cual habremos obtenido la subclave k 1 :

Subclave k 1 k 6 k 3 k 7 k 4 k 8 k 5
Subclave k 1
k 6
k 3
k 7
k 4
k 8
k 5
k 9
k 10
1
0
1
0
0
1
0
0

La segunda operaci´on que se llevar´a a cabo ser´a tomar ambos bloques de 5

bits, y a cada uno de ellos, hacerle un corrimiento circular izquierdo de 2 posiciones, esto es, haremos 2 corrimientos hacia la izquierda, despu´es de

lo cual cada uno de los bloques se ver´a as´ı:

 

´

´

22

CAP ITULO 2. CRIPTOGRAF IA DE CLAVE SECRETA

0 0 1 0 0 0 0 0 1
0
0
1
0
0
0
0
0
1

1

Por ultimo´

se juntan los dos bloques anteriores en uno s´olo:

k 1 k 2 k 3 k 4 k 5 k 6 k 7 k
k 1
k 2
k 3
k 4
k 5
k 6
k 7
k 8
k 9
k 10
0
0
1
0
0
0
0
0
1
1

al cual se le aplicar´a la permutaci´on P8 que ya conoc´ıamos, obteniendo la

siguiente subclave k 2 :

Subclave k 2 k 6 k 3 k 7 k 4 k 8 k 5
Subclave k 2
k 6
k 3
k 7
k 4
k 8
k 5
k 9
k 10
0
1
0
0
0
0
1
1

De esta manera hemos ya generado nuestras subclaves k 1 y k 2 , que se utili- zar´an en el proceso de cifrado y descifrado de mensajes.

Cifrando con S-DES

Como se mencion´o anteriormente, S-DES toma bloques de 8 bits, cada uno

de los cuales se cifra y formar´a as´ı parte del mensaje cifrado. Para comprender

mejor, el proceso de cifrado y descifrado del S-DES, haremos un ejemplo, ayud´andonos con el diagrama que aparece en la figura 2.2. Para simplificarnos a´un m´as la tarea, supondremos que nuestro mensaje esta constituido por un s´olo bloque de exactamente 8 bits. Supongamos que el mensaje M , que se desea cifrar es:

Texto o mensaje en claro M m 1 m 2 m 3 m 4 m
Texto o mensaje en claro M
m 1
m 2
m 3
m 4
m 5
m 6
m 7
m 8
1
0
1
1
1
1
0
1

A dicho mensaje se le aplicar´a un permutaci´on inicial IP, que aparece a

continuaci´on:

IP 2 6 3 1 4 8 5 7
IP
2
6
3
1
4
8
5
7

Despu´es de lo cual, los bits del mensaje quedar´an asi:

m m 6 m 3 m 1 m 4 m 8 m 5 m 7
m
m 6
m 3
m 1
m 4
m 8
m 5
m 7
2
0 1
1
1
1
1
1
0

2.3. DATA ENCRYPTION STANDARD (DES)

I P f k F E/P S0 S1 P4
I P
f k
F
E/P
S0
S1
P4

K 1

23

Figura 2.4: Primera ronda del DES Simplificado

Ronda 1

Parte del proceso de cifrado, son las rondas (rounds en ingl´es), que no

son m´as que una serie de pasos que se repiten. A continuaci´on, veremos c´omo

se lleva a cabo la ronda 1. El mensaje que constituye el bloque anterior se separa en dos partes de 4 bits cada una, las cuales seran el bloque izquierdo, denotado por L y el bloque derecho, denotado por R :

L R 0 1 1 1 1 1 1 0
L
R
0 1
1
1
1
1
1
0

A continuaci´on, se aplica la funci´on f k que tambi´en se muestra en la figura

2.4.

Si seguimos el diagrama, podemos continuar con el cifrado. Primero se toman los 4 bits que conforman la parte derecha y se les aplicar´a la permu- taci´on de expansi´on que se muestra a continuaci´on:

E/P 4 1 2 3 2 3 4 1
E/P
4 1
2
3
2
3
4
1

´

´

24 CAP ITULO 2. CRIPTOGRAF IA DE CLAVE SECRETA

Como se podr´a observar esta permutaci´on tomar´a los 4 bits de la parte derecha y nos devolver´a 8 bits, por esa raz´on se le denomina de expansi´on. De esta manera los bits a los cuales se les aplicar´a la permutaci´on son:

R b 1 b 2 b 3 b 4 1 1 1 0
R
b 1
b 2
b 3
b 4
1
1
1
0

y despu´es de aplicar la permutaci´on queda as´ı:

b 4 b 1 b 2 b 3 b 2 b 3 b 4 b
b 4
b 1
b 2
b 3
b 2
b 3
b 4
b 1
0
1
1
1
1
1
0
1

Estos 8 bits, se sumaran xor con la subclave k 1 = 10100100 que habiamos generado anteriormente

 

0

1

1

1

1

1

0

1

1

0

1

0

0

1

0

0

 

1

1

0

1

1

0

0

1

Los 4 bits m´as a la izquierda nos servira´n para hacer una consulta en la tabla S 0 y los 4 bits m´as a la derecha para hacer una consulta en la tabla S 1 . A dichas tablas S 0 y S 1 se les conoce como las S-cajas. Consideremos los cuatro bits m´as a la izquierda: 1101, para realizar la consulta en S 0 , ser´a necesario ubicar un rengl´on y una columna. El rengl´on

lo conforman el primero y el cuarto, de estos cuatro bits, es decir: 11 y la

columna la conforman el segundo y el tercer bit, esto es: 10. Con estos datos buscamos en S 0

S 0 00 01 10 11 00 01 00 11 10 01 11 10 01
S 0
00 01 10 11
00
01 00
11
10
01
11 10
01
00
10
00 10
01
11
11
11 01 11 10

Y obtenemos 11. Luego, hacemos lo mismo, pero ahora tomando en cuenta

los cuatro bits m´as a la derecha: 1001. Nuevamente, tomamos el primero y el

cuarto bit, que conformaran el rengl´on, esto es: 11 y el segundo y el tercero

2.3. DATA ENCRYPTION STANDARD (DES)

25

S 1 00 01 10 11 00 00 01 10 11 01 10 00 01
S 1
00 01 10 11
00
00
01 10 11
01
10
00 01 11
10
11
00 01 00
11 10 01 00 11

Y obtenemos 10. Ahora concatenamos los 2 bits que encontramos en la S 0

con los 2 bits que encontramos en la S 1 . Y nos queda: 1110. A esta cadena

le

P4

aplicamos la permutaci´on P4 que aparece a continuaci´on:

2

4

3

1

Y

de la izquierda denotados por L:

como resultado se tendr´a: 1011. Esto lo sumamos xor con los cuatro bits

0

1

1

0

1

1

1

1

1

1

0

0

El resultado constituir´a el bloque izquierdo L y el bloque derecho, ser´a el del

principio:

L R 1 1 0 0 1 1 1 0
L R
1 1
0
0
1
1
1
0

Hasta aqui, se ha realizado la ronda 1 del DES-Simplificado.

Ronda 2

Para llevar a cabo la ronda 2 del DES simplificado, se intercambiar´an los bloques L y R , anteriores, quedando de la siguiente manera:

L R 1 1 1 0 1 1 0 0
L R
1 1
1
0
1
1
0
0

Al igual que en la ronda 1, se toma el bloque derecho R y se le aplica la permutaci´on de expansi´on E/P , despu´es de lo cual, nos queda: 01101001. Esta cadena se suma xor con la subclave k 2 de la siguiente manera:

 

0

1

1

0

1

0

0

1

0

1

0

0

0

0

1

1

 

0

0

1

0

1

0

1

0

´

´

26 CAP ITULO 2. CRIPTOGRAF IA DE CLAVE SECRETA

Dicho resultado lo dividimos en dos partes: 0010 y 1010. La primera de ellas, la utilizamos para buscar en S 0 los 2 bits que ser´an izquierdos:

S 0 00 01 10 11 00 01 00 11 10 01 11 10 01
S 0
00 01 10 11
00
01 00 11 10
01
11
10
01 00
10
00
10
01 11
11
11
01
11 10

La segunda de ellas, la usamos para buscar en S 1 los 2 bits que estar´an a la derecha:

S 1 00 01 10 11 00 00 01 10 11 01 10 00 01
S 1
00 01 10 11
00
00
01
10 11
01
10
00
01 11
10
11 00 01 00
11
10
01
00 11

Tomando los bits que encontramos tanto en S 0 , como en S 1 se forma el bloque 0000 al cual se le aplica la permutaci´on P4 mencionada anteriormente, despu´es de lo cual, el bloque nos queda igual, este se sumar´a xor con el bloque izquierdo L:

0

1

0

1

0

1

0

0

1

1

1

0

Este resultado se concatena con el bloque derecho R original, quedandonos, el siguiente resultado

L R
L
R
1 1 1 0 1 1 0 0
1 1
1
0
1
1
0
0

Al bloque anterior se le aplica la permutaci´on inversa, denotada por IP 1 , que se muestra a continuaci´on:

IP 1

4 1

3

5

7

2

8

6

Quedando como resultado final:

Mensaje cifrado C

0 1

1

1

0

1

0

1

El proceso completo de cifrado se muestra en el diagrama que aparece en la figura 2.5.

2.3. DATA ENCRYPTION STANDARD (DES)

10111101

27

01111110 I P L=0111 R=1110 f k 1110 F E/P 01111101 10100100 K 1 1101
01111110
I P
L=0111
R=1110
f
k
1110
F
E/P
01111101
10100100
K
1
1101
1001
S0
S1
11
10
P4
1011
0111
1110
1100
SW
L=1110
R=1100
f
k
1100
F
E/P
01101001
01000011
K
2
0010
1010
S0
S1
00
00
P4
0000
1110
1110
1100
I P − 1

011101100

Figura 2.5: Proceso de cifrado

´

´

28 CAP ITULO 2. CRIPTOGRAF IA DE CLAVE SECRETA

Descifrando con DES-S

Para descifrar se necesita conocer la clave con la cual fue cifrado un mensaje y por supuesto tener el mensaje cifrado. Teniendo ambos, se realiza

el mismo proceso que se llev´o a cabo para cifrar el mensaje, con la diferencia

de que ahora se usar´a primero la subclave k 2 y luego la subclave k 1 , como se

puede observar en la figura 2.2. Teniendo el mensaje cifrado de la secci´on anterior, este se dividir´a en dos partes L y R :

L R 0 1 1 1 0 1 0 1
L
R
0
1
1
1
0
1
0
1

Dado que ya se ha descrito el procedimiento con todo detalle en la sec- ci´on anterior, ahora para ser m´as breves, se proporciona un diagrama con los datos que pasan por cada etapa, como se puede ver en la figura 5. Es impor- tante recordar que para hallar los bits en las S-cajas, el rengl´on se obtiene tomando el primer y el cuarto bit del dato precedente, y la columna tomando el segundo y tercer bit del dato precedente. Se deja al lector, que realice las permutaciones necesarias para comprobar cada uno de los resultados inter- medios. Como se podr´a observar, al final se obtiene nuevamente el texto en claro M , que ten´ıamos al principio. Regresando al DES, funciona de forma similar que el S-DES. El tama˜no de

bloque es de 64 bits, con una clave de 56 bits y 16 rondas. Si se desea consultar

a detalle la estructura de las permutaciones y de las cajas de sustituci´on, el lector puede revisar [MEN97, STA03]. Aunque como se ha mencionado antes,

el DES ya no es seguro, se utiliza una variante del mismo conocido como triple

DES , es decir se cifra, se descifra y se vuelve a cifrar, utilizando tres claves k 1 , k 2 , k 3 respectivamente. El triple DES, es lento en comparaci´on con otros cifrados modernos como el AES, pero sigue siendo ampliamente usado.

2.3. DATA ENCRYPTION STANDARD (DES)

01110101

29

11101100 I P L: 1110 R: 1100 f k 1100 F E/P 01101001 01000011 K
11101100
I P
L: 1110
R: 1100
f
k
1100
F
E/P
01101001
01000011
K
2
0010
1010
S0
S1
00
00
P4
0000
1110
1110
1100
SW
1100
1110
f
k
1110
F
E/P
01111101
10100100
K 1
1101
1001
S0
S1
11
10
P4
1011
1100
0111
1110
I P − 1

10111101

Figura 2.6: Proceso de descifrado