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

<t>Hybrid key exchange refers to using multiple key exchange algorithms simultaneously and combining the result with the goal of providing security even if a way is found to defeat the encryption for all but one of the component algorithms.  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>
    </abstract>
  </front>
  <middle>
    <?line 200?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document gives a construction for hybrid key exchange in TLS 1.3.  The overall design approach is a simple, "concatenation"-based approach: each hybrid key exchange combination should be viewed as a single new key exchange method, negotiated and transmitted using the existing TLS 1.3 mechanisms.</t>
      <t>This document does not propose specific post-quantum mechanisms; see <xref target="scope"/> for more on the scope of this document.</t>
      <section anchor="revision-history">
        <name>Revision history</name>
        <ul empty="true">
          <li>
            <t><strong>RFC Editor's Note:</strong> Please remove this section prior to publication of a final version of this document.</t>
          </li>
        </ul>
        <t>Earlier versions of this document categorized various design decisions one could make when implementing hybrid key exchange in TLS 1.3.</t>
        <ul spacing="normal">
          <li>
            <t>draft-ietf-tls-hybrid-design-12:
            </t>
            <ul spacing="normal">
              <li>
                <t>Editorial changes</t>
              </li>
              <li>
                <t>Change Kyber references to ML-KEM references</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-10:
            </t>
            <ul spacing="normal">
              <li>
                <t>Clarifications on shared secret and public key generation</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-09:
            </t>
            <ul spacing="normal">
              <li>
                <t>Remove IANA registry requests</t>
              </li>
              <li>
                <t>Editorial changes</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-09:
            </t>
            <ul spacing="normal">
              <li>
                <t>Removal of TBD hybrid combinations using Kyber512 or secp384r1</t>
              </li>
              <li>
                <t>Editorial changes</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-08:
            </t>
            <ul spacing="normal">
              <li>
                <t>Add reference to ECP256R1Kyber768 and KyberDraft00 drafts</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-07:
            </t>
            <ul spacing="normal">
              <li>
                <t>Editorial changes</t>
              </li>
              <li>
                <t>Add reference to X25519Kyber768 draft</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-06:
            </t>
            <ul spacing="normal">
              <li>
                <t>Bump to version -06 to avoid expiry</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-05:
            </t>
            <ul spacing="normal">
              <li>
                <t>Define four hybrid key exchange methods</t>
              </li>
              <li>
                <t>Updates to reflect NIST's selection of Kyber</t>
              </li>
              <li>
                <t>Clarifications and rewordings based on working group comments</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-04:
            </t>
            <ul spacing="normal">
              <li>
                <t>Some wording changes</t>
              </li>
              <li>
                <t>Remove design considerations appendix</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-03:
            </t>
            <ul spacing="normal">
              <li>
                <t>Remove specific code point examples and requested codepoint range for hybrid private use</t>
              </li>
              <li>
                <t>Change "Open questions" to "Discussion"</t>
              </li>
              <li>
                <t>Some wording changes</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-02:
            </t>
            <ul spacing="normal">
              <li>
                <t>Bump to version -02 to avoid expiry</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-01:
            </t>
            <ul spacing="normal">
              <li>
                <t>Forbid variable-length secret keys</t>
              </li>
              <li>
                <t>Use fixed-length KEM public keys/ciphertexts</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-ietf-tls-hybrid-design-00:
            </t>
            <ul spacing="normal">
              <li>
                <t>Allow key_exchange values from the same algorithm to be reused across multiple KeyShareEntry records in the same ClientHello.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-stebila-tls-hybrid-design-03:
            </t>
            <ul spacing="normal">
              <li>
                <t>Add requirement for KEMs to provide protection against key reuse.</t>
              </li>
              <li>
                <t>Clarify FIPS-compliance of shared secret concatenation method.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-stebila-tls-hybrid-design-02:
            </t>
            <ul spacing="normal">
              <li>
                <t>Design considerations from draft-stebila-tls-hybrid-design-00 and draft-stebila-tls-hybrid-design-01 are moved to the appendix.</t>
              </li>
              <li>
                <t>A single construction is given in the main body.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-stebila-tls-hybrid-design-01:
            </t>
            <ul spacing="normal">
              <li>
                <t>Add (Comb-KDF-1) and (Comb-KDF-2) options.</t>
              </li>
              <li>
                <t>Add two candidate instantiations.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>draft-stebila-tls-hybrid-design-00: Initial version.</t>
          </li>
        </ul>
      </section>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

