<?xml version="1.0" encoding="utf-8"?>
<rfcdesc title="Composite Module-Lattice-Based Digital Signature Algorithm (ML-DSA) for use in X.509 Public Key Infrastructure" num="10073" status="standards" wg="lamps">
  <authors><author>M. Ounsworth</author><author>J. Gray (Entrust)</author><author>M. Pala (OpenCA Labs)</author><author>J. Klaussner (Bundesdruckerei)</author><author>S. Fluhrer (Cisco Systems)</author></authors>
  <rfcdate><month>November</month><year>2026</year></rfcdate>
  <date>2026-11-07</date>
<content>
  <p>C'est bien joli d'utiliser des <wikipedia name="Cryptographie
  post-quantique">algorithmes post-quantiques</wikipedia> pour que ses
  <wikipedia name="Signature numérique">signatures</wikipedia> ne
  soient pas attaquées par les futurs <wikipedia name="Calculateur
  quantique">calculateurs quantiques</wikipedia>. Mais si l'algorithme
  post-quantique cède devant une attaque <wikipedia
  name="Cryptanalyse">cryptanalytique</wikipedia> classique, n'aura
  t-on pas échangé la proie pour l'ombre ? La solution
  <emphasis>hybride</emphasis> est de mettre dans ses <wikipedia
  name="Certificat électronique">certificats</wikipedia>
  <wikipedia>X.509</wikipedia> deux clés et deux signatures,
  traditionnelle et post-quantique, et d'exiger que les deux
  signatures soient valides.</p>
  <p>Ce <wikipedia name="Request for comments">RFC</wikipedia>
  normalise donc les clés et signatures pour une configuration
  hybride, un algorithme traditionnel, qui peut être <wikipedia
  name="Rivest Shamir Adleman">RSA</wikipedia>, <wikipedia
  name="Elliptic curve digital signature algorithm">ECDSA</wikipedia>
  ou <wikipedia>EdDSA</wikipedia>, et un algorithme post-quantique,
  actuellement uniquement <wikipedia xml:lang="en" name="Lattice-based cryptography" anchor="CRYSTALS-Dilithium">ML-DSA</wikipedia>. Le RFC
  utilise le terme de <emphasis>composé</emphasis> plutôt qu'hybride
  pour insister sur le fait que les deux algorithmes sont toujours
  utilisés ensemble.</p>
  <p>Si vous voulez un arrière-plan sur ce post-quantique et ses
  motivations, voyez le <rfc num="9958" local="true"/>. Tout le projet
  de transition vers le post-quantique est soumis à deux incertitudes,
  la date à laquelle on aura des CRQC (<foreign>Cryptographically
  Relevant Quantum Computers</foreign>) et la sécurité des algorithmes
  post-quantiques, plus récents et moins testés. N'utiliser que
  l'algorithme traditionnel est imprudent, car des CRQC pourraient
  arriver un jour, n'utiliser que l'algorithme post-quantique est
  imprudent car on ne peut pas encore être parfaitement sûr de sa
  sécurité, à la fois face à la cryptanalyse, et face à une éventuelle
  erreur de programmation. D'où l'hybride, tel que décrit dans le <rfc
  num="9794" local="true"/>. Certaines régulations, par exemple <link
  url="https://cyber.gouv.fr/sites/default/files/document/Quantum_Key_Distribution_Position_Paper.pdf">en
  France</link> ou <link
  url="https://www.bsi.bund.de/SharedDocs/Downloads/EN/BSI/Publications/Brochure/quantum-safe-cryptography.pdf">en
  Allemagne</link> exigent ces systèmes hybrides.</p>
  <p>Notre <rfc num="10073"/> pousse le concept d'hybride un peu
  plus loin avec un système <emphasis>composé</emphasis>, c'est-à-dire
  que les deux clés et les deux signatures seront toujours vues comme
  une (<rfc num="9794" local="true"/>, section 2). Cela permet
  l'utilisation dans des protocoles qui ne connaissent pas le concept
  d'hybride et qui ne s'attendent pas à devoir faire deux
  vérifications. (L'idée originelle vient de <link
  url="https://link.springer.com/chapter/10.1007/978-3-319-59879-6_22">cet
  article</link>, ce qui n'a pas empêché des
  <wikipedia>brevets</wikipedia> comme US20220353061A1 ou US11968316B1
  d'être <link url="https://datatracker.ietf.org/ipr/4761/">déposés
  après</link><!-- https://patents.google.com/patent/US20220353061A1
  https://patents.google.com/patent/US11968316B1/ -->.) Et les
  composés ont aussi l'avantage de moins changer les logiciels,
  facilitant une éventuelle re-certification.</p>
  <p>Donc, résumons : ce <wikipedia name="Request for
  comments">RFC</wikipedia> normalise un schéma hybride de signature
  qui inclus un algorithme post-quantique,
  <wikipedia xml:lang="en" name="Lattice-based cryptography" anchor="CRYSTALS-Dilithium">ML-DSA</wikipedia> (normalisé dans <link url="https://csrc.nist.gov/pubs/fips/204/final">FIPS
  204</link> et aussi un peu dans le <rfc num="9881"
  local="true"/>), avec, au choix, <wikipedia name="Rivest Shamir
  Adleman">RSA</wikipedia> tel que décrit dans le <rfc num="8017"
  local="false"/>, <wikipedia name="Elliptic curve digital signature
  algorithm">ECDSA</wikipedia> tel que normalisé dans <link url="https://csrc.nist.gov/pubs/fips/186-5/final">FIPS
  186.5</link> ou encore <wikipedia>Ed25519</wikipedia> (voir le
  <rfc num="8410" local="true"/>). Les signatures, pour ce RFC, sont
  toujours combinées en une seule. Une vérification réussie implique
  que les deux signatures soient valides.</p>
  <p>Je ne vais pas reprendre les parties purement cryptographiques du
  RFC (trop dur pour moi), regardez par exemple la section 4 si vous
  voulez voir l'encodage exact des clés et signatures. Point amusant :
  on met toujours clé et signature ML-DSA en premier car,
  contrairement à RSA, leurs tailles sont fixes et cette règle permet
  donc facilement de retrouver les deux clés ou les deux
  signatures. (Sinon, l'annexe A détaille les tailles de différents
  objets, vous y verrez que l'augmentation de taille due à
  l'utilisation d'une clé ou d'une signature composées est négligeable
  par rapport à ML-DSA seul.)</p>
  <p>Le but de ce RFC est l'utilisation de ce schéma composé dans
  <wikipedia>X.509</wikipedia>/<wikipedia>PKIX</wikipedia> donc la
  section 5 décrit comment représenter clés et signatures dans un
  <wikipedia name="Certificat électronique">certificat</wikipedia>. (Notez que le cas de <wikipedia
  name="Cryptographic Message Syntax" xml:lang="en">CMS</wikipedia> est repoussé à
  une future norme.) Comme ML-DSA ne permet que la signature, pas le
  chiffrement, le certificat peut avoir les utilisations
  <computer>digitalSignature</computer> ou
  <computer>keyCertSign</computer> mais pas
  <computer>keyEncipherment</computer> ou
  <computer>encipherOnly</computer> (même si le composant traditionnel
  l'aurait permis ; rappelez-vous qu'un schéma composé doit utiliser
  les deux algorithmes, le post-quantique et le traditionnel, sinon il
  ne fournit pas la sécurité attendue). Des identifiants sont <link
  url="https://www.iana.org/assignments/smi-numbers/smi-numbers.xml#smi-numbers-1.3.6.1.5.5.7.6">réservés</link>
  pour toutes les variantes possibles, par exemple
  <computer>id-MLDSA65-Ed25519-SHA512</computer> identifie un composé
  ML-DSA 65 avec Ed25519. Le module <wikipedia>ASN.1</wikipedia>
  complet est en section 7 du RFC, avec, pour reprendre cet exemple :
<code>
 id-MLDSA65-Ed25519-SHA512 OBJECT IDENTIFIER ::= {
      iso(1) identified-organization(3) dod(6) internet(1) security(5)
      mechanisms(5) pkix(7) alg(6) 48 }
</code>
  </p>
  <p>Et comme la sécurité est compliquée, la section 9 précise un
  certain nombre de points pour faire proprement du composé avec
  ML-DSA. Elle rappelle qu'un schéma hybride de cryptographie peut
  servir à augmenter la sécurité (imposant à un attaquant de devoir
  casser l'algorithme post-quantique <emphasis>et</emphasis> le
  traditionnel) ou bien à permettre une transition en douceur au fur
  et à mesure de la disponibilité de logiciel qui connait la
  cryptographie post-quantique. Dans le premier cas, celui de notre
  RFC, on impose que les deux signatures soient valides. Dans le
  second, qui n'est <emphasis>pas</emphasis> le choix du RFC, qu'une
  seule le soit. (Je crois me souvenir qu'au début de ce RFC, le
  projet était d'avoir les deux possibilités. Quelqu'un a mieux suivi
  les débats que moi ?<!--
  https://www.ejbca.org/resources/keymaster-the-current-state-of-composites-signatures-and-certificates/
  -->)</p>
  <p>Certains experts n'aiment pas l'idée de l'hybride en disant
  que, si un attaquant ne sait attaquer qu'un seul des deux
  algorithmes, il ne va pas s'embêter, il va simplement génerer un
  faux document avec une seule signature, celle de l'algorithme qu'il
  sait casser. La réponse à cet argument est que le vérificateur
  choisit sa politique : il peut décider de n'accepter que les
  hybrides.</p>
  <p>Si vous voulez une analyse de sécurité plus détaillée, avec
  notamment la prise en compte des modèles de menace <wikipedia
  xml:lang="en" name="Digital signature forgery">EUF-CMA et
  SUF-CMA</wikipedia>, elle se trouve en section 9.2 (les systèmes
  décrits dans ce RFC résistent face à EUF-CMA mais pas face à
  SUF-DMA).</p>
  <p>Autre question amusante (section 9.5), que se passe t-il lorsqu'un algorithme
  utilisé dans l'hybride est considéré comme dépassé ? Avec les
  systèmes à un seul algorithme, c'est clair : si on connait (ou
  soupçonne sérieusement) une attaque faisable contre l'algorithme, on
  arrête de l'utiliser. Mais avec un hybride, c'est plus compliqué de
  décider puisque, après tout, le deuxième algorithme tient
  toujours. Cela peut compliquer, par exemple, les analyses de
  sécurité puisqu'un audit trop sommaire verra l'algorithme
  vulnérable, sans tenir compte du fait qu'il n'est utilisé qu'au sein
  d'un système hybride.</p>
  <p>La section 10 du RFC se penche ensuite sur quelques problèmes
  concrets. Par exemple, le bon sens nous dit que, dans un système
  hybride, il faut que les deux composants, le post-quantique et le
  traditionnel, aient à peu près la même « force », le même niveau de
  sécurité, sinon, le plus faible n'apportera pas grand'chose. Mais on
  ne sait pas quantifier cette « force » entre deux algorithmes aussi
  différents que, par exemple, ML-DSA et Ed25519. Et d'autant plus que
  ML-DSA, plus récent, est moins étudié ou testé « au feu ». Donc, le
  RFC ne prétend pas que tous les hybrides normalisés soient
  « équilibrés ». Le choix des combinaisons a plutôt été fait sur la
  base du réalisme (algorithmes courants). Lors de la discussion à
  l'<wikipedia name="Internet Engineering Task Force">IETF</wikipedia>, plusieurs personnes ont estimé que ce
  RFC créait trop de composés et qu'il aurait fallu réduire le choix à
  quelques combinaisons bien choisies, mais le groupe de travail a
  finalement décidé de « donner » à chacun sa combinaison favorite.</p>
  <p>Sinon, vous savez que les décideurs, en matière de sécurité, se
  préoccupent souvent davantage de conformité que de sécurité. Il y a
  des régulations diverses et il est plus important de les respecter
  que de choisir le « meilleur » système. La section 10.2 vient à leur
  aide en expliquant comment utiliser les systèmes composés de ce RFC
  si on doit respecter <wikipedia name="Federal Information Processing
  Standard">FIPS</wikipedia>. Si un seul des deux algorithmes du
  composé est conforme à FIPS, il faudra présenter le système comme
  ayant la sécurité de ce composant, pas celle du composé complet. Si
  on n'a pas ce problème de conformité, et qu'on n'est pas expert en
  cryptographie soi-même, le composé recommandé par ce RFC est
  <computer>id-MLDSA65-ECDSA-P256-SHA512</computer>.</p>
  <p>Enfin, l'annexe E contient les <wikipedia name="Vecteur de test">vecteurs de
  test</wikipedia>, qui forment, en nombre de pages, la grande
  majorité du RFC. Plutôt que d'essayer de les extraire laborieusement
  du RFC, il vaut mieux aller <link
  url="https://github.com/lamps-wg/draft-composite-sigs/tree/main/src">les
chercher en ligne</link>.</p>
  <!--
   There is one IPR disclosure exists:
   https://datatracker.ietf.org/ipr/4761/ -->
  <!-- Rien trouvé avec le OpenSSL 3.5.7
       de juin 2026 -->
  <!-- https://evertrust.io/blog/hybrid-post-quantum-certificates/ -->
</content>
</rfcdesc>
