<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.17 (Ruby 2.7.0) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-pq-composite-kem-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.2 -->
  <front>
    <title abbrev="Composite KEMs">Composite KEM For Use In Internet PKI</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-pq-composite-kem-02"/>
    <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>
    <date year="2023" month="October" day="23"/>
    <area>Security</area>
    <workgroup>LAMPS</workgroup>
    <keyword>X.509</keyword>
    <keyword>CMS</keyword>
    <keyword>Post-Quantum</keyword>
    <keyword>KEM</keyword>
    <abstract>
      <t>This document defines Post-Quantum / Traditional composite Key Encapsulation Mechanism (KEM) algorithms suitable for use within X.509 and PKIX and CMS protocols. Composite algorithms are provided which combine ML-KEM with RSA-KEM and ECDH-KEM. The provided set of composite algorithms should meet most Internet needs.</t>
      <t>This document assumes that all component algorithms are KEMs, and therefore it depends on <xref target="RFC5990"/> and <xref target="I-D.ounsworth-lamps-cms-dhkem"/> in order to promote RSA and ECDH respectively into KEMs. For the purpose of combining KEMs, the combiner function from <xref target="I-D.ounsworth-cfrg-kem-combiners"/> is used. 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"/>.</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>
    <section anchor="changes-in-version-01-and-02">
      <name>Changes in version -01 and -02</name>
      <t>Changes affecting interoperability:</t>
      <ul spacing="normal">
        <li>
          <t>Re-worked wire format and ASN.1 to remove vestiges of Generics.
          </t>
          <ul spacing="normal">
            <li>
              <t>Changed all <tt>SEQUENCE OF SIZE (2..MAX)</tt> to <tt>SEQUENCE OF SIZE (2)</tt>.</t>
            </li>
            <li>
              <t>Changed the definition of <tt>CompositeKEMPublicKey</tt> from <tt>SEQUENCE OF SubjectPublicKeyInfo</tt> to <tt>SEQUENCE OF BIT STRING</tt> since with complete removal of Generic Composites, there is no longer any need to carry the component AlgorithmIdentifiers.</t>
            </li>
            <li>
              <t>Removed CompositeKEMParams since all params are now explicit in the OID.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Defined <tt>KeyGen()</tt>, <tt>Encaps()</tt>, and <tt>Decaps()</tt> for a composite KEM algorithm.</t>
        </li>
        <li>
          <t>Removed the discussion of KeyTrans -&gt; KEM and KeyAgree -&gt; KEM promotions, and instead simply referenced <xref target="I-D.ietf-lamps-rfc5990bis"/> and <xref target="I-D.ounsworth-lamps-cms-dhkem"/>.</t>
        </li>
        <li>
          <t>Made RSA keys fixed-length at 2048 and 3072, both at the NIST Level 1 / AES-128 security level.</t>
        </li>
        <li>
          <t>Re-worked section 4.1 (id-MLKEM768-RSA3072-KMAC256) to Reference 5990bis and its updated structures.</t>
        </li>
        <li>
          <t>Removed RSA-KEM KDF params and make them implied by the OID; ie provide a profile of 5990bis.</t>
        </li>
        <li>
          <t>Aligned combiner with draft-ounsworth-cfrg-kem-combiners-04.</t>
        </li>
        <li>
          <t>Added id-MLKEM512-RSA2048-KMAC128 so that we have an RSA 2048 option.</t>
        </li>
      </ul>
      <t>Editorial changes:</t>
      <ul spacing="normal">
        <li>
          <t>Refactored to use MartinThomson github template.</t>
        </li>
        <li>
          <t>Made this document standalone by folding in the minimum necessary content from composite-keys and dropping the cross-reference to composite-sigs.</t>
        </li>
        <li>
          <t>Added a paragraph describing how to reconstitute component SPKIs.</t>
        </li>
        <li>
          <t>Added an Implementation Consideration about FIPS validation where only one component algorithm is FIPS-approved.</t>
        </li>
        <li>
          <t>Shortened the abstract (moved some content into Intro).</t>
        </li>
        <li>
          <t>Brushed up the Security Considerations.</t>
        </li>
        <li>
          <t>Made a proper IANA Considerations section.</t>
        </li>
        <li>
          <t>Rename "Kyber" to "ML-KEM".</t>
        </li>
      </ul>
      <t>Still to do in a future version:</t>
      <t><tt>[ ]</tt> We need PEM samples ... 118 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 EnvolepedData sample encrypted for that composite KEM certificate.</t>
    </section>
    <section anchor="sec-intro">
      <name>Introduction</name>
      <t>The migration to post-quantum cryptography is unique in the history of modern digital cryptography in that neither the old outgoing nor the new incoming algorithms are fully trusted to protect data for long data lifetimes. The outgoing algorithms, such as RSA and elliptic curve, may fall to quantum cryptalanysis, while the incoming post-quantum algorithms face uncertainty about both the underlying mathematics falling to classical algorithmic attacks as well as hardware and software implementations that have not had sufficient maturing time to rule out catestrophic implementation bugs. Unlike previous cryptographic algorithm migrations, the choice of when to migrate and which algorithms to migrate to, is not so clear.</t>
      <t>Cautious implementers may wish to combine cryptographic algorithms such that an attacker would need to break all of them in order to compromise the data being protected. Such mechanisms are referred to as Post-Quantum / Traditional Hybrids <xref target="I-D.driscoll-pqt-hybrid-terminology"/>.</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-KEM and ECDH-KEM. 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 cryptagraphic 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 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>KeyGen() -&gt; (pk, sk): A probabilistic key generation algorithm,
