<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" ipr="trust200902" docName="draft-ietf-tls-ecdhe-mlkem-05" number="10024" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" xml:lang="en" updates="" obsoletes="" prepTime="2026-08-09T22:01:26" indexInclude="true" scripts="Common,Latin" tocDepth="3">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-tls-ecdhe-mlkem-05" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc10024" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="PQ/T Hybrids for TLS 1.3">Post-Quantum Traditional (PQ/T) Hybrid Key Agreement Mechanisms for TLS 1.3</title>
    <seriesInfo name="RFC" value="10024" stream="IETF"/>
    <author initials="K." surname="Kwiatkowski" fullname="Krzysztof Kwiatkowski">
      <organization showOnFrontPage="true">PQShield</organization>
      <address>
        <email>kris@amongbytes.com</email>
      </address>
    </author>
    <author initials="P." surname="Kampanakis" fullname="Panos Kampanakis">
      <organization showOnFrontPage="true">AWS</organization>
      <address>
        <email>kpanos@amazon.com</email>
      </address>
    </author>
    <author initials="B. E." surname="Westerbaan" fullname="Bas Westerbaan">
      <organization showOnFrontPage="true">Cloudflare</organization>
      <address>
        <email>bas@cloudflare.com</email>
      </address>
    </author>
    <author initials="D." surname="Stebila" fullname="Douglas Stebila">
      <organization showOnFrontPage="true">University of Waterloo</organization>
      <address>
        <email>dstebila@uwaterloo.ca</email>
      </address>
    </author>
    <date month="08" year="2026"/>
    <area>SEC</area>
    <workgroup>TLS</workgroup>
    <keyword>ECDH</keyword>
    <keyword>ECDHE</keyword>
    <keyword>hybrid</keyword>
    <keyword>ML-KEM</keyword>
    <keyword>post-quantum</keyword>
    <keyword>x25519</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">This document 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 (Ephemeral Elliptic Curve Diffie-Hellman) exchange.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc10024" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2026 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-motivation">Motivation</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-terminology">Terminology</xref></t>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-negotiated-groups">Negotiated Groups</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2">
              <li pn="section-toc.1-1.4.2.1">
                <t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent="4.1" format="counter" sectionFormat="of" target="section-4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-client-share">Client Share</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.2">
                <t indent="0" pn="section-toc.1-1.4.2.2.1"><xref derivedContent="4.2" format="counter" sectionFormat="of" target="section-4.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-server-share">Server Share</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.3">
                <t indent="0" pn="section-toc.1-1.4.2.3.1"><xref derivedContent="4.3" format="counter" sectionFormat="of" target="section-4.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-shared-secret">Shared Secret</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-regulatory-context">Regulatory Context</xref></t>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.7.2">
              <li pn="section-toc.1-1.7.2.1">
                <t indent="0" pn="section-toc.1-1.7.2.1.1"><xref derivedContent="7.1" format="counter" sectionFormat="of" target="section-7.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-x25519mlkem768">X25519MLKEM768</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.2">
                <t indent="0" pn="section-toc.1-1.7.2.2.1"><xref derivedContent="7.2" format="counter" sectionFormat="of" target="section-7.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-secp256r1mlkem768">SecP256r1MLKEM768</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.3">
                <t indent="0" pn="section-toc.1-1.7.2.3.1"><xref derivedContent="7.3" format="counter" sectionFormat="of" target="section-7.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-secp384r1mlkem1024">SecP384r1MLKEM1024</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.4">
                <t indent="0" pn="section-toc.1-1.7.2.4.1"><xref derivedContent="7.4" format="counter" sectionFormat="of" target="section-7.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-obsoleted-supported-groups">Obsoleted Supported Groups</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.8.2">
              <li pn="section-toc.1-1.8.2.1">
                <t indent="0" pn="section-toc.1-1.8.2.1.1"><xref derivedContent="8.1" format="counter" sectionFormat="of" target="section-8.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.2">
                <t indent="0" pn="section-toc.1-1.8.2.2.1"><xref derivedContent="8.2" format="counter" sectionFormat="of" target="section-8.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" removeInRFC="false" toc="include" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">ML-KEM is a key encapsulation mechanism (KEM) defined in <xref target="NIST-FIPS-203" format="default" sectionFormat="of" derivedContent="NIST-FIPS-203"/>. It is designed to
