<?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.36 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ms-hpke-auth-modes-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="HPKE Authenticated Modes">Authenticated Modes for HPKE</title>
    <seriesInfo name="Internet-Draft" value="draft-ms-hpke-auth-modes-01"/>
    <author fullname="Giulio Berra" role="editor">
      <organization>Freedom of the Press Foundation</organization>
      <address>
        <email>giulio@freedom.press</email>
      </address>
    </author>
    <author fullname="Cory Francis Myers" role="editor">
      <organization>Freedom of the Press Foundation</organization>
      <address>
        <email>cfm@acm.org</email>
      </address>
    </author>
    <author fullname="Rowen Shane" role="editor">
      <organization>Freedom of the Press Foundation</organization>
      <address>
        <email>ro@freedom.press</email>
      </address>
    </author>
    <date year="2026" month="May" day="15"/>
    <keyword>AKEM</keyword>
    <keyword>authenticated KEM</keyword>
    <keyword>DHKEM</keyword>
    <keyword>HPKE</keyword>
    <keyword>KEM combiner</keyword>
    <abstract>
      <?line 91?>

<t>The standards-track <xref target="I-D.ietf-hpke-hpke"/> supersedes the informational
<xref target="RFC9180"/>, omitting its authenticated modes <tt>mode_auth</tt> and <tt>mode_auth_psk</tt>.
This document restores <tt>mode_auth_psk</tt> mode as a strict extension and
illustrates how the restored mode can be used with a post-quantum "shared secret"
as the PSK in order to achieve hybrid PQ/T confidentiality while transitioning
to quantum-resistant encryption, without deprecating the classical implicit
authentication on which many applications still rely.</t>
      <t>This extension requires only the addition of <tt>AuthEncap()</tt>/<tt>AuthDecap()</tt> to the
DHKEM, the definition of four setup functions, and a change in
<tt>VerifyPSKInputs()</tt>.  The extension does not alter the externally observable
behavior of the existing HPKE modes standardized in <xref target="I-D.ietf-hpke-hpke"/>.
Although <tt>AuthEncap()</tt>/<tt>AuthDecap()</tt> reintroduce the functionality of
<tt>mode_auth</tt>, the mode itself is not restored, since it cannot provide quantum
resistance.</t>
      <t>This document discusses the transitional nature of the AuthPSK construction and
its security properties as a transitional step towards quantum resistance.  In
particular, this document illustrates how the restored <tt>mode_auth_psk</tt> can be
used to provide ready-made KEM combiner-like functionality
(<xref target="I-D.ounsworth-cfrg-kem-combiners"/>) without requiring downstream API users
to manage their own encryption context.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ms-hpke-auth-modes/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/cfm/draft-ms-hpke-auth-modes"/>.</t>
    </note>
  </front>
  <middle>
    <?line 116?>

<section anchor="introduction">
      <name>Introduction</name>
      <t><xref target="I-D.ietf-hpke-hpke"/> is the standards-track successor to the informational
<xref target="RFC9180"/> and omits the authenticated modes <tt>mode_auth</tt> and <tt>mode_auth_psk</tt>
to simplify the standard.  However, some applications make use of the type of
implicit sender authentication provided by these modes.</t>
      <t>The normative portion of this document is small.  It restores <tt>mode_auth_psk</tt> as
a strict extension to <xref target="I-D.ietf-hpke-hpke"/>.  This requires
<tt>AuthEncap()</tt>/<tt>AuthDecap()</tt> from the DHKEM construction in <xref target="RFC9180"/>, and a
modified <tt>VerifyPSKInputs()</tt>. The externally observable behavior of existing
HPKE modes is unchanged.  <tt>AuthEncap()</tt> computes a static-static DH value
<tt>DH(skS, pkR)</tt> alongside the ephemeral-static value and mixes both into the key
derivation, binding the output to the sender's key pair.</t>
      <t>Although the functionality of <tt>mode_auth</tt> is re-introduced, the mode identifer
itself, which relies solely on DHKEM, is not restored, since it cannot provide
quantum-resistant encryption. <tt>mode_auth</tt> is instead treated as a building block
to <tt>mode_auth_psk</tt>, as seen in <xref target="sec-dhakem"/>.</t>
      <t><xref target="sec-authencap"/> describes how the restored <tt>mode_auth_psk</tt> can be used to
achieve hybrid PQ/T confidentiality as defined in <xref section="5" sectionFormat="of" target="RFC9794"/>
during the transition to quantum-resistant encryption.  <xref target="sec-motivation"/>
discusses the transitional nature of this construction and reviews the guidance
available to application developers looking to begin the transition to
quantum-resistant encryption with existing libraries and APIs.</t>
      <t>To motivate the extension, <xref target="sec-combiner"/> discusses how the extension can be used
