<?xml version="1.0" encoding="utf-8"?>
<rfcdesc title="TLS 1.3 Extension for Using Certificates with an External Pre-Shared Key" num="9973" status="standards">
  <authors><author>R. Housley (Vigil Security)</author></authors>
  <rfcdate><month>July</month><year>2026</year></rfcdate>
  <date>2026-07-16</date>
<content>
  <p>L'<wikipedia>authentification</wikipedia> dans <wikipedia
  name="Transport Layer Security">TLS</wikipedia> se fait typiquement,
  soit à partir d'un <wikipedia name="Certificat
  électronique">certificat</wikipedia>, soit par une clé partagée à
  l'avance. Ce <wikipedia name="Request for comments">RFC</wikipedia>
  spécifie une extension de TLS qui permet d'utiliser certificat
  <emphasis>et</emphasis> clé partagée à l'avance. Il remplace le <rfc
  num="8773" local="true"/> mais ne change pas grand'chose, la
  principale modification étant que ce nouveau RFC a le statut de
  norme (au lieu d'être considéré comme expérimental).</p>
  <p>Rappelons d'abord qu'il y a deux sortes de clés partagées à
  l'avance (PSK, pour <foreign>Pre-Shared Key</foreign>) : celles qui
  ont été négociées dans une session précédentes (<foreign>resumption
  PSK</foreign>) et celles qui ont été négociées par un mécanisme
  extérieur (envoi par pigeon voyageur sécurisé…), les
  <foreign>external PSK</foreign>. Ce RFC ne concerne que les
  secondes. Les certificats et les clés partagées à l'avance ont des
  avantages et des inconvénients. Les certificats ne nécessitent pas
  d'arrangement préalable entre client et serveur, ce qui est
  pratique. Mais il faut se procurer un certificat auprès d'une
  <wikipedia name="Autorité de certification">AC</wikipedia>. Et les
  certificats, comme ils reposent sur des algorithmes comme <wikipedia
  name="Rivest Shamir Adleman">RSA</wikipedia> ou <wikipedia
  name="Elliptic curve digital signature algorithm">ECDSA</wikipedia>,
  sont vulnérables aux progrès de la
  <wikipedia>cryptanalyse</wikipedia>, par exemple en utilisant un
  (futur) <wikipedia name="Ordinateur quantique">ordinateur
  quantique</wikipedia> (enfin, un CRQC, un <foreign>Cryptographically
  Relevant Quantum Computer</foreign>). Utiliser une clé partagée à
  l'avance n'est pas forcément commode (par exemple quand on veut la
  changer) mais cela peut être plus sûr. Or, la norme TLS (<rfc
  num="9846" local="true"/>) ne permettait d'utiliser qu'une seule des
  deux méthodes d'authentification. Si on les combinait ? L'ajout
  d'une clé externe permettrait de rendre la sécurité plus solide.</p>
  <p>Le principe est simple : notre RFC spécifie une extension à TLS,
  <computer>tls_cert_with_extern_psk</computer> (<link
  url="https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xml#tls-extensiontype-values-1">valeur
  33</link>.) Le client TLS l'envoie dans son
  <computer>ClientHello</computer>. Elle indique la volonté de
  combiner certificat et PSK. Elle est accompagnée d'extensions
  indiquant quelle est la clé partagée à utiliser. Si le serveur TLS
  est d'accord, il met l'extension
  <computer>tls_cert_with_extern_psk</computer> dans son message
  <computer>ServerHello</computer>. (Le serveur ne peut pas décider
  seul de l'utilisation de cette extension, il faut que le client ait
  demandé d'abord.)</p> <p>Les clés ont une identité, une série
  d'octets sur lesquels client et serveur se sont mis d'accord avant
  (PSK = <foreign>Pre-Shared Key</foreign>, clé partagée à l'avance.)
  C'est cette identité qui est envoyée dans l'extension
  <computer>pre_shared_key</computer>, qui accompagne
  <computer>tls_cert_with_extern_psk</computer>. La clé elle-même est
  bien sûr un secret, connu seulement du client et du serveur (et bien
  protégée : ne la mettez pas sur un fichier lisible par tous.) Voyez
  la section 7 du RFC pour une discussion plus détaillée de la gestion
  de la PSK.</p> <p>Une fois que client et serveur sont d'accord pour
  utiliser l'extension, et ont bien une clé en commun,
  l'<wikipedia>authentification</wikipedia> se fait via le certificat
  (sections 4.4.2 et 4.4.3 du <rfc num="9846" local="true"/>) et on
  utilise ensuite, non pas seulement la clé générée (typiquement par
  <wikipedia name="Échange de clés
  Diffie-Hellman">Diffie-Hellman</wikipedia>), mais la combinaison de
  la clé générée et de la PSK. L'entropie de la PSK s'ajoute donc à
  celle de la clé générée de manière traditionnelle.</p> <p>Du point
  de vue de la sécurité, on note donc que cette technique de la PSK
  est un strict <emphasis>ajout</emphasis> à la sécurité actuelle,
  donc on peut garantir que son utilisation ne diminuera pas la
  sécurité.</p> <p>L'annexe A du RFC liste les changements depuis
  l'ancien <rfc num="8773" local="true"/> :
  <enum>
    <item>Le principal est le changement de statut, d'Expérimental à
    Norme. La technique spécifiée dans ce RFC est désormais considérée
    comme stable et validée.</item>
    <item>La menace des calculateurs quantiques est un peu
    relativisée. (Elle ne semble pas se rapprocher.)</item>
    <item>Autre relativisation, le RFC insiste désormais sur le fait
    que la PSK ne va pas servir à l'authentification (mon article sur
    le <rfc num="8773" local="true"/> était confus sur ce point).</item>
    <item>Un <link
    url="https://www.rfc-editor.org/errata/eid7598">erreur</link> a
    été corrigée (mélange entre client et serveur).</item>
    <item>Le terme de <foreign>master secret</foreign> a été remplacé
    par le plus gentillet <foreign>main secret</foreign>.</item>
  </enum>
  </p>
 <!-- Une review
   https://github.com/tlswg/rfc8773bis/blob/main/fatt-review/IETF%20FATT%20Report%20-%208773bis.pdf -->
</content>
</rfcdesc>
