<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.3.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-hpke-pq-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.1 -->
  <front>
    <title abbrev="PQ HPKE">Post-Quantum and Post-Quantum/Traditional Hybrid Algorithms for HPKE</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-hpke-pq-00"/>
    <author fullname="Richard Barnes">
      <organization>Your Organization Here</organization>
      <address>
        <email>rlb@ipv.sx</email>
      </address>
    </author>
    <date year="2025" month="June" day="01"/>
    <area>SEC</area>
    <workgroup>HPKE Publication, Kept Efficient</workgroup>
    <keyword>hybrid public key encryption</keyword>
    <keyword>hpke</keyword>
    <keyword>post-quantum</keyword>
    <abstract>
      <?line 39?>

<t>Updating key exchange and public-key encryption protocols to resist attack by
quantum computers is a high priority given the possibility of "harvest now,
decrypt later" attacks.  Hybrid Public Key Encryption (HPKE) is a widely-used
public key encryption scheme based on combining a Key Encapsulation Mechanism
(KEM), a Key Derivation Function (KDF), and an Authenticated Encryption with
Associated Data (AEAD) scheme.  In this document, we define KEM algorithms for
HPKE based on both post-quantum KEMs and hybrid constructions of post-quantum
KEMs with traditional KEMs, as well as a KDF based on SHA-3 that is suitable for
use with these KEMs.  When used with these algorithms, HPKE is resilient with
respect to attack by a quantum computer.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://hpkewg.github.io/hpke-pq/draft-barnes-hpke-pq.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-hpke-pq/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        HPKE Publication, Kept Efficient  mailing list (<eref target="mailto:hpke@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/hpke"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/hpke/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/hpkewg/hpke-pq"/>.</t>
    </note>
  </front>
  <middle>
    <?line 52?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>A cryptographically relevant quantum computer may or may not exist as of this
writing.  The conventional wisdom, however, is that if one does not already,
then it likely will within the lifetime of information that is cryptographically
protected today.  Such a computer would have the ability to infer decapsulation
keys from encapsulation keys used for traditional KEMs, e.g., KEMs based on
Diffie-Hellman over finite fields or elliptic curves.  And it would be able to
do this not just for data encrypted after the creation of the computer, but also
for any information observed by the attacker previously, and stored for later
decryption.  This is the so-called "harvest now, decrypt later" attack.</t>
      <t>It is thus a high priority for many organizations right now to migrate key
exchange technologies to use "post-quantum" (PQ) algorithms, which are resistant
to attack by a quantum computer <xref target="I-D.ietf-pquip-pqc-engineers"/>.  Since these PQ
algorithms are relatively new, there is also interest in hybrid constructions
combining PQ algorithms with traditional KEMs, so that if the PQ algorithm
fails, then the traditional algorithm will still provide security, at least
against classical attacks.</t>
      <t>Hybrid Public Key Encryption (HPKE) is a widely-used public key encryption
scheme based on combining a Key Encapsulation Mechanism (KEM), a Key Derivation
Function (KDF), and an Authenticated Encryption with Associated Data (AEAD)
scheme <xref target="I-D.barnes-hpke-hpke"/>.  It is the foundation of the Messaging Layer
Security (MLS) protocol, the Oblivious HTTP protocol, and the TLS Encrypted
ClientHello extension <xref target="RFC9420"/> <xref target="RFC9458"/> <xref target="I-D.ietf-tls-esni"/>.</t>
      <t>This document defines a collection of PQ and PQ/T KEM algorithms for HPKE, which
allows HPKE to provide post-quantum security, as discussed in
<xref target="security-considerations"/>:</t>
      <ul spacing="normal">
        <li>
          <t>ML-KEM-768</t>
        </li>
        <li>
          <t>ML-KEM-1024</t>
        </li>
        <li>
          <t>X25519 + ML-KEM-768</t>
        </li>
        <li>
          <t>P-256 + ML-KEM-768</t>
        </li>
        <li>
          <t>P-384 + ML-KEM-1024</t>
        </li>
      </ul>
      <t>ML-KEM, X25519, and P-256/P-384 are defined in <xref target="FIPS203"/>, <xref target="RFC7748"/>, and
<xref target="FIPS186"/>, respectively.</t>
      <t>This selection of KEM algorithms was chosen to provide a reasonably consolidated
set of algorithms (in the interest of broad interoperability), while still
allowing HPKE users flexibility along a few axes:</t>
      <ul spacing="normal">
        <li>
          <t>Pure PQ vs. PQ/T hybrid</t>
        </li>
        <li>
          <t>CFRG-defined vs. NIST-defined elliptic curves</t>
        </li>
        <li>
          <t>Different security levels (NIST category 3 vs. category 5)</t>
        </li>
      </ul>
      <t>We also define HPKE KDF algorithms based on the SHA-3 family of hash functions.
