<?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.18 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-cms-cek-hkdf-sha256-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.22.0 -->
  <front>
    <title abbrev="Encryption Key Derivation in CMS">Encryption Key Derivation in the Cryptographic Message Syntax (CMS) using HKDF with SHA-256</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-cek-hkdf-sha256-03"/>
    <author initials="R." surname="Housley" fullname="Russ Housley">
      <organization abbrev="Vigil Security">Vigil Security, LLC</organization>
      <address>
        <postal>
          <city>Herndon, VA</city>
          <country>US</country>
        </postal>
        <email>housley@vigilsec.com</email>
      </address>
    </author>
    <date year="2024" month="July" day="23"/>
    <area>Security</area>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 82?>

<t>This document specifies the derivation of the content-encryption key or the
content-authenticated-encryption key in the Cryptographic Message Syntax (CMS).
The use of this mechanism provides protection against where the attacker manipulates the
content-encryption algorithm identifier or the content-authenticated-encryption
algorithm identifier.</t>
    </abstract>
  </front>
  <middle>
    <?line 90?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document specifies the derivation of the content-encryption key for the
Cryptographic Message Syntax (CMS) enveloped-data content type <xref target="RFC5652"/>, the
content-encryption key for the CMS encrypted-data content type <xref target="RFC5652"/>, or the
content-authenticated-encryption key for the authenticated-enveloped-data
content type <xref target="RFC5083"/>.</t>
      <t>The use of this mechanism provides protection against where the attacker manipulates the
content-encryption algorithm identifier or the content-authenticated-encryption
algorithm identifier.  Johannes Roth and Falko Strenzke presented such an attack
at IETF 118 <xref target="RS2023"/>, where:</t>
      <ol spacing="normal" type="1"><li>
          <t>The attacker intercepts a CMS Authenticated-Enveloped-Data content <xref target="RFC5083"/>
that uses either AES-CCM or AES-GCM <xref target="RFC5084"/>.</t>
        </li>
        <li>
          <t>The attacker turns the intercepted content into a "garbage" CMS Enveloped-Data
content <xref section="6" sectionFormat="of" target="RFC5652"/> that is composed of AES-CBC guess blocks.</t>
        </li>
        <li>
          <t>The attacker sends the "garbage" message to the victim, and the victim reveals
the result of the decryption to the attacker.</t>
        </li>
        <li>
          <t>If any of the transformed plaintext blocks match the guess for that block, then
the attacker learns the plaintext for that block.</t>
        </li>
      </ol>
      <t>With highly structured messages, one block can reveal the only sensitive part of
the original message.</t>
      <t>This attack is thwarted if the encryption key depends upon the delivery of
the unmodified algorithm identifier.</t>
      <t>The mitigation for this attack has three parts:</t>
      <ul spacing="normal">
        <li>
          <t>Potential recipients include the id-alg-cek-hkdf-sha256 algorithm identifier
(with no parameters) in S/MIME Capabilities to indicate support for
this mitigation.</t>
        </li>
        <li>
          <t>As a flag to the recipient that this mitigation is being used, carry the
id-alg-cek-hkdf-sha256 algorithm identifier as the contentEncryptionAlgorithm
in the EncryptedContentInfo structure.  This structure is used in the
enveloped-data content type, the encrypted-data content type, and the
authenticated-enveloped-data content type.  The parameters field of the
id-alg-cek-hkdf-sha256 algorithm identifier identifies the content-encryption
algorithm or the content-authenticated-encryption algorithm and any associated
parameters.</t>
        </li>
        <li>
          <t>Perform encryption with a derived content-encryption key or
content-authenticated-encryption key:</t>
        </li>
      </ul>
      <artwork><![CDATA[
      CEK' = HKDF(CEK, AlgorithmIdentifier)
]]></artwork>
      <section anchor="asn1">
        <name>ASN.1</name>
        <t>CMS values are generated using ASN.1 <xref target="X680"/>, using the Basic
