<?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.1 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-cms-kemri-06" category="std" consensus="true" submissionType="IETF" updates="5652" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.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-latest"/>
    <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="2023" month="October" day="21"/>
    <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 between
the originator and recipient.  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>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 sender.</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, and then
all recipients obtain that key.  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, which is used to encrypt
the originator-generated content-encryption key.</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 content-encryption key using these steps:</t>
      <ol spacing="normal" type="1"><li>
          <t>The content-encryption key, called 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 and the ciphertext for the recipient.</t>
            </li>
            <li>
              <t>The key-derivation function is used to derive a pairwise key-encryption key, called KEK, from the pairwise shared secret and other data that is sent in the clear.</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 content-encryption key 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 shared secret.</t>
        </li>
        <li>
          <t>The key-derivation function is used to derive a pairwise key-encryption key, called KEK, from the pairwise shared secret and other data that is sent in the clear.</t>
        </li>
        <li>
          <t>The KEK is used to decrypt the content-encryption key, called 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 to 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 key-encryption key.  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 key-encryption key 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
content-encryption key.  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 content-encryption
key or the content-authenticated-encryption key with the
key-encryption key.  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 shared secret.  The details of establishment depend on
the KEM algorithm used.  A Key derivation algorithm is used to transform
the pairwise shared secret value into a key-encryption key.</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
key-encryption key 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 key-encryption key 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 key-encryption key that is used to encrypt the
content-encryption key or the content-authenticated-encryption key.</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
key-encryption key <bcp14>SHOULD</bcp14> be made based on the security level
provided by the KEM. The key-encryption algorithm and the
key-encryption key <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 key-encryption key, the
content-encryption key and the content-authenticated-encryption.  Compromise
of the KEM private key may result in the disclosure of all contents protected
with that KEM private key.  However, compromise of the key-encryption key, the
content-encryption key, or the content-authenticated-encryption 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
key-encryption key 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 content-encryption key,
and the content-encryption key is wrapped with AES-KEYWRAP using a 256-bit
key-encryption key, 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
content-authenticated-encryption key, and the content-authenticated-encryption
key is wrapped with AES-KEYWRAP using a 192-bit key-encryption key, 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 key-encryption key, 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 664?>



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

-->

</rfc>