SHA-3 is used internally to ML-KEM, and so it could be convenient for HPKE users
using the KEM algorithms in this document to rely solely on SHA-3.</t>
    </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?>

<t>We generally use the terminology defined in the HPKE specification
<xref target="I-D.barnes-hpke-hpke"/>.</t>
      <t>There are two meanings of "hybrid" in this document.  In the context of "hybrid
public key encryption", it refers to the combination of an asymmetric KEM
operaiton and a symmetric AEAD operation.  In the context of "PQ/T hybrid",
refers to the combination of PQ and traditional KEMs.  For clarity, we always
use "HPKE" for the former, and "PQ/T hybrid" for the latter.</t>
    </section>
    <section anchor="ml-kem">
      <name>ML-KEM</name>
      <t>The NIST Module-Lattice-Based Key-Encapsulation Mechanism is defined in
<xref target="FIPS203"/>.  In this section, we define how to implement the HPKE KEM interface
using ML-KEM.</t>
      <t>The HPKE <tt>DeriveKeyPair()</tt> function corresponds to the function
<tt>ML-KEM.KeyGen_internal()</tt> in <xref target="FIPS203"/>.  The input <tt>ikm</tt> <bcp14>MUST</bcp14> be exactly
<tt>Nsk = 64</tt> bytes long.  The <tt>d</tt> and <tt>z</tt> inputs to <tt>ML-KEM.KeyGen_internal()</tt> are
the first and last 32-byte segments of <tt>ikm</tt>, respectively.  The output <tt>skX</tt> is
the generated decapsulation key and the output <tt>pkX</tt> is the generated
encapsulation key.</t>
      <sourcecode type="pseudocode"><![CDATA[
def DeriveKeyPair(ikm):
    if len(ikm) != 64:
        raise DeriveKeyPairError

    d = ikm[:32]
    z = ikm[32:]

    dk = ikm
    (ek, _) = ML-KEM.KeyGen_internal(d, z)
    return (dk, ek)
]]></sourcecode>
      <t>The <tt>GenerateKeyPair()</tt> function is simply <tt>DeriveKeyPair()</tt> with a pseudorandom
<tt>ikm</tt> value.  As long as the bytes supplied by <tt>random()</tt> meet the randomness
requirements of <xref target="FIPS203"/>, this corresponds to the <tt>ML-KEM.KeyGen()</tt> function,
with the distinction that the decapsulation key is returned in seed format
rather than the expanded form returned by <tt>ML-KEM.KeyGen()</tt>.</t>
      <sourcecode type="pseudocode"><![CDATA[
def GenerateKeyPair():
    dz = random(64)
    return DeriveKeyPair(dz)
]]></sourcecode>
      <t>The <tt>SerializePublicKey()</tt> and <tt>DeserializePublicKey()</tt> functions are both the
identity function, since the ML-KEM already uses fixed-length byte strings for
public encapsulation keys.  The length of the byte string is determined by the
ML-KEM parameter set in use.</t>
      <t>The <tt>Encap()</tt> function corresponds to the function <tt>ML-KEM.Encaps()</tt> in
<xref target="FIPS203"/>, where an ML-KEM encapsulation key check failure causes an HPKE
<tt>EncapError</tt>.</t>
      <t>The <tt>Decap()</tt> function corresponds to the function <tt>ML-KEM.Decaps()</tt> in
<xref target="FIPS203"/>, where any of an ML-KEM ciphertext check failure, decapsulation key check failure,
or hash check failure causes an HPKE <tt>DecapError</tt>. To be explicit, we derive the
expanded decapsulation key from the 64-byte seed format and invoke
<tt>ML-KEM.Decaps()</tt> with it:</t>
      <sourcecode type="pseudocode"><![CDATA[
def Decap(enc, skR):
    d = skR[:32]
    z = skR[32:]
    (_, dk) = ML-KEM.KeyGen_internal(d, z)
    return ML-KEM.Decaps(dk, enc)
]]></sourcecode>
      <t>The <tt>AuthEncap()</tt> and <tt>AuthDecap()</tt> functions are not implemented.</t>
      <t>The constants <tt>Nsecret</tt> and <tt>Nsk</tt> are always 32 and 64, respectively.  The
