<?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">
]>

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

<rfc ipr="trust200902" docName="draft-perret-prat-lamps-cms-pq-kem-01" category="std">

  <front>
    <title abbrev="PQ KEM in CMS">Use of Post-Quantum KEM in the Cryptographic Message Syntax (CMS)</title>

    <author initials="L." surname="Perret" fullname="Ludovic Perret">
      <organization>CryptoNext Security</organization>
      <address>
        <email>ludovic.perret@cryptonext-security.com</email>
      </address>
    </author>
    <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="May" day="20"/>

    <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 enveloped-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-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. This mechanism could thus be used with any key encapsulation mechanism, including post-quantum KEMs or hybrid KEMs.</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 thanks to a symmetric algorithm used with a content encryption key (CEK);</t>
  <t>the Key-encryption process which protects this CEK thanks to 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 againt 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 encapsulation algorithm 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="RFC5652"></xref>.</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 mechanism 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 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 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>

</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>

<t>Usage and formatting of the keying data is outside the scope of this document. With some key derivation functions, it is possible to include other information besides the shared secret value in the input to the function.  Also, with some symmetric key-wrapping schemes, it is possible to associate a label with the keying data. Such uses are outside the scope of this document, as they are not directly supported by CMS.</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 mechanism 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.
  <list style="symbols">
      <t><spanx style="emph">kekLen</spanx>: the length in bits of the key required for the Wrap algorithm.</t>
    </list></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> thanks to 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.
  <list style="symbols">
      <t><spanx style="emph">kekLen</spanx>: the length in bits of the key required for the Wrap algorithm.</t>
    </list></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> thanks to 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 enveloped-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 GenericHybridParameters (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 Mechanism, 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 Mechanism 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 Mechanism 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 GenericHybridParameters 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 ASN.1 syntax for identifying the KEM Key Transport Mechanism is an extension of the syntax for the &quot;generic hybrid cipher&quot; in ANS X9.44 <xref target="X9.44"></xref>.</t>

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

<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 GenericHybridParameters syntax. 
The syntax for GenericHybridParameters is as follows:</t>

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

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

<t><list style="symbols">
  <t>kem identifies the underlying key encapsulation mechanism (KEM). This can be any NIST KEM.</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>The KEM-TRANS Mechanism can support any NIST KEM, including post-quantum KEMs.</t>

<t>The object identifier for KEM is (TBD)</t>

<figure><artwork><![CDATA[
EDITOR'S NOTE' - TODO : 
PQ-KEMs OID have to be defined
]]></artwork></figure>

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

<t>The KEM-TRANS Mechanism can support any KDF from <xref target="SP-800-56C-r2"></xref>.</t>

<t>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>

<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>The KEM-TRANS Mechanism can support any wrapping mechanism from <xref target="RFC5649"></xref>.</t>

<figure><artwork><![CDATA[
EDITOR'S NOTE' - TO BE DISCUSSED :
Should we limit the compatible wrapping modes to [RFC5649]?
]]></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;
<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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
GX6EE7dSkfCOql2DufkfM/NdfpdPAAA=

-->

</rfc>

