<?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.7.17 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-pq-composite-kem-04" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.22.0 -->
  <front>
    <title abbrev="Composite ML-KEM">Composite ML-KEM for Use in the Internet X.509 Public Key Infrastructure and CMS</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-pq-composite-kem-04"/>
    <author initials="M." surname="Ounsworth" fullname="Mike Ounsworth">
      <organization abbrev="Entrust">Entrust Limited</organization>
      <address>
        <postal>
          <street>2500 Solandt Road -- Suite 100</street>
          <city>Ottawa, Ontario</city>
          <code>K2K 3G5</code>
          <country>Canada</country>
        </postal>
        <email>mike.ounsworth@entrust.com</email>
      </address>
    </author>
    <author initials="J." surname="Gray" fullname="John Gray">
      <organization abbrev="Entrust">Entrust Limited</organization>
      <address>
        <postal>
          <street>2500 Solandt Road -- Suite 100</street>
          <city>Ottawa, Ontario</city>
          <code>K2K 3G5</code>
          <country>Canada</country>
        </postal>
        <email>john.gray@entrust.com</email>
      </address>
    </author>
    <author initials="M." surname="Pala" fullname="Massimiliano Pala">
      <organization>OpenCA Labs</organization>
      <address>
        <postal>
          <city>New York City, New York</city>
          <country>United States of America</country>
        </postal>
        <email>director@openca.org</email>
      </address>
    </author>
    <author initials="J." surname="Klaussner" fullname="Jan Klaussner">
      <organization>Bundesdruckerei GmbH</organization>
      <address>
        <postal>
          <street>Kommandantenstr. 18</street>
          <city>Berlin</city>
          <code>10969</code>
          <country>Germany</country>
        </postal>
        <email>jan.klaussner@bdr.de</email>
      </address>
    </author>
    <author initials="S." surname="Fluhrer" fullname="Scott Fluhrer">
      <organization>Cisco Systems</organization>
      <address>
        <email>sfluhrer@cisco.com</email>
      </address>
    </author>
    <date year="2024" month="July" day="08"/>
    <area>Security</area>
    <workgroup>LAMPS</workgroup>
    <keyword>X.509</keyword>
    <keyword>CMS</keyword>
    <keyword>Post-Quantum</keyword>
    <keyword>KEM</keyword>
    <abstract>
      <?line 213?>

<t>This document introduces a set of Key Encapsulation Mechanism (KEM) schemes that use pairs of cryptographic elements such as public keys and cipher texts to combine their security properties. These schemes effectively mitigate risks associated with the adoption of post-quantum cryptography and are fully compatible with existing X.509, PKIX, and CMS data structures and protocols. This document defines eleven specific pairwise combinations, namely ML-KEM Composite Schemes, that blend ML-KEM with traditional algorithms such as RSA-OAEP, ECDH, X25519, and X448. For use within CMS, this document is intended to be coupled with the CMS KEMRecipientInfo mechanism in <xref target="I-D.housley-lamps-cms-kemri"/>. These combinations are tailored to meet security best practices and regulatory requirements.</t>
      <!-- End of Abstract -->



    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://lamps-wg.github.io/draft-composite-kem/draft-ietf-lamps-pq-composite-kem.html#name-asn1-module"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-lamps-pq-composite-kem/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        LAMPS Working Group mailing list (<eref target="mailto:spams@ietf.org"/>),
        which is archived at <eref target="https://datatracker.ietf.org/wg/lamps/about/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/spams/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/lamps-wg/draft-composite-kem"/>.</t>
    </note>
  </front>
  <middle>
    <?line 220?>

<section anchor="changes-in-version-04">
      <name>Changes in version -04</name>
      <ul spacing="normal">
        <li>
          <t>Specified the fixedInfo domain separators as the DER encoded object identifiers.</t>
        </li>
        <li>
          <t>Adjusted the combiner to be compliant with NIST SP800-56C as per https://mailarchive.ietf.org/arch/msg/spasm/nlyQF1i7ndp5A7zzcTsdYF_S9mI/ -- also aligns with X-Wing changes below.</t>
        </li>
        <li>
          <t>Removed reference to draft-ounsworth-cfrg-kem-combiners so that we don't end up in a downref situation.</t>
        </li>
        <li>
          <t>Changes inspired by X-Wing:
          </t>
          <ul spacing="normal">
            <li>
              <t>Combiner does not need ML-KEM ciphertext.</t>
            </li>
            <li>
              <t>Combiner needs traditional ciphertext and public key.</t>
            </li>
            <li>
              <t>KDF is now SHA3 and not KMAC.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Since all combinations use ML-KEM; changed the document title to "Composite ML-KEM".</t>
        </li>
        <li>
          <t>In the "Use in CMS &gt; Underlying Components" section, the MLKEM768 combinations were lifted from id-aes192-Wrap to id-aes256-Wrap because the latter is believed to have better general adoption.</t>
        </li>
        <li>
          <t>Added an appendix "Fixed Component Algorithm Identifiers" -- not finished, needs more work.</t>
        </li>
        <li>
          <t>Replaced RSA-KEM <xref target="RFC5990"/> with RSA-OAEP.</t>
        </li>
        <li>
          <t>Added a section "Promotion of RSA-OAEP into a KEM".</t>
        </li>
        <li>
          <t>Removed references to I-D.ounsworth-lamps-cms-dhkem since we'll just inline a simplified version of RFC9180's DHKEM.</t>
        </li>
      </ul>
      <t>Still to do in a future version:</t>
      <ul spacing="normal">
        <li>
          <t><tt>[ ]</tt> We need PEM samples ... hackathon? OQS friends? David @ BC? The right format for samples is probably to follow the hackathon ... a Dilithium or ECDSA trust anchor certificate, a composite KEM end entity certificate, and a CMS EnvelopedData sample encrypted for that composite KEM certificate.</t>
        </li>
        <li>
          <t><tt>[ ]</tt> Open question: do we need to include the ECDH, X25519, X448, and RSA public keys in the KDF? X-Wing does, but previous versions of this spec do not. In general existing ECC and RSA hardware decrypter implementations might not know their own public key.</t>
        </li>
      </ul>
    </section>
    <section anchor="sec-intro">
      <name>Introduction</name>
      <t>The advent of quantum computing poses a significant threat to current cryptographic systems. Traditional cryptographic algorithms such as RSA-OAEP, ECDH and their elliptic curve variants are vulnerable to quantum attacks. During the transition to post-quantum cryptography (PQC), there is considerable uncertainty regarding the robustness of both existing and new cryptographic algorithms. While we can no longer fully trust traditional cryptography, we also cannot immediately place complete trust in post-quantum replacements until they have undergone extensive scrutiny and real-world testing to uncover and rectify potential implementation flaws.</t>
      <t>Unlike previous migrations between cryptographic algorithms, the decision of when to migrate and which algorithms to adopt is far from straightforward. Even after the migration period, it may be advantageous for an entity's cryptographic identity to incorporate multiple public-key algorithms to enhance security.</t>
      <t>Cautious implementers may opt to combine cryptographic algorithms in such a way that an attacker would need to break all of them simultaneously to compromise the protected data. These mechanisms are referred to as Post-Quantum/Traditional (PQ/T) Hybrids <xref target="I-D.driscoll-pqt-hybrid-terminology"/>.</t>
      <t>Certain jurisdictions are already recommending or mandating that PQC lattice schemes be used exclusively within a PQ/T hybrid framework. The use of Composite scheme provides a straightforward implementation of hybrid solutions compatible with (and advocated by) some governments and cybersecurity agencies <xref target="BSI2021"/>.</t>
      <t>In addition, <xref target="BSI2021"/> specifically references this specification as a concrete example of hybrid X.509 certificates.</t>
      <t>A more recent example is <xref target="ANSSI2024"/>, a document co-authored by French Cybersecurity Agency (ANSSI),
Federal Office for Information Security (BSI), Netherlands National Communications Security Agency (NLNCSA), and
Swedish National Communications Security Authority, Swedish Armed Forces which makes the following statement:</t>
      <ul empty="true">
        <li>
          <t>"In light of the urgent need to stop relying only on quantum-vulnerable public-key cryptography for key establishment, the clear priority should therefore be the migration to post-quantum cryptography in hybrid solutions"</t>
        </li>
      </ul>
      <t>This specification represents the straightforward implementation of the hybrid solutions called for by European cyber security agencies.</t>
      <t>PQ/T Hybrid cryptography can, in general, provide solutions to two migration problems:</t>
      <ul spacing="normal">
        <li>
          <t>Algorithm strength uncertainty: During the transition period, some post-quantum signature and encryption algorithms will not be fully trusted, while also the trust in legacy public key algorithms will start to erode.  A relying party may learn some time after deployment that a public key algorithm has become untrustworthy, but in the interim, they may not know which algorithm an adversary has compromised.</t>
        </li>
        <li>
          <t>Ease-of-migration: During the transition period, systems will require mechanisms that allow for staged migrations from fully classical to fully post-quantum-aware cryptography.</t>
        </li>
      </ul>
      <t>This document defines a specific instantiation of the PQ/T Hybrid paradigm called "composite" where multiple cryptographic algorithms are combined to form a single key encapsulation mechanism (KEM) key and ciphertext such that they can be treated as a single atomic algorithm at the protocol level. Composite algorithms address algorithm strength uncertainty because the composite algorithm remains strong so long as one of its components remains strong. Concrete instantiations of composite KEM algorithms are provided based on ML-KEM, RSA-OAEP and ECDH. Backwards compatibility is not directly covered in this document, but is the subject of <xref target="sec-backwards-compat"/>.</t>
      <t>This document is intended for general applicability anywhere that key establishment or enveloped content encryption is used within PKIX or CMS structures.</t>
      <section anchor="sec-terminology">
        <name>Terminology</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" 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>This document is consistent with all terminology from <xref target="I-D.driscoll-pqt-hybrid-terminology"/>.
In addition, the following terms are used in this document:</t>
        <t><strong>COMBINER:</strong>
  A combiner specifies how multiple shared secrets are combined into
  a single shared secret.</t>
        <t><strong>DER:</strong>
  Distinguished Encoding Rules as defined in <xref target="X.690"/>.</t>
        <t><strong>KEM:</strong>
   A key encapsulation mechanism as defined in <xref target="sec-kems"/>.</t>
        <t><strong>PKI:</strong>
  Public Key Infrastructure, as defined in <xref target="RFC5280"/>.</t>
        <t><strong>SHARED SECRET:</strong>
  A value established between two communicating parties for use as
  cryptographic key material, but which cannot be learned by an active
  or passive adversary. This document is concerned with shared
  secrets established via public key cryptographic operations.</t>
      </section>
      <section anchor="composite-design-philosophy">
        <name>Composite Design Philosophy</name>
        <t><xref target="I-D.driscoll-pqt-hybrid-terminology"/> defines composites as:</t>
        <ul empty="true">
          <li>
            <t><em>Composite Cryptographic Element</em>:  A cryptographic element that
     incorporates multiple component cryptographic elements of the same
     type in a multi-algorithm scheme.</t>
          </li>
        </ul>
        <t>Composite keys, as defined here, follow this definition and should be regarded as a single key that performs a single cryptographic operation such as key generation, signing, verifying, encapsulating, or decapsulating -- using its internal sequence of component keys as if they form a single key. This generally means that the complexity of combining algorithms can and should be handled by the cryptographic library or cryptographic module, and the single composite public key, private key, and ciphertext can be carried in existing fields in protocols such as PKCS#10 <xref target="RFC2986"/>, CMP <xref target="RFC4210"/>, X.509 <xref target="RFC5280"/>, CMS <xref target="RFC5652"/>, and the Trust Anchor Format <xref target="RFC5914"/>. In this way, composites achieve "protocol backwards-compatibility" in that they will drop cleanly into any protocol that accepts KEM algorithms without requiring any modification of the protocol to handle multiple keys.</t>
      </section>
      <section anchor="sec-kems">
        <name>Composite Key Encapsulation Mechanisms (KEMs)</name>
        <t>We borrow here the definition of a key encapsulation mechanism (KEM) from <xref target="I-D.ietf-tls-hybrid-design"/>, in which a KEM is a cryptographic primitive that consists of three algorithms:</t>
        <ul spacing="normal">
          <li>
            <t><tt>KeyGen() -&gt; (pk, sk)</tt>: A probabilistic key generation algorithm,
which generates a public key <tt>pk</tt> and a secret key <tt>sk</tt>.</t>
          </li>
          <li>
            <t><tt>Encaps(pk) -&gt; (ct, ss)</tt>: A probabilistic encapsulation algorithm,
which takes as input a public key <tt>pk</tt> and outputs a ciphertext <tt>ct</tt>
and shared secret ss.</t>
          </li>
          <li>
            <t><tt>Decaps(sk, ct) -&gt; ss</tt>: A decapsulation algorithm, which takes as
