<?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-06" 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-06"/>
    <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="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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
avMkLORHV70ZOLVB+a3Z7txIQ7N0U+8M3saCtFoMOtrD5bN+o267+8asfZ+b
646l7oOv6+X1cqSMm0vBXLaEG2sjBC3Ffd7MBGltjTc30q7xWFmPveFeGO5e
ZW/h7ctBtzLPLfvWolF5m/m6bhQv1dfFQNk91uxNTa7MK6XRaCSYjy+WbuiO
YD33K7f306IlVl66g2dNlZ+8au7hVXnZPK+ncm9967xp6rZa7K++dodfp4vG
2/S5NNk1n7Yvz53R5eh+3XuzpXYwlCuP8mwZ9LpzfZOr6pvBwHySh9cDLfB7
9w9+02uZ5fv9sr9cW6uFK1bv+897vy/bN7r2cK1ratMKrsczU/Vs6WGYu21M
tOf7944rDiuzQbDcz4o3zcfbt4krm0Hzctl9vRk7+/rSeR535Jthqa2+9Xai
W3dnTXCv7Yfc101p+1wLhI15OxjW2+WeOp51+377/V2o16rBy8RcSbX1k1Lq
gdvy7XV/5Rbl9Ups1oR6c7fxcs568dCTJ69383lzplaE0fVWKY777td7aedd
moP6ojO4vW6335Ryb/D89d3srmtC521zJ143FuP7Su75ujcO141NrzZXlq3r
O/+xbzz1m7fX65Y8243mTWk8v3fLr6/hbPkwuWnt5FlD27UCsdjudVrKKHd5
uS5ftzbX964qt24fu+1xZ/hkCDNbrbYkqTmtNjuT54emsLrzi9Wtfr2YTqpa
6f6mUx4I06dWMQeeV60KYn0GVkzQvtru6m3y9WGyf987s/LNYuHdmsA8XQyV
7rMpNdTB9d38xbrcKaXLx/uFd59rDSqXjU3DvDPau8V2eac5tXqndP31ZVN6
372ZPujCaN3v1PzLtrWqjyTpq+6Eo+bTeiaWN18725zWy1ij3VZVBspW3T5f
P7df2srjSIOYPYRwZfD4et0cK3ePFalUe7u23tfuVs4NrUXXfbOeerteoCor
z7mb1Pv6pnX9/tDQ5Omuo3lNdfDWHLTHRa2nt5ShYiUTgpwyKG31Xq8j1Lri
ptQfGhB+7SaVS2Wm92aK8HgpBcr08ut29fg83hljuV5XzMbOerke+2q1PXVy
r71Wvbox5nFUcLC31DsP2Y/zUOsMKRhzD97h6gkRiCiIwlV83YiWQUrwjyhe
keO2+rhkhv9XBTxWyzgakUhELsGytJ5JRAL/VOA/Er1zIlYJqdWKMPevwt/o
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
/wvP3gQE83gAAA==

-->

</rfc>
