<?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-04" 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-04"/>
    <author fullname="Deirdre Connolly">
      <organization>SandboxAQ</organization>
      <address>
        <email>durumcrustulum@gmail.com</email>
      </address>
    </author>
    <date year="2024" month="November" day="05"/>
    <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; 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>
        <!-- TODO: extrapolate on Kemmy Schmidt implications; in the mlkem document, -->
<!-- strongly encourage implementers to use the seed variant of FIPS 203 to -->
<!-- achieve strong binding properties -->

</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 446?>

<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+1b61IjR5b+X0+Rg38MeFVCEnQ3DXbPqBE0LFe32nY4JsZN
qpSS0qqLXFklkFn8LPss+2T7nZNZpSpJbdoz3onYiOEPVF5Pnut3Tia+73uZ
zkJ1KLauLv2Lkytxm5jM/yaXcZZH4kItRHecKhWpOBOjJBUfLvui3dzb8uRg
kKr5oQiSOE7CcOFnofGjcKoif6oWvixmeYHM1DhJF4dCx6PE84ZJEMsIOw5T
Ocr85+b7rX3P5INIG6OTOFvMMPP85MOpF+fRQKWH3hDrH3pYxqjY5OZQZGmu
PFC252Gh+yQdHnrCF1jY0G9s43kyVRJH7qsgT3W22PIwbDpOk3yG1g+pjM0s
STNxKRcqFctRcxXn2EuI54cKYUnd+h4r63gs3tEUao+kDtEOOv6qVTZqJumY
mmUaTNA8ybKZOdzdpVHUpOeqWQzbpYbdQZrcG7WL+bs0b6yzST7AzGHByd3P
Y+wW2JBnkyQl9mAhIUZ5GFrR9JROh6kSx24N7gYFMta/yAxyOBR9GQ8HyUP3
G+5T9lTDPM2jIM1Nlod59NcxtTaDJPK8OEkjzJwz+96fHr9uH7Toz9Pz236n
tYctb86b7VbzZatzsHt93v/QpJ4mujyP9KYyu/vd+fvu1SHvm8l0rLJD8Tzb
IjNmnp3u979Tl52Hwbtbefu28+77j++mbwe9j/LF1a5d0tnD36DqfwcHooGO
SYCQbaoyAy0WZ4tBqodsHScPwUTGY0XNpW3QMqyWotPqtP3Wa7/V5saS4fzj
u98Ck6G31zpKk6HoznUqo81D3qr4Jxlhq15yH4KozaPOQxmLiyQCb5KhmerN
oy5UHC/ELchMTRJvHnOykKF4n8Tqk/1hEosfkrGao+O4d9XZO6wx8UKpGTHv
25m4h6KKbKIEvAym9rM0Ad+WNiOuE9Isw26GxghoGHEMB8kU/opluDDaiGRE
3f5AGrTO0iRLgiQ0Wxv1Qc1SHWdNLYOUVQHy2Nttv97ba86Go7qc9p6X0HFT
HKcwntSU7dZejqVZ68F26Djv33bFmQqjSRJmv4hjGB7OTEc8L7QaHCx4sHnb
blP05MPKlt1QPYBBWKza98dtet0UV2qoSUQrO1/raYjzrvX+Q3tjdu/m+8vz
63elC2i3Wq92TavV3n/hW/PZO9j3yYBObzYParf91+22HXN2dlEf9PrVgb/n
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
8c9GRPuPaZv/u8LhtKb3v2Gx3iqUOAAA

-->

</rfc>
