<?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.19 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-connolly-tls-mlkem-key-agreement-02" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.2 -->
  <front>
    <title abbrev="connolly-tls-mlkem-key-agreement">ML-KEM Post-Quantum Key Agreement for TLS 1.3</title>
    <seriesInfo name="Internet-Draft" value="draft-connolly-tls-mlkem-key-agreement-02"/>
    <author fullname="Deirdre Connolly">
      <organization>SandboxAQ</organization>
      <address>
        <email>durumcrustulum@gmail.com</email>
      </address>
    </author>
    <date year="2024" month="October" day="10"/>
    <area>Security</area>
    <workgroup>Transport Layer Security</workgroup>
    <keyword>kems</keyword>
    <keyword>tls</keyword>
    <abstract>
      <?line 103?>

<t>This memo defines ML-KEM-512, ML-KEM-768, and ML-KEM-1024 as a standalone
<tt>NamedGroup</tt>s for use in TLS 1.3 to achieve post-quantum key agreement.</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-connolly-tls-mlkem-key-agreement/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Transport Layer Security 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/dconnolly/draft-connolly-tls-mlkem-key-agreement"/>.</t>
    </note>
  </front>
  <middle>
    <?line 108?>

<section anchor="introduction">
      <name>Introduction</name>
      <section anchor="motivation">
        <name>Motivation</name>
        <t>FIPS 203 standard (ML-KEM) is a new FIPS standard for post-quantum
key agreement via lattice-based key establishment mechanism
(KEM). Having a fully post-quantum (not hybrid) key agreement
option for TLS 1.3 is necessary for migrating beyond hybrids and
for users that need to be fully post-quantum.</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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.</t>
      <?line -18?>

</section>
    <section anchor="kems">
      <name>Key encapsulation mechanisms</name>
      <t>This document models key agreement as key encapsulation mechanisms
(KEMs), which consist of three algorithms:</t>
      <ul spacing="normal">
        <li>
          <t><tt>KeyGen() -&gt; (pk, sk)</tt>: A probabilistic key generation algorithm,
which generates a public encapsulation key <tt>pk</tt> and a secret
decapsulation key <tt>sk</tt>.</t>
        </li>
        <li>
          <t><tt>Encaps(pk) -&gt; (ct, shared_secret)</tt>: A probabilistic encapsulation
algorithm, which takes as input a public encapsulation key <tt>pk</tt> and
outputs a ciphertext <tt>ct</tt> and shared secret <tt>shared_secret</tt>.</t>
        </li>
        <li>
          <t><tt>Decaps(sk, ct) -&gt; shared_secret</tt>: A decapsulation algorithm, which takes as
input a secret decapsulation key <tt>sk</tt> and ciphertext <tt>ct</tt> and outputs
a shared secret <tt>shared_secret</tt>.</t>
        </li>
      </ul>
      <t>ML-KEM-512, ML-KEM-768 and ML-KEM-1024 conform to this API:</t>
      <ul spacing="normal">
        <li>
          <t>ML-KEM-512 has encapsulation keys of size 800 bytes, expanded decapsulation
keys of 1632 bytes, decapsulation key seeds of size 64 bytes, ciphertext
size of 768 bytes, and shared secrets of size 32 bytes</t>
        </li>
        <li>
          <t>ML-KEM-768 has encapsulation keys of size 1184 bytes, expanded
decapsulation keys of 2400 bytes, decapsulation key seeds of size 64 bytes,
ciphertext size of 1088 bytes, and shared secrets of size 32 bytes</t>
        </li>
        <li>
          <t>ML-KEM-1024 has encapsulation keys of size 1568 bytes, expanded
decapsulation keys of 3168 bytes, decapsulation key seeds of size 64 bytes,
ciphertext size of 1568 bytes, and shared secrets of size 32 bytes</t>
        </li>
      </ul>
    </section>
    <section anchor="construction">
      <name>Construction</name>
      <t>We define the KEMs as <tt>NamedGroup</tt>s, sent in the <tt>supported_groups</tt>
extension.</t>
      <section anchor="negotiation">
        <name>Negotiation</name>
        <t>Each method is its own solely post-quantum key agreement method, which
