<?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.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-tls-ecdhe-mlkem-05" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="ECDHE-MLKEM">Post-quantum hybrid ECDHE-MLKEM Key Agreement for TLSv1.3</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-tls-ecdhe-mlkem-05"/>
    <author initials="K." surname="Kwiatkowski" fullname="Kris Kwiatkowski">
      <organization>PQShield</organization>
      <address>
        <email>kris@amongbytes.com</email>
      </address>
    </author>
    <author initials="P." surname="Kampanakis" fullname="Panos Kampanakis">
      <organization>AWS</organization>
      <address>
        <email>kpanos@amazon.com</email>
      </address>
    </author>
    <author initials="B. E." surname="Westerbaan" fullname="Bas Westerbaan">
      <organization>Cloudflare</organization>
      <address>
        <email>bas@cloudflare.com</email>
      </address>
    </author>
    <author initials="D." surname="Stebila" fullname="Douglas Stebila">
      <organization>University of Waterloo</organization>
      <address>
        <email>dstebila@waterloo.ca</email>
      </address>
    </author>
    <date year="2026" month="May" day="26"/>
    <area>Security</area>
    <workgroup>Transport Layer Security</workgroup>
    <keyword>ECDH</keyword>
    <keyword>hybrid</keyword>
    <keyword>ML-KEM</keyword>
    <keyword>post-quantum</keyword>
    <keyword>x25519</keyword>
    <abstract>
      <?line 62?>

<t>This draft defines three hybrid key agreement mechanisms for TLS 1.3 - X25519MLKEM768,
SecP256r1MLKEM768, and SecP384r1MLKEM1024 - that combine the post-quantum ML-KEM
(Module-Lattice-Based Key Encapsulation Mechanism) with an ECDHE
(Elliptic Curve Diffie-Hellman) exchange.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://tlswg.github.io/draft-ietf-tls-ecdhe-mlkem/draft-ietf-tls-ecdhe-mlkem.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-tls-ecdhe-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-ecdhe-mlkem"/>.</t>
    </note>
  </front>
  <middle>
    <?line 69?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>ML-KEM is a key encapsulation mechanism (KEM) defined in the <xref target="NIST-FIPS-203"/>. It is designed to
withstand cryptanalytic attacks from quantum computers.</t>
      <t>The <xref target="hybrid"/> document defines a framework for combining traditional key exchanges with next-generation key
exchange in TLS 1.3. The goal of this approach is to provide security against both classical and quantum
adversaries while maintaining compatibility with existing infrastructure and protocols.</t>
      <t>This document applies the framework to ML-KEM
and specifies code points for the hybrid groups.</t>
    </section>
    <section anchor="motivation">
      <name>Motivation</name>
      <t>This document introduces three new supported groups for hybrid post-quantum key agreements in TLS 1.3: the X25519MLKEM768,
SecP256r1MLKEM768, and SecP384r1MLKEM1024 which combine ML-KEM with ECDH in the manner of <xref target="hybrid"/>. Any of the hybrid groups
specified in this document may be implemented in a FIPS-approved way as discussed in <xref target="regulatory-context"/>.</t>
      <ul spacing="normal">
        <li>
          <t>The first one uses X25519 <xref target="RFC7748"/>, is widely deployed, and often serves as the most practical choice for a single post-quantum/traditional (PQ/T) hybrid combiner <xref target="RFC9794"/> in TLS 1.3.</t>
        </li>
        <li>
          <t>The second group uses secp256r1 (NIST P-256) <xref target="NIST-FIPS-186"/>. This group supports use cases that require both shared secrets to be generated by FIPS-approved mechanisms.</t>
        </li>
        <li>
          <t>The third group uses secp384r1 (NIST P-384) <xref target="NIST-FIPS-186"/>. This group is intended for high-security environments that require FIPS-approved mechanisms with an increased security margin.</t>
        </li>
      </ul>
      <t>Key establishment using NIST curves is outlined in Section 6.1.1.2 of <xref target="NIST-SP-800-56A"/>.</t>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The <xref target="hybrid"/> document defines "traditional" algorithms as those that are already widely adopted and "next-generation" algorithms
