<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.25 (Ruby 3.2.1) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-tls-hybrid-design-10" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.14.1 -->
  <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-10"/>
    <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">University of Haifa</organization>
      <address>
        <email>shay.gueron@gmail.com</email>
      </address>
    </author>
    <date year="2024" month="April" day="05"/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>Hybrid key exchange refers to using multiple key exchange algorithms simultaneously and combining the result with the goal of providing security even if all but one of the component algorithms is broken.  It is motivated by transition to post-quantum cryptography.  This document provides a construction for hybrid key exchange in the Transport Layer Security (TLS) protocol version 1.3.</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>
    <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-10:
            </t>
            <ul spacing="normal">
              <li>Bump to version -10 to avoid expiry</li>
              <li>Clarifications on shared secret and public key generation</li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-09:
            </t>
            <ul spacing="normal">
              <li>Remove IANA registry requests</li>
              <li>Editorial changes</li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-09:
            </t>
            <ul spacing="normal">
              <li>Removal of TBD hybrid combinations using Kyber512 or secp384r1</li>
              <li>Editorial changes</li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-08:
            </t>
            <ul spacing="normal">
              <li>Add reference to <xref target="SECP256R1Kyber768"/> and <xref target="KyberDraft00"/> drafts</li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-07:
            </t>
            <ul spacing="normal">
              <li>Editorial changes</li>
              <li>Add reference to <xref target="X25519Kyber768"/> draft</li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-06:
            </t>
            <ul spacing="normal">
              <li>Bump to version -06 to avoid expiry</li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-05:
            </t>
            <ul spacing="normal">
              <li>Define four hybrid key exchange methods</li>
              <li>Updates to reflect NIST's selection of Kyber</li>
              <li>Clarifications and rewordings based on working group comments</li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-04:
            </t>
            <ul spacing="normal">
              <li>Some wording changes</li>
              <li>Remove design considerations appendix</li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-03:
            </t>
            <ul spacing="normal">
              <li>Remove specific code point examples and requested codepoint range for hybrid private use</li>
              <li>Change "Open questions" to "Discussion"</li>
              <li>Some wording changes</li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-02:
            </t>
            <ul spacing="normal">
              <li>Bump to version -02 to avoid expiry</li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-01:
            </t>
            <ul spacing="normal">
              <li>Forbid variable-length secret keys</li>
              <li>Use fixed-length KEM public keys/ciphertexts</li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-00:
            </t>
            <ul spacing="normal">
              <li>Allow key_exchange values from the same algorithm to be reused across multiple KeyShareEntry records in the same ClientHello.</li>
            </ul>
          </li>
          <li>
            <t>draft-stebila-tls-hybrid-design-03:
            </t>
            <ul spacing="normal">
              <li>Add requirement for KEMs to provide protection against key reuse.</li>
              <li>Clarify FIPS-compliance of shared secret concatenation method.</li>
            </ul>
          </li>
          <li>
            <t>draft-stebila-tls-hybrid-design-02:
            </t>
            <ul spacing="normal">
              <li>Design considerations from draft-stebila-tls-hybrid-design-00 and draft-stebila-tls-hybrid-design-01 are moved to the appendix.</li>
              <li>A single construction is given in the main body.</li>
            </ul>
          </li>
          <li>
            <t>draft-stebila-tls-hybrid-design-01:
            </t>
            <ul spacing="normal">
              <li>Add (Comb-KDF-1) and (Comb-KDF-2) options.</li>
              <li>Add two candidate instantiations.</li>
            </ul>
          </li>
          <li>draft-stebila-tls-hybrid-design-00: Initial version.</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>"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.</li>
          <li>"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.</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="I-D.driscoll-pqt-hybrid-terminology"/>; 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>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"/>.</li>
          <li>Authentication using next-generation algorithms.  While quantum computers could retroactively decrypt previous sessions, session authentication cannot be retroactively broken.</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>Hybrid-aware client, hybrid-aware server: These parties should establish a hybrid shared secret.</li>
              <li>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).</li>
              <li>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).</li>
            </ol>
            <t>
