Échange de clé

Protocole cryptographique permettant de négocier une clé secrète sur un canal non sécurisé

En informatique, et plus particulièrement en cryptologie, un protocole d'échange de clé (ou de négociation de clé, ou d'établissement de clé, ou de distribution de clé) est un mécanisme par lequel plusieurs participants se mettent d'accord sur une clé cryptographique[Note 1]. L'invention de la cryptographie à clé publique dans les années 1970 a produit le premier protocole d'échange de clé qui peut être démontré sûr, et ce quand bien même les communications se font sur un canal non protégé, sans utiliser de tiers de confiance. L'un des premiers protocoles de ce type, dû à Whitfield Diffie et Martin Hellman, est aujourd'hui le plus utilisé sur Internet, au travers du protocole TLS. Pour cette invention Diffie et Hellman ont reçu le prestigieux prix Turing en 2016[1].

Paramètres de configuration pour la machine de cryptographie Enigma, en fonction du jour, du mois, etc. On peut lire sur ce document plusieurs mises en garde concernant son caractère secret. Avant l'avènement de la cryptographie moderne, la nécessité de tels mécanismes d'échange de clé constituaient une vulnérabilité majeure.

Histoire modifier

Avant 1970 modifier

Avant la découverte de la cryptographie à clé publique, aucune méthode mathématique n'était connue pour effectuer l'échange de clé, qui reposait intégralement sur une sécurité opérationnelle : la clé devait être communiquée via un canal déjà sécurisé. Pour le téléphone rouge, qui utilisait un chiffrement par masque jetable, cela impliquait le transport physique de valises diplomatiques contenant les clés (sous forme de cartes perforées) des États-Unis à la Russie, et réciproquement.

Mais le cas le plus connu est certainement celui de la machine Enigma, utilisée pendant la Seconde Guerre mondiale par les forces de l'Axe pour chiffrer les communications radio. Les clés de chiffrement, qui correspondent pour Enigma aux paramètres de branchement et au choix des rotors, étaient changés quotidiennement par l'armée allemande. Avant même la guerre, en 1932, l'espion français Hans-Thilo Schmidt parvient à obtenir les clés des mois de septembre et d'octobre de la même année. C'est notamment avec ces informations que l'équipe polonaise de Marian Rejewski est parvenue à développer une méthode de déchiffrement, automatisée dès 1938. La clé étant changée uniquement une fois par jour, tous les messages interceptés dans une même journée étaient cassés simultanément. C'est en raffinant le travail de Rejewski, et en s'appuyant sur d'autres erreurs opérationnelles des forces allemandes, qu'Alan Turing parviendra à organiser le déchiffrement des communications d'Enigma.

Puzzle de Merkle modifier

Le premier mécanisme d'échange de clé est du à Ralph Merkle, qui l'a décrit en 1974[2] et publié en 1976[3]. L'idée est de proposer une liste publique de problèmes, les « puzzles », qui nécessitent un certain effort à résoudre, et qui révèlent deux secrets une fois résolus. Pour établir une clé, on choisit au hasard l'un de ces puzzle que l'on résout. Le premier secret est transmis au propriétaire des puzzles et le renseigne sur quel puzzle on a résolu, et le second secret sert de clé cryptographique.

Un adversaire écoutant la conversation ne sait pas, a priori, quel puzzle a été sélectionné. Pour retrouver la clé choisie par les deux participants, l'adversaire doit dans le pire des cas résoudre tous les puzzles proposés. Il fait donc face à un problème de complexité quadratique.

Dans le modèle de l'oracle aléatoire, on peut montrer que la sécurité de ce protocole est effectivement quadratique en le nombre de puzzles. Cette complexité n'est pas considérée suffisante en cryptographie moderne, mais un résultat de Boaz Barak et Mohammad Mahmoody-Ghidary montre qu'il n'est pas possible de faire mieux dans ce modèle[4].

Protocole de Diffie-Hellman modifier

En 1976, s'appuyant sur la construction de Merkle, Whitfield Diffie et Martin Hellman proposent d'utiliser le problème du logarithme discret dans un corps fini, un problème calculatoire considéré difficile, comme base pour construire un protocole d'échange de clé.

