Lección
La teoría — RSA: Cifrado de juguete
RSA es una sola operación usada dos veces. Cifrar es me mod n y descifrar es cd mod n — la misma exponenciación modular, con otro exponente. El truco está en elegir el par de modo que aplicarlo dos veces devuelva el mensaje, mientras que conocer uno de los exponentes no dice nada del otro. Todo lo que imprime el panel es la búsqueda de ese par. Publicado por Rivest, Shamir y Adleman en 1978 — y, como solo se supo cuando el GCHQ lo desclasificó en 1997, hallado cuatro años antes por Clifford Cocks y guardado en un cajón.
Qué significa cada símbolo
n- el módulo,
p·q. Público. El secreto son sus factores, no el número en sí. φ(n)- la función φ de Euler,
(p−1)(q−1). El panel puede imprimirla porque le dieron p y q; un atacante con solo n no puede, y pasar de n a φ es tan difícil como factorizar. e- el exponente público. Sirve cualquier número coprimo con φ(n), y por eso cambia cuando cambias un primo.
d- el exponente privado,
e⁻¹ mod φ(n). Un único inverso modular — inmediato si conoces φ, y todo el juego si no.
De dónde viene la fórmula
- Multiplica los primos:
n = p·q. Con los valores por defecto, 61 · 53 = 3233. Ese número se publica. Recuperar 61 y 53 a partir de 3233 lleva un momento a mano, y esa es la razón honesta por la que esto se llama juguete. - Calcula
φ(n) = (p−1)(q−1)= 60 · 52 = 3120. Es el eje de todo el esquema: n es público y φ(n) no, y el único camino conocido de uno a otro pasa por la factorización. - Elige
ecoprimo con φ(n) y resuelvee·d ≡ 1 (mod φ(n))para d. El panel muestra7⁻¹ mod 3120 = 1783. Fíjate en lo que ese paso no es: no es difícil. Conocido φ, es un solo inverso modular. El secreto de d descansa por entero en el secreto de φ. - Por qué funciona la ida y vuelta: por construcción
e·d = 1 + kφ(n), así quemed = m1+kφ(n) ≡ m (mod n)— el teorema de Euler. Descifrar no es una operación inversa inventada aparte; es la misma exponenciación, con el exponente que deshace la primera.
Cómo leer lo que ves
La fila que conviene vigilar es e, porque no es una constante. Con los primos por defecto marca 7; cambia p a 67 y pasa a 5. La razón está en la fila de encima: e debe ser coprimo con φ(n), y φ pasó de 3120 a 3432. Compara luego los dos exponentes en pantalla — e = 7 frente a d = 1783. El público es minúsculo y el privado no, y ninguna de las dos cosas es casual: e se elige pequeño a propósito para que cifrar salga barato, y d es lo que resulte del inverso. La última fila es la prueba de que salió bien: m′ = 42, el número que escribiste.
- Supone
- Que el mensaje es un número menor que n. Con n = 3233 no hay nada que cifrar por encima de 3232 — por eso el RSA real nunca cifra un mensaje directamente: cifra una clave simétrica rellenada de unos cientos de bits y deja que un cifrado más rápido lleve el texto. También supone p ≠ q, y que nunca reutilizas un primo en un segundo módulo: dos módulos que comparten un factor quedan rotos ambos con un solo máximo común divisor.
- Falla cuando
- Puedes romper esta página sin factorizar nada. Pon p = 67, q = 53 y el mensaje en 3. El panel elige e = 5 e imprime como cifrado 243 — que no es más que 3⁵. Como 3⁵ es menor que n = 3551, la reducción modular nunca ocurrió: el cifrado es una potencia corriente, y la raíz quinta de 243 es 3. Sin clave, sin factorizar, mensaje recuperado. Prueba m = 5 y obtienes 3125, que es 5⁵; en m = 8 la potencia por fin supera a n y el cifrado se convierte en un inútil 809. Esto no es un fallo de esta página — es la razón por la que nadie cifra un número desnudo. El RSA real rellena antes el mensaje con azar estructurado, que es lo que especifica el RFC 8017 y lo que convierte una exponenciación en un criptosistema.
Problemas resueltos al detalle
-
Un par de claves RSA para p = 61 y q = 53 5 pasos
Genere el par de claves RSA para p = 61 y q = 53, y cifre m = 42. Cada uno de los números siguientes se deduce de esos tres, incluido el exponente público.
-
El módulo se publica y la función fi (totient) se destruye, aunque ambos están a una sola multiplicación de distancia de los primos. φ(n) cuenta los enteros menores que n que no comparten ningún factor con él, lo que para un producto de dos primos distintos es (p − 1)(q − 1).
-
El exponente público debe ser invertible módulo φ, lo que significa que debe ser coprimo con él. Al factorizar φ, los candidatos pequeños se eliminan a sí mismos, dejando el 7 como el exponente impar más pequeño disponible. Las claves reales usan 65537, pero eso es mayor que este φ, por lo que la herramienta recurre al coprimo más pequeño.
-
Invertir 7 módulo 3120 es el algoritmo de Euclides extendido y nada más. Tres divisiones llegan a un resto de 1, y al deshacer esas mismas tres líneas se escribe ese 1 como una combinación de 3120 y 7.
-
El coeficiente de 7 en esa combinación es negativo, y un inverso negativo se vuelve positivo sumando el módulo una vez. El cifrado es entonces una única exponenciación modular, realizada elevando al cuadrado dos veces en lugar de multiplicando 42 por sí mismo siete veces.
-
El descifrado nunca tiene que comprobarse por fuerza bruta, y para tamaños de clave realistas ni siquiera se podría. Los dos exponentes se construyeron de modo que su producto sea una unidad más que un múltiplo de φ, y el teorema de Euler lo remata para cualquier m coprimo con n (que es el caso de 42).
Respuesta
La herramienta imprime n = 3233, φ = 3120, d = 1783 y c = 240, y confirma que 240 se descifra de nuevo como 42. La parte que conviene recordar es lo que realmente es φ. No es un segundo secreto al lado de p y q: es el mismo secreto escrito de otra forma. Dados n y φ se tiene p + q = n − φ + 1 = 114 y pq = 3233, una ecuación de segundo grado cuyo discriminante es un cuadrado perfecto, y devuelve 61 y 53 en una sola línea. Por lo tanto, un generador de claves que filtre φ ha filtrado la factorización tan completamente como si hubiera impreso los primos, razón por la cual φ se calcula una vez, se usa para hallar d y luego se descarta.
-
-
Factorización de 3233 en 61 × 53 para vulnerar la seguridad RSA 6 pasos
El panel factoriza 3233 en 61 × 53 antes de que termines de leer la página. Esa factorización es toda la seguridad de RSA, aparentemente rota al instante. Calcula qué hace imposible el mismo problema un tamaño de clave más allá.
-
Los dos números con los que arranca el panel: el módulo, y la función φ que sale de los dos primos.
-
A un atacante le basta un hecho: el primo menor no puede pasar de la raíz cuadrada del módulo. Cualquiera mayor necesitaría un socio más pequeño que él mismo.
-
La búsqueda recorre entonces los primos hasta 56, y hay dieciséis. El decimosexto es 53. Dieciséis divisiones no son seguridad, son un error de redondeo.
-
Mete ahora un módulo de los que se usan de verdad. 2048 bits significa n cerca de 2²⁰⁴⁸, y su raíz cuadrada es 2¹⁰²⁴, unos 10³⁰⁸.
-
Ponle precio. A mil millones de divisiones por segundo son 10²⁹⁹ segundos, frente a un universo de unos 4 × 10¹⁷ segundos.
-
El tiempo es la unidad equivocada para un número así; compáralo mejor con algo físico.
Respuesta
Dieciséis divisiones frente a 10³⁰⁸, y 10³⁰⁸ es 10²²⁸ veces el número de átomos en el universo observable, por lo que ni siquiera podrías almacenar el contador. Lo útil es la forma más que el tamaño: el trabajo del atacante crece como √n mientras que la clave crece como log n, así que cada dos bits adicionales de clave duplican el coste de romperla y le cuestan al defensor dos bits. Esa asimetría es todo el producto. La respuesta instantánea de la herramienta no es un fallo en la demostración. Es la demostración, porque 3233 es el aspecto de un módulo cuando no se le ha dado espacio a la asimetría para actuar.
-
Referencias (4)
- The idea RSA is an instance of — public keys, two years earlier: W. Diffie & M. Hellman, "New directions in cryptography." IEEE Transactions on Information Theory 22(6), 644–654, 1976.
- What real RSA wraps round the message, and why the bare exponentiation on this page is not a cryptosystem: K. Moriarty (Ed.), B. Kaliski, J. Jonsson & A. Rusch, "PKCS #1: RSA Cryptography Specifications Version 2.2." RFC 8017, November 2016 — RSAES-OAEP in §7.1.
- The scheme the tool walks through, including e·d ≡ 1 mod φ(n): R. L. Rivest, A. Shamir and L. Adleman, "A method for obtaining digital signatures and public-key cryptosystems." Communications of the ACM 21(2), 120–126, 1978.
- Why the security rests on factoring rather than on hiding d: A. J. Menezes, P. C. van Oorschot and S. A. Vanstone, Handbook of Applied Cryptography, §8.2. CRC Press, 1996. ISBN 978-0-8493-8523-0.