<?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-rfc2629 version 1.5.26 (Ruby 2.3.7) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-housley-lamps-cms-kemri-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.0 -->
  <front>
    <title abbrev="CMS KEMRecipientInfo">Using Key Encapsulation Mechanism (KEM) Algorithms in the Cryptographic Message Syntax (CMS)</title>
    <seriesInfo name="Internet-Draft" value="draft-housley-lamps-cms-kemri-00"/>
    <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>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="February" day="01"/>
    <area>Security</area>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>The Cryptographic Message Syntax (CMS) supports key transport and
key agreement algorithms.  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 by the originator and recipients to encrypt
CMS content.</t>
    </abstract>
  </front>
  <middle>
    <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>KeyGen() -&gt; (pk, sk):</li>
      </ul>
      <ul empty="true">
        <li>
          <t>Generate the public key (pk) and a private key (sk).</t>
        </li>
      </ul>
      <ul spacing="normal">
        <li>Encapsulate(pk) -&gt; (ct, ss):</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>Decapsulate(sk, ct) -&gt; ss:</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
Encapsulate().</t>
      <t>To support a particular KEM algorithm, the CMS recipient <bcp14>MUST</bcp14> implement
KeyGen() and Decapsulate().  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>
      </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.  Thus,
the content-encryption key is used to protect the in CMS content.</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>The originator establishes the content-encryption key using these steps:</t>
      <ol spacing="normal" type="1"><li>The content-encryption key, called CEK, is generated at random.</li>
        <li>
          <t>For each recipient:  </t>
          <ul spacing="normal">
            <li>The recipient's public key is used with the Encapsulate() function to obtain a pairwise shared secret and the ciphertext for the recipient.</li>
            <li>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 send in the clear.</li>
            <li>The KEK is used to encrypt the CEK for this recipient.</li>
          </ul>
        </li>
      </ol>
      <t>The recipient obtains the content-encryption key using these steps:</t>
      <ol spacing="normal" type="1"><li>The recipient's private key and the ciphertext are used with the Decapsulate() function to obtain a pairwise shared secret.</li>
        <li>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 send in the clear.</li>
        <li>The KEK is used to decrypt the content-encryption key, called CEK.</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 TBD1 }
]]></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..MAX),
    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 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 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 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.  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.  When the ukm value is provided, it is used as an input to
the key-derivation function as a context input.  For example, user key
material could  include a nonce, an IV, or other data required by the
key-derivation function.  Implementations <bcp14>MUST</bcp14> accept a KEMRecipientInfo
SEQUENCE that includes a ukm field.  Note that this expands of 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
]]></artwork>
    </section>
    <section anchor="key-derivation">
      <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 the context used as in additional input to the KDF; it is
the DER-encoded CMSORIforKEMOtherInfo structure defined as:</t>
        </li>
      </ul>
      <artwork><![CDATA[
  CMSORIforKEMOtherInfo ::= SEQUENCE {
    wrap KeyEncryptionAlgorithmIdentifier,
    kekLength INTEGER (1..MAX),
    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, which may be useful for some
key-derivation functions.  For example, user keying material could
include a nonce, an IV, or additional key binding information.</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 and L as inputs; an acceptable
KDF <bcp14>MAY</bcp14> also accept salt and other inputs identified in the
UserKeyingMaterial.  All of these inputs <bcp14>MUST</bcp14> influence the
output of the KDF.  If the KDF requires a salt or other inputs, then
those input <bcp14>MUST</bcp14> be provided as parameters of the
KeyDerivationAlgorithmIdentifier.</t>
    </section>
    <section anchor="asn1-mod">
      <name>ASN.1 Module</name>
      <t>This appendix provides an ASN.1 module <xref target="X.680"/> for the use of KEM
Algorithms with CMS.  It follows the conventions established
in <xref target="RFC5911"/>, <xref target="RFC5912"/>, and <xref target="RFC6268"/>.</t>
      <sourcecode type="asn.1" markers="true"><![CDATA[
  CMS-KEM-2023
    { iso(1) member-body(2) us(840) rsadsi(113549)
      pkcs(1) pkcs-9(9) smime(16) id-mod(0)
      id-mod-cms-kem(TBD2) }

  DEFINITIONS EXPLICIT TAGS ::=
  BEGIN

  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) }
    AlgorithmIdentifier{}, PUBLIC-KEY, SMIME-CAPS, ParamOptions
      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) } ;

  --
  --  KEM-ALGORITHM
  --
  --  Describes the basic properties of a KEM algorithm
  --
  --  &id - contains the OID identifying the KEM algorithm
  --  &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
  --  &smimeCaps - contains the object describing how the S/MIME
  --               capabilities are presented.
  --

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

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

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

  --
  -- 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 TBD1 }

  --
  -- KEMRecipientInfo
  --

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

  --
  -- CMSORIforKEMOtherInfo
  --

  CMSORIforKEMOtherInfo ::= SEQUENCE {
    wrap KeyEncryptionAlgorithmIdentifier,
    kekLength INTEGER (1..MAX),
    ukm [0] EXPLICIT UserKeyingMaterial OPTIONAL
  }
 
  END
]]></sourcecode>
    </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 choice of the KDF <bcp14>SHOULD</bcp14> be made based on the security
