<?xml version="1.0" encoding="us-ascii"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.5.16 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC5280 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml">
<!ENTITY RFC5652 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5652.xml">
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8551 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8551.xml">
<!ENTITY RFC2986 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2986.xml">
<!ENTITY RFC5649 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5649.xml">
<!ENTITY RFC5869 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5869.xml">
<!ENTITY RFC5990 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5990.xml">
<!ENTITY RFC8411 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8411.xml">
<!ENTITY RFC9180 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9180.xml">
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-lamps-kyber-00" category="std">

  <front>
    <title abbrev="KYBER in CMS">Use of KYBER in the Cryptographic Message Syntax (CMS)</title>

    <author initials="J." surname="Prat" fullname="Julien Prat">
      <organization>CryptoNext Security</organization>
      <address>
        <email>julien.prat@cryptonext-security.com</email>
      </address>
    </author>
    <author initials="M." surname="Ounsworth" fullname="Mike Ounsworth">
      <organization>Entrust Limited</organization>
      <address>
        <email>mike.ounsworth@entrust.com</email>
      </address>
    </author>

    <date year="2022" month="November" day="08"/>

    <area>Security</area>
    <workgroup>LAMPS</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This document describes the conventions for using a Key Encapsulation Mechanism algorithm (KEM) within the Cryptographic Message Syntax (CMS). The CMS specifies the envelopped-data content type, which consists of an encrypted content and encrypted content-encryption keys for one or more recipients. The mechanism proposed here can rely on either post-quantum KEMs, hybrid KEMs or classical KEMs.</t>

<!-- End of Abstract -->



    </abstract>



  </front>

  <middle>


<section anchor="sec-version-changes" title="Changes in this version">

<t>The following changes were made in this version:</t>

<t><list style="symbols">
  <t>RFC is now about the use of Kyber in CMS;</t>
  <t>Use of KeyTransRecipientInfo to communicate algorithm info;</t>
  <t>Algorithms to be used in KEM-TRANS are limited to Kyber;</t>
  <t>Editorial changes.</t>
</list></t>

</section>
<section anchor="sec-introduction" title="Introduction">

<t>In recent years, there has been a substantial amount of research on quantum computers -- machines that exploit quantum mechanical phenomena to solve mathematical problems that are difficult or intractable for conventional computers. If large-scale quantum computers are ever built, they will be able to break many of the public-key cryptosystems currently in use. This would seriously compromise the confidentiality and integrity of digital communications on the Internet and elsewhere. Under such a threat model, the current key encapsulation mechanisms would be vulnerable.</t>

<t>Post-quantum key encapsulation mechanisms (PQ-KEM) are being developed in order to provide secure key establishment against an adversary with access to a quantum computer.</t>

<t>As the National Institute of Standards and Technology (NIST) is still in the process of selecting the new post-quantum cryptographic algorithms that are secure against both quantum and classical computers, the purpose of this document is to propose a generic &quot;algorithm-agnostic&quot; solution to protect in confidentiality the CMS envelopped-data content against the quantum threat : the KEM-TRANS mechanism.</t>

<t>Although this mechanism could thus be used with any key encapsulation mechanism, including post-quantum KEMs or hybrid KEMs.</t>

<t>This RFC nonetheless specifically specifies the case where the algorithm PQ-KEM algorithm is Kyber.</t>

<!-- End of introduction section -->

</section>
<section anchor="sec-terminology" title="Terminology">
<t>The key words &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL NOT&quot;, &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;, &quot;NOT RECOMMENDED&quot;, &quot;MAY&quot;, and &quot;OPTIONAL&quot; 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>

<t>The following terms are used in this document:</t>

<t>BER:
          Basic Encoding Rules (BER) as defined in <xref target="X.690"></xref>.</t>

<t>DER:
          Distinguished Encoding Rules as defined in <xref target="X.690"></xref>.</t>

<!-- End of terminology section -->

</section>
<section anchor="sec-design-rationales" title="Design Rationales">

<t>The Cryptographic Message Syntax (CMS) <xref target="RFC5652"></xref> defines two levels of encryptions in the Envelopped-Data Content section:</t>

<t><list style="symbols">
  <t>the Content-encryption process which protects the data using a symmetric algorithm used with a content encryption key (CEK);</t>
  <t>the Key-encryption process which protects this CEK using a key transport mechanism.</t>
</list></t>

<t>One of the typical use case of the CMS Envelopped-Data Content is to randomly generate a CEK, encrypt the data with a symmetric algorithm using this CEK and individually send the CEK to one or more recipients protected by asymmetric cryptography in a RecipientInfo object.</t>