are assigned their own identifiers, registered by IANA in the TLS
Supported Groups registry:</t>
        <artwork><![CDATA[
    enum {

         ...,

          /* ML-KEM Key Agreement Methods */
          mlkem512(0x0512),
          mlkem768(0x0768),
          mlkem1024(0x1024)

         ...,

    } NamedGroup;
]]></artwork>
      </section>
      <section anchor="construction-transmitting">
        <name>Transmitting encapsulation keys and ciphertexts</name>
        <t>The encapsulation key and ciphertext values are directly encoded with
fixed lengths as in <xref target="FIPS203"/>; the representation and length of
elements <bcp14>MUST</bcp14> be fixed once the algorithm is fixed.</t>
        <t>In TLS 1.3 a KEM encapsulation key or KEM ciphertext is
represented as a <tt>KeyShareEntry</tt>:</t>
        <artwork><![CDATA[
    struct {
        NamedGroup group;
        opaque key_exchange<1..2^16-1>;
    } KeyShareEntry;
]]></artwork>
        <t>These are transmitted in the <tt>extension_data</tt> fields of
<tt>KeyShareClientHello</tt> and <tt>KeyShareServerHello</tt> extensions:</t>
        <artwork><![CDATA[
    struct {
        KeyShareEntry client_shares<0..2^16-1>;
    } KeyShareClientHello;

    struct {
        KeyShareEntry server_share;
    } KeyShareServerHello;
]]></artwork>
        <t>The client's shares are listed in descending order of client preference;
the server selects one algorithm and sends its corresponding share.</t>
        <t>For the client's share, the <tt>key_exchange</tt> value contains the <tt>pk</tt>
output of the corresponding KEM <tt>NamedGroup</tt>'s <tt>KeyGen</tt> algorithm.</t>
        <t>For the server's share, the <tt>key_exchange</tt> value contains the <tt>ct</tt>
output of the corresponding KEM <tt>NamedGroup</tt>'s <tt>Encaps</tt> algorithm.</t>
      </section>
      <section anchor="construction-shared-secret">
        <name>Shared secret calculation</name>
        <t>The shared secret output from the ML-KEM <tt>Encaps</tt> and <tt>Decaps</tt>