level provided by the KEM. The KDF <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 to 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 to 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 is requested to assign an
object identifier (OID).  The OID for KEMRecipientInfo should be allocated
in the "SMI Security for S/MIME Other Recipient Info Identifiers"
registry (1.2.840.113549.1.9.16.13).</t>
      <t>For the ASN.1 Module in <xref target="asn1-mod"/>, IANA is requested to assign an
object identifier (OID) for the module identifier. 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>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Our thanks to Burt Kaliski for his guidance and design review.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC5083" target="https://www.rfc-editor.org/info/rfc5083">
          <front>
            <title>Cryptographic Message Syntax (CMS) Authenticated-Enveloped-Data Content Type</title>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <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" target="https://www.rfc-editor.org/info/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">
              <organization/>
            </author>
            <author fullname="S. Santesson" initials="S." surname="Santesson">
              <organization/>
            </author>
            <author fullname="S. Farrell" initials="S." surname="Farrell">
              <organization/>
            </author>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen">
              <organization/>
            </author>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <author fullname="W. Polk" initials="W." surname="Polk">
              <organization/>
            </author>
            <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" target="https://www.rfc-editor.org/info/rfc5652">
          <front>
            <title>Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <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" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <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" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <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>
        <name>Informative References</name>
        <reference anchor="RFC4086" target="https://www.rfc-editor.org/info/rfc4086">
          <front>
            <title>Randomness Requirements for Security</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd">
              <organization/>
            </author>
            <author fullname="J. Schiller" initials="J." surname="Schiller">
              <organization/>
            </author>
            <author fullname="S. Crocker" initials="S." surname="Crocker">
              <organization/>
            </author>
            <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" target="https://www.rfc-editor.org/info/rfc5869">
          <front>
            <title>HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
            <author fullname="H. Krawczyk" initials="H." surname="Krawczyk">
              <organization/>
            </author>
            <author fullname="P. Eronen" initials="P." surname="Eronen">
              <organization/>
            </author>
            <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" target="https://www.rfc-editor.org/info/rfc5911">
          <front>
            <title>New ASN.1 Modules for Cryptographic Message Syntax (CMS) and S/MIME</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman">
              <organization/>
            </author>
            <author fullname="J. Schaad" initials="J." surname="Schaad">
              <organization/>
            </author>
            <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" target="https://www.rfc-editor.org/info/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">
              <organization/>
            </author>
            <author fullname="J. Schaad" initials="J." surname="Schaad">
              <organization/>
            </author>
            <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" target="https://www.rfc-editor.org/info/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">
              <organization/>
            </author>
            <author fullname="S. Turner" initials="S." surname="Turner">
              <organization/>
            </author>
            <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" target="http://dx.doi.org/10.1007/s00145-011-9114-1">
          <front>
            <title>Secure Integration of Asymmetric and Symmetric Encryption Schemes</title>
            <author fullname="Eiichiro Fujisaki" surname="Fujisaki"/>
            <author fullname="Tatsuaki Okamoto" surname="Okamoto"/>
            <author>
              <organization>Springer Science and Business Media LLC</organization>
            </author>
            <date day="2" month="December" year="2011"/>
          </front>
          <refcontent>Journal of Cryptology, vol. 26, no. 1, pp. 80-101</refcontent>
          <seriesInfo name="DOI" value="10.1007/s00145-011-9114-1"/>
        </reference>
        <reference anchor="HHK" target="http://dx.doi.org/10.1007/978-3-319-70500-2_12">
          <front>
            <title>A Modular Analysis of the Fujisaki-Okamoto Transformation</title>
            <author fullname="Dennis Hofheinz" surname="Hofheinz"/>
            <author fullname="Kathrin Hövelmanns" surname="Hövelmanns"/>
            <author fullname="Eike Kiltz" surname="Kiltz"/>
            <author>
              <organization>Springer International Publishing</organization>
            </author>
            <date year="2017"/>
          </front>
          <refcontent>Theory of Cryptography, pp. 341-371</refcontent>
          <seriesInfo name="DOI" value="10.1007/978-3-319-70500-2_12"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
Q4E12bdc0Eso9LsCF+DQsv8BJjqUH+hXAAA=

-->

</rfc>