Encoding Rules (BER) and the Distinguished Encoding Rules
(DER) <xref target="X690"/>.</t>
      </section>
      <section anchor="terminology">
        <name>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 BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

</section>
    </section>
    <section anchor="cmskdf">
      <name>Use of of HKDF with SHA-256 to Derive Encryption Keys</name>
      <t>The mitigation uses the HMAC-based Extract-and-Expand Key Derivation
Function (HKDF) <xref target="RFC5869"/> to derive output keying material (OKM) from
input key material (IKM).  HKDF is used with the SHA-256 hash function
<xref target="FIPS180"/>.  The derivation includes the DER-encoded AlgoritmIdentifier as
the optional info input value.  The encoded value includes the ASN.1 tag
for SEQUENCE (0x30), the length, and the value.  This AlgoritmIdentifier is
carried as the parameter to the id-alg-cek-hkdf-sha256 algorithm identifier.  If
an attacker were to change the originator-provided AlgoritmIdentifier, then the
recipient will derive a different content-encryption key or
content-authenticated-encryption key.</t>
      <t>The CMS_CEK_HKDF_SHA256 function uses the HKDF-Extract and HKDF-Expand functions
to derive the OKM from the IKM:</t>
      <artwork><![CDATA[
Inputs:
   IKM      input keying material
   info     DER-encoded AlgoritmIdentifier

Output:
   OKM      output keying material (same size as IKM)

The output OKM is calculated as follows:

   OKM_SIZE = len(IKM)
   IF OKM_SIZE > 8160 THEN raise error

   salt = "The Cryptographic Message Syntax"
   PRK = HKDF-Extract(salt, IKM)

   OKM = HKDF-Expand(PRK, info, OKM_SIZE)
   
]]></artwork>
    </section>
    <section anchor="alg-def">
      <name>The id-alg-cek-hkdf-sha256 Algorithm Identifier</name>
      <t>The id-alg-cek-hkdf-sha256 algoritm identifier indicates that the CMS_CEK_HKDF_SHA256
function defined in <xref target="cmskdf"/> is used to derive the content-encryption key or the
content-authenticated-encryption key.</t>
      <t>The following object identifier identifies the id-alg-cek-hkdf-sha256
algorithm:</t>
      <sourcecode type="asn.1"><![CDATA[
   id-alg-cek-hkdf-sha256 OBJECT IDENTIFIER ::= { iso(1)
      member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
      smime(16) alg(3) 31 }
]]></sourcecode>
      <t>The id-alg-cek-hkdf-sha256 parameters field has an ASN.1 type of AlgorithmIdentifier.</t>
      <t>Using the conventions from <xref target="RFC5911"/>, the id-alg-cek-hkdf-sha256 algorithm identifier
is defined as:</t>
      <sourcecode type="asn.1"><![CDATA[
  ContentEncryptionAlgorithmIdentifier ::=
    AlgorithmIdentifier{CONTENT-ENCRYPTION, { ... } }

  cea-CEKHKDFSHA256 CONTENT-ENCRYPTION ::= {
    IDENTIFIER id-alg-cek-hkdf-sha256
    PARAMS TYPE ContentEncryptionAlgorithmIdentifier ARE required
    SMIME-CAPS { IDENTIFIED BY id-alg-cek-hkdf-sha256 } }
]]></sourcecode>
    </section>
    <section anchor="smimecapabilities-attribute-conventions">
      <name>SMIMECapabilities Attribute Conventions</name>
      <t>The SMIMECapabilities Attribute is defined in <xref section="2.5.2" sectionFormat="of" target="RFC8551"/>.  An
S/MIME client announces the set of cryptographic functions it supports using the
SMIMECapabilities attribute.</t>
      <t>If an S/MIME client supports the mechanism in this document, the
