La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Confidentialité II Systèmes à clé publique 5 e cours--Hiver 2014 Louis Salvail.

Présentations similaires


Présentation au sujet: "Confidentialité II Systèmes à clé publique 5 e cours--Hiver 2014 Louis Salvail."— Transcription de la présentation:

1 Confidentialité II Systèmes à clé publique 5 e cours--Hiver 2014 Louis Salvail

2 Une approche différente Nous avons vu comment la confidentialité peut être préservée lorsque lexpéditeur et le destinataire partagent une clé secrète : Si la confidentialité doit être garantie inconditionnellement, alors une clé aussi longue que le message doit être utilisée. Si la confidentialité est garantie contre les adversaires efficaces, alors il est admis que des chiffrements sûrs à clé secrète courte sont possibles. Pouvons-nous penser avoir de la confidentialité sans le partage préalable dune clé?

3 C La situation M M E K D

4 Systèmes à clé publique Les chiffres qui satisfont le modèle précédent sont appelés chiffres à clé publique. Ces systèmes nécessitent deux types de clés : Clés privées SK : Permettent le déchiffrement, Clés publiques PK : Permettent le chiffrement et quiconque la connaît peut envoyer un message chiffré pour M que seul le détenteur de SK peut déchiffrer. À chaque clé publique correspond une clé privée. Nous dénotons (PK,SK) une telle paire. Évidemment, les deux algorithmes suivants sont nécessaires : Chiffrement : E PK (M)=C, Déchiffrement : D SK (C)= D SK (E PK (M)) =M.

5 Conditions de sécurité Puisque tout le monde connaît PK, il doit être difficile de trouver SK à partir de PK : Autrement, SK pourrait être déterminée pour ensuite être utilisée pour déchiffrer. Cependant, PK doit être facile à calculer à partir de SK. Ceci permet de générer les clés nécessaires efficacement. La bonne clé publique PK doit être associée à la personne qui connaît SK : Sinon, un message destiné à Astérix pourrait être chiffré avec la clé publique de César permettant ainsi à César den connaître la teneur. Les clés PK doivent donc être certifiées... nous verrons comment faire plus tard.

6 Sécurité du chiffrement à clé publique La sécurité du chiffrement à clé publique demande que ladversaire nait aucune idée à propos du message clair correspondant au message chiffré C, même étant donné PK (car ladversaire la connaît aussi). Habituellement il ny a quune clé privée associée à la clé publique PK. La fouille exhaustive de clés est donc une attaque possible contre ces systèmes : Il sagit dessayer toutes les clés privées SK jusquà ce que celle associée à PK soit trouvée. Cependant, tous les systèmes à clé publique connus sont vulnérables à des attaques beaucoup plus efficaces que la fouille exhaustive des clés. En conséquence, les clés pour ces systèmes sont beaucoup plus longues que pour les systèmes à clé secrète.

7 RSA RSA est le système à clé publique le plus utilisé dans la pratique. Il a révolutionné la cryptographie moderne. Il a été proposé en 1977 par Rivest, Shamir et Adleman peu de temps après linvention de la cryptographie à clé publique. Clifford Cook, un mathématicien britannique travaillant pour les services de renseignements, a décrit un système semblable dès Ceci na été dévoilé quen 1997 parce que le travail avait été classé secret!

8 Clés pour RSA Une clé publique PK pour RSA est composée de deux nombres entiers PK=(N,e) tels que : N = pq pour deux grands nombres premiers p et q de la même taille. e > 1 et PGCD(φ(N), e) = 1 (c.-à-d. : e Z* φ(N) ). La clé privée associée à la clé publique (N,e) est d tel que : d Z* φ(N) et ed = 1 mod φ(N).

