Lección
La teoría — Diffie-Hellman: un secreto acordado en público
En un intercambio de claves de Diffie-Hellman, dos partes acuerdan un número secreto a través de un canal que cualquiera puede leer. Fijan en público un primo p y una base g. Cada parte elige un exponente privado, hace público el resultado de elevar g a esa potencia mod p y luego eleva el número público de la otra a su propio exponente: (gᵇ)ᵃ = (gᵃ)ᵇ = gᵃᵇ mod p. Revertir el proceso exige resolver un logaritmo discreto: dado A = gᵃ mod p, hallar un x tal que gˣ ≡ A (mod p). Diffie y Hellman señalaron en 1976 que no veían modo de deducir el secreto compartido a partir de los números públicos sin resolverlo, aunque tampoco tenían una demostración de que fuera imposible. El orden de g es el menor n ≥ 1 con gⁿ ≡ 1 (mod p); g es un generador cuando su orden es p − 1.
Qué significa cada símbolo
p- el módulo primo, público
g- la base, pública
a, b- los exponentes privados de Alice y Bob
A, B- sus números públicos, gᵃ mod p y gᵇ mod p
x- el exponente que halla Eva; cualquier x con gˣ ≡ A sirve, de modo que halla a módulo el orden de g
ord(g)- el orden de g: cuántos valores distintos puede tomar el secreto compartido
- Supone
- p es un primo entre 5 y 1.999, g una base entre 2 y p − 2, y a y b van de 1 a p − 2. Un intento es una comparación entre una potencia calculada y un objetivo; ambos recuentos incluyen el intento que tiene éxito. Cada cifra de Pohlig-Hellman se obtiene probando sus candidatos por orden, tal como lo describieron Pohlig y Hellman para factores pequeños; para factores grandes propusieron además una búsqueda que intercambia memoria por tiempo, algoritmo que esta página no ejecuta. El ejemplo original de Diffie y Hellman empleaba un primo de unos 200 bits, para el que estimaron el cálculo del logaritmo en torno a 2¹⁰⁰ operaciones.
Problema resuelto al detalle
-
Recuperar el secreto de Alice con p = 101 5 pasos
Alice y Bob eligen p = 101 y g = 2. Eva intercepta A = 12 y B = 53. Encuentra un x con 2ˣ ≡ 12 (mod 101) mediante Pohlig-Hellman, cuenta los intentos y usa x para deducir el secreto compartido. Indica después cuánto costaría el mismo ataque con p = 65.537.
Abre este problema en la herramienta
-
Como 100 = 2² · 5², x queda determinado por x mod 4 y x mod 25. El orden de 2 divide a 100, y tanto 2⁵⁰ = 100 como 2²⁰ = 95 son distintos de 1, así que el orden es 100: el 2 es un generador.
-
Módulo 4, γ = 2⁵⁰ = 100, que equivale a −1. Primera cifra binaria: 12⁵⁰ = 100, luego d = 1 al segundo intento. Lo descontamos: 12 · 2⁻¹ = 12 · 51 = 612 ≡ 6, y 6²⁵ = 100, de modo que la siguiente cifra también es 1, de nuevo al segundo intento. Así, x ≡ 1 + 1 · 2 = 3 (mod 4).
-
Módulo 25, γ = 2²⁰ = 95, cuyas potencias son 1, 95, 36, 87, 84. Primera cifra en base 5: 12²⁰ = 95, luego d = 1 al segundo intento. Lo descontamos: 6⁴ = 1.296 ≡ 84, con lo que la siguiente cifra es 4 al quinto intento. Así, x ≡ 1 + 4 · 5 = 21 (mod 25).
-
Los números menores que 100 congruentes con 21 mod 25 son 21, 46, 71 y 96; de ellos, solo el 71 es 3 mod 4. Por tanto, x = 71 tras 2 + 2 + 2 + 5 = 11 intentos, cuando el peor caso requería 2·2 + 2·5 = 14. La fuerza bruta habría probado del 0 al 71, es decir, 72 intentos. El secreto compartido es 53⁷¹ mod 101 = 35.
-
65.537 = 2¹⁶ + 1 es primo y p − 1 = 2¹⁶. Pohlig-Hellman resuelve sus dieciséis cifras binarias una a una, con dos candidatos para cada una: a lo sumo 32 intentos, frente a los 65.536 que podría requerir la fuerza bruta. Pohlig y Hellman analizaron este caso concreto, p = 2ⁿ + 1, antes de abordar el caso general.
Respuesta
x = 71, tras 11 intentos (como máximo 14), y el secreto compartido es 35. Con p = 65.537, el ataque requiere a lo sumo 32 intentos. La página se detiene en 1.999, de modo que esa cifra surge del cálculo teórico y no de una simulación.
-
Ruta de aprendizaje
Cómo se rompen los códigos
Referencias (2)
- The exchange itself, the definition's sentence that its authors could see no way round a logarithm and had no proof, and the 200-bit example in `assumes`: Whitfield Diffie and Martin E. Hellman, "New Directions in Cryptography," IEEE Transactions on Information Theory 22(6), 644–654, November 1976. §III, p. 649.
- The second insight's quotation, the digit-by-digit search the page runs, and the worked problem's p = 2ⁿ + 1: Stephen C. Pohlig and Martin E. Hellman, "An Improved Algorithm for Computing Logarithms over GF(p) and Its Cryptographic Significance," IEEE Transactions on Information Theory 24(1), 106–110, January 1978. §III–IV, pp. 107–110.