<?xml version="1.0" encoding="us-ascii"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.17 (Ruby 3.0.2) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC5280 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml">
<!ENTITY RFC5480 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5480.xml">
<!ENTITY RFC5652 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5652.xml">
<!ENTITY RFC5990 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5990.xml">
<!ENTITY RFC8017 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8017.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8410 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8410.xml">
<!ENTITY RFC8411 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8411.xml">
<!ENTITY I-D.draft-ounsworth-pq-composite-keys-04 SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ounsworth-pq-composite-keys-04.xml">
<!ENTITY I-D.draft-housley-lamps-cms-kemri-02 SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-housley-lamps-cms-kemri-02.xml">
<!ENTITY I-D.draft-ietf-lamps-kyber-certificates-00 SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-lamps-kyber-certificates-00.xml">
<!ENTITY RFC5639 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5639.xml">
<!ENTITY RFC6090 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6090.xml">
<!ENTITY RFC7296 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7296.xml">
<!ENTITY RFC7748 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7748.xml">
<!ENTITY RFC8446 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml">
<!ENTITY RFC8551 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8551.xml">
<!ENTITY I-D.draft-ounsworth-pq-composite-sigs-08 SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ounsworth-pq-composite-sigs-08.xml">
<!ENTITY I-D.draft-ietf-tls-hybrid-design-04 SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-tls-hybrid-design-04.xml">
<!ENTITY I-D.draft-driscoll-pqt-hybrid-terminology-01 SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-driscoll-pqt-hybrid-terminology-01.xml">
<!ENTITY I-D.draft-ounsworth-cfrg-kem-combiners-03 SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ounsworth-cfrg-kem-combiners-03.xml">
]>


<rfc ipr="trust200902" docName="draft-ounsworth-pq-composite-kem-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="PQ Composite Keys">Composite KEM For Use In Internet PKI</title>

    <author initials="M." surname="Ounsworth" fullname="Mike Ounsworth">
      <organization abbrev="Entrust">Entrust Limited</organization>
      <address>
        <postal>
          <street>2500 Solandt Road -- Suite 100</street>
          <city>Ottawa, Ontario</city>
          <code>K2K 3G5</code>
          <country>Canada</country>
        </postal>
        <email>mike.ounsworth@entrust.com</email>
      </address>
    </author>
    <author initials="J." surname="Gray" fullname="John Gray">
      <organization abbrev="Entrust">Entrust Limited</organization>
      <address>
        <postal>
          <street>2500 Solandt Road -- Suite 100</street>
          <city>Ottawa, Ontario</city>
          <code>K2K 3G5</code>
          <country>Canada</country>
        </postal>
        <email>john.gray@entrust.com</email>
      </address>
    </author>

    <date year="2023" month="March" day="13"/>

    <area>Security</area>
    <workgroup>LAMPS</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<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 the required 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 as well as hardware and software implementations that have not had sufficient maturing time to rule out classical cryptanalytic attacks and implementation bugs.</t>

<t>Cautious implementers may wish to layer cryptographic algorithms such that an attacker would need to break all of them in order to compromise the data being protected using either a Post-Quantum / Traditional Hybrid, Post-Quantum / Post-Quantum Hybrid, or combinations thereof. This document, and its companions, defines a specific instantiation of hybrid paradigm called &quot;composite&quot; where multiple cryptographic algorithms are combined to form a single key, signature, or key encapsulation mechanism (KEM) such that they can be treated as a single atomic object at the protocol level.</t>

<t>This document defines the structure CompositeCiphertextValue which is a sequence of the respective ciphertexts for each component algorithm. Explicit pairings of algorithms are defined which should meet most Internet needs. The generic composite key type is also defined which allows arbitrary combinations of key types to be placed in the CompositePublicKey and CompositePrivateKey structures without needing the combination to be pre-registered or pre-agreed. For the purpose of combining KEMs, the combiner function from <xref target="I-D.ounsworth-cfrg-kem-combiners"/> is used.</t>

<t>This document is intended to be coupled with the composite keys
structure define in <xref target="I-D.ounsworth-pq-composite-keys"/> and the CMS KEMRecipientInfo mechanism in <xref target="I-D.housley-lamps-cms-kemri"/>.</t>

<!-- End of Abstract -->



    </abstract>



  </front>

  <middle>


<section anchor="changes-in-version-01"><name>Changes in version -01</name>

<t><list style="symbols">
  <t>Sycronized terminology with I-D.draft-driscoll-pqt-hybrid-terminology-01.</t>
  <t>Changed CompositeCiphertextValue from BIT STRING to OCTET STRING.</t>
  <t>Explicit composite combinations defined and ASN.1 module updated</t>
</list></t>

</section>
<section anchor="sec-intro"><name>Introduction</name>

<t>During the transition to post-quantum cryptography, there will be uncertainty as to the strength of cryptographic algorithms; we will no longer fully trust traditional cryptography such as RSA, Diffie-Hellman, DSA and their elliptic curve variants, while we may also not fully trust their post-quantum replacements until they have had sufficient scrutiny and time to discover and fix implementation bugs. Unlike previous cryptographic algorithm migrations, the choice of when to migrate and which algorithms to migrate to, is not so clear. Even after the migration period, it may be advantageous for an entity&#39;s cryptographic identity to be composed of multiple public-key algorithms.</t>

<t>The deployment of composite public keys and composite encryption using post-quantum algorithms will face two challenges</t>

<t><list style="symbols">
  <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>
  <t>Migration: During the transition period, systems will require mechanisms that allow for staged migrations from fully classical to fully post-quantum-aware cryptography.</t>
</list></t>

<t>This document provides a mechanism to address algorithm strength uncertainty by building on <xref target="I-D.ounsworth-pq-composite-keys"/> by providing the format and process for combining multiple cryptographic algorithms into a single key encapsulation operation. 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="algorithm-selection-criteria"><name>Algorithm Selection Criteria</name>

<t>The composite algorithm combinations defined in this document were chosen according to the following guidelines:</t>

<t><list style="numbers">
  <t>A single RSA combination is provided (but RSA modulus size not mandated), matched with NIST PQC Level 3 algorithms.</t>
  <t>Elliptic curve algorithms are provided with combinations on each of the NIST <xref target="RFC6090"></xref>, Brainpool <xref target="RFC5639"></xref>, and Edwards <xref target="RFC7748"></xref> 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>
  <t>NIST level 1 candidates (Falcon512 and Kyber512) are provided, matched with 256-bit elliptic curves, intended for constrained use cases.</t>
  <t>A single SPHINCS+ combination is provided for use cases that wish to put hash-based signatures into hybrid combination.</t>
  <t>A generic composite algorithm is provided for implementers who wish to use combinations not listed here, without the overhead of defining new OIDs. Caution should be exercised to avoid issues with compatibility and complex cryptographic policy mechanisms.</t>
</list></t>

<t>The authors wish to note that although all the composite structures defined in this and the companion composite signatures <xref target="I-D.ounsworth-pq-composite-sigs"/> and composite signatures <xref target="I-D.ounsworth-pq-composite-sigs"/> specifications are defined in such a way as to easily allow 3 or more component algorithms, it was decided to only specify explicit pairs. The generic composite algorithm allows for an arbitrary number of components. This also does not preclude future specification of explicit combinations with three or more components.</t>

<!-- End of Introduction section -->

</section>
<section anchor="sec-terminology"><name>Terminology</name>
<t>The key words &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL NOT&quot;, &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;, &quot;NOT RECOMMENDED&quot;, &quot;MAY&quot;, and &quot;OPTIONAL&quot; in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"/>  <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>

<t>This document is consistent with all terminology from <xref target="I-D.driscoll-pqt-hybrid-terminology"/>.</t>

<t>In addition, the following terms are used in this document:</t>

<t>BER:
          Basic Encoding Rules (BER) as defined in <xref target="X.690"></xref>.</t>

<t>CLIENT:
          Any software that is making use of a cryptographic key.
          This includes a signer, verifier, encrypter, decrypter.</t>

<t>COMBINER:
          A combiner specifies how multiple shared secrets
          are combined into a single shared secret.
DER:
          Distinguished Encoding Rules as defined in <xref target="X.690"></xref>.</t>

<t>KEM:
        A key encapsulation mechanism as defined in <xref target="sec-kems"/>.</t>

<t>PKI:
          Public Key Infrastructure, as defined in <xref target="RFC5280"></xref>.</t>

<t>SHARED SECRET:
        A value established between two communicating parties for use as cryptographic key material, but which cannot be learned by an active or 
        passive adversary. This document is concerned with shared secrets established via public key cryptagraphic operations.</t>

</section>
</section>
<section anchor="composite-kem-structures"><name>Composite KEM Structures</name>

<section anchor="sec-kems"><name>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>

<t><list style="symbols">
  <t>KeyGen() -&gt; (pk, sk): A probabilistic key generation algorithm,
which generates a public key pk and a secret key sk.</t>
  <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>
  <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>
</list></t>

<t>This document is not concerned with the KeyGen() algorithm of a KEM, but it is included above for completeness.</t>

<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 exchange because it allows for arbitrary combinations of component algorithm types since both key transport and key agreement mechanisms can be promoted into KEMs in the following ways:</t>

<t>A key transport mechanism can be transformed into a KEM.Encaps(pk) by generating a random shared secret ss and performing KeyTrans.Encrypt(pk, ss) -&gt; ct; and into a KEM.Decaps(sk, ct) by KeyTrans.Decrypt(sk, ct) -&gt; ss. This follows the pattern of RSA-KEM <xref target="RFC5990"></xref>.</t>

<t>A key agreement mechanism can be transformed into a KEM.Encaps(pk) by generating an ephemeral key pair (pk_e, sk_e), and performing KeyAgree(pk, sk_e) -&gt; (ss, pk_e); and into a KEM.Decaps(sk, ct) by completing the key agreement as KeyAgree(pk_e, sk) -&gt; ss.</t>

<t>A composite KEM allows two or more underlying key transport, key agreement, or KEM algorithms to be combined into a single cryptographic operations 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>