constants <tt>Nenc</tt> and <tt>Npk</tt> depend on the ML-KEM parameter set in use; they are
specified in <xref target="ml-kem-iana-table"/>.</t>
    </section>
    <section anchor="hybrids-of-ml-kem-with-dh">
      <name>Hybrids of ML-KEM with DH</name>
      <t>[[ TODO: DH + ML-KEM, in appropriate combinations ]]</t>
      <t>[[ TODO: Decide whether to use DHKEM, or use DH directly ]]</t>
      <t>[[ TODO: Define HPKE API methods for the combination ]]</t>
    </section>
    <section anchor="sha-3-as-an-hpke-kdf">
      <name>SHA-3 as an HPKE KDF</name>
      <t>[[ TODO: Defer until draft-ietf-hpke-hpke has a suitable definition ]]</t>
    </section>
    <section anchor="selection-of-aead-algorithms">
      <name>Selection of AEAD algorithms</name>
      <t>As discussed in <xref section="2.1" sectionFormat="of" target="I-D.ietf-pquip-pqc-engineers"/>, the advent of
quantum computers does not necessarily require changes in the AEAD algorithms
used in HPKE.  However, some compliance regimes call for the use of AEAD
algorithms with longer key lengths, for example, the AES-256-GCM or
ChaCha20Poly1305 algorithms registered for HPKE instead of AES-128-GCM.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>As discussed in the HPKE Security Considerations, HPKE is an IND-CCA2 secure
public-key encryption scheme if the KEM it uses is IND-CCA2 secure.  It follows
that HPKE is IND-CCA2 secure against a quantum attacker if it uses a KEM that
provides IND-CCA2 security against a quantum attacker, i.e., a PQ KEM.  The KEM
algorithms defined in this document provide this level of security.  ML-KEM
itself is IND-CCA2 secure, and the IND-CCA2 security of the hybrid constructions
used in this document is established in <xref target="I-D.irtf-cfrg-hybrid-kems"/>.</t>
      <t>[[ TODO: Binding properties ]]</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This section requests that IANA perform three actions:</t>
      <ol spacing="normal" type="1"><li>
          <t>Update the entries in HPKE KEM Identifiers registry corresponding to ML-KEM
algorithms.</t>
        </li>
        <li>
          <t>Add entries to the HPKE KEM Identifiers registry for the PQ/T hybrid KEMs
defined in this document.</t>
        </li>
        <li>
          <t>Add entries to the HPKE KDF Identifiers registry for the SHA-3 KDFs defined
in this document.</t>
        </li>
      </ol>
      <section anchor="updated-ml-kem-kem-entries">
        <name>Updated ML-KEM KEM Entries</name>
        <t>IANA should replace the entries in the HPKE KEM Identifiers registry for values
<tt>0x0040</tt>, <tt>0x0041</tt>, and <tt>0x0042</tt> with the following values:</t>
        <table anchor="ml-kem-iana-table">
          <name>Updated ML-KEM entries for the HPKE KEM Identifiers table</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">KEM</th>
              <th align="left">Nsecret</th>
              <th align="left">Nenc</th>
              <th align="left">Npk</th>
              <th align="left">Nsk</th>
              <th align="left">Auth</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x0040</td>
              <td align="left">ML-KEM-512</td>
              <td align="left">32</td>
              <td align="left">768</td>
              <td align="left">800</td>
              <td align="left">64</td>
              <td align="left">no</td>
              <td align="left">RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">0x0041</td>
              <td align="left">ML-KEM-768</td>
              <td align="left">32</td>
              <td align="left">1088</td>
              <td align="left">1184</td>
              <td align="left">64</td>
              <td align="left">no</td>
              <td align="left">RFCXXXX</td>
            </tr>
            <tr>
              <td align="left">0x0042</td>
              <td align="left">ML-KEM-1024</td>
              <td align="left">32</td>
              <td align="left">1568</td>
              <td align="left">1568</td>
              <td align="left">64</td>
              <td align="left">no</td>
              <td align="left">RFCXXXX</td>
            </tr>
          </tbody>
        </table>
        <t>The only change being made is to update the "Reference" column to refer to this
