<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.5 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-cms-kyber-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.4 -->
  <front>
    <title abbrev="ML-KEM in CMS">Use of ML-KEM in the Cryptographic Message Syntax (CMS)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-kyber-02"/>
    <author initials="J." surname="Prat" fullname="Julien Prat">
      <organization>CryptoNext Security</organization>
      <address>
        <postal>
          <street>16, Boulevard Saint-Germain</street>
          <city>Paris</city>
          <code>75005</code>
          <country>France</country>
        </postal>
        <email>julien.prat@cryptonext-security.com</email>
      </address>
    </author>
    <author initials="M." surname="Ounsworth" fullname="Mike Ounsworth">
      <organization abbrev="Entrust">Entrust Limited</organization>
      <address>
        <postal>
          <street>2500 Solandt Road -- Suite 100</street>
          <city>Ottawa, Ontario</city>
          <code>K2K 3G5</code>
          <country>Canada</country>
        </postal>
        <email>mike.ounsworth@entrust.com</email>
      </address>
    </author>
    <author initials="D." surname="Van Geest" fullname="Daniel Van Geest">
      <organization>CryptoNext Security</organization>
      <address>
        <postal>
          <street>16, Boulevard Saint-Germain</street>
          <city>Paris</city>
          <code>75005</code>
          <country>France</country>
        </postal>
        <email>daniel.vangeest.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2024"/>
    <area>Security</area>
    <workgroup>LAMPS</workgroup>
    <keyword>Key Encapsulation Mechanism (KEM)</keyword>
    <keyword>KEMRecipientInfo</keyword>
    <keyword>ML-KEM</keyword>
    <keyword>Kyber</keyword>
    <abstract>
      <?line 92?>

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



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

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

<!-- End of terminology section -->

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

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

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

<!-- End of introduction section -->

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

</section>
      <section anchor="sec-using-components">
        <name>Underlying Components</name>
        <t>When ML-KEM is employed in CMS, the security levels of the different underlying components used within the KEMRecipientInfo structure should be consistent.</t>
        <t>[EDNOTE: if we get OIDs for KMAC-based KDFs, use those. If we don't, do we want to use KDF3 <xref target="ANS-X9.44"/> with SHA3 instead?]</t>
        <t>For ML-KEM-512, the following underlying components <bcp14>MUST</bcp14> be supported:</t>
        <ul empty="true">
          <li>
            <t>KDF: id-alg-hkdf-with-sha3-256 <xref target="I-D.ietf-lamps-cms-sha3-hash"/></t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>Key wrapping: id-aes128-wrap <xref target="RFC3565"/></t>
          </li>
        </ul>
        <t>For ML-KEM-768, the following underlying components <bcp14>MUST</bcp14> be supported:</t>
        <ul empty="true">
          <li>
            <t>KDF: id-alg-hkdf-with-sha3-384 <xref target="I-D.ietf-lamps-cms-sha3-hash"/></t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>Key wrapping: id-aes256-wrap <xref target="RFC3565"/></t>
          </li>
        </ul>
        <t>For ML-KEM-1024, the following underlying components <bcp14>MUST</bcp14> be supported:</t>
        <ul empty="true">
          <li>
            <t>KDF: id-alg-hkdf-with-sha3-512 <xref target="I-D.ietf-lamps-cms-sha3-hash"/></t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>Key wrapping: id-aes256-wrap <xref target="RFC3565"/></t>
          </li>
        </ul>
        <t>The above object identifiers are reproduced for convenience in <xref target="sec-identifiers"/>.</t>
        <t>An implementation <bcp14>MAY</bcp14> also support other key-derivation functions and other key-encryption algorithms as well.</t>
        <t>If underlying components other than those specified above are used, then the following KDF requirements are in effect in addition to those asserted in <xref target="I-D.ietf-lamps-cms-kemri"/>:</t>
        <ul empty="true">
          <li>
            <t>ML-KEM-512 <bcp14>SHOULD</bcp14> be used with a KDF capable of outputting a key with at least 128 bits of security and with a key wrapping algorithm with a key length of at least 128 bits.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>ML-KEM-768 <bcp14>SHOULD</bcp14> be used with a KDF capable of outputting a key with at least 192 bits of security and with a key wrapping algorithm with a key length of at least 192 bits.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>ML-KEM-1024 <bcp14>SHOULD</bcp14> be used with a KDF capable of outputting a key with at least 256 bits of security and with a key wrapping algorithm with a key length of at least 256 bits.</t>
          </li>
        </ul>
        <!-- End of Underlying Components section -->

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

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

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

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

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

  id-alg-hkdf-with-sha3-256 OBJECT IDENTIFIER ::= { id-alg TBD }
  id-alg-hkdf-with-sha3-384 OBJECT IDENTIFIER ::= { id-alg TBD }
  id-alg-hkdf-with-sha3-512 OBJECT IDENTIFIER ::= { id-alg TBD }

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

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

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

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

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-kemri-08"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC5652">
          <front>
            <title>Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="September" year="2009"/>
            <abstract>
              <t>This document describes the Cryptographic Message Syntax (CMS). This syntax is used to digitally sign, digest, authenticate, or encrypt arbitrary message content. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="70"/>
          <seriesInfo name="RFC" value="5652"/>
          <seriesInfo name="DOI" value="10.17487/RFC5652"/>
        </reference>
        <reference anchor="RFC5083">
          <front>
            <title>Cryptographic Message Syntax (CMS) Authenticated-Enveloped-Data Content Type</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="November" year="2007"/>
            <abstract>
              <t>This document describes an additional content type for the Cryptographic Message Syntax (CMS). The authenticated-enveloped-data content type is intended for use with authenticated encryption modes. All of the various key management techniques that are supported in the CMS enveloped-data content type are also supported by the CMS authenticated-enveloped-data content type. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5083"/>
          <seriesInfo name="DOI" value="10.17487/RFC5083"/>
        </reference>
        <reference anchor="ANS-X9.44">
          <front>
            <title>Public Key Cryptography Using Reversible Algorithms for the Financial Services Industry: Transport of Symmetric Algorithm Keys Using RSA</title>
            <author>
              <organization>American National Standards Institute</organization>
            </author>
            <date year="1993"/>
          </front>
          <seriesInfo name="ANSI" value="X9.44"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-cms-sha3-hash">
          <front>
            <title>Use of the SHA3 One-way Hash Functions in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="Russ Housley" initials="R." surname="Housley">
              <organization>Vigil Security, LLC</organization>
            </author>
            <date day="28" month="November" year="2023"/>
            <abstract>
              <t>   This document describes the conventions for using the four one-way
   hash functions in the SHA3 family with the Cryptographic Message
   Syntax (CMS).

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

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

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

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

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

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

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

-->

</rfc>