<t>The main security property for KEMs is indistinguishability under
adaptive chosen ciphertext attack (IND-CCA2), which means that shared
secret values should be indistinguishable from random strings even
given the ability to have other arbitrary ciphertexts decapsulated.
By using the KEM combiner defined in <xref target="I-D.ounsworth-cfrg-kem-combiners"/>, the composite KEMs defined in this document inherit the IND-CCA2 security from the general combiner.</t>

<t>TODO: needs more formal analysis that the methods of transforming KeyTrans and KeyAgree meet this.</t>

</section>
<section anchor="sec-kema-CompositeKEM"><name>kema-CompositeKEM</name>

<t>The ASN.1 algorithm object for a composite KEM is:</t>

<figure><artwork><![CDATA[
kema-CompositeKEM KEM-ALGORITHM ::= {
    IDENTIFIER TYPE OBJECT IDENTIFIER
    VALUE CompositeCiphertextValue
    PARAMS TYPE CompositeKemParams ARE required
    PUBLIC-KEYS { pk-Composite }
    SMIME-CAPS { IDENTIFIED BY id-alg-composite } }
]]></artwork></figure>

<t>The following is an explanation how KEM-ALGORITHM elements are used 
to create Composite KEMs:</t>

<texttable>
      <ttcol align='left'>SIGNATURE-ALGORITHM element</ttcol>
      <ttcol align='left'>Definition</ttcol>
      <c>IDENTIFIER</c>
      <c>The Object ID used to identify the composite Signature Algorithm</c>
      <c>VALUE</c>
      <c>The Sequence of BIT STRINGS for each component signature value</c>
      <c>PARAMS</c>
      <c>Parameters of type CompositeKemParams may be provided when required</c>
      <c>PUBLIC-KEYS</c>
      <c>The composite key required to produce the composite signature</c>
      <c>SMIME_CAPS</c>
      <c>Not needed for composite</c>
</texttable>

</section>
<section anchor="composite-keys"><name>Composite Keys</name>

<t>A composite KEM MAY be associated with a composite public key as defined in [I-D.ounsworth-pq-composite-keys], 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 in a non-composite hybrid encryption equivalent of those described for digital signatures in [I-D.becker-guthrie-noncomposite-hybrid-auth].</t>

<section anchor="key-usage-bits"><name>Key Usage Bits</name>

<t>When using composite KEM keys in a structure which defines a key usage (such as in an 
X509Certificate as defined in <xref target="RFC5280"></xref>), the following key usage MUST be used.</t>

<figure><artwork><![CDATA[
  keyEncipherment
]]></artwork></figure>

<t>Additional key usages SHOULD not be used.</t>

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

<figure><artwork><![CDATA[
CompositeCiphertextValue ::= SEQUENCE SIZE (2..MAX) OF OCTET STRING
]]></artwork></figure>

</section>
<section anchor="sec-compositeKemParameters"><name>CompositKemParameters</name>

<t>Composite KEM parameters are defined as follows and MAY be included when a composite KEM algorithm is used with an AlgorithmIdentifier:</t>

<figure><sourcecode type="asn.1"><![CDATA[
CompositeKemParams ::= SEQUENCE SIZE (2..MAX) OF AlgorithmIdentifier{
    KEM-ALGORITHM, {KEMAlgSet} }
]]></sourcecode></figure>

<t>The KEM&#39;s <spanx style="verb">CompositeKemParams</spanx> sequence MUST contain the same component algorithms listed in the same order as in the associated CompositePublicKey.</t>

<t>Generic composite algorithms must carry the list of component KEM algorithms so that the reciever knows which algorithms to use. For explicit composite algorithms, it is required in cases where one or both of the components themselves have parameters that need to be carried, however the authors have chosen to always carry it in order to simplify parsers. Implementation SHOULD NOT rely directly on the algorithmIDs contained in the <spanx style="verb">CompositeKemParams</spanx> and SHOULD verify that they match the algorithms expected from the overall composite AlgorithmIdentifier.</t>

</section>
<section anchor="encoding-rules"><name>Encoding Rules</name>

<t>Many protocol specifications will require that composite KEM 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>

<t>EDNOTE: will this definition include an ASN.1 tag and length byte inside the OCTET STRING object? If so, that&#39;s probably an extra unnecessary layer.</t>

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

<t>In the interests of simplicity and avoiding compatibility issues, implementations that parse these structures MAY accept both BER and DER.</t>

</section>
<section anchor="sec-kem-combiner"><name>KEM Combiner</name>

<t>TODO: as per https://www.enisa.europa.eu/publications/post-quantum-cryptography-integration-study section 4.2, might need to specify behaviour in light of KEMs with a non-zero failure probility.</t>

<t>This document follows the construction of <xref target="I-D.ounsworth-cfrg-kem-combiners"/>, which is repeated here for clarity:</t>

<figure><artwork><![CDATA[
KDF(counter || k_1 || ... || k_n || fixedInfo, outputBits)

where
k_i = H(ss_i || ct_i)
]]></artwork></figure>

<t>where:</t>

<t><list style="symbols">
  <t><spanx style="verb">KDF</spanx> and <spanx style="verb">H</spanx>, and <spanx style="verb">outputBits</spanx> represent a hash functions suitable to the chosen KEMs,</t>
  <t><spanx style="verb">fixedInfo</spanx> any additional context string provided by the protocol,</t>
  <t><spanx style="verb">counter</spanx> is fixed to the 32-bit value <spanx style="verb">0x00000001</spanx>,</t>
  <t><spanx style="verb">||</spanx> represents concatenation.</t>
</list></t>

<t>Each registered composite KEM algorithm must specify the exact KEM combiner construction that is to be used.</t>

<t>For convenience we define the following KMAC-basid intantiations of KEM combiner:</t>

<texttable title="KEM Combiners" anchor="tab-kem-combiners">
      <ttcol align='left'>KEM Combiner</ttcol>
      <ttcol align='left'>KDF</ttcol>
      <ttcol align='left'>H</ttcol>
      <ttcol align='left'>outputBits</ttcol>
      <c>KMAC128/256</c>
      <c>KMAC128</c>
      <c>SHA3-256</c>
      <c>256</c>
      <c>KMAC256/384</c>
      <c>KMAC256</c>
      <c>SHA3-512</c>
      <c>384</c>
      <c>KMAC256/512</c>
      <c>KMAC256</c>
      <c>SHA3-512</c>
      <c>512</c>
</texttable>

<t>KMAC is defined in NIST SP 800-185 <xref target="SP800-185"></xref>. The <spanx style="verb">KMAC(K, X, L, S)</spanx> parameters are instantiated as follows:</t>

<t><list style="symbols">
  <t><spanx style="verb">K</spanx>: the ASCI value of the name of the Kem Type OID.</t>
  <t><spanx style="verb">X</spanx>: the value &quot;<spanx style="verb">0x00000001 || k_1 || ... || k_n || fixedInfo</spanx>&quot;, where <spanx style="verb">k_i = H(ss_i || ct_i)</spanx>, as defined above.</t>
  <t><spanx style="verb">L</spanx>: integer representation of <spanx style="verb">outputBits</spanx>.</t>
  <t><spanx style="verb">S</spanx>: empty string.</t>
</list></t>

<t>~~~ BEGIN EDNOTE ~~~</t>

<t>these choices are somewhat arbitrary but aiming to match security level of the input KEMs. Feedback welcome.</t>

<t><list style="symbols">
  <t>Kyber512: KMAC128/256</t>
  <t>Kyber768: KMAC256/384</t>
  <t>Kyber1024 KMAC256/512</t>
</list></t>

<t>~~~ END EDNOTE ~~~</t>

<t>For example, the KEM combiner instantiation of the first entry of <xref target="tab-kem-algs"/> would be:</t>

<figure><artwork><![CDATA[
ss = KMAC128("id-Kyber512-ECDH-P256-KMAC128", 
    0x00000001 || SHA3-256(ss_1 || ct_1) || SHA3-256(ss_2 || ct_2) || fixedInfo,
    256, "")
]]></artwork></figure>

</section>
</section>
<section anchor="sec-alg-ids"><name>Algorithm Identifiers</name>

<t>This table summarizes the list of explicit composite Signature algorithms by the key and signature OID and the two component algorithms which make up the explicit composite algorithm.  These are denoted by First Signature Alg, and Second Signature Alg.</t>

<t>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 &quot;2.16.840.1.114027.80.5.2&quot;</t>

<t>Therefore &lt;CompKEM&gt;.1 is equal to 2.16.840.1.114027.80.5.2.1</t>

<t>The &quot;KEM Combiner&quot; column refers to the definitions in <xref target="sec-kem-combiner"/>.</t>