Le principe de fonctionnement est le suivant : pour établir une clé, Alice et Bob choisissent en secret un entier   et   respectivement. Alice calcule   et Bob calcule   , où   est un générateur d'un sous-groupe assez large, négocié à l'avance. Alice envoie   à Bob, et Bob envoie   à Alice. Finalement, Alice calcule   et Bob calcule   ; ces deux quantités sont en fait égales comme le montre un calcul rapide.

Un adversaire écoutant la conversation fait face au problème suivant : étant donné  , calculer  . Ce problème est appelé problème calculatoire de Diffie-Hellman. En 2018, la meilleure méthode connue pour l'attaquer consiste à calculer des logarithmes discrets.

La résolution du logarithme discret dans un groupe générique d'ordre premier   requiert un effort  , c'est-à-dire que l'adversaire fait face à un problème exponentiellement plus difficile que les utilisateurs du protocole. Dans les sous-groupes multiplicatifs des corps finis, utilisés initialement par Diffie et Hellman, il existe en fait des algorithmes plus efficaces, notamment des variantes du crible du corps de nombre généralisé. En 1984, Neal Koblitz et Victor S. Miller proposent d'utiliser plutôt le groupe des points rationnels d'une courbe elliptique. Pour des courbes bien choisies, aucune attaque classique plus efficace que les attaques génériques n'est connue.

En pratique, ce n'est pas le résultat direct du protocole de Diffie-Hellman qui est utilisé comme clé : on l'utilise plutôt comme source d'entropie, fournie à une fonction de dérivation de clé.

Échange de clé authentifié modifier

Le protocole de Diffie-Hellman, tel que décrit ci-dessus, ne garantit que la sécurité contre une adversaire passif, capable d'écouter la conversation mais pas d'interférer avec elle. Si l'adversaire est capable d'intercepter les communications, alors il est possible de monter une attaque de l'homme du milieu. Pour cela, il suffit à l'adversaire de se faire passer pour Alice auprès de Bob, et pour Bob auprès d'Alice. Il établira avec chacun une clé, et pourra ainsi déchiffrer les messages envoyés par Alice (et, s'il le souhaite, les transmettre à Bob, potentiellement après les avoir modifié).

Pour se prémunir d'un tel scénario, un protocole d'échange doit être authentifié. On peut pour cela utiliser un schéma de signature, et s'assurer que chaque message envoyé est signé par son auteur et vérifié par son destinataire. Pour des raisons de performance, seule une signature portant sur l'intégralité de la conversation peut être produite : c'est l'approche retenue par TLS. Cependant cette simplification fragilise l'échange de clé en pratique, puisqu'un attaquant possède jusqu'à la fin de la conversation pour forger une signature : c'est un des composants de l'attaque Logjam.

Pour pouvoir vérifier la validité d'une signature numérique, le destinataire doit avoir connaissance de la clé de vérification correspondante. Il s'agit d'une clé publique de long terme, qui peut être certifiée pour en garantir la provenance. Un échange de clé authentifié s'appuie donc sur la disponibilité d'une infrastructure de clé publique. La sécurité de la signature numérique utilisée peut reposer sur d'autres hypothèses que le problème de Diffie-Hellman, comme la difficulté de factoriser de grands entiers pour RSA.

La quantité   (ou  ) utilisée peut ainsi être calculée à chaque session avec un nouveau   (resp.  ). L'utilisation d'une clé de session « éphémère » offre la garantie suivante : si une clé de session est découverte par l'adversaire, ce dernier ne possède aucune information à propos des sessions passées ou futures. On dit qu'un tel mécanisme garantit parfaitement la confidentialité persistante.

En revanche, la clé de long terme utilisée pour la signature des messages, si elle est découverte par l'adversaire, lui permet d'usurper l'identité d'un des participants. Pour certains schémas de signature, notamment les signatures de Schnorr et ses variantes DSA, ECDSA, EdDSA, des faiblesses du générateur de nombre aléatoire sont susceptibles de révéler la clé secrète. En 2004, l'algorithme Dual EC DRBG a été standardisé par le NIST, comme générateur de nombres pseudo-aléatoire destinés à une utilisation notamment pour la signature numérique. En 2013, les révélations d'Edward Snowden confirment qu'il s'agit d'une tentative d'affaiblissement de la cryptographie (dans le cadre du programme Bullrun de la NSA), permettant à ses auteurs de prédire la génération de nombres aléatoires au moyen d'une porte dérobée. Dual EC DRBG a été retiré en 2014 de la liste officielle du NIST.

