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

<t>This document gives a construction for a Key Encapsulation Mechanism (KEM)-based
authentication mechanism in TLS 1.3. This proposal authenticates peers via a key
exchange protocol, using their long-term (KEM) public keys.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-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 186?>

<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="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 " + context_string)
  ss = ctx.Export("", HKDF.Length)
  return (enc, ss)

def Decapsulate(enc, sk, context_string):
  return HPKE.SetupBaseR(enc,
                         sk,
                         "tls13 auth-kem " + context_string)
             .Export("", 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>
      </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>The client indicates the public key encapsulated to by its fingerprint</li>
            <li>The client submits the ciphertext</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>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).</li>
            <li>Use the output of the SHA-256 hash.</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>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.</li>
        <li>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"/>.</li>
        <li>The work proposing the variant protocol <xref target="SSW21"/> with pre-distributed public
keys (the abbreviated AuthKEM handshake) has a proof for both unilaterally and
mutually authenticated handshakes.</li>
        <li>We have machine-verified proofs of the security of KEMTLS and KEMTLS-PDK in
Tamarin. <xref target="CHSW22"/></li>
        <li>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.</li>
        <li>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.</li>
        <li>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"/>.</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>
        <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>
        <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="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="DILITHIUM" target="https://pq-crystals.org/dilithium/">
          <front>
            <title>CRYSTALS-Dilithium</title>
            <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="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="Sofia Celi" initials="S." surname="Celi">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Peter Schwabe" initials="P." surname="Schwabe">
              <organization>Radboud University &amp; MPI S&amp;P</organization>
            </author>
            <author fullname="Douglas Stebila" initials="D." surname="Stebila">
              <organization>University of Waterloo</organization>
            </author>
            <author fullname="Nick Sullivan" initials="N." surname="Sullivan">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Thom Wiggers" initials="T." surname="Wiggers">
              <organization>Radboud University</organization>
            </author>
            <date day="7" month="March" year="2022"/>
            <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.

Discussion Venues

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

   Discussion of this document takes place on the mailing list (), which
   is archived at .

   Source for this draft and an issue tracker can be found at
   https://github.com/claucece/draft-celi-wiggers-tls-authkem.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-celi-wiggers-tls-authkem-01"/>
        </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-SPI &amp; Radboud University</organization>
            </author>
            <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
              <organization>Cloudflare</organization>
            </author>
            <date day="31" month="March" year="2023"/>
            <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-02"/>
        </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>RTFM, Inc.</organization>
            </author>
            <author fullname="Kazuho Oku" initials="K." surname="Oku">
              <organization>Fastly</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>Cloudflare</organization>
            </author>
            <date day="6" month="April" year="2023"/>
            <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-16"/>
        </reference>
      </references>
    </references>
    <?line 758?>

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

-->

</rfc>
