<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-wiggers-tls-authkem-psk-06" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="AuthKEM-PSK">KEM-based pre-shared-key handshakes for TLS 1.3</title>
    <seriesInfo name="Internet-Draft" value="draft-wiggers-tls-authkem-psk-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="2026" month="October" day="30"/>
    <area>SECAREA</area>
    <workgroup>TLS Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 166?>

<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.</t>
      <t>This mechanism is inspired by AuthKEM (and could use AuthKEM certificate public
keys for resumption), but can be independently implemented.</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-wiggers-tls-authkem-psk/"/>.
      </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 176?>

<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.</t>
      <t>This document gives a construction for KEM-based, PSK-style abbreviated TLS 1.3
<xref target="RFC8446"/> handshakes. It is similar in spirit to
<xref target="I-D.celi-wiggers-tls-authkem"/>, but can be independently implemented.</t>
      <t>The abbreviated handshake is appropriate for endpoints that have KEM public
keys, and where the client has the server's public key before initiation of the
connection. 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"/>.
The public keys need not necessarily be certificates, however. The client might
be provided with the public key as a matter of configuration.</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"/>.</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-wiggers-tls-authkem-psk-03, -04, -05, -06
            </t>
            <ul spacing="normal">
              <li>
                <t>Bumped version</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Revision draft-wiggers-tls-authkem-psk-02
            </t>
            <ul spacing="normal">
              <li>
                <t>Fixing a few links</t>
              </li>
              <li>
                <t>Update to ML-KEM/FIPS203</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Revision draft-wiggers-tls-authkem-psk-01
            </t>
            <ul spacing="normal">
              <li>
                <t>Revised abstract</t>
              </li>
              <li>
                <t>Minor edits</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Revision draft-wiggers-tls-authkem-psk-00
            </t>
            <ul spacing="normal">
              <li>
                <t>Split PSK mechanism off from <xref target="I-D.celi-wiggers-tls-authkem"/></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>
      <section anchor="related-work">
        <name>Related work</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="organization">
        <name>Organization</name>
        <t>After covering preliminaries, we introduce the abbreviated AuthKEM-PSK
handshake, and its opportunistic client authentication mechanism. 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.</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>This definition matches the one from <xref target="I-D.celi-wiggers-tls-authkem"/>.</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:</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 key schedule 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="psk-protocol">
      <name>Abbreviated AuthKEM with pre-shared public KEM keys</name>
      <t>When the client already has the server's long-term public key, we can do a more
efficient handshake. The client will send the encapsulation to the server's
long-term public key in a <tt>ClientHello</tt> extension. An overview of the
abbreviated AuthKEM handshake is given in Figure 3.</t>
      <t>A client that already knows the server, might also already know that it will be
required to present a client certificate. This is expected to be especially
useful in server-to-server scenarios. The abbreviated handshake allows to
encrypt the certificate and send it similarly to early data.</t>
      <artwork><![CDATA[
       Client                                        Server
Key  ^ ClientHello
Exch | + key_share
&    | + stored_auth_key
Auth | + signature_algorithms
     | + early_auth*
     | + early_data*
     | (Certificate*)
     | (Application Data*)    -------->        ServerHello  ^
     |                                         + key_share  |
     |                                   + stored_auth_key  | Key
     |                                       + early_auth*  | Exch,
     |                                       + early_data*  | Auth &
     |                               {EncryptedExtensions}  | Server
     |                                 {KEMEncapsulation*}  | Params
     |                       <--------          {Finished}  v
     |                       <-------- [Application Data*]
     | (EndOfEarlyData)
     v {Finished}            -------->

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

        +  Indicates noteworthy extensions sent in the
           previously noted message.
        *  Indicates optional or situation-dependent
           messages/extensions that are not always sent.
        <> Indicates messages protected using keys
           derived from a
           client_early_handshake_traffic_secret.
        () Indicates messages protected using keys derived
           from a client_early_traffic_secret.
        {} Indicates messages protected using keys
           derived from a
           [sender]_handshake_traffic_secret.
        [] Indicates messages protected using keys
           derived from [sender]_application_traffic_secret_N.

      Figure 3: Abbreviated AuthKEM handshake, with optional
                opportunistic client authentication.
]]></artwork>
      <section anchor="sec-authkem-pdk-negotiation">
        <name>Negotiation</name>
        <t><strong>In an <xref target="psk-variant"/>, we sketch a variant based on the PSK extension.</strong></t>
        <t>A client that knows a server's long-term KEM public key MAY choose to attempt
the abbreviated AuthKEM handshake. If it does so, it MUST include the
<tt>stored_auth_key</tt> extension in the <tt>ClientHello</tt> message. This message MUST
contain the encapsulation against the long-term KEM public key. Details of the
extension are described below. The shared secret resulting from the
encapsulation is mixed in to the <tt>EarlySecret</tt> computation.</t>
        <t>The client MAY additionally choose to send a certificate to the server. It MUST
