<?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.5 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-connolly-cfrg-hpke-mlkem-00" category="info" consensus="true" submissionType="IRTF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.4 -->
  <front>
    <title abbrev="hpke-mlkem">ML-KEM for HPKE</title>
    <seriesInfo name="Internet-Draft" value="draft-connolly-cfrg-hpke-mlkem-00"/>
    <author fullname="Deirdre Connolly">
      <organization>SandboxAQ</organization>
      <address>
        <email>durumcrustulum@gmail.com</email>
      </address>
    </author>
    <date year="2024" month="February" day="28"/>
    <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 57?>

<t>This memo defines the ML-KEM-768-based and ML-KEM-1024-based
ciphersuites for HPKE (RFC9180). ML-KEM is believed to be secure even
against adversaries who possess a quantum computer.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://dconnolly.github.io/draft-connolly-cfrg-xwing-kem/draft-connolly-cfrg-xwing-kem.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-connolly-cfrg-hpke-mlkem/"/>.
      </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/dconnolly/draft-connolly-cfrg-xwing-kem"/>.</t>
    </note>
  </front>
  <middle>
    <?line 63?>

<section anchor="introduction">
      <name>Introduction</name>
      <section anchor="motivation">
        <name>Motivation</name>
        <t>The final draft for ML-KEM is expected in 2024. For parties that must
move to exclusively post-quantum algorithms, having a pure PQ choice for
public-key hybrid encryption is desireable. HPKE is the leading modern
protocol for public-key encryption, and ML-KEM as a post-quantum
IND-CCA2-secure KEM fits nicely into HPKE's design. Supporting multiple
security levels for ML-KEM allow a spectrum of use cases including
settings where NIST PQ security category 5 is required.</t>
      </section>
      <section anchor="S-notauth">
        <name>Not an authenticated KEM</name>
        <t>ML-KEM is a plain KEM that does not support the static-ephemeral key
exchange that allows HPKE based on Diffie-Hellman based KEMs its
(optional) authenticated modes.</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="construction">
      <name>Construction</name>
      <t>We construct 'wrapper' KEMs based on ML-KEM to bind the encapsulated
shared secret ciphertext into the shared secret value, such that the
final KEM has similar binding security properties as the original DHKEM
HPKE was designed around.</t>
      <t>The encapsulation and decapsulation keys are computed, serialized, and
deserialized the same as in <xref target="FIPS203"/>.</t>
      <t>We use HKDF-SHA256 and HKDF-SHA512 as the HPKE KDFs and AES-128-GCM and
AES-256-GCM as the AEADs for ML-KEM-768 and ML-KEM-1024 respectively.</t>
      <section anchor="encap-and-decap">
        <name>Encap and Decap</name>
        <t>~~
def Encap(pkR):
  ss, ct = MLKEM.Encaps(pkR)</t>
        <t>shared_secret = ExtractAndExpand(ss, ct)</t>
        <t>return shared_secret, ct
~~</t>
        <t>~~
def Decap(enc, skR):
  ss, ct = MLKEM.Decaps(enc, skR)</t>
        <t>shared_secret = ExtractAndExpand(ss, ct)</t>
        <t>return shared_secret, ct
~~</t>
      </section>
      <section anchor="authencap-and-authdecap">
        <name>AuthEncap and AuthDecap</name>
        <t>HPKE-ML-KEM is not an authenticeted KEM and does not support AuthEncap()
or AuthDecap(), see <xref target="S-notauth"/>.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>HPKE's IND-CCA2 security relies upon the IND-CCA2 security of the
underlying KEM and AEAD schemes. ML-KEM is believed to be IND-CCA secure
via multiple analyses.</t>
      <t>The HPKE key schedule is independent of the encapsulated KEM shared
secret ciphertext of the ciphersuite KEM, and dependent on the shared
secret produced by the KEM. If HPKE had committed to the encapsulated
shared secret ciphertext, we wouldn't have to worry about the binding
properties of the ciphersuite KEM's X-BIND-K-CT properties. These
computational binding properties for KEMs were formalized in <xref target="CDM23"/>.</t>
      <t>ML-KEM, unlike DHKEM, is also an implicitly-rejecting instantiation of
the Fujisaki-Okamoto transform, meaning the ML-KEM output shared secret
may be computed differently in case of decryption failure, that reults
in different binding properties, such as the lack of X-BIND-CT-PK and
X-BIND-CT-K completely.</t>
      <t>The DHKEM construction in HPKE provides MAL-BIND-K-PK and MAL-BIND-K-CT
