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
© Copyright 2024