Encapsulation et échange de clé authentifié par mot de passe modifier

Plutôt qu'un protocole dans lequel les deux partis obtiennent une clé, il est possible que l'un des partis décide une clé, qu'il transmet à l'autre. Pour que cette transmission soit sûre, la clé envoyée est chiffrée : on parle d'encapsulation de clé.

Un mécanisme d'encapsulation de clé peut utiliser tout chiffrement à clé publique, par exemple RSA : Alice publie sa clé publique, Bob choisit une donnée aléatoire qu'il chiffre avec la clé d'Alice. Cette donnée sera utilisée pour dériver une clé par les deux partis.

Un cas extrême d'encapsulation consiste à utiliser un chiffrement symétrique pour envoyer une clé, ce qui requiert que les deux partis se soient préalablement coordonnés sur un secret. Ce secret peut être par exemple un mot de passe : on parle d'échange de clé authentifié par mot de passe (PAKE), dont les premières versions ont été proposées en 1992[5],[6], qui furent rapidement cassées. Les premières constructions dotées d'une preuve de sécurité sont obtenues en 2000[7],[8], dans le modèle de l'oracle aléatoire. Les premières preuves dans le modèle standard datent de 2001[9],[10].

Échange de clé multipartite modifier

En 2002, Antoine Joux montre comment utiliser les accouplements de Weil sur courbes elliptiques pour effectuer, en un tour, un échange de clé à trois partis[11]. Le protocole de Diffie-Hellman, s'il était utilisé, nécessiterait l'établissement d'un canal sécurité entre chaque paire.

En 2003, Dan Boneh et Alice Silverberg proposent de généraliser cette construction, afin d'échanger une clé entre un nombre arbitraire de participants, au moyen d'une application multilinéaire cryptographique[12]. Il s'agit d'un algorithme effectivement calculable   satisfaisant notamment que pour tous entiers  et tous   , on a  , qui vérifie une extension des propriétés de sécurité des couplages. Il faut attendre 2013 pour voir apparaître les premiers candidats[13],[14], qui ont depuis été cassés[15],[16],[17],[18].

La construction d'un protocole efficace d'échange de clé multipartite, et la conception d'une application multilinéaire cryptographique, sont en 2018 des questions de recherche encore ouvertes.

Protocoles d'échange de clé post-quantiques modifier

Le problème du logarithme discret, sur lequel s'appuie le protocole de Diffie-Hellman, peut être résolu efficacement sur un ordinateur quantique au moyen de l'algorithme de Shor. Par ailleurs, la signature utilisée pour authentifier une session est également à risque.

Plusieurs protocoles de remplacement ont donc été proposés, qui ne souffrent pas de telles faiblesses. Parmi les propositions, on compte notamment l'algorithme de Jao-De Feo[19], reposant sur les isogénies de courbes elliptiques supersingulières, et l'algorithme New Hope[20], reposant sur les problèmes de court vecteurs dans les réseaux euclidiens. New Hope a été implémenté et utilisé de manière expérimentale dans le navigateur Google Chrome en 2016[21].

Protocoles d'échange de clé quantiques modifier

Sans lien avec la section précédente, il a été proposé d'utiliser, au lieu de garanties mathématiques et informatiques, les propriétés de la physique pour assurer la sécurité de l'échange de clé. Plus spécifiquement, l'observation des propriétés statistiques d'un flux de particules intriquées, associée au théorème de non clonage permet de détecter un adversaire qui écoute, et de « jeter » une partie des bits ainsi révélés en corrigeant le bruit (ce qui corrige également les erreurs inhérente aux mesures). Cette étape de réconciliation aboutit à une séquence de bits communs aux deux partis souhaitant échanger une clé. Une étape supplémentaire d'amplification est nécessaire pour pouvoir dériver de la séquence commune une clé.

Plusieurs de ces protocoles ont été implémentés et validés expérimentalement, sur des distances couvrant plusieurs centaines de kilomètres[22].

