Attaque de RSA par fractions continuées

publicité
Attaque de RSA par fractions continuées
On rappelle le principe de l’algorithme RSA. Soient p, q ∈ N deux nombres premiers, et soit
n = pq. On choisit e ∈ (Z/ϕ(n)Z)× , que l’on rend public ainsi que n, et on calcule un inverse
d de e modulo ϕ(n), que l’on garde secret ainsi que p et q. Si une personne veut transmettre
nous un message m ∈ Z/nZ, elle calcule me ∈ Z/nZ, qu’elle nous transmet. Il nous suffit de
calculer (me )d pour retrouver m. On va présenter une méthode due à Wiener pour attaquer ce
cryptosystème, efficace quand d est petit.
1
Fractions continuées.
Définition 1. Soient (an )n∈N une suite de nombres entiers naturels. On pose pour tout n ≥ 0,
[a0 : a1 , a2 , . . . , an ] = a0 +
1
a1 +
1
a2 +
1
···+ a1
n
La suite [a0 ], [a0 ; a1 ], . . . est convergente.
Proposition 1. Soit x ∈ R. Il existe une unique suite (an )n∈N d’entiers naturels telle que
x = limn→+∞ [a0 : a1 , a2 , . . . , an ]. De plus, la suite an est nulle à partir d’un certain rang si et
seulement si x ∈ Q (on utilise la convention 1/0 = +∞, 1/ + ∞ = 0).
On dit que (an ) est le développement en fraction continuée de x, on appelle les [a0 :
a1 , a2 , . . . , an ] (n ≥ 0) les réduites de x.
Proposition 2. Soit x ∈ R, de développement en fraction continuée [a0 : a1 , a2 , . . . , an ]. On
pose p−2 = 0, q−2 = 1, p−1 = 1, q−1 = 0. ¨On définit pour n ≥ 0, pn = an pn−1 + pn−2 ,
qn = an qn−1 + qn−2 . Alors, pour tout n ≥ 0, pn et qn sont premiers entre eux, et pn /qn = [a0 :
a1 , a2 , . . . , an ].
Les rationnels pn /qn s’appellent les convergentes de x.
Théorème 1. Soit x ∈ R, et soit pn /qn une convergente de x. Si q est un entier tel que q ≤ qn ,
alors |x − p/q| ≥ |x − pn /qn |, pour tout p ∈ Z. De plus, si |x − p/q| < 1/2q 2 , alors p/q est une
convergente de x.
1
2
Attaque de RSA
Soit n = pq, avec p et q premiers, soit e < ϕ(n) inversible modulo ϕ(n), et soit d un inverse
de e modulo ϕ(n). On veut calculer d connaissant e et n. Par définition, il existe un entier
k ∈ Z tel √
que ed = 1 + kϕ(n).
√ Comme e < ϕ(n), on a k < d. Si on suppose que q < p < 2q,
alors q < n et n − ϕ(n) < 3 n. On écrit :
e k |1 − k(n − ϕ(n))|
3k
− =
< √ .
n d
nd
d n
Proposition 3. Si d < 13 n1/4 , alors on peut retrouver d.
Démonstration. Dans ce cas, l’inégalité précédente donne ne − kd <
une réduite de ne .
1
2d2
car k < d. Ainsi,
k
d
est
Pour déterminer de quelle réduite il s’agit, on peut calculer les premières réduites de e/n,
jusqu’à en trouver une dont le dénominateur soit bien d. Pour cela, on remarque que la relation
ed = 1 + kϕ(n) devrait fournir la valeur de ϕ(n) si on a trouvé la bonne réduite. Questions.
1. Démontrer la proposition 1.
2. Implémenter le calcul des réduites d’un x ∈ R
3. À la fin du texte, comment s’assurer que l’on a la bonne valeur de ϕ(n) ?
4. Évaluer le temps de calcul pour l’attaque proposée.
5. Implémenter l’attaque et l’appliquer avec n = 53849827354264842453628575584921, e =
49394906641974585153683647525463.
2
Téléchargement