Cryptosystème asymétrique - RSA Rivest Shamir Adleman Université de Rennes 1 Algèbre & Arithmétique 1 6 décembre 2011
Plan 1- Utilité du RSA Exemple d utilisation de RSA avec la messagerie 2- Fondement de la cryptographie asymétrique 3- Fonctionnement du RSA 3.1- Génération des clés 3.2- Chiffrement et déchiffrement 3.3- Exemple pratique avec maple 4- Pourquoi cela fonctionne? 4.1- Vérifions qu on retrouve le message initial 4.2- RSA est-il sûr? 5- Inconvénients du RSA
Utilisation du RSA RSA du nom de ses auteurs est un algorithme de chiffrement "asymétrique" utilisé dans les applications et services demandant de la sécurité. Actuellement, on utilise RSA dans : les banques les messageries sur internet mail (voir exemple) les achats et paiements en ligne etc. Le chiffrement asymétrique est un chiffrement qui utilise une clé publique et une clé secrète (on dit aussi algorithme à clé publique). Les algorithmes de chiffrement asymétrique n ont commencé à vu qu à partir de 1978 avec le RSA, grâce aux études théoriques de Diffie et de Hellman en 1976.
Exemple d utilisation de RSA avec la messagerie
Exemple d utilisation de RSA avec la messagerie On clique sur l icône gauche de la barre des tâches puis sur plus d informations. On peut aussi appuyer sur Ctrl+I, puis sur l onglet sécurité.
Exemple d utilisation de RSA avec la messagerie On clique sur la commande Afficher le certificat
Exemple d utilisation de RSA avec la messagerie On clique sur l onglet Détails
Exemple d utilisation de RSA avec la messagerie Dans le 2ième cadre, on clique sur Algorithme clé publique du sujet Dans le 3ième cadre, on peut lire Chiffrement PKCS #1 RSA
Exemple d utilisation de RSA avec la messagerie Dans le deuxième cadre, on clique sur Clé publique du sujet Dans le 3ième cadre, on lit la clé publique de 2048 bits, écrit en base hexadécimale.
Fondement de la cryptographie asymétrique La cryptographie asymétrique est inventée théoriquement par Diffie et Hellman, en 1976, mais ils étaient incapables de donner des exemples. La cryptographie asymétrique, ou cryptographie à clé publique est fondée sur l existence de fonctions à sens unique. Une fonction à sens unique est une application bijective qui peut être aisément calculer et difficilement inverser : f : A B telle qu il est facile de calculer f (a), a A, mais très difficile à calculer f 1 (b), b B. Difficile à calculer signifie que le temps pour calculer l inverse est presque infinie (largement supérieur à 1000 ans).
Fonctionnement du RSA La fonction a sens unique utilisée dans le RSA est la fonction puissance modulaire qu on appelle aussi exponentiation modulaire : f : A B, x x e (mod N) et f 1 : B A, x x d (mod N) Il est clair que si N, e et d sont petits (10 chiffres, voir même jusqu à 100 chiffres), on peut facilement inverser. Ainsi le RSA peut se décomposer en 3 étapes : (1) trouver les bons nombres N, e et d : la génération des clés, (2) calculer f (x), pour x A : le chiffrement, (3) calculer f 1 (x), pour x B : le déchiffrement.
Génération des clés Trouver les nombres N, e et d se fait en plusieurs étapes : 1. choisir p et q, deux nombres premiers "grands" et distincts, 2. calculer le module de chiffrement : N = pq, 3. calculer l indicatrice d Euler de n : ϕ(n) = (p 1)(q 1), 4. choisir un entier "petit" e premier avec ϕ(n) 5. calculer d : l inverse de e (mod ϕ(n)) Remarques : L étape 1 est possible grâce au test de primalité à l étape 1, "grand" signifie que log 2 (N) 1024 bits à l étape 4, l entier e = 2 16 + 1 = 65537 (actuellement) à l étape 5, l entier d existe grâce à Bezout. La clé publique est (N, e) et la clé secrète est d.
Chiffrement et déchiffrement On choisit les ensembles A = B = {1,..., N}. Le chiffrement peut être décomposer en deux étapes : 1. choisir un entier a A (a est le message) 2. calculer C = a e (mod N) Le déchiffrement se fait en une seule étape : 1. calculer M = C d (mod N) Remarque : Calculer une puissance (ou une exponentiation) de la forme a k (mod N) est très facile. Pour cela, on décompose k en base 2, ce qui coûte 2 log 2 (k) opérations.
Exemple pratique avec maple # Génération des clés # génération des nombres premiers MyPrime := proc(x) local p; p := rand(x)(); while isprime(p) = false do p:=p+1; # appelé encore rand prendrait beaucoup de temps end do; return p; end proc;
Exemple pratique avec maple # Génération des clés # génération des nombres premiers p := MyPrime(2 1024); q := MyPrime(2 1024); # module - l indicatrice d Euler et exposant de chiffrement N := p*q; PHI := (p-1)*(q-1); e := 2 16+1; # exposant de déchiffrement igcdex(e,phi, d, v ); # on vérifie Bézout et calcule d e*d+v*phi; d := d mod PHI;
Exemple pratique avec maple # Génération des clés # génération des nombres premiers p := MyPrime(2 1024); q := MyPrime(2 1024); # module - l indicatrice d Euler et exposant de chiffrement N := p*q; PHI := (p-1)*(q-1); e := 2 16+1; # exposant de déchiffrement igcdex(e,phi, d, v ); # on vérifie Bézout et calcule d e*d+v*phi; d := d mod PHI; # Chiffrement : a := rand(n)();# on choisit un message C := a e mod N; # ce calcul est trop coûteux, alors solution : C := a & e mod N; # Déchiffrement et vérification M := C & d mod N; evalb(m = a);
Vérifions qu on retrouve le message initial D abord le théorème d Euler, pour tout a premier avec N, on a a ϕ(n) 1 (mod N). Donc, pour retrouver le message initial, on calcule : C d (a e ) d a ed (mod N). Or d est l inverse de e(mod ϕ(n)), c-a-d il existe k Z tel que Donc ed + kϕ(n) = 1 ed = 1 kϕ(n). C d a ed a 1 kϕ(n) a a kϕ(n) a (a ϕ(n) ) k a( mod N).
RSA est-il sûr? Connaissant simplement la clé publique (N, e), peut-on trouver la clé privé d, en un temps raisonnablement court? Pour calculer d, il suffit de connaître ϕ(n) (non publique). La meilleur méthode pour calculer ϕ(n) est de factoriser N. La factorisation d un entier est très coûteux en calcul, sauf si on utilise un ordinateur quantique. Par exemple, la méthode naïve consistant à trouver les diviseurs de N coûte 10 30 années pour une clé N de 400 bits en effectuant 10 10 opérations par seconde. En 2011, le plus grand supercalculateur, basé au Japon, peut faire jusqu à 10 16 opérations par seconde avec 88128 processeurs de 2GHz composés de 8 cœurs chacun.
Inconvénients du RSA On a deux inconvénients du RSA, lié à la taille de la clé : a) lenteur quand on veut chiffrer et déchiffrer un nombre important de données (communications téléphoniques,...) b) pour plus de sécurité, il faut augmenter la taille de la clé (problème surtout avec des matériaux disposant de peu de ressources : smartphone, tablette, mini-ordinateur, etc.) Pour chiffrer un nombre important de données, on utilise des algorithmes symétriques qui utilise une seule clé privée pour chiffrer et pour déchiffrer, c est le cas de l AES. Pour éviter d augmenter la clé de RSA, il existe d autres alternatives, comme celles liées au problème du logarithme discret : si l on donne a et b, trouver k N tel que a k = b?