<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.2.11 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-stebila-tls-hybrid-design-00" category="info">

  <front>
    <title abbrev="stebila-tls-hybrid-design">Design issues for hybrid key exchange in TLS 1.3</title>

    <author initials="D." surname="Stebila" fullname="Douglas Steblia">
      <organization>University of Waterloo</organization>
      <address>
        <email>dstebila@uwaterloo.ca</email>
      </address>
    </author>
    <author initials="S." surname="Gueron" fullname="Shay Gueron">
      <organization abbrev="U. Haifa, Amazon Web Services">University of Haifa and Amazon Web Services</organization>
      <address>
        <email>shay.gueron@gmail.com</email>
      </address>
    </author>

    <date year="2019" month="March" day="11"/>

    
    
    <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, and is motivated by transition to post-quantum cryptography.  This document categorizes various design considerations for using hybrid key exchange in the Transport Layer Security (TLS) protocol version 1.3.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>This document categorizes various design decisions one could make when implementing hybrid key exchange in TLS 1.3, with the goal of fostering discussion, providing options for short-term prototypes/experiments, and serving as a basis for eventual standardization.  This document does not propose specific post-quantum mechanisms; see <xref target="scope"/> for more on the scope of this document.</t>

<t>Comments are solicited and should be addressed to the TLS working group mailing list at tls@ietf.org and/or the author(s).</t>

<section anchor="terminology" title="Terminology">

<t>For the purposes of this document, it is helpful to be able to divide cryptographic algorithms into two classes:</t>

<t><list style="symbols">
  <t>“Traditional” algorithms: Algorithms which are widely deployed today, but which may be deprecated in the future.  In the context of TLS 1.3 in 2019, examples of traditional key exchange algorithms include elliptic curve Diffie–Hellman using secp256r1 or x25519, or finite-field Diffie–Hellman.</t>
  <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>
</list></t>