<t>To achieve this scenario with KEM primitives, it is necessary to define a new key transport mechanism that will fulfil the following requirements:</t>

<t><list style="symbols">
  <t>the Key Transport Mechanism SHALL be secure against quantum computers.</t>
  <t>the Key Transport Mechanism SHALL take the Content-Encryption Key (CEK) as input.</t>
</list></t>

<t>According to NIST, a KEM generates a random secret and a ciphertext from which the recipient can extract the shared secret, meaning that a KEM can not be used straightforwardly as a key transport mechanism in the CMS &quot;multi-recipients&quot; context. The KEM-TRANS mechanism defined in this document aims to turn a KEM into a key transport scheme allowing the sender to distribute a randomly generated key to several recipients.
The KEM-TRANS Key transport mechanism described in the following section fulfils the requirements listed above and is an adaptation of the RSA-KEM algorithm previously specified in <xref target="RFC5990"></xref>. The solution is also aligned with the hybrid public key encyption scheme described in <xref target="RFC9180"/>.</t>

</section>
<section anchor="sec-kem-key-transport-mechanism" title="KEM Key Transport Mechanism (KEM-TRANS)">

<t>The KEM Key Transport Mechanism (KEM-TRANS) is a one-pass (store-and-forward) mechanism for transporting keying data to a recipient.</t>

<t>With this type of mechanism, a sender cryptographically encapsulates the keying data using the recipient&#39;s public key to obtain encrypted keying data. The recipient can then decapsulate the encrypted keying data using his private key to recover the plaintext keying data.</t>

<!-- End of kem-key-transport-mechanism section -->

<section anchor="sec-underlying-components" title="Underlying Components">

<t>The KEM-TRANS requires use of the following underlying components, which are provided to KEM-TRANS as algorithm parameters.</t>

<t><list style="symbols">
  <t>KEM, a Key Encapsulation Mechanism;</t>
  <t>KDF, a Key Derivation Function, which derives keying data of a specified length from a shared secret value;</t>
  <t>WRAP, a symmetric key-wrapping scheme, which encrypts keying Data using a key-encrypting key (KEK).</t>
</list></t>

<section anchor="kem" title="KEM">

<t>A KEM is a cryptographic algorithm consisting of three functions :</t>

<t><list style="symbols">
  <t>a key generation function <spanx style="strong">KEM.keygen</spanx> taking as input a security level and returning a key pair (private key and the associated public key) for this security level.</t>
  <t>an encapsulation function <spanx style="strong">KEM.encaps</spanx> taking a public key as input and returning a random session key and a ciphertext that is an encapsulation of the session key.</t>
  <t>a decaspulation function <spanx style="strong">KEM.decaps</spanx> taking as input a private key and a ciphertext and returning a session key.</t>
</list></t>

</section>
<section anchor="kdf" title="KDF">

<t>A key derivation function (KDF) is a cryptographic function that deterministically derives one or more secret keys from a secret value using a pseudorandom function. KDFs can be used to stretch keys into longer keys or to obtain keys of a required format.</t>

<t>If the session key obtained from the KEM algorithm is long enough to fit into the WRAP algorithm, then the KDF could be equal to the identity function.</t>

</section>
<section anchor="wrap" title="WRAP">

<t>A wrapping algorithm is a symmetric algorithm protecting data in confidentiality and integrity. It is especially designed to transport key material. the WRAP algorithm consists of two functions :</t>

<t><list style="symbols">
  <t>a wrapping function <spanx style="strong">Wrap</spanx> taking a wrapping key and a plaintext key as input and returning a wrapped key.</t>
  <t>a decaspulation function <spanx style="strong">Unwrap</spanx> taking as input a wrapping key and a wraped key and returning the plaintext key.</t>
</list></t>

<t>In the following, <spanx style="emph">kekLen</spanx> denotes the length in bytes of the wrapping key for the underlying symmetric key-wrapping scheme.</t>

<t>In this scheme, the length of the keying data to be transported MUST be among the lengths supported by the underlying symmetric key-wrapping scheme.</t>

<!-- End of underlying-components section -->

</section>
</section>
<section anchor="sec-key-generation-and-distribution" title="Recipient&#39;s Key Generation and Distribution">

<t>The KEM-TRANS described in the next sections assumes that the recipient has previously generated a key pair (<spanx style="emph">recipPrivKey</spanx> and <spanx style="emph">recipPubKey</spanx>) and has distributed this public key to the sender.</t>

<t>The protocols and mechanisms by which the key pair is securely generated and the public key is securely distributed are out of the scope of this document.</t>

<!-- End of key-generation-and-distribution section -->

