<?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-ietf-lamps-cms-kyber-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.4 -->
  <front>
    <title abbrev="ML-KEM in CMS">Use of ML-KEM in the Cryptographic Message Syntax (CMS)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-kyber-03"/>
    <author initials="J." surname="Prat" fullname="Julien Prat">
      <organization>CryptoNext Security</organization>
      <address>
        <postal>
          <street>16, Boulevard Saint-Germain</street>
          <city>Paris</city>
          <code>75005</code>
          <country>France</country>
        </postal>
        <email>julien.prat@cryptonext-security.com</email>
      </address>
    </author>
    <author initials="M." surname="Ounsworth" fullname="Mike Ounsworth">
      <organization abbrev="Entrust">Entrust Limited</organization>
      <address>
        <postal>
          <street>2500 Solandt Road -- Suite 100</street>
          <city>Ottawa, Ontario</city>
          <code>K2K 3G5</code>
          <country>Canada</country>
        </postal>
        <email>mike.ounsworth@entrust.com</email>
      </address>
    </author>
    <author initials="D." surname="Van Geest" fullname="Daniel Van Geest">
      <organization>CryptoNext Security</organization>
      <address>
        <postal>
          <street>16, Boulevard Saint-Germain</street>
          <city>Paris</city>
          <code>75005</code>
          <country>France</country>
        </postal>
        <email>daniel.vangeest.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2024"/>
    <area>Security</area>
    <workgroup>LAMPS</workgroup>
    <keyword>Key Encapsulation Mechanism (KEM)</keyword>
    <keyword>KEMRecipientInfo</keyword>
    <keyword>ML-KEM</keyword>
    <keyword>Kyber</keyword>
    <abstract>
      <?line 92?>