<texttable title="Composite KEM key types" anchor="tab-kem-algs">
      <ttcol align='left'>KEM Type OID</ttcol>
      <ttcol align='left'>OID</ttcol>
      <ttcol align='left'>First Algorithm</ttcol>
      <ttcol align='left'>Second Algorithm</ttcol>
      <ttcol align='left'>KEM Combiner</ttcol>
      <c>id-Kyber512-ECDH-P256-KMAC128</c>
      <c>&lt;CompKEM&gt;.1</c>
      <c>Kyber512</c>
      <c>ECDH-P256</c>
      <c>KMAC128/256</c>
      <c>id-Kyber512-ECDH-brainpoolP256r1-KMAC128</c>
      <c>&lt;CompKEM&gt;.2</c>
      <c>Kyber512</c>
      <c>ECDH-brainpoolp256r1</c>
      <c>KMAC128/256</c>
      <c>id-Kyber512-X25519-KMAC128</c>
      <c>&lt;CompKEM&gt;.3</c>
      <c>Kyber512</c>
      <c>X25519</c>
      <c>KMAC128/256</c>
      <c>id-Kyber768-RSA-KMAC256</c>
      <c>&lt;CompKEM&gt;.4</c>
      <c>Kyber768</c>
      <c>RSA-KEM</c>
      <c>KMAC256/384</c>
      <c>id-Kyber768-ECDH-P256-KMAC256</c>
      <c>&lt;CompKEM&gt;.5</c>
      <c>Kyber768</c>
      <c>ECDH-P256</c>
      <c>KMAC256/384</c>
      <c>id-Kyber768-ECDH-brainpoolP256r1-KMAC256</c>
      <c>&lt;CompKEM&gt;.6</c>
      <c>Kyber768</c>
      <c>ECDH-brainpoolp256r1</c>
      <c>KMAC256/384</c>
      <c>id-Kyber768-X25519-KMAC256</c>
      <c>&lt;CompKEM&gt;.7</c>
      <c>Kyber768</c>
      <c>X25519</c>
      <c>KMAC256/384</c>
      <c>id-Kyber1024-ECDH-P384-KMAC256</c>
      <c>&lt;CompKEM&gt;.8</c>
      <c>Kyber1024</c>
      <c>ECDH-P384</c>
      <c>KMAC256/512</c>
      <c>id-Kyber1024-ECDH-brainpoolP384r1-KMAC256</c>
      <c>&lt;CompKEM&gt;.9</c>
      <c>Kyber1024</c>
      <c>ECDH-brainpoolP384r1</c>
      <c>KMAC256/512</c>
      <c>id-Kyber1024-X448-KMAC256</c>
      <c>&lt;CompKEM&gt;.10</c>
      <c>Kyber1024</c>
      <c>X448</c>
      <c>KMAC256/512</c>
      <c>id-composite-kem-KMAC128</c>
      <c>&lt;CompKEM&gt;.11</c>
      <c>Any</c>
      <c>Any</c>
      <c>KMAC128/256</c>
      <c>id-composite-kem-KMAC256</c>
      <c>&lt;CompKEM&gt;.12</c>
      <c>Any</c>
      <c>Any</c>
      <c>KMAC256/512</c>
</texttable>

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

<t><list style="symbols">
  <t><em>ECDH</em>: There does not appear to be a single IETF definition of ECDH, so we refer to the following:
  <list style="symbols">
      <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"></xref>.</t>
      <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"></xref></t>
    </list></t>
  <t><em>Kyber</em>: <xref target="I-D.ietf-lamps-kyber-certificates"/></t>
  <t><em>RSA-KEM</em>: <xref target="RFC5990"></xref></t>
  <t><em>X25519 / X448</em>: <xref target="RFC8410"></xref></t>
</list></t>

<t>EDNOTE: I believe that <xref target="SP.800-56Ar3"></xref> and <xref target="BSI-ECC"></xref> give equivalent and interoperable algorithms, so maybe this is extranuous detail to include?</t>

<section anchor="notes-on-id-kyber768-rsa-kmac256"><name>Notes on id-Kyber768-RSA-KMAC256</name>

<t>Use of RSA-KEM <xref target="RFC5990"></xref> deserves a special explanation.</t>

<t><spanx style="verb">GenericHybridParameters</spanx> is defined in <xref target="RFC5990"></xref>, repeated here for clarity:</t>

<figure><artwork><![CDATA[
GenericHybridParameters ::= {
    kem  KeyEncapsulationMechanism,
    dem  DataEncapsulationMechanism
}
]]></artwork></figure>

<t>The <spanx style="verb">GenericHybridParameters.kem</spanx> MUST be <spanx style="verb">id-kem-rsa</spanx> as defined in <xref target="RFC5990"></xref>:</t>

<figure><artwork><![CDATA[
id-kem-rsa OID ::= {
    is18033-2 key-encapsulation-mechanism(2) rsa(4)
}
]]></artwork></figure>

<t>The associated parameters for id-kem-rsa have type
RsaKemParameters:</t>

<figure><artwork><![CDATA[
RsaKemParameters ::= {
    keyDerivationFunction  KeyDerivationFunction,
    keyLength              KeyLength
}
]]></artwork></figure>

<t>For use with <spanx style="verb">id-Kyber768-RSA-KMAC256</spanx>, the <spanx style="verb">keyDerivationFunction</spanx> SHALL be <spanx style="verb">id-sha3-384</spanx> and <spanx style="verb">keyLength</spanx> SHALL be <spanx style="verb">384</spanx>.</t>

<t>EDNOTE: I&#39;m borrowing <spanx style="verb">id-sha3-384</spanx> from draft-turner-lamps-adding-sha3-to-pkix-00, which looks ilke was abandoned. Do we have PKIX OIDs for SHA3?</t>

<t>EDNOTE: Since the crypto is fixed, we could omit the parameters entirely and expect implementations to re-constitute the params structures as necessary in order to call into lower-level crypto libraries.</t>

<t>TODO: there must be a way to put all this the ASN.1 Module rather than just specifying it as text?</t>

</section>
<section anchor="sec-generic-composite-kem"><name>Notes on Generic Composite</name>

<t>The <spanx style="verb">id-alg-composite-kem-KMAC128</spanx> and <spanx style="verb">id-alg-composite-kem-KMAC256</spanx> object identifiers are used for identifying a generic composite KEM algorithm. This allows arbitrary combinations of component key transport, key agreement and KEM algorithms without needing the combination to be pre-registered or standardized. Thes generic KEM composite algorithms use KMAC128 and KMAC256-based KEM combiners and so are intended for use with component KEM algorithms that target the 128 bit or 256 bit security levels respectively.</t>

