<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.5 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-lamps-pq-composite-kem-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.4 -->
  <front>
    <title abbrev="Composite KEMs">Composite ML-KEM for Use in the Internet X.509 Public Key Infrastructure and CMS</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-pq-composite-kem-03"/>
    <author initials="M." surname="Ounsworth" fullname="Mike Ounsworth">
      <organization abbrev="Entrust">Entrust Limited</organization>
      <address>
        <postal>
          <street>2500 Solandt Road -- Suite 100</street>
          <city>Ottawa, Ontario</city>
          <code>K2K 3G5</code>
          <country>Canada</country>
        </postal>
        <email>mike.ounsworth@entrust.com</email>
      </address>
    </author>
    <author initials="J." surname="Gray" fullname="John Gray">
      <organization abbrev="Entrust">Entrust Limited</organization>
      <address>
        <postal>
          <street>2500 Solandt Road -- Suite 100</street>
          <city>Ottawa, Ontario</city>
          <code>K2K 3G5</code>
          <country>Canada</country>
        </postal>
        <email>john.gray@entrust.com</email>
      </address>
    </author>
    <author initials="M." surname="Pala" fullname="Massimiliano Pala">
      <organization>OpenCA Labs</organization>
      <address>
        <postal>
          <street>858 Coal Creek Cir</street>
          <city>Louisville, Colorado</city>
          <code>80027</code>
          <country>United States of America</country>
        </postal>
        <email>director@openca.org</email>
      </address>
    </author>
    <author initials="J." surname="Klaussner" fullname="Jan Klaussner" asciiFullname="Jan Klaussner">
      <organization>D-Trust GmbH</organization>
      <address>
        <postal>
          <street>Kommandantenstr. 15</street>
          <city>Berlin</city>
          <code>10969</code>
          <country>Germany</country>
        </postal>
        <email>jan.klaussner@d-trust.net</email>
      </address>
    </author>
    <author initials="S." surname="Fluhrer" fullname="Scott Fluhrer">
      <organization>Cisco Systems</organization>
      <address>
        <email>sfluhrer@cisco.com</email>
      </address>
    </author>
    <date year="2024" month="March" day="02"/>
    <area>Security</area>
    <workgroup>LAMPS</workgroup>
    <keyword>X.509</keyword>
    <keyword>CMS</keyword>
    <keyword>Post-Quantum</keyword>
    <keyword>KEM</keyword>
    <abstract>
      <?line 178?>

<t>This document defines Post-Quantum / Traditional composite Key Encapsulation Mechanism (KEM) algorithms suitable for use within X.509, 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="I-D.ietf-lamps-rfc5990bis"/> 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>
    <?line 187?>

<section anchor="changes-in-version-03">
      <name>Changes in version -03</name>
      <ul spacing="normal">
        <li>
          <t>Changed the title to reflect that it is specific to ML-KEM.</t>
        </li>
        <li>
          <t>Added Max Pala, Jan Klaussner, and Scott Fluhrer as authors.</t>
        </li>
        <li>
          <t>Added text to Introduction to justify where and why this mechanism would be used.</t>
        </li>
        <li>
          <t>Added section "Use in CMS".</t>
        </li>
        <li>
          <t>Switched all KDFs for both the combiner and the CMS KEMRI to use id-kmac128 or id-kmac256 from I-D.ietf-lamps-cms-sha3-hash.</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 catastrophic 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>In particular, certain jurisdictions are recommending or requiring that PQC lattice schemes only be used within a PQ/T hybrid. As an example, we point to <xref target="BSI2021"/> which includes the following recommendation:</t>
      <t>"Therefore, quantum computer-resistant methods should
not be used alone - at least in a transitional period - but
only in hybrid mode, i.e. in combination with a classical
method. For this purpose, protocols must be modified
or supplemented accordingly. In addition, public key
infrastructures, for example, must also be adapted"</t>
      <t>In addition, <xref target="BSI2021"/> specifically references this specification as a concrete example of hybrid X.509 certificates.</t>
      <t>A more recent example is <xref target="ANSSI2024"/>, a document co-authored by French Cybersecurity Agency (ANSSI),
Federal Office for Information Security (BSI), Netherlands National Communications Security Agency (NLNCSA), and
Swedish National Communications Security Authority, Swedish Armed Forces which makes the following statement:</t>
      <t>"In light of the urgent need to stop relying only on quantum-vulnerable public-key cryptography for key establishment, the clear priority should therefore be the migration to post-quantum cryptography in hybrid solutions"</t>
      <t>This specification represents the straightforward implementation of the hybrid solutions called for by European cyber security agencies.</t>
      <t>PQ/T Hybrid cryptography can, in general, provide solutions to two migration problems:</t>
      <ul spacing="normal">
        <li>
          <t>Algorithm strength uncertainty: During the transition period, some post-quantum signature and encryption algorithms will not be fully trusted, while also the trust in legacy public key algorithms will start to erode.  A relying party may learn some time after deployment that a public key algorithm has become untrustworthy, but in the interim, they may not know which algorithm an adversary has compromised.</t>
        </li>
        <li>
          <t>Ease-of-migration: During the transition period, systems will require mechanisms that allow for staged migrations from fully classical to fully post-quantum-aware cryptography.</t>
        </li>
      </ul>
      <t>This document defines a specific instantiation of the PQ/T Hybrid paradigm called "composite" where multiple cryptographic algorithms are combined to form a single key encapsulation mechanism (KEM) key and ciphertext such that they can be treated as a single atomic algorithm at the protocol level. Composite algorithms address algorithm strength uncertainty because the composite algorithm remains strong so long as one of its components remains strong. Concrete instantiations of composite KEM algorithms are provided based on ML-KEM, RSA-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 cryptographic operations.</t>
      </section>
      <section anchor="composite-design-philosophy">
        <name>Composite Design Philosophy</name>
        <t><xref target="I-D.driscoll-pqt-hybrid-terminology"/> defines composites as:</t>
        <ul empty="true">
          <li>
            <t><em>Composite Cryptographic Element</em>:  A cryptographic element that
     incorporates multiple component cryptographic elements of the same
     type in a multi-algorithm scheme.</t>
          </li>
        </ul>
        <t>Composite keys as defined here follow this definition and should be regarded as a single key that performs a single cryptographic operation such 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 anchor="key-usage-bits">
        <name>Key Usage Bits</name>
        <t>For protocols such as X.509 <xref target="RFC5280"/> that specify key usage along with the public key, then the composite public key associated with a composite KEM algorithm MUST contain only a <tt>keyEncipherment</tt> key usage, all other key usages MUST NOT be used.