</section>
<section anchor="sec-sender-operations" title="Sender&#39;s Operations">

<t>This process assumes that the following algorithm parameters have been selected:</t>

<t><list style="symbols">
  <t><spanx style="emph">KEM</spanx>: a key encapsulation mechanism, as defined above.</t>
  <t><spanx style="emph">KDF</spanx>: a key derivation function, as defined above.</t>
  <t><spanx style="emph">Wrap</spanx>: a symmetric key-wrapping algorithm, as defined above.</t>
  <t><spanx style="emph">kekLen</spanx>: the length in bits of the key required for the Wrap algorithm.</t>
</list></t>

<t>This process assumes that the following input data has been provided:</t>

<t><list style="symbols">
  <t><spanx style="emph">recipPubKey</spanx>: the recipient&#39;s public key.</t>
  <t><spanx style="emph">K</spanx>: the keying data to be transported, assumed to be a length that is compatible with the chosen Wrap algorithm.</t>
</list></t>

<t>This process outputs:</t>

<t><list style="symbols">
  <t><spanx style="emph">EK</spanx>: the encrypted keying data, from which the recipient will be able to retrieve <spanx style="emph">K</spanx>.</t>
</list></t>

<t>The sender performs the following operations:</t>

<t><list style="numbers">
  <t>Generate a shared secret <spanx style="emph">SS</spanx> and the associated ciphertext <spanx style="emph">CT</spanx> using the KEM encaspulation function and the recipient&#39;s public key <spanx style="emph">recipPubKey</spanx>:  <list style='empty'>
      <t>(SS, CT) = KEM.encaps(recipPubKey)</t>
    </list></t>
  <t>Derive a key-encrypting key <spanx style="emph">KEK</spanx> of length <spanx style="emph">kekLen</spanx> bytes from the shared secret <spanx style="emph">SS</spanx> using the underlying key derivation function:  <list style='empty'>
      <t>KEK = KDF(SS, kekLen)</t>
    </list></t>
  <t>Wrap the keying data <spanx style="emph">K</spanx> with the key-encrypting key <spanx style="emph">KEK</spanx> using the underlying key-wrapping scheme to obtain wrapped keying data <spanx style="emph">WK</spanx> of length <spanx style="emph">wrappedKekLen</spanx>:  <list style='empty'>
      <t>WK = Wrap(KEK, K)</t>
    </list></t>
  <t>Concatenate the wrapped keying data <spanx style="emph">WK</spanx> of length <spanx style="emph">wrappedKekLen</spanx> and the ciphertext <spanx style="emph">CT</spanx> to obtain the encrypted keying data <spanx style="emph">EK</spanx>:  <list style='empty'>
      <t>EK = (WK || CT)</t>
    </list></t>
  <t>Output the encrypted keying data <spanx style="emph">EK</spanx>.</t>
</list></t>

<!-- End of sender-operations section -->

</section>
<section anchor="sec-recipient-operations" title="Recipient&#39;s Operations">

<t>This process assumes that the following algorithm parameters have been communicated from the sender:</t>

<t><list style="symbols">
  <t><spanx style="emph">KEM</spanx>: a key encapsulation mechanism, as defined above.</t>
  <t><spanx style="emph">KDF</spanx>: a key derivation function, as defined above.</t>
  <t><spanx style="emph">Wrap</spanx>: a symmetric key-wrapping algorithm, as defined above.</t>
  <t><spanx style="emph">kekLen</spanx>: the length in bits of the key required for the Wrap algorithm.</t>
</list></t>

<t>This process assumes that the following input data has been provided:</t>

<t><list style="symbols">
  <t><spanx style="emph">recipPrivKey</spanx>: the recipient&#39;s private key.</t>
  <t><spanx style="emph">EK</spanx>: the encrypted keying data.</t>
</list></t>

<t>This process outputs:</t>

<t><list style="symbols">
  <t><spanx style="emph">K</spanx>: the keying data to be transported.</t>
</list></t>

<t>The recipient performs the following operations:</t>

<t><list style="numbers">
  <t>Separate the encrypted keying data <spanx style="emph">EK</spanx> into wrapped keying data <spanx style="emph">WK</spanx> of length <spanx style="emph">wrappedKekLen</spanx> and a ciphertext <spanx style="emph">CT</spanx> :  <list style='empty'>
      <t>(WK || CT) = EK</t>
    </list></t>
  <t>Decapsulate the ciphertext <spanx style="emph">CT</spanx> using the KEM decaspulation function and the recipient&#39;s private key to retrieve the shared secret <spanx style="emph">SS</spanx>:  <list style='empty'>
      <t>SS = KEM.decaps(recipPrivKey, CT)</t>
    </list>
