<?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.21 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-cms-kyber-07" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.25.0 -->
  <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-07"/>
    <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@cryptonext-security.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 98?>

<t>Module-Lattice-Based Key-Encapsulation Mechanism (ML-KEM) is a quantum-resistant key-encapsulation mechanism (KEM). Three parameters sets for the ML-KEM algorithm are specified by NIST in FIPS 203. 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 the KEMRecipientInfo structure.</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/cms-kyber"/>.</t>
    </note>
  </front>
  <middle>
    <?line 104?>

<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"/>. Prior to standardization, the algorithm was known as Kyber.  ML-KEM and Kyber are not compatible.</t>
      <t>Native support for Key Encapsulation Mechanisms (KEMs) was added to CMS in <xref target="RFC9629"/>, 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-ml-kem">
        <name>ML-KEM</name>
        <t>ML-KEM is a lattice-based key encapsulation mechanism 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. The parameters for each of the security levels were chosen to be at least as secure as a generic block cipher of 128, 192, or 256 bits, respectively.</t>
        <t>Like all KEM algorithms, ML-KEM provides three functions: KeyGen(), Encapsulate(), and Decapsulate().</t>
        <dl>
          <dt>KeyGen() -&gt; (pk, sk):</dt>
          <dd>
            <t>Generate the public key (pk) and a private key (sk).</t>
          </dd>
          <dt>Encapsulate(pk) -&gt; (ct, ss):</dt>
          <dd>
            <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>
          </dd>
          <dt>Decapsulate(sk, ct) -&gt; ss:</dt>
          <dd>
            <t>Given the private key (sk) and the ciphertext (ct), produce the shared secret (ss) for the recipient.</t>
          </dd>
        </dl>
        <t>The KEM functions defined above correspond to the following functions in <xref target="FIPS203"/>:</t>
        <dl>
          <dt>KeyGen():</dt>
          <dd>
            <t>ML-KEM.KeyGen() from section 7.1.</t>
          </dd>
          <dt>Encapsulate():</dt>
          <dd>
            <t>ML-KEM.Encaps() from section 7.2.</t>
          </dd>
          <dt>Decapsulate():</dt>
          <dd>
            <t>ML-KEM.Decaps() from section 7.3.</t>
          </dd>
        </dl>
        <t>All security levels of ML-KEM use SHA3-256, SHA3-512, SHAKE256, and SHAKE512 internally.</t>
        <!-- End of ML-KEM 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="RFC9629"/> is used with the ML-KEM algorithm to securely transfer the content-encryption key from the originator to the recipient.</t>
      <t>Processing ML-KEM with KEMRecipientInfo follows the same steps as <xref section="2" sectionFormat="of" target="RFC9629"/>. To support the ML-KEM algorithm, a CMS originator <bcp14>MUST</bcp14> implement the Encapsulate() function and a CMS responder <bcp14>MUST</bcp14> implement the Decapsulate() function.</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="RFC9629"/>.</t>
        <t>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-alg-ml-kem-512, id-alg-ml-kem-768, or id-alg-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 Key Derivation Function (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-encryption 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="use-of-the-hkdf-based-key-derivation-function">
          <name>Use of the HKDF-based Key Derivation Function</name>
          <t>The HMAC-based Extract-and-Expand Key Derivation Function (HKDF) is defined in <xref target="RFC5869"/>.</t>
          <t>The HKDF function is a composition of the HKDF-Extract and HKDF-Expand functions.</t>
          <artwork><![CDATA[
HKDF(salt, IKM, info, L)
  = HKDF-Expand(HKDF-Extract(salt, IKM), info, L)
]]></artwork>
          <t>HKDF(salt, IKM, info, L) takes the following parameters:</t>
          <dl>
            <dt>salt:</dt>
            <dd>
              <t>optional salt value (a non-secret random value). In this document this parameter is unused, that is it is the zero-length string "".</t>
            </dd>
            <dt>IKM:</dt>
            <dd>
              <t>input keying material. In this document this is the shared secret outputted from the Encapsulate() or Decapsulate() functions.  This corresponds to the IKM KDF input from <xref section="5" sectionFormat="of" target="RFC9629"/>.</t>
            </dd>
            <dt>info:</dt>
            <dd>
              <t>optional context and application specific information. In this document this corresponds to the info KDF input from <xref section="5" sectionFormat="of" target="RFC9629"/>. This is the ASN.1 DER encoding of CMSORIforKEMOtherInfo.</t>
            </dd>
            <dt>L:</dt>
            <dd>
              <t>length of output keying material in octets. This corresponds to the L KDF input from <xref section="5" sectionFormat="of" target="RFC9629"/>, which is identified in the kekLength value from KEMRecipientInfo. Implementations <bcp14>MUST</bcp14> confirm that this value is consistent with the key size of the key-encryption algorithm.</t>
            </dd>
          </dl>
          <t>HKDF may be used with different hash functions, including SHA-256 <xref target="FIPS180"/>. The object identifier id-alg-hkdf-with-sha256 is defined in <xref target="RFC8619"/>, and specifies the use of HKDF with SHA-256. The parameter field <bcp14>MUST</bcp14> be absent when this algorithm identifier is used to specify the KDF for ML-KEM in KemRecipientInfo.</t>
        </section>
        <section anchor="components-for-ml-kem-in-cms">
          <name>Components for ML-KEM in CMS</name>
          <t>A compliant implementation <bcp14>MUST</bcp14> support HKDF with SHA-256, using the id-alg-hkdf-with-sha256 KDF object identifier, as the KemRecipientInfo KDF for all ML-KEM parameter sets. 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>
          <t>For ML-KEM-512, an implementation must support the AES-Wrap-128 <xref target="RFC3394"/> key-encryption algorithm using the id-aes128-wrap key-encryption algorithm object identifier <xref target="RFC3565"/>.</t>
          <t>For ML-KEM-768 and ML-KEM-1024, an implementation must support the AES-Wrap-256 <xref target="RFC3394"/> key-encryption algorithm using the id-aes256-wrap key-encryption algorithm object identifier <xref target="RFC3565"/>.</t>
          <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="RFC9629"/>:</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 preimage strength 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 preimage strength 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 preimage strength 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-alg-ml-kem-512, id-alg-ml-kem-768, or id-alg-ml-kem-1024 object identifiers following the conventions specified in <xref target="I-D.ietf-lamps-kyber-certificates"/>.</t>
        <t>In particular, the key usage certificate extension <bcp14>MUST</bcp14> only contain keyEncipherment (<xref section="4.2.1.3" sectionFormat="of" target="RFC5280"/>).</t>
      </section>
      <section anchor="sec-using-smime-caps">
        <name>SMIME Capabilities Attribute Conventions</name>
        <t><xref section="2.5.2" sectionFormat="of" 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 to indicate ML-KEM within CMS are defined elsewhere but reproduced here for convenience:</t>
      <artwork><![CDATA[
  nistAlgorithms OBJECT IDENTIFIER ::= { joint-iso-ccitt(2)
      country(16) us(840) organization(1) gov(101) csor(3)
      nistAlgorithm(4) }
  kems OBJECT IDENTIFIER ::= { nistAlgorithms 4 }

  id-alg-ml-kem-512 OBJECT IDENTIFIER ::= { kems 1 }

  id-alg-ml-kem-768 OBJECT IDENTIFIER ::= { kems 2 }

  id-alg-ml-kem-1024 OBJECT IDENTIFIER ::= { kems 3 }

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

  id-alg-hkdf-with-sha256 OBJECT IDENTIFIER ::= { iso(1)
      member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
      smime(16) alg(3) 28 }

  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>The Security Considerations sections of <xref target="I-D.ietf-lamps-kyber-certificates"/> and <xref target="RFC9629"/> apply to this specification as well.</t>
      <t>For ML-KEM-specific security considerations refer to <xref target="I-D.sfluhrer-cfrg-ml-kem-security-considerations"/>.</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 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 preimage strength, and the symmetric key-encryption algorithm <bcp14>SHOULD</bcp14> have a security strength of at least 128 bits. 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 preimage strength, and the symmetric key-encryption algorithm <bcp14>SHOULD</bcp14> have a security strength of at least 192 bits. In the case of AES Key Wrap, 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 preimage strength, and the symmetric key-encryption algorithm <bcp14>SHOULD</bcp14> have a security strength of at least 256 bits.</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 for well-formed inputs. 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 of <xref target="FIPS203"/> and reproduced here in <xref target="tab-fail"/>.</t>
      <table anchor="tab-fail">
        <name>ML-KEM decapsulation failure 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^(-138.8)</td>
          </tr>
          <tr>
            <td align="left">ML-KEM-768</td>
            <td align="left">2^(-164.8)</td>
          </tr>
          <tr>
            <td align="left">ML-KEM-1024</td>
            <td align="left">2^(-174.8)</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>For the ASN.1 Module in <xref target="asn1"/>, IANA is requested to assign an object identifier (OID) for the module identifier (TBD1) with a Description of "id-mod-cms-ml-kem-2024". The OID for the module should be allocated in the "SMI Security for S/MIME Module Identifier" registry (1.2.840.113549.1.9.16.0).</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, Jonathan Hammel, and Sean Turner for the detailed review and Carl Wallace for interoperability testing.</t>
      <!-- End of acknowledgements section -->

</section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="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>
        <reference anchor="X680" target="https://www.itu.int/rec/T-REC-X.680">
          <front>
            <title>Information technology - Abstract Syntax Notation One (ASN.1): Specification of basic notation</title>
            <author>
              <organization>ITU-T</organization>
            </author>
            <date year="2021" month="February"/>
          </front>
          <seriesInfo name="ITU-T Recommendation" value="X.680"/>
          <seriesInfo name="ISO/IEC" value="8824-1:2021"/>
        </reference>
        <reference anchor="RFC9629">
          <front>
            <title>Using Key Encapsulation Mechanism (KEM) Algorithms in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="J. Gray" initials="J." surname="Gray"/>
            <author fullname="T. Okubo" initials="T." surname="Okubo"/>
            <date month="August" 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="RFC" value="9629"/>
          <seriesInfo name="DOI" value="10.17487/RFC9629"/>
        </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="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="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>
        <reference anchor="RFC8619">
          <front>
            <title>Algorithm Identifiers for the HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>RFC 5869 specifies the HMAC-based Extract-and-Expand Key Derivation Function (HKDF) algorithm. This document assigns algorithm identifiers to the HKDF algorithm when used with three common one-way hash functions.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8619"/>
          <seriesInfo name="DOI" value="10.17487/RFC8619"/>
        </reference>
        <reference anchor="RFC3394">
          <front>
            <title>Advanced Encryption Standard (AES) Key Wrap Algorithm</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="September" year="2002"/>
          </front>
          <seriesInfo name="RFC" value="3394"/>
          <seriesInfo name="DOI" value="10.17487/RFC3394"/>
        </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="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="I-D.ietf-lamps-kyber-certificates">
          <front>
            <title>Internet X.509 Public Key Infrastructure - Algorithm Identifiers for the Module-Lattice-Based Key-Encapsulation Mechanism (ML-KEM)</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="4" month="November" year="2024"/>
            <abstract>
              <t>   The Module-Lattice-Based Key-Encapsulation Mechanism (ML-KEM) is a
   quantum-resistant key-encapsulation mechanism (KEM).  This document
   describes the conventions for using the ML-KEM in X.509 Public Key
   Infrastructure.  The conventions for the subject public keys and
   private keys are also described.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-kyber-certificates-06"/>
        </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="RFC5911">
          <front>
            <title>New ASN.1 Modules for Cryptographic Message Syntax (CMS) and S/MIME</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="June" year="2010"/>
            <abstract>
              <t>The Cryptographic Message Syntax (CMS) format, and many associated formats, are expressed using ASN.1. The current ASN.1 modules conform to the 1988 version of ASN.1. This document updates those ASN.1 modules to conform to the 2002 version of ASN.1. There are no bits-on-the-wire changes to any of the formats; this is simply a change to the syntax. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5911"/>
          <seriesInfo name="DOI" value="10.17487/RFC5911"/>
        </reference>
        <reference anchor="FIPS180" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf">
          <front>
            <title>Secure Hash Standard</title>
            <author fullname="Quynh H. Dang" surname="Dang">
              <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="July" year="2015"/>
          </front>
          <seriesInfo name="NIST Federal Information Processing Standards Publications" value="180-4"/>
          <seriesInfo name="DOI" value="10.6028/NIST.FIPS.180-4"/>
        </reference>
        <reference anchor="I-D.sfluhrer-cfrg-ml-kem-security-considerations">
          <front>
            <title>ML-KEM Security Considerations</title>
            <author fullname="Scott Fluhrer" initials="S." surname="Fluhrer">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Quynh Dang" initials="Q." surname="Dang">
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <author fullname="John Preuss Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Kevin Milner" initials="K." surname="Milner">
              <organization>Quantinuum</organization>
            </author>
            <author fullname="Daniel Shiu" initials="D." surname="Shiu">
              <organization>Arqit Quantum Inc</organization>
            </author>
            <date day="19" month="November" year="2024"/>
            <abstract>
              <t>   NIST standardized ML-KEM as FIPS 203 in August 2024.  This document
   discusses how to use ML-KEM - that is, what problem it solves, and
   how to use it securely.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-sfluhrer-cfrg-ml-kem-security-considerations-02"/>
        </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="30" month="July" year="2024"/>
            <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 RFC XXXX.
   This document obsoletes RFC 5990.

   RFC EDITOR: Please replace XXXX with the RFC number assigned to
   draft-ietf-lamps-cms-kemri.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-rfc5990bis-10"/>
        </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="4" month="November" year="2024"/>
            <abstract>
              <t>   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-09"/>
        </reference>
      </references>
    </references>
    <?line 348?>

<section anchor="asn1">
      <name>ASN.1 Module</name>
      <t>This appendix includes the ASN.1 module <xref target="X680"/> for ML-KEM. This module imports objects from <xref target="RFC5911"/>, <xref target="RFC9629"/>, <xref target="RFC8619"/>, <xref target="I-D.ietf-lamps-kyber-certificates"/>.</t>
      <t>RFC EDITOR: Please replace TBD2 with the value assigned by IANA during the publication of <xref target="I-D.ietf-lamps-kyber-certificates"/>. Also please replace <xref target="I-D.ietf-lamps-kyber-certificates"/> in the module with a reference to the published RFC.</t>
      <sourcecode markers="true"><![CDATA[
CMS-ML-KEM-2024
{ iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
  pkcs-9(9) smime(16) modules(0) id-mod-cms-ml-kem-2024(TBD1) }

DEFINITIONS IMPLICIT TAGS ::= BEGIN

EXPORTS ALL;

IMPORTS
  SMIME-CAPS
    FROM AlgorithmInformation-2009  -- [RFC5911]
      { iso(1) identified-organization(3) dod(6) internet(1)
        security(5) mechanisms(5) pkix(7) id-mod(0)
        id-mod-algorithmInformation-02(58) }

  KEM-ALGORITHM
    FROM KEMAlgorithmInformation-2023  -- [RFC9629]
       { iso(1) identified-organization(3) dod(6) internet(1)
         security(5) mechanisms(5) pkix(7) id-mod(0)
         id-mod-kemAlgorithmInformation-2023(109) }

  kda-hkdf-with-sha256
    FROM HKDF-OID-2019  -- [RFC8619]
       { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
         pkcs-9(9) smime(16) modules(0) id-mod-hkdf-oid-2019(68) }

  kwa-aes128-wrap, kwa-aes256-wrap
    FROM CMSAesRsaesOaep-2009  -- [RFC5911]
       { iso(1) member-body(2) us(840) rsadsi(113549)
       pkcs(1) pkcs-9(9) smime(16) modules(0)
       id-mod-cms-aes-02(38) }

  id-alg-ml-kem-512, id-alg-ml-kem-768, id-alg-ml-kem-1024,
  pk-ml-kem-512, pk-ml-kem-768, pk-ml-kem-1024
    FROM X509-ML-KEM-2024 -- [I-D.ietf-lamps-kyber-certificates]
       { iso(1) identified-organization(3) dod(6)
         internet(1) security(5) mechanisms(5) pkix(7) id-mod(0)
         id-mod-x509-ml-kem-2024(TBD2) };

--
-- ML-KEM Key Encapsulation Mechanism Algorithms
--

kema-ml-kem-512 KEM-ALGORITHM ::= {
   IDENTIFIER id-alg-ml-kem-512
   PARAMS ARE absent
   PUBLIC-KEYS { pk-ml-kem-512 }
   UKM ARE optional
   SMIME-CAPS { IDENTIFIED BY id-alg-ml-kem-512 } }

kema-ml-kem-768 KEM-ALGORITHM ::= {
   IDENTIFIER id-alg-ml-kem-768
   PARAMS ARE absent
   PUBLIC-KEYS { pk-ml-kem-768 }
   UKM ARE optional
   SMIME-CAPS { IDENTIFIED BY id-alg-ml-kem-768 } }

kema-ml-kem-1024 KEM-ALGORITHM ::= {
   IDENTIFIER id-alg-ml-kem-1024
   PARAMS ARE absent
   PUBLIC-KEYS { pk-ml-kem-1024 }
   UKM ARE optional
   SMIME-CAPS { IDENTIFIED BY id-alg-ml-kem-1024 } }

-- Updates for the SMIME-CAPS Set from RFC 5911

SMimeCapsSet SMIME-CAPS ::=
   { kema-ml-kem-512.&smimeCaps |
     kema-ml-kem-768.&smimeCaps |
     kema-ml-kem-1024.&smimeCaps |
     kda-hkdf-with-sha256.&smimeCaps |
     kwa-aes128-wrap.&smimeCaps |
     kwa-aes256-wrap.&smimeCaps,
     ... }

END
]]></sourcecode>
    </section>
    <section anchor="arnold">
      <name>Security Strengths</name>
      <t>Instead of defining the strength of a quantum algorithm in a traditional
manner using the imprecise notion of bits of security, NIST has
defined security levels by picking a reference scheme, which
NIST expects to offer notable levels of resistance to both quantum and
classical attack.  To wit, a KEM algorithm that achieves NIST PQC
security must require computational resources to break IND-CCA2
security comparable or greater than that required for key search
on AES-128, AES-192, and AES-256 for Levels 1, 3, and 5, respectively.
Levels 2 and 4 use collision search for SHA-256 and SHA-384 as reference.</t>
      <table anchor="tab-strengths">
        <name>ML-KEM security strengths and sized</name>
        <thead>
          <tr>
            <th align="left">Level</th>
            <th align="left">Parameter Set</th>
            <th align="left">Encap. Key</th>
            <th align="left">Decap. Key</th>
            <th align="left">Ciphertext</th>
            <th align="left">Secret</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">1</td>
            <td align="left">ML-KEM-512</td>
            <td align="left">800</td>
            <td align="left">1632</td>
            <td align="left">768</td>
            <td align="left">32</td>
          </tr>
          <tr>
            <td align="left">3</td>
            <td align="left">ML-KEM-768</td>
            <td align="left">1184</td>
            <td align="left">2400</td>
            <td align="left">1952</td>
            <td align="left">32</td>
          </tr>
          <tr>
            <td align="left">5</td>
            <td align="left">ML-KEM-1024</td>
            <td align="left">1568</td>
            <td align="left">3168</td>
            <td align="left">2592</td>
            <td align="left">32</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="ml-kem-cms-enveloped-data-example">
      <name>ML-KEM CMS Enveloped-Data Example</name>
      <t>This example shows the establishment of an AES-128 content-encryption
key using:</t>
      <ul spacing="normal">
        <li>
          <t>ML-DSA-512 and HKDF with SHA-256;</t>
        </li>
        <li>
          <t>KEMRecipientInfo key derivation using HKDF with SHA-256; and</t>
        </li>
        <li>
          <t>KEMRecipientInfo key wrap using AES-128-KEYWRAP.</t>
        </li>
      </ul>
      <t>In real-world use, the originator would encrypt the content-
encryption key in a manner that would allow decryption with their own
private key as well as the recipient's private key.  This is omitted
in an attempt to simplify the example.</t>
      <section anchor="originator-cms-processing">
        <name>Originator CMS Processing</name>
        <t>Alice obtains Bob's ML-KEM-512 public key:</t>
        <artwork><![CDATA[
-----BEGIN PUBLIC KEY-----
MIIDMjALBglghkgBZQMEBAEDggMhADmVgV5ZfRBDVc8pqlMzyTJRhp1bzb5IcST2
Ari2pmwWxHYWSK12XPXYAGtRXpBafwrAdrDGLvoygVPnylcBaZ8TBfHmvG+QsOSb
aTUSts6ZKouAFt38GmYsfj+WGcvYad13GvMIlszVkYrGy3dGbF53mZbWf/mqvJdQ
Pyx7fi0ADYZFD7GAfKTKvaRlgloxx4mht6SRqzhydl0yDQtxkg+iE8lAk0Frg7gS
Tmn2XmLLUADcw3qpoP/3OXDEdy81fSQYnKb1MFVowOI3ajdipoxgXlY8XSCVcuD8
dTLKKUcpU1VntfxBPF6HktJGRTbMgI+YrddGZPFBVm+QFqkKVBgpqYoEZM5BqLtE
wtT6PCwglGByjvFKGnxMm5jRIgO0zDUpFgqasteDj3/2tTrgWqMafWRrevpsRZMl
JqPDdVYZvplMIRwqMcBbNEeDbLIVC+GCna5rBMVTXP9Ubjkrp5dBFyD5JPSQpaxU
lfITVtVQt4KmTBaItrZVvMeEIZekNML2Vjtbfwmni8xIgjJ4NWHRb0y6tnVUAAUH
gVcMZmBLgXrRJSKUc26LAYYaS1p0UZuLb+UUiaUHI5Llh2JscTd2V10zgGocjicy
r5fCaA9RZmMxxOuLvAQxxPloMtrxs8RVKPuhU/bHixwZhwKUfM0zdyekb7U7oR3l
y0GRNGhZUWy2rXJADzzyCbI2rvNaWArIfrPjD6/WaXPKin3SZ1r0H3oXthQzzRr4
D3cIhp9mVIhJeYCxrBCgzctjagDthoGzXkKRJMqANQcluF+DperDpKPMFgCQPmUp
NWC5szblrw1SnawaBIEZMCy3qbzBELlIUb8CEX8ZncSFqFK3Rz8JuDGmgx1bVMC3
kNIlz2u5LZRiomzbM92lEjx6rw4moLg2Ve6ii/OoB0clAY/WuuS2Ac9huqtxp6PT
UZejQ+dLSicsEl1UCJZCbYW3lY07OKa6mH7DciXHtEzbEt3kU5tKsII2NoPwS/eg
nMXEHf6DChsWLgsyQzQ2LwhKFEZ3IzRLrdAA+NjFN8SPmY8FMHzr0e3guBw7xZoG
WhttY7Js
-----END PUBLIC KEY-----
]]></artwork>
        <t>Bob's ML-KEM-512 public key has the following key identifier:</t>
        <artwork><![CDATA[
599788C37AED400EE405D1B2A3366AB17D824A51
]]></artwork>
        <t>Alice generates a shared secret and ciphertext using Bob's ML-KEM-512 public key, derives the key-encryption key from the shared secret and CMSORIforKEMOtherInfo using HKDF with SHA-256, randomly generates a 128-bit content-encryption key, uses AES-128-KEYWRAP to encrypt the content-encryption key with the key-encryption key, encrypts the plaintext content with the content-encryption key and encodes the EnvelopedData (using KEMRecipientInfo) and ContentInfo, and then sends the result to Bob.</t>
        <t>The Base64-encoded result is:</t>
        <artwork><![CDATA[
-----BEGIN CMS-----
MIID8gYLKoZIhvcNAQkQARegggPhMIID3QIBADGCA4ikggOEBgsqhkiG9w0BCRAN
AzCCA3MCAQCAFFmXiMN67UAO5AXRsqM2arF9gkpRMAsGCWCGSAFlAwQEAQSCAwDz
6kG2NhIUhlAHMA3HCeC8G9o0Ey8HMa//d2N7a7e92ba+Xrwfp9NKfiwH3r26CvqG
Aj5LgU/hbzNkFGw1AfgXDQTcpHEjfPB2R/x6OxiuV6KPxOjqHbjDvyRoclHHrGfG
i4uBkgPSAXrBlzXop9n7F4sxae2grAJIWX8sl/Vs6BRcKmuAIXbriZTQnEoojgyr
ncDz3owBMBdLvA7STNEJ9vt3WaGV07/3qjSCHsxynDwWpiHYwf3Q++/VlZNrPnzZ
B/ulQtAWweHxgTpvX0k8WnCKSl9S5qGIMK2Tc4KBMSqb02pkSMDV/YEKCwPyFgIO
hEleCys+umJmUAbGm0cmH0Kev0sHAnYvg02uebvK2xFW6uboTy0Txj8okoy5sP6h
mRekF6qgrEEa3/CjkSAxW9iv986h64UUU0cWZeEaEl0eYR6LOf3e16ZPSYDC8Xo7
VjAZvYuf8QuLlqDCw73Rp+PT+fkFqfY4dxGXwZYMU/UOuQqi2IsT86W8gmsQPhEv
7EvSScX8TJSDsrQOVrGoHc5OymRmuepkn17ORYyrR8iKEDVJEDCGesJbgcCoi2VT
LFdDYOzMn1T6gSsmyg3KGWLqdn8csG/mPjKblyBmlYbM8KT4ICqQx1nBngGUfMIV
+v4wY9s0vcLSTBI5QCbgPRrIzz0B97sZdcp29uXA4Qlz2riuRpn38up1G90BGxvo
lukVQ8djNhhGgC60UJwA3bRn+O2xo/cSBkMSLJIIqA5QSY+zcPu90MqvN1JFkbO6
YJQbtuFvQ9hAmHJNrWRaXRGLJuH8gxUhG2bhOn5jjtgmVdKHx8gFDxHs13IQMHAU
//u5JHvJOnC8HLWPIbMTXa0giC7H22Gf7GMdYVG0pNr37wEJkfd7D4OKM5S0fXH3
4moC701Bgypt0D+inpqd+Vdyzylg5KkkoLcQqiE1tAPYc2FCSJNhZe/xA4/WOkoO
HS6/FvFcNaIxkwmNDl9BM4J+Zv4zxqcrqjSUuRM9r/IepBU22+EltUGXug15v+Mw
DQYLKoZIhvcNAQkQAxwCASAwCwYJYIZIAWUDBAEtBCgSWjJGbANW6249qJezunw8
TekPnqeXQxQsCApolNdBREvHJzVFD8fxMDoGCSqGSIb3DQEHATAeBglghkgBZQME
AS4wEQQM09P1v4RTaKUfxd6/AgEQgA0W/2sAf/+wpWYbxab8BBAcFxeZJbrC7Ifl
jQHB7vah
-----END CMS-----
]]></artwork>
        <t>This result decodes to:</t>
        <artwork><![CDATA[
   0 1010: SEQUENCE {
   4   11:  OBJECT IDENTIFIER
         :   authEnvelopedData (1 2 840 113549 1 9 16 1 23)
  17  993:  [0] {
  21  989:   SEQUENCE {
  25    1:    INTEGER 0
  28  904:    SET {
  32  900:     [4] {
  36   11:      OBJECT IDENTIFIER '1 2 840 113549 1 9 16 13 3'
  49  883:      SEQUENCE {
  53    1:       INTEGER 0
  56   20:       [0]
         :    59 97 88 C3 7A ED 40 0E E4 05 D1 B2 A3 36 6A B1
         :    7D 82 4A 51
  78   11:       SEQUENCE {
  80    9:        OBJECT IDENTIFIER '2 16 840 1 101 3 4 4 1'
         :         }
  91  768:       OCTET STRING
         :    F3 EA 41 B6 36 12 14 86 50 07 30 0D C7 09 E0 BC
         :    1B DA 34 13 2F 07 31 AF FF 77 63 7B 6B B7 BD D9
         :    B6 BE 5E BC 1F A7 D3 4A 7E 2C 07 DE BD BA 0A FA
         :    86 02 3E 4B 81 4F E1 6F 33 64 14 6C 35 01 F8 17
         :    0D 04 DC A4 71 23 7C F0 76 47 FC 7A 3B 18 AE 57
         :    A2 8F C4 E8 EA 1D B8 C3 BF 24 68 72 51 C7 AC 67
         :    C6 8B 8B 81 92 03 D2 01 7A C1 97 35 E8 A7 D9 FB
         :    17 8B 31 69 ED A0 AC 02 48 59 7F 2C 97 F5 6C E8
         :    14 5C 2A 6B 80 21 76 EB 89 94 D0 9C 4A 28 8E 0C
         :    AB 9D C0 F3 DE 8C 01 30 17 4B BC 0E D2 4C D1 09
         :    F6 FB 77 59 A1 95 D3 BF F7 AA 34 82 1E CC 72 9C
         :    3C 16 A6 21 D8 C1 FD D0 FB EF D5 95 93 6B 3E 7C
         :    D9 07 FB A5 42 D0 16 C1 E1 F1 81 3A 6F 5F 49 3C
         :    5A 70 8A 4A 5F 52 E6 A1 88 30 AD 93 73 82 81 31
         :    2A 9B D3 6A 64 48 C0 D5 FD 81 0A 0B 03 F2 16 02
         :    0E 84 49 5E 0B 2B 3E BA 62 66 50 06 C6 9B 47 26
         :    1F 42 9E BF 4B 07 02 76 2F 83 4D AE 79 BB CA DB
         :    11 56 EA E6 E8 4F 2D 13 C6 3F 28 92 8C B9 B0 FE
         :    A1 99 17 A4 17 AA A0 AC 41 1A DF F0 A3 91 20 31
         :    5B D8 AF F7 CE A1 EB 85 14 53 47 16 65 E1 1A 12
         :    5D 1E 61 1E 8B 39 FD DE D7 A6 4F 49 80 C2 F1 7A
         :    3B 56 30 19 BD 8B 9F F1 0B 8B 96 A0 C2 C3 BD D1
         :    A7 E3 D3 F9 F9 05 A9 F6 38 77 11 97 C1 96 0C 53
         :    F5 0E B9 0A A2 D8 8B 13 F3 A5 BC 82 6B 10 3E 11
         :    2F EC 4B D2 49 C5 FC 4C 94 83 B2 B4 0E 56 B1 A8
         :    1D CE 4E CA 64 66 B9 EA 64 9F 5E CE 45 8C AB 47
         :    C8 8A 10 35 49 10 30 86 7A C2 5B 81 C0 A8 8B 65
         :    53 2C 57 43 60 EC CC 9F 54 FA 81 2B 26 CA 0D CA
         :    19 62 EA 76 7F 1C B0 6F E6 3E 32 9B 97 20 66 95
         :    86 CC F0 A4 F8 20 2A 90 C7 59 C1 9E 01 94 7C C2
         :    15 FA FE 30 63 DB 34 BD C2 D2 4C 12 39 40 26 E0
         :    3D 1A C8 CF 3D 01 F7 BB 19 75 CA 76 F6 E5 C0 E1
         :    09 73 DA B8 AE 46 99 F7 F2 EA 75 1B DD 01 1B 1B
         :    E8 96 E9 15 43 C7 63 36 18 46 80 2E B4 50 9C 00
         :    DD B4 67 F8 ED B1 A3 F7 12 06 43 12 2C 92 08 A8
         :    0E 50 49 8F B3 70 FB BD D0 CA AF 37 52 45 91 B3
         :    BA 60 94 1B B6 E1 6F 43 D8 40 98 72 4D AD 64 5A
         :    5D 11 8B 26 E1 FC 83 15 21 1B 66 E1 3A 7E 63 8E
         :    D8 26 55 D2 87 C7 C8 05 0F 11 EC D7 72 10 30 70
         :    14 FF FB B9 24 7B C9 3A 70 BC 1C B5 8F 21 B3 13
         :    5D AD 20 88 2E C7 DB 61 9F EC 63 1D 61 51 B4 A4
         :    DA F7 EF 01 09 91 F7 7B 0F 83 8A 33 94 B4 7D 71
         :    F7 E2 6A 02 EF 4D 41 83 2A 6D D0 3F A2 9E 9A 9D
         :    F9 57 72 CF 29 60 E4 A9 24 A0 B7 10 AA 21 35 B4
         :    03 D8 73 61 42 48 93 61 65 EF F1 03 8F D6 3A 4A
         :    0E 1D 2E BF 16 F1 5C 35 A2 31 93 09 8D 0E 5F 41
         :    33 82 7E 66 FE 33 C6 A7 2B AA 34 94 B9 13 3D AF
         :    F2 1E A4 15 36 DB E1 25 B5 41 97 BA 0D 79 BF E3
 863   13:       SEQUENCE {
 865   11:        OBJECT IDENTIFIER
         :         hkdfWithSha256 (1 2 840 113549 1 9 16 3 28)
         :         }
 878    1:       INTEGER 32
 881   11:       SEQUENCE {
 883    9:        OBJECT IDENTIFIER
         :         aes256-wrap (2 16 840 1 101 3 4 1 45)
         :         }
 894   40:       OCTET STRING
         :    12 5A 32 46 6C 03 56 EB 6E 3D A8 97 B3 BA 7C 3C
         :    4D E9 0F 9E A7 97 43 14 2C 08 0A 68 94 D7 41 44
         :    4B C7 27 35 45 0F C7 F1
         :        }
         :       }
         :      }
 936   58:    SEQUENCE {
 938    9:     OBJECT IDENTIFIER data (1 2 840 113549 1 7 1)
 949   30:     SEQUENCE {
 951    9:      OBJECT IDENTIFIER
         :       aes256-GCM (2 16 840 1 101 3 4 1 46)
 962   17:      SEQUENCE {
 964   12:       OCTET STRING D3 D3 F5 BF 84 53 68 A5 1F C5 DE BF
 978    1:       INTEGER 16
         :        }
         :       }
 981   13:     [0] 16 FF 6B 00 7F FF B0 A5 66 1B C5 A6 FC
         :      }
 996   16:    OCTET STRING
         :    1C 17 17 99 25 BA C2 EC 87 E5 8D 01 C1 EE F6 A1
         :     }
         :    }
         :   }
]]></artwork>
      </section>
      <section anchor="recipient-cms-processing">
        <name>Recipient CMS Processing</name>
        <t>Bob's ML-KEM-512 private key:</t>
        <artwork><![CDATA[
-----BEGIN PRIVATE KEY-----
MFICAQAwCwYJYIZIAWUDBAQBBEAAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRob
HB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/
-----END PRIVATE KEY-----
]]></artwork>
        <t>Bob decapsulates the ciphertext in the KEMRecipientInfo to get the ML-KEM-512 shared secret, derives the key-encryption key from the shared secret and CMSORIforKEMOtherInfo using HKDF with SHA-256, uses AES-128-KEYWRAP to decrypt the content-encryption key with the key-encryption key, and decrypts the encrypted contents with the content-encryption key, revealing the plaintext content:</t>
        <artwork><![CDATA[
Hello, world!
]]></artwork>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
OOK+2Q93i9lXW1ccdSG2/FltNhRGS1d+Wt7c3KtNc1t6W3m989LdU1Of7BVp
Ouw/u9djqdt68LZ3nZLxOrFX3m725DwrT0PtwVw3FWEyurm+vjdX99KDG053
jV6rerkIr9qD0bg763x99ieT9kuv1XhYfu233hbXD43Z6u3Z01+6lcbbTagL
23BU7WnbmdNu7F83reu2u+suK6+DzuxOfG/er1qzNwPihOZr6VwOR/7s8a1r
TB8HvrVZBYOXriNcvfWak4fnl83K6XYG27eu2Rjf6lZzfNN50L62Ndeo+I3u
w+ipV78fvy78VWXSaO2blavesL8ydveCM+2MHsKHfli+Xo4aRif0Xx42XUvv
vFiL2+6N/PAajqfbpWsru87s9ap8+3g5GIv7aug+3Kvq/aUwezC7L8vGzezJ
H1wNgRpy9UZ9fjaG0kq8f1nfjL/e39vG/WWncuPM5avAHE3kB0l8n7U989U2
94JfmWqGWh+8LLu73d36ZqP2d7ue43VDfxcog4fr3np+fz6+tHfbl/n2+n7a
Fd8ne2sxrt3XvEHJEfZie3Dbnr/cP+5l/+lKbb6/77VxR/Y3t8aj6nemfu+1
WT1/NJ5617ZbGr5IvnhZ8p7Cef/9feCXhWbJ7MxX9eVDZ35lPWs7v6HN3s3w
1Zg1w7nXfn9aXA+uum/qbd901q2vzZXlN1fXvW5rpvV7y/uVcPuoVYL3seNv
paFrbI1GB1is7Utv4/eGfuN07seKpj8pL645bL21rkuDd+Vq3WwvZztp/NDV
SsLituO8y+vKzcvA9pbv425ddvTXXdXflpfezUx+sKq2fX7nNUTTUZ/PH9fr
oaya9fn6Ldytqr2RcP9ivfa/Tm6GthnojnSvXb1o4+fHkvMs1u6ujerystY0
7afLUH8f62FpcV8Jr4NOR771etvhuTUT3O6TfjmtNrV58HgzC/b99758s51f
t/SXUud9cONPVPXr7WvrVhn2ls9Kq3v57otWabZubGu7F68tPM7D8Ll2FTCj
A5HwgcmhcfEnRgvD0dxlOGq24wYDt2qVer2mKFqpBuYK3Luul8VKU2rIaqlU
raoNqdZU5LJakdiGzGbynrL1W61g7og+gfKMebzUq0Y+eqPQ4T5Hb5R/5DbP
eFvc2Wegj46TfnRwAnxkkHek3/fmjcw974N1+XeG9srBFiHSK7r+Es/9YG1E
n16u54SLwxsa3ZwwGuTjA/ZuNI2t2KHvcuCHXlx6rCvywvTgB+AIbONHF/Dd
xdVyge2YnA0JDh0j1rRjj6jMnm+uvZfOfGPeqv1FXx1Ys9msN8ffSv1OQ222
NbVsL2azO70xC97mC7td34oNbaDeCuo7pBKlrqb2NbXVWj7Z3dtq7V69q6hP
g+CtKxt+qz5brAZdNWhrj1p7qLYcddvX1f5QU7fNd6G6aMu388793FEvu2rp
UrM0pV33RH2vXHaN8/OJfFszalZdHhtfn/ztdFW/vZ7a28uSL1e1zVtbUF8r
N7P78/n4/XbRam8ldTp7avZH5upSf532GvLgfFe929nrh+p1b3f3+nY5fm1u
9gPPdC4v/fa0LdjldWMx6w3VJ7/hvD95q7pba5WDnWHJM1+96jw+KYFz/hBU
GwPzerlWO09j334Z9V3d815ne19wzeZ7yds2uo0JGPLacHSrX9U3YenRaD+I
tfPS2+tQuwx2e7e5fVzZl8/baan/9ev5g/Ny6/fc9xehcb52+qH6uLUud7PR
avMkLpRHV7seOvVh5a3d6V7LI7N83egO38aivFoMu82H82f9Wtv29q1Z506Y
646l7YOv6+XV8l4dt5eiubwUr62NGFyq7vNmJspra7y5lnetx+p67I324mj3
qngLb18JetW5sBxYi1b1bebrulE6114XQ3X3WLc3daU6r5bv7+9F8/HF0g3d
Ea3nQfXmblqypOpLb/jc1JQnryY8vKovm+f1VOmvb5y3pratlQarr73R1+mi
9TZ9Lk927afty3P3/vz+bt1/s+VOMFKqj8psGfR7c30j1PTNcGg+KaOrYTPw
+3cPftu7NCt3++VgubZWC1eq3Q2e9/5Asa/15sOV3tTaVnA1npmaZ8sPI+Gm
NWk+3713XWlUnQ2D5X5Wum4/3rxNXMUM2ufL3uv12Nk3ls7zuKtcj8od7a2/
k9yGO2uDe+08CF835e1zPRA35s1w1OhU+tp41hv4nfd3sVGvBS8TcyXX109q
uQ9uy7fXg5VbUtYrqV0XG+3dxhOc9eKhr0xeb+fz9kyrivdXW7U0Hrhf7+Sd
d24OG4vu8Oaq03lTK/3h89d3s7eui923za101VqM76rC81V/HK5bm359ri4v
r279x4HxNGjfXK0vldnuft6Wx/M7t/L6Gs6WD5Pry50yazV3l4FU6vS7l+q9
cH6+rlxdbq7uXE25vHnsdcbd0ZMhzmytdinL7Wmt3Z08P7TF1a1fqm31q8V0
UmuW7667laE4fbosCeB5tZooNWZgxcTmV9tdvU2+Pkz273tnVrleLLwbE5in
S6Haezbllja8up2/WOc7tXz+eLfw7oTLYfW8tWmZt0Znt9gub5tOvdEtX319
2ZTfd2+mD7pwvx506/55x1o17mX5q+6E9+2n9UyqbL52t0Kzn7NGu62mDtWt
tn2+eu68dNTH+ybE7CGEK8PH16v2WL19rMrl+tuV9b52t4owshY998166u/6
gaauPOd20hjom8ur94dWU5nuuk2vrQ3f2sPOuNTs65fqSLXSCYGgDstbvd/v
ivWetCkPRgaEX7tJ9Vyd6f2ZKj6ey4E6Pf+6XT0+j3fGWGk0VLO1s16uxr5W
60wd4bV/2ahtjHkSFcT2lnrnEXuhF7XOkIIx9+DF19WISCRREi+SK4q0dIrp
uSRdkMOrOEmZHf8mFmzF5xyNRGSilGFZ2gMhEoF/q/A/md5Tk2qE1OslmPs3
8e90L1mCJ0odV8vAINOigUT/zpjO7Uhv6wOCf4EApNukLpbp86E+omOxQFAX
RfqM/K3MFi5VIyTwz+Gdop8/gLRESj/DdHhCFKXEp2dAq5QS0HLQVXBTWYx+
AiSzBCOVOqnXYGGilUhNJXqTAASiTvQyESukKZGGTNQSAl9VSUPKza41iSKT
skoq+EtNSWOYhVGhVZl69Nsx/GVElxIAZYCUgOtlIv2c25L+wbp3HRhVqyrR
wzttBNQfjgad23ZuSqtEdJWUAZcqIgLRnVQmSpVUANMaKcF/QUprRKwTXSQN
LTdbapCmSkpl5ITcojMkorZIq0VqNVIFsjVItUEaNdJokmY9Nxu2bOikosO6
RGoRtUaaJSRYTSeyhotht71JGioRVdJSc7MBSFEmJZ2UG0SRSLlFdIlUW6RU
ItUyYlHVSKlCgFotBWQ5NxvQEsukqRG1TGoo8aSmkZYIVCPlGmlpyPBSg0gK
hI+kkp+tgjS2iFYmuoLkkwBIKiWNFpFhY4XUZGA7Ek7VSDU/WwNWNug/IMcy
EUukKSOcsKUmocgB2LAw0qNOWo08zWs4FehcraNIqiLuAZQoKyiwtRbSDtZo
VZAAupKfXSYVjcgqsgXkDjQaMNbhM8g60EMkdQ1ZAJqr6ETM81ttkDrIg4hi
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
450Reqbl3+iT/ws/HeVNJ30AAA==

-->

</rfc>