withstand cryptanalytic attacks from quantum computers.</t>
      <t indent="0" pn="section-1-2"><xref target="RFC9954" format="default" sectionFormat="of" derivedContent="RFC9954"/> 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 indent="0" pn="section-1-3">This document applies the framework in <xref target="RFC9954" format="default" sectionFormat="of" derivedContent="RFC9954"/> to ML-KEM and specifies code points for the hybrid groups.</t>
    </section>
    <section anchor="motivation" numbered="true" removeInRFC="false" toc="include" pn="section-2">
      <name slugifiedName="name-motivation">Motivation</name>
      <t indent="0" pn="section-2-1">This document introduces three new supported groups for Post-Quantum Traditional (PQ/T) hybrid key agreements <xref target="RFC9794" format="default" sectionFormat="of" derivedContent="RFC9794"/> in TLS 1.3 -- X25519MLKEM768,
SecP256r1MLKEM768, and SecP384r1MLKEM1024 -- that combine ML-KEM with Ephemeral Elliptic Curve Diffie-Hellman (ECDHE) in the manner described in <xref target="RFC9954" format="default" sectionFormat="of" derivedContent="RFC9954"/>. Any of the hybrid groups
specified in this document may be implemented in a FIPS-approved way as discussed in <xref target="regulatory-context" format="default" sectionFormat="of" derivedContent="Section 5"/>.</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-2-2">
        <li pn="section-2-2.1">
          <t indent="0" pn="section-2-2.1.1">The first group uses X25519 <xref target="RFC7748" format="default" sectionFormat="of" derivedContent="RFC7748"/>, is widely deployed, and often serves as the most practical choice for a single PQ/T hybrid combiner <xref target="RFC9794" format="default" sectionFormat="of" derivedContent="RFC9794"/> in TLS 1.3.</t>
        </li>
        <li pn="section-2-2.2">
          <t indent="0" pn="section-2-2.2.1">The second group uses secp256r1 (NIST P-256) <xref target="NIST-FIPS-186" format="default" sectionFormat="of" derivedContent="NIST-FIPS-186"/>. This group supports use cases that require both shared secrets to be generated by FIPS-approved mechanisms.</t>
        </li>
        <li pn="section-2-2.3">
          <t indent="0" pn="section-2-2.3.1">The third group uses secp384r1 (NIST P-384) <xref target="NIST-FIPS-186" format="default" sectionFormat="of" derivedContent="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 indent="0" pn="section-2-3">Key establishment using NIST curves is outlined in Section 6.1.2.2 of <xref target="NIST-SP-800-56A" format="default" sectionFormat="of" derivedContent="NIST-SP-800-56A"/>.</t>
    </section>
    <section anchor="terminology" numbered="true" removeInRFC="false" toc="include" pn="section-3">
      <name slugifiedName="name-terminology">Terminology</name>
      <t indent="0" pn="section-3-1"><xref target="RFC9954" format="default" sectionFormat="of" derivedContent="RFC9954"/> 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, ECDHE using Curve25519, P-256, or
P-384 is considered traditional, while ML-KEM is considered next-generation.</t>
      <t indent="0" pn="section-3-2"><xref target="RFC9954" format="default" sectionFormat="of" derivedContent="RFC9954"/> 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>
      <t indent="0" pn="section-3-3">
    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" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> 
    when, and only when, they appear in all capitals, as shown here.
      </t>
    </section>
    <section anchor="negotiated-groups" numbered="true" removeInRFC="false" toc="include" pn="section-4">
      <name slugifiedName="name-negotiated-groups">Negotiated Groups</name>
      <section anchor="client-share" numbered="true" removeInRFC="false" toc="include" pn="section-4.1">
        <name slugifiedName="name-client-share">Client Share</name>
        <t indent="0" pn="section-4.1-1">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>
        <aside pn="section-4.1-2">
          <t indent="0" pn="section-4.1-2.1">Note: The group name X25519MLKEM768 does not adhere to the naming convention outlined in
