<?xml version="1.0" encoding="utf-8"?>
<rfcdesc title="Hybrid key exchange in TLS 1.3" num="9954"
	 status="informational" wg="tls">
  <authors><author>D. Stebila (University of
  Waterloo)</author><author>S. Fluhrer (Cisco
  Systems)</author><author>S. Gueron (U. Haifa &amp;
  Meta)</author></authors>
  <rfcdate><month>July</month><year>2026</year></rfcdate>
  <date>2026-07-16</date>
<content>
  <p>Dans le monde merveilleux de la <wikipedia name="Cryptographie post-quantique">cryptographie
  post-quantique</wikipedia> (<rfc num="9958" local="true"/>), un problème se pose : si en voulant éviter le
  <wikipedia>Charybde</wikipedia> des <wikipedia name="Ordinateur quantique">calculateurs
  quantiques</wikipedia>, on tombe dans le
  <wikipedia name="Scylla (monstre)">Scylla</wikipedia> d'un algorithme, certes
  post-quantique, mais pour lequel une attaque <wikipedia
  name="Cryptanalyse">cryptanalytique</wikipedia> est trouvée ?
  N'aurait-on pas laché la proie pour l'ombre ? La solution, que ce
  <wikipedia name="Request for comments">RFC</wikipedia> décrit pour
  le cas de l'<link local="echange-cles">échange de clés</link> dans
  <wikipedia name="Transport Layer Security">TLS</wikipedia>, est la
  cryptographie hybride : on utilise à la fois un algorithme
  traditionnel et un post-quantique (<rfc num="9794"
  local="true"/>). Un éventuel attaquant devrait alors casser les deux
  pour réussir. </p>
  <p>Si vous n'êtes pas à l'aise avec la terminologie de la
  <wikipedia name="Cryptographie post-quantique">cryptographie post-quantique</wikipedia>, la section 1.2
  de notre <wikipedia name="Request for comments">RFC</wikipedia> la
  rappelle. Notamment, un algorithme <emphasis>traditionnel</emphasis>
  est un de ceux qu'on utilisait avant la menace des
  <wikipedia name="Ordinateur quantique">calculateurs quantiques</wikipedia>, comme par exemple
  <wikipedia name="Rivest Shamir Adleman">RSA</wikipedia> ou
  <wikipedia name="Échange de clés Diffie-Hellman basé sur les courbes
  elliptiques">ECDH</wikipedia>. Un algorithme post-quantique est un
  algorithme dont on a de bonnes raisons de penser qu'il résistera aux
  futurs CRQC (<foreign>Cryptographically-Relevant Quantum
  Computer</foreign>, les calculateurs quantiques capables de traiter
  des problèmes de cryptographie réels). Un algorithme de
  <emphasis>nouvelle génération</emphasis> est un de ceux récemment
  créés et dont on n'est pas complètement sûrs de la sécurité. Cela
  inclut certains algorithmes post-quantiques, par exemple
  <wikipedia xml:lang="en" name="Kyber">ML-KEM</wikipedia>. Un algorithme
  <emphasis>hybride</emphasis> combine un traditionnel et un
  post-quantique. On parle de clé composée quand elle est faite de
  deux clés, une traditionnelle et une post-quantique, gérées ensemble
  comme un seul algorithme. Mais les termes ne sont pas
  universellement adoptés : comme « hybride » a un autre sens en
  cryptographie (un protocole qui utilise à la fois la
  <wikipedia name="Cryptographie symétrique">cryptographie symétrique</wikipedia> et l'<wikipedia
  name="Cryptographie asymétrique">asymétrique</wikipedia>, comme
  <wikipedia name="Transport Layer Security">TLS</wikipedia> ou
  <wikipedia>OpenPGP</wikipedia>), certains préfèrent dire « composé »
  pour tout système PQ/T (post-quantique et traditionnel).</p>
  <p>« Nouvelle génération » pour parler (entre autres) des
  algorithmes post-quantiques est inhabituel mais le but est de
  montrer que la technique décrite dans ce RFC ne se limite pas au
  post-quantique : elle s'applique dès qu'on n'a aucun algorithme
  parfait et qu'on en compose deux, que ces algorithmes soient
  post-quantiques ou pas.</p>
  <p>Et puisqu'on pinaille sur le terminologie, le RFC note que
  <wikipedia name="Transport Layer Security">TLS</wikipedia> utilise
  le terme de « groupe » pour parler des algorithmes d'échange de clé
  alors que tous ces algorithmes ne font pas référence à un
  <wikipedia name="Groupe (mathématiques)">groupe</wikipedia>. Mais l'habitude s'est prise.</p>
  <p>Pourquoi créer des systèmes hybrides, PQ/T, plutôt que, par
  exemple, attendre tranquillement que les algorithmes post-quantiques
  soient mieux testés, et qu'on leur fasse autant confiance qu'à, par
  exemple, RSA ? Avoir un seul algorithme serait plus simple. Mais le
  but des hybrides est de permettre aux adopteurs précoces de se
  lancer tout de suite dans le post-quantique, en étant sûrs de ne pas
  diminuer leur sécurité actuelle. (D'autant plus que l'utilisation
  des algorithmes traditionnels peut être une obligation
  réglementaire, par exemple pour respecter <wikipedia name="Federal
  Information Processing Standard">FIPS</wikipedia>.) Ces adopteurs
  précoces peuvent être motivés, entre autres, par la crainte d'un
  décryptage rétroactif, lorsqu'un attaquant qui n'a pas de CRQC
  aujourd'hui enregistre quand même les communications, pour les
  décrypter dès qu'il pourra acheter un CRQC sur
  <wikipedia>AliExpress</wikipedia>. Si vous gérez des secrets qui ont
  une longue durée de vie (secrets d'État…), vous ne devez pas
  attendre qu'un CRQC existe réellement, même s'il n'arrive que dans
  20 ans, certains secrets durent plus longtemps que ça.</p>
  <p>Bon, maintenant, au boulot ; ce RFC sur les échanges de clé
  hybrides dans TLS 1.3 (<rfc num="9846" local="true"/>) ne va pas
  vous dire quel algorithme post-quantique utiliser, et il ne va pas
  parler d'authentification (vu la façon dont fonctionne TLS, le
  risque d'attaque rétroactive n'existe pas, donc on a le temps de
  voir venir). Par contre, il va dire comment faire que les deux
  parties aient la clé (clé pour la <wikipedia name="Cryptographie symétrique">cryptographie
  symétrique</wikipedia>, celle qui va <wikipedia
  name="Chiffrement">chiffrer</wikipedia> la communication une fois la
  session TLS établie) avec une configuration hybride, PQ/T. Parmi ses
  objectifs, il y a évidemment la compatibilité avec le TLS existant
  (un client récent doit interopérer avec un serveur ancien et
  réciproquement, sans compter les exaspérantes
  <foreign><wikipedia xml:lang="en" name="Middlebox">middleboxes</wikipedia></foreign> entre les
  deux), et de préférence sans exiger des aller-retours
  supplémentaires, car il ne faut pas dégrader la latence. Il faut
  aussi être rapide (ne pas imposer des calculs démesurés, voir
  « <foreign><link
  url="https://eprint.iacr.org/2019/1447.pdf">Benchmarking
  Post-Quantum Cryptography in TLS</link></foreign> » et
  « <foreign><link
  url="https://www.imperialviolet.org/2018/04/11/pqconftls.html">Post-quantum
  confidentiality for TLS</link></foreign> »). Et il ne faut pas trop
  augmenter la taille des <wikipedia name="Paquet (réseau)">paquets</wikipedia> : bien sûr,
  TLS fontionne sur <wikipedia name="Transmission Control
  Protocol">TCP</wikipedia> et n'a pas les problèmes que la
  <wikipedia name="Fragmentation (informatique)" anchor="Fragmentation_de_paquets">fragmentation des paquets</wikipedia> pose à <wikipedia
  name="User Datagram Protocol">UDP</wikipedia> mais quand même. Or,
  les algorithmes post-quantiques ont souvent des clés et des
  signatures bien plus grosses qu'avec les algorithmes
  traditionnels.</p>
  <p>Plus spécifiquement qu'un général <link
  local="echange-cles">échange de clés</link>, ce RFC parle de
  <wikipedia name="Mécanisme d'encapsulation de clé">KEM</wikipedia>
  (<foreign>Key Encapsulation Mechanism</foreign>). Si vous ne vous
  souvenez pas bien de ce qu'est un KEM, la section 2 du RFC vous le
  résume. Un KEM est utilisé lorsque la clé est générée par une seule
  des deux parties, et communiquée à l'autre. Le but d'un KEM est que
  les deux parties qui communiquent utilisent la même clé secrète pour
  le <wikipedia name="Chiffrement">chiffrement</wikipedia> en
  <wikipedia name="Cryptographie symétrique">cryptographie symétrique</wikipedia>. Un KEM permet se
  communiquer de manière sécurisée même face à un attaquant actif qui
  peut modifier les paquets à sa guise (au pire, il fera un déni de
  service mais ne pourra jamais lire les messages).</p>
  <p>Maintenant, les détails pratiques, en section 3. Le nom du
  mécanisme hybride va être annoncé au début de la session TLS (dans
  l'extension <computer>supported_groups</computer> et rappelez-vous
  que ce ne sont pas forcément des <wikipedia name="Groupe (mathématiques)">groupes</wikipedia>). Le nom, même si on y
  retrouve les noms des deux algorithmes (le traditionnel et le
  post-quantique) désigne le mécanisme hybride, quand on fera du
  post-quantique pur, il y aura un autre nom. Un exemple de nom (RFC pas encore publié<!-- TODO <rfc
  num="TODO draft-ietf-tls-ecdhe-mlkem" local="true"/>, TODO au 2026-04-11
  toujours en état EDIT -->) est <computer>X25519MLKEM768</computer> (le
  traditionnel <wikipedia>X25519</wikipedia> et le post-quantique
  <wikipedia xml:lang="en" name="Kyber">ML-KEM</wikipedia>). Ensuite, on fait simple : on fait un
  double échange de clefs (un traditionnel et un post-quantique) et on
  dérive ensuite les clefs de session à partir des deux. Plus
  précisément, on concatène les messages traités avec chacun des deux
  algorithmes du mécanisme hybride. Même chose pour le secret généré
  par chacun des deux algorithmes. La concaténation de ces secrets
  sera le point d'entrée du calcul de la clé.</p>
  <p>La sécurité du système (section 6) vient du fait qu'un attaquant
  devrait réussir à casser les deux algorithmes : il lui faudrait un
  CRQC <emphasis>et</emphasis> une attaque (aujourd'hui inconnue)
  contre l'algorithme quantique. C'est l'avantage de ces systèmes
  hybrides. Mais si vous voulez creuser la cryptographie qui est
  derrière ces mécanismes hybrides, le RFC recommande « <foreign><link
  url="https://link.springer.com/chapter/10.1007/978-3-319-76578-5_7">KEM
  Combiners</link></foreign> » et « <foreign><link
  url="https://link.springer.com/chapter/10.1007/978-3-030-25510-7_12">Hybrid
  Key Encapsulation Mechanisms and Authenticated Key
  Exchange</link></foreign><!-- Également
  https://eprint.iacr.org/2018/903, et la principale source
  d'inspiration pour le mécanisme de ce RFC --> ». Et si vous voulez en
  apprendre plus sur le calcul quantique, l'annexe A du RFC cite
  quelques bonnes lectures.</p>
  <p>La section 4 discute quelques problèmes avec cette approche (ou,
  parfois, avec la cryptographie post-quantique en général). Par
  exemple, les clés sont grandes. Bon, qu'on fasse de l'hybride ou du
  post-quantique pur, ça ne change pas grand'chose, c'est la clé
  post-quantique qui est responsable de la grande majorité des
  octets : <wikipedia name="Cryptosystème de McEliece">Classic McEliece</wikipedia> a des clés d'au
  moins 200 kilo-octets ! Une telle taille se heurterait à des limites
  de TLS (65 536 octets pour la clé publique) mais heureusement les
  algorithmes post-quantiques <link local="nist-pq">normalisés par le
  NIST</link> ont des clés plus petites, et qui tiennent dans les
  messages TLS (mais pas forcément dans un seul
  <wikipedia name="Paquet (réseau)">paquet</wikipedia> <wikipedia name="Internet
  Protocol">IP</wikipedia>). L'encodage de notre RFC aggrave les
  choses si on annonce deux hybrides, chacun utilisant la même clé
  post-quantique, qui sera alors envoyée deux fois.
  </p>
  <p>Les noms des mécanismes hybrides seront mis dans <link
  url="https://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8">le
  registre IANA</link> (<computer>X25519MLKEM768</computer> et
  quelques autres y sont déjà) au fur et à mesure de leur spécification.</p>
  <p>Côte mises en œuvre, les expérimentations sont anciennes : <link
  url="https://www.imperialviolet.org/2018/12/12/cecpq2.html">CECPQ2</link> ou
  <link
      url="https://github.com/open-quantum-safe/openssl/tree/OQS-OpenSSL_1_1_1-stable">OQS</link>,
  par exemple, et des <link
  url="https://link.springer.com/chapter/10.1007/978-3-030-44223-1_5">tests
  de performance ont été faits</link>. Aujourd'hui, le mécanisme
  hybride est possible avec <wikipedia name="Google Chrome">Chrome</wikipedia>,
  <wikipedia name="Mozilla Firefox">Firefox</wikipedia>, <wikipedia>OpenSSL</wikipedia>,
  wolfSSL, <wikipedia>Cloudflare</wikipedia>, Google, BoringSSL,
  <link url="https://github.com/rustls/rustls">Rustls</link>…(Je n'ai pas testé <wikipedia name="Mozilla Firefox">Firefox</wikipedia>.)</p>
  <p>
 <!--
Avant, il y avait Hybrid Post-Quantum Key Encapsulation Methods (PQ
KEM) for Transport Layer Security 1.2 (TLS)
draft-campagna-tls-bike-sike-hybrid- Mais -07 a expiré en 2021, sans successeur direct. -->
  La marche vers ce RFC a été longue. Les premiers brouillons sur un
  mécanisme hybride pour TLS,
  <computer>draft-schanck-tls-additional-keyshare</computer>,
  <computer>draft-kiefer-tls-ecdhe-sidh</computer> et <computer>draft-whyte-qsh-tls13</computer>
datent de 2017-2018. Et cet article que vous lisez a été
commencé en 2020, me dit mon <wikipedia name="Logiciel de gestion de
versions">VCS</wikipedia>. Il y a d'ailleurs eu <link
url="https://keymaterial.net/2025/11/27/ml-kem-mythbusting/">quelques
débats vigoureux</link>.</p>
</content>
</rfcdesc>