as a type of black-box KEM combiner (<xref target="I-D.ounsworth-cfrg-kem-combiners"/>), similar to
the construction proposed in <xref target="Alwen2023"/>, to allow application developers to begin
the transition to quantum-resistant encryption via usable libraries and APIs.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</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>Terms from <xref target="I-D.ietf-hpke-hpke"/> are used without redefinition; particular
reference is made to the <strong>DHKEM</strong> construction <xref section="4.1" sectionFormat="of" target="RFC9180"/>.
The following additional term is used herein:</t>
      <ul spacing="normal">
        <li>
          <t><strong>AKEM:</strong> a KEM whose encapsulation additionally takes the sender's static
private key and implicitly binds the shared secret to it.</t>
        </li>
      </ul>
    </section>
    <section anchor="sec-ext">
      <name>Authenticated Pre-Shared Key Mode Extension to <xref target="I-D.ietf-hpke-hpke"/></name>
      <t>This section specifies the additions to <xref target="I-D.ietf-hpke-hpke"/> required to
restore <tt>mode_auth_psk</tt>. These extensions are defined so that
the externally observable behavior of the existing HPKE modes is unchanged,
although this document modifies the <tt>VerifyPSKInputs()</tt> procedure in
<xref target="I-D.ietf-hpke-hpke"/>.</t>
      <section anchor="mode-identifiers">
        <name>Mode Identifiers</name>
        <t>The reserved entry for value <tt>0x03</tt> in Table 1 of
<xref target="I-D.ietf-hpke-hpke"/> is replaced with the following mode identifier, as
originally specified in Table 1 of <xref target="RFC9180"/>:</t>
        <artwork><![CDATA[
mode_auth_psk = 0x03
]]></artwork>
        <t>The value <tt>0x02</tt> remains reserved.</t>
      </section>
      <section anchor="exclusion-of-0x02-modeauth-from-mode-identifiers">
        <name>Exclusion of 0x02 <tt>mode_auth</tt> from Mode Identifiers</name>
        <t>Although restoring  the <tt>AuthEncap()</tt> and <tt>AuthDecap()</tt> functions would also
allow for restoring <tt>mode_auth</tt>, this mode cannot offer quantum-resistant
encryption, and its identifier is therefore not reintroduced.</t>
      </section>
      <section anchor="sec-authencap">
        <name>DHKEM Extension: <tt>AuthEncap()</tt> and <tt>AuthDecap()</tt></name>
        <t>The following two functions are added to the DHKEM, extending it to an AKEM
(DHAKEM).  They are reproduced verbatim from <xref section="4.1" sectionFormat="of" target="RFC9180"/>. All
helper functions (<tt>GenerateKeyPair</tt>, <tt>DH</tt>, <tt>SerializePublicKey</tt>,
<tt>DeserializePublicKey</tt>, <tt>ExtractAndExpand</tt>) are as defined in
<xref target="I-D.ietf-hpke-hpke"/>.</t>
        <artwork><![CDATA[
def AuthEncap(pkR, skS):
  skE, pkE = GenerateKeyPair()
  dh = concat(DH(skE, pkR), DH(skS, pkR))
  enc = SerializePublicKey(pkE)

  pkRm = SerializePublicKey(pkR)
  pkSm = SerializePublicKey(pk(skS))

  kem_context = concat(enc, pkRm, pkSm)
  shared_secret = ExtractAndExpand(dh, kem_context)

  return shared_secret, enc

def AuthDecap(enc, skR, pkS):
  pkE = DeserializePublicKey(enc)
  dh = concat(DH(skR, pkE), DH(skR, pkS))

  pkRm = SerializePublicKey(pk(skR))
  pkSm = SerializePublicKey(pkS)
  kem_context = concat(enc, pkRm, pkSm)

  shared_secret = ExtractAndExpand(dh, kem_context)
  return shared_secret
]]></artwork>
        <t>Note that the <tt>AuthEncap()</tt> and <tt>AuthDecap()</tt> functions are vulnerable to
key-compromise impersonation (KCI): the assurance that the shared secret was
generated by the holder of the private key <tt>skS</tt> does not hold if the recipient
private key <tt>skR</tt> is compromised. See <xref target="sec-security"/> for further discussion;
see <xref target="sec-setup"/> for integration of a pre-shared key.</t>
      </section>
      <section anchor="verifypskinputs">
        <name><tt>VerifyPSKInputs</tt></name>
        <t>The <tt>VerifyPSKInputs()</tt> function defined in <xref section="5.1" sectionFormat="of" target="RFC9180"/> and