<xref section="3.2" sectionFormat="of" target="RFC9954" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9954#section-3.2" derivedContent="RFC9954"/>. Specifically, the order of shares in the concatenation has been
reversed. This is due to historical reasons.</t>
        </aside>
        <t indent="0" pn="section-4.1-3">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 ECDHE point representation as
defined  in <xref section="4.3.8.2" sectionFormat="of" target="RFC9846" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9846#section-4.3.8.2" derivedContent="RFC9846"/>. The size of the client share is 1249 bytes
(65 bytes for the secp256r1 part and 1184 bytes for ML-KEM).</t>
        <t indent="0" pn="section-4.1-4">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 ECDHE share is the serialized value of the uncompressed ECDHE point
representation as defined in <xref section="4.3.8.2" sectionFormat="of" target="RFC9846" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9846#section-4.3.8.2" derivedContent="RFC9846"/>. 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" numbered="true" removeInRFC="false" toc="include" pn="section-4.2">
        <name slugifiedName="name-server-share">Server Share</name>
        <t indent="0" pn="section-4.2-1">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 indent="0" pn="section-4.2-2">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 indent="0" pn="section-4.2-3">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 indent="0" pn="section-4.2-4">For all groups, the server <bcp14>MUST</bcp14> perform the encapsulation key check
described in Section 7.2 of <xref target="NIST-FIPS-203" format="default" sectionFormat="of" derivedContent="NIST-FIPS-203"/> on the client's encapsulation
key and abort with an illegal_parameter alert if it fails.</t>
        <t indent="0" pn="section-4.2-5">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 indent="0" pn="section-4.2-6">For all groups, both client and server <bcp14>MUST</bcp14> process the ECDHE part
as described in <xref section="4.3.8.2" sectionFormat="of" target="RFC9846" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9846#section-4.3.8.2" derivedContent="RFC9846"/>, including all validity checks,
and abort with an illegal_parameter alert if it fails.</t>
      </section>
      <section anchor="shared-secret" numbered="true" removeInRFC="false" toc="include" pn="section-4.3">
        <name slugifiedName="name-shared-secret">Shared Secret</name>
        <t indent="0" pn="section-4.3-1">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 indent="0" pn="section-4.3-2">For SecP256r1MLKEM768, the shared secret is the concatenation of the
ECDHE and ML-KEM shared secrets. The ECDHE shared secret is the x-coordinate of the ECDHE
shared secret elliptic curve point represented as an octet string as
defined in <xref section="7.4.2" sectionFormat="of" target="RFC9846" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9846#section-7.4.2" derivedContent="RFC9846"/>.
The size of the shared secret is 64 bytes (32 bytes for each part).</t>
        <t indent="0" pn="section-4.3-3">For SecP384r1MLKEM1024, the shared secret is the concatenation of the
ECDHE and ML-KEM shared secrets. The ECDHE shared secret is the x-coordinate of the ECDHE
shared secret elliptic curve point represented as an octet string as
defined in <xref section="7.4.2" sectionFormat="of" target="RFC9846" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9846#section-7.4.2" derivedContent="RFC9846"/>.
The size of the shared secret is 80 bytes (48 bytes for the ECDHE part and
32 bytes for the ML-KEM part).</t>
        <t indent="0" pn="section-4.3-4">For all groups, both client and server <bcp14>MUST</bcp14> calculate the ECDHE part of the
shared secret as described in <xref section="7.4.2" sectionFormat="of" target="RFC9846" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9846#section-7.4.2" derivedContent="RFC9846"/>, 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" numbered="true" removeInRFC="false" toc="include" pn="section-5">
      <name slugifiedName="name-regulatory-context">Regulatory Context</name>
      <t indent="0" pn="section-5-1">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" bare="false" empty="false" indent="3" pn="section-5-2">
        <li pn="section-5-2.1">
          <t indent="0" pn="section-5-2.1.1"><strong>FIPS-compliance</strong>. All groups defined in this document permit FIPS-approved key derivation as per <xref target="NIST-SP-800-56C" format="default" sectionFormat="of" derivedContent="NIST-SP-800-56C"/>
