- 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 Permutación | |||||||
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 (P1) | |||||||
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 Permutación | |||||||
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 (P1) | |||||||
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 E | ||||||||
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 E | |||||
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 |