Ideally backwards compatibility should be achieved without extra round trips and without sending duplicate information; see below.</t>
          </li>
          <li>
            <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.</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>The computational performance characteristics of the specific algorithms used.  See above.</li>
              <li>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.</li>
              <li>Additional round trips added to the protocol.  See below.</li>
            </ul>
          </li>
          <li>
            <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.</li>
          <li>
            <strong>Minimal duplicate information:</strong> Attempting to negotiate hybrid key exchange should not mean having to send multiple public keys of the same type.</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>
          <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>.</li>
        <li>
          <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>.</li>
        <li>
          <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.</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 Kyber, 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>HybridKeyExchange</tt> struct in <xref target="construction-transmitting"/> limits public keys and ciphertexts to 2^16-1 bytes; this is bounded by the same (2^16-1)-byte limit on the <tt>key_exchange</tt> field in the <tt>KeyShareEntry</tt> struct.  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 Kyber 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>HybridKeyExchange</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 "SecP256r1Kyber768Draft00" and "X25519Kyber768Draft00", it would end up sending two kyber768 public keys, since the <tt>KeyShareEntry</tt> for each combination contains its own copy of a kyber768 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 "SecP256r1Kyber768Draft00" 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 Kyber, have non-zero probability of failure, meaning two honest parties may derive different shared secrets.  This would cause a handshake failure.  Kyber 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.  Kyber has such security properties.  However, some other post-quantum KEMs are 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 Kyber.</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>
      <name>References</name>
      <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>
        <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" value="Privacy"/>
          <seriesInfo name="DOI" value="10.1109/sp.2015.40"/>
        </reference>
        <reference anchor="BERNSTEIN">
          <front>
            <title>Post-Quantum Cryptography</title>
            <author>
              <organization/>
            </author>
            <date year="2009"/>
          </front>
          <seriesInfo name="Springer Berlin Heidelberg" value="book"/>
          <seriesInfo name="DOI" value="10.1007/978-3-540-88702-7"/>
        </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="Post-Quantum Cryptography" value="pp. 206-226"/>
          <seriesInfo name="DOI" value="10.1007/978-3-030-25510-7_12"/>
        </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="Theory of Cryptography" value="pp. 188-209"/>
          <seriesInfo name="DOI" value="10.1007/978-3-540-30576-7_11"/>
        </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"/>
        </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"/>
        </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"/>
        </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"/>
        </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="Public-Key Cryptography - PKC 2018" value="pp. 190-218"/>
          <seriesInfo name="DOI" value="10.1007/978-3-319-76578-5_7"/>
        </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"/>
        </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="Theory of Cryptography" value="pp. 341-371"/>
          <seriesInfo name="DOI" value="10.1007/978-3-319-70500-2_12"/>
        </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" target="https://ieeexplore.ieee.org/iel7/6547086/6547088/06547131.pdf">
          <front>
            <title>Lucky Thirteen: Breaking the TLS and DTLS record protocols</title>
            <author initials="N. J." surname="Al Fardan">
              <organization/>
            </author>
            <author initials="K. G." surname="Paterson">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </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-SP-800-56C" target="https://doi.org/10.6028/NIST.SP.800-56Cr2">
          <front>
            <title>Recommendation for Key-Derivation Methods in Key-Establishment Schemes</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date year="2020" month="August"/>
          </front>
        </reference>
        <reference anchor="NIST-SP-800-135" target="https://doi.org/10.6028/NIST.SP.800-135r1">
          <front>
            <title>Recommendation for Existing Application-Specific Key Derivation Functions</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date year="2011" month="December"/>
          </front>
        </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="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="Post-Quantum Cryptography" value="pp. 72-91"/>
          <seriesInfo name="DOI" value="10.1007/978-3-030-44223-1_5"/>
        </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="Public Key Cryptography - PKC 2004" value="pp. 360-374"/>
          <seriesInfo name="DOI" value="10.1007/978-3-540-24632-9_26"/>
        </reference>
        <reference anchor="X25519Kyber768">
          <front>
            <title>X25519Kyber768Draft00 hybrid post-quantum key agreement</title>
            <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="September" year="2023"/>
            <abstract>
              <t>   This memo defines X25519Kyber768Draft00, a hybrid post-quantum key
   exchange for TLS 1.3.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tls-westerbaan-xyber768d00-03"/>
        </reference>
        <reference anchor="SECP256R1Kyber768">
          <front>
            <title>Post-quantum hybrid ECDHE-Kyber Key Agreement for TLSv1.3</title>
            <author fullname="Kris Kwiatkowski" initials="K." surname="Kwiatkowski">
              <organization>PQShield, LTD</organization>
            </author>
            <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
              <organization>AWS</organization>
            </author>
            <date day="18" month="May" year="2023"/>
            <abstract>
              <t>   This draft defines a hybrid key agreement for TLS 1.3 that combines a
   post-quantum KEM with elliptic curve Diffie-Hellman (ECDHE).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-kwiatkowski-tls-ecdhe-kyber-01"/>
        </reference>
        <reference anchor="KyberDraft00">
          <front>
            <title>Kyber Post-Quantum KEM</title>
            <author fullname="Peter Schwabe" initials="P." surname="Schwabe">
              <organization>MPI-SP &amp; Radboud University</organization>
            </author>
            <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
              <organization>Cloudflare</organization>
            </author>
            <date day="2" month="January" year="2024"/>
            <abstract>
              <t>   This memo specifies a preliminary version ("draft00", "v3.02") of
   Kyber, an IND-CCA2 secure Key Encapsulation Method.

