<?xml version="1.0" encoding="utf-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.17 (Ruby 3.0.2) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8411 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8411.xml">
<!ENTITY RFC8784 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8784.xml">
<!ENTITY RFC8696 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8696.xml">
<!ENTITY I-D.ietf-lamps-cmp-updates SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-lamps-cmp-updates.xml">
<!ENTITY I-D.driscoll-pqt-hybrid-terminology SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.driscoll-pqt-hybrid-terminology.xml">
<!ENTITY I-D.ietf-tls-hybrid-design SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-tls-hybrid-design.xml">
<!ENTITY I-D.ietf-ipsecme-ikev2-multiple-ke SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ipsecme-ikev2-multiple-ke.xml">
<!ENTITY I-D.ounsworth-pq-composite-kem SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ounsworth-pq-composite-kem.xml">
<!ENTITY I-D.wussler-openpgp-pqc SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.wussler-openpgp-pqc.xml">
]>


<rfc ipr="trust200902" docName="draft-ounsworth-cfrg-kem-combiners-03" category="info" submissionType="IRTF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="KEM Combiner">Combiner function for hybrid key encapsulation mechanisms (Hybrid KEMs)</title>

    <author initials="M." surname="Ounsworth" fullname="Mike Ounsworth">
      <organization abbrev="Entrust">Entrust Limited</organization>
      <address>
        <postal>
          <street>2500 Solandt Road – Suite 100</street>
          <city>Ottawa, Ontario</city>
          <code>K2K 3G5</code>
          <country>Canada</country>
        </postal>
        <email>mike.ounsworth@entrust.com</email>
      </address>
    </author>
    <author initials="A." surname="Wussler" fullname="Aron Wussler">
      <organization abbrev="Proton">Proton AG</organization>
      <address>
        <postal>
          <country>Switzerland</country>
        </postal>
        <email>aron@wussler.it</email>
      </address>
    </author>
    <author initials="S." surname="Kousidis" fullname="Stavros Kousidis">
      <organization>BSI</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>stavros.kousidis@bsi.bund.de</email>
      </address>
    </author>

    <date year="2023" month="March" day="13"/>

    <area>Security</area>
    <workgroup>CFRG</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>The migration to post-quantum cryptography often calls for performing multiple key encapsulations in parallel and then combining their outputs to derive a single shared secret.</t>

<t>This document defines a comprehensible and easy to implement Keccak-based KEM combiner to join an arbitrary number of key shares, that is compatible with NIST SP 800-56Cr2 <xref target="SP800-56C"></xref> when viewed as a key derivation function. The combiners defined here are practical multi-PRFs and are CCA-secure as long as at least one of the ingredient KEMs is.</t>