<t>The Module-Lattice-based Key-Encapsulation Mechanism (ML-KEM) Algorithm is a one-pass (store-and-forward) cryptographic mechanism for an originator to securely send keying material to a recipient using the recipient's ML-KEM public key. Three parameters sets for the ML-KEM Algorithm are specified by NIST in <xref target="FIPS203-ipd"/> [EDNOTE: Change to <xref target="FIPS203"/> when it is published]. In order of increasing security strength (and decreasing performance), these parameter sets are ML-KEM-512, ML-KEM-768, and ML-KEM-1024. This document specifies the conventions for using ML-KEM with the Cryptographic Message Syntax (CMS) using KEMRecipientInfo as specified in <xref target="I-D.ietf-lamps-cms-kemri"/>.</t>
      <!-- End of Abstract -->



    </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-ietf-lamps-cms-kyber/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Limited Additional Mechanisms for PKIX and SMIME (lamps) Working Group mailing list (<eref target="mailto:spasm@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/spasm/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/spasm/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/lamps-wg/kyber-certificates"/>.</t>
    </note>
  </front>
  <middle>
    <?line 98?>

<section anchor="sec-introduction">
      <name>Introduction</name>
      <t>ML-KEM is an IND-CCA2-secure key-encapsulation mechanism (KEM) standardized in <xref target="FIPS203"/> by the US NIST PQC Project <xref target="NIST-PQ"/>.</t>
      <t>Native support for Key Encapsulation Mechanisms (KEMs) was added to CMS in <xref target="I-D.ietf-lamps-cms-kemri"/>, which defines the KEMRecipientInfo structure for the use of KEM algorithms for the CMS enveloped-data content type, the CMS authenticated-data content type, and the CMS authenticated-enveloped-data content type. This document specifies the direct use of ML-KEM in the KEMRecipientInfo structure in CMS using each of the three parameter sets from <xref target="FIPS203"/>, namely MK-KEM-512, ML-KEM-768, and ML-KEM-1024.  It does not address or preclude the use of ML-KEM as part of any hybrid scheme.</t>
      <section anchor="sec-intro-terminology">
        <name>Conventions and Terminology</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 BCP14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

<!-- End of terminology section -->

</section>
      <section anchor="sec-intro-kems">
        <name>KEMs</name>
        <t>All KEM algorithms provides three functions: KeyGen(), Encapsulate(), and Decapsulate():</t>
        <t>KeyGen() -&gt; (pk, sk):</t>
        <ul empty="true">
          <li>
            <t>Generate the public key (pk) and a private key (sk).</t>
          </li>
        </ul>
        <t>Encapsulate(pk) -&gt; (ct, ss):</t>
        <ul empty="true">
          <li>
            <t>Given the recipient's public key (pk), produce a ciphertext (ct) to be passed to the recipient and a shared secret (ss) for use by the originator.</t>
          </li>
        </ul>
        <t>Decapsulate(sk, ct) -&gt; ss:</t>
        <ul empty="true">
          <li>
            <t>Given the private key (sk) and the ciphertext (ct), produce the shared secret (ss) for the recipient.</t>
          </li>
        </ul>
        <t>The main security property for KEMs standardized in the NIST Post-Quantum Cryptography Standardization Project <xref target="NIST-PQ"/> is indistinguishability under adaptive chosen ciphertext attacks (IND-CCA2), which means that shared secret values should be indistinguishable from random strings even given the ability to have 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 weaker security notion is indistinguishability under chosen plaintext attacks (IND-CPA), which means that the shared secret values should be indistinguishable from random strings given a copy of the public key. IND-CPA roughly corresponds to security against a passive attacker, and sometimes corresponds to one-time key exchange.</t>
        <t>IND-CCA2 is a desirable property of encryption mechanisms for CMS since encryption public keys are often long-term -- for example contained within X.509 certificates <xref target="RFC5280"/> -- and certain uses of CMS could allow for the type of decryption oracle that forms the basis of an adaptive ciphertext attack.</t>
        <!-- End of KEMs section -->

</section>
      <section anchor="sec-intro-ml-kem">
        <name>ML-KEM</name>
        <t>ML-KEM is a lattice-based key encapsulation mechanism defined in <xref target="FIPS203"/>.
[EDNOTE: Not actually standardized yet, but will be by publication]</t>
        <t>ML-KEM is using Module Learning with Errors as its underlying primitive which is a structured lattices variant that offers good performance and relatively small and balanced key and ciphertext sizes. ML-KEM was standardized with three parameter sets: ML-KEM-512, ML-KEM-768, and ML-KEM-1024. These were mapped by NIST to the three security levels defined in the NIST PQC Project, Level 1, 3, and 5. These levels correspond to the hardness of breaking AES-128, AES-192 and AES-256 respectively.</t>
        <t>The KEM functions defined above correspond to the following functions in <xref target="FIPS203"/>:</t>
        <ul empty="true">
          <li>
            <t>KeyGen(): ML-KEM.KeyGen() from section 6.1.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>Encapsulate(): ML-KEM.Encaps() from section 6.2.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>Decapsulate(): ML-KEM.Decaps() from section 6.3.</t>
          </li>
        </ul>
        <t>All security levels of ML-KEM use SHA3-256, SHA3-512, SHAKE256, and SHAKE512 internally. This informs the choice of KDF within this document.</t>
        <!-- End of ML-KEM section -->

</section>
      <section anchor="sec-intro-kemri">
        <name>CMS KEMRecipientInfo Processing Summary</name>
        <t>Processing ML-KEM with KEMRecipientInfo follows the same steps as Section 2 of <xref target="I-D.ietf-lamps-cms-kemri"/>.</t>
        <t>To support the ML-KEM algorithm, the CMS originator <bcp14>MUST</bcp14> implement Encapsulate().</t>
        <t>Given a content-encryption key CEK, the ML-KEM Algorithm processing by the originator to produce the values that are carried in the CMS KEMRecipientInfo can be summarized as:</t>
        <ul empty="true">
          <li>
            <t>1. Obtain the shared secret and ciphertext using the Encapsulate() function of the ML-KEM algorithm and the recipient's ML-KEM public key:</t>
          </li>
        </ul>
        <artwork><![CDATA[
       (ct, ss) = Encapsulate(pk)
]]></artwork>
        <ul empty="true">
          <li>
            <t>2. Derive a key-encryption key KEK from the shared secret:</t>
          </li>
        </ul>
        <artwork><![CDATA[
       KEK = KDF(ss)
]]></artwork>
        <ul empty="true">
          <li>
            <t>3. Wrap the CEK with the KEK to obtain wrapped keying material WK:</t>
          </li>
        </ul>
        <artwork><![CDATA[
       WK = WRAP(KEK, CEK)
]]></artwork>
        <ul empty="true">
          <li>
            <t>4. The originator sends the ciphertext and WK to the recipient in the CMS KEMRecipientInfo structure.</t>
          </li>
        </ul>
        <t>To support the ML-KEM algorithm, the CMS recipient <bcp14>MUST</bcp14> implement Decapsulate().</t>
        <t>The ML-KEM algorithm recipient processing of the values obtained from the KEMRecipientInfo structure can be summarized as:</t>
        <ul empty="true">
          <li>
            <t>1. Obtain the shared secret using the Decapsulate() function of the ML-KEM algorithm and the recipient's ML-KEM private key:</t>
          </li>
        </ul>
        <artwork><![CDATA[
       ss = Decapsulate(sk, ct)
]]></artwork>
        <ul empty="true">
          <li>
            <t>2. Derive a key-encryption key KEK from the shared secret:</t>
          </li>
        </ul>
        <artwork><![CDATA[
       KEK = KDF(ss)
]]></artwork>
        <ul empty="true">
          <li>
            <t>3. Unwrap the WK with the KEK to obtain content-encryption key CEK:</t>
          </li>
        </ul>
        <artwork><![CDATA[
       CEK = UNWRAP(KEK, WK)
]]></artwork>
        <t>Note that the KDF used to process the KEMRecipientInfo structure <bcp14>MAY</bcp14> be different from the KDF used in the ML-KEM algorithm.</t>
        <!-- End of processing-summary section -->

<!-- End of introduction section -->

</section>
    </section>
    <section anchor="sec-using">
      <name>Use of the ML-KEM Algorithm in CMS</name>
      <t>The ML-KEM Algorithm <bcp14>MAY</bcp14> be employed for one or more recipients in the CMS enveloped-data content type <xref target="RFC5652"/>, the CMS authenticated-data content type <xref target="RFC5652"/>, or the CMS authenticated-enveloped-data content type <xref target="RFC5083"/>. In each case, the KEMRecipientInfo <xref target="I-D.ietf-lamps-cms-kemri"/> is used with with the ML-KEM Algorithm to securely transfer the content-encryption key from the originator to the recipient.</t>
      <section anchor="sec-using-recipientInfo">
        <name>RecipientInfo Conventions</name>
        <t>When the ML-KEM Algorithm is employed for a recipient, the RecipientInfo alternative for that recipient <bcp14>MUST</bcp14> be OtherRecipientInfo using the KEMRecipientInfo structure as defined in <xref target="I-D.ietf-lamps-cms-kemri"/>.
The fields of the KEMRecipientInfo <bcp14>MUST</bcp14> have the following values:</t>
        <ul empty="true">
          <li>
            <t>version is the syntax version number; it <bcp14>MUST</bcp14> be 0.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>rid identifies the recipient's certificate or public key.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>kem identifies the KEM algorithm ; it <bcp14>MUST</bcp14> contain one of id-ML-KEM-512, id-ML-KEM-768, or id-ML-KEM-1024. These identifiers are reproduced in <xref target="sec-identifiers"/>.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>kemct is the ciphertext produced for this recipient.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>kdf identifies the key-derivation algorithm. Note that the KDF used for CMS RecipientInfo process <bcp14>MAY</bcp14> be different than the KDF used within the ML-KEM Algorithm.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>kekLength is the size of the key-encryption key in octets.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>ukm is an optional random input to the key-derivation function. ML-KEM doesn't place any requirements on the ukm contents.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>wrap identifies a key wrapping algorithm used to encrypt the content-encryption key.</t>
          </li>
        </ul>
        <!-- End of recipientinfo conventions section -->

</section>
      <section anchor="sec-using-components">
        <name>Underlying Components</name>
        <t>When ML-KEM is employed in CMS, the security levels of the different underlying components used within the KEMRecipientInfo structure <bcp14>SHOULD</bcp14> be consistent.</t>
        <section anchor="kdf">
          <name>KDF</name>
          <t>KMAC128-KDF and KMAC256-KDF are KMAC-based KDFs specified for use in CMS in <xref target="I-D.ietf-lamps-cms-sha3-hash"/>.  Here, KMAC# indicates the use of either KMAC128-KDF or KMAC256-KDF.</t>
          <t>KMAC#(K, X, L, S) takes the following parameters:</t>
          <ul empty="true">
            <li>
              <t>K: the input key-derivation key.  In this document this is the shared secret outputted from the Encapsulate() or Decapsulate() functions.  This corresponds to the IKM KDF input from Section 5 of <xref target="I-D.ietf-lamps-cms-kemri"/>.</t>
            </li>
          </ul>
          <ul empty="true">
            <li>
              <t>X: the context, corresponding to the info KDF input from Section 5 of <xref target="I-D.ietf-lamps-cms-kemri"/>. This is the ASN.1 DER encoding of CMSORIforKEMOtherInfo.</t>
            </li>
          </ul>
          <ul empty="true">
            <li>
              <t>L: the output length, in bits.  This corresponds to the L KDF input from Section 5 of <xref target="I-D.ietf-lamps-cms-kemri"/>, which is identified in the kekLength value from KEMRecipientInfo.  The L KDF input and kekLength values are specified in octets while this L parameter is specified in bits.</t>
            </li>
          </ul>
          <ul empty="true">
            <li>
              <t>S: the optional customization label.  In this document this parameter is unused, that is it is the zero-length string "".</t>
            </li>
          </ul>
          <t>The object identifier for KMAC128-KDF is id-kmac128 (see <xref target="sec-identifiers"/>).</t>
          <t>The object identifier for KMAC256-KDF is id-kmac256 (see <xref target="sec-identifiers"/>).</t>
          <t>Since the customization label to KMAC# is not used, the parameter field <bcp14>MUST</bcp14> be absent when id-kmac128 or id-kmac256 is used as part of an algorithm identifier specifying the KDF to use for ML-KEM in KemRecipientInfo.</t>
        </section>
        <section anchor="components-for-ml-kem-in-cms">
          <name>Components for ML-KEM in CMS</name>
          <t>For ML-KEM-512, the following underlying components <bcp14>MUST</bcp14> be supported:</t>
          <ul empty="true">
            <li>
              <t>KDF: KMAC128-KDF using id-kmac128</t>
            </li>
          </ul>
          <ul empty="true">
            <li>
              <t>Key wrapping: 128-bit AES key wrapping using id-aes128-wrap <xref target="RFC3565"/></t>
            </li>
          </ul>
          <t>For ML-KEM-768, the following underlying components <bcp14>MUST</bcp14> be supported:</t>
          <ul empty="true">
            <li>
              <t>KDF: KMAC256-KDF using id-kmac256</t>
            </li>
          </ul>
          <ul empty="true">
            <li>
              <t>Key wrapping: 256-bit AES key wrapping using id-aes256-wrap <xref target="RFC3565"/></t>
            </li>
          </ul>
          <t>For ML-KEM-1024, the following underlying components <bcp14>MUST</bcp14> be supported:</t>
          <ul empty="true">
            <li>
              <t>KDF: KMAC256-KDF using id-kmac256</t>
            </li>
          </ul>
          <ul empty="true">
            <li>
              <t>Key wrapping: 256-bit AES key wrapping using id-aes256-wrap <xref target="RFC3565"/></t>
            </li>
          </ul>
          <t>The above object identifiers are reproduced for convenience in <xref target="sec-identifiers"/>.</t>
          <t>An implementation <bcp14>MAY</bcp14> also support other key-derivation functions and other key-encryption algorithms.</t>
          <t>If underlying components other than those specified above are used, then the following KDF requirements are in effect in addition to those asserted in <xref target="I-D.ietf-lamps-cms-kemri"/>:</t>
          <ul empty="true">
            <li>
              <t>ML-KEM-512 <bcp14>SHOULD</bcp14> be used with a KDF capable of outputting a key with at least 128 bits of security and with a key wrapping algorithm with a key length of at least 128 bits.</t>
            </li>
          </ul>
          <ul empty="true">
            <li>
              <t>ML-KEM-768 <bcp14>SHOULD</bcp14> be used with a KDF capable of outputting a key with at least 192 bits of security and with a key wrapping algorithm with a key length of at least 192 bits.</t>
            </li>
          </ul>
          <ul empty="true">
            <li>
              <t>ML-KEM-1024 <bcp14>SHOULD</bcp14> be used with a KDF capable of outputting a key with at least 256 bits of security and with a key wrapping algorithm with a key length of at least 256 bits.</t>
            </li>
          </ul>
          <!-- End of Underlying Components section -->

</section>
      </section>
      <section anchor="sec-using-certs">
        <name>Certificate Conventions</name>
        <t>The conventions specified in this section augment <xref target="RFC5280"/>.</t>
        <t>A recipient who employs the ML-KEM Algorithm with a certificate <bcp14>MUST</bcp14> identify the public key in the certificate using the id-ML-KEM-512, id-ML-KEM-768, or id-ML-KEM-1024 object identifiers following the conventions specified in <xref target="I-D.ietf-lamps-kyber-certificates"/> and reproduced in <xref target="sec-identifiers"/>.</t>
        <t>In particular, the key usage certificate extension <bcp14>MUST</bcp14> only contain keyEncipherment (Section 4.2.1.3 of <xref target="RFC5280"/>).</t>
      </section>
      <section anchor="sec-using-smime-caps">
        <name>SMIME Capabilities Attribute Conventions</name>
        <t>Section 2.5.2 of <xref target="RFC8551"/> defines the SMIMECapabilities attribute to announce a partial list of algorithms that an S/MIME implementation can support. When constructing a CMS signed-data content type <xref target="RFC5652"/>, a compliant implementation <bcp14>MAY</bcp14> include the SMIMECapabilities attribute that announces support for one or more of the ML-KEM Algorithm identifiers.</t>
        <t>The SMIMECapability SEQUENCE representing the ML-KEM Algorithm <bcp14>MUST</bcp14> include one of the ML-KEM object identifiers in the capabilityID field. When the one of the ML-KEM object identifiers appears in the capabilityID field, the parameters <bcp14>MUST NOT</bcp14> be present.</t>
        <!-- End of smime-capabilities-attribute-conventions section -->

<!-- End of use-in-cms section -->

</section>
    </section>
    <section anchor="sec-identifiers">
      <name>Identifiers</name>
      <t>All identifiers used by ML-KEM in CMS are defined elsewhere but reproduced here for convenience:</t>
      <artwork><![CDATA[
  id-TBD-NIST-KEM OBJECT IDENTIFIER ::= { TBD }

  id-ML-KEM-512 OBJECT IDENTIFIER ::= { id-TBD-NIST-KEM TBD }
  id-ML-KEM-768 OBJECT IDENTIFIER ::= { id-TBD-NIST-KEM TBD }
  id-ML-KEM-1024 OBJECT IDENTIFIER ::= { id-TBD-NIST-KEM TBD }

  hashAlgs OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16)
      us(840) organization(1) gov(101) csor(3) nistAlgorithm(4) 2 }

  id-kmac128 OBJECT IDENTIFIER ::= { hashAlgs 21 }
  id-kmac256 OBJECT IDENTIFIER ::= { hashAlgs 22 }

  aes OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840)
      organization(1) gov(101) csor(3)_ nistAlgorithms(4) 1 }

  id-aes128-wrap OBJECT IDENTIFIER ::= { aes 5 }
  id-aes256-wrap OBJECT IDENTIFIER ::= { aes 45 }
]]></artwork>
    </section>
    <section anchor="sec-security-considerations">
      <name>Security Considerations</name>
      <t>[EDNOTE: many of the security considerations below apply to ML-KEM in general and are not specific to ML-KEM within CMS. As this document and draft-ietf-lamps-kyber-certificates approach WGLC, the two Security Consideration sections should be harmonized and duplicate text removed.]</t>
      <t>The Security Considerations section of <xref target="I-D.ietf-lamps-kyber-certificates"/> applies to this specification as well.</t>
      <t>The ML-KEM variant and the underlying components need to be selected consistent with the desired security level. Several security levels have been identified in the NIST SP 800-57 Part 1 <xref target="NIST.SP.800-57pt1r5"/>. To achieve 128-bit security, ML-KEM-512 <bcp14>SHOULD</bcp14> be used, the key-derivation function <bcp14>SHOULD</bcp14> provide at least 128 bits of security, and the symmetric key-encryption algorithm <bcp14>SHOULD</bcp14> be AES Key Wrap with a 128-bit key. To achieve 192-bit security, ML-KEM-768 <bcp14>SHOULD</bcp14> be used, the key-derivation function <bcp14>SHOULD</bcp14> provide at least 192 bits of security, and the symmetric key-encryption algorithm <bcp14>SHOULD</bcp14> be AES Key Wrap with a 192-bit key or larger. In this case AES Key Wrap with a 256-bit key is typically used because AES-192 is not as commonly deployed. To achieve 256-bit security, ML-KEM-1024 <bcp14>SHOULD</bcp14> be used, the key-derivation function <bcp14>SHOULD</bcp14> provide at least 256 bits of security, and the symmetric key-encryption algorithm <bcp14>SHOULD</bcp14> be AES Key Wrap with a 256-bit key.</t>
      <t>Provided all inputs are well-formed, the key establishment procedure of ML-KEM will never explicitly fail. Specifically, the ML-KEM.Encaps and ML-KEM.Decaps algorithms from <xref target="FIPS203"/> will always output a value with the same data type as a shared secret key, and will never output an error or failure symbol. However, it is possible (though extremely unlikely) that the process will fail in the sense that ML-KEM.Encaps and ML-KEM.Decaps will produce different outputs, even though both of them are behaving honestly and no adversarial interference is present. In this case, the sender and recipient clearly did not succeed in producing a shared