9 Chiffrement/déchiffrement RSA Chiffrement à partir de la clé publique PK=(N,e) : Le message M Z* N est chiffré comme : C = M e mod N Déchiffrement à partir de la clé privée SK=d : Le cryptogramme C Z* N est déchiffré comme : C d mod N = (M e mod N) d mod N = M ed mod N = M kφ(N)+1 mod N = (M φ(N) ) k mod N × M mod N = 1 k × M mod N = M. Il sagit dassocier chaque message à un nombre entre 0 et N-1 La chance quil ne soit pas dans Z* N est négligeable. Par Euler!

10 Complexité de générer les clés publiques pour RSA Le premier défi consiste à générer des paires (SK,PK) efficacement. Vérifions que cest possible de le faire pour PK. PK=(N,e) : Tirer au hasard deux nombres premiers de k bits, N=pq, (cependant, le résultat nest bon quavec une très très bonne probabilité!) e peut être tiré au hasard dans Z φ(N), mais il doit aussi être relativement premier à φ(N) : PGCD(φ(N), e)=PGCD((p-1)(q-1), e) = 1 Ceci coûte donc essentiellement deux fois le prix de tester la primalité de nombre de k bits. Il faut retenir p et q! Par lalgo dEuclide

11 Complexité de générer les clés secrètes pour RSA Maintenant, nous voulons déterminer SK=d à partir de PK=(N,e). Nous allons avoir besoin de p et q tels que N=pq. Calculer φ(N)=(p-1)(q-1), Trouver d tel que ed=1 mod φ(N), c.-à-d. d=e -1. Trouver d peut donc être fait efficacement puisque trouver e -1 est une problème «facile». Nous avons vu que ceci est possible par lalgo dEuclide étendu.

12 Complexité du chiffrement et du déchiffrement RSA Le message M Z* N est chiffré comme : C = M e mod N Nous avons vu que ceci peut être calculé efficacement par lalgo dexponentiation rapide. Supposons PK=(N,e) et SK=d. Le cryptogramme C Z* N est déchiffré comme : C d mod N Essentiellement, le même travail que pour le chiffrement, sauf que d est habituellement plus grand que e.

13 Quelle taille de clé pour RSA? La seule menace connue contre RSA est la factorisation de N. En particulier, factoriser N implique la connaissance de φ(N) et vice- versa. Le meilleur algorithme pour factoriser N est plus efficace que lapproche naïve qui essaie les facteurs possibles lun après lautre. En tenant compte du meilleur algorithme connu, la valeur de N devrait avoir au moins 1000 bits. Cette taille nest pas bonne pour toujours. En 1978 (RSA), 500 bits étaient suffisants. Pour certaines applications, 2000 bits sont aujourdhui recommandés.

14 La sécurité de RSA RSA peut être utilisé, semble-t-il, avec lexposant e=3. La sécurité ne devrait pas en souffrir. Cependant, d ne peut évidemment pas être trop petit!!!!! RSA a quelques problèmes de sécurité de la façon dont nous lavons défini : Le chiffrement du même message plus dune fois produit toujours le même cryptogramme. Si ladversaire sait que le message clair M correspondant au cryptogramme C est «petit» (c.-à-d. M<7 par exemple) alors M peut être déterminé en vérifiant les chiffrements de courts messages. La théorie donne des garanties de sécurité (pour autant que trouver d soit difficile à partir de N et e) seulement lorsque le message M est aléatoire dans 1...N-1.

15 Chiffrements de clés secrètes Les chiffrements et déchiffrements RSA (ou dautres systèmes à clé publique) sont beaucoup moins efficaces que ceux des systèmes à clé secrète, rendant ainsi le chiffrement de masse impossible. Les systèmes à clé publique sont cependant plus versatiles puisquils ne nécessitent pas le partage de clés secrètes. Nous pouvons obtenir le meilleur des deux mondes en utilisant un système à clés publiques pour partager une clé secrète de session pour votre système à clé secrète préféré : Obélix tire une clé K au hasard pour AES, il détermine la clé publique RSA dAstérix (N,e), Transmet C=K e mod N à Astérix, Astérix déchiffre K=C d mod N. K est utilisée par Astérix et Obélix pour chiffrer les données avec AES... Astérix et Obélix partagent une clé secrète AES K? «key enveloping»

