Origine : |
Le premier algorithme de cryptage à clef publique a été développé par R. Merckle et M. Hellman en 1977. Il fut vite obsolète grâce aux travaux de Shamir, Zippel et Herlestman, de célèbres cryptanalyseurs.
En 1978, l'algorithme à clé publique de Rivest, Shamir et Adelman (R.S.A.) apparaît. Il sert encore au début du XXIème siècle à protéger les codes nucléaires des armées américaines et soviétiques...
Mécanisme : |
L’algorithme du système R.S.A. peut se résumer à 5 étapes :
1) Choisir deux grands nombres premiers p et q de plus de 80 chiffres (en dessous, le code est vulnérable)
2) Calculer n=p.q et f=(p-1).(q-1)
3) Choisir un nombre e premier avec f et n (i.e. tel que pgcd(e,f.n)=1)
4) Trouver d tel que
5) Le message à crypter est converti en blocs de chiffres , tous inférieurs à n. Pour chiffrer le bloc , on calcule modulo n (les 2 paramètres de cryptage sont donc e et n).
Pour déchiffrer le bloc , on calcule modulo n (les 2 paramètres de décryptage sont donc n et d, et donc, à cause de la définition de d, on doit connaître f, donc p et q).
Le chiffrement et le déchiffrement sont l’inverse
l’un de l’autre. En effet :
Or, donc , où est l'indicateur d'Euler. Par le théorème d'Euler, on a donc . Comme , on a , et on retrouve bien le message original.
La clé publique est la paire (e, n) et la clé secrète est d, donc aussi p et q.
Conditions d'utilisation optimale du R.S.A. : |
Il faut savoir qu’un mauvais choix des paramètres p, q, d et e peut rendre le système relativement vulnérable. Pour cela, les concepteur du système ont proposé un certain nombre de règles :
- Il faut choisir n = p.q de taille supérieure ou égale à 512 bits (155 chiffres décimaux environ).
- Il faut prendre p et q de taille sensiblement égale, mais pas trop proches en valeur absolue.
- Il faut choisir, si possible, des nombres premiers p et q, tels que p-1, p+1, q-1 et q+1 possèdent de grands facteurs premiers.
La sécurité du système RSA se base sur le fait qu’il y a une impossibilité pratique de factoriser un grand nombre de quelques centaines de chiffres en un temps raisonnable : Selon R.S.A., factoriser un nombre à 200 chiffres demande 4 milliards d’années de calcul machine. Factoriser un nombre de 500 chiffres demande 1025 ans. La robustesse du R.S.A. apparaît donc liée à la difficulté de la factorisation avec les méthodes actuelles.
Pour « casser » un message chiffré par la méthode RSA, sachant qu’on ne sait pas calculer les racines e-ièmes modulo n de celui-ci, on s’attaquera à la méthode de détermination des clés. En l’examinant, on devine facilement comment forcer le codage : le choix des clés s’effectuant à partir de la formule e.d=K.f+1, on essaie de déterminer la clé secrète (d) à partir de la clé publique en résolvant l’équation. Pour la résoudre, il suffit d’avoir f. Pour obtenir f, il faut le décomposer en ses facteurs premiers p et q.
Cependant, il n'a jamais été démontré que le code ne pouvait être cassé sans la connaissance de p et q !
Exemple 1: |
p = 3, q = 11, n = 3 x 11, f = (11–1).(3–1) = 20. On choisit d=7 (7 et 20 sont bien premiers entre eux).
e = 3 car
On choisit un message, par exemple SUZANNE :
Avant chiffrement |
Chiffré |
Après chiffrement |
||||
Message |
Bloc numérique Bi |
Bi3 |
Bi3 mod 33 |
B'i7 |
B'i7 mod 33 |
Symbolique |
S |
19 |
6859 |
28 |
13492928512 |
19 |
S |
U |
21 |
9261 |
21 |
1801088541 |
21 |
U |
Z |
26 |
17576 |
20 |
1280000000 |
26 |
Z |
A |
01 |
1 |
1 |
1 |
01 |
A |
N |
14 |
2744 |
5 |
78125 |
14 |
N |
N |
14 |
2744 |
5 |
78125 |
14 |
N |
E |
05 |
125 |
26 |
8031810176 |
05 |
E |
Remarque : Bien sûr, il est fortement déconseillé de prendre des blocs d'une lettre auquel cas le R.S.A devient un cryptage de substitution !
Exemple 2 :
Voir feuille de calcul Maple.