as those that are not yet widely adopted, such as post-quantum algorithms. In this document, ECDH using Curve25519, P-256, or
P-384 is considered traditional, while ML-KEM is considered next-generation.</t>
        <t>The <xref target="hybrid"/> document also defines a "hybrid" key exchange as the simultaneous use of multiple key exchange algorithms, with their
outputs combined to provide security as long as at least one of the component algorithms remains secure, even if the others are
compromised. This document uses the term "hybrid" with the same meaning.</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="negotiated-groups">
      <name>Negotiated Groups</name>
      <section anchor="client-share">
        <name>Client share</name>
        <t>When the X25519MLKEM768 group is negotiated, the client's key_exchange value
is the concatenation of the client's ML-KEM-768 encapsulation key
and the client's X25519 ephemeral share.
The size of the client share is 1216 bytes (1184 bytes for the ML-KEM part and 32 bytes for X25519).</t>
        <t>Note: The group name X25519MLKEM768 does not adhere to the naming convention outlined in
<xref section="3.2" sectionFormat="of" target="hybrid"/>. Specifically, the order of shares in the concatenation has been
reversed. This is due to historical reasons.</t>
        <t>When the SecP256r1MLKEM768 group is negotiated, the client's key_exchange value
is the concatenation of the secp256r1 ephemeral share and ML-KEM-768 encapsulation key.
The ECDHE share is the serialized value of the uncompressed ECDH point representation as
defined  in <xref section="4.2.8.2" sectionFormat="of" target="RFC8446"/>. The size of the client share is 1249 bytes
(65 bytes for the secp256r1 part and 1184 bytes for ML-KEM).</t>
        <t>When the SecP384r1MLKEM1024 group is negotiated, the client's key_exchange value
is the concatenation of the secp384r1 ephemeral share and the ML-KEM-1024
encapsulation key. The ECDH share is serialized value of the uncompressed ECDH point
represenation as defined in <xref section="4.2.8.2" sectionFormat="of" target="RFC8446"/>. The size of the
client share is 1665 bytes (97 bytes for the secp384r1 part and 1568 for ML-KEM).</t>
      </section>
      <section anchor="server-share">
        <name>Server share</name>
        <t>When the X25519MLKEM768 group is negotiated, the server's key exchange
value is the concatenation of an ML-KEM ciphertext returned from encapsulation
to the client's encapsulation key, and the server's ephemeral X25519 share.
The size of the server share is 1120 bytes (1088 bytes for the ML-KEM part and 32 bytes for X25519).</t>
        <t>When the SecP256r1MLKEM768 group is negotiated, the server's key exchange
value is the concatenation of the server's ephemeral secp256r1 share encoded
in the same way as the client share and an ML-KEM ciphertext returned from encapsulation
to the client's encapsulation key. The size of the server share is 1153 bytes (1088 bytes
for the ML-KEM part and 65 bytes for secp256r1).</t>
        <t>When the SecP384r1MLKEM1024 group is negotiated, the server's key exchange
value is the concatenation of the server's ephemeral secp384r1 share
encoded in the same way as the client share and an ML-KEM ciphertext returned
from encapsulation to the client's encapsulation key. The size of the server
share is 1665 bytes (1568 bytes for the ML-KEM part and 97 bytes for
secp384r1)</t>
        <t>For all groups, the server <bcp14>MUST</bcp14> perform the encapsulation key check
described in Section 7.2 of <xref target="NIST-FIPS-203"/> on the client's encapsulation
key, and abort with an illegal_parameter alert if it fails.</t>
        <t>For all groups, the client <bcp14>MUST</bcp14> check if the ciphertext length matches
the selected group, and abort with an illegal_parameter alert if it fails.
If ML-KEM decapsulation fails for any other reason, the connection <bcp14>MUST</bcp14>
be aborted with an internal_error alert.</t>
        <t>For all groups, both client and server <bcp14>MUST</bcp14> process the ECDH part