If the decapsulation operation outputs an error, output &quot;decryption error&quot;, and stop.</t>
  <t>Derive a key-encrypting key <spanx style="emph">KEK</spanx> of length <spanx style="emph">kekLen</spanx> bytes from the shared secret <spanx style="emph">SS</spanx> using the underlying key derivation function:  <list style='empty'>
      <t>KEK = KDF(SS, kekLen)</t>
    </list></t>
  <t>Unwrap the wrapped keying data <spanx style="emph">WK</spanx> with the key-encrypting key <spanx style="emph">KEK</spanx> using the underlying key-wrapping scheme to recover the keying data <spanx style="emph">K</spanx>:  <list style='empty'>
      <t>K = Unwrap(KEK, WK)</t>
    </list>
If the unwrapping operation outputs an error, output &quot;decryption error&quot;, and stop.</t>
  <t>Output the keying data <spanx style="emph">K</spanx>.</t>
</list></t>

<!-- End of recipient-operations section -->

</section>
</section>
<section anchor="sec-use-in-cms" title="Use in CMS">

<t>The KEM Key Transport Mechanism MAY be employed for one or more recipients in the CMS envelopped-data content type (Section 6 of <xref target="RFC5652"></xref>), where the keying data <spanx style="emph">K</spanx> processed by the mechanism is the CMS content-encryption key (<spanx style="emph">CEK</spanx>).</t>

<section anchor="sec-recipientInfo-conventions" title="RecipientInfo Conventions">

<figure><artwork><![CDATA[
EDITOR'S NOTE' - TO BE DISCUSSED
3 possibilities to communicate info:
-Use KeyTransRecipientInfo (as it is done in RSA-KEM and in here)
-Define in this RFC a KemRecipientInfo as instance of 
 OtherRecipientInfo
-Define in this RFC a new top-level KemRecipientInfo
]]></artwork></figure>

<t>When the KEM Key Transport Mechanism is employed for a recipient, the RecipientInfo alternative for that recipient MUST be KeyTransRecipientInfo.</t>

<t>The mechanism satisfies the KeyTransportRecipientInfo interface defined in RFC 5652 by taking in a Content Encryption Key (CEK) and a recipient public key, and encrypting the CEK for that recipient.</t>

<t>The algorithm-specific fields of the KeyTransRecipientInfo value MUST have the following values:</t>

<t><list style="symbols">
  <t>keyEncryptionAlgorithm.algorithm MUST be id-kem-trans (see Appendix A);</t>
  <t>keyEncryptionAlgorithm.parameters MUST be a value of type GenericKemTransParameters (see Appendix A), identifying:
  <list style="symbols">
      <t>the key encapsulation mechanism (kem);</t>
      <t>the key derivation function (kdf);</t>
      <t>the symmetric wrapping mechanism (wrap).</t>
    </list></t>
  <t>encryptedKey MUST be the encrypted keying data (<spanx style="emph">EK</spanx>) output by the KEM-TRANS, where the keying data is the content-encryption key (CEK).</t>
</list></t>

<!-- End of recipientInfo-conventions section -->

</section>
<section anchor="sec-certificate-conventions" title="Certificate Conventions">

<t>The conventions specified in this section augment <xref target="RFC5280"></xref>.</t>

<section anchor="sec-key-usage-extension" title="Key Usage Extension">

<t>The intended application for the key MAY be indicated in the key usage certificate extension (see <xref target="RFC5280"></xref>, Section 4.2.1.3). If the keyUsage extension is present in a certificate that conveys a public key with the id-kem object identifier as discussed above, then the key usage extension MUST contain only the value <spanx style="emph">keyEncipherment</spanx></t>

<t><spanx style="emph">digitalSignature</spanx>, <spanx style="emph">nonRepudiation</spanx>, <spanx style="emph">dataEncipherment</spanx>, <spanx style="emph">keyAgreement</spanx>, <spanx style="emph">keyCertSign</spanx>, <spanx style="emph">cRLSign</spanx>, <spanx style="emph">encipherOnly</spanx> and <spanx style="emph">decipherOnly</spanx> SHOULD NOT be present.</t>

<t>A key intended to be employed only with the KEM-TRANS SHOULD NOT also be employed for data encryption. Good cryptographic practice employs a given key pair in only one scheme. This practice avoids the risk that vulnerability in one scheme may compromise the security of the other, and may be essential to maintain provable security.</t>

<!-- End of key-usage-extension section -->

</section>
<section anchor="sec-subject-public-key-info" title="Subject Public Key Info">

