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

<t>This memo defines ML-KEM-512, ML-KEM-768, and ML-KEM-1024 as a standalone
<tt>NamedGroup</tt>s for use in TLS 1.3 to achieve post-quantum key agreement.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-connolly-tls-mlkem-key-agreement/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Transport Layer Security Working Group mailing list (<eref target="mailto:tls@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/tls/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/tls/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/dconnolly/draft-connolly-tls-mlkem-key-agreement"/>.</t>
    </note>
  </front>
  <middle>
    <?line 108?>

<section anchor="introduction">
      <name>Introduction</name>
      <section anchor="motivation">
        <name>Motivation</name>
        <t>FIPS 203 standard (ML-KEM) is a new FIPS standard for post-quantum
key agreement via lattice-based key establishment mechanism
(KEM). Having a fully post-quantum (not hybrid) key agreement
option for TLS 1.3 is necessary for migrating beyond hybrids and
for users that need to be fully post-quantum.</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="kems">
      <name>Key encapsulation mechanisms</name>
      <t>This document models key agreement as key encapsulation mechanisms
(KEMs), which consist of three algorithms:</t>
      <ul spacing="normal">
        <li>
          <t><tt>KeyGen() -&gt; (pk, sk)</tt>: A probabilistic key generation algorithm,
which generates a public encapsulation key <tt>pk</tt> and a secret
decapsulation key <tt>sk</tt>.</t>
        </li>
        <li>
          <t><tt>Encaps(pk) -&gt; (ct, shared_secret)</tt>: A probabilistic encapsulation
algorithm, which takes as input a public encapsulation key <tt>pk</tt> and
outputs a ciphertext <tt>ct</tt> and shared secret <tt>shared_secret</tt>.</t>
        </li>
        <li>
          <t><tt>Decaps(sk, ct) -&gt; shared_secret</tt>: A decapsulation algorithm, which takes as
input a secret decapsulation key <tt>sk</tt> and ciphertext <tt>ct</tt> and outputs
a shared secret <tt>shared_secret</tt>.</t>
        </li>
      </ul>
      <t>ML-KEM-512, ML-KEM-768 and ML-KEM-1024 conform to this API:</t>
      <ul spacing="normal">
        <li>
          <t>ML-KEM-512 has encapsulation keys of size 800 bytes, expanded decapsulation
keys of 1632 bytes, decapsulation key seeds of size 64 bytes, ciphertext
size of 768 bytes, and shared secrets of size 32 bytes</t>
        </li>
        <li>
          <t>ML-KEM-768 has encapsulation keys of size 1184 bytes, expanded
decapsulation keys of 2400 bytes, decapsulation key seeds of size 64 bytes,
ciphertext size of 1088 bytes, and shared secrets of size 32 bytes</t>
        </li>
        <li>
          <t>ML-KEM-1024 has encapsulation keys of size 1568 bytes, expanded
decapsulation keys of 3168 bytes, decapsulation key seeds of size 64 bytes,
ciphertext size of 1568 bytes, and shared secrets of size 32 bytes</t>
        </li>
      </ul>
    </section>
    <section anchor="construction">
      <name>Construction</name>
      <t>We define the KEMs as <tt>NamedGroup</tt>s, sent in the <tt>supported_groups</tt>
extension.</t>
      <section anchor="negotiation">
        <name>Negotiation</name>
        <t>Each method is its own solely post-quantum key agreement method, which
are assigned their own identifiers, registered by IANA in the TLS
Supported Groups registry:</t>
        <artwork><![CDATA[
    enum {

         ...,

          /* ML-KEM Key Agreement Methods */
          mlkem512(0x0200),
          mlkem768(0x0201),
          mlkem1024(0x0202)

         ...,

    } NamedGroup;
]]></artwork>
      </section>
      <section anchor="construction-transmitting">
        <name>Transmitting encapsulation keys and ciphertexts</name>
        <t>The encapsulation key and ciphertext values are directly encoded with
fixed lengths as in <xref target="FIPS203"/>; the representation and length of
elements <bcp14>MUST</bcp14> be fixed once the algorithm is fixed.</t>
        <t>In TLS 1.3 a KEM encapsulation key or KEM ciphertext is
represented as a <tt>KeyShareEntry</tt>:</t>
        <artwork><![CDATA[
    struct {
        NamedGroup group;
        opaque key_exchange<1..2^16-1>;
    } KeyShareEntry;
]]></artwork>
        <t>These are transmitted in the <tt>extension_data</tt> fields of
<tt>KeyShareClientHello</tt> and <tt>KeyShareServerHello</tt> extensions:</t>
        <artwork><![CDATA[
    struct {
        KeyShareEntry client_shares<0..2^16-1>;
    } KeyShareClientHello;

    struct {
        KeyShareEntry server_share;
    } KeyShareServerHello;
]]></artwork>
        <t>The client's shares are listed in descending order of client preference;
the server selects one algorithm and sends its corresponding share.</t>
        <t>For the client's share, the <tt>key_exchange</tt> value contains the <tt>pk</tt>
output of the corresponding KEM <tt>NamedGroup</tt>'s <tt>KeyGen</tt> algorithm.</t>
        <t>For the server's share, the <tt>key_exchange</tt> value contains the <tt>ct</tt>
output of the corresponding KEM <tt>NamedGroup</tt>'s <tt>Encaps</tt> algorithm.</t>
        <t>For all parameter sets, the server <bcp14>MUST</bcp14> perform the encapsulation key check
described in Section 7.2 of <xref target="FIPS203"/> on the client's encapsulation key,
and abort with an <tt>illegal_parameter</tt> alert if it fails.</t>
        <t>For all parameter sets, the client <bcp14>MUST</bcp14> check if the ciphertext length
matches the selected parameter set, and abort with an <tt>illegal_parameter</tt>
alert if it fails.</t>
        <t>If ML-KEM decapsulation fails for any other reason, the connection <bcp14>MUST</bcp14> be
aborted with an <tt>internal_error</tt> alert.</t>
      </section>
      <section anchor="construction-shared-secret">
        <name>Shared secret calculation</name>
        <t>The shared secret output from the ML-KEM <tt>Encaps</tt> and <tt>Decaps</tt>
algorithms over the appropriate keypair and ciphertext results in the
same shared secret <tt>shared_secret</tt>, which is inserted into the TLS 1.3
key schedule in place of the (EC)DHE shared secret, as shown in
<xref target="fig-key-schedule"/>.</t>
        <figure anchor="fig-key-schedule">
          <name>Key schedule for key agreement</name>
          <artwork><![CDATA[
                                    0
                                    |
                                    v
                      PSK ->  HKDF-Extract = Early Secret
                                    |
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
                                    |
                                    v
                              Derive-Secret(., "derived", "")
                                    |
                                    v
             shared_secret -> HKDF-Extract = Handshake Secret
             ^^^^^^^^^^^^^          |
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
                                    |
                                    v
                              Derive-Secret(., "derived", "")
                                    |
                                    v
                         0 -> HKDF-Extract = Master Secret
                                    |
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="discussion">
      <name>Discussion</name>
      <section anchor="larger-encapsulation-keys-andor-ciphertexts">
        <name>Larger encapsulation keys and/or ciphertexts</name>
        <t>The <tt>KeyShareEntry</tt> struct limits public keys and ciphertexts to 2^16-1
bytes; this is the (2^16-1)-byte limit on the <tt>key_exchange</tt> field in the
<tt>KeyShareEntry</tt> struct. All defined parameter sets for ML-KEM have
encapsulation keys and ciphertexts that fall within the TLS constraints.</t>
      </section>
      <section anchor="failures">
        <name>Failures</name>
        <t>Some post-quantum key exchange algorithms, including ML-KEM, have non-zero
probability of failure, meaning two honest parties may derive different
shared secrets.  This would cause a handshake failure. ML-KEM has a
cryptographically small failure rate less than 2^-138; implementers should
be aware of the potential of handshake failure. Clients can retry if a
failure is encountered.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="fixed-lengths">
        <name>Fixed lengths</name>
        <t>For each <tt>NameGroup</tt>, the lengths are fixed (that is, constant) for
encapsulation keys, the ciphertexts, and the shared secrets.</t>
        <t>Variable-length secrets are, generally speaking, dangerous.  In particular,
when using key material of variable length and processing it using hash
functions, a timing side channel may arise.  In broad terms, when the secret
is longer, the hash function may need to process more blocks internally.  In
some unfortunate circumstances, this has led to timing attacks, e.g. the
Lucky Thirteen <xref target="LUCKY13"/> and Raccoon <xref target="RACCOON"/> attacks.</t>
        <t><xref target="AVIRAM"/> identified a risk of using variable-length secrets when the hash
function used in the key derivation function is no longer
collision-resistant.</t>
      </section>
      <section anchor="ind-cca">
        <name>IND-CCA</name>
        <t>The main security property for KEMs is indistinguishability under adaptive
chosen ciphertext attack (IND-CCA2), which means that shared secret values
should be indistinguishable from random strings even given the ability to
have other arbitrary ciphertexts decapsulated.  IND-CCA2 corresponds to
security against an active attacker, and the public key / secret key pair can
be treated as a long-term key or reused.  A common design pattern for
obtaining security under key reuse is to apply the Fujisaki-Okamoto (FO)
transform <xref target="FO"/> or a variant thereof <xref target="HHK"/>.</t>
        <t>Key exchange in TLS 1.3 is phrased in terms of Diffie-Hellman key exchange in
a group.  DH key exchange can be modeled as a KEM, with <tt>KeyGen</tt>
corresponding to selecting an exponent <tt>x</tt> as the secret key and computing
the public key <tt>g^x</tt>; encapsulation corresponding to selecting an exponent
<tt>y</tt>, computing the ciphertext <tt>g^y</tt> and the shared secret <tt>g^(xy)</tt>, and
decapsulation as computing the shared secret <tt>g^(xy)</tt>. See <xref target="HPKE"/> for more
details of such Diffie-Hellman-based key encapsulation
mechanisms. Diffie-Hellman key exchange, when viewed as a KEM, does not
formally satisfy IND-CCA2 security, but is still safe to use for ephemeral
key exchange in TLS 1.3, see e.g. <xref target="DOWLING"/>.</t>
        <t>TLS 1.3 does not require that ephemeral public keys be used only in a single
key exchange session; some implementations may reuse them, at the cost of
limited forward secrecy.  As a result, any KEM used in the manner described
in this document <bcp14>MUST</bcp14> explicitly be designed to be secure in the event that
the public key is reused.  Finite-field and elliptic-curve Diffie-Hellman key
exchange methods used in TLS 1.3 satisfy this criteria.  For generic KEMs,
this means satisfying IND-CCA2 security or having a transform like the
Fujisaki-Okamoto transform <xref target="FO"/> <xref target="HHK"/> applied.  While it is recommended
that implementations avoid reuse of KEM public keys, implementations that do
reuse KEM public keys <bcp14>MUST</bcp14> ensure that the number of reuses of a KEM public
key abides by any bounds in the specification of the KEM or subsequent
security analyses.  Implementations <bcp14>MUST NOT</bcp14> reuse randomness in the
generation of KEM ciphertexts.</t>
      </section>
      <section anchor="binding-properties">
        <name>Binding properties</name>
        <t>TLS 1.3's key schedule commits to the the ML-KEM encapsulation key and the
ciphertext as the <tt>key_exchange</tt> field as part of the <tt>key_share</tt> extension
are populated with those values are included as part of the handshake
messages, providing resilience against re-encapsulation attacks against KEMs
used for key agreement.</t>
        <t>Because of the inclusion of the ML-KEM ciphertext in the TLS 1.3 key
schedule, there is no concern of malicious tampering (MAL) adversaries, nor
of just honestly-generated but leaked key pairs (LEAK adversaries). The same
is true of KEMs with weaker binding properties, even if they were to have
more constraints for secure use in contexts outside of TLS 1.3 handshake key
agreement. These computational binding properties for KEMs were formalized in
<xref target="CDM23"/>.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests/registers three new entries to the TLS Named Group
(or Supported Group) registry, according to the procedures in <xref section="6" sectionFormat="of" target="tlsiana"/>.</t>
      <dl>
        <dt>Value:</dt>
        <dd>
          <t>0x0200</t>
        </dd>
        <dt>Description:</dt>
        <dd>
          <t>MLKEM512</t>
        </dd>
        <dt>DTLS-OK:</dt>
        <dd>
          <t>Y</t>
        </dd>
        <dt>Recommended:</dt>
        <dd>
          <t>N</t>
        </dd>
        <dt>Reference:</dt>
        <dd>
          <t>This document</t>
        </dd>
        <dt>Comment:</dt>
        <dd>
          <t>FIPS 203 version of ML-KEM-512</t>
        </dd>
        <dt>Value:</dt>
        <dd>
          <t>0x0201</t>
        </dd>
        <dt>Description:</dt>
        <dd>
          <t>MLKEM768</t>
        </dd>
        <dt>DTLS-OK:</dt>
        <dd>
          <t>Y</t>
        </dd>
        <dt>Recommended:</dt>
        <dd>
          <t>N</t>
        </dd>
        <dt>Reference:</dt>
        <dd>
          <t>This document</t>
        </dd>
        <dt>Comment:</dt>
        <dd>
          <t>FIPS 203 version of ML-KEM-768</t>
        </dd>
        <dt>Value:</dt>
        <dd>
          <t>0x0202</t>
        </dd>
        <dt>Description:</dt>
        <dd>
          <t>MLKEM1024</t>
        </dd>
        <dt>DTLS-OK:</dt>
        <dd>
          <t>Y</t>
        </dd>
        <dt>Recommended:</dt>
        <dd>
          <t>N</t>
        </dd>
        <dt>Reference:</dt>
        <dd>
          <t>This document</t>
        </dd>
        <dt>Comment:</dt>
        <dd>
          <t>FIPS 203 version of ML-KEM-1024</t>
        </dd>
      </dl>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9180">
          <front>
            <title>Hybrid Public Key Encryption</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="K. Bhargavan" initials="K." surname="Bhargavan"/>
            <author fullname="B. Lipp" initials="B." surname="Lipp"/>
            <author fullname="C. Wood" initials="C." surname="Wood"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>This document describes a scheme for hybrid public key encryption (HPKE). This scheme provides a variant of public key encryption of arbitrary-sized plaintexts for a recipient public key. It also includes three authenticated variants, including one that authenticates possession of a pre-shared key and two optional ones that authenticate possession of a key encapsulation mechanism (KEM) private key. HPKE works for any combination of an asymmetric KEM, key derivation function (KDF), and authenticated encryption with additional data (AEAD) encryption function. Some authenticated variants may not be supported by all KEMs. We provide instantiations of the scheme using widely used and efficient primitives, such as Elliptic Curve Diffie-Hellman (ECDH) key agreement, HMAC-based key derivation function (HKDF), and SHA2.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9180"/>
          <seriesInfo name="DOI" value="10.17487/RFC9180"/>
        </reference>
        <reference anchor="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</refcontent>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="AVIRAM" target="https://mailarchive.ietf.org/arch/msg/tls/F4SVeL2xbGPaPB2GW_GkBbD_a5M/">
          <front>
            <title>[TLS] Combining Secrets in Hybrid Key Exchange in TLS 1.3</title>
            <author initials="" surname="Nimrod Aviram">
              <organization/>
            </author>
            <author initials="" surname="Benjamin Dowling">
              <organization/>
            </author>
            <author initials="" surname="Ilan Komargodski">
              <organization/>
            </author>
            <author initials="" surname="Kenny Paterson">
              <organization/>
            </author>
            <author initials="" surname="Eyal Ronen">
              <organization/>
            </author>
            <author initials="" surname="Eylon Yogev">
              <organization/>
            </author>
            <date year="2021" month="September" day="01"/>
          </front>
        </reference>
        <reference anchor="CDM23" target="https://eprint.iacr.org/2023/1933.pdf">
          <front>
            <title>Keeping Up with the KEMs: Stronger Security Notions for KEMs and automated analysis of KEM-based protocols</title>
            <author initials="C." surname="Cremers" fullname="Cas Cremers">
              <organization>CISPA Helmholtz Center for Information Security</organization>
            </author>
            <author initials="A." surname="Dax" fullname="Alexander Dax">
              <organization>CISPA Helmholtz Center for Information Security</organization>
            </author>
            <author initials="N." surname="Medinger" fullname="Niklas Medinger">
              <organization>CISPA Helmholtz Center for Information Security</organization>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <reference anchor="DOWLING">
          <front>
            <title>A Cryptographic Analysis of the TLS 1.3 Handshake Protocol</title>
            <author fullname="Benjamin Dowling" initials="B." surname="Dowling">
              <organization/>
            </author>
            <author fullname="Marc Fischlin" initials="M." surname="Fischlin">
              <organization/>
            </author>
            <author fullname="Felix Günther" initials="F." surname="Günther">
              <organization/>
            </author>
            <author fullname="Douglas Stebila" initials="D." surname="Stebila">
              <organization/>
            </author>
            <date month="July" year="2021"/>
          </front>
          <seriesInfo name="Journal of Cryptology" value="vol. 34, no. 4"/>
          <seriesInfo name="DOI" value="10.1007/s00145-021-09384-1"/>
          <refcontent>Springer Science and Business Media LLC</refcontent>
        </reference>
        <reference anchor="FO">
          <front>
            <title>Secure Integration of Asymmetric and Symmetric Encryption Schemes</title>
            <author fullname="Eiichiro Fujisaki" initials="E." surname="Fujisaki">
              <organization/>
            </author>
            <author fullname="Tatsuaki Okamoto" initials="T." surname="Okamoto">
              <organization/>
            </author>
            <date month="December" year="2011"/>
          </front>
          <seriesInfo name="Journal of Cryptology" value="vol. 26, no. 1, pp. 80-101"/>
          <seriesInfo name="DOI" value="10.1007/s00145-011-9114-1"/>
          <refcontent>Springer Science and Business Media LLC</refcontent>
        </reference>
        <reference anchor="HHK">
          <front>
            <title>A Modular Analysis of the Fujisaki-Okamoto Transformation</title>
            <author fullname="Dennis Hofheinz" initials="D." surname="Hofheinz">
              <organization/>
            </author>
            <author fullname="Kathrin Hövelmanns" initials="K." surname="Hövelmanns">
              <organization/>
            </author>
            <author fullname="Eike Kiltz" initials="E." surname="Kiltz">
              <organization/>
            </author>
            <date year="2017"/>
          </front>
          <seriesInfo name="Lecture Notes in Computer Science" value="pp. 341-371"/>
          <seriesInfo name="DOI" value="10.1007/978-3-319-70500-2_12"/>
          <seriesInfo name="ISBN" value="[&quot;9783319704999&quot;, &quot;9783319705002&quot;]"/>
          <refcontent>Springer International Publishing</refcontent>
        </reference>
        <reference anchor="HPKE">
          <front>
            <title>Hybrid Public Key Encryption</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="K. Bhargavan" initials="K." surname="Bhargavan"/>
            <author fullname="B. Lipp" initials="B." surname="Lipp"/>
            <author fullname="C. Wood" initials="C." surname="Wood"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>This document describes a scheme for hybrid public key encryption (HPKE). This scheme provides a variant of public key encryption of arbitrary-sized plaintexts for a recipient public key. It also includes three authenticated variants, including one that authenticates possession of a pre-shared key and two optional ones that authenticate possession of a key encapsulation mechanism (KEM) private key. HPKE works for any combination of an asymmetric KEM, key derivation function (KDF), and authenticated encryption with additional data (AEAD) encryption function. Some authenticated variants may not be supported by all KEMs. We provide instantiations of the scheme using widely used and efficient primitives, such as Elliptic Curve Diffie-Hellman (ECDH) key agreement, HMAC-based key derivation function (HKDF), and SHA2.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9180"/>
          <seriesInfo name="DOI" value="10.17487/RFC9180"/>
        </reference>
        <reference anchor="hybrid">
          <front>
            <title>Hybrid key exchange in TLS 1.3</title>
            <author fullname="Douglas Stebila" initials="D." surname="Stebila">
              <organization>University of Waterloo</organization>
            </author>
            <author fullname="Scott Fluhrer" initials="S." surname="Fluhrer">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Shay Gueron" initials="S." surname="Gueron">
              <organization>University of Haifa</organization>
            </author>
            <date day="7" month="October" year="2024"/>
            <abstract>
              <t>   Hybrid key exchange refers to using multiple key exchange algorithms
   simultaneously and combining the result with the goal of providing
   security even if all but one of the component algorithms is broken.
   It is motivated by transition to post-quantum cryptography.  This
   document provides a construction for hybrid key exchange in the
   Transport Layer Security (TLS) protocol version 1.3.

   Discussion of this work is encouraged to happen on the TLS IETF
   mailing list tls@ietf.org or on the GitHub repository which contains
   the draft: https://github.com/dstebila/draft-ietf-tls-hybrid-design.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-hybrid-design-11"/>
        </reference>
        <reference anchor="LUCKY13" target="https://ieeexplore.ieee.org/iel7/6547086/6547088/06547131.pdf">
          <front>
            <title>Lucky Thirteen: Breaking the TLS and DTLS record protocols</title>
            <author initials="N. J." surname="Al Fardan">
              <organization/>
            </author>
            <author initials="K. G." surname="Paterson">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RACCOON" target="https://raccoon-attack.com/">
          <front>
            <title>Raccoon Attack: Finding and Exploiting Most-Significant-Bit-Oracles in TLS-DH(E)</title>
            <author initials="R." surname="Merget">
              <organization/>
            </author>
            <author initials="M." surname="Brinkmann">
              <organization/>
            </author>
            <author initials="N." surname="Aviram">
              <organization/>
            </author>
            <author initials="J." surname="Somorovsky">
              <organization/>
            </author>
            <author initials="J." surname="Mittmann">
              <organization/>
            </author>
            <author initials="J." surname="Schwenk">
              <organization/>
            </author>
            <date year="2020" month="September"/>
          </front>
        </reference>
        <reference anchor="tlsiana">
          <front>
            <title>IANA Registry Updates for TLS and DTLS</title>
            <author fullname="Joseph A. Salowey" initials="J. A." surname="Salowey">
              <organization>Venafi</organization>
            </author>
            <author fullname="Sean Turner" initials="S." surname="Turner">
              <organization>sn3rd</organization>
            </author>
            <date day="3" month="November" year="2024"/>
            <abstract>
              <t>   This document updates the changes to TLS and DTLS IANA registries
   made in RFC 8447.  It adds a new value "D" for discouraged to the
   recommended column of the selected TLS registries and adds a
   "Comments" column to all active registries.

   This document updates the following RFCs: 3749, 5077, 4680, 5246,
   5705, 5878, 6520, 7301, and 8447.

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

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to Douglas Stebila for consultation on the
draft-ietf-tls-hybrid-design design.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+1b63IbN5b+j6fAKj9GyrIpUpJtWU4yQ4uSpdE1phNXampi
gU2QRNgXptFNidE6z7LPsk+23zlAk90kHTkz2anaqtEfqXE9ONfvHEBBEIjc
5JE+kltXl8HFyZW8TW0efFuoJC9ieaHnsjPKtI51ksthmsl3lz3Zbu5vCdXv
Z3p2JMM0SdIomgd5ZIM4mug4mOh5oMpZIlS5HqXZ/EiaZJgKMUjDRMXYcZCp
YR48NT9oPRO26MfGWpMm+XyKmecn705FUsR9nR2JAdY/EljG6sQW9kjmWaEF
KNsXWOg+zQZHQgYSC1v6jW2EUJlWOHJPh0Vm8vmWwLDJKEuLKVrfZSqx0zTL
5aWa60wuR810UmAvKZ8eKqUjdes9VjbJSL6hKdQeKxOhHXT8xeh82EyzETWr
LByjeZznU3u0u0ujqMnMdLMctksNu/0svbd6F/N3ad7I5OOij5mDkpO7n8fY
LbChyMdpRuzBQlIOiyhyoulqkw0yLY/9GtwNClRiflE55HAkeyoZ9NOHzrfc
p92pBkVWxGFW2LyIivgvI2pthmksRJJmMWbOmH1vT49ftg9b9Ofp+W1vr7WP
LW/Om+1W83lr73D3+rz3rkk9TXQJQXpTmd35/vxt5+qI981VNtL5kXyabbEd
Mc9OD3rf68u9h/6bW3X7eu/N+w9vJq/73Q/q2dWuW9Lbw9+g6n8HB+K+SUiA
kG2mcwstlmfzfmYGbB0nD+FYJSNNzQvboGVYLeVea68dtF4GrTY3LhjOP4H/
LTEZentt4iwdyM7MZCrePOS1Tn5SMbbqpvcRiNo86jxSibxIY/AmHdiJ2Tzq
QifJXN6CzMymyeYxJ3MVybdpoj/ZH6WJ/CEd6Rk6jrtXe/tHNSZeaD0l5n03
lfdQVJmPtYSXwdRenqXg29Jm5HVKmmXZzdAYCQ0jjuEgucZfiYrm1liZDqk7
6CuL1mmW5mmYRnZroz7oaWaSvGlUmLEqQB77u+2X+/vN6WBYl9P+0xI6bsrj
DMaT2UW7s5djZdd6sB06znu3HXmmo3icRvkv8hiGhzPTEc9LrQYHSx5s3rbT
lF31sLJlJ9IPYBAWq/b9cZteN+WVHhgS0crO12YS4bxrvf/Q3pjdvXl/eX79
ZuEC2q3Wi13barUPngXOfPYPDwIyoNObzYPa7eBlu+3GnJ1d1Ae9fHEY7Af7
7ZfBi9azVivY+9Deo3G3FydHpSfC95htGsYTdNlzsNt0jcFAWzMiE7j87vji
h/b+Zt9jtNYP0yjNyPVozfpmdPRi9/mzgxetw+f+9+Fui/5o77cXOlhay2UR
Tuby3dhkudbwsa8Rpjh4kNmQdyGL6NIfmQ4R2Fa1v6q8pThLYf61CZWRpyob
qGR9wEVTvmlWncHbzvHxzc315pNmKgzTNAlUnqtwQg6+7jrfun7Z4f4jeWoS
0hUm/4RYZHL6vCKo0QNnzdCEABzBa5MHN1g80tb706B7tn2y88Tp3pKqEoXr
XVdNMNEkk1glG04NtlS8ba0L7OqlcZqlMzuZb+y+Mnm+eVmaG47vdTKpe5gW
VJmAQWQNnNmKqmXD8PDg4EXfAJ4EQSBV3+ZgRS4E9MHKWMepHOihScAbB9WC
Z+29Rvn3i+eHDeav/2639g4krFRJm6NZwU9rcXcNAx4wErlzfraw1cgl81Qq
BE8903JKwvnZ40AAB7kADk1HYGwGg0gL8QUMG758UIRk2fj+AoJFrFbuk8I4
Dr/v6YDSbjsSd6Qh8hJ9zyBg2U90VXcXtd3lzCgZQfNMqH0MoH6N6f3I2DGP
iTVFZWNjsU07NeWZmrECMsaZ1w+3naS5N/+d+klFOmVvVQG+RHSiQ22tyubc
EZtRplif+3qeQgJuKQ5fwvM4szBhlWMmyAWT+3oDIU3iJRAXUKYLhGztJHLD
36QJmgkkUGuB2L/rvdtquN/y+ob/fnvy7Xfnb0+69HfvrHN5ufhD+BG9s5vv
LrvLv5Yzj2+urk6uu24yWmWtSWxddX7Yckq2dXP77vzmunO5RdqTk4IC1hfM
e2Brf0RDrn8K0ETR2wp40TAzfXxgzuvj2//57/aBfHz8D/jgvXb75ceP/uOw
/eIAH/djnbjd0gSccp9whHOhplOtMlpFRZEM1dTkKrINUnc7Tu8TOdbwwUJ8
+TfizN+P5Ff9cNo++MY30IFrjSXPao3Ms/WWtcmOiRuaNmyz4GatfYXTdXo7
P9S+S75XGr/6M5CglkH78M/fCFIhgqU6AVtsEblouzAHKx+/oEToo/cqC6HF
6UBHtq79xM/Jb6zFtmV3GhCNCceUCAKd5QTP8jGWgHCQ9gH0xfYIHkPega43
OtnekcE3cns6aUg72bkDkKEo1ld9A+uFUfOWI53ozO23WKUB1+l28r2a3Me0
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

-->

</rfc>