This is because the composite public key can only be used in situations
that are appropriate for both component algorithms, so even if the
classical component key supports both signing and encryption,
the post-quantum algorithms do not.</t>
      </section>
    </section>
    <section anchor="composite-kem-structures">
      <name>Composite KEM Structures</name>
      <section anchor="sec-kema-CompositeKEM">
        <name>kema-CompositeKEM</name>
        <t>The ASN.1 algorithm object for a composite KEM is:</t>
        <artwork><![CDATA[
kema-CompositeKEM {
  OBJECT IDENTIFIER:id,
    PUBLIC-KEY:publicKeyType }
    KEM-ALGORITHM ::= {
         IDENTIFIER id
         VALUE CompositeCiphertextValue
         PARAMS ARE absent
         PUBLIC-KEYS { publicKeyType }
        }
]]></artwork>
      </section>
      <section anchor="sec-CompositeCiphertextValue">
        <name>CompositeCiphertextValue</name>
        <t>The compositeCipherTextValue is a concatenation of the ciphertexts of the
underlying component algorithms.  It is represented in ASN.1 as follows:</t>
        <artwork><![CDATA[
CompositeCiphertextValue ::= SEQUENCE SIZE (2) OF OCTET STRING
]]></artwork>
        <t>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 probability.</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 input 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 solely 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 considerations of this KEM combiner.</t>
        <section anchor="sec-kmac-kdf">
          <name>KMAC-KDF</name>
          <t>KMAC128-KDF and KMAC256-KDF are KMAC-based KDFs specified for use in CMS in <xref target="I-D.ietf-lamps-cms-sha3-hash"/>.  Here, KMAC# indicates the use of either KMAC128-KDF or KMAC256-KDF.</t>
          <t>KMAC#(K, X, L, S) takes the following parameters:</t>
          <ul empty="true">
            <li>
              <t>K: the input key-derivation key.  In this document this is the shared secret outputted from the Encapsulate() or Decapsulate() functions.  This corresponds to the IKM KDF input from Section 5 of <xref target="I-D.ietf-lamps-cms-kemri"/>.</t>
            </li>
          </ul>
          <ul empty="true">
            <li>
              <t>X: the context, which is the info KDF input.</t>
            </li>
          </ul>
          <ul empty="true">
            <li>
              <t>L: the output length, in bits.</t>
            </li>
          </ul>
          <ul empty="true">
            <li>
              <t>S: the optional customization label.  In this document this parameter is unused, that is it is the zero-length string "".</t>
            </li>
          </ul>
          <t>The object identifier for KMAC128-KDF is id-kmac128 as defined in <xref target="I-D.ietf-lamps-cms-sha3-hash"/>.</t>
          <t>The object identifier for KMAC256-KDF is id-kmac256 as defined in <xref target="I-D.ietf-lamps-cms-sha3-hash"/>.</t>
          <t>Since the customization label to KMAC# is not used, the parameter field MUST be absent when id-kmac128 or id-kmac256 is used as part of an algorithm identifier specifying the KDF to use for ML-KEM in KemRecipientInfo.</t>
          <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">id-kmac128</td>
                <td align="left">256</td>
              </tr>
              <tr>
                <td align="left">KMAC256/384</td>
                <td align="left">id-kmac256</td>
                <td align="left">384</td>
              </tr>
              <tr>
                <td align="left">KMAC256/512</td>
                <td align="left">id-kmac256</td>
                <td align="left">512</td>
              </tr>
            </tbody>
          </table>
          <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">Composite KEM OID</th>
            <th align="left">OID</th>
            <th align="left">First Algorithm</th>
            <th align="left">Second Algorithm</th>
            <th align="left">KEM Combiner</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">id-MLKEM512-ECDH-P256-KMAC128</td>
            <td align="left">&lt;CompKEM&gt;.1</td>
            <td align="left">MLKEM512</td>
            <td align="left">ECDH-P256</td>
            <td align="left">KMAC128/256</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM512-ECDH-brainpoolP256r1-KMAC128</td>
            <td align="left">&lt;CompKEM&gt;.2</td>
            <td align="left">MLKEM512</td>
            <td align="left">ECDH-brainpoolp256r1</td>
            <td align="left">KMAC128/256</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM512-X25519-KMAC128</td>
            <td align="left">&lt;CompKEM&gt;.3</td>
            <td align="left">MLKEM512</td>
            <td align="left">X25519</td>
            <td align="left">KMAC128/256</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM512-RSA2048-KMAC128</td>
            <td align="left">&lt;CompKEM&gt;.13</td>
            <td align="left">MLKEM512</td>
            <td align="left">RSA-KEM 2048</td>
            <td align="left">KMAC128/256</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM512-RSA3072-KMAC128</td>
            <td align="left">&lt;CompKEM&gt;.4</td>
            <td align="left">MLKEM512</td>
            <td align="left">RSA-KEM 3072</td>
            <td align="left">KMAC128/256</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM768-ECDH-P256-KMAC256</td>
            <td align="left">&lt;CompKEM&gt;.5</td>
            <td align="left">MLKEM768</td>
            <td align="left">ECDH-P256</td>
            <td align="left">KMAC256/384</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM768-ECDH-brainpoolP256r1-KMAC256</td>
            <td align="left">&lt;CompKEM&gt;.6</td>
            <td align="left">MLKEM768</td>
            <td align="left">ECDH-brainpoolp256r1</td>
            <td align="left">KMAC256/384</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM768-X25519-KMAC256</td>
            <td align="left">&lt;CompKEM&gt;.7</td>
            <td align="left">MLKEM768</td>
            <td align="left">X25519</td>
            <td align="left">KMAC256/384</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM1024-ECDH-P384-KMAC256</td>
            <td align="left">&lt;CompKEM&gt;.8</td>
            <td align="left">MLKEM1024</td>
            <td align="left">ECDH-P384</td>
            <td align="left">KMAC256/512</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM1024-ECDH-brainpoolP384r1-KMAC256</td>
            <td align="left">&lt;CompKEM&gt;.9</td>
            <td align="left">MLKEM1024</td>
            <td align="left">ECDH-brainpoolP384r1</td>
            <td align="left">KMAC256/512</td>
          </tr>
          <tr>
            <td align="left">id-MLKEM1024-X448-KMAC256</td>
            <td align="left">&lt;CompKEM&gt;.10</td>
            <td align="left">MLKEM1024</td>
            <td align="left">X448</td>
            <td align="left">KMAC256/512</td>
          </tr>
        </tbody>
      </table>
      <t>The table above contains everything needed to implement the listed explicit composite algorithms, with the exception of some special notes found below in this section. See the ASN.1 module in section <xref target="sec-asn1-module"/> for the explicit definitions of the above Composite signature algorithms.</t>
      <t>Full specifications for the referenced algorithms can be found as follows:</t>
      <ul spacing="normal">
        <li>
          <t><em>ECDH</em>: There does not appear to be a single IETF definition of ECDH, so we refer to the following:
          </t>
          <ul spacing="normal">
            <li>
              <t><em>ECDH NIST</em>: SHALL be Elliptic Curve Cryptography Cofactor Diffie-Hellman (ECC CDH) as defined in section 5.7.1.2 of <xref target="SP.800-56Ar3"/>.</t>
            </li>
            <li>
              <t><em>ECDH BSI / brainpool</em>: SHALL be Elliptic Curve Key Agreement algorithm (ECKA) as defined in section 4.3.1 of <xref target="BSI-ECC"/></t>
            </li>
          </ul>
        </li>
        <li>
          <t><em>ML-KEM</em>: <xref target="I-D.ietf-lamps-kyber-certificates"/> and <xref target="FIPS.203-ipd"/></t>
        </li>
        <li>
          <t><em>RSA-KEM</em>: <xref target="I-D.ietf-lamps-rfc5990bis"/></t>
        </li>
        <li>
          <t><em>X25519 / X448</em>: <xref target="RFC8410"/></t>
        </li>
      </ul>
      <t>Note that all ECDH as well as X25519 and X448 algorithms MUST be promoted into KEMs according to <xref target="I-D.ounsworth-lamps-cms-dhkem"/>.</t>
      <t>EDNOTE: I believe that <xref target="SP.800-56Ar3"/> and <xref target="BSI-ECC"/> give equivalent and interoperable algorithms, so maybe this is extraneous 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>id-sha3-256</tt> is defined in <xref target="I-D.ietf-lamps-cms-sha3-hash"/> which references it from <xref target="SHA3"/>.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="use-in-cms">
      <name>Use in CMS</name>
      <t>[EDNOTE: The convention in LAMPS is to specify algorithms and their CMS conventions in separate documents. Here we have presented them in the same document, but this section has been written so that it can easily be moved to a standalone document.]</t>
      <t>Composite KEM algorithms MAY be employed for one or more recipients in the CMS enveloped-data content type <xref target="RFC5652"/>, the CMS authenticated-data content type <xref target="RFC5652"/>, or the CMS authenticated-enveloped-data content type <xref target="RFC5083"/>. In each case, the KEMRecipientInfo <xref target="I-D.ietf-lamps-cms-kemri"/> is used with the chosen composite KEM Algorithm to securely transfer the content-encryption key from the originator to the recipient.</t>
      <section anchor="underlying-components">
        <name>Underlying Components</name>
        <t>A CMS implementation that supports a composite KEM algorithm MUST support at least the following underlying components:</t>
        <t>When a particular Composite KEM OID is supported, an implementation MUST support the corresponding KDF algorithm identifier in <xref target="tab-cms-kdf-wrap"/>.</t>
        <t>When a particular Composite KEM OID is supported, an implementation MUST support the corresponding key-encryption algorithm identifier in <xref target="tab-cms-kdf-wrap"/>.</t>
        <t>An implementation MAY also support other key-derivation functions and other key-encryption algorithms as well.</t>
        <t>The following table lists the REQUIRED KDF and key-encryption algorithms to preserve security and performance characteristics of each composite algorithm.</t>
        <table anchor="tab-cms-kdf-wrap">
          <name>REQUIRED pairings for CMS KDF and WRAP</name>
          <thead>
            <tr>
              <th align="left">Composite KEM OID</th>
              <th align="left">KDF</th>
              <th align="left">Key Encryption Alg</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">id-MLKEM512-ECDH-P256-KMAC128</td>
              <td align="left">KMAC128/256</td>
              <td align="left">id-aes128-Wrap</td>
            </tr>
            <tr>
              <td align="left">id-MLKEM512-ECDH-brainpoolP256r1-KMAC128</td>
              <td align="left">KMAC128/256</td>
              <td align="left">id-aes128-Wrap</td>
            </tr>
            <tr>
              <td align="left">id-MLKEM512-X25519-KMAC128</td>
              <td align="left">KMAC128/256</td>
              <td align="left">id-aes128-Wrap</td>
            </tr>
            <tr>
              <td align="left">id-MLKEM512-RSA2048-KMAC128</td>
              <td align="left">KMAC128/256</td>
              <td align="left">id-aes128-Wrap</td>
            </tr>
            <tr>
              <td align="left">id-MLKEM512-RSA3072-KMAC128</td>
              <td align="left">KMAC128/256</td>
              <td align="left">id-aes128-Wrap</td>
            </tr>
            <tr>
              <td align="left">id-MLKEM768-ECDH-P256-KMAC256</td>
              <td align="left">KMAC256/384</td>
              <td align="left">id-aes192-Wrap</td>
            </tr>
            <tr>
              <td align="left">id-MLKEM768-ECDH-brainpoolP256r1-KMAC256</td>
              <td align="left">KMAC256/384</td>
              <td align="left">id-aes192-Wrap</td>
            </tr>
            <tr>
              <td align="left">id-MLKEM768-X25519-KMAC256</td>
              <td align="left">KMAC256/384</td>
              <td align="left">id-aes192-Wrap</td>
            </tr>
            <tr>
              <td align="left">id-MLKEM1024-ECDH-P384-KMAC256</td>
              <td align="left">KMAC256/512</td>
              <td align="left">id-aes256-Wrap</td>
            </tr>
            <tr>
              <td align="left">id-MLKEM1024-ECDH-brainpoolP384r1-KMAC256</td>
              <td align="left">KMAC256/512</td>
              <td align="left">id-aes256-Wrap</td>
            </tr>
            <tr>
              <td align="left">id-MLKEM1024-X448-KMAC256</td>
              <td align="left">KMAC256/512</td>
              <td align="left">id-aes256-Wrap</td>
            </tr>
          </tbody>
        </table>
        <t>where:</t>
        <ul spacing="normal">
          <li>
            <t>KMAC KDF instantiations are defined in <xref target="sec-kmac-kdf"/>.</t>
          </li>
          <li>
            <t><tt>id-aes*-Wrap</tt> are defined in <xref target="RFC3394"/>.</t>
          </li>
        </ul>
        <t>Implementers MAY safely substitute stronger KDF and key-encryption algorithms than those indicated; for example <tt>id-alg-hkdf-with-sha3-512</tt> and <tt>id-aes256-Wrap</tt> MAY be safely used in place of <tt>id-alg-hkdf-with-sha3-384</tt>and <tt>id-aes192-Wrap</tt>, for example, where SHA3-384 or AES-192 are not supported.</t>
      </section>
      <section anchor="recipientinfo-conventions">
        <name>RecipientInfo Conventions</name>
        <t>When a composite KEM Algorithm is employed for a recipient, the RecipientInfo alternative for that recipient MUST be OtherRecipientInfo using the KEMRecipientInfo structure <xref target="I-D.ietf-lamps-cms-kemri"/>. The fields of the KEMRecipientInfo MUST have the following values:</t>
        <t><tt>version</tt> is the syntax version number; it MUST be 0.</t>
        <t><tt>rid</tt> identifies the recipient's certificate or public key.</t>
        <t><tt>kem</tt> identifies the KEM algorithm; it MUST contain one of the OIDs listed in <xref target="tab-kem-algs"/>.</t>
        <t><tt>kemct</tt> is the ciphertext produced for this recipient; it contains the <tt>ct</tt> output from <tt>Encaps(pk)</tt> of the KEM algorithm identified in the <tt>kem</tt> parameter.</t>
        <t><tt>kdf</tt> identifies the key-derivation function (KDF). Note that the KDF used for CMS RecipientInfo process MAY be different than the KDF used within the composite KEM Algorithm, which MAY be different than the KDFs (if any) used within the component KEMs of the composite KEM Algorithm.</t>
        <t><tt>kekLength</tt> is the size of the key-encryption key in octets.</t>
        <t><tt>ukm</tt> is an optional random input to the key-derivation function.</t>
        <t><tt>wrap</tt> identifies a key-encryption algorithm used to encrypt the keying material.</t>
        <t><tt>encryptedKey</tt> is the result of encrypting the keying material with the key-encryption key. When used with the CMS enveloped-data content type <xref target="RFC5652"/>, the keying material is a content-encryption key. When used with the CMS authenticated-data content type <xref target="RFC5652"/>, the keying material is a message-authentication key. When used with the CMS authenticated-enveloped-data content type <xref target="RFC5083"/>, the keying material is a content-authenticated-encryption key.</t>
      </section>
      <section anchor="certificate-conventions">
        <name>Certificate Conventions</name>
        <t>The conventions specified in this section augment RFC 5280 <xref target="RFC5280"/>.</t>
        <t>The willingness to accept a composite KEM Algorithm MAY be signaled by the use of the SMIMECapabilities Attribute as specified in Section 2.5.2. of <xref target="RFC8551"/> or the SMIMECapabilities certificate extension as specified in [RFC4262].</t>
        <t>The intended application for the public key MAY be indicated in the key usage certificate extension as specified in Section 4.2.1.3 of <xref target="RFC5280"/>. If the keyUsage extension is present in a certificate that conveys a composite KEM public key, then the key usage extension MUST contain only the following value:</t>
        <t>keyEncipherment</t>
        <t>The digitalSignature and dataEncipherment values MUST NOT be present. That is, a public key intended to be employed only with a composite KEM algorithm MUST NOT also be employed for data encryption or for digital signatures. This requirement does not carry any particular security consideration; only the convention that KEM keys be identified with the <tt>keyEncipherment</tt> key usage.</t>
      </section>
      <section anchor="smimecapabilities-attribute-conventions">
        <name>SMIMECapabilities Attribute Conventions</name>
        <t>Section 2.5.2 of <xref target="RFC8551"/> defines the SMIMECapabilities attribute to announce a partial list of algorithms that an S/MIME implementation can support. When constructing a CMS signed-data content type <xref target="RFC5652"/>, a compliant implementation MAY include the SMIMECapabilities attribute that announces support for the RSA-KEM Algorithm.</t>
        <t>The SMIMECapability SEQUENCE representing a composite KEM Algorithm MUST include the appropriate object identifier as per <xref target="tab-kem-algs"/> in the capabilityID field.</t>
      </section>
    </section>
    <section anchor="sec-asn1-module">
      <name>ASN.1 Module</name>
      <sourcecode type="ASN.1"><![CDATA[
<CODE STARTS>

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

DEFINITIONS IMPLICIT TAGS ::= BEGIN

EXPORTS ALL;

IMPORTS

PUBLIC-KEY, AlgorithmIdentifier{}
  FROM AlgorithmInformation-2009  -- RFC 5912 [X509ASN1]
      { iso(1) identified-organization(3) dod(6) internet(1)
        security(5) mechanisms(5) pkix(7) id-mod(0)
        id-mod-algorithmInformation-02(58) }

KEM-ALGORITHM, KEMAlgSet
  FROM KEMAlgorithmInformation-2023
      { iso(1) identified-organization(3) dod(6) internet(1)
        security(5) mechanisms(5) pkix(7) id-mod(0)
        id-mod-kemAlgorithmInformation-2023(99) }

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

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

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

;


--
-- Object Identifiers
--

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



--
-- Composite KEM basic structures
--

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

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

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

CompositeKEMPrivateKey ::= SEQUENCE SIZE (2) OF OneAsymmetricKey

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


--
-- Information Object Classes
--

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

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



--
-- Composite KEM Algorithms
--


-- TODO: OID to be replaced by IANA
id-MLKEM512-ECDH-P256-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 }


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

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

END

<CODE ENDS>

]]></sourcecode>
    </section>
    <section anchor="sec-iana">
      <name>IANA Considerations</name>
      <section anchor="object-identifier-allocations">
        <name>Object Identifier Allocations</name>
        <t>EDNOTE to IANA: OIDs will need to be replaced in both the ASN.1 module and in <xref target="tab-kem-algs"/>.</t>
        <section anchor="module-registration-smi-security-for-pkix-module-identifier">
          <name>Module Registration - SMI Security for PKIX Module Identifier</name>
          <ul spacing="normal">
            <li>
              <t>Decimal: IANA Assigned - <strong>Replace TBDMOD</strong></t>
            </li>
            <li>
              <t>Description: Composite-KEM-2023 - id-mod-composite-kems</t>
            </li>
            <li>
              <t>References: This Document</t>
            </li>
          </ul>
        </section>
        <section anchor="object-identifier-registrations-smi-security-for-pkix-algorithms">
          <name>Object Identifier Registrations - SMI Security for PKIX Algorithms</name>
          <ul spacing="normal">
            <li>
              <t>id-MLKEM512-ECDH-P256-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 independently 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 anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC3394" target="https://www.rfc-editor.org/info/rfc3394" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3394.xml">
          <front>
            <title>Advanced Encryption Standard (AES) Key Wrap Algorithm</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="September" year="2002"/>
          </front>
          <seriesInfo name="RFC" value="3394"/>
          <seriesInfo name="DOI" value="10.17487/RFC3394"/>
        </reference>
        <reference anchor="RFC5280" target="https://www.rfc-editor.org/info/rfc5280" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC5652" target="https://www.rfc-editor.org/info/rfc5652" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5652.xml">
          <front>
            <title>Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="September" year="2009"/>
            <abstract>
              <t>This document describes the Cryptographic Message Syntax (CMS). This syntax is used to digitally sign, digest, authenticate, or encrypt arbitrary message content. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="70"/>
          <seriesInfo name="RFC" value="5652"/>
          <seriesInfo name="DOI" value="10.17487/RFC5652"/>
        </reference>
        <reference anchor="RFC5958" target="https://www.rfc-editor.org/info/rfc5958" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5958.xml">
          <front>
            <title>Asymmetric Key Packages</title>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>This document defines the syntax for private-key information and a content type for it. Private-key information includes a private key for a specified public-key algorithm and a set of attributes. The Cryptographic Message Syntax (CMS), as defined in RFC 5652, can be used to digitally sign, digest, authenticate, or encrypt the asymmetric key format content type. This document obsoletes RFC 5208. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5958"/>
          <seriesInfo name="DOI" value="10.17487/RFC5958"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8410" target="https://www.rfc-editor.org/info/rfc8410" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8410.xml">
          <front>
            <title>Algorithm Identifiers for Ed25519, Ed448, X25519, and X448 for Use in the Internet X.509 Public Key Infrastructure</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies algorithm identifiers and ASN.1 encoding formats for elliptic curve constructs using the curve25519 and curve448 curves. The signature algorithms covered are Ed25519 and Ed448. The key agreement algorithms covered are X25519 and X448. The encoding for public key, private key, and Edwards-curve Digital Signature Algorithm (EdDSA) structures is provided.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8410"/>
          <seriesInfo name="DOI" value="10.17487/RFC8410"/>
        </reference>
        <reference anchor="RFC8411" target="https://www.rfc-editor.org/info/rfc8411" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8411.xml">
          <front>
            <title>IANA Registration for the Cryptographic Algorithm Object Identifier Range</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <author fullname="R. Andrews" initials="R." surname="Andrews"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>When the Curdle Security Working Group was chartered, a range of object identifiers was donated by DigiCert, Inc. for the purpose of registering the Edwards Elliptic Curve key agreement and signature algorithms. This donated set of OIDs allowed for shorter values than would be possible using the existing S/MIME or PKIX arcs. This document describes the donated range and the identifiers that were assigned from that range, transfers control of that range to IANA, and establishes IANA allocation policies for any future assignments within that range.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8411"/>
          <seriesInfo name="DOI" value="10.17487/RFC8411"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-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.ietf-lamps-cms-sha3-hash" target="https://datatracker.ietf.org/doc/html/draft-ietf-lamps-cms-sha3-hash-01" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-lamps-cms-sha3-hash.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="1" month="March" year="2024"/>
            <abstract>
              <t>This document describes the conventions for using the one-way hash functions in the SHA3 family with the Cryptographic Message Syntax (CMS). The SHA3 family can be used as a message digest algorithm, as part of a signature algorithm, as part of a message authentication code, or part of a key derivation function.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-sha3-hash-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="SHA3" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf">
          <front>
            <title>SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions, FIPS PUB 202, DOI 10.6028/NIST.FIPS.202</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date year="2015" month="August"/>
          </front>
        </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>
        <reference anchor="I-D.ietf-lamps-cms-kemri" target="https://datatracker.ietf.org/doc/html/draft-ietf-lamps-cms-kemri-08" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-lamps-cms-kemri.xml">
          <front>
            <title>Using Key Encapsulation Mechanism (KEM) Algorithms in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="Russ Housley" initials="R." surname="Housley">
              <organization>Vigil Security, LLC</organization>
            </author>
            <author fullname="John Gray" initials="J." surname="Gray">
              <organization>Entrust</organization>
            </author>
            <author fullname="Tomofumi Okubo" initials="T." surname="Okubo">
              <organization>DigiCert, Inc.</organization>
            </author>
            <date day="6" month="February" year="2024"/>
            <abstract>
              <t>The Cryptographic Message Syntax (CMS) supports key transport and key agreement algorithms. In recent years, cryptographers have been specifying Key Encapsulation Mechanism (KEM) algorithms, including quantum-secure KEM algorithms. This document defines conventions for the use of KEM algorithms by the originator and recipients to encrypt and decrypt CMS content. This document updates RFC 5652.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-kemri-08"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC2986" target="https://www.rfc-editor.org/info/rfc2986" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2986.xml">
          <front>
            <title>PKCS #10: Certification Request Syntax Specification Version 1.7</title>
            <author fullname="M. Nystrom" initials="M." surname="Nystrom"/>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski"/>
            <date month="November" year="2000"/>
            <abstract>
              <t>This memo represents a republication of PKCS #10 v1.7 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series, and change control is retained within the PKCS process. The body of this document, except for the security considerations section, is taken directly from the PKCS #9 v2.0 or the PKCS #10 v1.7 document. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2986"/>
          <seriesInfo name="DOI" value="10.17487/RFC2986"/>
        </reference>
        <reference anchor="RFC4210" target="https://www.rfc-editor.org/info/rfc4210" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4210.xml">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate Management Protocol (CMP)</title>
            <author fullname="C. Adams" initials="C." surname="Adams"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="T. Kause" initials="T." surname="Kause"/>
            <author fullname="T. Mononen" initials="T." surname="Mononen"/>
            <date month="September" year="2005"/>
            <abstract>
              <t>This document describes the Internet X.509 Public Key Infrastructure (PKI) Certificate Management Protocol (CMP). Protocol messages are defined for X.509v3 certificate creation and management. CMP provides on-line interactions between PKI components, including an exchange between a Certification Authority (CA) and a client system. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4210"/>
          <seriesInfo name="DOI" value="10.17487/RFC4210"/>
        </reference>
        <reference anchor="RFC4211" target="https://www.rfc-editor.org/info/rfc4211" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4211.xml">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate Request Message Format (CRMF)</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="September" year="2005"/>
            <abstract>
              <t>This document describes the Certificate Request Message Format (CRMF) syntax and semantics. This syntax is used to convey a request for a certificate to a Certification Authority (CA), possibly via a Registration Authority (RA), for the purposes of X.509 certificate production. The request will typically include a public key and the associated registration information. This document does not define a certificate request protocol. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4211"/>
          <seriesInfo name="DOI" value="10.17487/RFC4211"/>
        </reference>
        <reference anchor="RFC5083" target="https://www.rfc-editor.org/info/rfc5083" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5083.xml">
          <front>
            <title>Cryptographic Message Syntax (CMS) Authenticated-Enveloped-Data Content Type</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="November" year="2007"/>
            <abstract>
              <t>This document describes an additional content type for the Cryptographic Message Syntax (CMS). The authenticated-enveloped-data content type is intended for use with authenticated encryption modes. All of the various key management techniques that are supported in the CMS enveloped-data content type are also supported by the CMS authenticated-enveloped-data content type. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5083"/>
          <seriesInfo name="DOI" value="10.17487/RFC5083"/>
        </reference>
        <reference anchor="RFC5639" target="https://www.rfc-editor.org/info/rfc5639" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5639.xml">
          <front>
            <title>Elliptic Curve Cryptography (ECC) Brainpool Standard Curves and Curve Generation</title>
            <author fullname="M. Lochter" initials="M." surname="Lochter"/>
            <author fullname="J. Merkle" initials="J." surname="Merkle"/>
            <date month="March" year="2010"/>
            <abstract>
              <t>This memo proposes several elliptic curve domain parameters over finite prime fields for use in cryptographic applications. The domain parameters are consistent with the relevant international standards, and can be used in X.509 certificates and certificate revocation lists (CRLs), for Internet Key Exchange (IKE), Transport Layer Security (TLS), XML signatures, and all applications or protocols based on the cryptographic message syntax (CMS). This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5639"/>
          <seriesInfo name="DOI" value="10.17487/RFC5639"/>
        </reference>
        <reference anchor="RFC5914" target="https://www.rfc-editor.org/info/rfc5914" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5914.xml">
          <front>
            <title>Trust Anchor Format</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="S. Ashmore" initials="S." surname="Ashmore"/>
            <author fullname="C. Wallace" initials="C." surname="Wallace"/>
            <date month="June" year="2010"/>
            <abstract>
              <t>This document describes a structure for representing trust anchor information. A trust anchor is an authoritative entity represented by a public key and associated data. The public key is used to verify digital signatures, and the associated data is used to constrain the types of information or actions for which the trust anchor is authoritative. The structures defined in this document are intended to satisfy the format-related requirements defined in Trust Anchor Management Requirements. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5914"/>
          <seriesInfo name="DOI" value="10.17487/RFC5914"/>
        </reference>
        <reference anchor="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>
        <reference anchor="BSI2021" target="https://www.bsi.bund.de/SharedDocs/Downloads/EN/BSI/Publications/Brochure/quantum-safe-cryptography.pdf">
          <front>
            <title>Quantum-safe cryptography - fundamentals, current developments and recommendations</title>
            <author>
              <organization>Federal Office for Information Security (BSI)</organization>
            </author>
            <date year="2021" month="October"/>
          </front>
        </reference>
        <reference anchor="ANSSI2024" target="https://cyber.gouv.fr/sites/default/files/document/Quantum_Key_Distribution_Position_Paper.pdf">
          <front>
            <title>Position Paper on Quantum Key Distribution</title>
            <author>
              <organization>French Cybersecurity Agency (ANSSI)</organization>
            </author>
            <author>
              <organization>Federal Office for Information Security (BSI)</organization>
            </author>
            <author>
              <organization>Netherlands National Communications Security Agency (NLNCSA)</organization>
            </author>
            <author>
              <organization>Swedish National Communications Security Authority, Swedish Armed Forces</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <?line 1127?>