secret key. This event is called a decapsulation failure. Estimates for the decapsulation failure probability (or rate) for each of the ML-KEM parameter sets are provided in Table 1 [EDNOTE: make sure this doesn't change] of <xref target="FIPS203"/> and reproduced here in <xref target="tab-fail"/>.</t>
      <table anchor="tab-fail">
        <name>ML-KEM decapsulation failures rates</name>
        <thead>
          <tr>
            <th align="left">Parameter set</th>
            <th align="left">Decapsulation failure rate</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">ML-KEM-512</td>
            <td align="left">2^(-139)</td>
          </tr>
          <tr>
            <td align="left">ML-KEM-768</td>
            <td align="left">2^(-164)</td>
          </tr>
          <tr>
            <td align="left">ML-KEM-1024</td>
            <td align="left">2^(-174)</td>
          </tr>
        </tbody>
      </table>
      <t>Implementations <bcp14>MUST</bcp14> protect the ML-KEM private key, the key-encryption key, the content-encryption key, message-authentication key, and the content-authenticated-encryption key. Disclosure of the ML-KEM private key could result in the compromise of all messages protected with that key. Disclosure of the key-encryption key, the content- encryption key, or the content-authenticated-encryption key could result in compromise of the associated encrypted content. Disclosure of the key-encryption key, the message-authentication key, or the content-authenticated-encryption key could allow modification of the associated authenticated content.</t>
      <t>Additional considerations related to key management may be found in <xref target="NIST.SP.800-57pt1r5"/>.</t>
      <t>The security of the ML-KEM Algorithm depends on a quality random number generator. For further discussion on random number generation, see <xref target="RFC4086"/>.</t>
      <t>ML-KEM encapsulation and decapsulation only outputs a shared secret and ciphertext. Implementations <bcp14>SHOULD NOT</bcp14> use intermediate values directly for any purpose.</t>
      <t>Implementations <bcp14>SHOULD NOT</bcp14> reveal information about intermediate values or calculations, whether by timing or other "side channels", otherwise an opponent may be able to determine information about the keying data and/or the recipient's private key. Although not all intermediate information may be useful to an opponent, it is preferable to conceal as much information as is practical, unless analysis specifically indicates that the information would not be useful to an opponent.</t>
      <t>Generally, good cryptographic practice employs a given ML-KEM key pair in only one scheme. This practice avoids the risk that vulnerability in one scheme may compromise the security of the other, and may be essential to maintain provable security.</t>
      <t>Parties <bcp14>MAY</bcp14> gain assurance that implementations are correct through formal implementation validation, such as the NIST Cryptographic Module Validation Program (CMVP) <xref target="CMVP"/>.</t>
      <!-- End of security-considerations section -->

</section>
    <section anchor="sec-iana-considerations">
      <name>IANA Considerations</name>
      <t>None.</t>
      <t>Within the CMS, algorithms are identified by object identifiers (OIDs). All of the OIDs used in this document were assigned in other IETF documents, in ISO/IEC standards documents, by the National Institute of Standards and Technology (NIST).</t>
      <!-- End of iana-considerations section -->

</section>
    <section anchor="sec-acknowledgements">
      <name>Acknowledgements</name>
      <t>This document borrows heavily from <xref target="I-D.ietf-lamps-rfc5990bis"/>, <xref target="FIPS203"/>, and <xref target="I-D.kampanakis-ml-kem-ikev2"/>. Thanks go to the authors of those documents. "Copying always makes things easier and less error prone" - RFC8411.</t>
      <t>Thanks to Carl Wallace for the detailed review and interoperability testing.</t>
      <!-- End of acknowledgements section -->

</section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="FIPS203">
          <front>
            <title>TBD</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="FIPS203-ipd" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.203.ipd.pdf">
          <front>
            <title>Module-Lattice-based Key-Encapsulation Mechanism Standard</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date year="2023" month="August" day="24"/>
          </front>
        </reference>
        <reference anchor="I-D.ietf-lamps-cms-kemri">
          <front>
            <title>Using Key Encapsulation Mechanism (KEM) Algorithms in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="Russ Housley" initials="R." surname="Housley">
              <organization>Vigil Security, LLC</organization>
            </author>
            <author fullname="John Gray" initials="J." surname="Gray">
              <organization>Entrust</organization>
            </author>
            <author fullname="Tomofumi Okubo" initials="T." surname="Okubo">
              <organization>DigiCert, Inc.</organization>
            </author>
            <date day="6" month="February" year="2024"/>
            <abstract>
              <t>   The Cryptographic Message Syntax (CMS) supports key transport and key
   agreement algorithms.  In recent years, cryptographers have been
   specifying Key Encapsulation Mechanism (KEM) algorithms, including
   quantum-secure KEM algorithms.  This document defines conventions for
   the use of KEM algorithms by the originator and recipients to encrypt
   and decrypt CMS content.  This document updates RFC 5652.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-kemri-08"/>
        </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="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC5652">
          <front>
            <title>Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="September" year="2009"/>
            <abstract>
              <t>This document describes the Cryptographic Message Syntax (CMS). This syntax is used to digitally sign, digest, authenticate, or encrypt arbitrary message content. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="70"/>
          <seriesInfo name="RFC" value="5652"/>
          <seriesInfo name="DOI" value="10.17487/RFC5652"/>
        </reference>
        <reference anchor="RFC5083">
          <front>
            <title>Cryptographic Message Syntax (CMS) Authenticated-Enveloped-Data Content Type</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="November" year="2007"/>
            <abstract>
              <t>This document describes an additional content type for the Cryptographic Message Syntax (CMS). The authenticated-enveloped-data content type is intended for use with authenticated encryption modes. All of the various key management techniques that are supported in the CMS enveloped-data content type are also supported by the CMS authenticated-enveloped-data content type. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5083"/>
          <seriesInfo name="DOI" value="10.17487/RFC5083"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-cms-sha3-hash">
          <front>
            <title>Use of the SHA3 One-way Hash Functions in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="Russ Housley" initials="R." surname="Housley">
              <organization>Vigil Security, LLC</organization>
            </author>
            <date day="1" month="March" year="2024"/>
            <abstract>
              <t>   This document describes the conventions for using the one-way hash
   functions in the SHA3 family with the Cryptographic Message Syntax
   (CMS).  The SHA3 family can be used as a message digest algorithm, as
   part of a signature algorithm, as part of a message authentication
   code, or part of a key derivation function.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-sha3-hash-01"/>
        </reference>
        <reference anchor="RFC3565">
          <front>
            <title>Use of the Advanced Encryption Standard (AES) Encryption Algorithm in Cryptographic Message Syntax (CMS)</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="July" year="2003"/>
            <abstract>
              <t>This document specifies the conventions for using the Advanced Encryption Standard (AES) algorithm for encryption with the Cryptographic Message Syntax (CMS). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3565"/>
          <seriesInfo name="DOI" value="10.17487/RFC3565"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-kyber-certificates">
          <front>
            <title>Internet X.509 Public Key Infrastructure - Algorithm Identifiers for Kyber</title>
            <author fullname="Sean Turner" initials="S." surname="Turner">
              <organization>sn3rd</organization>
            </author>
            <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
              <organization>AWS</organization>
            </author>
            <author fullname="Jake Massimo" initials="J." surname="Massimo">
              <organization>AWS</organization>
            </author>
            <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
              <organization>Cloudflare</organization>
            </author>
            <date day="23" month="October" year="2023"/>
            <abstract>
              <t>   Kyber is a key-encapsulation mechanism (KEM).  This document
   specifies algorithm identifiers and ASN.1 encoding format for Kyber
   in public key certificates.  The encoding for public and private keys
   are also provided.

   \ [EDNOTE: This document is not expected to be finalized before the
   NIST PQC Project has standardized PQ algorithms.  This specification
   will use object identifiers for the new algorithms that are assigned
   by NIST, and will use placeholders until these are released.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-kyber-certificates-02"/>
        </reference>
        <reference anchor="RFC8551">
          <front>
            <title>Secure/Multipurpose Internet Mail Extensions (S/MIME) Version 4.0 Message Specification</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <author fullname="B. Ramsdell" initials="B." surname="Ramsdell"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="April" year="2019"/>
            <abstract>
              <t>This document defines Secure/Multipurpose Internet Mail Extensions (S/MIME) version 4.0. S/MIME provides a consistent way to send and receive secure MIME data. Digital signatures provide authentication, message integrity, and non-repudiation with proof of origin. Encryption provides data confidentiality. Compression can be used to reduce data size. This document obsoletes RFC 5751.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8551"/>
          <seriesInfo name="DOI" value="10.17487/RFC8551"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="NIST-PQ" target="https://csrc.nist.gov/projects/post-quantum-cryptography">
          <front>
            <title>Post-Quantum Cryptography Project</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2016" month="December" day="20"/>
          </front>
        </reference>
        <reference anchor="CMVP" target="https://csrc.nist.gov/projects/cryptographic-module-validation-program">
          <front>
            <title>Cryptographic Module Validation Program</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2016"/>
          </front>
        </reference>
        <reference anchor="NIST.SP.800-57pt1r5" target="https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-57pt1r5.pdf">
          <front>
            <title>Recommendation for key management:part 1 - general</title>
            <author fullname="Elaine Barker" surname="Barker">
              <organization>Information Technology Laboratory</organization>
            </author>
            <author>
              <organization abbrev="NIST">National Institute of Standards and Technology</organization>
              <address>
                <postal>
                  <country>US</country>
                  <city>Gaithersburg</city>
                </postal>
              </address>
            </author>
            <date month="May" year="2020"/>
          </front>
          <seriesInfo name="NIST Special Publications (General)" value="800-57pt1r5"/>
          <seriesInfo name="DOI" value="10.6028/NIST.SP.800-57pt1r5"/>
        </reference>
        <reference anchor="RFC4086">
          <front>
            <title>Randomness Requirements for Security</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <author fullname="J. Schiller" initials="J." surname="Schiller"/>
            <author fullname="S. Crocker" initials="S." surname="Crocker"/>
            <date month="June" year="2005"/>
            <abstract>
              <t>Security systems are built on strong cryptographic algorithms that foil pattern analysis attempts. However, the security of these systems is dependent on generating secret quantities for passwords, cryptographic keys, and similar quantities. The use of pseudo-random processes to generate secret quantities can result in pseudo-security. A sophisticated attacker may find it easier to reproduce the environment that produced the secret quantities and to search the resulting small set of possibilities than to locate the quantities in the whole of the potential number space.</t>
              <t>Choosing random quantities to foil a resourceful and motivated adversary is surprisingly difficult. This document points out many pitfalls in using poor entropy sources or traditional pseudo-random number generation techniques for generating such quantities. It recommends the use of truly random hardware techniques and shows that the existing hardware on many systems can be used for this purpose. It provides suggestions to ameliorate the problem when a hardware solution is not available, and it gives examples of how large such quantities need to be for some applications. 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="106"/>
          <seriesInfo name="RFC" value="4086"/>
          <seriesInfo name="DOI" value="10.17487/RFC4086"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-rfc5990bis">
          <front>
            <title>Use of the RSA-KEM Algorithm in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="Russ Housley" initials="R." surname="Housley">
              <organization>Vigil Security, LLC</organization>
            </author>
            <author fullname="Sean Turner" initials="S." surname="Turner">
              <organization>sn3rd</organization>
            </author>
            <date day="19" month="October" year="2023"/>
            <abstract>
              <t>   The RSA Key Encapsulation Mechanism (RSA-KEM) Algorithm is a one-pass
   (store-and-forward) cryptographic mechanism for an originator to
   securely send keying material to a recipient using the recipient's
   RSA public key.  The RSA-KEM Algorithm is specified in Clause 11.5 of
   ISO/IEC: 18033-2:2006.  This document specifies the conventions for
   using the RSA-KEM Algorithm as a standalone KEM algorithm and the
   conventions for using the RSA-KEM Algorithm with the Cryptographic
   Message Syntax (CMS) using KEMRecipientInfo as specified in draft-
   ietf-lamps-cms-kemri.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-rfc5990bis-04"/>
        </reference>
        <reference anchor="I-D.kampanakis-ml-kem-ikev2">
          <front>
            <title>Post-quantum Hybrid Key Exchange with ML-KEM in the Internet Key Exchange Protocol Version 2 (IKEv2)</title>
            <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
              <organization>Amazon Web Services</organization>
            </author>
            <author fullname="Gerardo Ravago" initials="G." surname="Ravago">
              <organization>Amazon Web Services</organization>
            </author>
            <date day="19" month="February" year="2024"/>
            <abstract>
              <t>   [EDNOTE: The intention of this draft is to get IANA KE codepoints for
   ML-KEM.  It could be a standards track draft given that ML-KEM will
   see a lot of adoption, an AD sponsored draft, or even an individual
   stable draft which gets codepoints from Expert Review.  The approach
   is to be decided by the IPSECME WG. ]

   NIST recently standardized ML-KEM, a new key encapsulation mechanism,
   which can be used for quantum-resistant key establishment.  This
   draft specifies how to use ML-KEM as an additional key exchange in
   IKEv2 along with traditional key exchanges.  This Post-Quantum
   Traditional Hybrid Key Encapsulation Mechanism approach allows for
   negotiating IKE and Child SA keys which are safe against
   cryptanalytically-relevant quantum computers and theoretical
   weaknesses in ML-KEM.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-kampanakis-ml-kem-ikev2-02"/>
        </reference>
      </references>
    </references>
    <?line 410?>

<section anchor="asn1-module">
      <name>ASN.1 Module</name>
      <t>[EDNOTE: Do we need an ASN.1 module? We haven't defined any new ASN.1.  Yes, see S/MIME ASN.1 changes to composite-kem draft]</t>
      <section anchor="examples">
        <name>Examples</name>
        <artwork><![CDATA[
EDITOR'S NOTE' - TODO
section to be completed
]]></artwork>
      </section>
    </section>
    <section anchor="sec-version-changes">
      <name>Revision History</name>
      <t>[EDNOTE: remove before publishing]</t>
      <ul spacing="normal">
        <li>
          <t>draft-ietf-lamps-cms-kyber-03:
          </t>
          <ul spacing="normal">
            <li>
              <t>Switch MTI KDF from HKDF to KMAC.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>draft-ietf-lamps-cms-kyber-02:
          </t>
          <ul spacing="normal">
            <li>
              <t>Rearrange and rewrite to align with rfc5990bis and I-D.ietf-lamps-cms-kemri</t>
            </li>
            <li>
              <t>Move Revision History to end to avoid renumbering later</t>
            </li>
            <li>
              <t>Add Security Considerations</t>
            </li>
          </ul>
        </li>
        <li>
          <t>draft-ietf-lamps-cms-kyber-01:
          </t>
          <ul spacing="normal">
            <li>
              <t>Details of the KEMRecipientInfo content when using Kyber;</t>
            </li>
            <li>
              <t>Editorial changes.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>draft-ietf-lamps-cms-kyber-00:
          </t>
          <ul spacing="normal">
            <li>
              <t>Use of KEMRecipientInfo to communicate algorithm info;</t>
            </li>
            <li>
              <t>Editorial changes.</t>
            </li>
          </ul>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