<t>When the <spanx style="verb">id-alg-composite-kem-KMAC128</spanx> or <spanx style="verb">id-alg-composite-kem-KMAC256</spanx> object identifiers are used with an <spanx style="verb">AlgorithmIdentifier</spanx>, the <spanx style="verb">AlgorithmIdentifier.parameters</spanx> MUST be of type <spanx style="verb">CompositeKemParams</spanx> containing an <spanx style="verb">AlgorithmIdentifier for each component algorithm in the same order as the ciphertexts appear in the corresponding </spanx>CompositeCiphertextValue`.</t>

</section>
</section>
<section anchor="sec-asn1-module"><name>ASN.1 Module</name>

<figure><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(999)}

DEFINITIONS IMPLICIT TAGS ::= BEGIN

EXPORTS ALL;

IMPORTS

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

id-rsa-kem, GenericHybridParameters
    FROM CMS-RSA-KEM
      { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
        pkcs-9(9) smime(16) modules(0) cms-rsa-kem(21) }

id-RSASSA-PSS, RSASSA-PSS-Params
    FROM PKCS-1 {
       iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-1(1)
       modules(0) pkcs-1(1)
   }

id-composite-key,
pk-composite-kem,
id-Kyber512-ECDH-P256-KMAC128,
pk-Kyber512-ECDH-P256-KMAC128,
id-Kyber512-ECDH-brainpoolP256r1-KMAC128,
pk-Kyber512-ECDH-brainpoolP256r1-KMAC128,
id-Kyber512-X25519-KMAC128,
pk-Kyber512-X25519-KMAC128,
id-Kyber768-RSA-KMAC256,
pk-Kyber768-RSA-KMAC256,
id-Kyber768-ECDH-P256-KMAC256,
pk-Kyber768-ECDH-P256-KMAC256,
id-Kyber768-ECDH-brainpoolP256r1-KMAC256,
pk-Kyber768-ECDH-brainpoolP256r1-KMAC256,
id-Kyber768-X25519-KMAC256,
pk-Kyber768-X25519-KMAC256,
id-Kyber1024-ECDH-P384-KMAC256,
pk-Kyber1024-ECDH-P384-KMAC256,
id-Kyber1024-ECDH-brainpoolP384r1-KMAC256,
pk-Kyber1024-ECDH-brainpoolP384r1-KMAC256,
id-Kyber1024-X448-KMAC256,
pk-Kyber1024-X448-KMAC256
    FROM CompositeKeys-2023
           {iso(1) identified-organization(3) dod(6) internet(1) security(5)
       mechanisms(5) pkix(7) id-mod(0) id-mod-composite-keys(98)};



--
-- Composite structures
--

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

CompositeKemParams ::= SEQUENCE SIZE (2..MAX) OF AlgorithmIdentifier{
    KEM-ALGORITHM, {KEMAlgSet} }

ExplicitCompositeKemParams{KEM-ALGORITHM:FirstKemAlg, 
   KEM-ALGORITHM:SecondKemAlg}  ::=     
      SEQUENCE {
        kemAlgorithm1   AlgorithmIdentifier
                        { KEM-ALGORITHM, {FirstKemAlg}},
            kemAlgorithm2   AlgorithmIdentifier
                        { KEM-ALGORITHM, {SecondKemAlg}} }                                                               
                                                        

kema-explicitCompositeKEM{OBJECT IDENTIFIER:id, PUBLIC-KEY:publicKeyObject, 
    CompositeKemParams} KEM-ALGORITHM ::=  {
         IDENTIFIER id
         VALUE CompositeCiphertextValue
         PARAMS TYPE CompositeKemParams ARE required
         PUBLIC-KEYS {publicKeyObject} }



-- Generic Composite KEM


-- TODO: To be replaced by IANA
id-composite-kem-KMAC128 OBJECT IDENTIFIER ::= {
  joint-iso-itu-t(2) country(16) us(840) organization(1) entrust(114027)
  algorithm(80) tbd(98) }

kema-Composite-kem-KMAC128 KEM-ALGORITHM ::= {
    IDENTIFIER id-composite-kem-KMAC128
    VALUE CompositeCiphertextValue
    PARAMS TYPE CompositeKemParams ARE required
    PUBLIC-KEYS {publicKeyObject} }


-- TODO: To be replaced by IANA
id-composite-kem-KMAC256 OBJECT IDENTIFIER ::= {
  joint-iso-itu-t(2) country(16) us(840) organization(1) entrust(114027)
  algorithm(80) tbd(99) }

kema-Composite-kem-KMAC256 KEM-ALGORITHM ::= {
    IDENTIFIER id-composite-kem-KMAC256
    VALUE CompositeCiphertextValue
    PARAMS TYPE CompositeKemParams ARE required
    PUBLIC-KEYS {publicKeyObject} }




-- Explicit Composite KEMs


kema-Kyber512-ECDH-P256-KMAC128 KEM-ALGORITHM ::= 
    kema-explicitCompositeKEM{id-Kyber512-ECDH-P256-KMAC128, 
    pk-Kyber512-ECDH-P256-KMAC128,
    ExplicitCompositeKemParams{{kema-Kyber512TBD}, {kema-ecdh-p256}} }

--TODO: `kema-ecdh-p256` does not actually exist yet.


kema-Kyber512-ECDH-brainpoolP256r1-KMAC128 KEM-ALGORITHM ::= 
    kema-explicitCompositeKEM{id-Kyber512-ECDH-brainpoolP256r1-KMAC128, 
    pk-Kyber512-ECDH-brainpoolP256r1-KMAC128,
    ExplicitCompositeKemParams{{kema-Kyber512TBD}, {kema-ecdh-brainpoolp256r1}} }

--TODO: `kema-ecdh-brainpoolp256r1` does not actually exist yet.


kema-Kyber512-X25519-KMAC128 KEM-ALGORITHM ::= 
    kema-explicitCompositeKEM{id-Kyber512-X25519-KMAC128, 
    pk-Kyber512-X25519-KMAC128,
    ExplicitCompositeKemParams{{kema-Kyber512TBD}, {kema-x25519}} }

--TODO: `kema-x25519` does not actually exist yet.


kema-Kyber768-RSA-KMAC256 KEM-ALGORITHM ::=
    kema-explicitCompositeKEM{id-Kyber768-RSA-KMAC256, 
    pk-Kyber768-RSA-KMAC256,
    ExplicitCompositeKemParams{{kema-Kyber512TBD}, {kema-kem-rsa}} }


kema-Kyber768-ECDH-P256-KMAC256 KEM-ALGORITHM ::= 
    kema-explicitCompositeKEM{id-Kyber768-ECDH-P256-KMAC256, 
    pk-Kyber768-ECDH-P256-KMAC256,
    ExplicitCompositeKemParams{{kema-Kyber768TBD}, {kema-ecdh-p256}} }

--TODO: `kema-ecdh-p256` does not actually exist yet.



kema-Kyber768-ECDH-brainpoolP256r1-KMAC256 KEM-ALGORITHM ::= 
    kema-explicitCompositeKEM{id-Kyber768-ECDH-brainpoolP256r1-KMAC256, 
    pk-Kyber768-ECDH-brainpoolP256r1-KMAC256,
    ExplicitCompositeKemParams{{kema-Kyber768TBD}, {kema-ecdh-brainpoolp256r1}} }

--TODO: `kema-ecdh-brainpoolp256r1` does not actually exist yet.


kema-Kyber768-X25519-KMAC256 KEM-ALGORITHM ::= 
    kema-explicitCompositeKEM{id-Kyber768-X25519-KMAC256, 
    pk-Kyber768-X25519-KMAC256,
    ExplicitCompositeKemParams{{kema-Kyber768TBD}, {kema-x25519}} }

--TODO: `kema-x25519` does not actually exist yet.


kema-Kyber1024-ECDH-P384-KMAC256 KEM-ALGORITHM ::= 
    kema-explicitCompositeKEM{id-Kyber1024-ECDH-P384-KMAC256, 
    pk-Kyber1024-ECDH-P384-KMAC256,
    ExplicitCompositeKemParams{{kema-Kyber1024TBD}, {kema-ecdh-p384}} }

--TODO: `kema-ecdh-p384` does not actually exist yet.


kema-Kyber1024-ECDH-brainpoolP384r1-KMAC256 KEM-ALGORITHM ::= 
    kema-explicitCompositeKEM{id-Kyber1024-ECDH-brainpoolP384r1-KMAC256, 
    pk-Kyber1024-ECDH-brainpoolP384r1-KMAC256,
    ExplicitCompositeKemParams{{kema-Kyber1024TBD}, {kema-ecdh-brainpoolp384r1}}}

--TODO: `kema-ecdh-brainpoolp384r1` does not actually exist yet.


kema-Kyber1024-X448-KMAC256 KEM-ALGORITHM ::= 
    kema-explicitCompositeKEM{id-Kyber1024-X448-KMAC256, 
    pk-Kyber1024-X448-KMAC256,
    ExplicitCompositeKemParams{{kema-Kyber1024TBD}, {kema-x448}} }

--TODO: `kema-x448` does not actually exist yet.

END

<CODE ENDS>

]]></sourcecode></figure>

</section>
<section anchor="sec-iana"><name>IANA Considerations</name>
<t>The following need to be assigned by IANA:</t>

<t><list style="symbols">
  <t>The OID for the ASN.1 module <spanx style="verb">Composite-KEM-2023</spanx>,</t>
  <t>OIDs for <spanx style="verb">id-composite-kem-KMAC128</spanx>, <spanx style="verb">id-composite-kem-KMAC256</spanx></t>
</list></t>

<!-- End of IANA Considerations 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, certificate, or signature contains a single cryptographic algorithm. If and when an algorithm becomes deprecated (for example, RSA-512, or SHA1), it is obvious that structures using that algorithm are implicitly 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, certificate, signature, or ciphertext may contain a mixture of deprecated and non-deprecated algorithms.</t>

<t>Specifying behaviour in these cases is beyond the scope of this document, but should be considered by Implementers and potentially in additional standards.</t>

<t>EDNOTE: Max is working on a CRL mechanism to accomplish this.</t>

</section>
<section anchor="or-modes"><name>OR Modes</name>

<t>TODO -- we&#39;ll need security consideration analysis of whatever OR modes we choose.</t>

</section>
<section anchor="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 inherits all of its security considerations, which the authors believe have all been addressed in the concrete choices for both explicit and generic composites.</t>

<!-- End of Security Considerations section -->

</section>
</section>


  </middle>

  <back>


    <references title='Normative References'>

&RFC2119;
&RFC5280;
&RFC5480;
&RFC5652;
&RFC5990;
&RFC8017;
&RFC8174;
&RFC8410;
&RFC8411;
&I-D.draft-ounsworth-pq-composite-keys-04;
&I-D.draft-housley-lamps-cms-kemri-02;
&I-D.draft-ietf-lamps-kyber-certificates-00;
<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>


    </references>

    <references title='Informative References'>

&RFC5639;
&RFC6090;
&RFC7296;
&RFC7748;
&RFC8446;
&RFC8551;
&I-D.draft-ounsworth-pq-composite-sigs-08;
&I-D.draft-ietf-tls-hybrid-design-04;
&I-D.draft-driscoll-pqt-hybrid-terminology-01;
&I-D.draft-ounsworth-cfrg-kem-combiners-03;


    </references>


<section anchor="appdx-samples"><name>Samples</name>

<t>TBD</t>

</section>
<section anchor="sec-in-pract"><name>Implementation Considerations</name>

<t>This section addresses practical issues of how this draft affects other protocols and standards.</t>

<t>EDNOTE 10: Possible topics to address:</t>

<t><list style="symbols">
  <t>The size of these certs and cert chains.</t>
  <t>In particular, implications for (large) composite keys / signatures / certs on the handshake stages of TLS and IKEv2.</t>
  <t>If a cert in the chain is a composite cert then does the whole chain need to be of composite Certs?</t>
  <t>We could also explain that the root CA cert does not have to be of the same algorithms. The root cert SHOULD NOT be transferred in the authentication exchange to save transport overhead and thus it can be different than the intermediate and leaf certs.</t>
  <t>We could talk about overhead (size and processing).</t>
  <t>We could also discuss backwards compatibility.</t>
  <t>We could include a subsection about implementation considerations.</t>
</list></t>

<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 &quot;ease of migration&quot; 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 &quot;backwards compatibility&quot; 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"></xref> and IKEv2 <xref target="RFC7296"></xref>, to non-negotiated asynchronous protocols such as S/MIME signed email <xref target="RFC8551"></xref>, as well as myriad other standardized and proprietary protocols and applications that leverage CMS <xref target="RFC5652"></xref> encrypted structures.</t>

<section anchor="k-of-n-modes"><name>K-of-N modes</name>

<t>~~~ BEGIN EDNOTE ~~~
In the context of encryption, K-of-N modes could mean one of two things:</t>

<t>Type 1: sender uses a subset</t>

<t>This would mean the sender (encrypter) uses a subset of K the N component keys within the receiver&#39;s public key. The obvious way to combine them is with skipping the unused keys / algorithms and emitting a NULL ciphertext in their place. This mechanism is straight-forward and allows ease of migration where a sender encounters a composite encryption public key where it does not support all component algorithms. It also supports performance optimization where, for example, a receiver can be issued a key with many component keys and a sender can choose the highest-performance subset that are still considered safe.</t>

<t>Type 2: receiver uses a subset</t>

<t>This would mean that the sender (encrypter) uses all N of the component keys within the receiver&#39;s public key in such a way that the receiver (decrypter) only needs to use K private keys to decrypt the message. This implies the need for some kind of Shamir&#39;s-like secret splitting scheme. This is a reasonably complex mechanism and it&#39;s currently unclear if there are any use-cases that require such a mechanism.</t>

<t>~~~ END EDNOTE ~~~</t>

</section>
<section anchor="parallel-pkis"><name>Parallel PKIs</name>

<t>We present the term &quot;Parallel PKI&quot; 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"></xref>.</t>

<t>EDNOTE: I copied and pruned this text from <xref target="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:   I don&#39;t think this applies to this draft.</t>

</section>
<section anchor="contributors-and-acknowledgements"><name>Contributors and Acknowledgements</name>
<t>This document incorporates contributions and comments from a large group of experts. The Editors would especially like to acknowledge the expertise and tireless dedication of the following people, who attended many long meetings and generated millions of bytes of electronic mail and VOIP traffic over the past year in pursuit of this document:</t>

<t>Serge Mister (Entrust), Ali Noman (Entrust), Scott Fluhrer (Cisco), Jan Klaussner (D-Trust), Max Pala (CableLabs), and
Douglas Stebila (University of Waterloo).</t>

<t>We are grateful to all, including any contributors who may have
been inadvertently omitted from this list.</t>

<t>This document borrows text from similar documents, including those referenced below. Thanks go to the authors of those
   documents.  &quot;Copying always makes things easier and less error prone&quot; - <xref target="RFC8411"></xref>.</t>

<section anchor="making-contributions"><name>Making contributions</name>

<t>Additional contributions to this draft are welcome. Please see the working copy of this draft at, as well as open issues at:</t>

<t>https://github.com/EntrustCorporation/draft-composite-kem/</t>

<!-- End of Contributors section -->

</section>
</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA9V9bXbbSJLgf54iV/XelDRLUCItuWTV9PTIFF1m2/poUe6q
3lq/EkgkJbRAgI0EJbNt9ds77AH2MHuTPcnGR36CgOxy9czs+s10UUAiMzIy
Mr4zMoqiTpVWmTwSw2KxLFRaSfFmdCpeFaV4p6QY5/B/lSxzWYmLN+NOPJ2W
8v5IXPzR/0CuVScpZnm8gI6SMp5XUbHK1UNRVrfR8q/RzDSN7uQi2ut3Ot+I
f/kvUSRUFefJL3FW5PBhVa6kiKJ/7aTLkv5S1WBv78XeoBOXMj4SEzlblWm1
7qgK/l4cifHo6lXn4eZIvD0+vZh07h6OLLDRCULRmcXVEQySdDqzIklzaLpS
UaxmadpZpkcC/n0jZnEOT6WIyzJei+10LuIsE2updgQg4TZWt+JWlrIjRFXM
jvAF/FQwtVLO1RF1kch5vMoqBS3M+/WCX+OfnXhV3RblUQcHjOh/hUhzeHva
E+cGUfo5I/E0vZMbr4oSJjDKCTPibboAhCb6lVkX/VY/RURJwMDgYG9PTIoM
kF2JyyJOxP/5H/9TTFa4eP29Pd16Brg9EudVFT/EXXGeV3GZFuYdrGdVwuth
nMdJbJ8mAOubwRvx7IcD/Uwu4jQ7EguYQM8Swb9JhqsHlNDZRMMfeuIHQH6A
gT8Ut7n/9P+nyf8FYO/dAOzhvPOiXMRVei+REi5fDQf9/gv982BwuGd+7ruf
zw8G5ueLF+bp4V7/O/Oz/92++bnf33M/+/hzHJ30PrMb1yra2w/b3hYrlcl1
lMWLpYpmC4WbtkyjvUHYLpXVXDe6W09lGc1kWaXzFPachF4JmMnr42dM9prL
bMGT6JmY4L6PywQYiSwXqwqwUuTRy1jJRLzGHQevxehDJaHVNJPR+aparirx
apXPsKXqilfji4m4ePdSDPYGXXFyPoa17D3fGxzuno0nVz183YNXWzS43n/C
J6WtMxo0zoBnKIBuBeRQzC1kikC4krPbvMiKG2AM2O8O95fAFI/E8eoGaXGw
1+flB5K5QYK7raqlOtrdze+z5WqqenkKBHBT3O/iD3yyi9CFcPaWyfy/I8Iu
Dvf2ov7hQRPWTmQJxJM4NByJGbx5M+qKN6fHw664Wi0zafF3EZfAyWSGDwI8
/GPRcCJncgHrj4h4/isRMVnKWRpnF6tphnSDc2K8TC56GhGIGej1p95z3gA+
Wsb5nLdUkYvKwRiJ48lZry9kzlxfXK4yCcii0eZ6IJwlEFw6A7bhNxPbL0eX
O13c60UObbON90N4T2g5gWnA81WqbmFV6s1OoNmWBpgxdVbcW0wZjhEuiV6U
8dW76MqwMVh0qVKYqWs0npzvjkfDI3F4ODiI+ke6v5eTcTQaDkPSobWjefyw
ShOZpbnEhuLqMtp71gdGIUZZli4rQMRwVd5LMSzXy6oA7rW8XffEn2SpEFuD
Xn+vnYheyUQCsYnzOaBXClgV4a+NkdyA28k4IB6A/DDae446ARI/LfrB8+Oy
xjUuJTCtBXID6g/7v4jTMvoxVaR+RCPQJICG1C00qsRkdisXsAbvFK4HLNOs
lEDXb4sb4OrV7SKYY7Cll2WaEVD/LnzjH7cxCEe0NTpWmRqdnJ1fjY7EfAX6
i1qDCPtAmKpuU4UqCqx8QqqMA+AGsLGaonTancXTYveujBdJ8ZBH5Xw2eD54
QepYJzVLaSXXwfNnRnI937OC6bvBi+fm53f7h1Ya7ZunhwcHXyaYVHoDIuSw
QeBUmYpu19MyTaIEtsVNviG/khLWu8gy6LEyTUEpXKS8IEBqbSDM5uUNaagA
yBSwVQIMQIj4LwL8xlNQKeJZ1elc3UpQcIB8mPMUAsCuor+u4rxaLcTMIy4B
qF/l6V9Bs02hJXwHi1EV5RppZgEaRJmLJIVlAHoKv8PWcSVyCUskS/q0yBJR
rKqbAqk6L/hhLh+gMUCMD+PspiAKBzIsJVHCmjVpWHqEsyyAT1ZI7bGmDSlK
+ddVWkIDepqlc1mlsHt6Aqdpx3Ndd4VazUDEKHE5OSZyl4aDzJCDdMUCFOk5
atEwZICVGLSwtUqhi4fbNJM0vAU+QKI3k3kMLAVEHqgXcZoDFwFKBWVgWlS3
1MEqBzRma+wCiBR2PizLTCF8DwAY/vcWNuYDIgSBVcW8oj/SBUhL5Be8vxjf
tzGwwLzAH9B0hfwsRZYCnQILgyEQNzivErg8YkfMslgpYrA8RWANa8RFDLrk
7I75QTiUmK5uVK/TGQJ/SUHbcq+B5Ah5D8DJcJAsXsPae4SB/TrM0DoQ2GDD
8HjQ/KFYAaHkkpccVOP4jkwaoDjEDpJWUSZIU4XALVcC+hWvBVHAVNJqMKlA
JyviopoOY3GBy/RHvUy74qqMk1RzxNe027r1JsGfpg0QH28zi33gTMUcqQ7Z
VTFbIUK6jD4wrRDSOGflj5kZoFYoLdLRjgDUV6mV7bzzxTJG+G6A/lAXSsSW
ZTJbQIMwpFiA5ZYC/tvRjMSiWQKhFLkhjg1ogc9AiYYdAZwIKUTSxOARKh/x
Uq0yBmgBAgGgVwuxDeb1jrdyMO812aBTWAJYK8R4rFz3cQXLMxPF9C+4cfkD
WpwCmJzI5L3MgJQ6AdYsgrAtMK3VDEFzFvswXcLUK/mh+lOcAWuCzQjgpDQq
MAMAXWpqAeaAKEbWDyaS+UoR75AxfETozHFMi7AeaO5LEFtpBdhPcdMo7K2G
UCOQeGx1S0S7AIsN2CJo1dbrgHSsedGNBJ6MXMZ6HhDR1XopCfZMFbVeYcmL
BxxumgLnBqYbUBzAZL4nyx0WYJkBr0kMq7b4YjEMegZRo3sM6jisFz63SAam
A3NEvoCAE8O4lf64ZqRSRqW8AWEgkfUCOvFJfAM2a9Ij9wut86qEoWgxuAvs
EAgI9oDrFnblXFsEYg6bWXz8iNLtKbn2+EiCCcytTdqB38BlQdfS/AOHQbsi
oZmZcd0CqI6jMEY/4q8Ow4bdCSAgMgnPpxOcFCh56RKZLaqO3o6xvbVYpo+P
OAlWgaBHwNWxltSsvpDwXqRJkknUlYbQ7Y3ESYp7rdySS+qfxWQ9K0Hn/xtO
3CkMPO1fo1/0oC8eJWnfc7RSL8dXYnJ1OT77AVF9Prwamb+xD7uNHL4DAjbE
jnhkiwc0ChRLqyWqswnOFvZRCQ+ZOj5+o+QsSvHRY6dzogXaLTKeOFfpZ7WZ
LnNpwAiIk2lNKNMe0gxH5jeAM6TaFp76Pchm7iYHKVcAqkpfW0GArFQJ9CJP
9QCzPwX5LKPXIOYXcQ5/a30EoEjLmlYi7kH3hylZ3QMAQFFLbAMFfjA8dRDg
oZTEHHCLoEpXgZ1ArJsUhpqyAPYGSPac2YVRGBIkm3sUofBwnn5oVArEuzxD
1x8wg3tSDVoQ6NRPwwpui5S5Nkg1WkVuwTqPYYeWA3vvq6KLex5RAJiYZTIu
gYPfQydA7VrzdMruEjhwAeI7rQh7QARxcg8Yim8kgotyAWQZTArMvW/r4IP9
SS8sX0GylrRlrRReEq9FFuHB22OdO4E1KNbEpZgj6l3B3xAzoum6NyDKEAKE
nNWYNiWTaJE0zeoBsHCL2gKyCWQf4tii3dK2R/pHonknGVSpAgggGNdqC6w9
OxjrAOGiTGt6vKFfIlweEkkW2Fkmb+LZ2sPGRn+gI5UVYl8CU5A9IY6Brll1
BkUJFgbXFCkgZ6iJdpkMPNyzxtk4DvrLAeIZfrxi3yfxf2Ad01VlBCvKlzJd
dHkH4Zg40bu8eKhTKim2CfJpFN/YudNYQXZF4tRQ5mdXYQ3IM3jQJo8TMlr7
J4WBiFghRSfeNmOGzSvhVH7UBumRv75RTPaFz7c2xSxM4h72A+pcTtRBd3GS
gBahPBQ00ZyYwv+t0ow0jOLLxC18woMaLLFVTzQIL2Y46tyq5WROfVY1BliK
QBWu6b0FoJ9+9cRLsE4eyENCqnyVTtMMeYHmPQmsx6xC5CKTNEpYYAoQBWml
dsX6MLCBjx9RqE1N7xH3zkpBu2aDEyV9EhYxXqKcjTU8YKGyYUAUQVMKnEuo
+eagdcPUkNNgh5W/h7ViRWoDzOHizfgn/AaVHKclInDffOMxlonMJAvpITwA
mo2Z5TlW5giiUQmoowvkW0liQSEnn83A5KN1L/TSI6XjgxvjFVRHnU6/BxxB
LyYa977eCn1rmk3ENi4FNiCFA/i+Aq2JlnGBbjDgUjvoBahmt0ZtROeVuPjj
ULxFi0U8C5g7DDsKhXXNWLADU1+hFp+zIaLtFRrnZ+2Xet8VL0vYL8sCTKWf
td/qPduUo4SJ8WftrXrPI4MIDkFVoi+iAF6CKJjc4OB5NEU9jXowDJr6ybiP
fejjYPPDZ4f79GGoqihtBHssYoqeExBOU1k9SFhQ6gWXz7EiZZysekhASCjs
UBfx1CrfoYPvSJ4oJkO090OQLGMGEzXRWs8DAAf8qiC6p1V0UwasgVGbpEgM
Smy/ijPYKgf9AQ31BuNF8MdOsLjdZqTWAOmGexh6RV2ftgBGcWexkkxRlpAn
F6/HZ8PJf22lZuzHfsvb3jhgMOqEIWDgL7inreDWnE87GbyO9dCbpqrbvvWh
A+/Pw21hByeYfFrHDZal5MxDDtW1tiZ5B4Ft3sLi4MITUyAvoXwQ5+MToCh2
NuXG0gatQn6Q5QzlKImd+wImkiq10iZsjUsbtSqTH2rSYFkA81x7olQra+w8
V3Y2ALw0UhahviH7vGZPenZ0nbEZa9E6gvzP3Lo8KQnRr6wNz6/+WPlRpNCX
AaCyfSIeYmMRyVil2VprFs9QEiyKUjb5TRRp1Q8xTn2WavO7yOFjHhIEke9X
aXWKeMoT+z+0Uu7cIPmKwlBGh0YwDM9hL0ohmdjADJllqwQ1UFJXVT2CJj0T
1dGpdhSUUm7OF8nDt9UDA1VpGch2OwjIK88OZ+vVM7Ufic5QQsNqASvfOn03
udrq8n/F2Tn9vhz98d34cnSCvyevj9++tT9Mi8nr83dvT9wv9+Xw/PR0dHbC
H8NTUXt0evznLWaeW+cXV+Pzs+O3W5uCGCmEDR7Se5cYiyIfH7D2WZlOmXBe
Di9Efx8oUCcGAKXxHxjjhz/QrOOxiCT4T9KfQX0BjR37wP0E2hdGE5CpK9zs
Dznxil6DMoS8E7kJKgu4YrQdPYR7zqTPOD1I2xqjqs7ipVtTMrApbxVSjeoo
whjLy9GlC3CKJ0KzjDm74X6myPB7dKe/HY/OrvxOjsEEt+5+Yj0p+tfvsMcV
u9XiGjcDaup5PRDO0pw2ATtlb2C7ddFzBPsAf2nND3/CtuWfCMz56cvxWTgn
o0/B1tMbCfqEFXJ6trqNUfUFOgciUd6ngQs6VLqDb3qdk3DMJ2PUbZh8Mzp1
fRw/6c4Ou2Bd/A7sLKII0H19WNiNivFajA6XsWX23TokOiMGYYGtCrtXTEbD
y9GVD9U9udGsbi4TqxyRBV8sFqucOJU2bhHZRtLHdc/EHdmhpHdnbGiwvgM6
jLbBySrGQdbES9klDt1ZiJaoiN1LZ67WQhl6x80kdUMbLlzuYC73aWBgc2jJ
QGutKrYjarl7EytDiYUiukfB6p06qxejEWpHs1Zat07nR1Azi7IEutRmkBZw
qWH68RcEODze0Ry3fXxETc6olQQ4BSBqykWJmV6IVtq+mmMp1vZRvjjpeUSJ
Zf8scMI/yHx7R0T/KraXd2D63+0cAcGA0jUlI09VGqtsAIael65eUAZMt6C9
7y3H8o5VZr109Ezd9QwEjG4Ym2GYge2qVAMMIQpbQKjiO96qYMesqkY4CkqP
IuxZL7OYmUQ4Cnr6lAbAWFBPJIGqAE2zisBVCgFNZDNoNaBsFh+DFqCD1Swf
oBqwDJTNc9GgUQQt1Q4oVsljdJ56bEwCdZbMABqtfNyyta2GVGwJw2lIRM1A
e9q5oH0ExO4TjDPfS+MSAfYMklIqo94SwaI8J6ehdcXTJ0k6n6MyT5uA49Se
4UVBJ3RQLUHH9DcOBdU+xDiU5VQEPAB+hR+EEZKA7+pswcfHHVYSyCuH0STC
yZNdH2OzL+q6J5rmjhqr8TMo59+jd6R61gJ28sOMgiPoJ4wRkLQKNNXWaF2D
zqyjdyAK0ThGTIfY3USF5/LTUVd0JxaVkavIEI2f0ikwoM8jgzluXTwbwYVX
6FdzYho67HkMYerYDmZVCPggASqpb1D2ygEWi5KSIwwJYFfIIZmxKdqxs+p7
DpO7AWvbGga1HZywlhJueS2reMK8iGD8YQgWEX85OY5wzX/Wiagol4/b8PrV
qMiFXGLeVqn3CBo5yMB/kcjCf5GaskOkEPFqLg9NiN8iD8HPdr4ALXpnG5do
OCcgZ28IhsMgDDEwC+SupmHUPozV46WmBITTDQcilsdd+BGaaavOFwpJpw6Q
j9fhhx1j5m03WBKDE5wksGTKCyTuxVjmaIlNsJCJ011tsJnzR/AhO929ibut
WtNxntRdOzq1Kk5z586C7QkzgB9zRpJiHu1JBOO5JWx34iRecr4C8yRPAnGK
jNgen51Ew+HxYMeIs4WMTQKQFkp6I5KMUZ7TpDZwpgO5ZhdXnO4g72XeuUkx
iIaYMQCixwgdZwWn0jhG52VWOMGLAY6Xa70SlWa7dhUCFv35eH+35mghRLb6
jtMc4EnZr2SQ5VaEZlwZ3wNGaPU4KBrPT86POGmDKYGCDJmgtCiVKpv0Ajiv
bouEVTlDlz6nY0+h3n6cGYJA9kiphdnFkVV7ETFWhQ2fPzJJcXjck/scPqiL
J9ZCgdH//e9/72yOAf8fHb/94fxyfPX6VBwd/U58JO1lfAKG5/jVeHQprv58
MRLnL/8wGl55j6nVn47fvhu1JgRQk4vjy+PTCXfiRpYLTOUGngCWkM3W4/bv
Xr4dD4E3/3kiPgLPc+CKR2owOR2fjqLh8QW+t/CciJd/FqCJAz6cf0s8wjc4
b8aYk33keyNPT6ydp2izhriQmY6MWxu/g9yB8plC8wSx+0lMxj+cHV+9uxxt
9iE+gVJqzY1PAlpH5p/Y/Oe9jcQnaOwtRkNjnNo5L/74hCEFQDkwPV/XNsnE
xmldoIYA4qVs/sdjTLw8KpflMWlKnHLRYDZpaQRNCS0jED1Ichjj9sEMqAZy
0QF6FzzBzACb7cnDeATUPJFQd7NfczJpsprJugfXzoYGIAL8hQiwYYCzgvOk
rDPf9ALf0j6vHTLbkLmnx3+mHASlillKuXPsyWpMDqh7GT4TMn3PRgEOQV7R
hnFqWQucgUDskU0AWt5iVc4wbuHr4PbDn3oHey+Ef3SGlIGWyCvn94C2NmbB
kpGORlZSt87cNWqIxLVe7nQ0wnZcluswzOvJIXQngiGVewxCRzu8WCdSAxCt
TsioUOB6Xk0cxCQ3B5ETRj2o/3eyjG5WYMmnMoKxHP61qwBjCO85VsqOjHcq
BsPhZVoBLfyI5MzSMSQKWgWC32WmsZx3iaNIDivqbNukFOEXuej8BAsydOvR
5praqfs4XY/kftao77EsEfgaVF9CMHI5/VR0jpPAMKQelNCeaO17Mol6/oao
55Ox/Gt7/ViLJvPrK/s1u15gBWDGufXu0872aIIfdTyttimM0QOBSIZ0KZew
3hjYItRpGWytDC1mW2eE8nUy+uO70dlwBALjv43E9qDXOz3+aUecvwqS5bTY
8tBjmCDzSMbNrM4h6SVgJnSfLd13fmzHwU2Kid5d1ldAvLWuSgQxP5sUgFRm
5cmYJU8qS0YHjJP3+p0Gbv40Oho6ZN0kkNNd8RH+hrYTWVlxry36b5W43hz2
2mUEE1ljwkOszWMVL5oDWSZI6bfjlPPY2tYeK93MswUS6nR+aI9sgWzDnCfi
YMwIYcDQRVAzpyhXSmueJZg0EjPxMONINSbHwWJxFq7czMGsBeyI0LVUhLmx
x4ozSAASZObklzDbycbBKBlfyQyD62QVeISnj364DFyYaIoRctC8CPLKC7DS
x9rYQeMqQ2eFxk1aBen+CmPNqOfAWEpiCHEcJiG6CBglhrmsnEKvmiWzE2Vo
wS10I/3gbtHdUtRk7eW9U8A/7FghyvnggbUzMLRNsS27Bg3krhlkGOLodE7j
fO3y5WvB2yAZTHuY/Q1M5yG8mPRUBkyNYwEFAFtp04+WOzV/9bSQqjfySIal
yAkoq/a0ok8pBEkIheDgpRHtZoVgLHMAjGblTn2xIq05FTEfYsRVfENrk3Fy
2XRdITtTmNOBw/v8VZtLvxfjOWykLmHqW6Wd2dmazQMw4sACzyXmkaFRS2dX
LAY8rGxOn5BjxItDhky+FAlav5mmrhc3Xtd5gOloAaoiRAPAJbCV/mCelshD
aJ0og9GmydELaNnV54cE+lJkTotlu85k3N53Fjd3Tc+9dgHpjL1kSamDHryB
ZyYjg7I2jBz2U+owjaPbfMKJtj72rIJ0C1JzZzO51CerXsIq0CHX0SWb3Lgf
hsb7YK1t62N4NLY/rMUSWpgjhg8PDz0JOmfck6uyWOJ/dpf+scYgc9LPmcRE
danTLyNVrZK1zQ/Y7w26mJt567ikyZGYSuCHKejclBFLTQBvpBFr0wCV2r/J
shDzOM1WnIDEiNsIkvv+UM400okKlHf4JV4Xe7QG+AYf7iHJQPp3hqdR11oN
enPyapsKDQDuPn0Sd7/08T+9Xo//yvE/8/SDTNBB39VRFFSEdzodkjadu19S
8Tvxelsp+AGtZ9Uv6Q6LeGpwhGccrmEc5snXr6+ZoK9dX9eOvQGiqPaF8fbh
abO0Io+XziHUIoeOo2DPFjrsf21zAcg/lJP/Te9/a5BO18FpJupF4+AacUY9
muGeDSgdjG3k670Pe/yvf02fffrkwa5CVRZZI5rc3nmbNj2N1ApDSjgqGGyz
KvS8BYRgsgpYThtFvfOKU9PugfJJd3qwZ2NCowHP7WNuWUoeXnuATWmatYOS
0yTYgfDnySv439dkSLslJB9I4CrhPz/Rs0/+G2yJAPQHh7uDg+fYUv9JX2Hx
hgiffxL0v7o1/N59drhvWtOHpjUm+H3CrMagNT5tb03/2/l4JL4B6go3EJ//
/t2WP3G1BZwGuxJpYJhR6uHkQuiyAeJnW0rhPSdKXeNH22+64qeueNsVk53r
uqrvzhAG+r7eN9dHtHbHk+FYE6Fm2jmpt3MdYlyIK3THnI9P8AjP9U/6M/5i
y6Pbz+/y662uViSvG/f2dZA3Qc57GvMtjEm8E8jE7glr1PnbnZpPoLlcLKu1
Ez1oiLwc/TA+04fKBXERlhl80oQxhjHaB0rps75sdJnE6ULnGrOCF6amGlxx
0BjZB6jawMUxhRuP7OLhgR7i3KSJHvlUap5/9/zwyKdH87y/N9j3KY8nMzo7
CabSeeWcMd1N5/rGaVKnB2BFlzXzf0OvwD4wMfBBxwg0Q1cKVkwDvr2VJpGZ
TjQanryOLjC/Vb+GdSZbLSQOs/9w0ft60fs79TcD/WawE0oI6hDadMXWlpYC
fr6505uNeYzO4DRRj1oGMqtXq8UCpNTf9FlSY2Y1WEXOV+qp8prB3+mTk843
CNvDJnTqdJ1NK1LHZuI7PNGmuXG7NdbDbC1JhZyQ2eaF1tBf0bIFrlyWexPQ
xPA//hsyPMlHDACWklx4eCIU+7x6yTD77h1OxpvT8U0QYtV6yaHMxJwX89IP
YJti1Yjjs+MIU4VucNPCMBNmT04mwIal42HaZWA8xkemS/FPWfU9WlpAsv90
U33vRpiwfN0a9PrPe4f7e71+r9/f3xt81zvc6x30Bls0N+geAzO1XsAigBFB
LedTLW1d9PqMn4Anb8F6ZKtFzhizBwGd9aGC5DCnM2KSGMs1wzRbnOp1x3FD
y096pR2Nk6DhRfb996Ec1YLwqRBDw/hR/V8tELHRrPEBCsknGUN92M01Q7mq
P3fNbD/mQSjlm0admnMS+FnZj3xFoD7q4IlRbT9L6qc2dn3onwYHB/0XzbNt
HPpZ89Dcj/dd26AgNSLKZrC6yBcMum8Hhc9dM5MVEQxqtKP6oOHSbgy9OehB
86CNS/vkoE0ra9Sw+qDPnxi0eWXbhvZWtgnPm0N/1zx048o2DYpyX2MZT9U0
Dbw56KEdlNSGEMmk5AZjsqraNKZDMnzlI3lzzBdPjFnr5nND/7S/f9hOyg3s
Yq9xaOzG/6xhTD8ytmjdr41j4iwwETtsRk8a9+nmUM0btWGoweeGcrPy7Q3U
34ypEcYCbH0INDpI7rFaxGl+2v9J6R7lurrlAzdSn9ywzherOWHm4tPuZCvJ
5Qf0xGjlkzIhFVeEomM0aJqsctQ18VCJyd7QzpEeyDypTRWvJkDqTlewII5V
3o/4JSivphiQBdAX3loB5lk7DKkGlQ8UKNCgXlEJqtDX6soNOa3K6Xo6aYzn
VbO9fsG98cuRIN3FHU7R5x7Y8rYpRVgUtJavjJ/jMWy0wmn0jVOQmFeuxyFD
EgazDsYnyqMBLubxrIKJhZUIxPZoOBTQWf2wglmBg953oFgNELif/Ype73se
IFilbVdYlvAETBgZPXZZa1bXATDeHLfBsN97BtSBEOi6ce8R1cQdYCgvdbut
xuPjI36gpSB8YrMD8bHm27vEXPRLLFH53rmpx0i/GIhhJ0qICNKhLWQCc6n8
aLPO65OUG8Zb0q9PhYbnGnMQ6fiGYu90vsIKBYmEPUsqrvaI/77DgYMz2ljo
KW/WFTqdd3xkZCMbEkPekg5Jxnabeuky6BC61sEsrn7koo/XNS+G7bP7WYdh
S49eWhLwNsqGD7L/bfI/W4gJtjmJq7i5UceLEbbNoQfjXFur6BrQh0y1VPF1
U+wcJ6dn4FqSPu8AT1X/cO8ZmLjIgKMgSz6yOQzbYPHCp9v7Oz6QXljR8+7Q
MUs3GkXMkK93LlUcRIM1ZPXHAVLXVIeToDGVOAnNm4+75ou3HGMJ/r0xjw34
5JOwidnXLWR4ze6K60Y4rh2LwO/VbfwsAk1CO3wtIH4zfO3FjsbfLvTpD5Rm
YSec2EJFcIDrAy1o1oCe3vyGG1ZFtLxLP0R7e8b3nRXFHWzC7I4zxeMppkrm
WOXohDgyLQadkseDqrRU6N/4vYNpQtnd5HIm5mtdw138fkZul2Kh0xW9VUcP
B0UxqcoGRRU3QyIFbLSIXLpcy9H2ofzoCADuIltBATWMS1JSK0gSxAh5uDSc
WQrcG8t32sTISpccUxULLTwnqo8ZxyZo50T3KYvuMq64BCBIlr94DmqKpVGW
MnrXf19jYyZ87uQ1+3n0gdFQz9L5Idf1pEBf3dNU1NoEidMkVqaee8mmBPIu
5Ew7zi7ePLwauOPtmdTPlPFy3qOnsqw5oTRMC/jaYl1Kl/vEYlHkv1F2LtqR
uJmygFvbaM4ECuNMHy33/Y/KBBrZK+0dd7fsoTXRgYPrVGiUZoOjUYSxJC8+
RRhrlQJcjTcKI1PAtvo8NUCPv4EYTCbMdUMo3/C4pij/0pOdRuaYHMjG/AOt
pesjBk19PlnNrjmJpZ4Z5c7gMgWViNOCQ8QOqlqG03WPq7cGm107Yz3lnD3Y
1KjT+Zfh+clITK6OL68meEba9o0qSTTYGzzzDlyKj6kqtvs7bgWSqChvQHz+
jch7+9kOqNPJ9vMdVqZyWWFrQx/bBzumM3dqBh4K5PDb32G3COP2nvkV0oHa
fvHixQ4WGhu9Gp+N8Xz0RIxPL96Oh+MrcXX8w4TEKsUZgNn/dHEOcxIgl77v
dKAZ/tXpNOU1cWrzq8vzUy8PxJUbjvDWACGiCEvOioMXYO/9jEl9gMH+ez2h
j+JrMGNR62Hoc6ix32gUxU0Q7w22Dw53xCMdvfXTtWy2lpsyP2qatV773zS3
r5mZnRsseitoQAw0QWgKKhg27YoWhdLNdXg6ibS6XV+4BZXSjqZFskZNcKW2
D/f3SCNMVLrd7z872H+BQM+Uv3D4d/RiG96oRbqQ231Agk6qRTLGmoIauu1B
38ALEEwAiIvJpCvc74gZjAP24s1wEvW1mkha7K8HlAHseyB70AXvGLQgY7nb
Wd6FW7DbedK9TB889fpL3cQNHbW2bPf/hr3U37Xow+6jjRdP+l/D7xpef6kj
taGj1pbtHtKwl/q7p52c7tu291/ssGzqqrVpqy+y1ov/ytvbTlav1f9TkmsN
kutw5/F7LvwN/+f7vNzhenj1D0le/o9K9u2YeqKb430MPjyiQNobYuYcmQ5f
c0yN3z8KghX/aYxbsC0jFL5c6MPfDfD7ax/8+7gxKQ+6x8du8KE/0OA3DxTM
EzDY9uUX/msd+bMf8lE0ubF8o9OPG0fNjqgAtz3Wc7Q0OdV86klnGmySwGPD
6TZvCf1jVWniHn/BoTb692tPtvFH/vG22kSIonF/Nhi6qC7QKza6rwqduMsB
+emagvB18enCGhs4te6fvxTAbSJgTVFaraIK5bm+HIg0CSPbA04FbEnfArTN
kXRkTVYL3D6E9tU0QY6DMwoPHQZgfcHpw7Yp/YecP2xcoK9aBDRU/3MW4cVT
i4Bgfe0iGNH3n7IItAy2mnR4HLOjp/tEEsLmnI17uYUpPa108tef0TyxyRPy
6mMA89XLk0fg1wzQLLmNMET9SHOPIia/6/DltRdGAnEeYwlX+QGzm9Z8EL0B
J20pEr8dPW26cgumWlXr34a0WoC/FX+1dr8SlbWUj9+EvJqJsImuug3x1Qj6
QB01oYTf/Aok1FNQNjDwhQiomzvh7DeMoa+eug6a8Nxr89jMavnq9Wy2wjYn
1WCpffnUoIN/B17RhJS2rJvfjp8247IFVa226G/D2r8/s2jIIvpNyKvZ1Jvo
qhvdX42gfyCzaMlq+mpEtDgIQmS0eRG+HCHYw+ZGg87aNxpFGL8CL22ZV/8A
FLU5Ptqw1eoo+Y2Ic3uI+n18/NxWo2a/FptBMtlvw17gC2rAVugr+nrsfIB+
GrcZPP/c9EdnJyaaAj8xlqIPkZNdAkoyHYU0dZX0zSlxHj/WqqN4p3RtVrc2
bih5ySSTm/SnICnLhYZs+IaOM9lI+HWbRXfdbXmHAqtWYbdhPrVCu+6GxrAd
h5QvuMIzwnOCx0lmfEAG06rpwCDl31hXC3zk3QmWrbtBycKuX+uCSl24LDKb
T9dS58qLC4/n+l4TPl3ronV89wSmnVhA/eJ35MDHg0c09OT1cX/HHOIupnzj
CleBcqF/U38p9oOC5v44pNkMy6LcF3d09GtsIoDGxsJL/jKbiJThJQtmJK5a
t3H5G1d/1seR+cKH9gsY+PB3YbMayvVG5SwsfEqHRTFRzy1YmgeRbsnFqqgu
t39ufePaLotXCufnSXqfJnhogI7MH/OldF1vCS0mWokgvDzNq9eF2DAFB2Kx
SD8QmVB984AM8USn/8jLRux0Ji5ZIjgbqk8z0XH9FI92rwt9IEXNAG+c9Lhx
/4SrBDbTO0Xvd38VqUxdgYWVU+I7ae6fhjS5A8pLuzmN6cDHQ1He6Rs9YjG8
fFu7GmRGC0311G0lrPNLjBzjSXfkgBj1fJDf4tUxkgurMSnM/G3tinHRdUGA
MywpAB0hrSrKqbktCiX1iXr/uET9gOwKsWeLBJhzVMOvLFJmjgTpEyq6Cpky
txfiz+YZKVuX1KuLYLILaYvEdGOVzM39Kq5oAR4VpethzcG2uSF9mwuLYG2k
qtQLmbew0JDV4sEPPOdGPJc4EsqWeLlMPkSK/8ZUnJcnLInC4gzNMimPlnjX
mTm3ZYYz88Rj+litGK+I0OX98XbE4kFTN6ZziXg+h8+ULkxnzuPqNBSPXDW9
iv7eEd7qqFI+DrzE+zbd3TVUiTciyUf3gnD6MG422Nf6hib4hbcspVjCGBsD
36QizbNVFpddzVu9zOHtDFNadmpXz4ldv7DQrh5A16qAjZOoWzw9Rpf50Lyv
3k5o/PGb0f1Aj0xFwBEeQxAIlqmIY0ajBhWKG1IrsN3DbZGZ1p4WENxMhYWE
1O9pnB9NqhoVk6L8UHPJK6VFF6CpDI95IKu6cKai6dfmofgc7sp8TF96BTxs
DU5Zlo7ccXcgY9I1/G0xVjxCT4PZ4qb2QgnelXhPaWXytF15K8pKs3UKFjJJ
zaVjmYznvCK9EAFVnN3pS1ztGNtEKd5VRMAGd3oNiMNr1FYgRKfN1wnVPrFV
L/DGILs1aOja9WshP+nppGB3adEwqLDAe2/j0qFO55jWzaE79a434KymZcvt
eljey16z5q4jc1eRYZfMl3LFV12FX9t7ouIb3FeVrUSeMu2vcqx3gxVqllyQ
MpV8S4C5JtfdDiVjTnW2APVqteC8KrqtRSSxdjcMnq3tnVbN8PpVbTwGZrXB
3GQ0ItNqWXZT666YckUaXaQZKVJsbcxmyx6u5ArnBRUA5b1INgLiwFwYpike
Pp1JcxGbuV3MVSfAi1a8K+hNXiE76rE74l94m/s93tMHVFyuljqBkaoMwaJi
jvtqCQMl5vZlhr9lzi2zwNMifBaF6m+aUxjft0yPk9nWRrnLijVNKon5VlqX
ZF9JdzxFQ5nYXswRabomhJGv/GsDa/n6vGa6RLfyuSdroJXZo1ZEkz4Io+At
jqSlU91nvOPICiuaH58W5vXm2no4NKUXE/SlzGxm5+bdXnwxTP1Kry5nPhc5
FcnN5U2hawS4sU0NOZQv/d4zfdxh//l7J234pqnBi+fvu3wdTh55XcVqnc9u
yyLHyW32O9nFOopC25dg46Z8oRXeqP4+2MSLdZniJUAkyf00VcNcYVtKshNC
Ma8vQfMKxWB2aIn17PDqsp91FfD39sKLJLzOjCr0RcU8OmM1sqWIwHhjRX08
+x1oDk40TQbJnE6KE2mjikEnhvtHsKWwHB1roprNV1oXenA9kOjkltv2yo6d
8CsqukEtz8KUYmUuc9PVwyTs1BILIFmLRl+Wrg07ndU9c8WRqQIc3/lwly6X
JtV4ldP+1aqMb2phxvoirXSR8LN3b9/6hhGDgleUYjRVp0l7N+ZS7nqMxW8i
UJ6Qd+grviiReoMf6ioTscEQVl9aaVPGY/pe4UevqCZ/m3pKi1otufi6Kdm1
USBwXOnrxrilMkWr6Y4zvE9soQO33HtQOxNtS7MGhjmTYpvoso5cmRNL0NQW
0VzZQHPEL9nMYWURkAW8IPIB0VTBpj+y0iqlGVm7T8VzvoAASXFw5MD6LDFq
pa+VImGcs42ScV9GirVbqPyqdwzctr2nZofLF3C1Zn3h2BuU23itNY+GF9dy
cy6ghUcgbgzFkZautWHi4XRzJp5WBCuWjaLbeJECfBHdamuq28NXTNlqhgXf
TW+KVjZWYCVPM1Oa/YN/2QzdBY/Xyq5KVD4zrPlNN9aKdK7PVpCXI8dCmjLy
LnQzRd40ZmyfvZb6IMjO0AEJuleG4kPRvSimNlJlZbPfZotPk3gHDGH1V0u7
u6AJlg3Tt+OiIqjYQvMrp3N58VkVlJRFt4h38s46E8kYsLfqbmMlmh32U3hZ
71yUlmqxGqW9zZ3UE+e5VZ0X8Q0VhReaNS59dJhJ5U6jwOmxs0xfROvxs226
r3k0HO6wFwxsTluXHgzTxF3dGqjHjkPpuz/BnktAWSSXi/ZSEdZC2PRVv1Tb
Cyu+Ndz3G1Qb9gE1sJMLx4Gyg84aIKHl0tUYruPFXzGjDcMWRIY1y+hiaOYB
bNShugTknbra8JodsSfDdbatdmoEgE/0diXPGFead45U79ZVPlXWpLPoivAM
GC/51wDAp1e0ye0rNP7lzQRDqPDU4OBjmUynrMSTw65F2yfz6J7KDTk9hgnf
r7IMyAl0F/+cG/S4TK1WtCJVnk5foXz1bi968jJAkmS2DKLlo1NaWrqqBrVY
olBS0fCKKizwRhV0STljI3HDFGW9OC7pOHSTBK7fovekp6ju7R+DbM/wok/0
216Y+xXqrv8wzjG+uMTLxGZZoZDESI+WutSL8SOBVmbK/mG5RlBBsMIznSLu
FeXNbrosd58dHB7uunUQsBJJkX9Lxf3zO+6MdNF65/qwDEBZlSmsdKEdrccz
NGszmdxwCfr6dUCgy5SgZBC0M/MxX93IuOXC9bTksTbTbgDxS13oiBwYpN6N
kpRG5V0s9VFfWHgSbuSgtaCYw/S4Z5TUF8ED0tAMBsPJu0IxLAi3lAXpOHgP
KBb3ppNfpMxkBZp0ku4qUc4lSZtpAfvBHIbDQp70g65yBYsCHQtoL+Anfzof
X6D9ilfVk/NFn3eksBgfYAK2iZX+NvzfsLgTicg5pXNwYnvECXUgcI6zVJwV
fPDdPpzMiqoSr7LVbYmth3iBIDz+A7R6k8Wr//2/0EG8fRJd6fboAr+Isxia
YnzibTxVfONL5wRMwgyNoErC/ocG73JUZBRyAoDyR7y3LSsKZNE/sgJAN9uD
sc71cLOu9gPxGbC1I4NC37iK3gPkyh1yEac5eU4q1jDwZKlXjTbl6sYbpSL5
0KzPPxRosUBOtonyweBa6V4tBKrlgHQW53dK3BRGhTDebFNfHcOltseeEFvD
YsmnKbnu74Ju5mIriS4fxQNr5I0DyuOLs4Bh5XJLROZQfv89hxJO+WbEYJN0
/ALl4fYJdieh3RRvExcZ2RhKF6IwYQ1guWtHV/xZFVivwIpy46aOfX5yA6Jk
Ne1B97uaxIZ6WwMsu3woOQiGAo8JOGTAN3yG+H8BI0k8KQSXAAA=

-->

</rfc>