which generates a public key pk and a secret key sk.</t>
          </li>
          <li>
            <t>Encaps(pk) -&gt; (ct, ss): A probabilistic encapsulation algorithm,
which takes as input a public key pk and outputs a ciphertext ct
and shared secret ss.</t>
          </li>
          <li>
            <t>Decaps(sk, ct) -&gt; ss: A decapsulation algorithm, which takes as
input a secret key sk and ciphertext ct and outputs a shared
secret ss, 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 relies on the RSA-KEM construction defined in <xref target="I-D.ietf-lamps-rfc5990bis"/> and the Elliptic Curve DHKEM defined in <xref target="I-D.ounsworth-lamps-cms-dhkem"/>.</t>
        <t>A composite KEM allows two or more underlying key transport, key agreement, or KEM algorithms to be combined into a single cryptographic operation by performing each operation, transformed to a KEM as outline above, and using a specified combiner function to combine the two or more 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>
        </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>
          <figure anchor="alg-composite-encaps">
            <name>Composite Encaps(pk)</name>
            <artwork><![CDATA[
Encaps(pk):
  # Split the component public keys
  pk1 = pk[0]
  pk2 = pk[1]

  # Perform the respective component Encaps operations
  (ct1, ss1) = ComponentKEM1.Encaps(pk1)
  (ct2, ss2) = ComponentKEM2.Encaps(pk2)

  # combine
  ct = CompositeCiphertextValue(ct1, ct2)
  ss = Combiner(ct1, ss1, ct2, ss2, algName)

  return (ct, ss)
]]></artwork>
          </figure>
          <t>where <tt>Combiner(ct1, ss1, ct2, ss2, fixedInfo)</tt> is defined in <xref target="sec-kem-combiner"/> 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>
          <figure anchor="alg-composite-decaps">
            <name>Composite Decaps(sk, ct)</name>
            <artwork><![CDATA[
Decaps(sk, ct):
  # Sptil the component ciphertexts
  ct1 = ct[0]
  ct2 = ct[1]

  # Perform the respective component Decaps operations
  ss1 = ComponentKEM1.Encaps(sk1, ct1)
  ss2 = ComponentKEM2.Encaps(sk2, ct2)

  # combine
  ss = Combiner(ct1, ss1, ct2, ss2, algName)

  return ss
]]></artwork>
          </figure>
          <t>where <tt>Combiner(ct1, ss1, ct2, ss2, fixedInfo)</tt> is defined in {sec-kem-combiner}.</t>
        </section>
      </section>
      <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>
        <!-- End of Introduction 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-KMAC128</tt> is defined as:</t>
        <artwork><![CDATA[
pk-MLKEM512-ECDH-P256-KMAC128 PUBLIC-KEY ::=
  pk-CompositeKEM {
    id-MLKEM512-ECDH-P256-KMAC128,
    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>Usecases that require an interoperable 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 usecases 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 {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>
    <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>A composite KEM and <tt>CompositeCipherTextValue</tt> MAY be associated with a composite KEM public key, but MAY also be associated with multiple public keys from different sources, for example multiple X.509 certificates, or multiple cryptographic modules. In the latter case, composite KEMs MAY be used as the mechanism for carrying multiple ciphertexts, for example, in a non-composite hybrid encryption equivalent of those described for digital signatures in <xref target="I-D.becker-guthrie-noncomposite-hybrid-auth"/>.</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 probility.</t>
        <t>This document follows the construction of <xref target="I-D.ounsworth-cfrg-kem-combiners"/>, which is repeated here for clarity and simplified to take two imput shared secrets:</t>
        <figure anchor="code-generic-kem-combiner">
          <name>Generic KEM combiner construction</name>
          <artwork><![CDATA[
Combiner(ct1, ss1, ct2, ss2, fixedInfo) =
  KDF(counter || ct1 || ss1 || ct2 || ss2 || fixedInfo, 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>fixedInfo</tt> SHALL be the ASCII-encoded string name of the composite KEM algorithm as listed in <xref target="tab-kem-algs"/>.</t>
          </li>
          <li>
            <t><tt>counter</tt> SHALL be the fixed 32-bit value <tt>0x00000001</tt> which is placed here soly for the purposes of easy compliance with <xref target="SP.800-56Cr2"/>.</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>fixedInfo</tt>, and <tt>outputBits</tt> to be used.</t>
        <t>See <xref target="sec-cons-kem-combiner"/> for further discussion of the security coniserations of this KEM combiner.</t>
        <section anchor="named-kem-combiner-parameter-sets">
          <name>Named KEM Combiner parameter sets</name>
          <t>This specification references KEM combiner instantiations according to the following names:</t>
          <table anchor="tab-kem-combiners">
            <name>KEM Combiners</name>
            <thead>
              <tr>
                <th align="left">KEM Combiner Name</th>
                <th align="left">KDF</th>
                <th align="left">outputBits</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">KMAC128/256</td>
                <td align="left">KMAC128</td>
                <td align="left">256</td>
              </tr>
              <tr>
                <td align="left">KMAC256/384</td>
                <td align="left">KMAC256</td>
                <td align="left">384</td>
              </tr>
              <tr>
                <td align="left">KMAC256/512</td>
                <td align="left">KMAC256</td>
                <td align="left">512</td>
              </tr>
            </tbody>
          </table>
          <t>KMAC is defined in NIST SP 800-185 <xref target="SP800-185"/>. The <tt>KMAC(K, X, L, S)</tt> parameters are instantiated as follows:</t>
          <ul spacing="normal">
            <li>
              <t><tt>K</tt>: the ASCI value of the name of the Kem Type OID.</t>
            </li>
            <li>
              <t><tt>X</tt>: the message input to <tt>KDF()</tt>, as defined above.</t>
            </li>
            <li>
              <t><tt>L</tt>: integer representation of <tt>outputBits</tt>.</t>
            </li>
            <li>
              <t><tt>S</tt>: empty string.</t>
            </li>
          </ul>
          <t>BEGIN EDNOTE</t>
          <t>these choices are somewhat arbitrary but aiming to match security level of the input KEMs. Feedback welcome.</t>
          <ul spacing="normal">
            <li>
              <t>ML-KEM-512: KMAC128/256</t>
            </li>
            <li>
              <t>ML-KEM-768: KMAC256/384</t>
            </li>
            <li>
              <t>ML-KEM-1024 KMAC256/512</t>
            </li>
          </ul>
          <t>END EDNOTE</t>
        </section>
      </section>
    </section>
    <section anchor="example-kem-combiner-instantiation">
      <name>Example KEM Combiner instantiation</name>
      <t>For example, the KEM combiner used with the first entry of <xref target="tab-kem-algs"/>, <tt>id-MLKEM512-ECDH-P256-KMAC128</tt> would be:</t>
      <artwork><![CDATA[
Combiner(ct1, ss1, ct2, ss2, "id-MLKEM512-ECDH-P256-KMAC128") =
           KMAC128( 0x00000001 || ss_1 || ss_2 ||
              "id-MLKEM512-ECDH-P256-KMAC128", 256, "")
]]></artwork>
    </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">KEM Type OID</th>
            <th align="left">OID</th>
            <th align="left">First Algorithm</th>
            <th align="left">Second Algorithm</th>
            <th align="left">KEM Combiner</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">id-MLKEM512-ECDH-P256-KMAC128</td>
            <td align="left">&lt;CompKEM&gt;.1</td>
            <td align="left">MLKEM512</td>
            <td align="left">ECDH-P256</td>
            <td align="left">KMAC128/256</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM512-ECDH-brainpoolP256r1-KMAC128</td>
            <td align="left">&lt;CompKEM&gt;.2</td>
            <td align="left">MLKEM512</td>
            <td align="left">ECDH-brainpoolp256r1</td>
            <td align="left">KMAC128/256</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM512-X25519-KMAC128</td>
            <td align="left">&lt;CompKEM&gt;.3</td>
            <td align="left">MLKEM512</td>
            <td align="left">X25519</td>
            <td align="left">KMAC128/256</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM512-RSA2048-KMAC128</td>
            <td align="left">&lt;CompKEM&gt;.13</td>
            <td align="left">MLKEM512</td>
            <td align="left">RSA-KEM 2048</td>
            <td align="left">KMAC128/256</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM512-RSA3072-KMAC128</td>
            <td align="left">&lt;CompKEM&gt;.4</td>
            <td align="left">MLKEM512</td>
            <td align="left">RSA-KEM 3072</td>
            <td align="left">KMAC128/256</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM768-ECDH-P256-KMAC256</td>
            <td align="left">&lt;CompKEM&gt;.5</td>
            <td align="left">MLKEM768</td>
            <td align="left">ECDH-P256</td>
            <td align="left">KMAC256/384</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM768-ECDH-brainpoolP256r1-KMAC256</td>
            <td align="left">&lt;CompKEM&gt;.6</td>
            <td align="left">MLKEM768</td>
            <td align="left">ECDH-brainpoolp256r1</td>
            <td align="left">KMAC256/384</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM768-X25519-KMAC256</td>
            <td align="left">&lt;CompKEM&gt;.7</td>
            <td align="left">MLKEM768</td>
            <td align="left">X25519</td>
            <td align="left">KMAC256/384</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM1024-ECDH-P384-KMAC256</td>
            <td align="left">&lt;CompKEM&gt;.8</td>
            <td align="left">MLKEM1024</td>
            <td align="left">ECDH-P384</td>
            <td align="left">KMAC256/512</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM1024-ECDH-brainpoolP384r1-KMAC256</td>
            <td align="left">&lt;CompKEM&gt;.9</td>
            <td align="left">MLKEM1024</td>
            <td align="left">ECDH-brainpoolP384r1</td>
            <td align="left">KMAC256/512</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM1024-X448-KMAC256</td>
            <td align="left">&lt;CompKEM&gt;.10</td>
            <td align="left">MLKEM1024</td>
            <td align="left">X448</td>
            <td align="left">KMAC256/512</td>
          </tr>
        </tbody>
      </table>
      <t>The table above contains everything needed to implement the listed explicit composite algorithms, with the exception of some special notes found below in this section. See the ASN.1 module in section <xref target="sec-asn1-module"/> for the explicit definitions of the above Composite signature algorithms.</t>
      <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-KEM</em>: <xref target="I-D.ietf-lamps-rfc5990bis"/></t>
        </li>
        <li>
          <t><em>X25519 / X448</em>: <xref target="RFC8410"/></t>
        </li>
      </ul>
      <t>Note that all ECDH as well as X25519 and X448 algorithms MUST be promoted into KEMs according to <xref target="I-D.ounsworth-lamps-cms-dhkem"/>.</t>
      <t>EDNOTE: I believe that <xref target="SP.800-56Ar3"/> and <xref target="BSI-ECC"/> give equivalent and interoperable algorithms, so maybe this is extranuous detail to include?</t>
      <t>The "KEM Combiner" column refers to the definitions in <xref target="sec-kem-combiner"/>.</t>
      <section anchor="rsa-kem-parameters">
        <name>RSA-KEM Parameters</name>
        <t>Use of RSA-KEM <xref target="I-D.ietf-lamps-rfc5990bis"/> within <tt>id-MLKEM512-RSA2048-KMAC128</tt> and <tt>id-MLKEM512-RSA3072-KMAC128</tt> requires additional specification.</t>
        <t>The RSA component keys MUST be generated at the 2048-bit and 3072-bit security level respectively.</t>
        <t>As with the other composite KEM algorithms, when <tt>id-MLKEM512-RSA2048-KMAC128</tt> or <tt>id-MLKEM512-RSA3072-KMAC128</tt> is used in an AlgorithmIdentifier, the parameters MUST be absent. The RSA-KEM SHALL be instantiated with the following parameters:</t>
        <table anchor="rsa-kem-params2048">
          <name>RSA-KEM 2048 Parameters</name>
          <thead>
            <tr>
              <th align="left">RSA-KEM Parameter</th>
              <th align="left">Value</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">keyDerivationFunction</td>
              <td align="left">kda-kdf3 with id-sha3-256</td>
            </tr>
            <tr>
              <td align="left">keyLength</td>
              <td align="left">128</td>
            </tr>
          </tbody>
        </table>
        <t>where:</t>
        <ul spacing="normal">
          <li>
            <t><tt>kda-kdf3</tt> is defined in <xref target="I-D.ietf-lamps-rfc5990bis"/> which references it from <xref target="ANS-X9.44"/>.</t>
          </li>
          <li>
            <t><tt>mda-shake256</tt> is defined in <xref target="I-D.housley-lamps-cms-sha3-hash"/>.</t>
          </li>
        </ul>
      </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 } 
        }



--
-- Composite KEM Algorithms
--


-- TODO: OID to be replaced by IANA
id-MLKEM512-ECDH-P256-KMAC128 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-KMAC128 PUBLIC-KEY ::= 
  pk-CompositeKEM { 
    id-MLKEM512-ECDH-P256-KMAC128, 
    OCTET STRING, ECPoint }

kema-MLKEM512-ECDH-P256-KMAC128 KEM-ALGORITHM ::= 
    kema-CompositeKEM{
      id-MLKEM512-ECDH-P256-KMAC128, 
      pk-MLKEM512-ECDH-P256-KMAC128 }


-- TODO: OID to be replaced by IANA
id-MLKEM512-ECDH-brainpoolP256r1-KMAC128 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-KMAC128 PUBLIC-KEY ::= 
  pk-CompositeKEM {
    id-MLKEM512-ECDH-brainpoolP256r1-KMAC128, 
    OCTET STRING, ECPoint }

kema-MLKEM512-ECDH-brainpoolP256r1-KMAC128 KEM-ALGORITHM ::= 
    kema-CompositeKEM{
      id-MLKEM512-ECDH-brainpoolP256r1-KMAC128, 
      pk-MLKEM512-ECDH-brainpoolP256r1-KMAC128 }



-- TODO: OID to be replaced by IANA
id-MLKEM512-X25519-KMAC128 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-KMAC128 PUBLIC-KEY ::= 
  pk-CompositeKEM {
    id-MLKEM512-X25519-KMAC128, 
    OCTET STRING, OCTET STRING }

kema-MLKEM512-X25519-KMAC128 KEM-ALGORITHM ::= 
    kema-CompositeKEM{
      id-MLKEM512-X25519-KMAC128, 
      pk-MLKEM512-X25519-KMAC128 }



-- TODO: OID to be replaced by IANA
id-MLKEM512-RSA2048-KMAC128 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-KMAC128 PUBLIC-KEY ::= 
  pk-CompositeKEM { 
    id-MLKEM512-RSA2048-KMAC128, 
    OCTET STRING, RSAPublicKey }

kema-MLKEM512-RSA2048-KMAC128 KEM-ALGORITHM ::= 
    kema-CompositeKEM{
      id-MLKEM512-RSA2048-KMAC128, 
      pk-MLKEM512-RSA2048-KMAC128 }



-- TODO: OID to be replaced by IANA
id-MLKEM512-RSA3072-KMAC128 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-KMAC128 PUBLIC-KEY ::= 
  pk-CompositeKEM {
    id-MLKEM512-RSA3072-KMAC128, 
    OCTET STRING, RSAPublicKey }

kema-MLKEM512-RSA3072-KMAC128 KEM-ALGORITHM ::=
    kema-CompositeKEM{
      id-MLKEM512-RSA3072-KMAC128, 
      pk-MLKEM512-RSA3072-KMAC128 }


-- TODO: OID to be replaced by IANA
id-MLKEM768-ECDH-P256-KMAC256 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-KMAC256 PUBLIC-KEY ::= 
  pk-CompositeKEM {
    id-MLKEM768-ECDH-P256-KMAC256, 
    OCTET STRING, ECPoint }

kema-MLKEM768-ECDH-P256-KMAC256 KEM-ALGORITHM ::= 
    kema-CompositeKEM{
      id-MLKEM768-ECDH-P256-KMAC256, 
      pk-MLKEM768-ECDH-P256-KMAC256 }


-- TODO: OID to be replaced by IANA
id-MLKEM768-ECDH-brainpoolP256r1-KMAC256 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-KMAC256 PUBLIC-KEY ::= 
  pk-CompositeKEM {
    id-MLKEM768-ECDH-brainpoolP256r1-KMAC256, 
    OCTET STRING, ECPoint }

kema-MLKEM768-ECDH-brainpoolP256r1-KMAC256 KEM-ALGORITHM ::= 
    kema-CompositeKEM{
      id-MLKEM768-ECDH-brainpoolP256r1-KMAC256, 
      pk-MLKEM768-ECDH-brainpoolP256r1-KMAC256 }


-- TODO: OID to be replaced by IANA
id-MLKEM768-X25519-KMAC256 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-KMAC256 PUBLIC-KEY ::= 
  pk-CompositeKEM {
    id-MLKEM768-X25519-KMAC256, 
    OCTET STRING, OCTET STRING }

kema-MLKEM768-X25519-KMAC256 KEM-ALGORITHM ::= 
    kema-CompositeKEM{
      id-MLKEM768-X25519-KMAC256, 
      pk-MLKEM768-X25519-KMAC256 }



-- TODO: OID to be replaced by IANA
id-MLKEM1024-ECDH-P384-KMAC256 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-KMAC256 PUBLIC-KEY ::= 
  pk-CompositeKEM {
    id-MLKEM1024-ECDH-P384-KMAC256, 
    OCTET STRING, ECPoint }

kema-MLKEM1024-ECDH-P384-KMAC256 KEM-ALGORITHM ::= 
    kema-CompositeKEM{
      id-MLKEM1024-ECDH-P384-KMAC256, 
      pk-MLKEM1024-ECDH-P384-KMAC256 }


-- TODO: OID to be replaced by IANA
id-MLKEM1024-ECDH-brainpoolP384r1-KMAC256 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-KMAC256 PUBLIC-KEY ::= 
  pk-CompositeKEM{
    id-MLKEM1024-ECDH-brainpoolP384r1-KMAC256, 
    OCTET STRING, ECPoint }

kema-MLKEM1024-ECDH-brainpoolP384r1-KMAC256 KEM-ALGORITHM ::= 
    kema-CompositeKEM{
      id-MLKEM1024-ECDH-brainpoolP384r1-KMAC256, 
      pk-MLKEM1024-ECDH-brainpoolP384r1-KMAC256 }
      

-- TODO: OID to be replaced by IANA
id-MLKEM1024-X448-KMAC256 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-KMAC256 PUBLIC-KEY ::= 
  pk-CompositeKEM {
    id-MLKEM1024-X448-KMAC256, 
    OCTET STRING, OCTET STRING }

kema-MLKEM1024-X448-KMAC256 KEM-ALGORITHM ::= 
    kema-CompositeKEM{
      id-MLKEM1024-X448-KMAC256, 
      pk-MLKEM1024-X448-KMAC256 }

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-KMAC128
              </t>
              <ul spacing="normal">
                <li>
                  <t>Decimal: IANA Assigned</t>
                </li>
                <li>
                  <t>Description: id-MLKEM512-ECDH-P256-KMAC128</t>
                </li>
                <li>
                  <t>References: This Document</t>
                </li>
              </ul>
            </li>
            <li>
              <t>id-MLKEM512-ECDH-brainpoolP256r1-KMAC128
              </t>
              <ul spacing="normal">
                <li>
                  <t>Decimal: IANA Assigned</t>
                </li>
                <li>
                  <t>Description: id-MLKEM512-ECDH-brainpoolP256r1-KMAC128</t>
                </li>
                <li>
                  <t>References: This Document</t>
                </li>
              </ul>
            </li>
            <li>
              <t>id-MLKEM512-X25519-KMAC128
              </t>
              <ul spacing="normal">
                <li>
                  <t>Decimal: IANA Assigned</t>
                </li>
                <li>
                  <t>Description: id-MLKEM512-X25519-KMAC128</t>
                </li>
                <li>
                  <t>References: This Document</t>
                </li>
              </ul>
            </li>
            <li>
              <t>id-MLKEM768-RSA3072-KMAC256
              </t>
              <ul spacing="normal">
                <li>
                  <t>Decimal: IANA Assigned</t>
                </li>
                <li>
                  <t>Description: id-MLKEM768-3072-KMAC256</t>
                </li>
                <li>
                  <t>References: This Document</t>
                </li>
              </ul>
            </li>
            <li>
              <t>id-MLKEM768-ECDH-P256-KMAC256
              </t>
              <ul spacing="normal">
                <li>
                  <t>Decimal: IANA Assigned</t>
                </li>
                <li>
                  <t>Description: id-MLKEM768-ECDH-P256-KMAC256</t>
                </li>
                <li>
                  <t>References: This Document</t>
                </li>
              </ul>
            </li>
            <li>
              <t>id-MLKEM768-ECDH-brainpoolP256r1-KMAC256
              </t>
              <ul spacing="normal">
                <li>
                  <t>Decimal: IANA Assigned</t>
                </li>
                <li>
                  <t>Description: id-MLKEM768-ECDH-brainpoolP256r1-KMAC256</t>
                </li>
                <li>
                  <t>References: This Document</t>
                </li>
              </ul>
            </li>
            <li>
              <t>id-MLKEM768-X25519-KMAC256
              </t>
              <ul spacing="normal">
                <li>
                  <t>Decimal: IANA Assigned</t>
                </li>
                <li>
                  <t>Description: id-MLKEM768-X25519-KMAC256</t>
                </li>
                <li>
                  <t>References: This Document</t>
                </li>
              </ul>
            </li>
            <li>
              <t>id-MLKEM1024-ECDH-P384-KMAC256
              </t>
              <ul spacing="normal">
                <li>
                  <t>Decimal: IANA Assigned</t>
                </li>
                <li>
                  <t>Description: id-MLKEM1024-ECDH-P384-KMAC256</t>
                </li>
                <li>
                  <t>References: This Document</t>
                </li>
              </ul>
            </li>
            <li>
              <t>id-MLKEM1024-ECDH-brainpoolP384r1-KMAC256
              </t>
              <ul spacing="normal">
                <li>
                  <t>Decimal: IANA Assigned</t>
                </li>
                <li>
                  <t>Description: id-MLKEM1024-ECDH-brainpoolP384r1-KMAC256</t>
                </li>
                <li>
                  <t>References: This Document</t>
                </li>
              </ul>
            </li>
            <li>
              <t>id-MLKEM1024-X448-KMAC256
              </t>
              <ul spacing="normal">
                <li>
                  <t>Decimal: IANA Assigned</t>
                </li>
                <li>
                  <t>Description: id-MLKEM1024-X448-KMAC256</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="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 indpendently from that of their component algorithms. For example a cryptographic policy might continue to allow <tt>id-MLKEM512-ECDH-P256-KMAC128</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</name>
        <t>This document uses directly the KEM Combiner defined in <xref target="I-D.ounsworth-cfrg-kem-combiners"/> and therefore IND-CCA2 of any of its ingredient KEMs, i.e. the newly formed combined KEM is IND-CCA2 secure as long as at least one of the ingredient KEMs is</t>
        <t><xref target="I-D.ounsworth-cfrg-kem-combiners"/> provides two different constructions depending on the properties of the component KEMs:</t>
        <ul empty="true">
          <li>
            <t>If both the secret share <tt>ss_i</tt> and the ciphertext <tt>ct_i</tt> are constant length, then k_i MAY be constructed concatenating the two values.
If <tt>ss_i</tt> or <tt>ct_i</tt> are not guaranteed to have constant length, it is REQUIRED to append the rlen encoded length when concatenating, prior to inclusion in the overall construction.</t>
          </li>
        </ul>
        <t>The component KEMs used in this specification are RSA-KEM <xref target="I-D.ietf-lamps-rfc5990bis"/>, ECDH KEM <xref target="I-D.ounsworth-lamps-cms-dhkem"/> and ML-KEM <xref target="FIPS.203-ipd"/> all of which meet the criteria of having constant-length shared secrets and ciphertexts and therefore we justify using the simpler construction that omits the length tag.</t>
        <!-- End of Security Considerations section -->

</section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <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="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="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="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-rfc5990bis" target="https://datatracker.ietf.org/doc/html/draft-ietf-lamps-rfc5990bis-01" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-lamps-rfc5990bis-01.xml">
          <front>
            <title>Use of the RSA-KEM Algorithm in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="Russ Housley" initials="R." surname="Housley">
              <organization>Vigil Security</organization>
            </author>
            <author fullname="Sean Turner" initials="S." surname="Turner">
              <organization>sn3rd</organization>
            </author>
            <date day="12" month="September" year="2023"/>
            <abstract>
              <t>The RSA Key Encapsulation Mechanism (RSA-KEM) Algorithm is a one-pass (store-and-forward) cryptographic mechanism for an originator to securely send keying material to a recipient using the recipient's RSA public key. The RSA-KEM Algorithm is specified in Clause 11.5 of ISO/IEC: 18033-2:2006. This document specifies the conventions for using the RSA-KEM Algorithm with the Cryptographic Message Syntax (CMS) using KEMRecipientInfo as specified in draft-ietf-lamps-cms- kemri.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-rfc5990bis-01"/>
        </reference>
        <reference anchor="I-D.ounsworth-lamps-cms-dhkem" target="https://datatracker.ietf.org/doc/html/draft-ounsworth-lamps-cms-dhkem-00" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ounsworth-lamps-cms-dhkem-00.xml">
          <front>
            <title>Use of the DH-Based KEM (DHKEM) in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="Mike Ounsworth" initials="M." surname="Ounsworth">
              <organization>Entrust Limited</organization>
            </author>
            <author fullname="John Gray" initials="J." surname="Gray">
              <organization>Entrust Limited</organization>
            </author>
            <author fullname="Russ Housley" initials="R." surname="Housley">
              <organization>Vigil Security, LLC</organization>
            </author>
            <date day="24" month="August" year="2023"/>
            <abstract>
              <t>The DHKEM Algorithm is a one-pass (store-and-forward) mechanism for establishing keying data to a recipient using the recipient's Diffie- Hellman or elliptic curve Diffie-Hellman public key. This document defines a mechanism to wrap Ephemeral-Static (E-S) Diffie-Hellman (DH) and Elliptic Curve Diffie-Hellman (ECDH) such that it can be used in KEM interfaces within the Cryptographic Message Syntax (CMS). This is a sister document to RSA-KEM [RFC5990] and simplifies future cryptographic protocol design by only needing to handle KEMs at the protocol level.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ounsworth-lamps-cms-dhkem-00"/>
        </reference>
        <reference anchor="I-D.housley-lamps-cms-sha3-hash" target="https://datatracker.ietf.org/doc/html/draft-housley-lamps-cms-sha3-hash-01" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-housley-lamps-cms-sha3-hash-01.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="2" month="October" year="2023"/>
            <abstract>
              <t>This document describes the conventions for using the four one-way hash functions in the SHA3 family with the Cryptographic Message Syntax (CMS).</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-housley-lamps-cms-sha3-hash-01"/>
        </reference>
        <reference anchor="ANS-X9.44">
          <front>
            <title>Public Key Cryptography for the Financial Services Industry -- Key Establishment Using Integer Factorization Cryptography</title>
            <author>
              <organization>American National Standards Institute</organization>
            </author>
            <date year="2007"/>
          </front>
          <seriesInfo name="American National Standard X9.44" value=""/>
        </reference>
        <reference anchor="SP800-185" target="https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-185.pdf">
          <front>
            <title>SHA-3 Derived Functions: cSHAKE, KMAC, TupleHash and ParallelHash</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date year="2016" month="December"/>
          </front>
        </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>
        <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="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="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="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="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.ounsworth-cfrg-kem-combiners" target="https://datatracker.ietf.org/doc/html/draft-ounsworth-cfrg-kem-combiners-04" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ounsworth-cfrg-kem-combiners-04.xml">
          <front>
            <title>Combiner function for hybrid key encapsulation mechanisms (Hybrid KEMs)</title>
            <author fullname="Mike Ounsworth" initials="M." surname="Ounsworth">
              <organization>Entrust Limited</organization>
            </author>
            <author fullname="Aron Wussler" initials="A." surname="Wussler">
              <organization>Proton AG</organization>
            </author>
            <author fullname="Stavros Kousidis" initials="S." surname="Kousidis">
              <organization>BSI</organization>
            </author>
            <date day="8" month="July" year="2023"/>
            <abstract>
              <t>The migration to post-quantum cryptography often calls for performing multiple key encapsulations in parallel and then combining their outputs to derive a single shared secret. This document defines a comprehensible and easy to implement Keccak- based KEM combiner to join an arbitrary number of key shares, that is compatible with NIST SP 800-56Cr2 [SP800-56C] when viewed as a key derivation function. The combiners defined here are practical split- key PRFs and are CCA-secure as long as at least one of the ingredient KEMs is.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ounsworth-cfrg-kem-combiners-04"/>
        </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.becker-guthrie-noncomposite-hybrid-auth" target="https://datatracker.ietf.org/doc/html/draft-becker-guthrie-noncomposite-hybrid-auth-00" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-becker-guthrie-noncomposite-hybrid-auth-00.xml">
          <front>
            <title>Non-Composite Hybrid Authentication in PKIX and Applications to Internet Protocols</title>
            <author fullname="Alison Becker" initials="A." surname="Becker">
              <organization>National Security Agency</organization>
            </author>
            <author fullname="Rebecca Guthrie" initials="R." surname="Guthrie">
              <organization>National Security Agency</organization>
            </author>
            <author fullname="Michael J. Jenkins" initials="M. J." surname="Jenkins">
              <organization>National Security Agency</organization>
            </author>
            <date day="22" month="March" year="2022"/>
            <abstract>
              <t>The advent of cryptographically relevant quantum computers (CRQC) will threaten the public key cryptography that is currently in use in today's secure internet protocol infrastructure. To address this, organizations such as the National Institute of Standards and Technology (NIST) will standardize new post-quantum cryptography (PQC) that is resistant to attacks by both classical and quantum computers. After PQC algorithms are standardized, the widespread implementation of this cryptography will be contingent upon adapting current protocols to accommodate PQC. Hybrid solutions are one way to facilitate the transition between traditional and PQ algorithms: they use both a traditional and a PQ algorithm in order to perform encryption or authentication, with the guarantee that the given security property will still hold in the case that one algorithm fails. Hybrid solutions can be constructed in many ways, and the cryptographic community has already begun to explore this space. This document introduces non-composite hybrid authentication, which requires updates at the protocol level and limits impact to the certificate-issuing infrastructure.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-becker-guthrie-noncomposite-hybrid-auth-00"/>
        </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>
      </references>
    </references>
    <section anchor="appdx-samples">
      <name>Samples</name>
      <t>TBD</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>Implementors 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 algorith 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 interoperate 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-acknowledgements">
      <name>Contributors and Acknowledgements</name>
      <t>This document incorporates contributions and comments from a large group of experts. The Editors would especially like to acknowledge the expertise and tireless dedication of the following people, who attended many long meetings and generated millions of bytes of electronic mail and VOIP traffic over the past year in pursuit of this document:</t>
      <t>Serge Mister (Entrust), Ali Noman (Entrust), Scott Fluhrer (Cisco), Jan Klaussner (D-Trust), Max Pala (CableLabs), 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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

-->

</rfc>