and <xref target="NIST-SP-800-135" format="default" sectionFormat="of" derivedContent="NIST-SP-800-135"/>. NIST Special Publication 800-56Cr2 <xref target="NIST-SP-800-56C" format="default" sectionFormat="of" derivedContent="NIST-SP-800-56C"/> approves the
usage of the HMAC-based Key Derivation Function (HKDF) <xref target="RFC5869" format="default" sectionFormat="of" derivedContent="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 ECDHE shared secret is placed first
in SecP256r1MLKEM768 and SecP384r1MLKEM1024. This means that for SecP256r1MLKEM768 and SecP384r1MLKEM1024,
the ECDHE 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 pn="section-5-2.2">
          <t indent="0" pn="section-5-2.2.1"><strong>SP800-227 compliance</strong>. NIST Special Publication 800-227 <xref target="NIST-SP-800-227" format="default" sectionFormat="of" derivedContent="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" format="default" sectionFormat="of" derivedContent="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 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" format="default" sectionFormat="of" derivedContent="NIST-SP-800-227"/>. Section 4.6.3 of <xref target="NIST-SP-800-227" format="default" sectionFormat="of" derivedContent="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" numbered="true" removeInRFC="false" toc="include" pn="section-6">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-6-1">The same security considerations as those described in <xref target="RFC9954" format="default" sectionFormat="of" derivedContent="RFC9954"/> 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
hybridization is secure in other protocols.</t>
      <t indent="0" pn="section-6-2"><xref target="NIST-SP-800-227" format="default" sectionFormat="of" derivedContent="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 indent="0" pn="section-6-3">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="RFC9954" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9954#section-6" derivedContent="RFC9954"/>.</t>
      <t indent="0" pn="section-6-4">During ML-KEM encapsulation, encapsulation randomness <tt>m</tt> is drawn from
   a random bit generator and encrypted (see <xref target="NIST-FIPS-203" format="default" sectionFormat="of" derivedContent="NIST-FIPS-203"/>, Algorithms
   17 and 20); the client, which holds the decapsulation key, then
   recovers <tt>m</tt> exactly during decapsulation (see <xref target="NIST-FIPS-203" format="default" sectionFormat="of" derivedContent="NIST-FIPS-203"/>,
   Algorithm 18).  Consequently, any information <tt>m</tt> carries about the
   generator's other outputs is also exposed to the client.</t>
      <t indent="0" pn="section-6-5">The disclosure of the output(s) of an insecure random number
   generator (RNG) when used in TLS can be used in an attack to
   compromise the state of the insecure RNG itself as described in
   <xref target="DUALECTLS" format="default" sectionFormat="of" derivedContent="DUALECTLS"/>.  The encapsulation randomness <tt>m</tt> in ML-KEM is an
   additional place where RNG output is disclosed to an active attacker.
   Implementers should follow the RBG guidance in <xref target="NIST-FIPS-203" format="default" sectionFormat="of" derivedContent="NIST-FIPS-203"/> and
   the random number generation guidance in <xref target="RFC9846" sectionFormat="of" section="C.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9846#appendix-C.1" derivedContent="RFC9846"/>.
   Implementers can choose to implement mechanisms from <xref target="RFC8937" format="default" sectionFormat="of" derivedContent="RFC8937"/> for
   additional protection across sessions.</t>
      <t indent="0" pn="section-6-6">In contrast, the ECDH ephemeral scalars taken from the RNG are never directly disclosed to the peer.  However, any passive observer with
   access to a cryptographically relevant quantum computer (CRQC) can
   recover the scalar, which is derived directly from RNG output.
   Regardless, ephemeral scalars should always be generated using a
   cryptographically secure RNG: for secp256r1 and secp384r1 as required
   by <xref target="NIST-SP-800-56A" format="default" sectionFormat="of" derivedContent="NIST-SP-800-56A"/>, and for X25519 as described in <xref target="RFC7748" format="default" sectionFormat="of" derivedContent="RFC7748"/>; the
   guidance in <xref target="RFC9846" sectionFormat="of" section="C.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9846#appendix-C.1" derivedContent="RFC9846"/> applies here as well.</t>
      <t indent="0" pn="section-6-7">If the same insecure RNG is used by both algorithms, then a disclosure of state by one of the algorithms will also affect