<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>Implementers seeking FIPS certification of a composite KEM algorithm where only one of the component algorithms has been FIPS-validated or FIPS-approved should credit the FIPS-validated component algorithm with full security strength, the non-FIPS-validated component algorithm with zero security, and the overall composite should be considered full strength and thus FIPS-approved.</t>
        <t>The authors wish to note that this gives composite algorithms great future utility both for future cryptographic migrations as well as bridging across jurisdictions; for example defining composite algorithms which combine FIPS cryptography with cryptography from a different national standards body.</t>
      </section>
      <section anchor="sec-backwards-compat">
        <name>Backwards Compatibility</name>
        <t>As noted in the introduction, the post-quantum cryptographic migration will face challenges in both ensuring cryptographic strength against adversaries of unknown capabilities, as well as providing ease of migration. The composite mechanisms defined in this document primarily address cryptographic strength, however this section contains notes on how backwards compatibility may be obtained.</t>
        <t>The term "ease of migration" is used here to mean that existing systems can be gracefully transitioned to the new technology without requiring large service disruptions or expensive upgrades. The term "backwards compatibility" is used here to mean something more specific; that existing systems as they are deployed today can 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-acknowledgments">
      <name>Contributors and Acknowledgments</name>
      <t>This document incorporates contributions and comments from a large group of experts. The Editors would especially like to acknowledge the expertise and tireless dedication of the following people, who attended many long meetings and generated millions of bytes of electronic mail and VOIP traffic over the past year in pursuit of this document:</t>
      <t>Serge Mister (Entrust), Ali Noman (Entrust), and
