<?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.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-cms-kemri-07" category="std" consensus="true" submissionType="IETF" updates="5652" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.1 -->
  <front>
    <title abbrev="CMS KEMRecipientInfo">Using Key Encapsulation Mechanism (KEM) Algorithms in the Cryptographic Message Syntax (CMS)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-kemri-07"/>
    <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>
    <author initials="J." surname="Gray" fullname="John Gray">
      <organization>Entrust</organization>
      <address>
        <postal>
          <city>Minneapolis, MN</city>
          <country>US</country>
        </postal>
        <email>john.gray@entrust.com</email>
      </address>
    </author>
    <author initials="T." surname="Okubo" fullname="Tomofumi Okubo">
      <organization abbrev="DigiCert">DigiCert, Inc.</organization>
      <address>
        <postal>
          <city>Fairfax, VA</city>
          <country>US</country>
        </postal>
        <email>tomofumi.okubo+ietf@gmail.com</email>
      </address>
    </author>
    <date year="2024" month="January" day="27"/>
    <area>Security</area>
    <workgroup>LAMPS Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 77?>

<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.</t>
    </abstract>
  </front>
  <middle>
    <?line 86?>

<section anchor="intro">
      <name>Introduction</name>
      <t>The Cryptographic Message Syntax (CMS) enveloped-data content type
<xref target="RFC5652"/> and the CMS authenticated-enveloped-data content type
<xref target="RFC5083"/> support both key transport and key agreement algorithms to
establish the key used to encrypt the content.  In recent years,
cryptographers have be specifying Key Encapsulation Mechanism (KEM)
algorithms, including quantum-secure KEM algorithms.  This document
defines conventions for the use of KEM algorithms for the CMS
enveloped-data content type and the CMS authenticated-enveloped-data
content type.</t>
      <t>A KEM algorithm is a one-pass (store-and-forward) mechanism for
transporting random keying material to a recipient using the recipient's
public key.  The recipient's private key is needed to recover the random
keying material, which is then treated as a pairwise shared secret (ss)
between the originator and recipient.</t>
      <t>The KEMRecipientInfo structure defined in this document uses the pairwise
shared secret as an input to a key derivation function (KDF) to produce a
pairwise key-encryption key (KEK).  Then, the pairwise KEK is used to encrypt a
content-encryption key (CEK) or a content-authenticated-encryption key (CAEK)
for that recipient.  All of the recipients recieve the same CEK or CAEK.</t>
      <t>In this environment, security depends on three things.  First, the KEM algorithm
must be secure against adaptive chosen ciphertext attacks.  Second, the
key-encryption algorithm must provide confidentiality and integrity protection.  Third,
the choices of the KDF and the key-encryption algorithm need to provide the same
level of security as the KEM algorithm.</t>
      <t>A KEM algorithm provides three functions:</t>
      <ul spacing="normal">
        <li>
          <t>KeyGen() -&gt; (pk, sk):</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <t>Generate the public key (pk) and a private key (sk).</t>
        </li>
      </ul>
      <ul spacing="normal">
        <li>
          <t>Encapsulate(pk) -&gt; (ct, ss):</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <t>Given the recipient's public key (pk), produce a ciphertext (ct) to be
passed to the recipient and shared secret (ss) for the originator.</t>
        </li>
      </ul>
      <ul spacing="normal">
        <li>
          <t>Decapsulate(sk, ct) -&gt; ss:</t>
        </li>
      </ul>
      <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>To support a particular KEM algorithm, the CMS originator <bcp14>MUST</bcp14> implement
the KEM Encapsulate() function.</t>
      <t>To support a particular KEM algorithm, the CMS recipient <bcp14>MUST</bcp14> implement the KEM
KeyGen() function and the KEM Decapsulate() function.  The recipient's public key
is usually carried in a certificate <xref target="RFC5280"/>.</t>
      <section anchor="terms">
        <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 anchor="asn1">
        <name>ASN.1</name>
        <t>CMS values are generated using ASN.1 <xref target="X.680"/>, which uses the Basic
Encoding Rules (BER) and the Distinguished Encoding Rules (DER) <xref target="X.690"/>.</t>
      </section>
      <section anchor="cms-version-numbers">
        <name>CMS Version Numbers</name>
        <t>As described in <xref section="1.3" sectionFormat="of" target="RFC5652"/>, the major data structures