as described in <xref section="4.2.8.2" sectionFormat="of" target="RFC8446"/>, including all validity checks,
and abort with an illegal_parameter alert if it fails.</t>
      </section>
      <section anchor="shared-secret">
        <name>Shared secret</name>
        <t>For X25519MLKEM768, the shared secret is the concatenation of the ML-KEM
shared secret and the X25519 shared secret. The shared secret is 64 bytes
(32 bytes for each part).</t>
        <t>For SecP256r1MLKEM768, the shared secret is the concatenation of the
ECDHE and ML-KEM shared secret. The ECDHE shared secret is the x-coordinate of the ECDH
shared secret elliptic curve point represented as an octet string as
defined in <xref section="7.4.2" sectionFormat="of" target="RFC8446"/>.
The size of the shared secret is 64 bytes (32 bytes for each part).</t>
        <t>For SecP384r1MLKEM1024, the shared secret is the concatenation of the
ECDHE and ML-KEM shared secret. The ECDHE shared secret is the x-coordinate of the ECDH
shared secret elliptic curve point represented as an octet string as
defined in <xref section="7.4.2" sectionFormat="of" target="RFC8446"/>.
The size of the shared secret is 80 bytes (48 bytes for the ECDH part and
32 bytes for the ML-KEM part).</t>
        <t>For all groups, both client and server <bcp14>MUST</bcp14> calculate the ECDH part of the
shared secret as described in <xref section="7.4.2" sectionFormat="of" target="RFC8446"/>, including the
all-zero shared secret check for X25519, and abort the connection with an
illegal_parameter alert if it fails.</t>
      </section>
    </section>
    <section anchor="regulatory-context">
      <name>Regulatory Context</name>
      <t>This section provides informal notes on how the hybrid key agreement mechanisms defined
in this document relate to existing NIST guidance on key derivation and hybrid
key establishment.</t>
      <ul spacing="normal">
        <li>
          <t><strong>FIPS-compliance</strong>. All groups defined in this document permit FIPS-approved key derivation as per <xref target="NIST-SP-800-56C"/>
and <xref target="NIST-SP-800-135"/>. NIST's special publication 800-56Cr2 <xref target="NIST-SP-800-56C"/> approves the
usage of HKDF <xref target="RFC5869"/> with two distinct shared secrets, with the condition that the first
one is computed by a FIPS-approved key-establishment scheme. FIPS also requires a certified
implementation of the scheme, which will remain more ubiquitous for secp256r1 in the coming years. For this reason,
the ML-KEM shared secret is placed first in X25519MLKEM768, while the ECDH shared secret is placed first
in SecP256r1MLKEM768 and SecP384r1MLKEM1024. This means that for SecP256r1MLKEM768 and SecP384r1MLKEM1024,
the ECDH implementation must be certified whereas the ML-KEM implementation does not require certification. In
contrast, for X25519MLKEM768, the ML-KEM implementation must be certified.</t>
        </li>
        <li>
          <t><strong>SP800-227 compliance</strong>. The NIST Special Publication 800-227 <xref target="NIST-SP-800-227"/> provides general guidance on the design and use of key-encapsulation mechanisms, including hybrid constructions. The key agreements defined in this document follow the principles described in Section 4.6 of <xref target="NIST-SP-800-227"/>, which discusses the combination of post-quantum and classical key-establishment schemes and the use of approved key combiners. In particular, the shared-secret concatenation and HKDF-based derivation used by the TLS 1.3 are consistent with the composite-KEM constructions and key-combiner recommendations outlined in Sections 4.6.1 and 4.6.2 of <xref target="NIST-SP-800-227"/>. Section 4.6.3 of <xref target="NIST-SP-800-227"/> further provides relevant security considerations for hybrid KEM designs underlying the approach used in this document.</t>
        </li>
      </ul>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The same security considerations as those described in <xref target="hybrid"/> apply to the approach used by this document.