<xref target="I-D.ietf-hpke-hpke"/> is extended to handle the reintroduced <tt>mode_auth_psk</tt>.
The updated function replaces the original:</t>
        <artwork><![CDATA[
def VerifyPSKInputs(mode, psk, psk_id):
  got_psk = (psk != default_psk)
  got_psk_id = (psk_id != default_psk_id)
  if got_psk != got_psk_id:
    raise Exception("Inconsistent PSK inputs")

  if got_psk and mode in [mode_base]:
    raise Exception("PSK input provided when not needed")
  if (not got_psk) and mode in [mode_psk, mode_auth_psk]:
    raise Exception("Missing required PSK input")
]]></artwork>
        <t>The only change from the original is that <tt>mode_psk</tt> is replaced by
<tt>[mode_psk, mode_auth_psk]</tt> in the final guard.</t>
      </section>
      <section anchor="sec-setup">
        <name>Setup Functions</name>
        <t>The following four setup functions are reproduced verbatim from Sections <xref target="RFC9180" section="5.1.3" sectionFormat="bare"/> and <xref target="RFC9180" section="5.1.4" sectionFormat="bare"/> of <xref target="RFC9180"/>.  <tt>KeyScheduleS()</tt>/<tt>KeyScheduleR()</tt> and
<tt>AuthEncap()</tt>/<tt>AuthDecap()</tt> are as defined in <xref target="I-D.ietf-hpke-hpke"/> and
<xref target="sec-authencap"/> respectively.</t>
        <artwork><![CDATA[
def SetupAuthPSKS(pkR, info, psk, psk_id, skS):
  shared_secret, enc = AuthEncap(pkR, skS)
  return enc, KeyScheduleS(mode_auth_psk, shared_secret, info,
                           psk, psk_id)

def SetupAuthPSKR(enc, skR, info, psk, psk_id, pkS):
  shared_secret = AuthDecap(enc, skR, pkS)
  return KeyScheduleR(mode_auth_psk, shared_secret, info,
                      psk, psk_id)
]]></artwork>
      </section>
      <section anchor="input-validation-and-error-handling">
        <name>Input Validation and Error Handling</name>
        <t>In addition to the validation requirements in <xref section="7.1.4" sectionFormat="of" target="I-D.ietf-hpke-hpke"/>, the recipient <bcp14>MUST</bcp14> validate the sender's static public
key <tt>pkS</tt> before use in <tt>AuthDecap()</tt>, applying the same validation rules as for
other public key inputs. Validation failure <bcp14>MUST</bcp14> yield a <tt>ValidationError</tt>.</t>
      </section>
      <section anchor="sec-dhakem">
        <name>DHAKEM with PSK</name>
        <t>This section illustrates how the authenticated mode defined
in <xref target="sec-ext"/> can be used.  Any AEAD identifier from <xref target="I-D.ietf-hpke-hpke"/> may
be used; the resulting context supports <tt>Seal()</tt>, <tt>Open()</tt>, and <tt>Export()</tt>.
Key generation follows <tt>GenerateKeyPair()</tt> from <xref target="I-D.ietf-hpke-hpke"/>.</t>
        <t><tt>mode_auth_psk</tt> may be used via its setup function: the sender calls
<tt>SetupAuthPSKS()</tt> and the receiver calls <tt>SetupAuthPSKR()</tt>, with a pre-shared key
<tt>psk</tt> and a PSK identifier <tt>psk_id</tt>, as defined in <xref target="sec-setup"/>.
As in <xref target="RFC9180"/>, both parties are assumped to have been provisioned with the
PSK value <tt>psk</tt> and another byte string <tt>psk_id</tt>.</t>
        <t>This mode <bcp14>SHOULD</bcp14> be used with a quantum-resistant PSK value as described below
in order to offer hybrid PQ/T confidentiality properties.</t>
        <section anchor="sec-hybrid">
          <name>PQ/T Hybrid Construction</name>
          <artwork><![CDATA[
def HybridSetupS(pkR, skS, info, psk, psk_id):
  enc_dh, ctx = SetupAuthPSKS(pkR, info, psk, psk_id, skS)
  return enc_dh, ctx

def HybridSetupR(enc, skR, pkS, info, psk, psk):
  return SetupAuthPSKR(enc_dh, skR, info, psk, psk_id, pkS)
]]></artwork>
          <t>The <tt>suite_id</tt> in the HPKE key schedule reflects only the ciphersuite