include a version number as the first item in
the data structure.  The version number is intended to avoid ASN.1 decode
errors.  Some implementations do not check the version number prior to
attempting a decode, and then if a decode error occurs, the version
number is checked as part of the error handling routine.  This is a
reasonable approach; it places error processing outside of the fast path.
This approach is also forgiving when an incorrect version number is used
by the originator.</t>
        <t>Whenever the structure is updated, a higher version number will be
assigned.  However, to ensure maximum interoperability, the higher
version number is only used when the new syntax feature is employed.
That is, the lowest version number that supports the generated syntax is
used.</t>
      </section>
    </section>
    <section anchor="kem-processing-overview">
      <name>KEM Processing Overview</name>
      <t>KEM algorithms can be used with  three CMS content types: the
enveloped-data content type <xref target="RFC5652"/>, the authenticated-data
content type <xref target="RFC5652"/>, or the authenticated-enveloped-data
content type <xref target="RFC5083"/>.  For simplicity, the terminology associated
with the enveloped-data content type will be used in this overview.</t>
      <t>The originator randomly generates the content-encryption key (CEK), and then
all recipients obtain that key as an encrypted object within the KEMRecipientInfo
encryptedKey field explained in <xref target="kemri"/>.  All recipients use
the originator-generated symmetric key to decrypt the CMS message.</t>
      <t>A KEM algorithm and a key-derivation function are used to securely
establish a pairwise symmetric key-encryption key (KEK), which is used to encrypt
the originator-generated CEK.</t>
      <t>In advance, each recipient uses the KEM KeyGen() function to create a key pair.
The recipient will often obtain a certificate <xref target="RFC5280"/> that includes the newly
generated public key.  Whether the public key is certified or not, the newly
generated public key is made available to potential originators.</t>
      <t>The originator establishes the CEK using these steps:</t>
      <ol spacing="normal" type="1"><li>
          <t>The CEK is generated at random.</t>
        </li>
        <li>
          <t>For each recipient:  </t>
          <ul spacing="normal">
            <li>
              <t>The recipient's public key is used with the KEM Encapsulate() function to obtain a pairwise shared secret (ss) and the ciphertext for the recipient.</t>
            </li>
            <li>
              <t>The key-derivation function is used to derive a pairwise symmetric KEK, from the pairwise ss and other data that is optionally sent in the ukm field.</t>
            </li>
            <li>
              <t>The KEK is used to encrypt the CEK for this recipient.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>The CEK is used to encrypt the content for all recipients.</t>
        </li>
      </ol>
      <t>The recipient obtains the CEK using these steps:</t>
      <ol spacing="normal" type="1"><li>
          <t>The recipient's private key and the ciphertext are used with the KEM Decapsulate() function to obtain a pairwise ss.</t>
        </li>
        <li>
          <t>The key-derivation function is used to derive a pairwise symmetric KEK, from the pairwise ss and other data that is optionally sent in the ukm field.</t>
        </li>
        <li>
          <t>The KEK is used to decrypt the CEK.</t>
        </li>
        <li>
          <t>The CEK is used to decrypt the content.</t>
        </li>
      </ol>
    </section>
    <section anchor="kemri">
      <name>KEM Recipient Information</name>
      <t>This document defines KEMRecipientInfo for use with KEM algorithms.
As specified in Section 6.2.5 of <xref target="RFC5652"/>, recipient information for
additional key management techniques are represented in the
OtherRecipientInfo type, and they are each identified by a unique
ASN.1 object identifier.</t>
      <t>The object identifier associated with KEMRecipientInfo is:</t>
      <artwork><![CDATA[
  id-ori OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840)
    rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) 13 }

  id-ori-kem OBJECT IDENTIFIER ::= { id-ori 3 }
]]></artwork>
      <t>The KEMRecipientInfo type is:</t>
      <artwork><![CDATA[
  KEMRecipientInfo ::= SEQUENCE {
    version CMSVersion,  -- always set to 0
    rid RecipientIdentifier,
    kem KEMAlgorithmIdentifier,
    kemct OCTET STRING,
    kdf KeyDerivationAlgorithmIdentifier,
    kekLength INTEGER (1..65535),
    ukm [0] EXPLICIT UserKeyingMaterial OPTIONAL,
    wrap KeyEncryptionAlgorithmIdentifier,
    encryptedKey EncryptedKey }
]]></artwork>
      <t>The fields of the KEMRecipientInfo type have the following meanings:</t>
      <ul empty="true">
        <li>
          <t>version is the syntax version number.  The version <bcp14>MUST</bcp14> be 0.  The
