<?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.27 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-barnes-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-barnes-hpke-pq-00"/>
    <author fullname="Richard Barnes">
      <organization>Your Organization Here</organization>
      <address>
        <email>rlb@ipv.sx</email>
      </address>
    </author>
    <date year="2025" month="April" day="13"/>
    <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-barnes-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 not 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"/>, an ML-KEM ciphertext check failure, decapsulation key check failure,
or hash check failure cause 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="13" month="February" 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-09"/>
        </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:
H4sIAAAAAAAAA51a63bbRpL+30/RQ/+xZglKpC5WtJPJMKIU6USyZEvZSU6O
T9QEmmQPQQCDBkTTtvIs+yz7ZPtVdQMERMqbjY4tEn2prq766goFQSAKU8T6
RHZuU1sE70qVFOVCqiSSzYHd+1xFpjBpomJ5sRrnJpLDeJrmppgtrJykuby4
/fGsI9R4nOtHIvfOj4Sq0Fi4OpG2iISI0jBRCxwY5WpSBGOVJ9oGs2yug+zf
wd6esOV4YazFUcUqw7rLs/tzkZSLsc5PRARiJyJME6sTW9oTWeSlFjhvX6hc
qxN5d3Yqlmk+n+ZpmYEN4kHeluPYgA/Q7MofdVbIs8nEhEYnRUfM9QobohMh
AzlzN8t4vcSM1EmYrzLayfNgkz4zEs2/nWjEo05KMCXlHz9TSne3Dn1dKBPj
K9H+h9HFpJfmUxpXeTij8aLI7MnuLi2jIfOoe9WyXRrYHefp0updIkD7ptBJ
OfYUl9NdL1uaiiE+WzSIuiU9t6Vn0mrx7jbt9GbFIu4IocpiluYkMJCUclLG
sVNp570JZyqP5Pe8r8PTYFMl5hNL4kT+kpa5vGkMyQuda16ovSDyePwPkz32
7EeclaT5AuseWcBSnl/e3vWPj07k6Oay19/rHe0NjnffXt7d92imh6ngsF44
2Nt/aSGmhDDJZE1diCAIpBrbIldhIcRPGbBmkqlDwUfcK5lqtguHjqCNDpnl
aZGGaWxlkcpcW2MLqYpChXM5XgmPFRmmi6wsdG6lsVLJmZnOsNOQHa2gOEBJ
FjNN+LJmbGIaTSdQl8ofoTiZpMuuiDQfysrMO/4Q25OVXTrkAXMrebbm7zWh
cscduzSRjldBaXUktmJd2nCmF1qOFZZIPIPvsUlIHKoirDJbxk6F15rEY+xC
vP7x7Hqn6xeNdG4e3YrzMgkdGz+OzmkB5KgSOQSSYBBkJzinwe0SgBRDa9PQ
8NRIFUq+Hp4NRzueN9z3koSFC8GllAuQ6cqllpGemERL8CFVy0EJNsv6RuO0
mLXsmLZYZsx7AfIycC/MtyU1tKyeVxObcEFr10ijuB1mdBzTJyQxOl+fencx
DPbBtSpIE7Y0hRrHmtmDNjy9mbZ8AdLpPyEfSYpqzq0v1mUnS7QIcjF5Fyc7
PGY6LAiMNQrBzHMc9hzsFyaKYi3EK8i0yNPIXVqIoWSNpNNcZTNoKY5XOCjW
j6CyQQuODGh1H0lawGjYBlh0pCexBM+AEG51D4xDvI+ke5bb0tgoXXTlLF3q
R5136UZOShOIDVpNtWWiKoabj1ZdQcCRBlZg5sAyCMQx39w4C4rNRBcGEMbh
tZ2nSS36jXsJMmBIDJIu0kitwOVdGc4gs/p+y7SMgQ71qPkI5Q0UIsYJmIdh
ro2C4gpwl6cLsquGsfA4a5Si5iZ4dG/a6zowVrARI4PYoYMLgGoBs0khIgmY
mwLQMTqOLMkdkwbWE8qwJG+BCwwBZojI8T0mjoG1IkUMdoZDAv1XCSURJxGZ
mHcBOBXuH4fQPUNInDlnPepaHl05LkkhNhW0XyWrlqTTsdXgIyLgsbgYhqCZ
IUEwaWnjlfMDtkhzLw12aZWDAxGGirEODVraNCBdYXHLI8qtHhHQvizcznLT
104YqMmqFZ5gRVhUsFyg1YUBPiBiaEzUEQAYmSVpnE6NZldPZttpeoaOfH37
bqdlo0tgDEjKtQ8MWCf+D8OUnz9/dxmMONIj9JYmw+8w0MkU3g3x4+mJAGqS
UHufcPtONPydOyvm2AbrSDSkhHUYpQAAlUFVOIUkCIPZ5vDE2uUjlWuQfsHn
2bQ2WFJVc4+YILBbZsAZZ3N3vcqZsC3oN2zxETFKWg0sQ10ACrSrlS2EmioD
NmUYK8TIkCj4ACjEnwmALyR7fzIAyhcCoPgzAVBuD4AVb58//4UQ0szR6Bcj
o0I+hZYyiVr2e62tVVO6ypVawdzuvJDl6+uru506kWF9yRsIh61VXtzf3zYm
6QK04P7qruIb2cQphyDyUyn8f4EknQ4Glt+fn35zMNh7eqofDo/dQ43yIraB
tonBBYS4bwZ2H9QtO2PYf1hdh1BGlcq73fstEZ9jo7c+GEeMLNmFS9hehbBW
BtCAGw43Niwtqd8k4vPnai4gK8HO3HmMpyekjn+V11cBzg/eHB2vH/p7gwM8
/Tw4POx/I/+jveY2GBwebQ7uHx+sB5mAcA9dT8cJnnfvuuVk6k4+xCkk6lPf
p6cuQQSyfvPm4JiesFO4aeTJNOCTBPYRlcytbsj3mUyXEEs4Sy2Z8VqECnSU
hTGP4WlIOmlsqE6LhNUFUWlQeO3Dc+19MI3yRUVuJM0gVxdWd1hxiFfsEZz6
CLOsQBguUuhJjBTDB2EVp2ybE72U6qO2rJXbMmdP9IhgyBhxjg4zp+fvfwgq
qdE0lQb1wLNIivUUgMEwoFjhAO4IYsONaKesily5z9Tqx8MdIf6pncf1mSlf
gJLChlhqN0OycTniRC1MzNn/TNkZiiznP+Dm3LzxSQTLLeHMDDqpwMJxNaXg
H1bB3+VbnCFWtuHkiMyTBEtHP9O3eZZgu9IGJ0HF9FEltD3KHE/rfM5l0SPN
GQrHEkEJH3lYqrSt7Fz/dHff6bpP+faGv78/e/fT5fuzEX0H1aur+ovwK+4u
bn66Gq2/rXee3lxfn70duc0Yla0h0bke/tJxQunc3N5f3rwdXnU2b0eWhBuO
PTyRp3AiZJGQ2DA3Y2dg35/e/s9/9w+8bQ36/W/Yj9HDcf/NAR6WcOnutDSh
1JQfId6VUFmmVU5UoDCgJEP+H7uCwSL1RSQGyCDNv/5KkvlwIv82DrP+wd/9
AF24NVjJrDXIMtsc2djshLhlaMsxtTRb488k3eZ3+EvruZJ7Y/Bv38VkEEH/
+Lu/C7aTqU7gAAjLlFZxqqDzheF8a9X0cjTFCCYHZia+0QLv9kJEZARCvazi
JVI7rSiYW1dds1fYBERVYrLtFAhnjdXb62aADCaX6wm5pyKt0mVkDnUERtBX
drVY6CKnHOXsWrDTMwWmOSmQ61kK95KnfTK8hZ2GXwPSv3q0j5bPczfQPYdD
QELlYt+S/NVSrSyXpNzN6rhahdOJfEGpP9tS8+x6BVIiV1i+8t7IWT+7yWuU
lrEOrrDEhDr4nt0eMqXgpXSKtFFrXTRiW6P8ty5eNat/2BKXZYss1s5xVXgh
D8fWPVGh9p7Psekw4lY9cOamwdmtMvnrnYfa/0KmOYXNNIlqMVdz4sFTwr4f
dPJb5Zppfzsy+xLYJMj15YOZLx4k2zdcj/6owgLl6MNbO5ffyqODBxQIBXIf
CnB+30P0wAp4+PTgaDArXzkdsBfMqcmpJMdWZM+F3B8ERBsSnJKU2BqYm2ep
gTs1LQtm185/xrGWCTqDJTfZKn7ZLKoMsdqXuX2ytU9sFMfQw++//y4zq0sY
YhppuN+JbCsEPO64hiDKjVgnPCD/QuJyw/QDowJ+WxvP8jzNBa+IIFzs+vVk
f/CBBz75gf3ByQe/ZO6G+OG1nnflbzsYeUHMUVd+2uGliBtljkw/wg4936Hr
OGw9/OCvvQ1YhGQC7GoL+rgaUF4mOQSbLoSDzaOKS+qFDR1AKJKQfB1kbJll
SMi5BH9w24jaQmtnEW4IvtLCcaDGzHUNg1YayWa2BfhtxDVv0xVVu4ry6ML4
O3KFyIMbaOEWFsnNOXirXUtgoQoBic24F6Gc+9MfMzDu59e76JLPGdoOpg01
ONBEBAEvpqODli7bGok+NZV6hzkVm0/a1Z1YxCZH9jlCZb5tss7mOCBxKxIX
E8imkUBRd6ISIyDhS3wPu6oBRgESGbD5qKMABjAFBWfKCBwU16ij6EPUZvvJ
G7Tf58vCxnbndl3orRs4vhCRmcrVgiYlpfeGu5Pedz6wG/+j7rLWlnP+zks2
fDwVAByzk+ruGzdBNaLDuaT+AqX6oWKpYAN5ceHYYZt/qDgc6T/DIe/axuGa
t9Bk4JbDcoup7hastxcIBE7O8bdcprqLZ9zfRd6nLlTAukNT9b0Joayo2j42
T+Z+JF3x6KBy/bWdMWRN8pjOtdi8ONuzKU5e8M4kVagHgJ2/r8wJ1oSntoel
Afaw7FN/g3Tm/x+f2maLHWwSNo2RGio1CtkGaWRD687wqM9X5wg68hjhNpgi
P4gYrEOc7CkhInMo9ekRwiePHx1sC5eiSQZMVjQy0Ih0ppO63vuKXf0nlw0c
vn2iWxX5iziY60VgVKICfofASe4r/w6IXbiny4obXQjx66/y/mZ0c4KHusfQ
5VokQymf5dRoaqaMVn740NyF81HtwyadN3atz9EFUwGE3RPcfa4pgXm+eV37
Dm8vEYKKWRrZOmlsZqq08ZWvglVtzVQytwmCiRLuMvZvkrmHVOf8ZFGUS1dv
WKK6Gq3oN/scnGivC18hhu3+DwR+51cPen3a8fXerOudqYgKYqze8vqvfqGR
6JD6cbnhVyschKVrNduq0HnOna/7WSz02q96Z2LThevOx4BFSA3gqVmADPXM
a0mTmvyNxfOuLmUQkCo5ChcbUJrSPuSkZCVdz80ddZ+CH06voXZxOlP4N9i7
TeNVf3/vsNk/IAYsNXqidcuBmrcIYI6Hu6A/OCZKPacS31o5bbXYNrVRZ/Mv
7Fi/FQN4Lt+OgtPT4cB1brTY/vrW91R995qrhMLFWFB5RsL1VycpdxQF5zTV
ec9WyqpbvW7w169BcFR1hOIDiZDwTbXnlLjF9SItWHFP96jrjBKP/KOL71R7
NbTRKp+bfY+qkcej3NYi7VTngpiv40xhdTzZcs11N3iTa59dbH3FUNpt7OC7
tmS1xs4q6+NOt8lhb+EknwaOGnlAy36vdgvfmySiBCbjVmJB72icuV8O3w43
cHXfKB/Z+HCuf+/I60GCU8xilmvo0nGNCNjvSf7zAJeYgefcOGutS8xLzuTg
rvPKCvJVI9PgflvVraP4tlZTTwx6chhFNVmfk3yddGXdjYqca3ui/ZLee2L/
KyeNzr9+kvPPWFYDi87aPEO8euWFFVURif6fuTOFYEHbGXcpc53FKtyQ6h+7
PldCVjzsfdzbO9hDCeu+9R8cOt3T4KF+j+4NmFThtkKxX+R/0Vcpv/BZ1c8X
6RMB/gqvQR/Z3E3M8ZtyDHy819wkxg2+iC8ngfupvzx/8l9bH+0x9x1cuTvh
BP9m4LA/oMORgFQMvjk6po/jvT36ODqg30nKU+/PT3/GD32vSPXXpPzGBqn+
3vExffSPD/4AqcGaFL2veEbq8Oh4/fEiqc8n8tVGQiP5D9O+7TwDT4WLCodb
gcEEOvLJJXTchfWvb8eaFL5QEb8JpSRmbcidWn8des9ULhLX8J64dIf/hqEN
bDa3i9rc1qiuHdJ7HwJ52uHMeaRXawv66jZMN7bxX2uM4fTJpw3DeZIuYx25
7g3E6P5MTkffdiYqtrpDAgA9uK5qJUq1/wX/FFZH9ScAAA==

-->

</rfc>
