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

<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-ietf-tls-mlkem/"/>.
      </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/tlswg/draft-ietf-tls-mlkem"/>.</t>
    </note>
  </front>
  <middle>
    <?line 107?>

<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(0x0200),
          mlkem768(0x0201),
          mlkem1024(0x0202)

         ...,

    } 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>
        <t>For all parameter sets, the server <bcp14>MUST</bcp14> perform the encapsulation key check
described in Section 7.2 of <xref target="FIPS203"/> on the client's encapsulation key,
and abort with an <tt>illegal_parameter</tt> alert if it fails.</t>
        <t>For all parameter sets, the client <bcp14>MUST</bcp14> check if the ciphertext length
matches the selected parameter set, and abort with an <tt>illegal_parameter</tt>
alert if it fails.</t>
        <t>If ML-KEM decapsulation fails for any other reason, the connection <bcp14>MUST</bcp14> be
aborted with an <tt>internal_error</tt> alert.</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>
      <section anchor="larger-encapsulation-keys-andor-ciphertexts">
        <name>Larger encapsulation keys and/or ciphertexts</name>
        <t>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>
      </section>
      <section anchor="failures">
        <name>Failures</name>
        <t>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 less than 2^-138; implementers should be
aware of the potential of handshake failure. Clients can retry if a failure
is encountered.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="fixed-lengths">
        <name>Fixed lengths</name>
        <t>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>
      </section>
      <section anchor="ind-cca">
        <name>IND-CCA</name>
        <t>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>
      </section>
      <section anchor="binding-properties">
        <name>Binding properties</name>
        <t>TLS 1.3's key schedule commits to the the ML-KEM encapsulation key and the
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>
      </section>
    </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>0x0200</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>0x0201</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>0x0202</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="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 (U.S.)</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 and Meta</organization>
            </author>
            <date day="17" month="June" year="2025"/>
            <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-13"/>
        </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="16" month="June" year="2025"/>
            <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 and adds a
   "Comment" column to all active registries that do not already have a
   "Comment" column.  Finally, it updates the registration request
   instructions.

   This document updates RFC 8447.

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

<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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
hg8ia/+/VfsPhQBtmux/AaqoODeTNwAA

-->

</rfc>
