<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.21 (Ruby 3.1.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-tls-hybrid-design-12" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.25.0 -->
  <front>
    <title abbrev="ietf-tls-hybrid-design">Hybrid key exchange in TLS 1.3</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-tls-hybrid-design-12"/>
    <author initials="D." surname="Stebila" fullname="Douglas Stebila">
      <organization>University of Waterloo</organization>
      <address>
        <email>dstebila@uwaterloo.ca</email>
      </address>
    </author>
    <author initials="S." surname="Fluhrer" fullname="Scott Fluhrer">
      <organization>Cisco Systems</organization>
      <address>
        <email>sfluhrer@cisco.com</email>
      </address>
    </author>
    <author initials="S." surname="Gueron" fullname="Shay Gueron">
      <organization abbrev="U. Haifa &amp; Meta">University of Haifa and Meta</organization>
      <address>
        <email>shay.gueron@gmail.com</email>
      </address>
    </author>
    <date year="2025" month="January" day="14"/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 181?>

<t>Hybrid key exchange refers to using multiple key exchange algorithms simultaneously and combining the result with the goal of providing security even if all but one of the component algorithms is broken.  It is motivated by transition to post-quantum cryptography.  This document provides a construction for hybrid key exchange in the Transport Layer Security (TLS) protocol version 1.3.</t>
      <t>Discussion of this work is encouraged to happen on the TLS IETF mailing list tls@ietf.org or on the GitHub repository which contains the draft: https://github.com/dstebila/draft-ietf-tls-hybrid-design.</t>
    </abstract>
  </front>
  <middle>
    <?line 187?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document gives a construction for hybrid key exchange in TLS 1.3.  The overall design approach is a simple, "concatenation"-based approach: each hybrid key exchange combination should be viewed as a single new key exchange method, negotiated and transmitted using the existing TLS 1.3 mechanisms.</t>
      <t>This document does not propose specific post-quantum mechanisms; see <xref target="scope"/> for more on the scope of this document.</t>
      <section anchor="revision-history">
        <name>Revision history</name>
        <ul empty="true">
          <li>
            <t><strong>RFC Editor's Note:</strong> Please remove this section prior to publication of a final version of this document.</t>
          </li>
        </ul>
        <t>Earlier versions of this document categorized various design decisions one could make when implementing hybrid key exchange in TLS 1.3.</t>
        <ul spacing="normal">
          <li>
            <t>draft-ietf-tls-hybrid-design-12:
            </t>
            <ul spacing="normal">
              <li>
                <t>Editorial changes</t>
              </li>
              <li>
                <t>Change Kyber references to ML-KEM references</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-10:
            </t>
            <ul spacing="normal">
              <li>
                <t>Clarifications on shared secret and public key generation</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-09:
            </t>
            <ul spacing="normal">
              <li>
                <t>Remove IANA registry requests</t>
              </li>
              <li>
                <t>Editorial changes</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-09:
            </t>
            <ul spacing="normal">
              <li>
                <t>Removal of TBD hybrid combinations using Kyber512 or secp384r1</t>
              </li>
              <li>
                <t>Editorial changes</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-08:
            </t>
            <ul spacing="normal">
              <li>
                <t>Add reference to ECP256R1Kyber768 and KyberDraft00 drafts</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-07:
            </t>
            <ul spacing="normal">
              <li>
                <t>Editorial changes</t>
              </li>
              <li>
                <t>Add reference to X25519Kyber768 draft</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-06:
            </t>
            <ul spacing="normal">
              <li>
                <t>Bump to version -06 to avoid expiry</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-05:
            </t>
            <ul spacing="normal">
              <li>
                <t>Define four hybrid key exchange methods</t>
              </li>
              <li>
                <t>Updates to reflect NIST's selection of Kyber</t>
              </li>
              <li>
                <t>Clarifications and rewordings based on working group comments</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-04:
            </t>
            <ul spacing="normal">
              <li>
                <t>Some wording changes</t>
              </li>
              <li>
                <t>Remove design considerations appendix</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-03:
            </t>
            <ul spacing="normal">
              <li>
                <t>Remove specific code point examples and requested codepoint range for hybrid private use</t>
              </li>
              <li>
                <t>Change "Open questions" to "Discussion"</t>
              </li>
              <li>
                <t>Some wording changes</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-02:
            </t>
            <ul spacing="normal">
              <li>
                <t>Bump to version -02 to avoid expiry</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-01:
            </t>
            <ul spacing="normal">
              <li>
                <t>Forbid variable-length secret keys</t>
              </li>
              <li>
                <t>Use fixed-length KEM public keys/ciphertexts</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-00:
            </t>
            <ul spacing="normal">
              <li>
                <t>Allow key_exchange values from the same algorithm to be reused across multiple KeyShareEntry records in the same ClientHello.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-stebila-tls-hybrid-design-03:
            </t>
            <ul spacing="normal">
              <li>
                <t>Add requirement for KEMs to provide protection against key reuse.</t>
              </li>
              <li>
                <t>Clarify FIPS-compliance of shared secret concatenation method.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-stebila-tls-hybrid-design-02:
            </t>
            <ul spacing="normal">
              <li>
                <t>Design considerations from draft-stebila-tls-hybrid-design-00 and draft-stebila-tls-hybrid-design-01 are moved to the appendix.</t>
              </li>
              <li>
                <t>A single construction is given in the main body.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-stebila-tls-hybrid-design-01:
            </t>
            <ul spacing="normal">
              <li>
                <t>Add (Comb-KDF-1) and (Comb-KDF-2) options.</t>
              </li>
              <li>
                <t>Add two candidate instantiations.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-stebila-tls-hybrid-design-00: Initial version.</t>
          </li>
        </ul>
      </section>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
BCP 14 <xref target="RFC8174">RFC2119</xref> when, and only when, they appear in all
capitals, as shown here.</t>
        <t>For the purposes of this document, it is helpful to be able to divide cryptographic algorithms into two classes:</t>
        <ul spacing="normal">
          <li>
            <t>"Traditional" algorithms: Algorithms which are widely deployed today, but which may be deprecated in the future.  In the context of TLS 1.3, examples of traditional key exchange algorithms include elliptic curve Diffie-Hellman using secp256r1 or x25519, or finite-field Diffie-Hellman.</t>
          </li>
          <li>
            <t>"Next-generation" (or "next-gen") algorithms: Algorithms which are not yet widely deployed, but which may eventually be widely deployed.  An additional facet of these algorithms may be that we have less confidence in their security due to them being relatively new or less studied.  This includes "post-quantum" algorithms.</t>
          </li>
        </ul>
        <t>"Hybrid" key exchange, in this context, means the use of two (or more) key exchange algorithms based on different cryptographic assumptions, e.g., one traditional algorithm and one next-gen algorithm, with the purpose of the final session key being secure as long as at least one of the component key exchange algorithms remains unbroken.
When one of the algorithms is traditional and one of them is post-quantum, this is a Post-Quantum Traditional Hybrid Scheme <xref target="PQUIP-TERM"/>; while this is the initial use case for this draft, we do not limit this draft to that case.
We use the term "component" algorithms to refer to the algorithms combined in a hybrid key exchange.</t>
        <t>We note that some authors prefer the phrase "composite" to refer to the use of multiple algorithms, to distinguish from "hybrid public key encryption" in which a key encapsulation mechanism and data encapsulation mechanism are combined to create public key encryption.</t>
        <t>It is intended that the composite algorithms within a hybrid key exchange are to be performed, that is, negotiated and transmitted, within the TLS 1.3 handshake.  Any out-of-band method of exchanging keying material is considered out-of-scope.</t>
        <t>The primary motivation of this document is preparing for post-quantum algorithms.  However, it is possible that public key cryptography based on alternative mathematical constructions will be desired to mitigate risks independent of the advent of a quantum computer, for example because of a cryptanalytic breakthrough.  As such we opt for the more generic term "next-generation" algorithms rather than exclusively "post-quantum" algorithms.</t>
        <t>Note that TLS 1.3 uses the phrase "groups" to refer to key exchange algorithms -- for example, the <tt>supported_groups</tt> extension -- since all key exchange algorithms in TLS 1.3 are Diffie-Hellman-based.  As a result, some parts of this document will refer to data structures or messages with the term "group" in them despite using a key exchange algorithm that is not Diffie-Hellman-based nor a group.</t>
      </section>
      <section anchor="motivation">
        <name>Motivation for use of hybrid key exchange</name>
        <t>A hybrid key exchange algorithm allows early adopters eager for post-quantum security to have the potential of post-quantum security (possibly from a less-well-studied algorithm) while still retaining at least the security currently offered by traditional algorithms.  They may even need to retain traditional algorithms due to regulatory constraints, for example FIPS compliance.</t>
        <t>Ideally, one would not use hybrid key exchange: one would have confidence in a single algorithm and parameterization that will stand the test of time.  However, this may not be the case in the face of quantum computers and cryptanalytic advances more generally.</t>
        <t>Many (though not all) post-quantum algorithms currently under consideration are relatively new; they have not been subject to the same depth of study as RSA and finite-field or elliptic curve Diffie-Hellman, and thus the security community does not necessarily have as much confidence in their fundamental security, or the concrete security level of specific parameterizations.</t>
        <t>Moreover, it is possible that after next-generation algorithms are defined, and for a period of time thereafter, conservative users may not have full confidence in some algorithms.</t>
        <t>Some users may want to accelerate adoption of post-quantum cryptography due to the threat of retroactive decryption: if a cryptographic assumption is broken due to the advent of a quantum computer or some other cryptanalytic breakthrough, confidentiality of information can be broken retroactively by any adversary who has passively recorded handshakes and encrypted communications.  Hybrid key exchange enables potential security against retroactive decryption while not fully abandoning traditional cryptosystems.</t>
        <t>As such, there may be users for whom hybrid key exchange is an appropriate step prior to an eventual transition to next-generation algorithms. Users should consider the confidence they have in each hybrid component to assess that the hybrid system meets the desired motivation.</t>
      </section>
      <section anchor="scope">
        <name>Scope</name>
        <t>This document focuses on hybrid ephemeral key exchange in TLS 1.3 <xref target="TLS13"/>.  It intentionally does not address:</t>
        <ul spacing="normal">
          <li>
            <t>Selecting which next-generation algorithms to use in TLS 1.3, or algorithm identifiers or encoding mechanisms for next-generation algorithms.  This selection will be based on the recommendations by the Crypto Forum Research Group (CFRG), which is currently waiting for the results of the NIST Post-Quantum Cryptography Standardization Project <xref target="NIST"/>.</t>
          </li>
          <li>
            <t>Authentication using next-generation algorithms.  While quantum computers could retroactively decrypt previous sessions, session authentication cannot be retroactively broken.</t>
          </li>
        </ul>
      </section>
      <section anchor="goals">
        <name>Goals</name>
        <t>The primary goal of a hybrid key exchange mechanism is to facilitate the establishment of a shared secret which remains secure as long as as one of the component key exchange mechanisms remains unbroken.</t>
        <t>In addition to the primary cryptographic goal, there may be several additional goals in the context of TLS 1.3:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Backwards compatibility:</strong> Clients and servers who are "hybrid-aware", i.e., compliant with whatever hybrid key exchange standard is developed for TLS, should remain compatible with endpoints and middle-boxes that are not hybrid-aware.  The three scenarios to consider are:
            </t>
            <ol spacing="normal" type="1"><li>
                <t>Hybrid-aware client, hybrid-aware server: These parties should establish a hybrid shared secret.</t>
              </li>
              <li>
                <t>Hybrid-aware client, non-hybrid-aware server:  These parties should establish a traditional shared secret (assuming the hybrid-aware client is willing to downgrade to traditional-only).</t>
              </li>
              <li>
                <t>Non-hybrid-aware client, hybrid-aware server:  These parties should establish a traditional shared secret (assuming the hybrid-aware server is willing to downgrade to traditional-only).</t>
              </li>
            </ol>
            <t>
Ideally backwards compatibility should be achieved without extra round trips and without sending duplicate information; see below.</t>
          </li>
          <li>
            <t><strong>High performance:</strong> Use of hybrid key exchange should not be prohibitively expensive in terms of computational performance.  In general this will depend on the performance characteristics of the specific cryptographic algorithms used, and as such is outside the scope of this document.  See <xref target="PST"/> for preliminary results about performance characteristics.</t>
          </li>
          <li>
            <t><strong>Low latency:</strong> Use of hybrid key exchange should not substantially increase the latency experienced to establish a connection.  Factors affecting this may include the following.
            </t>
            <ul spacing="normal">
              <li>
                <t>The computational performance characteristics of the specific algorithms used.  See above.</t>
              </li>
              <li>
                <t>The size of messages to be transmitted.  Public key and ciphertext sizes for post-quantum algorithms range from hundreds of bytes to over one hundred kilobytes, so this impact can be substantial.  See <xref target="PST"/> for preliminary results in a laboratory setting, and <xref target="LANGLEY"/> for preliminary results on more realistic networks.</t>
              </li>
              <li>
                <t>Additional round trips added to the protocol.  See below.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>No extra round trips:</strong> Attempting to negotiate hybrid key exchange should not lead to extra round trips in any of the three hybrid-aware/non-hybrid-aware scenarios listed above.</t>
          </li>
          <li>
            <t><strong>Minimal duplicate information:</strong> Attempting to negotiate hybrid key exchange should not mean having to send multiple public keys of the same type.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="kems">
      <name>Key encapsulation mechanisms</name>
      <t>This document models key agreement as key encapsulation mechanisms (KEMs), which consist of three algorithms:</t>
      <ul spacing="normal">
        <li>
          <t><tt>KeyGen() -&gt; (pk, sk)</tt>: A probabilistic key generation algorithm, which generates a public key <tt>pk</tt> and a secret key <tt>sk</tt>.</t>
        </li>
        <li>
          <t><tt>Encaps(pk) -&gt; (ct, ss)</tt>: A probabilistic encapsulation algorithm, which takes as input a public key <tt>pk</tt> and outputs a ciphertext <tt>ct</tt> and shared secret <tt>ss</tt>.</t>
        </li>
        <li>
          <t><tt>Decaps(sk, ct) -&gt; ss</tt>: A decapsulation algorithm, which takes as input a secret key <tt>sk</tt> and ciphertext <tt>ct</tt> and outputs a shared secret <tt>ss</tt>, or in some cases a distinguished error value.</t>
        </li>
      </ul>
      <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.  IND-CCA2 corresponds to security against an active attacker, and the public key / secret key pair can be treated as a long-term key or reused.  A common design pattern for obtaining security under key reuse is to apply the Fujisaki-Okamoto (FO) transform <xref target="FO"/> or a variant thereof <xref target="HHK"/>.</t>
      <t>A weaker security notion is indistinguishability under chosen plaintext attack (IND-CPA), which means that the shared secret values should be indistinguishable from random strings given a copy of the public key.  IND-CPA roughly corresponds to security against a passive attacker, and sometimes corresponds to one-time key exchange.</t>
      <t>Key exchange in TLS 1.3 is phrased in terms of Diffie-Hellman key exchange in a group.  DH key exchange can be modeled as a KEM, with <tt>KeyGen</tt> corresponding to selecting an exponent <tt>x</tt> as the secret key and computing the public key <tt>g^x</tt>; encapsulation corresponding to selecting an exponent <tt>y</tt>, computing the ciphertext <tt>g^y</tt> and the shared secret <tt>g^(xy)</tt>, and decapsulation as computing the shared secret <tt>g^(xy)</tt>. See <xref target="HPKE"/> for more details of such Diffie-Hellman-based key encapsulation mechanisms. Diffie-Hellman key exchange, when viewed as a KEM, does not formally satisfy IND-CCA2 security, but is still safe to use for ephemeral key exchange in TLS 1.3, see e.g. <xref target="DOWLING"/>.</t>
      <t>TLS 1.3 does not require that ephemeral public keys be used only in a single key exchange session; some implementations may reuse them, at the cost of limited forward secrecy.  As a result, any KEM used in the manner described in this document MUST explicitly be designed to be secure in the event that the public key is reused.  Finite-field and elliptic-curve Diffie-Hellman key exchange methods used in TLS 1.3 satisfy this criteria.  For generic KEMs, this means satisfying IND-CCA2 security or having a transform like the Fujisaki-Okamoto transform <xref target="FO"/> <xref target="HHK"/> applied.  While it is recommended that implementations avoid reuse of KEM public keys, implementations that do reuse KEM public keys MUST ensure that the number of reuses of a KEM public key abides by any bounds in the specification of the KEM or subsequent security analyses.  Implementations MUST NOT reuse randomness in the generation of KEM ciphertexts.</t>
    </section>
    <section anchor="construction">
      <name>Construction for hybrid key exchange</name>
      <section anchor="construction-negotiation">
        <name>Negotiation</name>
        <t>Each particular combination of algorithms in a hybrid key exchange will be represented as a <tt>NamedGroup</tt> and sent in the <tt>supported_groups</tt> extension.  No internal structure or grammar is implied or required in the value of the identifier; they are simply opaque identifiers.</t>
        <t>Each value representing a hybrid key exchange will correspond to an ordered pair of two or more algorithms.  (We note that this is independent from future documents standardizing solely post-quantum key exchange methods, which would have to be assigned their own identifier.)</t>
        <t>Specific values shall be registered by IANA in the TLS Supported Groups registry.</t>
        <artwork><![CDATA[
    enum {

          /* Elliptic Curve Groups (ECDHE) */
          secp256r1(0x0017), secp384r1(0x0018), secp521r1(0x0019),
          x25519(0x001D), x448(0x001E),

          /* Finite Field Groups (DHE) */
          ffdhe2048(0x0100), ffdhe3072(0x0101), ffdhe4096(0x0102),
          ffdhe6144(0x0103), ffdhe8192(0x0104),

          /* Hybrid Key Exchange Methods */
          ...,

          /* Reserved Code Points */
          ffdhe_private_use(0x01FC..0x01FF),
          ecdhe_private_use(0xFE00..0xFEFF),
          (0xFFFF)
    } NamedGroup;
]]></artwork>
      </section>
      <section anchor="construction-transmitting">
        <name>Transmitting public keys and ciphertexts</name>
        <t>We take the relatively simple "concatenation approach": the messages from the two or more algorithms being hybridized will be concatenated together and transmitted as a single value, to avoid having to change existing data structures.  The values are directly concatenated, without any additional encoding or length fields; the representation and length of elements MUST be fixed once the algorithm is fixed.</t>
        <t>Recall that in TLS 1.3 a KEM public key or KEM ciphertext is represented as a <tt>KeyShareEntry</tt>:</t>
        <artwork><![CDATA[
    struct {
        NamedGroup group;
        opaque key_exchange<1..2^16-1>;
    } KeyShareEntry;
]]></artwork>
        <t>These are transmitted in the <tt>extension_data</tt> fields of <tt>KeyShareClientHello</tt> and <tt>KeyShareServerHello</tt> extensions:</t>
        <artwork><![CDATA[
    struct {
        KeyShareEntry client_shares<0..2^16-1>;
    } KeyShareClientHello;

    struct {
        KeyShareEntry server_share;
    } KeyShareServerHello;
]]></artwork>
        <t>The client's shares are listed in descending order of client preference; the server selects one algorithm and sends its corresponding share.</t>
        <t>For a hybrid key exchange, the <tt>key_exchange</tt> field of a <tt>KeyShareEntry</tt> is the concatenation of the <tt>key_exchange</tt> field for each of the constituent algorithms.  The order of shares in the concatenation MUST be the same as the order of algorithms indicated in the definition of the <tt>NamedGroup</tt>.</t>
        <t>For the client's share, the <tt>key_exchange</tt> value contains the concatenation of the <tt>pk</tt> outputs of the corresponding KEMs' <tt>KeyGen</tt> algorithms, if that algorithm corresponds to a KEM; or the (EC)DH ephemeral key share, if that algorithm corresponds to an (EC)DH group.  For the server's share, the <tt>key_exchange</tt> value contains concatenation of the <tt>ct</tt> outputs of the corresponding KEMs' <tt>Encaps</tt> algorithms, if that algorithm corresponds to a KEM; or the (EC)DH ephemeral key share, if that algorithm corresponds to an (EC)DH group.</t>
        <t><xref target="TLS13"/> requires that ``The key_exchange values for each KeyShareEntry MUST be generated independently.''  In the context of this document, since the same algorithm may appear in multiple named groups, we relax the above requirement to allow the same key_exchange value for the same algorithm to be reused in multiple KeyShareEntry records sent in within the same <tt>ClientHello</tt>.  However, key_exchange values for different algorithms MUST be generated independently. Explicitly, if the <tt>NamedGroup</tt> is the hybrid key exchange <tt>MyECDHMyPQKEM</tt>, the <tt>KeyShareEntry.key_exchange</tt> values MUST be generated in one of the following two ways:</t>
        <t>Fully independently:</t>
        <artwork><![CDATA[
MyECDHMyPQKEM.KeyGen() = (MyECDH.KeyGen(), MyPQKEM.KeyGen())

KeyShareClientHello {
    KeyShareEntry {
        NamedGroup: 'MyECDH',
        key_exchange: MyECDH.KeyGen()
    },
    KeyShareEntry {
        NamedGroup: 'MyPQKEM',
        key_exchange: MyPQKEM.KeyGen()
    },
    KeyShareEntry {
        NamedGroup: 'MyECDHMyPQKEM',
        key_exchange: MyECDHMyPQKEM.KeyGen()
    },
}
]]></artwork>
        <t>Reusing key_exchange values of the same component algorithm within the same <tt>ClientHello</tt>:</t>
        <artwork><![CDATA[
myecdh_key_share = MyECDH.KeyGen()
mypqkem_key_share = MyPQKEM.KeyGen()
myecdh_mypqkem_key_share = (myecdh_key_share, mypqkem_key_share)

KeyShareClientHello {
    KeyShareEntry {
        NamedGroup: 'MyECDH',
        key_exchange: myecdh_key_share
    },
    KeyShareEntry {
        NamedGroup: 'MyPQKEM',
        key_exchange: mypqkem_key_share
    },
    KeyShareEntry {
        NamedGroup: 'MyECDHMyPQKEM',
        key_exchange: myecdh_mypqkem_key_share
    },
}
]]></artwork>
      </section>
      <section anchor="construction-shared-secret">
        <name>Shared secret calculation</name>
        <t>Here we also take a simple "concatenation approach": the two shared secrets are concatenated together and used as the shared secret in the existing TLS 1.3 key schedule.  Again, we do not add any additional structure (length fields) in the concatenation procedure: for both the traditional groups and post quantum KEMs, the shared secret output length is fixed for a specific elliptic curve or parameter set.</t>
        <t>In other words, if the <tt>NamedGroup</tt> is <tt>MyECDHMyPQKEM</tt>, the shared secret is calculated as</t>
        <artwork><![CDATA[
concatenated_shared_secret = MyECDH.shared_secret || MyPQKEM.shared_secret
]]></artwork>
        <t>and inserted into the TLS 1.3 key schedule in place of the (EC)DHE shared secret, as shown in <xref target="fig-key-schedule"/>.</t>
        <figure anchor="fig-key-schedule">
          <name>Key schedule for hybrid key exchange</name>
          <artwork><![CDATA[
                                    0
                                    |
                                    v
                      PSK ->  HKDF-Extract = Early Secret
                                    |
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
                                    |
                                    v
                              Derive-Secret(., "derived", "")
                                    |
                                    v
concatenated_shared_secret -> HKDF-Extract = Handshake Secret
^^^^^^^^^^^^^^^^^^^^^^^^^^          |
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
                                    |
                                    v
                              Derive-Secret(., "derived", "")
                                    |
                                    v
                         0 -> HKDF-Extract = Master Secret
                                    |
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
]]></artwork>
        </figure>
        <t><strong>FIPS-compliance of shared secret concatenation.</strong>
          <xref target="NIST-SP-800-56C"/> or <xref target="NIST-SP-800-135"/> give NIST recommendations for key derivation methods in key exchange protocols.  Some hybrid combinations may combine the shared secret from a NIST-approved algorithm (e.g., ECDH using the nistp256/secp256r1 curve) with a shared secret from a non-approved algorithm (e.g., post-quantum).  <xref target="NIST-SP-800-56C"/> lists simple concatenation as an approved method for generation of a hybrid shared secret in which one of the constituent shared secret is from an approved method.</t>
      </section>
    </section>
    <section anchor="discussion">
      <name>Discussion</name>
      <t><strong>Larger public keys and/or ciphertexts.</strong>
The <tt>key_exchange</tt> field in the <tt>KeyShareEntry</tt> struct in <xref target="construction-transmitting"/> limits public keys and ciphertexts to 2^16-1 bytes.  Some post-quantum KEMs have larger public keys and/or ciphertexts; for example, Classic McEliece's smallest parameter set has public key size 261,120 bytes.  However, all defined parameter sets for ML-KEM <xref target="NIST-FIPS-203"/> have public keys and ciphertexts that fall within the TLS constraints.</t>
      <t><strong>Duplication of key shares.</strong>
Concatenation of public keys in the <tt>key_exchange</tt> field in the <tt>KeyShareEntry</tt> struct as described in <xref target="construction-transmitting"/> can result in sending duplicate key shares.  For example, if a client wanted to offer support for two combinations, say "SecP256r1MLKEM768" and "X25519MLKEM768" <xref target="ECDHE-MLKEM"/>, it would end up sending two ML-KEM-768 public keys, since the <tt>KeyShareEntry</tt> for each combination contains its own copy of a ML-KEM-768 key.  This duplication may be more problematic for post-quantum algorithms which have larger public keys.  On the other hand, if the client wants to offer, for example "SecP256r1MLKEM768" and "secp256r1" (for backwards compatibility), there is relatively little duplicated data (as the secp256r1 keys are comparatively small).</t>
      <t><strong>Failures.</strong>
Some post-quantum key exchange algorithms, including ML-KEM <xref target="NIST-FIPS-203"/>, have non-zero probability of failure, meaning two honest parties may derive different shared secrets.  This would cause a handshake failure.  ML-KEM has a cryptographically small failure rate; if other algorithms are used, implementers should be aware of the potential of handshake failure. Clients can retry if a failure is encountered.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA will assign identifiers from the TLS Supported Groups section for the hybrid combinations defined following this document.
These assignments should be made in a range that is distinct from the Elliptic Curve Groups and the Finite Field Groups ranges.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The shared secrets computed in the hybrid key exchange should be computed in a way that achieves the "hybrid" property: the resulting secret is secure as long as at least one of the component key exchange algorithms is unbroken.  See <xref target="GIACON"/> and <xref target="BINDEL"/> for an investigation of these issues.  Under the assumption that shared secrets are fixed length once the combination is fixed, the construction from <xref target="construction-shared-secret"/> corresponds to the dual-PRF combiner of <xref target="BINDEL"/> which is shown to preserve security under the assumption that the hash function is a dual-PRF.</t>
      <t>As noted in <xref target="kems"/>, KEMs used in the manner described in this document MUST explicitly be designed to be secure in the event that the public key is reused, such as achieving IND-CCA2 security or having a transform like the Fujisaki-Okamoto transform applied.  ML-KEM has such security properties.  However, some other post-quantum KEMs designed to be IND-CPA-secure (i.e., without countermeasures such as the FO transform) are completely insecure under public key reuse; for example, some lattice-based IND-CPA-secure KEMs are vulnerable to attacks that recover the private key after just a few thousand samples <xref target="FLUHRER"/>.</t>
      <t><strong>Public keys, ciphertexts, and secrets should be constant length.</strong>
This document assumes that the length of each public key, ciphertext, and shared secret is fixed once the algorithm is fixed.  This is the case for ML-KEM.</t>
      <t>Note that variable-length secrets are, generally speaking, dangerous.  In particular, when using key material of variable length and processing it using hash functions, a timing side channel may arise.  In broad terms, when the secret is longer, the hash function may need to process more blocks internally.  In some unfortunate circumstances, this has led to timing attacks, e.g. the Lucky Thirteen <xref target="LUCKY13"/> and Raccoon <xref target="RACCOON"/> attacks.</t>
      <t>Furthermore, <xref target="AVIRAM"/> identified a risk of using variable-length secrets when the hash function used in the key derivation function is no longer collision-resistant.</t>
      <t>If concatenation were to be used with values that are not fixed-length, a length prefix or other unambiguous encoding would need to be used to ensure that the composition of the two values is injective and requires a mechanism different from that specified in this document.</t>
      <t>Therefore, this specification MUST only be used with algorithms which have fixed-length shared secrets (after the variant has been fixed by the algorithm identifier in the <tt>NamedGroup</tt> negotiation in <xref target="construction-negotiation"/>).</t>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>These ideas have grown from discussions with many colleagues, including Christopher Wood, Matt Campagna, Eric Crockett, Deirdre Connolly, authors of the various hybrid Internet-Drafts and implementations cited in this document, and members of the TLS working group.  The immediate impetus for this document came from discussions with attendees at the Workshop on Post-Quantum Software in Mountain View, California, in January 2019.  Daniel J. Bernstein and Tanja Lange commented on the risks of reuse of ephemeral public keys.  Matt Campagna and the team at Amazon Web Services provided additional suggestions.  Nimrod Aviram proposed restricting to fixed-length secrets.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="TLS13">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="AVIRAM" target="https://mailarchive.ietf.org/arch/msg/tls/F4SVeL2xbGPaPB2GW_GkBbD_a5M/">
          <front>
            <title>[TLS] Combining Secrets in Hybrid Key Exchange in TLS 1.3</title>
            <author initials="" surname="Nimrod Aviram">
              <organization/>
            </author>
            <author initials="" surname="Benjamin Dowling">
              <organization/>
            </author>
            <author initials="" surname="Ilan Komargodski">
              <organization/>
            </author>
            <author initials="" surname="Kenny Paterson">
              <organization/>
            </author>
            <author initials="" surname="Eyal Ronen">
              <organization/>
            </author>
            <author initials="" surname="Eylon Yogev">
              <organization/>
            </author>
            <date year="2021" month="September" day="01"/>
          </front>
        </reference>
        <reference anchor="BCNS15">
          <front>
            <title>Post-Quantum Key Exchange for the TLS Protocol from the Ring Learning with Errors Problem</title>
            <author fullname="Joppe W. Bos" initials="J." surname="Bos">
              <organization/>
            </author>
            <author fullname="Craig Costello" initials="C." surname="Costello">
              <organization/>
            </author>
            <author fullname="Michael Naehrig" initials="M." surname="Naehrig">
              <organization/>
            </author>
            <author fullname="Douglas Stebila" initials="D." surname="Stebila">
              <organization/>
            </author>
            <date month="May" year="2015"/>
          </front>
          <seriesInfo name="2015 IEEE Symposium on Security and Privacy" value="pp. 553-570"/>
          <seriesInfo name="DOI" value="10.1109/sp.2015.40"/>
          <refcontent>IEEE</refcontent>
        </reference>
        <reference anchor="BERNSTEIN">
          <front>
            <title>Post-Quantum Cryptography</title>
            <author>
              <organization/>
            </author>
            <date year="2009"/>
          </front>
          <seriesInfo name="DOI" value="10.1007/978-3-540-88702-7"/>
          <seriesInfo name="ISBN" value="[&quot;9783540887010&quot;, &quot;9783540887027&quot;]"/>
          <refcontent>Springer Berlin Heidelberg</refcontent>
        </reference>
        <reference anchor="BINDEL">
          <front>
            <title>Hybrid Key Encapsulation Mechanisms and Authenticated Key Exchange</title>
            <author fullname="Nina Bindel" initials="N." surname="Bindel">
              <organization/>
            </author>
            <author fullname="Jacqueline Brendel" initials="J." surname="Brendel">
              <organization/>
            </author>
            <author fullname="Marc Fischlin" initials="M." surname="Fischlin">
              <organization/>
            </author>
            <author fullname="Brian Goncalves" initials="B." surname="Goncalves">
              <organization/>
            </author>
            <author fullname="Douglas Stebila" initials="D." surname="Stebila">
              <organization/>
            </author>
            <date year="2019"/>
          </front>
          <seriesInfo name="Lecture Notes in Computer Science" value="pp. 206-226"/>
          <seriesInfo name="DOI" value="10.1007/978-3-030-25510-7_12"/>
          <seriesInfo name="ISBN" value="[&quot;9783030255091&quot;, &quot;9783030255107&quot;]"/>
          <refcontent>Springer International Publishing</refcontent>
        </reference>
        <reference anchor="CAMPAGNA">
          <front>
            <title>Hybrid Post-Quantum Key Encapsulation Methods (PQ KEM) for Transport Layer Security 1.2 (TLS)</title>
            <author fullname="Matt Campagna" initials="M." surname="Campagna">
              <organization>AWS</organization>
            </author>
            <author fullname="Eric Crockett" initials="E." surname="Crockett">
              <organization>AWS</organization>
            </author>
            <date day="2" month="September" year="2021"/>
            <abstract>
              <t>   Hybrid key exchange refers to executing two independent key exchanges
   and feeding the two resulting shared secrets into a Pseudo Random
   Function (PRF), with the goal of deriving a secret which is as secure
   as the stronger of the two key exchanges.  This document describes
   new hybrid key exchange schemes for the Transport Layer Security 1.2
   (TLS) protocol.  The key exchange schemes are based on combining
   Elliptic Curve Diffie-Hellman (ECDH) with a post-quantum key
   encapsulation method (PQ KEM) using the existing TLS PRF.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-campagna-tls-bike-sike-hybrid-07"/>
        </reference>
        <reference anchor="CECPQ1" target="https://security.googleblog.com/2016/07/experimenting-with-post-quantum.html">
          <front>
            <title>Experimenting with Post-Quantum Cryptography</title>
            <author initials="M." surname="Braithwaite">
              <organization/>
            </author>
            <date year="2016" month="July" day="07"/>
          </front>
        </reference>
        <reference anchor="CECPQ2" target="https://www.imperialviolet.org/2018/12/12/cecpq2.html">
          <front>
            <title>CECPQ2</title>
            <author initials="A." surname="Langley">
              <organization/>
            </author>
            <date year="2018" month="December" day="12"/>
          </front>
        </reference>
        <reference anchor="DODIS">
          <front>
            <title>Chosen-Ciphertext Security of Multiple Encryption</title>
            <author fullname="Yevgeniy Dodis" initials="Y." surname="Dodis">
              <organization/>
            </author>
            <author fullname="Jonathan Katz" initials="J." surname="Katz">
              <organization/>
            </author>
            <date year="2005"/>
          </front>
          <seriesInfo name="Lecture Notes in Computer Science" value="pp. 188-209"/>
          <seriesInfo name="DOI" value="10.1007/978-3-540-30576-7_11"/>
          <seriesInfo name="ISBN" value="[&quot;9783540245735&quot;, &quot;9783540305767&quot;]"/>
          <refcontent>Springer Berlin Heidelberg</refcontent>
        </reference>
        <reference anchor="DOWLING">
          <front>
            <title>A Cryptographic Analysis of the TLS 1.3 Handshake Protocol</title>
            <author fullname="Benjamin Dowling" initials="B." surname="Dowling">
              <organization/>
            </author>
            <author fullname="Marc Fischlin" initials="M." surname="Fischlin">
              <organization/>
            </author>
            <author fullname="Felix Günther" initials="F." surname="Günther">
              <organization/>
            </author>
            <author fullname="Douglas Stebila" initials="D." surname="Stebila">
              <organization/>
            </author>
            <date month="July" year="2021"/>
          </front>
          <seriesInfo name="Journal of Cryptology" value="vol. 34, no. 4"/>
          <seriesInfo name="DOI" value="10.1007/s00145-021-09384-1"/>
          <refcontent>Springer Science and Business Media LLC</refcontent>
        </reference>
        <reference anchor="ETSI" target="https://www.etsi.org/images/files/ETSIWhitePapers/QuantumSafeWhitepaper.pdf">
          <front>
            <title>Quantum safe cryptography and security: An introduction, benefits, enablers and challengers</title>
            <author initials="M." surname="Campagna" role="editor">
              <organization/>
            </author>
            <author initials="" surname="others">
              <organization/>
            </author>
            <date year="2015" month="June"/>
          </front>
          <seriesInfo name="ETSI White Paper No. 8" value=""/>
        </reference>
        <reference anchor="EVEN">
          <front>
            <title>On the Power of Cascade Ciphers</title>
            <author fullname="S. Even" initials="S." surname="Even">
              <organization/>
            </author>
            <author fullname="O. Goldreich" initials="O." surname="Goldreich">
              <organization/>
            </author>
            <date year="1984"/>
          </front>
          <seriesInfo name="Advances in Cryptology" value="pp. 43-50"/>
          <seriesInfo name="DOI" value="10.1007/978-1-4684-4730-9_4"/>
          <seriesInfo name="ISBN" value="[&quot;9781468447323&quot;, &quot;9781468447309&quot;]"/>
          <refcontent>Springer US</refcontent>
        </reference>
        <reference anchor="EXTERN-PSK">
          <front>
            <title>TLS 1.3 Extension for Certificate-Based Authentication with an External Pre-Shared Key</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="March" year="2020"/>
            <abstract>
              <t>This document specifies a TLS 1.3 extension that allows a server to authenticate with a combination of a certificate and an external pre-shared key (PSK).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8773"/>
          <seriesInfo name="DOI" value="10.17487/RFC8773"/>
        </reference>
        <reference anchor="FLUHRER" target="https://eprint.iacr.org/2016/085">
          <front>
            <title>Cryptanalysis of ring-LWE based key exchange with key share reuse</title>
            <author initials="S." surname="Fluhrer">
              <organization/>
            </author>
            <date year="2016" month="January"/>
          </front>
          <seriesInfo name="Cryptology ePrint Archive, Report 2016/085" value=""/>
        </reference>
        <reference anchor="FO">
          <front>
            <title>Secure Integration of Asymmetric and Symmetric Encryption Schemes</title>
            <author fullname="Eiichiro Fujisaki" initials="E." surname="Fujisaki">
              <organization/>
            </author>
            <author fullname="Tatsuaki Okamoto" initials="T." surname="Okamoto">
              <organization/>
            </author>
            <date month="December" year="2011"/>
          </front>
          <seriesInfo name="Journal of Cryptology" value="vol. 26, no. 1, pp. 80-101"/>
          <seriesInfo name="DOI" value="10.1007/s00145-011-9114-1"/>
          <refcontent>Springer Science and Business Media LLC</refcontent>
        </reference>
        <reference anchor="FRODO">
          <front>
            <title>Frodo: Take off the Ring! Practical, Quantum-Secure Key Exchange from LWE</title>
            <author fullname="Joppe Bos" initials="J." surname="Bos">
              <organization>NXP Semiconductors, Eindhoven, Netherlands</organization>
            </author>
            <author fullname="Craig Costello" initials="C." surname="Costello">
              <organization>Microsoft Research, Redmond, WA, USA</organization>
            </author>
            <author fullname="Leo Ducas" initials="L." surname="Ducas">
              <organization>CWI, Amsterdam, Netherlands</organization>
            </author>
            <author fullname="Ilya Mironov" initials="I." surname="Mironov">
              <organization>Google, Mountain View, CA, USA</organization>
            </author>
            <author fullname="Michael Naehrig" initials="M." surname="Naehrig">
              <organization>Microsoft Research, Redmond, WA, USA</organization>
            </author>
            <author fullname="Valeria Nikolaenko" initials="V." surname="Nikolaenko">
              <organization>Stanford University, Stanford, CA, USA</organization>
            </author>
            <author fullname="Ananth Raghunathan" initials="A." surname="Raghunathan">
              <organization>Google, Mountain View, CA, USA</organization>
            </author>
            <author fullname="Douglas Stebila" initials="D." surname="Stebila">
              <organization>McMaster University, Hamilton, ON, Canada</organization>
            </author>
            <date month="October" year="2016"/>
          </front>
          <seriesInfo name="Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications" value="Security"/>
          <seriesInfo name="DOI" value="10.1145/2976749.2978425"/>
          <refcontent>ACM</refcontent>
        </reference>
        <reference anchor="GIACON">
          <front>
            <title>KEM Combiners</title>
            <author fullname="Federico Giacon" initials="F." surname="Giacon">
              <organization/>
            </author>
            <author fullname="Felix Heuer" initials="F." surname="Heuer">
              <organization/>
            </author>
            <author fullname="Bertram Poettering" initials="B." surname="Poettering">
              <organization/>
            </author>
            <date year="2018"/>
          </front>
          <seriesInfo name="Lecture Notes in Computer Science" value="pp. 190-218"/>
          <seriesInfo name="DOI" value="10.1007/978-3-319-76578-5_7"/>
          <seriesInfo name="ISBN" value="[&quot;9783319765778&quot;, &quot;9783319765785&quot;]"/>
          <refcontent>Springer International Publishing</refcontent>
        </reference>
        <reference anchor="HARNIK">
          <front>
            <title>On Robust Combiners for Oblivious Transfer and Other Primitives</title>
            <author fullname="Danny Harnik" initials="D." surname="Harnik">
              <organization/>
            </author>
            <author fullname="Joe Kilian" initials="J." surname="Kilian">
              <organization/>
            </author>
            <author fullname="Moni Naor" initials="M." surname="Naor">
              <organization/>
            </author>
            <author fullname="Omer Reingold" initials="O." surname="Reingold">
              <organization/>
            </author>
            <author fullname="Alon Rosen" initials="A." surname="Rosen">
              <organization/>
            </author>
            <date year="2005"/>
          </front>
          <seriesInfo name="Lecture Notes in Computer Science" value="pp. 96-113"/>
          <seriesInfo name="DOI" value="10.1007/11426639_6"/>
          <seriesInfo name="ISBN" value="[&quot;9783540259107&quot;, &quot;9783540320555&quot;]"/>
          <refcontent>Springer Berlin Heidelberg</refcontent>
        </reference>
        <reference anchor="HHK">
          <front>
            <title>A Modular Analysis of the Fujisaki-Okamoto Transformation</title>
            <author fullname="Dennis Hofheinz" initials="D." surname="Hofheinz">
              <organization/>
            </author>
            <author fullname="Kathrin Hövelmanns" initials="K." surname="Hövelmanns">
              <organization/>
            </author>
            <author fullname="Eike Kiltz" initials="E." surname="Kiltz">
              <organization/>
            </author>
            <date year="2017"/>
          </front>
          <seriesInfo name="Lecture Notes in Computer Science" value="pp. 341-371"/>
          <seriesInfo name="DOI" value="10.1007/978-3-319-70500-2_12"/>
          <seriesInfo name="ISBN" value="[&quot;9783319704999&quot;, &quot;9783319705002&quot;]"/>
          <refcontent>Springer International Publishing</refcontent>
        </reference>
        <reference anchor="HPKE">
          <front>
            <title>Hybrid Public Key Encryption</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="K. Bhargavan" initials="K." surname="Bhargavan"/>
            <author fullname="B. Lipp" initials="B." surname="Lipp"/>
            <author fullname="C. Wood" initials="C." surname="Wood"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>This document describes a scheme for hybrid public key encryption (HPKE). This scheme provides a variant of public key encryption of arbitrary-sized plaintexts for a recipient public key. It also includes three authenticated variants, including one that authenticates possession of a pre-shared key and two optional ones that authenticate possession of a key encapsulation mechanism (KEM) private key. HPKE works for any combination of an asymmetric KEM, key derivation function (KDF), and authenticated encryption with additional data (AEAD) encryption function. Some authenticated variants may not be supported by all KEMs. We provide instantiations of the scheme using widely used and efficient primitives, such as Elliptic Curve Diffie-Hellman (ECDH) key agreement, HMAC-based key derivation function (HKDF), and SHA2.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9180"/>
          <seriesInfo name="DOI" value="10.17487/RFC9180"/>
        </reference>
        <reference anchor="IKE-HYBRID">
          <front>
            <title>Framework to Integrate Post-quantum Key Exchanges into Internet Key Exchange Protocol Version 2 (IKEv2)</title>
            <author fullname="C. Tjhai" initials="C." surname="Tjhai">
              <organization>Post-Quantum</organization>
            </author>
            <author fullname="M. Tomlinson" initials="M." surname="Tomlinson">
              <organization>Post-Quantum</organization>
            </author>
            <author fullname="grbartle@cisco.com" initials="" surname="grbartle@cisco.com">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Scott Fluhrer" initials="S." surname="Fluhrer">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Daniel Van Geest" initials="D." surname="Van Geest">
              <organization>ISARA Corporation</organization>
            </author>
            <author fullname="Oscar Garcia-Morchon" initials="O." surname="Garcia-Morchon">
              <organization>Philips</organization>
            </author>
            <author fullname="Valery Smyslov" initials="V." surname="Smyslov">
              <organization>ELVIS-PLUS</organization>
            </author>
            <date day="9" month="July" year="2019"/>
            <abstract>
              <t>   This document describes how to extend Internet Key Exchange Protocol
   Version 2 (IKEv2) so that the shared secret exchanged between peers
   has resistance against quantum computer attacks.  The basic idea is
   to exchange one or more post-quantum key exchange payloads in
   conjunction with the existing (Elliptic Curve) Diffie-Hellman
   payload.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tjhai-ipsecme-hybrid-qske-ikev2-04"/>
        </reference>
        <reference anchor="IKE-PSK">
          <front>
            <title>Mixing Preshared Keys in the Internet Key Exchange Protocol Version 2 (IKEv2) for Post-quantum Security</title>
            <author fullname="S. Fluhrer" initials="S." surname="Fluhrer"/>
            <author fullname="P. Kampanakis" initials="P." surname="Kampanakis"/>
            <author fullname="D. McGrew" initials="D." surname="McGrew"/>
            <author fullname="V. Smyslov" initials="V." surname="Smyslov"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>The possibility of quantum computers poses a serious challenge to cryptographic algorithms deployed widely today. The Internet Key Exchange Protocol Version 2 (IKEv2) is one example of a cryptosystem that could be broken; someone storing VPN communications today could decrypt them at a later time when a quantum computer is available. It is anticipated that IKEv2 will be extended to support quantum-secure key exchange algorithms; however, that is not likely to happen in the near term. To address this problem before then, this document describes an extension of IKEv2 to allow it to be resistant to a quantum computer by using preshared keys.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8784"/>
          <seriesInfo name="DOI" value="10.17487/RFC8784"/>
        </reference>
        <reference anchor="KIEFER">
          <front>
            <title>Hybrid ECDHE-SIDH Key Exchange for TLS</title>
            <author fullname="Franziskus Kiefer" initials="F." surname="Kiefer">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Kris Kwiatkowski" initials="K." surname="Kwiatkowski">
              <organization>Cloudflare</organization>
            </author>
            <date day="5" month="November" year="2018"/>
            <abstract>
              <t>   This draft specifies a TLS key exchange that combines the post-
   quantum key exchange, Supersingular elliptic curve isogenie diffie-
   hellman (SIDH), with elliptic curve Diffie-Hellman (ECDHE) key
   exchange.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-kiefer-tls-ecdhe-sidh-00"/>
        </reference>
        <reference anchor="LANGLEY" target="https://www.imperialviolet.org/2018/04/11/pqconftls.html">
          <front>
            <title>Post-quantum confidentiality for TLS</title>
            <author initials="A." surname="Langley">
              <organization/>
            </author>
            <date year="2018" month="April" day="11"/>
          </front>
        </reference>
        <reference anchor="LUCKY13">
          <front>
            <title>Lucky Thirteen: Breaking the TLS and DTLS Record Protocols</title>
            <author fullname="N. J. Al Fardan" initials="N." surname="Al Fardan">
              <organization/>
            </author>
            <author fullname="K. G. Paterson" initials="K." surname="Paterson">
              <organization/>
            </author>
            <date month="May" year="2013"/>
          </front>
          <seriesInfo name="2013 IEEE Symposium on Security and Privacy" value="pp. 526-540"/>
          <seriesInfo name="DOI" value="10.1109/sp.2013.42"/>
          <refcontent>IEEE</refcontent>
        </reference>
        <reference anchor="NIELSEN">
          <front>
            <title>Quantum Computation and Quantum Information</title>
            <author initials="M. A." surname="Nielsen">
              <organization/>
            </author>
            <author initials="I. L." surname="Chuang">
              <organization/>
            </author>
            <date year="2000"/>
          </front>
          <seriesInfo name="Cambridge University Press" value=""/>
        </reference>
        <reference anchor="NIST" target="https://www.nist.gov/pqcrypto">
          <front>
            <title>Post-Quantum Cryptography</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="NIST-FIPS-203">
          <front>
            <title>Module-lattice-based key-encapsulation mechanism standard</title>
            <author>
              <organization/>
            </author>
            <date month="August" year="2024"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.fips.203"/>
          <refcontent>National Institute of Standards and Technology (U.S.)</refcontent>
        </reference>
        <reference anchor="NIST-SP-800-56C">
          <front>
            <title>Recommendation for Key-Derivation Methods in Key-Establishment Schemes</title>
            <author fullname="Elaine Barker" initials="E." surname="Barker">
              <organization/>
            </author>
            <author fullname="Lily Chen" initials="L." surname="Chen">
              <organization/>
            </author>
            <author fullname="Richard Davis" initials="R." surname="Davis">
              <organization/>
            </author>
            <date month="August" year="2020"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.sp.800-56cr2"/>
          <refcontent>National Institute of Standards and Technology</refcontent>
        </reference>
        <reference anchor="NIST-SP-800-135">
          <front>
            <title>Recommendation for existing application-specific key derivation functions</title>
            <author fullname="Q H Dang" initials="Q." surname="Dang">
              <organization/>
            </author>
            <date year="2011"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.sp.800-135r1"/>
          <refcontent>National Institute of Standards and Technology</refcontent>
        </reference>
        <reference anchor="OQS-102" target="https://github.com/open-quantum-safe/openssl/tree/OQS-OpenSSL_1_0_2-stable">
          <front>
            <title>OQS-OpenSSL-1-0-2_stable</title>
            <author>
              <organization>Open Quantum Safe Project</organization>
            </author>
            <date year="2018" month="November"/>
          </front>
        </reference>
        <reference anchor="OQS-111" target="https://github.com/open-quantum-safe/openssl/tree/OQS-OpenSSL_1_1_1-stable">
          <front>
            <title>OQS-OpenSSL-1-1-1_stable</title>
            <author>
              <organization>Open Quantum Safe Project</organization>
            </author>
            <date year="2022" month="January"/>
          </front>
        </reference>
        <reference anchor="OQS-PROV" target="https://github.com/open-quantum-safe/oqs-provider/">
          <front>
            <title>OQS Provider for OpenSSL 3</title>
            <author>
              <organization>Open Quantum Safe Project</organization>
            </author>
            <date year="2023" month="July"/>
          </front>
        </reference>
        <reference anchor="PQUIP-TERM">
          <front>
            <title>Terminology for Post-Quantum Traditional Hybrid Schemes</title>
            <author fullname="Florence D" initials="F." surname="D">
              <organization>UK National Cyber Security Centre</organization>
            </author>
            <author fullname="Michael P" initials="M." surname="P">
              <organization>UK National Cyber Security Centre</organization>
            </author>
            <author fullname="Britta Hale" initials="B." surname="Hale">
              <organization>Naval Postgraduate School</organization>
            </author>
            <date day="10" month="January" year="2025"/>
            <abstract>
              <t>   One aspect of the transition to post-quantum algorithms in
   cryptographic protocols is the development of hybrid schemes that
   incorporate both post-quantum and traditional asymmetric algorithms.
   This document defines terminology for such schemes.  It is intended
   to be used as a reference and, hopefully, to ensure consistency and
   clarity across different protocols, standards, and organisations.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-pquip-pqt-hybrid-terminology-06"/>
        </reference>
        <reference anchor="PST">
          <front>
            <title>Benchmarking Post-quantum Cryptography in TLS</title>
            <author fullname="Christian Paquin" initials="C." surname="Paquin">
              <organization/>
            </author>
            <author fullname="Douglas Stebila" initials="D." surname="Stebila">
              <organization/>
            </author>
            <author fullname="Goutam Tamvada" initials="G." surname="Tamvada">
              <organization/>
            </author>
            <date year="2020"/>
          </front>
          <seriesInfo name="Lecture Notes in Computer Science" value="pp. 72-91"/>
          <seriesInfo name="DOI" value="10.1007/978-3-030-44223-1_5"/>
          <seriesInfo name="ISBN" value="[&quot;9783030442224&quot;, &quot;9783030442231&quot;]"/>
          <refcontent>Springer International Publishing</refcontent>
        </reference>
        <reference anchor="RACCOON" target="https://raccoon-attack.com/">
          <front>
            <title>Raccoon Attack: Finding and Exploiting Most-Significant-Bit-Oracles in TLS-DH(E)</title>
            <author initials="R." surname="Merget">
              <organization/>
            </author>
            <author initials="M." surname="Brinkmann">
              <organization/>
            </author>
            <author initials="N." surname="Aviram">
              <organization/>
            </author>
            <author initials="J." surname="Somorovsky">
              <organization/>
            </author>
            <author initials="J." surname="Mittmann">
              <organization/>
            </author>
            <author initials="J." surname="Schwenk">
              <organization/>
            </author>
            <date year="2020" month="September"/>
          </front>
        </reference>
        <reference anchor="S2N" target="https://aws.amazon.com/blogs/security/post-quantum-tls-now-supported-in-aws-kms/">
          <front>
            <title>Post-quantum TLS now supported in AWS KMS</title>
            <author>
              <organization>Amazon Web Services</organization>
            </author>
            <date year="2019" month="November" day="04"/>
          </front>
        </reference>
        <reference anchor="SCHANCK">
          <front>
            <title>A Transport Layer Security (TLS) Extension For Establishing An Additional Shared Secret</title>
            <author fullname="John M. Schanck" initials="J. M." surname="Schanck">
              <organization>University of Waterloo</organization>
            </author>
            <author fullname="Douglas Stebila" initials="D." surname="Stebila">
              <organization>McMaster University</organization>
            </author>
            <date day="17" month="April" year="2017"/>
            <abstract>
              <t>   This document defines a Transport Layer Security (TLS) extension that
   allows parties to establish an additional shared secret using a
   second key exchange algorithm and incorporates this shared secret
   into the TLS key schedule.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-schanck-tls-additional-keyshare-00"/>
        </reference>
        <reference anchor="WHYTE12">
          <front>
            <title>Quantum-Safe Hybrid (QSH) Ciphersuite for Transport Layer Security (TLS) version 1.2</title>
            <author fullname="John M. Schanck" initials="J. M." surname="Schanck">
         </author>
            <author fullname="William Whyte" initials="W." surname="Whyte">
              <organization>Security Innovation</organization>
            </author>
            <author fullname="Zhenfei Zhang" initials="Z." surname="Zhang">
              <organization>Security Innovation</organization>
            </author>
            <date day="22" month="July" year="2016"/>
            <abstract>
              <t>   This document describes the Quantum-Safe Hybrid ciphersuite, a new
   cipher suite providing modular design for quantum-safe cryptography
   to be adopted in the handshake for the Transport Layer Security (TLS)
   protocol version 1.2.  In particular, it specifies the use of the
   NTRUEncrypt encryption scheme in a TLS handshake.




              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-whyte-qsh-tls12-02"/>
        </reference>
        <reference anchor="WHYTE13">
          <front>
            <title>Quantum-Safe Hybrid (QSH) Key Exchange for Transport Layer Security (TLS) version 1.3</title>
            <author fullname="William Whyte" initials="W." surname="Whyte">
              <organization>Onboard Security</organization>
            </author>
            <author fullname="Zhenfei Zhang" initials="Z." surname="Zhang">
              <organization>Onboard Security</organization>
            </author>
            <author fullname="Scott Fluhrer" initials="S." surname="Fluhrer">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Oscar Garcia-Morchon" initials="O." surname="Garcia-Morchon">
              <organization>Philips</organization>
            </author>
            <date day="3" month="October" year="2017"/>
            <abstract>
              <t>   This document describes the Quantum-Safe Hybrid Key Exchange, a
   mechanism for providing modular design for quantum-safe cryptography
   to be adopted in the handshake for the Transport Layer Security (TLS)
   protocol version 1.3.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-whyte-qsh-tls13-06"/>
        </reference>
        <reference anchor="XMSS">
          <front>
            <title>XMSS: eXtended Merkle Signature Scheme</title>
            <author fullname="A. Huelsing" initials="A." surname="Huelsing"/>
            <author fullname="D. Butin" initials="D." surname="Butin"/>
            <author fullname="S. Gazdag" initials="S." surname="Gazdag"/>
            <author fullname="J. Rijneveld" initials="J." surname="Rijneveld"/>
            <author fullname="A. Mohaisen" initials="A." surname="Mohaisen"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>This note describes the eXtended Merkle Signature Scheme (XMSS), a hash-based digital signature system that is based on existing descriptions in scientific literature. This note specifies Winternitz One-Time Signature Plus (WOTS+), a one-time signature scheme; XMSS, a single-tree scheme; and XMSS^MT, a multi-tree variant of XMSS. Both XMSS and XMSS^MT use WOTS+ as a main building block. XMSS provides cryptographic digital signatures without relying on the conjectured hardness of mathematical problems. Instead, it is proven that it only relies on the properties of cryptographic hash functions. XMSS provides strong security guarantees and is even secure when the collision resistance of the underlying hash function is broken. It is suitable for compact implementations, is relatively simple to implement, and naturally resists side-channel attacks. Unlike most other signature systems, hash-based signatures can so far withstand known attacks using quantum computers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8391"/>
          <seriesInfo name="DOI" value="10.17487/RFC8391"/>
        </reference>
        <reference anchor="ZHANG">
          <front>
            <title>On the Security of Multiple Encryption or CCA-security+CCA-security=CCA-security?</title>
            <author fullname="Rui Zhang" initials="R." surname="Zhang">
              <organization/>
            </author>
            <author fullname="Goichiro Hanaoka" initials="G." surname="Hanaoka">
              <organization/>
            </author>
            <author fullname="Junji Shikata" initials="J." surname="Shikata">
              <organization/>
            </author>
            <author fullname="Hideki Imai" initials="H." surname="Imai">
              <organization/>
            </author>
            <date year="2004"/>
          </front>
          <seriesInfo name="Lecture Notes in Computer Science" value="pp. 360-374"/>
          <seriesInfo name="DOI" value="10.1007/978-3-540-24632-9_26"/>
          <seriesInfo name="ISBN" value="[&quot;9783540210184&quot;, &quot;9783540246329&quot;]"/>
          <refcontent>Springer Berlin Heidelberg</refcontent>
        </reference>
        <reference anchor="ECDHE-MLKEM">
          <front>
            <title>Post-quantum hybrid ECDHE-MLKEM Key Agreement for TLSv1.3</title>
            <author fullname="Kris Kwiatkowski" initials="K." surname="Kwiatkowski">
              <organization>PQShield</organization>
            </author>
            <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
              <organization>AWS</organization>
            </author>
            <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Douglas Stebila" initials="D." surname="Stebila">
              <organization>University of Waterloo</organization>
            </author>
            <date day="24" month="December" year="2024"/>
            <abstract>
              <t>   This draft defines three hybrid key agreements for TLS 1.3:
   X25519MLKEM768, SecP256r1MLKEM768, and SecP384r1MLKEM1024 which
   combine a post-quantum KEM with an elliptic curve Diffie-Hellman
   (ECDHE).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-kwiatkowski-tls-ecdhe-mlkem-03"/>
        </reference>
      </references>
    </references>
    <?line 526?>

<section anchor="related-work">
      <name>Related work</name>
      <t>Quantum computing and post-quantum cryptography in general are outside the scope of this document.  For a general introduction to quantum computing, see a standard textbook such as <xref target="NIELSEN"/>.  For an overview of post-quantum cryptography as of 2009, see <xref target="BERNSTEIN"/>.  For the current status of the NIST Post-Quantum Cryptography Standardization Project, see <xref target="NIST"/>.  For additional perspectives on the general transition from traditional to post-quantum cryptography, see for example <xref target="ETSI"/>, among others.</t>
      <t>There have been several Internet-Drafts describing mechanisms for embedding post-quantum and/or hybrid key exchange in TLS:</t>
      <ul spacing="normal">
        <li>
          <t>Internet-Drafts for TLS 1.2: <xref target="WHYTE12"/>, <xref target="CAMPAGNA"/></t>
        </li>
        <li>
          <t>Internet-Drafts for TLS 1.3: <xref target="KIEFER"/>, <xref target="SCHANCK"/>, <xref target="WHYTE13"/></t>
        </li>
      </ul>
      <t>There have been several prototype implementations for post-quantum and/or hybrid key exchange in TLS:</t>
      <ul spacing="normal">
        <li>
          <t>Experimental implementations in TLS 1.2: <xref target="BCNS15"/>, <xref target="CECPQ1"/>, <xref target="FRODO"/>, <xref target="OQS-102"/>, <xref target="S2N"/></t>
        </li>
        <li>
          <t>Experimental implementations in TLS 1.3: <xref target="CECPQ2"/>, <xref target="OQS-111"/>, <xref target="OQS-PROV"/>, <xref target="PST"/></t>
        </li>
      </ul>
      <t>These experimental implementations have taken an ad hoc approach and not attempted to implement one of the drafts listed above.</t>
      <t>Unrelated to post-quantum but still related to the issue of combining multiple types of keying material in TLS is the use of pre-shared keys, especially the recent TLS working group document on including an external pre-shared key <xref target="EXTERN-PSK"/>.</t>
      <t>Considering other IETF standards, there is work on post-quantum preshared keys in IKEv2 <xref target="IKE-PSK"/> and a framework for hybrid key exchange in IKEv2 <xref target="IKE-HYBRID"/>.  The XMSS hash-based signature scheme has been published as an informational RFC by the IRTF <xref target="XMSS"/>.</t>
      <t>In the academic literature, <xref target="EVEN"/> initiated the study of combining multiple symmetric encryption schemes; <xref target="ZHANG"/>, <xref target="DODIS"/>, and <xref target="HARNIK"/> examined combining multiple public key encryption schemes, and <xref target="HARNIK"/> coined the term "robust combiner" to refer to a compiler that constructs a hybrid scheme from individual schemes while preserving security properties.  <xref target="GIACON"/> and <xref target="BINDEL"/> examined combining multiple key encapsulation mechanisms.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+19aVPbWNrod/8KFam6DXktY5slhLwzNQRMYFgbJ53pOzUd
ZOnYViNLjo4McTPMb7/PdqQjWTZkuqfuvVVveglIZ33Osy9Hrus2sjCL1L5z
Mh+kYeDcqbmjvvljLx4pJ4ydj+d9p9PaaniDQaru951QZUM3i7Q7pvZuoHQ4
ihtB4sfeBIYJUm+YufWt3E63EXgZtOq2uztuu+N2ths+PBgl6RyGjodJoxFO
030nS2c667bbb9vdBqzoIUmDfec0zlQaq8w9wjkaDZ15cfDFi5IYRpwr3ZiG
+87fs8RvOjpJs1QNNfw0n+AP/4Dms8Ek1DpM4o/zKfQ47X08bjS8WTZO0v2G
47jwnwOL0PvOUcvpZ2oQRh49450dJbNR5OnSmyQdeXH4m5fBqPvOpzi8V6kO
s7mTDJ3PsLE0ShJqqCZeGAF0NHf+y+xB3rZ8rzx3v+UcR7NxqlJr7r6fZFnp
eXnmw1D7idOfw/ATbU+oh9znLz62aPnJZGG2DzOVJrE92dib209XbfLEC4ee
A+fgXKiMYWIw5VNL3v6v4p1ZFczQGtEMfxnhI1pYI07SCcxyr/A4APE6W/vO
zfHh3vb2LjzAnzpvtvfND4AqgDBWj4OfTm8OLvZposxLRyrbd8ZZNtX7m5s4
iZf6Y2jaQuRswaY28cHmRI82AVM3j7f7P6nz7rfBh2vv+n33w+cvH+7eD46+
eDsXmzwk08na32Fl/3AOk8kgjMN45PSVn6pMI7EIDZ0BDfUWaWiNhskJoOO2
3wINMMxyLMQ/rvwtZ3QZTtIkcA7uw9Sb1Dd5r+JfvQlMdZQ8RLCo+lankRc7
Z8kEYJME+i6sb3Wm4njuXCN+asGAhTa9uRc5N0B4S98DVTo/JyN1Dy/eH172
OztAQVenrU671em03272r1vddmentd3GBr2by/7H3ull0abdfrP59s2eu+Xu
bLfdvb037a77BpueXh71zuvatbfabndnp9N233wBRuM4hwcX1wcfLg9g4+4R
0Nlk6o1ij9jSILxTrsb/MYPC1r3D6x879dijlT9LAeNboyQZRWoQJSPE2E3Y
we4mLEB9m6o0nKg4A9i7D2E2dqeJztyvMy/OZpPWOJtENg717PYOtneusf2P
3N45TOfTLBml3nQ8fx4/LlrO+9SDQR7gf6qEZJ1dt/0G/jX769bv7+HhoRVO
cE1edB8mkcqIPqD/3mani//6yp9+7S5shAd9fokHLeccqCFS8/Ly9kAkuHRY
R1dHp/1lx7/V3nmzi8faoZafz08vP5Tb6na7sw0ihahqa2/bxZa9j/3T5RsG
mg1pm+HEGym9OQwj+D/2+TwGOF57AA+9KUfS94aKHk/xcWsaDEs8wRychmaO
b50esUaDPgCHGOCRATXPfOSmTWegYjUMMxBUKvYGEcxIPYB3RJEC9pHqtZXQ
TROcXwVhlqQLWHEoKF9/Jkk2huHpmYaTBwkN7HSfgObQVh0CgXOZtJy98rEB
oJEj937q1VBsx93ehQPYfgP0+PbLNrb720cgcPe6f8bM+82bLXh6fP7p5KZ3
U39AapoCoFqh56cGFYHS9nZKUCcy8WIvmutQozRKkfzOP/ecgadVRZchKsMn
IHxS5aRqptVq2NaJYxtSTKXAC2CWa1yuc8ASpuncqCloIE5p1TZNInYeX9Wj
cKfjvu10GIOPb66OrGbwfrP79s3um+23Lfh7b7uLQ384PTi8qmWdW5237pvd
Hfh55wvygJODm8vTs3JLGLS7u7v19gue6MnJ2dJx2jttYLDMWk+uz3p0lm87
e8jAT8967snP729Oj5jZZr+OvdANp4D5E8Nj3a8a+C3w3Puu9CgQYg/R5Oy0
dwz4QAPchWqoUuLVyg/GyKyDMbQ5P7j8cN77+fvZWHsbdro5/eon8RBGXeBk
1xa/drBRGCB79iJUdEDNQCH+e/hcGw4UT/T80+HZz6jYLArDrdY2QubytHfe
B8KyV5cLhmQynWWkiRGfMM9PjSYkAvs5eQHrvAxVpJfJ71PYB/CPMQw/WsR7
b4LnCTRl6YLXqdK6tOl2mzbT/7j8sOJQZyBT7/FciJgWTuSFEhGOGfQk2j8o
JqexhjFmwMGAJ/TRSvDSgBnrR+WPY6bZdVzbhqzRPT697rvddnEwu+3u3ia+
auErOJ8t07R/7e4BKezsHtY0hqOUl2m30qGztbO8A7xMET+ufuy7nfYSOT0C
HjYbkOqRTFVs8NVFsUNPtI42wfBRmzjMFTzo98+/dL60v3RdsJZAvtgAttoA
00battrUwBfb5hiHAhEOPflV+dmCTM830lmiUP27G4F/nt0I/POHbKTbZT6N
o1/fXP307+zkq3anaXIPvCTdrKwY56QXxF1k+c7W71zzFit71z9+Or12Qepe
MDsle3z6dRZO4f+ZYcig4YPNQNSAfYBSl6jV29tdGLnzBaXNzcHh4dXVZT00
Us/3kyR2vSzz/DuCSkli3/B754De7zvHYRygCoykCUpxlISkEV8g6ffDURwO
Qx+27L4PM/cKBgcNTQwq9+hkvbexKMANIyM2dtMC0xNXuPiKlOYwvpt4cbz4
9rJlm1ulV39tOf1kksDh6bt57euLMMvqh8W+/vhBxXflU2uD0gpP+t0lYPUe
dMubeL8lMYEU7Q+dGyWbtqlBEjNOHlw9m6IKogI3hON40O7dRJfOoiTw0EKF
Xk7eC6F88LnvnF3UST3CyANakPNZDcAETu9DX5X5P+gMoMq0UbL3D08OLg/P
GBc1KmT+Ha3UC0BzJabtgmpGmhk0/3zy88dep8vNH8bzTIHuMMYOpHzw6626
10g+f7vo91mt2HqL9Pu/Ye4PyyyL7vbuVhfU1C7ps4dHJz334vysJ2Rz9xB6
2V3yALaypYpMojs1aTRc13W8gc4ALbNGo859lqIOo50scWYa0Xoyi7JwGqly
Ky8aJXCO44l2dIhNvFglMx2x7eDnfgZQ12FEDQ1Yl8XfRwmIOxByzGSwlcEK
R90DwwiHMHzkDGaZA8Y6tsReMOYUbffMnhs06EGa3Km4BcpZhr9Okiy89xAZ
BnMHthlrOivcz7SkLVmyGTp/HEPfIPFnaN/KyoBsPdSqAFps+RDTG9e7HHGJ
H3E60qHPvTnwyL7Z1jqg6gaOmiV+EjmkfsBwndZWq9E4CrU/IxcfbxUW8pCk
d7gZFfvJLAVDL8D1j70p8tNEJgPsR2+gg14iBGIEeokDB/4X4yoCjDeNP4TZ
yWwAJwEwQKtr7jyMQ3+Mu8s8oHJqRF7QWiFhPICbqxylLcauSRgEIMUar9D1
mRuNzuMr24Z8ajTKEB+BTvY94BbvFJ0coAhAFFGGF+IAnNLEg+2FOCTgJ6Bv
01mDsdFvG5PGteayuWXagj2KPeqmY2xm/VWPk1kEuKWc+1A9YH+eAtVnJ1YP
5Z4TBQwoaMKLEaAlYSWSB6HlBBgu/M5EhuBX3+AA8RfZG/TGYUI90a0quIIE
oBUnhKlwpMrRU+Wj3CkjeTHCO6Ax5Tw+ah8E/tMTgRbkgTIIQs9z/DPzwLyv
XoFdeB8SesIrxJ1G48/O69fAq5wemfA/aDC3gX2+fu1cRwqgCng2gSPhsYC2
CXJgG8OcSIazQQQCMhOE95xhiPqvIYqaNfS8NAqBnqSJXmjjiD8+/A0geu/B
TDNtkCEAwEivGM8Sj2/i3YFtPUZeg7hhfFrP4Brg93ORAhHnAhgwxBweRsvz
Qx70bD6A7RCnBRJXxG0vzl1g4dbDZ2drm9kOI9jyUGCK+2R3AflwUpURzjHU
aW8jFQO5kNn1zBTtt2aKGz7R04PLA1jiCBABeEiqvs6UzvTSTX/f8CwVPr4/
MgdhEZ4WQiHI7XS6yNtgd9Otve2082/Pv2fmPwiCAvJ4Gr3D6+7O7k2H5nuz
u0cwpF8ojtNu88jPT/HmOZRYmPpv6A9+m09Mwz87za6Z5v1sMsVRDDnBK/zV
u08AoOrbNAT6fW6wHTPYkQLaVMAsZvWMmPmb2cmnKWpRhMywoQjonizJH5AH
RMIF4IBpZ/WYi0BOFQbO4Ky1OMSgF8pDPP1RmsymiBZIsc/DftvsA3Rf5ciw
FfALYguzQPGD5o1ZDwrcIPz27ExbFTrJ2bGfBAp4MvrZ1DcPmY3ZJZGOCqgF
N0gJppbQA5aJqgygvirzjzUyrGgEXOcagnyt0CPWVm37ua10l2NS97sxqWMG
O07SQci8GY1cF/3EoA4Kg0I12iARiI9h+A1MAGmCTLFgXnrTD6djBdr+txcg
QM4hD6IoIdn8JcddYDcAP2eYJhOWgN7EUmtxpwNxuILQ9tNE60IVPlPzPnLY
Xsxs0E/QVSNaIA10CAIrzk4UzNvKlyla1EoEYnYARm9KYonQAUBAVCVqKSmS
Qk/eCNU3giAvtlWirLlDLiLUnaPQQwYDBFgWDiWtSCj6RUvuFlyijnYIsM8O
0iZqeLZZx0H3N5IWacIIZkObZsMHRgsrqZCgJKBqGZvDAWU5dgZJMH/RFjv2
qaxj9NQ9Ozp2Oxu06uJBd8NJprTtltUhe0hAMYE1IltEWxqMJNQCud0Lpm9j
+kCI/lxDhKyQfSxcIKBXWw4RUqvZUnsglFy7+NT/uNbkv53LK/r5pvfjp9Ob
3hH+3D85OD/Pf+AWDfjl6tO5vMefip6HVxcXvcsj7gxPncqji4Of4S/YdGPt
6vrj6dXlwfkaw95W1/AwmcBCTI+YAh6yKg0799NwQKZ84/3htdPZdv4Omma3
03n7D/oJg+j/IN2NpgHpEM3lVzjfOaGFl+KUYBA0fG8aZl6kmzg46O4PoMSC
pAUwHqMyCrCazlJUoBd1yqYTkkE5VtF0OItkvci88McgJEq0rEjgT7ZhGiOa
IgJEnobh91F5XAMD0bgO1qzW+8Cf8p5smCGEHmAG2ByIhyiZE+IH3rxJdjE3
mnhzXBM0ABbkiQMENzWcZTPYJdjEsdjOMTJMUq9YmW0W4gg3XqxrqZkfxn40
gy0DSwsB10G0zVKQdEfhcBgqFzndxItFS0PNDNSntINq2jfSZ5r4I2gTYaZc
6ABKeLknEsTaJSzSLdTTNWcdOq3F8nRt43mYoU00V1kVdlWooZ8hmwGGEAAr
jQFuB4A+uZfHGXq+ysQPoUtAkRPIxh6MrsBCB4gATHUejPGNcyBMCy9HMFPC
xSbQGwGWqogyQmAVaETCrmkUnc2CkBZE5p8cAZC1beXZmASIvcZOnbXSQTZz
GhRUaAKn98TuB6lBmwNsXRezcGMpGuQ6WQDHh0prViUCrUFxICYHSNYatZpk
eNkoVkhZpmC0nPmIi1fNwl8kJGocQWwuAk2RVoLrZBgSeBUSepSgdxYUrcxB
e3SJG2nZDlPM90GDIxbXUuPzmNwu+RhlB1RpZ7IfbjjB1/ZRNfkMyC1RihRZ
jMHk4/R9GABN9sIt/vT0DnE4UvkwuJpQRAQeo4/W95BYG7IyFDBNRMwgIcqI
wgkwteIdY6GXUT/YJ+MCDopCBT0mAiwbx0S/V2kuiYtXbLExI/LqTAZA0M9E
pUI0GlVU9tMCqGRYPPNxilvhFWhgGmsL0wra5kpZsYwmc2jypsxCPWZdZM1o
1YUlDPSJuEusBlYsbMS88qZ6Fhm1SBwprK54mbe8QaoKMMA6QMlC8V87K0CD
vZYoBuMAOyBQcjzFjdvgRZJYBllLqE5VipFVZHs0XqhXuaCaZljjVUTfEwwZ
gJ54p4gZzp1klrnJ0B1gX9YREfYyN1IfLIW8xZiBhdjIrIYUQuQX3J28TC1W
UsC4mXigPYvDts71Q+STqqmHKRKE1iXvlsX2HOckeQCmnhqpDQ11SLIaAWAB
v5TnkjMzL8IsTWLBuAWgPPjZR1vdUiYR/uiXZmsx5eMFGIYjPOA01Hd4kCBF
8CjjLOcWwb385jlFrB5D4rhc3JWIYhjZ9wSrPV4o5YmgsB0AFt1lY7B/R2M8
EpANM8BVIG1QPIXiFXv0SH5CFybhuCpSbU6HO8WeILjhKCMQ3iSCVomXy5x0
DarMUHuyaZasdF0m2GXM1nVtCJAO59zmAZ0vPNQtvAf6YCvURT3fVxQiWK6r
5KtDqihrGuz4ZSB6EpxoMiMCTMtqvIt07PlWiPoZKUDeaBTWExBGmI5VyCwG
Pi1f9F+QBoA205DseQofLlm+oVni2HVLhxcp9KbB2SC4KGgIoSk4VMckHl8V
9AbWwkE9JynkM9rN2gGNGiM7AeAaxoYU7DVdpMdcv6FYxT0LkingC6WkUMSn
tvm6EOuc+bRHuo/7AFt2RQEqVrQhAhB4O50JRi8ImEbUkwVuRoa/UEOJMOt3
SIyIg0KLmojmSMI81w6BYTKB8xxLehlVLlUjlAQYWGGOAV0wP86mbrTEncIS
R94fKFRBWUF6IM80njkeX82x7FvNCLxlHTOPQpS1K0BpDxg2cATOhRZdFaFH
qeiCrZrZVThRNi8lMkCI4LIGfKCkYhg7w2OPQpWtST5giYMBG/TI110wKdw8
gOHCAwGzDjIFeBvNBM83lrF660xnMSYilNwODmfJ2cr0O7YLCWK8DThcPRtg
GoJRJchlA4wbiBf9I4B0c9Qfb/oHtJGS2YInusoEYrM0G890BReTyWQWk/pv
gjex8pFxpGEk6/PQx8RhuQXrYQjb9ZAdkfLLg5JRJQYeOnOs6SI4QaK5IjJU
wQTk5hdwFslSsQkaIgC4IkHss0BoB+QjDnjbQ+JMmMzGCgIiFC4QpNeQxB2e
lkrvWdICoqcFfhEEwNKOKttnFdGWQeTXLDo/AI6QZ9L3VYSrVMyqRKVYGva1
7DD4D9U0SsdUGQYEaYGBMpraPkWll5o6RSDaHnSV5KcABu6DMlpXSPvmQmIf
jBcWqXPoYkLalOmt5aNxi/H4OS0k1R6FfZE3w0HD2rkJey9VUKh8TL2ipZKH
mjBXnPTIH2pkBmcCa4vf56hofJT1kBWGjhiAhw/NUclMOHvAYroMes3VIoAE
ogI1Gb2MJc5YgWgIO53UR/Rwfxz3BR0UsQWGnBbxSVSGxD1QSSBYTgkt9Fun
2oSHDU8ytGmwueBEgNd2vLmwSnEB6DDShSkgbXjroGtg3QbF60ULLSQ6awN9
iuU+vuJYbzV0PIQfyN8Vm4HVFC3NtOr7sZSox0cqbHl6kjSLmM4YjyWy2JkX
BJhPSa6uPkd8sFCAjKoVTIQyTezpiKsVUoxRHzhsSroW5kRQQKMIbtN5rzoc
dp8UUSijx+f6P6epcGApEAc2qgrwmJM4MYAB1HujtMICHOcDRaLWD49vPmw0
ZY+hLZywrMFYLUUSjDZGAQbGlieL5vmfRmhL2hwcBHaEcwAQH4DVjJCRUDor
lSuh8JkobVFYc1C8zDmEQNH+uqdwujhcsDpNXC9eeQHAh0RNqPAg8aIgan5I
vEgDamIKkH4qG4ImLajeui0M7JBQBlSPELihl7FWoih5Emz9Sc5xy2EOPiLj
26nxFekXeIkslFv0EjVOC6ehkQBmb2W5gTut8C2tKIXF9joSjIymtejBJTJ7
/fq95989UKYwrhlOYoBgmWMyBsegtFRzpCgCiP+j1BZniOtBX7UG4r+lWs1c
O5VkrQfgQLiu2gPRgqJ4HgEqG8BsApN03jSckMGUry2SkgagMop58uI4Zcgd
JN+UsD3jyrVXKbk+KKkxXwUEDnBswoWc3UIrjth0WiKkuKvjEyiapfEEJvs4
qmbbL1Q5C88RqsDHEkJxoKe7ZJ44id3auZ6fzJZ5ZRReJ33DpAuNF+fFo0DW
Rk3AUE0eYkC5gPWRYlgXYyYbvIGtlnNZXetKYP2HNsDDf+cGaAdiRAEvryUE
K2ML5G2oMIKIKJjMMCIPgzrAyckhFk4ZG81brTjNN5hNKV9J2VoX51MNAOsf
WkyIJyFYL+J5Q0MHKfDTckNcliUcE3SRMSxYOCZW5sWonhH1q3RCYsMvyigA
stZMHOcRi0oSCEPKhkNPlBFvVgfMBcAEUFDTwY72c6FUZC0sC2thNJw1fU88
UFjDNMuQ/FblkTmgEJAvG4UXew7ASgsBFzwKoLNs9AYI9xULFVCfJw9OhDFr
f/5yKIPJJwFYxJYQ7SVPnN0ylsMVkaipkeVvIzWwmJiVB9jLMSwJ/dXecChK
Tm4omygZWccJek/gtQkKfxTJUnuKzx5K5RgEpgCze2VPoMPf2C9ufFLsE7Yc
vtDzunCIkqWe51RQd73K12rSVNBVMwbKAfqmtQ7mkvuD9iTJUnnr3IVRQm/R
yyahC6BQPzOmi3U0L8QU8ndEsPeUnS5aZXgOjJqPj1JwtWIAdNkn5CvwIoI3
aE4ZphnZEXzDxUocIgiKHAST0SurttnBZbLIXhBZD+AE0GZkDpd75Z/D3kh5
jJMLLAtBEc8NtrB0tFnr5qIsymUnbh29a4xDtO6LMAaVJarner9jAxhuRNNH
+iFzLUI3Vn5PjvboksnmFC54RcXpSwIuqE7egUm4YOhMkkCBAkU4PgKocOaB
XhXd0c465trkGj0pFuIaI8Ba8WcE1y2s64OK1zcc98/O+vQOEPxu43bfOUDM
GHgogQi3ylmXpSAnzSPvKAPailXcTu9umdlaiVLOrb67Rf3/tkebgGl5eh+9
2Lpu+vJuF2bP2OZHVALWtGQJwJnhJaVoF8zi1s/4bVnO32rNKzxStEINgPEz
WiW8wfUF6vtWVNl+lWnl6yhWubgiMiuNPwm9mNjMihJCa5Wm0IYywyRKRdpr
7slAlwFMOS+ysih2Zw3iidbBvkkv8Kbk7vDHCWC8vWQuNnLWTy+P3MPDg26O
cyYuj8HR0h4kYa3QZyoTR8KUU3SfTDBCQUmU5MzmHCjySckCjY+e3U9eCspH
SpZKkV5nnRIJDbNUIAuwcjUYSIFmWq44etC9wm4e3iU6/oyr2cKtTftYp16Y
GnmQUchUcuvRQKOiL2qWpJKTh/Eb8kxhKgInoIHSh1E8OpxkYCID+er4SPJE
ObEjvek0YkP/ePZrqL270L268ybA153146sNlpvIAEGsHF+BRCEPJ+Uxxhnb
cMAdHh9PTs7QLG8cOA8KsNfK9gDuJx7CFZgiCDKNMHCwgB/XB3XoQWzyj0AR
xg5Ucqa5ICnOyZz89YFDDslo/jwCGP9iBQGQ9NAlrKsjgLrgkq+4kitwtsQh
ha5qijYGJRW5koxUdWeZmJnjHJ1USjwY8UhkGMQD+pYkFGHzt9aqczFm3FwU
QhWfwe23WxxC3P8Gw6UwCviTsYBsPjv65dvtuwqnful089tmZWSbN45+md/m
5Fdhi6Nf1r/NN275dCpMWVfGrO/aEn0Ni+vtupIAw2YRnQrZCbWBzFWiuLXq
NJtcvWHX4NBx5b5IUllQ0dcwrh7OC+ZVxE4wJQzdghRKpEswxBVJUbvnnKJN
sgAxwQl2L9d7EAcwOJqvRdJ5mWiLcW2lhz3Xks1oB/PK6hQ73t6xCMtLV8Rf
ieYHczYMNjedPJGEFRjK/WEPDZrJfI7+vBoHR10SU65nhrZICILxk5aSMysR
ckovBYSEDYVZNDc5EiPJgRko43GTEcnBXnAxixBCXTD4YzvuRjEJCby5tbmH
daUJ+T7MqRh84GQ4QARMV8G54MxN5gRKdhP8JHYrnZASFvAIBYLotZ4lLaLw
TtWLlQWJIsKDRBFn+7GjlkNyuVvaZAdVz50T8vnksbyinC/fXGhPgwSJ9Kg0
l5OM9cwgLO4hnk2wYImiYzNJlvUqXVGzwNxECTkN0EQpcuLFiLXyfHhqjIKB
9YfVEHFmCRK6H0Wh0/q0snyTySzrZ1EWY8BE5rIUbQGHpdOQNXH4kiLDx1d2
7s8Tua8vxdrhgkb7vRsXr56wYg1YHvnIfOBsaamEEGFXSlWpd3ibGEWK2b2g
G+QK0e0lmEYBBSBE+SbXX/xs7gwAE6xSyrgm35xJYcFDGKXeZOKRAw7xBXMu
SNUizpUzAtIvzPEVcRkJsZNtib2BJqYenKgdumkJUHiIfFNMNkv3X0hAicxh
qBIXROqiJK0akVOKdayX0gxNvqSdnkWaEGdK54xM527t8DdSHpMIHXIlV0gd
mzHamZWdIfni2nBBCuJjAnoBlNZGo9E37p1cd/PMuWOVnUlaocI7K0evn9e8
EyLovCgP4Pyvf/2LfBgKyNZ5bOSXpDjO5munZ3IXDomFSu91qiLfcF5vWq3z
LO719rd2u/Nmo1mU3PGjPXm00+2YR283mtYQnPvNb46g8bft7T3+rQftyitj
bg9/Ibc361pc1XAYjFW3zeN02m0YlR5ttd90+VHHPNpuv93lR93Squjlbmd7
m19umfZ7nbcyxPbC6upuybsQGVNaX6vVqvbFqGGKjudDrAa75sDH4qa+SL3X
F+BrtIzjw1aL/j4uLZ8K+iuNj3vtNjY+7lUa4zv4s0GPnpyCd7wjPKFyEuMa
RIy3ZUHZytZVlpdZ/Z4orxftdol25ik4XH5dqb7Oy67X9lnDMM7KvByrnrAl
1Zv5BVX7GjZZDE8qx0ixXVuptrartYngmkVJW+GcMikNpiC7kvEngSghWMqB
ASbpZ2QYFato5pEETsHI3Yl5BJvS/KnIjVQc/U5gJ7yxuDFJWmHGLctCEYMD
qZUDvZGzC+ywueZ3wBBuQLGPItEerNTIqgRnp4ZtPJD+UZU/peq32/2C4TCI
gOUY5CuwjS2vd/kbERB2Rd5/d1qt7i+dXbfz53eCraWZBGE5/kTJztbBGvGX
C7sveGi3AliEXL5sqzSP5Wf+pk9BKHmTj6RX7bBcCciRsy9kKen/bi/dj7WE
d42XDMzhMR64Opi16gJEspQfNJttjKbi7g3JY+JLeIskKsWXOIY4zYuR34kF
S5E5Nj05SF7OMERXLkjWTFfsVZpYKq1qRbxk+9o4IAfG+mUF0Uy9Q5mRiDJS
OwrZcah05FF9vmOrfImIuUPCwEEAVgTerdkM1eUeajHz884lzS4IS1VZlCkX
llZtqXJWTVr57GrBxGpU6fqOerig/9Z4RXMw2MeExs4PhYvDrqIIhxKNz8+7
4rYhDvLOJCGCErFxdFKxnGULzw8Vm/7GR2OgwQj4PdCohwT6iF8CCXar/78D
iUYjT78yCrkYcbe3H8dlHppXNRvML7MRg74m3hDYCnE0b/3wQ13JYKUsktPv
CwrI94EOiKL8Mg/u4P3MAe9FUzESKgffxBmNxfJ2uTPun2q18/EXt5fnVK0q
2bZXUF+ubcwmq/qFBry1BYSdDb0M0EUlnEX9z4Gabg5jb4ngRJkdGG5XZxrd
XsxRX7+YX/8IWHcrJFHaZauGQOoXZac95RFrUr8evDnKvuMZB8yt1YtELC2j
lcfC/uSs85v8UdOpNtog325VGIr8K59XnTqx7/zAU/xQ6Lr2jvedygpYZja/
Z3ha8Irxyxv6NyawgPfMNpZN9sTy/kZx8l8dgtrh1JortFZjv5zzZI4mxxcc
nu+h/dMCeCfz6dc7Nam0qaxaxqlru16do+ksNPuP40x1DX840ixs6T+ENcsA
XcEbzBUu3wXhRb7xxFeMPfb+u9wQrL0TTF58QPaLOR1o93kvM/WQs5RCCVpK
JpfZb3wDh66JQRhncvXiLJK2/lgFs4jqFzEqZZfBgi1WtckKZ9h6ySTbqNcD
YUc+DJ8CrFECDBJT9mXlvrHE4yIc9MEb/5HxLld3w7qJsfWM+SYlFXkWUKX2
BNNbTF0HZsFwGioHdekKiKXCpVaIVOCrc4ygI2BuYJ8UoxX8xR1yvlB+/M9/
5ryg9IKxEAEUYlUIyyNJrak7SzyLaSQ1R4We1Ssv27rrAdo/Pg7DEd7T6JpR
KEjzL2PRPfen/aJW/3xRq/slra77Z5gb4ZzgXSK9b3Q5I8CyR1V3/KWGP3AV
/+Xinz87RyoN75XL46+3Wq2N/w+6/z5Amz+VyZvOWkBPArzCZO2PXckKcgEw
VI78xNTgmGP/Zemf713J/5zbH7SSds25XXjoqv8fWn1pd2K/j/vOqypz5ot+
/7R2ZrP9JSG6NVBDXr/+vguuWq9fN7iIxroRnbN6yo87WzvwGDNjuFanWh2E
a8LFEALad2eR56hkrpksUfQ0Ueli3fWGaDzLtRE1klgKo2mBpE/d20XRzjrf
s4Ki17pQFC+qxwDOZnEdDykNG5zVUs2RkzkwXXT5FHYkbAP2UwdLdDNqowxW
dMGi9g6Hl5skhib2bl0KWldzUdzRUSrVKZx6C+oL72lhRooCW/fuPr4K8l8I
qc7xLuu0GgzZhHXasWTApY/LfI/GIV3xYYqflxST5cGUJ87W0CujMaAosXuZ
U68NcpVilZSjyLcSvWRH78qXMRzi3VXQ+sLvgb3lK/TBYVYNVouXtE4uKS0C
CZSD3t3tNDvddr663I/CN/VS1XB5GKYquQhVMMt84gBgQvtYCRF0ig1x+MqN
JlZNfguP90iSmwXbcu8cHelh1XtoT2mO9fuPvHK72TPnjwlpcm82JaBWS1Gs
JbOnND80rlNmXz5WRnMGDt1/YG5KZwcaXk5mcaAm2P9zZw249DXxCrpR/M3u
3hqBeY1vJS0ePj5aF48/PVEBOUe/MbN7Ns3XjPPwkbp4nWkpNaVwJVaBljsw
7cyJ3MGLpIH6vUlY9OwZOGWRc8Gtc5ZCOwooYnp0xHe8rCx1YGazhH5gkis+
cTa3sH46t7asA9A5/Mv3QSwFdc6u15x1si7rK5s2TAkhBenyeCu8AglaoIpc
V7ReJCSKLGAS4tuKkAxNvBYpfIPI5NgLo5lQxSJvKcm4krOcamDokwhLSLlp
rmOI3d9UmhTp6lzdPuR5+Y4yg0Nj4PnMd6jwDI+TlT/L/1r2KxgsYLTkq3W8
oszdTAPNZJ1jim+Wip84hxBBYprjrTnqHZ6zpE6Xr0PgCqk858oqCsdsEKq/
MBm29s0oNasy5ZvMCtAnRKRtlmGuh48pR4QkGiWJHJau4Ww06CFFyTkXpVRP
nYfba3NKzNXdxt9ep7cYRm65jsu3d0u8luaWFJscHhOs7aMMKC4qMjffcNKy
nxXrq09bMVmtdakjNCLne+X38JdhgyXy8sYtX14qlckVN5UUTOeMfkXFy0CV
WnvoS5ewDxchMjFKFe5aXliwLxkAyPgleV00mT/qdrvQKlk2tVb8LS7MQKTq
Kf5aoSTzeuhFuceLhkd2OI3y5/WMxM+n2Fx1YF2IsVjAwPTBTi2T0GDYv83l
jeerWah3ea4eokNFcJYdk0/VaBoFXmde5F7fHBsFmyK11j7z8n32GtFNu5yy
U60eqNskoYKHt8zN4vzSWS+flK+qwFQ0EftUrAQskHSz/+tptk1Oz0Z8Isz8
o3Nci6RWi8nSlNWqmrCsJVqXoyyqtJVdS32CK7tf52p2k34jTBKEiaYLu8yG
aeVXxVo3cmkYgUZKMS8ZkA/fAh/BrqIt04JBDAOXUpLfXlkXLR3nuJ9FaO3I
XbJcIyHqK9qZ9+YSRLn/m7Jr6S6eX2dUXTFUGCBNZpryL+Qe18dH+TghOThf
v762NS1LTW6azzsSTdoMi28oFuJk66Z0ay8ivrKKT6y0JMp3zSe052vWFIjl
zu1VeUvm0lPJbjA3WzIalW6iq79VnEDdLG6aQh+6d0dVogFyRRATmkuni0Rd
qSvIw2nFfYawSTON2Td59jEQoKl5mEm/EjNAcOM1SMTN6crgMZJ5xNHyNNRS
vg0sGSs8sZJFFmGVj4TM9flKriq3ofuT5LIyWQ5ruYMo8e90nvAbzXkmwtMZ
FnVmM/RKwlmlcMJ49r4yee9IpZEUuvLiBUv5TldaxvnMv5vjIcE5K+Rs8plA
ESTms1mPj/L1LXzOg2CuyyxF2saFNqEJfwYZWuTaCVY94p2KCHmG67JjzqFV
hovNWiueGptTx4nAFggAlAx0AbjAJUKiBQynDCs+jAeVX7RJU5AzRaKtpcsr
7Gvsm3StHS0bE6zCb/RxHuJucAgglUYzvGQlTw2U2+BUzuJoKiwArqTmm3tC
rUwX1JZlPZTyjDfHUC1WHBQJJJ51o0qhQIu+haKbA041UogrI2ETCWfjoNws
pfeTlKJKlhKI6u2q0l3/FX1hnZkeZ55zwR3iJd3gxvxD7uipuywoN8ftuJeV
pV9jg9s5/E8bpDoe+Hdx8gCUMOK8S5N/CPN44lkZpag08HX3uRdJroKcYJgR
8Up5o5kq2UaHYyz0T5BNOp8T/ErQBVBH/vnbptPDUpRDIOg7lQEXPVJhGsDJ
gw4bJ3RroLk2V47dfPdG1NLyh+dZV66WgvhhVnPAzLEnCms+8tHRQCh9hkPS
5sIJQJcKwPEjptlMW9cPF1/nmaglAMKSTRCuSptypc9Ygz9OplihX7ofqZ8M
MzKfYLkXKNGxMvenUD00AWZRCLPGoUf3XP/Vi2dYyopfc8NaP0By4Ld/bTnv
ASA6UyEn1X704l89+vKpMp8UsS6DottcTcELibi6wi1Ua+xTyy2STHkT3FLN
9+bMZxyCUvx5NhrJ1zywTMP+eLr5xhMSL1Zs+qb2vkw6YvPyR7jQZYDoe6M4
dksfFHt8lfKvLv4KNs6PpZugzCcNl9+XFxa3jJAd+5J7Pzj703SzvwGGW/ha
XQFX1XnF7UKoQgyS5C7X2tCZQN+apdvIjtlEQZUJiwFX3/fn0Yl22+23Tfkc
Vv4N93ww4ql8ixcuAhH6d13ZZWaSe7tkxcXB4/e6p8ygtUG+/CqX4vY5ZsxW
dsGq79nxnLav6fERv5CNVgfo55j0i5JHG07OfIwvxpR7qKrcQ4ySmnvXkE0E
xNHKXjR2Li//pBZdoFCdRq6Pcjqt7j4sWr6piOt+fDw8uLg++HB58PS0suMW
duSvMnM/+Y4j/yKfYXx6Wr51CtfgzRML7HLRVfiiTfboWhm5urM6Zp6PTxt+
f3jZ7+zIfvEz9R3+mT6pzT/Kt3Zlb91LAsfLpiDQ0LBda6xOp/gFPxnLv9H9
K0baqVXDc7WTh5dPYqQlcMaJX3yCDzkK5dzwtSGsxORD2L4L/qBW9U6ST7Ew
rQWMx/Jdcw1w3gIHIseE3Jgkn6HMU0HxXLX4/Mv3lTOQwtInEUBVE/+CmFGK
NB2yJthR4+MmFmRjIfpIzzAin4q2pfquPDQSaP69ebLfjKsqNNTKH3s0fFFb
zl9i7piUZEMHPRjFynF7p2e9+y5MJB8xFy0djEmMwNAYK763aHfmb6YTM0MN
AD9dSqq3GL1omXuUSqX5Ewa5zkaCky7a4DigdbMMQAQ/KCj63OkNbPXxEUcm
YEhOsud7gZqA6I2wbJfmQFTt/YTCQL6DkCkpdKdLfOuRQM9B2qMkta7il8Xq
dzAgfXyVyeDo6ui0T3yTXGP8LXqYDBkr+T1rhq+96t+MvzCSn4RSHyiXhqfJ
AK1846sq36PukagMI762PSvcY9qKmTLYSWRgEQIoG3iXqSxA7lsVD1fphoyS
I2a5W3DV3ldW9Df+D9+jKsi6iQAA

-->

</rfc>