input a secret key <tt>sk</tt> and ciphertext <tt>ct</tt> and outputs a shared
secret <tt>ss</tt>, or in some cases a distinguished error value.</t>
          </li>
        </ul>
        <t>The KEM interface defined above differs from both traditional key transport mechanism (for example for use with KeyTransRecipientInfo defined in <xref target="RFC5652"/>), and key agreement (for example for use with KeyAgreeRecipientInfo defined in <xref target="RFC5652"/>).</t>
        <t>The KEM interface was chosen as the interface for a composite key establishment because it allows for arbitrary combinations of component algorithm types since both key transport and key agreement mechanisms can be promoted into KEMs. This specification uses the Post-Quantum KEM ML-KEM as specified in <xref target="I-D.ietf-lamps-kyber-certificates"/> and <xref target="FIPS.203-ipd"/>. For Traditional KEMs, this document uses the RSA-OAEP algorithm defined in <xref target="RFC3560"/>, the Elliptic Curve Diffie-Hellman key agreement schemes ECDH defined in section 5.7.1.2 of <xref target="SP.800-56Ar3"/>, and X25519 / X448 which are defined in <xref target="RFC8410"/>. A combiner function is used to combine the two component shared secrets into a single shared secret.</t>
        <section anchor="composite-keygen">
          <name>Composite KeyGen</name>
          <t>The <tt>KeyGen() -&gt; (pk, sk)</tt> of a composite KEM algorithm will perform the <tt>KeyGen()</tt> of the respective component KEM algorithms and it produces a composite public key <tt>pk</tt> as per <xref target="sec-composite-pub-keys"/> and a composite secret key <tt>sk</tt> is per <xref target="sec-priv-key"/>.</t>
          <artwork><![CDATA[
CompositeKEM.KeyGen():
  (compositePK[0], compositeSK[0]) = MLKEM.KeyGen()
  (compositePK[1], compositeSK[1]) = TradKEM.KeyGen()

  return (compositePK, compositeSK)
]]></artwork>
        </section>
        <section anchor="promotion-of-rsa-oaep-into-a-kem">
          <name>Promotion of RSA-OAEP into a KEM</name>
          <t>The RSA Optimal Asymmetric Encryption Padding (OAEP), more specifically the RSAES-OAEP key transport algorithm as specified in <xref target="RFC3560"/> is a public key encryption algorithm used to transport key material from a sender to a receiver. It is promoted into a KEM by having the sender generate a random 256 bit secret and encrypt it.</t>
          <artwork><![CDATA[
DHKEM.Encaps(pkR):
  shared_secret = SecureRandom(ss_len)
  enc = RSA-OAEP.Encrypt(pkR, shared_secret)

  return enc, shared_secret
]]></artwork>
          <t><tt>Decaps(sk, ct) -&gt; ss</tt> is accomplished in the analogous way.</t>
          <artwork><![CDATA[
DHKEM.Decap(skR, enc):
  shared_secret = RSA-OAEP.Decrypt(skR, enc)

  return shared_secret
]]></artwork>
          <t>The value of <tt>ss_len</tt> as well as the RSA-OAEP parameters used within this specification can be found in <xref target="sect-rsaoaep-params"/>.</t>
        </section>
        <section anchor="promotion-of-ecdh-into-a-kem">
          <name>Promotion of ECDH into a KEM</name>
          <t>An elliptic curve Diffie-Hellman key agreement is promoted into a KEM <tt>Encaps(pk) -&gt; (ct, ss)</tt> using a simplified version of the DHKEM definition from <xref target="RFC9180"/>.</t>
          <artwork><![CDATA[
DHKEM.Encaps(pkR):
  skE, pkE = GenerateKeyPair()
  shared_secret = DH(skE, pkR)
  enc = SerializePublicKey(pkE)

  return enc, shared_secret
]]></artwork>
          <t><tt>Decaps(sk, ct) -&gt; ss</tt> is accomplished in the analogous way.</t>
          <artwork><![CDATA[
DHKEM.Decap(skR, enc):
  pkE = DeserializePublicKey(enc)
  shared_secret = DH(skR, pkE)

  return shared_secret
]]></artwork>
          <t>This construction applies for all variants of elliptic curve Diffie-Hellman used in this specification: ECDH, X25519, and X448.</t>
          <t>The simplifications from the DHKEM definition in <xref target="RFC9180"/> is that since the ciphertext and receiver's public key are included explicitly in the composite KEM combiner, there is no need to construct the <tt>kem_context</tt> object, and since a domain separator is included explicitly in the composite KEM combiner there is no need to perform the labelled steps of <tt>ExtractAndExpand()</tt>.</t>
        </section>
        <section anchor="composite-encaps">
          <name>Composite Encaps</name>
          <t>The <tt>Encaps(pk) -&gt; (ct, ss)</tt> of a composite KEM algorithm is defined as:</t>
          <artwork><![CDATA[
CompositeKEM.Encaps(pk):
  # Split the component public keys
  mlkemPK = pk[0]
  tradPK  = pk[1]

  # Perform the respective component Encaps operations
  (mlkemCT, mlkemSS) = MLKEM.Encaps(mlkemPK)
  (tradCT, tradSS) = TradKEM.Encaps(tradPK)

  # Combine
  # note that the order of the traditional and ML-KEM components
  # is flipped here in order to satisfy NIST SP800-56Cr2.
  ct = CompositeCiphertextValue(ct1, ct2)
  ss = Combiner(tradSS, mlkemSS, tradCT, tradPK, domSep)

  return (ct, ss)
]]></artwork>
          <t>where <tt>Combiner(tradSS, mlkemSS, tradCT, tradPK, domSep)</tt> is defined in general in <xref target="sec-kem-combiner"/> with specific values for <tt>domSep</tt> per composite KEM algorithm in <xref target="sec-alg-ids"/> and <tt>CompositeCiphertextValue</tt> is defined in <xref target="sec-CompositeCiphertextValue"/>.</t>
        </section>
        <section anchor="composite-decaps">
          <name>Composite Decaps</name>
          <t>The <tt>Decaps(sk, ct) -&gt; ss</tt> of a composite KEM algorithm is defined as:</t>
          <artwork><![CDATA[
CompositeKEM.Decaps(ct, mlkemSK, tradSK):
  # split the component ciphertexts
  mlkemCT = ct[0]
  tradCT  = ct[1]

  # Perform the respective component Decaps operations
  mlkemSS = MLKEM.Decaps(mlkemSK, mlkemCT)
  tradSS  = TradKEM.Decaps(tradSK, tradCT)

  # Combine
  # note that the order of the traditional and ML-KEM components
  # is flipped here in order to satisfy NIST SP800-56Cr2.
  ss = Combiner(tradSS, mlkemSS, tradCT, tradPK, domSep)

  return ss
]]></artwork>
          <t>where <tt>Combiner(tradSS, mlkemSS, tradCT, tradPK, domSep)</tt> is defined in general in <xref target="sec-kem-combiner"/> with specific values for <tt>domSep</tt> per composite KEM algorithm in <xref target="sec-alg-ids"/>. <tt>CompositeCiphertextValue</tt> is defined in <xref target="sec-CompositeCiphertextValue"/>.</t>
          <t>Here the secret key values <tt>mlkemSK</tt> and <tt>tradSK</tt> may be interpreted as either literal secret key values, or as a handle to a cryptographic module which holds the secret key and is capable of performing the secret key operation.</t>
          <!-- End of Introduction section -->