<t>For the purposes of this document, it is helpful to be able to divide cryptographic algorithms into two classes:</t>
        <ul spacing="normal">
          <li>
            <t>"Traditional" algorithms: Algorithms that are widely deployed today, but may be deprecated in the future.  In the context of TLS 1.3, examples of traditional key exchange algorithms include elliptic curve Diffie-Hellman using secp256r1 or x25519, or finite-field Diffie-Hellman.</t>
          </li>
          <li>
            <t>"Next-generation" (or "next-gen") algorithms: Algorithms that are not yet widely deployed, but may eventually be widely deployed.  An additional facet of these algorithms may be that the cryptographic community has less confidence in their security due to them being relatively new or less studied.  This includes "post-quantum" algorithms.</t>
          </li>
        </ul>
        <t>"Hybrid" key exchange, in this context, means the use of two (or more) key exchange algorithms based on different cryptographic assumptions, e.g., one traditional algorithm and one next-gen algorithm, with the purpose of the final session key being secure as long as at least one of the component key exchange algorithms remains unbroken.
When one of the algorithms is traditional and one of them is post-quantum, this is a Post-Quantum Traditional Hybrid Scheme <xref target="PQUIP-TERM"/>; while this is the initial use case for this document, the document is not limited to this case.
This document uses the term "component" algorithms to refer to the algorithms combined in a hybrid key exchange.</t>
        <t>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 component 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 this document opts 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 neither Diffie-Hellman-based nor a group.</t>
      </section>
      <section anchor="motivation">
        <name>Motivation for use of hybrid key exchange</name>
        <t>A hybrid key exchange algorithm allows early adopters eager for post-quantum security to have the potential of post-quantum security (possibly from a less-well-studied algorithm) while still retaining at least the security currently offered by traditional algorithms.  They may even need to retain traditional algorithms due to regulatory constraints, for example FIPS compliance.</t>
        <t>Ideally, one would not use hybrid key exchange: one would have confidence in a single algorithm and parameterization that will stand the test of time.  However, this may not be the case in the face of quantum computers and cryptanalytic advances more generally.</t>
        <t>Many (though not all) post-quantum algorithms currently under consideration are relatively new; they have not been subject to the same depth of study as RSA and finite-field or elliptic curve Diffie-Hellman, and thus the security community does not necessarily have as much confidence in their fundamental security, or the concrete security level of specific parameterizations.</t>
        <t>Moreover, it is possible that after next-generation algorithms are defined, and for a period of time thereafter, conservative users may not have full confidence in some algorithms.</t>
        <t>Some users may want to accelerate adoption of post-quantum cryptography due to the threat of retroactive decryption: if a cryptographic assumption is broken due to the advent of a quantum computer or some other cryptanalytic breakthrough, confidentiality of information can be broken retroactively by any adversary who has passively recorded handshakes and encrypted communications.  Hybrid key exchange enables potential security against retroactive decryption while not fully abandoning traditional cryptosystems.</t>
        <t>As such, there may be users for whom hybrid key exchange is an appropriate step prior to an eventual transition to next-generation algorithms. Users should consider the confidence they have in each hybrid component to assess that the hybrid system meets the desired motivation.</t>
      </section>
      <section anchor="scope">
        <name>Scope</name>
        <t>This document focuses on hybrid ephemeral key exchange in TLS 1.3 <xref target="TLS13"/>.  It intentionally does not address:</t>
        <ul spacing="normal">
          <li>
            <t>Selecting which next-generation algorithms to use in TLS 1.3, or algorithm identifiers or encoding mechanisms for next-generation algorithms.</t>
          </li>
          <li>
            <t>Authentication using next-generation algorithms.  While quantum computers could retroactively decrypt previous sessions, session authentication cannot be retroactively broken.</t>
          </li>
        </ul>
      </section>
      <section anchor="goals">
        <name>Goals</name>
        <t>The primary goal of a hybrid key exchange mechanism is to facilitate the establishment of a shared secret which remains secure as long as as one of the component key exchange mechanisms remains unbroken.</t>
        <t>In addition to the primary cryptographic goal, there may be several additional goals in the context of TLS 1.3:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Backwards compatibility:</strong> Clients and servers who are "hybrid-aware", i.e., compliant with whatever hybrid key exchange standard is developed for TLS, should remain compatible with endpoints and middle-boxes that are not hybrid-aware.  The three scenarios to consider are:
            </t>
            <ol spacing="normal" type="1"><li>
                <t>Hybrid-aware client, hybrid-aware server: These parties should establish a hybrid shared secret.</t>
              </li>
              <li>
                <t>Hybrid-aware client, non-hybrid-aware server:  These parties should establish a non-hybrid shared secret (assuming the hybrid-aware client is willing to downgrade to non-hybrid-only).</t>
              </li>
              <li>
                <t>Non-hybrid-aware client, hybrid-aware server:  These parties should establish a non-hybrid shared secret (assuming the hybrid-aware server is willing to downgrade to non-hybrid-only).</t>
              </li>
            </ol>
            <t>