id-alg-cek-hkdf-sha256 object identifier <bcp14>SHOULD</bcp14> be included in the set of
cryptographic functions.  The parameter with this encoding <bcp14>MUST</bcp14> be absent.</t>
      <t>The encoding for id-alg-cek-hkdf-sha256, in hexadecimal, is:</t>
      <artwork><![CDATA[
   30 0d 06 0b 2a 86 48 86 f7 0d 01 09 10 03 1f
]]></artwork>
    </section>
    <section anchor="use-of-hkdf-with-sha-256-with-cms">
      <name>Use of HKDF with SHA-256 with CMS</name>
      <t>This section describes the originator and recipient processing to implement
this mitigation for each of the CMS encrypting content types.</t>
      <section anchor="enveloped-data-content-type">
        <name>Enveloped-Data Content Type</name>
        <t>The fourth step of constructing an Enveloped-data is repeated below
from <xref section="6" sectionFormat="of" target="RFC5652"/>:</t>
        <artwork><![CDATA[
4.  The content is encrypted with the content-encryption key.
    Content encryption may require that the content be padded to a
    multiple of some block size; see Section 6.3 of [RFC5652].

]]></artwork>
        <t>To implement this mitigation, the originator expands this step as follows:</t>
        <ul spacing="normal">
          <li>
            <t>Include the id-alg-cek-hkdf-sha256 algorithm identifier in the