<tt>(KEM_ID, KDF_ID, AEAD_ID)</tt>, where <tt>KEM_ID</tt> is a DHAKEM.
Generation and distribution of a quantum-safe PSK value is left to the
application.</t>
          <t><strong>Hybrid confidentiality.</strong> <tt>KeyScheduleS()</tt>/<tt>KeyScheduleR()</tt> delegate to
<tt>CombineSecrets</tt>, for which <xref target="I-D.ietf-hpke-hpke"/> defines two variants. In
<tt>CombineSecrets_TwoStage()</tt>, the combination is <tt>secret =
LabeledExtract(dhkem_shared_secret, "secret", psk)</tt>, equivalent to
<tt>HKDF-Extract(salt = dhkem_shared_secret, IKM = psk)</tt> <xref target="RFC5869"/>. In
<tt>CombineSecrets_OneStage()</tt>, <tt>dhkem_shared_secret</tt> and <tt>psk</tt> are length-prefixed
and concatenated before a single <tt>LabeledDerive()</tt> call. In both cases,
<tt>dhkem_shared_secret</tt> and <tt>psk</tt> enter the combination as independent inputs.
The intended design property is that <tt>secret</tt> remains pseudorandom as long as at
least one of the two inputs is---meaning an adversary would need to attack both
the classical DH-based component and the PQ-KEM to recover <tt>secret</tt>, as seen
in <xref target="I-D.ounsworth-cfrg-kem-combiners"/> and subsequently,
<xref target="I-D.draft-connolly-cfrg-xwing-kem-10"/>.</t>
          <t>Whether this property holds formally for a specific <tt>CombineSecrets</tt> variant depends
on that variant's security analysis, which is outside the scope of this document.</t>
          <t><strong>Authentication.</strong> This mode retains the implicit sender
authentication properties of DHAKEM described in <xref target="RFC9180"/>.
A quantum adversary with access to the PSK can also forge authenticated messages.</t>
          <t><strong>PSK freshness.</strong> The PSK <tt>psk</tt> <bcp14>MUST</bcp14> satisfy the
entropy requirement in <xref section="9.5" sectionFormat="of" target="I-D.ietf-hpke-hpke"/> (32 bytes of
uniform randomness).</t>
        </section>
        <section anchor="sec-combiner">
          <name>AKEM/PQ KEM "Combiner" (Informative)</name>
          <t>Using <tt>mode_auth_psk</tt> with the shared secret from a PQ-KEM as the provided
"<tt>psk</tt>" value allows application developers to provide hybrid PQ/T security
properties using ready-made libraries and APIs. Although this <tt>psk</tt> value is not
a true pre-shared key, this document adopts the <tt>pskAPKE</tt> terminology from
<xref target="Alwen2023"/>.</t>
          <t>The result is a KEM combiner-style construction <xref target="I-D.ounsworth-cfrg-kem-combiners"/>
that provides hybrid PQ/T confidentiality and classical authentication, without requiring
developers to manage their own encryption context---a frequent source of developer error
and a motivating factor for the API design choices of <xref target="RFC9180"/>.</t>
          <t>In addition to the keypair specified in <xref target="sec-setup"/>, the receiver holds an
additional post-quantum keypair, (<tt>skR_pq</tt>, <tt>pkR_pq</tt>).  Prior to setting up an
HPKE encryption context (either via <tt>Setup</tt> or via a single-shot API), the
sender uses receiver's PQ public key <tt>pkR_pq</tt> to generate a shared secret and
its encapsulation (<tt>ss_pq</tt>, <tt>enc_pq</tt>), and uses <tt>ss_pq</tt> as the <tt>psk</tt> and a
static identifier as the PSK identifier.  The ciphertext encapsulation of
<tt>ss_pq</tt>, <tt>enc_pq</tt>, is included in <tt>info</tt> to bind it to the key schedule.</t>
          <t>An example construction is provided below, with reference to the following terms:</t>
          <ul spacing="normal">
            <li>
              <t><tt>PQKEM</tt>: a post-quantum KEM, e.g., ML-KEM <xref target="FIPS203"/> or an