Ideally backwards compatibility should be achieved without extra round trips and without sending duplicate information; see below.</t>
          </li>
          <li>
            <t><strong>High performance:</strong> Use of hybrid key exchange should not be prohibitively expensive in terms of computational performance.  In general this will depend on the performance characteristics of the specific cryptographic algorithms used, and as such is outside the scope of this document.  See <xref target="PST"/> for preliminary results about performance characteristics.</t>
          </li>
          <li>
            <t><strong>Low latency:</strong> Use of hybrid key exchange should not substantially increase the latency experienced to establish a connection.  Factors affecting this may include the following.
            </t>
            <ul spacing="normal">
              <li>
                <t>The computational performance characteristics of the specific algorithms used.  See above.</t>
              </li>
              <li>
                <t>The size of messages to be transmitted.  Public key and ciphertext sizes for post-quantum algorithms range from hundreds of bytes to over one hundred kilobytes, so this impact can be substantial.  See <xref target="PST"/> for preliminary results in a laboratory setting, and <xref target="LANGLEY"/> for preliminary results on more realistic networks.</t>
              </li>
              <li>
                <t>Additional round trips added to the protocol.  See below.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>No extra round trips:</strong> Attempting to negotiate hybrid key exchange should not lead to extra round trips in any of the three hybrid-aware/non-hybrid-aware scenarios listed above.</t>
          </li>
          <li>
            <t><strong>Minimal duplicate information:</strong> Attempting to negotiate hybrid key exchange should not mean having to send multiple public keys of the same type.</t>
          </li>
        </ul>
        <t>The tolerance for lower performance / increased latency due to use of hybrid key exchange will depend on the context and use case of the systems and the network involved.</t>
      </section>
    </section>
    <section anchor="kems">
      <name>Key encapsulation mechanisms</name>
      <t>This document models key agreement as key encapsulation mechanisms (KEMs), which consist of three algorithms:</t>
      <ul spacing="normal">
        <li>
          <t><tt>KeyGen() -&gt; (pk, sk)</tt>: A probabilistic key generation algorithm, which generates a public key <tt>pk</tt> and a secret key <tt>sk</tt>.</t>
        </li>
        <li>
          <t><tt>Encaps(pk) -&gt; (ct, ss)</tt>: A probabilistic encapsulation algorithm, which takes as input a public key <tt>pk</tt> and outputs a ciphertext <tt>ct</tt> and shared secret <tt>ss</tt>.</t>
        </li>
        <li>
          <t><tt>Decaps(sk, ct) -&gt; ss</tt>: A decapsulation algorithm, which takes as input a secret key <tt>sk</tt> and ciphertext <tt>ct</tt> and outputs a shared secret <tt>ss</tt>, or in some cases a distinguished error value.</t>
        </li>
      </ul>
      <t>The main security property for KEMs is indistinguishability under adaptive chosen ciphertext attack (IND-CCA2), which means that shared secret values should be indistinguishable from random strings even given the ability to have other arbitrary ciphertexts decapsulated.  IND-CCA2 corresponds to security against an active attacker, and the public key / secret key pair can be treated as a long-term key or reused (see for example <xref target="KATZ"/> for definitions of IND-CCA2 and IND-CPA security).  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 for example <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 <bcp14>MUST</bcp14> 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 <bcp14>MUST</bcp14> 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 <bcp14>MUST NOT</bcp14> 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.  (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>
      </section>
      <section anchor="construction-transmitting">
        <name>Transmitting public keys and ciphertexts</name>
        <t>This document takes 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 <bcp14>MUST</bcp14> 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 <bcp14>MUST</bcp14> 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 <bcp14>MUST</bcp14> be generated independently.''  In the context of this document, since the same algorithm may appear in multiple named groups, this document relaxes 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 <bcp14>MUST</bcp14> be generated independently. Explicitly, if the <tt>NamedGroup</tt> is the hybrid key exchange <tt>MyECDHMyPQKEM</tt>, the <tt>KeyShareEntry.key_exchange</tt> values <bcp14>MUST</bcp14> 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 this document also takes 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, this document does not add any additional structure (length fields) in the concatenation procedure: for both the traditional groups and post quantum KEMs, the shared secret output length is fixed for a specific elliptic curve or parameter set.</t>
        <t>In other words, if the <tt>NamedGroup</tt> is <tt>MyECDHMyPQKEM</tt>, the shared secret is calculated as</t>
        <artwork><![CDATA[
concatenated_shared_secret = MyECDH.shared_secret || MyPQKEM.shared_secret
]]></artwork>
        <t>and inserted into the TLS 1.3 key schedule in place of the (EC)DHE shared secret, as shown in <xref target="fig-key-schedule"/>.</t>
        <figure anchor="fig-key-schedule">
          <name>Key schedule for hybrid key exchange</name>
          <artwork><![CDATA[
                                    0
                                    |
                                    v
                      PSK ->  HKDF-Extract = Early Secret
                                    |
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
                                    |
                                    v
                              Derive-Secret(., "derived", "")
                                    |
                                    v
concatenated_shared_secret -> HKDF-Extract = Handshake Secret
^^^^^^^^^^^^^^^^^^^^^^^^^^          |
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
                                    |
                                    v
                              Derive-Secret(., "derived", "")
                                    |
                                    v
                         0 -> HKDF-Extract = Master Secret
                                    |
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
                                    +-----> Derive-Secret(...)
]]></artwork>
        </figure>
        <t><strong>FIPS-compliance of shared secret concatenation.</strong>
The US National Institute of Standards and Technology (NIST) documents <xref target="NIST-SP-800-56C"/> and <xref target="NIST-SP-800-135"/> give recommendations for key derivation methods in key exchange protocols.  Some hybrid combinations may combine the shared secret from a NIST-approved algorithm (e.g., ECDH using the nistp256/secp256r1 curve) with a shared secret from a non-approved algorithm (e.g., post-quantum).  <xref target="NIST-SP-800-56C"/> lists simple concatenation as an approved method for generation of a hybrid shared secret in which one of the constituent shared secret is from an approved method.</t>
      </section>
    </section>
    <section anchor="discussion">
      <name>Discussion</name>
      <t><strong>Larger public keys and/or ciphertexts.</strong>
The <tt>key_exchange</tt> field in the <tt>KeyShareEntry</tt> struct in <xref target="construction-transmitting"/> limits public keys and ciphertexts to 2^16-1 bytes.  Some post-quantum KEMs have larger public keys and/or ciphertexts; for example, Classic McEliece's smallest parameter set has public key size 261,120 bytes.  However, all defined parameter sets for ML-KEM <xref target="NIST-FIPS-203"/> have public keys and ciphertexts that fall within the TLS constraints.</t>
      <t><strong>Duplication of key shares.</strong>
Concatenation of public keys in the <tt>key_exchange</tt> field in the <tt>KeyShareEntry</tt> struct as described in <xref target="construction-transmitting"/> can result in sending duplicate key shares.  For example, if a client wanted to offer support for two combinations, say "SecP256r1MLKEM768" and "X25519MLKEM768" <xref target="ECDHE-MLKEM"/>, it would end up sending two ML-KEM-768 public keys, since the <tt>KeyShareEntry</tt> for each combination contains its own copy of a ML-KEM-768 key.  This duplication may be more problematic for post-quantum algorithms which have larger public keys.  On the other hand, if the client wants to offer, for example "SecP256r1MLKEM768" and "secp256r1" (for backwards compatibility), there is relatively little duplicated data (as the secp256r1 keys are comparatively small).</t>
      <t><strong>Failures.</strong>
Some post-quantum key exchange algorithms, including ML-KEM <xref target="NIST-FIPS-203"/>, have non-zero probability of failure, meaning two honest parties may derive different shared secrets.  This would cause a handshake failure.  ML-KEM has a cryptographically small failure rate; if other algorithms are used, implementers should be aware of the potential of handshake failure. Clients <bcp14>MAY</bcp14> 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 registry <xref target="IANATLS"/> for the hybrid combinations defined following this document.
These assignments should be made in a range that is distinct from the Finite Field Groups range.
For these entries in the TLS Supported Groups registry, the "Recommended" column <bcp14>SHOULD</bcp14> be "N" and the "DTLS-OK" column <bcp14>SHOULD</bcp14> be "Y".</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 <bcp14>MUST</bcp14> explicitly be designed to be secure in the event that the public key is reused, such as achieving IND-CCA2 security or having a transform like the Fujisaki-Okamoto transform applied.  ML-KEM has such security properties.  However, some other post-quantum KEMs designed to be IND-CPA-secure (i.e., without countermeasures such as the FO transform) are completely insecure under public key reuse; for example, some lattice-based IND-CPA-secure KEMs are vulnerable to attacks that recover the private key after just a few thousand samples <xref target="FLUHRER"/>.</t>
      <t><strong>Public keys, ciphertexts, and secrets should be constant length.</strong>
This document assumes that the length of each public key, ciphertext, and shared secret is fixed once the algorithm is fixed.  This is the case for ML-KEM.</t>
      <t>Note that variable-length secrets are, generally speaking, dangerous.  In particular, when using key material of variable length and processing it using hash functions, a timing side channel may arise.  In broad terms, when the secret is longer, the hash function may need to process more blocks internally.  In some unfortunate circumstances, this has led to timing attacks, e.g., the Lucky Thirteen <xref target="LUCKY13"/> and Raccoon <xref target="RACCOON"/> attacks.</t>
      <t>Furthermore, <xref target="AVIRAM"/> identified a risk of using variable-length secrets when the hash function used in the key derivation function is no longer collision-resistant.</t>
      <t>If concatenation were to be used with values that are not fixed-length, a length prefix or other unambiguous encoding would need to be used to ensure that the composition of the two values is injective and requires a mechanism different from that specified in this document.</t>
      <t>Therefore, this specification <bcp14>MUST</bcp14> only be used with algorithms which have fixed-length shared secrets (after the variant has been fixed by the algorithm identifier in the <tt>NamedGroup</tt> negotiation in <xref target="construction-negotiation"/>).</t>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>These ideas have grown from discussions with many colleagues, including Christopher Wood, Matt Campagna, Eric Crockett, Deirdre Connolly, authors of the various hybrid Internet-Drafts and implementations cited in this document, and members of the TLS working group.  The immediate impetus for this document came from discussions with attendees at the Workshop on Post-Quantum Software in Mountain View, California, in January 2019.  Daniel J. Bernstein and Tanja Lange commented on the risks of reuse of ephemeral public keys.  Matt Campagna and the team at Amazon Web Services provided additional suggestions.  Nimrod Aviram proposed restricting to fixed-length secrets.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="TLS13">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="AVIRAM" target="https://mailarchive.ietf.org/arch/msg/tls/F4SVeL2xbGPaPB2GW_GkBbD_a5M/">
          <front>
            <title>[TLS] Combining Secrets in Hybrid Key Exchange in TLS 1.3</title>
            <author initials="" surname="Nimrod Aviram">
              <organization/>
            </author>
            <author initials="" surname="Benjamin Dowling">
              <organization/>
            </author>
            <author initials="" surname="Ilan Komargodski">
              <organization/>
            </author>
            <author initials="" surname="Kenny Paterson">
              <organization/>
            </author>
            <author initials="" surname="Eyal Ronen">
              <organization/>
            </author>
            <author initials="" surname="Eylon Yogev">
              <organization/>
            </author>
            <date year="2021" month="September" day="01"/>
          </front>
        </reference>
        <reference anchor="BCNS15">
          <front>
            <title>Post-Quantum Key Exchange for the TLS Protocol from the Ring Learning with Errors Problem</title>
            <author fullname="Joppe W. Bos" initials="J." surname="Bos">
              <organization/>
            </author>
            <author fullname="Craig Costello" initials="C." surname="Costello">
              <organization/>
            </author>
            <author fullname="Michael Naehrig" initials="M." surname="Naehrig">
              <organization/>
            </author>
            <author fullname="Douglas Stebila" initials="D." surname="Stebila">
              <organization/>
            </author>
            <date month="May" year="2015"/>
          </front>
          <seriesInfo name="2015 IEEE Symposium on Security and Privacy" value="pp. 553-570"/>
          <seriesInfo name="DOI" value="10.1109/sp.2015.40"/>
          <refcontent>IEEE</refcontent>
        </reference>
        <reference anchor="BERNSTEIN">
          <front>
            <title>Post-Quantum Cryptography</title>
            <author>
              <organization/>
            </author>
            <date year="2009"/>
          </front>
          <seriesInfo name="DOI" value="10.1007/978-3-540-88702-7"/>
          <seriesInfo name="ISBN" value="[&quot;9783540887010&quot;, &quot;9783540887027&quot;]"/>
          <refcontent>Springer Berlin Heidelberg</refcontent>
        </reference>
        <reference anchor="BINDEL">
          <front>
            <title>Hybrid Key Encapsulation Mechanisms and Authenticated Key Exchange</title>
            <author fullname="Nina Bindel" initials="N." surname="Bindel">
              <organization/>
            </author>
            <author fullname="Jacqueline Brendel" initials="J." surname="Brendel">
              <organization/>
            </author>
            <author fullname="Marc Fischlin" initials="M." surname="Fischlin">
              <organization/>
            </author>
            <author fullname="Brian Goncalves" initials="B." surname="Goncalves">
              <organization/>
            </author>
            <author fullname="Douglas Stebila" initials="D." surname="Stebila">
              <organization/>
            </author>
            <date year="2019"/>
          </front>
          <seriesInfo name="Lecture Notes in Computer Science" value="pp. 206-226"/>
          <seriesInfo name="DOI" value="10.1007/978-3-030-25510-7_12"/>
          <seriesInfo name="ISBN" value="[&quot;9783030255091&quot;, &quot;9783030255107&quot;]"/>
          <refcontent>Springer International Publishing</refcontent>
        </reference>
        <reference anchor="CAMPAGNA">
          <front>
            <title>Hybrid Post-Quantum Key Encapsulation Methods (PQ KEM) for Transport Layer Security 1.2 (TLS)</title>
            <author fullname="Matt Campagna" initials="M." surname="Campagna">
              <organization>AWS</organization>
            </author>
            <author fullname="Eric Crockett" initials="E." surname="Crockett">
              <organization>AWS</organization>
            </author>
            <date day="2" month="September" year="2021"/>
            <abstract>
              <t>   Hybrid key exchange refers to executing two independent key exchanges
   and feeding the two resulting shared secrets into a Pseudo Random
   Function (PRF), with the goal of deriving a secret which is as secure
   as the stronger of the two key exchanges.  This document describes
   new hybrid key exchange schemes for the Transport Layer Security 1.2
   (TLS) protocol.  The key exchange schemes are based on combining
   Elliptic Curve Diffie-Hellman (ECDH) with a post-quantum key
   encapsulation method (PQ KEM) using the existing TLS PRF.

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-kiefer-tls-ecdhe-sidh-00"/>
        </reference>
        <reference anchor="LANGLEY" target="https://www.imperialviolet.org/2018/04/11/pqconftls.html">
          <front>
            <title>Post-quantum confidentiality for TLS</title>
            <author initials="A." surname="Langley">
              <organization/>
            </author>
            <date year="2018" month="April" day="11"/>
          </front>
        </reference>
        <reference anchor="LUCKY13">
          <front>
            <title>Lucky Thirteen: Breaking the TLS and DTLS Record Protocols</title>
            <author fullname="N. J. Al Fardan" initials="N." surname="Al Fardan">
              <organization/>
            </author>
            <author fullname="K. G. Paterson" initials="K." surname="Paterson">
              <organization/>
            </author>
            <date month="May" year="2013"/>
          </front>
          <seriesInfo name="2013 IEEE Symposium on Security and Privacy" value="pp. 526-540"/>
          <seriesInfo name="DOI" value="10.1109/sp.2013.42"/>
          <refcontent>IEEE</refcontent>
        </reference>
        <reference anchor="NIELSEN">
          <front>
            <title>Quantum Computation and Quantum Information</title>
            <author initials="M. A." surname="Nielsen">
              <organization/>
            </author>
            <author initials="I. L." surname="Chuang">
              <organization/>
            </author>
            <date year="2000"/>
          </front>
          <seriesInfo name="Cambridge University Press" value=""/>
        </reference>
        <reference anchor="NIST" target="https://www.nist.gov/pqcrypto">
          <front>
            <title>Post-Quantum Cryptography</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="NIST-FIPS-203">
          <front>
            <title>Module-lattice-based key-encapsulation mechanism standard</title>
            <author>
              <organization/>
            </author>
            <date month="August" year="2024"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.fips.203"/>
          <refcontent>National Institute of Standards and Technology (U.S.)</refcontent>
        </reference>
        <reference anchor="NIST-SP-800-56C">
          <front>
            <title>Recommendation for Key-Derivation Methods in Key-Establishment Schemes</title>
            <author fullname="Elaine Barker" initials="E." surname="Barker">
              <organization/>
            </author>
            <author fullname="Lily Chen" initials="L." surname="Chen">
              <organization/>
            </author>
            <author fullname="Richard Davis" initials="R." surname="Davis">
              <organization/>
            </author>
            <date month="August" year="2020"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.sp.800-56cr2"/>
          <refcontent>National Institute of Standards and Technology</refcontent>
        </reference>
        <reference anchor="NIST-SP-800-135">
          <front>
            <title>Recommendation for existing application-specific key derivation functions</title>
            <author fullname="Q H Dang" initials="Q." surname="Dang">
              <organization/>
            </author>
            <date year="2011"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.sp.800-135r1"/>
          <refcontent>National Institute of Standards and Technology</refcontent>
        </reference>
        <reference anchor="OQS-102" target="https://github.com/open-quantum-safe/openssl/tree/OQS-OpenSSL_1_0_2-stable">
          <front>
            <title>OQS-OpenSSL-1-0-2_stable</title>
            <author>
              <organization>Open Quantum Safe Project</organization>
            </author>
            <date year="2018" month="November"/>
          </front>
        </reference>
        <reference anchor="OQS-111" target="https://github.com/open-quantum-safe/openssl/tree/OQS-OpenSSL_1_1_1-stable">
          <front>
            <title>OQS-OpenSSL-1-1-1_stable</title>
            <author>
              <organization>Open Quantum Safe Project</organization>
            </author>
            <date year="2022" month="January"/>
          </front>
        </reference>
        <reference anchor="OQS-PROV" target="https://github.com/open-quantum-safe/oqs-provider/">
          <front>
            <title>OQS Provider for OpenSSL 3</title>
            <author>
              <organization>Open Quantum Safe Project</organization>
            </author>
            <date year="2023" month="July"/>
          </front>
        </reference>
        <reference anchor="PQUIP-TERM">
          <front>
            <title>Terminology for Post-Quantum Traditional Hybrid Schemes</title>
            <author fullname="F. Driscoll" initials="F." surname="Driscoll"/>
            <author fullname="M. Parsons" initials="M." surname="Parsons"/>
            <author fullname="B. Hale" initials="B." surname="Hale"/>
            <date month="June" year="2025"/>
            <abstract>
              <t>One aspect of the transition to post-quantum algorithms in cryptographic protocols is the development of hybrid schemes that incorporate both post-quantum and traditional asymmetric algorithms. This document defines terminology for such schemes. It is intended to be used as a reference and, hopefully, to ensure consistency and clarity across different protocols, standards, and organisations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9794"/>
          <seriesInfo name="DOI" value="10.17487/RFC9794"/>
        </reference>
        <reference anchor="PST">
          <front>
            <title>Benchmarking Post-quantum Cryptography in TLS</title>
            <author fullname="Christian Paquin" initials="C." surname="Paquin">
              <organization/>
            </author>
            <author fullname="Douglas Stebila" initials="D." surname="Stebila">
              <organization/>
            </author>
            <author fullname="Goutam Tamvada" initials="G." surname="Tamvada">
              <organization/>
            </author>
            <date year="2020"/>
          </front>
          <seriesInfo name="Lecture Notes in Computer Science" value="pp. 72-91"/>
          <seriesInfo name="DOI" value="10.1007/978-3-030-44223-1_5"/>
          <seriesInfo name="ISBN" value="[&quot;9783030442224&quot;, &quot;9783030442231&quot;]"/>
          <refcontent>Springer International Publishing</refcontent>
        </reference>
        <reference anchor="RACCOON" target="https://raccoon-attack.com/">
          <front>
            <title>Raccoon Attack: Finding and Exploiting Most-Significant-Bit-Oracles in TLS-DH(E)</title>
            <author initials="R." surname="Merget">
              <organization/>
            </author>
            <author initials="M." surname="Brinkmann">
              <organization/>
            </author>
            <author initials="N." surname="Aviram">
              <organization/>
            </author>
            <author initials="J." surname="Somorovsky">
              <organization/>
            </author>
            <author initials="J." surname="Mittmann">
              <organization/>
            </author>
            <author initials="J." surname="Schwenk">
              <organization/>
            </author>
            <date year="2020" month="September"/>
          </front>
        </reference>
        <reference anchor="S2N" target="https://aws.amazon.com/blogs/security/post-quantum-tls-now-supported-in-aws-kms/">
          <front>
            <title>Post-quantum TLS now supported in AWS KMS</title>
            <author>
              <organization>Amazon Web Services</organization>
            </author>
            <date year="2019" month="November" day="04"/>
          </front>
        </reference>
        <reference anchor="SCHANCK">
          <front>
            <title>A Transport Layer Security (TLS) Extension For Establishing An Additional Shared Secret</title>
            <author fullname="John M. Schanck" initials="J. M." surname="Schanck">
              <organization>University of Waterloo</organization>
            </author>
            <author fullname="Douglas Stebila" initials="D." surname="Stebila">
              <organization>McMaster University</organization>
            </author>
            <date day="17" month="April" year="2017"/>
            <abstract>
              <t>   This document defines a Transport Layer Security (TLS) extension that
   allows parties to establish an additional shared secret using a
   second key exchange algorithm and incorporates this shared secret
   into the TLS key schedule.

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




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

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

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

<section anchor="related-work">
      <name>Related work</name>
      <t>Quantum computing and post-quantum cryptography in general are outside the scope of this document.  For a general introduction to quantum computing, see a standard textbook such as <xref target="NIELSEN"/>.  For an overview of post-quantum cryptography as of 2009, see <xref target="BERNSTEIN"/>.  For the current status of the NIST Post-Quantum Cryptography Standardization Project, see <xref target="NIST"/>.  For additional perspectives on the general transition from traditional to post-quantum cryptography, see for example <xref target="ETSI"/>, among others.</t>
      <t>There have been several Internet-Drafts describing mechanisms for embedding post-quantum and/or hybrid key exchange in TLS:</t>
      <ul spacing="normal">
        <li>
          <t>Internet-Drafts for TLS 1.2: <xref target="WHYTE12"/>, <xref target="CAMPAGNA"/></t>
        </li>
        <li>
          <t>Internet-Drafts for TLS 1.3: <xref target="KIEFER"/>, <xref target="SCHANCK"/>, <xref target="WHYTE13"/></t>
        </li>
      </ul>
      <t>There have been several prototype implementations for post-quantum and/or hybrid key exchange in TLS:</t>
      <ul spacing="normal">
        <li>
          <t>Experimental implementations in TLS 1.2: <xref target="BCNS15"/>, <xref target="CECPQ1"/>, <xref target="FRODO"/>, <xref target="OQS-102"/>, <xref target="S2N"/></t>
        </li>
        <li>
          <t>Experimental implementations in TLS 1.3: <xref target="CECPQ2"/>, <xref target="OQS-111"/>, <xref target="OQS-PROV"/>, <xref target="PST"/></t>
        </li>
      </ul>
      <t>These experimental implementations have taken an ad hoc approach and not attempted to implement one of the drafts listed above.</t>
      <t>Unrelated to post-quantum but still related to the issue of combining multiple types of keying material in TLS is the use of pre-shared keys, especially the recent TLS working group document on including an external pre-shared key <xref target="EXTERN-PSK"/>.</t>
      <t>Considering other IETF standards, there is work on post-quantum preshared keys in IKEv2 <xref target="IKE-PSK"/> and a framework for hybrid key exchange in IKEv2 <xref target="IKE-HYBRID"/>.  The XMSS hash-based signature scheme has been published as an informational RFC by the IRTF <xref target="XMSS"/>.</t>
      <t>In the academic literature, <xref target="EVEN"/> initiated the study of combining multiple symmetric encryption schemes; <xref target="ZHANG"/>, <xref target="DODIS"/>, and <xref target="HARNIK"/> examined combining multiple public key encryption schemes, and <xref target="HARNIK"/> coined the term "robust combiner" to refer to a compiler that constructs a hybrid scheme from individual schemes while preserving security properties.  <xref target="GIACON"/> and <xref target="BINDEL"/> examined combining multiple key encapsulation mechanisms.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+19a3fbOJLod/0KrnLObTtXlCXZSRxnpncUW449frbldCY7
ZzqGKEhimyLVBGVH7fH8lv0t95fdegAgSFGy09NzdvecTT9iSyBQqCrUu0Df
92tZmEVyzztaDNJw6N3KhSe/BhMRj6UXxt71ad9rN7drYjBI5d2eF8ps5GeR
8ic03h9KFY7j2jAJYjGFaYapGGV+9Si//ao2FBmM6rQ6r/zWW7/VqQXwwThJ
FzB1PEpqtXCW7nlZOldZp9V6CwMAovskHe55x3Em01hm/gGuUaupTMTDLyJK
YphxIVVtFu55f82SoOGpJM1SOVLw02KKP/wNhs8H01CpMImvFzN44rh3fVir
iXk2SdK9muf58J8HQKg976Dp9TM5CCNBn/HODpL5OBKq8E2SjkUc/ioymHXP
+xiHdzJVYbbwkpH3CTaWRklCA+VUhBFgR/HDf5rf62+bgSiu3W96h9F8ksrU
WbsfJFlW+Ly48n6ogsTrL2D6qXIXVCN+5k8BjmgGyXRptQ9zmSaxu9hELNxP
123ySIQj4QEdvDOZMU4Mp3xs6m//T/6dgQpWaI5phT+N8SMCrBYn6RRWuZNI
DmC89vaed3W4v7uz8xo+wJ/ab3b2zA/AKsAwzhPdH4+vumd7tFAm0rHM9rxJ
ls3U3tYWLiLSYAJDm8icTdjUFn6wNVXjLeDUrcOd/o/ytPN18OFSXL7vfPj0
5cPt+8HBF/HqbIun5HNS/ytA9jdvP5kOwjiMx15fBqnMFB4WfYZO4Az1ls9Q
naaxB6BNB6DNOLNciH98/bem0Xk4TZOh170LUzGtHvJexj+LKSx1kNxHAFT1
qONIxN5JMgXcJEN1G1aPOpFxvPAukT+V5oClMb2FiLwrOHgrv4dT6X1OxvIO
vni/f95vv4ITdHHcbLea7Xbr7Vb/stlptV81d1o4oHd13r/uHZ/nY1qtN1tv
3+z62/6rnZa/u/um1fHf4NDj84PeadW41nbL77x61W75b760OzB0v3t22f1w
3oWN+wdwzqYzMY4FiaVBeCt9hf9jAYWje/uXP7SruUfJYJ4CxzfHSTKO5CBK
xsixW7CD11sAgPw6k2k4lXEGuPfvw2zizxKV+b/MRZzNp81JNo1cHuq54z0c
713i+B94vLefLmZZMk7FbLJ4mj/Omt77VMAk9/A/WWCy9mu/9Qb+NfvrVO/v
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
ZChEYlbHBdftfW0Dee3/A4uWIuxUigAA

-->

</rfc>
