Lección 6 de 13
La función f de DES y sus cajas S
Dentro de cada ronda de DES: expansión, XOR con la subclave, ocho cajas S, permutación. Calculamos la ronda 1 entera y vemos por qué las cajas S no son lineales.
Al terminar sabrás:
- Describir las cuatro etapas de f: expansión E, XOR con la subclave, cajas S y permutación P
- Leer una caja S: fila por los bits extremos, columna por los cuatro centrales
- Calcular a mano la ronda 1 del ejemplo de DES
- Explicar por qué las cajas S deben ser no lineales y qué son los criptoanálisis diferencial y lineal
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.
En la lección anterior vimos el esqueleto de DES: la permutación inicial, 16 rondas de Feistel y la final. Dejamos una caja negra, la función , que toma 32 bits y una subclave de 48 y devuelve 32 bits. Hoy la abrimos. Es ahí donde DES tiene su confusión: la no linealidad de todo el cifrado sale de unas pocas tablas, las cajas S.
Seguimos con el ejemplo del hilo, con la ronda 1 hecha a mano de principio a fin. Las subclaves, por ahora, nos las dan hechas: en la lección 7 veremos cómo salen.
La idea
Una red de Feistel puede usar como cualquier función, sin que tenga que ser invertible. DES elige una que mezcla bien en cuatro etapas:
- Expansión . Los 32 bits de se convierten en 48, repitiendo algunos.
- Mezcla con la clave. Se hace XOR con la subclave de 48 bits.
- Cajas S. Los 48 bits se parten en ocho trozos de 6 bits, y cada trozo pasa por una tabla que lo cambia por 4 bits. Salen bits.
- Permutación . Los 32 bits se reordenan.
Solo la etapa 3 es no lineal. Las otras tres (expandir, hacer XOR con la subclave y permutar) son lineales o afines sobre . Lineal quiere decir que respeta el XOR, ; afín, que es lineal más una constante, como cuando se suma la subclave fija. Por eso las cajas S son lo más importante de DES.
Las cuatro etapas
Expansión
es una lista de 48 posiciones: el bit de la salida es el bit de la entrada. Por filas de 6, que luego serán las entradas de las ocho cajas:
| 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 |
La regla es sencilla. Se parte en ocho bloques de 4 bits. A cada bloque se le añade, por la izquierda, el último bit del bloque anterior, y por la derecha el primer bit del bloque siguiente (el primer bloque toma el bit 32 y el último, el bit 1: se da la vuelta). Así, 16 bits de aparecen dos veces.
XOR con la subclave
Es la única etapa donde entra la clave: , con 48 bits cada uno.
Las ocho cajas S
Cada caja S (de substitution box) es una tabla de 4 filas por 16 columnas, con números del 0 al 15. Recibe 6 bits y devuelve un número de 4 bits. Cómo se lee:
- La fila la forman los bits extremos , leídos en binario (de 0 a 3).
- La columna la forman los cuatro bits centrales , leídos en binario (de 0 a 15).
- El número que está en esa casilla, escrito en 4 bits, es la salida.
Esta es la caja completa. Para que se vea en el móvil la hemos transpuesto: cada fila de la tabla es una columna de la caja.
| columna | fila 0 | fila 1 | fila 2 | fila 3 |
|---|---|---|---|---|
| 0 | 14 | 0 | 4 | 15 |
| 1 | 4 | 15 | 1 | 12 |
| 2 | 13 | 7 | 14 | 8 |
| 3 | 1 | 4 | 8 | 2 |
| 4 | 2 | 14 | 13 | 4 |
| 5 | 15 | 2 | 6 | 9 |
| 6 | 11 | 13 | 2 | 1 |
| 7 | 8 | 1 | 11 | 7 |
| 8 | 3 | 10 | 15 | 5 |
| 9 | 10 | 6 | 12 | 11 |
| 10 | 6 | 12 | 9 | 3 |
| 11 | 12 | 11 | 7 | 14 |
| 12 | 5 | 9 | 3 | 10 |
| 13 | 9 | 5 | 10 | 0 |
| 14 | 0 | 3 | 5 | 6 |
| 15 | 7 | 8 | 0 | 13 |
Las otras siete cajas, , tienen la misma forma y están en el apéndice 1 de FIPS 46-3 (enlace en las fuentes). Cada fila de cada caja contiene los números del 0 al 15 una sola vez. Eso significa que, fijados los dos bits extremos, la caja es una permutación de los 16 valores de los cuatro bits centrales.
Permutación
Es la lista de 32 posiciones siguiente, por filas de 4:
| 16 | 7 | 20 | 21 |
| 29 | 12 | 28 | 17 |
| 1 | 15 | 23 | 26 |
| 5 | 18 | 31 | 10 |
| 2 | 8 | 24 | 14 |
| 32 | 27 | 3 | 9 |
| 19 | 13 | 30 | 6 |
| 22 | 11 | 4 | 25 |
Su misión es repartir los 4 bits de salida de cada caja entre varias cajas de la ronda siguiente. Por ejemplo, los cuatro bits que salen de van a las posiciones 9, 17, 23 y 31 de , muy separadas entre sí.
Ejemplo resuelto
Calculamos la ronda 1 del ejemplo de la lección 5: , . Allí obtuvimos . La primera subclave (se calcula en la lección 7) es .
Paso 1: en bits. .
Paso 2: expansión. Bloque a bloque, añadimos el vecino de cada lado:
| bloque de | vecino izq. | vecino der. | resultado |
|---|---|---|---|
| (bit 32) | |||
Así,
Paso 3: XOR con . en grupos de 6 bits es
Hacemos XOR bloque a bloque:
| bloque | XOR | ||
|---|---|---|---|
| 1 | |||
| 2 | |||
| 3 | |||
| 4 | |||
| 5 | |||
| 6 | |||
| 7 | |||
| 8 |
Paso 4: las cajas S. Cada bloque de 6 bits da la fila y la columna :
| caja | entrada | fila | columna | valor | salida |
|---|---|---|---|---|---|
| 0 | 12 | 5 | |||
| 1 | 8 | 12 | |||
| 0 | 15 | 8 | |||
| 2 | 13 | 2 | |||
| 3 | 0 | 11 | |||
| 2 | 3 | 5 | |||
| 0 | 10 | 9 | |||
| 3 | 3 | 7 |
Para comprobar las otras siete necesitas sus tablas, del apéndice 1 de FIPS 46-3. Como muestra, la fila 1 de es
y en su columna 8 está el 12 de la tabla.
Comprobemos la primera con la tabla de arriba. La entrada es : los bits extremos son y , así que la fila es 0. Los cuatro centrales son , que es la columna 12. En la tabla de , columna 12, fila 0: el valor es 5, que es . Para , la entrada tiene bits extremos y (fila ) y centrales (columna 13).
Juntamos las ocho salidas:
Paso 5: permutación . Reordenamos esos 32 bits con la tabla y sale
Paso 6: cerrar la ronda. y , como en la lección anterior.
Por qué las cajas S no son lineales
Imagina que las cajas S fueran lineales, es decir, que cumplieran . Entonces , el XOR con la clave, las cajas y serían todas lineales sobre (vistas como funciones del mensaje y de la clave a la vez). Todo DES sería una función lineal de la clave y del mensaje, y la clave sería la solución de un sistema de ecuaciones lineales. Eva lo resolvería con unos cuantos pares (mensaje, criptograma) conocidos, con eliminación gaussiana (el método de bachillerato para resolver sistemas de ecuaciones, pero sumando módulo 2), y no habría seguridad alguna.
Las cajas S rompen eso. Es el único sitio de DES donde (el ejercicio 2 lo comprueba con ). Y están diseñadas con cuidado: las filas son permutaciones, y cambiar un solo bit de la entrada de una caja cambia al menos dos bits de su salida (lo comprobamos para las ocho cajas con un programa).
Criptoanálisis diferencial y lineal
Cuando DES era ya un estándar, aparecieron dos técnicas generales para atacar este tipo de cifrados:
- Criptoanálisis diferencial (Biham y Shamir, 1990-1991): estudia cómo una diferencia entre dos entradas se propaga a la diferencia de las salidas, y qué diferencias de salida son más probables que otras. Las cajas S son lo que decide cuánto se puede aprovechar eso. Don Coppersmith contó en 1994 que IBM ya conocía esta técnica en 1974 y que los criterios de diseño de las cajas S se habían elegido para resistirla.
- Criptoanálisis lineal (Matsui, 1993): busca aproximaciones lineales de las cajas S, relaciones entre bits de entrada y de salida que se cumplen con probabilidad algo distinta de , y las encadena a lo largo de las rondas.
Los detalles técnicos de estos ataques quedan fuera del curso. Lo que importa aquí es la idea: todo lo que un cifrado de bloque tenga de aproximadamente lineal o de demasiado regular en sus cajas S es una puerta para Eva. Con todo, DES no cayó por estos ataques, sino por su clave corta, como veremos en la lección 8.
Ejercicios
Ejercicio 1
Con la tabla de , calcula , y (da la fila, la columna y la salida en 4 bits).
Ver la solución
- : bits extremos y , fila . Centrales , columna 13. En la fila 1, columna 13 está el 5: salida .
- : extremos y , fila . Centrales , columna 7. Fila 2, columna 7: el 11, salida .
- : extremos y , fila 3. Centrales , columna 15. Fila 3, columna 15: el 13, salida .
Ejercicio 2
Comprueba que no es lineal: toma e y compara con .
Ver la solución
Para : fila , columna 0, valor 0. Para : fila 0, columna , valor 4. Para : fila 1, columna 1, valor 15.
Por otra parte, (en binario, ). Como , : la caja no es lineal. Basta una sola pareja para saberlo.
Ejercicio 3
¿Qué bits de aparecen dos veces en ? ¿En qué cajas S entra el bit 4 de ? ¿Y el bit 32?
Ver la solución
Dieciséis bits aparecen dos veces: son el primero y el último de cada bloque de 4, es decir, los bits 1, 4, 5, 8, 9, 12, 13, 16, 17, 20, 21, 24, 25, 28, 29 y 32. Los otros 16 (los dos centrales de cada bloque) aparecen una sola vez. En total, .
El bit 4 de está en las posiciones 5 y 7 de . La posición 5 es el penúltimo bit de la entrada de (el bloque 1 son las posiciones 1 a 6), y es uno de los centrales. La posición 7 es el primer bit de la entrada de , un bit extremo, que elige fila. El bit 32 está en las posiciones 1 y 47: el primer bit de (extremo) y el penúltimo de (central).
Es lo que hace la expansión: un bit de influye en dos cajas S vecinas, lo que acelera la difusión.
En resumen
- = expansión (32 a 48 bits), XOR con la subclave, ocho cajas S (6 a 4 bits) y permutación .
- Una caja S se lee con los bits extremos como fila y los cuatro centrales como columna.
- Las cajas S son lo único no lineal de DES. Si no, todo el cifrado sería un sistema lineal sobre .
- La ronda 1 del ejemplo da y .
- Los criptoanálisis diferencial (Biham y Shamir) y lineal (Matsui) estudian cómo se comportan las cajas S.
Siguiente lección: Las subclaves de DES
Para profundizar
- NIST, FIPS 46-3, Data Encryption Standard (DES) (1999).
- D. Coppersmith, The Data Encryption Standard (DES) and its strength against attacks (1994).
- E. Biham y A. Shamir, Differential cryptanalysis of DES-like cryptosystems (1991).
- M. Matsui, Linear cryptanalysis method for DES cipher (EUROCRYPT '93, LNCS 765) (1994).