<?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.6.24 (Ruby 3.1.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-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-ietf-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 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="February" day="24"/>
    <area>Security</area>
    <workgroup>LAMPS Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>The Cryptographic Message Syntax (CMS) supports key transport and
key agreement algorithms.  In recent years, cryptographers have been
specifying Key Encapsulation Mechanism (KEM) algorithms, including
quantum-secure KEM algorithms.  This document defines conventions for
the use of KEM algorithms by the originator and recipients to encrypt
CMS content.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Limited Additional Mechanisms for PKIX and SMIME Working Group mailing list (spasm@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/spasm/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/lamps-wg/cms-kemri"/>.</t>
    </note>
  </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>In advance, each recipient recipient uses KeyGen() to create a key pair,
and then obtains a certificate <xref target="RFC5280"/> that includes the public 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 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 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 }

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

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

  --
  -- CMSORIforKEMOtherInfo
  --

  CMSORIforKEMOtherInfo ::= SEQUENCE {
    wrap KeyEncryptionAlgorithmIdentifier,
    kekLength INTEGER (1..MAX),
    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 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>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 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) to replace TBD1.  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-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).</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).</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>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <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">
              <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">
          <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">
          <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">
          <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">
          <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">
          <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">
          <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">
          <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">
          <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">
          <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">
          <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"/>
        </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"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