document.</t>
      </section>
      <section anchor="pqt-hybrid-kem-entries">
        <name>PQ/T Hybrid KEM Entries</name>
        <t>[[ TODO: Register KEM values ]]</t>
      </section>
      <section anchor="sha-3-kdf-entries">
        <name>SHA-3 KDF Entries</name>
        <t>[[ TODO: Register KDF values ]]</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="FIPS186">
          <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="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="I-D.barnes-hpke-hpke">
          <front>
            <title>Hybrid Public Key Encryption</title>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <author fullname="Karthikeyan Bhargavan" initials="K." surname="Bhargavan">
              <organization>Inria</organization>
            </author>
            <author fullname="Benjamin Lipp" initials="B." surname="Lipp">
              <organization>Inria</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Apple</organization>
            </author>
            <date day="20" month="March" year="2025"/>
            <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.

   This document is a product of the Crypto Forum Research Group (CFRG)
   in the IRTF.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-barnes-hpke-hpke-00"/>
        </reference>
        <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="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="I-D.irtf-cfrg-hybrid-kems">
          <front>
            <title>Hybrid PQ/T Key Encapsulation Mechanisms</title>
            <author fullname="Deirdre Connolly" initials="D." surname="Connolly">
              <organization>SandboxAQ</organization>
            </author>
            <date day="25" month="February" year="2025"/>
            <abstract>
              <t>   This document defines generic techniques to achive hybrid post-
   quantum/traditional (PQ/T) key encapsulation mechanisms (KEMs) from
   post-quantum and traditional component algorithms that meet specified
   security properties.  It then uses those generic techniques to
   construct several concrete instances of hybrid KEMs.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-hybrid-kems-03"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.ietf-pquip-pqc-engineers">
          <front>
            <title>Post-Quantum Cryptography for Engineers</title>
            <author fullname="Aritra Banerjee" initials="A." surname="Banerjee">
              <organization>Nokia</organization>
            </author>
            <author fullname="Tirumaleswar Reddy.K" initials="T." surname="Reddy.K">
              <organization>Nokia</organization>
            </author>
            <author fullname="Dimitrios Schoinianakis" initials="D." surname="Schoinianakis">
              <organization>Nokia</organization>
            </author>
            <author fullname="Tim Hollebeek" initials="T." surname="Hollebeek">
              <organization>DigiCert</organization>
            </author>
            <author fullname="Mike Ounsworth" initials="M." surname="Ounsworth">
              <organization>Entrust Limited</organization>
            </author>
            <date day="19" month="May" year="2025"/>
            <abstract>
              <t>   The advent of a cryptographically relevant quantum computer (CRQC)
   would render state-of-the-art, traditional public-key algorithms
   deployed today obsolete, as the mathematical assumptions underpinning
   their security would no longer hold.  To address this, protocols and
   infrastructure must transition to post-quantum algorithms, which are
   designed to resist both traditional and quantum attacks.  This
   document explains why engineers need to be aware of and understand
   post-quantum cryptography (PQC), detailing the impact of CRQCs on
   existing systems and the challenges involved in transitioning to
   post-quantum algorithms.  Unlike previous cryptographic updates, this
   shift may require significant protocol redesign due to the unique
   properties of post-quantum algorithms.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-pquip-pqc-engineers-12"/>
        </reference>
        <reference anchor="RFC9420">
          <front>
            <title>The Messaging Layer Security (MLS) Protocol</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="B. Beurdouche" initials="B." surname="Beurdouche"/>
            <author fullname="R. Robert" initials="R." surname="Robert"/>
            <author fullname="J. Millican" initials="J." surname="Millican"/>
            <author fullname="E. Omara" initials="E." surname="Omara"/>
            <author fullname="K. Cohn-Gordon" initials="K." surname="Cohn-Gordon"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>Messaging applications are increasingly making use of end-to-end security mechanisms to ensure that messages are only accessible to the communicating endpoints, and not to any servers involved in delivering messages. Establishing keys to provide such protections is challenging for group chat settings, in which more than two clients need to agree on a key but may not be online at the same time. In this document, we specify a key establishment protocol that provides efficient asynchronous group key establishment with forward secrecy (FS) and post-compromise security (PCS) for groups in size ranging from two to thousands.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9420"/>
          <seriesInfo name="DOI" value="10.17487/RFC9420"/>
        </reference>
        <reference anchor="RFC9458">
          <front>
            <title>Oblivious HTTP</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="January" year="2024"/>
            <abstract>
              <t>This document describes Oblivious HTTP, a protocol for forwarding encrypted HTTP messages. Oblivious HTTP allows a client to make multiple requests to an origin server without that server being able to link those requests to the client or to identify the requests as having come from the same client, while placing only limited trust in the nodes used to forward the messages.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9458"/>
          <seriesInfo name="DOI" value="10.17487/RFC9458"/>
        </reference>
        <reference anchor="I-D.ietf-tls-esni">
          <front>
            <title>TLS Encrypted Client Hello</title>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Independent</organization>
            </author>
            <author fullname="Kazuho Oku" initials="K." surname="Oku">
              <organization>Fastly</organization>
            </author>
            <author fullname="Nick Sullivan" initials="N." surname="Sullivan">
              <organization>Cryptography Consulting LLC</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="20" month="March" year="2025"/>
            <abstract>
              <t>   This document describes a mechanism in Transport Layer Security (TLS)
   for encrypting a ClientHello message under a server public key.

Discussion Venues

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

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

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

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
