Introduction à la Cryptologie 3I024 Seconde partie Guénaël Renault CALSCI LIP6/UPMC Février 2016 Part I Intermède : outils de chiffrement moderne UPMC - Licence Info - Crypto - 2015/16 2/141 Plan 1 OpenSSL 2 Histoire contemporaine UPMC - Licence Info - Crypto - 2015/16 3/141 Bibliothèque implémentant la cryptographie OpenSSL Toolbox regroupant libcrypto pour les algos cryptographiques et libssl implémentant le protocole Transport Layer Security (TLS) ainsi que son prédécesseur Secure Sockets Layer (SSL). +interface terminal openssl programmé en C ⇒ bug possible (Heartbleed 2014). UPMC - Licence Info - Crypto - 2015/16 4/141 Exemple utilisation OpenSSL Obtenir l’ensemble des chiffrements possibles 1 2 3 4 5 6 7 8 9 10 11 12 # openssl list-cipher-algorithms AES-128-CBC AES-128-CBC-HMAC-SHA1 AES-128-CBC-HMAC-SHA256 ... CAMELLIA-128-CBC CAMELLIA-128-CFB CAMELLIA-128-CFB1 ... SEED-CFB SEED-ECB SEED-OFB Chiffrer/déchiffrer avec AES-128 (en mode CBC) et encodage Base64 1 2 3 # shachaopenssl enc -aes128 -base64 -in cours1.pdf -out cours1.pdf.enc enter aes-128-cbc encryption password: Verifying - enter aes-128-cbc encryption password: 4 5 6 # openssl enc -d -aes128 -base64 -in cours1.pdf.enc > cours1.pdf enter aes-128-cbc decryption password: UPMC - Licence Info - Crypto - 2015/16 5/141 Plan 1 OpenSSL 2 Histoire contemporaine UPMC - Licence Info - Crypto - 2015/16 6/141 Controverses sur le chiffrement des données Le chiffrement a empêché la détection des attentats de Paris, selon la NSA FBI et Apple s’affrontent sur le chiffrement de l’iPhone UPMC - Licence Info - Crypto - 2015/16 7/141 Part II Problématique : L’échange des clés à l’essor de l’informatique UPMC - Licence Info - Crypto - 2015/16 8/141 Plan 3 Diffie-Helmann-Merkle 4 Le DLP en toute généralité 5 Résolution du DLP en toute généralité 6 DLP sur les corps finis UPMC - Licence Info - Crypto - 2015/16 9/141 L’informatique et ses réseaux de communication se mettent en place 1950 Les premiers ordinateurs commerciaux, cryptographie basée sur la taille des clés, Théorie de Shannon. 1970 Réseaux numériques, standardisation du DES (chiffrement symétrique) par la NSA 1970 L’ordinateur devient un outil pour toutes les entreprises Problème : l’échange des clés UPMC - Licence Info - Crypto - 2015/16 10/141 Problématique Un nombre énorme de clés à gérer et échanger ! Bob Alice Henry Fred Gil Eve Ines Dan Jean Carl Ken +Il faut un moyen sûr d’échanger chaque clé au préalable ! UPMC - Licence Info - Crypto - 2015/16 11/141 Directions !in Cryptogra Échanger une clé sans jamais New se rencontrer Invited Paperde +En 1976, Diffie, Hellman et Merkle publient le premier schéma d’échange de clés à l’aide de la notion de clé publique Whitfield Diffiequ’ils and Martin E. Hellm énoncèrent. Abstract Two kinds of contemporary developments in cryptography are examined. Widening applications of teleprocessing have given rise to a need for new types of cryptographic systems, which minimize the need for secure key distribution channels and supply the equivalent of a written signature. This paper suggests ways to solve these currently open problems. It also discusses how the theories of communication and computation are beginning to provide the tools to solve cryptographic problems of long standing. 1 INTRODUCTION We stand today on the brink of a revolution in cryptography. The development of cheap digital hardware has freed it from the design limitations of mechanical computing and brought the cost of high grade cryptographic devices down to where UPMC - Licence Info - Crypto - 2015/16 communications o raphy to insure pri communicating pa one else. This is do secure channel su private conversatio tance is a common unrealistic to expe long enough for ke The cost and dela is a major barrier to large teleproces Section III prop information over p mising the security enciphering and d and D, such that co 12/141 Échanger une clé sans jamais se rencontrer ! Soit p un premier et g un élément de Z/pZ bien choisi. Ces deux éléments sont connus de tous. Les entiers a et b doivent être tenus secrets +Nécessite deux transactions sur un canal non sécurisé pour l’échange de la clé commune K. UPMC - Licence Info - Crypto - 2015/16 12/141 Coût de la mise en pratique (cryptographie) +En tout, les deux entités ont à calculer 4 exponentiations mod p. En utilisant un algorithme d’exponentiation modulaire rapide (voir cours précédent), le coût total dépend de la taille du module p. Complexité échange de clé par Diffie-Hellman-Merkle Si l’on souhaite échanger une clé de taille ` il faudra faire O(4`3 ) opérations binaires. UPMC - Licence Info - Crypto - 2015/16 13/141 Sécurité de cette échange (cryptanalyse) Etant donné y = ex ∈ R Il est facile de calculer x (il suffit de calculer un log dans R) UPMC - Licence Info - Crypto - 2015/16 14/141 Sécurité de cette échange (cryptanalyse) Etant donné 192 = gx mod 449 (g = 3 générateur du groupe cyclique) Il est difficile de calculer x UPMC - Licence Info - Crypto - 2015/16 14/141 Sécurité de cette échange (cryptanalyse) Etant donné 192 = gx mod 449 (g = 3 générteur du groupe cyclique) Il est difficile de calculer x +Il s’agit du problème du calcul du logarithme discret (DLP). UPMC - Licence Info - Crypto - 2015/16 14/141 Plan 3 Diffie-Helmann-Merkle 4 Le DLP en toute généralité 5 Résolution du DLP en toute généralité 6 DLP sur les corps finis UPMC - Licence Info - Crypto - 2015/16 15/141 Le DLP : vision générale Définition Soit (G, ◦) un groupe fini et g ∈ G. Le problème du logarithme discret (noté DLP) dans le sous-groupe H = hgi de G est défini comme suit: Étant donné h ∈ H Comment retrouver k ∈ N tel que h = g ◦ · · · ◦ g (k fois) ? Notations Pour g ∈ G et t ∈ N on notera l’opération d’exponentiation de g en t par : [t]g = g ◦ · · · ◦ g, t fois On peut généraliser à t ∈ Z en posant [−t]g l’inverse de [t]g. UPMC - Licence Info - Crypto - 2015/16 16/141 Le DLP : vision générale Définition Soit (G, ◦) un groupe fini et g ∈ G. Le problème du logarithme discret (noté DLP) dans le sous-groupe H = hgi de G est défini comme suit: Étant donné h ∈ H Comment retrouver k ∈ N tel que h = g ◦ · · · ◦ g (k fois) ? Notations Pour g ∈ G et t ∈ N on notera l’opération d’exponentiation de g en t par [t]g = g ◦ · · · ◦ g, t fois. Cette notations permet d’homogénéiser les notations, par exemple : Si (G, ×) on a [t]g = g × · · · × g = gt Si (G, +) on a [t]g = g + · · · + g = t · g UPMC - Licence Info - Crypto - 2015/16 16/141 Le DLP : vision générale Définition Soit (G, ◦) un groupe fini et g ∈ G. Le problème du logarithme discret (noté DLP) dans le sous-groupe H = hgi de G est défini comme suit: Étant donné h ∈ H Comment retrouver k ∈ N tel que h = g ◦ · · · ◦ g (k fois) ? Définition Le logarithme discret en base g de h est défini par k = logg (h) avec h = [k]g UPMC - Licence Info - Crypto - 2015/16 16/141 Plan 3 Diffie-Helmann-Merkle 4 Le DLP en toute généralité 5 Résolution du DLP en toute généralité 6 DLP sur les corps finis UPMC - Licence Info - Crypto - 2015/16 17/141 Brute force attack Problématique Étant donnés : un groupe fini cyclique H = hgi dans lequel on peut calculer facilement; un élément h dans H. On cherche un entier t tel que h = [t]g. +On peut se limiter à t ∈ {1, . . . , #H}. Recherche exhaustive On testera 2log(#H) valeurs de t différentes. La complexité de résolution du DLP s’exprime en fonction de la taille de #H (la taille en bit du groupe H) UPMC - Licence Info - Crypto - 2015/16 18/141 Exemples ou le DLP est facile Groupe additif modulaire Ici H = (Z/nZ, +) le groupe modulaire additif. On a H = hgi et donc pgcd(g, n) = 1. Groupe additif : h = [t]g = t · g mod n Ici on peut calculer facilement logg (h). Preuve de la résolution du DLP dans ce cas 1 pgcd(g, n) = 1 ⇒ on peut calculer g−1 mod n par Bézout 2 on retrouve t facilement : logg (h) = h · g−1 mod n La complexité binaire de cette attaque est quadratique en la taille de n (qui est bien la taille de #H). +Pour résoudre facilement un DLP, on peut essayer de se ramener à cet exemple. UPMC - Licence Info - Crypto - 2015/16 19/141 Résolution du DLP par transfert additif Transfert additif Soit H le groupe cyclique choisi pour support au DLP. Il faut pour un tel transfert: Isomorphisme entre H et Z/|H|Z qu’il soit explicite et que l’on puisse calculer efficacement l’image/image inverse d’un élément par ce dernier Le DLP sera facile dans H si l’on connait un tel isomorphisme. (On envoie le problème dans Z/nZ avec l’isomorphisme, on le résout grâce à Bézout et on remonte le résultat dans H toujours grâce à l’isomorphisme.) UPMC - Licence Info - Crypto - 2015/16 20/141 Complexité générique Définition On appelle groupe générique (ou en boite noire) un groupe dont on ne connaît pas la structure mais avec lequel on peut réaliser des calculs. En particulier, si (H = hhi, ◦) et h ∈ H sont donnés en boite noire, tous les calculs de la forme [a]h ◦ [b]g sont possibles et on peut tester les égalités. Théorème [Shoup 97] La p résolution du DLP dans un groupe générique nécessite au moins |H| opérations dans H Existe-t-il un algorithme optimal dans le cas générique? +Simplification : connaissance de n = |H|. UPMC - Licence Info - Crypto - 2015/16 21/141 Baby-Step Giant-Step de Shanks : idée générale Soit n l’ordre du groupe H = hgi et h ∈ H. +l’entier t = logg (h) vérifie 1 < t < n. √ Division euclidienne par s = b nc + 1; t = q · s + r avec 0 6 q, r < s Recherche exhaustive sur q et r d’une collision h = [t]g = [q · s + r]g ⇒ h ◦ [−q · s]g = [r]g et h ◦ [−r]g = [q · s]g UPMC - Licence Info - Crypto - 2015/16 22/141 BSGS : imagée dans (Z/77Z, +) avec g = 2 et h = 11 h g e UPMC - Licence Info - Crypto - 2015/16 23/141 BSGS : imagée dans (Z/77Z, +) avec g = 2 et h = 11 h 8 7 6 5 4 3 2 1 g e UPMC - Licence Info - Crypto - 2015/16 23/141 BSGS : imagée dans (Z/77Z, +) avec g = 2 et h = 11 h 8 7 6 5 4 3 2 1 g e [−1 · s]g ◦ h [−2 · s]g ◦ h UPMC - Licence Info - Crypto - 2015/16 23/141 BSGS : imagée dans (Z/77Z, +) avec g = 2 et h = 11 [−4 · s]g ◦ h h 8 7 6 [−3 · s]g ◦ h 5 4 3 2 1 g e [−1 · s]g ◦ h UPMC - Licence Info - Crypto - 2015/16 23/141 BSGS : deux tableaux Input : Le générateur g du groupe H d’ordre n et h ∈ H \ {e}. Output : Un entier 0 < t < n tel que h = [t]g. √ s : = b nc + 1 ; f o r i : = 1 to s do BS[i] : = [i]g ; / / Tableau de Baby−Steps GS[i] : = [i]([−s]g) ◦ h ; / / Tableau de Giant−Steps end f o r ; / / Recherche C o l l i s i o n T : = S o r t ( BS c a t GS ) ; f o r i : = 1 to s do i f T[i] == T[i + 1] then break end i f ; end f o r ; r e t u r n s× Index ( T[i] , GS ) + Index ( T[i] , BS ) UPMC - Licence Info - Crypto - 2015/16 24/141 BSGS : table de hachage Input : Le générateur g du groupe H d’ordre n et h ∈ H \ {e}. Output : Un entier 0 < t < n tel que h = [t]g. √ s : = b nc + 1 ; f o r i : = 1 to s do Hash[[i]g] : = i ; / / Table de hachage des Baby−Steps end f o r ; i := 0 ; γ := h ; while t r u e do / / Giant−Steps i f not ( Hash[γ] == NULL ) then r e t u r n i × s+ Hash[γ] ; else i := i + 1 γ : = γ ◦ [−s]g end i f end while UPMC - Licence Info - Crypto - 2015/16 25/141 BSGS : complexités +Complexité donnée en fonction de log(#H) = log(n) Deux tableaux vs Table de hachage √ √ 1 Complexité calcul : O( nlog( n)) = O(2 2 log(n) log(n)) vs 1 O(2 2 log(n) ) √ Complexité mémoire : O( n) Remarques Le premier algorithme générique de complexité optimale √ Nécessite une place mémoire de taille n pour la table de hachage Nécessite la connaissance de n = |H| mais on peut s’en passer Ils existent des variantes de cet algorithme qui permettent de descendre la complexité en mémoire mais pas en calcul (rho de Pollard en particulier) UPMC - Licence Info - Crypto - 2015/16 26/141 Conclusion : complexité DLP groupe générique +Le BSGS est optimal ! +De plus, on peut utiliser la décompositon de n pour résoudre encore plus efficacement (attaque basée sur le CRT, voir plus loin). Pohlig-Hellman Dans le cas d’un groupe générique H d’ordre = pe11 pe22 · · · pekk il est P n√ possible de résoudre le DLP dans H en O( ei pi ) calculs dans G. Corollaire important Si l’on souhaite que le DLP soit difficile, il faut choisir un groupe H d’ordre possédant au moins un très grand facteur premier. UPMC - Licence Info - Crypto - 2015/16 27/141 Échange DH en pratique Création du groupe support au DLP 1 2 3 4 5 # openssl genpkey -genparam -algorithm DH -out dhp.pem .....................+........................+....... ....................................................+. ... .+...........................................++*++*++* Ce à quoi ressemble ce groupe ? 1 2 3 4 5 6 # cat dhp.pem -----BEGIN DH PARAMETERS----MIGHAoGBALoEHOMliM6Wr/Yg9aJNbSCmEOms9K5cDmu/n3G51PXrwp+gD7T14F+A as0LixXgOSWHNuoxRk0ZYXpfhq4okI+I3geGbiJ6qIgFDvFqx/2ujFwB9LmeKsrK mOvvgxkwmlzeOyYaZ2sPlNHNxGRDNNmmxKXtKt2zWuJhd9eKqUa7AgEC -----END DH PARAMETERS----- UPMC - Licence Info - Crypto - 2015/16 28/141 Échange DH en pratique Meilleur affichage 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 # openssl pkeyparam -in dhp.pem -text -----BEGIN DH PARAMETERS----MIGHAoGBALoEHOMliM6Wr/Yg9aJNbSCmEOms9K5cDmu/n3G51PXrwp+gD7T14F+A as0LixXgOSWHNuoxRk0ZYXpfhq4okI+I3geGbiJ6qIgFDvFqx/2ujFwB9LmeKsrK mOvvgxkwmlzeOyYaZ2sPlNHNxGRDNNmmxKXtKt2zWuJhd9eKqUa7AgEC -----END DH PARAMETERS----DH Parameters: (1024 bit) prime: 00:ba:04:1c:e3:25:88:ce:96:af:f6:20:f5:a2:4d: 6d:20:a6:10:e9:ac:f4:ae:5c:0e:6b:bf:9f:71:b9: d4:f5:eb:c2:9f:a0:0f:b4:f5:e0:5f:80:6a:cd:0b: 8b:15:e0:39:25:87:36:ea:31:46:4d:19:61:7a:5f: 86:ae:28:90:8f:88:de:07:86:6e:22:7a:a8:88:05: 0e:f1:6a:c7:fd:ae:8c:5c:01:f4:b9:9e:2a:ca:ca: 98:eb:ef:83:19:30:9a:5c:de:3b:26:1a:67:6b:0f: 94:d1:cd:c4:64:43:34:d9:a6:c4:a5:ed:2a:dd:b3: 5a:e2:61:77:d7:8a:a9:46:bb generator: 2 (0x2) UPMC - Licence Info - Crypto - 2015/16 29/141 Échange DH en pratique Création des clés privées/publiques à partir de ce groupe 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 # openssl genpkey -paramfile dhp.pem -out dhkeyA.pem # openssl pkey -in dhkeyA.pem -text -noout DH Private-Key: (1024 bit) private-key: 58:dc:d8:6d:ac:54:90:70:ba:0d:fb:19:07:07:ab: 19:ad:3c:fe:01:2e:45:42:2c:df:9a:1a:44:d7:70: 1c:6e:2c:70:ff:fc:ad:df:57:da:88:07:68:ed:c4: 8a:ad:0d:c7:62:b2:8e:26:fd:4e:43:96:23:89:ea: 29:de:29:55:8e:c0:a6:1f:c8:7f:6f:89:31:f9:c3: 71:11:e9:3b:04:d1:a9:71:24:a2:88:b6:57:a3:fe: e8:8a:15:56:c9:a3:d9:0d:3a:62:d3:e3:f3:cd:a4: d0:f0:ee:b3:81:91:c8:aa:6f:cd:4f:f0:9f:91:c2: 78:2e:4e:41:7f:b7:96:6d public-key: 06:75:e8:cd:d2:6f:9f:b1:ea:1f:61:a0:df:99:d3: d1:a8:a8:8b:e2:0b:5e:0a:15:cb:b7:24:f0:5d:67: c7:b7:0e:aa:64:7c:c6:25:d0:a1:83:c4:85:ec:81: c2:e0:3e:e7:bb:27:af:eb:cc:20:d0:f6:d2:d2:40: c8:e5:30:3d:f4:52:2f:13:96:e8:64:88:8f:bc:cf: 34:e8:7d:02:8f:a0:93:bc:72:8e:a2:60:5b:48:ff: 98:dc:41:f1:a5:5e:22:77:c8:ca:3e:ea:12:45:a9: b6:ba:2f:d6:16:12:ad:96:79:c3:f3:d4:87:10:53: 71:ab:88:e9:85:89:4d:05 UPMC - Licence Info - Crypto - 2015/16 30/141 Échange DH en pratique Alice extrait sa clé publique pour l’envoyer à Bob 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 # openssl pkey -in dhkeyA.pem -pubout -out dhpubA.pem # openssl pkey -pubin -in dhpubA.pem -text -----BEGIN PUBLIC KEY----MIIBIDCBlQYJKoZIhvcNAQMBMIGHAoGBALoEHOMliM6Wr/Yg9aJNbSCmEOms9K5c Dmu/n3G51PXrwp+gD7T14F+Aas0LixXgOSWHNuoxRk0ZYXpfhq4okI+I3geGbiJ6 qIgFDvFqx/2ujFwB9LmeKsrKmOvvgxkwmlzeOyYaZ2sPlNHNxGRDNNmmxKXtKt2z WuJhd9eKqUa7AgECA4GFAAKBgQC27+c7AdgF/cGLbQJaLp1Hv6uZSy/t/MHm5zNy v1fDZY0xYKf4gE+G4d00bPgDC3OshOwAHVKDVBLIRdBPv0MgKpGiabaajHT4b8Wn q7DBMetqhaIvAEdNPhQ+1gfFmwSiun4eRYIUd/wdSc3WW29GkqHQCh1hQu/TXQmJ CkBhDQ== -----END PUBLIC KEY----DH Public-Key: (1024 bit) public-key: 00:b6:ef:e7:3b:01:d8:05:fd:c1:8b:6d:02:5a:2e: 9d:47:bf:ab:99:4b:2f:ed:fc:c1:e6:e7:33:72:bf: 57:c3:65:8d:31:60:a7:f8:80:4f:86:e1:dd:34:6c: f8:03:0b:73:ac:84:ec:00:1d:52:83:54:12:c8:45: d0:4f:bf:43:20:2a:91:a2:69:b6:9a:8c:74:f8:6f: c5:a7:ab:b0:c1:31:eb:6a:85:a2:2f:00:47:4d:3e: 14:3e:d6:07:c5:9b:04:a2:ba:7e:1e:45:82:14:77: fc:1d:49:cd:d6:5b:6f:46:92:a1:d0:0a:1d:61:42: ef:d3:5d:09:89:0a:40:61:0d prime: UPMC - Licence Info - Crypto - 2015/16 31/141 Échange DH en pratique Alice construit la clé partagée à partir de la clé publique envoyée par Bob 1 2 3 4 5 6 7 8 9 10 11 # openssl pkeyutl -derive -inkey dhkeyA.pem -peerkey dhpubB.pem -out secret.bin # xxd secret.bin 0000000: 5767 46d2 bc4d 2081 4a85 c570 94fb 9af0 WgF..M .J..p.... 0000010: e528 dc62 3b63 80a8 ab27 5b2f e2a1 6e72 .(.b;c...’[/..nr 0000020: 0095 b3ed b2e0 c91b c455 25c1 7193 67e6 .........U%.q.g. 0000030: e0c4 7f1d 0272 eec3 3227 6df4 82ab 70f9 .....r..2’m...p. 0000040: 4ada 3e72 16b4 3506 6b30 51c3 b56c ea96 J.>r..5.k0Q..l.. 0000050: 7554 790f acb0 f045 4ac5 f6e5 356a 891c uTy....EJ...5j.. 0000060: 68c9 1b89 fbea 293d 8847 b586 a3da d95f h.....)=.G....._ 0000070: b451 1a8e caa3 c1c4 6a2f 74b3 ebf1 7955 .Q......j/t...yU Bob fait de même de son côté et il doit obtenir la même clé! UPMC - Licence Info - Crypto - 2015/16 32/141 Plan 3 Diffie-Helmann-Merkle 4 Le DLP en toute généralité 5 Résolution du DLP en toute généralité 6 DLP sur les corps finis UPMC - Licence Info - Crypto - 2015/16 33/141 Rappel DLP DLP Soit (G, ◦) un groupe fini et g ∈ G. Le problème du logarithme discret (noté DLP) dans le sous-groupe H = hgi de G est défini comme suit: Étant donné h ∈ H Comment retrouver k ∈ N tel que h = g ◦ · · · ◦ g (k fois) ? Quelles sont les bons choix de groupes G ? (i.e. + ceux qui assurent une certaine sécurité et suffisamment d’efficacité). UPMC - Licence Info - Crypto - 2015/16 34/141 Corps finis : le support classique pour DLP DLP Soit (G, ◦) un groupe fini et g ∈ G. Le problème du logarithme discret (noté DLP) dans le sous-groupe H = hgi de G est défini comme suit: Étant donné h ∈ H Comment retrouver k ∈ N tel que h = g ◦ · · · ◦ g (k fois) ? Théorème [Shoup 97] La p résolution du DLP dans un groupe générique nécessite au moins |H| opérations dans H es Instanciation En pratique le groupe G doit être spécifié (instancié). En particulier le résultat ne plus s’appliquer directement. Mais on souhaite que le groupe utilisé ait la même propriété qu’un groupe générique en terme de sécurité. UPMC - Licence Info - Crypto - 2015/16 35/141 Corps premiers et corps finis : Définitions Corps premiers D’après l’étude que nous avons faite sur les quotients F = Z/NZ; nous savons que lorsque N est premier alors F est un corps. On les appelle les corps premiers et on les note Fp = Z/pZ (tous les corps finis de cardinal un nombre premier p sont isomorphes à Fp ). Corps Finis Nous verrons, plus loin dans le cours, qu’il est toujours possible de construire des corps Fq de cardinal fini q si et seulement si q est une puissance q = pk d’un nombre premier p. Ils sont construits à partir des corps premiers. L’entier p est appelé caractéristique du corps fini Fq . +Dans tout ce qui suit, on pourra, dans une première lecture, on peut remplacer Fpk par Fp (k = 1) pour faciliter la compréhension. UPMC - Licence Info - Crypto - 2015/16 36/141 Corps premiers et corps finis : Propriétés Groupe multiplicatif d’un corps fini L’ensemble F× des inversibles de Fpk muni de la multiplication est un pk groupe. Il est d’ordre pk − 1 (seul 0 n’est pas inversible dans un corps). Groupe cyclique et son générateur Le groupe F× est cyclique. Il existe donc α ∈ F× tel que αi 6= 1 pour pk pk tout 0 < i < pk − 1 et vérifiant k hαi = {1 = α0 , α1 , α2 , . . . , αp −1 = 1} = F× . pk Un tel élément α est appelé élément primitif du corps Fpk . UPMC - Licence Info - Crypto - 2015/16 37/141 Éléments primitifs : Propriétés Fermat et Euler Soit p un entier premier. On a ap−1 = 1 mod p pour tout entier a non nul. Et plus généralement aϕ(n) = 1 mod n pour tout a premier avec un entier quelconque n. Généralisation (Corollaire du théorème de Lagrange) Pour tout élément a d’un groupe G de cardinal m (appelé aussi ordre de G) et d’élément neutre e. Comme l’ordre de a est un diviseur de m, on a [m]a = e +À partir de ce résultat on obtient facilement ceux de Fermat et Euler UPMC - Licence Info - Crypto - 2015/16 38/141 Éléments primitifs : Propriétés Généralisation (Corollaire du théorème de Lagrange) Pour tout élément a d’un groupe G de cardinal m (appelé aussi ordre de G) et d’élément neutre e. Comme l’ordre de a est un diviseur de m, on a [m]a = e Corollaires Lagrange (voir TD) : propriétés élément primitif Soit a un élément non nul d’un corps fini Fpk Si a n’est pas primitif alors il existe d un diviseur de pk − 1 tel que ad = 1 Si a est primitif il en est de même pour ai avec i premier avec pk − 1. Il existe donc ϕ(pk − 1) éléments primitifs distincts dans Fpk UPMC - Licence Info - Crypto - 2015/16 38/141 Corps finis et DLP DLP sur Fpk G est le groupe multiplicatif d’un corps fini Fpk . G = F× est cyclique (on peut donc prendre G = H). pk Exponentiation modulaire efficace (voir cours précédent et TD/TME) Il n’existe pas d’algorithme de complexité polynomiale pour résoudre ce DLP Transfert additif et grand facteur premier 1 2 Isomorphisme φ : F× → Z/(pk − 1)Z. Mais pas d’algo connu pour pk l’expliciter : aussi difficile que le DLP. pk − 1 doit posséder un grand facteur premier (attaque par CRT). UPMC - Licence Info - Crypto - 2015/16 39/141 Corps finis et DLP : BSGS de Shanks p = 809 on veut calculer log3 525. Ici H ' Z/(p − 1)Z et donc s = 29. Baby-steps: (j, 525 × (3j )−1 mod p) (j = 0, . . . , 28): ( 0 , 525 ) ( 1 , 175 ) ( 2 , 328 ) ( 3 , 379 ) ( 4 , 396 ) ( 5 , 132 ) ( 6 , 44 ) ( 7 , 554 ) ( 8 , 724 ) ( 9 , 511 ) ( 10 , 440 ) ( 11 , 686 ) ( 12 , 768 ) ( 13 , 256 ) ( 14 , 355 ) ( 15 , 388 ) ( 16 , 399 ) ( 17 , 133 ) ( 18 , 314 ) ( 19 , 644 ) ( 20 , 754 ) ( 21 , 521 ) ( 22 , 713 ) ( 23 , 777 ) ( 24 , 259 ) ( 25 , 356 ) ( 26 , 658 ) ( 27 , 489 ) ( 28 , 163 ) Giant-steps: (j, 3j∗s mod p) (j = 0, . . . , 28): ( 0 , 1 ) ( 1 , 99 ) ( 2 , 93 ) ( 3 , 308 ) ( 4 , 559 ) ( 5 , 329 ) ( 6 , 211 ) ( 7 , 664 ) ( 8 , 207 ) ( 9 , 268 ) ( 10 , 644 ) ( 11 , 654 ) ( 12 , 26 ) ( 13 , 147 ) ( 14 , 800 ) ( 15 , 727 ) ( 16 , 781 ) ( 17 , 464 ) ( 18 , 632 ) ( 19 , 275 ) ( 20 , 528 ) ( 21 , 496 ) ( 22 , 564 ) ( 23 , 15 ) ( 24 , 676 ) ( 25 , 586 ) ( 26 , 575 ) ( 27 , 295 ) ( 28 , 81 ) +t = s × 10 + 19 = 309 UPMC - Licence Info - Crypto - 2015/16 40/141 Corps finis et DLP : Index Calculus +Algorithme le plus efficace pour résoudre le DLP dans les corps finis (sous exponentiel et moins gourmand en mémoire). Calcul d’indice Décomposition selon une base finie de facteurs premiers Recherche de relations à support dans cette base Résolution de systèmes linéaires gigantesques 2048 bits est le minimum pour un bon niveau de sécurité du DLP sur les corps finis premiers. Les corps de petites caractéristiques sont faibles depuis 2013 (voir cours sur extensions corps finis). +Étudié dans la spécialité SFPN du Master Info UPMC. UPMC - Licence Info - Crypto - 2015/16 41/141 Conclusion : DLP sur les corps finis Première utilisation de la cryptographie asymétrique pour résoudre le problème de l’échange de clé La sécurité repose sur le problème du logarithme discret problème difficile génériquement et qui reste suffisamment difficile lorsqu’il est instancié à l’aide de corps finis bien choisis (meilleure attaque de complexité sous-exponentielle) Ça n’est pas parce que le problème (maths) sous-jacent est difficile que la sécurité est complètement assurée. Notamment il faut analyser les failles possibles du protocole utilisant la brique cryptographique ! UPMC - Licence Info - Crypto - 2015/16 42/141 Attaque de l’échange de clé Diffie-Hellman-Merkle UPMC - Licence Info - Crypto - 2015/16 43/141 Attaque de l’échange de clé Diffie-Hellman-Merkle UPMC - Licence Info - Crypto - 2015/16 43/141 Attaque de l’échange de clé Diffie-Hellman-Merkle UPMC - Licence Info - Crypto - 2015/16 43/141 Attaque de l’échange de clé Diffie-Hellman-Merkle Attaque Man In the Middle Comment authentifier son interlocuteur au moment du premier échange? UPMC - Licence Info - Crypto - 2015/16 43/141 Attaque de l’échange de clé Diffie-Hellman-Merkle Comment authentifier son interlocuteur au moment du premier échange? Autre solution ? UPMC - Licence Info - Crypto - 2015/16 43/141 Part III Chiffrement à Clé Publique UPMC - Licence Info - Crypto - 2015/16 44/141 Plan 7 La trappe et ElGamal 8 RSA 9 Chiffrement à Clé Publique et Authentification 10 Implémentation efficace de RSA 11 Cryptanalyse de RSA 12 Fractions continues(ées) et attaque de Wiener 13 Utilisation de RSA dans l’Embarqué et sa Cryptanalyse par Canaux Auxiliaires 14 Protocole RSA dans des cartes bancaires (ancien protocole B0 utilisé avant 2004) UPMC - Licence Info - Crypto - 2015/16 45/141 Idée Générale : La trappe de Diffie-Hellman-Merkle +Outre le problème de l’échange des clés privées, Le nombre croissant d’échanges augmente le nombre de clés secrètes nécessaires ce qui rajoute un nouveau problème. +En 1975 Diffie, Hellman et Merkle proposent les grandes lignes de leur idée théorique pour éviter ce problème. Définition d’une fonction avec trappe Une fonction F : X → Y est à sens unique avec trappe, si : F est à sens unique, i.e. elle est difficile à inverser, facile à calculer. La connaissance d’une information supplémentaire, appelée la trappe, rend, pour tout y ∈ Im(F). le calcul de x ∈ X tel que F(x) = y réalisable en temps polynomial. Clé publique : F permet de chiffrer Clé secrète : la trappe permet de déchiffrer UPMC - Licence Info - Crypto - 2015/16 46/141 Premier exemple de chiffrement à clé publique ElGamal 1985 Ce cryptosystème est basé sur le DLP. L’espace des messages est représenté par le groupe G, ◦. Alice tire aléatoirement k et calcule h = [k]g Alice publie H = hgi et h et conserve secrètement k Chiffrement : Pour envoyer x ∈ G à Alice, Bob choisit t ∈ {1, . . . , |H|} aléatoirement et ne le publie pas. Il calcule y1 = [t]g et y2 = x ◦ [t]h et envoie le couple (y1 , y2 ) à Alice. Déchiffrement : Alice calcule y2 ◦ [−1]([k]y1 ) et retrouve x. +Le DLP est supposé difficile dans G, ◦ UPMC - Licence Info - Crypto - 2015/16 47/141 Equivalence DLP, Diffie-Hellman-Merkle, ElGamal ? Attention ! Le DLP est, a priori, plus fort que les problèmes de Diffie-Hellman-Merkle et ElGamal. La résolution du DLP entraine la résolution de Diffie-Hellman-Merkle La résolution du DLP entraine la résolution de ElGamal Aucune des deux réciproques n’est connue ! +Il existe peut être des algorithmes qui résolvent plus efficacement Diffie-Hellman-Merkle et/ou ElGamal que le DLP ! UPMC - Licence Info - Crypto - 2015/16 48/141 ElGamal sur les corps finis Exemple d’échange ElGamal : Alice choisit G = H = Z/pZ× avec p = 2579 et g = 2 qu’elle publie. Elle garde secret k = 765 et publie aussi β = 2765 mod 2579 = 949 Bob veut transmettre x = 1299 à Alice. Il choisit t aléatoirement t = 853 et calcule y1 = 2853 mod p = 435 puis y2 = 1299 × (949853 ) mod p = 2396 et les envoie à Alice. Elle reçoit donc (435, 2396) et calcule alors : x = 2396 × (435765 )−1 mod 2579 = 1299 pour retrouver le message de Bob ! UPMC - Licence Info - Crypto - 2015/16 49/141 Plan 7 La trappe et ElGamal 8 RSA 9 Chiffrement à Clé Publique et Authentification 10 Implémentation efficace de RSA 11 Cryptanalyse de RSA 12 Fractions continues(ées) et attaque de Wiener 13 Utilisation de RSA dans l’Embarqué et sa Cryptanalyse par Canaux Auxiliaires 14 Protocole RSA dans des cartes bancaires (ancien protocole B0 utilisé avant 2004) UPMC - Licence Info - Crypto - 2015/16 50/141 Rivest, Shamir, Adleman +1977 première instance d’un cryptosystème à clé publique : RSA. UPMC - Licence Info - Crypto - 2015/16 51/141 Rivest, Shamir, Adleman UPMC - Licence Info - Crypto - 2015/16 51/141 Rivest, Shamir, Adleman RSA Basé sur la difficulté de calculer une racine e-ième mod un entier N de factorisation inconnue Si on sait factoriser facilement alors ce problème se résout tout aussi facilement. Mais ATTENTION ce ne sont pas des problèmes polynomialement équivalents. UPMC - Licence Info - Crypto - 2015/16 51/141 Rivest, Shamir, Adleman RSA Soient p et q deux nombres premiers et n = pq. On choisit deux entiers e, d tels que ed = 1 mod ϕ(n). L’application F(n,e) : Z/nZ → Z/nZ définie par x 7→ xe mod n F est bien à sens unique, difficulté basée sur le calcul de la racine e-ieme modulaire. La trappe est la connaissance de d (ou de manière équivalente p et q). +on chiffre en faisant xe mod n on déchiffre en calculant yd mod n Preuve : On a |Z/nZ× | = ϕ(n) = (p − 1)(q − 1) ⇒ ed = 1 + k × ϕ(n)... Les messages qui ne sont pas inversibles mod n sont dangereux! UPMC - Licence Info - Crypto - 2015/16 51/141 Plan 7 La trappe et ElGamal 8 RSA 9 Chiffrement à Clé Publique et Authentification 10 Implémentation efficace de RSA 11 Cryptanalyse de RSA 12 Fractions continues(ées) et attaque de Wiener 13 Utilisation de RSA dans l’Embarqué et sa Cryptanalyse par Canaux Auxiliaires 14 Protocole RSA dans des cartes bancaires (ancien protocole B0 utilisé avant 2004) UPMC - Licence Info - Crypto - 2015/16 52/141 Signer un message / Authentification +La signature permet d’authentifier l’expéditeur d’un message Problème de l’authentification Étant donné un message m et sa signature s, on doit être capable de vérifier l’expéditeur de m à partir de données publiques. +Les problèmes RSA et DLP peuvent être utilisés à cet usage. UPMC - Licence Info - Crypto - 2015/16 53/141 Signer avec RSA +La signature permet d’authentifier l’expéditeur d’un message La signature RSA Soit N = pq un entier RSA et (e, d) un couple d’exposants de chiffrement/déchiffrement choisis par l’expéditeur. L’expéditeur publie N et d Un message m ∈ (Z/NZ)× envoyé par l’expéditeur aura pour signature sm = me mod N Le destinataire recevra le couple (m, s) et authentifiera l’expéditeur à partir ses clés publiques (N, d) en vérifiant m = sdm mod N C’est l’acte de chiffrer qui devient la brique secrète dans le cadre de la signature. UPMC - Licence Info - Crypto - 2015/16 54/141 Fonctions de hachage Problème signature RSA : la signature est de la taille du message ! Fonction de hachage cryptographique Une fonction de {0, 1}∗ dans [0, 2t − 1] (avec t = 160, 256, 512 etc) est dite de hachage si elle vérifie difficile à inverser (construire un message ayant une signature donnée) difficile de reconstruire un second message de même signature (seconde préimage) la probabilité de trouver deux messages de même signature est très faible (collision) Exemples : MD5, SHA1, SHA2 (SHA-256, SHA-512), SHA3,... +Permet de vérifier l’intégrité d’un fichier (paquets linux par exemple) +Plutôt que signer un message, on signe son empreinte après application d’une fonction de hachage. UPMC - Licence Info - Crypto - 2015/16 55/141 Échange de clé et Authentification Comment authentifier son interlocuteur au moment du premier échange? Autre solution ? UPMC - Licence Info - Crypto - 2015/16 56/141 Échange de clé et Authentification Comment authentifier son interlocuteur au moment du premier échange? Autre solution ? Signer les clés publiques ? UPMC - Licence Info - Crypto - 2015/16 56/141 Échange de clé et Authentification Comment authentifier son interlocuteur au moment du premier échange? Autre solution ? Repousse le problème à l’authentification des clés publiques qui permettent de signer !?!!? UPMC - Licence Info - Crypto - 2015/16 56/141 Plan 7 La trappe et ElGamal 8 RSA 9 Chiffrement à Clé Publique et Authentification 10 Implémentation efficace de RSA 11 Cryptanalyse de RSA 12 Fractions continues(ées) et attaque de Wiener 13 Utilisation de RSA dans l’Embarqué et sa Cryptanalyse par Canaux Auxiliaires 14 Protocole RSA dans des cartes bancaires (ancien protocole B0 utilisé avant 2004) UPMC - Licence Info - Crypto - 2015/16 57/141 RSA : implémentation chiffrement/vérif. signature +Exponentation modulaire Square and Multpily Basé sur l’écriture binaire de l’exposant e = e x =x Pl−1 i=0 ei 2i = l−1 Y Pl−1 i=0 ei 2 i: i x ei 2 i=0 +On réduit la complexité de l’exponentiation modulo n à O(log3 (n)) (voir cours précédent). UPMC - Licence Info - Crypto - 2015/16 58/141 RSA : implémentation déchiffrement/signature +dans ce cas on connaît p et q, idée couper les calculs en deux ! RSA et CRT1 On pré-calcule les valeurs : up = q × (q−1 mod p) mod n uq = p × (p−1 mod q) mod n dp = d mod (p − 1) dq = d mod (q − 1) Pour déchiffrer y et obtenir le message x d’origine on utilise le CRT : 1 xp = ydp mod p 2 xq = ydq mod q 3 x = xp up + xq uq mod n UPMC - Licence Info - Crypto - 2015/16 59/141 Théorème chinois des restes Théorème Soit m1 et m2 deux éléments de A un anneau euclidien. Si pgcd(m1 , m2 ) = 1 alors nous avons l’isomorphisme d’anneau A/m1 A × A/m2 A ' A/(m1 m2 )A Démonstration existentielle (à lire chez vous) : Le morphisme d’anneau φ : A −→ A/m1 A × A/m2 A e 7−→ (e mod m1 , e mod m2 ) est surjectif. UPMC - Licence Info - Crypto - 2015/16 60/141 Théorème chinois des restes Théorème Soit m1 et m2 deux éléments de A un anneau euclidien. Si pgcd(m1 , m2 ) = 1 alors nous avons l’isomorphisme d’anneau A/m1 A × A/m2 A ' A/(m1 m2 )A Démonstration existentielle (à lire chez vous) : Le noyau de φ est donné par {e ∈ A tq e = 0 mod m2 et e = 0 mod m2 } ainsi le noyau est l’ensemble des multiples de m1 et m2 . Comme pgcd(m1 , m2 ) = 1 on obtient le résultat. UPMC - Licence Info - Crypto - 2015/16 60/141 Théorème chinois des restes Théorème Soit m1 et m2 deux éléments de A un anneau euclidien. Si pgcd(m1 , m2 ) = 1 alors nous avons l’isomorphisme d’anneau A/m1 A × A/m2 A ' A/(m1 m2 )A Démonstration constructive: Comment reconstruire l’élément e dans A/(m1 m2 )A à partir de son image (e1 , e2 ) dans A/m1 A × A/m2 A ? (l’autre direction est triviale) UPMC - Licence Info - Crypto - 2015/16 60/141 Théorème chinois des restes Théorème Soit m1 et m2 deux éléments de A un anneau euclidien. Si pgcd(m1 , m2 ) = 1 alors nous avons l’isomorphisme d’anneau A/m1 A × A/m2 A ' A/(m1 m2 )A Démonstration constructive: Comment reconstruire l’élément e dans A/(m1 m2 )A à partir de son image (e1 , e2 ) dans A/m1 A × A/m2 A ? (l’autre direction est triviale) Pour cela, nous utilisons la relation de Bézout entre m1 et m2 : um1 + vm2 = 1 UPMC - Licence Info - Crypto - 2015/16 60/141 Théorème chinois des restes Théorème Soit m1 et m2 deux éléments de A un anneau euclidien. Si pgcd(m1 , m2 ) = 1 alors nous avons l’isomorphisme d’anneau A/m1 A × A/m2 A ' A/(m1 m2 )A Démonstration constructive: Comment reconstruire l’élément e dans A/(m1 m2 )A à partir de son image (e1 , e2 ) dans A/m2 A × A/m1 A ? (l’autre direction est triviale) En notant M = m1 m2 il vient alors e = e1 vm2 + e2 um1 UPMC - Licence Info - Crypto - 2015/16 mod M 60/141 Théorème chinois des restes : algorithme général On applique récurssivement le procédé de résolution sur les équations du système. Il faut que pgcd(mi , mj ) = 1 pour i 6= j. x = e1 x = e2 .. . x = ek CRT mod m1 mod m2 mod mk UPMC - Licence Info - Crypto - 2015/16 ! x = c mod M = m1 m2 x = e3 mod m3 .. . x = ek mod mk 61/141 Théorème chinois des restes : exemple sur Z Soit à résoudre le système x = 2 x = 3 x = 8 mod 3 mod 7 mod 19 Les entiers 3, 7 et 19 sont premiers deux à deux. CRT possible. Initialisation : Calculs : c←2 c ← c × u × mi + ei × v × M M←3 M ← mi × M c ← c mod M avec umi + vM = 1 (relation de Bézout): i 1 2 3 ei mi u v 3 8 7 19 1 10 −2 −9 c 2 2 × 1 × 7 + 3 × −2 × 3 = −4 17 × 19 × 10 + 8 × −9 × 21 = 1718 M 3 7 × 3 = 21 19 × 21 = 399 c mod M 17 122 Les solutions sont de la forme 122 + 399k pour k ∈ Z. UPMC - Licence Info - Crypto - 2015/16 62/141 CRT et RSA avec p et q de même taille Lors du déchiffrement, on connaît p et q et l’on doit calculer x = yd mod n Cette opération prend ' log(d) log(n)2 ' log(n)3 mais on ne se sert pas de la connaissance de p et q ! Mais d’après le CRT on a Z/nZ ' Z/pZ × Z/qZ UPMC - Licence Info - Crypto - 2015/16 63/141 CRT et RSA avec p et q de même taille Mais d’après le CRT on a Z/nZ ' Z/pZ × Z/qZ On peut donc faire les calculs à droite : xp = yd mod p = yd mod (p−1) mod p et xq = yd mod (q−1) mod q et on reconstruit la solution modulo n : x = xp up + xq uq mod n √ Ici on fait ' 2 × log( n)3 ' 14 log(n)3 pour le calcul des exponentiations √ et 2 × log( n)2 + log(n) pour la reconstruction. +log(n)3 >> 14 log(n)3 +Temps d’execution de 2 à 4 fois plus rapide avec le CRT ! UPMC - Licence Info - Crypto - 2015/16 63/141 Plan 7 La trappe et ElGamal 8 RSA 9 Chiffrement à Clé Publique et Authentification 10 Implémentation efficace de RSA 11 Cryptanalyse de RSA 12 Fractions continues(ées) et attaque de Wiener 13 Utilisation de RSA dans l’Embarqué et sa Cryptanalyse par Canaux Auxiliaires 14 Protocole RSA dans des cartes bancaires (ancien protocole B0 utilisé avant 2004) UPMC - Licence Info - Crypto - 2015/16 64/141 Analyse des Cryptosystèmes Pourquoi la cryptanalyse ? (rappel) Valider la sécurité des cryptosystèmes Établir des standards Retirer de la circulation des cryptosystèmes/paramètres peu sûrs Comment ? Math./Algo. où l’on cherche à "casser " les mathématiques sous-jacentes (algorithmique, complexité) Protocole où l’on cherche une faille dans l’utilisation d’un cryptosystème en pratique Canaux auxiliaires = Side Channels où l’on cherche à casser le cryptosystème par des biais physiques UPMC - Licence Info - Crypto - 2015/16 65/141 Rivest, Shamir, Adleman (RSA) Rappel RSA Soient p et q deux nombres premiers et n = pq et deux entiers e, d tels que ed = 1 mod ϕ(n). L’application F(n,e) : Z/nZ → Z/nZ qui à un élément x fait correspondre xe mod n. F est bien à sens unique, difficulté basée sur la factorisation de n. La trappe est la connaissance de p,q et d. Chiffrement x : xe mod n Déchiffrement y : yd mod n UPMC - Licence Info - Crypto - 2015/16 66/141 Casser complètement RSA Problème RSA Étant donné un entier RSA n = pq (p < q < 2p) on demande de retrouver la clé secrète d Ce problème est plus difficile que celui où l’on demande de décrypter un message chiffré donné. Ici la résolution de ce problème permet de décrypter n’importe quel message chiffré. UPMC - Licence Info - Crypto - 2015/16 67/141 Factorisation et RSA +n = pq avec p et q deux premiers distincts. Lemme Si l’on connaît la factorisation de n alors on casse complètement RSA. Preuve À partir de n = pq on peut calculer ϕ(n) = (p − 1)(q − 1). À l’aide de l’algorithme d’Euclide étendue (complexité polynomiale) on calcule facilement une relation de Bézout entre e et ϕ(n). On retrouve alors l’inverse d de e modulo ϕ(n). +On peut montrer la réciproque de manière probabiliste. Il est peut être possible de décrypter un message chiffré donné sans attaquer la clé secrète d ou la factorisation de n, ceci est une question ouverte ! UPMC - Licence Info - Crypto - 2015/16 68/141 Factorisation : Fermat 160?-1665 +n = pq avec p et q deux premiers de même taille p < q < 2p. Lemme Si (x, y) est un couple d’entiers vérifiant x2 − y2 = n alors n = (x − y)(x + y). +Les facteur ne doivent pas être triviaux ! Fermat √ Il testait les entiers x = (b nc + i) pour i = 1, 2, . . . jusqu’à ce que x2 − n soit un carré parfait. Il développa une méthode pour tester si un entier est un carré parfait basée sur des calculs modulaires ! (voir TD) +La complexité reste exponentielle mais plus rapide que tester brutalement si les facteurs p et q sont très proches l’un de l’autre. UPMC - Licence Info - Crypto - 2015/16 69/141 Crible quadratique et successeurs Les algorithmes de factorisation actuels sont de complexité sous-exponentielle mais restent inspirés par celle de Fermat ! 1 Pomerance 1981 : Quadratic Sieve elog 2 1 n log log 2 n . 1 Pomerance, Lenstra, etc 1990’s : Alg. Sieve elog 3 2 n log log 3 n . +Record mondiale en 2011, l’humanité est capable de factoriser des entiers RSA de taille 768bits à l’aide du crible algébrique. UPMC - Licence Info - Crypto - 2015/16 70/141 Conclusion : factorisation et RSA +La factorisation reste un problème difficile, le meilleur algo connu est de complexité sous-exponentielle ! Peut-on réduire cette complexité de calcul dans le cadre d’une instance RSA mal choisie ? UPMC - Licence Info - Crypto - 2015/16 71/141 Plan 7 La trappe et ElGamal 8 RSA 9 Chiffrement à Clé Publique et Authentification 10 Implémentation efficace de RSA 11 Cryptanalyse de RSA 12 Fractions continues(ées) et attaque de Wiener 13 Utilisation de RSA dans l’Embarqué et sa Cryptanalyse par Canaux Auxiliaires 14 Protocole RSA dans des cartes bancaires (ancien protocole B0 utilisé avant 2004) UPMC - Licence Info - Crypto - 2015/16 72/141 Hypothèses de l’attaque Problème RSA Étant donné un entier RSA n = pq (p < q < 2p) on demande de retrouver la clé secrète d Question de départ Si le designer choisit une petite clé privée d (exposant de déchiffrement), pour des soucis d’efficacité par exemple, le problème RSA devient-il plus facile à résoudre ? +Peut-on en déduire un algorithme de résolution du problème RSA de complexité polynomiale lorsque d est suffisamment petit ? +la clé secrète d est toujours de taille au moins 100 bits pour éviter une attaque force brute, mais est-ce suffisant ? +Dans les années 1980 cette hypothèse (petit exposant) était vraisemblable car les circuits intégrés étaient bien moins efficaces qu’aujourd’hui. UPMC - Licence Info - Crypto - 2015/16 73/141 Ingrédients théoriques +Approximation diophantienne : trouver efficacement un rationnel approchant un nombre réel donné +Fractions continues a0 + UPMC - Licence Info - Crypto - 2015/16 1 a1 + 1 a2 + 1 1 a3 + ... 74/141 Fractions continues Conventions : 1 0 = ∞ et 1 ∞ =0 Représentation Pour tout réel α, il existe une suite d’entiers naturels (ai )i>1 tel que α puisse se réécrire sous la forme a0 + 1 a1 + 1 a2 + 1 1 a3 + ... avec a0 = bαc Notations On dénote a0 + 1 a1 + 1 a2 + généralement par [a0 , a1 , a2 , a3 , . . .] 1 1 a3 + ... UPMC - Licence Info - Crypto - 2015/16 75/141 Fractions continues Conventions : 1 0 = ∞ et 1 ∞ =0 Notations On dénote a0 + 1 a1 + 1 a2 + généralement par [a0 , a1 , a2 , a3 , . . .] 1 1 a3 + ... Définition constructive Si α = [a0 , a1 , a2 , a3 , . . .] alors α = a0 + 1 [a1 ,a2 ,a3 ,...] . +Lorsque ∃k tq ∀i > k, ai = 0 on note [a0 , a1 , . . . , ak ] UPMC - Licence Info - Crypto - 2015/16 75/141 Fractions continues et rationnels Proposition Soit α un réel. On a l’équivalence qui suit α ∈ Q ⇔ ∃k tq α = [a0 , a1 , . . . , ak ] Définition Soit α = [a0 , a1 , a2 , . . . ] un réel. La suite de rationnels ([a0 , . . . , ak ])k>0 est appelée la suite des convergents (ou réduites) de α. +On a [a0 , a1 , . . . , ak ]−−−−→ α k→∞ +les convergents sont des approximations rationnelles de α UPMC - Licence Info - Crypto - 2015/16 76/141 Fractions continues : exemples 30 13 = [2, 3, 4] √ 1+ 5 = [1, 1, 1. . . .] 2 π ' [3, 7, 15, 1, 192] UPMC - Licence Info - Crypto - 2015/16 77/141 Fractions continues : rationnels et Euclide Proposition Soit α = ab un rationnel donné sous sa forme réduite. Une fraction continue (finie) [a0 , a1 , . . . , an ] représentant α peut être calculée à l’aide de l’algorithme d’Euclide. +Cette fraction continue est la plus courte possible. La suite des quotients qi calculés lors de l’algorithme d’Euclide avec pour entrée a et b fournit la représentation ab = [q0 , q1 , . . . , qn ] (on fixera qi > 0 pour i > 1) Corollaire Une représentation en fraction continue d’un rationnel calculée en temps O(log2 (max(|a|, |b|)) UPMC - Licence Info - Crypto - 2015/16 a b peut être 78/141 Fractions continues : rationnels et Euclide étendu Proposition Soit α = ab un rationnel donné sous sa forme réduite. Les fractions réduites ndkk représentant les convergents successifs [a0 , a1 , . . . , ak ] sont toutes calculées au cours d’un algorithme du type Euclide étendu avec a et b pour entrée. On a n0 = a0 , d0 = 1, n1 = a0 a1 + 1, d1 = a1 et pour i > 1 ni+1 di+1 ai 1 ni di = ni di 1 0 ni−1 di−1 Corollaire Une représentation en fraction réduite de tous les convergents d’un rationnel ab peuvent être calculés en temps O(log2 (max(|a|, |b|)) UPMC - Licence Info - Crypto - 2015/16 79/141 Fractions continues : application fondamentale Soit à calculer une approximation de α une solution du polynôme x2 − 5x − 1. On a α = 5 + α1 et en appliquant récursivement cette relation on obtient α = [5, 5, 5, . . .] Cette fraction continue est périodique à partir d’un certain rang (on note alors [5]). La suite de ses convergents fournit des approximations de α (l’erreur diminuant au fur et à mesure que k augmente). Plus généralement on a le résultat suivant (Lagrange, Gauss, Legendre) Proposition Une fraction continue représentant un réel α est périodique à partir d’un certain rang k (i.e. α = [a0 , . . . , ak−1 , ak , . . . , ak+` ] ssi α est racine d’un polynôme de degré 2 à coefficients entiers. +On peut utiliser le même genre de résultat pour calculer des approximations de racine carrée d’entiers. UPMC - Licence Info - Crypto - 2015/16 80/141 Fractions continues : théorème fondamentale Théorème de Legendre (1752-1834) Soit α un réel et un couple d’entiers (a, b) premiers entre eux et tel que b > 0. Si l’inégalité a 1 |α − | < 2 b 2b a est vérifiée alors b est la représentation sous forme de fraction réduite d’un convergent de α. UPMC - Licence Info - Crypto - 2015/16 81/141 Du théorème de Legendre à l’attaque de Wiener +ϕ(n) vérifie, pour un certain entier k > 0 premier avec d, l’égalité ed − kϕ(n) = 1 en divisant par d et ϕ(n) on obtient e k 1 − = ϕ(n) d dϕ(n) si 2d < ϕ(n) alors on a e k 1 1 ϕ(n) − d = dϕ(n) < 2d2 e + dk est donc un convergent de α = ϕ(n) . Si α est connu, en calculant les convergents successifs de α on retrouvera d. Problème, ϕ(N) est a priori inconnue ! (sa connaissance suffit pour factoriser n). +Idée, remplacer ϕ(n) par une valeur connue proche : n UPMC - Licence Info - Crypto - 2015/16 82/141 Attaque de Wiener : approximation de clés secrètes +On remplace ϕ(n) par n et la relation précédente devient e k ed − kn ed − kϕ(n) − kn + kϕ(n) 1 − k(n − ϕ(n)) − = = = n d dn dn dn √ Comme p < q < 2p et n = pq on a n − ϕ(n) = p + q − 1 < 3 n. Si e < ϕ(n) (c’est a priori le cas) alors k < d et on en déduit √ e k(n − ϕ(n)) − 1 3k n k 3k 3 − = < = √ <√ n d dn dn d n n +Pour que les hypothèses du Théorème de Legendre soient vérifiées il suffit que √3n < 2d12 c’est-à-dire 1 1 d < √ n4 6 UPMC - Licence Info - Crypto - 2015/16 83/141 Attaque de Wiener : résultat principal Théorème de Wiener Soit n = pq un entier RSA avec p < q < 2p et (e, d) vérifiant ed = 1 mod ϕ(n). Si l’exposant de déchiffrement d (clé secrète) vérifie 1 1 d < √ n4 6 alors on peut casser totalement RSA avec un algorithme de complexité polynomiale en la taille de cette clé secrète d. +Par exemple si n fait 1024 bits et d moins de 256 bits, cette attaque fonctionne (et pas la recherche exhaustive!) UPMC - Licence Info - Crypto - 2015/16 84/141 Attaque de Wiener : démonstration constructive 1 Soit c le chiffré d’un message aléatoire m : c = me mod n 2 On calcule les convergents ( ndii )ti=0 de 3 On teste les di jusqu’à obtenir cdi = m mod n e n (on a t = O(log(n))) On a au plus t = O(log(n)) tour de boucle à faire. Comme le coût total de toutes les opérations dans une boucle est polynomial en log(n) on a bien un algorithme polynomial en la taille de la clé d (puisque log(d) = O(log(n))) UPMC - Licence Info - Crypto - 2015/16 85/141 Exemple Soit le problème RSA avec (n = 160523347, e = 60728973). On chiffre un texte pris au hasard, ici m = 313. On a c = 31360728973 mod 160523347 = 75454098 qui nous servira à tester les candidats pour d. Première étape: On calcule la fraction continue de ne : e = [0, 2, 1, 1, 1, 4, 12, 102, 1, 1, 2, 3, 2, 2, 36] n Seconde étape: On teste les convergents successifs. On s’aperçoit que le sixième permet de résoudre ce problème RSA. En effet, 14 [0, 2, 1, 1, 1, 4] = . 37 k d Testons si 14 mod n. On a 37 est bien égal à d en calculant c 7545409837 mod 160523347 = 313, donc on a bien retrouvé la clé secrète d. +En pratique on calcule directement les convergents successifs UPMC - Licence Info - Crypto - 2015/16 86/141 Tester en Sage On vous demandera de coder cette attaque dans un langage de bas niveau (Python ou mieux C+GMP). Vous pouvez dans un premier temps écrire une version haut niveau en Sage pour vérifier vos programmes. RSA 04/03/13 RSA -- Sage n=160523347 e=60728973 alpha=e/n alpha 60728973/160523347 cv=convergents(alpha) cv [0, 1/2, 1/3, 2/5, 3/8, 14/37, 171/452, 17456/46141, 17627/46593, 35083/92734, 87793/232061, 298462/788917, 684717/1809895, 1667896/4408707, 60728973/160523347] m=313 c=pow(m,e,n) c 75454098 for f in cv: d=denominator(f) if (pow(c,d,n) == m): break print d 37 UPMC - Licence Info - Crypto - 2015/16 87/141 Conclusion Paramètres de RSA mal choisis ⇒ sécuritée n’est plus assurée ! +Il faut absolument suivre les recommandations des instituts gouvernementaux +Pour un attaquant, il faut toujours commencer par cette attaque simple (au cas où !) UPMC - Licence Info - Crypto - 2015/16 88/141 Plan 7 La trappe et ElGamal 8 RSA 9 Chiffrement à Clé Publique et Authentification 10 Implémentation efficace de RSA 11 Cryptanalyse de RSA 12 Fractions continues(ées) et attaque de Wiener 13 Utilisation de RSA dans l’Embarqué et sa Cryptanalyse par Canaux Auxiliaires 14 Protocole RSA dans des cartes bancaires (ancien protocole B0 utilisé avant 2004) UPMC - Licence Info - Crypto - 2015/16 89/141 Cryptanalyse Opérationnelle de RSA +Différents types de canaux auxiliaires 1 Social Engineering 2 Macroscopique 3 Microscopique UPMC - Licence Info - Crypto - 2015/16 90/141 Social Engineering +Repose sur les faiblesses humaines ! Faiblesse des mots de passe (nom de l’animal famillier, date d’anniversaire ...) Interrogatoires détournés Taupe Lecture derrière l’épaule Hameçonnage etc. +Attaque la plus utilisée ! +Contremesure : éducation à la sécurité. +Les mathématiques ne peuvent rien faire ici ! UPMC - Licence Info - Crypto - 2015/16 91/141 Canaux Macroscopique +Repose sur les évaporations d’informations obtenues par phénomènes physiques. Emmissions radio des écrans (CRT) Claviers mouchards Ecoute à haute portée ... +Les mathématiques tentent de construire des contremesures mais... +un blindage du matériel sensible est nécessaire (Faraday). UPMC - Licence Info - Crypto - 2015/16 92/141 Canaux Microscopiques UPMC - Licence Info - Crypto - 2015/16 93/141 Canaux Microscopiques +Basé sur les effets de bords de l’arithmétique utilisée Exponentiation modulaire : attaque de Kocher sur RSA On calcule yd mod n avec d de w bits. s0 := 1 for k:= 0 upto w − 1 do if (keme bit de d) = 1 then Rk = (sk × y) mod n else Rk = sk end if sk+1 = R2k mod n end for return Rw−1 UPMC - Licence Info - Crypto - 2015/16 94/141 Canaux Microscopiques +Basé sur les effets de bords de l’arithmétique utilisée Exponentiation modulaire : attaque de Kocher sur RSA On calcule yd mod n avec x de w bits. s0 := 1 for k:= 0 upto w − 1 do if (keme bit de d) = 1 then Rk = (sk × y) mod n else Rk = sk end if sk+1 = R2k mod n end for return Rw−1 UPMC - Licence Info - Crypto - 2015/16 95/141 Canaux Microscopiques : attaque de Kocher +L’attaquant cherche a retrouver l’exposant d. Hypothèses de Kocher 1 On peut demander au matériel cryptographique des déchiffrements quelconques avec la clé privée attaquée. 2 On peut mesurer les temps de calcul de manière précise pour chacun des déchiffrement. 3 On peut avoir accès au même matériel et régler nos propres clés. +Une attaque par corrélation de Pearson (brute force améliorée) UPMC - Licence Info - Crypto - 2015/16 96/141 Canaux Microscopiques : attaque de Kocher +Attaque par étude statistique +Etude des corrélations (distributions) entre les différents tests +Contremesure : rajouter des calculs vides pour équilibrer la charge de travail. UPMC - Licence Info - Crypto - 2015/16 97/141 Canaux Microscopiques : attaque par injection de fautes +A l’aide de radiations on peut changer la nature de quelques bits pendant le calcul +Utilisable sur les cartes à puces par exemple UPMC - Licence Info - Crypto - 2015/16 98/141 Canaux Microscopiques : attaque par injection de fautes +A l’aide radiation on peut changer la nature de quelques bits pendant le calcul +Utilisable sur les cartes à puces par exemple Attaque par faute : RSA et CRT On veut calculer yd mod n rapidement. On connaît n = pq. 1 On calcule S1 = yd mod p 2 On calcule S2 = yd mod q 3 On reconstruit par CRT S = aS1 + bS2 mod n +On injecte une erreur pendant le premier calcul. UPMC - Licence Info - Crypto - 2015/16 99/141 Canaux Microscopiques : attaque par injection d’erreurs Attaque par faute : RSA et CRT Supposons que un seul des Si est faux ici c’est S1 . Supposons aussi que nous avons le résultat juste S et faux Ŝ issus d’un même message y. Alors S 6= Ŝ mod p et S = Ŝ mod q et donc pgcd(S − Ŝ, n) = q +Contremesures arithmétiques plus compliquées +Blindage du matériel pour éviter les fautes. UPMC - Licence Info - Crypto - 2015/16 100/141 Conclusions Canaux auxiliaires Autres effets de bord : Thermiques, Radio-electrique,... A de forts impacts sur l’électronique contemporaine : téléphonie, carte à puce... Des parades existent mais elles compliquent l’arithmétique sous-jacente. +Un cours de M2 du master SFPN est consacré a ces problématiques +Un teaser vidéo de Tarnovsky! UPMC - Licence Info - Crypto - 2015/16 101/141 Plan 7 La trappe et ElGamal 8 RSA 9 Chiffrement à Clé Publique et Authentification 10 Implémentation efficace de RSA 11 Cryptanalyse de RSA 12 Fractions continues(ées) et attaque de Wiener 13 Utilisation de RSA dans l’Embarqué et sa Cryptanalyse par Canaux Auxiliaires 14 Protocole RSA dans des cartes bancaires (ancien protocole B0 utilisé avant 2004) UPMC - Licence Info - Crypto - 2015/16 102/141 Création de la carte bancaire +La signature RSA permet d’authentifier une transaction Banque Csec GIE CB Info GIE priv GIE pub VS=GIEpriv(Info) Centre de Contrôle Info, VS, Csec, PIN UPMC - Licence Info - Crypto - 2015/16 103/141 Utilisation de la carte bancaire GIE CB Centre de Contrôle GIE priv GIE pub Csec Appel contrôle Vendeur Info, VS, Csec, PIN UPMC - Licence Info - Crypto - 2015/16 Transaction GIE pub 104/141 Utilisation de la carte bancaire Authentification de la carte : le terminal lit Info et VS sur la carte et vérifie la signature à l’aide de GIEpub. PIN : le PIN est envoyé à la carte pour calcul en place et vérification. Authentification par Csec : appel téléphonique à l’organisme de contrôle pour vérifier de la présence la clé secrète. Attaque Serge Humpich (1997, factorisation 32 bits), divulgation des YES card (2000) UPMC - Licence Info - Crypto - 2015/16 105/141 Part IV Arithmétique des Polynômes et Corps Finis UPMC - Licence Info - Crypto - 2015/16 106/141 Plan 15 Support pour le DLP : corps finis généraux 16 Anneaux de Polynômes et Quotients 17 Corps finis généraux 18 Groupe des points rationnels d’une courbe elliptique UPMC - Licence Info - Crypto - 2015/16 107/141 Retour à l’arithmétique modulaire: la notion d’idéal Définition Un sous-ensemble I d’un anneau A est un idéal de A s’il est stable par addition interne et par multiplication externe (i.e. a + b ∈ I ∀(a, b) ∈ I 2 et ka ∈ I ∀(k, a) ∈ A × I). Exemples: A = Z l’ensemble 2Z = {2a : a ∈ Z} est un idéal. I = A et I = 0 sont les deux idéaux triviaux. Idéal principal Plus généralement, tout ensemble de la forme eA = {ea : a ∈ A} est un idéal de A (noté (e) quand il n’y a pas de confusion possible). UPMC - Licence Info - Crypto - 2015/16 108/141 Retour à l’arithmétique modulaire: la notion d’idéal Idéal principal Plus généralement, tout ensemble de la forme eA = {ea : a ∈ A} est un idéal de A (noté (e) quand il n’y a pas de confusion possible). Définition Un anneau A qui n’a que des idéaux principaux est dit principal. UPMC - Licence Info - Crypto - 2015/16 108/141 Quotient d’anneau, Anneau Quotient Soit I un idéal dans A. Définition Deux éléments a et b de A sont équivalents modulo I s’il existe c ∈ I tel que b = a + c. La classe d’équivalence de a est donc l’ensemble a + I. Arithmétique modulaire générale Quelque soit le choix des représentants ā et b̄ des classes a + I et b + I on a: ā + b̄ ∈ (ā + b̄) + I et āb̄ ∈ (āb̄) + I +Exemple Z/pZ UPMC - Licence Info - Crypto - 2015/16 109/141 Quotient d’anneau, Anneau Quotient Soit I un idéal dans A. Arithmétique modulaire générale Quelque soit le choix des représentants ā et b̄ des classes a + I et b + I on a: ā + b̄ ∈ (ā + b̄) + I et āb̄ ∈ (āb̄) + I +Exemple Z/pZ Définition-Proposition L’ensemble A/I des classes de A modulo I muni de l’addition et la multiplication modulaire forme un anneau : l’anneau quotient de A modulo I. UPMC - Licence Info - Crypto - 2015/16 109/141 Anneau Quotient : Propriétés Définitions Soit I un idéal d’un anneau A. I premier si A/I est intègre. I est maximal si A/I est un corps. Propriétés importantes: + I maximal ⇒ I premier. + a irréductible dans A principal ⇔ l’idéal (a) est maximal. + I maximal est bien maximal au sens de l’inclusion des idéaux non triviaux. + a ∈ A premier ⇔ à (a) premier. UPMC - Licence Info - Crypto - 2015/16 110/141 Exemples importants de corps Corps de fractions Soit A un anneau intègre. Le plus petit corps contenant A est appelé corps des fractions de A et est défini par les classes d’équivalence de : Fr(()A) = A × A \ {O} modulo la relation d’équivalence (a, b) ≡ (c, d) ⇔ ad = bc. Les opérations qui font de cet ensemble un corps sont les opérations habituelles sur les fractions. +Fr(()Z) = Q. +Inclusion canonique de A dans Fr(()A) avec a 7→ (a, 1). UPMC - Licence Info - Crypto - 2015/16 111/141 Exemples importants de corps Z/pZ Cet anneau quotient est un corps premier de caractéristique p Définition : Caractéristique Pour tout anneau (A, +, ×) il existe un morphisme K de Z dans A défini par K(n) = 1A + . . . + 1A (n fois). Deux cas sont possibles : K est une injection alors le seul entier c tel que K(c) = 0A est c = 0; K n’est pas une inclusion, alors il existe un entier minimal c > 0 tel que (K) = 0. L’entier c est la caractéristique de A +Q est de caractéristique 0 +Z/pZ est de caractéristique p +Comment construire de grands corps finis de carac. p ? UPMC - Licence Info - Crypto - 2015/16 112/141 Plan 15 Support pour le DLP : corps finis généraux 16 Anneaux de Polynômes et Quotients 17 Corps finis généraux 18 Groupe des points rationnels d’une courbe elliptique UPMC - Licence Info - Crypto - 2015/16 113/141 Polynômes Définition L’ensemble A[X] des suites finies d’éléments de A (i.e. nulles à partir d’un certain rang) est appelé ensemble des polynômes à coefficients dans A. L’élément X est la suite [0, 1] et est appelé indéterminée. +On ne représente que les termes non nuls, on pourra utiliser les autres mais ils seront nuls par définition. +Le degré d’un polynôme est le plus grand indice des termes non nuls. +X 2 + 1 est associé à [1, 0, 1] en tant qu’élément dans Z[X]. +X est formel, ce n’est qu’un symbole ! UPMC - Licence Info - Crypto - 2015/16 114/141 Polynômes : arithmétique Soit a = [a0 , a1 , . . . , an ] et b = [b0 , b1 , . . . , bm ] deux polynômes dans A[X] (on suppose m > n). Définition L’addition de a et b est donnée par a + b = [a0 + b0 , a1 + b1 , . . . , am + bm ] La multiplication c = ab est donnée par X ck = ai bj i+j=k L’ensemble A[X] équipé de ces deux opérations est un anneau : l’anneau des polynômes à coefficients dans A. UPMC - Licence Info - Crypto - 2015/16 115/141 Polynômes : représentation En machine Un polynôme est un tableau. Deux choix sont possibles, la taille correspond au degré (le tableau est dynamique) ou l’on conserve des éléments nuls en tête du polynôme (le tableau est statique). On peut utiliser conjointement ces deux représentations. +Implantation plus facile que pour les grands entiers. +Pour les calculs de complexités, attention à la croissance des coefficients (le cas du pgcd par exemple). UPMC - Licence Info - Crypto - 2015/16 116/141 Polynômes : résultats théoriques Théorèmes A corps ⇒ A[X] euclidien A[X] principal ⇔ A corps A factoriel ⇒ A[X] factoriel +En particulier Z[X] n’est pas euclidien mais il est factoriel ! UPMC - Licence Info - Crypto - 2015/16 117/141 Polynômes : Euclide Soit K un corps. K[X] est euclidien On prend comme fonction (stathme euclidien) celle qui à un polynôme fait correspondre son degré. (Pour le polynôme nul cette fonction renverra ∞.) Exemple Q[X] : 1 3 1 1 X + X + 1 = X(X 2 + 1) + X + 1 2 2 2 UPMC - Licence Info - Crypto - 2015/16 118/141 Polynômes : les irréductibles Soit K un corps. Inversibles Les inversible de K[X] sont les éléments non nuls de K. Ainsi on a : Irréductibilité Les éléments irréductibles de K[X] sont les éléments P non nuls tel ques s’il existe un coup (Q, R) dans K[X] vérifiant P = QR alors Q ∈ K× ou R ∈ K× . +Nécessité d’algorithmes pour tester l’irréductibilité dans K[X]. UPMC - Licence Info - Crypto - 2015/16 119/141 Polynômes : Évaluation Définition Soit P = [a0 , . . . , an ] ∈ K[X] un polynôme et e un élément de K (ou plus généralement d’une K-algèbre i.e un anneau tq’il existe un morphisme de K dans cette algèbre). L’évaluation P(e) de P en e est définie par : n X ai ei i=0 +Évaluation brute force : On calcule la somme de la définition brutalement, les monômes évalués successivement. +n additions et 2n multiplications +2n × log2 (e) en mémoire UPMC - Licence Info - Crypto - 2015/16 120/141 Polynômes : Évaluation Définition Soit P = [a0 , . . . , an ] ∈ K[X] un polynôme et e un élément de K (ou plus généralement d’une K-algèbre i.e un anneau tq’il existe un morphisme de K dans cette algèbre). L’évaluation P(e) de P en e est définie par : n X ai ei i=0 Algorithme de Horner (parenthèses emboîtées): [a0 , . . . , an ](e) t := an Pour i := n − 2 jusqu’à 0 faire t := ai+1 + e × t Fin pour return a0 + e × t UPMC - Licence Info - Crypto - 2015/16 120/141 Polynômes : Évaluation Définition Soit P = [a0 , . . . , an ] ∈ K[X] un polynôme et e un élément de K (ou plus généralement d’une K-algèbre i.e un anneau tq’il existe un morphisme de K dans cette algèbre). L’évaluation P(e) de P en e est définie par : n X ai ei i=0 Algorithme de Horner (parenthèses emboîtées): [a0 , . . . , an ](e) t := an Pour i := n − 2 jusqu’à 0 faire t := ai+1 + e × t Fin pour return a0 + e × t +n additions et n multiplications +n × log2 (e) en mémoire UPMC - Licence Info - Crypto - 2015/16 120/141 Polynômes : racines Définition Soit un corps contenant K et P ∈ K[X] un polynôme. Un élément α de est une racine de P dans si P(α) = 0. Théorèmes Pour tout P il existe un corps contenant toutes les racines de P. Si α est une racine de P alors P = (X − α)Q(X) dans [X]. Si P est de degré n alors P a au plus n racines (comptées avec les multiplicités). +Exemple : X 2 + 1 est un polynôme à coefficients dans Q qui a pour racine i dans C. UPMC - Licence Info - Crypto - 2015/16 121/141 Polynômes : racines Problème Comment calculer formellement avec les racines d’un polynôme irréductible de K[X] ? √ Exemple : X 2 − 3 ∈ Q[X] a pour racine α = 3 ∈ R. Comment un ordinateur peut-il manipuler √ α pour, par exemple, calculer une représentation explicite de ( 3 − 1)−1 ? +Calcul formel. UPMC - Licence Info - Crypto - 2015/16 122/141 Polynômes : racines +Soit P un polynôme irréductible à coefficients dans un anneau A. On veut pouvoir calculer formellement avec une racine α de P. Rupture Soit K = Fr(()A). On construit le plus petit sur-corps K(α) de K contenant α : K[α] = {Q(α) : Q ∈ K[X]} Représentation On a la construction formelle (P irréductible) par isomorphisme : Ψ : K[X] −→ K[α] Q 7−→ Q(α) Le morphisme Ψ est surjectif de noyau l’idéal (P). Ainsi K[α] peut être représenté par K[X]/P et ainsi α est représenté par la classe de X modulo P. UPMC - Licence Info - Crypto - 2015/16 123/141 Polynômes : racines Représentation On a la construction formelle (P irréductible) par isomorphisme : Ψ : K[X] −→ K[α] Q 7−→ Q(α) Le morphisme Ψ est surjectif de noyau l’idéal (P). Ainsi K[α] peut être représenté par K[X]/P et ainsi α est représenté par la classe de X modulo P. +On ne peut distinguer algébriquement les racines de P entre elles (il n’existe qu’un seul corps de rupture pour P. +Les éléments de K(α) sont de la forme k0 + k1 α + · · · + kn−1 αn−1 où n est le degré de P. √ +Faire des calculs dans Q( 3) revient a calculer modulo X 2 − 3 dans Q[X] ! UPMC - Licence Info - Crypto - 2015/16 123/141 Polynômes : racines √ Exemple : X 2 − 3 a pour racine √ α =−1 3. Comment un ordinateur peut-il manipuler α pour calculer ( 3 − 1) par exemple ? UPMC - Licence Info - Crypto - 2015/16 124/141 Polynômes : racines √ Exemple : X 2 − 3 a pour racine α = 3. Comment un ordinateur peut-il √ manipuler α pour calculer ( 3 − 1)−1 par exemple ? √ A l’aide de la construction précédente, calculer ( 3 − 1)−1 revient à calculer l’inverse de X − 1 dans Q[X]/(X 2 − 3). Pour ça on utilise Euclide pour trouver une relation de Bézout : UPMC - Licence Info - Crypto - 2015/16 124/141 Polynômes : racines √ A l’aide de la construction précédente, calculer ( 3 − 1)−1 revient à calculer l’inverse de X − 1 dans Q[X]/(X 2 − 3). Pour ça on utilise Euclide pour trouver une relation de Bézout : X 2 − 3 = X(X − 1) + X − 3 X − 1 = 1(X − 3) + 2 1 X − 3 = (X − 3)2 + 0 2 UPMC - Licence Info - Crypto - 2015/16 124/141 Polynômes : racines √ A l’aide de la construction précédente, calculer ( 3 − 1)−1 revient à calculer l’inverse de X − 1 dans Q[X]/(X 2 − 3). Pour ça on utilise Euclide pour trouver une relation de Bézout : X 2 − 3 − X(X − 1) = X − 3 X − 1 − 1(X − 3) = 2 2 = (X − 1) − (X 2 − 3) + X(X − 1) UPMC - Licence Info - Crypto - 2015/16 124/141 Polynômes : racines √ A l’aide de la construction précédente, calculer ( 3 − 1)−1 revient à calculer l’inverse de X − 1 dans Q[X]/(X 2 − 3). Pour ça on utilise Euclide pour trouver une relation de Bézout : 1 1 1 = (X + 1)(X − 1) − (X 2 − 3) 2 2 √ 1 √ −1 ( 3 − 1) = ( 3 + 1) 2 +Utiliser un tableau pour le calcul comme dans le cas Z. UPMC - Licence Info - Crypto - 2015/16 124/141 Plan 15 Support pour le DLP : corps finis généraux 16 Anneaux de Polynômes et Quotients 17 Corps finis généraux 18 Groupe des points rationnels d’une courbe elliptique UPMC - Licence Info - Crypto - 2015/16 125/141 Corps finis : Propriétés A partir des corps premiers Fp = Z/pZ on veut pouvoir construire des corps de même caractéristique p mais de cardinal plus grand. On utilise la rupture + Définition Soit P un polynôme irréductible de degré n Fpn := Fp[X]/(P) UPMC - Licence Info - Crypto - 2015/16 126/141 Corps finis : Exemple Théorèmes Fpn est de cardinal pn . Pour tout p premier et tout entier n > 0 il existe un polynôme irréductible de degré n dans Fp . Exemple : Fp = Z/2Z et P = X 2 + X + 1 F4 = F2 [X]/(X 2 + X + 1) Si on note ω une racine de P (image de X dans F2 [X]/P) on a : F4 = {0, 1, ω, ω + 1} UPMC - Licence Info - Crypto - 2015/16 127/141 Corps finis : Exemple Exemple : Fp = Z/2Z et P = X 2 + X + 1 F4 = F2 [X]/(X 2 + X + 1) Si on note ω une racine de P (image de X dans F2 [X]/P) on a : F4 = {0, 1, ω, ω + 1} Pour calculer la table de multiplication dans F4 on revient au calcul dans F2 [X]/P : × 0 1 ω ω+1 UPMC - Licence Info - Crypto - 2015/16 0 1 ω ω+1 0 0 0 0 0 1 ω ω+1 0 ω ω+1 1 0 ω+1 1 ω 127/141 Corps finis : Propriétés +Applications Crypto Théorème n Le groupe multiplicatif F× pn est cyclique d’ordre p − 1. +Il existe un ω ∈ Fpn tel que tous les éléments de F× pn puissent s’écrire i sous la forme ω . +Ce groupe multiplicatif peut être utilisé comme support de DLP et donc pour faire de l’échange de clés ou du ElGamal. UPMC - Licence Info - Crypto - 2015/16 128/141 Corps finis : Conclusions +Applications Crypto On peut former des corps finis aussi grands que l’on souhaite Il faut construire des polynômes irréductibles à coefficients dans un corps fini L’arithmétique modulo un polynôme est plus facile que celle sur les grands entiers En 2013 a été démontré que le DLP dans le groupe multiplicatif d’un corps fini de petite caractéristique est de complexité quasi-polynomial. UPMC - Licence Info - Crypto - 2015/16 129/141 Plan 15 Support pour le DLP : corps finis généraux 16 Anneaux de Polynômes et Quotients 17 Corps finis généraux 18 Groupe des points rationnels d’une courbe elliptique UPMC - Licence Info - Crypto - 2015/16 130/141 Application Principale: Signature DLP +Elle repose sur une modification du chiffrement de ElGamal +Nécessite l’utilisation d’une fonction de hachage de l’ensemble des messages dans le groupe support du DLP. La signature DSA sur les corps finis La génération des clés : une fonction de hachage H (e.g. SHA1) p, q deux premiers de tailles respectives 1024 et 160 bits tels que p − 1 est un multiple de q g un entier d’ordre q modulo p un problème DLP : h = gt mod p (le groupe support est d’ordre q) UPMC - Licence Info - Crypto - 2015/16 131/141 Application Principale: Signature DLP +Elle repose sur une modification du chiffrement de ElGamal +Nécessite l’utilisation d’une fonction de hachage de l’ensemble des messages dans le groupe support du DLP. La signature DSA sur les corps finis L’expéditeur publie les clés publiques (p, q, g, h) et conserve t comme clé secrète. La fonction de hachage H est aussi une donnée publique. Pour signer un texte m, l’expéditeur procède comme suite 1 Il choisit un entier km au hasard (pour chaque message) 2 r = (gkm mod p) mod q 3 −1 (H(m) + t × r) mod q s = km 4 si r et s sont non nuls alors la signature de m est le couple (r, s) sinon retourner à la première étape. +ATTENTION km doit vraiment être choisi au hasard ! (voir TD) UPMC - Licence Info - Crypto - 2015/16 131/141 Application Principale: Signature DLP +Elle repose sur une modification du chiffrement de ElGamal +Nécessite l’utilisation d’une fonction de hachage de l’ensemble des messages dans le groupe support du DLP. La signature DSA sur les corps finis Le destinataire vérifiera l’authenticité de l’expéditeur en vérifiant v=r mod q où v est calculé comme suit : 1 u1 = H(m) × s−1 mod q 2 u2 = r × s−1 mod q 3 v = (gu1 hu2 mod p) mod q +Alternative à l’utilisation de RSA pour la sécurité embarquée! UPMC - Licence Info - Crypto - 2015/16 131/141 Application Principale: Signature DLP +Elle repose sur une modification du chiffrement de ElGamal +Nécessite l’utilisation d’une fonction de hachage de l’ensemble des messages dans le groupe support du DLP. La signature ECDSA sur les courbes elliptiques Peut on faire plus efficace que le DLP sur les corps finis ? UPMC - Licence Info - Crypto - 2015/16 131/141 Courbes elliptiques +Lieu géométrique ! Sur K = Fpk avec p > 3 Pour a et b dans K vérifiant ∆ := −16(4a3 + 27b2 ) 6= 0 On définit la courbe elliptique Ea,b sur K par l’ensemble des points (x, y) ∈ K2 vérifiant l’équation: y2 = x3 + ax + b +Définition équivalente dans le cas de la caractéristique 3 et 2. UPMC - Licence Info - Crypto - 2015/16 132/141 Courbes elliptiques sur R2 UPMC - Licence Info - Crypto - 2015/16 133/141 Courbes elliptiques sur Fp , p = 389, y2 = x3 − x + 1 UPMC - Licence Info - Crypto - 2015/16 134/141 Structure de groupe Ea,b = Ea.b ∪ O UPMC - Licence Info - Crypto - 2015/16 135/141 Structure de groupe Ea,b = Ea.b ∪ O Groupe additif commutatif de la courbe Soit P1 = (x1 , y1 ), Q = (x2 , y2 ) ∈ Ea,b Point à l’infini O est l’élément neutre : P+O =O+P=P Si x2 = x1 et y2 = −y1 alors P + Q = O P + Q = (x3 , y3 ) avec x3 = λ2 − x1 − x2 y3 = λ(x1 − x3 ) − y1 et λ = 3x12 +a 2y1 si P = Q et λ = y2 −y1 x2 −x1 sinon. +Ne pas oublier de rajouter le point à l’infini pour former le groupe ! UPMC - Licence Info - Crypto - 2015/16 135/141 Un exemple concret On étudie le groupe construit avec K = F11 et E1,6 : y2 = x3 + x + 6. Pour chaque x ∈ {0, . . . , 10} on cherche à résoudre une équation quadratique modulo 11. Pour faciliter ce travail, on peut commencer par lister l’ensemble des carrés dans K. y 0 ±1 ±2 ±3 ±4 ±5 z = y2 mod 11 0 1 4 9 5 3 UPMC - Licence Info - Crypto - 2015/16 136/141 Un exemple concret On étudie le groupe construit avec K = F11 et E1,6 : y2 = x3 + x + 6. Pour chaque x ∈ {0, . . . , 10} on cherche à résoudre une équation quadratique modulo 11. Pour faciliter ce travail, on peut commencer par lister l’ensemble des carrés dans K. y 0 ±1 ±2 ±3 ±4 ±5 z = y2 mod 11 0 1 4 9 5 3 x 0 1 2 3 4 5 6 7 8 9 10 UPMC - Licence Info - Crypto - 2015/16 z = x3 + x + 6 mod 11 6 8 5 3 8 4 8 4 9 7 4 z 11 -1 -1 1 1 -1 1 -1 1 1 -1 1 y ±4 ±5 ±9 ±9 ±3 ±9 136/141 Un exemple concret On étudie le groupe construit avec K = F11 et E1,6 : y2 = x3 + x + 6. Pour chaque x ∈ {0, . . . , 10} on cherche à résoudre une équation quadratique modulo 11. Pour faciliter ce travail, on peut commencer par lister l’ensemble des carrés dans K. y 0 ±1 ±2 ±3 ±4 ±5 z = y2 mod 11 0 1 4 9 5 3 x 0 1 2 3 4 5 6 7 8 9 10 z = x3 + x + 6 mod 11 6 8 5 3 8 4 8 4 9 7 4 z 11 -1 -1 1 1 -1 1 -1 1 1 -1 1 y ±4 ±5 ±9 ±9 ±3 ±9 +12 points rationnels + le point à l’infini = un groupe d’ordre 13, donc cyclique engendré par tout élément autre que le neutre. UPMC - Licence Info - Crypto - 2015/16 136/141 Exemple concret Calculons explicitement avec K = F11 , E1,6 : y2 = x3 + x + 6. Soit P = (2, 7) on veut calculer [2]P = P + P et [3]P. λ (3 × 22 + 1)(2 × 7)−1 mod 11 2 × 3−1 mod 11 2 × 4 mod 11 8 = = = = [2]P = (82 − 2 − 2 mod 11, 8(2 − 5) − 7 mod 11) = (5, 2) Pour [3]P on a [3]P = [2]P + P, on calcule l’autre λ λ = = = = (7 − 2)(2 − 5)−1 mod 11 5 × 8−1 mod 11 5 × 7 mod 11 2 [3]P = (22 − 5 − 2 mod 11, 2(5 − 8) − 2 UPMC - Licence Info - Crypto - 2015/16 mod 11) = (8, 3) 137/141 Carrés modulo p, symbole de Legendre +Etant donné un entier a on ne connaît pas d’algorithme déterministe qui calcule b tel que a = b2 mod p en temps polynomial (en log p). +On peut décider qu’un élément est résidu quadratique (un carré modulo p) en temps polynomial Définition : Symbole de Legendre si a est un résidu quadratique (mod p) 1 a = −1 si a n’est pas un résidu quadratique (mod p) p 0 si p divise a Propriétés a1 a2 p = UPMC - Licence Info - Crypto - 2015/16 a1 p a2 p et a a = p (mod p) p 138/141 Carrés modulo p, symbole de Legendre +Etant donné un entier a on ne connaît pas d’algorithme déterministe qui calcule b tel que a = b2 mod p en temps polynomial (en log p). +On peut décider qu’un élément est résidu quadratique (un carré modulo p) en temps polynomial Réciprocité quadratique Soit p et q deux premiers distincts > 2 (le cas p = 2 est trivial) ( 1 si p ≡ 1 (mod 4) −1 = , p −1 si p ≡ −1 (mod 4) ( 1 si p ≡ ±1 (mod 8) 2 = p −1 si p ≡ ±3 (mod 8) q si p ≡ 1 (mod 4) ou q ≡ 1 (mod 4) p p = − q q si p ≡ 3 (mod 4) et q ≡ 3 (mod 4) p UPMC - Licence Info - Crypto - 2015/16 138/141 Structure de groupe pour K = Fq avec q = pk et p > 3 Théorème de Hasse Soit q = pk . √ √ q + 1 − 2 q 6 |Ea,b | 6 q + 1 + 2 q Théorème de structure (Ea,b , +) ' (Z/d1 Z × Z/d2 Z, +) où d1 divise d2 et d1 divise q − 1. En d’autres termes, le groupe construit à partir d’une courbe elliptique est soit cyclique (le cas d1 = 1), soit le produit de deux groupes cycliques. +Pour la cryptographie on choisit des courbes elliptiques telles que (Ea,b , +) soit cyclique (le cas d1 = 1) ou au moins contient un grand groupe cyclique (Pohlig-Hellman). UPMC - Licence Info - Crypto - 2015/16 139/141 Avantages des courbes elliptiques Pas d’attaque connue de complexité sous-exponentielle L’arithmétique peut être rendue très efficiace Clés plus petites pour des sécurités équivalentes UPMC - Licence Info - Crypto - 2015/16 140/141 Retour sur Échange de clé et Authentification Comment authentifier son interlocuteur au moment du premier échange? UPMC - Licence Info - Crypto - 2015/16 141/141