1 / 33

Confidentialité II Systèmes à clé publique

Confidentialité II Systèmes à clé publique. 5 e cours--Hiver 2014 Louis Salvail. Une approche différente. Nous avons vu comment la confidentialité peut être préservée lorsque l’expéditeur et le destinataire partagent une clé secrète :

cruz
Télécharger la présentation

Confidentialité II Systèmes à clé publique

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Confidentialité IISystèmes à clé publique • 5e cours--Hiver 2014 • Louis Salvail

  2. Une approche différente • Nous avons vu comment la confidentialité peut être préservée lorsque l’expé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 d’une clé?

  3. M M C La situation D E K

  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 : EPK(M)=C, • Déchiffrement : DSK(C)= DSK(EPK(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 d’en 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 l’adversaire n’ait aucune idée à propos du message clair correspondant au message chiffré C, même étant donné PK (car l’adversaire la connaît aussi). • Habituellement il n’y a qu’une 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 s’agit d’essayer 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 l’invention 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 1973. • Ceci n’a été dévoilé qu’en 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. Le message M ∈ Z*N est chiffré comme : Chiffrement à partir de la clé publique PK=(N,e) : Chiffrement/déchiffrement RSA C = Me mod N La chance qu’il ne soit pas dans Z*N est négligeable. Il s’agit d’associer chaque message à un nombre entre 0 et N-1 Déchiffrement à partir de la clé privée SK=d : Le cryptogramme C ∈ Z*N est déchiffré comme : CdmodN= (Me mod N)d mod N = Med mod N = Mkφ(N)+1 mod N = (Mφ(N))k mod N × M mod N = 1k × M mod N = M. 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 c’est possible de le faire pour PK. • PK=(N,e) : • Tirer au hasard deux nombres premiers de k bits, • N=pq, (cependant, le résultat n’est bon qu’avec 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 l’algo d’Euclide

  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 l’algo d’Euclide étendu.

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

  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 l’approche naïve qui essaie les facteurs possibles l’un après l’autre. • En tenant compte du meilleur algorithme connu, la valeur de N devrait avoir au moins 1000 bits. • Cette taille n’est pas bonne pour toujours. En 1978 (RSA), 500 bits étaient suffisants. • Pour certaines applications, 2000 bits sont aujourd’hui recommandés.

  14. La sécurité de RSA • RSA peut être utilisé, semble-t-il, avec l’exposant 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 l’avons défini : • Le chiffrement du même message plus d’une fois produit toujours le même cryptogramme. • Si l’adversaire 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 d’autres 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 puisqu’ils 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 d’Astérix (N,e), • Transmet C=Ke mod N à Astérix, • Astérix déchiffre K=Cd 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 l’intervalle 1...N-1. • Ceci n’est 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é n’est 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. aléatoire 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. G:{0,1}k0 -> {0,1}n-k0 H:{0,1}n-k0 -> {0,1}k0 Est une fonction d’expansion cryptographique : Un générateur pseudo-aléatoire fonction de hachage cryptographique (p.ex. SHA256)

  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 || 0k1)⊕G(r) || H((m || 0k1)⊕G(r))⊕r • Sur réception de OAEP(m) le destinataire sépare le bourrage en deux parties O1||O2= OAEP(m). • Calculer H(O1)⊕O2 = r, et • G(r)⊕O1 = m || 0k1.

  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 d’information publique, tandis que RSA permet de chiffrer. • Le protocole de Diffie-Hellman (1976) permet à deux parties de s’échanger une clé secrète à partir d’une discussion publique. Il est utilisé dans SSH pour la création d’un canal sécurisé. • L’hypothèse de calcul est différente de RSA (factorisation), elle repose sur la difficulté d’extraire des logarithmes discrets.

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

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

  22. A=gy mod p C=gc mod p C’=gc’ mod p O=gx mod p Attention à l’homme du milieu! • Le protocole d’échange de clé de Diffie-Hellman n’est 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 qu’ils croient partager une clé entre eux. • Nous verrons plus loin comment ce problème peut être résolu! K=gcy mod p K’=gc’x mod p K=gcy mod p K’=gc’x mod p

  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 l’expéditeur soit persuadé de l’inté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 s’agit du protocole de Diffie-Hellman. • Celui-ci est utilisé en pratique par SSH. • Il y a beaucoup d’autres 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 l’exportation de logiciels et matériels cryptographiques. • Il semble que le chiffrement est davantage réglementé que l’authenticité. 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, c’est que les modifications nécessaires sont très faciles à mettre en place sans nécessiter de cryptographie additionnelle.

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

  28. CAM (soft ou hard) CAM (soft ou hard) Solution M=M1,M2,...,Mk où Mi∈{0,1} R=R1,R2,...,Rk où Ri∈{0,1}n sont aléatoires Si oui alors Mi=1 Sinon Mi=0 K K Si Mi=1 alors Ri (R1,t1),(R2,t2),...(Rk,tk) ti∈{0,1}l Si Mi=0 alors ti∈{0,1}l aléatoire

  29. Les redites • Supposons qu’Asté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 l’inté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. • L’adversaire a le contrôle du canal (il peut tenter des redites). • Lorsqu’Astérix reçoit un nouveau message avec un CAM valide, il doit déterminer si celui-ci est nouveau ou s’il s’agit d’une 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 Solution Rejet! • 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. Liste des messages transmis dans l’ordre transmis... (M3,3,t3) 3 ✔ (M4,4,t4) CANAL 4 ✔ (M2,2,t2) (M1,1,t1) 2 ✔ (M1,1,t1)

  31. (M3,3,t3) i ✔ Impossibilité pour N+2 messages (M4,4,t4) • César attend que N+1 messages aient été transmis. • La table d’Astérix ne contient alors de l’information que sur N messages. (M2,2,t2) j ✔ • César réussira son attaque si i* n’est pas dans la tableau. Le message sera accepté par Astérix puisqu’il peut recevoir jusqu’à N+2 messages. • La probabilité que i* ne soit pas dans la table est 2/(N+2), auquel cas Mi* sera une redite CANAL (Mi*,i*,ti*) César tire au hasard un indice i* parmi les N+1 messages transmis. César redit Mi*

  32. X0 Fonctions de compression et de hachage h h h X1 • 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=(X0,X1) où X0 et X1 sont chacun de 256 bits. Supposons qu’une collision x≠x’ sur H est trouvée : H(x)=H(x’) avec x≠x’ Nous avons donc que : h(h(x0),h(x1))=h(h(x’0),h(x’1)) 2) Si (h(x0),h(x1))=(h(x’0),h(x’1)) alors ou bien x0≠x’0ou bien x1≠x’1. Ceci donne aussi une collision pour h. Ex. : Si x0≠x’0 alors h(x0)=h(x’0) est une collision. 1) Si (h(x0),h(x1))≠(h(x’0),h(x’1)) alors nous avons une collision sur ces deux entrées! H(X)=H(X0,X1)=h(h(X0),h(X1))

  33. RSA Déchiffrons maintenant: 2617 mod 33 = 26*(((262)2)2)2 mod 33 = 26*(((676 mod 33)2)2)2 mod 33 = 26*((162)2)2 mod 33 = 26*(252)2 mod 33 = 26*(625 mod 33)2 mod 33 = 26*312 mod 33 = 26* (961 mod 33) mod 33 = 26*4 mod 33 = 104 mod 33 = 5!!!!! • Supposons qu’une clé publique pour RSA est N=33 et e=13. • Z33*={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 |Z33*|= φ(33)=20. • Nous avons donc que d satisfait e*d = 1 mod φ(33) -> 13*d = 1 mod 20. L’algorithme d’Euclide étendu fait ce travail... • Nous trouvons d=17 car 13*17=221 = 1 mod 20. • Le message M=5 est chiffré par • C=513 mod 33= 5*((53)2)2 mod 33 = • 5*((125 mod 33)2)2 mod 33= 5*(262)2=5*(676 mod 33)2 mod 33 • 5*162 mod 33 = 5*256 mod 33 = 5*25 mod 33 = • 125 mod 33 = 26!!!!!

More Related