<?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-ietf-lamps-pq-composite-kem-00" 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="August" day="23"/>

    <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. 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-02"><name>Changes in version -02</name>

<t><list style="symbols">
  <t>Removed all references to generic composite.</t>
  <t>Added selection criteria note about requesting new explicit combinations.</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="sec-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.
The authors wish to note that although all the composite structures defined in this and the companion documents <xref target="I-D.ounsworth-pq-composite-keys"/> and <xref target="I-D.ounsworth-pq-composite-sigs"/> pecifications are defined in such a way as to easily allow 3 or more component algorithms, it was decided to only specify explicit pairs. This also does not preclude future specification of explicit combinations with three or more components.</t>
</list></t>

<t>To maximize interoperability, use of the specific algorithm combinations specified in this document is encouraged.  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>

<!-- 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>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>
</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>
<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(TBD)}

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



-- 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>
</list></t>

<t>TODO</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 explicit 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:
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
gSUfywDGKvGvXQV4lPKeTzPZkfFWhWA4nMQF0MLPSM4sHX2ioFUg+MsgL5bz
ZVQiksOKOmuaoB/8IhWNd7Ag/XI9trmmdqs+zrJHcj9r1LdZlgh8DaovIRi5
nH4qGr3IMwypByW0J1r7nkzMm7shqgGCLP+2va6e6vLrG/s1u15gBWDGqT1T
oZ3t0AQ/ajhabd1xDx5xkCGdyyWsN8bMEuq0DLZWhhazW2eE8nU0+Ont4KI/
AIHxPwai2W23z3vvdsXlS3HZvxkYtqrFloMewwSZRzJuJlUOSS8BM777bFl+
556BlXCTYqJ3l/UVEG+tqhKlvuEe2yOVWXkyZMkTy5zRAeOk7U6jhps/jY6a
Dlk38eR0S3yEv6HtSBZW3GuL/nslbjeHvS3DTYmsMSQh1OaxChf1B34C/VtG
r9TtOJ45tLa1w0rtqOwghn1Ox0QviV+Wp3rVeAQ+VyQ600IJumaHEYdYAFjI
S8ktYKjZHv5RoLWSCZ4xk1LurLsO6y9jSYFTxngwB4qPvNdRa+aYlz7Wtgba
Ngn6Cpi5EnxOKLfCEzhUM2AsJfGkc+hH6ZUHUBQ5VYatZKl/xjY8VWYpSjzX
Lh8Sq+6WDi3WTkwznXtXD+8A5RxUbtV8DJmhoyW7BjXUpvmTf8LQaJyH6bqM
ha6cNXrRUtrB6+4finV3TsbH0uMp7IrPANhCW1603LH5q61lRLWRQzLMxE9B
V7SZaC6lECQ+FILPDo1kNSsEY5nkHppVmdHDeqxmFLT3iQ8W4YzWJuHoq/G6
QG6iMLQBh3fZm7ZW/ognxyprEaa+V9qXnKxZOwcbCgzgVGKgFdqUlJdgMeBg
ZXP6hBzD3UtkyOhLkaDVi3Fc9lKO1yodsBQ2jpoA0QCwDGylP5jGObzkdaIQ
PxtHRi+gZUvnhgh0ZciUFst2nchwe99JWN81PXfaeaQzdKIJpT5z4A084UAu
mPd9xvFu1ZgztaKAkbrsFdr65ui9JG3SMicTudRZMyewCpTAOLhmixf3Q98Y
/9bYtSb+ozG9YS2W0MKkjz08PLQlqHxhW67ybIn/2Vu6KWteaKEbVIiR3FLH
JwaqWEVrezx/0O62MHhxXnJJE8oxlsAPY1B5KWSUmgDeSCHVmjnqlH+TeSam
YZysOA6HEbdxRu26I73QAwrM+xKnh02bAL7BiRskGUj9TTDTcK21kDenL5uU
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
e0S/jAAA

-->

</rfc>