The security analysis relies crucially on the TLS 1.3 message transcript, and one cannot assume a similar
hybridisation is secure in other protocols.</t>
      <t><xref target="NIST-SP-800-227"/> includes guidelines and requirements for implementations on using KEMs securely. Implementers are encouraged to use implementations resistant to side-channel attacks,
especially those that can be applied by remote attackers.</t>
      <t>All groups defined in this document use and generate fixed-length public keys, ciphertexts,
and shared secrets, which complies with the requirements described in <xref section="6" sectionFormat="of" target="hybrid"/>.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests/registers three new entries to the <eref target="https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-8">TLS Supported Groups registry</eref>, according to the procedures in <xref section="6" sectionFormat="of" target="RFC9847"/>. These identifiers are to be used with the final,
ratified by NIST, version of ML-KEM which is specified in <xref target="NIST-FIPS-203"/>.</t>
      <section anchor="x25519mlkem768">
        <name>X25519MLKEM768</name>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>4588 (0x11EC)</t>
          </dd>
          <dt>Description:</dt>
          <dd>
            <t>X25519MLKEM768</t>
          </dd>
          <dt>DTLS-OK:</dt>
          <dd>
            <t>Y</t>
          </dd>
          <dt>Recommended:</dt>
          <dd>
            <t>Y</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Comment:</dt>
          <dd>
            <t>Combining X25519 ECDH with ML-KEM-768</t>
          </dd>
        </dl>
      </section>
      <section anchor="secp256r1mlkem768">
        <name>SecP256r1MLKEM768</name>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>4587 (0x11EB)</t>
          </dd>
          <dt>Description:</dt>
          <dd>
            <t>SecP256r1MLKEM768</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>Combining secp256r1 ECDH with ML-KEM-768</t>
          </dd>
        </dl>
      </section>
      <section anchor="secp384r1mlkem1024">
        <name>SecP384r1MLKEM1024</name>
        <dl spacing="compact">
          <dt>Value:</dt>
          <dd>
            <t>4589 (0x11ED)</t>
          </dd>
          <dt>Description:</dt>
          <dd>
            <t>SecP384r1MLKEM1024</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>Combining secp384r1 ECDH with ML-KEM-1024</t>
          </dd>
        </dl>
      </section>
      <section anchor="obsoleted-supported-groups">
        <name>Obsoleted Supported Groups</name>
        <t>Experimental code points for pre-standard versions of Kyber768 were added to the TLS registry as X25519Kyber768Draft00 (25497) and SecP256r1Kyber768Draft00 (25498). This document obsoletes these entries. IANA is instructed to modify the recommended field to 'D' and update the reference to add [ this RFC ].  The comment fields for 25497 and 25498 are updated to "Pre-standards version of Kyber768. Obsoleted by [this RFC]"</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC7748">
          <front>
            <title>Elliptic Curves for Security</title>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <author fullname="M. Hamburg" initials="M." surname="Hamburg"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="January" year="2016"/>
            <abstract>
              <t>This memo specifies two elliptic curves over prime fields that offer a high level of practical security in cryptographic applications, including Transport Layer Security (TLS). These curves are intended to operate at the ~128-bit and ~224-bit security level, respectively, and are generated deterministically based on a list of required properties.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7748"/>
          <seriesInfo name="DOI" value="10.17487/RFC7748"/>
        </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="7" month="September" 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 a way is found to defeat the encryption for all but
   one of the component algorithms.  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.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-hybrid-design-16"/>
        </reference>
        <reference anchor="NIST-FIPS-186">
          <front>
            <title>Digital Signature Standard (DSS)</title>
            <author>
              <organization/>
            </author>
            <date month="February" year="2023"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.fips.186-5"/>
          <refcontent>National Institute of Standards and Technology (U.S.)</refcontent>
        </reference>
        <reference anchor="NIST-FIPS-203">
          <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="NIST-SP-800-56A">
          <front>
            <title>Recommendation for pair-wise key-establishment schemes using discrete logarithm cryptography</title>
            <author fullname="Elaine Barker" initials="E." surname="Barker">
              <organization/>
            </author>
            <author fullname="Lily Chen" initials="L." surname="Chen">
              <organization/>
            </author>
            <author fullname="Allen Roginsky" initials="A." surname="Roginsky">
              <organization/>
            </author>
            <author fullname="Apostol Vassilev" initials="A." surname="Vassilev">
              <organization/>
            </author>
            <author fullname="Richard Davis" initials="R." surname="Davis">
              <organization/>
            </author>
            <date month="April" year="2018"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.sp.800-56ar3"/>
          <refcontent>National Institute of Standards and Technology</refcontent>
        </reference>
        <reference anchor="NIST-SP-800-56C">
          <front>
            <title>Recommendation for Key-Derivation Methods in Key-Establishment Schemes</title>
            <author fullname="Elaine Barker" initials="E." surname="Barker">
              <organization/>
            </author>
            <author fullname="Lily Chen" initials="L." surname="Chen">
              <organization/>
            </author>
            <author fullname="Richard Davis" initials="R." surname="Davis">
              <organization/>
            </author>
            <date month="August" year="2020"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.sp.800-56cr2"/>
          <refcontent>National Institute of Standards and Technology</refcontent>
        </reference>
        <reference anchor="NIST-SP-800-135">
          <front>
            <title>Recommendation for existing application-specific key derivation functions</title>
            <author fullname="Q H Dang" initials="Q." surname="Dang">
              <organization/>
            </author>
            <date year="2011"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.sp.800-135r1"/>
          <refcontent>National Institute of Standards and Technology</refcontent>
        </reference>
        <reference anchor="NIST-SP-800-227">
          <front>
            <title>Recommendations for key-encapsulation mechanisms</title>
            <author fullname="Gorjan Alagic" initials="G." surname="Alagic">
              <organization/>
            </author>
            <author fullname="Elaine Barker" initials="E." surname="Barker">
              <organization/>
            </author>
            <author fullname="Lily Chen" initials="L." surname="Chen">
              <organization/>
            </author>
            <author fullname="Dustin Moody" initials="D." surname="Moody">
              <organization/>
            </author>
            <author fullname="Angela Robinson" initials="A." surname="Robinson">
              <organization/>
            </author>
            <author fullname="Hamilton Silberg" initials="H." surname="Silberg">
              <organization/>
            </author>
            <author fullname="Noah Waller" initials="N." surname="Waller">
              <organization/>
            </author>
            <date month="September" year="2025"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.sp.800-227"/>
          <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>
        <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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9794">
          <front>
            <title>Terminology for Post-Quantum Traditional Hybrid Schemes</title>
            <author fullname="F. Driscoll" initials="F." surname="Driscoll"/>
            <author fullname="M. Parsons" initials="M." surname="Parsons"/>
            <author fullname="B. Hale" initials="B." surname="Hale"/>
            <date month="June" year="2025"/>
            <abstract>
              <t>One aspect of the transition to post-quantum algorithms in cryptographic protocols is the development of hybrid schemes that incorporate both post-quantum and traditional asymmetric algorithms. This document defines terminology for such schemes. It is intended to be used as a reference and, hopefully, to ensure consistency and clarity across different protocols, standards, and organisations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9794"/>
          <seriesInfo name="DOI" value="10.17487/RFC9794"/>
        </reference>
        <reference anchor="RFC9847">
          <front>
            <title>IANA Registry Updates for TLS and DTLS</title>
            <author fullname="J. Salowey" initials="J." surname="Salowey"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="December" year="2025"/>
            <abstract>
              <t>This document updates the changes to the 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.</t>
              <t>This document updates RFC 8447.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9847"/>
          <seriesInfo name="DOI" value="10.17487/RFC9847"/>
        </reference>
        <reference anchor="RFC5869">
          <front>
            <title>HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
            <author fullname="H. Krawczyk" initials="H." surname="Krawczyk"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <date month="May" year="2010"/>
            <abstract>
              <t>This document specifies a simple Hashed Message Authentication Code (HMAC)-based key derivation function (HKDF), which can be used as a building block in various protocols and applications. The key derivation function (KDF) is intended to support a wide range of applications and requirements, and is conservative in its use of cryptographic hash functions. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5869"/>
          <seriesInfo name="DOI" value="10.17487/RFC5869"/>
        </reference>
      </references>
    </references>
    <?line 313?>