Toutefois, l'échange de clé quantique pose un certain nombre de défis technologiques et opérationnels, qui limitent pour l'instant son déploiement : en particulier, un canal de communication spécifique doit être établi entre les participants. Par exemple, pour les protocoles BB84, B92[23] ou SARG04[24], il faut pouvoir assurer le transport de photons à basse énergie en conservant leur polarisation en dépit des phénomènes de décohérence sur toute la longueur du canal.

Notes et références modifier

Notes modifier

  1. Puisqu'il s'agit d'une unique clé, on parle d'échange de clé, au singulier, et non d'échange de clés.

Références modifier

  1. (en) « Cryptography Pioneers Receive ACM A.M. Turing Award », sur www.acm.org (consulté le )
  2. Voir http://www.merkle.com/1974/ et http://www.merkle.com/1974/Puzzles1975.12.07.pdf.
  3. (en) R. C. Merkle, « Secure Communications over Insecure Channels », Communications of the ACM 21(4), p. 294--299 (avril 1978).
  4. (en) Boaz Barak et Mohammad Mahmoody-Ghidary, Merkle Puzzles Are Optimal - An O(n²)-Query Attack on Any Key Exchange from a Random Oracle, Advances in Cryptology - CRYPTO 2009, Springer, Berlin, Heidelberg, coll. « Lecture Notes in Computer Science », (ISBN 9783642033551 et 9783642033568, DOI 10.1007/978-3-642-03356-8_22, lire en ligne), p. 374–390
  5. (en) Steven M. Bellovin et Michael Merritt, « Encrypted key exchange: password-based protocols secure against dictionary attacks », Proceedings 1992 IEEE Computer Society Symposium on Research in Security and Privacy,‎ , p. 72–84 (DOI 10.1109/risp.1992.213269, lire en ligne, consulté le )
  6. (en) Steven M. Bellovin et Michael Merritt, « Augmented encrypted key exchange: a password-based protocol secure against dictionary attacks and password file compromise », Proceedings of the 1st ACM conference on Computer and communications security (CCS '93), ACM,‎ , p. 244–250 (ISBN 0897916298, DOI 10.1145/168588.168618, lire en ligne, consulté le )
  7. (en) Mihir Bellare, David Pointcheval et Phillip Rogaway, « Authenticated Key Exchange Secure against Dictionary Attacks », Advances in Cryptology — EUROCRYPT 2000, Springer, Berlin, Heidelberg, lecture Notes in Computer Science,‎ , p. 139–155 (ISBN 3540455396, DOI 10.1007/3-540-45539-6_11, lire en ligne, consulté le )
  8. (en) Victor Boyko, Philip MacKenzie et Sarvar Patel, « Provably Secure Password-Authenticated Key Exchange Using Diffie-Hellman », Advances in Cryptology — EUROCRYPT 2000, Springer, Berlin, Heidelberg, lecture Notes in Computer Science,‎ , p. 156–171 (ISBN 3540455396, DOI 10.1007/3-540-45539-6_12, lire en ligne, consulté le )
  9. (en) Oded Goldreich et Yehuda Lindell, « Session-Key Generation Using Human Passwords Only », Journal of Cryptology, vol. 19, no 3,‎ , p. 241–340 (ISSN 0933-2790 et 1432-1378, DOI 10.1007/s00145-006-0233-z, lire en ligne, consulté le )
  10. (en) Jonathan Katz, Rafail Ostrovsky et Moti Yung, « Efficient Password-Authenticated Key Exchange Using Human-Memorable Passwords », Advances in Cryptology — EUROCRYPT 2001, Springer, Berlin, Heidelberg, lecture Notes in Computer Science,‎ , p. 475–494 (ISBN 3540449876, DOI 10.1007/3-540-44987-6_29, lire en ligne, consulté le )
  11. (en) Antoine Joux, « The Weil and Tate Pairings as Building Blocks for Public Key Cryptosystems », Algorithmic Number Theory, Springer, Berlin, Heidelberg, lecture Notes in Computer Science,‎ , p. 20–32 (ISBN 3540454551, DOI 10.1007/3-540-45455-1_3, lire en ligne, consulté le )
  12. (en) Dan Boneh et Alice Silverberg, « Applications of Multilinear Forms to Cryptography », Contemporary Mathematics Vol. 324, American Mathematical Society, pp. 71-90, 2003
  13. (en) Sanjam Garg, Craig Gentry et Shai Halevi, « Candidate Multilinear Maps from Ideal Lattices », Advances in Cryptology – EUROCRYPT 2013, Springer, Berlin, Heidelberg, lecture Notes in Computer Science,‎ , p. 1–17 (ISBN 9783642383472, DOI 10.1007/978-3-642-38348-9_1, lire en ligne, consulté le )
  14. (en) Jean-Sébastien Coron, Tancrède Lepoint et Mehdi Tibouchi, Advances in Cryptology – CRYPTO 2013, Springer, Berlin, Heidelberg, coll. « Lecture Notes in Computer Science », (ISBN 9783642400407 et 9783642400414, DOI 10.1007/978-3-642-40041-4_26, lire en ligne), p. 476–493
  15. (en) Jung Hee Cheon, Kyoohyung Han, Changmin Lee et Hansol Ryu, « Cryptanalysis of the Multilinear Map over the Integers », Advances in Cryptology -- EUROCRYPT 2015, Springer, Berlin, Heidelberg, lecture Notes in Computer Science,‎ , p. 3–12 (ISBN 9783662467992, DOI 10.1007/978-3-662-46800-5_1, lire en ligne, consulté le )
  16. (en) Jung Hee Cheon, Pierre-Alain Fouque, Changmin Lee et Brice Minaud, « Cryptanalysis of the New CLT Multilinear Map over the Integers », Advances in Cryptology – EUROCRYPT 2016, Springer, Berlin, Heidelberg, lecture Notes in Computer Science,‎ , p. 509–536 (ISBN 9783662498897, DOI 10.1007/978-3-662-49890-3_20, lire en ligne, consulté le )
  17. (en) Eric Miles, Amit Sahai et Mark Zhandry, « Annihilation Attacks for Multilinear Maps: Cryptanalysis of Indistinguishability Obfuscation over GGH13 », Advances in Cryptology – CRYPTO 2016, Springer, Berlin, Heidelberg, lecture Notes in Computer Science,‎ , p. 629–658 (ISBN 9783662530078, DOI 10.1007/978-3-662-53008-5_22, lire en ligne, consulté le )
  18. (en) Jean-Sébastien Coron, Moon Sung Lee, Tancrède Lepoint et Mehdi Tibouchi, « Cryptanalysis of GGH15 Multilinear Maps », Advances in Cryptology – CRYPTO 2016, Springer, Berlin, Heidelberg, lecture Notes in Computer Science,‎ , p. 607–628 (ISBN 9783662530078, DOI 10.1007/978-3-662-53008-5_21, lire en ligne, consulté le )
  19. (en) David Jao et Luca De Feo, « Towards Quantum-Resistant Cryptosystems from Supersingular Elliptic Curve Isogenies », Post-Quantum Cryptography, Springer, Berlin, Heidelberg, lecture Notes in Computer Science,‎ , p. 19–34 (ISBN 9783642254048, DOI 10.1007/978-3-642-25405-5_2, lire en ligne, consulté le )
  20. (en) Erdem Alkim, Léo Ducas, Thomas Pöppelmann et Peter Schwabe, « Post-Quantum Key Exchange - A New Hope », USENIX Security Symposium, 2016, p.  327-343
  21. (en) Matt Braithwaite, « Experimenting with Post-Quantum Cryptography », sur security.googleblog.com,
  22. (en) Boris Korzh, Charles Ci Wen Lim, Raphael Houlmann et Nicolas Gisin, « Provably secure and practical quantum key distribution over 307 km of optical fibre », Nature Photonics, vol. 9, no 3,‎ , p. 163–168 (ISSN 1749-4893, DOI 10.1038/nphoton.2014.327, lire en ligne, consulté le )
  23. (en) Charles H. Bennett, « Quantum cryptography using any two nonorthogonal states », Physical Review Letters, vol. 68, no 21,‎ , p. 3121–3124 (DOI 10.1103/PhysRevLett.68.3121, lire en ligne, consulté le )
  24. (en) Valerio Scarani, Antonio Acín, Grégoire Ribordy et Nicolas Gisin, « Quantum Cryptography Protocols Robust against Photon Number Splitting Attacks for Weak Laser Pulse Implementations », Physical Review Letters, vol. 92, no 5,‎ , p. 057901 (DOI 10.1103/PhysRevLett.92.057901, lire en ligne, consulté le )