<?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.8 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-wiggers-tls-authkem-psk-01" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.20.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-01"/>
    <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="2024" month="April" day="15"/>
    <area>SECAREA</area>
    <workgroup>TLS Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 177?>

<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 187?>

<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.draft-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.draft-westerbaan-cfrg-hpke-xyber768d00"/>. This proposal
uses Kyber <xref target="KYBER"/> <xref target="I-D.draft-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-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.draft-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.draft-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.draft-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.draft-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.draft-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.draft-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. Kyber offers post-quantum anonymity <xref target="MX22"/>.</t>
      </section>
    </section>
  </middle>
  <back>
    <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="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="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="KYBER" target="https://pq-crystals.org/kyber/">
          <front>
            <title>CRYSTALS-Kyber</title>
            <author initials="R." surname="Avanzi">
              <organization/>
            </author>
            <author initials="J." surname="Bos">
              <organization/>
            </author>
            <author initials="L." surname="Ducas">
              <organization/>
            </author>
            <author initials="E." surname="Kiltz">
              <organization/>
            </author>
            <author initials="T." surname="Lepoint">
              <organization/>
            </author>
            <author initials="V." surname="Lyubashevsky">
              <organization/>
            </author>
            <author initials="J." surname="Schanck">
              <organization/>
            </author>
            <author initials="P." surname="Schwabe">
              <organization/>
            </author>
            <author initials="G." surname="Seiler">
              <organization/>
            </author>
            <author initials="D." surname="Stehlé">
              <organization/>
            </author>
            <date year="2021"/>
          </front>
        </reference>
        <reference anchor="I-D.draft-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="18" month="August" year="2023"/>
            <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-02"/>
        </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.draft-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="4" month="May" year="2023"/>
            <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-02"/>
        </reference>
        <reference anchor="I-D.draft-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.draft-wiggers-tls-authkem">
          <front>
            <title>*** BROKEN REFERENCE ***</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </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>Windy Hill Systems, LLC</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="4" month="March" year="2024"/>
            <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-18"/>
        </reference>
      </references>
    </references>
    <?line 775?>