524jF9H1kXE38FaoXK7nz5m34mVeo43rnvIfAKF88ul0OvhRI9PBGuCVXv30
/eD440gj7rN6pXnsJ6KzRtpn4gsfR6a5w2AeTvR3ZCo9FiBCD+QsWjdzllGt
8DM52vDX6HSf/O37PXD9yjyi6v1gGebXwHR/VBcpPJiTDsFaNUmbPbUFfcAu
4yNw9bJ8j59jbpSKsbBCn7/4aXo4nkCDzy8qjw3/s6chVOU7I9PaqTrr+WZa
E0wNNlpzsVStUEpbDI+VS2m7tTIvtHFRXVRhjLCtBiPM2sRfbYSdTQ9HF3hs
fHw+Bk7reoVSrcVQbrKh+8zypicjPg3BG40LMgC9Y7/61K869Auo6W/SQn/S
Bvtna6P9JkJ9NbFqBEOzVJl/auU1y88u6VF/gtZjeHl9Pb/NzP09HARs30Df
+wd36e0eraEjemL/LOt+lomv9lpDBSjetSJ5B8sgN1RL+HuiijtEXHWgxrUN
qUsksS9wS5f3ej21/fWb5vaG7Xw41nS7Kcx0CjX/yYtDHUSv5cINZv+/LPT3
KQu1sQy0pRrM44pX2xOnrcLCH7DL7+1UDz4bNAbyLS/8SyQlvsJWsjcn8SHW
28SYiCOr8/4lCLgAi3B0Dr+toV/IQK5QuMLcMMWLG4yiKR1JdkvrvCp8lSFw
M8bd9YABBWKZ+KJy0AvKDID7RoaYPvOsr5qwJwcbztMsw/SOFSBD1rIF9UoE
gizkmD9fiABh9YfDKhV3RTMRheZgmN8SYAZf00KpD6JTVo0tsvQyWCQ3eMqq
5cAThhEJdrrPgcLnN7q+uZRdhNq5gUPFOrL5nELaThGqPn7JSzwAysM4XFF1
a4SR7tQpq8NDtGF0zTvj0/1gOByAgDZqzxDaLJkqKPBSHFWEAJTAU6uoOKno
Tp1iQdfaDFWNRMh1sJQLRF1CLj6ykipxOih/TmR4nQRn1+Eyg0+dg7ONqh4D
sHRwBgjCpA2/CQGm1Ab+D86Y2+7w8MjGkWHJSSScDAHXZ8ZneGo1pvBZFf0x
ILOFuBGLKgtg8vCjE33GpRrH1lqaOnZm160GqTLBjSC1JnxtXLuq5Wuq4XjO
chQkrHU5T8HwyLxry+dry2fV8mtHavVZbw2XqnxT1WXu6VaYkTKSunacdjyr
b2AnQ2aduPVTtd7J1a6bQ1Mxnljg7sxN8Rkahpe0FjomFaawoa5TvPdAyVw8
FNlUfuceY6Uq+Oq0WLeJ6OZ9W0LP1pI/kdGDPTrMljD7MpG2jrMGAOVZddWZ
LhkAwREtMjrIjbFjvOnBIEWvpDoLHBb1Ad0T4ZGdvT3P/NhKu8/OXXqrYP4K
nEqb6jyrCosrAe+cyp1aDFF9sYoXUskJ5QNVoYYJ7aoEI2XvsIn6aC66YDOh
JFtM7bHSSSUbdZkk9DxOrgWWk3Xpq66CUaMY5jXVSR5zq5PR5p6XWjEazJUA
pYR/a9PzgfJO1Ncve6lKd9gc0K3O0Pnzz9eOvNpSlLXbJE1e0L06qhkVlYhq
xINFUr1KcFxVrzSvCFklzGPuD8DUAP8guIDec4zXo7VFKDBJEoH3OT6NLsuA
dO+DXGWqSsG9hGmSLJNFmC+0gPHv1mHNi+Zfv2jWypTPXnRjIaI5hbrmilW3
jbTI2rVrAFpOmeL1Z88oiJAqk6sFROCrIWrQY4OFzBSa9ZyJuucQUWBOueMJ
BErpwCeNUBVPlDqHXioJDawZi19KhFvVxgVeazNDBgN2zi9OP8iN+kkDSRhV
91NUch3Mv2JBp9HSzKpktOFgf5DNB2OjDJ0nKvG/LKMrBopcH47Bk6oVbXFi
vAMiybNUnWtFmWGPZGg5DxiWIszpzI1mQoQGn+QStQo6ybBkkDsyMamVLmCH
BBIMmfJZXqojPxHaEe5Yt1fZQukvuQojc/eMj39AI1m9+gY0jW8qs0vmc7yM
CncKWdt4CSoak2g6S0y/ZXmBBiVYzzHecGAvssC7bpH1lFZRlrO9qA9NM213
VKlK35TSBlQDTzp2EJkeyZzORxW6UhSeIjLarT2V4MVOqg632pO3IkRSaq2n
zgO6V0XOu0pAG8fHAYa8FasmSb8PRpNg+H6oC4lD3t/aCWZJ0XZwm9UNk/Wb
PdBNXrnDH40+/XAxOLdTbG2/xSkapIIqz0ELc5mBgQmw4FE+cki1WZKoY6HG
rv070qlVRDyTasyhGv+bqebentJCtQ/DkzrVniXvus82LtlzKdrf3SKmeYSi
7PejaIsk/6fYfR6qFUIPTwbDYHI4gG1hEbrdJ4S2LcWjYnsbh3bsqd34GO3U
bkT4NO1YO+2MwkYhK6/oABSGhm7p5jo62utdzdp8t6gf8+hi7AUvDtO4V35J
sqQAhaT7o9SgYRou7iRGGbxLGICK+i4jwpk6IYHT+Al/c9ENUTnLr/k8jPQx
vxmohGswiJ0bDluWYatjwSpCTalADLVi9O5j9brVD3dWqKNEUgieVmjOysOC
vYhQpuYL44ROEuCpaJrYmvlJM1FWoPLJEjb7SWtradIO/mW0HBMil0KFqQj9
dAnv4HSwHmhMgBQPjB00nDaxJ0DzBIvoqD+d3kRy6SiaSsDigYv1yyw6Z+P9
DW2wUDYXw/7aOMCqpKYTLnrR6BohFtXmM0b4i8nJuAqFYndVIqIPg/jXkrAq
0itfAAiXiUR7vtPvbfV23mz2VGaj1+/Bf297/dd4SeaBRq+XrSYsOAWAvx0V
hnqmzNM78uwgSV3WwgyOnC7OPrXYaUXO+dH4R6YXUSHDx8XrHqy9tw3/+7a3
+UwUbP0OKNjShzH+VhzoGqInsNDEEYSNl3wQYVBpIWJ1a4zEoL4yXkX8xxdp
9gI2z1mpTORr2nzvy7zgR2DtyuuEYEBT1dquKNd0iDYXdAtbvf8QPEX+A6wN
UWH6g4dIpfeqj1FqXpWsvnV7Bv4D+z+BAnnjU2MAAA==

-->

</rfc>
