Lección 7 de 13
Las subclaves de DES: de 56 bits a 16 claves de ronda
Cómo DES fabrica las 16 subclaves de 48 bits a partir de la clave: bits de paridad, PC-1, rotaciones, PC-2. Además, claves débiles y propiedad de complementación.
Al terminar sabrás:
- Explicar por qué la clave de 64 bits de DES solo tiene 56 bits efectivos
- Calcular C0, D0, C1, D1 y la subclave K1 de un ejemplo real
- Generar las subclaves en orden inverso rotando a la derecha
- Reconocer las cuatro claves débiles y la propiedad de complementación
Si sabes qué es un número en binario y sumar módulo 2 (sin llevadas), puedes seguirlo. Lo demás (hexadecimal, XOR, permutaciones, polinomios módulo 2 y cuerpos finitos) se explica sobre la marcha.
Ya conocemos el esquema de DES (lección 5) y el interior de cada ronda (lección 6). Solo nos falta una pieza: en la ronda 1 usamos sin decir de dónde sale. Hoy lo explicamos. Con ello, DES queda completo en nuestro relato: Alicia y Bernardo comparten una clave , y cada uno fabrica con ella las 16 claves de ronda. Además veremos dos rarezas de DES que se heredan de este calendario de claves: las claves débiles y la complementación.
La idea
La clave tiene 64 bits, pero solo se usan 56. Esos 56 bits se parten en dos mitades de 28, y . En cada ronda las dos mitades rotan hacia la izquierda una o dos posiciones, y de las 56 posiciones se escogen 48 para formar la subclave de esa ronda. No hay ninguna operación complicada: son permutaciones, selecciones y rotaciones. Toda la no linealidad de DES está en las cajas S, no aquí.
Los pasos
Recuerda que DES numera los bits de 1 a 64 desde la izquierda.
Bits de paridad
Los bits 8, 16, 24, 32, 40, 48, 56 y 64 de (el último de cada byte) son bits de paridad: se escogen para que cada byte tenga un número impar de unos, de modo que un error al copiar la clave pueda detectarse. No participan en el cifrado. Quedan bits efectivos, y por eso el espacio de claves de DES es de claves.
PC-1: de 64 a 56 bits
La primera permutación, PC-1 (permuted choice 1), descarta los ocho bits de paridad y reordena los otros 56. La tabla, por filas de 7, es:
| 57 | 49 | 41 | 33 | 25 | 17 | 9 |
| 1 | 58 | 50 | 42 | 34 | 26 | 18 |
| 10 | 2 | 59 | 51 | 43 | 35 | 27 |
| 19 | 11 | 3 | 60 | 52 | 44 | 36 |
| 63 | 55 | 47 | 39 | 31 | 23 | 15 |
| 7 | 62 | 54 | 46 | 38 | 30 | 22 |
| 14 | 6 | 61 | 53 | 45 | 37 | 29 |
| 21 | 13 | 5 | 28 | 20 | 12 | 4 |
Las cuatro primeras filas dan (28 bits) y las cuatro últimas, (28 bits). Ningún número de la tabla es múltiplo de 8.
Rotaciones
Para , se rotan y hacia la izquierda posiciones, con
Se obtienen y . La suma de las rotaciones es : hay cuatro rotaciones de una posición (rondas 1, 2, 9 y 16) y doce de dos, y . Como cada mitad tiene 28 bits, tras las 16 rondas ha dado exactamente una vuelta completa: y .
PC-2: de 56 a 48 bits
Se unen (56 bits) y la permutación PC-2 (permuted choice 2) escoge 48 de ellos, ordenados así, y forma :
| 14 | 17 | 11 | 24 | 1 | 5 |
| 3 | 28 | 15 | 6 | 21 | 10 |
| 23 | 19 | 12 | 4 | 26 | 8 |
| 16 | 7 | 27 | 20 | 13 | 2 |
| 41 | 52 | 31 | 37 | 47 | 55 |
| 30 | 40 | 51 | 45 | 33 | 48 |
| 44 | 49 | 39 | 56 | 34 | 53 |
| 46 | 42 | 50 | 36 | 29 | 32 |
Las cuatro primeras filas (24 bits) toman posiciones de (números del 1 al 28), y las cuatro últimas (24 bits) de (números del 29 al 56). Se descartan ocho posiciones de las 56. Cada subclave es, pues, una selección de 48 de los 56 bits de la clave efectiva, distinta en cada ronda.
Ejemplo resuelto
Seguimos con .
Paso 1: en bits y paridad. Por bytes:
| byte | hex | bits | unos |
|---|---|---|---|
| 1 | 3 | ||
| 2 | 3 | ||
| 3 | 5 | ||
| 4 | 5 | ||
| 5 | 5 | ||
| 6 | 5 | ||
| 7 | 7 | ||
| 8 | 5 |
Cada byte tiene un número impar de unos, así que la paridad es correcta.
Paso 2: PC-1. Aplicamos la tabla. El resultado, en 8 grupos de 7 bits, es
Las dos mitades son:
Paso 3: la primera rotación. Como , pasamos el primer bit de cada mitad al final:
Paso 4: PC-2. Juntamos y leemos las posiciones de la tabla de PC-2. Por ejemplo, el primer grupo de toma las posiciones 14, 17, 11, 24, 1 y 5 de , cuyos valores son . Siguiendo así con las 48 posiciones sale
que es exactamente la subclave que usamos en la ronda 1 de la lección 6.
Paso 5: las demás. La tabla siguiente da las 16 subclaves del ejemplo, todas calculadas del mismo modo:
| 1 | 1 | 9 | 1 | ||
| 2 | 1 | 10 | 2 | ||
| 3 | 2 | 11 | 2 | ||
| 4 | 2 | 12 | 2 | ||
| 5 | 2 | 13 | 2 | ||
| 6 | 2 | 14 | 2 | ||
| 7 | 2 | 15 | 2 | ||
| 8 | 2 | 16 | 1 |
Fíjate en que sale de rotar una sola posición, la del final del calendario, y que : tras las 16 rotaciones volvemos al punto de partida.
Descifrar y las subclaves
Como vimos en la lección 5, descifrar es cifrar con . Para eso hay que tener las subclaves en orden inverso, y se puede hacer de dos maneras: calcular las 16 y leerlas al revés, o ir rotando hacia la derecha. Esto último es posible precisamente porque y : en la ronda de descifrado 1, sale de , que es , sin rotar. Luego, en cada ronda de descifrado, se rota hacia la derecha: 0 posiciones en la primera y después , es decir, .
Dos curiosidades
Claves débiles
Si y son cada una de ceros o de unos, rotarlas no las cambia, y las 16 subclaves son iguales. Hay cuatro claves así, las claves débiles de DES, que se ven aquí con su forma en hexadecimal:
| clave | subclaves | ||
|---|---|---|---|
| todo | todo | todas | |
| todo | todo | todas | |
| todo | todo | todas | |
| todo | todo | todas |
Con una clave así, cifrar y descifrar usan las mismas subclaves (las 16 son iguales, y al invertir el orden queda lo mismo). Es decir, y cifrar dos veces devuelve el mensaje: . Lo hemos comprobado con las cuatro claves y con el mensaje del ejemplo. Aunque son solo 4 entre claves, no deben usarse. Hay además seis parejas de claves semidébiles: cifrar con una de la pareja equivale a descifrar con la otra (lo cuenta el Handbook of Applied Cryptography, capítulo 7).
Complementación
Si es con todos los bits cambiados, DES cumple
La razón: las subclaves de son las complementarias de las de , y en se hace (el complementario aparece dos veces y se cancela), así que no cambia. En la ronda 1, y se complementan, da lo mismo, y también está complementado. Y así hasta el final.
Con el ejemplo: , , y
Qué ahorra en fuerza bruta. Eva tiene un mensaje y su criptograma , y además con su criptograma (texto elegido). Recorre solo una clave de cada pareja , y para cada una calcula una sola vez . Si da , es candidata. Si da , la candidata es , porque . (Una candidata se confirma con otro par, porque alguna clave falsa puede acertar por azar.) Con un cálculo se prueban dos claves, así que basta recorrer la mitad: claves en vez de . Es un ahorro de un factor 2, nada decisivo, pero muestra que una propiedad matemática de la estructura se traduce en trabajo de menos.
Ejercicios
Ejercicio 1
Cambia el último bit de la clave del ejemplo: . ¿Cambia el criptograma de ? ¿Cuántas claves de 64 bits cifran exactamente igual que , sea cual sea el mensaje?
Ver la solución
El último bit de es el bit 64, un bit de paridad: PC-1 no lo usa. Las subclaves son idénticas, y el criptograma también: (lo hemos comprobado). Cada uno de los 8 bits de paridad se puede cambiar libremente sin tocar las subclaves, así que hay claves de 64 bits que dan las mismas subclaves y, por tanto, cifran igual cualquier mensaje. De esas 256, solo una cumple la paridad impar en los 8 bytes. Por eso se habla de claves y no de .
Ejercicio 2
Con y , calcula y (recuerda ).
Ver la solución
Rotamos una posición a la izquierda: el primer bit pasa al final.
empieza por ; al quitarlo queda y se añade al final:
empieza por ; al quitarlo y ponerlo al final:
Ejercicio 3
Para la clave débil , PC-1 da todo de unos y todo de ceros. Demuestra que las 16 subclaves valen y que cifrar dos veces devuelve el mensaje.
Ver la solución
Rotar una cadena de 28 unos, o de 28 ceros, la deja igual. Así que son todo unos y todo ceros, para todo . La permutación PC-2 toma sus primeras 24 posiciones de (números del 1 al 28) y las otras 24 de (del 29 al 56), así que son 24 unos seguidos de 24 ceros, es decir, , en las 16 rondas.
Como las 16 subclaves son iguales, usarlas en orden inverso es lo mismo que usarlas en orden directo: . Entonces . Con el mensaje del ejemplo, la comprobación numérica lo confirma.
En resumen
- La clave de 64 bits tiene 8 bits de paridad que no se usan: la clave efectiva es de 56 bits, claves.
- Las subclaves salen de PC-1 (64 a 56), dos mitades y de 28 bits que rotan posiciones (suman 28) y PC-2 (56 a 48).
- Como la suma de rotaciones es 28, y : al descifrar, las subclaves en orden inverso se generan rotando a la derecha.
- Hay cuatro claves débiles, con las 16 subclaves iguales: cifrar dos veces devuelve el mensaje.
- DES cumple , y con ella la búsqueda exhaustiva de la clave se reduce a la mitad.
Siguiente lección: La caída de DES y el Triple DES
Para profundizar
- NIST, FIPS 46-3, Data Encryption Standard (DES) (1999).
- J. O. Grabbe, The DES Algorithm Illustrated (1998).
- A. Menezes, P. van Oorschot y S. Vanstone, Handbook of Applied Cryptography (1996).