- Descripción del algoritmo
DES - Algoritmo de
Cifrado - Generación
de la subclave Ki - Función
f(Ri-1 , Ki) - Suma
Li Ri - Permutación
P1-1 - Descifrado
- Ataques a
la seguridad
criptográfica - Bibliografía
En el presente trabajo se
explica los distintos procesos que
conforman el algoritmo de
cifrado en bloques simétrico DES, los diferentes ataques
que ha sufrido DES, con el propósito de dar una
explicación general.
Data Encryption Standard (DES), es un algoritmo de
cifrado en bloque simétrico, de longitud fija, el cual
consiste de dos permutaciones, 16 vueltas en donde el mensaje de
64 bits es dividido en dos bloques de 32 bits, después de
usar la primer permutación llamada P1, es cifrado 16 veces
utilizando cada vez una subclave, la cual se genera 16 veces en
un proceso
paralelo. En el proceso para descifrar se utiliza el mismo
algoritmo con las subclaves en orden inverso, dando como
consecuencia, la simetría del algoritmo.
DES (Data Encryption Estándar), aparece en los
años 70, cuando la National Bureau of Standards (NBS),
publicó una convocatoria para nuevos sistemas
criptográficos. IBM, presentó el sistema de
cifrado DES como una modificación de un sistema anterior
llamado lucifer. DES se convirtió en el
estándar federal, para las comunicaciones
seguras en los EE.UU. El algoritmo DES se hizo publico debido a
una falla entre el NSA y la Oficina Nacional
de Estandarización, cuando originalmente DES fue
diseñado para ser implementado por hardware, en dicha
publicación apareció información a detalle sobre el algoritmo
para ser implementado por software.
Desde la aparición del algoritmo DES, se ha
sometido a pruebas que
realiza la National Institute of Standards and Technology (NIST),
cada cuatro años, con el propósito de mantener o
retirarle como estándar, DES ha sufrido serias criticas en
cuanto a su fiabilidad por contar con una clave de 64 bits,
siendo 56 bits los que se utilizan para obtener las 16 subclaves.
En el año de 1998 se realizo un reto, con el
propósito de romper el algoritmo DES, lo cual se logro.
Considerando que el algoritmo DES fue diseñado en los
años 70 ha tenido un camino largo sin haber sido
vulnerado, el NIST, considerando el creciente aumento de la
tecnología
y la velocidad de
los ordenadores, que cada 18 meses duplican su velocidad, el
algoritmo DES ya no es computacionalmente seguro, por tal
motivo el NIST ha trabajo en el algoritmo Triple-DES, con este
algoritmo y la noticia publicada por el NIST "DES encryption
inadequate", proponiendo retirar la certificación para uso
en productos de
software de venta para el
gobierno de los
EE.UU. el algoritmo DES tiene poco tiempo de uso
comercial.
En la historia de la humanidad
siempre ha existido la necesidad de mantener información
en secreto, por lo que existe dos etapas de la
CriptografíaI, Criptografía Clásica y
Criptografía Moderna. La etapa de la criptografía
clásica se puede limitar en tiempo, cuando surge la
necesidad de tener un canal seguro de comunicación, al surgimiento de la
Criptografía Moderna en los años 70`s.
En la Criptografía clásica se utilizaba la
Sustitución y Transposición para cifrar el mensaje,
a continuación se presentan algunos métodos
utilizados.
- Método de Transposición de Escitalo. El
método
consistía en un aparato cilíndrico de madera al
cual se le enrollaba una cinta de papiro y en el cual se
escribía el mensaje a lo largo, una vez terminado el
mensaje se desenrollaba la cinta de papiro, siendo la
técnica de transposición de caracteres, era
difícil comprender el mensaje sin el aparato
cilíndrico.
- Método de Sustitución,
Mono-alfabético, Mono-grámico de Cesar. El nombre
utilizado es debido a que se menciona la técnica, el
tipo de alfabeto y la forma de ordenar las letras para realizar
el cifrado. El método consistía en un
desplazamiento (n), con el propósito de sustituir cada
carácter del mensaje en claro por otro
situado (n) posiciones después. - Método de Sustitución,
Mono-alfabético, Poli-gramico de Playfair. Se hace
referencia a la técnica, el tipo de alfabeto y la forma
de ordenar las letras para realizar el cifrado. El
método consistía en tomar sus caracteres en
parejas, las letras del alfabeto se escribían en una
matriz de
5×5, al tener los caracteres separados en parejas se
procedía a realizar el cifrado, con ciertas reglas, para
encontrar la pareja de letras que darían el cifrado
posterior. - Método de Sustitución,
Poli-alfabético, Periódicos de Vigenere. A
diferencia de los métodos mencionados anteriormente,
este método utiliza mas de un alfabeto para cifrar el
mensaje, por tal motivo se considera Poli-alfabético, se
considera Periódico debido a la clave utilizada
para cifrar el mensaje. El método consistía en
asignar a cada letra de cierto alfabeto un numero entero, y
seleccionar una palabra clave de cualquier alfabeto y
asignándole un numero entero a cada letra de la misma,
sumada con el mensaje daría origen al mensaje
cifrado.
La Criptografía clásica, conocida
actualmente como Simétrica o de Clave secreta, tiene como
características el algoritmo Oculto y la clave Secreta,
siendo estas la diferencia con la Criptografía moderna, en
la actualidad el algoritmo es Publico y la clave Secreta. La
razón de conocer el algoritmo, es comprobar que realmente
es seguro, a través de su
criptoanálisisII, con el propósito de
tener la certeza que aún continua siendo seguro,
ésto a dado entre otras consecuencias nuevas líneas
de investigación y poder
seleccionar los algoritmos de
cifrado para estándar.
En la etapa de la Criptografía moderna existen
dos modelos de
cifrado, cifrado en flujo (Vernam) y cifrado en bloque
(DES cifrado en bloque simétrico y RSA cifrado en
bloque asimétrico).
DES, es un algoritmo de cifrado en bloques
simétrico, el tamaño del bloque es de longitud fija
de 64 bits, el algoritmo consta de dos
permutaciones, una al inicio conocida como P1, la cual se
muestra a
continuación:
Tabla antes la | |||||||
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |
33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 |
41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 |
49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 |
57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 |
Permutación Inicial | |||||||
58 | 50 | 42 | 34 | 26 | 18 | 10 | 2 |
60 | 52 | 44 | 36 | 28 | 20 | 12 | 4 |
62 | 54 | 46 | 38 | 30 | 22 | 14 | 6 |
64 | 56 | 48 | 40 | 32 | 24 | 16 | 8 |
57 | 49 | 41 | 33 | 25 | 17 | 9 | 1 |
59 | 51 | 43 | 35 | 27 | 19 | 11 | 3 |
61 | 53 | 45 | 37 | 29 | 21 | 13 | 5 |
63 | 55 | 47 | 39 | 31 | 23 | 15 | 7 |
Al investigar información sobre DES, se puede
encontrar la siguiente tabla:
Para ver la tabla
seleccione la opción "Descargar" del menú
superior
Después de recibir un bloque de entrada de 64
bits, el primer paso consiste en aplicar al bloque de
entrada la permutación P1, teniendo como resultado un
orden de salida que se identifica leyendo la tabla de izquierda a
derecha y de arriba abajo. Significa que el bit del lugar 58 en
el mensaje de entrada, después de la permutación,
ocupara la posición 1 y así sucesivamente.
Ejemplo:
Bloque de Entrada: Bloque de Salida:
0..1 ..0 ..1 ..0 ..1 ..1 ..0 0..1 ..1 ..0 ..1 ..0
..1 ..0
2..10..18..26..34..42..50..58
58..50..42..34..26..18..10.. 2
Una vez realizada la permutación, los 64 bits se
dividen en dos sub-bloques Left y Right (Li y
Ri) de 32 bits, los bits que forma el sub-bloque
Li se encuentra formado por los primeros 32 bits y los
bits restantes forma el sub-bloque Ri. En estas
condiciones, el cifrado DES esta definido por las ecuaciones:
Li =
Ri-1
Ri = Li-1 f (
Ri-1 , Ki )
El valor de i =
16, representa el valor de las 16 vueltas del algoritmo. Lo
anterior se explicará con un ejemplo, el cual se ira
detallando a lo largo del trabajo, ejemplificando cada proceso
del algoritmo.
Ejemplo Permutación
P1
Mensaje a Cifrar = Denytamo
Para ver la tabla
seleccione la opción "Descargar" del menú
superior
Utilizando la tabla Permutación Inicial P1,
tenemos:
Tabla antes la | |||||||
0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 |
0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 |
0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 |
0 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
0 | 1 | 1 | 1 | 0 | 1 | 0 | 0 |
0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 |
0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 |
0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 |
Permutación Inicial | |||||||
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 |
1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 |
1 | 1 | 1 | 0 | 1 | 0 | 1 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 |
1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
Se muestra el resultado de haber realizado la
permutación P1, la parte superior se encuentra
marcada con el fin de indicar cuales son los bits que forman el
sub-bloque L0, los bits restantes forman el sub-bloque
R0, dando como resultado:
L0 = 11111111 00011000
11010111 11101010
R0 = 00000000 11111110
11001100 10000100
Sub-bloques iniciales
1.1.1. Permutación E
La salida de R0 es de 32 bits, se utiliza la
permutación E, con el propósito de expandir a 48
bits y así poder realizar la suma OR exclusiva con la
clave Ki, lo anterior se encuentra esquematizado en
la imagen. A
continuación se muestra la tabla para realizar la
permutación E.
Permutación | ||||||||
32 | 1 | 2 | 3 | 4 | 5 | |||
4 | 5 | 6 | 7 | 8 | 9 | |||
8 | 9 | 10 | 11 | 12 | 13 | |||
12 | 13 | 14 | 15 | 16 | 17 | |||
16 | 17 | 18 | 19 | 20 | 21 | |||
20 | 21 | 22 | 23 | 24 | 25 | |||
24 | 25 | 26 | 27 | 28 | 29 | |||
28 | 29 | 30 | 31 | 32 | 1 | |||
Bits duplicados | ||||||||
1 | 2 | 3 | 4 | |||||
5 | 6 | 7 | 8 | |||||
9 | 10 | 11 | 12 | |||||
13 | 14 | 15 | 16 | |||||
17 | 18 | 19 | 20 | |||||
21 | 22 | 23 | 24 | |||||
25 | 26 | 27 | 28 | |||||
29 | 30 | 31 | 32 |
En la tabla del lado izquierdo se encuentran marcados
los bits utilizados para expandir a 48 bits en la
permutación E. Al realizar la expansión de
R0, se procede con la suma OR exclusiva que se
explicara mas adelante.
Ejemplo Permutación
E
Al tener la secuencia de R0 de 32 bits, es
necesario aplicar la permutación E, la cual se muestra a
continuación.
32 Bits | |||
0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 |
1 | 1 | 1 | 0 |
1 | 1 | 0 | 0 |
1 | 1 | 0 | 0 |
1 | 0 | 0 | 0 |
0 | 1 | 0 | 0 |
R0 = 0000 0000 1111 1110
1100 1100 1000 0100
Permutación | |||||
0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 1 |
0 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 0 | 1 |
0 | 1 | 1 | 0 | 0 | 1 |
0 | 1 | 1 | 0 | 0 | 1 |
0 | 1 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 0 | 0 |
El resultado de la permutación E(R0)
es:
E(R0) = 000000 000001
011111 111101 011001 011001 010000 001000
Página siguiente |