16 Problèmes avec le chiffrement RSA de clés Rappelons ce que nous disions précédemment : RSA est un système qui peut être considéré sûr si le message à chiffrer est aléatoire dans lintervalle 1...N-1. Ceci nest certainement pas le cas lorsque le message consiste en une clé pour AES de 128 bits ou, pire, une clé DES de 64 bits. La méthode qui consiste à ajouter des «0» au bout de la clé nest pas sûre! Nous devons donc trouver une méthode de remplissage pour allonger les messages et les rendre aussi aléatoires que possible...

17 OAEP: Remplissage optimal pour chiffrement asymétrique OAEP est un standard qui permet de chiffrer des messages beaucoup plus courts que ce que la taille de N (dans RSA) permet. Supposons que N a n bits de long. Supposons les messages à envoyer ont m bits de long t.q. m=n-k0-k1. aléatoire G:{0,1} k0 -> {0,1} n-k0 H:{0,1} n-k0 -> {0,1} k0 fonction de hachage cryptographique (p.ex. SHA256) Est une fonction dexpansion cryptographique : Un générateur pseudo-aléatoire

18 OAEP (II) Soient : G:{0,1} k0 -> {0,1} n-k0 un générateur pseudo-aléatoire H:{0,1} n-k0 -> {0,1} k0 une fonction de hachage cryptographique comme SHA256. Alors, le message m {0,1} n-k0-k1 sera codé pour r aléatoire de longueur k0 par : OAEP(m) = (m || 0 k1 ) G(r) || H((m || 0 k1 ) G(r)) r Sur réception de OAEP(m) le destinataire sépare le bourrage en deux parties O 1 ||O 2 = OAEP(m). Calculer H(O 1 ) O 2 = r, et G(r) O 1 = m || 0 k1.

19 Génération de clés secrètes La cryptographie à clé publique est née (officiellement) du problème de génération de clés secrètes à partir dinformation publique, tandis que RSA permet de chiffrer. Le protocole de Diffie-Hellman (1976) permet à deux parties de séchanger une clé secrète à partir dune discussion publique. Il est utilisé dans SSH pour la création dun canal sécurisé. Lhypothèse de calcul est différente de RSA (factorisation), elle repose sur la difficulté dextraire des logarithmes discrets.

20 Mise en place Considérons le groupe multiplicatif Z p *={1,...,p-1} lensemble des entiers modulo un nombre premier p. Le groupe Z p * possède des générateurs (aussi appelé éléments primitifs). Un générateur g pour Z p * est tel que : Z p * ={g 0,g 1,g 2,...,g p-2 }. Il est possible de produire un nombre premier p de taille donnée et un générateur g pour Z p * par un algorithme efficace. De plus, il est conjecturé que pour y=g x mod p, il est difficile de trouver x à partir de y, p, g. Autrement dit, calculer le logarithme dans Z p * est difficile.

21 Échange de clé Diffie-Hellman Soit p un nombre premier et g Z p * un élément primitif. Le problème de Diffie-Hellman : étant donnés g et p premier, g x mod p, g y mod p trouver g xy mod p. Le problème de Diffie-Hellman est supposé difficile. x Z p-1 y Z p-1 O=g x mod p A=g y mod p K=A x mod p O y mod p=K (g x ) y mod p= g xy mod p= =(g y ) x mod p=

22 Attention à lhomme du milieu! O=g x mod p C=g c mod p A=g y mod p K=g cx mod p K=g cy mod p K=g cy mod p K=g cx mod p Le protocole déchange de clé de Diffie-Hellman nest sûr que si le canal entre Obélix et Astérix est authentifié. Autrement, César peut partager une clé avec Obélix et une avec Astérix tandis quils croient partager une clé entre eux. Nous verrons plus loin comment ce problème peut être résolu!

