Le système RSA
Sources : « Histoire des codes secrets » par S SINGH (JC Lattès)
Ce système de codage porte les initiales de ses inventeurs, les mathématiciens américains
Ronald Rivest, Adi Shamir et Leonard Aldeman, du MIT. Leurs idées utilisent des
mathématiques connues depuis longtemps, c’est la combinaison de toutes ces notions qui est
vraiment nouvelle.
Les principes utilisés :
1) Le petit théorème de Fermat : si p est premier, alors pour tout entier n,
nnp
est un
multiple de p.
Preuve par récurrence sur n :
Initialisation :
p
p0000
vérifiée.
Hérédité : Supposons la propriété vraie pour un certain entier n. Alors
1
1
1
1
0
)1(1
)1()1()1(
p
k
kk
p
p
p
k
kk
p
p
p
k
kk
p
p
nCnn
nnCn
nnCnn
Or, p étant premier,
)!(! !kpk p
Ck
p
est un multiple de p si 1 k p-1 (car le p du numérateur
ne peut pas se simplifier au dénominateur).
nnp
est un multiple de p par hypothèse de
récurrence, donc
)1()1( nn p
, somme de multiples de p, est un multiple de p.
L’hérédité est prouvée, et tout baigne.
Il résulte de ce théorème que si n n’est pas un multiple de p, alors
1
1
p
n
est un multiple de
p (une factorisation et un coup de théorème de Gauss, en utilisant que p est premier, donc que
n, qui n’est pas un multiple de p, est premier avec p).
2) On considère la fonction f définie par
)(mod)( Nxxf k
(le reste de la division
Euclidienne de xk par N : sous certaines conditions portant sur k et N que nous allons étudier,
c’est une bijection (bien sûr modulo N), qui perturbe extrêmement les nombres.
Posons N = pq, p et q sont tous deux premiers, et cherchons k premier avec (p 1)(q - 1).
Alors, à l’aide de l’algorithme d’Euclide, on détermine u et v tels que
1)1)(1( vqpku
.
Il en résulte que
.
Oui, mais
)1(1)1)(1( )( qvpqpv xx
, et comme
)(mod1
1pxp
(c’est le petit théorème de
Fermat, p est premier) il en résulte que
)(mod pxxku
.
De même
)(mod qxxku
Il ne reste plus qu’à appliquer le théorème chinois, qui dit qu’un système de congruences
modulo respectivement p et q est équivalent à une seule congruence modulo pq si p et q sont
premiers entre eux, pour en déduire que
)(mod pqxxku
.
Il en résulte que la fonction f est inversible par la fonction g définie par
)(mod)( Nxxg u
et
donc qu’elle est bijective.
D’autre part, pour inverser f, il faut connaître p et q (car on doit Bezouter k et (p-1)(q-1), ce
qui demande à factoriser N, ce qui est un travail redoutable dès que N est grand.
Pour fixer les idées, il est actuellement assez facile (avec un ordinateur standard) de fabriquer
des nombres premiers de 50 chiffres, mais il est impossible en un temps raisonnable de
décomposer en facteurs premiers un nombre de 100 chiffres (produit de deux précédents)
Pourquoi la fonction puissance modulo N perturbe-t-elle les nombres ? C’est parce que, dès
que le résultat dépasse N, on revient à 0. Ce n’est donc pas croissant, comme la fonction
puissance dans .
Exemple avec de petits nombres : prenons p = 7 et q = 11. Alors N = 77, et (p-1)(q-1) = 60.
On peut prendre k = 13.
Pour élever à la puissance 13, on décompose en somme de puissances de 2 : 13 = 8 + 4 +1.
Cherchons le code de 19 :
19 = 19 (mod 77)
192 = 361 = 4x77 + 53 = 53 (mod 77)
194 = 532 = 2809 = 36x77 + 37 = 37 (mod 77)
198 = 372 = 1369 = 17x77+60 = 60 (mod 77)
et 1913 = 198x194x19 = 60x37x19 = 42180 = 547x77 + 61 = 61 (mod 77)
Le code de 19 est donc 61.
Quelle est la réciproque de la puissance 13 ?
Il faut Euclider 60 et 13, puis Bezouter
60 = 4x13 + 8 1 = 5x(60 4x13) 3x13 = 5x60 23x13
13 = 1x8 + 5 1 = 2x8 3x(13 8) = 5x8 3x13
8 = 1x5 + 3 1 = 2x(8 5) 5 = 2x8 3x5
5 = 1x3 + 2 1 = 3 (5 3) = 2x3 - 5
3 = 1x2 + 1 1 = 3 2
L’inverse de 13 est donc –23, c’est à dire 37 (attention, il s’agit ici de congruences modulo
60). Vérifions : 13x37 = 481 = 8x60 + 1.
Il en résulte que pour revenir à 19, il faut élever 61 à la puissance 37 (maintenant, les calculs
se font modulo 77).
La vérification est laissée au lecteur.
3) Preuve du théorème chinois : considérons le système
)(mod
)(mod
qbx
pax
, p et q premiers
entre eux.
On a donc
qbpax
.
Bezoutons p et q : il existe u, v tels que up + vq = 1, donc a = aup + avq et b = bup + bvq.
On a donc aup + avq +
p = bup + bvq +
q ce qui équivaut à p( + (a b)u) = q(
- (a b)v)
Comme p et q sont premiers entre eux, on applique le théorème de Gauss : il existe un entier k
tel que + (a b)u = kq (et
- (a b)v = kp).
On a donc = kq -(a b)u et x = a +
p = a + p(kq -(a b)u) = a(1 up) + bup + kpq, ce qui,
compte tenu du Bezout, donne x = avq + bup + kpq.
On a bien obtenu x unique modulo pq.
Il est facile de voir que la solution obtenue répond à la question.
C’est beau l’algèbre…
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !