<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-irtf-cfrg-concrete-hybrid-kems-00" category="info" consensus="true" submissionType="IRTF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title abbrev="concrete-hybrid-kems">Concrete Hybrid PQ/T Key Encapsulation Mechanisms</title>
    <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-concrete-hybrid-kems-00"/>
    <author fullname="Deirdre Connolly">
      <organization>SandboxAQ</organization>
      <address>
        <email>durumcrustulum@gmail.com</email>
      </address>
    </author>
    <author fullname="Richard Barnes">
      <organization>Cisco</organization>
      <address>
        <email>rlb@ipv.sx</email>
      </address>
    </author>
    <date year="2025" month="July" day="07"/>
    <area>IRTF</area>
    <workgroup>Crypto Forum</workgroup>
    <keyword>post quantum</keyword>
    <keyword>kem</keyword>
    <keyword>PQ</keyword>
    <keyword>hpke</keyword>
    <keyword>hybrid encryption</keyword>
    <abstract>
      <?line 99?>

<t>PQ/T Hybrid Key Encapsulation Mechanisms (KEMs) combine "post-quantum"
cryptographic algorithms, which are safe from attack by a quantum computer,
with "traditional" algorithms, which are not.  CFRG has developed a general
framework for creating hybrid KEMs.  In this document, we define concrete
instantiations of this framework to illustrate certain properties of the
framework and simplify implementors' choices.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://cfrg.github.io/draft-irtf-cfrg-concrete-hybrid-kems/draft-irtf-cfrg-concrete-hybrid-kems.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-irtf-cfrg-concrete-hybrid-kems/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Crypto Forum Research Group mailing list (<eref target="mailto:cfrg@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/search/?email_list=cfrg"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/cfrg/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/cfrg/draft-irtf-cfrg-concrete-hybrid-kems"/>.</t>
    </note>
  </front>
  <middle>
    <?line 108?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>PQ/T Hybrid Key Encapsulation Mechanisms (KEMs) combine "post-quantum"
cryptographic algorithms, which are safe from attack by a quantum computer,
with "traditional" algorithms, which are not.  Such KEMs are secure against a
quantum attacker as long as the PQ algorithm is secure, and remain secure
against traditional attackers even if the PQ algorithm is not secure.</t>
      <t><xref target="HYBRID-KEMS"/> defines a general framework for
creating hybrid KEMs. It includes multiple specific mechanisms for combining
a PQ algorithm with a traditional algorithm, with different performance
properties and security requirements for the underlying algorithms.</t>
      <t>In this document, we describe instances of these different specific
combiners, with specific choices for the underlying algorithms.  The choices
described here illustrate the security analysis required to make choices that
meet the requirements of the general framework, and can serve as a baseline
for application designers.  We also provide test vectors for these instances
so that implementors can verify the correctness of their implementations.</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 make extensive use of the terminology in <xref target="HYBRID-KEMS"/>.</t>
    </section>
    <section anchor="concrete-nominal-group-and-kem-instances">
      <name>Concrete Nominal Group and KEM Instances</name>
      <t>This document introduces concrete hybrid KEM instances that in turn depend on
concrete KEM and nominal group instances. This section introduces the nominal
groups and KEM instances used for concrete hybrid KEM instances, specified in
line with the abstraction from <xref target="HYBRID-KEMS"/>. <xref target="nominal-groups"/> defines
the concrete nominal groups, and <xref target="nominal-kems"/> defines the nominal KEMs.</t>
      <section anchor="nominal-groups">
        <name>Nominal Groups</name>
        <t>This section specifies concrete nominal groups that implement the abstraction
in <xref target="HYBRID-KEMS"/>. It includes groups based on the NIST curves P-256 and
P-384, as well as a group based on Curve25519.</t>
        <section anchor="group-nist">
          <name>P-256 and P-384 Nominal Groups</name>
          <t>The NIST P-256 and P-384 elliptic curves are defined in <xref target="SP800-186"/>.  They
are widely used for key agreement and digital signature.  In this section, we
define how they meet the Nominal Group interface described in
<xref target="HYBRID-KEMS"/>.</t>
          <t>Group elements are elliptic curve points, represented as byte strings in the
compressed representation defined by the Elliptic-Curve-Point-to-Octet-String
function in <xref target="SEC1"/>.</t>
          <t>The Nominal Group algorithms are the same for both groups:</t>
          <ul spacing="normal">
            <li>
              <t><tt>Exp(p, x) -&gt; q</tt>: This function computes scalar multiplication between the
input element (or point) <tt>p</tt> and the scalar <tt>x</tt>, according to the group law
for the curve specified in <xref target="SP800-186"/>.</t>
            </li>
            <li>
              <t><tt>RandomScalar(seed) -&gt; k</tt>: Implemented by converting <tt>seed</tt> to an integer
using the Octet-String-to-Integer function in <xref target="SEC1"/>, and then reducing
the resulting integer modulo the group order.</t>
            </li>
            <li>
              <t><tt>ElementToSharedSecret(p) -&gt; ss</tt>: The shared secret is the X coordinate of
the elliptic curve point <tt>p</tt>, encoded as an <tt>Nss</tt>-byte string using the
Field-Element-to-Octet-String function in <xref target="SEC1"/>.</t>
            </li>
          </ul>
          <t>The group constants for the P-256 group are as follows:</t>
          <ul spacing="normal">
            <li>
              <t><tt>Nseed</tt>: 48</t>
            </li>
            <li>
              <t><tt>Nscalar</tt>: 32</t>
            </li>
            <li>
              <t><tt>Nelem</tt>: 33</t>
            </li>
            <li>
              <t><tt>Nss</tt>: 32</t>
            </li>
          </ul>
          <t>The group constants for the P-384 group are as follows:</t>
          <ul spacing="normal">
            <li>
              <t><tt>Nseed</tt>: 72</t>
            </li>
            <li>
              <t><tt>Nscalar</tt>: 48</t>
            </li>
            <li>
              <t><tt>Nelem</tt>: 49</t>
            </li>
            <li>
              <t><tt>Nss</tt>: 48</t>
            </li>
          </ul>
        </section>
        <section anchor="group-curve25519">
          <name>Curve25519 Nominal Group</name>
          <t>The following functions for the Curve25519 nominal group are defined:</t>
          <ul spacing="normal">
            <li>
              <t><tt>Exp(p, x) -&gt; q</tt>: Implemented by X25519(x, p) from <xref target="RFC7748"/>.</t>
            </li>
            <li>
              <t><tt>RandomScalar(seed) -&gt; k</tt>: Implemented by sampling and outputting 32 random
bytes from a cryptographically secure pseudorandom number generator.</t>
            </li>
            <li>
              <t><tt>ElementToSharedSecret(p) -&gt; ss</tt>: Implemented by the identity function,
i.e., by outputting P.</t>
            </li>
          </ul>
          <t>The following constants are also defined.</t>
          <ul spacing="normal">
            <li>
              <t><tt>Nseed</tt>: 32</t>
            </li>
            <li>
              <t><tt>Nscalar</tt>: 32</t>
            </li>
            <li>
              <t><tt>Nelem</tt>: 32</t>
            </li>
            <li>
              <t><tt>Nss</tt>: 32</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="nominal-kems">
        <name>Concrete KEM Instances</name>
        <t>This section specifies concrete KEM instances that implement the KEM
abstraction from <xref target="HYBRID-KEMS"/>.</t>
        <section anchor="mlkem">
          <name>ML-KEM-768 and ML-KEM-1024</name>
          <t>The ML-KEM-768 and ML-KEM-1024 KEMs are defined in <xref target="FIPS203"/>.  The
algorithms defined in that specification map to the KEM abstraction in
<xref target="HYBRID-KEMS"/> as follows:</t>
          <ul spacing="normal">
            <li>
              <t><tt>GenerateKeyPair() -&gt; (ek, dk)</tt>: Implemented as KeyGen in Section 7.1 of
<xref target="FIPS203"/>.</t>
            </li>
            <li>
              <t><tt>DeriveKeyPair(seed) -&gt; (ek, dk)</tt>: Implemented as
KeyGen_internal(seed[0:32], seed[32:64]), where KeyGen_internal is defined
in Section 6 of <xref target="FIPS203"/>.</t>
            </li>
            <li>
              <t><tt>Encaps(ek) -&gt; (ct, ss)</tt>: Implemented as Encaps in Section 7.2 of
<xref target="FIPS203"/>.</t>
            </li>
            <li>
              <t><tt>Decaps(dk, ct) -&gt; ss</tt>: Implemented as Encaps in Section 7.3 of
<xref target="FIPS203"/>.</t>
            </li>
          </ul>
          <t>The KEM constants for ML-KEM-768 are as follows:</t>
          <ul spacing="normal">
            <li>
              <t><tt>Nseed</tt>: 64</t>
            </li>
            <li>
              <t><tt>Nek</tt>: 1216</t>
            </li>
            <li>
              <t><tt>Ndk</tt>: 32</t>
            </li>
            <li>
              <t><tt>Nct</tt>: 1120</t>
            </li>
            <li>
              <t><tt>Nss</tt>: 32</t>
            </li>
          </ul>
          <t>The KEM constants for ML-KEM-1024 are as follows:</t>
          <ul spacing="normal">
            <li>
              <t><tt>Nseed</tt>: 64</t>
            </li>
            <li>
              <t><tt>Nek</tt>: 1629</t>
            </li>
            <li>
              <t><tt>Ndk</tt>: 32</t>
            </li>
            <li>
              <t><tt>Nct</tt>: 1629</t>
            </li>
            <li>
              <t><tt>Nss</tt>: 32</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="prgs">
        <name>Concrete PRG instances</name>
        <t>This section specifies concrete PRG instances that implement the PRG
abstraction from <xref target="HYBRID-KEMS"/> and meet the required security definitions.</t>
        <section anchor="shake256">
          <name>SHAKE256</name>
          <t>SHAKE256 is an extendable-output function (XOF) defined in the SHA-3
specification <xref target="FIPS202"/>.  It can be used as a PRG for arbitrary values of
<tt>Nout</tt>.  When SHAKE256 is used as the PRG component in a hybrid KEM, it is
implcit that <tt>Nout == KEM_T.Nseed + KEM_PQ.Nseed</tt> or <tt>Nout == Group_T.Nseed +
KEM_PQ.Nseed</tt> as appropriate.</t>
        </section>
      </section>
      <section anchor="kdfs">
        <name>Concrete KDF instances</name>
        <t>This section specifies concrete KDF instances that implement the KDF
abstraction from <xref target="HYBRID-KEMS"/> and meet the required security definitions.</t>
        <section anchor="sha-3">
          <name>SHA-3</name>
          <t>The SHA-3 hash function is defined in <xref target="FIPS202"/>.  It produces a 32-byte
output, so it is appropriate for use in hybrid KEMs with <tt>Nss = 32</tt>.</t>
        </section>
      </section>
    </section>
    <section anchor="concrete-hybrid-kem-instances">
      <name>Concrete Hybrid KEM Instances</name>
      <t>This section instantiates the following concrete KEMs:</t>
      <dl>
        <dt>QSF-MLKEM768-P256-SHA3256-SHAKE256:</dt>
        <dd>
          <t>A hybrid KEM composing ML-KEM-768 and P-256 using the QSF scheme, with
SHAKE256 as the PRG and SHA3-256 as the KDF.</t>
        </dd>
        <dt>QSF-MLKEM768-X25519-SHA3256-SHAKE256:</dt>
        <dd>
          <t>A hybrid KEM composing ML-KEM-768 and Curve25519 using the QSF scheme, with
SHAKE256 as the PRG and SHA3-256 as the KDF. This construction is identical
to the X-Wing construction in <xref target="XWING-SPEC"/>.</t>
        </dd>
        <dt>QSF-MLKEM1024-P384-SHA3256-SHAKE256:</dt>
        <dd>
          <t>A hybrid KEM composing ML-KEM-1024 and P-384 using the QSF scheme, with
SHAKE256 as the PRG and SHA3-256 as the KDF.</t>
        </dd>
      </dl>
      <t>Each instance specifies the PQ and traditional KEMs being combined, the
combiner construction from <xref target="HYBRID-KEMS"/>, the <tt>label</tt> to use for domain
separation in the combiner function, as well as the PRG and KDF functions to
use throughout.</t>
      <section anchor="qsf-p256">
        <name>QSF-MLKEM768-P256-SHA3256-SHAKE256</name>
        <t>This hybrid KEM is heavily based on <xref target="XWING"/>, using the QSF combiner from
<xref target="HYBRID-KEMS"/>. In particular, it has the same exact design but uses P-256
instead of X25519 as the the traditional component of the algorithm. It has
the following parameters.</t>
        <ul spacing="normal">
          <li>
            <t><tt>Group_T</tt>: P-256 <xref target="group-nist"/></t>
          </li>
          <li>
            <t><tt>KEM_PQ</tt>: ML-KEM-768 <xref target="mlkem"/></t>
          </li>
          <li>
            <t><tt>PRG</tt>: SHAKE-256 <xref target="FIPS202"/></t>
          </li>
          <li>
            <t><tt>KDF</tt>: SHA3-256 <xref target="FIPS202"/></t>
          </li>
          <li>
            <t><tt>Label</tt>: <tt>QSF-P256-MLKEM768-SHAKE256-SHA3256</tt></t>
          </li>
        </ul>
        <t>The KEM constants for the resulting hybrid KEM are as follows:</t>
        <ul spacing="normal">
          <li>
            <t><tt>Nseed</tt>: 32</t>
          </li>
          <li>
            <t><tt>Nek</tt>: 1217</t>
          </li>
          <li>
            <t><tt>Ndk</tt>: 32</t>
          </li>
          <li>
            <t><tt>Nct</tt>: 1121</t>
          </li>
          <li>
            <t><tt>Nss</tt>: 32</t>
          </li>
        </ul>
      </section>
      <section anchor="xwing">
        <name>QSF-MLKEM768-X25519-SHA3256-SHAKE256</name>
        <t>This hybrid KEM is identical to X-Wing <xref target="XWING-SPEC"/>. It has the following
parameters.</t>
        <ul spacing="normal">
          <li>
            <t><tt>Group_T</tt>: Curve25519 <xref target="group-curve25519"/></t>
          </li>
          <li>
            <t><tt>KEM_PQ</tt>: ML-KEM-768 <xref target="mlkem"/></t>
          </li>
          <li>
            <t><tt>PRG</tt>: SHAKE-256 <xref target="FIPS202"/></t>
          </li>
          <li>
            <t><tt>KDF</tt>: SHA3-256 <xref target="FIPS202"/></t>
          </li>
          <li>
            <t><tt>Label</tt>: <tt>\.//^\</tt></t>
          </li>
        </ul>
        <t>(This label does not follow the same pattern as the other KEMs here, but was
chosen for compatibility with the X-Wing specification.)</t>
        <t>The following constants for the hybrid KEM are also defined:</t>
        <ul spacing="normal">
          <li>
            <t><tt>Nseed</tt>: 32</t>
          </li>
          <li>
            <t><tt>Nek</tt>: 1216</t>
          </li>
          <li>
            <t><tt>Ndk</tt>: 32</t>
          </li>
          <li>
            <t><tt>Nct</tt>: 1120</t>
          </li>
          <li>
            <t><tt>Nss</tt>: 32</t>
          </li>
        </ul>
      </section>
      <section anchor="qsf-p384">
        <name>QSF-MLKEM1024-P384-SHA3256-SHAKE256</name>
        <t>QSF-MLKEM1024-P384-SHA3256-SHAKE256 has the following parameters:</t>
        <ul spacing="normal">
          <li>
            <t><tt>Group_T</tt>: P-384 <xref target="group-nist"/></t>
          </li>
          <li>
            <t>`KEM_PQ: ML-KEM-1024 <xref target="mlkem"/></t>
          </li>
          <li>
            <t><tt>PRG</tt>: SHAKE-256 <xref target="FIPS202"/></t>
          </li>
          <li>
            <t><tt>KDF</tt>: HKDF-SHA-256 <xref target="RFC5869"/></t>
          </li>
          <li>
            <t><tt>Label</tt>: <tt>QSF-P384-MLKEM1024-SHAKE256-SHA3256</tt></t>
          </li>
        </ul>
        <t>The following constants for the hybrid KEM are also defined:</t>
        <ul spacing="normal">
          <li>
            <t><tt>Nseed</tt>: 32</t>
          </li>
          <li>
            <t><tt>Nek</tt>: 1629</t>
          </li>
          <li>
            <t><tt>Ndk</tt>: 32</t>
          </li>
          <li>
            <t><tt>Nct</tt>: 1629</t>
          </li>
          <li>
            <t><tt>Nss</tt>: 32</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>[[ TODO ]]</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="FIPS202">
          <front>
            <title>SHA-3 standard :: permutation-based hash and extendable-output functions</title>
            <author>
              <organization/>
            </author>
            <date year="2015"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.fips.202"/>
          <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="SP800-186">
          <front>
            <title>Recommendations for Discrete Logarithm-based Cryptography:: Elliptic Curve Domain Parameters</title>
            <author fullname="Lily Chen" initials="L." surname="Chen">
              <organization/>
            </author>
            <author fullname="Dustin Moody" initials="D." surname="Moody">
              <organization/>
            </author>
            <author fullname="Andrew Regenscheid" initials="A." surname="Regenscheid">
              <organization/>
            </author>
            <author fullname="Angela Robinson" initials="A." surname="Robinson">
              <organization/>
            </author>
            <author fullname="Karen Randall" initials="K." surname="Randall">
              <organization/>
            </author>
            <date month="February" year="2023"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.sp.800-186"/>
          <refcontent>National Institute of Standards and Technology</refcontent>
        </reference>
        <reference anchor="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>
        <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="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="RFC5869">
          <front>
            <title>HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
            <author fullname="H. Krawczyk" initials="H." surname="Krawczyk"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <date month="May" year="2010"/>
            <abstract>
              <t>This document specifies a simple Hashed Message Authentication Code (HMAC)-based key derivation function (HKDF), which can be used as a building block in various protocols and applications. The key derivation function (KDF) is intended to support a wide range of applications and requirements, and is conservative in its use of cryptographic hash functions. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5869"/>
          <seriesInfo name="DOI" value="10.17487/RFC5869"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="ANSIX9.62">
          <front>
            <title>Public Key Cryptography for the Financial Services Industry: the Elliptic Curve Digital Signature Algorithm (ECDSA)</title>
            <author>
              <organization>ANS</organization>
            </author>
            <date year="2005" month="November"/>
          </front>
          <seriesInfo name="ANS" value="X9.62-2005"/>
        </reference>
        <reference anchor="SCHMIEG2024" target="https://eprint.iacr.org/2024/523.pdf">
          <front>
            <title>Unbindable Kemmy Schmidt: ML-KEM is neither MAL-BIND-K-CT nor MAL-BIND-K-PK</title>
            <author initials="S." surname="Schmieg" fullname="Sophie Schmieg">
              <organization/>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="SEC1" target="https://secg.org/sec1-v2.pdf">
          <front>
            <title>Elliptic Curve Cryptography, Standards for Efficient Cryptography Group, ver. 2</title>
            <author>
              <organization/>
            </author>
            <date year="2009"/>
          </front>
        </reference>
        <reference anchor="XWING" target="https://eprint.iacr.org/2024/039.pdf">
          <front>
            <title>X-Wing: The Hybrid KEM You’ve Been Looking For</title>
            <author>
              <organization/>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="XWING-SPEC">
          <front>
            <title>X-Wing: general-purpose hybrid post-quantum KEM</title>
            <author fullname="Deirdre Connolly" initials="D." surname="Connolly">
              <organization>SandboxAQ</organization>
            </author>
            <author fullname="Peter Schwabe" initials="P." surname="Schwabe">
              <organization>MPI-SP &amp; Radboud University</organization>
            </author>
            <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
              <organization>Cloudflare</organization>
            </author>
            <date day="3" month="May" year="2025"/>
            <abstract>
              <t>   This memo defines X-Wing, a general-purpose post-quantum/traditional
   hybrid key encapsulation mechanism (PQ/T KEM) built on X25519 and ML-
   KEM-768.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-connolly-cfrg-xwing-kem-07"/>
        </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="KSMW2024" target="https://eprint.iacr.org/2024/1233">
          <front>
            <title>Binding Security of Implicitly-Rejecting KEMs and Application to BIKE and HQC</title>
            <author initials="J." surname="Kraemer">
              <organization/>
            </author>
            <author initials="P." surname="Struck">
              <organization/>
            </author>
            <author initials="M." surname="Weishaupl">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <?line 373?>

<section anchor="test-vectors">
      <name>Test Vectors</name>
      <t>[[ TODO ]]</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>[[ TODO ]]</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
bPlvh6Fb45guAAA=

-->

</rfc>
