Cryptologie RSA IUT de Fontainebleau
Cryptologie RSA Introduction Clé privée Clé publique Clé de session Bases de la cryptologie 1 Le mot cryptographie est un terme générique désignant l ensemble des techniques permettant de chiffrer des messages, c est-à-dire permettant de les rendre inintelligibles sans une action spécifique. Il s agit dans le cas d un texte de transformer les lettres qui composent le message en une succession de chiffres (binaires ou décimaux), puis ensuite de faire des calculs sur ces chiffres pour : d une part les modifier de telle façon à les rendre incompréhensibles. Le résultat de cette modification (le message chiffré) est appelé cryptogramme (en anglais ciphertext) par opposition au message initial, appelé message en clair (en anglais plaintext) ; faire en sorte que le destinataire saura les déchiffrer. Le fait de coder un message de telle façon à le rendre secret s appelle chiffrement (encryption). La méthode inverse, consistant à retrouver le message original, est appelé déchiffrement (decryption). Enfin, on appelle décryptage le fait d essayer de déchiffrer illégitimement le message. 1 Merci à http://www.commentcamarche.net
Cryptologie RSA Introduction Clé privée Clé publique Clé de session Bases de la cryptologie Le chiffrement se fait généralement à l aide d une clef de chiffrement, le déchiffrement nécessite quant à lui une clef de déchiffrement. Il est coutume de noter la clé de chiffrement par e (encryption) et celle de déchiffrement par d (decryption). On distingue généralement deux types de cryptage : à clés symétriques : il s agit de clés utilisées pour le chiffrement ainsi que pour le déchiffrement. à clés asymétriques : une clé différente est utilisée pour le chiffrement et pour le déchiffrement.
Cryptologie RSA Introduction Clé privée Clé publique Clé de session Chiffrement à clés symétriques Le chiffrement symétrique (aussi appelé chiffrement à clé privée ou chiffrement à clé secrète) consiste à utiliser la même clé pour le chiffrement que pour le déchiffrement (e = d). Le chiffrement consiste alors à effectuer une opération entre la clé privée et les données à chiffrer afin de rendre ces dernières inintelligibles. Exemple (chiffrement par XOR) Les messages m et la clé secrète e sont des chaînes binaires. La méthode est basée sur l égalité (m e) e = m (e e) = m 0 = m. On transforme un message m en m e (bit-à-bit) aussi bien pour chiffrer que pour déchiffrer. Par exemple, si m = 1101 et e = 0110 1101 1101 0110 = 1011 1011 0110 = 1101
Cryptologie RSA Introduction Clé privée Clé publique Clé de session Les limites du chiffrement symétrique Toutefois, dans les années 40, Claude Shannon démontra que pour être totalement sûr, les systèmes à clefs privées doivent utiliser des clefs d une longueur au moins égale à celle du message à chiffrer. De plus le chiffrement symétrique impose d avoir un canal sécurisé pour l échange de la clé, ce qui dégrade sérieusement l intérêt d un tel système de chiffrement. Le principal inconvénient d un cryptosystème à clefs secrètes provient donc de l échange des clés. En effet, le chiffrement symétrique repose sur l échange d un secret (les clés). Ainsi, se pose le problème de la distribution des clés : Pour un groupe de n personnes utilisant un cryptosystème à clés secrètes, il est nécessaire de distribuer n (n 1)/2 clés. Supposez alors que le groupe en question compte plusieurs millions de personnes (internet... )
Chiffrement à clés asymétriques Cryptologie RSA Introduction Clé privée Clé publique Clé de session Dans un cryptosystème asymétrique (aussi appelé cryptosystème à clés publiques), les clés existent par paires : Une clé publique e pour le chiffrement. Une clé secrète d pour le déchiffrement. Ainsi, dans un tel système, chaque utilisateur choisit une clé privée dont il est seul connaisseur. A partir de cette clé, il déduit une clé publique qu il met sur un serveur de clés tel qu un annuaire. Lorsqu un utilisateur désire envoyer un message à un autre utilisateur, il lui suffit de chiffrer le message à envoyer au moyen de la clé publique du destinataire. Ce dernier sera en mesure de déchiffrer le message à l aide de sa clé privée (qu il est seul à connaître).
Cryptologie RSA Introduction Clé privée Clé publique Clé de session Le cryptosystème RSA Le premier algorithme de chiffrement à clef publique a été développé par R. Merckle et M. Hellman en 1977. Il fut vite rendu obsolète grâce aux travaux de Shamir, Zippel et Herlestman, de célèbres cryptanalistes. En 1978, l algorithme à clé publique de Rivest, Shamir, et Adelman (d où son nom RSA) apparaît. Cet algorithme est très largement utilisé de nos jours. Voici son principe. Génération des clés pour RSA Un utilisateur de RSA doit générer une clé privée et une clé publique. Il choisit au hasard deux (très) grands nombres premiers p et q et calcule n = pq. Il calcule ϕ(n) = (p 1)(q 1) et choisit un grand nombre e premier à ϕ(n). Il calcule ensuite d = e 1 mod ϕ(n). Il publie alors le couple (n, e) (clé publique) et garde secret d (clé privée) ; il peut ensuite oublier p, q et ϕ(n).
RSA : comment ça marche Cryptologie RSA Introduction Clé privée Clé publique Clé de session Chiffrement/déchiffrement par RSA Soit T le message à envoyer, supposé être une chaîne décimale. On découpe M en morceaux T i de longueur fixe tels que T i < n (il suffit que le nombre de chiffres de T i soit inférieur à celui de n). On transforme chaque T i en S i = Ti e S 1, S 2,... mod n et l on envoie la suite Pour déchiffrer, le destinataire calcule S d i mod n, il obtient alors T i. Si une personne non autorisée intercepte et veut décrypter le message chiffré, elle doit calculer la clé privée d = e 1 mod ϕ(n). Il faut pour cela trouver ϕ(n) = (p 1)(q 1), e étant publique. La seule façon connue de le faire est de calculer p et q, c est-à-dire décomposer n. Or il est actuellement impossible de le faire dans un temps raisonnable si n est très grand, ce qui rend RSA sure.
RSA : exemple Cryptologie RSA Introduction Clé privée Clé publique Clé de session Alice voudrait que tout le monde puisse lui écrire des messages chiffrés. Alice choisit p = 101 et q = 113, donc n = pq = 11413 et ϕ(n) = 100 112 = 11200. Elle choisit ensuite au hasard e = 3533 et vérifie par Euclide que e ϕ(n) = 1 : r q u v Donc 11200 3533 = 1 et 11200 601 5 1. 0 3 3533 528 3 1 0. 1 16 1 = 11200u 7 3533 4603 La dernière égalité se lit 73 7. 19 17 4. 149 3533 ( 4603) 1 (mod 11200), 5 3. 615 2 2. 1994 d où 1 2 u 7 4603 e 1 4603 6597 (mod 11200) La clé publique d Alice est (n, e) = (11413, 3533), et sa clé privée est d = e 1 = 6597.
Cryptologie RSA Introduction Clé privée Clé publique Clé de session RSA : exemple (suite) Lorsque Bob veut envoyer un message M =... 1859726 à Alice : il le découpe en morceaux inférieurs à n : M =... 185 9726 }{{} pour chaque morceau T il calcule S = T e mod n : S = 9726 3533 mod 11413 = 5761 il complète les valeurs obtenues par 0 à gauche jusqu à la longueur de n et les envoie à Alice : Bob... 05761 }{{} Alice S Lorsqu Alice reçoit le cryptogramme de Bob : elle le découpe en morceaux S de longueur égale à celle de n ; elle calcule S d mod n pour retrouver T : 5761 6597 mod 11413 = 9726 T ;
RSA : pourquoi ça marche Théorème Le déchiffrement RSA fonctionne. Démonstration. Cryptologie RSA Introduction Clé privée Clé publique Clé de session Soit 0 T < n et S = T e mod n. Il faut montrer que T = S d mod n. Comme d = e 1 mod ϕ(n), nous avons ed 1 (mod ϕ(n)), donc il existe k > 0 tel que ed = 1 + kϕ(n). On en déduit que S d (T e ) d T ed T 1+kϕ(n) (mod n) Si T p = 1 alors, d après Euler, T 1+kϕ(n) T 1+kϕ(p)ϕ(q) T (mod p) Si p T alors T 0 T 1+kϕ(n) (mod p). Donc, dans tous les cas T 1+kϕ(n) T (mod p). Le même résultat est valable pour q.
RSA : pourquoi ça marche Cryptologie RSA Introduction Clé privée Clé publique Clé de session Démonstration (suite). Notons par X le nombre T 1+kϕ(n). Nous avons donc { X T (mod p) X T (mod q) Comme p q = 1, le théorème chinois implique que le système ci-dessus admet une seule solution X X 0 modulo p q = pq = n. Il est évident que X 0 = T vérifie le système, donc X T 1+kϕ(n) T (mod n) Comme T < n, le théorème est démontrée. Remarque On peut remarquer un default de RSA : sa lenteur. Un autre inconvénient majeur est liée à la difficulté de trouver des grands nombres premiers.
Cryptologie RSA Introduction Clé privée Clé publique Clé de session Clé de session Les algorithmes asymétriques permettent de s affranchir de problèmes liés à l échange de clé via un canal sécurisé. Toutefois, ils restent beaucoup moins efficaces (en temps de calcul) que les algorithmes symétriques. Ainsi, la notion de clé de session est un compromis entre le chiffrement symétrique et asymétrique. Son principe consiste à générer aléatoirement une clé de session de taille raisonnable, et de chiffrer celle-ci à l aide d un algorithme de chiffrement à clef publique (celle du destinataire). Le destinataire est en mesure de déchiffrer la clé de session à l aide de sa clé privée. Ainsi, expéditeur et destinataires sont en possession d une clé secrète qu ils peuvent utiliser pour s envoyer des documents chiffrés à l aide d un algorithme de chiffrement symétrique.
Ce n est pas tout Cryptologie RSA Introduction Clé privée Clé publique Clé de session Nous n avons abordé qu une partie (mathématique) de la cryptologie. Si vous voulez savoir ce qu est une signature numérique, une autorité de certification, le cryptosystème PGP, etc, vous pouvez vous rendre sur http://www.commentcamarche.net/crypto/crypto.php3
RSA : mise en œuvre Cryptologie RSA Mise en œuvre Multiplication Nombres premiers Contraintes Rappel Pour crypter un message numérique à l aide de RSA il faut d abord : choisir deux grands nombres premiers p et q, calculer n = pq et ϕ(n) = (p 1)(q 1) ; choisir un grand entier e < ϕ(n) premier à ϕ(n) et calculer d e 1 mod ϕ(n) ; oublier p, q, ϕ(n), publier (n, e) et garder secret d. Pour crypter un bloc numérique T < n, on calcule S = T e décrypter, on calcule S d mod n. mod n. Pour Nous allons étudier quelques aspects importants de la mise en œuvre de RSA.
Calcul de a c mod n Cryptologie RSA Mise en œuvre Multiplication Nombres premiers Contraintes Commençons par voir comment calculer a c mod n pour utiliser RSA. Vu que les nombres en question ont des centaines de chiffres, l approche brute (calculer a c par c 1 multiplication) est dérisoire : 10 100 multiplications cela dépasse la durée de vie de l univers, et même si on les fait, l univers n a pas assez de place pour stocker le résultat. La première simplification vient du fait que le résultat nous intéresse modulo n on peut donc réduire le produit mod n à chaque étape du calcul. La deuxième astuce permet de minimiser le nombre de multiplications nécessaires, comme le montre l exemple suivant : a 25 = a a 24 = a a 12 a 12 a 12 = a 6 a 6 a 6 = a 3 a 3 a 3 = a a 2 = a a a Il n a donc fallu que 6 multiplications pour calculer a 25.
Algorithme de multiplication Cryptologie RSA Mise en œuvre Multiplication Nombres premiers Contraintes La fonction récursive xmod(a, n, m) calcule a n mod m : si n = 1 retourner a mod m ; sinon, calculer r = xmod(a, n/2, m) et retourner r 2 a }{{} n%2 mod m. 1 ou a Montrons par récurrence sur n que cette fonction calcule bien a n mod m, et que le nombre de multiplications nécessaires ne dépasse pas 2 log 2 n : si n = 1 evident ; sinon, xmod(a, n/2, m) = a n/2 xmod(a, n, m) car n = 2 (n/2) + (n%2). mod m par récurrence, donc ( a n/2) 2 a n%2 a 2 (n/2)+(n%2) a n (mod m) Comme xmod(a, n/2, m) necessite au plus 2 log 2 (n/2) = 2 log 2 n 2 multiplications, il en faut au plus 2 log 2 n 2 + 2 = 2 log 2 n pour calculer xmod(a, n, m). Par exemple, si n 2 256, cela fait 512 multiplications au plus.
Cryptologie RSA Mise en œuvre Multiplication Nombres premiers Contraintes RSA : sécurité La sécurité de RSA repose sur la difficulté de décomposer un très grand nombre entier n = pq en facteurs premiers. La division brute est impensable, car il y a n/ ln n nombres premiers inférieurs à n, donc 2 n/ ln n inférieurs à n. Cela donne 10 47 divisions pour décomposer un nombre à 100 chiffres c est BEAUCOUP. Actuellement, l algorithme le plus rapide est celui du crible sur le corps numérique (NFS, pour Number Fields Sieve ). Il nécessite quand-même une année de travail continu de 1000 machines pour décomposer un nombre difficile de 576 bits (174 digits) ; les nombres de 2048 bits sont hors de la portée pour l instant 2. L accroissement de la puissance du calcul ne met pas RSA en danger, car il suffira d augmenter d autant la longueur des clés. 2 Les laboratoires de RSA (www.rsasecurity.com/rsalabs/, rubrique Challenges) proposent des prix variant de 20000$ (640 bits) à 200000$ (2048 bits) pour la factorisation de certains grands entiers.
Cryptologie RSA Mise en œuvre Multiplication Nombres premiers Contraintes Recherche de très grands nombres premiers Le revers de la médaille est la difficulté de trouver des grands nombres premiers. Ceux utilisés actuellement par RSA ont 256 512 bits (soit 80 160 chiffres décimales). Il y en a plus de 10 150, soit beaucoup plus que le nombre d atomes dans l univers (estimé à 10 84 ), on ne va donc jamais tomber à court de nombres premiers. Si l on choisit au hasard un entier inférieur à n, il aura une probabilité de 1/ ln n d être premier. Il faudra donc faire en moyenne ln n choix avant de trouver un nombre premier (soit seulement 370 essais pour n = 10 160 ). Mais comment le reconnaître, si la factorisation est si difficile?
Cryptologie RSA Mise en œuvre Multiplication Nombres premiers Contraintes Tests probabilistes On utilise pour cela des test probabilistes, qui déterminent avec une très grande fiabilité la nature d un nombre (premier ou composé). La plupart de ces tests sont basés sur les résultats suivants : si p est premier et 0 < a < p alors a p 1 1 (mod p) (Euler) ; si p est premier et x 2 1 (mod p) alors x ±1 (mod p) (TD). A titre d illustration, considérons le test de Lehmann : pour tester si un nombre impair p est premier il faut 1. choisir un nombre aléatoire 0 < a < p (témoin) ; 2. calculer x = a (p 1)/2 mod p ; 3. si x ±1 (mod p) alors p n est pas premier ; sinon, la probabilité que p soit composé est de 50% au plus. Pour justifier ce test, on remarque que, si p est premier, alors x 2 donc x ±1 (mod p). ( a (p 1)/2) 2 a p 1 1 (mod p),
Cryptologie RSA Mise en œuvre Multiplication Nombres premiers Contraintes Exemple : test de Lehmann Un entier p qui passe le test de Lehmann pour 100 témoins indépendants aura donc moins de 1 chance sur 2 100 (soit 10 30 ) d être composé 3. Actuellement il faut juste quelques secondes pour générer un nombre premier de 512 bits à l aide de ce test (un bémol quand-même il n est pas sûr à 100%). Exemple Soit p = 21. Si l on choisit a = 2, alors x 2 (21 1)/2 1024 16 (mod 21) ce qui montre que 21 est composé. Par contre, p = 341 = 11 31 passe le test de Lehmann pour a = 2, mais pas pour a = 3 : 2 (341 1)/2 1, mais 3 (341 1)/2 67 (mod 341) 3 Un tel entier est appelé nombre premier de qualité industrielle.
Cryptologie RSA Mise en œuvre Multiplication Nombres premiers Contraintes Exemple : test de Rabin-Miller Un test plus performant est celui de Rabin-Miller : pour un candidat donné p et un témoin a < p écrire p = 2 d q + 1, où q est impair ; si a d ±1 (mod p) ou r < s, a 2r d 1 (mod p) alors p est dit a-pseudo-premier ; sinon, p est composé. Par exemple, p = 341 qui passe Lehmann avec a = 2, est stoppé par Rabin-Miller : 341 = 2 2 85 + 1, et 2 85 32 ±1 (mod 341), 2 2 85 1 1 (mod 341) En général, un nombre a-pseudo-premier a une probabilité au moins 3/4 d être premier (contre 1/2 de Lehmann). Mieux encore, il y a des fortes raisons de croire qu un entier n qui est a-pseudo-premier pour tout a < 2(ln n) 2, est vraiment premier. Cela fait un peu plus de 10c 2 témoins à interroger pour un nombre à c chiffres.
Cryptologie RSA Mise en œuvre Multiplication Nombres premiers Contraintes Contraintes Les clés de RSA sont (e, n) et d, les valeurs de p, q et ϕ(n) ne sont généralement pas communiquées à l utilisateur. On peut donc se demander s il peut les retrouver. Théorème Connaissant (n, e) et d, on peut factoriser n. Démonstration. Comme n n est pas premier, on peut trouver un témoin a et un entier k tels que z = a k ±1 (mod n) et z 2 1 (mod n) (test de Rabin-Miller). Donc z 2 1 0 (mod n), d où n (z 2 1). Que valent alors n (z 1) et n (z + 1)? Les valeurs possibles sont 1, p, q, n. Mais n ne divise pas z 1, sinon on aurait z 1 (mod n) (idem pour z + 1). De même, n (z 1) 1, sinon n serait diviseur de z + 1. En conclusion, un des deux PGCD vaut p et l autre q. Corollaire Deux utilisateurs ne peuvent pas avoir le même n dans leur clé publique.
Contraintes Cryptologie RSA Mise en œuvre Multiplication Nombres premiers Contraintes Exemple Soit n = 11 31 = 341. En prenant 2 pour témoin : z = 2 85 32 (mod 341), z 2 = 2 2 85 1 (mod 341) Nous obtenons donc et qui sont les facteurs premiers de n. 341 (z 1) = 341 31 = 31 341 (z + 1) = 341 33 = 11