<figure><artwork><![CDATA[
EDITOR'S NOTE' - TODO 
Update this section according to the future PQC-PKIX RFCs
]]></artwork></figure>

<t>If the recipient wishes only to employ the KEM-TRANS with a given public key, the recipient MUST identify the public key in the certificate using the <spanx style="emph">id-kem</spanx> object identifier.</t>

<figure><artwork><![CDATA[
EDITOR'S NOTE' - TODO 
Clarify that id-kem refers to the KEM algo 
while KEM-TRANS refers to the KEM Transport mechanism
]]></artwork></figure>

<!-- End of subject-public-key-info section -->

<!-- End of certificate-conventions section -->

</section>
</section>
<section anchor="sec-smime-capabilities-attribute-conventions" title="SMIME Capabilities Attribute Conventions">

<t><xref target="RFC8551"></xref>, Section 2.5.2 defines the SMIMECapabilities signed attribute (defined as a SEQUENCE of SMIMECapability SEQUENCEs) to be used to specify a partial list of algorithms that the software announcing the SMIMECapabilities can support.  When constructing a signedData object, compliant software MAY include the SMIMECapabilities signed attribute announcing that it supports the KEM Key Transport Mechanism.</t>

<t>The SMIMECapability SEQUENCE representing the KEM Key Transport Mechanism MUST include the id-kem-trans object identifier in the capabilityID field and MUST include a GenericKemTransParameters value in the parameters field identifying the components with which the mechanism is to be employed.</t>

<t>The DER encoding of a SMIMECapability SEQUENCE is the same as the DER encoding of an AlgorithmIdentifier. Example DER encodings for typical sets of components are given in Appendix A.</t>

<!-- End of smime-capabilities-attribute-conventions section -->

<!-- End of use-in-cms section -->

</section>
</section>
<section anchor="sec-security-considerations" title="Security Considerations">

<figure><artwork><![CDATA[
EDITOR'S NOTE' - TODO
section to be completed
]]></artwork></figure>

<!-- End of security-considerations section -->

</section>
<section anchor="sec-iana-considerations" title="IANA Considerations">

<t>Within the CMS, algorithms are identified by object identifiers (OIDs).  With one exception, all of the OIDs used in this document were assigned in other IETF documents, in ISO/IEC standards documents, by the National Institute of Standards and Technology (NIST).
The two exceptions are the ASN.1 module&#39;s identifier and id-kem-transport that are both assigned in this document.</t>

<!-- End of iana-considerations section -->

</section>
<section anchor="sec-acknowledgements" title="Acknowledgements">
<t>This document incorporates contributions and comments from a large group of experts. The Editors would especially like to acknowledge the expertise and tireless dedication of the following people, who attended many long meetings and generated millions of bytes of electronic mail and VOIP traffic over the past year in pursuit of this document:</t>

<figure><artwork><![CDATA[
EDITOR'S NOTE' - TODO
section to be completed
]]></artwork></figure>

<t>We are grateful to all, including any contributors who may have
been inadvertently omitted from this list.</t>

<t>This document borrows text from similar documents, including those referenced below. Thanks go to the authors of those documents. &quot;Copying always makes things easier and less error prone&quot; - <xref target="RFC8411"></xref>.</t>

<!-- End of acknowledgements section -->

</section>
<section anchor="sec-asn1" title="Annex A : ASN.1 Syntax">

<t>The syntax for the scheme is given in Appendix A.1.</t>

<t>The syntax for selected underlying components including those mentioned above is given in Appendix A.2.</t>

<t>The following object identifier prefixes are used in the definitions below:</t>

<figure><artwork><![CDATA[
  nistAlgorithm OID ::= {
     joint-iso-itu-t(2) country(16) us(840) organization(1)
     gov(101) csor(3) nistAlgorithm(4)
  }

  smimeAlgorithm OID ::= { iso(1) member-body(2)
     us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3)
  }
]]></artwork></figure>

<section anchor="annex-a1-kem-trans-key-transport-mechanism" title="Annex A1 : KEM-TRANS Key Transport Mechanism">

<t>The object identifier for the KEM Key Transport Mechanism is id-kem-trans, which is defined in this document as:</t>

<figure><artwork><![CDATA[
id-kem-trans OID ::= { TBD }
]]></artwork></figure>

<t>When id-kem-trans is used in an AlgorithmIdentifier, the parameters MUST employ the GenericKemTransParameters syntax. 
The syntax for GenericKemTransParameters is as follows:</t>

<figure><artwork><![CDATA[
GenericKemTransParameters ::= {
    kem  KeyEncapsulationMechanism,
    kdf  KeyDerivationFunction,
    wrap KeyWrappingMechanism 
}
]]></artwork></figure>