<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:
H4sIAAAAAAAAA+193XbjNpL/PZ8Cf/U5E8uRaMsf/eFOMnHbTux12+1YzvTO
9um1KAqSOKZIhaCs1nQ8z7K3e7EvsftiWx8ACFCS25nJztXf5yQtiwRQqCpU
/apQgNvtdlAmZSoPxPnJRbsfKTkQ00K21Tgq5KB9JxdiHGUD+PVOKjHMC3Hz
tis64W4Q9fuFvD8Qh7NyjG2vuufBII+zaAKdDYpoWLbnyWgkC9UuU9WO4LU7
OWlP1V17uxPEUSlHebE4EEk2zIMgmRYHoixmqtzZ3n61vROoWX+SKJXkWbmY
Qo9nJzc/BEBTdCC6J0eH1yeHwTwv7kZFPpseEFHv4dckG4kf8asAKIfnA2iY
lbLIZNk+RpqCQJUwn9sozTPodSFVoCZRUd7+MstLqQ5ElgfT5EB8KPO4JVRe
lIUcKvi0mOCHj0GAE8mLg0C0AwE/SQaNbkLxnudK3zEPbsb5xPs6L0YH4uqn
7jiR6YC+iZMSOHCZ/GUiRzLjr/JZViJfbsZSXMpyLIsUBUAP5SRKUuAT9Pw9
/k8zOMzSwKOnG4ojmSYOMd18+D//FVXfEi1viuhe4qNyDpx1KHqbqH5eo+cK
eDEbRalLSAzUyewuv/++SJScTUPgs0/JVSi68Xge9aVDzJUEkXjfEzmN62jQ
z2cD8XOW3MO0gBQBUxcXV2ft7lXDHXiKPXwfF4tpmf9FDpIQOvAHPoaBS9lP
0sgZ+DifjdJIeU9oaGfEfCjeg3IWaZ47HGmY71ri3WXD58xRlEWDyCVvoHiA
72dz3SyMI5++S6BvlqbJfZQ5BF4m8Z3/ve4xS+JxDqSHSj/8OpHl8PsRPg3j
fBIE9zKbSVBLoZcELLr5CH7l5eMvDiG0IqXqe+yH2Actk3I86x8IWKfwZIsX
cQwqs2olB0GWF5OoBMbhqNc/HL3c23uuP77qvNw+gFUNa9u+84ye7O/gEyG6
3fc79AEoZAPUuMpV2f5pFmXlbEIreg705LNSnBoLJLrJKIvKWSEVy2AA7D0Q
O9s72+1Oh76xy5N+2iuV4XGFeIpS2J5r+v2Yjn9Zz6NP4goWO6jAWaaAK7NS
ksntynhWmLeuChB/vGj4dNQs0CNW6DEyuFMli0QqlJ1hY+Pw6EIcHXWJ0w3z
7fG7swPR2Q47nb39rd3dFzs7r16Eu3s7u7v726bh2eHRtZBAc1Y2DsS4LKfq
YGsricK42MLOtvZ397Q2dHxtuMgLKU6GwyROZFaiezIqASyQ7S45KHEuF3VV
6LS39/+/KvyfqcJJ9931GatCZ1kVtrdfbL168bK9297e3W6/fLnXednev+08
UR06Wy9evIJ3j05BH3Z8fTgUZZRKZH85z8UkH8gUJkv2JRVAdAKaApYmz/AV
rS1JJm4icO9JVtORnfb2y/U64rrPin11F2q5t8KN2q7+JRSn+QI9eK23f8nB
kAG0WnpMXR6lII1hCt21QAHi8J+lw/883dl5XHc67c6Lzt5u+8Xt3hN1Z2er
0yEfcHnWvbn66cjTHs+1HBFsGBXRdLwAVgHzo2KQ/JWUp+ZV1usIjuIz4pI6
AGWsrVg9gKIleyPjcZan+WgBjYGfO3uP+8Ca3u4Bdm5vv1pP1t8hwGX5rRPf
1fgYsCd8qUAADSMBH4huTWf9VK/ELX55Cydx/r7z3J8qAtx3V7hMr4oc4Hae
Moc4vvAn3nlepwkbxRKgXzZSqM8nsyIX3T9cVS+XUTGS5bKmdPZRy5ZY2Naz
JDaehuK8iObxXxd3gcvF09korz8hJp69uRDXUsmoiMcru3svpd9TDl4BzHv1
PfVzctltiaPLa/j/2eX12SGx5ChPZ5N+EvkiuvjXmon0dOcwy7PFRC/280Vf
FjULuF6H/hSC/ymiSU2D/hQV0K//hGm+ORX/Bl5Jz9z2cx6Kf41G0bxupc5l
Ukb1R7yEbm7AjsYJLSINHWMl3kb9vIjKHIW/VjfPjxo0sd2n24vnr1BTzv/8
5uT6YKXKTH9pQ4wBEWOqECJv3SEft1yeH13/uXtz+Lbbrli8kqfXoTgE1P7X
xP8a3MObXPnfvQ3F8SyOat+egEYmafnXpeX+Vk5zmOKSCN8uZhDOj+W9ulss
DQpgBMHFFwCM/v5H+F4mqZ5ezQuN0//5zxr+CoJ2uy2iviqLKIZ48GacKDHI
49kEgdwIVBhsIYRPYCaLWUwuGxz1fAwKJDYgLh+1wTVNmujEBVsTiEgW0Aac
6wwTFPA2WBYxTaOYAAHZkO45vdUS0X2eoFnAEWII/RW8HJUQ8QBoGg4lUKRA
pHKiv4ceMbqfyBI0GBMeOgsCHULYPwOawKEW8pdZUmCnmBEZ8Co0gCPANToF
GyZjgz+8DtVXSMowGcD0QbVhTYaaKROJckjURMAvwNRpgpi2vzBJFbGBXUOg
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
VDqZpRnEnvingLjFFr+x1Qz+F0ndTqtvdAAA

-->

</rfc>
