<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-celi-wiggers-tls-authkem-06" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="AuthKEM">KEM-based Authentication for TLS 1.3</title>
    <seriesInfo name="Internet-Draft" value="draft-celi-wiggers-tls-authkem-06"/>
    <author initials="T." surname="Wiggers" fullname="Thom Wiggers">
      <organization>PQShield</organization>
      <address>
        <postal>
          <city>Nijmegen</city>
          <country>The Netherlands</country>
        </postal>
        <email>thom@thomwiggers.nl</email>
      </address>
    </author>
    <author initials="S." surname="Celi" fullname="Sofía Celi">
      <organization>Brave Software</organization>
      <address>
        <postal>
          <city>Lisbon</city>
          <country>Portugal</country>
        </postal>
        <email>cherenkov@riseup.net</email>
      </address>
    </author>
    <author initials="P." surname="Schwabe" fullname="Peter Schwabe">
      <organization>Radboud University and MPI-SP</organization>
      <address>
        <email>peter@cryptojedi.org</email>
      </address>
    </author>
    <author initials="D." surname="Stebila" fullname="Douglas Stebila">
      <organization>University of Waterloo</organization>
      <address>
        <postal>
          <city>Waterloo, ON</city>
          <country>Canada</country>
        </postal>
        <email>dstebila@uwaterloo.ca</email>
      </address>
    </author>
    <author initials="N." surname="Sullivan" fullname="Nick Sullivan">
      <organization/>
      <address>
        <email>nicholas.sullivan+ietf@gmail.com</email>
      </address>
    </author>
    <date year="2025" month="November" day="04"/>
    <area>SECAREA</area>
    <workgroup>TLS Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 184?>