23 Conclusion Le chiffrement à clé publique offre des avantages indéniables par rapport au chiffrement à clé secrète. Cependant, ces systèmes nécessitent plus de puissance de calcul et de longues clés. Le chiffrement de clés symétriques par des méthodes asymétriques devient intéressant. Le chiffrement à clé publique doit être utilisé avec une bonne méthode de remplissage sûre. Même si les systèmes à clé publique permettent la distribution de clés, il faut absolument que lexpéditeur soit persuadé de lintégrité de la clé publique utilisée pour le chiffrement. Nous reviendrons à ce problème un peu plus tard.

24 Conclusion (II) Nous avons vu comment un système à clé publique peut être utilisé pour léchange de clés secrètes. Il sagit du protocole de Diffie-Hellman. Celui-ci est utilisé en pratique par SSH. Il y a beaucoup dautres systèmes à clé publique mais ceux-ci sont très peu utilisés dans la pratique : El-Gamal et courbes elliptiques, Paillier, Rabin.

25 Les limites de la sécurité

26 Séance de pratique (authentification) Plusieurs pays ont des restrictions sur lexportation de logiciels et matériels cryptographiques. Il semble que le chiffrement est davantage réglementé que lauthenticité. Le premier est considéré plus dangereux que le second. Rivest (R dans RSA) prétend que cette distinction est tout à fait arbitraire : Ces règles supposent que les systèmes autorisés ne peuvent être utilisés pour offrir la confidentialité. Ce que Rivest défend, cest que les modifications nécessaires sont très faciles à mettre en place sans nécessiter de cryptographie additionnelle.

27 Confidentialité à partir de lintégrité CAM (soft ou hard) CAM K M t (M,t)(M,t) oui/non Pouvez-vous utiliser une telle boîte pour obtenir de la confidentialité? Boîte inviolable Supposons que tous les (M,t) sont valides pour une clé K.

28 Solution t i {0,1} l CAM (soft ou hard) CAM K CAM CAM K M=M 1,M 2,...,M k où M i {0,1} Si M i =1 alors R i Si M i =0 alors t i {0,1} l aléatoire R=R 1,R 2,...,R k où R i {0,1} n sont aléatoires (R 1,t 1 ),(R 2,t 2 ),...(R k,t k ) Si oui alors M i =1 Sinon M i =0

29 Les redites Supposons quAstérix et Obélix soient connectés par un canal qui transmet toujours le message envoyé au destinataire, mais avec un délai possible arbitrairement long. Ils utilisent un système sûr pour lintégrité. Obélix ne transmet jamais deux fois le même message. Ceci est garanti par un numéro de séquence. Astérix peut ranger au plus N messages reçus acceptés par Obélix. Ladversaire a le contrôle du canal (il peut tenter des redites). LorsquAstérix reçoit un nouveau message avec un CAM valide, il doit déterminer si celui-ci est nouveau ou sil sagit dune redite. Montrons que si Obélix transmet au plus N+1 messages, alors Astérix peut y parvenir tandis que si N+2 messages ou plus sont transmis, alors Astérix ne peut résoudre le problème.

30 Puisque 4 messages ont été reçus Rejet! SolutionmessageindiceCAM M1M1 1 t1t1 M2M2 2 t2t2 M3M3 3 t3t3 M4M4 4 t4t4 IndiceCAM CANA L (M 3,3,t 3 ) 3 (M 4,4,t 4 ) 4 (M 2,2,t 2 ) 2 Les redites sont impossibles si le message est toujours dans la table. Lorsque Astérix a rempli son tableau, il peut espérer un seul message supplémentaire avant de fermer la session. (M 1,1,t 1 ) (M 1,1,t 1 ) Liste des messages transmis dans lordre transmis...