know what ciphersuites the server accepts before it does so. If it chooses to do
so, it MUST send the <tt>early_auth</tt> extension to the server. The <tt>Certificate</tt>
is encrypted with the <tt>client_early_handshake_traffic_secret</tt>.</t>
        <t>The server MAY accept the abbreviated AuthKEM handshake. If it does, it MUST
reply with a <tt>stored_auth_key</tt> extension. If it does not accept the
abbreviated AuthKEM handshake, for instance because it does not have access to
the correct secret key anymore, it MUST NOT reply with a <tt>stored_auth_key</tt>
extension. The server, if it accepts the abbreviated AuthKEM handshake, MAY
additionally accept the <tt>Certificate</tt> message. If it does, it MUST reply with
a <tt>early_auth</tt> extension.</t>
        <t>If the client, who sent a <tt>stored_auth_key</tt> extension, receives a
<tt>ServerHello</tt> without <tt>stored_auth_key</tt> extension, it MUST recompute
<tt>EarlySecret</tt> without the encapsulated shared secret.</t>
        <t>If the client sent a <tt>Certificate</tt> message, it MUST drop that message from its
transcript. The client MUST then continue with a full AuthKEM handshake.</t>
      </section>
      <section anchor="rtt-forward-secrecy-and-replay-protection">
        <name>0-RTT, forward secrecy and replay protection</name>
        <t>The client MAY send 0-RTT data, as in <xref target="RFC8446"/> 0-RTT mode. The
<tt>Certificate</tt> MUST be sent before the 0-RTT data.</t>
        <t>As the <tt>EarlySecret</tt> is derived only from a key encapsulated to a long-term
secret, it does not have forward secrecy. Clients MUST take this into
consideration before transmitting 0-RTT data or opting in to early client auth.
Certificates and 0-RTT data may also be replayed.</t>
        <t>This will be discussed in full under Security Considerations.</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-algorithms">
        <name>Negotiation of AuthKEM algorithms</name>
        <t>Clients and servers indicate support for AuthKEM authentication 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 => TBD,
  dhkem_x448_sha512   => TBD,
  kem_x25519kyber768  => TBD, /*draft-westerbaan-cfrg-hpke-xyber768d00*/
}
]]></artwork>
        <t>This matches the definition in <xref target="I-D.celi-wiggers-tls-authkem"/>.</t>
        <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="clienthello-and-serverhello-extensions">
        <name>ClientHello and ServerHello extensions</name>
        <t>A number of AuthKEM messages contain tag-length-value encoded extensions
structures. We are adding those extensions to the <tt>ExtensionType</tt> list from TLS
1.3.</t>
        <artwork><![CDATA[
enum {
  ...
  stored_auth_key (TBD),                 /* RFC TBD */
  early_auth (TBD),                      /* RFC TBD */
  (65535)
} ExtensionType;
]]></artwork>
        <t>The table below indicates the messages where a given extension may
appear:</t>
        <artwork><![CDATA[
+---------------------------------------+-------------+
| Extension                             |    KEM-Auth |
+---------------------------------------+-------------+
| stored_auth_key [RFCTBD]              |      CH, SH |
|                                       |             |
| early_auth  [RFCTBD]                  |      CH, SH |
|                                       |             |
+---------------------------------------+-------------+
]]></artwork>
        <section anchor="stored-auth-key">
          <name>Stored Auth Key</name>
          <t>To transmit the early authentication encapsulation in the abbreviated AuthKEM
handshake, this document defines a new extension type
(<tt>stored_auth_key (TBD)</tt>). It is used in <tt>ClientHello</tt> and <tt>ServerHello</tt>
messages.</t>
          <t>The <tt>extension_data</tt> field of this extension, when included in the
<tt>ClientHello</tt>, MUST contain the <tt>StoredInformation</tt> structure.</t>
          <artwork><![CDATA[
struct {
      select (type) {
        case client:
          opaque key_fingerprint<1..255>;
          opaque ciphertext<1..2^16-1>
        case server:
          AcceptedAuthKey '1';
      } body;
} StoredInformation
]]></artwork>
          <t>This extension MUST contain the following information when included in
<tt>ClientHello</tt> messages:</t>
          <ul spacing="normal">
            <li>
              <t>The client indicates the public key encapsulated to by its fingerprint</t>
            </li>
            <li>
              <t>The client submits the ciphertext</t>
            </li>
          </ul>
          <t>The server MUST send the extension back as an acknowledgement, if and only if it
wishes to negotiate the abbreviated AuthKEM handshake.</t>
          <t>The fingerprint calculation proceeds this way:</t>
          <ol spacing="normal" type="1"><li>
              <t>Compute the SHA-256 hash of the input data. Note that the computed hash only