<t>“Hybrid” key exchange, in this context, means the use of two (or more) key exchange mechanisms based on different cryptographic assumptions (for example, 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 mechanisms remains unbroken.  We use the term “component” algorithms to refer to the algorithms that are being combined in a hybrid key exchange.</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 required 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>

</section>
<section anchor="motivation" title="Motivation for use of hybrid key exchange">

<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 (but not all) of the 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 / elliptic curve Diffie–Hellman, and thus we do not necessarily have as much confidence in their fundamental security, or the concrete security level of specific parameterizations.</t>

<t>Early adopters eager for post-quantum security may want to use hybrid key exchange to have the potential of post-quantum security 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>Moreover, it is possible that even by the end of the NIST Post-Quantum Cryptography Standardization Project, and for a period of time thereafter, conservative users may not have full confidence in some algorithms.</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.</t>

</section>
<section anchor="scope" title="Scope">

<t>This document focuses on hybrid ephemeral key exchange in TLS 1.3 <xref target="TLS13"/>.  It intentionally does not address:</t>

<t><list style="symbols">
  <t>Selecting which next-generation algorithms to use in TLS 1.3, nor algorithm identifiers nor encoding mechanisms for next-generation algorithms.  (The outcomes of the NIST Post-Quantum Cryptography Standardization Project <xref target="NIST"/> will inform this choice.)</t>
  <t>Authentication using next-generation algorithms.  (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.  But session authentication cannot be retroactively broken.)</t>
</list></t>

</section>
<section anchor="goals" title="Goals">

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

<t><list style="symbols">
  <t><spanx style="strong">Backwards compatibility:</spanx> 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:
  <list style="numbers">
      <t>Hybrid-aware client, hybrid-aware server: These parties should establish a hybrid shared secret.</t>
      <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>
      <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>
    </list>
Ideally backwards compatibility should be achieved without extra round trips and without sending duplicate information; see below.</t>
  <t><spanx style="strong">High performance:</spanx> 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="BCNS15"/>, <xref target="CECPQ1"/>, <xref target="FRODO"/> for preliminary results about performance characteristics.</t>
  <t><spanx style="strong">Low latency:</spanx> Use of hybrid key exchange should not substantially increase the latency experienced to establish a connection.  Factors affecting this may include the following.
  <list style="symbols">
      <t>The computational performance characteristics of the specific algorithms used.  See above.</t>
      <t>The size of messages to be transmitted.  Public key / ciphertext sizes for post-quantum algorithms range from hundreds of bytes to over one hundred kilobytes, so this impact can be substantially.  See <xref target="BCNS15"/>, <xref target="FRODO"/> for preliminary results in a laboratory setting, and <xref target="LANGLEY"/> for preliminary results on more realistic networks.</t>
      <t>Additional round trips added to the protocol.  See below.</t>
    </list></t>
  <t><spanx style="strong">No extra round trips:</spanx> 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>
  <t><spanx style="strong">No duplicate information:</spanx> Attempting to negotiate hybrid key exchange should not mean having to send multiple public keys of the same type.</t>
</list></t>

</section>
<section anchor="related-work" title="Related work">

<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 classical to post-quantum cryptography, see for example <xref target="ETSI"/> and <xref target="HOFFMAN"/>, among others.</t>

<t>There have been several Internet-Drafts describing mechanisms for embedding post-quantum and/or hybrid key exchange in TLS:</t>

<t><list style="symbols">
  <t>Internet-Drafts for TLS 1.2: <xref target="WHYTE12"/></t>
  <t>Internet-Drafts for TLS 1.3: <xref target="KIEFER"/>, <xref target="SCHANCK"/>, <xref target="WHYTE13"/></t>
</list></t>

<t>There have been several prototype implementations for post-quantum and/or hybrid key exchange in TLS:</t>

<t><list style="symbols">
  <t>Experimental implementations in TLS 1.2: <xref target="BCNS15"/>, <xref target="CECPQ1"/>, <xref target="FRODO"/>, <xref target="OQS-102"/></t>
  <t>Experimental implementations in TLS 1.3: <xref target="CECPQ2"/>, <xref target="OQS-111"/></t>
</list></t>

<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>
</section>
<section anchor="overview" title="Overview">

<t>We identify four distinct axes along which one can make choices when integrating hybrid key exchange into TLS 1.3:</t>

<t><list style="numbers">
  <t>How to negotiate the use of hybridization in general and component algorithms specifically?</t>
  <t>How many component algorithms can be combined?</t>
  <t>How should multiple key shares (public keys / ciphertexts) be conveyed?</t>
  <t>How should multiple shared secrets be combined?</t>
</list></t>

<t>The remainder of this document outlines various options we have identified for each of these choices.  Immediately below we provide a summary list.  Options are labelled with a short code in parentheses to provide easy cross-referencing.</t>

<t><list style="numbers">
  <t><xref target="neg">(Neg)</xref> How to negotiate the use of hybridization in general and component algorithms specifically?  <list style="symbols">
      <t><xref target="neg-ind">(Neg-Ind)</xref> Negotiating component algorithms individually      <list style="symbols">
          <t><xref target="neg-ind-1">(Neg-Ind-1)</xref> Traditional algorithms in <spanx style="verb">ClientHello</spanx> <spanx style="verb">supported_groups</spanx> extension, next-gen algorithms in another extension</t>
          <t><xref target="neg-ind-2">(Neg-Ind-2)</xref> Both types of algorithms in <spanx style="verb">supported_groups</spanx> with external mapping to tradition/next-gen.</t>
          <t><xref target="neg-ind-3">(Neg-Ind-3)</xref> Both types of algorithms in <spanx style="verb">supported_groups</spanx> separated by a delimiter.</t>
        </list></t>
      <t><xref target="neg-comb">(Neg-Comb)</xref> Negotiating component algorithms as a combination      <list style="symbols">
          <t><xref target="neg-comb-1">(Neg-Comb-1)</xref> Standardize <spanx style="verb">NamedGroup</spanx> identifiers for each desired combination.</t>
          <t><xref target="neg-comb-2">(Neg-Comb-2)</xref> Use placeholder identifiers in <spanx style="verb">supported_groups</spanx> with an extension defining the combination corresponding to each placeholder.</t>
          <t><xref target="neg-comb-3">(Neg-Comb-3)</xref> List combinations by inserting grouping delimiters into <spanx style="verb">supported_groups</spanx> list.</t>
        </list></t>
    </list></t>
  <t><xref target="num">(Num)</xref> How many component algorithms can be combined?  <list style="symbols">
      <t><xref target="num-2">(Num-2)</xref> Two.</t>
      <t><xref target="num-2-plus">(Num-2+)</xref> Two or more.</t>
    </list></t>
  <t><xref target="shares">(Shares)</xref> How should multiple key shares (public keys / ciphertexts) be conveyed?  <list style="symbols">
      <t><xref target="shares-concat">(Shares-Concat)</xref> Concatenate each combination of key shares.</t>
      <t><xref target="shares-multiple">(Shares-Multiple)</xref> Send individual key shares for each algorithm.</t>
      <t><xref target="shares-ext-additional">(Shares-Ext-Additional)</xref> Use an extension to convey key shares for component algorithms.</t>
    </list></t>
  <t><xref target="comb">(Comb)</xref> How should multiple shared secrets be combined?  <list style="symbols">
      <t><xref target="comb-concat">(Comb-Concat)</xref> Concatenate the shared secrets then use directly in the TLS 1.3 key schedule.</t>
      <t><xref target="comb-xor">(Comb-XOR)</xref> XOR the shared secrets then use directly in the TLS 1.3 key schedule.</t>
      <t><xref target="comb-chain">(Comb-Chain)</xref> Extend the TLS 1.3 key schedule so that there is a stage of the key schedule for each shared secret.</t>
      <t><xref target="comb-altinput">(Comb-AltInput)</xref> Use the second shared secret in an alternate (otherwise unused) input in the TLS 1.3 key schedule.</t>
    </list></t>
</list></t>

</section>
<section anchor="design-options" title="Design options">

<section anchor="neg" title="(Neg) How to negotiate hybridization and component algorithms?">

<section anchor="key-exchange-negotiation-in-tls-13" title="Key exchange negotiation in TLS 1.3">

<t>Recall that in TLS 1.3, the key exchange mechanism is negotiated via the <spanx style="verb">supported_groups</spanx> extension.  The <spanx style="verb">NamedGroup</spanx> enum is a list of standardized groups for Diffie–Hellman key exchange, such as <spanx style="verb">secp256r1</spanx>, <spanx style="verb">x25519</spanx>, and <spanx style="verb">ffdhe2048</spanx>.</t>

<t>The client, in its <spanx style="verb">ClientHello</spanx> message, lists its supported mechanisms in the <spanx style="verb">supported_groups</spanx> extension.  The client also optionally includes the public key of one or more of these groups in the <spanx style="verb">key_share</spanx> extension as a guess of which mechanisms the server might accept in hopes of reducing the number of round trips.</t>

<t>If the server is willing to use one of the client’s requested mechanisms, it responds with a <spanx style="verb">key_share</spanx> extension containing its public key for the desired mechanism.</t>

<t>If the server is not willing to use any of the client’s requested mechanisms, the server responds with a <spanx style="verb">HelloRetryRequest</spanx> message that includes an extension indicating its preferred mechanism.</t>

</section>
<section anchor="neg-ind" title="(Neg-Ind) Negotiating component algorithms individually">

<t>In these three approaches, the parties negotiate which traditional algorithm and which next-gen algorithm to use independently.  The <spanx style="verb">NamedGroup</spanx> enum is extended to include algorithm identifiers for each next-gen algorithm.</t>

<section anchor="neg-ind-1" title="(Neg-Ind-1)">

<t>The client advertises two lists to the server: one list containing its supported traditional mechanisms (e.g. via the existing <spanx style="verb">ClientHello</spanx> <spanx style="verb">supported_groups</spanx> extension), and a second list containing its supported next-generation mechanisms (e.g., via an additional <spanx style="verb">ClientHello</spanx> extension).  A server could then select one algorithm from the traditional list, and one algorithm from the next-generation list.  (This is the approach in <xref target="SCHANCK"/>.)</t>

</section>
<section anchor="neg-ind-2" title="(Neg-Ind-2)">

<t>The client advertises a single list to the server which contains both its traditional and next-generation mechanisms (e.g., all in the existing <spanx style="verb">ClientHello</spanx> <spanx style="verb">supported_groups</spanx> extension), but with some external table provides a standardized mapping of those mechanisms as either “traditional” or “next-generation”.  A server could then select two algorithms from this list, one from each category.</t>

</section>
<section anchor="neg-ind-3" title="(Neg-Ind-3)">

<t>The client advertises a single list to the server delimited into sublists: one for its traditional mechanisms and one for its next-generation mechanisms, all in the existing <spanx style="verb">ClientHello</spanx> <spanx style="verb">supported_groups</spanx> extension, with a special code point serving as a delimiter between the two lists.  For example, <spanx style="verb">supported_groups = secp256r1, x25519, delimiter, nextgen1, nextgen4</spanx>.</t>

</section>
</section>
<section anchor="neg-comb" title="(Neg-Comb) Negotiating component algorithms as a combination">

<t>In these three approaches, combinations of key exchange mechanisms appear as a single monolithic block; the parties negotiate which of several combinations they wish to use.</t>

<section anchor="neg-comb-1" title="(Neg-Comb-1)">

<t>The <spanx style="verb">NamedGroup</spanx> enum is extended to include algorithm identifiers for each <spanx style="strong">combination</spanx> of algorithms desired by the working group.  There is no “internal structure” to the algorithm identifiers for each combination, they are simply new code points assigned arbitrarily.  The client includes any desired combinations in its <spanx style="verb">ClientHello</spanx> <spanx style="verb">supported_groups</spanx> list, and the server picks one of these.  This is the approach in <xref target="KIEFER"/> and <xref target="OQS-111"/>.</t>

</section>
<section anchor="neg-comb-2" title="(Neg-Comb-2)">

<t>The <spanx style="verb">NamedGroup</spanx> enum is extended to include algorithm identifiers for each next-gen algorithm.  Some additional field/extension is used to convey which combinations the parties wish to use.  For example, in <xref target="WHYTE13"/>, there are distinguished <spanx style="verb">NamedGroup</spanx> called <spanx style="verb">hybrid_marker 0</spanx>, <spanx style="verb">hybrid_marker 1</spanx>, <spanx style="verb">hybrid_marker 2</spanx>, etc.  This is complemented by a <spanx style="verb">HybridExtension</spanx> which contains mappings for each numbered <spanx style="verb">hybrid_marker</spanx> to the set of component key exchange algorithms (2 or more) for that proposed combination.</t>

</section>
<section anchor="neg-comb-3" title="(Neg-Comb-3)">

<t>The client lists combinations in <spanx style="verb">supported_groups</spanx> list, using a special delimiter to indicate combinations.  For example,
<spanx style="verb">supported_groups = combo_delimiter, secp256r1, nextgen1, combo_delimiter, secp256r1, nextgen4, standalone_delimiter, secp256r1, x25519</spanx> would indicate that the client’s highest preference is the combination secp256r1+nextgen1, the next highest preference is the combination secp2561+nextgen4, then the single algorithm secp256r1, then the single algorithm x25519.  A hybrid-aware server would be able to parse these; a hybrid-unaware server would see <spanx style="verb">unknown, secp256r1, unknown, unknown, secp256r1, unknown, unknown, secp256r1, x25519</spanx>, which it would be able to process, although there is the potential that every “projection” of a hybrid list that is tolerable to a client does not result in list that is tolerable to the client.</t>

</section>
</section>
<section anchor="benefits-and-drawbacks" title="Benefits and drawbacks">

<t><spanx style="strong">Combinatorial explosion.</spanx> <xref target="neg-comb-1">(Neg-Comb-1)</xref> requires new identifiers to be defined for each desired combination.  The other 4 options in this section do not.</t>

<t><spanx style="strong">Extensions.</spanx> <xref target="neg-ind-1">(Neg-Ind-1)</xref> and <xref target="neg-comb-2">(Neg-Comb-2)</xref> require new extensions to be defined.  The other options in this section do not.</t>

<t><spanx style="strong">New logic.</spanx> All options in this section except <xref target="neg-comb-1">(Neg-Comb-1)</xref> require new logic to process negotiation.</t>

<t><spanx style="strong">Matching security levels.</spanx> <xref target="neg-ind-1">(Neg-Ind-1)</xref>, <xref target="neg-ind-2">(Neg-Ind-2)</xref>, <xref target="neg-ind-3">(Neg-Ind-3)</xref>, and <xref target="neg-comb-2">(Neg-Comb-2)</xref> allow algorithms of different claimed security level from their corresponding lists to be combined.  For example, this could result in combining ECDH secp256r1 (classical security level 128) with NewHope-1024 (classical security level 256).  Implementations dissatisfied with a mismatched security levels must either accept this mismatch or attempt to renegotiate.  <xref target="neg-ind-1">(Neg-Ind-1)</xref>, <xref target="neg-ind-2">(Neg-Ind-2)</xref>, and <xref target="neg-ind-3">(Neg-Ind-3)</xref> give control over the combination to the server; <xref target="neg-comb-2">(Neg-Comb-2)</xref> gives control over the combination to the client.  <xref target="neg-comb-1">(Neg-Comb-1)</xref> only allows standardized combinations, which could be set by TLS working group to have matching security (provided security estimates do not evolve separately).</t>

<t><spanx style="strong">Backwards-compability.</spanx> TLS 1.3-compliant hybrid-unaware servers should ignore unreocgnized elements in <spanx style="verb">supported_groups</spanx> <xref target="neg-ind-2">(Neg-Ind-2)</xref>, <xref target="neg-ind-3">(Neg-Ind-3)</xref>, <xref target="neg-comb-1">(Neg-Comb-1)</xref>, <xref target="neg-comb-2">(Neg-Comb-2)</xref> and unrecognized <spanx style="verb">ClientHello</spanx> extensions <xref target="neg-ind-1">(Neg-Ind-1)</xref>, <xref target="neg-comb-2">(Neg-Comb-2)</xref>.  In <xref target="neg-ind-3">(Neg-Ind-3)</xref> and <xref target="neg-comb-3">(Neg-Comb-3)</xref>, a server that is hybrid-unaware will ignore the delimiters in <spanx style="verb">supported_groups</spanx>, and thus might try to negotiate an algorithm individually that is only meant to be used in combination; depending on how such an implementation is coded, it may also encounter bugs when the same element appears multiple times in the list.</t>

</section>
</section>
<section anchor="num" title="(Num) How many component algorithms to combine?">

<section anchor="num-2" title="(Num-2) Two">

<t>Exactly two algorithms can be combined together in hybrid key exchange.  This is the approach taken in <xref target="KIEFER"/> and <xref target="SCHANCK"/>.</t>

</section>
<section anchor="num-2-plus" title="(Num-2+) Two or more">

<t>Two or more algorithms can be combined together in hybrid key exchange.  This is the approach taken in <xref target="WHYTE13"/>.</t>

</section>
<section anchor="benefits-and-drawbacks-1" title="Benefits and Drawbacks">

<t>Restricting the number of component algorithms that can be hybridized to two substantially reduces the generality required.  On the other hand, some adopters may want to further reduce risk by employing multiple next-gen algorithms built on different cryptographic assumptions.</t>

</section>
</section>
<section anchor="shares" title="(Shares) How to convey key shares?">

<t>In ECDH ephmeral key exchange, the client sends its ephmeral public key in the <spanx style="verb">key_share</spanx> extension of the <spanx style="verb">ClientHello</spanx> message, and the server sends its ephmeral public key in the <spanx style="verb">key_share</spanx> extension of the <spanx style="verb">ServerHello</spanx> message.</t>

<t>For a general key encapsulation mechanism used for ephemeral key exchange, we imagine that that client generates a fresh KEM public key / secret pair for each connection, sends it to the client, and the server responds with a KEM ciphertext.  For simplicity and consistency with TLS 1.3 terminology, we will refer to both of these types of objects as “key shares”.</t>

<t>In hybrid key exchange, we have to decide how to convey the client’s two (or more) key shares, and the server’s two (or more) key shares.</t>

<section anchor="shares-concat" title="(Shares-Concat) Concatenate key shares">

<t>The client concatenates the bytes representing its two key shares and uses this directly as the <spanx style="verb">key_exchange</spanx> value in a <spanx style="verb">KeyShareEntry</spanx> in its <spanx style="verb">key_share</spanx> extension.  The server does the same thing.  Note that the <spanx style="verb">key_exchange</spanx> value can be an octet string of length at most 2^16-1.  This is the approach taken in <xref target="KIEFER"/>, <xref target="OQS-111"/>, and <xref target="WHYTE13"/>.</t>

</section>
<section anchor="shares-multiple" title="(Shares-Multiple) Send multiple key shares">

<t>The client sends multiple key shares directly in the <spanx style="verb">client_shares</spanx> vectors of the <spanx style="verb">ClientHello</spanx> <spanx style="verb">key_share</spanx> extension.  The server does the same.  (Note that while the existing <spanx style="verb">KeyShareClientHello</spanx> struct allows for multiple key share entries, the existing <spanx style="verb">KeyShareServerHello</spanx> only permits a single key share entry, so some modification would be required to use this approach for the server to send multiple key shares.)</t>

</section>
<section anchor="shares-ext-additional" title="(Shares-Ext-Additional) Extension carrying additional key shares">

<t>The client sends the key share for its traditional algorithm in the original <spanx style="verb">key_share</spanx> extension of the <spanx style="verb">ClientHello</spanx> message, and the key share for its next-gen algorithm in some additional extension in the <spanx style="verb">ClientHello</spanx> message.  The server does the same thing.  This is the approach taken in <xref target="SCHANCK"/>.</t>

</section>
<section anchor="benefits-and-drawbacks-2" title="Benefits and Drawbacks">

<t><spanx style="strong">Backwards compatibility.</spanx> <xref target="shares-multiple">(Shares-Multiple)</xref> is fully backwards compatible with non-hybrid-aware servers.  <xref target="shares-ext-additional">(Shares-Ext-Additional)</xref> is backwards compatible with non-hybrid-aware servers provided they ignore unrecognized extensions.  <xref target="shares-concat">(Shares-Concat)</xref> is backwards-compatible with non-hybrid aware servers, but may result in duplication / additional round trips (see below).</t>

<t><spanx style="strong">Duplication versus additional round trips.</spanx> If a client wants to offer multiple key shares for multiple combinations in order to avoid retry requests, then the client may ended up sending a key share for one algorithm multiple times when using <xref target="shares-ext-additional">(Shares-Ext-Additional)</xref> and <xref target="shares-concat">(Shares-Concat)</xref>.  (For example, if the client wants to send an ECDH-secp256r1 + McEliece123 key share, and an ECDH-secp256r1 + NewHope1024 key share, then the same ECDH public key may be sent twice.  If the client also wants to offer a traditional ECDH-only key share for non-hybrid-aware implementations and avoid retry requests, then that same ECDH public key may be sent another time.)  <xref target="shares-multiple">(Shares-Multiple)</xref> does not result in duplicate key shares.</t>

</section>
</section>
<section anchor="comb" title="(Comb) How to use keys?">

<t>Each component key exchange algorithm establishes a shared secret.  These shared secrets must be combined in some 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.</t>

<section anchor="comb-concat" title="(Comb-Concat) Concatenate keys then KDF">

<t>Each party concatenates the shared secrets established by each component algorithm in an agreed-upon order, then uses feeds that through a key derivation function.  In the context of TLS 1.3, this would mean using the concatenated shared secret in place of the (EC)DHE input to the second call to <spanx style="verb">HKDF-Extract</spanx> in the TLS 1.3 key schedule:</t>

<figure><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>This is the approach used in <xref target="KIEFER"/>, <xref target="OQS-111"/>, and <xref target="WHYTE13"/>.</t>

<t><xref target="GIACON"/> analyzes the security of applying a KDF to concatenated KEM shared secrets, but their analysis does not exactly apply here since the transcript of ciphertexts is included in the KDF application (though it should follow relatively straightforwardly).</t>

<t><xref target="BINDEL"/> analyzes the security of the (Comb-Concat) approach as abstracted in their <spanx style="verb">dualPRF</spanx> combiner.  They show that, if the component KEMs are IND-CPA-secure (or IND-CCA-secure), then the values output by <spanx style="verb">Derive-Secret</spanx> are IND-CPA-secure (respectively, IND-CCA-secure).  An important aspect of their analysis is that each ciphertext is input to the final PRF calls; this holds for TLS 1.3 since the <spanx style="verb">Derive-Secret</spanx> calls that derive output keys (application traffic secrets, and exporter and resumption master secrets) include the transcript hash as input.</t>

</section>
<section anchor="comb-xor" title="(Comb-XOR) XOR keys then KDF">

<t>Each party XORs the shared secrets established by each component algorithm (possibly after padding secrets of different lengths), then uses feeds that through a key derivation function.  In the context of TLS 1.3, this would mean using the XORed shared secret in place of the (EC)DHE input to the second call to <spanx style="verb">HKDF-Extract</spanx> in the TLS 1.3 key schedule.</t>

<t><xref target="GIACON"/> analyzes the security of applying a KDF to the XORed KEM shared secrets, but their analysis does not quite apply here since the transcript of ciphertexts is included in the KDF application (though it should follow relatively straightforwardly).</t>

</section>
<section anchor="comb-chain" title="(Comb-Chain) Chain of KDF applications for each key">

<t>Each party applies a chain of key derivation functions to the shared secrets established by each component algorithm in an agreed-upon order; roughly speaking: <spanx style="verb">F(k1 || F(k2))</spanx>.  In the context of TLS 1.3, this would mean extending the key schedule to have one round of the key schedule applied for each component algorithm’s shared secret:</t>

<figure><artwork><![CDATA[
                                    0
                                    |
                                    v
                      PSK ->  HKDF-Extract = Early Secret
                                    |
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
                                    |
                                    v
                              Derive-Secret(., "derived", "")
                                    |
                                    v
 traditional_shared_secret -> HKDF-Extract
 ^^^^^^^^^^^^^^^^^^^^^^^^^          |
                              Derive-Secret(., "derived", "")
                                    |
                                    v
    next_gen_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>This is the approach used in <xref target="SCHANCK"/>.</t>

<t><xref target="BINDEL"/> analyzes the security of this approach as abstracted in their nested dual-PRF <spanx style="verb">N</spanx> combiner, showing a similar result as for the dualPRF combiner that it preserves IND-CPA (or IND-CCA) security. Again their analysis depends on each ciphertext being input to the final PRF (<spanx style="verb">Derive-Secret</spanx>) calls, which holds for TLS 1.3.</t>

</section>
<section anchor="comb-altinput" title="(Comb-AltInput) Second shared secret in an alternate KDF input">

<t>In the context of TLS 1.3, the next-generation shared secret is used in place of a currently unused input in the TLS 1.3 key schedule, namely replacing the <spanx style="verb">0</spanx> “IKM” input to the final <spanx style="verb">HKDF-Extract</spanx>:</t>

<figure><artwork><![CDATA[
                                    0
                                    |
                                    v
                      PSK ->  HKDF-Extract = Early Secret
                                    |
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
                                    |
                                    v
                              Derive-Secret(., "derived", "")
                                    |
                                    v
 traditional_shared_secret -> HKDF-Extract = Handshake Secret
 ^^^^^^^^^^^^^^^^^^^^^^^^^          |
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
                                    |
                                    v
                              Derive-Secret(., "derived", "")
                                    |
                                    v
    next_gen_shared_secret -> HKDF-Extract = Master Secret
    ^^^^^^^^^^^^^^^^^^^^^^          |
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
]]></artwork></figure>

<t>This approach is not taken in any of the known post-quantum/hybrid TLS drafts.  However, it bears some similarities to the approach for using external PSKs in <xref target="EXTERN-PSK"/>.</t>

</section>
<section anchor="benefits-and-drawbacks-3" title="Benefits and Drawbacks">

<t><spanx style="strong">New logic.</spanx>  While <xref target="comb-concat">(Comb-Concat)</xref> requires new logic to compute the concatenated shared secret, this value can then be used by the TLS 1.3 key schedule without changes to the key schedule logic.  In contrast, <xref target="comb-chain">(Comb-Chain)</xref> requires the TLS 1.3 key schedule to be extended for each extra component algorithm.</t>

<t><spanx style="strong">Philosophical.</spanx>  The TLS 1.3 key schedule already applies a new stage for different types of keying material (PSK versus (EC)DHE), so <xref target="comb-chain">(Comb-Chain)</xref> continues that approach.</t>

<t><spanx style="strong">Efficiency.</spanx> <xref target="comb-chain">(Comb-Chain)</xref> increases the number of KDF applications for each component algorithm, whereas <xref target="comb-concat">(Comb-Concat)</xref> and <xref target="comb-altinput">(Comb-AltInput)</xref> keep the number of KDF applications the same (though with potentially longer inputs).</t>

<t><spanx style="strong">Extensibility.</spanx>  <xref target="comb-altinput">(Comb-AltInput)</xref> changes the use of an existing input, which might conflict with other future changes to the use of the input.</t>

<t><spanx style="strong">More than 2 component algorithms.</spanx>  The techniques in <xref target="comb-concat">(Comb-Concat)</xref> and <xref target="comb-chain">(Comb-Chain)</xref> can naturally accommodate more than 2 component shared secrets since there is no distinction to how each shared secret is treated.  <xref target="comb-altinput">(Comb-AltInput)</xref> would have to make some distinct, since the 2 component shared secrets are used in different ways; for example, the first shared secret is used as the “IKM” input in the 2nd <spanx style="verb">HKDF-Extract</spanx> call, and all subsequent shared secrets are concatenated to be used as the “IKM” input in the 3rd <spanx style="verb">HKDF-Extract</spanx> call.</t>

<!--# Candidate instantiations

TODO-->

</section>
</section>
</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>None.</t>

</section>
<section anchor="security-considerations" title="Security Considerations">

<t>The majority of this document is about security considerations.  As noted especially in <xref target="comb"/>, 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.  While many natural approaches seem to achieve this, there can be subtleties (see for example the introduction of <xref target="GIACON"/>).</t>

<t>The rest of this section highlights a few unresolved questions related to security.</t>

<section anchor="active-security" title="Active security">

<t>One security consideration that is not yet resolved is whether key encapsulation mechanisms used in TLS 1.3 must be secure against active attacks (IND-CCA), or whether security against passive attacks (IND-CPA) suffices.  Existing security proofs of TLS 1.3 (such as <xref target="DFGS15"/>, <xref target="DOWLING"/>) are formulated specifically around Diffie–Hellman and use an “actively secure” Diffie–Hellman assumption (PRF Oracle Diffie–Hellman (PRF-ODH)) rather than a “passively secure” DH assumption (e.g. decisional Diffie–Hellman (DDH)), but do not claim that the actively secure notion is required.  In the context of TLS 1.2, <xref target="KPW13"/> show that, at least in one formalization, a passively secure assumption like DDH is insufficient (even when signatures are used for mutual authentication).  Resolving this issue for TLS 1.3 is an open question.</t>

</section>
<section anchor="resumption" title="Resumption">

<t>TLS 1.3 allows for session resumption via a pre-shared key.  When a pre-shared key is used during session establishment, an ephemeral key exchange can also be used to enhance forward secrecy.  If the original key exchange was hybrid, should an ephemeral key exchange in a resumption of that original key exchange be required to use the same hybrid algorithms?</t>

</section>
<section anchor="failures" title="Failures">

<t>Some post-quantum key exchange algorithms have non-trivial failure rates: two honest parties may fail to agree on the same shared secret with non-negligible probability.  Does a non-negligible failure rate affect the security of TLS?  How should such a failure be treated operationally?  What is an acceptable failure rate?</t>

</section>
</section>
<section anchor="acknowledgements" title="Acknowledgements">

<t>These ideas have grown from discussions with many colleagues, including Christopher Wood, Matt Campagna, and authors of the various hybrid Internet-Drafts and implementations cited in this document.  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.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference  anchor="TLS13" target='https://www.rfc-editor.org/info/rfc8446'>
<front>
<title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
<author initials='E.' surname='Rescorla' fullname='E. Rescorla'><organization /></author>
<date year='2018' month='August' />
<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>




    </references>

    <references title='Informative References'>



<reference anchor="BCNS15" >
  <front>
    <title>Post-Quantum Key Exchange for the TLS Protocol from the Ring Learning with Errors Problem</title>
    <author initials="J." surname="Bos" fullname="Joppe W. Bos">
      <organization></organization>
    </author>
    <author initials="C." surname="Costello" fullname="Craig Costello">
      <organization></organization>
    </author>
    <author initials="M." surname="Naehrig" fullname="Michael Naehrig">
      <organization></organization>
    </author>
    <author initials="D." surname="Stebila" fullname="Douglas Stebila">
      <organization></organization>
    </author>
    <date year="2015" month="May"/>
  </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></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" target="https://eprint.iacr.org/2018/903">
  <front>
    <title>Hybrid Key Encapsulation Mechanisms and Authenticated Key Exchange</title>
    <author initials="N." surname="Bindel">
      <organization></organization>
    </author>
    <author initials="J." surname="Brendel">
      <organization></organization>
    </author>
    <author initials="M." surname="Fischlin">
      <organization></organization>
    </author>
    <author initials="B." surname="Goncalves">
      <organization></organization>
    </author>
    <author initials="D." surname="Stebila">
      <organization></organization>
    </author>
    <date year="2019"/>
  </front>
  <seriesInfo name="Post-Quantum Cryptography (PQCrypto)" value=""/>
</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></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></organization>
    </author>
    <date year="2018" month="December" day="12"/>
  </front>
</reference>


<reference anchor="DFGS15" >
  <front>
    <title>A Cryptographic Analysis of the TLS 1.3 Handshake Protocol Candidates</title>
    <author initials="B." surname="Dowling" fullname="Benjamin Dowling">
      <organization></organization>
    </author>
    <author initials="M." surname="Fischlin" fullname="Marc Fischlin">
      <organization></organization>
    </author>
    <author initials="F." surname="Günther" fullname="Felix Günther">
      <organization></organization>
    </author>
    <author initials="D." surname="Stebila" fullname="Douglas Stebila">
      <organization></organization>
    </author>
    <date year="2015"/>
  </front>
  <seriesInfo name="Proceedings of the 22nd ACM SIGSAC Conference on Computer and Communications Security - CCS" value="'15"/>
  <seriesInfo name="DOI" value="10.1145/2810103.2813653"/>
</reference>

<reference anchor="DODIS" >
  <front>
    <title>Chosen-Ciphertext Security of Multiple Encryption</title>
    <author initials="Y." surname="Dodis" fullname="Yevgeniy Dodis">
      <organization></organization>
    </author>
    <author initials="J." surname="Katz" fullname="Jonathan Katz">
      <organization></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>Provable Security of Internet Protocols</title>
    <author initials="B." surname="Dowling" fullname="Benjamin James Dowling">
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
  <seriesInfo name="Queensland University of Technology" value="dissertation"/>
  <seriesInfo name="DOI" value="10.5204/thesis.eprints.108960"/>
</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></organization>
    </author>
    <author initials="." surname="others">
      <organization></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 initials="S." surname="Even" fullname="S. Even">
      <organization></organization>
    </author>
    <author initials="O." surname="Goldreich" fullname="O. Goldreich">
      <organization></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 initials='R' surname='Housley' fullname='Russ Housley'>
    <organization />
</author>

<date month='February' day='28' year='2019' />

<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='Internet-Draft' value='draft-ietf-tls-tls13-cert-with-extern-psk-00' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-tls-tls13-cert-with-extern-psk-00.txt' />
</reference>

<reference anchor="FRODO" >
  <front>
    <title>Frodo</title>
    <author initials="J." surname="Bos" fullname="Joppe Bos">
      <organization></organization>
    </author>
    <author initials="C." surname="Costello" fullname="Craig Costello">
      <organization></organization>
    </author>
    <author initials="L." surname="Ducas" fullname="Leo Ducas">
      <organization></organization>
    </author>
    <author initials="I." surname="Mironov" fullname="Ilya Mironov">
      <organization></organization>
    </author>
    <author initials="M." surname="Naehrig" fullname="Michael Naehrig">
      <organization></organization>
    </author>
    <author initials="V." surname="Nikolaenko" fullname="Valeria Nikolaenko">
      <organization></organization>
    </author>
    <author initials="A." surname="Raghunathan" fullname="Ananth Raghunathan">
      <organization></organization>
    </author>
    <author initials="D." surname="Stebila" fullname="Douglas Stebila">
      <organization></organization>
    </author>
    <date year="2016"/>
  </front>
  <seriesInfo name="Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security -" value="CCS'16"/>
  <seriesInfo name="DOI" value="10.1145/2976749.2978425"/>
</reference>

<reference anchor="GIACON" >
  <front>
    <title>KEM Combiners</title>
    <author initials="F." surname="Giacon" fullname="Federico Giacon">
      <organization></organization>
    </author>
    <author initials="F." surname="Heuer" fullname="Felix Heuer">
      <organization></organization>
    </author>
    <author initials="B." surname="Poettering" fullname="Bertram Poettering">
      <organization></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 initials="D." surname="Harnik" fullname="Danny Harnik">
      <organization></organization>
    </author>
    <author initials="J." surname="Kilian" fullname="Joe Kilian">
      <organization></organization>
    </author>
    <author initials="M." surname="Naor" fullname="Moni Naor">
      <organization></organization>
    </author>
    <author initials="O." surname="Reingold" fullname="Omer Reingold">
      <organization></organization>
    </author>
    <author initials="A." surname="Rosen" fullname="Alon Rosen">
      <organization></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="HOFFMAN">
<front>
<title>The Transition from Classical to Post-Quantum Cryptography</title>

<author initials='P' surname='Hoffman' fullname='Paul Hoffman'>
    <organization />
</author>

<date month='August' day='13' year='2018' />

<abstract><t>Quantum computing is the study of computers that use quantum features in calculations.  For over 20 years, it has been known that if very large, specialized quantum computers could be built, they could have a devastating effect on asymmetric classical cryptographic algorithms such as RSA and elliptic curve signatures and key exchange, as well as (but in smaller scale) on symmetric cryptographic algorithms such as block ciphers, MACs, and hash functions.  There has already been a great deal of study on how to create algorithms that will resist large, specialized quantum computers, but so far, the properties of those algorithms make them onerous to adopt before they are needed.  Small quantum computers are being built today, but it is still far from clear when large, specialized quantum computers will be built that can recover private or secret keys in classical algorithms at the key sizes commonly used today.  It is important to be able to predict when large, specialized quantum computers usable for cryptanalysis will be possible so that organization can change to post-quantum cryptographic algorithms well before they are needed.  This document describes quantum computing, how it might be used to attack classical cryptographic algorithms, and possibly how to predict when large, specialized quantum computers will become feasible.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-hoffman-c2pq-04' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-hoffman-c2pq-04.txt' />
</reference>



<reference anchor="IKE-HYBRID">
<front>
<title>Framework to Integrate Post-quantum Key Exchanges into Internet Key Exchange Protocol Version 2 (IKEv2)</title>

<author initials='C' surname='Tjhai' fullname='C. Tjhai'>
    <organization />
</author>

<author initials='M' surname='Tomlinson' fullname='M. Tomlinson'>
    <organization />
</author>

<author initials='g' surname='grbartle@cisco.com' fullname='grbartle@cisco.com'>
    <organization />
</author>

<author initials='S' surname='Fluhrer' fullname='Scott Fluhrer'>
    <organization />
</author>

<author initials='D' surname='Geest' fullname='Daniel Van Geest'>
    <organization />
</author>

<author initials='O' surname='Garcia-Morchon' fullname='Oscar Garcia-Morchon'>
    <organization />
</author>

<author initials='V' surname='Smyslov' fullname='Valery Smyslov'>
    <organization />
</author>

<date month='January' day='14' 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-03' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-tjhai-ipsecme-hybrid-qske-ikev2-03.txt' />
</reference>



<reference anchor="IKE-PSK">
<front>
<title>Postquantum Preshared Keys for IKEv2</title>

<author initials='S' surname='Fluhrer' fullname='Scott Fluhrer'>
    <organization />
</author>

<author initials='D' surname='McGrew' fullname='David McGrew'>
    <organization />
</author>

<author initials='P' surname='Kampanakis' fullname='Panos Kampanakis'>
    <organization />
</author>

<author initials='V' surname='Smyslov' fullname='Valery Smyslov'>
    <organization />
</author>

<date month='January' day='21' year='2019' />

<abstract><t>The possibility of Quantum Computers pose a serious challenge to cryptography algorithms deployed widely today.  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='Internet-Draft' value='draft-ietf-ipsecme-qr-ikev2-07' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-ipsecme-qr-ikev2-07.txt' />
</reference>



<reference anchor="KIEFER">
<front>
<title>Hybrid ECDHE-SIDH Key Exchange for TLS</title>

<author initials='F' surname='Kiefer' fullname='Franziskus Kiefer'>
    <organization />
</author>

<author initials='K' surname='Kwiatkowski' fullname='Krzysztof Kwiatkowski'>
    <organization />
</author>

<date month='November' day='5' 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' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-kiefer-tls-ecdhe-sidh-00.txt' />
</reference>

<reference anchor="KPW13" >
  <front>
    <title>On the Security of the TLS Protocol: A Systematic Analysis</title>
    <author initials="H." surname="Krawczyk" fullname="Hugo Krawczyk">
      <organization></organization>
    </author>
    <author initials="K." surname="Paterson" fullname="Kenneth G. Paterson">
      <organization></organization>
    </author>
    <author initials="H." surname="Wee" fullname="Hoeteck Wee">
      <organization></organization>
    </author>
    <date year="2013"/>
  </front>
  <seriesInfo name="Advances in Cryptology – CRYPTO 2013" value="pp. 429-448"/>
  <seriesInfo name="DOI" value="10.1007/978-3-642-40041-4_24"/>
</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></organization>
    </author>
    <date year="2018" month="April" day="11"/>
  </front>
</reference>
<reference anchor="NIELSEN" >
  <front>
    <title>Quantum Computation and Quantum Information</title>
    <author initials="M.A." surname="Nielsen">
      <organization></organization>
    </author>
    <author initials="I.L." surname="Chuang">
      <organization></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 year="n.d."/>
  </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="2018" month="November"/>
  </front>
</reference>




<reference anchor="SCHANCK">
<front>
<title>A Transport Layer Security (TLS) Extension For Establishing An Additional Shared Secret</title>

<author initials='J' surname='Schanck' fullname='John Schanck'>
    <organization />
</author>

<author initials='D' surname='Stebila' fullname='Douglas Stebila'>
    <organization />
</author>

<date month='April' day='17' 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' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-schanck-tls-additional-keyshare-00.txt' />
</reference>



<reference anchor="WHYTE12">
<front>
<title>Quantum-Safe Hybrid (QSH) Ciphersuite for Transport Layer Security (TLS) version 1.2</title>

<author initials='J' surname='Schanck' fullname='John Schanck'>
    <organization />
</author>

<author initials='W' surname='Whyte' fullname='William Whyte'>
    <organization />
</author>

<author initials='Z' surname='Zhang' fullname='Zhenfei Zhang'>
    <organization />
</author>

<date month='July' day='22' 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' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-whyte-qsh-tls12-02.txt' />
</reference>



<reference anchor="WHYTE13">
<front>
<title>Quantum-Safe Hybrid (QSH) Key Exchange for Transport Layer Security (TLS) version 1.3</title>

<author initials='W' surname='Whyte' fullname='William Whyte'>
    <organization />
</author>

<author initials='Z' surname='Zhang' fullname='Zhenfei Zhang'>
    <organization />
</author>

<author initials='S' surname='Fluhrer' fullname='Scott Fluhrer'>
    <organization />
</author>

<author initials='O' surname='Garcia-Morchon' fullname='Oscar Garcia-Morchon'>
    <organization />
</author>

<date month='October' day='3' 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' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-whyte-qsh-tls13-06.txt' />
</reference>



<reference  anchor="XMSS" target='https://www.rfc-editor.org/info/rfc8391'>
<front>
<title>XMSS: eXtended Merkle Signature Scheme</title>
<author initials='A.' surname='Huelsing' fullname='A. Huelsing'><organization /></author>
<author initials='D.' surname='Butin' fullname='D. Butin'><organization /></author>
<author initials='S.' surname='Gazdag' fullname='S. Gazdag'><organization /></author>
<author initials='J.' surname='Rijneveld' fullname='J. Rijneveld'><organization /></author>
<author initials='A.' surname='Mohaisen' fullname='A. Mohaisen'><organization /></author>
<date year='2018' month='May' />
<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 initials="R." surname="Zhang" fullname="Rui Zhang">
      <organization></organization>
    </author>
    <author initials="G." surname="Hanaoka" fullname="Goichiro Hanaoka">
      <organization></organization>
    </author>
    <author initials="J." surname="Shikata" fullname="Junji Shikata">
      <organization></organization>
    </author>
    <author initials="H." surname="Imai" fullname="Hideki Imai">
      <organization></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>




    </references>



  </back>

<!-- ##markdown-source:
H4sIANzEhlwAA+09a3fbOHbf9StQ50OtjCjbsvNy2s5mbGfiJnEycbbZbU8b
wyQkcU2RGoK0ovGmv733AYAARcnOJLtntmcyj9gSCFzce3HfF4yiqFelVaYO
xbHS6SQXqda10mJclGK6vCzTRFyppVCf4qnMJ0qkuXj/6lzsDfd78vKyVNeH
QlfqMs1kVGU64keihObqJUWcyxnMnZRyXEVrB0a7u71EVjBwtLv3JNrdj/b2
ejF8MCnK5SGsOS56vXReHoqqrHU12t19sjvqAVyLokwOxWleqTJXVXSMy/R6
upJ58lFmRQ4zLpXuzdND8V9VEQ+ELsqqVGMNPy1n+MN/93qyrqZFedgTIoL/
BCynARtDcc7g0me8jeOinmRS0zdZyt8U5UTm6S+ySov8UPwxT69VqdNqKYqx
+ABbKLOioIFqJtMMUGGw8Id6Yb4dxjJc+3wofqxVWeTe0udTufQ/3bTsC5mO
pQAciGcz+UuRiw/qUpyr8jqNARn4tCXdH4c8eLB2pIFaw/LDCS3/hwl+NIyL
Wa+XF+UMQLhWiD3gi739Q/Hu+dHjg4OHQDAgm/f1D0dn53sPAIlvTod7u8O9
vd0nO+dvh0DxB8ODXRxw8u7s/P3J6VkzZnf30c6TR4+j/ejBwW70+PGj3VH0
CIeenh2fvDokCCtZTlR1KKZVNdeHOztqXqZ5NUxlXA4BSzuwwOOdJ7v7PJh5
/QVz9kvg7JM8lnNdZ4RJ8Vohn6d6phl/wBoqr1LkRTPcHARGo+Mc/BOZvw0V
z4bihzRPVNb99b/D16Va//3roXie6niapXn3gB+ASwoAPrs2pFoZ0eJhrcoU
jhtQ5VC8LXQV/VTLvKpn4qhczqtiUsr5dCm23/7Ev/fpoeZYwq9HJ0dvf9rr
RrtWcV0CAw4nRTHJ4HwUE+QRRP/DHSCj+jSH9WeIzXwSLdJqGs0RiJ8ZiOG0
mmU+iU788QLHrwf6dmK8RmxLmGQB/1Phzh5Gu4/gX7u/Uff+FovFMJ0hTIDx
tMhU1XDX3gj/jVU8/3m0shGe9HYQnw3FK+CsTC1D8B5HeyP4Fz48fv5jeIIO
HuyMHu/t7u3uD+Hv/YcPkMmP3xyfnq87Qvu7Dx49jB59BPmKIz+8Oj370Y19
MNo92AGG16ke8inS8PHjJw/xdJ68Pz9djxlV6ZTwkc7kROmdcZrB//GZD1NA
+FsJiNM7hnbncqzo4zl+PJwnYx9fW5bCGoaJ2OdNPJKWzwBhoKzyqiySOsaz
OxCXKlfjtALhrnJ5mcGK9AQc2CxTcGZLvbWRDGWB66skrYpyhX2O5GwuJ7ns
Jl4BaCv1yjFDBAjaqiAUiLNiKB6H9H0Q7T5E/P7HSYfg24sOHj4+iA4e7e9G
Tz4e4Lg/vQc5Gb09fwmKLzoepqoak0aF//b2o1iVFZ8u9Qm1YjTXV/DU83dv
jt+0OOfJo4ePDp4M4e/HB6MHMOjH02dHbzql7z5o5UcPH8DPDz7iQXnx7N3Z
6ctwJEw6evhw/8lH3M2LN8+fv352xiBOi/F4JvMoHs1/hu9OX55EL/78w7vT
Y/66+stUplE6B8rOlDUMftZXKkqv1PXIPBFu2I7+uXSDXp6ePD95x2OuUjVW
JaFFxclURTpNpjjm7QdUUasbfHgwig52dw8A3x9HiOZXz85+fHXy5y+XBXCE
9vZ25j/HRT6G9VfEwVtP6AkclCYo42SGyhutLlCjXyMsdg8iOtxnpyevzoGl
/LWd7Cxm87pijYcnxH5+ajW2MTJuE6kAxVmqMq3WqKhTgBJOzhSmn6ycDThQ
SGmwKT3r5W2ptA62tLtLmzl/v54UoK8rUDvXiHUSFyv4vqPSACKC3qb9ywyw
oWGOGs4u2FTnaFPKMmGR8h7MhLwAFQf6EmFDXfnmp/Nob3eN9pjAiawvSSEW
c5VbBohQxtEnWmc7YJmqHZzmDXxwfv7q497H3Y8jMJtRmPl78saAhNiNRh+9
MR1bwrGOyCh9Ac/FX1RcrWiaPbuRvTVq/tduBP65dSPwzzfdyPnRi2dnR0Zs
aLTb4iuSCTIBGU9EjsCJANu2xBU/vPjz+5O9EQ9fTJcViBc9Jbk6cl/vd32N
avdPr8/P2fjdf4KL/yes/eM6NTw6eLg/AoE+AjM5iiKwx3VVSthG70WHz1Wi
MNOiKkSt0Ria1VmVzjMVjpIZeEtAHTBddYpDZK6KWmesNoFgl2mOT4OmghnB
4q3YqsLfJwXwO3D5vCyu0wRHWTUr1DWgPB3D9Jm4rCsBThWOxKdgzjn8mlf+
2qkWl2VxpUAf47rw66wAF4AM6MslOHAy14R83M88EIbe4RyCOzGFZ8GDrNEG
FMYbTH8B3/RalinsTLDziEIUxLsq6dyy58p4WuO/IujvEYw5OIMgRpegl8/t
drdB/PYRD+AuFpkguQSwgr87ZFLN0iQBBu3dQ7fTGR/i5p5vi3zu9e4MfqLi
VBPkiNq4qLNEzOSVEospYn4GhLZW8GaHfLBKzzHgF0QuPJqAL1FrTXZSQ+Vi
3uBMw2GrIhg+4+1XyzmYcI3ZrgfG/gLvEB4FN1iKSwm2Ij2NbFLVsKo2gtL4
piuETApAQV5UuAiQXwk9BwSM0zhkhplzxJ7Ckkrc3OgYxMvnz7TarCiBC5mU
9DmzpLcOUAu0HMEt4HiD45+lcYpMSJuYEpov4dQkCaoc+BzYkTgDkLkoyivc
46Qs6rlAdxd/y0DNCFkJOPF/QCMEdT7OtgMA4ZMsr7Z1H9a+dw90RDlLjZK4
uVc1vwFzPDePzOsScaBXwB+ItMKzM1XZfFxnCBwCC6IRf0xSoF9gGwP6/DOY
42YWhYgzCXvTh8C6Ygt43oq9LW80GBPNkwuYaUoIW8AKIDsSNc+KJaEnkcsB
iQAeNJNLhAkGlIr9Y3O2xnVVlwoIf5obMZFXYIziHg2n4kh0KcFQ/ySRwRkB
DXxrJVuax1kNW1dZlgLvxgKO7bUSx+l4nKooegGfg6Vpzj/IsPnowcNyD5SH
+DR68ABXhB/HIAhBesMTwAOtR4eIqTMAN5qAN8EyZUtsw1Nbufl0q3879pDB
l6pqY7GNP3tqMkJlazBgEFycRleJsYxVZYSvDtBiaFFNgT0XSkwl4ASwqp2B
GVvJl5aNaE9qZbh+Bk8jxkqVUbwGoMjVAnFFs+iqTlICiM6yIYIWW/6R9XkK
TsAWa7KtgJQDhiLVlikGcNBBEhOf1JqPMfDttjnj/ZARGqGAkgc4DkRAAvRT
JcnY8DhoXc+MeNsmCcWsNiAx6/OaA5tEA35rKd181feEqzm0VgsCN6HYUyRc
CV7GJaFZoZzMCiMvK0Cn1Gt06LqdlhiCg03UOetVoMIHRhY+T/J6y83iEwFp
S6aDFW3+V8gpyKgMK1sHfIRll5oZokKDrYMqkOXSqnTccFtyodQCiTCXpHYQ
8YFc93gEvMRiASegtMIOBuqURBxCN68vQWQTFEEQwFFeZujgEr/CAUAulhip
y8ggqErWxHAoU7Rc0Ob5uU5L2iOcMIy85fYwwSG7Nr9J0fhm6CQhdB73wESx
NIwqGS4J5F+iKLoslbyqpqAzJlM8u3BuajjncB5BzdIkuBSpLpIt8AhTL2+L
G49QJW4MnwSpBsTIQLLR8dx09ED5vG4IxPYQQdxlP9zca4gJmuk0USiO+JQs
SEuiLMMJOp4+9IaR0AnljRQohzPVOmLAG3Km0DBhG8HILaQTWQ+GsTWTB4wP
n1WI2VDeIViXfAhiYAmnfUBI4nNtMppYUEAxIDv4BEp7RMHNw3K93muZgzWI
4hoXgo/7llnW8DOqIpRDQJwamKsM7VI6bKF4fYqzLRlvvBmQOLq+RH/GHlkN
iEKFAKIHVkc5vERJ8u78GW0n0GQ7t2hFtt/AfdPIk0lBi+YK9q/hsGYGEph9
hmzbpTnGsDGJh5wEHmsR0qhGzcclULXRLxlQjMzQxsRrUV4Tqk9kiV5KAscE
6aTkBLC3IjnctEj8BXzGDlEnX+JXtBumV8URFvJwOqcclwWQkpRdtABsRUbj
eYwLShsYWVfIpbBNyc6UE+lELDtdwwkFKSfr+ayqHETA9ntkA2sOAEXYGOVF
1jxmdXepJpi6KEAms9STKVnqvsh6fvr2nI5BliK3D/vE3sDxxVrZS4AgzLAr
hUqROR9DHRtSB+eh6W99c+Y7hEgKdCaKxJ5rnBSE5pikLMIPvgXLc6Br2Rxz
IiWYwVmLK3UxU6HoM0J3wDNbu4hnQwgWUyB0pxuF8kHIOXolZSqRjSs1R4VX
kP5E8WtdnNCHbUnvFVF8Tv7JzT32X9qO4Rh+IAcgt2CpOWgyFETr/DzwhSjV
9vkz2tgVWvvI38ghaD1a/8p4NmT7n6sMCEGJFLI918NsD5XvVuZIOncQOF4J
gqXU9A0QoyBn0rNZENUb8MI8L4q6Ara03s+vZS9ABz4IniFpEM46GiNzWqTI
8IABL5OHz7KDsBnEU6fiO4zKJs7hmdEb7QiUk8SwlCvYYDsMVsLCMF/ahGZB
3eXI1WZ5kBNlIWOjVy4x3LMkQEqNphpwPJwfOOAAOw8Bd60oE4UaO0/0VF4p
1o1ASIRJUbBoVucGV4iLH0ANWgtXhpgEYIwmbgHCxmqfzsCPhcw0nAGMS+jP
oS1pYxWddmfDVIhwwDKod/DGKzygJJwoXpjq6czhncJ5lCcqlfW1rA3dYZPr
r7TGwWRqnDTLB3ZvIffgTluSSaNRg5K98fIIR9aaWfWd6Tzfv/+DjK8WFI9G
mIEUl4iW5eH9++IoSznsYaI1eFCRC9AC2TLpFQnPqi0Q/kM1HDjlYCKCC1AB
CFcnQWx8B+mRoIIHqZbYxMXARlYYTQ62TPHMoEvmRWqB41BadFl8Up5HQgLf
g5K8TqR2qTDYo3IMnxEvWAMLH+Mw8d7QpPb5URETKgbBfAYnhzgrCDowSaoU
1jeAO4Zq+DFgqCGtM1qzTl7kUedaty/m6/mQhbdJ6tjQ7XR1XSQFyj4aUoAG
WOTAcglLpWbaqMizZZ83sD8UZ21YNyLrb7QBnv4LN0A7MI4KuIOdB8EP8cXT
FBg1IRYEnQO8DJMKkLVoDpfpnLnRfquBSSliWsOZwMCWL3s5GHkJXL8Y8kF8
kU6maNbQELBL8AT+cb27ZcAyIhOsjSkAbEQmxlpzFNJ0+sE1JM0YN8k6wKy3
EkfYjNfCCo80IHu3NjzqPYCZcMwygA0Gdmzs9K4zz9cGFMEiSNiMk8arhcUA
WXj8NgVhBVgeGLvl2p/PnwfwMxeR8M+UljYx3Tl4RylwCcpNzk8AXS6RIhu2
YIjwqlgIMINBgy3vjn9wtVCYoZIF5KfovUgTVTFzCY5+o7lJJrnP7iB8chWb
EPdzAKlAFxPMfbaznJtqI5bkmxYZMA58PRTEwxFJtrUEvpVeLQoZdAPSrtXQ
W0CnvxA+ZujpTZQ20WQyY2dpVdGTb5twy46IUzBCS9I8mnIWG+I4oiTEkgs1
hSMFB58gvVxWvBS6GaRkzbfiKs0K+hbr8RhTKRzduLKWTUCZTia6jXEo+JAB
Jkp2jrSqkCzMwzc3Jru/YQI4PRQUAJ7ICPtgLFaYF9AWs88alR2IkiRpkgk2
j2T24MuNs2JVDiHvPgN6oInJojBXk6Iid+QWZgYvlFl0RbYhKvKl5R1Wo74M
3llVWk7J4tbRCyaOQrfRQN4pG78CegwCo5dnnkMR3GQ5m0BgcwIwLIIJKnax
3mFcBQU80AeszJJ/jfBXMDZ/Cgxx8toxCLUu9YgIs0IVsXEnMfecvFv7mJ8K
xP383IZgQGpENsYUHrXLorhi4QpCFp0aKuAgL4+mz+kkXacYmB9vgF8SmrBI
dmBSZ66y0k1GtiVHKRCIqv5KJ8yuxJ6Yhbg5IVj+NVfkG2irmZzmatxpEiKU
tKJA7qYMMa/oxzlubrDcCs40n3FTgoTyQs7Q2ucaLY5klyZJwjE3Y4SHdcSU
oI1LUM+rvq2aXaqErIRQKHIycH2aloz39jLGdgbjdXQIcJsyhM+fNw7dx6Fc
8sQS0RQ78C+mVuHz5/WbdTneJsXsJdB/xbaagk08Aa05XTiBtniLOYA/mmoa
wsLdZiaMcLGlN8XenkECaHa1aR4OF0r0qDEQBN5xEXM8SOKJzFlQSZZvLOHd
FL4LmTClAsnZ6/0xN0Jphacxwmyjim4ETkSF+MYANKUbTiRSbh6/A2LQF1hK
npLkIWykQUYN9FtkLHIUogOwY9CCILOHq0Fi3MRq5ttFqTDeQXYMS0/BtYXE
Rf7UeARdeSKIAczBs4uW2vMnTk/eP3dyT1t3GG1XFN6wUIAdmN+DHLd3+vLk
egQLmZpAc9wliA7QCTTHhtYF/2EuQSRhhUYS1u9goGQacYIJazMkJrJB6GNA
joIodIJIH+mpImNY5r4KBIy8e35kI6en72CrNzc4MyHD5MNlDK7NDDQa+CkY
eYI1kF2xABR2gxH9lPkAFQ5F/LuZQC9nM1VhGslEblCCMrD6KUxIFUh8FKgm
mCQhi0Yq34TFUHRS3q9jei//tjr/ykxxQfM0KcmyuKx1ZTOL5VaQjZSkCtOM
M1tVk7HTntvNaCeVkOZU8kD1JQyAiccjf5iCFBd9xxCuIjcVSHtzw1WtTi1w
68Atezeb9hoDGgWAJod4YzXxzT2rlEHMfFA2OoqlnHWJVTeg7sGwlRjikBR0
4ogU1foA81ClD8cptan4AZk/wYDk2oIfQGATDMKQB3g/gbXlnX2ewWpr37Th
orDVAi7rXaB4+L434ulnaEJ2Djcmu80gf9/b5yeMdReglI6yFtu+Rec7G7rP
U+XXaolTHXRPFUQXdLg6hRY5+oSRoZXsNFhzGYxsqrBsCZQtm3DhbQ5qKZT+
ruTCEAo9bzh7CSKbSjfArMcJuLCKDLt6RgFAVAMw+o1ZBO1J8EpUlplwBMUr
sQwtLhKSUHOJNhkuRr6TnRE8U4wmFlpHdIiAOdGNJPL/1/aZmvT/e/seMED/
b8oMxvOhBaPTPDGLRoDrvjgzK5p6go7KQHeIs2XPFgw3k0V73nTwi3jfnfkC
sC84xIl5zeJCXOh6jqV8KvlIaktfkH7KudhttZbDuESsjtzIDoBGPkCjvvih
wAoQq3pbIK0CwRFPqylnYEsY98aFtHYscMOO1ff91fe/eHWNJRi26lKCLYsu
LsAyDKl4BCfHLoSn6A50pMo/PnFcKt4CHqdsiBnzb57joMTFGejq5EeE9CLI
J7kTh7WRpZPNXEnYtcwoWAZohKGfeSZjNS0yFAD+7BvIZGwa4gRYfNyUynoQ
wM/gMWnASGIoSbB6y3XCuB/ACJR8lTrFaIzPS/Q6NSota3tRBNLSzFT0dQBP
8qWHUhoWrGe0Evz1pTK7YYl6ZnBKP4j3i2IYfvmd+zaaZ7WmIcKUawEk+wjJ
Ocl5HMgSv//NNIKDhZcABIOWrpqVopg/EPyFylECEpV8OrLhbBYftud8bQD0
ZrUwAxtjaMIzR7xNOOZ1mF6Z+gSOexM38hZAOdC4y8zGAU9yugOw0F6xi8BA
hwOkgz3cfLC/WJVa4ImLG0wTG3fhmQzWcEJMFZL2SeA4xxXFWV2ZLeayaTdg
0iV1pobhin96884t96ko+wI++NZrHE3BUGg2Rb+Bv1kpU4XUNQUHLWXVuC4U
yJk4FzAY7LiiI43kwHiWVaf5vG7QK4E+9AFxgikuKfJWMooVmSuEU2KblNoi
hWfqHEPCfUHTbMYI2LOm+dsYQxRUI6ti1ZwIbYh1hsP3YBjDM59xpnvUOOvs
VzuVMUFsN3nvnUIrgzHrVx9YjHanhB1gibhOJQ3eZA8YZy9QQAqkGVORKryp
zsrpqoTFMZ+1dplxWNpqQ3cXru74YiAuuO74gh2mi/E4marR7sHjCwqnUvjf
pN1gzylwc2jbmJD9gEDTNMDtzg9KGfreYesmZSgz4GImt01/cE0vV7g61w+w
QcENW3NvLWGDFbsuDP1IrOktyIbCpMYKYnjOVD03MDNXU/5vlk6mAFMcqzkR
f1oYMwd4vY6tKgY6XbJN78W3CY+nY3+2MJtItq+X4qf9/7OmelClQzxSNZRR
8doa6N2bw8y8KQJDqngos5We1oZx0w87AMWgUgtYL1p/C7DeVCtAEwO9U1W5
fMfPOmayR8wQPFAzqNlitv1oV+RstDdxz0gHcgG+zO5nsYAm7WcbD9E2KWGD
bcrszOaaG9nDLLS+djssbvK+dEVNrvI3W24SBYQQk8exCbzuCign3ldXZUw1
qEIr+KZxcD77x58LdqqU3D4wqPi42yJQk4NHLs7Ydgx4r5EIPmq8k7athpOh
k4/qE0UlJl/gRvVN8tdqoc1QtMuq2pAMCBQZ9DaEsDQLYyG15XHujSJ1r6mg
jTDS0IVCRRSB8tCAoA5cZX/H4Da0xmXf5lYHFlMuDgyyyQu1c3WTT+KRT+LR
WhK7wmhCZEBmw8QGuWCSoduH+A3YPr8LliWVw30FzalZBeUJ1a05V5ZaNG1o
QntpLNKX1tElEYZ9Eh5goBFUSn73VuV3I/ntNbYKfjPl8ZB4MsZQM9WG3khr
+oxtf3OVzMqJ3PfJtf+ryGWdtIR9NE3B4UrzaUXp0KbdLLxixB+2nqRfS8yB
izZx5J/jTVSLFXb0OZ8TfIFqgeFuOlBWJJnMnuulWVlT/GvTdjVwTVduVo7H
wBb33E8HF75KOfp1MQhDRvxks2IJ3G7jB3bV+cEzSpa8jiH+rMiLDJbHcs2s
iK+ebtRSaEaaVFuwJtX8L7CGhJVSwJMmdOLtxumJb6Wn7t/3wLl/vxVLsjaL
yWAE6SBWmOzx5IXYSnMjDzh0X5dqa6XTqBsGD4IBI4TKDjCfxo1nDXciqdE1
wWxLeZnCQcJWhdCW9UyZZVfkSHfb1mvCKbZNwp3weRpf+VWiWrlGuC7tYJOy
Jt/gspCrhB4FhB59Y0J3GCRCnFPFvNdSiJ0jO579x5VEXrjBqqOQhR3b+5zc
kg2EDZeJtpk+pDSnRSY1Z9GCDaMPiJ+xm/lxJssrIMEuelLhR3urH43gI1XF
HnWosJVStDYOesF1myd2xxdtfWvUl49IcjtWgLpoFEFl6/Q6aoe9w7U9sn5U
3zgJ0rVBt0KdbVbZD1ilpanYWGwz/Fr25tr3RhU0Ip+YK+HCHn+6FmV7XVIf
xxcfPUHvqYFG5t9h1MHA2BN4f9uaocapNp1nDmYblWn8pik4lthINrdZE2UP
ra883MzfNZBa0/DLpnAzHAzYXCEGaTfBeTtZP4j3SFZQV8nswpW3mqZwOJEc
KtLqqcuiRnXe8RRWzlzU+VVeLPIAr+6zL/7ShTn4OIEbvQpgWWCvGZoyWGk7
mTYBtCpo07ItSCW2OXJ9EbVF+k0CbImRI4t+UgaK1iwj7bFwnTDmtos03/BU
wzXGGvnBXCZFYjwp5QILjXWvd//+kSF7QRUX6tM8Kyi+Asp0UwLE9J9qUnC+
xOZqTEo6+EnHrhQIqz3OXB241KXtqdaMKNPaN0RYnZzTDXhduTbc5Ka0igGe
YHfaogV6AN0dYDuDubJiksYI2jMwb9c9A7IU40J3QC7BR3N6DOdHHGnh17KK
p0HJAHUqbkbRYH1icLA+aze4FbMSS4J9LQFc7vW0ZzKdqaQFqXNe07KVk3Jx
Ay+S39bLpv+e2zTsyWiKIE6Ojl94VydsN+V4LSD2Ro/77FYAJV8Uc4UFWwcb
HoAJ+5Q6DyuvwBrQ8KOmnLtxU2ZghCOVVraO3alwho0XaSKGXGxtHkEda8q0
uObEWeaw9q8jb0PDrsTsJOXG56osMi52biuHwGN8upEdJlQheZfZjLQSG88F
dkwwi+nQS/fV+8DZQEZio0UD1tJqQZhtq52tnKBtEw7w6AVKM8XCNG17jdV1
kV0rl5nmXg6vlSmiDg7u38CzaFIAUdOe1KnUXDcKuAkYo67zUhXxJKd9Kma1
dRbRrzvTGzA+2HzYgZEQvLgw4K0Je+nbGbVzAW4JWc+qLWHUzkwPKMJXXtuy
LLyAJsQ4t1gynjnG7aWoOxDs9ZxzjL8CpR7kk6Qfpw1CxRYE4mGsEK+MYCMP
xcks05fDkV0KPGH+YGHSMXmr0JO9ggTbWcBGwQYNyoRgE2udU9ijnphCLFdo
bnjIxAS0V4aZYiWaicqYVDyZ7ben4MnBIvlMqbJ69tkGQVzinT8nv/Dkk6TE
Zivq1crjw6QTRXIxzbtKx9a5rVz12uW8NpFOH7rvgqS/BZPKAdAx8b76m8Lq
XMsui+24sdjegSAqU9uW46eRuilDBYkMrU12mqrcRdFqGqL0lEmamVoqlHz2
qhGs/GLmYKMIG24Hpmvd3nbg32Ywrksax9OKMtVXKIdBlWXFMihQ7KpquqzT
rLrjlTiGUc+98oyuCgPkTf6Jo2pkG6j5dLU/feDpJOrf4GSlG+vlxzbmDE3i
a00WtBWZ+QbrnNNM4TpDvqCr6efYUA7KwoiM9s6+/QHWBeKluGnu/FPkL0aU
ifVSiHmMpc7i5clrfw87NtM/l2npB9Bs89nAISG0C1Zw1U4Q4kJNnY2xESkE
h/ek2UsDAVmaW+HoMVs/4N1mRhtccP26qe6llIXLFLuStYJuNqHY7VbDYltc
GN0hAgauJhN7QlWMdZDTgFEDV3/13iheoI2JDUOtlAuLi4IaF6/65iasOQpj
MnHzDIsHbocrFVUs5y7DiqB4c5KBQElAqlq1BS1SN6xs0XMhrmVWm3t2Ll6q
JUF9Aobj8sIFPLt43/hpNn9RGAC5p2pK3YnirPDDKZ3rGhGJbUlxpbCJoTRp
H7xsGXkM9GsBtvrof/YeRntfoHyC5g1bad6W9ivVWlya1VVddtMu4wpJxQeo
68F2QdEFP8EYBevxWnHbZ6fQ+lLcY86xQTuXt4fZHkvjYBkOvlsbny5HXNkJ
CK8KL94drJkwEIJkbs3xgFde8iOca0mdm6TIZkVCBcIkFl3Mx122ZTLvxM6O
5rZCwtqa7Y4/70T2Q2q3CujESVOPIcuSdKQX3e7igbDSrosTXAkXbbcrhecb
rKzey3RC18B9jVJbXbOjksHdetPs0q/eWL/OXU79bQe0bQ6us7jWXk/BEZa7
1FnitaJ1d3+/vUxizWULmlziLy24xOtcvngl4ZxeSmJ5/qdz8BqXzgdrbdmq
D0a0HgwRgMGJejQkm3iO7dBFttjxucVvDd52lxmwJ37sPYQT13rNk0hHvh6H
Dw4asNzrjZZnpywNJFM7V4H30XBj0HWRJnSTzNLWPGkvSG6Wo7uyKB1Wz919
DbJ1gMJyj5bPtuCaUXzuy3mFvehbSIniPEyH+SVdDcZI8kk2raMm7PadeB2f
wNBY7Y32m52ZOpyO4SYGRyE4b3gVeLJkv3vmpbuFBv2PRcp3SgRwknfcIm94
1wdBQkojxP/KoWl3XNJONtEb1OCtUNs+DromsC/uKF06UgNNS3vLHhRcRm19
JNRmWKaOrpEpNzgxOe2N6b/m8gguKAmqge31Kq3KZgp1+k6zlf4LacIj5m4T
Ftnmcp8t2wG3PKSPeY8mWkdVw50XId39ctLwtm/vJqR7FlvrTGdTrP3y+LnB
XmM7ExIxq7xctZ1baGkwSUldFaI/0JUYXZqUSiVRPS+MnDH8RWb2WKlEW0OX
bt8ycgR7Vu0FmnVu7/lYe6Oxiaqz/UO3GbBwMaPtdjrqt6l7xCJ8++Sof/zi
xBRtu7Ax1dxxdXQhLl4A+lBY4dUgF5squw97vf+FP+6dDJv+7N5p1F/vNOp6
zai35y9F9G9C+BsQ/yr4+sdzwsg3hOK7CP/8mzhGSqqI598eDof9f4DHvw7R
9k9r8YHYIrZWyRb8uPVtIfG5nC1g+Iu5HNDQIvkLe/OcJfv/rP3zpZD8Trdv
BMluB91eS3yfwO9n9a6Pk/jtdbpVNolx57AH9jkE3ewyW/5iFaTNuWGJxHye
sSNMepajZY0CwrhfqE/ZfeBsMs2qqWHaWEjKpB5oWkEFG6DZYmULrXO8I2XO
FVBN255orol37wVAaHAW62FsmyqQtLIJPL4fy78mmW60nUwrMCjRJ8KUIePB
tfGvxQPp08AYaW7z0O6NKw482PwFJp7evnt+4W4tYMOMLpNbkJXQmPHO3gCE
cmM3QBQdvX0WGdsKA4z00ZH9qO+Z4xRDozvUUNODFXMRsM9F54ylspfo4A3d
rcn5dQFgZBclJihgk3MqkR+3SZsag4ftpuamLyKZZ3fwxfaADzI99FM2cbDR
NbiIxmOH9h7oOV6MBZjdL5mC2z4zADHGeKWZ40m6kfQTZRNL+gXNWHP36ozF
kBnbD+5Y81gSb/NAWtOuAvMUWwupnbDTJv1UlKFBCiO/yhDdNrcrwynCu45h
1iRp7PFWyQdHT3X/722mwib/zvbp8NcKtAbcL5VmP9f4Lr7fjCwLXCZuPqW/
EILWEl5BKt2043WshsxKz5CPGdup1nBK02D0Tf2rp4I4FHc8VxKrRw7FxfPt
qz3x178K+HvU7198GZNy9bNl1KC91lakoNfKAaquJlzGSRJUoLe38886xMPv
3tNv0qS6y+P/gFa4F1Hb7D31xDdwlf7eDgYmMj5OVP7ljiE+fetuN0LwO7/+
7jX+Yz1+J6/Rz8XdzR3yM7BrPKCce8zRD4rQ8L84a3whutt9YVpH0lmaydKG
z6Vumt7ZhXJPmSq+yt7UBpAZr8Z3kPoO1KF4NpEOnsaAo+o+ujq07bbwG6zW
eC7bLZekzz6JrXhdcWYCi8zdyoGse/vlG2iwMRg34SUeriNxjbGz2oPcWkg7
ujtrXAavGzJf33LTx0DkcsZvgMB5rD11sXshtk5fvt7qQmJozf9uE/0mBcZd
Hv8H1DF3tok6DYffI8ren9+swbdqG/x/INrfxTZo2o45tuEKdbwLZKhRL7hS
d8dUkKCC4LuKWy9ivKQad0ozGzWfUqevbe32i7g4euQuhgBxrNk6aV0DvLlY
KGgEEx+o8m3zrWNBL53r94r5TUu3JF1NeKEpYqQwm20rMI3vnfd+2TeEcBrc
YSQYw/ug6AY18UjsuN102ZjbytpluenBdYC7GAZf9d8RyaAQ+f37bwGRhS6w
9FtmhNr365aQWalk4seOELF8qRmu10Qn1948vY262BQNmTBhn6oEN20eUZTm
tXv9j+Etbl3EeDC+e8NUja2fxb66Q7fK+9dH0DqQhiYhvoxO38J6XPxz261t
V0rNb4PGVeXY4CEVebk2WLBgsDaDOiRgTt33Gzqbcro7AOP4depugqWgmikD
pVHWIuYuHXwBGQBqbn/hCht+rXOb+e1Le6fKhdnv33/N7UGwyKj7fkLLjJWK
p3mKZT8oNu6M+G5eguXoxm5CnYzhu1mRoGE+6wSnFfR0gWB3wYW9vNn03GEK
aPUiP/LQgG34JSq308J7VyrMSbc/k6i1iw28iPQGaDE7ZH2C5nAu5FI/9d+J
MDCWfKmrNT6FqSz37X/jQYzwvrowlo++k6lAw3e11pcaS7a6oQsEsNe3tX7B
/bJzQeCof/mnKLonjmDhNOGXjpgeHHNb4fs3x29AX+JFhqfPzp4Je+u8/f4M
cEjXHJ5bh7g9AplxJv9SBN6y/0pjfhNR84bP4Hl+2y/oYCz4bO7WJ01INWKf
B11xdqOvXFJhw0tSLlUwWv42K8Cs8qa2N3MWvdt38N4BuovNwExYtveCNK/+
qTJFBsd2+wUfLGS8V6sAkE0CqT+0l3+bFwf7LeR4iUOGoo06bUC3YZGuxnbU
RFDVIUlk7w0MLh5BJYDPKOnqPuz13uRqDTMI27ZoXwHv1kmp7JRk6ab75d25
tpraVgFaimF8RCPhCSZZVWhHiW0bSqEX8tqFHIz2KfMayNZjbzECU6PCpcvN
T6xq0N6d+sVYe3ELoI57U83x8x/d6zyO33x4dYqvHegLUwg6qxmp/lXi8B3l
atoXapr2F1RPW+5NkrzvrdXBzcs4tzHW8wZkRrby1mP6Lnpz/KLfD16mLcVW
80pMt8SLYFa6Ng87jzSXuq5MfYzTcsbR9DhTw75wnTOtTeAQ04Tq9QiuCw6N
EKEv337A8g+/BMEdVMzu8fVhM5mZK1mxh7e9MX9TWQoqB+DmrCYTnSp9t+ml
v1QY7d594Skart+m99+GbwDFwoN3xOPuvWf86hK/RoBfrwsyKXfHzb66yUIG
p9cM9npZ7EtHveQ/3R3YevEISR7sk2i/kMSquaQumZ95uuC1oQOyhrrfuhtT
hE836gsv/c6n9HY2k8dlmRovm9Jp1w0STLWQtpvavSVz/bok471NkzwDundP
3dlwY4xL2zDQXM1LeH8u0wwJ3OvRlVDBS1fWiXrzpvI8qsAtRZt/zJMIamE8
pF62aZHTZTnmeigs1cZRJPUxUWxf/kSwtV7VansccjUBWZ2aSwYv7Y0AQhwX
7JuEY3wozBv4VqLfwFrfC/8GbJZe7ll6HR5ZccikpbT34n6PjMXyHDmBrpuQ
7UURo6Ai0NfOVDLhCwfsS4dAMUiDukmJzjjd3QHmXlxrbvWnfZtO8QwONt6Y
O/Det3M0xff/FRjwFh+KAtjnNUhvMIdmcwnn1BhkcCa9VjT7dgtD/fZ7pPCJ
djl+nDpTJHy3GSrV1L7uAh9T+LowDvj7VlIs7etaVnaH93GA86rIyED4PuCb
9KbFHNkheNnYeTGuuFsgF6+xJR+TAf+RqsUANpylsGqeSrpb7N9lXuMrNka7
e0/wnXpRRK0zvf8DREJZb9OYAAA=

-->

</rfc>

