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


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC5280 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml">
<!ENTITY RFC5652 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5652.xml">
<!ENTITY RFC8619 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8619.xml">
<!ENTITY RFC5869 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5869.xml">
<!ENTITY RFC5649 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5649.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8551 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8551.xml">
<!ENTITY RFC5990 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5990.xml">
<!ENTITY RFC8411 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8411.xml">
<!ENTITY RFC9180 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9180.xml">
]>


<rfc ipr="trust200902" docName="draft-ietf-lamps-cms-kyber-01" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true">
  <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="2023" month="November" day="05"/>

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

    <abstract>


<?line 83?>
<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>


<?line 88?>

<section anchor="sec-version-changes"><name>Revision History</name>

<t><list style="symbols">
  <t>draft-ietf-lamps-cms-kyber-01:
  <list style="symbols">
      <t>Details of the KEMRecipientInfo content when using Kyber;</t>
      <t>Editorial changes.</t>
    </list></t>
  <t>draft-ietf-lamps-cms-kyber-00:
  <list style="symbols">
      <t>Use of KEMRecipientInfo to communicate algorithm info;</t>
      <t>Editorial changes.</t>
    </list></t>
</list></t>

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

<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"><name>Terminology</name>
<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"><name>Design Rationales</name>

<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"><name>KEM Key Transport Mechanism (KEM-TRANS)</name>

<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"><name>Underlying Components</name>

<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"><name>KEM</name>

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

<t><list style="symbols">
  <t>a key generation function <strong>KEM.keygen</strong> 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 <strong>KEM.encaps</strong> 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 <strong>KEM.decaps</strong> taking as input a private key and a ciphertext and returning a session key.</t>
</list></t>

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

<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"><name>WRAP</name>

<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 <strong>Wrap</strong> taking a wrapping key and a plaintext key as input and returning a wrapped key.</t>
  <t>a decaspulation function <strong>Unwrap</strong> taking as input a wrapping key and a wraped key and returning the plaintext key.</t>
</list></t>

<t>In the following, <em>kekLen</em> 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"><name>Recipient&#39;s Key Generation and Distribution</name>

<t>The KEM-TRANS described in the next sections assumes that the recipient has previously generated a key pair (<em>recipPrivKey</em> and <em>recipPubKey</em>) and has distributed his 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"><name>Sender&#39;s Operations</name>

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

<t><list style="symbols">
  <t><em>KEM</em>: a key encapsulation mechanism, as defined above.</t>
  <t><em>KDF</em>: a key derivation function, as defined above.</t>
  <t><em>Wrap</em>: a symmetric key-wrapping algorithm, as defined above.</t>
  <t><em>kekLen</em>: 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><em>recipPubKey</em>: the recipient&#39;s public key.</t>
  <t><em>K</em>: 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><em>EK</em>: the encrypted keying data, from which the recipient will be able to retrieve <em>K</em>.</t>
</list></t>

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

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

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

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

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

<t><list style="symbols">
  <t><em>KEM</em>: a key encapsulation mechanism, as defined above.</t>
  <t><em>KDF</em>: a key derivation function, as defined above.</t>
  <t><em>Wrap</em>: a symmetric key-wrapping algorithm, as defined above.</t>
  <t><em>kekLen</em>: 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><em>recipPrivKey</em>: the recipient&#39;s private key.</t>
  <t><em>EK</em>: the encrypted keying data.</t>
</list></t>

<t>This process outputs:</t>

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

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

</section>
</section>
<section anchor="sec-use-kyber-in-cms"><name>Use of Kyber in CMS</name>

<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 <em>K</em> processed by the mechanism is the CMS content-encryption key (<em>CEK</em>).</t>

<section anchor="sec-use-kyber-in-kem-trans"><name>Use of of Kyber within KEM-TRANS</name>

<t>When Kyber is employed in CMS, the security levels of the different underlying components used by the sender within the KEM-TRANS should be consistant.</t>

<t>When kyber512 is used, the following configuration should be used:</t>

<t><list style="symbols">
  <t>KEM: id-kyber512</t>
  <t>KDF: id-alg-hkdf-with-sha256 OR id-alg-hkdf-with-sha3-256</t>
  <t>kekLen: 128</t>
  <t>WRAP: id-aes128-Wrap</t>