CMSVersion type is described in Section 10.2.5 of <xref target="RFC5652"/>.</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <t>rid specifies the recipient's certificate or key that was used by
the originator with the KEM Encapsulate() function.  The
RecipientIdentifier provides two alternatives for specifying the
recipient's certificate <xref target="RFC5280"/>, and thereby the recipient's public
key.  The recipient's certificate <bcp14>MUST</bcp14> contain a KEM public key.  Therefore,
a recipient X.509 version 3 certificate that contains a key usage
extension <bcp14>MUST</bcp14> assert the keyEncipherment bit.  The issuerAndSerialNumber
alternative identifies the recipient's certificate by the issuer's
distinguished name and the certificate serial number; the
subjectKeyIdentifier alternative identifies the recipient's certificate by a key
identifier.  When an X.509 certificate is referenced, the key identifier
matches the X.509 subjectKeyIdentifier extension value.  When other
certificate formats are referenced, the documents that specify the certificate
format and their use with the CMS must include details on matching
the key identifier to the appropriate certificate field.  For recipient
processing, implementations <bcp14>MUST</bcp14> support both of these alternatives for
specifying the recipient's certificate.  For originator processing,
implementations <bcp14>MUST</bcp14> support at least one of these alternatives.</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <t>kem identifies the KEM algorithm, and any associated parameters, used
by the originator.  The KEMAlgorithmIdentifier is described in <xref target="kemalg"/>.</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <t>kemct is the ciphertext produced by the KEM Encapsulate() function for
this recipient.</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <t>kdf identifies the key-derivation algorithm, and any associated parameters,
used by the originator to generate the KEK.  The
KeyDerivationAlgorithmIdentifier is described in Section 10.1.6 of <xref target="RFC5652"/>.</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <t>kekLength is the size of the KEK in octets.  This value is one
of the inputs to the key-derivation function.  The upper bound on the integer
value is provided to make it clear to implementers that support for very
large integer values is not needed.  Implementations <bcp14>MUST</bcp14> confirm that
the value provided is consistent with the key-encryption algorithm
identified in the wrap field below.</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <t>ukm is optional user keying material.  When the ukm value is provided,
it is used as part of the info structure described in <xref target="kdf"/> to
provide a context input to the key-derivation function.  For example, the
ukm value could include a nonce, application-specific context information,
or an identifier for the originator.  A KEM algorithm may place
requirements on the ukm value.  Implementations that do not support the
ukm field <bcp14>SHOULD</bcp14> gracefully discontinue processing when the ukm field is
present.  Note that this requirement expands the original purpose of the
ukm described in Section 10.2.6 of <xref target="RFC5652"/>; it is not limited to being
used with key agreement algorithms.</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <t>wrap identifies a key-encryption algorithm used to encrypt the
CEK.  The KeyEncryptionAlgorithmIdentifier
is described in Section 10.1.3 of <xref target="RFC5652"/>.</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <t>encryptedKey is the result of encrypting the CEK or the
content-authenticated-encryption key <xref target="RFC5083"/> (CAEK) with the KEK.
EncryptedKey is an OCTET STRING.</t>
        </li>
      </ul>
    </section>
    <section anchor="kemalg">
      <name>KEM Algorithm Identifier</name>
      <t>The KEMAlgorithmIdentifier type identifies a KEM algorithm used to
establish a pairwise ss.  The details of establishment depend on
the KEM algorithm used.  A Key derivation algorithm is used to transform
the pairwise ss value into a KEK.</t>
      <artwork><![CDATA[
  KEMAlgorithmIdentifier ::= AlgorithmIdentifier{ KEM-ALGORITHM, {...} }
]]></artwork>
    </section>
    <section anchor="kdf">
      <name>Key Derivation</name>
      <t>This section describes the conventions of using the KDF to compute the
KEK for KEMRecipientInfo.  For simplicity, the
terminology used in the HKDF specification <xref target="RFC5869"/> is used here.</t>
      <t>Many KDFs internally employ a one-way hash function.  When this is
the case, the hash function that is used is indirectly indicated by
the KeyDerivationAlgorithmIdentifier.  Other KDFs internally employ an
encryption algorithm.  When this is the case, the encryption that is
used is indirectly indicated by the KeyDerivationAlgorithmIdentifier.</t>
      <t>The KDF inputs are:</t>
      <ul empty="true">
        <li>
          <t>IKM is the input key material. It is a symmetric secret input to