algorithm from <xref target="I-D.ietf-hpke-pq"/>.</t>
            </li>
            <li>
              <t><tt>PQKEM.Encap(pkR_pq)</tt>: PQ-KEM encapsulation; returns <tt>(enc_pq, ss_pq)</tt>.</t>
            </li>
            <li>
              <t><tt>PQKEM.Decap(enc_pq, skR_pq)</tt>: PQ-KEM decapsulation; returns <tt>ss_pq</tt>.</t>
            </li>
            <li>
              <t><tt>Nenc_pq</tt>: the fixed ciphertext length of the chosen PQ-KEM, in bytes.</t>
            </li>
          </ul>
          <artwork><![CDATA[
def HybridSetupS(pkR, pkR_pq, skS, info):
  enc_pq, ss_pq = PQKEM.Encap(pkR_pq)
  enc_dh, ctx = SetupAuthPSKS(pkR, concat(info, enc_pq), ss_pq, enc_pq, skS)
  return concat(enc_dh, enc_pq), ctx

def HybridSetupR(enc, skR, skR_pq, pkR_pq, pkS, info):
  enc_dh, enc_pq = enc[:Nenc], enc[Nenc:]
  ss_pq = PQKEM.Decap(enc_pq, skR_pq)
  return SetupAuthPSKR(enc_dh, skR, concat(info, enc_pq), ss_pq, enc_pq, pkS)
]]></artwork>
          <t><strong>Classical (implicit) sender authentication:</strong> This construction provides only
classical sender authentication is provided.  In contrast to <xref target="sec-hybrid"/>,
this "<tt>psk</tt>" value provides no sender authentication, as it is constructed
rather than pre-shared.  This limitation is assessed in <xref target="sec-motivation"/>.</t>
          <t>The <tt>info</tt> parameter will exceed 64 bytes. Implementors must ensure their choice of
algorithms and underlying implementation can support parameters of this length.</t>
          <t>The shared secret <tt>ss_pq</tt> must satisfy the entropy requirement in
<xref section="9.5" sectionFormat="of" target="I-D.ietf-hpke-hpke"/>.</t>
          <t>Implementations should verify <tt>len(enc) == Nenc + Nenc_pq</tt> and reject
encapsulations of any other length. A fresh <tt>(ss_pq, enc_pq)</tt> pair should be
generated for each encapsulation; reuse of a prior <tt>enc_pq</tt> is prohibited. The
<tt>suite_id</tt> in the HPKE key schedule reflects only the ciphersuite
<tt>(AKEM_ID, KDF_ID, AEAD_ID)</tt>; the PQ-KEM algorithm identity should be conveyed
via application-layer framing when multiple PQ-KEM algorithms are supported.</t>
          <t>Note that <xref target="Alwen2023"/> describes a related hybrid construction in which a PQ
<em>AKEM</em> (rather than an unauthenticated KEM) is used to generate the PSK, which
would additionally provide post-quantum sender authentication; that stronger
construction is outside the scope of this document.</t>
        </section>
      </section>
      <section anchor="sec-motivation">
        <name>Motivation (Informative)</name>
        <t>Application developers are in a bind: though they may be aware of advice to
implement quantum-resistant encryption on an accelerated timeline, they may
encounter rapidly-evolving guidance on best practices, a lack of direct parity
with classical constructions, and a relative paucity of stable libraries and
APIs <xref target="PQCodePkgs"/>.</t>
        <t>Developers looking to offer hybrid PQ/T encryption in their own applications,
for reasons described for example in <xref section="2.1" sectionFormat="of" target="RFC9370"/>, can look to
early-stage implementations of <xref target="I-D.draft-connolly-cfrg-xwing-kem-10"/>, or may
refer to the now-expired <xref target="I-D.ounsworth-cfrg-kem-combiners"/>, but will need to
manage their own combiner implementation.</t>
        <t>On the other hand, production-ready quantum-resistant authentication is still
maturing.  Standardized schemes offer non-repudiable, signature-based
authentication, which is not a direct replacement for the type of DH-based
implicit authentication described in the authenticated modes of <xref target="RFC9180"/> or
this document.</t>
        <t>Although the strategy of hybrid encryption with classical authentication is not
as straightforward to communicate as unauthenticated hybrid encryption that
forgoes implict authentication entirely, protocols such as Noise IK, as used in
<xref target="Wireguard2020"/>, indicate that this strategy has real-world uses until
quantum-resistant authentication methods become more available.</t>
        <t>Allowing application developers to deploy quantum-resistant encryption as a
transitional measure without deprecating the classical authentication properties
of their application provides a path towards quantum readiness, similar in
concept to <xref section="3" sectionFormat="of" target="RFC8773"/> and <xref section="5.1" sectionFormat="of" target="RFC9257"/>, which also
discuss the introduction of quantum-resistent PSK as a transitional measure.</t>
      </section>
    </section>
    <section anchor="sec-security">
      <name>Security Considerations</name>
      <t>The sender-authentication and key-compromise impersonation (KCI) properties of
