<?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-01" 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-01"/>
    <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">
      <name>Changes in version -01</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 2048</td>
            <td align="left">KMAC128/256</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM768-RSA3072-KMAC256</td>
            <td align="left">&lt;CompKEM&gt;.4</td>
            <td align="left">MLKEM768</td>
            <td align="left">RSA-KEM 3072</td>
            <td align="left">KMAC256/384</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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
nI6G/owstSfji96muIajHIwV4wYuKsK3CoQ3tlF1Vblimtut/IWRNQ4bYHYc
SR1S+R1xXBTZOKZ8UMc20HlE4uz4L05zsXFkdBbV9uPSigxfAthDJDmmqld3
1XTiMeWuWLOEMmX0noKhNUrsW8n5EoyWStOmHI3vhLuJGE8qR5ziQqc7UpUh
PBk1QiMt5LMn1W127tNgnB1lzgP9DphEchhtEi8KXhXkfNnjkGyXVLIyJw5L
STci4Rg0PM31KslDOSJ0HTYbXFuEfyRXmU5lGYOEZznhe8aoQip5eKw6KupG
+ZenwHl98eJI9D+qs0/QJ2YKMtIqfj3/XFGDsEHhkVDIS73R5SjKqmkNa1v0
9rp7bWOLdXc73c5+W+z1Xrw0D3udvc4Brx38Yn/34MB+sdfpddgLPvMyUypA
ewnsXhpSzfimLf4mHVmZa1FdCpy7t95QMAK10oisLoIsYgFzCk6pUdmuGiCI
Khg3go+8b53hvF6famY8L0ihulaY57M2czDo3vPT/ql49RcQmDnvs2g14VC6
NiWasMm3MxOU0UMnpnSdDteqv9V4bXtIn8olUP4bEh/3/+NSfzBBt13hno5d
6JMP/AJattV5KYFRLRXLMV0nYISu7TsJm7um5047jx3uIdErJtGaoMJXEKgS
IQIf20aISFiAyxFWnHCdPuU/V3sE7BBbPVo3gMxIsY4KNIyxLr7DURETJzha
uJETFTSBDoLjt9+fXw6ufjgjPH2ydeXq0R369+fjtz/1124/2nbNARnhQzUU
n0QTYBzXIby7lnxlMIXgtbt8lfAmv74yX3NeWZZigkfqJdM5G3LqUctJhWhy
ATuAr7IabgDxrIhcKHtd03HtjNbb546MYcTU8jca9kev7P6oMnVCaxBxsv3a
4CInWeNnZF42fGsSDF3VTVFczq2iBIpsmY8xGu/aJeZDTtt0E20ol2TNaSI2
RwqVpolyAWPeFMpv+9Mo9HRduWeTuMiFw1IUdEzUDGap7oHbZpMixW0+Mwgn
LbrnSVBW34aJMnJK3MJzjlZQiECd6TWn8Qqbq/PAekHGu0Va6b1PK2jsdibw
/vnp+ZHO6NAVoe7u7joScBB25BJ8W/zPs4VbGMs7TuYeJMODzlKdSQNXbxmt
nEoPvTYeWJuVJsCjDZyRnIV4fJVS9xJqgjUykEKK/RCtfwc/W0zCOFnyNg/n
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

-->

</rfc>