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

<t>This document gives a construction in which (long-term) KEM public keys are
used in the place of TLS PSK keys, avoiding concerns that may affect
systems that use symmetric-key-based PSK, such as requiring key diversification
and protection of symmetric-keys' confidentiality.</t>
      <t>This mechanism is inspired by AuthKEM (and could use AuthKEM certificate public
keys for resumption), but can be independently implemented.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-wiggers-tls-authkem-psk/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        tlswg Working Group mailing list (<eref target="mailto:tls@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/tls/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/tls/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/kemtls/draft-celi-wiggers-tls-authkem"/>.</t>
    </note>
  </front>
  <middle>
    <?line 176?>

<section anchor="introduction">
      <name>Introduction</name>
      <t><strong>Note:</strong> This is a work-in-progress draft. We welcome discussion, feedback and
contributions through the IETF TLS working group mailing list or directly on
GitHub.</t>
      <t>This document gives a construction for KEM-based, PSK-style abbreviated TLS 1.3
<xref target="RFC8446"/> handshakes. It is similar in spirit to
<xref target="I-D.celi-wiggers-tls-authkem"/>, but can be independently implemented.</t>
      <t>The abbreviated handshake is appropriate for endpoints that have KEM public
keys, and where the client has the server's public key before initiation of the
connection. Though this is currently rare, certificates can be issued with
(EC)DH public keys as specified for instance in <xref target="RFC8410"/>, or using a
delegation mechanism, such as delegated credentials <xref target="I-D.ietf-tls-subcerts"/>.
The public keys need not necessarily be certificates, however. The client might
be provided with the public key as a matter of configuration.</t>
      <t>In this proposal, we build on <xref target="RFC9180"/>. This standard currently only covers
Diffie-Hellman based KEMs, but the first post-quantum algorithms have already
been put forward <xref target="I-D.westerbaan-cfrg-hpke-xyber768d00"/>. This proposal
uses ML-KEM <xref target="FIPS203"/> <xref target="I-D.cfrg-schwabe-kyber"/>, the first selected
algorithm for key exchange in the NIST post-quantum standardization project
<xref target="NISTPQC"/>.</t>
      <section anchor="revision-history">
        <name>Revision history</name>
        <t><strong>This section should be removed prior to publication of a final version of this
document.</strong></t>
        <ul spacing="normal">
          <li>
            <t>Revision draft-wiggers-tls-authkem-psk-03
            </t>
            <ul spacing="normal">
              <li>
                <t>Bumped version</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Revision draft-wiggers-tls-authkem-psk-02
            </t>
            <ul spacing="normal">
              <li>
                <t>Fixing a few links</t>
              </li>
              <li>
                <t>Update to ML-KEM/FIPS203</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Revision draft-wiggers-tls-authkem-psk-01
            </t>
            <ul spacing="normal">
              <li>
                <t>Revised abstract</t>
              </li>
              <li>
                <t>Minor edits</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Revision draft-wiggers-tls-authkem-psk-00
            </t>
            <ul spacing="normal">
              <li>
                <t>Split PSK mechanism off from <xref target="I-D.celi-wiggers-tls-authkem"/></t>
              </li>
            </ul>
          </li>
          <li>
            <t>Revision draft-celi-wiggers-tls-authkem-01
            </t>
            <ul spacing="normal">
              <li>
                <t>Significant Editing</t>
              </li>
              <li>
                <t>Use HPKE context</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Revision draft-celi-wiggers-tls-authkem-00
            </t>
            <ul spacing="normal">
              <li>
                <t>Initial version</t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
      <section anchor="related-work">
        <name>Related work</name>
        <t>This proposal draws inspiration from <xref target="I-D.ietf-tls-semistatic-dh"/>, which is
in turn based on the OPTLS proposal for TLS 1.3 <xref target="KW16"/>. However, these proposals
require a non-interactive key exchange: they combine the client's public key
with the server's long-term key. This imposes an extra requirement: the
ephemeral and static keys MUST use the same algorithm, which this proposal does
not require. Additionally, there are no post-quantum proposals for a
non-interactive key exchange currently considered for standardization, while
several KEMs are on the way.</t>
      </section>
      <section anchor="organization">
        <name>Organization</name>
        <t>After covering preliminaries, we introduce the abbreviated AuthKEM-PSK
handshake, and its opportunistic client authentication mechanism. In the
remainder of the draft, we will discuss the necessary implementation mechanics,
such as code points, extensions, new protocol messages and the new key schedule.</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and definitions</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.
<?line -6?>
      </t>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The following terms are used as they are in <xref target="RFC8446"/></t>
        <dl>
          <dt>client:</dt>
          <dd>
            <t>The endpoint initiating the TLS connection.</t>
          </dd>
          <dt>connection:</dt>
          <dd>
            <t>A transport-layer connection between two endpoints.</t>
          </dd>
          <dt>endpoint:</dt>
          <dd>
            <t>Either the client or server of the connection.</t>
          </dd>
          <dt>handshake:</dt>
          <dd>
            <t>An initial negotiation between client and server that establishes the
parameters of their subsequent interactions within TLS.</t>
          </dd>
          <dt>peer:</dt>
          <dd>
            <t>An endpoint.  When discussing a particular endpoint, "peer" refers to the
endpoint that is not the primary subject of discussion.</t>
          </dd>
          <dt>receiver:</dt>
          <dd>
            <t>An endpoint that is receiving records.</t>
          </dd>
          <dt>sender:</dt>
          <dd>
            <t>An endpoint that is transmitting records.</t>
          </dd>
          <dt>server:</dt>
          <dd>
            <t>The endpoint that responded to the initiation of the TLS connection. i.e. the
peer of the client.</t>
          </dd>
        </dl>
      </section>
      <section anchor="key-encapsulation-mechanisms">
        <name>Key Encapsulation Mechanisms</name>
        <t>As this proposal relies heavily on KEMs, which are not originally used by TLS,
we will provide a brief overview of this primitive. Other cryptographic
operations will be discussed later.</t>
        <t>This definition matches the one from <xref target="I-D.celi-wiggers-tls-authkem"/>.</t>
        <t>A Key Encapsulation Mechanism (KEM) is a cryptographic primitive that defines
the methods <tt>Encapsulate</tt> and <tt>Decapsulate</tt>. In this draft, we extend these
operations with context separation strings:</t>
        <dl newline="true">
          <dt><tt>Encapsulate(pkR, context_string)</tt>:</dt>
          <dd>
            <t>Takes a public key, and produces a shared secret and encapsulation.</t>
          </dd>
          <dt><tt>Decapsulate(enc, skR, context_string)</tt>:</dt>
          <dd>
            <t>Takes the encapsulation and the private key. Returns the shared secret.</t>
          </dd>
        </dl>
        <t>We implement these methods through the KEMs defined in <xref target="RFC9180"/> to export
shared secrets appropriate for using with key schedule in TLS 1.3:</t>
        <artwork><![CDATA[
def Encapsulate(pk, context_string):
  enc, ctx = HPKE.SetupBaseS(pk, "tls13 auth-kem")
  ss = ctx.Export(context_string, HKDF.Length)
  return (enc, ss)

def Decapsulate(enc, sk, context_string):
  return HPKE.SetupBaseR(enc, sk, "tls13 auth-kem")
             .Export(context_string, HKDF.Length)
]]></artwork>
        <t>Keys are generated and encoded for transmission following the conventions in
<xref target="RFC9180"/>. The values of <tt>context_string</tt> are defined in
<xref target="kem-computations"/>.</t>
        <t><strong>Open question:</strong> Should we keep using HPKE, or just use "plain" KEMs, as in
the original KEMTLS works? Please see the discussion at <eref target="https://github.com/kemtls/draft-celi-wiggers-tls-authkem/issues/32">Issue
#32</eref>.</t>
      </section>
    </section>
    <section anchor="psk-protocol">
      <name>Abbreviated AuthKEM with pre-shared public KEM keys</name>
      <t>When the client already has the server's long-term public key, we can do a more
efficient handshake. The client will send the encapsulation to the server's
long-term public key in a <tt>ClientHello</tt> extension. An overview of the
abbreviated AuthKEM handshake is given in Figure 3.</t>
      <t>A client that already knows the server, might also already know that it will be
required to present a client certificate. This is expected to be especially
useful in server-to-server scenarios. The abbreviated handshake allows to
encrypt the certificate and send it similarly to early data.</t>
      <artwork><![CDATA[
       Client                                        Server
Key  ^ ClientHello
Exch | + key_share
&    | + stored_auth_key
Auth | + signature_algorithms
     | + early_auth*
     | + early_data*
     | (Certificate*)
     | (Application Data*)    -------->        ServerHello  ^
     |                                         + key_share  |
     |                                   + stored_auth_key  | Key
     |                                       + early_auth*  | Exch,
     |                                       + early_data*  | Auth &
     |                               {EncryptedExtensions}  | Server
     |                                 {KEMEncapsulation*}  | Params
     |                       <--------          {Finished}  v
     |                       <-------- [Application Data*]
     | (EndOfEarlyData)
     v {Finished}            -------->

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

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

      Figure 3: Abbreviated AuthKEM handshake, with optional
                opportunistic client authentication.
]]></artwork>
      <section anchor="sec-authkem-pdk-negotiation">
        <name>Negotiation</name>
        <t><strong>In an <xref target="psk-variant"/>, we sketch a variant based on the PSK extension.</strong></t>
        <t>A client that knows a server's long-term KEM public key MAY choose to attempt
the abbreviated AuthKEM handshake. If it does so, it MUST include the
<tt>stored_auth_key</tt> extension in the <tt>ClientHello</tt> message. This message MUST
contain the encapsulation against the long-term KEM public key. Details of the
extension are described below. The shared secret resulting from the
encapsulation is mixed in to the <tt>EarlySecret</tt> computation.</t>
        <t>The client MAY additionally choose to send a certificate to the server. It MUST
know what ciphersuites the server accepts before it does so. If it chooses to do
so, it MUST send the <tt>early_auth</tt> extension to the server. The <tt>Certificate</tt>
is encrypted with the <tt>client_early_handshake_traffic_secret</tt>.</t>
        <t>The server MAY accept the abbreviated AuthKEM handshake. If it does, it MUST
reply with a <tt>stored_auth_key</tt> extension. If it does not accept the
abbreviated AuthKEM handshake, for instance because it does not have access to
the correct secret key anymore, it MUST NOT reply with a <tt>stored_auth_key</tt>
extension. The server, if it accepts the abbreviated AuthKEM handshake, MAY
additionally accept the <tt>Certificate</tt> message. If it does, it MUST reply with
a <tt>early_auth</tt> extension.</t>
        <t>If the client, who sent a <tt>stored_auth_key</tt> extension, receives a
<tt>ServerHello</tt> without <tt>stored_auth_key</tt> extension, it MUST recompute
<tt>EarlySecret</tt> without the encapsulated shared secret.</t>
        <t>If the client sent a <tt>Certificate</tt> message, it MUST drop that message from its
transcript. The client MUST then continue with a full AuthKEM handshake.</t>
      </section>
      <section anchor="rtt-forward-secrecy-and-replay-protection">
        <name>0-RTT, forward secrecy and replay protection</name>
        <t>The client MAY send 0-RTT data, as in <xref target="RFC8446"/> 0-RTT mode. The
<tt>Certificate</tt> MUST be sent before the 0-RTT data.</t>
        <t>As the <tt>EarlySecret</tt> is derived only from a key encapsulated to a long-term
secret, it does not have forward secrecy. Clients MUST take this into
consideration before transmitting 0-RTT data or opting in to early client auth.
Certificates and 0-RTT data may also be replayed.</t>
        <t>This will be discussed in full under Security Considerations.</t>
      </section>
    </section>
    <section anchor="implementation">
      <name>Implementation</name>
      <t>In this section we will discuss the implementation details such as extensions
and key schedule.</t>
      <section anchor="negotiation-of-authkem-algorithms">
        <name>Negotiation of AuthKEM algorithms</name>
        <t>Clients and servers indicate support for AuthKEM authentication by negotiating
it as if it were a signature scheme (part of the <tt>signature_algorithms</tt>
extension). We thus add these new signature scheme values (even though, they are
not signature schemes) for the KEMs defined in <xref target="RFC9180"/> Section 7.1. Note
that we will be only using their internal KEM's API defined there.</t>
        <artwork><![CDATA[
enum {
  dhkem_p256_sha256   => TBD,
  dhkem_p384_sha384   => TBD,
  dhkem_p521_sha512   => TBD,
  dhkem_x25519_sha256 => TBD,
  dhkem_x448_sha512   => TBD,
  kem_x25519kyber768  => TBD, /*draft-westerbaan-cfrg-hpke-xyber768d00*/
}
]]></artwork>
        <t>This matches the definition in <xref target="I-D.celi-wiggers-tls-authkem"/>.</t>
        <t><strong>Please give feedback on which KEMs should be included</strong></t>
        <t>When present in the <tt>signature_algorithms</tt> extension, these values indicate
AuthKEM support with the specified key exchange mode. These values MUST NOT
appear in <tt>signature_algorithms_cert</tt>, as this extension specifies the signing
algorithms by which certificates are signed.</t>
      </section>
      <section anchor="clienthello-and-serverhello-extensions">
        <name>ClientHello and ServerHello extensions</name>
        <t>A number of AuthKEM messages contain tag-length-value encoded extensions
structures. We are adding those extensions to the <tt>ExtensionType</tt> list from TLS
1.3.</t>
        <artwork><![CDATA[
enum {
  ...
  stored_auth_key (TBD),                 /* RFC TBD */
  early_auth (TBD),                      /* RFC TBD */
  (65535)
} ExtensionType;
]]></artwork>
        <t>The table below indicates the messages where a given extension may
appear:</t>
        <artwork><![CDATA[
+---------------------------------------+-------------+
| Extension                             |    KEM-Auth |
+---------------------------------------+-------------+
| stored_auth_key [RFCTBD]              |      CH, SH |
|                                       |             |
| early_auth  [RFCTBD]                  |      CH, SH |
|                                       |             |
+---------------------------------------+-------------+
]]></artwork>
        <section anchor="stored-auth-key">
          <name>Stored Auth Key</name>
          <t>To transmit the early authentication encapsulation in the abbreviated AuthKEM
handshake, this document defines a new extension type
(<tt>stored_auth_key (TBD)</tt>). It is used in <tt>ClientHello</tt> and <tt>ServerHello</tt>
messages.</t>
          <t>The <tt>extension_data</tt> field of this extension, when included in the
<tt>ClientHello</tt>, MUST contain the <tt>StoredInformation</tt> structure.</t>
          <artwork><![CDATA[
struct {
      select (type) {
        case client:
          opaque key_fingerprint<1..255>;
          opaque ciphertext<1..2^16-1>
        case server:
          AcceptedAuthKey '1';
      } body;
} StoredInformation
]]></artwork>
          <t>This extension MUST contain the following information when included in
<tt>ClientHello</tt> messages:</t>
          <ul spacing="normal">
            <li>
              <t>The client indicates the public key encapsulated to by its fingerprint</t>
            </li>
            <li>
              <t>The client submits the ciphertext</t>
            </li>
          </ul>
          <t>The server MUST send the extension back as an acknowledgement, if and only if it
wishes to negotiate the abbreviated AuthKEM handshake.</t>
          <t>The fingerprint calculation proceeds this way:</t>
          <ol spacing="normal" type="1"><li>
              <t>Compute the SHA-256 hash of the input data. Note that the computed hash only
covers the input data structure (and not any type and length information of
the record layer).</t>
            </li>
            <li>
              <t>Use the output of the SHA-256 hash.</t>
            </li>
          </ol>
          <t>If this extension is not present, the client and the server MUST NOT negotiate
the abbreviated AuthKEM handshake.</t>
          <t>The presence of the fingerprint might reveal information about the identity of
the server that the client has. This is discussed further under <xref target="sec-considerations">Security
Considerations</xref>.</t>
        </section>
        <section anchor="early-authentication">
          <name>Early authentication</name>
          <t>To indicate the client will attempt client authentication in the abbreviated
AuthKEM handshake, and for the server to indicate acceptance of attempting this
authentication mechanism, we define the ```early_auth (TDB)<tt>extension. It is
used in</tt>ClientHello<tt>and</tt>ServerHello`` messages.</t>
          <artwork><![CDATA[
struct {} EarlyAuth
]]></artwork>
          <t>This is an empty extension.</t>
          <t>It MUST NOT be sent if the <tt>stored_auth_key</tt> extension is not present.</t>
        </section>
      </section>
      <section anchor="protocol-messages">
        <name>Protocol messages</name>
        <t>The handshake protocol is used to negotiate the security parameters
of a connection, as in TLS 1.3. It uses the same messages, except
for the addition of a <tt>KEMEncapsulation</tt> message and does not use
the <tt>CertificateVerify</tt> one.</t>
        <t>Note that these definitions mirror <xref target="I-D.celi-wiggers-tls-authkem"/>.</t>
        <artwork><![CDATA[
enum {
    ...
    kem_encapsulation(tbd),
    ...
    (255)
  } HandshakeType;

struct {
    HandshakeType msg_type;  /* handshake type */
    uint24 length;           /* remaining bytes in message */
    select (Handshake.msg_type) {
        ...
        case kem_encapsulation:     KEMEncapsulation;
        ...
    };
} Handshake;
]]></artwork>
        <t>Protocol messages MUST be sent in the order defined in <xref target="psk-protocol"/>. A peer
which receives a handshake message in an unexpected order MUST abort the
handshake with an "unexpected_message" alert.</t>
        <t>The <tt>KEMEncapsulation</tt> message is defined as follows:</t>
        <artwork><![CDATA[
struct {
    opaque certificate_request_context<0..2^8-1>
    opaque encapsulation<0..2^16-1>;
} KEMEncapsulation;
]]></artwork>
        <t>The encapsulation field is the result of a <tt>Encapsulate()</tt> function. The
<tt>Encapsulate()</tt> function will also result in a shared secret (<tt>ssS</tt> or <tt>ssC</tt>,
depending on the peer) which is used to derive the <tt>AHS</tt> or <tt>MS</tt> secrets.</t>
        <t>If the <tt>KEMEncapsulation</tt> message is sent by a server, the authentication
algorithm MUST be one offered in the client's <tt>signature_algorithms</tt> extension
unless no valid certificate chain can be produced without unsupported
algorithms.</t>
        <t>If sent by a client, the authentication algorithm used in the signature MUST be
one of those present in the <tt>supported_signature_algorithms</tt> field of the
<tt>signature_algorithms</tt> extension in the <tt>CertificateRequest</tt> message.</t>
        <t>In addition, the authentication algorithm MUST be compatible with the key(s) in
the sender's end-entity certificate.</t>
        <t>The receiver of a <tt>KEMEncapsulation</tt> message MUST perform the <tt>Decapsulate()</tt>
operation by using the sent encapsulation and the private key of the public key
advertised in the end-entity certificate sent. The <tt>Decapsulate()</tt> function will
also result on a shared secret (<tt>ssS</tt> or <tt>ssC</tt>, depending on the Server or
Client executing it respectively) which is used to derive the <tt>AHS</tt> or <tt>MS</tt>
secrets.</t>
        <t><tt>certificate_request_context</tt> is included to allow the recipient to identify the
certificate against which the encapsulation was generated. It MUST be set to the
value in the <tt>Certificate</tt> message to which the encapsulation was computed.</t>
      </section>
      <section anchor="cryptographic-computations">
        <name>Cryptographic computations</name>
        <t>The AuthKEM handshake establishes three input secrets which are combined to
create the actual working keying material, as detailed below. The key derivation
process incorporates both the input secrets and the handshake transcript.  Note
that because the handshake transcript includes the random values from the Hello
messages, any given handshake will have different traffic secrets, even if the
same input secrets are used.</t>
        <section anchor="authkem-psk-key-schedule">
          <name>AuthKEM-PSK key schedule</name>
          <t>The AuthKEM-PSK handshake follows the <xref target="RFC8446"/> key schedule closely. We
change the computation of the <tt>EarlySecret</tt> as follows, and add a computation
for <tt>client_early_handshake_traffic_secret</tt>:</t>
          <artwork><![CDATA[
            0
            |
            v
    SSs -> HKDF-Extract = Early Secret
            |
            ...
            +--> Derive-Secret(., "c e traffic", ClientHello)
            |                  = client_early_traffic_secret
            |
            +--> Derive-Secret(., "c e hs traffic", ClientHello)
            |                  = client_early_handshake_traffic_secret
            ...
            |
            v
            Derive-Secret(., "derived", "") = dES
            ...
]]></artwork>
          <t>We change the computation of <tt>Main Secret</tt> as follows:</t>
          <artwork><![CDATA[
            Derive-Secret(., "derived", "") = dHS
            |
            v
SSc||0 * -> HKDF-Extract = Main Secret
            |
            ...
]]></artwork>
          <t><tt>SSc</tt> is included if client authentication is used; otherwise, the value <tt>0</tt> is
used.</t>
        </section>
        <section anchor="kem-computations">
          <name>Computations of KEM shared secrets</name>
          <t>As in <xref target="I-D.celi-wiggers-tls-authkem"/>, operations to compute <tt>SSs</tt> or
<tt>SSc</tt> from the client are:</t>
          <artwork><![CDATA[
SSs, encapsulation <- Encapsulate(public_key_server,
                                  "server authentication")
               SSc <- Decapsulate(encapsulation, private_key_client,
                                  "client authentication")
]]></artwork>
          <t>The operations to compute <tt>SSs</tt> or <tt>SSc</tt> from the server are:</t>
          <artwork><![CDATA[
               SSs <- Decapsulate(encapsulation, private_key_server
                                  "server authentication")
SSc, encapsulation <- Encapsulate(public_key_client,
                                  "client authentication")
]]></artwork>
        </section>
        <section anchor="explicit-authentication-messages">
          <name>Explicit Authentication Messages</name>
          <t>AuthKEM upgrades implicit to explicit authentication through the <tt>Finished</tt>
message. With AuthKEM-PSK, the server achieves explicit authentication when
sending their <tt>Finished</tt> message and the client when they send their
<tt>Finished</tt> message.</t>
          <t>The key used to compute the <tt>Finished</tt> message MUST be computed from the
<tt>MainSecret</tt> using HKDF. Specifically:</t>
          <artwork><![CDATA[
server/client_finished_key =
    HKDF-Expand-Label(MainSecret,
                      server/client_label,
                      "", Hash.length)
server_label = "tls13 server finished"
client_label = "tls13 client finished"
]]></artwork>
          <t>The <tt>verify_data</tt> value is computed as follows:</t>
          <artwork><![CDATA[
server/client_verify_data =
      HMAC(server/client_finished_key,
           Transcript-Hash(Handshake Context,
                           Certificate*,
                           KEMEncapsulation*,
                           Finished**)

*  Only included if present.
** The party who last sends the finished message in terms of flights
   includes the other party's Finished message.
]]></artwork>
          <t>These computations match <xref target="I-D.celi-wiggers-tls-authkem"/>.</t>
          <t>See <xref target="sec-authkem-pdk-negotiation"/> for special considerations for the
abbreviated AuthKEM handshake.</t>
          <t>Any records following a Finished message MUST be encrypted under the appropriate
application traffic key as described in TLS 1.3. In particular, this includes
any alerts sent by the server in response to client <tt>Certificate</tt> and
<tt>KEMEncapsulation</tt> messages.</t>
        </section>
      </section>
    </section>
    <section anchor="sec-considerations">
      <name>Security Considerations</name>
      <ul spacing="normal">
        <li>
          <t>Because the Main Secret is derived from both the ephemeral key exchange,
as well as from the key exchanges completed for server and (optionally) client
authentication, the MS secret always reflects the peers' views of the authentication
status correctly. This is an improvement over TLS 1.3 for client authentication.</t>
        </li>
        <li>
          <t>The academic works proposing AuthKEM (KEMTLS) contains an in-depth technical
discussion of and a proof of the security of the handshake protocol without
client authentication (<xref target="SSW20"/>, <xref target="Wig24"/>).</t>
        </li>
        <li>
          <t>The work proposing the variant protocol (<xref target="SSW21"/>, <xref target="Wig24"/>) with pre-distributed public
keys (the abbreviated AuthKEM handshake) has a proof for both unilaterally and
mutually authenticated handshakes.</t>
        </li>
        <li>
          <t>We have machine-verified proofs of the security of KEMTLS and KEMTLS-PDK in
Tamarin. <xref target="CHSW22"/></t>
        </li>
        <li>
          <t>When the client opportunistically sends its certificate, it is not encrypted
under a forward-secure key.  This has similar considerations and trade-offs as
0-RTT data.  If it is a replayed message, there are no expected consequences
for security as the malicious replayer will not be able to decapsulate the
shared secret.</t>
        </li>
        <li>
          <t>A client that opportunistically sends its certificate, SHOULD send it
encrypted with a ciphertext that it knows the server will accept. Otherwise,
it will fail.</t>
        </li>
        <li>
          <t>If AuthKEM-PSK client authentication is used, the resulting shared secret is
included in the key schedule. This ensures that both peers have a consistent
view of the authentication status, unlike <xref target="RFC8446"/>.</t>
        </li>
      </ul>
      <section anchor="server-anonymity">
        <name>Server Anonymity</name>
        <t>The PDK extension identifies the public key to which the client has encapsulated
via a hash. This reveals some information about which server identity the client
has. <xref target="I-D.ietf-tls-esni"/> may help alleviate this.</t>
        <t>An alternative approach could be the use of trial decryption. If the KEM used
has anonymity, the ciphertext that the client sends is not linkable to the
server public key. ML-KEM offers post-quantum anonymity <xref target="MX22"/>.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8410">
          <front>
            <title>Algorithm Identifiers for Ed25519, Ed448, X25519, and X448 for Use in the Internet X.509 Public Key Infrastructure</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies algorithm identifiers and ASN.1 encoding formats for elliptic curve constructs using the curve25519 and curve448 curves. The signature algorithms covered are Ed25519 and Ed448. The key agreement algorithms covered are X25519 and X448. The encoding for public key, private key, and Edwards-curve Digital Signature Algorithm (EdDSA) structures is provided.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8410"/>
          <seriesInfo name="DOI" value="10.17487/RFC8410"/>
        </reference>
        <reference anchor="RFC9180">
          <front>
            <title>Hybrid Public Key Encryption</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="K. Bhargavan" initials="K." surname="Bhargavan"/>
            <author fullname="B. Lipp" initials="B." surname="Lipp"/>
            <author fullname="C. Wood" initials="C." surname="Wood"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>This document describes a scheme for hybrid public key encryption (HPKE). This scheme provides a variant of public key encryption of arbitrary-sized plaintexts for a recipient public key. It also includes three authenticated variants, including one that authenticates possession of a pre-shared key and two optional ones that authenticate possession of a key encapsulation mechanism (KEM) private key. HPKE works for any combination of an asymmetric KEM, key derivation function (KDF), and authenticated encryption with additional data (AEAD) encryption function. Some authenticated variants may not be supported by all KEMs. We provide instantiations of the scheme using widely used and efficient primitives, such as Elliptic Curve Diffie-Hellman (ECDH) key agreement, HMAC-based key derivation function (HKDF), and SHA2.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9180"/>
          <seriesInfo name="DOI" value="10.17487/RFC9180"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="SSW20">
          <front>
            <title>Post-Quantum TLS without Handshake Signatures</title>
            <author initials="D." surname="Stebila" fullname="Douglas Stebila">
              <organization>University of Waterloo</organization>
            </author>
            <author initials="P." surname="Schwabe" fullname="Peter Schwabe">
              <organization>Radboud University and Max Planck Institute for Security and Privacy</organization>
            </author>
            <author initials="T." surname="Wiggers" fullname="Thom Wiggers">
              <organization>Radboud University</organization>
            </author>
            <date year="2020" month="November"/>
          </front>
          <seriesInfo name="ACM CCS 2020" value=""/>
          <seriesInfo name="DOI" value="10.1145/3372297.3423350"/>
          <seriesInfo name="IACR ePrint" value="https://ia.cr/2020/534"/>
        </reference>
        <reference anchor="SSW21">
          <front>
            <title>More Efficient KEMTLS with Pre-Shared Keys</title>
            <author initials="D." surname="Stebila" fullname="Douglas Stebila">
              <organization>University of Waterloo</organization>
            </author>
            <author initials="P." surname="Schwabe" fullname="Peter Schwabe">
              <organization>Radboud University and Max Planck Institute for Security and Privacy</organization>
            </author>
            <author initials="T." surname="Wiggers" fullname="Thom Wiggers">
              <organization>Radboud University</organization>
            </author>
            <date year="2021" month="May"/>
          </front>
          <seriesInfo name="ESORICS 2021" value=""/>
          <seriesInfo name="DOI" value="10.1007/978-3-030-88418-5_1"/>
          <seriesInfo name="IACR ePrint" value="https://ia.cr/2021/779"/>
        </reference>
        <reference anchor="CHSW22">
          <front>
            <title>A tale of two models: formal verification of KEMTLS in Tamarin</title>
            <author initials="S." surname="Celi" fullname="Sofía Celi">
              <organization>Brave Software</organization>
            </author>
            <author initials="J." surname="Hoyland" fullname="Jonathan Hoyland">
              <organization>Cloudflare, Inc.</organization>
            </author>
            <author initials="D." surname="Stebila" fullname="Douglas Stebila">
              <organization>University of Waterloo</organization>
            </author>
            <author initials="T." surname="Wiggers" fullname="Thom Wiggers">
              <organization>Radboud University</organization>
            </author>
            <date year="2022" month="August"/>
          </front>
          <seriesInfo name="ESORICS 2022" value=""/>
          <seriesInfo name="DOI" value="10.1007/978-3-031-17143-7_4"/>
          <seriesInfo name="IACR ePrint" value="https://ia.cr/2022/1111"/>
        </reference>
        <reference anchor="NISTPQC">
          <front>
            <title>Post-Quantum Cryptography Standardization</title>
            <author initials="" surname="NIST">
              <organization>National Institute for Standards and Technology</organization>
            </author>
            <date year="2020"/>
          </front>
        </reference>
        <reference anchor="Wig24">
          <front>
            <title>Post-Quantum TLS</title>
            <author initials="T." surname="Wiggers" fullname="Thom Wiggers">
              <organization>Radboud University</organization>
            </author>
            <date year="2024" month="January" day="09"/>
          </front>
          <seriesInfo name="PhD thesis" value="https://thomwiggers.nl/publication/thesis/"/>
        </reference>
        <reference anchor="KW16" target="https://ia.cr/2015/978">
          <front>
            <title>The OPTLS Protocol and TLS 1.3</title>
            <author initials="H." surname="Krawczyk" fullname="Hugo Krawczyk">
              <organization>IBM Research</organization>
            </author>
            <author initials="H." surname="Wee" fullname="Hoeteck Wee">
              <organization>ENS, CNRS, INRIA and Columbia University</organization>
            </author>
            <date year="2016"/>
          </front>
          <seriesInfo name="Proceedings of Euro S&amp;P 2016" value=""/>
        </reference>
        <reference anchor="MX22">
          <front>
            <title>Post-Quantum Anonymity of Kyber</title>
            <author initials="V." surname="Maram" fullname="Varum Maram">
              <organization>ETH Zurich</organization>
            </author>
            <author initials="K." surname="Xagawa" fullname="Keita Xagawa">
              <organization>NTT Social Informatics Laboratories</organization>
            </author>
            <date year="2022"/>
          </front>
          <seriesInfo name="PKC" value="2023"/>
          <seriesInfo name="IACR ePrint" value="https://ia.cr/2022/1696"/>
        </reference>
        <reference anchor="FIPS203">
          <front>
            <title>Module-Lattice-Based Key-Encapsulation Mechanism Standard</title>
            <author initials="" surname="National Institute of Standards and Technology">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="DOI" value="10.6028/NIST.FIPS.203"/>
        </reference>
        <reference anchor="I-D.celi-wiggers-tls-authkem">
          <front>
            <title>KEM-based Authentication for TLS 1.3</title>
            <author fullname="Thom Wiggers" initials="T." surname="Wiggers">
              <organization>PQShield</organization>
            </author>
            <author fullname="Sofia Celi" initials="S." surname="Celi">
              <organization>Brave Software</organization>
            </author>
            <author fullname="Peter Schwabe" initials="P." surname="Schwabe">
              <organization>Radboud University and MPI-SP</organization>
            </author>
            <author fullname="Douglas Stebila" initials="D." surname="Stebila">
              <organization>University of Waterloo</organization>
            </author>
            <author fullname="Nick Sullivan" initials="N." surname="Sullivan">
         </author>
            <date day="17" month="October" year="2024"/>
            <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-04"/>
        </reference>
        <reference anchor="I-D.ietf-tls-subcerts">
          <front>
            <title>Delegated Credentials for TLS and DTLS</title>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <author fullname="Subodh Iyengar" initials="S." surname="Iyengar">
              <organization>Facebook</organization>
            </author>
            <author fullname="Nick Sullivan" initials="N." surname="Sullivan">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Mozilla</organization>
            </author>
            <date day="30" month="June" year="2022"/>
            <abstract>
              <t>The organizational separation between operators of TLS and DTLS endpoints and the certification authority can create limitations.  For example, the lifetime of certificates, how they may be used, and the algorithms they support are ultimately determined by the Certification Authority (CA).  This document describes a mechanism to overcome some of these limitations by enabling operators to delegate their own credentials for use in TLS and DTLS without breaking compatibility with peers that do not support this specification.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-subcerts-15"/>
        </reference>
        <reference anchor="I-D.westerbaan-cfrg-hpke-xyber768d00">
          <front>
            <title>X25519Kyber768Draft00 hybrid post-quantum KEM for HPKE</title>
            <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="14" month="May" year="2024"/>
            <abstract>
              <t>   This memo defines X25519Kyber768Draft00, a hybrid post-quantum KEM,
   for HPKE (RFC9180).  This KEM does not support the authenticated
   modes of HPKE.

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

About This Document

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

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

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-cfrg-schwabe-kyber-04"/>
        </reference>
        <reference anchor="I-D.ietf-tls-semistatic-dh">
          <front>
            <title>Semi-Static Diffie-Hellman Key Establishment for TLS 1.3</title>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Nick Sullivan" initials="N." surname="Sullivan">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Apple Inc.</organization>
            </author>
            <date day="7" month="March" year="2020"/>
            <abstract>
              <t>   TLS 1.3 [RFC8446] specifies a signed Diffie-Hellman exchange modelled
   after SIGMA [SIGMA].  This design is suitable for endpoints whose
   certified credential is a signing key, which is the common situation
   for current TLS servers.  This document describes a mode of TLS 1.3
   in which one or both endpoints have a certified DH key which is used
   to authenticate the exchange.

Note to Readers

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-semistatic-dh-01"/>
        </reference>
        <reference anchor="I-D.ietf-tls-esni">
          <front>
            <title>TLS Encrypted Client Hello</title>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Independent</organization>
            </author>
            <author fullname="Kazuho Oku" initials="K." surname="Oku">
              <organization>Fastly</organization>
            </author>
            <author fullname="Nick Sullivan" initials="N." surname="Sullivan">
              <organization>Cryptography Consulting LLC</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="20" month="March" year="2025"/>
            <abstract>
              <t>   This document describes a mechanism in Transport Layer Security (TLS)
   for encrypting a ClientHello message under a server public key.

Discussion Venues

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

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

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

<section anchor="open-points-of-discussion">
      <name>Open points of discussion</name>
      <t>The following are open points for discussion. The corresponding GitHub issues
will be linked.</t>
      <section anchor="psk-variant">
        <name>Alternative implementation based on the <tt>pre_shared_key</tt> extension</name>
        <t><strong>This is discussed in <eref target="https://github.com/kemtls/draft-celi-wiggers-tls-authkem/issues/25">Issue
#25</eref>.</strong></t>
        <t><xref target="RFC8446"/> defines a PSK handshake that can be used with symmetric keys from
e.g. session tickets. In this section, we sketch an alternative approach to
AuthKEM-PSK based on the <tt>pre_shared_key</tt> extension.</t>
        <t>A client needs to be set up with the following information:</t>
        <artwork><![CDATA[
struct {
    uint32 authkem_psk_config_version;
    uint32 config_lifetime;
    opaque KEMPublicKey;
} AuthKEMPSKConfig;
]]></artwork>
        <t>The client computes a KEM ciphertext and shared secret as follows:</t>
        <artwork><![CDATA[
SSs, encapsulation <- Encapsulate(public_key_server,
                                  "server authentication")
]]></artwork>
        <t><tt>SSs</tt> is used in place of <tt>PSK</tt> in the TLS 1.3 key schedule, and <tt>binder_key</tt> is
derived as follows:</t>
        <artwork><![CDATA[
          0
          |
          v
SSc ->  HKDF-Extract = Early Secret
          |
          +-----> Derive-Secret(., "ext binder" | "res binder", "")
          |                     = binder_key
          ...
]]></artwork>
        <t>In the <tt>pre_shared_key</tt> extension's <tt>identities</tt>, the client sends the following
data:</t>
        <artwork><![CDATA[
struct {
  uint32 authkem_psk_config_version;
  opaque KEMCiphertext;
} AuthKEMPSKIdentity
]]></artwork>
        <t>The server computes the shared secret <tt>SSs</tt> from
<tt>AuthKEMPSKIdentity.KEMCiphertext</tt> as follows:</t>
        <artwork><![CDATA[
SSs <- Decapsulate(encapsulation,
                   private_key_server
                   "server authentication")
]]></artwork>
        <t>The PSK binder value is computed as specified in <xref target="RFC8446"/>, section 4.2.11.2.
The server MUST verify the binder before continuing and abort the handshake if
verification fails.</t>
        <t><strong>To be determined: how to handle immediate client authentication.</strong></t>
      </section>
      <section anchor="interactions-with-dtls">
        <name>Interactions with DTLS</name>
        <t>It is currently open if there need to be made modifications to better support
integration with DTLS. Discussion is at <eref target="https://github.com/kemtls/draft-celi-wiggers-tls-authkem/issues/23">Issue
#23</eref>.</t>
      </section>
      <section anchor="interaction-with-signing-certificates">
        <name>Interaction with signing certificates</name>
        <t>Tracked by <eref target="https://github.com/kemtls/draft-celi-wiggers-tls-authkem/issues/20">Issue
#20</eref>.</t>
        <t>In the current state of the draft, we have not yet discussed combining
traditional signature-based authentication with KEM-based authentication. One
might imagine that the Client has a signing certificate and the server has a KEM
public key.</t>
        <t>In the current draft, clients MUST use a KEM certificate algorithm if the server
negotiated AuthKEM.</t>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>This work has been supported by the European Research Council through Starting
Grant No. 805031 (EPOQUE).</t>
      <t>Part of this work was supported by the NLNet NGI Assure theme fund project
<eref target="https://nlnet.nl/project/KEMTLS/">"Standardizing KEMTLS"</eref></t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+19/XbbOJLv/3wKrHLOtOUWacuO8+H+mHbb7rE3seOO3JPd
m5O1KAmSOKZIDkFZ0aY9z7IvcF/i7ottfQAgQEm2e6bv/LU+pzuySACFqkLV
rwoFOAzDoEqqVB6KN6cX4SBWciSKUoZqGpdyFN7KpZjG2Qh+vZVKjPNSXL/t
iW60H8SDQSnvDsXRvJpi26vem2CUD7N4Bp2NynhchYtkMpGlCqtUhTG8ditn
YaFuw939YBhXcpKXy0ORZOM8CJKiPBRVOVfV3u7u6929QM0Hs0SpJM+qZQE9
np9e/xQATfGh6J0eH70/PQoWeXk7KfN5cUhEfYBfk2wi/oRfBUA5PB9Bw6yS
ZSar8ARpCgJVwXxu4jTPoNelVIGaxWV189d5Xkl1KLI8KJJD8bHKhx2h8rIq
5VjBp+UMP3wKApxIXh4GIgwE/CQZNLqOxAeeK33HPLie5jPv67ycHIqrn3vT
RKYj+maYVMCBy+QvMzmRGX+Vz7MK+XI9leJSVlNZpigAeihncZICn6DnH/B/
msFRlgYePb1IHMs0cYjp5eP//r9x/S3R8mMZ30l8VC2Asw5FbxM1yBv0XAEv
5pM4dQkZAnUyu83vfigTJedFBHz2KbmKRG84XcQD6RBzJUEk3vdETut9PBrk
85H4JUvuYFpAioCpi4ur87B31XIHLrCHH4blsqjyv8hREkEH/sAnMHAlB0ka
OwOf5PNJGivvCQ3tjJiPxQdQzjLNc4cjLfNdR7y7bPmcOY6zeBS75I0UD/DD
fKGbRcPYp+8S6JunaXIXZw6Bl8nw1v9e95glw2kOpEdKP/w6kdX4hwk+jYb5
LAjuZDaXoJZCLwlYdIsJ/MrLx18cQmhFStUP2A+xD1om1XQ+OBSwTuHJDi/i
IajMupUcBFlezuIKGHcI6xdWsf3tmRDvfzo+2Hu1i/T0eh/26APQwqamdZWr
Kvx5HmfVfEZrdwEj5/NKnBlbI3rJJIureSkVc3sEjDwUe7t7u2G3S9/YhUg/
4VqxPyz6p4jf9tzQ5Ie0+XGNjj+LK1jWIOzzTAFX5pUk49qTw3lp3roqQdDD
Zcuno2FrHrA3D5HBnSpZJlKh7AwbW0fHF+L4uEecbplvT96dH4rubtTtPj/Y
2d9/ubf3+mW0/3xvf/9g1zQ8Pzp+LyTQnFWtQzGtqkId7uwkcTQsd7CznYP9
51obur42XOSlFKfjcTJMZFahIzIqASyQYY9ckXgjl01V6Ia7B/+rCv/fVOG0
9+79OatCd1UVdndf7rx++SrcB3e+G7569bz7Kjy46T5RHbo7L1++hnePz0Af
9nx9OBJVnEpkf7XIxSwfyRQmS/YlFUB0ApoClibP8BWtLUkmrmNw5EnW0JG9
cPfVZh1xHWXNvqaztNxb4zBtV/8aibN8ib660du/5mDIAEStPKYuj1OQxjiF
7jqgAMPon6XD/zzd2XtYd7ph92X3+X748ub5E3Vnb6fbJR9wed67vvr52NMe
z7UcE0CYlHExXQKrgPlxOUr+k5Sn4VU26wiO4jPikjoAZWysWD2AoiV7LYfT
LE/zyRIaAz/3nj/sAxt6+zzcBfP2ejNZf4cAV+W3SXxX0xNAmfClAgG0jAR8
yLlTzAepXok7/PIOTuLNh+4Lf6oIZd9d4TK9KnMA1nnKHOJIwp9490WTJmw0
lADysolCfT6dl7no/eGqfrmKy4msVjWle4BatsLCUM+S2HgWiTdlvBj+5/I2
cLl4Np/kzSfExPMfL8R7qWRcDqdru/sgpd9TDl4BzHv9PfVzetnriOPL9/D/
88v350fEkuM8nc8GSeyL6OLfGibS052jLM+WM73Y3ywHsmxYwM069OcI/E8Z
zxoa9Oe4hH79J0zz9Zn4P+CV9MxtP28i8W/xJF40rdQbmVRx8xEvoetrsKPD
hBaRho5DJd7Gg7yMqxyFv1E33xy3aGL7T7cXL16jpvx0ftXb2933WHmRj+ap
DN/GFRAgwx8pAgasEZ5mw7gAtM2e5gJWc5wlamZX+QMGY9U8gGQesA7rpmls
5YvdvVc7aIIipD4C8oMgDEMRD1RVxkMIt66niRIQec9niJ4moDcwBEQnMHg5
HxL14B0XU5Ca2IKwdxKCP5i10XMKXsIA+JfQBjzaHGcPb8NyFkUaD4lyWri9
N/RWR8R3eYJrEUcYQmSt4OW4goACkMp4LIEitYTwZ6a/hx4xeJ7JCtQG8wk6
yQAdQlQ9B5rAi5Xyr/OkxE4x4TBi1TdePkB+FWA45NA4fa9D9RWSMk5GMH3Q
J1gIkWbKzAoNfgHRFAkCycHS5CzEFnYNcVw6IjrN1zCtioeXmkMBcQiNPAQk
81mBhLQ7YgAhyxA8+0BC9yNZyAyJSJcimRWpRHnIUcTymiWjUSoDiI3OIWoE
paPJBMH29iXM7HB7WxDJCcoOExthkoUw6QmMpzidgpZFLGQK0Z4EHqnhnNIj
HTEG4ziIwcIguABWAGOAMHiEIoB4bzIleWIGhYMtHQtSoEiRIP6WJqqCtQk9
l8BomANQ96ekOpsPoifpGDLH5pA6KN9QVUvAcZwoSoCZ1uQHX778C0SIr54/
f3F/7ySYInFeIQtUMgNQU6ImotCSSlQ5tPnjeXgSbYpH7++fLA/0Ry5VlgBi
fwFsL0p8QnOCPoocLIvW5ykiwHrpBHpRgB4tMBlCnB6mFMhMY0W/wuIGhf5K
OasNKBxj1JNkCeisUWt4GeWXsaJH6MlZeKwYEA+UPJ2S4KKjpspOW6k5zAiD
p2Dr9Lh9cuavceBtIYfQCl7C2cGqALs0REqEEUp3F3kJD+cKFSMOAIDLCVNp
l1S9ePVT6HAIy4sXoRJaWphdICmp+QDpVff3EfHfpSoDBRZZXsGHIag7oPgU
OeRNsCOm+UICHyPKjGkWz5LJtArgVZDZHVgAnjmbr5rZMSoreBgMzoDNZC0m
85JmBOpwnjGLUe65itMOrDJQpQSsQm648rr7CrgS8SJV2pQ7Eskz+N8wR8MV
nCQQy8rwTKbpDKXCLuX0QrGCInHjpITVVqAb/6t243E6AbdXTcFwko7FaSnj
0RImJzOYTIXiWuCgmrMLCVa2HMRxFg7H5SScFrcy/Izu/+WLV6PdmlozLTTu
Sly8DVF7P2pf+Ml0R30ojlzDW+wGlaCmVYGUhyDkwNJJ+oPslZ9RJybSOA70
Vv7clA+9kaS/oKf4qBH8J5DCs2cAq+4SNGkCyAYMsATjyPzWll9NyVSDuEs5
A16jW0iAiCoXDhZFEcdAdcbRorKLK1GBMWHR9jaY3nrAR/PVQmyLH8Hww5i6
z9/QfI+a/5R8puUE9noB1ja7VfT1LwUiNZwDi2ZHS+Y39N+ljuhtoM8iA/zy
IsnQho2SSv2GDnepba8AZ0qev3ak+XgsxiUEGI9a49XhNr1rJoApP1rusLBP
gWLgFnMIXPPZ1ZtTXLiV/Fz9lp55JudkZq06aGVLyWihN9QOzqwU7HVhEAPr
lDvn2qbJGSgqItdwNMXlwiAL9AxXwrw0az/ndcEhkB3E2UwRHzFo+oQZBLJx
tPCUtO+qgBESWAWwkxlgA1j6IGLww94KxK0BiXYIYojM9UWe8wmsjbSeycJC
fK7tBvjMHC0GmDBgehlrlEZulAYKZDGF38qYwznmBFv0i1/ABCCkolEgFqjN
m+FS5XM8B8CPLkAPEomjEaoA4uh0SfzA2cN/We7bFssjYmgcPMQfx2AjdgGH
UWo/2LBQRCTANYXSAPLQetPoWpSLeMkm6105gYWhMwrB0RhdDLkBXOpFCXo5
A0OE4J68SqKxHzPGxSDuNprFIwwsYO2KvChw/wXWIPJYez/UcvS3w4ZvBhhF
ZILWALoDDFRqdMHLhShZJGlqUCQ9Mr7XAUtet0PVCYzLH+YjUE5CRR1UDpnh
soLPGZi2wsT4M+xvIjng4SEWJA5wMxKjLmQhhLzZHU4C4Sq+OJJjQkXwOyM1
bIFbeUq0UK1aHf5XXL6jz+9Pf/7l/P3pCX7unR29fWs/BPqN3tm7X96e1J/q
lsfvLi5OL0+4MXwrvK+C1sXRv7dYBi1YvOfvLo/ettjLuXAY9QLMN4FOkD9I
HQUag7eRaghYnEOqH4+v/t9/dZ9rPLHX7b4G6KshV/flc/gFAGTGoxGa4F9x
QQeASSXDYVgNAPUKCKtThJ0KfeICHCYochR8+8cUl3344o/fB6Sd17CiEx1m
Ei/HeZrmC9RNXOys0hTzMVRd0hcOFER8HgSsbocBb0oaQGzBK/YG36Mtc9Br
4EBZbHokwIaARQU1DtN4SevEPAfeVQvEOZjwtYAbujCfsYPTBI2AC7Bx3ZIF
M+rtDW9XEY2eaXJT0MJJbkC3GdcsKDRj3COBfYBYMVhNBcaY1lOBKRHM8Ss9
YgIUzAcKbJYkhmizg7qMRhaz0m97QEshZanJMFOKhPgAEraRHEEDGACW8xxj
H/MeaCa2boFlHOPAoGlke40UiFBQRzSehHvLZIarGOhCjIWE1sEikALRncQA
u0GO7YefIznwCZcdtFEYSG1sQXKdJVXVbFTqYTytoVYQ1RZ5hnidp7MaCDXV
SSQROAUSgnQETnJjU/wG1HdD0gYsyZFqeBy0zSDWqYzvEgLwGqKzd2JPgyqW
TBLyQbxOBkskrBMYC6rjDhDdAIz8WKDpv0vAzmnESeJI0BFF4h3p77DOSUP4
mBeSEYbi/gY2tIfBEKCUNvq2dhFDmaFWSaBbPhGQQUdHDzFJbAED2pyB8Iis
58DCI0rAXePwsBqmOZjmfr/uVfb7tJL6/RPpfKe9UqIcL0S+Y8Rox+cFIBQN
92BF4rrjCKBCx6oOg+DL4Z0q4qG8D7yht4rb9x3T8oZfb/f7pIVUwhI7QIiN
bcEeGR9x1QvGG2DD6aF0eRX5wzqz24L3ICJ+ZOyK1oHLfOMZC9zfqySjr/cS
saPOHbgUwfgfZO2eNUg0InBzPYRXWE6j2p5zEItLTn5GOxx4va+mPjj+J1m4
bluwWUPgCoL429/+Bo5uLHwhrPAB85rEpGH1WXxHeD7qwUQLzLj2qEUL1LW7
T6gmBI1ttaEJgJPvsEl0ShRv+b12xNmbk5+itzKbVFN8vSTWCS0O1Q6ItDWC
Wkufbu3T9r5uso5A5+dJNCK7gjc63yomMkOdRwfMypaPNCDVRpWstuu22ctZ
xJRkQTNBIcVdnM4luai+T0ufBq31Ivj4aesZxkkQMRRzxnuqHWFW8l0Bvgnc
miL/vQ3RGQffC1RSWWjdQFZRqugvc8W53laRAuRsaWMaE4Vkp7Qhtdv7EHap
P4qrVMaYIZaMiGtPJcDQfDzHbFbwbH/v05bJ6nONCpa87DypTGWHMmJqZ3+v
TXDzaBVzs4bXVW/GQuAjima+PMOo2OBaAETkuB0gonM1qxm/Oq5yrQ7wENN1
oxzTUnkJztwWP1jQ4qW5yDUobSkbJkQ7UDNksG5IQo5gj4+pO0xM5WCjLXCP
0K37nksGa4ITP1GKWWDaWvgJk2lS7JOD0RSTozBsuc3yhcuYDuft4LnKvZc0
pKiMLzRhL8EEEJAiZpsxnPRgZLPnYNkoT6URuaR0J/pvTH+N5ynllImKsMpD
DfbUUGKQlivm+vrccIxrEPEXYC/yj6wBzl4Bw0eK2EwKG3ADmlv6MIqrOCKD
CTZA2wyWiHjiT4/IRfMhxH8IR5rBKUS44lfxNUr7htQ4+AO2wK8wlyZHN7gg
bjD8R2nyA1NjdVMnH5kwfEpEU6vt5pc4E/vl1nHNgu22/faoKGxG7gTfb9MW
mf753p8STQLmZFo/9ceZLzR7eusVpmAzYOtvG9/jETZDKXT+vj6IpdiMpPOH
p3Xy5ZQ1UY5ObRB+j820ojyRki+wtj1QuE2dXGG0ox7u5FsjUKe3nwCnQsg0
gk7untr644q6fLKadJqN3o1PkUv4QGvYnTdO/WMVLDBLbKXrT+7Q3697wbYF
8QBqHek9FggIJPitarp0kh5CcehHRtMhpEATks8VLHxsNzLpkMi+tO32nRd6
0xiD2qSaEzWh3cNyezZ5lR2HCLa3OmiJ00W8ZMLq0b793hnNpmb0vqocaYeO
/s4dC8K+BBPtFGLE7hM2wjesvdZK3gBuQWd2YxCreX2r/dThzZjuYDy8P+am
kb7c/74T/cjR76cnTPLjp394aDtaXCtlY7yby8goqHG9h2txjZNHJIhjdMyH
rfDzhOxipP0WRtqXTgblyzMgqt49GN2GTn7lHpHkOYY5ApEmoqg78LNxVrUJ
BalbWWGwLfS3fr4cdx5qjII7Nj68YFgRr0Nbfm2DuDj6dzGc5rmiRB1uBM6K
KtiQgnUx2PkYfTkmp4XKO/iZUo9JNkznI4KsEAc2XImLrMyWWBN6GVsgdJ0C
/UZ90wZ+rJs1gsVJjNu19GTTVCMIdqB5ahJUQU0KQ3+TkRxIQDMMd/yoFwsc
UkrlkD5yrsklAwlOPus6EQaffbLOPeqgL5xgQm+2a6mhGGInre/IhGBT7KEp
D9hSZQDxh3DiAuU/TIopoP15UkkXXYp4OJQFhLNmj90K0MiTh6VU2igPXMFa
jN3v167dE2iDqmsWbk12vx8gCjV+ud6P7vefZDH7fc0zPRniGU1o05bBen21
cwIMXWA2GenAGOABbfX0nRyJHfjhcKDj1xIMIN7GWNDtive0h7jHgBCa49gS
S02M4tFOfbbEgKgWCCbl/Qk06Q8c8q+dECOhqRhdeJR3HeR04Gmnw/aGiOv1
u4bhDr1BvFGRsO7AzWFi4jEXOsB5UEodnaLFjBVYHwdAw1vmIMUjPdSk8mJF
M+au4boj3wyhmWhkpLxZ1BNYy6964FGZF7pwTBs/sja4TU2ZD7BSReXFwNQM
PRJlbpJsLo1KQFSXrlkM5Kp2w/fX1x1bO0FUD7mmHsUUL53KshVbRdaAeqDY
TaczvM0R/RiL1InaoDlzInsgmTHaIiG/6m4jnZxGLfNlkFgsxDtCGgXRjqYr
EvRptUcIWDSd1eXX4EKkI0i9XVthkMu1RhmsULNBajZKmHI31V9PAUErggv4
kp0CB7wOkIiCY7daKfYYy8WDmAyg0g4Ui67TStalxWEIEvmcdjbtOYljl2BF
yZ5zbyezrvQxBSXr9kEbu58j7U7N1meNuakusbmd6YMj8MFGL50IOzBsr7eb
kOeMG2EgAmNkUW1jf6N3sKw3sbJJgGZOaXu3oG3yOrIn4mZSbOHOktk16a8L
/B1D2qZSw2o6V+iudZoZN29XutWZxi15RwkxzD937EYi7ec3m6g2pzcfS1L3
tIheRt1IYIlkQNbCSGwgeUkwouadONp+0ylGQINHV+e294o3SCn7KrP5THwB
DDxCyHpT7B28wAwC/ANI+LvvxfWPJ5366f6r5/gU/ln39GCvi08Puntrnn7e
OzjovjZ9rzx9/vzVurZ1y1tdzGWfip1tXbjzSO3X9k5wz5lmxpfOfpGzjUQs
f3zTaHtbJ2kx4VcXm+amppjEWJdmaWw8QrxOeVKTtzNQeK3yuc6J9U2rllkX
gVkLZn3URSy2oNEr9bAmue7LIApnP30tNTcIQ/sd3hRPnDVvx9J4EwuWYAE6
pXuDpeaKV5yJ0BtfJqsGNsIJBsgIuEkwx8BAvAO6OuDtTjN/G1baQCGehCnt
LoQ0T7uN4PTEZbp4mpKWNtKDUIeWDiJwN5NgIL356npZyD6XB5MDun7bC7rR
fnM1RRHGwc202hboLcR6zZ+dbTwhikotQFeFk0fb1GJts60XBwf7B+3gXnjU
fmN0H4xYPEglBztWlVh4lo9ctxvrfHYta3BKWlH0LtfX4dN+/Pe+Dn6tqVs/
Lf1DWTKsAeIE7T8wXlMKH4FrwLRPa8bDI3gd0TuD8Z6asvTfw3aO+DaM9XuO
9/fyRacvnokesYczrZj0Da5zi2wY8BJ8aXjdRhScbYop3PItv1BIb5xjER84
UyemBJ0NtlYgOy+Ffr9tyuLN6QwvmcBb7W4UEBjV1pFk345EWea+GOMFBLZC
wbG8WHJkDbjJaXqjddiIukmKPrPTHuPJs76w9kZbCf6d7AT+cDGx2MKJt+23
QgzRzZhqo1rkeRH/dU6b4zfAwAmWWIGv/7YbReAnv/9m9U3ODODGJ730H90X
Yfd7fxRTnVK3PaJwT45IjMD9r7pfma7vxSAfLb8BO7MyV8fN1gJd4VG9gZvU
TVfYHWxIE2G9w7YbC/mWzEl0NcMCcEdYPehwze+IbtnQ4XHNND8B4eVF6jny
iRMqD4VPWb5I5WhCwJlib1vGRrg0WOgiqtwi140lkF4IR0VrNfUgu3RolmDB
5wK1k17ES2ATgEUIBCikpf57Z0choq9prKYG/iYZltNT6EXIkuNQzkhQy5F+
HcgnBeC6/kbbWsf5GBHlS7IlLWaaPftkT+D5mI+eTaWukxJUCdeOgj2g+xdd
LwthNw6iqXVnYMJtT9l07ZeGWR1vX1pLzRUlZlSsDJ6QA2UZcO98HqxqyIQ3
c6ELGafedOOBySDw4Sw6ohg4BNWMtydm6p3cOuAbz0sqneKA76OJ+AI/4vu0
RaloL26lYgay+adrTDoZfht4OXRQiKHTxBuKbVftf7Amp4QCMOGOmbMzJGeY
Ys1XPSCjskQFm8p7KXXOvkSnDfoefjr5sd3I6qH3sGf7mkaGS7X8NJLjQVzz
fc9sxIk6di/hGnEgfennt5wcnsmAJDoCfThp7mk0Q+arZlUx62W9PW/Ljo2j
XLE1ymQK6jLOgM6K1GWGJsWjy5uIdXRspjJ17GZ4rHtG4QVGvCZ1yMdP+s0t
VctTLnI2eRnonBaEmzX6M15xsOxjaR/M3bNQyg3gMA9fljD8U6I4D6sbtM7R
pgdstqrBqN3x3tkCL4u7rvf19SyMsn237j0UMzW5QVP4DaH2WkxkHgm8CzEH
67H3XBvKbxyMBy24dB3XwmBZURxoGahbGxBhx43MmC6kMJOwjn9lxof0rCmv
b1Z6uEf/bwfTMcaKWvoJP20lwNLDyndSHWY3zCgtQLwjgYWtAUePdYbXYZ2Z
f0IbavPMlrpw9zQwnp/mhH3djtOkmWjVTW50Xy0Rp6B4BihuVtqkztTESsMZ
dbgG3BkEVqvzDRbxSFXd6Fq0b3cRkr0yiEw38ETCrxBqQ6avysbGdz4oZ2Cb
KO1hcSNLL0e3OrENCHie2TOWslFBisbTPNeeAFOTujuqpPJ3zLb6SvX6mAOF
D8f9TsC79qi7eicTJdu2p4OseeLkLhvEozPdxQX8qwsy6+z6w5Lh3PLSboUy
Bmj4uvrcntFQLB3Ox2M6A5O49WxfqUezNME8S3ErJ8sxuZKMvJ078FPQnz6R
qstrR3ZHYZ7pFI57mFDPtZ6J2RVZnUmdShXucfU60ajnF/D8dIZjJQtlaLhZ
P1MnRgIFeYQbtlfHir9nra/3iij9bLzEIxMzIkJACs8wh2HzXeAtt1Tb1FVy
ucBXuOU4CjXIcgvjeJmYov9HnRMNXMgSQRxPyS2ebffrIm0Uk82+suAerW02
6NE5ixaP7pBaR5DrJ8LVLLzf6pPkL9bAXaz544tVrCzWnj5SUuo8PYgZgANv
bvDJBUkny9Llb1jSQb2k+w/Yxj7fVKAjQtzXQUNrAoak4OKHXOPp8ZK00ytB
1DUC5oxd00IuwHrbomO7qc7+qjJnSziNuEanaz2BNx8awgRSOt3pnSZwa41Z
O1fLS/2DN6U0gZepVK8PaeizjsisAJ7ZuBIiM4hGzFUHoGn4zwwPVCR4wpvO
rePOjl8KQddPSFJYNHIUYSqSSF4WeDMJ0DPI9UL0STLq7kAdZyPT2cIwu+Ob
Xjby114M3shnJoNtSjIEV33WYBQjT05gun4ffBdt/I0SMvOoO1xsYKgGFEtF
vGzmCOA2ZqUPiEUcRTmnFL2tL0+O9LQmQ4MFItvbOvXOFAxTsNLpEtPTgc7g
1xG5dzCouUta4xGOt3DLKnYbEkR/cvmFBjVuynHX++1X7zeucOz1lAi/p0r/
8PQzHb8W3+mYkwl9oAsXouLP11iVeEKGJOTGW1FHtIZCGvG1Ou4Wgn8MYU1W
9buHCuceIOwBQqbq96FlkxweZNA6CZifVXL1Fjoe8Wy1YfzRaW+ld8KTHwi5
bNC8fv8CQc0arVujME8g4qz34JR6veGvv+6K7TVa5dDxiFLRrPrQle9WYLVv
yGmwH/tG5JhuWYBTZpjC/qC/2zdpBG0Njh1Lru/i870tHp1oHi+5D6je4Smb
jx3hHAkDj6O9ioApKfSsem7WKJpZlVLLBN7rNLzTt6F/UomQyA1VkTN2XimO
XP1pmUIzj33N40BoFYY4XuP4UU1Mx2AjGl8j3qeMv1Z8rXYdFj3MN9Hgm5mO
5dvKPNRvmIdyas//PjYCdU8X2+/FNkoSfsaaW0B5R/7CuLA5JwNV5gXAGfTR
WC5CTfhUHX9urCv3ZF7fVK3bbRq8xw8QheM8O3414zSRmArY1DvuItAJ3boS
ol+P4ued3BynPsO0tMn9BBbUmoZRfQzfoNyhk2FfO5Ybv1BC3daSsh21ZlQf
I8MTcqLHm+tDLL4zqQXiwY52GWM9EG2OfcdJJ7aNBUwufBsDktuqu9+kE36n
Kbba9GoLDPYZJt5TfXyP23IjsMX6RKAWlaGvFbh9169pztev2fXa79O9pnwM
BNiiEXgNpNdkXbxZOM01Z4A3F0fHW5s56M352sLPEOdbJ9WwrAojkwcXmHsC
6MEXVw6aPPi2Uazt7TZugIl3tJ/kuDGbId7mXS0sclpSIWUa051F2UiZ7Qrq
yc2h8Q0I4LbGKW5gUEm+B73JC3KfEF//1OgistJTHljQ5TZPSsr2ILD5qPct
NpTQc7mUPsUm/M0Ns7XwcHEu1hdCdKAP5jtbkfHKnOy6reuXec+FQqr6dHDg
HE6wIYW+acu79KLOo2fO3QYdU2bIzA4weKE8ZJ3KcgwgdMPXBXCluF5EzTpL
vPuuv5rY8LYynm0qFtSnGHzu4uEF8aMTrDnAyy3NJNNmg8L6Thy3GgnVHHiz
kJhNdMI49x1e7CldHjKur7ZAs71lTm5gzoEZEIiGH2CncdGzp9f5EFApx5gm
VzYPqb4SeMzTHBBopgkF3eMzV6Y6O7XXAdEuD7i7Mr/j4+e4K2pvMEKKNxwc
0VvO8RAc5gwUhY7+6osYUA/tbYx8NLhtds55QDoEhczFGzPROWAFXX1MOOet
5hj7g896UnarR/++ZptIpyMDsQEMb32ki+s/dcRHur33U9vOBCfg0M8QmQ+w
2O65eddpXh8zBvL5jkZ71pjq/kBaW4/ux7bpkLGZLnKdVG+eJXRbBBeu0yXT
szmmQPxNT/dAq6L5fJCcIpghzshkyPdr09VqMIBax1B9ghvZzh/Dq5M3mI8U
5g7uSHzki70/0RCN09LeaSOikA01FiI4uSwqYNZbgdYewRhskWJTzRwSafrq
BFZV5JC5QrJhMQkEIXIL8/EY70OEDp1SbKEL+ukSDFOJXFevV+4tVHb7BYeg
G2CGdGktr11zebsuNosRuuVzZTotOTuDcxugxFPJ2UMLccmui5Vq+23hn4F6
Mi/11Uf6eDJfxuAeUYmd+g9hjmE3D27r7RDatdb3mVCUCN2ZQ9tj/IMUSOf5
2MsHPRhxdpwNG1xRfso2Qa42qpL8wmsWu8wUVjgy9bQqyN7poyesCapi2+mc
dG/SxPavA3qWJrd+yorTmTpBbO9dZgiHa8DZEOAEbbJaouNlTp2bQt3SnQBW
P239AfLkuXF1BR5iohRds8aCezQO0xRb1CMEVFnRvL9Oqiy5v6fq+6lMC0w2
s90h/0y4Ab6jomq6/YUQQIzFrabYF0dA94icxMQqajBqlTlMVHGZNwk5IMNl
mNZp1Byt1IJoPeb1j9clmkVCmUqeqXvuTV9sSRtaqnG1pr0h+yNepY23TdKd
vFjChKiA7rrQl7x61yU1L82iG+Ccl8d0X669XIkrq9Bv0u1G9PdW6AZdvpZV
BaZ0HadjkuNHDoMbZw+805B98Bx80p3Qu7v79MU9WUlnLldraHDTWV+nsXfw
j1+nsXfQphOZXkK3rm/0M8AkWr0dSCEkWRx7iTO7PsREgYwmEUieXTusyFvc
MrH3BilTpOEcHd2goVUeuNbniZx0b7DIuLQsN3sj86LegltbzrduNxwrHPb3
hGbeDYjphm+fvdFXUX7jvqYfpclYVslMfuPuj8NMrkjb30gqRNSzg8kdUytn
T9xcj8GhI4qDLrWulxqdO/GvOmpGl//szJlJVaq+W+hqryDvwzz7xvQbyOm6
AE799wd02yFLFa971RD9gWStm9t3M6iUgsXs6xOT+m5bLjxelzpH7jONLfGr
aKG30r9SYtjtby3/vhP1DJ2XbbKXTzg9pOK4t68dBDinfmfV5HoKHiAsWtXs
J+l1rbnHVvd81T3XnqrWXa0fVncJe3iqykpC1qK/2lPkjbYmTf9oLnOdFj8t
vfmwchNGQFPEF3KuzfDUR1kaxww79sja82gv6nbhfys1upwCIo7pMfShPX1e
khwYhkqmRMi9zmcceH9YB1EcxQfb12QAR1gtN8N91kO8hxvNIjbGu8DAiI8I
M6yP/tBJPHvGf4XPvRpRnOA5koAL2517tAu7HYkoW9qLfGaA2fFMj6VR22a6
1FsXcwR4AmyiyxPsIJE4qcNFBPb1xVJ7+7+DJ9xvR80pagfHx4O8o0CgB/DO
Ld8kaMnY/R3I2G1HdvlrfhKUtSW79a17BIgRVi1hPdUQgbfScdFjhKTPQdd1
NfoPNzSzzzjT+m9HNqQv3mUy4PrgZBZPuGJV47zjGvvG63jVrF7mF/GAhQP7
VqasZzl0T7YiQtVO0O3eVtskY2ecwBaN2uibLw7zi9xV8OVQn86So+9aWd66
NwdWMTuAxNLN7bbOyGS18M/XFBJwi/kjMuI4n2fDJLXbBL0KM2Ughj+VmFK4
zCPxavdgd78rtk6v3v38yylK+sqe5zRDYt3FymiXby9Bxpd/OhdHCqMj/BIi
iPGcLz7kW9hb9Z9GQhlwUN+qdTJLMwg+8S/+cIsdfmOnHfwPexeqf0B0AAA=

-->

</rfc>