About This Document

   This note is to be removed before publishing as an RFC.

   The latest revision of this draft can be found at
   https://bwesterb.github.io/draft-schwabe-cfrg-kyber/draft-cfrg-
   schwabe-kyber.html.  Status information for this document may be
   found at https://datatracker.ietf.org/doc/draft-cfrg-schwabe-kyber/.

   Source for this draft and an issue tracker can be found at
   https://github.com/bwesterb/draft-schwabe-cfrg-kyber.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-cfrg-schwabe-kyber-04"/>
        </reference>
        <reference anchor="I-D.driscoll-pqt-hybrid-terminology">
          <front>
            <title>Terminology for Post-Quantum Traditional Hybrid Schemes</title>
            <author fullname="Florence D" initials="F." surname="D">
              <organization>UK National Cyber Security Centre</organization>
            </author>
            <date day="7" month="March" year="2023"/>
            <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-driscoll-pqt-hybrid-terminology-02"/>
        </reference>
      </references>
    </references>
    <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>Internet-Drafts for TLS 1.2: <xref target="WHYTE12"/>, <xref target="CAMPAGNA"/></li>
        <li>Internet-Drafts for TLS 1.3: <xref target="KIEFER"/>, <xref target="SCHANCK"/>, <xref target="WHYTE13"/></li>
      </ul>
      <t>There have been several prototype implementations for post-quantum and/or hybrid key exchange in TLS:</t>
      <ul spacing="normal">
        <li>Experimental implementations in TLS 1.2: <xref target="BCNS15"/>, <xref target="CECPQ1"/>, <xref target="FRODO"/>, <xref target="OQS-102"/>, <xref target="S2N"/></li>
        <li>Experimental implementations in TLS 1.3: <xref target="CECPQ2"/>, <xref target="OQS-111"/>, <xref target="OQS-PROV"/>, <xref target="PST"/></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+19a1fjyLXod/+KWvSHgT6Wsc2bPsmNG0xDeA6mpzM3K9PI