security (the shared secret 'binds' or uniquely determines the
encapsulation key and the encapsualted shared secret ciphertext), where
the adversary is able to create the key pairs any way they like in
addition to the key generation. ML-KEM as specified provides
LEAK-BIND-PK,K-CT security, where the involved key pairs are output by
the key generation algorithm of the KEM and then leaked to the
adversary. LEAK-BIND-PK,K-CT is a weaker property than the DHKEM
properties as it is not resistant in the presence of an actively
malicious adversary, and requires both the shared secret _and_the public
key together to uniquely bind the ciphertext, so its shared secret alone
is insufficient.</t>
      <t>This results in a wrapper construction around ML-KEM to bind to the
encapsulated shared secret ciphertext as the <tt>kem_context</tt> provided to
<tt>ExtractAndExpand()</tt>. This binds the final <tt>shared_secret</tt> (K) to the
encapsulated shared secret ciphertext (CT), achieving
MAL-BIND-K-CT. ML-KEM already is MAL-BIND-K-PK as the hash of the
encapsulation key (PK) is an input the computation of the shared secret
(K). Together this wrapper KEM matches the binding properties of HPKE's
default KEM construction DHKEM in being MAL-BIND-K-CT and MAL-BIND-K-PK.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests/registers two new entries to the "HPKE KEM
Identifiers" registry.</t>
      <dl>
        <dt>Value:</dt>
        <dd>
          <t>0x0070 (please)</t>
        </dd>
        <dt>KEM:</dt>
        <dd>
          <t>ML-KEM-768</t>
        </dd>
        <dt>Nsecret:</dt>
        <dd>
          <t>32</t>
        </dd>
        <dt>Nenc:</dt>
        <dd>
          <t>1088</t>
        </dd>
        <dt>Npk:</dt>
        <dd>
          <t>1184</t>
        </dd>
        <dt>Nsk:</dt>
        <dd>
          <t>2400</t>
        </dd>
        <dt>Auth:</dt>
        <dd>
          <t>no</t>
        </dd>
        <dt>Reference:</dt>
        <dd>
          <t>This document</t>
        </dd>
        <dt>Value:</dt>
        <dd>
          <t>0x0080 (please)</t>
        </dd>
        <dt>KEM:</dt>
        <dd>
          <t>ML-KEM-1024</t>
        </dd>
        <dt>Nsecret:</dt>
        <dd>
          <t>32</t>
        </dd>
        <dt>Nenc:</dt>
        <dd>
          <t>1568</t>
        </dd>
        <dt>Npk:</dt>
        <dd>
          <t>1568</t>
        </dd>
        <dt>Nsk:</dt>
        <dd>
          <t>3168</t>
        </dd>
        <dt>Auth:</dt>
        <dd>
          <t>no</t>
        </dd>
        <dt>Reference:</dt>
        <dd>
          <t>This document</t>
        </dd>
      </dl>
    </section>
  </middle>
  <back>
    <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>*** BROKEN REFERENCE ***</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </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="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>
      </references>
    </references>
    <?line 239?>

<section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank Cas Cremers for their input.</t>
    </section>
    <section anchor="change-log">
      <name>Change log</name>
      <ul empty="true">
        <li>
          <t><strong>RFC Editor's Note:</strong> Please remove this section prior to publication
of a final version of this document.</t>
        </li>
      </ul>
      <t>TODO</t>
      <section anchor="since-draft-connolly-cfrg-hpke-mlkem-00">
        <name>Since draft-connolly-cfrg-hpke-mlkem-00</name>
        <t>TODO</t>
      </section>
    </section>
    <section anchor="test-vectors">
      <name>Test Vectors</name>
      <t>This section contains test vectors formatted similary to that which are
found in <xref target="RFC9180"/>, with two changes.  First, we only provide vectors
for the non-authenticated modes of operation.  Secondly, as ML-KEM
encapsulation does not involve an ephemeral keypair, we omit the ikmE,
skEm, pkEm entries and provide an ier entry instead.  The value of ier
is the randomness used to encapsulate, so <tt>ier[0:32]</tt> is the seed that is
fed to H in the first step of ML-KEM encapsulation in <xref target="FIPS203"/>.</t>
      <section anchor="ml-kem-768-hkdf-sha256-aes-128-gcm">
        <name>ML-KEM-768, HKDF-SHA256, AES-128-GCM</name>
        <t>TODO</t>
      </section>
      <section anchor="ml-kem-1024-hkdf-sha512-aes-256-gcm">
        <name>ML-KEM-1024, HKDF-SHA512, AES-256-GCM</name>
        <t>TODO</t>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
5vsLup//b2oLdX5zHAAA

-->

</rfc>