algorithms over the appropriate keypair and ciphertext results in the
same shared secret <tt>shared_secret</tt>, which is inserted into the TLS 1.3
key schedule in place of the (EC)DHE shared secret, as shown in
<xref target="fig-key-schedule"/>.</t>
        <figure anchor="fig-key-schedule">
          <name>Key schedule for key agreement</name>
          <artwork><![CDATA[
                                    0
                                    |
                                    v
                      PSK ->  HKDF-Extract = Early Secret
                                    |
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
                                    |
                                    v
                              Derive-Secret(., "derived", "")
                                    |
                                    v
             shared_secret -> HKDF-Extract = Handshake Secret
             ^^^^^^^^^^^^^          |
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
                                    |
                                    v
                              Derive-Secret(., "derived", "")
                                    |
                                    v
                         0 -> HKDF-Extract = Master Secret
                                    |
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="discussion">
      <name>Discussion</name>
      <t><strong>Larger encapsulation keys and/or ciphertexts</strong> The <tt>KeyShareEntry</tt> struct
limits public keys and ciphertexts to 2^16-1 bytes; this is the (2^16-1)-byte
limit on the <tt>key_exchange</tt> field in the <tt>KeyShareEntry</tt> struct. All defined
parameter sets for ML-KEM have encapsulation keys and ciphertexts that fall
within the TLS constraints.</t>
      <t><strong>Failures</strong> Some post-quantum key exchange algorithms, including ML-KEM,
have non-zero probability of failure, meaning two honest parties may derive
different shared secrets.  This would cause a handshake failure. ML-KEM has a
cryptographically small failure rate; implementers should be aware of the
potential of handshake failure. Clients can retry if a failure is
encountered.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t><strong>Fixed lengths</strong> For each <tt>NameGroup</tt>, the lengths are fixed (that is,
constant) for encapsulation keys, the ciphertexts, and the shared secrets.</t>
      <t>Variable-length secrets are, generally speaking, dangerous.  In particular,
when using key material of variable length and processing it using hash
functions, a timing side channel may arise.  In broad terms, when the secret
is longer, the hash function may need to process more blocks internally.  In
some unfortunate circumstances, this has led to timing attacks, e.g. the
Lucky Thirteen <xref target="LUCKY13"/> and Raccoon <xref target="RACCOON"/> attacks.</t>
      <t><xref target="AVIRAM"/> identified a risk of using variable-length secrets when the hash
function used in the key derivation function is no longer
collision-resistant.</t>
      <t><strong>IND-CCA</strong> The main security property for KEMs is indistinguishability under
adaptive chosen ciphertext attack (IND-CCA2), which means that shared secret
values should be indistinguishable from random strings even given the ability
to have other arbitrary ciphertexts decapsulated.  IND-CCA2 corresponds to
security against an active attacker, and the public key / secret key pair can
be treated as a long-term key or reused.  A common design pattern for
obtaining security under key reuse is to apply the Fujisaki-Okamoto (FO)
transform <xref target="FO"/> or a variant thereof <xref target="HHK"/>.</t>
      <t>Key exchange in TLS 1.3 is phrased in terms of Diffie-Hellman key exchange in
a group.  DH key exchange can be modeled as a KEM, with <tt>KeyGen</tt>
corresponding to selecting an exponent <tt>x</tt> as the secret key and computing
the public key <tt>g^x</tt>; encapsulation corresponding to selecting an exponent
<tt>y</tt>, computing the ciphertext <tt>g^y</tt> and the shared secret <tt>g^(xy)</tt>, and
decapsulation as computing the shared secret <tt>g^(xy)</tt>. See <xref target="HPKE"/> for more
details of such Diffie-Hellman-based key encapsulation
mechanisms. Diffie-Hellman key exchange, when viewed as a KEM, does not
formally satisfy IND-CCA2 security, but is still safe to use for ephemeral
key exchange in TLS 1.3, see e.g. <xref target="DOWLING"/>.</t>
      <t>TLS 1.3 does not require that ephemeral public keys be used only in a single
key exchange session; some implementations may reuse them, at the cost of
limited forward secrecy.  As a result, any KEM used in the manner described
in this document <bcp14>MUST</bcp14> explicitly be designed to be secure in the event that
the public key is reused.  Finite-field and elliptic-curve Diffie-Hellman key
exchange methods used in TLS 1.3 satisfy this criteria.  For generic KEMs,
this means satisfying IND-CCA2 security or having a transform like the
Fujisaki-Okamoto transform <xref target="FO"/> <xref target="HHK"/> applied.  While it is recommended
that implementations avoid reuse of KEM public keys, implementations that do
reuse KEM public keys <bcp14>MUST</bcp14> ensure that the number of reuses of a KEM public
key abides by any bounds in the specification of the KEM or subsequent
security analyses.  Implementations <bcp14>MUST NOT</bcp14> reuse randomness in the
generation of KEM ciphertexts.</t>
      <t><strong>Binding properties</strong> TLS 1.3's key schedule commits to the the ML-KEM
encapsulation key and the encapsulated shared secret ciphertext as the
<tt>key_exchange</tt> field as part of the <tt>key_share</tt> extension are populated with
those values are included as part of the handshake messages, providing
resilience against re-encapsulation attacks against KEMs used for key
agreement.</t>
      <t>Because of the inclusion of the ML-KEM ciphertext in the TLS 1.3 key
schedule, there is no concern of malicious tampering (MAL) adversaries, nor
of just honestly-generated but leaked key pairs (LEAK adversaries). The same
is true of KEMs with weaker binding properties, even if they were to have
more constraints for secure use in contexts outside of TLS 1.3 handshake key
agreement.These computational binding properties for KEMs were formalized in
<xref target="CDM23"/>.</t>
      <!-- TODO: extrapolate on Kemmy Schmidt implications; in the mlkem document, -->
<!-- strongly encourage implementers to use the seed variant of FIPS 203 to -->
<!-- achieve strong binding properties -->

</section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests/registers three new entries to the TLS Named Group
(or Supported Group) registry, according to the procedures in <xref section="6" sectionFormat="of" target="tlsiana"/>.</t>
      <dl>
        <dt>Value:</dt>
        <dd>
          <t>0x0512 (please)</t>
        </dd>
        <dt>Description:</dt>
        <dd>
          <t>MLKEM512</t>
        </dd>
        <dt>DTLS-OK:</dt>
        <dd>
          <t>Y</t>
        </dd>
        <dt>Recommended:</dt>
        <dd>
          <t>N</t>
        </dd>
        <dt>Reference:</dt>
        <dd>
          <t>This document</t>
        </dd>
        <dt>Comment:</dt>
        <dd>
          <t>FIPS 203 version of ML-KEM-512</t>
        </dd>
        <dt>Value:</dt>
        <dd>
          <t>0x0768 (please)</t>
        </dd>
        <dt>Description:</dt>
        <dd>
          <t>MLKEM768</t>
        </dd>
        <dt>DTLS-OK:</dt>
        <dd>
          <t>Y</t>
        </dd>
        <dt>Recommended:</dt>
        <dd>
          <t>N</t>
        </dd>
        <dt>Reference:</dt>
        <dd>
          <t>This document</t>
        </dd>
        <dt>Comment:</dt>
        <dd>
          <t>FIPS 203 version of ML-KEM-768</t>
        </dd>
        <dt>Value:</dt>
        <dd>
          <t>0x1024 (please)</t>
        </dd>
        <dt>Description:</dt>
        <dd>
          <t>MLKEM1024</t>
        </dd>
        <dt>DTLS-OK:</dt>
        <dd>
          <t>Y</t>
        </dd>
        <dt>Recommended:</dt>
        <dd>
          <t>N</t>
        </dd>
        <dt>Reference:</dt>
        <dd>
          <t>This document</t>
        </dd>
        <dt>Comment:</dt>
        <dd>
          <t>FIPS 203 version of ML-KEM-1024</t>
        </dd>
      </dl>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="FIPS203">
          <front>
            <title>Module-Lattice-Based Key-Encapsulation Mechanism Standard</title>
            <author>
              <organization/>
            </author>
            <date month="August" year="2024"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.fips.203"/>
          <refcontent>National Institute of Standards and Technology</refcontent>
        </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="AVIRAM" target="https://mailarchive.ietf.org/arch/msg/tls/F4SVeL2xbGPaPB2GW_GkBbD_a5M/">
          <front>
            <title>[TLS] Combining Secrets in Hybrid Key Exchange in TLS 1.3</title>
            <author initials="" surname="Nimrod Aviram">
              <organization/>
            </author>
            <author initials="" surname="Benjamin Dowling">
              <organization/>
            </author>
            <author initials="" surname="Ilan Komargodski">
              <organization/>
            </author>
            <author initials="" surname="Kenny Paterson">
              <organization/>
            </author>
            <author initials="" surname="Eyal Ronen">
              <organization/>
            </author>
            <author initials="" surname="Eylon Yogev">
              <organization/>
            </author>
            <date year="2021" month="September" day="01"/>
          </front>
        </reference>
        <reference anchor="CDM23" target="https://eprint.iacr.org/2023/1933.pdf">
          <front>
            <title>Keeping Up with the KEMs: Stronger Security Notions for KEMs and automated analysis of KEM-based protocols</title>
            <author initials="C." surname="Cremers" fullname="Cas Cremers">
              <organization>CISPA Helmholtz Center for Information Security</organization>
            </author>
            <author initials="A." surname="Dax" fullname="Alexander Dax">
              <organization>CISPA Helmholtz Center for Information Security</organization>
            </author>
            <author initials="N." surname="Medinger" fullname="Niklas Medinger">
              <organization>CISPA Helmholtz Center for Information Security</organization>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <reference anchor="DOWLING">
          <front>
            <title>A Cryptographic Analysis of the TLS 1.3 Handshake Protocol</title>
            <author fullname="Benjamin Dowling" initials="B." surname="Dowling">
              <organization/>
            </author>
            <author fullname="Marc Fischlin" initials="M." surname="Fischlin">
              <organization/>
            </author>
            <author fullname="Felix Günther" initials="F." surname="Günther">
              <organization/>
            </author>
            <author fullname="Douglas Stebila" initials="D." surname="Stebila">
              <organization/>
            </author>
            <date month="July" year="2021"/>
          </front>
          <seriesInfo name="Journal of Cryptology" value="vol. 34, no. 4"/>
          <seriesInfo name="DOI" value="10.1007/s00145-021-09384-1"/>
          <refcontent>Springer Science and Business Media LLC</refcontent>
        </reference>
        <reference anchor="FO">
          <front>
            <title>Secure Integration of Asymmetric and Symmetric Encryption Schemes</title>
            <author fullname="Eiichiro Fujisaki" initials="E." surname="Fujisaki">
              <organization/>
            </author>
            <author fullname="Tatsuaki Okamoto" initials="T." surname="Okamoto">
              <organization/>
            </author>
            <date month="December" year="2011"/>
          </front>
          <seriesInfo name="Journal of Cryptology" value="vol. 26, no. 1, pp. 80-101"/>
          <seriesInfo name="DOI" value="10.1007/s00145-011-9114-1"/>
          <refcontent>Springer Science and Business Media LLC</refcontent>
        </reference>
        <reference anchor="HHK">
          <front>
            <title>A Modular Analysis of the Fujisaki-Okamoto Transformation</title>
            <author fullname="Dennis Hofheinz" initials="D." surname="Hofheinz">
              <organization/>
            </author>
            <author fullname="Kathrin Hövelmanns" initials="K." surname="Hövelmanns">
              <organization/>
            </author>
            <author fullname="Eike Kiltz" initials="E." surname="Kiltz">
              <organization/>
            </author>
            <date year="2017"/>
          </front>
          <seriesInfo name="Lecture Notes in Computer Science" value="pp. 341-371"/>
          <seriesInfo name="DOI" value="10.1007/978-3-319-70500-2_12"/>
          <seriesInfo name="ISBN" value="[&quot;9783319704999&quot;, &quot;9783319705002&quot;]"/>
          <refcontent>Springer International Publishing</refcontent>
        </reference>
        <reference anchor="HPKE">
          <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="hybrid">
          <front>
            <title>Hybrid key exchange in TLS 1.3</title>
            <author fullname="Douglas Stebila" initials="D." surname="Stebila">
              <organization>University of Waterloo</organization>
            </author>
            <author fullname="Scott Fluhrer" initials="S." surname="Fluhrer">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Shay Gueron" initials="S." surname="Gueron">
              <organization>University of Haifa</organization>
            </author>
            <date day="7" month="October" year="2024"/>
            <abstract>
              <t>   Hybrid key exchange refers to using multiple key exchange algorithms
   simultaneously and combining the result with the goal of providing
   security even if all but one of the component algorithms is broken.
   It is motivated by transition to post-quantum cryptography.  This
   document provides a construction for hybrid key exchange in the
   Transport Layer Security (TLS) protocol version 1.3.

   Discussion of this work is encouraged to happen on the TLS IETF
   mailing list tls@ietf.org or on the GitHub repository which contains
   the draft: https://github.com/dstebila/draft-ietf-tls-hybrid-design.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-hybrid-design-11"/>
        </reference>
        <reference anchor="LUCKY13" target="https://ieeexplore.ieee.org/iel7/6547086/6547088/06547131.pdf">
          <front>
            <title>Lucky Thirteen: Breaking the TLS and DTLS record protocols</title>
            <author initials="N. J." surname="Al Fardan">
              <organization/>
            </author>
            <author initials="K. G." surname="Paterson">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RACCOON" target="https://raccoon-attack.com/">
          <front>
            <title>Raccoon Attack: Finding and Exploiting Most-Significant-Bit-Oracles in TLS-DH(E)</title>
            <author initials="R." surname="Merget">
              <organization/>
            </author>
            <author initials="M." surname="Brinkmann">
              <organization/>
            </author>
            <author initials="N." surname="Aviram">
              <organization/>
            </author>
            <author initials="J." surname="Somorovsky">
              <organization/>
            </author>
            <author initials="J." surname="Mittmann">
              <organization/>
            </author>
            <author initials="J." surname="Schwenk">
              <organization/>
            </author>
            <date year="2020" month="September"/>
          </front>
        </reference>
        <reference anchor="tlsiana">
          <front>
            <title>IANA Registry Updates for TLS and DTLS</title>
            <author fullname="Joseph A. Salowey" initials="J. A." surname="Salowey">
              <organization>Venafi</organization>
            </author>
            <author fullname="Sean Turner" initials="S." surname="Turner">
              <organization>sn3rd</organization>
            </author>
            <date day="30" month="April" year="2024"/>
            <abstract>
              <t>   This document updates the changes to TLS and DTLS IANA registries
   made in RFC 8447.  It adds a new value "D" for discouraged to the
   recommended column of the selected TLS registries.

   This document updates the following RFCs: 3749, 5077, 4680, 5246,
   5705, 5878, 6520, 7301, and 8447.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-rfc8447bis-09"/>
        </reference>
      </references>
    </references>
    <?line 427?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to Douglas Stebila for consultation on the
draft-ietf-tls-hybrid-design design.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
8R24a3v/Cz7SSSHENgAA

-->

</rfc>