covers the input data structure (and not any type and length information of
the record layer).</t>
            </li>
            <li>
              <t>Use the output of the SHA-256 hash.</t>
            </li>
          </ol>
          <t>If this extension is not present, the client and the server MUST NOT negotiate
the abbreviated AuthKEM handshake.</t>
          <t>The presence of the fingerprint might reveal information about the identity of
the server that the client has. This is discussed further under <xref target="sec-considerations">Security
Considerations</xref>.</t>
        </section>
        <section anchor="early-authentication">
          <name>Early authentication</name>
          <t>To indicate the client will attempt client authentication in the abbreviated
AuthKEM handshake, and for the server to indicate acceptance of attempting this
authentication mechanism, we define the ```early_auth (TDB)<tt>extension. It is
used in</tt>ClientHello<tt>and</tt>ServerHello`` messages.</t>
          <artwork><![CDATA[
struct {} EarlyAuth
]]></artwork>
          <t>This is an empty extension.</t>
          <t>It MUST NOT be sent if the <tt>stored_auth_key</tt> extension is not present.</t>
        </section>
      </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, except
for the addition of a <tt>KEMEncapsulation</tt> message and does not use
the <tt>CertificateVerify</tt> one.</t>
        <t>Note that these definitions mirror <xref target="I-D.celi-wiggers-tls-authkem"/>.</t>
        <artwork><![CDATA[
enum {
    ...
    kem_encapsulation(tbd),
    ...
    (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 <xref target="psk-protocol"/>. A peer
which receives a handshake message in an unexpected order MUST abort the
handshake with an "unexpected_message" 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.</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
unless no valid certificate chain can be produced without unsupported
algorithms.</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="authkem-psk-key-schedule">
          <name>AuthKEM-PSK key schedule</name>
          <t>The AuthKEM-PSK handshake follows the <xref target="RFC8446"/> key schedule closely. We
change the computation of the <tt>EarlySecret</tt> as follows, and add a computation
for <tt>client_early_handshake_traffic_secret</tt>:</t>
          <artwork><![CDATA[
            0
            |
            v
    SSs -> HKDF-Extract = Early Secret
            |
            ...
            +--> Derive-Secret(., "c e traffic", ClientHello)
            |                  = client_early_traffic_secret
            |
            +--> Derive-Secret(., "c e hs traffic", ClientHello)
            |                  = client_early_handshake_traffic_secret
            ...
            |
            v
            Derive-Secret(., "derived", "") = dES
            ...
]]></artwork>
          <t>We change the computation of <tt>Main Secret</tt> as follows:</t>
          <artwork><![CDATA[
            Derive-Secret(., "derived", "") = dHS
            |
            v
SSc||0 * -> HKDF-Extract = Main Secret
            |
            ...
]]></artwork>
          <t><tt>SSc</tt> is included if client authentication is used; otherwise, the value <tt>0</tt> is
used.</t>
        </section>
        <section anchor="kem-computations">
          <name>Computations of KEM shared secrets</name>
          <t>As in <xref target="I-D.celi-wiggers-tls-authkem"/>, 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. With AuthKEM-PSK, the server achieves explicit authentication when
sending their <tt>Finished</tt> message and the client when they send their
<tt>Finished</tt> message.</t>
          <t>The key used to compute the <tt>Finished</tt> message MUST be computed from the
<tt>MainSecret</tt> using HKDF. 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:</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>These computations match <xref target="I-D.celi-wiggers-tls-authkem"/>.</t>
          <t>See <xref target="sec-authkem-pdk-negotiation"/> for special considerations for the
abbreviated AuthKEM handshake.</t>
          <t>Any records following a Finished message MUST be encrypted under the appropriate
application traffic key as described in TLS 1.3. In particular, this includes
any alerts sent by the server in response to client <tt>Certificate</tt> and
<tt>KEMEncapsulation</tt> messages.</t>
        </section>
      </section>
    </section>
    <section anchor="sec-considerations">
      <name>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 machine-verified proofs of the security of KEMTLS and KEMTLS-PDK in
Tamarin. <xref target="CHSW22"/></t>
        </li>
        <li>
          <t>When the client opportunistically sends its certificate, it is not encrypted
under a forward-secure key.  This has similar considerations and trade-offs as
0-RTT data.  If it is a replayed message, there are no expected consequences
for security as the malicious replayer will not be able to decapsulate the
shared secret.</t>
        </li>
        <li>
          <t>A client that opportunistically sends its certificate, SHOULD send it
encrypted with a ciphertext that it knows the server will accept. Otherwise,
it will fail.</t>
        </li>
        <li>
          <t>If AuthKEM-PSK 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 anchor="server-anonymity">
        <name>Server Anonymity</name>
        <t>The PDK extension identifies the public key to which the client has encapsulated
via a hash. This reveals some information about which server identity the client
has. <xref target="I-D.ietf-tls-esni"/> may help alleviate this.</t>
        <t>An alternative approach could be the use of trial decryption. If the KEM used
has anonymity, the ciphertext that the client sends is not linkable to the
server public key. ML-KEM offers post-quantum anonymity <xref target="MX22"/>.</t>
      </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="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="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="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="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="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="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="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="MX22">
          <front>
            <title>Post-Quantum Anonymity of Kyber</title>
            <author initials="V." surname="Maram" fullname="Varum Maram">
              <organization>ETH Zurich</organization>
            </author>
            <author initials="K." surname="Xagawa" fullname="Keita Xagawa">
              <organization>NTT Social Informatics Laboratories</organization>
            </author>
            <date year="2022"/>
          </front>
          <seriesInfo name="PKC" value="2023"/>
          <seriesInfo name="IACR ePrint" value="https://ia.cr/2022/1696"/>
        </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="I-D.celi-wiggers-tls-authkem">
          <front>
            <title>KEM-based Authentication 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="4" month="May" year="2026"/>
            <abstract>
              <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>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-celi-wiggers-tls-authkem-07"/>
        </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.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="I-D.ietf-tls-esni">
          <front>
            <title>TLS Encrypted Client Hello</title>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Independent</organization>
            </author>
            <author fullname="Kazuho Oku" initials="K." surname="Oku">
              <organization>Fastly</organization>
            </author>
            <author fullname="Nick Sullivan" initials="N." surname="Sullivan">
              <organization>Cryptography Consulting LLC</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="14" month="June" year="2025"/>
            <abstract>
              <t>   This document describes a mechanism in Transport Layer Security (TLS)
   for encrypting a ClientHello message under a server public key.

Discussion Venues

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

   Source for this draft and an issue tracker can be found at
   https://github.com/tlswg/draft-ietf-tls-esni
   (https://github.com/tlswg/draft-ietf-tls-esni).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-esni-25"/>
        </reference>
      </references>
    </references>
    <?line 769?>

<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="psk-variant">
        <name>Alternative implementation based on the <tt>pre_shared_key</tt> extension</name>
        <t><strong>This is discussed in <eref target="https://github.com/kemtls/draft-celi-wiggers-tls-authkem/issues/25">Issue
#25</eref>.</strong></t>
        <t><xref target="RFC8446"/> defines a PSK handshake that can be used with symmetric keys from
e.g. session tickets. In this section, we sketch an alternative approach to
AuthKEM-PSK based on the <tt>pre_shared_key</tt> extension.</t>
        <t>A client needs to be set up with the following information:</t>
        <artwork><![CDATA[
struct {
    uint32 authkem_psk_config_version;
    uint32 config_lifetime;
    opaque KEMPublicKey;
} AuthKEMPSKConfig;
]]></artwork>
        <t>The client computes a KEM ciphertext and shared secret as follows:</t>
        <artwork><![CDATA[
SSs, encapsulation <- Encapsulate(public_key_server,
                                  "server authentication")
]]></artwork>
        <t><tt>SSs</tt> is used in place of <tt>PSK</tt> in the TLS 1.3 key schedule, and <tt>binder_key</tt> is
derived as follows:</t>
        <artwork><![CDATA[
          0
          |
          v
SSc ->  HKDF-Extract = Early Secret
          |
          +-----> Derive-Secret(., "ext binder" | "res binder", "")
          |                     = binder_key
          ...
]]></artwork>
        <t>In the <tt>pre_shared_key</tt> extension's <tt>identities</tt>, the client sends the following
data:</t>
        <artwork><![CDATA[
struct {
  uint32 authkem_psk_config_version;
  opaque KEMCiphertext;
} AuthKEMPSKIdentity
]]></artwork>
        <t>The server computes the shared secret <tt>SSs</tt> from
<tt>AuthKEMPSKIdentity.KEMCiphertext</tt> as follows:</t>
        <artwork><![CDATA[
SSs <- Decapsulate(encapsulation,
                   private_key_server
                   "server authentication")
]]></artwork>
        <t>The PSK binder value is computed as specified in <xref target="RFC8446"/>, section 4.2.11.2.
The server MUST verify the binder before continuing and abort the handshake if
verification fails.</t>
        <t><strong>To be determined: how to handle immediate client authentication.</strong></t>
      </section>
      <section anchor="interactions-with-dtls">
        <name>Interactions with DTLS</name>
        <t>It is currently open if there need to be made modifications to better support
integration with DTLS. Discussion is at <eref target="https://github.com/kemtls/draft-celi-wiggers-tls-authkem/issues/23">Issue
#23</eref>.</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 signing 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>This work has been 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>
    </section>
  </back>
  <!-- ##markdown-source:
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
vzUbBRdPdAAA

-->

</rfc>