<t>The fields of type GenericKemTransParameters have the following meanings:</t>

<t><list style="symbols">
  <t>kem identifies the underlying key encapsulation mechanism (KEM). This can be Kyber.</t>
  <t>kdf identifies the underlying key derivation function (KDF). This can be any KDF from <xref target="SP-800-56C-r2"></xref>.
kdf can be equal to <spanx style="emph">null</spanx> if the key encaspulation mechanism outputs a shared secret <spanx style="emph">SS</spanx> of size <spanx style="emph">kekLen</spanx>.</t>
  <t>wrap identifies the underlying key wrapping mechanism (WRAP). This can be any wrapping mechanism from <xref target="RFC5649"></xref>.</t>
</list></t>

</section>
<section anchor="annex-a2-underlying-components" title="Annex A2 : Underlying Components">

<section anchor="key-encapsulation-mechanisms" title="Key Encapsulation Mechanisms">

<t>KEM-TRANS can support any NIST KEM, including post-quantum KEMs Kyber.
This RFC only specifies the use of Kyber.</t>

<t>The object identifier for KEM depends on the security level (128 bits, 192 bits or 256 bits)</t>

<figure><artwork><![CDATA[
  id-kyber512 OID ::= { nistAlgorithm TBD }
  id-kyber768 OID ::= { nistAlgorithm TBD }
  id-kyber1024 OID ::= { nistAlgorithm TBD }
]]></artwork></figure>

<t>These object identifiers have no associated parameters.</t>

<figure><artwork><![CDATA[
  kyber512 ALGORITHM ::= { OID id-kyber512 }
  kyber768 ALGORITHM ::= { OID id-kyber768 }
  kyber1024 ALGORITHM ::= { OID id-kyber1024 }
]]></artwork></figure>

</section>
<section anchor="key-derivation-functions" title="Key Derivation Functions">

<t>KEM-TRANS can support any KDF from <xref target="RFC5869"></xref>.
This RFC only specifies the use of HKDF.
The KDF can be bypassed if the key encaspulation mechanism outputs a shared secret <spanx style="emph">SS</spanx> of size <spanx style="emph">kekLen</spanx>. kdf is then equal to <spanx style="emph">null</spanx>.</t>

<t>The object identifier for KDF depends on the security level (128 bits, 192 bits or 256 bits)</t>

<figure><artwork><![CDATA[
  id-alg-hkdf-with-sha256 OID ::= { 
           smimeAlgorithm id-alg-hkdf-with-sha256(28) 
      }
      
  id-alg-hkdf-with-sha384 OID ::= { 
           smimeAlgorithm id-alg-hkdf-with-sha384(29) 
      }
      
  id-alg-hkdf-with-sha512 OID ::= { 
           smimeAlgorithm id-alg-hkdf-with-sha512(30) 
      }
]]></artwork></figure>

<figure><artwork><![CDATA[
EDITOR'S NOTE' - TO BE DISCUSSED :
Is there a RFC defining KDF with SHA3?
Should we limit the compatible KDFs to [SP-800-56C-r2]?
]]></artwork></figure>

</section>
<section anchor="key-wrapping-schemes" title="Key Wrapping Schemes">

<t>KEM-TRANS can support any wrapping mechanism from <xref target="RFC5649"></xref>.
This RFC only specifies the use of aes256-Wrap.</t>

<figure><artwork><![CDATA[
EDITOR'S NOTE' - TO BE DISCUSSED :
Should we limit the compatible wrapping modes to [RFC5649]?
]]></artwork></figure>

<t>The object identifiers for the AES Key Wrap depend on the size of the key-encrypting key.
There are three object identifiers (see <xref target="RFC5649"></xref>):</t>

<figure><artwork><![CDATA[
  id-aes128-Wrap OID ::= { nistAlgorithm aes(1) aes128-Wrap(5) }
  id-aes192-Wrap OID ::= { nistAlgorithm aes(1) aes192-Wrap(25) }
  id-aes256-Wrap OID ::= { nistAlgorithm aes(1) aes256-Wrap(45) }
]]></artwork></figure>

<t>These object identifiers have no associated parameters.</t>

<figure><artwork><![CDATA[
  aes128-Wrap ALGORITHM ::= { OID id-aes128-Wrap }
  aes192-Wrap ALGORITHM ::= { OID id-aes192-Wrap }
  aes256-Wrap ALGORITHM ::= { OID id-aes256-Wrap }
]]></artwork></figure>

</section>
</section>
</section>


  </middle>

  <back>

    <references title='Normative References'>