UtnWIEtulYzxEPLb735USSVZNnRmsu69a53JZAC7VI9d+/2S4zi1NEhDeShO
5/0k8MWDnAv55I3caChFEIm7i55oNbZqbr+fyMdDEch04KShckY03vGlCoZR
zY+9yB3DNH7iDlKnepTTatZ8N4VR7WZ722nCvzs1Dz4Yxskcpo4Gca0WTJJD
kSZTlbabzYNmuwY7msWJfyjOolQmkUydY1yjVlOpG/lf3TCOYMa5VLVJcCj+
nsZeXag4SRM5UPDbfIy//AOGT/vjQKkgju7mE3jirHt3Uqu503QUJ4c1IRz4
v4BNqENx3BC9VPaD0KXP+GTH8XQYuqrwTZwM3Sj4zU1h1kPxOQoeZaKCdC7i
gfgCB0vCOKaBcuwGIUBH8cN/mc70tw3PLa7da4iTcDpKZGKt3fPiNC18Xlz5
KFBeLHpzmH6s7AXVgJ/5i4cjGl48Xljt01QmcWQvNnLn9qerDnnqBgMGhUGQ
zw3rQ7MLmLExpBn/MsSPaCO1KE7GMOujRPADorW2DsXtydH+9vYufIC/tfa2
D80vgBqAINYTnZ/ObjuXh7RQ6iZDmR6KUZpO1OHmJi7iJt4IhjYQGRtwiE38
YHOshpuAmZsn272f5EX7qf/pxr352P705eunh4/946/uzuUmT8l0sfZ32Nk/
xFE87gdREA1FT3qJTBUSh6aZc6CZ7iLNrNE0GcK3nOaB02wxsDKsw38c/VPf
yVUwTmJfdB6DxB1XD/koo1/dMSx1HM9C2FT1qLPQjcR5PAbYxL56CKpHncso
mosbxEelb3xhTHfuhuIWCG3p90CF4ud4KB/hi49HV73WDlDM9Vmj1Wy0Ws2D
zd5No91s7TS2mzige3vVu+ueXeVjms29zYO9fWfL2dluOvv7e822s4dDz66O
uxdV45pbTae9s9NqOntfW20YetS5vOl8uurAwZ1joKvxxB1GLrGhfvAgHYX/
YYaEo7tHNz+2qrFHSW+aAIY3hnE8DGU/jIeIsZtwgt1N2IB8msgkGMsoBdg7
syAdOZNYpc63qRul03FjlI5DG4e69niB48UNjv+Rx4ujZD5J42HiTkbz1/Hj
siE+Ji5MMoP/yAKStXad5h78a87Xrj7fbDZrBGPckxs+BnEoU6IPeH5/s9XG
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
KXYW6T5Rz0WAZZcq7fh1H3/gLv7LwX/+zN2DpcPzrzcajY3/Dx7/fYA2/5QW
r4s1nz7xsaHJ2h+7kxXkAmAoXfmpqbsx1/7L0n++dyf/c29/0E6aFfd26aJ7
/n9o9a2PE/t9PhTvysyZ+wX/ae3cZvtLwnJroHq8f/997a4a79/XuHDG6lzP
mTzFj1tbO/AxZsNwfU65Igj3hJvx8x7s47w3fcFEy155gKmhGK2v6nyIBrNu
FVEhiXUxNG2QdKhHuxBarHPXFRS9Vp9QfEsABm028+Y8pDRscCZLOS9Or4Ep
osuXsKNfG3CeKliia1EZBbCk/+X1dji97h4xMPF2q9dnVZ1F3pejUJ6TO/IW
1Bc+08KKFPm12uk+v/OzPwipLrAldlIOgGzCPu34MeASOl3uOR4EKNvNjGzt
wyUFZHmg5IUzMdTKSAsoROw65rTqD1kAk8Lquo7dmGzrPHTDwbG6x4tO+q90
ixpfecm9yvs1+FoIeVKqI7c9eguQPhR7OhxhcywYfel1wWzzJLryMDkHi84L
iixXpubxCEplb++26q12kwFhu2O4py8VHxenYUIlnZs3vRLS6Egb4FylLihW
HX8D0eN4OrE702YePUKJo7LH0V7SwHs5ypR6or2CP5ispttmU3JquUzF2hp7
UbOb4Bpm9vNj1TRn51BvBNOYnZ1r2NLM4lR1QLS5WANufkM8xTQu1b1S1wiq
a8WmpuY7Ki3nuDjmfE8n2Y5xlQc9upiykrsYy0iaOTbtjIrM8YtkhTaASWR0
8/k5kZEzxK2b1OV3FGbEpOmQO7+sLIBgdrSEHGCRa75vNsiwqjqzxyzQqwzy
xS4RrwE54+trYp1Mz+qypw1TX0gRvCwYC1+BqM1xRfcyWs+zFbXQYFrhVkZI
XCaYi3S7QfRw4gbhVKP/IscoCMOCJ50KZLKOv3XTmCFyfpNJnCeuc537gBfh
PmYGZ0YgCZh1UAkaXiGrhJYntuhhMDfPaMhNdty84N0s0xAZ11DlYn9OJsTj
m9HYPkd+wKvVOdTFvghcKpUlX1nV4ZgWQoUYJtXWbpFSsSlTx8l0j84homOz
DdMKPqJkERJzlC1yVOjUWavRhxQu56SUQmF1FnevTC4xbbqN471KmTGs2PIh
Fzt168Atra1zbTJ4jLHIj1KhuLrItMDh7GUvzfdXnb9i0lurckhoRk78ynru
F2GDtfL6G6fY31SXKJf8VbpyOpOkK0pf+rIw2kWnuo7/cDUiE54ux13LKgwO
dSoAcnmdxa7Vmz+qAV5g1S6boit+y1vWD5vfg6mzel10rTxiL+KhHVejRHo1
JVnzOTI9D6zOGIuVDEwf7OkymQ2G39ts3bjD6rnOlyXtITqUpGTRQ/lSDqtR
BHbqhs7N7YnRuilka50zq+NnVxI14+XcnXIZQdUhCRVcbDenX8zELQDNotyz
AnPStIynqqWXOmtX/9fzbeucp434RJj5Rye75tmtOY+lFcvVNUFRzbOapCzq
pNyApnBwXavgaACsc2W7ScXRfBLEiaLmXebMtPnrfLsbmfALQa2k+JeekO/f
giCBr6Ty0qZB6gKjkjrXvbSvbPuP0xCtIN1xlusltFqK9uejaYiou4RTpi31
5fl1SpUWA4nB0niqKBdDd3t9ftZvviTH5/v3N7Z2Zam/dfPuUCJLm2dxH2NN
n2z1FHr7Iu5LqxDFSlGi3NdsQXu9ekWxWOb0XpXDZFqj6kwH0+WSMKnQlK66
9ThBup43nULXOr2ysA76D74BFcDHVdR5zq4uMcgia3lrQzijWcYcmzptYUxA
0fAg1c8V2AFCGzsiET+nvsIjJPSQA+dJoHQlNzBlLPbEoha9CauSJGC+b8IJ
RX5DrZR03zK9HVZt+2HsPags9zec80qEplOs70yn6KyEq0rggvHqPWlS4JFQ
Q13zypvXSMqNX2kbxVdCYgUuv4JSixLzUq7nZ/1uL/ycJ8G0l2mC5I0brcMQ
fsU2jMj0EyyAxPaKCHmG67JrzqBVhIvNXEsOHJtXR7GGrcAmrPRiEAeYRECk
gFGWQcm1MZNZz01agnwsOvBa6GNh97qvU4c72jbmWgVP9CoeYnBwCSCXhlPs
t5JlCerGcDLjcLQU1gKXsvRNy1Ar6QXVZb0fyn7GJjJUlhX5eS6JazVXyTVo
rXGh8OY4VIUc4iJJOETMiTkoOQuZ/iSnqKilAKJqY6rwQoCSxrDOPI+T0Ln2
DvGSmrkx+9Aekaq+QZkFbofDrIT9CpPbTud/2SDlseM9RPEMKGHIKZgmFRHW
cbV3ZJig2sA98TPnku4KOcaII+KVdIdTWbCEjkZY8x8jlxRfYnwn0CVQR/Zq
5broYlXKERD0g0yBiR7LIPHh5kGLjWJqIGg66OprN2+50YrpGZG9TB0yJVlb
LleFeEFaccHMsMcSyz+y2dFEKLyrQ2fQBWOALtWC4wty06myOhHn7+IZyyUA
wupNkK1SmcqlL1iOP4on6MwqtErqxYOUDCjY7iUKdCzS/SmQszrALAxg1Shw
qRn2X91oilWt+K44LPsDJAd++9eG+AgAUakMOL/2zo1+demtutK8d8TqC0WN
XU3tC0m4qhoumL5wa5lNkkp3jEeqeJudedeDXwhFT4dD/coPrNgIxkns63cF
mjc6IfFi8aZnyvCLpKONXn7lFjoIEH1vJYd06fVhz+8S/tPBP8HK+bHQFMq8
MHF567wgbzhCluxbWoBwIqh5zH7jFx7hW3kHXGDn5o2GUIPox/FDprShI5re
/0uNyU7YSEGNCesCV7f+c+lG283mQV2//Opj9/aqd9c9yycjnsoNvXATiNC/
q3uXWUm38NI7zi8e3wU/YQatDPJlXV3yRnTMmK1Eg1Vvr+M1bQfT8zO+fR3t
DtDQMf8XJY8ynJz5GPfI1C2pytxDmyUVLdiQTfjE0YquM3YQL3+BFvVSKC+j
O0mJVqN9CJvWb2zEfT8/H3UubzqfrjovLysf3MIH+Y3f/Jx+SyT/oV/y+PKy
/OgUxcEmFAvsctE/+KZDdqnDjO7iWZ4zS82nA388uuq1dvR5u0c3P7b4d3pd
O/+q38qrz9a+InC8bQkCDU3btuZqtfI/8OWy/Be1YjHSTq6angufXOxDiQEY
X4xiL3/hHnIUSr/hDiKsxGRT2N4LfvNWuT3J50gzrQWMx0pe0xE4G4ETkWtC
N0/SL53MskLxXpV25RdblzOQgsJ7E0BV0x4GbUVJ0nTImmBXjYeHWJCNuegj
PcOIfKrf1oV4xamRQP92B8wIX11P5ptxVgWGWvnVjoYvKsvVS8wd85Ns6KAP
I985Hu/svPvYhoXgJ6+iu4wMMIpCc6x4u6L98OnPH2/PjomZoQaAL0Yl1Vvb
vGiYu5RVpfg9B5nORoKTem5weNBqMgMQwdcHan3u7BaO+vyMMxMwdHqy67m+
HIPoDbGCl9ZAVO3+hMJAvxIhlbrmnfr5ViOBmoO0R0lqdeXXm1UfYEJ6tSuT
wfH18VmP+CY5x047t1dnCDpkrOT5rJi+suu/mX9hJi8OdKmg7h+exH008o23
qthS3SVRGYTcwT3NHWTKCqUy2ElkYD0CKBvY1lRvQLde1T6uQrOMgi9muWNw
1dlXFvfX/g/hWTJzBowAAA==

-->

</rfc>
