El ataque de Wiener , llamado así en honor al criptólogo Michael J. Wiener, es un tipo de ataque criptográfico contra RSA . El ataque utiliza el método de fracción continua para exponer la clave privada d cuando d es pequeña.
Los personajes de ficción Alice y Bob son personas que quieren comunicarse de forma segura. Más específicamente, Alice quiere enviarle un mensaje a Bob que solo Bob pueda leer. Primero Bob elige dos 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 los mensajes dirigidos a 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 multiplicativo grupo ( Z / N Z ) × , 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 sólo 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 pequeño teorema de Fermat ) .
Usando 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]
En el criptosistema RSA , Bob podría tender a utilizar 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 es válido para valores pequeños de d . Wiener ha demostrado que el atacante puede encontrar d eficientemente cuando d <1/3 N 1/4 . [2]
El artículo de Wiener también presenta algunas contramedidas contra su ataque que permiten un descifrado rápido. A continuación se describen dos técnicas.
Elección de una clave pública grande : reemplace e por e ′, donde e ′ = e + k ⋅ λ ( N ) para algo grande de k . Cuando e ′ es lo 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 .
Usando el teorema del resto chino : supongamos que uno elige d tal que tanto d p ≡ d (mod ( p − 1)) como d q ≡ d (mod ( q − 1)) son pequeños pero d en sí no lo es, entonces un descifrado rápido de C se puede hacer de la siguiente manera:
Tenga en cuenta que
donde GRAMO = mcd( p − 1, q − 1) .
Dado que ed ≡ 1 (mod λ ( N ) , existe un número entero K tal que
Definiendo k =k/mcd( K , G )y g =GRAMO/mcd( K , G ), y sustituyendo lo anterior se obtiene:
Dividido por dpq :
Entonces,mi/pqes un poco más pequeño quek/dgy el primero se compone íntegramente de información pública . Sin embargo, aún se requiere un método para verificar [ se necesita aclaración ] y adivinar.
Mediante el uso de identidades y manipulaciones algebraicas simples , se puede verificar la precisión de una suposición . [1]
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 eficientemente . [2] [ verificación fallida ]
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 tratamos de encontrar la expansión en fracciones continuas demi/norte. Tenga en cuenta que este algoritmo encuentra fracciones en sus términos más bajos. Lo sabemos
Según la expansión continua de las fracciones demi/norte, todos convergentesk/dson:
Podemos verificar que el primer convergente no produce una factorización de N. Sin embargo, la convergencia1/5rendimientos
Ahora, si resolvemos la ecuación
luego encontramos las raíces que son x = 379; 239 . Por lo tanto hemos encontrado la factorización
Observe que, para el módulo N = 90581 , el teorema de Wiener funcionará si
La prueba se basa en aproximaciones que utilizan fracciones continuas. [2] [4]
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 prueba se puede reemplazar con G = 1 y φ ( N ) reemplazada por λ ( N ).
Luego multiplicando por1/GRAMO,
Por eso,k/Dioses una aproximación demi/φ ( norte ). Aunque el atacante no conoce φ ( N ), puede utilizar N para aproximarlo. De hecho, dado que φ ( N ) = N − p − q + 1 y p + q − 1 < 3 √ N , tenemos:
Usando N en lugar de φ ( N ) obtenemos:
Ahora, kλ ( N ) = ed − 1 < ed , entonces kλ ( N ) < ed . Dado que e < λ ( N ) , entonces kλ ( N ) < ed < λ ( N ) d , entonces obtenemos:
Dado que k < d y d <1/3 N 1/4 . De ahí obtenemos:
Desde d <1/3 N 1/4 , 2 d < 3 d , luego 2 d < 3 d < N 1/4 , obtenemos:
De (1) y (2), podemos concluir que
Si | x-a/b| <1/2 b 2, entoncesa/bes convergente de x , por lo tantok/Diosaparece entre los convergentes demi/norte. Por lo tanto, el algoritmo eventualmente encontrarák/Dios. [ Se necesita más explicación ]