<t>This document gives a construction for a Key Encapsulation Mechanism (KEM)-based
authentication mechanism in TLS 1.3. This proposal authenticates peers via a key
exchange protocol, using their long-term (KEM) public keys.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-celi-wiggers-tls-authkem/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        tlswg Working Group mailing list (<eref target="mailto:tls@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/tls/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/tls/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/kemtls/draft-celi-wiggers-tls-authkem"/>.</t>
    </note>
  </front>
  <middle>
    <?line 190?>

<section anchor="introduction">
      <name>Introduction</name>
      <t><strong>Note:</strong> This is a work-in-progress draft. We welcome discussion, feedback and
contributions through the IETF TLS working group mailing list or directly on
GitHub. Any code points indicated by this draft are for experiments only, and
should not be expected to be stable.</t>
      <t>This document gives a construction for KEM-based authentication in TLS 1.3
<xref target="RFC8446"/>. Authentication happens via asymmetric cryptography by the usage of
KEMs advertised as the long-term KEM public keys in the Certificate.</t>
      <t>TLS 1.3 is in essence a signed key exchange protocol (if using certificate-based
authentication). Authentication in TLS 1.3 is achieved by signing the handshake
transcript with digital signatures algorithms. KEM-based authentication provides
authentication by deriving a shared secret that is encapsulated against the
public key contained in the Certificate. Only the holder of the private key
corresponding to the certificate's public key can derive the same shared secret
and thus decrypt its peer's messages.</t>
      <t>This approach is appropriate for endpoints that have KEM public keys. Though
this is currently rare, certificates can be issued with (EC)DH public keys as
specified for instance in <xref target="RFC8410"/>, or using a delegation mechanism, such as
delegated credentials <xref target="I-D.ietf-tls-subcerts"/>.</t>
      <t>In this proposal, we build on <xref target="RFC9180"/>. This standard currently only covers
Diffie-Hellman based KEMs, but the first post-quantum algorithms have already
been put forward <xref target="I-D.westerbaan-cfrg-hpke-xyber768d00"/>. This proposal uses
ML-KEM <xref target="FIPS203"/> <xref target="I-D.cfrg-schwabe-kyber"/>, the first selected algorithm for
key exchange in the NIST post-quantum standardization project <xref target="NISTPQC"/>.
<xref target="I-D.ietf-lamps-kyber-certificates"/> describes how ML-KEM keys can be encoded
in X.509 certificates.</t>
      <section anchor="revision-history">
        <name>Revision history</name>
        <t><strong>This section should be removed prior to publication of a final version of this
document.</strong></t>
        <ul spacing="normal">
          <li>
            <t>Revision draft-celi-wiggers-tls-authkem-05
            </t>
            <ul spacing="normal">
              <li>
                <t>Bumped version</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Revision draft-celi-wiggers-tls-authkem-04
            </t>
            <ul spacing="normal">
              <li>
                <t>Some updates to ML-KEM</t>
              </li>
              <li>
                <t>Fixed some links</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Revision draft-celi-wiggers-tls-authkem-03
            </t>
            <ul spacing="normal">
              <li>
                <t>Assigned experimental code points</t>
              </li>
              <li>
                <t>Re-worked HPKE computation</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Revision draft-celi-wiggers-tls-authkem-02
            </t>
            <ul spacing="normal">
              <li>
                <t>Split PSK mechanism off into <xref target="I-D.wiggers-tls-authkem-psk"/></t>
              </li>
              <li>
                <t>Editing</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Revision draft-celi-wiggers-tls-authkem-01
            </t>
            <ul spacing="normal">
              <li>
                <t>Significant Editing</t>
              </li>
              <li>
                <t>Use HPKE context</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Revision draft-celi-wiggers-tls-authkem-00
            </t>
            <ul spacing="normal">
              <li>
                <t>Initial version</t>
              </li>
            </ul>
          </li>
        </ul>
        <section anchor="revision-2">
          <name>Revision 2</name>
        </section>
      </section>
      <section anchor="using-key-exchange-instead-of-signatures-for-authentication">
        <name>Using key exchange instead of signatures for authentication</name>
        <t>The elliptic-curve and finite-field-based key exchange and signature algorithms
that are currently widely used are very similar in sizes for public keys,
ciphertexts and signatures. As an example, RSA signatures are famously "just"
RSA encryption backwards.</t>
        <t>This changes in the post-quantum setting. Post-quantum key exchange and
signature algorithms have significant differences in implementation, performance
characteristics, and key and signature sizes.</t>
        <t>This also leads to increases in code size: For example, implementing highly
efficient polynomial multiplication for post-quantum key-encapsulation mechanism
ML-KEM and signature scheme ML-DSA <xref target="FIPS204"/> requires significantly
different approaches, even though the algorithms are related <xref target="K22"/>.</t>
        <t>Using the protocol proposed in this draft allows to reduce the amount of data
exchanged for handshake authentication. It also allows to re-use the
implementation that is used for ephemeral key exchange for authentication, as
KEM operations replace signing. This decreases the code size requirements, which
is especially relevant to protected implementations. Finally, KEM operations may
be more efficient than signing, which might especially affect embedded
platforms.</t>
      </section>
      <section anchor="evaluation-of-handshake-sizes">
        <name>Evaluation of handshake sizes</name>
        <t><strong>Should be removed before publishing</strong></t>
        <t>In the following table, we compare the sizes of TLS 1.3- and AuthKEM-based
handshakes. We give the transmission requirements for handshake authentication
(public key + signature), and certificate chain (intermediate CA certificate
public key and signature + root CA signature). For clarity, we are not listing
post-quantum/traditional hybrid algorithms; we also omit mechanisms such as
Certificate Transparency <xref target="RFC6962"/> or OCSP stapling <xref target="RFC6960"/>. We use
ML-KEM-768 instead of the smaller ML-KEM-512 parameter set, as the former is
currently used in experimental deployments. For signatures, we use Dilithium
(standardized as ML-DSA), the "primary" algorithm selected by NIST for
post-quantum signatures, as well as Falcon <xref target="FALCON"/>, the algorithm that offers
smaller public key and signature sizes, but which NIST indicates can be used if
the implementation requirements can be met.</t>
        <table>
          <name>Size comparison of public-key cryptography in TLS 1.3 and AuthKEM handshakes.</name>
          <thead>
            <tr>
              <th align="left">Handshake</th>
              <th align="left">HS auth algorithm</th>
              <th align="left">HS Auth bytes</th>
              <th align="left">Certificate chain bytes</th>
              <th align="left">Sum</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TLS 1.3</td>
              <td align="left">RSA-2048</td>
              <td align="left">528</td>
              <td align="left">784  (RSA-2048)</td>
              <td align="left">1312</td>
            </tr>
            <tr>
              <td align="left">TLS 1.3</td>
              <td align="left">Dilithium-2</td>
              <td align="left">3732</td>
              <td align="left">6152 (Dilithium-2)</td>
              <td align="left">9884</td>
            </tr>
            <tr>
              <td align="left">TLS 1.3</td>
              <td align="left">Falcon-512</td>
              <td align="left">1563</td>
              <td align="left">2229 (Falcon-512)</td>
              <td align="left">3792</td>
            </tr>
            <tr>
              <td align="left">TLS 1.3</td>
              <td align="left">Dilithium-2</td>
              <td align="left">3732</td>
              <td align="left">2229 (Falcon-512)</td>
              <td align="left">5961</td>
            </tr>
            <tr>
              <td align="left">AuthKEM</td>
              <td align="left">Kyber-768</td>
              <td align="left">2272</td>
              <td align="left">6152 (Dilithium-2)</td>
              <td align="left">8424</td>
            </tr>
            <tr>
              <td align="left">AuthKEM</td>
              <td align="left">Kyber-768</td>
              <td align="left">2272</td>
              <td align="left">2229 (Falcon-512)</td>
              <td align="left">4564</td>
            </tr>
          </tbody>
        </table>
        <t>Note that although TLS 1.3 with Falcon-512 is the smallest instantiation,
Falcon is very challenging to implement: signature generation requires (emulation of)
64-bit floating point operations in constant time. It is also very difficult to
protect against other side-channel attacks, as there are no known methods of
masking Falcon. In light of these difficulties, use of Falcon-512 in online
handshake signatures may not be wise.</t>
        <t>Using AuthKEM with Falcon-512 in the certificate chain remains an attractive
option, however: the certificate issuance process, because it is mostly offline,
could perhaps be set up in a way to protect the Falcon implementation against
attacks. Falcon signature verification is fast and does not require
floating-point arithmetic. Avoiding online usage of Falcon in TLS 1.3 requires
two implementations of the signature verification routines, i.e., ML-DSA and
Falcon, on top of the key exchange algorithm.</t>
        <t>In all examples, the size of the certificate chain still dominates the TLS
handshake, especially if Certificate Transparency SCT statements are included,
which is relevant in the context of the WebPKI. However, we believe that if
proposals to reduce transmission sizes of the certificate chain in the WebPKI
context are implemented, the space savings of AuthKEM naturally become
relatively larger and more significant. We discuss this in
<xref target="cert-compression"/>.</t>
      </section>
      <section anchor="related-work">
        <name>Related work</name>
        <section anchor="optls">
          <name>OPTLS</name>
          <t>This proposal draws inspiration from <xref target="I-D.ietf-tls-semistatic-dh"/>, which is
in turn based on the OPTLS proposal for TLS 1.3 <xref target="KW16"/>. However, these proposals
require a non-interactive key exchange: they combine the client's public key
with the server's long-term key. This imposes an extra requirement: the
ephemeral and static keys MUST use the same algorithm, which this proposal does
not require. Additionally, there are no post-quantum proposals for a
non-interactive key exchange currently considered for standardization, while
several KEMs are on the way.</t>
        </section>
        <section anchor="cert-compression">
          <name>Compressing certificates and certificate chains</name>
          <t>AuthKEM reduces the amount of data required for authentication in TLS. In
recognition of the large increase in handshake size that a naive adoption of
post-quantum signatures would affect, several proposals have been put forward
that aim to reduce the size of certificates in the TLS handshake. <xref target="RFC8879"/>
proposes a certificate compression mechanism based on compression algorithms,
but this is not very helpful to reduce the size of high-entropy public keys and
signatures. Proposals that offer more significant reductions of sizes of
certificate chains, such as <xref target="I-D.jackson-tls-cert-abridge"/>,
<xref target="I-D.ietf-tls-ctls"/>, <xref target="I-D.kampanakis-tls-scas-latest"/>, and
<xref target="I-D.davidben-tls-merkle-tree-certs"/> all mainly rely on some form of
out-of-band distribution of intermediate certificates or other trust anchors in
a way that requires a robust update mechanism. This makes these proposals mainly
suitable for the WebPKI setting; although this is also the setting that has the
largest number of certificates due to the inclusion of SCT statements
<xref target="RFC6962"/> and OSCP staples <xref target="RFC6960"/>.</t>
          <t>AuthKEM complements these approaches in the WebPKI setting. On its own the gains
that AuthKEM offers may be modest compared to the large sizes of certificate
chains. But when combined with compression or certificate suppression mechanisms
such as those proposed in the referenced drafts, the reduction in handshake size
when replacing Dilithium-2 by Kyber-768 for handshake authentication becomes
significant again.</t>
        </section>
      </section>
      <section anchor="organization">
        <name>Organization</name>
        <t>After a brief introduction to KEMs, we will introduce the AuthKEM authentication
mechanism. For clarity, we discuss unilateral and mutual authentication
separately. In the remainder of the draft, we will discuss the necessary
implementation mechanics, such as code points, extensions, new protocol messages
and the new key schedule. The draft concludes with ah extensive discussion of
relevant security considerations.</t>
        <t>A related mechanism for KEM-based PSK-style handshakes is discussed in
<xref target="I-D.wiggers-tls-authkem-psk"/>.</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and definitions</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.
<?line -6?>
      </t>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The following terms are used as they are in <xref target="RFC8446"/></t>
        <dl>
          <dt>client:</dt>
          <dd>
            <t>The endpoint initiating the TLS connection.</t>
          </dd>
          <dt>connection:</dt>
          <dd>
            <t>A transport-layer connection between two endpoints.</t>
          </dd>
          <dt>endpoint:</dt>
          <dd>
            <t>Either the client or server of the connection.</t>
          </dd>
          <dt>handshake:</dt>
          <dd>
            <t>An initial negotiation between client and server that establishes the
parameters of their subsequent interactions within TLS.</t>
          </dd>
          <dt>peer:</dt>
          <dd>
            <t>An endpoint.  When discussing a particular endpoint, "peer" refers to the
endpoint that is not the primary subject of discussion.</t>
          </dd>
          <dt>receiver:</dt>
          <dd>
            <t>An endpoint that is receiving records.</t>
          </dd>
          <dt>sender:</dt>
          <dd>
            <t>An endpoint that is transmitting records.</t>
          </dd>
          <dt>server:</dt>
          <dd>
            <t>The endpoint that responded to the initiation of the TLS connection. i.e. the
peer of the client.</t>
          </dd>
        </dl>
      </section>
      <section anchor="key-encapsulation-mechanisms">
        <name>Key Encapsulation Mechanisms</name>
        <t>As this proposal relies heavily on KEMs, which are not originally used by TLS,
we will provide a brief overview of this primitive. Other cryptographic
operations will be discussed later.</t>
        <t>A Key Encapsulation Mechanism (KEM) is a cryptographic primitive that defines
the methods <tt>Encapsulate</tt> and <tt>Decapsulate</tt>. In this draft, we extend these
operations with context separation strings, per HPKE <xref target="RFC9180"/>:</t>
        <dl newline="true">
          <dt><tt>Encapsulate(pkR, context_string)</tt>:</dt>
          <dd>
            <t>Takes a public key, and produces a shared secret and encapsulation.</t>
          </dd>
          <dt><tt>Decapsulate(enc, skR, context_string)</tt>:</dt>
          <dd>
            <t>Takes the encapsulation and the private key. Returns the shared secret.</t>
          </dd>
        </dl>
        <t>We implement these methods through the KEMs defined in <xref target="RFC9180"/> to export
shared secrets appropriate for using with the HKDF in TLS 1.3:</t>
        <artwork><![CDATA[
def Encapsulate(pk, context_string):
  enc, ctx = HPKE.SetupBaseS(pk, "tls13 auth-kem")
  ss = ctx.Export(context_string, HKDF.Length)
  return (enc, ss)

def Decapsulate(enc, sk, context_string):
  return HPKE.SetupBaseR(enc, sk, "tls13 auth-kem")
             .Export(context_string, HKDF.Length)
]]></artwork>
        <t>Keys are generated and encoded for transmission following the conventions in
<xref target="RFC9180"/>. The values of <tt>context_string</tt> are defined in
<xref target="kem-computations"/>.</t>
        <t><strong>Open question:</strong> Should we keep using HPKE, or just use "plain" KEMs, as in
the original KEMTLS works? Please see the discussion at <eref target="https://github.com/kemtls/draft-celi-wiggers-tls-authkem/issues/32">Issue
#32</eref>.</t>
      </section>
    </section>
    <section anchor="full-15-rtt-authkem-handshake-protocol">
      <name>Full 1.5-RTT AuthKEM Handshake Protocol</name>
      <t>Figure 1 below shows the basic KEM-authentication (AuthKEM) handshake, without
client authentication:</t>
      <artwork><![CDATA[
       Client                                     Server

Key  ^ ClientHello
Exch | + key_share
     v + signature_algorithms
                          -------->
                                             ServerHello  ^ Key
                                             + key_share  v Exch
                                   <EncryptedExtensions>
                                           <Certificate>  ^
       <KEMEncapsulation>  -------->                      |
       {Finished}          -------->                      | Auth
       [Application Data]  -------->                      |
                           <--------          {Finished}  v

       [Application Data]  <------->  [Application Data]

        +  Indicates noteworthy extensions sent in the
           previously noted message.
        <> Indicates messages protected using keys
           derived from a [sender]_handshake_traffic_secret.
        {} Indicates messages protected using keys
           derived from a
           [sender]_authenticated_handshake_traffic_secret.
        [] Indicates messages protected using keys
           derived from [sender]_application_traffic_secret_N.

       Figure 1: Message Flow for KEM-Authentication (KEM-Auth)
                 Handshake without client authentication.
]]></artwork>
      <t>This basic handshake captures the core of AuthKEM. Instead of using a signature
to authenticate the handshake, the client encapsulates a shared secret to the
server's certificate public key. Only the server that holds the private key
corresponding to the certificate public key can derive the same shared secret.
This shared secret is mixed into the handshake's key schedule. The client does
not have to wait for the server's <tt>Finished</tt> message before it can send data.
The client knows that its message can only be decrypted if the server was able
to derive the authentication shared secret encapsulated in the
<tt>KEMEncapsulation</tt> message.</t>
      <t><tt>Finished</tt> messages are sent as in TLS 1.3, and achieve full explicit
authentication.</t>
      <section anchor="client-authentication">
        <name>Client authentication</name>
        <t>For client authentication, the server sends the <tt>CertificateRequest</tt> message
as in <xref target="RFC8446"/>. This message can not be authenticated in the AuthKEM
handshake: we will discuss the implications below.</t>
        <t>As in <xref target="RFC8446"/>, section 4.4.2, if and only if the client receives
<tt>CertificateRequest</tt>, it MUST send a <tt>Certificate</tt> message. If the client
has no suitable certificate, it MUST send a <tt>Certificate</tt> message containing
no certificates. If the server is satisfied with the provided certificate, it
MUST send back a <tt>KEMEncapsulation</tt> message, containing the encapsulation to
the client's certificate. The resulting shared secret is mixed into the key
schedule. This ensures any messages sent using keys derived from it are covered
by the authentication.</t>
        <t>The AuthKEM handshake with client authentication is given in Figure 2.</t>
        <artwork><![CDATA[
       Client                                     Server

Key  ^ ClientHello
Exch | + key_share
     v + signature_algorithms
                          -------->
                                             ServerHello  ^ Key
                                             + key_share  v Exch
                                   <EncryptedExtensions>  ^ Server
                                    <CertificateRequest>  v Params
                                           <Certificate>  ^
     ^ <KEMEncapsulation>                                 |
     | {Certificate}       -------->                      |
Auth |                     <--------  {KEMEncapsulation}  | Auth
     v {Finished}          -------->                      |
       [Application Data]  -------->                      |
                           <-------           {Finished}  v

       [Application Data]  <------->  [Application Data]

        +  Indicates noteworthy extensions sent in the
           previously noted message.
        <> Indicates messages protected using keys
           derived from a [sender]_handshake_traffic_secret.
        {} Indicates messages protected using keys
           derived from a
           [sender]_authenticated_handshake_traffic_secret.
        [] Indicates messages protected using keys
           derived from [sender]_application_traffic_secret_N.

       Figure 2: Message Flow for KEM-Authentication (KEM-Auth)
                 Handshake with client authentication.
]]></artwork>
        <t>If the server is not satisfied with the client's certificates, it MAY, at its
discretion, decide to continue or terminate the handshake. If it decides to
continue, it MUST NOT send back a <tt>KEMEncapsulation</tt> message and the client
and server MUST compute the encryption keys as in the server-only authenticated
AuthKEM handshake. The <tt>Certificate</tt> remains included in the transcript. The
client MUST NOT assume it has been authenticated.</t>
        <t>Unfortunately, AuthKEM client authentication requires an extra round-trip.
Clients that know the server's long-term public KEM key MAY choose to use the
abbreviated AuthKEM handshake and opportunistically send the client certificate
as a 0-RTT-like message. This mechanism is discussed in
<xref target="I-D.wiggers-tls-authkem-psk"/>.</t>
      </section>
      <section anchor="relevant-handshake-messages">
        <name>Relevant handshake messages</name>
        <t>After the Key Exchange and Server Parameters phase of TLS 1.3 handshake, the
client and server exchange implicitly authenticated messages. KEM-based
authentication uses the same set of messages every time that certificate-based
authentication is needed.  Specifically:</t>
        <ul spacing="normal">
          <li>
            <t><tt>Certificate</tt>:  The certificate of the endpoint and any per-certificate
extensions.  This message MUST be omitted by the client if the server did not
send a <tt>CertificateRequest</tt> message (thus indicating that the client should
not authenticate with a certificate). For AuthKEM, <tt>Certificate</tt> MUST include
the long-term KEM public key. Certificates MUST be handled in accordance with
<xref target="RFC8446"/>, section 4.4.2.4.</t>
          </li>
          <li>
            <t><tt>KEMEncapsulation</tt>: A key encapsulation against the certificate's long-term
public key, which yields an implicitly authenticated shared secret.</t>
          </li>
        </ul>
      </section>
      <section anchor="overview-of-key-differences-with-rfc8446-tls-13">
        <name>Overview of key differences with RFC8446 TLS 1.3</name>
        <ul spacing="normal">
          <li>
            <t>New types of <tt>signature_algorithms</tt> for KEMs.</t>
          </li>
          <li>
            <t>Public keys in certificates are KEM algorithms.</t>
          </li>
          <li>
            <t>New handshake message <tt>KEMEncapsulation</tt>.</t>
          </li>
          <li>
            <t>The key schedule mixes in the shared secrets from the authentication.</t>
          </li>
          <li>
            <t>The <tt>Certificate</tt> is sent encrypted with a new handshake encryption key.</t>
          </li>
          <li>
            <t>The client sends <tt>Finished</tt> before the server.</t>
          </li>
          <li>
            <t>The client sends data before the server has sent <tt>Finished</tt>.</t>
          </li>
        </ul>
      </section>
      <section anchor="implicit-and-explicit-authentication">
        <name>Implicit and explicit authentication</name>
        <t>The data that the client MAY transmit to the server before having received the
server's <tt>Finished</tt> is encrypted using ciphersuites chosen based on the
client's and server's advertised preferences in the <tt>ClientHello</tt> and
<tt>ServerHello</tt> messages. The <tt>ServerHello</tt> message can however not be
authenticated before the <tt>Finished</tt> message from the server is verified. The
full implications of this are discussed in the Security Considerations section.</t>
        <t>Upon receiving the client's authentication messages, the server responds with
its <tt>Finished</tt> message, which achieves explicit authentication. Upon receiving
the server's <tt>Finished</tt> message, the client achieves explicit authentication.
Receiving this message retroactively confirms the server's cryptographic
parameter choices.</t>
      </section>
      <section anchor="authenticating-certificaterequest">
        <name>Authenticating <tt>CertificateRequest</tt></name>
        <t>The <tt>CertificateRequest</tt> message can not be authenticated during the AuthKEM
handshake; only after the <tt>Finished</tt> message from the server has been
processed, it can be proven as authentic. The security implications of this are
discussed later.</t>
        <t><strong>This is discussed in <eref target="https://github.com/kemtls/draft-celi-wiggers-tls-authkem/issues/16">GitHub issue
#16</eref>. We
would welcome feedback there.</strong></t>
        <t>Clients MAY choose to only accept post-handshake authentication.</t>
        <t><strong>TODO: Should they indicate this? TLS Flag?</strong></t>
      </section>
    </section>
    <section anchor="implementation">
      <name>Implementation</name>
      <t>In this section we will discuss the implementation details such as extensions
and key schedule.</t>
      <section anchor="negotiation-of-authkem">
        <name>Negotiation of AuthKEM</name>
        <t>Clients will indicate support for this mode by negotiating it as if it were a
signature scheme (part of the <tt>signature_algorithms</tt> extension). We thus add
these new signature scheme values (even though, they are not signature schemes)
for the KEMs defined in <xref target="RFC9180"/> Section 7.1. Note that we will be only
using their internal KEM's API defined there.</t>
        <artwork><![CDATA[
enum {
  dhkem_p256_sha256   => TBD,
  dhkem_p384_sha384   => TBD,
  dhkem_p521_sha512   => TBD,
  dhkem_x25519_sha256 => 0xFE01,
  dhkem_x448_sha512   => TBD,
  kem_x25519kyber768  => TBD, /*draft-westerbaan-cfrg-hpke-xyber768d00*/
}
]]></artwork>
        <t><strong>Please give feedback on which KEMs should be included</strong></t>
        <t>When present in the <tt>signature_algorithms</tt> extension, these values indicate
AuthKEM support with the specified key exchange mode. These values MUST NOT
appear in <tt>signature_algorithms_cert</tt>, as this extension specifies the signing
algorithms by which certificates are signed.</t>
      </section>
      <section anchor="protocol-messages">
        <name>Protocol messages</name>
        <t>The handshake protocol is used to negotiate the security parameters of a
connection, as in TLS 1.3. It uses the same messages, expect for the addition of
a <tt>KEMEncapsulation</tt> message and does not use the <tt>CertificateVerify</tt> one.</t>
        <artwork><![CDATA[
enum {
    ...
    kem_encapsulation(30),
    ...
    (255)
  } HandshakeType;

struct {
    HandshakeType msg_type;    /* handshake type */
    uint24 length;             /* remaining bytes in message */
    select (Handshake.msg_type) {
        ...
        case kem_encapsulation:     KEMEncapsulation;
        ...
    };
} Handshake;
]]></artwork>
        <t>Protocol messages MUST be sent in the order defined in Section 4. A peer which
receives a handshake message in an unexpected order MUST abort the handshake
with a "<tt>unexpected_message</tt>" alert.</t>
        <t>The <tt>KEMEncapsulation</tt> message is defined as follows:</t>
        <artwork><![CDATA[
struct {
    opaque certificate_request_context<0..2^8-1>
    opaque encapsulation<0..2^16-1>;
} KEMEncapsulation;
]]></artwork>
        <t>The encapsulation field is the result of a <tt>Encapsulate</tt> function. The
<tt>Encapsulate()</tt> function will also result in a shared secret (<tt>ssS</tt> or <tt>ssC</tt>,
depending on the peer) which is used to derive the <tt>AHS</tt> or <tt>MS</tt> secrets (See
<xref target="key-schedule"/>).</t>
        <t>If the <tt>KEMEncapsulation</tt> message is sent by a server, the authentication
algorithm MUST be one offered in the client's <tt>signature_algorithms</tt> extension.
Otherwise, the server MUST terminate the handshake with an
"<tt>unsupported_certificate</tt>" alert.</t>
        <t>If sent by a client, the authentication algorithm used in the signature MUST be
one of those present in the <tt>supported_signature_algorithms</tt> field of the
<tt>signature_algorithms</tt> extension in the <tt>CertificateRequest</tt> message.</t>
        <t>In addition, the authentication algorithm MUST be compatible with the key(s) in
the sender's end-entity certificate.</t>
        <t>The receiver of a <tt>KEMEncapsulation</tt> message MUST perform the <tt>Decapsulate()</tt>
operation by using the sent encapsulation and the private key of the public key
advertised in the end-entity certificate sent. The <tt>Decapsulate()</tt> function will
also result on a shared secret (<tt>ssS</tt> or <tt>ssC</tt>, depending on the Server or
Client executing it respectively) which is used to derive the <tt>AHS</tt> or <tt>MS</tt>
secrets.</t>
        <t><tt>certificate_request_context</tt> is included to allow the recipient to identify the
certificate against which the encapsulation was generated. It MUST be set to the
value in the <tt>Certificate</tt> message to which the encapsulation was computed.</t>
      </section>
      <section anchor="cryptographic-computations">
        <name>Cryptographic computations</name>
        <t>The AuthKEM handshake establishes three input secrets which are combined to
create the actual working keying material, as detailed below. The key derivation
process incorporates both the input secrets and the handshake transcript.  Note
that because the handshake transcript includes the random values from the Hello
messages, any given handshake will have different traffic secrets, even if the
same input secrets are used.</t>
        <section anchor="key-schedule">
          <name>Key schedule for full AuthKEM handshakes</name>
          <t>AuthKEM uses the same <tt>HKDF-Extract</tt> and <tt>HKDF-Expand</tt> functions as defined by
TLS 1.3, in turn defined by <xref target="RFC5869"/>.</t>
          <t>Keys are derived from two input secrets using the <tt>HKDF-Extract</tt> and
<tt>Derive-Secret</tt> functions.  The general pattern for adding a new secret is to
use <tt>HKDF-Extract</tt> with the Salt being the current secret state and the Input
Keying Material (IKM) being the new secret to be added.</t>
          <t>The notable differences are:</t>
          <ul spacing="normal">
            <li>
              <t>The addition of the <tt>Authenticated Handshake Secret</tt> and a new set of
handshake traffic encryption keys.</t>
            </li>
            <li>
              <t>The inclusion of the <tt>SSs</tt> and <tt>SSc</tt> (if present) shared secrets as IKM to
<tt>Authenticated Handshake Secret</tt> and <tt>Main Secret</tt>, respectively.</t>
            </li>
          </ul>
          <t>The full key schedule proceeds as follows:</t>
          <artwork><![CDATA[
            0
            |
            v
    PSK -> HKDF-Extract = Early Secret
            |
            +--> Derive-Secret(., "ext binder" | "res binder", "")
            |                  = binder_key
            |
            +--> Derive-Secret(., "c e traffic", ClientHello)
            |                  = client_early_traffic_secret
            |
            +--> Derive-Secret(., "e exp master", ClientHello)
            |                  = early_exporter_master_secret
            v
            Derive-Secret(., "derived", "")
            |
            v
(EC)DHE -> HKDF-Extract = Handshake Secret
            |
            +--> Derive-Secret(., "c hs traffic",
            |                  ClientHello...ServerHello)
            |                  = client_handshake_traffic_secret
            |
            +--> Derive-Secret(., "s hs traffic",
            |                  ClientHello...ServerHello)
            |                  = server_handshake_traffic_secret
            v
            Derive-Secret(., "derived", "") = dHS
            |
            v
    SSs -> HKDF-Extract = Authenticated Handshake Secret
            |
            +--> Derive-Secret(., "c ahs traffic",
            |                  ClientHello...KEMEncapsulation)
            |         = client_handshake_authenticated_traffic_secret
            |
            +--> Derive-Secret(., "s ahs traffic",
            |                  ClientHello...KEMEncapsulation)
            |         = server_handshake_authenticated_traffic_secret
            v
            Derive-Secret(., "derived", "") = dAHS
            |
            v
SSc||0 * -> HKDF-Extract = Main Secret
            |
            +--> Derive-Secret(., "c ap traffic",
            |                  ClientHello...client Finished)
            |                  = client_application_traffic_secret_0
            |
            +--> Derive-Secret(., "s ap traffic",
            |                  ClientHello...server Finished)
            |                  = server_application_traffic_secret_0
            |
            +--> Derive-Secret(., "exp master",
            |                  ClientHello...server Finished)
            |                  = exporter_master_secret
            |
            +--> Derive-Secret(., "res master",
                               ClientHello...server Finished)
                               = resumption_master_secret

*: if client authentication was requested, the `SSc` value should
   be used. Otherwise, the `0` value is used.
]]></artwork>
        </section>
        <section anchor="kem-computations">
          <name>Computations of KEM shared secrets</name>
          <t>The operations to compute <tt>SSs</tt> or <tt>SSc</tt> from the client are:</t>
          <artwork><![CDATA[
SSs, encapsulation <- Encapsulate(public_key_server,
                                  "server authentication")
               SSc <- Decapsulate(encapsulation, private_key_client,
                                  "client authentication")
]]></artwork>
          <t>The operations to compute <tt>SSs</tt> or <tt>SSc</tt> from the server are:</t>
          <artwork><![CDATA[
               SSs <- Decapsulate(encapsulation, private_key_server
                                  "server authentication")
SSc, encapsulation <- Encapsulate(public_key_client,
                                  "client authentication")
]]></artwork>
        </section>
        <section anchor="explicit-authentication-messages">
          <name>Explicit Authentication Messages</name>
          <t>AuthKEM upgrades implicit to explicit authentication through the <tt>Finished</tt>
message. Note that in the full handshake, AuthKEM achieves explicit
authentication only when the server sends the final <tt>Finished</tt> message (the
client is only implicitly authenticated when they send their <tt>Finished</tt>
message).</t>
          <t>Full downgrade resilience and forward secrecy is achieved once the AuthKEM
handshake completes.</t>
          <t>The key used to compute the <tt>Finished</tt> message MUST be computed from the
<tt>MainSecret</tt> using HKDF (instead of a key derived from HS as in <xref target="RFC8446"/>).
Specifically:</t>
          <artwork><![CDATA[
server/client_finished_key =
  HKDF-Expand-Label(MainSecret,
                    server/client_label,
                    "", Hash.length)
server_label = "tls13 server finished"
client_label = "tls13 client finished"
]]></artwork>
          <t>The <tt>verify_data</tt> value is computed as follows. Note that instead of what is
specified in <xref target="RFC8446"/>, we use the full transcript for both server and client
Finished messages:</t>
          <artwork><![CDATA[
server/client_verify_data =
      HMAC(server/client_finished_key,
           Transcript-Hash(Handshake Context,
                           Certificate*,
                           KEMEncapsulation*,
                           Finished**))

*  Only included if present.
** The party who last sends the finished message in terms of flights
   includes the other party's Finished message.
]]></artwork>
          <t>Any records following a <tt>Finished</tt> message MUST be encrypted under the
appropriate application traffic key as described in <xref target="RFC8446"/>. In particular,
this includes any alerts sent by the server in response to client
<tt>Certificate</tt> and <tt>KEMEncapsulation</tt> messages.</t>
          <t>See <xref target="SSW20"/> for a full treatment of implicit and explicit authentication.</t>
        </section>
      </section>
    </section>
    <section anchor="sec-considerations">
      <name>Security Considerations</name>
      <section anchor="implicit-authentication">
        <name>Implicit authentication</name>
        <t>Because preserving a 1/1.5RTT handshake in KEM-Auth requires the client to send
its request in the same flight when the <tt>ServerHello</tt> message is received, it
can not yet have explicitly authenticated the server. However, through the
inclusion of the key encapsulated to the server's long-term secret, only an
authentic server should be able to decrypt these messages.</t>
        <t>However, the client can not have received confirmation that the server's choices
for symmetric encryption, as specified in the <tt>ServerHello</tt> message, were
authentic. These are not authenticated until the <tt>Finished</tt> message from the
server arrived. This may allow an adversary to downgrade the symmetric
algorithms, but only to what the client is willing to accept. If such an attack
occurs, the handshake will also never successfully complete and no data can be
sent back.</t>
        <t>If the client trusts the symmetric algorithms advertised in its <tt>ClientHello</tt>
message, this should not be a concern. A client MUST NOT accept any
cryptographic parameters it does not include in its own <tt>ClientHello</tt> message.</t>
        <t>If client authentication is used, explicit authentication is reached before any
application data, on either client or server side, is transmitted.</t>
        <t>Application Data MUST NOT be sent prior to sending the Finished message, except
as specified in Section 2.3 of <xref target="RFC8446"/>.  Note that while the client MAY
send Application Data prior to receiving the server's last explicit
Authentication message, any data sent at that point is, being sent to an
implicitly authenticated peer.</t>
      </section>
      <section anchor="authentication-of-certificate-request">
        <name>Authentication of Certificate Request</name>
        <t>Due to the implicit authentication of the server's messages during the full
AuthKEM handshake, the <tt>CertificateRequest</tt> message can not be authenticated
before the client received <tt>Finished</tt>.</t>
        <t>The key schedule guarantees that the server can not read the client's
certificate message (as discussed above). An active adversary that maliciously
inserts a <tt>CertificateRequest</tt> message will also result in a mismatch in
transcript hashes, which will cause the handshake to fail.</t>
        <t>However, there may be side effects. The adversary might learn that the client
has a certificate by observing the length of the messages sent. There may also
be side effects, especially in situations where the client is prompted to e.g.
approve use or unlock a certificate stored encrypted or on a smart card.</t>
      </section>
      <section anchor="other-security-considerations">
        <name>Other security considerations</name>
        <ul spacing="normal">
          <li>
            <t>Because the Main Secret is derived from both the ephemeral key exchange,
as well as from the key exchanges completed for server and (optionally) client
authentication, the MS secret always reflects the peers' views of the authentication
status correctly. This is an improvement over TLS 1.3 for client authentication.</t>
          </li>
          <li>
            <t>The academic works proposing AuthKEM (KEMTLS) contains an in-depth technical
discussion of and a proof of the security of the handshake protocol without
client authentication <xref target="SSW20"/>, <xref target="Wig24"/>.</t>
          </li>
          <li>
            <t>The work proposing the variant protocol <xref target="SSW21"/>, <xref target="Wig24"/> with pre-distributed public
keys (the abbreviated AuthKEM handshake) has a proof for both unilaterally and
mutually authenticated handshakes.</t>
          </li>
          <li>
            <t>We have proofs of the security of KEMTLS and KEMTLS-PDK in Tamarin. <xref target="CHSW22"/></t>
          </li>
          <li>
            <t>Application Data sent prior to receiving the server's last explicit
authentication message (the Finished message) can be subject to a client
certificate suite downgrade attack. Full downgrade resilience and forward
secrecy is achieved once the handshake completes.</t>
          </li>
          <li>
            <t>The client's certificate is kept secret from active observers by the
derivation of the <tt>client_authenticated_handshake_secret</tt>, which ensures that
only the intended server can read the client's identity.</t>
          </li>
          <li>
            <t>If AuthKEM client authentication is used, the resulting shared secret is
included in the key schedule. This ensures that both peers have a consistent
view of the authentication status, unlike <xref target="RFC8446"/>.</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC9180">
          <front>
            <title>Hybrid Public Key Encryption</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="K. Bhargavan" initials="K." surname="Bhargavan"/>
            <author fullname="B. Lipp" initials="B." surname="Lipp"/>
            <author fullname="C. Wood" initials="C." surname="Wood"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>This document describes a scheme for hybrid public key encryption (HPKE). This scheme provides a variant of public key encryption of arbitrary-sized plaintexts for a recipient public key. It also includes three authenticated variants, including one that authenticates possession of a pre-shared key and two optional ones that authenticate possession of a key encapsulation mechanism (KEM) private key. HPKE works for any combination of an asymmetric KEM, key derivation function (KDF), and authenticated encryption with additional data (AEAD) encryption function. Some authenticated variants may not be supported by all KEMs. We provide instantiations of the scheme using widely used and efficient primitives, such as Elliptic Curve Diffie-Hellman (ECDH) key agreement, HMAC-based key derivation function (HKDF), and SHA2.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9180"/>
          <seriesInfo name="DOI" value="10.17487/RFC9180"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-kyber-certificates">
          <front>
            <title>Internet X.509 Public Key Infrastructure - Algorithm Identifiers for the Module-Lattice-Based Key-Encapsulation Mechanism (ML-KEM)</title>
            <author fullname="Sean Turner" initials="S." surname="Turner">
              <organization>sn3rd</organization>
            </author>
            <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
              <organization>AWS</organization>
            </author>
            <author fullname="Jake Massimo" initials="J." surname="Massimo">
              <organization>AWS</organization>
            </author>
            <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
              <organization>Cloudflare</organization>
            </author>
            <date day="22" month="July" year="2025"/>
            <abstract>
              <t>   The Module-Lattice-Based Key-Encapsulation Mechanism (ML-KEM) is a
   quantum-resistant key-encapsulation mechanism (KEM).  This document
   specifies the conventions for using the ML-KEM in X.509 Public Key
   Infrastructure.  The conventions for the subject public keys and
   private keys are also specified.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-kyber-certificates-11"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC5869">
          <front>
            <title>HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
            <author fullname="H. Krawczyk" initials="H." surname="Krawczyk"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <date month="May" year="2010"/>
            <abstract>
              <t>This document specifies a simple Hashed Message Authentication Code (HMAC)-based key derivation function (HKDF), which can be used as a building block in various protocols and applications. The key derivation function (KDF) is intended to support a wide range of applications and requirements, and is conservative in its use of cryptographic hash functions. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5869"/>
          <seriesInfo name="DOI" value="10.17487/RFC5869"/>
        </reference>
        <reference anchor="SSW20">
          <front>
            <title>Post-Quantum TLS without Handshake Signatures</title>
            <author initials="D." surname="Stebila" fullname="Douglas Stebila">
              <organization>University of Waterloo</organization>
            </author>
            <author initials="P." surname="Schwabe" fullname="Peter Schwabe">
              <organization>Radboud University and Max Planck Institute for Security and Privacy</organization>
            </author>
            <author initials="T." surname="Wiggers" fullname="Thom Wiggers">
              <organization>Radboud University</organization>
            </author>
            <date year="2020" month="November"/>
          </front>
          <seriesInfo name="ACM CCS 2020" value=""/>
          <seriesInfo name="DOI" value="10.1145/3372297.3423350"/>
          <seriesInfo name="IACR ePrint" value="https://ia.cr/2020/534"/>
        </reference>
        <reference anchor="SSW21">
          <front>
            <title>More Efficient KEMTLS with Pre-Shared Keys</title>
            <author initials="D." surname="Stebila" fullname="Douglas Stebila">
              <organization>University of Waterloo</organization>
            </author>
            <author initials="P." surname="Schwabe" fullname="Peter Schwabe">
              <organization>Radboud University and Max Planck Institute for Security and Privacy</organization>
            </author>
            <author initials="T." surname="Wiggers" fullname="Thom Wiggers">
              <organization>Radboud University</organization>
            </author>
            <date year="2021" month="May"/>
          </front>
          <seriesInfo name="ESORICS 2021" value=""/>
          <seriesInfo name="DOI" value="10.1007/978-3-030-88418-5_1"/>
          <seriesInfo name="IACR ePrint" value="https://ia.cr/2021/779"/>
        </reference>
        <reference anchor="CHSW22">
          <front>
            <title>A tale of two models: formal verification of KEMTLS in Tamarin</title>
            <author initials="S." surname="Celi" fullname="Sofía Celi">
              <organization>Brave Software</organization>
            </author>
            <author initials="J." surname="Hoyland" fullname="Jonathan Hoyland">
              <organization>Cloudflare, Inc.</organization>
            </author>
            <author initials="D." surname="Stebila" fullname="Douglas Stebila">
              <organization>University of Waterloo</organization>
            </author>
            <author initials="T." surname="Wiggers" fullname="Thom Wiggers">
              <organization>Radboud University</organization>
            </author>
            <date year="2022" month="August"/>
          </front>
          <seriesInfo name="ESORICS 2022" value=""/>
          <seriesInfo name="DOI" value="10.1007/978-3-031-17143-7_4"/>
          <seriesInfo name="IACR ePrint" value="https://ia.cr/2022/1111"/>
        </reference>
        <reference anchor="Wig24">
          <front>
            <title>Post-Quantum TLS</title>
            <author initials="T." surname="Wiggers" fullname="Thom Wiggers">
              <organization>Radboud University</organization>
            </author>
            <date year="2024" month="January" day="09"/>
          </front>
          <seriesInfo name="PhD thesis" value="https://thomwiggers.nl/publication/thesis/"/>
        </reference>
        <reference anchor="NISTPQC">
          <front>
            <title>Post-Quantum Cryptography Standardization</title>
            <author initials="" surname="NIST">
              <organization>National Institute for Standards and Technology</organization>
            </author>
            <date year="2020"/>
          </front>
        </reference>
        <reference anchor="KW16" target="https://ia.cr/2015/978">
          <front>
            <title>The OPTLS Protocol and TLS 1.3</title>
            <author initials="H." surname="Krawczyk" fullname="Hugo Krawczyk">
              <organization>IBM Research</organization>
            </author>
            <author initials="H." surname="Wee" fullname="Hoeteck Wee">
              <organization>ENS, CNRS, INRIA and Columbia University</organization>
            </author>
            <date year="2016"/>
          </front>
          <seriesInfo name="Proceedings of Euro S&amp;P 2016" value=""/>
        </reference>
        <reference anchor="K22" target="https://kannwischer.eu/thesis/">
          <front>
            <title>Polynomial Multiplication for Post-Quantum Cryptography</title>
            <author initials="M. J." surname="Kannwischer" fullname="Matthias J. Kannwischer">
              <organization>Radboud University</organization>
            </author>
            <date year="2022" month="April" day="22"/>
          </front>
          <seriesInfo name="Ph.D." value="thesis"/>
        </reference>
        <reference anchor="FALCON" target="https://falcon-sign.info">
          <front>
            <title>Falcon</title>
            <author initials="P." surname="Fouque">
              <organization/>
            </author>
            <author initials="J." surname="Hoffstein">
              <organization/>
            </author>
            <author initials="P." surname="Kirchner">
              <organization/>
            </author>
            <author initials="V." surname="Lyubashevsky">
              <organization/>
            </author>
            <author initials="T." surname="Pornin">
              <organization/>
            </author>
            <author initials="T." surname="Ricosset">
              <organization/>
            </author>
            <author initials="G." surname="Seiler">
              <organization/>
            </author>
            <author initials="W." surname="Whyte">
              <organization/>
            </author>
            <author initials="Z." surname="Zhang">
              <organization/>
            </author>
            <date year="2021"/>
          </front>
        </reference>
        <reference anchor="FIPS203">
          <front>
            <title>Module-Lattice-Based Key-Encapsulation Mechanism Standard</title>
            <author initials="" surname="National Institute of Standards and Technology">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="DOI" value="10.6028/NIST.FIPS.203"/>
        </reference>
        <reference anchor="FIPS204">
          <front>
            <title>Module-Lattice-Based Digital Signature Standard</title>
            <author initials="" surname="National Institute of Standards and Technology">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="DOI" value="10.6028/NIST.FIPS.203"/>
        </reference>
        <reference anchor="RFC8410">
          <front>
            <title>Algorithm Identifiers for Ed25519, Ed448, X25519, and X448 for Use in the Internet X.509 Public Key Infrastructure</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies algorithm identifiers and ASN.1 encoding formats for elliptic curve constructs using the curve25519 and curve448 curves. The signature algorithms covered are Ed25519 and Ed448. The key agreement algorithms covered are X25519 and X448. The encoding for public key, private key, and Edwards-curve Digital Signature Algorithm (EdDSA) structures is provided.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8410"/>
          <seriesInfo name="DOI" value="10.17487/RFC8410"/>
        </reference>
        <reference anchor="I-D.ietf-tls-subcerts">
          <front>
            <title>Delegated Credentials for TLS and DTLS</title>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <author fullname="Subodh Iyengar" initials="S." surname="Iyengar">
              <organization>Facebook</organization>
            </author>
            <author fullname="Nick Sullivan" initials="N." surname="Sullivan">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Mozilla</organization>
            </author>
            <date day="30" month="June" year="2022"/>
            <abstract>
              <t>The organizational separation between operators of TLS and DTLS endpoints and the certification authority can create limitations.  For example, the lifetime of certificates, how they may be used, and the algorithms they support are ultimately determined by the Certification Authority (CA).  This document describes a mechanism to overcome some of these limitations by enabling operators to delegate their own credentials for use in TLS and DTLS without breaking compatibility with peers that do not support this specification.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-subcerts-15"/>
        </reference>
        <reference anchor="I-D.westerbaan-cfrg-hpke-xyber768d00">
          <front>
            <title>X25519Kyber768Draft00 hybrid post-quantum KEM for HPKE</title>
            <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="14" month="May" year="2024"/>
            <abstract>
              <t>   This memo defines X25519Kyber768Draft00, a hybrid post-quantum KEM,
   for HPKE (RFC9180).  This KEM does not support the authenticated
   modes of HPKE.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-westerbaan-cfrg-hpke-xyber768d00-03"/>
        </reference>
        <reference anchor="I-D.cfrg-schwabe-kyber">
          <front>
            <title>Kyber Post-Quantum KEM</title>
            <author fullname="Peter Schwabe" initials="P." surname="Schwabe">
              <organization>MPI-SP &amp; Radboud University</organization>
            </author>
            <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
              <organization>Cloudflare</organization>
            </author>
            <date day="2" month="January" year="2024"/>
            <abstract>
              <t>   This memo specifies a preliminary version ("draft00", "v3.02") of
   Kyber, an IND-CCA2 secure Key Encapsulation Method.

About This Document

   This note is to be removed before publishing as an RFC.

   The latest revision of this draft can be found at
   https://bwesterb.github.io/draft-schwabe-cfrg-kyber/draft-cfrg-
   schwabe-kyber.html.  Status information for this document may be
   found at https://datatracker.ietf.org/doc/draft-cfrg-schwabe-kyber/.

   Source for this draft and an issue tracker can be found at
   https://github.com/bwesterb/draft-schwabe-cfrg-kyber.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-cfrg-schwabe-kyber-04"/>
        </reference>
        <reference anchor="I-D.wiggers-tls-authkem-psk">
          <front>
            <title>KEM-based pre-shared-key handshakes for TLS 1.3</title>
            <author fullname="Thom Wiggers" initials="T." surname="Wiggers">
              <organization>PQShield</organization>
            </author>
            <author fullname="Sofia Celi" initials="S." surname="Celi">
              <organization>Brave Software</organization>
            </author>
            <author fullname="Peter Schwabe" initials="P." surname="Schwabe">
              <organization>Radboud University and MPI-SP</organization>
            </author>
            <author fullname="Douglas Stebila" initials="D." surname="Stebila">
              <organization>University of Waterloo</organization>
            </author>
            <author fullname="Nick Sullivan" initials="N." surname="Sullivan">
         </author>
            <date day="22" month="April" year="2025"/>
            <abstract>
              <t>   This document gives a construction in which (long-term) KEM public
   keys are used in the place of TLS PSK keys, avoiding concerns that
   may affect systems that use symmetric-key-based PSK, such as
   requiring key diversification and protection of symmetric-keys'
   confidentiality.

   This mechanism is inspired by AuthKEM (and could use AuthKEM
   certificate public keys for resumption), but can be independently
   implemented.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-wiggers-tls-authkem-psk-03"/>
        </reference>
        <reference anchor="RFC6962">
          <front>
            <title>Certificate Transparency</title>
            <author fullname="B. Laurie" initials="B." surname="Laurie"/>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <author fullname="E. Kasper" initials="E." surname="Kasper"/>
            <date month="June" year="2013"/>
            <abstract>
              <t>This document describes an experimental protocol for publicly logging the existence of Transport Layer Security (TLS) certificates as they are issued or observed, in a manner that allows anyone to audit certificate authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
              <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6962"/>
          <seriesInfo name="DOI" value="10.17487/RFC6962"/>
        </reference>
        <reference anchor="RFC6960">
          <front>
            <title>X.509 Internet Public Key Infrastructure Online Certificate Status Protocol - OCSP</title>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="M. Myers" initials="M." surname="Myers"/>
            <author fullname="R. Ankney" initials="R." surname="Ankney"/>
            <author fullname="A. Malpani" initials="A." surname="Malpani"/>
            <author fullname="S. Galperin" initials="S." surname="Galperin"/>
            <author fullname="C. Adams" initials="C." surname="Adams"/>
            <date month="June" year="2013"/>
            <abstract>
              <t>This document specifies a protocol useful in determining the current status of a digital certificate without requiring Certificate Revocation Lists (CRLs). Additional mechanisms addressing PKIX operational requirements are specified in separate documents. This document obsoletes RFCs 2560 and 6277. It also updates RFC 5912.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6960"/>
          <seriesInfo name="DOI" value="10.17487/RFC6960"/>
        </reference>
        <reference anchor="I-D.ietf-tls-semistatic-dh">
          <front>
            <title>Semi-Static Diffie-Hellman Key Establishment for TLS 1.3</title>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Nick Sullivan" initials="N." surname="Sullivan">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Apple Inc.</organization>
            </author>
            <date day="7" month="March" year="2020"/>
            <abstract>
              <t>   TLS 1.3 [RFC8446] specifies a signed Diffie-Hellman exchange modelled
   after SIGMA [SIGMA].  This design is suitable for endpoints whose
   certified credential is a signing key, which is the common situation
   for current TLS servers.  This document describes a mode of TLS 1.3
   in which one or both endpoints have a certified DH key which is used
   to authenticate the exchange.

Note to Readers

   Source for this draft and an issue tracker can be found at
   https://github.com/ekr/draft-rescorla-tls13-semistatic-dh
   (https://github.com/ekr/draft-rescorla-tls13-semistatic-dh).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-semistatic-dh-01"/>
        </reference>
        <reference anchor="RFC8879">
          <front>
            <title>TLS Certificate Compression</title>
            <author fullname="A. Ghedini" initials="A." surname="Ghedini"/>
            <author fullname="V. Vasiliev" initials="V." surname="Vasiliev"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>In TLS handshakes, certificate chains often take up the majority of the bytes transmitted.</t>
              <t>This document describes how certificate chains can be compressed to reduce the amount of data transmitted and avoid some round trips.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8879"/>
          <seriesInfo name="DOI" value="10.17487/RFC8879"/>
        </reference>
        <reference anchor="I-D.jackson-tls-cert-abridge">
          <front>
            <title>Abridged Compression for WebPKI Certificates</title>
            <author fullname="Dennis Jackson" initials="D." surname="Jackson">
              <organization>Mozilla</organization>
            </author>
            <date day="6" month="July" year="2023"/>
            <abstract>
              <t>   This draft defines a new TLS Certificate Compression scheme which
   uses a shared dictionary of root and intermediate WebPKI
   certificates.  The scheme smooths the transition to post-quantum
   certificates by eliminating the root and intermediate certificates
   from the TLS certificate chain without impacting trust negotiation.
   It also delivers better compression than alternative proposals whilst
   ensuring fair treatment for both CAs and website operators.  It may
   also be useful in other applications which store certificate chains,
   e.g.  Certificate Transparency logs.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-jackson-tls-cert-abridge-00"/>
        </reference>
        <reference anchor="I-D.ietf-tls-ctls">
          <front>
            <title>Compact TLS 1.3</title>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Windy Hill Systems, LLC</organization>
            </author>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         </author>
            <author fullname="Benjamin M. Schwartz" initials="B. M." surname="Schwartz">
              <organization>Meta Platforms, Inc.</organization>
            </author>
            <date day="17" month="April" year="2024"/>
            <abstract>
              <t>   This document specifies a "compact" version of TLS 1.3 and DTLS 1.3.
   It saves bandwidth by trimming obsolete material, tighter encoding, a
   template-based specialization technique, and alternative
   cryptographic techniques. cTLS is not directly interoperable with TLS
   1.3 or DTLS 1.3 since the over-the-wire framing is different.  A
   single server can, however, offer cTLS alongside TLS or DTLS.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-ctls-10"/>
        </reference>
        <reference anchor="I-D.kampanakis-tls-scas-latest">
          <front>
            <title>Suppressing CA Certificates in TLS 1.3</title>
            <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
              <organization>AWS</organization>
            </author>
            <author fullname="Cameron Bytheway" initials="C." surname="Bytheway">
              <organization>AWS</organization>
            </author>
            <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Martin Thomson" initials="M." surname="Thomson">
              <organization>Mozilla</organization>
            </author>
            <date day="5" month="January" year="2023"/>
            <abstract>
              <t>   A TLS client or server that has access to the complete set of
   published intermediate certificates can inform its peer to avoid
   sending certificate authority certificates, thus reducing the size of
   the TLS handshake.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-kampanakis-tls-scas-latest-03"/>
        </reference>
        <reference anchor="I-D.davidben-tls-merkle-tree-certs">
          <front>
            <title>Merkle Tree Certificates</title>
            <author fullname="David Benjamin" initials="D." surname="Benjamin">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Devon O'Brien" initials="D." surname="O'Brien">
         </author>
            <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Luke Valenta" initials="L." surname="Valenta">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Filippo Valsorda" initials="F." surname="Valsorda">
              <organization>Geomys</organization>
            </author>
            <date day="19" month="October" year="2025"/>
            <abstract>
              <t>   This document describes Merkle Tree certificates, a new form of X.509
   certificates which integrate public logging of the certificate, in
   the style of Certificate Transparency.  The integrated design reduces
   logging overhead in the face of both shorter-lived certificates and
   large post-quantum signature algorithms, while still achieving
   comparable security properties to traditional X.509 and Certificate
   Transparency.  Merkle Tree certificates additionally admit an
   optional signatureless optimization, which decreases the message size
   by avoiding signatures altogether, at the cost of only applying to
   up-to-date relying parties and older certificates.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-davidben-tls-merkle-tree-certs-08"/>
        </reference>
      </references>
    </references>
    <?line 959?>

<section anchor="open-points-of-discussion">
      <name>Open points of discussion</name>
      <t>The following are open points for discussion. The corresponding Github issues
will be linked.</t>
      <section anchor="authentication-concerns-for-client-authentication-requests">
        <name>Authentication concerns for client authentication requests.</name>
        <t>Tracked by <eref target="https://github.com/kemtls/draft-celi-wiggers-tls-authkem/issues/16">Issue
#16</eref>.</t>
        <t>The certificate request message from the server can not be authenticated by the
AuthKEM mechanism. This is already somewhat discussed above and under security
considerations. We might want to allow clients to refuse client auth for
scenarios where this is a concern.</t>
      </section>
      <section anchor="interaction-with-signing-certificates">
        <name>Interaction with signing certificates</name>
        <t>Tracked by <eref target="https://github.com/kemtls/draft-celi-wiggers-tls-authkem/issues/20">Issue
#20</eref>.</t>
        <t>In the current state of the draft, we have not yet discussed combining
traditional signature-based authentication with KEM-based authentication. One
might imagine that the Client has a sigining certificate and the server has a
KEM public key.</t>
        <t>In the current draft, clients MUST use a KEM certificate algorithm if the server
negotiated AuthKEM.</t>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Early versions of this work were supported by the European Research Council through Starting
Grant No. 805031 (EPOQUE).</t>
      <t>Part of this work was supported by the NLNet NGI Assure theme fund project
<eref target="https://nlnet.nl/project/KEMTLS/">"Standardizing KEMTLS"</eref></t>
      <!--  vim: set ft=markdown ts=4 sw=2 tw=0 et : -->

</section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
