Lección 8 de 13
La caída de DES y el Triple DES: cuando 56 bits no bastan
Cómo se rompió DES por fuerza bruta en 1998, por qué cifrar dos veces no duplica la seguridad (encuentro a medio camino) y qué es el Triple DES.
Al terminar sabrás:
- Explicar por qué DES cayó por la longitud de su clave y no por su diseño
- Aplicar el ataque de encuentro a medio camino a un doble cifrado pequeño
- Entender por qué el doble DES no sirve y cómo se construye el Triple DES
- Conocer el estado actual de DES y del Triple DES según el NIST
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 conoces DES por dentro: sus rondas, su función con las cajas S y sus subclaves. En el relato del curso, DES reinó unos veinte años y cayó por una razón sencilla: su clave de 56 bits se quedó corta. Esta lección cuenta cómo cayó, qué intentó la gente para arreglarlo (cifrar dos veces, que no funciona) y qué sí funcionó (cifrar tres veces). De paso, aprenderás un truco que reaparece por todas partes en criptografía: el encuentro a medio camino.
La idea
DES tiene claves posibles, unos . Es un número enorme para una persona, pero no para una máquina. Eva solo necesita un par (mensaje, criptograma) conocido: prueba todas las claves hasta que una convierte el mensaje en el criptograma. Eso es la fuerza bruta de la lección 1.
El diseño de DES resistió bien durante décadas los ataques más ingeniosos. Lo que no resistió fue el paso del tiempo: los ordenadores se abarataron y las pruebas dejaron de ser una barrera.
Cuando una clave se queda corta, la reacción natural es alargarla. Como cambiar DES por completo era caro, surgió la idea de reutilizarlo: cifrar el mensaje con DES y volver a cifrar el resultado con otra clave. Si una clave son 56 bits, dos claves serían 112. ¿Verdad? Falso, y la razón es la mitad de la lección.
La caída: Deep Crack
Ya en 1977 Diffie y Hellman propusieron una máquina dedicada a la búsqueda exhaustiva de claves de DES. Desde entonces, la clave de 56 bits estuvo bajo sospecha.
En julio de 1998 la Electronic Frontier Foundation (EFF) lo demostró en la práctica con una máquina construida para ello, apodada Deep Crack. Según la EFF:
- Costó menos de 250.000 dólares.
- Resolvió el «DES Challenge II» de RSA Laboratories, dotado con 10.000 dólares, en unas 56 horas.
- Probaba más de 88.000 millones de claves por segundo.
- El récord anterior eran 39 días, logrados con una gran red de ordenadores.
Mira las cifras con calma. A claves por segundo, recorrer las claves enteras llevaría unas 227 horas, casi 9 días y medio. Encontrar la clave en 56 horas significa que la máquina tuvo algo de suerte: de media, la clave aparece a mitad de camino, hacia las 114 horas. (Este cálculo es nuestro, no de la EFF.)
Medio año después, en enero de 1999, la EFF repitió la hazaña con el reto siguiente junto a distributed.net, una red de casi 100.000 ordenadores de voluntarios, en 22 horas y 15 minutos. Ya no había discusión: DES no protegía ningún secreto que valiera más que una pequeña inversión.
El NIST (la agencia estadounidense que había publicado el estándar) acabó retirando FIPS 46-3, la última versión de DES, en 2005, como vimos en la lección 5.
El doble cifrado
Sea el cifrado de un bloque con la clave . El doble cifrado usa dos claves independientes y :
Si cada clave tiene bits, hay parejas de claves. Para DES, y parejas: inalcanzable por fuerza bruta. Pero Eva no tiene por qué probar parejas.
El encuentro a medio camino
Eva conoce un par . Si la pareja es la correcta, entonces
porque ambos lados son el valor intermedio que hay entre los dos cifrados. Así que:
- Eva calcula para todas las claves y guarda las parejas (valor, ) en una tabla .
- Calcula para todas las claves y guarda la tabla .
- Busca los valores que aparecen en las dos tablas. Cada coincidencia es una pareja de claves candidata.
Son cifrados más descifrados, no . Para el doble DES, unas operaciones de tiempo ( cifrados y descifrados) y una tabla de entradas. Esto lo señalaron ya Diffie y Hellman en 1977, y por eso recomendaron cifrar al menos tres veces; Merkle (1979) y Merkle y Hellman analizaron después el cifrado triple (así lo cuenta el Handbook of Applied Cryptography, capítulo 7). Cifrar dos veces apenas duplica el trabajo de Eva: la seguridad pasa de «» a «», no a «». Se paga con memoria, y mucha: ver el ejercicio 3.
Ejemplo resuelto
Usamos el Feistel de juguete de la lección 4 (bloques de 8 bits, tres rondas, caja S de PRESENT) con una simplificación para que el espacio de claves sea manejable a mano: cada clave es un solo número de 4 bits, y de él salen las tres subclaves rotándolo, como en DES: , es rotada una posición a la izquierda y , rotada dos. Por ejemplo, da las subclaves , y . Hay claves por cifrado, así que parejas. Descifrar es, como siempre en Feistel, aplicar las mismas rondas con las subclaves al revés (, , ).
Ojo con cuatro claves, , , y : sus tres subclaves se leen igual al derecho y al revés, así que para ellas y cifrar dos veces devuelve el mensaje. Son las «claves débiles» del juguete, como las de la lección 7.
Alicia y Bernardo comparten dos claves secretas (ninguna débil), y , y cifran dos veces. Eva conoce el par
Fuerza bruta. Probar las parejas, con dos cifrados cada una: 512 cifrados.
Encuentro a medio camino. Cuesta cifrados, más buscar coincidencias.
Para ver cómo se calcula una entrada, tomamos (subclaves , , ) y , con y :
- Ronda 1: , que es la entrada 4 de la caja S, con salida . Luego y .
- Ronda 2: , entrada 14, salida . Luego y .
- Ronda 3: , entrada 10, salida . Luego y .
La salida es . Así se rellenan las dos tablas completas (la columna en binario):
| : | : | |
|---|---|---|
| 0000 | 11010101 | 11011000 |
| 0001 | 11000100 | 01001001 |
| 0010 | 00101001 | 01001100 |
| 0011 | 10010001 | 11000011 |
| 0100 | 01101100 | 00110001 |
| 0101 | 11010110 | 00111000 |
| 0110 | 11010011 | 01110101 |
| 0111 | 10010010 | 00100100 |
| 1000 | 10000010 | 10100111 |
| 1001 | 00001110 | 00101100 |
| 1010 | 10100101 | 11011000 |
| 1011 | 10100100 | 10100110 |
| 1100 | 01011001 | 11010011 |
| 1101 | 00100100 | 10010110 |
| 1110 | 11010100 | 01000001 |
| 1111 | 01101001 | 00001001 |
Buscamos valores presentes en las dos columnas. Hay exactamente dos:
- está en con y en con . Pareja candidata .
- está en con y en con . Pareja candidata .
Una pareja es falsa. No es un error: los bloques son de solo 8 bits, así que hay solo 256 valores intermedios posibles y es normal que dos de ellos coincidan por azar. En DES esto se arregla con otro par conocido: se prueban solo las parejas candidatas. Con el juguete, el segundo par , descarta y deja . Un tercer par, y , la confirma. Eva ha encontrado ambas claves sin probar las 256 parejas.
Triple DES
Si dos cifrados no bastan, ¿y tres? El Triple DES (también llamado TDEA o 3DES) cifra con la secuencia cifrar-descifrar-cifrar (EDE, de encrypt-decrypt-encrypt):
El descifrado del medio no añade seguridad: es una comodidad. Si , los dos primeros pasos se anulan y queda un DES normal, así que un equipo con Triple DES puede hablar con otro que solo tenga DES. Hay dos variantes:
- Tres claves independientes: 168 bits de clave en total.
- Dos claves (): 112 bits.
El encuentro a medio camino también muerde aquí, aunque más flojo: contra el Triple DES con tres claves el ataque cuesta del orden de operaciones, no , y el NIST le asigna una seguridad de 112 bits (SP 800-57). Sigue siendo mucho más que . Pero hay otro problema, que no es la clave: el bloque sigue siendo de 64 bits, y el NIST limita el uso de un mismo juego de claves a no más de bloques. Por qué un bloque de 64 bits obliga a ese límite lo veremos en la lección 13, con el modo CBC.
Estado actual en el NIST
- FIPS 46-3 (DES): retirado en 2005.
- SP 800-131A rev. 2 (marzo de 2019): el Triple DES de dos claves tiene el cifrado no permitido y su descifrado solo para uso heredado. El de tres claves está desaconsejado hasta el 31 de diciembre de 2023, con un máximo de bloques por juego de claves; después de esa fecha, el cifrado no se permite salvo que otra norma del NIST lo autorice, y el descifrado se admite como uso heredado.
En resumen, el Triple DES ya solo se tolera para descifrar datos antiguos. El relevo es AES.
Ejercicios
Ejercicio 1
Con claves de bits, ¿cuántos cifrados necesita la fuerza bruta contra un doble cifrado y cuántos el encuentro a medio camino? Calcúlalo para (el juguete) y para .
Ver la solución
La fuerza bruta prueba parejas, cada una con dos cifrados. El encuentro a medio camino hace cifrados para la tabla y descifrados para la : operaciones.
Para : parejas (512 cifrados) frente a operaciones. Para : parejas ( cifrados) frente a operaciones. La ventaja crece muy rápido con .
Ejercicio 2
En el ejemplo, comprueba que la pareja falsa no sirve para el segundo par (, ) calculando , y que la pareja verdadera sí encaja con su valor intermedio.
Ver la solución
Con se obtiene , y con se obtiene , que no es . La pareja falsa se descarta.
Para la verdadera: , y también. Coinciden, como debe ser en la pareja correcta.
Ejercicio 3
Para el doble DES con un par conocido : (a) ¿cuántas parejas de claves hay y cuántos valores de 64 bits?, (b) ¿cuántas parejas falsas se esperan tras el encuentro a medio camino con un solo par? ¿y con dos pares? (c) ¿Cuánta memoria exige la tabla si cada entrada ocupa 8 bytes?
Ver la solución
(a) Hay parejas de claves y valores de bloque.
(b) Con un par, cada pareja de claves tiene una probabilidad de de «encajar por azar», así que se esperan parejas candidatas (casi todas falsas). Con un segundo par, cada candidata debe superar otra prueba de probabilidad : quedan falsas esperadas, es decir, prácticamente solo la verdadera.
(c) bytes, unos bytes, es decir, unos 576 petabytes (solo los valores, sin contar las claves). Por eso el encuentro a medio camino, aunque ahorra tiempo, es caro en memoria.
En resumen
- DES cayó por su clave de 56 bits: en 1998 la EFF construyó Deep Crack por menos de 250.000 dólares y recuperó una clave en unas 56 horas.
- El doble cifrado parece dar claves, pero el encuentro a medio camino (Diffie y Hellman, 1977) lo rompe con unas operaciones y entradas de memoria.
- El Triple DES (EDE, con dos o tres claves) alarga la vida de DES, con una seguridad efectiva de 112 bits para tres claves.
- Estado en el NIST: FIPS 46-3 retirado en 2005, y el cifrado con Triple DES no se permite a partir de 2024 salvo excepciones.
- Hacía falta un cifrado nuevo, diseñado a plena luz y con bloque más grande: AES.
Siguiente lección: El cuerpo de 256 elementos
Para profundizar
- Electronic Frontier Foundation, EFF DES Cracker Project (página de archivo, con las notas de prensa del 17/7/1998 y del 19/1/1999) (1999).
- A. Menezes, P. van Oorschot y S. Vanstone, Handbook of Applied Cryptography, capítulo 7: Block Ciphers (1996).
- E. Barker y A. Roginsky, NIST SP 800-131A Rev. 2: Transitioning the Use of Cryptographic Algorithms and Key Lengths (2019).
- E. Barker, NIST SP 800-57 Part 1 Rev. 5: Recommendation for Key Management (tabla 2) (2020).