the security of the other algorithm.</t>
    </section>
    <section anchor="iana-considerations" numbered="true" removeInRFC="false" toc="include" pn="section-7">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-7-1">Per this document, IANA has registered three new entries in the <eref target="https://www.iana.org/assignments/tls-parameters" brackets="none">"TLS Supported Groups" registry</eref>, according to the procedures in <xref section="6" sectionFormat="of" target="RFC9847" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9847#section-6" derivedContent="RFC9847"/>. These identifiers are to be used with the final version of ML-KEM
ratified by NIST, which is specified in <xref target="NIST-FIPS-203" format="default" sectionFormat="of" derivedContent="NIST-FIPS-203"/>.</t>
      <section anchor="x25519mlkem768" numbered="true" removeInRFC="false" toc="include" pn="section-7.1">
        <name slugifiedName="name-x25519mlkem768">X25519MLKEM768</name>
        <dl spacing="compact" indent="3" newline="false" pn="section-7.1-1">
          <dt pn="section-7.1-1.1">Value:</dt>
          <dd pn="section-7.1-1.2">
            <t indent="0" pn="section-7.1-1.2.1">4588 (0x11EC)</t>
          </dd>
          <dt pn="section-7.1-1.3">Description:</dt>
          <dd pn="section-7.1-1.4">
            <t indent="0" pn="section-7.1-1.4.1">X25519MLKEM768</t>
          </dd>
          <dt pn="section-7.1-1.5">DTLS-OK:</dt>
          <dd pn="section-7.1-1.6">
            <t indent="0" pn="section-7.1-1.6.1">Y</t>
          </dd>
          <dt pn="section-7.1-1.7">Recommended:</dt>
          <dd pn="section-7.1-1.8">
            <t indent="0" pn="section-7.1-1.8.1">Y</t>
          </dd>
          <dt pn="section-7.1-1.9">Reference:</dt>
          <dd pn="section-7.1-1.10">
            <t indent="0" pn="section-7.1-1.10.1">RFC 10024</t>
          </dd>
          <dt pn="section-7.1-1.11">Comment:</dt>
          <dd pn="section-7.1-1.12">
            <t indent="0" pn="section-7.1-1.12.1">Combining X25519 ECDH with ML-KEM-768</t>
          </dd>
        </dl>
      </section>
      <section anchor="secp256r1mlkem768" numbered="true" removeInRFC="false" toc="include" pn="section-7.2">
        <name slugifiedName="name-secp256r1mlkem768">SecP256r1MLKEM768</name>
        <dl spacing="compact" indent="3" newline="false" pn="section-7.2-1">
          <dt pn="section-7.2-1.1">Value:</dt>
          <dd pn="section-7.2-1.2">
            <t indent="0" pn="section-7.2-1.2.1">4587 (0x11EB)</t>
          </dd>
          <dt pn="section-7.2-1.3">Description:</dt>
          <dd pn="section-7.2-1.4">
            <t indent="0" pn="section-7.2-1.4.1">SecP256r1MLKEM768</t>
          </dd>
          <dt pn="section-7.2-1.5">DTLS-OK:</dt>
          <dd pn="section-7.2-1.6">
            <t indent="0" pn="section-7.2-1.6.1">Y</t>
          </dd>
          <dt pn="section-7.2-1.7">Recommended:</dt>
          <dd pn="section-7.2-1.8">
            <t indent="0" pn="section-7.2-1.8.1">N</t>
          </dd>
          <dt pn="section-7.2-1.9">Reference:</dt>
          <dd pn="section-7.2-1.10">
            <t indent="0" pn="section-7.2-1.10.1">RFC 10024</t>
          </dd>
          <dt pn="section-7.2-1.11">Comment:</dt>
          <dd pn="section-7.2-1.12">
            <t indent="0" pn="section-7.2-1.12.1">Combining secp256r1 ECDH with ML-KEM-768</t>
          </dd>
        </dl>
      </section>
      <section anchor="secp384r1mlkem1024" numbered="true" removeInRFC="false" toc="include" pn="section-7.3">
        <name slugifiedName="name-secp384r1mlkem1024">SecP384r1MLKEM1024</name>
        <dl spacing="compact" indent="3" newline="false" pn="section-7.3-1">
          <dt pn="section-7.3-1.1">Value:</dt>
          <dd pn="section-7.3-1.2">
            <t indent="0" pn="section-7.3-1.2.1">4589 (0x11ED)</t>
          </dd>
          <dt pn="section-7.3-1.3">Description:</dt>
          <dd pn="section-7.3-1.4">
            <t indent="0" pn="section-7.3-1.4.1">SecP384r1MLKEM1024</t>
          </dd>
          <dt pn="section-7.3-1.5">DTLS-OK:</dt>
          <dd pn="section-7.3-1.6">
            <t indent="0" pn="section-7.3-1.6.1">Y</t>
          </dd>
          <dt pn="section-7.3-1.7">Recommended:</dt>
          <dd pn="section-7.3-1.8">
            <t indent="0" pn="section-7.3-1.8.1">N</t>
          </dd>
          <dt pn="section-7.3-1.9">Reference:</dt>
          <dd pn="section-7.3-1.10">
            <t indent="0" pn="section-7.3-1.10.1">RFC 10024</t>
          </dd>
          <dt pn="section-7.3-1.11">Comment:</dt>
          <dd pn="section-7.3-1.12">
            <t indent="0" pn="section-7.3-1.12.1">Combining secp384r1 ECDH with ML-KEM-1024</t>
          </dd>
        </dl>
      </section>
      <section anchor="obsoleted-supported-groups" numbered="true" removeInRFC="false" toc="include" pn="section-7.4">
        <name slugifiedName="name-obsoleted-supported-groups">Obsoleted Supported Groups</name>
        <t indent="0" pn="section-7.4-1">Experimental code points for pre-standard versions of Kyber768 were added to the "TLS Supported Groups" registry as X25519Kyber768Draft00 (25497) and SecP256r1Kyber768Draft00 (25498). This document obsoletes these entries. For both entries, IANA has modified the Recommended field to 'D', added this document as a reference, and updated the Comment field to "Pre-standards version of Kyber768. Obsoleted by RFC 10024."</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references" pn="section-8">
      <name slugifiedName="name-references">References</name>
      <references anchor="sec-normative-references" pn="section-8.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="NIST-FIPS-186" quoteTitle="true" target="https://doi.org/10.6028/NIST.FIPS.186-5" derivedAnchor="NIST-FIPS-186">
          <front>
            <title>Digital Signature Standard (DSS)</title>
            <author>
              <organization abbrev="NIST" showOnFrontPage="true">National Institute of Standards and Technology</organization>
            </author>
            <date month="February" year="2023"/>
          </front>
          <seriesInfo name="NIST FIPS" value="186-5"/>
          <seriesInfo name="DOI" value="10.6028/NIST.FIPS.186-5"/>
        </reference>
        <reference anchor="NIST-FIPS-203" quoteTitle="true" target="https://doi.org/10.6028/NIST.FIPS.203" derivedAnchor="NIST-FIPS-203">
          <front>
            <title>Module-Lattice-Based Key-Encapsulation Mechanism Standard</title>
            <author>
              <organization abbrev="NIST" showOnFrontPage="true">National Institute of Standards and Technology</organization>
            </author>
            <date month="August" year="2024"/>
          </front>
          <seriesInfo name="NIST FIPS" value="203"/>
          <seriesInfo name="DOI" value="10.6028/NIST.FIPS.203"/>
        </reference>
        <reference anchor="NIST-SP-800-56C" quoteTitle="true" target="https://doi.org/10.6028/nist.sp.800-56cr2" derivedAnchor="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 showOnFrontPage="true"/>
            </author>
            <author fullname="Lily Chen" initials="L." surname="Chen">
              <organization showOnFrontPage="true"/>
            </author>
            <author fullname="Richard Davis" initials="R." surname="Davis">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="August" year="2020"/>
          </front>
          <seriesInfo name="NIST SP" value="800-56Cr2"/>
          <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" quoteTitle="true" target="https://doi.org/10.6028/nist.sp.800-135r1" derivedAnchor="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 showOnFrontPage="true"/>
            </author>
            <date month="December" year="2011"/>
          </front>
          <seriesInfo name="NIST SP" value="800-135r1"/>
          <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" quoteTitle="true" target="https://doi.org/10.6028/nist.sp.800-227" derivedAnchor="NIST-SP-800-227">
          <front>
            <title>Recommendations for Key-Encapsulation Mechanisms</title>
            <author fullname="Gorjan Alagic" initials="G." surname="Alagic">
              <organization showOnFrontPage="true"/>
            </author>
            <author fullname="Elaine Barker" initials="E." surname="Barker">
              <organization showOnFrontPage="true"/>
            </author>
            <author fullname="Lily Chen" initials="L." surname="Chen">
              <organization showOnFrontPage="true"/>
            </author>
            <author fullname="Dustin Moody" initials="D." surname="Moody">
              <organization showOnFrontPage="true"/>
            </author>
            <author fullname="Angela Robinson" initials="A." surname="Robinson">
              <organization showOnFrontPage="true"/>
            </author>
            <author fullname="Hamilton Silberg" initials="H." surname="Silberg">
              <organization showOnFrontPage="true"/>
            </author>
            <author fullname="Noah Waller" initials="N." surname="Waller">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="September" year="2025"/>
          </front>
          <seriesInfo name="NIST SP" value="800-227"/>
          <seriesInfo name="DOI" value="10.6028/nist.sp.800-227"/>
          <refcontent>National Institute of Standards and Technology</refcontent>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="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 indent="0">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="RFC7748" target="https://www.rfc-editor.org/info/rfc7748" quoteTitle="true" derivedAnchor="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 indent="0">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="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="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 indent="0">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="RFC9846" target="https://www.rfc-editor.org/info/rfc9846" quoteTitle="true" derivedAnchor="RFC9846">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="July" year="2026"/>
            <abstract>
              <t indent="0">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 indent="0">This document obsoletes RFC 8446, which specified TLS 1.3. This document obsoletes RFC 5246 (specifying TLS 1.2) and RFCs 5077, 6961, 7627, and 8422, all of which pertain to TLS 1.2 or earlier, and updates RFCs 5705 and 6066. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9846"/>
          <seriesInfo name="DOI" value="10.17487/RFC9846"/>
        </reference>
        <reference anchor="RFC9954" target="https://www.rfc-editor.org/info/rfc9954" quoteTitle="true" derivedAnchor="RFC9954">
          <front>
            <title>Hybrid Key Exchange in TLS 1.3</title>
            <author fullname="D. Stebila" initials="D." surname="Stebila"/>
            <author fullname="S. Fluhrer" initials="S." surname="Fluhrer"/>
            <author fullname="S. Gueron" initials="S." surname="Gueron"/>
            <date month="July" year="2026"/>
            <abstract>
              <t indent="0">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 the 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="RFC" value="9954"/>
          <seriesInfo name="DOI" value="10.17487/RFC9954"/>
        </reference>
      </references>
      <references anchor="sec-informative-references" pn="section-8.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="DUALECTLS" target="https://www.usenix.org/system/files/conference/usenixsecurity14/sec14-paper-checkoway.pdf" quoteTitle="true" derivedAnchor="DUALECTLS">
          <front>
            <title>On the Practical Exploitability of Dual EC in TLS Implementations</title>
            <author fullname="Stephen Checkoway" initials="S." surname="Checkoway"/>
            <author fullname="Matthew Fredrikson" initials="M." surname="Fredrikson"/>
            <author fullname="Ruben Niederhagen" initials="R." surname="Niederhagen"/>
            <author fullname="Adam Everspaugh" initials="A." surname="Everspaugh"/>
            <author fullname="Matthew Green" initials="M." surname="Green"/>
            <author fullname="Tanja Lange" initials="T." surname="Lange"/>
            <author fullname="Thomas Ristenpart" initials="T." surname="Ristenpart"/>
            <author fullname="Daniel J. Bernstein" initials="D. J." surname="Bernstein"/>
            <author fullname="Jake Maskiewicz" initials="J." surname="Maskiewicz"/>
            <author fullname="Hovav Shacham" initials="H." surname="Shacham"/>
            <date year="2014"/>
          </front>
          <refcontent>23rd USENIX Security Symposium (USENIX Security 14)</refcontent>
        </reference>
        <reference anchor="NIST-SP-800-56A" quoteTitle="true" target="https://doi.org/10.6028/nist.sp.800-56ar3" derivedAnchor="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 showOnFrontPage="true"/>
            </author>
            <author fullname="Lily Chen" initials="L." surname="Chen">
              <organization showOnFrontPage="true"/>
            </author>
            <author fullname="Allen Roginsky" initials="A." surname="Roginsky">
              <organization showOnFrontPage="true"/>
            </author>
            <author fullname="Apostol Vassilev" initials="A." surname="Vassilev">
              <organization showOnFrontPage="true"/>
            </author>
            <author fullname="Richard Davis" initials="R." surname="Davis">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="April" year="2018"/>
          </front>
          <seriesInfo name="NIST SP" value="800-56Ar3"/>
          <seriesInfo name="DOI" value="10.6028/nist.sp.800-56ar3"/>
          <refcontent>National Institute of Standards and Technology</refcontent>
        </reference>
        <reference anchor="RFC5869" target="https://www.rfc-editor.org/info/rfc5869" quoteTitle="true" derivedAnchor="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 indent="0">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>
        <reference anchor="RFC8937" target="https://www.rfc-editor.org/info/rfc8937" quoteTitle="true" derivedAnchor="RFC8937">
          <front>
            <title>Randomness Improvements for Security Protocols</title>
            <author fullname="C. Cremers" initials="C." surname="Cremers"/>
            <author fullname="L. Garratt" initials="L." surname="Garratt"/>
            <author fullname="S. Smyshlyaev" initials="S." surname="Smyshlyaev"/>
            <author fullname="N. Sullivan" initials="N." surname="Sullivan"/>
            <author fullname="C. Wood" initials="C." surname="Wood"/>
            <date month="October" year="2020"/>
            <abstract>
              <t indent="0">Randomness is a crucial ingredient for Transport Layer Security (TLS) and related security protocols. Weak or predictable "cryptographically secure" pseudorandom number generators (CSPRNGs) can be abused or exploited for malicious purposes. An initial entropy source that seeds a CSPRNG might be weak or broken as well, which can also lead to critical and systemic security problems. This document describes a way for security protocol implementations to augment their CSPRNGs using long-term private keys. This improves randomness from broken or otherwise subverted CSPRNGs.</t>
              <t indent="0">This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8937"/>
          <seriesInfo name="DOI" value="10.17487/RFC8937"/>
        </reference>
        <reference anchor="RFC9794" target="https://www.rfc-editor.org/info/rfc9794" quoteTitle="true" derivedAnchor="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 indent="0">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" target="https://www.rfc-editor.org/info/rfc9847" quoteTitle="true" derivedAnchor="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 indent="0">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 indent="0">This document updates RFC 8447.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9847"/>
          <seriesInfo name="DOI" value="10.17487/RFC9847"/>
        </reference>
      </references>
    </references>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.a">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author initials="K." surname="Kwiatkowski" fullname="Krzysztof Kwiatkowski">
        <organization showOnFrontPage="true">PQShield</organization>
        <address>
          <email>kris@amongbytes.com</email>
        </address>
      </author>
      <author initials="P." surname="Kampanakis" fullname="Panos Kampanakis">
        <organization showOnFrontPage="true">AWS</organization>
        <address>
          <email>kpanos@amazon.com</email>
        </address>
      </author>
      <author initials="B. E." surname="Westerbaan" fullname="Bas Westerbaan">
        <organization showOnFrontPage="true">Cloudflare</organization>
        <address>
          <email>bas@cloudflare.com</email>
        </address>
      </author>
      <author initials="D." surname="Stebila" fullname="Douglas Stebila">
        <organization showOnFrontPage="true">University of Waterloo</organization>
        <address>
          <email>dstebila@uwaterloo.ca</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