the KDF which may use a hash function or an encryption algorithm
to generate a pseudorandom key. The algorithm used to derive the
IKM is dependent on the algorithm identified in the
KeyDerivationAlgorithmIdentifier.</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <t>L is the length of the output keying material in octets which is
identified in the kekLength of the KEMRecipientInfo.  The
value is dependent on the key-encryption algorithm that is used
which is identified in the KeyEncryptionAlgorithmIdentifier.</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <t>info is contextual input to the KDF.  The DER-encoded
CMSORIforKEMOtherInfo structure is created from elements of the
KEMRecipientInfo structure.  CMSORIforKEMOtherInfo is defined as:</t>
        </li>
      </ul>
      <artwork><![CDATA[
      CMSORIforKEMOtherInfo ::= SEQUENCE {
        wrap KeyEncryptionAlgorithmIdentifier,
        kekLength INTEGER (1..65535),
        ukm [0] EXPLICIT UserKeyingMaterial OPTIONAL }
]]></artwork>
      <t>The CMSORIforKEMOtherInfo structure contains:</t>
      <ul empty="true">
        <li>
          <t>wrap identifies a key-encryption algorithm; the output of the
key-derivation function will be used as a key for this algorithm.</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <t>kekLength is the length of the KEK in octets; the
output of the key-derivation function will be exactly this size.</t>
        </li>
      </ul>
      <ul empty="true">
        <li>
          <t>ukm is optional user keying material; see <xref target="kemri"/>.</t>
        </li>
      </ul>
      <t>The KDF output is:</t>
      <ul empty="true">
        <li>
          <t>OKM is the output keying material with the exact length of L octets.
The OKM is the KEK that is used to encrypt the CEK or the CAEK.</t>
        </li>
      </ul>
      <t>An acceptable KDF <bcp14>MUST</bcp14> accept an IKM, L, and info as inputs.  An acceptable
KDF <bcp14>MAY</bcp14> also accept salt, which is carried as a parameter to the
KeyDerivationAlgorithmIdentifier if present.  All of these
inputs <bcp14>MUST</bcp14> influence the output of the KDF.</t>
    </section>
    <section anchor="asn1-mod">
      <name>ASN.1 Modules</name>
      <t>This section provides two ASN.1 modules <xref target="X.680"/>.  The first ASN.1
module is an extension to the AlgorithmInformation-2009 module in
<xref target="RFC5912"/>, and it defines the KEM-ALGORITHM CLASS.  The second
ASN.1 module defines the structures needed to use KEM Algorithms
with CMS <xref target="RFC5652"/>.</t>
      <t>The first ASN.1 module uses EXPLICIT tagging, and the second
ASN.1 module uses IMPLICIT tagging.</t>
      <t>Both ASN.1 modules follow the conventions established in