</list></t>

<t>When kyber768 is used, the following configuration should be used:</t>

<t><list style="symbols">
  <t>KEM: id-kyber768</t>
  <t>KDF: id-alg-hkdf-with-sha384 OR id-alg-hkdf-with-sha3-384</t>
  <t>kekLen: 192</t>
  <t>WRAP: id-aes192-Wrap</t>
</list></t>

<t>When kyber1024 is used, the following configuration should be used:</t>

<t><list style="symbols">
  <t>KEM: id-kyber1024</t>
  <t>KDF: None</t>
  <t>kekLen: 256</t>
  <t>WRAP: id-aes256-Wrap</t>
</list></t>

<!-- End of use-kyber-in-kem-trans section -->

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

<t>When KEM-TRANS is employed for a recipient, the RecipientInfo alternative for that recipient MUST be OtherRecipientInfo using the KEMRecipientInfo structure as defined in <xref target="draft-ietf-lamps-cms-kemri"></xref>.
The fields of the KEMRecipientInfo MUST have the following values:</t>

<t><list style="symbols">
  <t>version is the syntax version number; it MUST be 0;</t>
  <t>rid identifies the recipient&#39;s certificate or public key (<em>recipPubKey</em>);</t>
  <t>kem identifies the KEM algorithm (<em>KEM</em>); it MUST contain one of the id-kyber (id-kyber512, id-kyber768, id-kyber1024);</t>
  <t>kemct is the ciphertext produced for this recipient (<em>CT</em>);</t>
  <t>kdf identifies the key-derivation algorithm (<em>KDF</em>);</t>
  <t>kekLength is the size of the key-encryption key in octets (<em>kekLen</em>);</t>
  <t>ukm is an optional random input to the key-derivation function;</t>
  <t>wrap identifies a key wrappingn algorithm used to encrypt the content-encryption key (<em>WRAP</em>).</t>
</list></t>

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

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

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

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

<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 <em>keyEncipherment</em>.</t>

<t><em>digitalSignature</em>, <em>nonRepudiation</em>, <em>dataEncipherment</em>, <em>keyAgreement</em>, <em>keyCertSign</em>, <em>cRLSign</em>, <em>encipherOnly</em> and <em>decipherOnly</em> 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"><name>Subject Public Key Info</name>

<t>If the recipient wishes to employ the KEM-TRANS with a given public key, the recipient MUST use a X.509 certificate as defined in <xref target="draft-ietf-lamps-kyber-certificates"></xref>.</t>

<t>The public key in the certificate should be identified by one of object identifiers given in Annex : id-kyber512, id-kyber768 or id-kyber1024.</t>

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

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

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

<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"><name>Security Considerations</name>

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

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

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

<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"><name>Acknowledgements</name>
<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>

<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 to the authors of those documents..</t>

<!-- End of acknowledgements section -->

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

<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"><name>Annex A1 : KEM-TRANS Key Transport Mechanism</name>