<section anchor="change-log">
      <name>Change log</name>
      <ul spacing="normal">
        <li>
          <t>draft-ietf-tls-ecdhe-mlkem-04:
          </t>
          <ul spacing="normal">
            <li>
              <t>Status: Sets document category to Standards Track</t>
            </li>
            <li>
              <t>References: Make <xref target="hybrid"/> normative; add/clarify HKDF reference via RFC 5869; update to RFC 9847 (replacing draft-ietf-tls-rfc8447bis).</t>
            </li>
            <li>
              <t>Text: Rename “Discussion” to “Regulatory context” and expand it (incl. NIST SP 800-227 notes).</t>
            </li>
            <li>
              <t>IANA/TLS registry: Obsoletes the experimental pre-standard Kyber768 groups X25519Kyber768Draft00 (25497) and SecP256r1Kyber768Draft00 (25498); instruct IANA to set Recommended = “D”, update Reference to this RFC, and update Comments accordingly.</t>
            </li>
            <li>
              <t>Editorial: Addressed nits, including normalizing reference labels to a consistent format (e.g., RFC7748 instead of rfc7748 or ad-hoc labels like HKDF) and renaming NIST references to the NIST-... form.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>draft-ietf-tls-ecdhe-mlkem-01:
          </t>
          <ul spacing="normal">
            <li>
              <t>Alignment with the final version of <xref target="hybrid"/></t>
            </li>
            <li>
              <t>Added new section called Discussion and moved FIPS-compliance and Failures text there.</t>
            </li>
            <li>
              <t>The Construction section has been removed.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>draft-ietf-tls-ecdhe-mlkem-00:
          </t>
          <ul spacing="normal">
            <li>
              <t>Change a name of the draft, following adoption by TLS WG</t>
            </li>
            <li>
              <t>Fixes references to the to NIST ECC CDH</t>
            </li>
          </ul>
        </li>
        <li>
          <t>draft-kwiatkowski-tls-ecdhe-mlkem-03:
          </t>
          <ul spacing="normal">
            <li>
              <t>Adds P-384 combined with ML-KEM-1024</t>
            </li>
            <li>
              <t>Adds text that describes error-handling and outlines how the client and server must ensure the integrity of the key exchange process.</t>
            </li>
            <li>
              <t>Adds note on the incompatibility of the codepoint name X25519MLKEM768 with <xref target="hybrid"/>.</t>
            </li>
            <li>
              <t>Various cosmetic changes.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>draft-kwiatkowski-tls-ecdhe-mlkem-02:
          </t>
          <ul spacing="normal">
            <li>
              <t>Adds section that mentions supported groups that this document obsoletes.</t>
            </li>
            <li>
              <t>Fix a reference to encapsulation in the FIPS 203.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>draft-kwiatkowski-tls-ecdhe-mlkem-01:
          </t>
          <ul spacing="normal">
            <li>
              <t>Add X25519MLKEM768</t>
            </li>
          </ul>
        </li>
        <li>
          <t>draft-kwiatkowski-tls-ecdhe-mlkem-00:
          </t>
          <ul spacing="normal">
            <li>
              <t>Change Kyber name to ML-KEM</t>
            </li>
            <li>
              <t>Swap reference to I-D.cfrg-schwabe-kyber with FIPS-203</t>
            </li>
            <li>
              <t>Change codepoint. New value is equal to old value + 1.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>draft-kwiatkowski-tls-ecdhe-kyber-01: Fix size of key shares generated by the client and the server</t>
        </li>
        <li>
          <t>draft-kwiatkowski-tls-ecdhe-kyber-00: updates following IANA review</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
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
rtkbOitvGhpOzkPLOyWX7H8Bg4kDEbc7AAA=

-->

</rfc>