<tt>mode_auth_psk</tt> are as described in Sections <xref target="RFC9180" section="9.1" sectionFormat="bare"/> and <xref target="RFC9180" section="9.1.1" sectionFormat="bare"/> of <xref target="RFC9180"/>, which apply without change to the functions defined in <xref target="sec-ext"/>.
Security properties specific to the hybrid PQ/T construction are discussed
informatively in <xref target="sec-hybrid"/>.</t>
      <t>The formal security of the DHKEM authenticated modes under the Gap-DH assumption
is established in <xref target="Alwen2021"/>. The security of <tt>mode_auth_psk</tt>---termed
<tt>AuthPSK</tt> in <xref target="Alwen2023"/>---is analyzed there as the <tt>pskAPKE</tt> scheme.</t>
    </section>
    <section anchor="sec-iana">
      <name>IANA Considerations</name>
      <t>This document requests no IANA actions; all identifiers are drawn from
registries defined in <xref target="I-D.ietf-hpke-hpke"/>.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="I-D.ietf-hpke-hpke">
          <front>
            <title>Hybrid Public Key Encryption</title>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <author fullname="Karthikeyan Bhargavan" initials="K." surname="Bhargavan">
              <organization>Inria</organization>
            </author>
            <author fullname="Benjamin Lipp" initials="B." surname="Lipp">
              <organization>Inria</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
         </author>
            <date day="2" month="March" year="2026"/>
            <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 a variant that authenticates possession of a pre-shared key.
   HPKE works for any combination of an asymmetric Key Encapsulation
   Mechanism (KEM), key derivation function (KDF), and authenticated
   encryption with additional data (AEAD) encryption function.  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>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-hpke-hpke-03"/>
        </reference>
        <reference anchor="I-D.ounsworth-cfrg-kem-combiners">
          <front>
            <title>Combiner function for hybrid key encapsulation mechanisms (Hybrid KEMs)</title>
            <author fullname="Mike Ounsworth" initials="M." surname="Ounsworth">
              <organization>Entrust Limited</organization>
            </author>
            <author fullname="Aron Wussler" initials="A." surname="Wussler">
              <organization>Proton AG</organization>
            </author>
            <author fullname="Stavros Kousidis" initials="S." surname="Kousidis">
              <organization>BSI</organization>
            </author>
            <date day="31" month="January" year="2024"/>
            <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.

   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 [SP800-56C] when viewed as a key
   derivation function.  The combiners defined here are practical split-
   key PRFs and are CCA-secure as long as at least one of the ingredient
   KEMs is.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ounsworth-cfrg-kem-combiners-05"/>
        </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>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="FIPS203" target="https://doi.org/10.6028/NIST.FIPS.203">
          <front>
            <title>Module-Lattice-Based Key-Encapsulation Mechanism Standard</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2024" month="August"/>
          </front>
          <seriesInfo name="FIPS" value="203"/>
        </reference>
        <reference anchor="Alwen2021">
          <front>
            <title>HPKE: Hybrid Public Key Encryption</title>
            <author initials="J." surname="Alwen" fullname="Joël Alwen">
              <organization/>
            </author>
            <author initials="B." surname="Blanchet" fullname="Bruno Blanchet">
              <organization/>
            </author>
            <author initials="E." surname="Hauck" fullname="Eduard Hauck">
              <organization/>
            </author>
            <author initials="E." surname="Kiltz" fullname="Eike Kiltz">
              <organization/>
            </author>
            <author initials="B." surname="Lipp" fullname="Benjamin Lipp">
              <organization/>
            </author>
            <author initials="D." surname="Riepel" fullname="Doreen Riepel">
              <organization/>
            </author>
            <date year="2021"/>
          </front>
          <seriesInfo name="DOI" value="10.1007/978-3-030-77886-6_14"/>
          <refcontent>Advances in Cryptology -- EUROCRYPT 2021, LNCS 12696, pp. 396-427</refcontent>
        </reference>
        <reference anchor="Alwen2023" target="https://eprint.iacr.org/2023/1480">
          <front>
            <title>The Pre-Shared Key Modes of HPKE</title>
            <author initials="J." surname="Alwen" fullname="Joël Alwen">
              <organization/>
            </author>
            <author initials="J." surname="Janneck" fullname="Jonas Janneck">
              <organization/>
            </author>
            <author initials="E." surname="Kiltz" fullname="Eike Kiltz">
              <organization/>
            </author>
            <author initials="B." surname="Lipp" fullname="Benjamin Lipp">
              <organization/>
            </author>
            <date year="2023"/>
          </front>
          <refcontent>Advances in Cryptology -- ASIACRYPT 2023</refcontent>
        </reference>
        <reference anchor="I-D.draft-connolly-cfrg-xwing-kem-10">
          <front>
            <title>X-Wing: general-purpose hybrid post-quantum KEM</title>
            <author fullname="Deirdre Connolly" initials="D." surname="Connolly">
              <organization>SandboxAQ</organization>
            </author>
            <author fullname="Peter Schwabe" initials="P." surname="Schwabe">
              <organization>MPI-SP &amp; Radboud University</organization>
            </author>
            <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
              <organization>Cloudflare</organization>
            </author>
            <date day="2" month="March" year="2026"/>
            <abstract>
              <t>   This memo defines X-Wing, a general-purpose post-quantum/traditional
   hybrid key encapsulation mechanism (PQ/T KEM) built on X25519 and ML-
   KEM-768.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-connolly-cfrg-xwing-kem-10"/>
        </reference>
        <reference anchor="I-D.draft-ietf-tls-hybrid-design-16">
          <front>
            <title>Hybrid key exchange in TLS 1.3</title>
            <author fullname="Douglas Stebila" initials="D." surname="Stebila">
              <organization>University of Waterloo</organization>
            </author>
            <author fullname="Scott Fluhrer" initials="S." surname="Fluhrer">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Shay Gueron" initials="S." surname="Gueron">
              <organization>University of Haifa and Meta</organization>
            </author>
            <date day="7" month="September" year="2025"/>
            <abstract>
              <t>   Hybrid key exchange refers to using multiple key exchange algorithms
   simultaneously and combining the result with the goal of providing
   security even if 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>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-hybrid-design-16"/>
        </reference>
        <reference anchor="PQCodePkgs" target="https://github.com/orgs/pq-code-package/repositories">
          <front>
            <title>PQ Code Package Repositories (accessed 2026-04-30)</title>
            <author>
              <organization>Post Quantum Cryptography Alliance</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="Wireguard2020" target="https://www.wireguard.com/papers/wireguard.pdf">
          <front>
            <title>WireGuard: Next Generation Kernel Network Tunnel</title>
            <author initials="J. A." surname="Donenfeld" fullname="Jason A. Donenfeld">
              <organization/>
            </author>
            <date year="2020"/>
          </front>
        </reference>
        <reference anchor="RFC9180">
          <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="RFC9794">
          <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="RFC5869">
          <front>
            <title>HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
            <author fullname="H. Krawczyk" initials="H." surname="Krawczyk"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <date month="May" year="2010"/>
            <abstract>
              <t>This document specifies a simple Hashed Message Authentication Code (HMAC)-based key derivation function (HKDF), which can be used as a building block in various protocols and applications. The key derivation function (KDF) is intended to support a wide range of applications and requirements, and is conservative in its use of cryptographic hash functions. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5869"/>
          <seriesInfo name="DOI" value="10.17487/RFC5869"/>
        </reference>
        <reference anchor="I-D.ietf-hpke-pq">
          <front>
            <title>Post-Quantum and Post-Quantum/Traditional Hybrid Algorithms for HPKE</title>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <author fullname="Deirdre Connolly" initials="D." surname="Connolly">
              <organization>Selkie Cryptography</organization>
            </author>
            <date day="2" month="March" year="2026"/>
            <abstract>
              <t>   Updating key exchange and public-key encryption protocols to resist
   attack by quantum computers is a high priority given the possibility
   of "harvest now, decrypt later" attacks.  Hybrid Public Key
   Encryption (HPKE) is a widely-used public key encryption scheme based
   on combining a Key Encapsulation Mechanism (KEM), a Key Derivation
   Function (KDF), and an Authenticated Encryption with Associated Data
   (AEAD) scheme.  In this document, we define KEM algorithms for HPKE
   based on both post-quantum KEMs and hybrid constructions of post-
   quantum KEMs with traditional KEMs, as well as a KDF based on SHA-3
   that is suitable for use with these KEMs.  When used with these
   algorithms, HPKE is resilient with respect to attacks by a quantum
   computer.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-hpke-pq-04"/>
        </reference>
        <reference anchor="RFC9370">
          <front>
            <title>Multiple Key Exchanges in the Internet Key Exchange Protocol Version 2 (IKEv2)</title>
            <author fullname="CJ. Tjhai" initials="CJ." surname="Tjhai"/>
            <author fullname="M. Tomlinson" initials="M." surname="Tomlinson"/>
            <author fullname="G. Bartlett" initials="G." surname="Bartlett"/>
            <author fullname="S. Fluhrer" initials="S." surname="Fluhrer"/>
            <author fullname="D. Van Geest" initials="D." surname="Van Geest"/>
            <author fullname="O. Garcia-Morchon" initials="O." surname="Garcia-Morchon"/>
            <author fullname="V. Smyslov" initials="V." surname="Smyslov"/>
            <date month="May" year="2023"/>
            <abstract>
              <t>This document describes how to extend the Internet Key Exchange Protocol Version 2 (IKEv2) to allow multiple key exchanges to take place while computing a shared secret during a Security Association (SA) setup.</t>
              <t>This document utilizes the IKE_INTERMEDIATE exchange, where multiple key exchanges are performed when an IKE SA is being established. It also introduces a new IKEv2 exchange, IKE_FOLLOWUP_KE, which is used for the same purpose when the IKE SA is being rekeyed or is creating additional Child SAs.</t>
              <t>This document updates RFC 7296 by renaming a Transform Type 4 from "Diffie-Hellman Group (D-H)" to "Key Exchange Method (KE)" and renaming a field in the Key Exchange Payload from "Diffie-Hellman Group Num" to "Key Exchange Method". It also renames an IANA registry for this Transform Type from "Transform Type 4 - Diffie- Hellman Group Transform IDs" to "Transform Type 4 - Key Exchange Method Transform IDs". These changes generalize key exchange algorithms that can be used in IKEv2.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9370"/>
          <seriesInfo name="DOI" value="10.17487/RFC9370"/>
        </reference>
        <reference anchor="RFC8773">
          <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="RFC9257">
          <front>
            <title>Guidance for External Pre-Shared Key (PSK) Usage in TLS</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="J. Hoyland" initials="J." surname="Hoyland"/>
            <author fullname="M. Sethi" initials="M." surname="Sethi"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>This document provides usage guidance for external Pre-Shared Keys (PSKs) in Transport Layer Security (TLS) 1.3 as defined in RFC 8446. It lists TLS security properties provided by PSKs under certain assumptions, then it demonstrates how violations of these assumptions lead to attacks. Advice for applications to help meet these assumptions is provided. This document also discusses PSK use cases and provisioning processes. Finally, it lists the privacy and security properties that are not provided by TLS 1.3 when external PSKs are used.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9257"/>
          <seriesInfo name="DOI" value="10.17487/RFC9257"/>
        </reference>
      </references>
    </references>
    <?line 462?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t><em>TK</em></t>
    </section>
  </back>
  <!-- ##markdown-source:
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
INUnk/gspFdGt5XPJuJjSH8SwKfn6kNYnRG3ckL9u3Nb4SeWS3QBonVYx+74
LVnXnZJ2T0jcFYlXiQjDrUTLVYE50UFD0gss37pMeGxEcrp4ut0XV+tSoorq
h6wMtkRAX+lsLC94kc7T2NB5uxX18D6liozTN8ypSuML/Fonw0nz6GDTXNW1
VpGphbBSFLuqOIDqxi6yBAhFcc9Bks7QwGxWKWL0mZ7Tcbs1Z6f9IRaWuq8M
vzN/FEI70j7VbUiJEsWidbxmDZAgjvb148h3Jh6FDY1geM3BVewVnENR9mzr
EKkKaQvD1KdQIHGi9DpzDNmj05HHpufPnh25FHF//dTjPz6jRXIOmmpxXbWX
O0pZH8ykV9qi8jVE24dgnYy42P3CZ35plw/zy1W7LMaVnDlOym466EiOhv/1
Irt2ZndrK7mqZWlleqtimhcQCvWDTxaPaO7UOvFQXUG17q6qyOcHquqdrT1g
3rAfiYue48NVRt210knSNc5tUaW9O+8UNv9xmXhTd+Rjo5GvMqLsfZ15d/G4
rW/uwzIOK/iZH1QWHL92+9E0AEFVdOybI7PqnnA6pF0ou3p1Vx3xB0FAiRPt
6o2gNtOtY1J4hgIs2iAgh8CF2s0Ek82mWj/BqnU6eT/pV6sIrXzpHgPn/KMp
ODzkV5Vdsm/43E+dmXIHG3IFr8j5WiAa74DqzureEfHQ4eYZWBEf9ZhfwVvH
OlxymYz4PLb/ZpUOvx0sYG96gGHuXb7ZE/8HD22F95dLAAA=

-->

</rfc>
