1 Les inventeurs du système RSA

publicité
Année 2015-2016
Notions de base du chiffrement
SNIR 1
RSA
Cours
Le système RSA est un moyen puissant de chiffrer des données personnelles. Aujourd'hui, il
nous entoure sans même que nous le sachions. Il est dans nos cartes bancaires, nos
transactions, nos messageries, nos logiciels...
Pour commencer, voyons d'abord par qui il a été inventé. Nous finirons par étudier son
fonctionnement général. ?
1 Les inventeurs du système RSA
Le système de chiffrement RSA a été inventé par trois mathématiciens : Ron Rivest, Adi
Shamir et Len Adleman, en 1977 (On retrouve le sigle RSA dans les initiales des noms des
inventeurs).
Ce système de chiffrement est beaucoup utilisé dans le e-commerce (paiement en ligne, etc...),
mais aussi dans les cartes bleues, dans les logiciels (exemple : OpenSSH que nous utiliserons
en TP), etc...
2 Création des clés
Pour créer notre clé publique il nous faut choisir deux nombres premiers.
Un nombre premier est un nombre supérieur ou égal à 2 qui possède deux diviseurs positifs
distincts et uniquement deux (1 et lui-même). On peut prendre pour exemple 2, 3, 7, 53, 89...
Il existe une infinité de nombres premiers.
Soit P et Q, ces deux nombres premiers.
Je prends P = 89 et Q = 97
Snir 1
2015/2016
page 1/3
Ensuite, on va prendre un autre nombre, N, tel que : N=P×Q
Donc ici N = 89 x 97 = 8633
On pose M=(P−1)×(Q−1).
Ce nombre "M" est appelé indicatrice d'Euler, il correspond au nombre d'entiers naturels (0,
1, 2, 3, etc...) inférieurs ou égaux à N qui lui sont premiers.
Ici M = (53 - 1) x (97 - 1) = 8448
Pour créer notre clé publique, il ne nous reste plus qu'à factoriser M+1 soit 8449
8449 = 7 * 71 * 17
On prendra pour la clé publique N = 8633 et A = 71
et pour la clé privée 8633 et 7*17 soit N = 8633 et B = 119
2 Cryptage d'un message
Les messages sont en général des chaînes de caractères, mais peuvent facilement être
traduits sous forme numérique (ce n'est pas là qu'intervient le crytage).
L'expéditeur traduit ainsi son message en une succession d'entiers inférieurs à N.
exemple toto = (116, 111, 116, 111) ici on utilise le code ASCII de chaque lettre pour faire
la traduction.
Pour chacun des entiers M, l'expéditeur envoie non pas M mais l'entier
C = M^A modulo N
exemple pour M = 116
M = 111
C = (116 ^ 71) modulo 8633 = 5778
C = (111^ 71) modulo 8633 = 1689
L'expéditeur envoie finalement le message (5778 , 1689, 5778 , 1689)
3 Décryptage d'un message
Le destinataire calcule pour chaque entier reçu,
M = C^B modulo N
exemple pour C = 5778 M = (5778^119) modulo 8633 = 116
le code ASCII 116 correspond à la lettre t
Remarque : le crytage et le décryptage se font avec la même fonction, seul la clé change.
Snir 1
2015/2016
page 2/3
Le secret du codage est en possession du destinataire qui possède la clé privée. La clé
publique ne permet pas de retrouver la clé privée car N est infactorisable. On parle de
système asymétrique à clé publique.
Reprenons l'exemple précédent, nous devons calculer C = M^A modulo N
L'entier M est inférieur à N mais peut être très grand, de même que A. Le nombre M^A
risque donc d'être gigantesque. Et donc ne peut pas être calculé directement sur un
calculatrice basique.
Cependant le calcul peut être fait en plusieurs étapes
11671 = 1161 x 1162 x 1164 x 11664
car 71 peut être décomposé en
1+2+4+64
116^1 modulo 8633 = 116
116^2 modulo 8633 = 4823
116^4 modulo 8633 = 4823^2 modulo 8633 = 4027
116^8 modulo 8633 = 4027^2 modulo 8633 = 3955
116^16 modulo 8633 = 3955^2 modulo 8633 = 7662
116^32 modulo 8633 = 7662^2 modulo 8633 = 1844
116^64 modulo 8633 = 1844^2 modulo 8633 = 7567
(116*4823*4027*7567) modulo 8633 = 5778
Exercice 1
Avec l'aide de votre calculatrice, refaire les mêmes calcules pour déterminer la clé publique
et privée si les deux nombres premiers choisis sont P=11 et Q=23
Crypter avec la clé publique le mot « toto » (116,111,116,111)
Décrypter avec la clé privée.
Exercice 2
Ecrire en C une fonction pour calculer
exposée ci dessus.
M^A modulo N en utilisant le méthode de calcul
Tester avec les clés RSA suivantes :
N = 67 030 883 744 037 259
A = 1 620 174 477 434 881
B = 47 637 278 212 000 129
Ne me demandez pas comment je les ai trouvées c'est un secret.
4 Conclusion
Le système RSA est très efficace et pratiquement inviolable (avec un entier n très grand)
même si toutes les données du cryptage sont connues (car n est infactorisable) C'est un joli
paradoxe, non
Snir 1
2015/2016
page 3/3
Téléchargement