31 Impossibilité pour N+2 messagesmessageindiceCAM M1M1 1 t1t1 M2M2 2 t2t2 M3M3 3 t3t3 M4M4 4 t4t4 IndiceCAM CANA L (M 3,3,t 3 ) (M 4,4,t 4 ) (M 2,2,t 2 ) César tire au hasard un indice i* parmi les N+1 messages transmis. César redit M i* César attend que N+1 messages aient été transmis. La table dAstérix ne contient alors de linformation que sur N messages. (M i*,i*,t i* ) César réussira son attaque si i* nest pas dans la tableau. Le message sera accepté par Astérix puisquil peut recevoir jusquà N+2 messages. La probabilité que i* ne soit pas dans la table est 2/(N+2), auquel cas M i* sera une redite i j

32 Fonctions de compression et de hachage Soit h une fonction de hachage cryptographique qui prend 256 bits et produit une empreinte de 128 bits. Peut-on construire une fonction H qui accepte des entrées de 512 bits, produit des empreintes de 128 bits et H est une fonction de hachage cryptographique comme h? soit X une chaîne de 512 bits. Nous écrivons X=(X 0,X 1 ) où X 0 et X 1 sont chacun de 256 bits. X0X0 X1X1 h h h H(X)=H(X 0,X 1 )=h(h(X 0 ),h(X 1 )) Supposons quune collision xx sur H est trouvée : H(x)=H(x) avec xx Nous avons donc que : h(h(x 0 ),h(x 1 ))=h(h(x 0 ),h(x 1 )) 1) Si (h(x 0 ),h(x 1 ))(h(x 0 ),h(x 1 )) alors nous avons une collision sur ces deux entrées! 2) Si (h(x 0 ),h(x 1 ))=(h(x 0 ),h(x 1 )) alors ou bien x 0x 0 ou bien x 1x 1. Ceci donne aussi une collision pour h. Ex. : Si x 0x 0 alors h(x 0 )=h(x 0 ) est une collision.

33 RSA Supposons quune clé publique pour RSA est N=33 et e=13. Z 33 * ={1,2,4,5,7,8,10,13,14,16,17,19,20,23,25,26,28,29,31,32} 33=3*11 (p=3,q=11) et |Z 33 * |= φ(33)=20. Nous avons donc que d satisfait e*d = 1 mod φ(33) -> 13*d = 1 mod 20. Lalgorithme dEuclide étendu fait ce travail... Nous trouvons d=17 car 13*17=221 = 1 mod 20. Le message M=5 est chiffré par C=5 13 mod 33= 5*((5 3 ) 2 ) 2 mod 33 = 5*((125 mod 33) 2 ) 2 mod 33= 5*(26 2 ) 2 =5*(676 mod 33) 2 mod 33 5*16 2 mod 33 = 5*256 mod 33 = 5*25 mod 33 = 125 mod 33 = 26!!!!! Déchiffrons maintenant: mod 33 = 26*(((26 2 ) 2 ) 2 ) 2 mod 33 = 26*(((676 mod 33) 2 ) 2 ) 2 mod 33 = 26*((16 2 ) 2 ) 2 mod 33 = 26*((16 2 ) 2 ) 2 mod 33 = 26*(25 2 ) 2 mod 33 = 26*(25 2 ) 2 mod 33 = 26*(625 mod 33) 2 mod 33 = 26*(625 mod 33) 2 mod 33 = 26*31 2 mod 33 = 26*31 2 mod 33 = 26* (961 mod 33) mod 33 = 26* (961 mod 33) mod 33 = 26*4 mod 33 = 26*4 mod 33 = 104 mod 33 = 5!!!!! = 104 mod 33 = 5!!!!!


Télécharger ppt "Confidentialité II Systèmes à clé publique 5 e cours--Hiver 2014 Louis Salvail."

Présentations similaires


Annonces Google