<xref target="RFC5911"/>, <xref target="RFC5912"/>, and <xref target="RFC6268"/>.</t>
      <section anchor="asn1-mod-1">
        <name>KEMAlgorithmInformation-2023 ASN.1 Module</name>
        <sourcecode type="asn.1" markers="true"><![CDATA[
  KEMAlgorithmInformation-2023
    { iso(1) identified-organization(3) dod(6) internet(1)
      security(5) mechanisms(5) pkix(7) id-mod(0)
          id-mod-kemAlgorithmInformation-2023(TBD3) }

  DEFINITIONS EXPLICIT TAGS ::=
  BEGIN
  -- EXPORTS ALL;
  IMPORTS
    ParamOptions, PUBLIC-KEY, SMIME-CAPS
    FROM AlgorithmInformation-2009
      { 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
  --
  --  Describes the basic properties of a KEM algorithm
  --
  -- Suggested prefixes for KEM algorithm objects is: kema-
  --
  --  &id - contains the OID identifying the KEM algorithm
  --  &Value - if present, contains a type definition for the kemct;
  --               if absent, implies that no ASN.1 encoding is
  --               performed on the kemct value
  --  &Params - if present, contains the type for the algorithm
  --               parameters; if absent, implies no parameters
  --  &paramPresence - parameter presence requirement
  --  &PublicKeySet - specifies which public keys are used with
  --               this algorithm
  --  &Ukm - if absent, type for user keying material
  --  &ukmPresence - specifies the requirements to define the UKM
  --               field
  --  &smimeCaps - contains the object describing how the S/MIME
  --               capabilities are presented.
  --
  -- Example:
  -- kema-kem-rsa KEM-ALGORITHM ::= {
  --    IDENTIFIER id-kem-rsa
  --    PARAMS TYPE RsaKemParameters ARE optional
  --    PUBLIC-KEYS { pk-rsa | pk-rsa-kem }
  --    UKM ARE optional
  --    SMIME-CAPS { TYPE GenericHybridParameters
  --        IDENTIFIED BY id-rsa-kem }
  -- }

  KEM-ALGORITHM ::= CLASS {
    &id             OBJECT IDENTIFIER UNIQUE,
    &Value          OPTIONAL,
    &Params         OPTIONAL,
    &paramPresence  ParamOptions DEFAULT absent,
    &PublicKeySet   PUBLIC-KEY OPTIONAL,
    &Ukm            OPTIONAL,
    &ukmPresence    ParamOptions DEFAULT absent,
    &smimeCaps      SMIME-CAPS OPTIONAL
  } WITH SYNTAX {
    IDENTIFIER &id
    [VALUE &Value]
    [PARAMS [TYPE &Params] ARE &paramPresence]
    [PUBLIC-KEYS &PublicKeySet]
    [UKM [TYPE &Ukm] ARE &ukmPresence]
    [SMIME-CAPS &smimeCaps]
  }

  END
]]></sourcecode>
      </section>
      <section anchor="asn1-mod-2">
        <name>CMS-KEMRecipientInfo ASN.1 Module</name>
        <t>RFC Editor: Please replace "[THISRFC]" with the the number assigned
to this document.</t>
        <sourcecode type="asn.1" markers="true"><![CDATA[
  CMS-KEMRecipientInfo-2023
    { iso(1) member-body(2) us(840) rsadsi(113549)
      pkcs(1) pkcs-9(9) smime(16) modules(0)
      id-mod-cms-kemri-2023(TBD2) }

  DEFINITIONS IMPLICIT TAGS ::=
  BEGIN
  -- EXPORTS ALL;
  IMPORTS
    OTHER-RECIPIENT, CMSVersion, RecipientIdentifier,
    EncryptedKey, KeyDerivationAlgorithmIdentifier,
    KeyEncryptionAlgorithmIdentifier, UserKeyingMaterial
      FROM CryptographicMessageSyntax-2010  -- [RFC6268]
        { iso(1) member-body(2) us(840) rsadsi(113549)
          pkcs(1) pkcs-9(9) smime(16) modules(0)
          id-mod-cms-2009(58) }
    KEM-ALGORITHM
      FROM KEMAlgorithmInformation-2023  -- [THISRFC]
        { iso(1) identified-organization(3) dod(6) internet(1)
          security(5) mechanisms(5) pkix(7) id-mod(0)
          id-mod-kemAlgorithmInformation-2023(TBD3) }
    AlgorithmIdentifier{}
      FROM AlgorithmInformation-2009  -- [RFC5912]
        { iso(1) identified-organization(3) dod(6) internet(1)
          security(5) mechanisms(5) pkix(7) id-mod(0)
          id-mod-algorithmInformation-02(58) } ;

  --
  -- OtherRecipientInfo Types (ori-)
  --

  SupportedOtherRecipInfo OTHER-RECIPIENT ::= { ori-KEM, ... }

  ori-KEM OTHER-RECIPIENT ::= {
    KEMRecipientInfo IDENTIFIED BY id-ori-kem }

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

  id-ori-kem OBJECT IDENTIFIER ::= { id-ori 3 }

  --
  -- KEMRecipientInfo
  --

  KEMRecipientInfo ::= SEQUENCE {
    version CMSVersion,  -- always set to 0
    rid RecipientIdentifier,
    kem KEMAlgorithmIdentifier,
    kemct OCTET STRING,
    kdf KeyDerivationAlgorithmIdentifier,
    kekLength INTEGER (1..65535),
    ukm [0] EXPLICIT UserKeyingMaterial OPTIONAL,
    wrap KeyEncryptionAlgorithmIdentifier,
    encryptedKey EncryptedKey }

  KEMAlgSet KEM-ALGORITHM ::= { ... }

  KEMAlgorithmIdentifier ::=
    AlgorithmIdentifier{ KEM-ALGORITHM, {KEMAlgSet} }

  --
  -- CMSORIforKEMOtherInfo
  --

  CMSORIforKEMOtherInfo ::= SEQUENCE {
    wrap KeyEncryptionAlgorithmIdentifier,
    kekLength INTEGER (1..65535),
    ukm [0] EXPLICIT UserKeyingMaterial OPTIONAL }

  END
]]></sourcecode>
      </section>
    </section>
    <section anchor="sec-cons">
      <name>Security Considerations</name>
      <t>The Security Considerations of <xref target="RFC5652"/> are applicable to this document.</t>
      <t>To be appropriate for use with this specification, the KEM algorithm <bcp14>MUST</bcp14>
explicitly be designed to be secure when the public key is used many
times.  For example, a KEM algorithm with a single-use public key is not
appropriate because the public key is expected to be carried in a
long-lived certificate <xref target="RFC5280"/> and used over and over.  Thus, KEM
algorithms that offer indistinguishability under adaptive chosen ciphertext
attack (IND-CCA2) security are appropriate.  A common design pattern for
obtaining IND-CCA2 security with public key reuse is to apply the
Fujisaki-Okamoto (FO) transform <xref target="FO"/> or a variant of the FO
transform <xref target="HHK"/>.</t>
      <t>The KDF <bcp14>SHOULD</bcp14> offer at least the security level of the KEM.</t>
      <t>The choice of the key-encryption algorithm and the size of the
KEK <bcp14>SHOULD</bcp14> be made based on the security level
provided by the KEM. The key-encryption algorithm and the
KEK <bcp14>SHOULD</bcp14> at least have the security level of
the KEM.</t>
      <t>KEM algorithms do not provide data origin authentication; therefore, when
a KEM algorithm is used with the authenticated-data content type, the
contents are delivered with integrity from an unknown source.</t>
      <t>Implementations <bcp14>MUST</bcp14> protect the KEM private key, the KEK, the CEK (or the
CAEK).  Compromise of the KEM private key may
result in the disclosure of all contents protected with that KEM private key.
However, compromise of the KEK, the CEK, or the CAEK may result in disclosure
of the encrypted content of a single message.</t>
      <t>The KEM produces the IKM input value for the KDF.  This IKM value <bcp14>MUST NOT</bcp14>
be reused for any other purpose.  Likewise, any random value used by
the KEM algorithm to produce the shared secret or its encapsulation <bcp14>MUST NOT</bcp14>
be reused for any other purpose.  That is, the originator <bcp14>MUST</bcp14> generate a
fresh KEM shared secret for each recipient in the KEMRecipientInfo
structure, including any random value used by the KEM algorithm to produce
the KEM shared secret.  In addition, the originator <bcp14>MUST</bcp14> discard the KEM shared
secret, including any random value used by the KEM algorithm to produce
the KEM shared secret, after constructing the entry in the KEMRecipientInfo
structure for the corresponding recipient.  Similarly, the recipient <bcp14>MUST</bcp14>
discard the KEM shared secret, including any random value used by the KEM
algorithm to produce the KEM shared secret, after constructing the
KEK from the KEMRecipientInfo structure.</t>
      <t>Implementations <bcp14>MUST</bcp14> randomly generate content-encryption keys,
content-authenticated-encryption keys, and message-authentication keys.
Also, the generation of KEM key pairs relies on random numbers.  The use
of inadequate pseudo-random number generators (PRNGs) to generate these
keys can result in little or no security.  An attacker may find it much
easier to reproduce the PRNG environment that produced the keys,
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 in this area.</t>
      <t>If the cipher and key sizes used for the key-encryption and the
content-encryption algorithms are different, the effective security is
determined by the weaker of the two algorithms.  If, for example, the
content is encrypted with AES-CBC using a 128-bit CEK, and the CEK is
wrapped with AES-KEYWRAP using a 256-bit KEK, then at most 128 bits of
protection is provided.</t>
      <t>If the cipher and key sizes used for the key-encryption and the
content-authenticated-encryption algorithms are different, the effective
security is determined by the weaker of the two algorithms.  If, for example,
the content is encrypted with AES-GCM using a 128-bit
CAEK, and the CAEK is wrapped with AES-KEYWRAP using a 192-bit KEK, then at
most 128 bits of protection is provided.</t>
      <t>If the cipher and key sizes used for the key-encryption and the
message-authentication algorithms are different, the effective security is
determined by the weaker of the two algorithms.  If, for example, the
content is authenticated with HMAC-SHA256 using a 512-bit
message-authentication key, and the message-authentication key is wrapped
with AES-KEYWRAP using a 256-bit KEK, then at most 256 bits of
protection is provided.</t>
      <t>Implementers should be aware that cryptographic algorithms, including KEM
algorithms, become weaker with time.  As new cryptoanalysis techniques are
developed and computing capabilities advance, the work factor to break a
particular cryptographic algorithm will be reduced.  As a result,
cryptographic algorithm implementations should be modular, allowing new
algorithms to be readily inserted.  That is, implementers should be prepared
for the set of supported algorithms to change over time.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>For KEMRecipientInfo in <xref target="kemri"/>, IANA has assigned the object identifier (OID)
for (1.2.840.113549.1.9.16.13.3) in the "SMI Security for S/MIME Other Recipient
Info Identifiers" registry (1.2.840.113549.1.9.16.13), and the Description
for the new OID has been set to "id-ori-kem".</t>
      <t>For the ASN.1 Module in <xref target="asn1-mod-1"/>, IANA is requested to assign an
object identifier (OID) for the module identifier to replace TBD3. The
OID for the module should be allocated in the "SMI Security for PKIX
Module Identifier" registry (1.3.6.1.5.5.7.0), and the Description
for the new OID should be set to "id-mod-kemAlgorithmInformation-2023".</t>
      <t>For the ASN.1 Module in <xref target="asn1-mod-2"/>, IANA is requested to assign an
object identifier (OID) for the module identifier to replace TBD2.  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), and the Description
for the new OID should be set to "id-mod-cms-kemri-2023".</t>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Our thanks to Burt Kaliski for his guidance and design review.</t>
      <t>Our thanks to Carl Wallace for his careful review of the ASN.1 modules.</t>
      <t>Our thanks to