&RFC2119;
&RFC5280;
&RFC5652;
&RFC8174;
&RFC8551;
<reference anchor="X.690" >
  <front>
    <title>Information technology - ASN.1 encoding Rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)</title>
    <author >
      <organization>ASC</organization>
    </author>
    <date year="2007"/>
  </front>
</reference>
<reference anchor="X9.44" >
  <front>
    <title>American National Standard X9.44: Public Key Cryptography for the Financial Services Industry -- Key Establishment Using Integer Factorization Cryptography</title>
    <author >
      <organization>ASC</organization>
    </author>
    <date year="2007"/>
  </front>
</reference>
<reference anchor="SP-800-56C-r2" >
  <front>
    <title>Recommendation for Key-Derivation Methods in Key-Establishment Schemes</title>
    <author >
      <organization>NIST</organization>
    </author>
    <date year="2020"/>
  </front>
</reference>


    </references>

    <references title='Informative References'>

&RFC2986;
&RFC5649;
&RFC5869;
&RFC5990;
&RFC8411;
&RFC9180;
<reference anchor="SP-800-108" >
  <front>
    <title>Recommendation for Key Derivation Using Pseudorandom Functions</title>
    <author >
      <organization>NIST</organization>
    </author>
    <date year="2009"/>
  </front>
</reference>


    </references>



  </back>

