Introduction à la Cryptographie 5. Cryptographie asymétrique
Transcription
Introduction à la Cryptographie 5. Cryptographie asymétrique
Introduction à la Cryptographie 5. Cryptographie asymétrique (1) E. Thomé (cours et TD) Équipe Caramba, INRIA Nancy Telecom Nancy, 2A TRS – 2016 http://www.loria.fr/~thome/teaching/2016-esial-crypto/ Plan Mise en œuvre de crypto symétrique Clé publique RSA Propriétés de sécurité Difficulté de la factorisation 2 / 31 Créer un canal confidentiel générateur de clés canal authentifié et confidentiel K Alice K E M canal public D C C Bob M Eve On a besoin du canal authentifié et confidentiel au préalable de l’envoi d’un nombre élevé de messages 3 / 31 Créer un canal authentifié générateur de clés canal authentifié et confidentiel K K Alice MAC MAC M M’ c canal public (M,c) (M’,c’) c’ non c’’ oui =? Bob M’ M’ Charlie On utilise le canal authentifié et confidentiel préalablement au message 4 / 31 Observations Deux défauts majeurs du contexte symétrique : Difficulté de l’échange de clés initial. Symétrie : si A et B connaissent K , il peuvent faire la même chose avec. Pas possible de signer Une clé par couple (A, B). n2 clés pour n participants. 5 / 31 Plan Mise en œuvre de crypto symétrique Clé publique RSA Propriétés de sécurité Difficulté de la factorisation 6 / 31 Crypto à clé publique La cryptographie à clé publique rend possible le contexte où : Alice dispose d’une clé de chiffrement kA , publique. Bob dispose d’une clé de déchiffrement kB , secrète. Cette asymétrie rend notamment possible la signature. 7 / 31 Outils La cryptographie à clé publique repose sur la difficulté de problèmes mathématiques. En connaissant kA , il est possible de chiffrer. En connaissant kB , il est possible de déchiffrer. Le problème difficile est : découvrir kB à partir de kA : calculatoirement hors de portée (mais possible en un temps infini). Autre problèmes, pas forcément équivalents (peut-être plus faciles) : Déchiffrer un message chiffré avec kA . Distinguer le chiffré de oui et le chiffré de non. 8 / 31 Outils La cryptographie à clé publique repose sur la difficulté de problèmes mathématiques. En connaissant kA , il est possible de chiffrer. En connaissant kB , il est possible de déchiffrer. Le problème difficile est : découvrir kB à partir de kA : calculatoirement hors de portée (mais possible en un temps infini). Autre problèmes, pas forcément équivalents (peut-être plus faciles) : Déchiffrer un message chiffré avec kA . Distinguer le chiffré de oui et le chiffré de non. (le chiffrement doit être non-déterministe) 8 / 31 Reposer sur un problème mathématique (1) Alice envoie un message chiffré à Bob. Alice message Opération facile chiffré Canal public clé publique Bob message clé privée Opération facile chiffré Reposer sur un problème mathématique (1) Alice envoie un message chiffré à Bob. Alice message Opération facile Canal public clé publique Bob message clé privée chiffré Opération facile chiffré Opération très difficile Eve message 9 / 31 Reposer sur un problème mathématique (2) Bob vérifie un message signé par Alice. Alice message clé privée Opération facile signature Canal public clé publique Bob message ok Opération facile signature pas ok Reposer sur un problème mathématique (2) Bob vérifie un message signé par Alice. Alice message clé privée Opération facile Canal public clé publique signature Autre message X Bob message Opération facile signature Opération très difficile Eve ok pas ok Signature valide de X 10 / 31 Outils Les problèmes mathématiques couramment rencontrés en crypto. Pour les plus fréquents : Problème de la factorisation d’entiers (cryptosystème RSA). Problème du calcul de logarithme discret dans les groups (échange de clés). Mais aussi : Problèmes liés à la théorie des codes correcteurs. Recherche de vecteurs courts dans des réseaux de Zn . etc, etc. 11 / 31 S’appuyer sur un pb mathématique = ? L’idéal : prouver que si E casse le cryptosystème S, alors il sait résoudre un problème très difficile H. Rêve extrême : si E casse S, alors il sait résoudre toute instance d’un problème NP-complet H donné (pour une taille fixée). Alors : Soit P = NP (tant mieux pour lui). Soit on a montré que le E a du pain sur la planche. 12 / 31 S’appuyer sur un pb mathématique = ? L’idéal : prouver que si E casse le cryptosystème S, alors il sait résoudre un problème très difficile H. Rêve extrême : si E casse S, alors il sait résoudre toute instance d’un problème NP-complet H donné (pour une taille fixée). Alors : Soit P = NP (tant mieux pour lui). Soit on a montré que le E a du pain sur la planche. C’est beau de rêver, mais on n’a pas ça. On a : Si E sait résoudre le problème H, il casse S, H est une instance d’un problème difficile. En l’état actuel des connaissances, on ne sait résoudre H qu’en s’attaquant au problème difficile. 12 / 31 Systèmes étudiés On présente : Le cryptosystème RSA. Le protocole de Diffie-Hellman. 13 / 31 Plan Mise en œuvre de crypto symétrique Clé publique RSA Propriétés de sécurité Difficulté de la factorisation 14 / 31 Le chiffrement RSA N entier, et p, q (premiers) tels que N = pq. φ(N) = (p − 1)(q − 1) = # (Z/NZ)∗ . e premier avec φ(N). L’entier e est inversible modulo φ(N). d calculé tel que de ≡ 1 mod φ(N). Alice clé publique : (N, e) Bob clé secrète : (p, q, d) message : m mod N x = me mod N m = x d mod N x d ≡ med ≡ m1+kφ(N) ≡ m mod N. 15 / 31 RSA : exemple C’est plus simple au tableau. 16 / 31 Signature RSA Pour signer un message m : Bob calcule s = md mod N. Alice vérifie que s e ≡ m mod N. 17 / 31 Preuve de RSA On a ed ≡ 1 mod φ(N), et φ(N) = (p − 1)(q − 1). En particulier, on a (p − 1) | ed, donc med = m1+(p−1)×cst. . Petit théorème de Fermat : mp−1 ≡ 1 mod p. Donc med ≡ m mod p. Si jamais p | m, alors p | med , donc med ≡ m mod p. Idem pour q, donc pq | (med − m), . Que peut faire un espion ? S’il sait factoriser N, il a gagné. S’il ne peut pas, est-il impossible de calculer √ e x mod N ? √ Factoriser N est la meilleure approche connue pour e . √ Hypothèse RSA : e x mod N est difficile si N assez grand. 18 / 31 Le choix des clés pour RSA Un module RSA est un nombre composé N. Un module RSA ne sert qu’à une seule personne. Il faut définir une procédure pour générer des clés. Choisir un nombre premier p aléatoire de n/2 bits. Choisir un nombre premier q aléatoire de n/2 bits. Choisir e, calculer d tel que de ≡ 1 mod (p − 1)(q − 1). Publier N , conserver p, q . Le choix du nombre de bits n est crucial. 19 / 31 Juste une primitive La fonction RSA c = me mod N n’est pas un cryptosystème, c’est une primitive. Reste à détailler : Quelques propriétés désagréables. Principes de mise en œuvre. Choix des clés. 20 / 31 Propriétés désagréables de RSA Tautologie : sous l’hypothèse RSA, la fonction RSA possède la propriété sens unique . Étant donné un chiffré, il est difficile de retrouver le clair associé. La primitive RSA a la particularité d’être un morphisme : m1e m2e ≡ (m1 m2 )e mod N. On peut arguer que m1 m2 n’est pas un message valide. Néanmoins inacceptable, surtout si des preuves sont requises. En outre : un message m est associé à un unique chiffré c. Facile de distinguer le chiffré de oui et le chiffré de non. Le résultat du chiffrement doit être variable ; Cf plus loin dans le contexte du padding . 21 / 31 Plan Mise en œuvre de crypto symétrique Clé publique RSA Propriétés de sécurité Difficulté de la factorisation 22 / 31 Objectifs possibles pour l’attaquant Étant donné un système asymétrique et une paire kA , kB . Différents objectifs pour l’attaquant : Cassage total : retrouver kB à partir de kA . Inversion : déchiffrer (une partie d’) un message chiffré avec kA (avec bonne probabilité). Attaque sémantique : distinguer le chiffré de oui et le chiffré de non (avec proba > 21 + ). 23 / 31 Moyens possibles pour l’attaquant Principe général des lois de Kerckhoffs : l’attaquant est fort, il n’a juste pas la clé (secrète). Plusieurs contextes d’attaque. Soit E l’attaquant. Attaques à chiffrés seuls : E connaı̂t une liste de chiffrés. Attaques à clairs connus : E connait une liste de paires (mi , ci ). Attaque à clairs choisis : E peut obtenir le chiffré ci correspondant à des messages qu’il choisit. 24 / 31 Moyens possibles pour l’attaquant Principe général des lois de Kerckhoffs : l’attaquant est fort, il n’a juste pas la clé (secrète). Plusieurs contextes d’attaque. Soit E l’attaquant. Quelques capacités built-in liées à la clé publique : Attaques à chiffrés seuls : E connaı̂t une liste de chiffrés. Attaques à clairs connus : E connait une liste de paires (mi , ci ). Attaque à clairs choisis : E peut obtenir le chiffré ci correspondant à des messages qu’il choisit. Scénarios plus ambitieux : Attaque à chiffrés choisis : E peut demander le déchiffrement d’un certain nombre de chiffrés ci . Attaque à chiffrés choisis adaptative : E peut ajuster ses requêtes en fonction des réponses, et de son objectif. 24 / 31 Terminologie barbare On donne des petits noms aux objectifs et aux scénarios d’attaque. Objectifs : OW (one-wayness) : le cryptosytème résiste à l’inversion. IND (indifférentiabilité) : résiste à l’attaque sémantique. Attaques : CPA : Chosen Plaintext Attack. CCA : Chosen Ciphertext Attack. CCA2 : Adaptative Chosen Ciphertext Attack. Un cryptosystème est : OW-CPA si l’inversion résiste à une attaque CPA. IND-CCA2 si l’indifférentiabilité résiste à une attaque CCA2. Relations : x-CCA2 ⇒ x-CCA ⇒ x-CPA, IND-y ⇒ OW-y . 25 / 31 OW-CPA = pas assez Tautologie : la fonction RSA possède la propriété i.e. la primitive RSA est OW-CPA sens unique . . On veut à la place du IND-CCA2 (plus fort !). C’est l’objet du padding . 26 / 31 Détails de mise en œuvre Le schéma de padding : composant essentiel du chiffrement RSA. Point de départ : primitive qui fait peu de choses. À l’arrivée : fonction de chiffrement avec des propriétés fortes. Schéma de padding OAEP : X || Y = OAEP(m, r ), c = f (X || Y ). Les fonctions de hachage jouent ici un rôle capital. Normalisé dans des standards. Effectivement utilisé. 27 / 31 Plan Mise en œuvre de crypto symétrique Clé publique RSA Propriétés de sécurité Difficulté de la factorisation 28 / 31 Choix des clés Hypothèse RSA : √ e x mod N est difficile si N assez grand. On n’est même pas sûr que c’est aussi dur que de factoriser N. Il faut au moins choisir N assez grand pour qu’il soit difficile de le factoriser. Si on veut de la sécurité dans la durée, il faut avoir une idée de la difficulté de la factorisation dans le futur. Record de factorization : N de 768 bits, en 2010. RSA-768=1 230 186 684 530 117 755 130 494 958 384 962 720 772 853 569 595 334 792 197 322 452 151 726 400 507 263 657 518 745 202 199 786 469 389 956 474 942 774 063 845 925 192 557 326 303 453 731 548 268 507 917 026 122 142 913 461 670 429 214 311 602 221 240 479 274 737 794 080 665 351 419 597 459 856 902 143 413 = 33 478 071 698 956 898 786 044 169 848 212 690 817 704 794 983 713 768 568 912 431 388 982 883 793 878 002 287 614 711 652 531 743 087 737 814 467 999 489 × 36 746 043 666 799 590 428 244 633 799 627 952 632 279 158 164 343 087 642 676 032 283 815 739 666 511 279 233 373 417 143 396 810 270 092 798 736 308 917. 29 / 31 Algorithmes pour factoriser N Pour factoriser un entier N de n bits. Divisions successives : [−∞] 30 / 31 Algorithmes pour factoriser N Pour factoriser un entier N de n bits. √ Divisions successives : O( N) = O(2n/2 ) [−∞] 30 / 31 Algorithmes pour factoriser N Pour factoriser un entier N de n bits. √ Divisions successives : O( N) = O(2n/2 ) √ Méthode ρ : O( 4 N) = O(2n/4 ) [−∞] [1975] 30 / 31 Algorithmes pour factoriser N Pour factoriser un entier N de n bits. √ Divisions successives : O( N) = O(2n/2 ) √ Méthode ρ : O( 4 N) = O(2n/4 ) √ CFRAC : exp O( n) , sous-exponentiel ! [−∞] [1975] [1975] 30 / 31 Algorithmes pour factoriser N Pour factoriser un entier N de n bits. √ Divisions successives : O( N) = O(2n/2 ) √ Méthode ρ : O( 4 N) = O(2n/4 ) √ CFRAC : exp O( n) , sous-exponentiel ! √ Crible Quadratique exp O( n) [−∞] [1975] [1975] [1982] 30 / 31 Algorithmes pour factoriser N Pour factoriser un entier N de n bits. √ Divisions successives : O( N) = O(2n/2 ) √ Méthode ρ : O( 4 N) = O(2n/4 ) √ CFRAC : exp O( n) , sous-exponentiel ! √ Crible Quadratique exp O( n) √ Crible Algébrique exp O( 3 n) [−∞] [1975] [1975] [1982] [1990] 30 / 31 Difficulté de la factorisation 1999 : factorisation 512 bits. 2010 : factorisation 768 bits. Avec le crible algébrique, la taille de clé n qu’il faut pour que l’effort de l’attaquant soit égal à 2s est : n = O(s 3 ). La puissance de calcul croı̂t ± exponentiellement. . . . . . donc s croı̂t linéairement. . . . . . donc la taille de clé pour RSA monte, monte, monte. Aujourd’hui : l’ANSSI ne valide pas l’usage de clés RSA de moins de 2048 bits dans les produits crypto. Exception notable : les cartes bancaires (960 bits au moins jusque fin 2013). 31 / 31