El ataque de Wiener , que recibe su nombre del criptólogo Michael J. Wiener, es un tipo de ataque criptográfico contra RSA . El ataque utiliza la representación de fracción continua para exponer la clave privada d cuando d es pequeño.
Información general sobre RSA
Los personajes ficticios Alice y Bob son personas que desean comunicarse de forma segura. Más específicamente, Alice quiere enviar un mensaje a Bob que solo él pueda leer. Primero, Bob elige dos números primos secretos p y q . Luego calcula el módulo RSA N = pq . Este módulo RSA se hace público junto con el exponente de cifrado e . N y e forman el par de claves públicas ( e , N ) . Al hacer pública esta información, cualquiera puede cifrar mensajes para Bob. El exponente de descifrado d satisface ed ≡ 1 (mod λ ( N )) , donde λ ( N ) denota la función de Carmichael , aunque a veces se usa φ ( N ), la función totiente de Euler (nota: este es el orden del grupo multiplicativo ( Z / NZ ) × , que no es necesariamente un grupo cíclico). El exponente de cifrado e y λ ( N ) también deben ser primos relativos para que exista un inverso modular . La factorización de N y la clave privada d se mantienen en secreto, de modo que solo Bob puede descifrar el mensaje. Denotamos el par de claves privadas como ( d , N ) . El cifrado del mensaje M viene dado por C ≡ M e (mod N ) y el descifrado del texto cifrado C viene dado por C d ≡ ( M e ) d ≡ M ed ≡ M (mod N ) (usando el teorema de Euler ).
Utilizando el algoritmo euclidiano , se puede recuperar eficientemente la clave secreta d si se conoce la factorización de N. Al tener la clave secreta d , se puede factorizar eficientemente el módulo de N. [ 1 ]
Clave privada pequeña
En el criptosistema RSA , Bob podría tender a usar un valor pequeño de d , en lugar de un número aleatorio grande, para mejorar el rendimiento del descifrado RSA . Sin embargo, el ataque de Wiener muestra que elegir un valor pequeño para d dará como resultado un sistema inseguro en el que un atacante puede recuperar toda la información secreta, es decir, romper el sistema RSA . Esta ruptura se basa en el teorema de Wiener, que se cumple para valores pequeños de d . Wiener ha demostrado que el atacante puede encontrar d de manera eficiente cuando d < 1/3 N 1/4 . [ 2 ]
El artículo de Wiener también presentó algunas contramedidas contra su ataque que permiten un descifrado rápido. A continuación se describen dos técnicas.
Elegir una clave pública grande : Reemplazar e por e ′, donde e ′ = e + k ⋅ λ ( N ) para algún k grande . Cuando e ′ es suficientemente grande, es decir, e ′ > N 3/2 , entonces el ataque de Wiener no se puede aplicar independientemente de cuán pequeño sea d .
Utilizando el teorema chino del resto : Supongamos que se elige d tal que tanto d p ≡ d (mod ( p − 1)) como d q ≡ d (mod ( q − 1)) sean pequeños, pero d mismo no lo sea, entonces se puede realizar un descifrado rápido de C de la siguiente manera:
- Primero calcula M p ≡ C d p (mod p ) y M q ≡ C d q (mod q ) .
- Utilice el teorema chino del resto para calcular el valor único de 0 ≤ M < N que satisface M ≡ M p (mod p ) y M ≡ M q (mod q ) . El resultado de M satisface M ≡ C d (mod N ) como se requiere. El punto es que el ataque de Wiener no se aplica aquí porque el valor de d mod λ ( N ) puede ser grande.
Cómo funciona el ataque
Tenga en cuenta que
donde G = mcd( p − 1, q − 1) .
Dado que ed ≡ 1 (mod λ ( N )) , existe un entero K tal que
Definiendo k = K / mcd( K , G ) y g = G / mcd( K , G ) , y sustituyendo en lo anterior se obtiene:
- .
Dividido por dpq :
- , dónde.
Así pues, e / pq es ligeramente menor que k / dg , y el primero se compone enteramente de información pública . Sin embargo , aún se requiere un método de verificación y estimación.
Mediante el uso de manipulaciones algebraicas simples e identidades , se puede comprobar la exactitud de una suposición . [ 1 ]
Teorema de Wiener
Sea N = pq con q < p < 2 q . Sea d < 1 / 3 N 1/4 .
Dado ⟨ N , e ⟩ con ed ≡ 1 (mod λ ( N )) , el atacante puede recuperar d de manera eficiente . [ 2 ] [ 3 ]
Ejemplo
Supongamos que las claves públicas son ⟨ N , e ⟩ = ⟨ 90581, 17993 ⟩ . El ataque debe determinar d . Usando el teorema de Wiener y fracciones continuas para aproximar d , primero intentamos encontrar la expansión en fracciones continuas de e / N . Nótese que este algoritmo encuentra fracciones en su mínima expresión. Sabemos que
Según el desarrollo en fracciones continuas de e / N , todas las convergentes k / d son:
Podemos verificar que la primera convergente no produce una factorización de N. Sin embargo , la convergente 1/5 produce
Ahora, si resolvemos la ecuación
Entonces encontramos las raíces que son x = 379; 239. Por lo tanto, hemos encontrado la factorización.
- .
Nótese que, para el módulo N = 90581 , el teorema de Wiener funcionará si
- .
Demostración del teorema de Wiener
La demostración se basa en aproximaciones que utilizan fracciones continuas. [ 2 ]
Dado que ed = 1 (mod λ ( N )) , existe un k tal que ed − kλ ( N ) = 1. Por lo tanto,
- .
Sea G = mcd( p − 1, q − 1) ; tenga en cuenta que si se usa φ ( N ) en lugar de λ ( N ), entonces la demostración se puede reemplazar con G = 1 y φ ( N ) reemplazado con λ ( N ).
Luego multiplicando por 1 / G ,
Por lo tanto, k / Gd es una aproximación de e / φ ( N ) . Aunque el atacante no conoce φ ( N ), puede usar N para aproximarla. En efecto, dado que φ ( N ) = N − p − q + 1 y p + q − 1 < 3 √ N , tenemos:
Sustituyendo φ ( N ) por N obtenemos:
Ahora bien, kλ ( N ) = ed − 1 < ed , por lo que kλ ( N ) < ed . Dado que e < λ ( N ) , entonces kλ ( N ) < ed < λ ( N ) d , obtenemos:
Dado que k < d y d < 1/3 N 1/4 . Por lo tanto , obtenemos :
- (1)
Dado que d < 1/3 N 1/4 , 2d < 3d , entonces 2d < 3d < N 1/4 , obtenemos :
- , entonces (2)
De (1) y (2), podemos concluir que
Si | x − a / b | < 1 / 2 b 2 , entonces a / b es una convergente de x , por lo tanto k / Gd aparece entre las convergentes de e / N . Por consiguiente, el algoritmo encontrará finalmente k / Gd .
Referencias
- 1 2 L. Render, Elaine (2007). El ataque de Wiener a los exponentes secretos cortos.
- 1 2 3 Boneh, Dan . "Veinte años de ataques al criptosistema RSA" (PDF) . Notices of the American Mathematical Society . 46 (2): 203– 213.
- ↑ Wiener, Michael J. (1990). "Criptoanálisis de exponentes secretos RSA cortos". IEEE Transactions on Information Theory . 36 (3). IEEE : 553–558 . Bibcode : 1990ITIT...36..553W . doi : 10.1109/18.54902 .
Lecturas adicionales
- Coppersmith, Don (1996). RSA de exponente bajo con mensajes relacionados. Springer-Verlag Berlín Heidelberg.
- Algoritmos de clave asimétrica
- ataques criptográficos
- Ataques a sistemas criptográficos de clave pública