Hendrik Brockhaus,
Jonathan Hammell,
Mike Jenkins,
David von Oheimb, and
Francois Rousseau
for their careful review and thoughtful comments.</t>
    </section>
  </middle>
  <back>
    <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="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="X.680" 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="X.690" target="https://www.itu.int/rec/T-REC-X.680">
          <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="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="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="RFC6268">
          <front>
            <title>Additional New ASN.1 Modules for the Cryptographic Message Syntax (CMS) and the Public Key Infrastructure Using X.509 (PKIX)</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="July" year="2011"/>
            <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 some auxiliary ASN.1 modules to conform to the 2008 version of ASN.1; the 1988 ASN.1 modules remain the normative version. 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="6268"/>
          <seriesInfo name="DOI" value="10.17487/RFC6268"/>
        </reference>
        <reference anchor="FO">
          <front>
            <title>Secure Integration of Asymmetric and Symmetric Encryption Schemes</title>
            <author fullname="Eiichiro Fujisaki" initials="E." surname="Fujisaki">
              <organization/>
            </author>
            <author fullname="Tatsuaki Okamoto" initials="T." surname="Okamoto">
              <organization/>
            </author>
            <date month="December" year="2011"/>
          </front>
          <seriesInfo name="Journal of Cryptology" value="vol. 26, no. 1, pp. 80-101"/>
          <seriesInfo name="DOI" value="10.1007/s00145-011-9114-1"/>
          <refcontent>Springer Science and Business Media LLC</refcontent>
        </reference>
        <reference anchor="HHK">
          <front>
            <title>A Modular Analysis of the Fujisaki-Okamoto Transformation</title>
            <author fullname="Dennis Hofheinz" initials="D." surname="Hofheinz">
              <organization/>
            </author>
            <author fullname="Kathrin Hövelmanns" initials="K." surname="Hövelmanns">
              <organization/>
            </author>
            <author fullname="Eike Kiltz" initials="E." surname="Kiltz">
              <organization/>
            </author>
            <date year="2017"/>
          </front>
          <seriesInfo name="Theory of Cryptography" value="pp. 341-371"/>
          <seriesInfo name="DOI" value="10.1007/978-3-319-70500-2_12"/>
          <seriesInfo name="ISBN" value="[&quot;9783319704999&quot;, &quot;9783319705002&quot;]"/>
          <refcontent>Springer International Publishing</refcontent>
        </reference>
      </references>
    </references>
    <?line 677?>



  </back>
  <!-- ##markdown-source:
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
4E5ttP4Pbrv7PMNpAAA=

-->

</rfc>