contentEncryptionAlgorithm.algorithm field of the EncryptedContentInfo
structure, and set the contentEncryptionAlgorithm.parameters field to the
AlgorithmIdentifier for the content-encryption algorithm that will be used
to encrypt the content, including both the algorithm and optional parameters.</t>
          </li>
          <li>
            <t>Derive the new content-encryption key (CEK') from the original
content-encryption key (CEK) and the ContentEncryptionAlgorithmIdentifier,
which is carried in the contentEncryptionAlgorithm.parameters field:</t>
          </li>
        </ul>
        <artwork><![CDATA[
CEK' = CMS_CEK_HKDF_SHA256(CEK, ContentEncryptionAlgorithmIdentifier)
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>The content is encrypted with the new content-encryption key (CEK').
Content encryption may require that the content be padded to a
multiple of some block size; see <xref section="6.3" sectionFormat="of" target="RFC5652"/>.</t>
          </li>
        </ul>
        <t>The presence of the id-alg-cek-hkdf-sha256 algorithm identifier in the
contentEncryptionAlgorithm.algorithm field of the EncryptedContentInfo
structure tells the recipient to derive the new content-encryption
key (CEK') as shown above, and then use it for decryption of the
EncryptedContent.  If the id-alg-cek-hkdf-sha256 algorithm identifier
is not present in the contentEncryptionAlgorithm.algorithm field of
the EncryptedContentInfo structure, then the recipient uses the original
content-encryption key (CEK) for decryption of the EncryptedContent.</t>
      </section>
      <section anchor="encrypted-data-content-type">
        <name>Encrypted-Data Content Type</name>
        <t>As specified in <xref section="8" sectionFormat="of" target="RFC5652"/>, the content-encryption key
is managed by other means.</t>
        <t>To implement this mitigation, the originator performs the following:</t>
        <ul spacing="normal">
          <li>
            <t>Include the id-alg-cek-hkdf-sha256 algorithm identifier in the
contentEncryptionAlgorithm.algorithm field of the EncryptedContentInfo
structure, and set the contentEncryptionAlgorithm.parameters field to the
AlgorithmIdentifier for the content-encryption algorithm that will be used
to encrypt the content, including both the algorithm and optional parameters.</t>
          </li>
          <li>
            <t>Derive the new content-encryption key (CEK') from the original
content-encryption key (CEK) and the ContentEncryptionAlgorithmIdentifier,
which is carried in the contentEncryptionAlgorithm.parameters field:</t>
          </li>
        </ul>
        <artwork><![CDATA[
CEK' = CMS_CEK_HKDF_SHA256(CEK, ContentEncryptionAlgorithmIdentifier)
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>The content is encrypted with the new content-encryption key (CEK').
Content encryption may require that the content be padded to a
multiple of some block size; see <xref section="6.3" sectionFormat="of" target="RFC5652"/>.</t>
          </li>
        </ul>
        <t>The presence of the id-alg-cek-hkdf-sha256 algorithm identifier in the
contentEncryptionAlgorithm.algorithm field of the EncryptedContentInfo
structure tells the recipient to derive the new content-encryption
key (CEK') as shown above, and then use it for decryption of the
EncryptedContent.  If the id-alg-cek-hkdf-sha256 algorithm identifier
is not present in the contentEncryptionAlgorithm.algorithm field of
the EncryptedContentInfo structure, then the recipient uses the original
content-encryption key (CEK) for decryption of the EncryptedContent.</t>
      </section>
      <section anchor="authenticated-enveloped-data-content-type">
        <name>Authenticated-Enveloped-Data Content Type</name>
        <t>The fifth step of constructing an Authenticated-Enveloped-Data is
repeated below from <xref section="2" sectionFormat="of" target="RFC5083"/>:</t>
        <artwork><![CDATA[
5.  The attributes collected in step 4 are authenticated and the CMS
    content is authenticated and encrypted with the content-
    authenticated-encryption key.  If the authenticated encryption
    algorithm requires either the additional authenticated data (AAD)
    or the content to be padded to a multiple of some block size,
    then the padding is added as described in Section 6.3 of
    [RFC5652].

]]></artwork>
        <t>To implement this mitigation, the originator expands this step as follows:</t>
        <ul spacing="normal">
          <li>
            <t>Include the id-alg-cek-hkdf-sha256 algorithm identifier in the
contentEncryptionAlgorithm.algorithm field of the EncryptedContentInfo
structure, and set the contentEncryptionAlgorithm.parameters field to the
AlgorithmIdentifier for the content-authenticated-encryption algorithm that
will be used for authenticated encryption of the content, including both the
algorithm and optional parameters.</t>
          </li>
          <li>
            <t>Derive the new content-authenticated-encryption key (CEK') from the
original content-authenticated-encryption key (CEK) and the
ContentEncryptionAlgorithmIdentifier:</t>
          </li>
        </ul>
        <artwork><![CDATA[
CEK' = CMS_CEK_HKDF_SHA256(CEK, ContentEncryptionAlgorithmIdentifier)
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>The attributes collected in step 4 are authenticated and the CMS
content is authenticated and encrypted with the new
content-authenticated-encryption key (CEK').  If the authenticated
encryption algorithm requires either the additional authenticated data (AAD)
or the content to be padded to a multiple of some block size,
then the padding is added as described in <xref section="6.3" sectionFormat="of" target="RFC5652"/>.</t>
          </li>
        </ul>
        <t>The presence of the id-alg-cek-hkdf-sha256 algorithm identifier in the
contentEncryptionAlgorithm.algorithm field of the EncryptedContentInfo
structure tells the recipient to derive the new content-authenticated-encryption
key (CEK') as shown above, and then use it for authenticated decryption of the
EncryptedContent and the authentication of the AAD.  If the id-alg-cek-hkdf-sha256
algorithm identifier is not present in the contentEncryptionAlgorithm.algorithm
field of the EncryptedContentInfo structure, then the recipient uses the original
content-authenticated-encryption (CEK) for decryption and authentication of
the EncryptedContent and the authentication of the AAD.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This mitigation always uses HKDF with SHA-256.  One KDF algorithm was
selected to avoid the need for negotiation.  In the future, if a weakness
is found in the KDF algorithm, a new attribute  will need to be assigned for
use with an alternative KDF algorithm.</t>
      <t>If the attacker removes the id-alg-cek-hkdf-sha256 object identifier from the
contentEncryptionAlgorithm.algorithm field of the EncryptedContentInfo
structure prior to delivery to the recipient, then the recipient will not
attempt to derive CEK', which will deny the recipient access to the content,
but will not assist the attacker in recovering the plaintext content.</t>
      <t>If the attacker changes contentEncryptionAlgorithm.parameters field of the
EncryptedContentInfo structure prior to delivery to the recipient, then the
recipient will derive a different CEK', which will not assist the attacker in
recovering the plaintext content.  Providing the object identifier as an input to
the key derivation function is sufficient to mitigate the attack described
in <xref target="RS2023"/>, but this mitigation includes both the object identifier and the
parameters to protect against some yet-to-be-discovered attack that only
manipulates the parameters.</t>
      <t>Implementations <bcp14>MUST</bcp14> protect the content-encryption keys and
content-authenticated-encryption keys, this includes the CEK and CEK'.
Compromise of a content-encryption key may result in disclosure of the
associated encrypted content.  Compromise of a content-authenticated-encryption
key may result in disclosure of the associated encrypted content or allow
modification of the authenticated content and the additional authenticated
data (AAD).</t>
      <t>Implementations <bcp14>MUST</bcp14> randomly generate content-encryption keys and
content-authenticated-encryption keys.  Using an inadequate pseudo-random
number generator (PRNG) to generate cryptographic keys can result in little or
no security.  An attacker may find it much easier to reproduce the PRNG
environment that produced the keys, and then searching the resulting small set
of possibilities, rather than brute force searching the whole key space.  The
generation of quality random numbers is difficult.  <xref target="RFC4086"/> offers important
guidance on this topic.</t>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>If the message-digest attribute is included in the AuthAttributes,
then the attribute value will contain the unencrypted one-way hash
value of the plaintext of the content.  Disclosure of this hash value
enables content tracking, and it can be used to determine if the
content matches one or more candidates.  For these reasons,
the AuthAttributes <bcp14>SHOULD NOT</bcp14> contain the message-digest attribute.</t>
    </section>
    <section anchor="operations-considerations">
      <name>Operations Considerations</name>
      <t>CMS is often used to provide encryption in messaging environments,
where various forms of unsolicited messages (such as spam and phishing)
represent a significant volume of unwanted traffic.  Mitigation strategies for
unwanted message traffic involve analysis of message content plaintext.  When
recipients accept unsolicited encrypted messages, they become even more
vulnerable to unwanted traffic since many mitigation strategies will be
unable to access the message content plaintext.  Therefore, software that
receives messages that have been encrypted using CMS ought to provide alternate
mechanisms to handle the unwanted message traffic.  One approach that
does not require disclosure of keying material to a server is to reject
or discard encrypted messages unless they purport to come from a member
of a previously approved originator list.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>For the ASN.1 Module in the <xref target="appendix-asn1"/> of this document, IANA
is requested to assign an object identifier (OID) for the module
identifier (TBD0) with a Description of "id-mod-CMS-CEK-HKDF-SHA256-2023".  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>
      <t>IANA has allocated the id-alg-cek-hkdf-sha256 algorithm identifier as specified
in <xref target="alg-def"/> of this document.  The object identifier (OID) value of
1.2.840.113549.1.9.16.3.31 was allocated with a description of
"id-alg-cek-hkdf-sha256" in the "SMI Security for S/MIME Algorithms"
registry (1.2.840.113549.1.9.16.3).</t>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Thanks to
Mike Ounsworth,
Carl Wallace, and
Joe Mandel
their careful review and constructive comments.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="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="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="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="FIPS180">
          <front>
            <title>Secure Hash Standard (SHS)</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date year="2015" month="August"/>
          </front>
          <seriesInfo name="FIPS PUB" value="180-4"/>
        </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="X690" target="https://www.itu.int/rec/T-REC-X.690">
          <front>
            <title>Information technology -- ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)</title>
            <author>
              <organization>ITU-T</organization>
            </author>
            <date year="2021" month="February"/>
          </front>
          <seriesInfo name="ITU-T Recommendation" value="X.690"/>
          <seriesInfo name="ISO/IEC" value="8825-1-2021"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="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="RFC5084">
          <front>
            <title>Using AES-CCM and AES-GCM Authenticated Encryption in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="November" year="2007"/>
            <abstract>
              <t>This document specifies the conventions for using the AES-CCM and the AES-GCM authenticated encryption algorithms with the Cryptographic Message Syntax (CMS) authenticated-enveloped-data content type. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5084"/>
          <seriesInfo name="DOI" value="10.17487/RFC5084"/>
        </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="RFC5912">
          <front>
            <title>New ASN.1 Modules for the Public Key Infrastructure Using X.509 (PKIX)</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 Public Key Infrastructure using X.509 (PKIX) certificate 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="5912"/>
          <seriesInfo name="DOI" value="10.17487/RFC5912"/>
        </reference>
        <reference anchor="RS2023" target="https://datatracker.ietf.org/meeting/118/materials/slides-118-lamps-attack-against-aead-in-cms">
          <front>
            <title>AEAD-to-CBC Downgrade Attacks on CMS</title>
            <author initials="J." surname="Roth" fullname="Johannes Roth">
              <organization>MTG AG</organization>
            </author>
            <author initials="F." surname="Strenzke" fullname="Falko Strenzke">
              <organization>MTG AG</organization>
            </author>
            <date year="2023" month="November" day="08"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 474?>

<section anchor="appendix-asn1">
      <name>ASN.1 Module</name>
      <t>This ASN.1 Module builds upon the conventions established in <xref target="RFC5911"/> and <xref target="RFC5912"/>.</t>
      <sourcecode type="asn.1"><![CDATA[
<CODE STARTS>

CMS-CEK-HKDF-SHA256-Module-2024
  { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
    id-smime(16) id-mod(0) id-mod-CMS-CEK-HKDF-SHA256-2024(TBD0) }

DEFINITIONS IMPLICIT TAGS ::= BEGIN

EXPORTS ALL;

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


--
-- CEK-HKDF-SHA256 Algorithm
--

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

ContentEncryptionAlgorithmIdentifier ::=
    AlgorithmIdentifier{CONTENT-ENCRYPTION, { ... } }

cea-CEKHKDFSHA256 CONTENT-ENCRYPTION ::= {
    IDENTIFIER id-alg-cek-hkdf-sha256
    PARAMS TYPE ContentEncryptionAlgorithmIdentifier ARE required
    SMIME-CAPS { IDENTIFIED BY id-alg-cek-hkdf-sha256 } }

--
-- S/MIIME Capability for CEK-HKDF-SHA256 Algorithm
--

SMimeCaps SMIME-CAPS ::= { cap-CMSCEKHKDFSHA256, ... }

cap-CMSCEKHKDFSHA256 SMIME-CAPS ::=
    { -- No value -- IDENTIFIED BY id-alg-cek-hkdf-sha256 }
     
END

<CODE ENDS>
]]></sourcecode>
    </section>
    <section anchor="cmscekhkdfsha256-function-examples">
      <name>CMS_CEK_HKDF_SHA256 Function Examples</name>
      <t>This appendix provides two test vectores for the CMS_CEK_HKDF_SHA256 function.</t>
      <section anchor="cmscekhkdfsha256-with-aes-128-gcm">
        <name>CMS_CEK_HKDF_SHA256 with AES-128-GCM</name>
        <t>This test vector uses includes an AlgorithmIdentifier for<br/>
AES-128-GCM.</t>
        <artwork><![CDATA[
IKM = c702e7d0a9e064b09ba55245fb733cf3

The AES-128-CGM AlgorithmIdentifier:
 algorithm=2.16.840.1.101.3.4.1.6
 parameters=GCMParameters:
  aes-nonce=0x5c79058ba2f43447639d29e2
  aes-ICVlen is ommited; it indicates the DEFAULT of 12

DER-encoded AlgorithmIdentifier:
  301b0609608648016503040106300e040c5c79058ba2f43447639d29e2

OKM = 2124ffb29fac4e0fbbc7d5d87492bff3

]]></artwork>
      </section>
      <section anchor="cmscekhkdfsha256-with-aes-128-cbc">
        <name>CMS_CEK_HKDF_SHA256 with AES-128-CBC</name>
        <t>This test vector uses includes an AlgorithmIdentifier for<br/>
AES-128-CBC.</t>
        <artwork><![CDATA[
IKM = c702e7d0a9e064b09ba55245fb733cf3

The AES-128-CBC AlgorithmIdentifier:
 algorithm=2.16.840.1.101.3.4.1.2
 parameters=AES-IV=0x651f722ffd512c52fe072e507d72b377

DER-encoded AlgorithmIdentifier:
  301d06096086480165030401020410651f722ffd512c52fe072e507d72b377

OKM = 9cd102c52f1e19ece8729b35bfeceb50

]]></artwork>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
sTONvLtKE4+aKt12vcpjJTzlVxqNVqfdq/LVjatgDv3r9Co9O1st/aWsNI6q
yJdKq8pbDf5ZS8ADPNyJnTHJAttmrDAWczAr340LgZQf09AOaH+LH8AoaBOg
3Vmv0TC1q2elYRguGbEQaovAg72JTE5+gbZElJJv94PLiwkwwQGncv0ThQuH
wIdarcY/A7kwipbCAXFFaTX2cXeK5h7tkWPpHlnBUVf96z7EzZOfroZPQ6F/
PYQM8R9rP6Y8gfMxJqDOoH81BnDTTU/5m5/20fazZf8LPbmQvPaTBIJNPIEZ
ZLzTkvLQ4BxrSGNtZadZ69SaprqDZ0YURvRDZvJmNyDPJsIwAsU3qqUk1V3c
gkVMnQv3E5tVqyyJYLvACQscSCTVZ3hx03QR3DMrPW4H5rrEuoeUu2bCBLHT
NHixebBBi+1BaztltYEZQJKeg1AUDiuLKVYVjc1Kv2JUVA4m+gAI7j8JD2KJ
pQjgt8ryvVad1z1eP+L1KW8K3j3i7S7+/+yY3jd4vccbMKbFGzMrNyZW3g2U
6QeevuoikZLWmuscRm3FQBRDZBEOREQgBJqnEB0uV4FEFrDtGgiiKoW7sAW3
XIUb5+ZLAUrng1sFUqNqHM/ZrelfxwC6SuSKhA9YQgUNXA9EZ1gsNgA4sYRs
CoOCKXzYMGPdyiuaNuJpGy6nBVOVlT6ySLzcndVI2y3guW9LcWctQuZb7Q5T
FCnP0y6Tqq98uQ4SHyiLEKpoaSuCGAZ9DQyTPMWh1sIxPxs0/l4zWExyrNku
Tx1uM1hSJKL0OKJuIYj6io++rCaXVZf2l7Bq2cR8/ae0oIXdIbaCpRMI1NeH
S2S1HSepkwZW6mHS45IHTyeIgxTpT+lwxKOuFsvv/PxDY2FQQqeRkZ1iWSnN
trbKSadZ7BTKzb74CUs/L6tZ6G4rwbmKUsmMrGjzFH+GB7UbMIQLHWnrXMwY
zGcQ3iiYqVuVBJa6jPUUiExd66snKOqjtKuxP0BjH9XXnNXRGpvaHeMi9DGU
K638f4Ga/UFKlhWJExkEarveXYjqy6nLcpKZFq7ENLrNKsWUr2KYgAqXO7kx
1d9twCht/5JYNIwSe8L3BJHdJRN7vLie1QFyZEqz8VQhH1THUirs7GvdpC3E
l7jJvkoPvreivG5B6g4f8GJIt6UIIbcFxwkpGh1DLqUI0TA9y7GsdElcUyJN
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

-->

</rfc>