<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 ::= { smimeAlgorithm 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 <em>null</em> if the key encaspulation mechanism outputs a shared secret <em>SS</em> of size <em>kekLen</em>.</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"><name>Annex A2 : Underlying Components</name>

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

<t>KEM-TRANS can support any NIST KEM, including the post-quantum KEM 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>

<t>When one of these algorithms identifiers is used, the parameters field MUST be absent; not NULL but absent.</t>

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

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

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

<t>For SHA2 algorithms, the following object identifiers from <xref target="RFC8619"></xref> should be used:</t>

<figure><artwork><![CDATA[
  id-alg-hkdf-with-sha256 OID ::= { OID id-alg-hkdf-with-sha256 }
  id-alg-hkdf-with-sha384 OID ::= { OID id-alg-hkdf-with-sha384 }
  id-alg-hkdf-with-sha512 OID ::= { OID id-alg-hkdf-with-sha512 }
]]></artwork></figure>

<t>For SHA3 algorithms, the following object identifiers from <xref target="draft-housley-lamps-cms-sha3-hash"></xref> should be used:</t>

<figure><artwork><![CDATA[
  id-alg-hkdf-with-sha3-256 OID ::= { OID id-alg-hkdf-with-sha3-256 } 
  id-alg-hkdf-with-sha3-384 OID ::= { OID id-alg-hkdf-with-sha3-384 }
  id-alg-hkdf-with-sha3-512 OID ::= { OID id-alg-hkdf-with-sha3-512 }
]]></artwork></figure>

<t>When one of these algorithms identifiers is used, the parameters field MUST be absent; not NULL but absent.</t>

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

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

<t>The object identifiers for the AES Key Wrap depend on the size of the key-encrypting key.</t>

<t>The following object identifiers from <xref target="RFC5649"></xref> should be used:</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>

<t>When one of these algorithms identifiers is used, the parameters field MUST be absent; not NULL but absent.</t>

</section>
</section>
<section anchor="appendix-a3-examples"><name>Appendix A3 : Examples</name>

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

</section>
</section>


  </middle>

  <back>


    <references title='Normative References' anchor="sec-normative-references">

&RFC2119;
&RFC5280;
&RFC5652;
&RFC8619;
&RFC5869;
&RFC5649;
&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="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>
<reference anchor="draft-ietf-lamps-cms-kemri" >
  <front>
    <title>Using Key Encapsulation Mechanism (KEM) Algorithms in the Cryptographic Message Syntax (CMS)</title>
    <author >
      <organization>IETF</organization>
    </author>
    <date year="2023"/>
  </front>
</reference>
<reference anchor="draft-housley-lamps-cms-sha3-hash" >
  <front>
    <title>Use of the SHA3 One-way Hash Functions in the Cryptographic Message Syntax (CMS)</title>
    <author >
      <organization>IETF</organization>
    </author>
    <date year="2023"/>
  </front>
</reference>
<reference anchor="draft-ietf-lamps-kyber-certificates" >
  <front>
    <title>Internet X.509 Public Key Infrastructure - Algorithm Identifiers for Kyber</title>
    <author >
      <organization>IETF</organization>
    </author>
    <date year="2023"/>
  </front>
</reference>


    </references>

    <references title='Informative References' anchor="sec-informative-references">

&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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
7X0worPNS0tUDZZN8XyitlxHUnrbag6dY1CDczffnQqT5631SJyV63Z+Bk0f
jpxALzbc7AWyHgxFUyk290joRiqLtVng5tZ16cS0DHK4dlHC8njg2sW31M5d
lbA3JWwbyv5Bm0863+e2qqfFo5FoxnOwzYR2ZJv1xTc+2O9I9TZOYjeUZvBX
XXQyQxea83XvXmca9unzXa6fr4+INgKLwAnGf6h9hQoCc+aobmrLw3ezKk13
ReJKMuo1XW4J9pi162gaPUlMApv8Lq6rmZrtWJg9zfU4hanXjoV1NOV16g+P
fR7WsGAfsKDzIpFLk264qQMtHIh4oSlRgV4d3/bxTYJsfTvA7K79YADlteof
B6i88+LhNljimgm0KvbjHY3bLv3R/huqrRngwZmusinw5Ip+7xic9tImHgbV
7QlDUL09ZlZ+Tns6l9veAderOlastTDLa5dy/OtWGh7MOo7f//7y+uzm3YWe
DKf11/nod8CFbOuA72sdaCXbelADA9nuREdJP+Txl1c7rmzF3LZEfoapg2/p
hu2Hj3jvGO8P0EMv099xjUz1niN07xxO6G/46UM5eqHVbrbGS5JodH5tdGDM
U5x4b2DRVlUg8v4xXYDx38Lf03eAEW6LmqfHHXJp2YVfP/zcPlG2KtB9YG+1
QUtPZ6vHLaPQ6fmTo2CrbaPUVX/TKKw4hlEHv4RRT36y72exkAobnrN8avco
tg71TE4GT/HyIHgeN7ndPxskLEoY78h8PHKbgXuGmX0GvHg1EpvUWVmP+3gy
tWRq3baqveFgmd2Hp6Mr1SB+k8R5dTGbwN5v8uh101Up27qZJl43w50t3WyT
/wW58YLYA3CkdFpV/dKM438DwxKv1C9ZAAA=

-->

</rfc>

