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