Douglas Stebila (University of Waterloo).</t>
      <t>We are grateful to all, including any contributors who may have
been inadvertently omitted from this list.</t>
      <t>This document borrows text from similar documents, including those referenced below. Thanks go to the authors of those
   documents.  "Copying always makes things easier and less error prone" - <xref target="RFC8411"/>.</t>
      <!-- End of Contributors section -->

</section>
  </back>
  <!-- ##markdown-source:
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
X+qu1WWAlKyKXZp7H3X2MG+XfJFQ7IPuWrGDUgfWSKxOviOIm/m25CMN5/Jw
Osuixq5sHO4RhnfjkCqIOXD6etywD7LcHzDncq8eBji/xeFunmzxHT51RZy0
1yVcXNEBA6Z1YrqZdzUDdoNpmwDjDHcyulyo0vgKuaUFMB4iOaXiVQAsxY+c
HJ8M+uGcY/WRsg8LvrxbVko0DE0CKgZ80MmGutT+o3adVLtzmT4VhCIRUu6a
KyO86OmJmnpfTtkRJzTb5KSpCRqFRXNYm5n3sPGHNgmi0+1s67kx7sWx4TOc
MGj7ocJsJuE89EbT5cxvqWbEigydQmcIWqjtCNW0vxqpDUK7lAnIaFS5KkPv
yjDcCF7hJBb89Un3FxxD2/aLkpdueza6Ed8j84A8RhxGJyR5mhXtUmd7pVlD
0o0qxaLONPg6LH1wSVlBXJnfOmfqg9m/szh1nLK0dOpwmvKaHRlumM2K5Eul
cK7aXB6L8HaWv7H0bSH1uys0/dFVBLMUb7HSTinAl46k8/V8ugF1uIm9lT1E
6NxVerPisDbNhMow051KFMm2mqWHJmGiqPNCqeO2+6fF0PLEjDPNsAJ9kOBq
CxeVLpc2G8+kZ/BsGhknEqkLo5vUWo3hNrWWq/WKiLIMIMdHrJ13KEzSLaOl
oiOdgAE3H7r175jGLIYXh+8uhr9xXOoU4trb6m2roM3PcZ6udzccgg3S7Cqc
qSjw9e0N2CbR+osNdaeJLLC1ifjUm2R9d8Mp2o6/5jfxp/WX2DHCt77lfMSP
vKJ68M3Fq6OTs6MNAfM4Grw+Pj3G26yG4vjk/O1x//hCXBx+P+R8bowsbrUG
P52fweTE4du334Fte0K/Wi2bZtquO7r7jKmmr9+dOYvn1OgDzGztC7zLhUTq
Phbp+Wl3ax+Q2v2oMSaegrKnYKyMsLAO4q3e+u4eYc3L620jgcIUh7LQE+YH
dXO21PCfNjcggUbg1vf3aYJ11aj05PAKt+5ABcrQMv6nTwkbdAMdvEML1aV5
VOot4UdMk+7jc7xs/kryfv9jtzyfqUSrOhil0RKzhRf5+t4O7LIsD6M8Xu92
t3d39hHKce7OB38H++vwJp/GU7nehXmrDNs6ivPgubn6Y3d9d4vmIJCVmpUw
1QPtVHBBYEVz3lKPXgwLicN2vnkxrFgDqPZoSV7QdICDtIIA/k9X6XQC0fEF
vjmyXrXji/fBhaDL2FpYPKqSi69rZf4ZkRLApIO4WAQgmYBf40xw5ch0lBEu
nneXiakyAw3RS6gA848jRmEOupUtpkJAPr144dNqnJQC/6v/HlZj4ynVO/4l
Qz+lVtq3ZvXr5W2qFKuW9v+r2q7in1Xc9TGlM8Q9tTPEL7Z4hrMZSI8N+ofn
2MyAQ/QeR16ZjQa+YoQwkx02MOkgDdkgrdXHkLW8kbBWYo64Oyg/O1uSWNIS
zRMQrHxKvu15nVNKNqy5sr4HH2iRaxRMlBBACThAF6f+mAK7oq7CrnhAiV2x
ssYuU+YKKKqERv1VCFqT30OAoZmsGPPrUxe86Zj4l7X2vdq1b4L9AWRQTwUN
HT6BIJpA+2baWA1iDZk0QaL4yONIphQI8Msiku0ykZSgfQpZ+F3UEoKnY1Wo
oQTDt6x/LSz+ipdGe9Ial2MzflmL3K2schneJwmBUie1C+2aTdWFLoPxLStd
D42/1OXxnrrWXtjML2utd2qW2gP3KTu61MfTVtqDorLSj1roGmAqC+0N91hR
Xx/N9Mta6V13pesBfuxa1/bycEleD8RTN/UqYOxq14/55PVuCjb7ZS39i9ql
b4L9yVTQ0OETCKIJtG+mjdUg1pBJEyRPoZhSNOE/m0a+iURelkmkBOxTiMLv
4pGKXQ0M37L6tbD4610a7dHCviG+8xe1zHvuMjcA/Nilru/m4bu+AYynrvZK
cOyKN4z62H19fwzuL0sU7NcTQBPw99JCEyk0dPgUqmiC7dsJZDWQdbTSBIv2
HT6BeLx4618WsXS3KtTiQfskTuH28EiZUIXgm2igBpLSmntjfTVO4cGnuS6D
pOI+xm68BV4SQpF0sN4Y4MHXjHS7H8lpPDyJp7KPd7k67mht0XwW93g+O7+i
k0n6XpeWerhv7P6vfe/G/e1LJvKDPnBNrdUf1GrrD/ykQXO7/2tfD1jdvl6K
PPSbBm7ygM9dwnSat1XrTqeD5Do4PdKxLvAnRrrommLIhjBoyq1DyjEzcTgL
+QrH6mGvOEySVBXI0LUGkMdhb6okFl2FoSseu7wPa1OmKtbLK/PB5Qbqgsyx
AqoO6HlHhV4ZVBHg1sGzMQ5Bw/AlPFDXbS3AsGEF1vOMp2FywJM+1JXDAvH8
+TtVEIyja54/5+bmDrADe/xjIoPgu9oIHfz0nclgPuB4uiOVuKvmUkWoO628
cV7OsVMrWH2WAQQQNMxYvXJmd39PK2ZUA0gD1/k2mFZ1+mDwfLb2ZIBqunkQ
CMhWXMYHM3kSDNhPpZMHQ1DhpE+Gob6nxwHSwJ+/DaZVnT4YPF8APBmgmm4e
BEK9THkSGCu6eiQoDaLqG6Fa1evDAXSF4dMBqvSyAgDv5uQaUVq+QNmwdL8d
idnzFPRvZvZHGE7LkfcoFQ8pIYESv10JcGFvGser471QcizZ7wTNm2SrhqvR
bE43RuXjmHfqDikbYU4XDtHFtga4dS91EKOGgTlSwYfhD4fdjbaqEZ2O8JqD
3GZVuXdi+JDmJlcvdCtCYe4h6xE6zFxiYdDb9IbSEI/LeVUglrEqs6pMlGBi
hwYip0LOsZvkiZfORUAqkc4uAHgwL6ABRzmn+VEgNsdfZ0sbBz+nckkcbz3j
eqehXb945l7Nzdf0FNfp4upal+gg5cgtBECZqgbliHHMy7iNI6wdCuYFXuFH
Fyu16251a6YJnLXOgAjFNP7Ed+pN3NFwBngJhfvILZjGVbHrKsIR3E5VfoBZ
zjG7YVYkS5Um03BZbFu904PqAPoR1l6ZRUmlN1WCIyxW99sRTr3hyk1+c95+
fFUH4iWeLTj+n25yv6+6MK1kOMECRLYuZOzulspd8mgXqwtum2+g50K7UtXQ
o5wKM0+/XHLNva+lawmmMpw5uzC9Bf5TuTvdbrr8WlVMdjcdIMQkuRqaB82V
6xnpGw44P5qTJGK6s6G6HN+JmJKh6I4v+K9/D6MFIwOLB1kXd+rk9VThb/qo
+V6Y6u0N5WtVFnhbhb7wzmDddFMpb7T6khVddkhVBT4+PQr6/cMeV3ZfanTB
JgZcxzqVE/hoB7Y5jj2Td1wmeco3XYxo8Dd0D5btjQvYuMg1pWGc7N7SKNBD
q/WgOdjLoe9SJ03VvTmFCF9dbZfycjmMsXLpLI5PlzyA9DHWobqqgS5uEJd5
/nN8aatO20Tjy3FBbzJ17Q2mxuiLEIhWbn6OdUabAZGwZ+4RUdmgOB3O2uow
KGpQLIVmB8FUqKtFmME40tkQlbFZ9pk6B8hJ5ogSzkiFVuZyQnV1wp3KC7JQ
tfFiSK4nRFkzuSpt5VO/c5G2w2JsIrCuEFBzDT3O50HF8tpcyNC2W1F+kGt7
v1WdulUW8V2S2It5p1Kq+jywazE9lK4EDW+5VBHj01ws4V0sxPdnOleR+fvq
Too/L/ICS37Z3H+6t6h0w49ip9NYldNRgxUh8QxXvWtQ3XwVDyvQYJV90vXU
Laefn8G6R5+CnH8jg3l1xM4XP4Gr3g0zC+ZYkIddMXQfrRXiVBL1mblhlnIm
9OYCypmiYqIkzFUaJvaKGZ8KYlvldBVPVRVL1V1GvlhAwALK5sK6ZSQMiZwd
dlMnA9R9GR1Vvk3xVO+WuFpJdgcsTdXxIgmNM6y5PsitPRDmtD+86h65lDdI
HTVo5bt+GyQjF8mgFMf7JmhKvhGGgLvEEalRAJiPMyVtx8iSeVOUvqiTjTTn
CVWtLctizr5G5e2h/dBNY7ofW+C/ShK1igFDoRUB/hjUbW+Sij9h1neaoY8w
v8b1mzklF2CtsA5pXq9UgsCCVpMFqaqLgrMQSWDwlUv0vHQxXnyld5RThhUv
jbuiZMVxloJ18GeYdB7FLLv8+ixckLT+au9cMTJFmoqQ3FK7hFnvCWmroSM3
2RbANFyq9JdFeCNnpPLfXwE3uaNn6IKElir1krf9SL8lJ2SIXOKQdpTN2Y5n
BVXiwDFURU73Ns8GZLH/dhJyRbAE2SLfyEfIlrN8wXcte1/b1b9C5QsILMLi
JmGmZP5ixjewu4ckbXdVWLHAjmG70r4yABkWoS08k9jkqmD+HUbMArGiYhhF
GRqB9fC28ZZprITt1w0wRjMXrsb6jWAIGJSLsbcgaE6NMIuV7yFXpA5sZirW
KrNZM2UJiZPgPS4yVMJIfuI0J5EvwXayNabh07HEXabqEpLpr+7gY80QRhtf
z9IkvWK6SxeFyuTG7pIwu0KlKrvFW8+iOM8Wc1UkG4l9jpnxoMcs5jBQxJng
Gv6GOTfMAot+c0lxKjepZc13DdPjGyiX2tDlpPUijUK+G9dWIC6kzRJXUEam
F335MrEARj7g3NJzqZgxrxkqWzLDFbYHFWyNF1gyfGHuu1f3ceEot0BR5MzA
4ur4wN5uTPOb4n2IqhQEX+GJQ5P7nqDPZKJKPKZklfuXv/O14Jz77dzCy0wD
BA4ymZm8SlV93OrNyhdvhwJLLXBB6p0XXOT5+M3gtkfPXvb2X2BljpREg9NV
mC9n42uwlnBy1X7V+aY6M0HrKrHp9N4mni5BkdMFDjVLi/+qvAmc7y3JZ2JH
IU+JrUmhUIlljjOs22AOTzEJXpgSL05iH1t4z6jqLXCrBBGe2zLYYA6mt9Lb
3r9ttX40FRlY/Sdad3tYQzx5pddzWSzmSv6H2ATv78aTdXL9pJiIlivDSJdb
5azFcbHS66X1L6ogy2mf0OE63qK1wYVkFTdS9StzVb/B2F4NrqoOpuJhgADI
a2CGV0g/IR1MI+W6yNKTmtkditNj9TmRV+HYK5+7DmYDGgX9DfawTaDHudJd
QZRFLB8q4sZuSJwTrsZ1GAHzpTNyt0itDxtDMacrUPHq9Zq7qNOsXkCva9iR
+BxQNrBKOvBGsMnMdb9lvLgrpqXLXUi+1nFChjNfKmXLfiWAPMVcgGJARcXC
b6wj2M7W840SAeATdV0beeNQBZo5txQY1Hb40qw6FsDCXcHFK/6U8fmuSGWz
u/zBuygBYfD5RwkOLgHPZMoyEVewSXiStnFLt5tZtsB076pi6qpKwwq8Qvfj
dB4bJrMgyUhXYSHfJvbpm63zvzgHt4BpvDq5UBfsgohFiaAvdoJVxYxjLFDG
xEncDt7QFctUXpf4HOtbpcofWsSEGd0RYWnUsvdO6SBhpVlYPlI4BmEBxAps
ELbdOftYqucLfhHZ4/N34ijOx0maL8hNm/AtnqlSoLJwUhy0WvpiZKxIAioH
XsJM/oFOml1txvNsc3t3b2/TBABwuFP/WuItc7ihTsJPwJCTEFkLSQPqHQcP
CVxUzJDpl4dGZk43ys+4XgnaCnwOgvpjIiOq55SXPXXAZNNsnmY0l7H+2FTc
BczTZ1oBZ33oCpZlTpXBPiHmlNozABuMLBTaRo73NYlv2ClsQOGNz1/HOYcx
FDGgFPVN0FAcg9IvMTSXqaq4mGJlFq78M0UvIDnt0DdCdTGxQ3tBwBRrVamb
TUbLQt2ki+sPohs1eBTM+Mkfz47PUVGcwA4nG46ZMfoAl3j/CJaMXGR4O7Hx
CmhMHmDpHETOCXnvxfqAI8c2sFZILE5TvivEPIThWkegNSWoJxQS9nQo1t/P
YqpsWJBX80cs/5WkKXJdELuo66EgQH1W+djbqjAMX/u2tAtI63BNt00Qo22R
OR3PyLgo1HnCNHYvc425amHliuxRmmV0RbbhCXkMCAVsmDrvLhhcttO5+IVu
raHqTbMbMEZTrRVog1bfbY7RN07leLHWT+dUBS1MQHzkpCOijkPri0XfsdgN
Xr6HNCMBRroFbybXRKBvFul+LDukvO3hcoX/A4mIGu1G3AAA

-->

</rfc>
