Tríptico exposición

Criptografía
Cifrado DES
Alumnos:
Duarte García Hugo Leonardo
Ortiz Alvarez Mario
Grupo: 02
Semestre: 2015-2
1
Breve Historia del algoritmo DES
ˆ Fué publicado por primera vez a mediados de 1970 como un estándar
federal de EEUU el cual pronto se convirtió en de facto internacionalmente.
ˆ DES esta basado en otro algoritmo de cifrado de IBM, el Lucifer con
algunas modicaciones de la NSA
ˆ Es una variante del cifrado básico de Feistel (red Feistel), llamado
así por H. Feistel que trabajó en IBM realizando una de las primeras
investigaciones no militares sobre algoritmos de cifrado.
ˆ DES fue un algoritmo bastante resistente, hasta inicios de 1990 ya que
la longitud de un bloque (64 bits) y de la clave (56 bits) del DES básico
serían demasiado pequeñas para futuras aplicaciones.
ˆ En respuesta a este problema el US National Institute for Standards
and Technology (NIST) inició una competición para encontrar un nuevo
algoritmo de cifrado que sería llamado el Advanced Encryption System
(AES).
ˆ Finalmente este concurso sería ganado por el algoritmo Rijndael creado
por una pareja de criptógrafos belgas.
Cifrados por bloques
DES y todos los nalistas del concurso AES son ejemplos de cifrados
por bloques iterados, los cuales obtienen la fortaleza de su seguridad al usar
rondas de funciones circulares simples (round function); una función circular
toma un bloque de n bits y retorna un bloque de n bits, donde n es el
tamaño del bloque cifrado. El número de rondas r puede ser variable o jo,
al incrementar el número de rondas aumenta el nivel de seguridad del bloque
cifrado.
2
Planicación de claves
Cada uso de una función circular emplea una subclave (round key):
Figure 1: Subclaves
esta se deriva de la clave secreta principal K, usando un algoritmo llamado
planicación de claves (key schedule).
ˆ Para permitir el descifrado de cada round key, la función que implementa cada ronda debe ser invertible.
ˆ Para el descifrado las round key son usadas en sentido contrario del
que se usaron para cifrar.
Red de Feistel
DES es básicamente una red Fesitel con unas ligeras variaciones:
ˆ El número de rondas r es 16
ˆ El tamaño del bloque es de 64 bits
ˆ La longitud de la clave K es 56 bits
ˆ Las subclaves K1,K2,...,K16 son cada una de 48 bits.
3
Figure 2: DES como una red Feistel
Operación general
1. Se toma un bloque de texto plano de 64 bits, en caso de que la entrada
sea mayor, se divide en bloques de 64 bits.
2. Se realiza una permutación inicial IP
3. Se separa el bloque en mitad izquierda L y mitad derecha R
4. Se realizan 16 rondas r de operaciones idénticas.
5. Se unen ambas mitades nuevamente
¹
6. Se realiza una permutación nal, esta es la inversa (IP- ) de la permutación inicial; esto permite que el mismo HW o SW pueda ser usado
tanto como para cifrar o descifrar.
4
Figure 3: Vista general de DES
Permutación Inicial [IP]
Está denida por la siguiente tabla. Los números son posiciones de la
entrada, es decir, el primer bit de la entrada es el 1 y así sucesivamente hasta
el 64. Después de la permutación se divide la cadena en mitad Izquierda y
Derecha.
5
58
60
62
64
57
59
61
63
50
52
54
56
49
51
53
55
42
44
46
48
41
43
45
47
34 26
36 28
38 30
40 32
33 25
35 27
37 29
39 31
Tabla IP
18
20
22
24
17
19
21
23
10
12
14
16
9
11
13
15
2
4
6
8
1
3
5
7
Planicación de claves [Key schedule]
La planicación de claves en DES toma una clave de 56 bits, la cual se
genera de nuestra clave de entrada de 64 bits. Se usan 56 bits para la clave
y 8 de paridad que sirven para detectar errores, estos bits son las posiciones
8,16,24,...64 y se aseguran de que cada bit de la clave contenga un número
impar de bits.
Para realizar la permutación de la clave, usamos la siguiente tabla PC-1:
57
1
10
19
63
7
14
21
49
58
2
11
55
62
6
13
41
50
59
3
47
54
61
5
33
42
51
60
39
46
53
28
25
34
43
52
31
38
45
20
17
26
35
44
23
30
37
12
9
18
27
36
15
22
29
4
Table 1: PC-1
Donde cada número es una posición de nuestra cadena de 64 bits, la
posición 1 es el bit más signicativo (el primer bit de izquierda a derecha) y
la posición 64 es el menos signicativo.
ˆ La salida de PC-1 es dividida en dos bloques C (Mitad superior) y D
ˆ
(mitad inferior).
Se hace a C y D un corrimiento a la izquierda de 1 en las rondas 1,2,9,16
y de 2 en las demás. La siguiente tabla ejemplica los recorrimientos:
6
# Ronda r
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
# Desplazamentos 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1
Table 2: Tabla de recorrimientos
Un ejemplo delos recorrimientos de C y D lo veríamos como:
0 0 0 0 0 0 0
0
1
0
1
1
0
0
0
0
1
1
0
0 1 1
C
0 1 0
0 0 0
0 1 1 0 0 0 0
0
1
0
0
1
1
1
1
0
1
1
0
0 1 0
D
0 0 1
0 0 1
0 0 0 0 0 0 0
1
1
0
0
0
0
1
1
0
0 1 1 1
Cs
0 1 0 0
0 0 0 0
1 1 0 0 0 0 0
0
1
1
1
1
0
1
1
0
0 1 0 1
Ds
0 0 1 0
0 0 1 0
Table 3: Recorriemientos en ronda 1
Permutación PC2
Juntamos ambas mitades C y D desplazadas para la ronda en curso y
volvemos a hacer una permutación con base en la tabla PC-2:
14
3
23
16
41
30
44
46
17
28
19
7
52
40
49
42
11
15
12
27
31
51
39
50
24
6
4
20
37
45
56
36
1
21
26
13
47
33
34
29
Table 4: PC-2
7
5
10
8
2
55
48
53
32
La función F
En cada ronda de DES se usa una función F que consiste de las siguientes
fases:
1. Permutación de expansión: La mitad derecha L0 de 32 bits es expandida y permutada a 48 bits.
2. Adición de la Round Key: Los 48 bit de salida de la permutación de
expansión entra a una XOR con la round key de 48 bits. Éste es el
único punto donde se opera la round key.
3. División: El resultado de 48 bits, es dividido en lotes de 6 bits.
4. Substitution Box: Cada lote de 6 bits entra a una S-Box que produce
un resultado de 4 bits.
5. P-Box: Ahora tenemos 8 lotes de 4 bits que son concatenados para producir una cadena de 32 bits y posteriormente permutados para formar
la función F
Figure 4: Función F
8
Permutación de Expansión
La mitad derecha R de 32 bits es expandida y permutada a 48 bits con
la siguiente tabla:
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
Table 5: Permutación de expansión
Cajas de substitución [S-Box]
Las cajas de substitución ayudan a tener difusión de números y también a
mejorar la seguridad por medio de confusión. De los números que obtenemos
de la XOR entre el bloque izquierdo y lasubclave. Para usar las SBoxes:
ˆ Si tenemos una entrada = 101001, tomamos el primer y último bit y
los convertimos a decimal, es decir, 11 base 2 = 3 en base 10, con eso
obtendríamos la la de la SBox.
ˆ Si tenemos una entrada = 101001, tomamos los 4 bits intermedios
y los convertimos a decimal. 0100 base 2 = 4 en base 10, con eso
obtendríamos la columna de la S BOX.
9
Table 6: Ocho cajas de susbstitución
10
Caja de permutación P [P-Box]
Se vuelve a hacer una permutación con base en la siguiente tabla:
16
29
1
5
2
32
19
22
7
12
15
18
8
27
13
11
20
28
23
31
24
3
30
4
21
17
26
10
14
9
6
25
Table 7: P-Box
Permutación inversa [P- ¹]
Una vez realizadas las 16 rondas, se procede a realizar una permutación
nal, que es la inversa de la inicial (IP) y es la que permite el cifrado y
descifrado con el mismo HW/SW
40
39
38
37
36
35
34
33
8
7
6
5
4
3
2
1
48
47
46
45
44
43
42
41
16
15
14
13
12
11
10
9
56
55
54
53
52
51
50
49
24
23
22
21
20
19
18
17
64
63
62
61
60
59
58
57
32
31
30
29
28
27
26
25
Table 8: Permutación Inversa
Conversión Final
La permutación nal regresa una cadena de 64 bits que es convertida a
ASCII y nos da el cifrado total.
11
Bibliografía
ˆ Nigel Smart. (2013). Cryptography: an introduction. Estados Unidos:
Mcgraw-Hill College.
ˆ Kathryn Neugent. (2013). DES Animation. Marzo 20 2015, Sitio web:
http://kathrynneugent.com/des.html
12