<!-- End of Abstract -->



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ounsworth-cfrg-kem-combiners/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Limited Additional Mechanisms for PKIX and SMIME (lamps) Working Group mailing list (<eref target="mailto:spasm@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/spasm/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/spasm/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/EntrustCorporation/draft-ounsworth-cfrg-kem-combiners"/>.</t>
    </note>


  </front>

  <middle>


<section anchor="sec-terminology"><name>Terminology</name>
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"/>  <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>

<t>This document is consistent with all terminology defined in <xref target="I-D.driscoll-pqt-hybrid-terminology"/>.</t>

<section anchor="sec-kem-defn"><name>Key Encapsulation Mechanisms</name>

<t>For the purposes of this document, we consider a Key Encapsulation Mechanism (KEM) to be any asymmetric cryptographic scheme comprised of algorithms satisfying the following interfaces <xref target="PQCAPI"></xref>.</t>

<figure><artwork><![CDATA[
def kemKeyGen() -> (pk, sk)
def kemEncaps(pk) -> (ct, ss)
def kemDecaps(ct, sk) -> ss
]]></artwork></figure>

<t>where <spanx style="verb">pk</spanx> is public key, <spanx style="verb">sk</spanx> is secret key, <spanx style="verb">ct</spanx> is the ciphertext representing an encapsulated key, and <spanx style="verb">ss</spanx> is shared secret.</t>

<t>KEMs are typically used in cases where two parties, hereby refereed to as the "encapsulater" and the "decapsulater", wish to establish a shared secret via public key cryptography, where the decapsulater has an asymmetric key pair and has previously shared the public key with the encapsulater.</t>

</section>
</section>
<section anchor="sec-intro"><name>Introduction</name>

<t>The need for a KEM combiner function arises in three different contexts within IETF security protocols:</t>

<t><list style="numbers">
  <t>KEM / PSK hybrids where the output of a KEM is combined with a static pre-shared key.</t>
  <t>Post-quantum / traditional hybrid KEMs where output of a post-quantum KEM is combined with the output of a classical key transport or key exchange algorithm.</t>
  <t>KEM-based authenticated key exchanges (AKEs) where the output of two or more KEMs performed in different directions are combined.</t>
</list></t>

<t>This document normalizes a mechanism for combining the output of two or more KEMs.</t>

<section anchor="kempsk-hybrids"><name>KEM/PSK hybrids</name>

<t>As a post-quantum stop-gap, several IETF protocols have added extensions to allow for mixing a pre-shared key (PSK) into an (EC)DH based key exchange. Examples include CMS <xref target="RFC8696"></xref> and IKEv2 <xref target="RFC8784"></xref>.</t>

</section>
<section anchor="pqtraditional-hybrid-kems"><name>PQ/Traditional hybrid KEMs</name>

<t>A post-quantum / traditional hybrid key encapsulation mechanism (hybrid KEM) as defined in <xref target="I-D.driscoll-pqt-hybrid-terminology"/> as</t>

<dl>
  <dt>PQ/T Hybrid Key Encapsulation Mechanism:</dt>
  <dd>
    <t>A Key Encapsulation Mechanism (KEM) made up of two or more component KEM algorithms where at least one is a post-quantum algorithm and at least one is a traditional algorithm.</t>
  </dd>
</dl>

<t>Building a PQ/T hybrid KEM requires a secure function which combines the output of both component KEMs to form a single output. Several IETF protocols are adding PQ/T hybrid KEM mechanisms as part of their overall post-quantum migration strategies, examples include TLS 1.3 <xref target="I-D.ietf-tls-hybrid-design"></xref>, IKEv2 <xref target="I-D.ietf-ipsecme-ikev2-multiple-ke"></xref>, X.509; PKIX; CMS <xref target="I-D.ounsworth-pq-composite-kem"></xref>, OpenPGP <xref target="I-D.wussler-openpgp-pqc"></xref>, JOSE / COSE (CITE once Orie's drafts are up).</t>

<t>The traditional algorithm may in fact be a key transport or key agreement scheme, but since simple transformations exist to turn both of those schemes into KEMs, this document assumes that all cryptograhpic algorithms satisfy the KEM interface described in <xref target="sec-kem-defn"/>.</t>

</section>
<section anchor="kem-based-ake"><name>KEM-based AKE</name>

<t>The need for a KEM-based authenticated key establishment arises, for example, when two communicating parties each have long-term KEM keys (for example in X.509 certificates), and wish to involve both KEM keys in deriving a mutually-authenticated shared secret. In particular this will arise for any protocol that needs to provide post-quantum replacements for static-static (Elliptic Curve) Diffie-Hellman mechanisms. Examples include a KEM replacement for CMP's DHBasedMac <xref target="I-D.ietf-lamps-cmp-updates"/>.</t>

</section>
</section>
<section anchor="sec-kem-combiner"><name>KEM Combiner construction</name>

<!-- TODO: read and cite the ETSI doc "Quantum-safe Hybrid Key Exchanges"
https://www.etsi.org/deliver/etsi_ts/103700_103799/103744/01.01.01_60/ts_103744v010101p.pdf

TODO: as per https://www.enisa.europa.eu/publications/post-quantum-cryptography-integration-study section 4.2, might need to specify behaviour in light of KEMs with a non-zero failure probability.
-->

<t>A KEM combiner is a function that takes in two or more shared secrets <spanx style="verb">ss_i</spanx> and returns a combined shared secret <spanx style="verb">ss</spanx>.</t>

<figure><artwork><![CDATA[
ss = kemCombiner(ss_1, ss_2, ..., ss_n)
]]></artwork></figure>

<t>This document assumes that shared secrets are the output of a KEM, but without loss of generality they MAY also be any other source of cryptographic key material, such as pre-shared keys (PSKs), with PQ/PSK being a quantum-safe migration strategy being made available by some protocols, see for example IKEv2 in <xref target="RFC8784"></xref>.</t>

<t>In general it is desirable to use a multi-PRF as a KEM combiner, meaning that the combiner has the properties of a PRF when keyed by any of its single inputs.
The following simple yet generic construction can be used in all IETF protocols that need to combine the output of two or more KEMs:</t>

<figure title="general KEM combiner construction" anchor="tab-kemCombiner"><artwork><![CDATA[
KDF(counter || k_1 || ... || k_n || fixedInfo, outputBits)
]]></artwork></figure>

<t>where:</t>

<t><list style="symbols">
  <t><spanx style="verb">KDF</spanx> represents a suitable choice of a cryptographic key derivation function,</t>
  <t><spanx style="verb">k_i</spanx> represent the constant-length input keys and is discussed in <xref target="sec-k_i-construction"/>,</t>
  <t><spanx style="verb">fixedInfo</spanx> is some protocol-specific KDF binding,</t>
  <t><spanx style="verb">counter</spanx> parameter is instantiation-specific and is discussed in <xref target="sec-instantiation"/>.</t>
  <t><spanx style="verb">outputBits</spanx> determines the length of the output keying material,</t>
  <t><spanx style="verb">||</spanx> represents concatenation.</t>
</list></t>

<t>In <xref target="sec-instantiation"/> several possible practical instantiations are listed that are in compliance with NIST SP-800 56Cr2 <xref target="SP800-56C"/>.
The shared secret <spanx style="verb">ss</spanx> MAY be used directly as a symmetric key, for example as a MAC key or as a Key Encryption Key (KEK).</t>

<section anchor="sec-k_i-construction"><name>k_i construction</name>

<t>Following the guidance of Giacon et al. <xref target="GHP18"></xref>, we wish for a KEM combiner that is CCA-secure as long as at least one of the ingredient KEMs is. In order to protect against chosen ciphertext attacks, it is necessary to include both the shared secret <spanx style="verb">ss_i</spanx> and its corresponding ciphertext <spanx style="verb">ct_i</spanx>. In addition, each <spanx style="verb">k_i</spanx> MUST be constant in length to prevent abuse of the underlying hash function, therefore the secret shares <spanx style="verb">ss_i || ct_i</spanx> MUST be hashed prior to inclusion in the overall construction described in <xref target="tab-kemCombiner"/>:</t>

<figure><artwork><![CDATA[
k_i = H(ss_i || ct_i)
]]></artwork></figure>

<t>In the case of a PSK there is no associated ciphertext present.</t>

<t>~~~ BEGIN EDNOTE ~~~</t>

<t>Each <spanx style="verb">k_i</spanx> MUST be constant in length, therefore it MAY be the concatenation of the secret share <spanx style="verb">ss_i</spanx> and ciphertext <spanx style="verb">ct_i</spanx> only if they are guaranteed to be constant length:</t>

<figure><artwork><![CDATA[
k_i = ss_i || ct_i
]]></artwork></figure>

<t>For all other cases, it is REQUIRED to concatenate and hash them first:</t>

<figure><artwork><![CDATA[
k_i = H(ss_i || ct_i)
]]></artwork></figure>

<t>Including the ciphertext guarantees that the combined kem is IND-CCA secure as long as one of the ingredient KEMs is, as stated by <xref target="GHP18"></xref>.</t>

<t>Any protocols making use of this construction MUST either hash all inputs <spanx style="verb">ss_i || ct_i</spanx>, or justify that any un-hashed inputs will always be fixed length.</t>

<t>~~~ END EDNOTE ~~~</t>

</section>
<section anchor="protocol-binding"><name>Protocol binding</name>
<t>The <spanx style="verb">fixedInfo</spanx> string is a fixed-length string containing some context-specific information.
The intention is to prevent cross-context attacks by making this key derivation unique to its protocol context.</t>

<t>The <spanx style="verb">fixedInfo</spanx> string MUST have a definite structure depending on the protocol where all parts are fixed length. This prevents a variable length structure from creating collisions between two different instances.
In cases some variable length input is necessary, such as the representation of a user ID, a public key, or an OID, then hashing or padding MAY be used.</t>

<t><spanx style="verb">fixedInfo</spanx> MUST NOT include the shared secrets and ciphertexts, as they are already represented in the KDF input.</t>

<t>The parameter fixedInfo MAY contain any of the following information:</t>

<t><list style="symbols">
  <t>Public information about the communication parties, such as their identifiers.</t>
  <t>The public keys or certificates contributed by each party to the key-agreement transaction.</t>
  <t>Other public information shared between communication parties before or during the transaction, such as nonces.</t>
  <t>An indication of the protocol or application employing the key-derivation method.</t>
  <t>Protocol-related information, such as a label or session identifier.</t>
  <t>An indication of the key-agreement scheme and/or key-derivation method used.</t>
  <t>An indication of the domain parameters associated with the asymmetric key pairs employed for key establishment.</t>
  <t>An indication of other parameter or primitive choices.</t>
  <t>An indication of how the derived keying material should be parsed, including an indication of which algorithm(s) will use the (parsed) keying material.</t>
</list></t>

<t>This is a non-comprehensive list, further information can be found in paragraph 5.8.2 of NIST SP800-56Ar3 <xref target="SP800-56A"/>.</t>

</section>
</section>
<section anchor="sec-instantiation"><name>Practical instantiations</name>

<t>The KDF must be instantiated with cryptographically-secure choices for <spanx style="verb">KDF</spanx> and <spanx style="verb">H</spanx>. The following are RECOMMENDED Keccak-based instatiations, but other choices MAY be made for example to allow for future cryptographic agility. A protocol using a different instantiation MUST justify that it will behave as a multi-PRF given fixed length inputs.</t>

<t>Each instance defines a function to be used as <spanx style="verb">KDF</spanx>, a hash <spanx style="verb">H</spanx> function to derive the <spanx style="verb">k_i</spanx>, and optionally a <spanx style="verb">counter</spanx>.</t>

<t><list style="numbers">
  <t><spanx style="verb">KDF = SHA3-256</spanx> and <spanx style="verb">H = SHA3-256</spanx>, with <spanx style="verb">hashSize = 256 bit</spanx>.</t>
  <t><spanx style="verb">KDF = SHA3-512</spanx> and <spanx style="verb">H = SHA3-512</spanx>, with <spanx style="verb">hashSize = 512 bit</spanx>.</t>
  <t><spanx style="verb">KDF = KMAC128</spanx> and <spanx style="verb">H = SHA3-256</spanx>, with <spanx style="verb">hashSize = 128 bit</spanx>.</t>
  <t><spanx style="verb">KDF = KMAC256</spanx> and <spanx style="verb">H = SHA3-512</spanx>, with <spanx style="verb">hashSize = 256 bit</spanx>.</t>
</list></t>

<section anchor="hash-and-counter-based-construction"><name>Hash-and-counter based construction</name>
<t>Options 1 and 2 instantiate the KDF using SHA3, specified in NIST FIPS 202 <xref target="FIPS202"/>.
To generate an <spanx style="verb">outputBits</spanx> long secret share <spanx style="verb">ss</spanx>:</t>

<t><list style="symbols">
  <t>the <spanx style="verb">counter</spanx> MUST be initialized with the value <spanx style="verb">0x00000001</spanx>.</t>
  <t>The hash is performed over the string defined in <xref target="sec-kem-combiner"/>, and repeated <spanx style="verb">ceil(outputBits/hashSize)</spanx> times. For each iteration the <spanx style="verb">counter</spanx> MUST be increased by <spanx style="verb">0x01</spanx>.</t>
  <t>The strings are concatenated ordered by <spanx style="verb">counter</spanx>.</t>
  <t>The leftmost <spanx style="verb">outputBits</spanx> are returned as <spanx style="verb">ss</spanx>.</t>
</list></t>

<t>An implementation MUST NOT overflow and reuse the <spanx style="verb">counter</spanx> and an error MUST be returned when producing more than 2^32 consecutive hashes.</t>

</section>
<section anchor="kmac-based-construction"><name>KMAC based construction</name>
<t>Options 3 and 4 are KMAC-based, as specified in NIST SP 800-185 <xref target="SP800-185"/>.
To instantiate the function:</t>

<t><list style="symbols">
  <t>The context <spanx style="verb">S</spanx> MUST be the utf-8 string "KDF".</t>
  <t>The key <spanx style="verb">K</spanx> MUST be a context-specific string of at least <spanx style="verb">hashSize</spanx> bits, and it MAY be used as an additional option to perform context separation, in scenarios where <spanx style="verb">fixedInfo</spanx> is not sufficient.</t>
  <t>The parameter <spanx style="verb">counter</spanx> MUST be the fixed value <spanx style="verb">0x00000001</spanx>.</t>
</list></t>

<t>To derive a shared secret <spanx style="verb">ss</spanx> of desired length, KMAC is called a single time with the input string <spanx style="verb">X</spanx> defined in <xref target="sec-kem-combiner"/> and length <spanx style="verb">L</spanx> being <spanx style="verb">outputBits</spanx>.
This is compatible with the one-step KDF definition given in NIST SP800-56Cr2 <xref target="SP800-56C"/>, Section 4.</t>

</section>
</section>
<section anchor="sec-iana"><name>IANA Considerations</name>

<t>None.</t>

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

<t>The proposed instantiations in <xref target="sec-instantiation"/> are practical multi-PRFs since this specification limits to the use of Keccak-based constructions. The sponge construction was proven to be indifferentiable from a random oracle <xref target="BDPA08"/>.
More precisely, for a given capacity <spanx style="verb">c</spanx> the indifferentiability proof shows that assuming there are no weaknesses found in the Keccak permutation, an attacker has to make an expected number of <spanx style="verb">2^(c/2)</spanx> calls to the permutation to tell Keccak from a random oracle.
For a random oracle, a difference in only a single bit gives an unrelated, uniformly random output.
Hence, to be able to distinguish a key <spanx style="verb">k</spanx>, derived from shared keys <spanx style="verb">k_i</spanx> from a random bit string, an adversary has to correctly guess all key shares <spanx style="verb">k_i</spanx> entirely.</t>

<t>The proposed construction in <xref target="sec-kem-combiner"/> with the instantiations in
<xref target="sec-instantiation"/> preserves IND-CCA2 of any of its ingredient KEMs, i.e.
the newly formed combined KEM is IND-CCA2 secure as long as at least one of the
ingredient KEMs is. Indeed, the above stated indifferentiability from a random
oracle qualifies Keccak as a split-key pseudorandom function as defined in
<xref target="GHP18"/>. That is, Keccak behaves like a random function if at least one input
shared secret <spanx style="verb">ss_i</spanx> is picked uniformly at random. Our construction can thus
be seen as an instantiation of the IND-CCA2 preserving Example 3 in Figure 1 of
<xref target="GHP18"/>, up to some reordering of input shared secrets <spanx style="verb">ss_i</spanx> and ciphertexts
<spanx style="verb">ct_i</spanx> and their potential compression <spanx style="verb">H(ss_i || ct_i)</spanx> by a cryptographic
hash function.</t>

<!-- Start of Appendices -->

</section>


  </middle>

  <back>


    <references title='Normative References'>

&RFC2119;


    </references>

    <references title='Informative References'>

&RFC8174;
&RFC8411;
&RFC8784;
&RFC8696;
&I-D.ietf-lamps-cmp-updates;
&I-D.driscoll-pqt-hybrid-terminology;
&I-D.ietf-tls-hybrid-design;
&I-D.ietf-ipsecme-ikev2-multiple-ke;
&I-D.ounsworth-pq-composite-kem;
&I-D.wussler-openpgp-pqc;
<reference anchor="PQCAPI" target="https://csrc.nist.gov/CSRC/media/Projects/Post-Quantum-Cryptography/documents/example-files/api-notes.pdf">
  <front>
    <title>PQC - API notes</title>
    <author initials="N. P.-Q. C." surname="Project" fullname="NIST Post-Quantum Cryptography Project">
      <organization></organization>
    </author>
    <date year="2022" month="November"/>
  </front>
</reference>
<reference anchor="SP800-56A" target="https://doi.org/10.6028/NIST.SP.800-56Ar3">
  <front>
    <title>Recommendation for Pair-Wise Key-Establishment Schemes Using Discrete Logarithm Cryptography</title>
    <author initials="E." surname="Barker" fullname="Elaine Barker">
      <organization></organization>
    </author>
    <author initials="L." surname="Chen" fullname="Lily Chen">
      <organization></organization>
    </author>
    <author initials="A." surname="Roginsky" fullname="Allen Roginsky">
      <organization></organization>
    </author>
    <author initials="A." surname="Vassilev" fullname="Apostol Vassilev">
      <organization></organization>
    </author>
    <author initials="R." surname="Davis" fullname="Richard Davis">
      <organization></organization>
    </author>
    <date year="2018" month="April"/>
  </front>
  <seriesInfo name="NIST Special Publication 800-56A" value=""/>
</reference>
<reference anchor="SP800-56C" target="https://doi.org/10.6028/NIST.SP.800-56Cr2">
  <front>
    <title>Recommendation for Key-Derivation Methods in Key-Establishment Schemes</title>
    <author initials="E." surname="Barker" fullname="Elaine Barker">
      <organization></organization>
    </author>
    <author initials="L." surname="Chen" fullname="Lily Chen">
      <organization></organization>
    </author>
    <author initials="R." surname="Davis" fullname="Richard Davis">
      <organization></organization>
    </author>
    <date year="2020" month="August"/>
  </front>
  <seriesInfo name="NIST Special Publication 800-56C" value=""/>
</reference>
<reference anchor="SP800-185" target="https://doi.org/10.6028/NIST.SP.800-185">
  <front>
    <title>SHA-3 Derived Functions: cSHAKE, KMAC, TupleHash, and ParallelHash</title>
    <author initials="J." surname="Kelsey" fullname="John Kelsey">
      <organization></organization>
    </author>
    <author initials="S." surname="Chan" fullname="Shu-jen Chan">
      <organization></organization>
    </author>
    <author initials="R." surname="Perln" fullname="Ray Perln">
      <organization></organization>
    </author>
    <date year="2016"/>
  </front>
  <seriesInfo name="NIST Special Publication 800-185" value=""/>
</reference>
<reference anchor="FIPS202" target="https://doi.org/10.6028/NIST.FIPS.202">
  <front>
    <title>SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions</title>
    <author >
      <organization></organization>
    </author>
    <date year="2015"/>
  </front>
  <seriesInfo name="Federal information Processing Standards Publication (FIPS) 202" value=""/>
</reference>
<reference anchor="BDPA08" target="https://doi.org/10.1007/978-3-540-78967-3_11">
  <front>
    <title>On the Indifferentiability of the Sponge Construction</title>
    <author initials="G." surname="Bertoni" fullname="Guido Bertoni">
      <organization></organization>
    </author>
    <author initials="J." surname="Daemen" fullname="Joan Daemen">
      <organization></organization>
    </author>
    <author initials="M." surname="Peters" fullname="Michael Peters">
      <organization></organization>
    </author>
    <author initials="G." surname="Assche" fullname="Gilles van Assche">
      <organization></organization>
    </author>
    <date year="2008"/>
  </front>
</reference>
<reference anchor="GHP18" target="https://doi.org/10.1007/978-3-319-76578-5_7">
  <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>
</reference>
<reference anchor="ETSI-QHKE" target="https://www.etsi.org/deliver/etsi_ts/103700_103799/103744/01.01.01_60/ts_103744v010101p.pdf">
  <front>
    <title>Quantum-safe Hybrid Key Exchanges</title>
    <author >
      <organization></organization>
    </author>
    <date year="2020" month="December"/>
  </front>
  <seriesInfo name="ETSI TS 103 744 V1.1.1" value=""/>
</reference>
<reference anchor="ADKPRY22" target="https://eprint.iacr.org/2022/065">
  <front>
    <title>Practical (Post-Quantum) Key Combiners from One-Wayness and Applications to TLS.</title>
    <author initials="N." surname="Aviram" fullname="Nimrod Aviram">
      <organization></organization>
    </author>
    <author initials="B." surname="Dowling" fullname="Benjamin Dowling">
      <organization></organization>
    </author>
    <author initials="I." surname="Komargodski" fullname="Ilan Komargodski">
      <organization></organization>
    </author>
    <author initials="K. G." surname="Paterson" fullname="Kenneth G Paterson">
      <organization></organization>
    </author>
    <author initials="E." surname="Ronen" fullname="Eyal Ronen">
      <organization></organization>
    </author>
    <author initials="E." surname="Yogev" fullname="Eylon Yogev">
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>


    </references>


<section numbered="false" anchor="acknowledgements"><name>Acknowledgements</name>

<t>This document incorporates contributions and comments from a large group of experts. The authors would especially like to acknowledge the expertise and tireless dedication of the following people, who attended many long meetings and generated millions of bytes of electronic mail and VOIP traffic over the past years in pursuit of this document:</t>

<t>Douglas Stebila, Nimrod Aviram, and Andreas Huelsing.</t>

<t>We are grateful to all, including any contributors who may have
been inadvertently omitted from this list.</t>

<t>This document borrows text from similar documents, including those referenced below. Thanks go to the authors of those
   documents.  "Copying always makes things easier and less error prone" - <xref target="RFC8411"></xref>.</t>

<!-- End of Contributors section -->

</section>


  </back>

<!-- ##markdown-source:
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
gCNKAAA=

-->

</rfc>