</section>
      </section>
    </section>
    <section anchor="sec-composite-keys">
      <name>Composite Key Structures</name>
      <section anchor="pk-compositekem">
        <name>pk-CompositeKEM</name>
        <t>The following ASN.1 Information Object Class is a template to be used in defining all composite KEM public key types.</t>
        <sourcecode type="ASN.1" name="CompositeKeyObject-asn.1-structures"><![CDATA[
pk-CompositeKEM {
  OBJECT IDENTIFIER:id, FirstPublicKeyType,
  SecondPublicKeyType} PUBLIC-KEY ::=
  {
    IDENTIFIER id
    KEY SEQUENCE {
     BIT STRING (CONTAINING FirstPublicKeyType)
     BIT STRING (CONTAINING SecondPublicKeyType)
    }
    PARAMS ARE absent
    CERT-KEY-USAGE { keyEncipherment }
  }
]]></sourcecode>
        <t>As an example, the public key type <tt>pk-MLKEM512-ECDH-P256</tt> is defined as:</t>
        <artwork><![CDATA[
pk-MLKEM512-ECDH-P256 PUBLIC-KEY ::=
  pk-CompositeKEM {
    id-MLKEM512-ECDH-P256,
    OCTET STRING, ECPoint }
]]></artwork>
        <t>The full set of key types defined by this specification can be found in the ASN.1 Module in <xref target="sec-asn1-module"/>.</t>
      </section>
      <section anchor="sec-composite-pub-keys">
        <name>CompositeKEMPublicKey</name>
        <t>Composite public key data is represented by the following structure:</t>
        <sourcecode type="ASN.1" name="CompositeKEMPublicKey-asn.1-structures"><![CDATA[
CompositeKEMPublicKey ::= SEQUENCE SIZE (2) OF BIT STRING
]]></sourcecode>
        <t>A composite key MUST contain two component public keys. The order of the component keys is determined by the definition of the corresponding algorithm identifier as defined in section <xref target="sec-alg-ids"/>.</t>
        <t>Some applications may need to reconstruct the <tt>SubjectPublicKeyInfo</tt> objects corresponding to each component public key. <xref target="tab-kem-algs"/> in <xref target="sec-alg-ids"/> provides the necessary mapping between composite and their component algorithms for doing this reconstruction. This also motivates the design choice of <tt>SEQUENCE OF BIT STRING</tt> instead of <tt>SEQUENCE OF OCTET STRING</tt>; using <tt>BIT STRING</tt> allows for easier transcription between CompositeKEMPublicKey and SubjectPublicKeyInfo.</t>
        <t>When the CompositeKEMPublicKey must be provided in octet string or bit string format, the data structure is encoded as specified in <xref target="sec-encoding-rules"/>.</t>
      </section>
      <section anchor="sec-priv-key">
        <name>CompositeKEMPrivateKey</name>
        <t>Use cases that require an inter-operable encoding for composite private keys, such as when private keys are carried in PKCS #12 <xref target="RFC7292"/>, CMP <xref target="RFC4210"/> or CRMF <xref target="RFC4211"/> MUST use the following structure.</t>
        <sourcecode type="ASN.1" name="CompositeKEMPrivateKey-asn.1-structures"><![CDATA[
CompositeKEMPrivateKey ::= SEQUENCE SIZE (2) OF OneAsymmetricKey
]]></sourcecode>
        <t>Each element is a <tt>OneAsymmetricKey</tt>` <xref target="RFC5958"/> object for a component private key.</t>
        <t>The parameters field MUST be absent.</t>
        <t>The order of the component keys is the same as the order defined in <xref target="sec-composite-pub-keys"/> for the components of CompositeKEMPublicKey.</t>
        <t>When a <tt>CompositePrivateKey</tt> is conveyed inside a OneAsymmetricKey structure (version 1 of which is also known as PrivateKeyInfo) <xref target="RFC5958"/>, the privateKeyAlgorithm field SHALL be set to the corresponding composite algorithm identifier defined according to <xref target="sec-alg-ids"/>, the privateKey field SHALL contain the CompositeKEMPrivateKey, and the publicKey field MUST NOT be present. Associated public key material MAY be present in the CompositeKEMPrivateKey.</t>
        <t>In some use-cases the private keys that comprise a composite key may not be represented in a single structure or even be contained in a single cryptographic module; for example if one component is within the FIPS boundary of a cryptographic module and the other is not; see <xref target="sec-fips"/> for more discussion. The establishment of correspondence between public keys in a CompositeKEMPublicKey and private keys not represented in a single composite structure is beyond the scope of this document.</t>
      </section>
      <section anchor="sec-encoding-rules">
        <name>Encoding Rules</name>
        <!-- EDNOTE 7: Examples of how other specifications specify how a data structure is converted to a bit string can be found in RFC 2313, section 10.1.4, 3279 section 2.3.5, and RFC 4055, section 3.2. -->

<t>Many protocol specifications will require that the composite public key and composite private key data structures be represented by an octet string or bit string.</t>
        <t>When an octet string is required, the DER encoding of the composite data structure SHALL be used directly.</t>
        <sourcecode type="ASN.1"><![CDATA[
CompositeKEMPublicKeyOs ::= OCTET STRING (CONTAINING CompositeKEMPublicKey ENCODED BY der)
]]></sourcecode>
        <t>When a bit string is required, the octets of the DER encoded composite data structure SHALL be used as the bits of the bit string, with the most significant bit of the first octet becoming the first bit, and so on, ending with the least significant bit of the last octet becoming the last bit of the bit string.</t>
        <sourcecode type="ASN.1"><![CDATA[
CompositeKEMPublicKeyBs ::= BIT STRING (CONTAINING CompositeKEMPublicKey ENCODED BY der)
]]></sourcecode>
      </section>
      <section anchor="key-usage-bits">
        <name>Key Usage Bits</name>
        <t>For protocols such as X.509 <xref target="RFC5280"/> that specify key usage along with the public key, then the composite public key associated with a composite KEM algorithm MUST contain only a <tt>keyEncipherment</tt> key usage, all other key usages MUST NOT be used.
This is because the composite public key can only be used in situations
that are appropriate for both component algorithms, so even if the
classical component key supports both signing and encryption,
the post-quantum algorithms do not.</t>
      </section>
    </section>
    <section anchor="composite-kem-structures">
      <name>Composite KEM Structures</name>
      <section anchor="sec-kema-CompositeKEM">
        <name>kema-CompositeKEM</name>
        <t>The ASN.1 algorithm object for a composite KEM is:</t>
        <artwork><![CDATA[
kema-CompositeKEM {
  OBJECT IDENTIFIER:id,
    PUBLIC-KEY:publicKeyType }
    KEM-ALGORITHM ::= {
         IDENTIFIER id
         VALUE CompositeCiphertextValue
         PARAMS ARE absent
         PUBLIC-KEYS { publicKeyType }
        }
]]></artwork>
      </section>
      <section anchor="sec-CompositeCiphertextValue">
        <name>CompositeCiphertextValue</name>
        <t>The compositeCipherTextValue is a concatenation of the ciphertexts of the
underlying component algorithms.  It is represented in ASN.1 as follows:</t>
        <artwork><![CDATA[
CompositeCiphertextValue ::= SEQUENCE SIZE (2) OF OCTET STRING
]]></artwork>
        <t>The order of the component ciphertexts is the same as the order defined in <xref target="sec-composite-pub-keys"/>.</t>
      </section>
      <section anchor="sec-kem-combiner">
        <name>KEM Combiner</name>
        <t>TODO: as per https://www.enisa.europa.eu/publications/post-quantum-cryptography-integration-study section 4.2, might need to specify behaviour in light of KEMs with a non-zero failure probability.</t>
        <t>The KEM combiner construction is as follows:</t>
        <figure anchor="code-generic-kem-combiner">
          <name>Generic KEM combiner construction</name>
          <artwork><![CDATA[
KEK <- Combiner(tradSS, mlkemSS, tradCT, tradPK, domSep) =
  KDF(counter || tradSS || mlkemSS || tradCT || tradPK ||
       domSep, outputBits)
]]></artwork>
        </figure>
        <t>where:</t>
        <ul spacing="normal">
          <li>
            <t><tt>KDF(message, outputBits)</tt> represents a hash function suitable to the chosen KEMs according to {tab-kem-combiners}.</t>
          </li>
          <li>
            <t><tt>counter</tt> SHALL be the fixed 32-bit value <tt>0x00000001</tt> which is placed here solely for the purposes of compliance with <xref target="SP.800-56Cr2"/>.</t>
          </li>
          <li>
            <t><tt>tradSS</tt> is the shared secret from the traditional component (elliptic curve or RSA).</t>
          </li>
          <li>
            <t><tt>mlkemSS</tt> is the shared secret from the ML-KEM componont.</t>
          </li>
          <li>
            <t><tt>tradCT</tt> is the ciphertext from the traditional component (elliptic curve or RSA).</t>
          </li>
          <li>
            <t><tt>tradPK</tt> is the public key of the traditional component (elliptic curve or RSA).</t>
          </li>
          <li>
            <t><tt>domSep</tt> SHALL be the DER encoded value of the object identifier of the composite KEM algorithm as listed in <xref target="sec-domain"/>.</t>
          </li>
          <li>
            <t><tt>||</tt> represents concatenation.</t>
          </li>
        </ul>
        <t>Each registered composite KEM algorithm must specify the choice of <tt>KDF</tt>, <tt>demSep</tt>, and <tt>outputBits</tt> to be used.</t>
        <t>Some of the design choices for the combiner, specifically to place <tt>tradSS</tt> first, and to allow <tt>tradCT || tradPK || domSep</tt> to be treated together as a FixedInfo block are made for the purposes of compliance with <xref target="SP.800-56Cr2"/>; see <xref target="sec-fips-compliance"/> for more discussion.</t>
        <t>See <xref target="sec-cons-kem-combiner"/> for further discussion of the security considerations of this KEM combiner.</t>
      </section>
      <section anchor="sec-fips-compliance">
        <name>FIPS Compliance</name>
        <t>This specification is compliant with <xref target="SP.800-56Cr2"/> which allows for multiple sources of shared secret material to be combined into a single shared secret and the combined shared secret to be considered FIPS compliant so long as the first input shared secret is the result of a FIPS compliant algorithm. In order to ease FIPS compliance issues during the transition period, this specification uses the traditional algorithm as the first input to the combiner so that the combiner is FIPS compliant so long as the traditional component is FIPS compliant.</t>
        <t>This construction is specifically designed to conform with Section 4.1 Option 1 (when KDF is SHA3) or Option 3 (when KDF is KMAC) in the following way:</t>
        <t>In both cases we match exactly the construction using the allowed "hybrid" shared secret of the form <tt>Z' = Z || T</tt> to yield the construction</t>
        <t><tt>counter || Z || T || FixedInfo</tt></t>
        <t>where:</t>
        <ul spacing="normal">
          <li>
            <t><tt>Z = tradSS</tt> is the algorithm assumed to always be FIPS-approved from a FIPS-certified implementation which is expected to be true during the period where organizations are migrating their existing deployments to add ML-KEM implementations which may not yet have received FIPS certification,</t>
          </li>
          <li>
            <t><tt>T = mlkemSS</tt>, and</t>
          </li>
          <li>
            <t><tt>FixedInfo = tradCT || tradPK || domSep</tt>.</t>
          </li>
        </ul>
        <t>In the case that KDF is KMAC, the message to be hashed MUST be post-pended with <tt>H_outputBits</tt> and the byte string <tt>01001011 || 01000100 || 01000110</tt>, which represents the sequence of characters "K", "D," and "F" in 8-bit ASCII, as required by <xref target="SP.800-56Cr2"/> section 4.1 Option 3. <tt>salt</tt> is left empty since KMAC is only required to behave as a hash function and not as a keyed MAC.</t>
      </section>
    </section>
    <section anchor="sec-alg-ids">
      <name>Algorithm Identifiers</name>
      <t>This table summarizes the list of composite KEM algorithms and lists the OID, two component algorithms, and the combiner function.</t>
      <t>EDNOTE: The OID referenced are TBD and MUST be used only for prototyping and replaced with the final IANA-assigned OIDs. The following prefix is used for each: replace &lt;CompKEM&gt; with the String "2.16.840.1.114027.80.5.2".</t>
      <t>TODO: OIDs to be replaced by IANA.</t>
      <t>Therefore &lt;CompKEM&gt;.1 is equal to 2.16.840.1.114027.80.5.2.1</t>
      <table anchor="tab-kem-algs">
        <name>Composite KEM key types</name>
        <thead>
          <tr>
            <th align="left">Composite KEM</th>
            <th align="left">OID</th>
            <th align="left">First Algorithm</th>
            <th align="left">Second Algorithm</th>
            <th align="left">KDF</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">id-MLKEM512-ECDH-P256</td>
            <td align="left">&lt;CompKEM&gt;.1</td>
            <td align="left">MLKEM512</td>
            <td align="left">ECDH-P256</td>
            <td align="left">SHA3-256</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM512-ECDH-brainpoolP256r1</td>
            <td align="left">&lt;CompKEM&gt;.2</td>
            <td align="left">MLKEM512</td>
            <td align="left">ECDH-brainpoolp256r1</td>
            <td align="left">SHA3-256</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM512-X25519</td>
            <td align="left">&lt;CompKEM&gt;.3</td>
            <td align="left">MLKEM512</td>
            <td align="left">X25519</td>
            <td align="left">SHA3-256</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM512-RSA2048</td>
            <td align="left">&lt;CompKEM&gt;.13</td>
            <td align="left">MLKEM512</td>
            <td align="left">RSA-OAEP 2048</td>
            <td align="left">SHA3-256</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM512-RSA3072</td>
            <td align="left">&lt;CompKEM&gt;.4</td>
            <td align="left">MLKEM512</td>
            <td align="left">RSA-OAEP 3072</td>
            <td align="left">SHA3-256</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM768-ECDH-P256</td>
            <td align="left">&lt;CompKEM&gt;.5</td>
            <td align="left">MLKEM768</td>
            <td align="left">ECDH-P256</td>
            <td align="left">SHA3-384</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM768-ECDH-brainpoolP256r1</td>
            <td align="left">&lt;CompKEM&gt;.6</td>
            <td align="left">MLKEM768</td>
            <td align="left">ECDH-brainpoolp256r1</td>
            <td align="left">SHA3-384</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM768-X25519</td>
            <td align="left">&lt;CompKEM&gt;.7</td>
            <td align="left">MLKEM768</td>
            <td align="left">X25519</td>
            <td align="left">SHA3-384</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM1024-ECDH-P384</td>
            <td align="left">&lt;CompKEM&gt;.8</td>
            <td align="left">MLKEM1024</td>
            <td align="left">ECDH-P384</td>
            <td align="left">SHA3-512</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM1024-ECDH-brainpoolP384r1</td>
            <td align="left">&lt;CompKEM&gt;.9</td>
            <td align="left">MLKEM1024</td>
            <td align="left">ECDH-brainpoolP384r1</td>
            <td align="left">SHA3-512</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM1024-X448</td>
            <td align="left">&lt;CompKEM&gt;.10</td>
            <td align="left">MLKEM1024</td>
            <td align="left">X448</td>
            <td align="left">SHA3-512</td>
          </tr>
        </tbody>
      </table>
      <t>Full specifications for the referenced algorithms can be found as follows:</t>
      <ul spacing="normal">
        <li>
          <t><em>ECDH</em>: There does not appear to be a single IETF definition of ECDH, so we refer to the following:
          </t>
          <ul spacing="normal">
            <li>
              <t><em>ECDH NIST</em>: SHALL be Elliptic Curve Cryptography Cofactor Diffie-Hellman (ECC CDH) as defined in section 5.7.1.2 of <xref target="SP.800-56Ar3"/>.</t>
            </li>
            <li>
              <t><em>ECDH BSI / brainpool</em>: SHALL be Elliptic Curve Key Agreement algorithm (ECKA) as defined in section 4.3.1 of <xref target="BSI-ECC"/></t>
            </li>
          </ul>
        </li>
        <li>
          <t><em>ML-KEM</em>: <xref target="I-D.ietf-lamps-kyber-certificates"/> and <xref target="FIPS.203-ipd"/></t>
        </li>
        <li>
          <t><em>RSA-OAEP</em>: <xref target="RFC3560"/></t>
        </li>
        <li>
          <t><em>X25519 / X448</em>: <xref target="RFC8410"/></t>
        </li>
      </ul>
      <t>EDNOTE: I believe that <xref target="SP.800-56Ar3"/> and <xref target="BSI-ECC"/> give equivalent and inter-operable algorithms, so maybe this is extraneous detail to include?</t>
      <section anchor="sec-domain">
        <name>Domain Separators</name>
        <t>The KEM combiner defined in section <xref target="sec-kem-combiner"/> requires a domain separator <tt>domSep</tt> input.  The following table shows the HEX-encoded domain separator for each Composite KEM AlgorithmID; to use it, the value should be HEX-decoded and used in binary form. The domain separator is simply the DER encoding of the composite algorithm OID.</t>
        <t>EDNOTE: Should the domain separator values be the SHA-256 hash of the DER encoding of the corresponding composite algorithm OID? That way they would be fixed-length even if the OIDs are different lengths. See https://github.com/lamps-wg/draft-composite-sigs/issues/19</t>
        <table anchor="tab-kem-domains">
          <name>Composite KEM fixedInfo Domain Separators</name>
          <thead>
            <tr>
              <th align="left">Composite KEM AlgorithmID</th>
              <th align="left">Domain Separator (in Hex encoding)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">id-MLKEM512-ECDH-P256</td>
              <td align="left">060B6086480186FA6B50050201</td>
            </tr>
            <tr>
              <td align="left">id-MLKEM512-ECDH-brainpoolP256r1</td>
              <td align="left">060B6086480186FA6B50050202</td>
            </tr>
            <tr>
              <td align="left">id-MLKEM512-X25519</td>
              <td align="left">060B6086480186FA6B50050203</td>
            </tr>
            <tr>
              <td align="left">id-MLKEM512-RSA2048</td>
              <td align="left">060B6086480186FA6B5005020D</td>
            </tr>
            <tr>
              <td align="left">id-MLKEM512-RSA3072</td>
              <td align="left">060B6086480186FA6B50050204</td>
            </tr>
            <tr>
              <td align="left">id-MLKEM768-ECDH-P256</td>
              <td align="left">060B6086480186FA6B50050205</td>
            </tr>
            <tr>
              <td align="left">id-MLKEM768-ECDH-brainpoolP256r1</td>
              <td align="left">060B6086480186FA6B50050206</td>
            </tr>
            <tr>
              <td align="left">id-MLKEM768-X25519</td>
              <td align="left">060B6086480186FA6B50050207</td>
            </tr>
            <tr>
              <td align="left">id-MLKEM1024-ECDH-P384</td>
              <td align="left">060B6086480186FA6B50050208</td>
            </tr>
            <tr>
              <td align="left">id-MLKEM1024-ECDH-brainpoolP384r1</td>
              <td align="left">060B6086480186FA6B50050209</td>
            </tr>
            <tr>
              <td align="left">id-MLKEM1024-X448</td>
              <td align="left">060B6086480186FA6B5005020A</td>
            </tr>
          </tbody>
        </table>
        <t>EDNOTE: these domain separators are based on the prototyping OIDs assigned on the Entrust arc. We will need to ask for IANA early allocation of these OIDs so that we can re-compute the domain separators over the final OIDs.</t>
      </section>
      <section anchor="sect-rsaoaep-params">
        <name>RSA-OAEP Parameters</name>
        <t>Use of RSA-OAEP <xref target="RFC3560"/> within <tt>id-MLKEM512-RSA2048</tt> and <tt>id-MLKEM512-RSA3072</tt> requires additional specification.</t>
        <t>First, a quick note on the choice of RSA-OAEP as the supported RSA encryption primitive. RSA-KEM <xref target="RFC5990"/> is more straightforward to work with, but it has fairly limited adoption and therefore is of limited backwards compatibility value. Also, while RSA-PKCS#1v1.5 <xref target="RFC8017"/> is still everywhere, but hard to make secure and no longer FIPS-approved as of the end of 2023 <xref target="SP800-131Ar2"/>, so it is of limited forwards value. This leaves RSA-OAEP <xref target="RFC3560"/> as the remaining choice.</t>
        <t>The RSA component keys MUST be generated at the 2048-bit and 3072-bit security levels respectively.</t>
        <t>As with the other composite KEM algorithms, when <tt>id-MLKEM512-RSA2048</tt> or <tt>id-MLKEM512-RSA3072</tt> is used in an AlgorithmIdentifier, the parameters MUST be absent. The RSA-OAEP SHALL be instantiated with the following hard-coded parameters which are the same for both the 2048 and 3072 bit security levels.</t>
        <table anchor="rsa-oaep-params">
          <name>RSA-OAEP Parameters</name>
          <thead>
            <tr>
              <th align="left">RSA-OAEP Parameter</th>
              <th align="left">Value</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">hashFunc</td>
              <td align="left">id-sha2-256</td>
            </tr>
            <tr>
              <td align="left">maskGenFunc</td>
              <td align="left">mgf1SHA256Identifier</td>
            </tr>
            <tr>
              <td align="left">pSourceFunc</td>
              <td align="left">DEFAULT pSpecifiedEmptyIdentifier</td>
            </tr>
            <tr>
              <td align="left">ss_len</td>
              <td align="left">256 bits</td>
            </tr>
          </tbody>
        </table>
        <t>where:</t>
        <ul spacing="normal">
          <li>
            <t><tt>id-sha256</tt> is defined in <xref target="RFC8017"/>.</t>
          </li>
          <li>
            <t><tt>mgf1SHA256Identifier</tt> is defined in <xref target="RFC4055"/>.</t>
          </li>
          <li>
            <t><tt>pSpecifiedEmptyIdentifier</tt> is defined in <xref target="RFC3560"/></t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="use-in-cms">
      <name>Use in CMS</name>
      <t>[EDNOTE: The convention in LAMPS is to specify algorithms and their CMS conventions in separate documents. Here we have presented them in the same document, but this section has been written so that it can easily be moved to a standalone document.]</t>
      <t>Composite KEM algorithms MAY be employed for one or more recipients in the CMS enveloped-data content type <xref target="RFC5652"/>, the CMS authenticated-data content type <xref target="RFC5652"/>, or the CMS authenticated-enveloped-data content type <xref target="RFC5083"/>. In each case, the KEMRecipientInfo <xref target="I-D.ietf-lamps-cms-kemri"/> is used with the chosen composite KEM Algorithm to securely transfer the content-encryption key from the originator to the recipient.</t>
      <section anchor="underlying-components">
        <name>Underlying Components</name>
        <t>A CMS implementation that supports a composite KEM algorithm MUST support at least the following underlying components:</t>
        <t>When a particular Composite KEM OID is supported, an implementation MUST support the corresponding KDF algorithm identifier in <xref target="tab-cms-kdf-wrap"/>.</t>
        <t>When a particular Composite KEM OID is supported, an implementation MUST support the corresponding key-encryption algorithm identifier in <xref target="tab-cms-kdf-wrap"/>.</t>
        <t>The following table lists the REQUIRED KDF and key-encryption algorithms to preserve security and performance characteristics of each composite algorithm.</t>
        <table anchor="tab-cms-kdf-wrap">
          <name>REQUIRED pairings for CMS KDF and WRAP</name>
          <thead>
            <tr>
              <th align="left">Composite KEM OID</th>
              <th align="left">KDF</th>
              <th align="left">Key Encryption Alg</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">id-MLKEM512-ECDH-P256</td>
              <td align="left">SHA3-256</td>
              <td align="left">id-aes128-Wrap</td>
            </tr>
            <tr>
              <td align="left">id-MLKEM512-ECDH-brainpoolP256r1</td>
              <td align="left">SHA3-256</td>
              <td align="left">id-aes128-Wrap</td>
            </tr>
            <tr>
              <td align="left">id-MLKEM512-X25519</td>
              <td align="left">SHA3-256</td>
              <td align="left">id-aes128-Wrap</td>
            </tr>
            <tr>
              <td align="left">id-MLKEM512-RSA2048</td>
              <td align="left">SHA3-256</td>
              <td align="left">id-aes128-Wrap</td>
            </tr>
            <tr>
              <td align="left">id-MLKEM512-RSA3072</td>
              <td align="left">SHA3-256</td>
              <td align="left">id-aes128-Wrap</td>
            </tr>
            <tr>
              <td align="left">id-MLKEM768-ECDH-P256</td>
              <td align="left">SHA3-384</td>
              <td align="left">id-aes256-Wrap</td>
            </tr>
            <tr>
              <td align="left">id-MLKEM768-ECDH-brainpoolP256r1</td>
              <td align="left">SHA3-384</td>
              <td align="left">id-aes256-Wrap</td>
            </tr>
            <tr>
              <td align="left">id-MLKEM768-X25519</td>
              <td align="left">SHA3-384</td>
              <td align="left">id-aes256-Wrap</td>
            </tr>
            <tr>
              <td align="left">id-MLKEM1024-ECDH-P384</td>
              <td align="left">SHA3-512</td>
              <td align="left">id-aes256-Wrap</td>
            </tr>
            <tr>
              <td align="left">id-MLKEM1024-ECDH-brainpoolP384r1</td>
              <td align="left">SHA3-512</td>
              <td align="left">id-aes256-Wrap</td>
            </tr>
            <tr>
              <td align="left">id-MLKEM1024-X448</td>
              <td align="left">SHA3-512</td>
              <td align="left">id-aes256-Wrap</td>
            </tr>
          </tbody>
        </table>
        <t>Note: <tt>id-aes256-Wrap</tt> is stronger than necessary for the MLKEM768 combinations at the NIST level 3 192 bit security level, however <tt>id-aes256-Wrap</tt> was chosen because it has better general adoption than <tt>id-aes192-Wrap</tt>.</t>
        <t>where:</t>
        <ul spacing="normal">
          <li>
            <t>SHA3-* KDF instantiations are defined in <xref target="I-D.ietf-lamps-cms-sha3-hash"/>.</t>
          </li>
          <li>
            <t><tt>id-aes*-Wrap</tt> are defined in <xref target="RFC3394"/>.</t>
          </li>
        </ul>
      </section>
      <section anchor="recipientinfo-conventions">
        <name>RecipientInfo Conventions</name>
        <t>When a composite KEM Algorithm is employed for a recipient, the RecipientInfo alternative for that recipient MUST be OtherRecipientInfo using the KEMRecipientInfo structure <xref target="I-D.ietf-lamps-cms-kemri"/>. The fields of the KEMRecipientInfo MUST have the following values:</t>
        <t><tt>version</tt> is the syntax version number; it MUST be 0.</t>
        <t><tt>rid</tt> identifies the recipient's certificate or public key.</t>
        <t><tt>kem</tt> identifies the KEM algorithm; it MUST contain one of the OIDs listed in <xref target="tab-kem-algs"/>.</t>
        <t><tt>kemct</tt> is the ciphertext produced for this recipient; it contains the <tt>ct</tt> output from <tt>Encaps(pk)</tt> of the KEM algorithm identified in the <tt>kem</tt> parameter.</t>
        <t><tt>kdf</tt> identifies the key-derivation function (KDF). Note that the KDF used for CMS RecipientInfo process MAY be different than the KDF used within the composite KEM Algorithm, which MAY be different than the KDFs (if any) used within the component KEMs of the composite KEM Algorithm.</t>
        <t><tt>kekLength</tt> is the size of the key-encryption key in octets.</t>
        <t><tt>ukm</tt> is an optional random input to the key-derivation function.</t>
        <t><tt>wrap</tt> identifies a key-encryption algorithm used to encrypt the keying material.</t>
        <t><tt>encryptedKey</tt> is the result of encrypting the keying material with the key-encryption key. When used with the CMS enveloped-data content type <xref target="RFC5652"/>, the keying material is a content-encryption key. When used with the CMS authenticated-data content type <xref target="RFC5652"/>, the keying material is a message-authentication key. When used with the CMS authenticated-enveloped-data content type <xref target="RFC5083"/>, the keying material is a content-authenticated-encryption key.</t>
      </section>
      <section anchor="certificate-conventions">
        <name>Certificate Conventions</name>
        <t>The conventions specified in this section augment RFC 5280 <xref target="RFC5280"/>.</t>
        <t>The willingness to accept a composite KEM Algorithm MAY be signaled by the use of the SMIMECapabilities Attribute as specified in Section 2.5.2. of <xref target="RFC8551"/> or the SMIMECapabilities certificate extension as specified in <xref target="RFC4262"/>.</t>
        <t>The intended application for the public key MAY be indicated in the key usage certificate extension as specified in Section 4.2.1.3 of <xref target="RFC5280"/>. If the keyUsage extension is present in a certificate that conveys a composite KEM public key, then the key usage extension MUST contain only the following value:</t>
        <t>keyEncipherment</t>
        <t>The digitalSignature and dataEncipherment values MUST NOT be present. That is, a public key intended to be employed only with a composite KEM algorithm MUST NOT also be employed for data encryption or for digital signatures. This requirement does not carry any particular security consideration; only the convention that KEM keys be identified with the <tt>keyEncipherment</tt> key usage.</t>
      </section>
      <section anchor="smimecapabilities-attribute-conventions">
        <name>SMIMECapabilities Attribute Conventions</name>
        <t>Section 2.5.2 of <xref target="RFC8551"/> defines the SMIMECapabilities attribute to announce a partial list of algorithms that an S/MIME implementation can support. When constructing a CMS signed-data content type <xref target="RFC5652"/>, a compliant implementation MAY include the SMIMECapabilities attribute that announces support for the RSA-OAEP Algorithm.</t>
        <t>The SMIMECapability SEQUENCE representing a composite KEM Algorithm MUST include the appropriate object identifier as per <xref target="tab-kem-algs"/> in the capabilityID field.</t>
      </section>
    </section>
    <section anchor="sec-asn1-module">
      <name>ASN.1 Module</name>
      <sourcecode type="ASN.1"><![CDATA[
<CODE STARTS>

Composite-KEM-2023
      {iso(1) identified-organization(3) dod(6) internet(1) 
        security(5) mechanisms(5) pkix(7) id-mod(0) 
        id-mod-composite-kems(TBDMOD) }

DEFINITIONS IMPLICIT TAGS ::= BEGIN

EXPORTS ALL;

IMPORTS

PUBLIC-KEY, AlgorithmIdentifier{}
  FROM AlgorithmInformation-2009  -- RFC 5912 [X509ASN1]
      { 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, KEMAlgSet
  FROM KEMAlgorithmInformation-2023
      { iso(1) identified-organization(3) dod(6) internet(1)
        security(5) mechanisms(5) pkix(7) id-mod(0)
        id-mod-kemAlgorithmInformation-2023(99) }

SubjectPublicKeyInfo
  FROM PKIX1Explicit-2009
      { iso(1) identified-organization(3) dod(6) internet(1)
        security(5) mechanisms(5) pkix(7) id-mod(0)
        id-mod-pkix1-explicit-02(51) }

OneAsymmetricKey
    FROM AsymmetricKeyPackageModuleV1
      { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
        pkcs-9(9) smime(16) modules(0)
        id-mod-asymmetricKeyPkgV1(50) }

  RSAPublicKey, ECPoint
    FROM PKIXAlgs-2009 
      { iso(1) identified-organization(3) dod(6)
        internet(1) security(5) mechanisms(5) pkix(7) id-mod(0)
        id-mod-pkix1-algorithms2008-02(56) }

;


--
-- Object Identifiers
--

-- Defined in ITU-T X.690
der OBJECT IDENTIFIER ::=
  {joint-iso-itu-t asn1(1) ber-derived(2) distinguished-encoding(1)}



--
-- Composite KEM basic structures
--

CompositeKEMPublicKey ::= SEQUENCE SIZE (2) OF BIT STRING

CompositeKEMPublicKeyOs ::= OCTET STRING (CONTAINING 
                                CompositeKEMPublicKey ENCODED BY der)

CompositeKEMPublicKeyBs ::= BIT STRING (CONTAINING 
                                CompositeKEMPublicKey ENCODED BY der)

CompositeKEMPrivateKey ::= SEQUENCE SIZE (2) OF OneAsymmetricKey

CompositeCiphertextValue ::= SEQUENCE SIZE (2) OF OCTET STRING


--
-- Information Object Classes
--

pk-CompositeKEM {
  OBJECT IDENTIFIER:id, FirstPublicKeyType,
  SecondPublicKeyType} PUBLIC-KEY ::=
  {
    IDENTIFIER id
    KEY SEQUENCE {
     BIT STRING (CONTAINING FirstPublicKeyType)
     BIT STRING (CONTAINING SecondPublicKeyType) 
    }
    PARAMS ARE absent
    CERT-KEY-USAGE { keyEncipherment }
  }

kema-CompositeKEM {
  OBJECT IDENTIFIER:id, 
    PUBLIC-KEY:publicKeyType } 
    KEM-ALGORITHM ::= {
         IDENTIFIER id
         VALUE CompositeCiphertextValue
         PARAMS ARE absent
         PUBLIC-KEYS { publicKeyType } 
         SMIME-CAPS { IDENTIFIED BY id }
        }



--
-- Composite KEM Algorithms
--


-- TODO: OID to be replaced by IANA
id-MLKEM512-ECDH-P256 OBJECT IDENTIFIER ::= {
  joint-iso-itu-t(2) country(16) us(840) organization(1) 
  entrust(114027) algorithm(80) explicitcomposite(5) kem(2) 1 }

pk-MLKEM512-ECDH-P256 PUBLIC-KEY ::= 
  pk-CompositeKEM { 
    id-MLKEM512-ECDH-P256, 
    OCTET STRING, ECPoint }

kema-MLKEM512-ECDH-P256 KEM-ALGORITHM ::= 
    kema-CompositeKEM{
      id-MLKEM512-ECDH-P256, 
      pk-MLKEM512-ECDH-P256 }


-- TODO: OID to be replaced by IANA
id-MLKEM512-ECDH-brainpoolP256r1 OBJECT IDENTIFIER ::= {
  joint-iso-itu-t(2) country(16) us(840) organization(1) 
  entrust(114027) algorithm(80) explicitcomposite(5) kem(2) 2 }

pk-MLKEM512-ECDH-brainpoolP256r1 PUBLIC-KEY ::= 
  pk-CompositeKEM {
    id-MLKEM512-ECDH-brainpoolP256r1, 
    OCTET STRING, ECPoint }

kema-MLKEM512-ECDH-brainpoolP256r1 KEM-ALGORITHM ::= 
    kema-CompositeKEM{
      id-MLKEM512-ECDH-brainpoolP256r1, 
      pk-MLKEM512-ECDH-brainpoolP256r1 }



-- TODO: OID to be replaced by IANA
id-MLKEM512-X25519 OBJECT IDENTIFIER ::= {
  joint-iso-itu-t(2) country(16) us(840) organization(1) 
  entrust(114027) algorithm(80) explicitcomposite(5) kem(2) 3 }

pk-MLKEM512-X25519 PUBLIC-KEY ::= 
  pk-CompositeKEM {
    id-MLKEM512-X25519, 
    OCTET STRING, OCTET STRING }

kema-MLKEM512-X25519 KEM-ALGORITHM ::= 
    kema-CompositeKEM{
      id-MLKEM512-X25519, 
      pk-MLKEM512-X25519 }



-- TODO: OID to be replaced by IANA
id-MLKEM512-RSA2048 OBJECT IDENTIFIER ::= {
  joint-iso-itu-t(2) country(16) us(840) organization(1) 
  entrust(114027) algorithm(80) explicitcomposite(5) kem(2) 13 }

pk-MLKEM512-RSA2048 PUBLIC-KEY ::= 
  pk-CompositeKEM { 
    id-MLKEM512-RSA2048, 
    OCTET STRING, RSAPublicKey }

kema-MLKEM512-RSA2048 KEM-ALGORITHM ::= 
    kema-CompositeKEM{
      id-MLKEM512-RSA2048, 
      pk-MLKEM512-RSA2048 }



-- TODO: OID to be replaced by IANA
id-MLKEM512-RSA3072 OBJECT IDENTIFIER ::= {
  joint-iso-itu-t(2) country(16) us(840) organization(1) 
  entrust(114027) algorithm(80) explicitcomposite(5) kem(2) 4 }

pk-MLKEM512-RSA3072 PUBLIC-KEY ::= 
  pk-CompositeKEM {
    id-MLKEM512-RSA3072, 
    OCTET STRING, RSAPublicKey }

kema-MLKEM512-RSA3072 KEM-ALGORITHM ::=
    kema-CompositeKEM{
      id-MLKEM512-RSA3072, 
      pk-MLKEM512-RSA3072 }


-- TODO: OID to be replaced by IANA
id-MLKEM768-ECDH-P256 OBJECT IDENTIFIER ::= {
  joint-iso-itu-t(2) country(16) us(840) organization(1) 
  entrust(114027) algorithm(80) explicitcomposite(5) kem(2) 5 }

pk-MLKEM768-ECDH-P256 PUBLIC-KEY ::= 
  pk-CompositeKEM {
    id-MLKEM768-ECDH-P256, 
    OCTET STRING, ECPoint }

kema-MLKEM768-ECDH-P256 KEM-ALGORITHM ::= 
    kema-CompositeKEM{
      id-MLKEM768-ECDH-P256, 
      pk-MLKEM768-ECDH-P256 }


-- TODO: OID to be replaced by IANA
id-MLKEM768-ECDH-brainpoolP256r1 OBJECT IDENTIFIER ::= {
  joint-iso-itu-t(2) country(16) us(840) organization(1) 
  entrust(114027) algorithm(80) explicitcomposite(5) kem(2) 6 }

pk-MLKEM768-ECDH-brainpoolP256r1 PUBLIC-KEY ::= 
  pk-CompositeKEM {
    id-MLKEM768-ECDH-brainpoolP256r1, 
    OCTET STRING, ECPoint }

kema-MLKEM768-ECDH-brainpoolP256r1 KEM-ALGORITHM ::= 
    kema-CompositeKEM{
      id-MLKEM768-ECDH-brainpoolP256r1, 
      pk-MLKEM768-ECDH-brainpoolP256r1 }


-- TODO: OID to be replaced by IANA
id-MLKEM768-X25519 OBJECT IDENTIFIER ::= {
  joint-iso-itu-t(2) country(16) us(840) organization(1)
  entrust(114027) algorithm(80) explicitcomposite(5) kem(2) 7 }

pk-MLKEM768-X25519 PUBLIC-KEY ::= 
  pk-CompositeKEM {
    id-MLKEM768-X25519, 
    OCTET STRING, OCTET STRING }

kema-MLKEM768-X25519 KEM-ALGORITHM ::= 
    kema-CompositeKEM{
      id-MLKEM768-X25519, 
      pk-MLKEM768-X25519 }



-- TODO: OID to be replaced by IANA
id-MLKEM1024-ECDH-P384 OBJECT IDENTIFIER ::= {
  joint-iso-itu-t(2) country(16) us(840) organization(1)
  entrust(114027) algorithm(80) explicitcomposite(5) kem(2) 8 }

pk-MLKEM1024-ECDH-P384 PUBLIC-KEY ::= 
  pk-CompositeKEM {
    id-MLKEM1024-ECDH-P384, 
    OCTET STRING, ECPoint }

kema-MLKEM1024-ECDH-P384 KEM-ALGORITHM ::= 
    kema-CompositeKEM{
      id-MLKEM1024-ECDH-P384, 
      pk-MLKEM1024-ECDH-P384 }


-- TODO: OID to be replaced by IANA
id-MLKEM1024-ECDH-brainpoolP384r1 OBJECT IDENTIFIER ::= {
  joint-iso-itu-t(2) country(16) us(840) organization(1) 
  entrust(114027) algorithm(80) explicitcomposite(5) kem(2) 9 }

pk-MLKEM1024-ECDH-brainpoolP384r1 PUBLIC-KEY ::= 
  pk-CompositeKEM{
    id-MLKEM1024-ECDH-brainpoolP384r1, 
    OCTET STRING, ECPoint }

kema-MLKEM1024-ECDH-brainpoolP384r1 KEM-ALGORITHM ::= 
    kema-CompositeKEM{
      id-MLKEM1024-ECDH-brainpoolP384r1, 
      pk-MLKEM1024-ECDH-brainpoolP384r1 }
      

-- TODO: OID to be replaced by IANA
id-MLKEM1024-X448 OBJECT IDENTIFIER ::= {
  joint-iso-itu-t(2) country(16) us(840) organization(1) 
  entrust(114027) algorithm(80) explicitcomposite(5) kem(2) 10 }

pk-MLKEM1024-X448 PUBLIC-KEY ::= 
  pk-CompositeKEM {
    id-MLKEM1024-X448, 
    OCTET STRING, OCTET STRING }

kema-MLKEM1024-X448 KEM-ALGORITHM ::= 
    kema-CompositeKEM{
      id-MLKEM1024-X448, 
      pk-MLKEM1024-X448 }


--
-- Expand the S/MIME capabilities set used by CMS [RFC5911]
--

SMimeCaps SMIME-CAPS ::=
    { kema-MLKEM512-ECDH-P256-KMAC128.&smimeCaps |
      kema-MLKEM512-ECDH-brainpoolP256r1-KMAC128.&smimeCaps |
      kema-MLKEM512-X25519-KMAC128.&smimeCaps |
      kema-MLKEM512-RSA2048-KMAC128.&smimeCaps |
      kema-MLKEM512-RSA3072-KMAC128.&smimeCaps |
      kema-MLKEM768-ECDH-P256-KMAC256.&smimeCaps |
      kema-MLKEM768-ECDH-brainpoolP256r1-KMAC256.&smimeCaps |
      kema-MLKEM768-X25519-KMAC256.&smimeCaps |
      kema-MLKEM1024-ECDH-P384-KMAC256.&smimeCaps |
      kema-MLKEM1024-ECDH-brainpoolP384r1-KMAC256.&smimeCaps |
      kema-MLKEM1024-X448-KMAC256.&smimeCaps,
      ... }

END

<CODE ENDS>

]]></sourcecode>
    </section>
    <section anchor="sec-iana">
      <name>IANA Considerations</name>
      <section anchor="object-identifier-allocations">
        <name>Object Identifier Allocations</name>
        <t>EDNOTE to IANA: OIDs will need to be replaced in both the ASN.1 module and in <xref target="tab-kem-algs"/>.</t>
        <section anchor="module-registration-smi-security-for-pkix-module-identifier">
          <name>Module Registration - SMI Security for PKIX Module Identifier</name>
          <ul spacing="normal">
            <li>
              <t>Decimal: IANA Assigned - <strong>Replace TBDMOD</strong></t>
            </li>
            <li>
              <t>Description: Composite-KEM-2023 - id-mod-composite-kems</t>
            </li>
            <li>
              <t>References: This Document</t>
            </li>
          </ul>
        </section>
        <section anchor="object-identifier-registrations-smi-security-for-pkix-algorithms">
          <name>Object Identifier Registrations - SMI Security for PKIX Algorithms</name>
          <ul spacing="normal">
            <li>
              <t>id-MLKEM512-ECDH-P256
              </t>
              <ul spacing="normal">
                <li>
                  <t>Decimal: IANA Assigned</t>
                </li>
                <li>
                  <t>Description: id-MLKEM512-ECDH-P256</t>
                </li>
                <li>
                  <t>References: This Document</t>
                </li>
              </ul>
            </li>
            <li>
              <t>id-MLKEM512-ECDH-brainpoolP256r1
              </t>
              <ul spacing="normal">
                <li>
                  <t>Decimal: IANA Assigned</t>
                </li>
                <li>
                  <t>Description: id-MLKEM512-ECDH-brainpoolP256r1</t>
                </li>
                <li>
                  <t>References: This Document</t>
                </li>
              </ul>
            </li>
            <li>
              <t>id-MLKEM512-X25519
              </t>
              <ul spacing="normal">
                <li>
                  <t>Decimal: IANA Assigned</t>
                </li>
                <li>
                  <t>Description: id-MLKEM512-X25519</t>
                </li>
                <li>
                  <t>References: This Document</t>
                </li>
              </ul>
            </li>
            <li>
              <t>id-MLKEM768-RSA3072
              </t>
              <ul spacing="normal">
                <li>
                  <t>Decimal: IANA Assigned</t>
                </li>
                <li>
                  <t>Description: id-MLKEM768-3072</t>
                </li>
                <li>
                  <t>References: This Document</t>
                </li>
              </ul>
            </li>
            <li>
              <t>id-MLKEM768-ECDH-P256
              </t>
              <ul spacing="normal">
                <li>
                  <t>Decimal: IANA Assigned</t>
                </li>
                <li>
                  <t>Description: id-MLKEM768-ECDH-P256</t>
                </li>
                <li>
                  <t>References: This Document</t>
                </li>
              </ul>
            </li>
            <li>
              <t>id-MLKEM768-ECDH-brainpoolP256r1
              </t>
              <ul spacing="normal">
                <li>
                  <t>Decimal: IANA Assigned</t>
                </li>
                <li>
                  <t>Description: id-MLKEM768-ECDH-brainpoolP256r1</t>
                </li>
                <li>
                  <t>References: This Document</t>
                </li>
              </ul>
            </li>
            <li>
              <t>id-MLKEM768-X25519
              </t>
              <ul spacing="normal">
                <li>
                  <t>Decimal: IANA Assigned</t>
                </li>
                <li>
                  <t>Description: id-MLKEM768-X25519</t>
                </li>
                <li>
                  <t>References: This Document</t>
                </li>
              </ul>
            </li>
            <li>
              <t>id-MLKEM1024-ECDH-P384
              </t>
              <ul spacing="normal">
                <li>
                  <t>Decimal: IANA Assigned</t>
                </li>
                <li>
                  <t>Description: id-MLKEM1024-ECDH-P384</t>
                </li>
                <li>
                  <t>References: This Document</t>
                </li>
              </ul>
            </li>
            <li>
              <t>id-MLKEM1024-ECDH-brainpoolP384r1
              </t>
              <ul spacing="normal">
                <li>
                  <t>Decimal: IANA Assigned</t>
                </li>
                <li>
                  <t>Description: id-MLKEM1024-ECDH-brainpoolP384r1</t>
                </li>
                <li>
                  <t>References: This Document</t>
                </li>
              </ul>
            </li>
            <li>
              <t>id-MLKEM1024-X448
              </t>
              <ul spacing="normal">
                <li>
                  <t>Decimal: IANA Assigned</t>
                </li>
                <li>
                  <t>Description: id-MLKEM1024-X448</t>
                </li>
                <li>
                  <t>References: This Document</t>
                </li>
              </ul>
            </li>
          </ul>
          <!-- End of IANA Considerations section -->

</section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="sec-selection-criteria">
        <name>Component Algorithm Selection Criteria</name>
        <t>The composite algorithm combinations defined in this document were chosen according to the following guidelines:</t>
        <ol spacing="normal" type="1"><li>
            <t>RSA combinations are provided at key sizes of 2048 and 3072 bits. Since RSA 2048 and 3072 are considered to have 112 and 128 bits of classical security respectively, they are both matched with NIST PQC Level 1 algorithms and 128-bit symmetric algorithms.</t>
          </li>
          <li>
            <t>Elliptic curve algorithms are provided with combinations on each of the NIST <xref target="RFC6090"/>, Brainpool <xref target="RFC5639"/>, and Edwards <xref target="RFC7748"/> curves. NIST PQC Levels 1 - 3 algorithms are matched with 256-bit curves, while NIST levels 4 - 5 are matched with 384-bit elliptic curves. This provides a balance between matching classical security levels of post-quantum and traditional algorithms, and also selecting elliptic curves which already have wide adoption.</t>
          </li>
          <li>
            <t>NIST level 1 candidates are provided, matched with 256-bit elliptic curves, intended for constrained use cases.</t>
          </li>
        </ol>
        <t>If other combinations are needed, a separate specification should be submitted to the IETF LAMPS working group.  To ease implementation, these specifications are encouraged to follow the construction pattern of the algorithms specified in this document.</t>
        <t>The composite structures defined in this specification allow only for pairs of algorithms. This also does not preclude future specification from extending these structures to define combinations with three or more components.</t>
      </section>
      <section anchor="policy-for-deprecated-and-acceptable-algorithms">
        <name>Policy for Deprecated and Acceptable Algorithms</name>
        <t>Traditionally, a public key or certificate contains a single cryptographic algorithm. If and when an algorithm becomes deprecated (for example, RSA-512, or SHA1), it is obvious that the public keys or certificates using that algorithm are to be considered revoked.</t>
        <t>In the composite model this is less obvious since implementers may decide that certain cryptographic algorithms have complementary security properties and are acceptable in combination even though one or both algorithms are deprecated for individual use. As such, a single composite public key or certificate may contain a mixture of deprecated and non-deprecated algorithms.</t>
        <t>Since composite algorithms are registered independently of their component algorithms, their deprecation can be handled independently from that of their component algorithms. For example a cryptographic policy might continue to allow <tt>id-MLKEM512-ECDH-P256</tt> even after ECDH-P256 is deprecated.</t>
        <t>The composite KEM design specified in this document, and especially that of the KEM combiner specified in <xref target="sec-kem-combiner"/> means that the overall composite KEM algorithm should be considered to have the security strength of the strongest of its component algorithms; ie as long as one component algorithm remains strong, then the overall composite algorithm remains strong.</t>
      </section>
      <section anchor="sec-cons-kem-combiner">
        <name>KEM Combiner Security Analysis</name>
        <t>TODO</t>
        <t>EDNOTE: the exact text to put here depends on the outcome of the CFRG KEM Combiners and X-Wing discussion. If CFRG doesn't move fast enough for us, then we may need to leverage this security consideration directly on top of the X-Wing paper <xref target="X-Wing"/>.</t>
        <section anchor="sec-cons-ct-collision">
          <name>Ciphertext collision resistance</name>
          <t>The notion of a ciphertext collision resistant KEM is defined in <xref target="X-Wing"/> being the property that it is computationally difficult to find two different ciphertexts that will decapsulate to the same shared secret under the same public key. In <xref target="X-Wing"/> it is proven that ML-KEM has this property and therefore the ML-KEM ciphertext can safely be omitted from the KEM combiner. Ciphertext collision resistance is not guaranteed for either RSA-OAEP or ECDH, therefore these ciphertexts are bound to the key derivation.</t>
          <!-- End of Security Considerations section -->

</section>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <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="RFC3394" target="https://www.rfc-editor.org/info/rfc3394" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3394.xml">
          <front>
            <title>Advanced Encryption Standard (AES) Key Wrap Algorithm</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="September" year="2002"/>
          </front>
          <seriesInfo name="RFC" value="3394"/>
          <seriesInfo name="DOI" value="10.17487/RFC3394"/>
        </reference>
        <reference anchor="RFC3560" target="https://www.rfc-editor.org/info/rfc3560" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3560.xml">
          <front>
            <title>Use of the RSAES-OAEP Key Transport Algorithm in Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="July" year="2003"/>
            <abstract>
              <t>This document describes the conventions for using the RSAES-OAEP key transport algorithm with 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 RSAES-OAEP key transport algorithm can be used to encrypt content-encryption keys for intended recipients. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3560"/>
          <seriesInfo name="DOI" value="10.17487/RFC3560"/>
        </reference>
        <reference anchor="RFC4055" target="https://www.rfc-editor.org/info/rfc4055" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4055.xml">
          <front>
            <title>Additional Algorithms and Identifiers for RSA Cryptography for use in the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="June" year="2005"/>
            <abstract>
              <t>This document supplements RFC 3279. It describes the conventions for using the RSA Probabilistic Signature Scheme (RSASSA-PSS) signature algorithm, the RSA Encryption Scheme - Optimal Asymmetric Encryption Padding (RSAES-OAEP) key transport algorithm and additional one-way hash functions with the Public-Key Cryptography Standards (PKCS) #1 version 1.5 signature algorithm in the Internet X.509 Public Key Infrastructure (PKI). Encoding formats, algorithm identifiers, and parameter formats are specified. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4055"/>
          <seriesInfo name="DOI" value="10.17487/RFC4055"/>
        </reference>
        <reference anchor="RFC5280" target="https://www.rfc-editor.org/info/rfc5280" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC5652" target="https://www.rfc-editor.org/info/rfc5652" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5652.xml">
          <front>
            <title>Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <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="RFC5958" target="https://www.rfc-editor.org/info/rfc5958" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5958.xml">
          <front>
            <title>Asymmetric Key Packages</title>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>This document defines the syntax for private-key information and a content type for it. Private-key information includes a private key for a specified public-key algorithm and a set of attributes. The Cryptographic Message Syntax (CMS), as defined in RFC 5652, can be used to digitally sign, digest, authenticate, or encrypt the asymmetric key format content type. This document obsoletes RFC 5208. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5958"/>
          <seriesInfo name="DOI" value="10.17487/RFC5958"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <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>
        <reference anchor="RFC8410" target="https://www.rfc-editor.org/info/rfc8410" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8410.xml">
          <front>
            <title>Algorithm Identifiers for Ed25519, Ed448, X25519, and X448 for Use in the Internet X.509 Public Key Infrastructure</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies algorithm identifiers and ASN.1 encoding formats for elliptic curve constructs using the curve25519 and curve448 curves. The signature algorithms covered are Ed25519 and Ed448. The key agreement algorithms covered are X25519 and X448. The encoding for public key, private key, and Edwards-curve Digital Signature Algorithm (EdDSA) structures is provided.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8410"/>
          <seriesInfo name="DOI" value="10.17487/RFC8410"/>
        </reference>
        <reference anchor="RFC8411" target="https://www.rfc-editor.org/info/rfc8411" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8411.xml">
          <front>
            <title>IANA Registration for the Cryptographic Algorithm Object Identifier Range</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <author fullname="R. Andrews" initials="R." surname="Andrews"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>When the Curdle Security Working Group was chartered, a range of object identifiers was donated by DigiCert, Inc. for the purpose of registering the Edwards Elliptic Curve key agreement and signature algorithms. This donated set of OIDs allowed for shorter values than would be possible using the existing S/MIME or PKIX arcs. This document describes the donated range and the identifiers that were assigned from that range, transfers control of that range to IANA, and establishes IANA allocation policies for any future assignments within that range.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8411"/>
          <seriesInfo name="DOI" value="10.17487/RFC8411"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-cms-kemri" target="https://datatracker.ietf.org/doc/html/draft-ietf-lamps-cms-kemri-08" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-lamps-cms-kemri-08.xml">
          <front>
            <title>Using Key Encapsulation Mechanism (KEM) Algorithms in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="Russ Housley" initials="R." surname="Housley">
              <organization>Vigil Security, LLC</organization>
            </author>
            <author fullname="John Gray" initials="J." surname="Gray">
              <organization>Entrust</organization>
            </author>
            <author fullname="Tomofumi Okubo" initials="T." surname="Okubo">
              <organization>DigiCert, Inc.</organization>
            </author>
            <date day="6" month="February" year="2024"/>
            <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 and decrypt CMS content. This document updates RFC 5652.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-kemri-08"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-cms-sha3-hash" target="https://datatracker.ietf.org/doc/html/draft-ietf-lamps-cms-sha3-hash-04" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-lamps-cms-sha3-hash-04.xml">
          <front>
            <title>Use of the SHA3 One-way Hash Functions in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="Russ Housley" initials="R." surname="Housley">
              <organization>Vigil Security, LLC</organization>
            </author>
            <date day="16" month="May" year="2024"/>
            <abstract>
              <t>This document describes the conventions for using the one-way hash functions in the SHA3 family with the Cryptographic Message Syntax (CMS). The SHA3 family can be used as a message digest algorithm, as part of a signature algorithm, as part of a message authentication code, or part of a key derivation function.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-sha3-hash-04"/>
        </reference>
        <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>ITU-T</organization>
            </author>
            <date year="2015" month="November"/>
          </front>
          <seriesInfo name="ISO/IEC" value="8825-1:2015"/>
        </reference>
        <reference anchor="BSI-ECC">
          <front>
            <title>Technical Guideline BSI TR-03111: Elliptic Curve Cryptography. Version 2.10</title>
            <author>
              <organization>Federal Office for Information Security (BSI)</organization>
            </author>
            <date year="2018" month="June" day="01"/>
          </front>
        </reference>
        <reference anchor="SP.800-56Ar3" target="https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf">
          <front>
            <title>Recommendation for Pair-Wise Key-Establishment Schemes Using Discrete Logarithm Cryptography</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date year="2018" month="April"/>
          </front>
        </reference>
        <reference anchor="SP.800-56Cr2" target="https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Cr2.pdf">
          <front>
            <title>Recommendation for Key-Derivation Methods in Key-Establishment Schemes</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date year="2020" month="August"/>
          </front>
        </reference>
        <reference anchor="FIPS.203-ipd" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.203.ipd.pdf">
          <front>
            <title>Module-Lattice-based Key-Encapsulation Mechanism Standard</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date year="2023" month="August"/>
          </front>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC2986" target="https://www.rfc-editor.org/info/rfc2986" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2986.xml">
          <front>
            <title>PKCS #10: Certification Request Syntax Specification Version 1.7</title>
            <author fullname="M. Nystrom" initials="M." surname="Nystrom"/>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski"/>
            <date month="November" year="2000"/>
            <abstract>
              <t>This memo represents a republication of PKCS #10 v1.7 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series, and change control is retained within the PKCS process. The body of this document, except for the security considerations section, is taken directly from the PKCS #9 v2.0 or the PKCS #10 v1.7 document. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2986"/>
          <seriesInfo name="DOI" value="10.17487/RFC2986"/>
        </reference>
        <reference anchor="RFC4210" target="https://www.rfc-editor.org/info/rfc4210" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4210.xml">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate Management Protocol (CMP)</title>
            <author fullname="C. Adams" initials="C." surname="Adams"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="T. Kause" initials="T." surname="Kause"/>
            <author fullname="T. Mononen" initials="T." surname="Mononen"/>
            <date month="September" year="2005"/>
            <abstract>
              <t>This document describes the Internet X.509 Public Key Infrastructure (PKI) Certificate Management Protocol (CMP). Protocol messages are defined for X.509v3 certificate creation and management. CMP provides on-line interactions between PKI components, including an exchange between a Certification Authority (CA) and a client system. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4210"/>
          <seriesInfo name="DOI" value="10.17487/RFC4210"/>
        </reference>
        <reference anchor="RFC4211" target="https://www.rfc-editor.org/info/rfc4211" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4211.xml">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate Request Message Format (CRMF)</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="September" year="2005"/>
            <abstract>
              <t>This document describes the Certificate Request Message Format (CRMF) syntax and semantics. This syntax is used to convey a request for a certificate to a Certification Authority (CA), possibly via a Registration Authority (RA), for the purposes of X.509 certificate production. The request will typically include a public key and the associated registration information. This document does not define a certificate request protocol. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4211"/>
          <seriesInfo name="DOI" value="10.17487/RFC4211"/>
        </reference>
        <reference anchor="RFC4262" target="https://www.rfc-editor.org/info/rfc4262" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4262.xml">
          <front>
            <title>X.509 Certificate Extension for Secure/Multipurpose Internet Mail Extensions (S/MIME) Capabilities</title>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <date month="December" year="2005"/>
            <abstract>
              <t>This document defines a certificate extension for inclusion of Secure/Multipurpose Internet Mail Extensions (S/MIME) Capabilities in X.509 public key certificates, as defined by RFC 3280. This certificate extension provides an optional method to indicate the cryptographic capabilities of an entity as a complement to the S/MIME Capabilities signed attribute in S/MIME messages according to RFC 3851. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4262"/>
          <seriesInfo name="DOI" value="10.17487/RFC4262"/>
        </reference>
        <reference anchor="RFC5083" target="https://www.rfc-editor.org/info/rfc5083" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5083.xml">
          <front>
            <title>Cryptographic Message Syntax (CMS) Authenticated-Enveloped-Data Content Type</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <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="RFC5639" target="https://www.rfc-editor.org/info/rfc5639" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5639.xml">
          <front>
            <title>Elliptic Curve Cryptography (ECC) Brainpool Standard Curves and Curve Generation</title>
            <author fullname="M. Lochter" initials="M." surname="Lochter"/>
            <author fullname="J. Merkle" initials="J." surname="Merkle"/>
            <date month="March" year="2010"/>
            <abstract>
              <t>This memo proposes several elliptic curve domain parameters over finite prime fields for use in cryptographic applications. The domain parameters are consistent with the relevant international standards, and can be used in X.509 certificates and certificate revocation lists (CRLs), for Internet Key Exchange (IKE), Transport Layer Security (TLS), XML signatures, and all applications or protocols based on the cryptographic message syntax (CMS). This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5639"/>
          <seriesInfo name="DOI" value="10.17487/RFC5639"/>
        </reference>
        <reference anchor="RFC5914" target="https://www.rfc-editor.org/info/rfc5914" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5914.xml">
          <front>
            <title>Trust Anchor Format</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="S. Ashmore" initials="S." surname="Ashmore"/>
            <author fullname="C. Wallace" initials="C." surname="Wallace"/>
            <date month="June" year="2010"/>
            <abstract>
              <t>This document describes a structure for representing trust anchor information. A trust anchor is an authoritative entity represented by a public key and associated data. The public key is used to verify digital signatures, and the associated data is used to constrain the types of information or actions for which the trust anchor is authoritative. The structures defined in this document are intended to satisfy the format-related requirements defined in Trust Anchor Management Requirements. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5914"/>
          <seriesInfo name="DOI" value="10.17487/RFC5914"/>
        </reference>
        <reference anchor="RFC5990" target="https://www.rfc-editor.org/info/rfc5990" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5990.xml">
          <front>
            <title>Use of the RSA-KEM Key Transport Algorithm in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="J. Randall" initials="J." surname="Randall"/>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski"/>
            <author fullname="J. Brainard" initials="J." surname="Brainard"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="September" year="2010"/>
            <abstract>
              <t>The RSA-KEM Key Transport Algorithm is a one-pass (store-and-forward) mechanism for transporting keying data to a recipient using the recipient's RSA public key. ("KEM" stands for "key encapsulation mechanism".) This document specifies the conventions for using the RSA-KEM Key Transport Algorithm with the Cryptographic Message Syntax (CMS). The ASN.1 syntax is aligned with an expected forthcoming change to American National Standard (ANS) X9.44.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5990"/>
          <seriesInfo name="DOI" value="10.17487/RFC5990"/>
        </reference>
        <reference anchor="RFC6090" target="https://www.rfc-editor.org/info/rfc6090" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6090.xml">
          <front>
            <title>Fundamental Elliptic Curve Cryptography Algorithms</title>
            <author fullname="D. McGrew" initials="D." surname="McGrew"/>
            <author fullname="K. Igoe" initials="K." surname="Igoe"/>
            <author fullname="M. Salter" initials="M." surname="Salter"/>
            <date month="February" year="2011"/>
            <abstract>
              <t>This note describes the fundamental algorithms of Elliptic Curve Cryptography (ECC) as they were defined in some seminal references from 1994 and earlier. These descriptions may be useful for implementing the fundamental algorithms without using any of the specialized methods that were developed in following years. Only elliptic curves defined over fields of characteristic greater than three are in scope; these curves are those used in Suite B. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6090"/>
          <seriesInfo name="DOI" value="10.17487/RFC6090"/>
        </reference>
        <reference anchor="RFC7292" target="https://www.rfc-editor.org/info/rfc7292" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7292.xml">
          <front>
            <title>PKCS #12: Personal Information Exchange Syntax v1.1</title>
            <author fullname="K. Moriarty" initials="K." role="editor" surname="Moriarty"/>
            <author fullname="M. Nystrom" initials="M." surname="Nystrom"/>
            <author fullname="S. Parkinson" initials="S." surname="Parkinson"/>
            <author fullname="A. Rusch" initials="A." surname="Rusch"/>
            <author fullname="M. Scott" initials="M." surname="Scott"/>
            <date month="July" year="2014"/>
            <abstract>
              <t>PKCS #12 v1.1 describes a transfer syntax for personal identity information, including private keys, certificates, miscellaneous secrets, and extensions. Machines, applications, browsers, Internet kiosks, and so on, that support this standard will allow a user to import, export, and exercise a single set of personal identity information. This standard supports direct transfer of personal information under several privacy and integrity modes.</t>
              <t>This document represents a republication of PKCS #12 v1.1 from RSA Laboratories' Public Key Cryptography Standard (PKCS) series. By publishing this RFC, change control is transferred to the IETF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7292"/>
          <seriesInfo name="DOI" value="10.17487/RFC7292"/>
        </reference>
        <reference anchor="RFC7296" target="https://www.rfc-editor.org/info/rfc7296" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7296.xml">
          <front>
            <title>Internet Key Exchange Protocol Version 2 (IKEv2)</title>
            <author fullname="C. Kaufman" initials="C." surname="Kaufman"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="Y. Nir" initials="Y." surname="Nir"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <author fullname="T. Kivinen" initials="T." surname="Kivinen"/>
            <date month="October" year="2014"/>
            <abstract>
              <t>This document describes version 2 of the Internet Key Exchange (IKE) protocol. IKE is a component of IPsec used for performing mutual authentication and establishing and maintaining Security Associations (SAs). This document obsoletes RFC 5996, and includes all of the errata for it. It advances IKEv2 to be an Internet Standard.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="79"/>
          <seriesInfo name="RFC" value="7296"/>
          <seriesInfo name="DOI" value="10.17487/RFC7296"/>
        </reference>
        <reference anchor="RFC7748" target="https://www.rfc-editor.org/info/rfc7748" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7748.xml">
          <front>
            <title>Elliptic Curves for Security</title>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <author fullname="M. Hamburg" initials="M." surname="Hamburg"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="January" year="2016"/>
            <abstract>
              <t>This memo specifies two elliptic curves over prime fields that offer a high level of practical security in cryptographic applications, including Transport Layer Security (TLS). These curves are intended to operate at the ~128-bit and ~224-bit security level, respectively, and are generated deterministically based on a list of required properties.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7748"/>
          <seriesInfo name="DOI" value="10.17487/RFC7748"/>
        </reference>
        <reference anchor="RFC8017" target="https://www.rfc-editor.org/info/rfc8017" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8017.xml">
          <front>
            <title>PKCS #1: RSA Cryptography Specifications Version 2.2</title>
            <author fullname="K. Moriarty" initials="K." role="editor" surname="Moriarty"/>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski"/>
            <author fullname="J. Jonsson" initials="J." surname="Jonsson"/>
            <author fullname="A. Rusch" initials="A." surname="Rusch"/>
            <date month="November" year="2016"/>
            <abstract>
              <t>This document provides recommendations for the implementation of public-key cryptography based on the RSA algorithm, covering cryptographic primitives, encryption schemes, signature schemes with appendix, and ASN.1 syntax for representing keys and for identifying the schemes.</t>
              <t>This document represents a republication of PKCS #1 v2.2 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series. By publishing this RFC, change control is transferred to the IETF.</t>
              <t>This document also obsoletes RFC 3447.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8017"/>
          <seriesInfo name="DOI" value="10.17487/RFC8017"/>
        </reference>
        <reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8446" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8551" target="https://www.rfc-editor.org/info/rfc8551" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8551.xml">
          <front>
            <title>Secure/Multipurpose Internet Mail Extensions (S/MIME) Version 4.0 Message Specification</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <author fullname="B. Ramsdell" initials="B." surname="Ramsdell"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="April" year="2019"/>
            <abstract>
              <t>This document defines Secure/Multipurpose Internet Mail Extensions (S/MIME) version 4.0. S/MIME provides a consistent way to send and receive secure MIME data. Digital signatures provide authentication, message integrity, and non-repudiation with proof of origin. Encryption provides data confidentiality. Compression can be used to reduce data size. This document obsoletes RFC 5751.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8551"/>
          <seriesInfo name="DOI" value="10.17487/RFC8551"/>
        </reference>
        <reference anchor="RFC9180" target="https://www.rfc-editor.org/info/rfc9180" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9180.xml">
          <front>
            <title>Hybrid Public Key Encryption</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="K. Bhargavan" initials="K." surname="Bhargavan"/>
            <author fullname="B. Lipp" initials="B." surname="Lipp"/>
            <author fullname="C. Wood" initials="C." surname="Wood"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>This document describes a scheme for hybrid public key encryption (HPKE). This scheme provides a variant of public key encryption of arbitrary-sized plaintexts for a recipient public key. It also includes three authenticated variants, including one that authenticates possession of a pre-shared key and two optional ones that authenticate possession of a key encapsulation mechanism (KEM) private key. HPKE works for any combination of an asymmetric KEM, key derivation function (KDF), and authenticated encryption with additional data (AEAD) encryption function. Some authenticated variants may not be supported by all KEMs. We provide instantiations of the scheme using widely used and efficient primitives, such as Elliptic Curve Diffie-Hellman (ECDH) key agreement, HMAC-based key derivation function (HKDF), and SHA2.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9180"/>
          <seriesInfo name="DOI" value="10.17487/RFC9180"/>
        </reference>
        <reference anchor="I-D.ietf-tls-hybrid-design" target="https://datatracker.ietf.org/doc/html/draft-ietf-tls-hybrid-design-04" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-tls-hybrid-design-04.xml">
          <front>
            <title>Hybrid key exchange in TLS 1.3</title>
            <author fullname="Douglas Stebila" initials="D." surname="Stebila">
              <organization>University of Waterloo</organization>
            </author>
            <author fullname="Scott Fluhrer" initials="S." surname="Fluhrer">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Shay Gueron" initials="S." surname="Gueron">
              <organization>University of Haifa and Amazon Web Services</organization>
            </author>
            <date day="11" month="January" year="2022"/>
            <abstract>
              <t>Hybrid key exchange refers to using multiple key exchange algorithms simultaneously and combining the result with the goal of providing security even if all but one of the component algorithms is broken. It is motivated by transition to post-quantum cryptography. This document provides a construction for hybrid key exchange in the Transport Layer Security (TLS) protocol version 1.3. Discussion of this work is encouraged to happen on the TLS IETF mailing list tls@ietf.org or on the GitHub repository which contains the draft: https://github.com/dstebila/draft-ietf-tls-hybrid-design.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-hybrid-design-04"/>
        </reference>
        <reference anchor="I-D.driscoll-pqt-hybrid-terminology" target="https://datatracker.ietf.org/doc/html/draft-driscoll-pqt-hybrid-terminology-01" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-driscoll-pqt-hybrid-terminology-01.xml">
          <front>
            <title>Terminology for Post-Quantum Traditional Hybrid Schemes</title>
            <author fullname="Florence D" initials="F." surname="D">
              <organization>UK National Cyber Security Centre</organization>
            </author>
            <date day="20" month="October" year="2022"/>
            <abstract>
              <t>One aspect of the transition to post-quantum algorithms in cryptographic protocols is the development of hybrid schemes that incorporate both post-quantum and traditional asymmetric algorithms. This document defines terminology for such schemes. It is intended to ensure consistency and clarity across different protocols, standards, and organisations.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-driscoll-pqt-hybrid-terminology-01"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-kyber-certificates" target="https://datatracker.ietf.org/doc/html/draft-ietf-lamps-kyber-certificates-01" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-lamps-kyber-certificates-01.xml">
          <front>
            <title>Internet X.509 Public Key Infrastructure - Algorithm Identifiers for Kyber</title>
            <author fullname="Sean Turner" initials="S." surname="Turner">
              <organization>sn3rd</organization>
            </author>
            <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
              <organization>AWS</organization>
            </author>
            <author fullname="Jake Massimo" initials="J." surname="Massimo">
              <organization>AWS</organization>
            </author>
            <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
              <organization>Cloudflare</organization>
            </author>
            <date day="28" month="March" year="2023"/>
            <abstract>
              <t>Kyber is a key-encapsulation mechanism (KEM). This document specifies algorithm identifiers and ASN.1 encoding format for Kyber in public key certificates. The encoding for public and private keys are also provided. [EDNOTE: This document is not expected to be finalized before the NIST PQC Project has standardized PQ algorithms. This specification will use object identifiers for the new algorithms that are assigned by NIST, and will use placeholders until these are released.]</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-kyber-certificates-01"/>
        </reference>
        <reference anchor="I-D.housley-lamps-cms-kemri" target="https://datatracker.ietf.org/doc/html/draft-housley-lamps-cms-kemri-02" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-housley-lamps-cms-kemri-02.xml">
          <front>
            <title>Using Key Encapsulation Mechanism (KEM) Algorithms in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="Russ Housley" initials="R." surname="Housley">
              <organization>Vigil Security, LLC</organization>
            </author>
            <author fullname="John Gray" initials="J." surname="Gray">
              <organization>Entrust</organization>
            </author>
            <author fullname="Tomofumi Okubo" initials="T." surname="Okubo">
              <organization>DigiCert, Inc.</organization>
            </author>
            <date day="20" month="February" year="2023"/>
            <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>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-housley-lamps-cms-kemri-02"/>
        </reference>
        <reference anchor="X-Wing" target="https://eprint.iacr.org/2024/039.pdf">
          <front>
            <title>X-Wing The Hybrid KEM You've Been Looking For</title>
            <author initials="M." surname="Barbosa" fullname="Manuel Barbosa">
              <organization/>
            </author>
            <author initials="D." surname="Connolly" fullname="Deirdre Connolly">
              <organization/>
            </author>
            <author initials="J." surname="Duarte" fullname="Joao Diogo Duarte">
              <organization/>
            </author>
            <author initials="A." surname="Kaiser" fullname="Aaron Kaiser">
              <organization/>
            </author>
            <author initials="P." surname="Schwabe" fullname="Peter Schwabe">
              <organization/>
            </author>
            <author initials="K." surname="Varner" fullname="Karolin Varner">
              <organization/>
            </author>
            <author initials="B." surname="Westerbaan" fullname="Bas Westerbaan">
              <organization/>
            </author>
            <date year="2024" month="January" day="09"/>
          </front>
        </reference>
        <reference anchor="BSI2021" target="https://www.bsi.bund.de/SharedDocs/Downloads/EN/BSI/Publications/Brochure/quantum-safe-cryptography.pdf">
          <front>
            <title>Quantum-safe cryptography - fundamentals, current developments and recommendations</title>
            <author>
              <organization>Federal Office for Information Security (BSI)</organization>
            </author>
            <date year="2021" month="October"/>
          </front>
        </reference>
        <reference anchor="ANSSI2024" target="https://cyber.gouv.fr/sites/default/files/document/Quantum_Key_Distribution_Position_Paper.pdf">
          <front>
            <title>Position Paper on Quantum Key Distribution</title>
            <author>
              <organization>French Cybersecurity Agency (ANSSI)</organization>
            </author>
            <author>
              <organization>Federal Office for Information Security (BSI)</organization>
            </author>
            <author>
              <organization>Netherlands National Communications Security Agency (NLNCSA)</organization>
            </author>
            <author>
              <organization>Swedish National Communications Security Authority, Swedish Armed Forces</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SP800-131Ar2" target="https://nvlpubs.nist.gov/nistpubs/specialpublications/nist.sp.800-131ar2.pdf">
          <front>
            <title>Transitioning the Use of Cryptographic Algorithms and Key Lengths</title>
            <author initials="E." surname="Barker" fullname="Elaine Barke">
              <organization/>
            </author>
            <author initials="A." surname="Roginksy" fullname="Allan Reginsky">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <?line 1215?>

<section anchor="appdx-samples">
      <name>Samples</name>
      <t>TBD</t>
    </section>
    <section anchor="fixed-component-algorithm-identifiers">
      <name>Fixed Component Algorithm Identifiers</name>
      <t>The following table lists explicitly the DER encoded <tt>AlgorithmID</tt> that MUST be used when reconstructing <tt>SubjectPublicKeyInfo</tt> objects for each component public key, which may be required for example if cryptographic library requires the public key in this form in order to process each component algorithm. The public key <tt>BIT STRING</tt> should be taken directly from the respective component of the CompositeKEMPublicKey.</t>
      <table>
        <thead>
          <tr>
            <th align="left">Composite KEM</th>
            <th align="left">First AlgorithmID</th>
            <th align="left">Second AlgorithmID</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">TODO</td>
            <td align="left">TODO</td>
            <td align="left">TODO</td>
          </tr>
        </tbody>
      </table>
      <t>TODO: see https://github.com/lamps-wg/draft-composite-kem/issues/20</t>
    </section>
    <section anchor="sec-in-pract">
      <name>Implementation Considerations</name>
      <section anchor="sec-fips">
        <name>FIPS certification</name>
        <t>One of the primary design goals of this specification is for the overall composite algorithm to be able to be considered FIPS-approved even when one of the component algorithms is not. The combiner presented in <xref target="sec-kem-combiner"/> was chosen to align with <xref target="SP.800-56Cr2"/> for this reason.</t>
        <t>Implementers seeking FIPS certification of a composite KEM algorithm where only one of the component algorithms has been FIPS-validated or FIPS-approved should credit the FIPS-validated component algorithm with full security strength, the non-FIPS-validated component algorithm with zero security, and the overall composite should be considered full strength and thus FIPS-approved.</t>
        <t>The authors wish to note that this gives composite algorithms great future utility both for future cryptographic migrations as well as bridging across jurisdictions; for example defining composite algorithms which combine FIPS cryptography with cryptography from a different national standards body.</t>
      </section>
      <section anchor="sec-backwards-compat">
        <name>Backwards Compatibility</name>
        <t>As noted in the introduction, the post-quantum cryptographic migration will face challenges in both ensuring cryptographic strength against adversaries of unknown capabilities, as well as providing ease of migration. The composite mechanisms defined in this document primarily address cryptographic strength, however this section contains notes on how backwards compatibility may be obtained.</t>
        <t>The term "ease of migration" is used here to mean that existing systems can be gracefully transitioned to the new technology without requiring large service disruptions or expensive upgrades. The term "backwards compatibility" is used here to mean something more specific; that existing systems as they are deployed today can inter-operate with the upgraded systems of the future.</t>
        <t>These migration and interoperability concerns need to be thought about in the context of various types of protocols that make use of X.509 and PKIX with relation to key establishment and content encryption, from online negotiated protocols such as TLS 1.3 <xref target="RFC8446"/> and IKEv2 <xref target="RFC7296"/>, to non-negotiated asynchronous protocols such as S/MIME signed email <xref target="RFC8551"/>, as well as myriad other standardized and proprietary protocols and applications that leverage CMS <xref target="RFC5652"/> encrypted structures.</t>
        <section anchor="parallel-pkis">
          <name>Parallel PKIs</name>
          <t>EDNOTE: remove this section?</t>
          <t>We present the term "Parallel PKI" to refer to the setup where a PKI end entity possesses two or more distinct public keys or certificates for the same identity (name), but containing keys for different cryptographic algorithms. One could imagine a set of parallel PKIs where an existing PKI using legacy algorithms (RSA, ECC) is left operational during the post-quantum migration but is shadowed by one or more parallel PKIs using pure post quantum algorithms or composite algorithms (legacy and post-quantum).</t>
          <t>Equipped with a set of parallel public keys in this way, a client would have the flexibility to choose which public key(s) or certificate(s) to use in a given signature operation.</t>
          <t>For negotiated protocols, the client could choose which public key(s) or certificate(s) to use based on the negotiated algorithms.</t>
          <t>For non-negotiated protocols, the details for obtaining backwards compatibility will vary by protocol, but for example in CMS <xref target="RFC5652"/>.</t>
          <t>EDNOTE: I copied and pruned this text from I-D.ounsworth-pq-composite-sigs. It probably needs to be fleshed out more as we better understand the implementation concerns around composite encryption.</t>
          <!-- End of Implementation Considerations section -->

</section>
      </section>
    </section>
    <section anchor="intellectual-property-considerations">
      <name>Intellectual Property Considerations</name>
      <t>The following IPR Disclosure relates to this draft:</t>
      <t>https://datatracker.ietf.org/ipr/3588/</t>
      <t>EDNOTE TODO: Check with Max Pala whether this IPR actually applies to this draft.</t>
    </section>
    <section anchor="contributors-and-acknowledgments">
      <name>Contributors and Acknowledgments</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>Serge Mister (Entrust), Ali Noman (Entrust), and
Douglas Stebila (University of Waterloo).</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 go to the authors of those
   documents.  "Copying always makes things easier and less error prone" - <xref target="RFC8411"/>.</t>
      <!-- End of Contributors section -->

</section>
  </back>
  <!-- ##markdown-source:
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
qo/V2x4uV/g/3NVxhUnxAAA=

-->

</rfc>