<!-- ##markdown-source:
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
u8XLxj1hQUNzlXodZambKecSsJY4tFilXYM4vUyMIixXDdz0lhEBEFWuwZbv
DkpUaJgdhXTaSTBBdJWU4gKMOwmjz+Ki9+v9Izmo0qbZNHm4AvQG33JdH+gX
reS27FGfp69Txkt0DVik5Fm8tgd6ii5QjRU0TtPWtP9DuHSaldjSunVnSHzW
QyhmQQ4K3yxvP/rpIvzpmSCg3ZjNze1zfpEt4m/1bBM+8WqNCXUH1shATQAL
8QUd2eIIg/JtzQ3er6u3CiqH9uZoirFTsaL6hx/03aMfzTEM0P6Ryrdmn2Fd
TtE7xugC33jSvNEzookmeAAKIonNrSKDz5EZOlRh4RDvWHRAwnc0pHCWJOzw
rGeWwr4w4el0MBoMB697AxPmYSAmuuxLUFsqKodC1+DOQCZNfNqp6lGbxS9s
V7r+yKh3BFiEc6RBQSGPti/OmUq5oJIQ0j/UEtzGUrkhtmRTO2brJPCL4jju
dI51GfY8WoGrLTJ53BfHSZrcyW0RRsRbfIIqWOlJqf3dxSqT0vkbFQlHwj+D
u/fmp9Q9b4AcnQ4OpfuoLN5EwWlGUkEtZ2eNxHmTYoMIV1MaHpbpbWc4qg+p
4xYyqNKCBuLbNA1rB31bLDaKAtMTBbeCSJQ4yWXNXwzOJt2v91y6q/+YRqEu
kYnUAyuCKTqP6DSKBjH9xcZv1NHbw13t6VMM2xxBsDUuTSk+3UL2bPBEBkWP
e0vKzNkbic0sdc2+6n7hlZgXrJDOJTcKLDo9zW+98uaAh6BmPz6a3ojOx23I
NuF6B7d2jIJUgaoobr+feLdXl3/EAKwYaGgLdLOQak3nrTHtwFhaNX3QBYcs
PzcOV4ci0zGhpXFCwCbn2nW5tzhm+z1uGvDgIDMmsZ/xXJjRZR+QySUGPc0J
c/gqOk/rKK6WkdTb3TcruZhplUxTu9Cqsnc77HH/zWOM68vrmZj4W98i3ovc
lKk1o4raRBsY0Gnu+aZ5Lcz8oO+jOi55NHgzGJW1vcAAmr4yuz7GtaOKrk0D
oTXPZ99/nH2YzOjGRKXzzr5TPfcGE567U4TboRf3M7I5LHej4/XaZQiy3XSZ
P+ERkp8kKWAMoy5NWvF4X58yDoQgNI0HynlW8GG2r1dDlS+sZH3yFHHkY42y
mQhDH98ZkC/lSoU2VMPcUKK+hOg1Ot3HPVBR7crd7MreDSZZn0N7BWs2I6Mx
SDvv5ZRBMfnGymj+AXDJkdHchCmf81AO0NTwy57aklMpz0Wq+9BKzNFsms7u
yqvRVJCxl3Ea7Cn8LIDPvxu9k/Ke3WXpbgBH+TBttT3fgzSl3UpyjtNZC6oO
e0dgRIm060nqF5rsfl9SZhzqyQlzyR49hQKu1w9C+a0XVN4eijQdMwHLgmwF
L2+0eMT2wRv3WS4vPly0kwc26DdJ++Tclb0GXO94COS3VWVKZTT0G7Y9N5dT
1UN3gJqGKEF+DuRWJ8Xj2CACbNZ+EYRvhOKFq5XeyRJ6EJez+3e2EdavJ+Jy
fvP15WzCX4Wgu2POe71H+Vm3zbjkGCtiLPW8fhyRvxewScMill+pCu7FFIfj
AMhZ2FtmdK3MXdeh8/gW6dS17yJ4SNKnWIYrXcTMcvVrj59r96vBv6QZUEbF
sYi5zRk/84Jvgue26IuubYpVlhZbuoPyeQuhVV9E5ouv5m6iU44U45chsJy3
pIX3ltQbUSLlpaOMr3sBSnY+tFDd8G9lCjaAG8wU/T9DaroCShVdGylzchY4
YFktsYnimJYE49l6HaoeyPBDDYg4uaDxP24ub/EAAe+0irL+1ld8JxfFtC0y
VUR5o4Ji/LMN+ZNk54W0LguCwMA29+Icrs/Khli8Tgk6Y0qkQ+cwUUK3L3O+
5QrYO3fOuSIuaTcHKlb4izTL0idwzvbmgoqAV7DQimUZMnI8mGfQBm4ZjV6C
WFD4fvKgxCo1SI6v+uvMDvaxww3E0STd7vh468mHPcnGfyD4Q2KTvjKWQ6pA
KWXcByTyCHj5g/6UQf1iVl3JG7aRJBJigRhra9X3rLSFqGSot+WVDzbYHQ1w
rC2wDAeNTqYipb0CusHJDQcbe9Ngz0SjxuW5JpIAkLKMPsv6jTqdAozYoElc
fAyAX20BjbDhFz2wGI9/I34qL8z9JYV9mBep1ANH6eXdUQ+rH0ELd93h2x7M
0j07PcFP3qwANPDXPbrDXtl/lT52hydD6KXSrPu6V52xe2qaPhuKKDi3kASM
SWFk4NcGPyC0SMMdEFNOZCjJlB+qqDscvn5zet4T24dAYTf81zvvwhOagIiH
QAYUlQQg+tdaMgQ1qV4vaYF6LJGmHIzqfCGH7IYFUyEeqQN3bpQWWwVQlgy6
/2aKqyDQXWkSlWG1HW3166CRUKezBd0PO1nxB6JuBft7RHTPkvXYrGh/66o6
4r4SWVop/7dM7ZftwiW1Ky8A2Pp/24ZO5aDNJ50SLWXT0fpA9lampw8nd1sS
0/o6l0lNb0odUW2ni3tzvnhHX6dkdPk0X2LGUWGhh0fdWxVeHRGjC5Y2UwD4
ofJ9HXC0zFHd1BY9HydFHB+LqCwzqBYqlUuwR4dtx60IXaO/SXtCi+si4Rxe
WFsqG2uZWxbW0pTXqT+b8+OgYvwjMP7W6zFlrnfP/RNoUXoNZy9MVCCM5Dss
h27Da9HaO/CUEKred3c/djI45IS4CABjiP0eRe0CR3c4OqNikb4Yno902Ugm
Rm/e0u+e8croT3C6N8OR43Gq0YP9T7X9r96e/VPthyej0y90wPWqlhVrE0zS
yj0T9waR9g1mHRfvv725u7z/7lpPhtO663x2O+BCDnXA95UOtJJDPajBc6lS
LZeVDqpTaa36i08/vkhrvoN++vok3mRgI1ns8KIehohf2pbZQynO9dc8x2Hd
Bep+Md2FSO+tgRIPkx0e0I2NSjVzvg/QhkH2DNAdnfXcrs/O7wNTvz47/dem
hgG6o/OfM3XVen/G1DBA9/VJbeoXVRGIceeStAA38qSiDErBB6KkKQk1/+7i
9e868zVtHZ/0h5VsukpXCNMtIlChWoz6HW+jrDWZqG4+53bIkl4QHl5gWL5U
oBQeTrw/WV7nyRcWW1KWhlx5YWnSC241IGUh6MVsbtmhzclaE9ppWSJYKzsi
F5FJneHAS4RtmR170IgU9cauxUkF5knc2OvPoQ1Cc6dp903PDQn45nz04kF0
0+6oMYoRzAtGMU27pzTKvxptXD7siQZuk2enm1n5gW6midPNLnV/N9vkufO/
CWU59ChWAAA=

-->

</rfc>

