<?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.43 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-reddy-hpke-hqc-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="HQC KEM for HPKE">Hamming Quasi-Cyclic (HQC) Key Encapsulation Mechanisms for Hybrid Public Key Encryption (HPKE)</title>
    <seriesInfo name="Internet-Draft" value="draft-reddy-hpke-hqc-01"/>
    <author fullname="Hannes Tschofenig">
      <organization abbrev="UniBw M.">University of the Bundeswehr Munich</organization>
      <address>
        <postal>
          <city>Neubiberg</city>
          <code>85577</code>
          <country>Germany</country>
        </postal>
        <email>hannes.tschofenig@gmx.net</email>
      </address>
    </author>
    <author fullname="Tirumaleswar Reddy">
      <organization>Nokia</organization>
      <address>
        <postal>
          <city>Bangalore</city>
          <region>Karnataka</region>
          <country>India</country>
        </postal>
        <email>kondtir@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="October" day="14"/>
    <area>Security</area>
    <workgroup>HPKE Publication, Kept Efficient</workgroup>
    <keyword>HQC</keyword>
    <keyword>HPKE</keyword>
    <keyword>Post-Quantum Cryptography</keyword>
    <abstract>
      <?line 82?>

<t>This document specifies Hamming Quasi-Cyclic (HQC) key encapsulation
mechanisms for use with Hybrid Public Key Encryption (HPKE). It defines
the HPKE KEM interface, deterministic key-pair derivation, public and
private key encodings, and input validation for three HQC parameter
sets. It also defines three PQ/T hybrid KEMs that combine HQC with
P-256, X25519, or P-384. It requests six HPKE KEM algorithm
identifiers and reuses the existing HPKE key schedule, encryption
operations, and export interface.</t>
    </abstract>
  </front>
  <middle>
    <?line 93?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Hybrid Public Key Encryption (HPKE) <xref target="HPKE"/> combines a key encapsulation
mechanism (KEM), a key derivation function (KDF), and an authenticated
encryption with associated data (AEAD) algorithm. Its KEM interface
allows additional algorithms to be specified independently of an
application protocol.</t>
      <t>This document adds HQC to that interface. HQC offers a code-based
alternative to the lattice-based ML-KEM mechanisms specified for HPKE
in <xref target="PQ-HPKE"/>. NIST selected HQC for standardization following its
fourth-round evaluation <xref target="NIST.IR.8545"/>.</t>
      <t>This document specifies three standalone HQC KEMs and three PQ/T
hybrid KEMs: HQC3-P256, HQC3-X25519, and HQC5-P384. The hybrid KEMs
combine HQC with an elliptic-curve group using the framework of
<xref target="GENERIC"/>. The standalone KEMs provide security against quantum
attackers as long as HQC remains secure. The hybrid KEMs additionally
provide security against classical attackers as long as either
component remains secure. The word "hybrid" in HPKE refers to its
public-key and symmetric construction. The term "PQ/T hybrid" is used
as defined in <xref target="RFC9794"/>.</t>
      <t>This specification does not change the HPKE key schedule or message encryption.</t>
    </section>
    <section anchor="conventions-and-terminology">
      <name>Conventions and 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>The notation and interfaces of <xref target="HPKE"/> apply. All lengths below are
in octets unless stated otherwise. <tt>||</tt> denotes byte-string
concatenation. Quoted strings in pseudocode denote ASCII byte strings,
and <tt>""</tt> denotes an empty byte string.</t>
      <t><tt>pk</tt> denotes an encoded public encapsulation key. <tt>sk</tt> denotes the
private seed representation defined in this document. <tt>expanded_sk</tt>
denotes an internal HQC decapsulation key. <tt>enc</tt> is the complete HQC
KEM ciphertext, and <tt>shared_secret</tt> is the KEM output supplied to HPKE.
<tt>kem_id</tt> is the assigned two-octet HPKE KEM identifier.</t>
    </section>
    <section anchor="kem">
      <name>HQC KEMs for HPKE</name>
      <section anchor="parameters">
        <name>Parameters and Constants</name>
        <t>The three KEMs use HQC-KEM from Section 3.6 of <xref target="HQC"/>. Implementations
<bcp14>MUST</bcp14> use the complete KEM, including its specified implicit rejection,
and <bcp14>MUST NOT</bcp14> substitute the underlying HQC-PKE encryption scheme.</t>
        <table anchor="kem-sizes">
          <name>HPKE KEM constants in octets</name>
          <thead>
            <tr>
              <th align="left">KEM</th>
              <th align="right">Nsecret</th>
              <th align="right">Nenc</th>
              <th align="right">Npk</th>
              <th align="right">Nsk</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">HQC-1</td>
              <td align="right">32</td>
              <td align="right">4433</td>
              <td align="right">2241</td>
              <td align="right">32</td>
            </tr>
            <tr>
              <td align="left">HQC-3</td>
              <td align="right">32</td>
              <td align="right">8978</td>
              <td align="right">4514</td>
              <td align="right">32</td>
            </tr>
            <tr>
              <td align="left">HQC-5</td>
              <td align="right">32</td>
              <td align="right">14421</td>
              <td align="right">7237</td>
              <td align="right">32</td>
            </tr>
          </tbody>
        </table>
        <t>The public key and ciphertext encodings are those of <xref target="HQC"/>,
Sections 3.5 and 3.6. This profile selects its compressed
<tt>seedKEM</tt> private-key representation. <tt>Nsk</tt> describes that
serialization, not the size of an expanded internal key.
Implementations <bcp14>MUST</bcp14> determine the parameter set from the
selected KEM identifier and <bcp14>MUST NOT</bcp14> infer the parameter set
from <tt>Nsk</tt> or <tt>Nsecret</tt>.</t>
        <t>Note: While this document defines an HPKE KEM for HQC-1 in the
interest of completeness, implementers should generally prefer
HQC-3 or HQC-5. HQC-1 targets NIST security category 1. Use of
HQC-3 or HQC-5 provides a hedge against future cryptanalysis of
HQC that reduces its security without breaking it entirely, at
the cost of larger keys and ciphertexts.</t>
      </section>
      <section anchor="expansion">
        <name>Seed Expansion</name>
        <t>The following helper defines the connection between the serialized
private seed and the HQC key-generation procedure:</t>
        <artwork><![CDATA[
ExpandSeed(seed):
    Require length(seed) == 32
    Run HQC-KEM.Keygen for the selected parameter set,
        with seedKEM set to seed instead of sampling it.
    Return (dkKEM, ekKEM) as (expanded_sk, pk).
]]></artwork>
        <t>The first sampling step of HQC-KEM.Keygen in Section 3.6 of <xref target="HQC"/> uses
the supplied seed and all subsequent steps are performed unchanged. No
additional randomness is required. This includes the specified expansion
of <tt>seedKEM</tt> and construction of the public key and rejection material.
Thus the helper is deterministic. The byte encodings and internal XOF
operations are inherited from the HQC procedure and are not repeated by
this document.</t>
        <t>Note: Version 2025-08-22 of <xref target="HQC"/> does not define a key-generation
function that takes <tt>seedKEM</tt> as input.</t>
        <t>An implementation <bcp14>MAY</bcp14> cache <tt>expanded_sk</tt> and <tt>pk</tt>. Such caching <bcp14>MUST</bcp14>
produce the same results as expansion of the stored seed. A supplied
public key accompanying a private seed <bcp14>MUST</bcp14> be checked against the
regenerated public key and a mismatch <bcp14>MUST</bcp14> be rejected.</t>
      </section>
      <section anchor="randomized-key-generation">
        <name>Randomized Key Generation</name>
        <t><tt>GenerateKeyPair</tt> returns the private key first, as required by HPKE:</t>
        <artwork><![CDATA[
def GenerateKeyPair():
    sk = random(32)
    (_expanded_sk, pk) = ExpandSeed(sk)
    return (sk, pk)
]]></artwork>
        <t>The random bytes <bcp14>MUST</bcp14> satisfy the randomness requirements of <xref target="HQC"/>.
This is the HQC key-generation distribution with the private key
returned in compressed form. Random key generation does not apply
<tt>LabeledDerive</tt> to the already sampled seed.</t>
      </section>
      <section anchor="derive">
        <name>Deterministic Key Derivation</name>
        <t>For <tt>DeriveKeyPair</tt>, this document uses the SHAKE256 single-stage KDF
specified in Section 5 of <xref target="PQ-HPKE"/>, with the <tt>LabeledDerive</tt>
construction of Section 4.4 of <xref target="HPKE"/>. Its KEM-local domain separator is:</t>
        <artwork><![CDATA[
suite_id = "KEM" || I2OSP(kem_id, 2)

def DeriveKeyPair(ikm):
    sk = SHAKE256.LabeledDerive(ikm, "DeriveKeyPair", "", 32)
    (_expanded_sk, pk) = ExpandSeed(sk)
    return (sk, pk)
]]></artwork>
        <t>The label, empty context, output length, and KEM-specific <tt>suite_id</tt>
          <bcp14>MUST</bcp14> be used exactly as shown. <tt>LabeledDerive</tt> includes the HPKE version
label and input formatting defined by <xref target="HPKE"/>; it is not an unlabelled
SHAKE256 call. The input-length restrictions of <xref target="HPKE"/> apply.</t>
        <t>The input <bcp14>SHOULD</bcp14> have at least 32 octets of entropy. An <tt>ikm</tt> input
<bcp14>MUST NOT</bcp14> be reused for other purposes, including key derivation for
another KEM, as required by Section 9.2.1 of <xref target="HPKE"/>.</t>
        <t>SHAKE256 in this function is fixed by the KEM definition. It does not
select the KDF used by the rest of the HPKE ciphersuite. In particular,
a caller <bcp14>MUST NOT</bcp14> change this function when selecting another HPKE
key-schedule KDF.</t>
      </section>
      <section anchor="serialization">
        <name>Key Serialization</name>
        <t>For the interface in this document, public keys and private seeds are
already byte strings. <tt>SerializePublicKey(pk)</tt> returns the raw <tt>Npk</tt>
octets. <tt>SerializePrivateKey(sk)</tt> returns the raw 32-octet seed. Neither
encoding includes a parameter-set identifier, length prefix, ASN.1
wrapper, or application encoding.</t>
        <t><tt>DeserializePublicKey</tt> <bcp14>MUST</bcp14> reject inputs whose length is not <tt>Npk</tt>
for the selected KEM and <bcp14>MUST</bcp14> perform the applicable public-key
encoding checks of <xref target="HQC"/>. It returns the raw public key on success.
<tt>DeserializePrivateKey</tt> <bcp14>MUST</bcp14> reject inputs whose length is not 32 and
returns the seed on success. These failures are <tt>DeserializeError</tt>.
An expanded private key <bcp14>MUST NOT</bcp14> be accepted as an alternative
serialization, even if an implementation uses that form internally.</t>
        <t>Note: Version 2025-08-22 of <xref target="HQC"/> does not define checks on a
received public key.</t>
        <t><tt>pk(sk)</tt> is the public key returned by <tt>ExpandSeed(sk)</tt>. A private-key
object <bcp14>MAY</bcp14> store the seed, the expanded key, and a cached public key,
but <bcp14>MUST</bcp14> retain the specified seed serialization for export.</t>
      </section>
      <section anchor="encap">
        <name>Encapsulation</name>
        <t><tt>Encap(pkR)</tt> performs HQC-KEM.Encaps for the selected parameter set:</t>
        <artwork><![CDATA[
def Encap(pkR):
    Check the length and encoding of pkR for the selected KEM.
    (K, cKEM) = HQC-KEM.Encaps(pkR)
    return (K, cKEM)
]]></artwork>
        <t>The outputs are the HPKE <tt>shared_secret</tt> and <tt>enc</tt>, respectively.
The complete ciphertext, including all its HQC-defined components,
<bcp14>MUST</bcp14> be returned. Encapsulation <bcp14>MUST</bcp14> use fresh randomness satisfying
<xref target="HQC"/> for every invocation.</t>
        <t>Failures of the public-key checks or an explicit failure of the
encapsulation operation <bcp14>MUST</bcp14> cause <tt>EncapError</tt> when they occur within
this interface. Prior deserialization failures use <tt>DeserializeError</tt>.
A raw HQC shared secret is passed to HPKE without an additional
DHKEM ExtractAndExpand step or application-specific hash.</t>
      </section>
      <section anchor="decap">
        <name>Decapsulation</name>
        <t><tt>Decap(enc, skR)</tt> expands the seed and invokes HQC-KEM.Decaps:</t>
        <artwork><![CDATA[
def Decap(enc, skR):
    Require length(enc) == Nenc
    Require length(skR) == 32
    (expanded_sk, _pkR) = ExpandSeed(skR)
    return HQC-KEM.Decaps(expanded_sk, enc)
]]></artwork>
        <t>The two arguments to HQC-KEM.Decaps above are its decapsulation key
and ciphertext, in that order. A failed explicit input check or
explicit decapsulation failure <bcp14>MUST</bcp14> cause <tt>DecapError</tt> within this
interface. No shared secret is returned after such a failure.</t>
        <t>Note: Version 2025-08-22 of <xref target="HQC"/> does not define additional
input checks for decapsulation.</t>
        <t>Implicit rejection is part of HQC-KEM.Decaps and is not an explicit
error. Its replacement shared secret <bcp14>MUST</bcp14> be passed to HPKE in the
same way as any other decapsulation output. Implementations <bcp14>MUST NOT</bcp14>
expose the internal ciphertext-consistency result as an additional
success flag or error. An incorrect shared secret is handled by the
subsequent HPKE authentication checks when ciphertexts are opened.
Secret export alone is not an authentication or key-confirmation step.</t>
      </section>
    </section>
    <section anchor="hybrid">
      <name>PQ/T Hybrid KEMs</name>
      <t>This section defines three PQ/T hybrid KEMs that combine HQC with an
elliptic-curve group: HQC3-P256, HQC3-X25519, and HQC5-P384. Each
instantiates the C2PRI Combiner with a Nominal Group (CG) framework
of Section 5.5 of <xref target="GENERIC"/>.</t>
      <t>C2PRI denotes ciphertext second-preimage resistance: given an
honestly generated ciphertext, it is infeasible to find a different
ciphertext that decapsulates to the same shared secret. The CG
framework relies on this property of the PQ component. Its combiner
hashes the traditional ciphertext and public key but not the PQ
ciphertext or public key, which avoids hashing the large HQC values
in every operation. HQC provides C2PRI through the re-encryption
check in HQC-KEM.Decaps (Section 3.6 of <xref target="HQC"/>). <xref target="CHH25"/> proves
this property, and Section 6.1.2 of <xref target="GENERIC"/> lists HQC among the
KEMs that have it.</t>
      <t><xref target="CONCRETE"/> instantiates <xref target="GENERIC"/> only for ML-KEM. This document
therefore instantiates <xref target="GENERIC"/> directly for HQC. Each hybrid KEM
uses the same framework, PRG function, and KDF as the ML-KEM hybrids
in <xref target="CONCRETE"/>, and the same nominal group as its ML-KEM counterpart:
HQC3-P256 as MLKEM768-P256, HQC3-X25519 as MLKEM768-X25519, and
HQC5-P384 as MLKEM1024-P384.</t>
      <t>Each hybrid KEM uses the following components:</t>
      <ul spacing="normal">
        <li>
          <t><tt>KEM_PQ</tt>: HQC-3 or HQC-5, as defined in <xref target="kem"/>.
<tt>KEM_PQ.DeriveKeyPair(seed)</tt> is <tt>ExpandSeed(seed)</tt> of <xref target="expansion"/>,
with <tt>Nseed</tt> equal to 32.</t>
        </li>
        <li>
          <t><tt>Group_T</tt>: a nominal group of Section 3.1 of <xref target="CONCRETE"/>.</t>
        </li>
        <li>
          <t><tt>PRG</tt>: SHAKE256 <xref target="FIPS202"/>.</t>
        </li>
        <li>
          <t><tt>KDF</tt>: SHA3-256 <xref target="FIPS202"/>.</t>
        </li>
        <li>
          <t><tt>Label</tt>: an ASCII string that identifies the hybrid KEM.</t>
        </li>
      </ul>
      <table anchor="hybrid-components">
        <name>PQ/T hybrid KEM components</name>
        <thead>
          <tr>
            <th align="left">Hybrid KEM</th>
            <th align="left">KEM_PQ</th>
            <th align="left">Group_T</th>
            <th align="right">PRG Nout</th>
            <th align="left">Label (hex)</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">HQC3-P256</td>
            <td align="left">HQC-3</td>
            <td align="left">P-256</td>
            <td align="right">160</td>
            <td align="left">"HQC3-P256" (485143332d50323536)</td>
          </tr>
          <tr>
            <td align="left">HQC3-X25519</td>
            <td align="left">HQC-3</td>
            <td align="left">Curve25519</td>
            <td align="right">64</td>
            <td align="left">"HQC3-X25519" (485143332d583235353139)</td>
          </tr>
          <tr>
            <td align="left">HQC5-P384</td>
            <td align="left">HQC-5</td>
            <td align="left">P-384</td>
            <td align="right">80</td>
            <td align="left">"HQC5-P384" (485143352d50333834)</td>
          </tr>
        </tbody>
      </table>
      <t>The functions <tt>GenerateKeyPair</tt>, <tt>DeriveKeyPair</tt>, <tt>Encaps</tt>, and
<tt>Decaps</tt> of each hybrid KEM are those of Sections 5.2 and 5.5 of
<xref target="GENERIC"/>, instantiated with its components.</t>
      <t>The hybrid KEMs have the following constants, in octets:</t>
      <table anchor="hybrid-sizes">
        <name>PQ/T hybrid KEM constants</name>
        <thead>
          <tr>
            <th align="left">Hybrid KEM</th>
            <th align="right">Nseed</th>
            <th align="right">Nek</th>
            <th align="right">Ndk</th>
            <th align="right">Nct</th>
            <th align="right">Nss</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">HQC3-P256</td>
            <td align="right">32</td>
            <td align="right">4579</td>
            <td align="right">32</td>
            <td align="right">9043</td>
            <td align="right">32</td>
          </tr>
          <tr>
            <td align="left">HQC3-X25519</td>
            <td align="right">32</td>
            <td align="right">4546</td>
            <td align="right">32</td>
            <td align="right">9010</td>
            <td align="right">32</td>
          </tr>
          <tr>
            <td align="left">HQC5-P384</td>
            <td align="right">32</td>
            <td align="right">7334</td>
            <td align="right">32</td>
            <td align="right">14518</td>
            <td align="right">32</td>
          </tr>
        </tbody>
      </table>
      <t><tt>Nseed</tt> is 32 for each hybrid KEM, as for the ML-KEM hybrids in
<xref target="CONCRETE"/>. The PRG expands the seed to the length required by the
components.</t>
      <t>Each hybrid KEM maps to the HPKE KEM interface as follows:</t>
      <ul spacing="normal">
        <li>
          <t><tt>DeriveKeyPair</tt> derives a 32-octet seed with the SHAKE256 KDF of
Section 5 of <xref target="PQ-HPKE"/> and then applies the <tt>DeriveKeyPair</tt>
function of the hybrid KEM:</t>
        </li>
      </ul>
      <artwork><![CDATA[
def DeriveKeyPair(ikm):
    seed = SHAKE256.LabeledDerive(ikm, "DeriveKeyPair", "", 32)
    return KEM_H.DeriveKeyPair(seed)
]]></artwork>
      <ul spacing="normal">
        <li>
          <t><tt>GenerateKeyPair</tt>, <tt>Encap</tt>, and <tt>Decap</tt> are the <tt>GenerateKeyPair</tt>,
<tt>Encaps</tt>, and <tt>Decaps</tt> functions of the hybrid KEM.</t>
        </li>
        <li>
          <t><tt>SerializePublicKey</tt> and <tt>SerializePrivateKey</tt> return the key
unchanged. The public key is ek_PQ || ek_T, and the private key is
the seed.</t>
        </li>
        <li>
          <t><tt>DeserializePublicKey</tt> and <tt>DeserializePrivateKey</tt> reject input
whose length is not <tt>Npk</tt> or <tt>Nsk</tt>, respectively, with
<tt>DeserializeError</tt>, and otherwise return the input unchanged.</t>
        </li>
        <li>
          <t><tt>Nsecret</tt> is <tt>Nss</tt>, <tt>Nenc</tt> is <tt>Nct</tt>, <tt>Npk</tt> is <tt>Nek</tt>, and <tt>Nsk</tt> is
<tt>Ndk</tt>.</t>
        </li>
      </ul>
      <t>The <tt>suite_id</tt> used in <tt>LabeledDerive</tt> is "KEM" || I2OSP(kem_id, 2),
where <tt>kem_id</tt> is the value assigned to each hybrid KEM.</t>
    </section>
    <section anchor="hpke-use">
      <name>HPKE Modes and Ciphersuites</name>
      <t>These KEMs can be used with the Base and PSK modes of <xref target="HPKE"/>. HPKE's
setup, encryption, sequence-number handling, and export procedures
apply unchanged. The KDF and AEAD are selected independently subject
to the security requirements of Sections 9.3 and 9.4 of <xref target="HPKE"/>.</t>
      <t>The SHAKE256 KDF in <xref target="PQ-HPKE"/> can also be used for the HPKE key
schedule. HKDF-based ciphersuites remain possible. This document does
not register a new KDF or AEAD or mandate a single application
ciphersuite.</t>
      <t>The <tt>AuthEncap</tt> and <tt>AuthDecap</tt> interfaces of RFC 9180 are not defined
for these KEMs. The HPKE KEM registry's legacy <tt>Auth</tt> column is <tt>no</tt>.
This does not prevent using the PSK mode, which is part of the HPKE
key schedule rather than asymmetric sender authentication by the KEM.</t>
      <t>A KEM identifier is a cryptographic parameter, not a complete message
format. Applications remain responsible for selecting and conveying
ciphersuites and for transporting <tt>enc</tt> and the HPKE ciphertext.</t>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>The security considerations of <xref target="HQC"/>, <xref target="HPKE"/>, and <xref target="PQ-HPKE"/>
apply. HQC provides mathematical diversity from ML-KEM, but selecting
HQC alone does not provide the security of a combined hybrid KEM.</t>
      <t>HPKE requires a CCA-secure KEM with the shared-secret properties
specified in Section 9.2 of <xref target="HPKE"/>. This specification uses the
complete HQC-KEM construction and its shared-secret output.</t>
      <t>HQC-KEM derives its shared secret from H(ek), and an accepted
ciphertext is uniquely determined by ek, m, and salt through
re-encryption. HQC-KEM is therefore expected to provide
LEAK-BIND-K-PK and LEAK-BIND-K-CT by the same argument as ML-KEM
in <xref target="CDM23"/>. No published analysis covers this HQC revision.</t>
      <t>The security of a complete ciphersuite is limited by its components,
including any PSK and the KDF and AEAD. As discussed in Section 6
of <xref target="PQ-HPKE"/>, the use of a post-quantum KEM does not by itself
require a change of AEAD algorithm. However, some compliance regimes
call for AEAD algorithms with longer keys, such as AES-256-GCM or
ChaCha20Poly1305.</t>
      <t>All secret randomness <bcp14>MUST</bcp14> come from a cryptographically secure source.
The private seed is sufficient to reconstruct the entire private key
and <bcp14>MUST</bcp14> receive the same protection as an expanded private key.
Implementations <bcp14>SHOULD</bcp14> erase temporary secret material when no longer
needed and <bcp14>SHOULD</bcp14> use constant-time implementations for secret-dependent
computations. They <bcp14>MUST</bcp14> preserve implicit rejection and avoid exposing
secret-dependent behavior through timing, logs, or error handling.</t>
      <t>Recipient public keys require authenticated distribution appropriate
to the application. Base mode does not authenticate the sender.
Long-term recipient key compromise permits decapsulation of recorded
messages; this construction does not provide forward secrecy against
that compromise. PSK selection and handling follow <xref target="HPKE"/>.</t>
      <t>The domain separator in <xref target="derive"/> prevents accidental equivalence of
key derivations between KEM identifiers, but does not authorize seed
or <tt>ikm</tt> reuse across protocols. Implementations <bcp14>MUST</bcp14> enforce the
selected parameter set and <bcp14>MUST NOT</bcp14> retry with a different KEM or
older HQC revision when input validation or decryption fails.</t>
      <t>HQC's public keys and ciphertexts impose substantial per-recipient
message overhead. Applications <bcp14>SHOULD</bcp14> bound allocation and processing
before performing expensive cryptographic operations. Transport,
fragmentation, reassembly, and total message-size limits need to account
for the values in <xref target="kem-sizes"/> and <xref target="hybrid-sizes"/>.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <section anchor="hpke-kem-identifiers">
        <name>HPKE KEM Identifiers</name>
        <t>IANA is requested to add the following entries to the "HPKE KEM
Identifiers" registry <xref target="HPKE-IANA"/>, using the template in Section 11.2
of <xref target="HPKE"/>.</t>
        <table anchor="registrations">
          <name>Requested HPKE KEM registrations</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">KEM</th>
              <th align="right">Nsecret</th>
              <th align="right">Nenc</th>
              <th align="right">Npk</th>
              <th align="right">Nsk</th>
              <th align="left">Auth</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD-HQC-1</td>
              <td align="left">HQC-1</td>
              <td align="right">32</td>
              <td align="right">4433</td>
              <td align="right">2241</td>
              <td align="right">32</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">TBD-HQC-3</td>
              <td align="left">HQC-3</td>
              <td align="right">32</td>
              <td align="right">8978</td>
              <td align="right">4514</td>
              <td align="right">32</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">TBD-HQC-5</td>
              <td align="left">HQC-5</td>
              <td align="right">32</td>
              <td align="right">14421</td>
              <td align="right">7237</td>
              <td align="right">32</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">TBD-HQC3-P256</td>
              <td align="left">HQC3-P256</td>
              <td align="right">32</td>
              <td align="right">9043</td>
              <td align="right">4579</td>
              <td align="right">32</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">TBD-HQC3-X25519</td>
              <td align="left">HQC3-X25519</td>
              <td align="right">32</td>
              <td align="right">9010</td>
              <td align="right">4546</td>
              <td align="right">32</td>
              <td align="left">no</td>
            </tr>
            <tr>
              <td align="left">TBD-HQC5-P384</td>
              <td align="left">HQC5-P384</td>
              <td align="right">32</td>
              <td align="right">14518</td>
              <td align="right">7334</td>
              <td align="right">32</td>
              <td align="left">no</td>
            </tr>
          </tbody>
        </table>
        <t>The Reference for the HQC-1, HQC-3, and HQC-5 rows is <xref target="kem"/> of this
document. The Reference for the HQC3-P256, HQC3-X25519, and HQC5-P384
rows is <xref target="hybrid"/> of this document. Each TBD denotes a distinct
two-octet identifier to be assigned by IANA.</t>
        <t>This document requests no KDF or AEAD registrations.</t>
      </section>
      <section anchor="hybrid-kem-labels">
        <name>Hybrid KEM Labels</name>
        <t>IANA is requested to add the following entries to the "Hybrid KEM
Labels" registry defined in Section 7 of <xref target="GENERIC"/>.</t>
        <table anchor="label-registrations">
          <name>Requested Hybrid KEM Label registrations</name>
          <thead>
            <tr>
              <th align="left">Label</th>
              <th align="left">Framework</th>
              <th align="left">PQ Component</th>
              <th align="left">Traditional Component</th>
              <th align="left">KDF</th>
              <th align="left">PRG</th>
              <th align="right">Nseed</th>
              <th align="right">Nss</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">"HQC3-P256"</td>
              <td align="left">CG</td>
              <td align="left">HQC-3</td>
              <td align="left">P-256</td>
              <td align="left">SHA3-256</td>
              <td align="left">SHAKE256</td>
              <td align="right">32</td>
              <td align="right">32</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">"HQC3-X25519"</td>
              <td align="left">CG</td>
              <td align="left">HQC-3</td>
              <td align="left">Curve25519</td>
              <td align="left">SHA3-256</td>
              <td align="left">SHAKE256</td>
              <td align="right">32</td>
              <td align="right">32</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">"HQC5-P384"</td>
              <td align="left">CG</td>
              <td align="left">HQC-5</td>
              <td align="left">P-384</td>
              <td align="left">SHA3-256</td>
              <td align="left">SHAKE256</td>
              <td align="right">32</td>
              <td align="right">32</td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="HPKE">
          <front>
            <title>Hybrid Public Key Encryption</title>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
         </author>
            <author fullname="Karthikeyan Bhargavan" initials="K." surname="Bhargavan">
              <organization>Inria</organization>
            </author>
            <author fullname="Benjamin Lipp" initials="B." surname="Lipp">
              <organization>Rosenpass</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
         </author>
            <date day="25" month="September" 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.  This
   document provides 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 SHA-2.

   This document obsoletes RFC 9180.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-hpke-hpke-05"/>
        </reference>
        <reference anchor="PQ-HPKE">
          <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="6" month="July" 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-05"/>
        </reference>
        <reference anchor="GENERIC">
          <front>
            <title>Hybrid PQ/T Key Encapsulation Mechanisms</title>
            <author fullname="Deirdre Connolly" initials="D." surname="Connolly">
              <organization>SandboxAQ</organization>
            </author>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <author fullname="Paul Grubbs" initials="P." surname="Grubbs">
              <organization>University of Michigan</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   This document defines generic constructions for hybrid Key
   Encapsulation Mechanisms (KEMs) based on combining a post-quantum
   (PQ) KEM with a traditional cryptographic component.  Hybrid KEMs
   built using these constructions provide strong security properties as
   long as either of the underlying algorithms are secure.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-hybrid-kems-12"/>
        </reference>
        <reference anchor="CONCRETE">
          <front>
            <title>Concrete Hybrid PQ/T Key Encapsulation Mechanisms</title>
            <author fullname="Deirdre Connolly" initials="D." surname="Connolly">
              <organization>SandboxAQ</organization>
            </author>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   PQ/T Hybrid Key Encapsulation Mechanisms (KEMs) combine "post-
   quantum" cryptographic algorithms, which are safe from attack by a
   quantum computer, with "traditional" algorithms, which are not.  CFRG
   has developed a general framework for creating hybrid KEMs.  In this
   document, we define concrete instantiations of this framework to
   illustrate certain properties of the framework and simplify
   implementors' choices.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-concrete-hybrid-kems-04"/>
        </reference>
        <reference anchor="HQC" target="https://pqc-hqc.org/doc/hqc_specifications_2025_08_22.pdf">
          <front>
            <title>Hamming Quasi-Cyclic (HQC)</title>
            <author>
              <organization>HQC Project</organization>
            </author>
            <date year="2025" month="August" day="22"/>
          </front>
        </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>National Institute of Standards and Technology</organization>
            </author>
            <date year="2015" month="August"/>
          </front>
          <seriesInfo name="FIPS" value="202"/>
        </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="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="HPKE-IANA" target="https://www.iana.org/assignments/hpke/">
          <front>
            <title>Hybrid Public Key Encryption (HPKE)</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="NIST.IR.8545" target="https://doi.org/10.6028/NIST.IR.8545">
          <front>
            <title>Status Report on the Fourth Round of the NIST Post-Quantum Cryptography Standardization Process</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2025" month="March"/>
          </front>
        </reference>
        <reference anchor="CDM23" target="https://eprint.iacr.org/2023/1933.pdf">
          <front>
            <title>Keeping Up with the KEMs: Stronger Security Notions for KEMs and automated analysis of KEM-based protocols</title>
            <author initials="C." surname="Cremers" fullname="Cas Cremers">
              <organization/>
            </author>
            <author initials="A." surname="Dax" fullname="Alexander Dax">
              <organization/>
            </author>
            <author initials="N." surname="Medinger" fullname="Niklas Medinger">
              <organization/>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <reference anchor="CHH25" target="https://eprint.iacr.org/2025/1397">
          <front>
            <title>Starfighters: On the General Applicability of X-Wing</title>
            <author initials="D." surname="Connolly" fullname="Deirdre Connolly">
              <organization/>
            </author>
            <author initials="K." surname="Hövelmanns" fullname="Kathrin Hövelmanns">
              <organization/>
            </author>
            <author initials="A." surname="Hülsing" fullname="Andreas Hülsing">
              <organization/>
            </author>
            <author initials="S." surname="Kousidis" fullname="Stavros Kousidis">
              <organization/>
            </author>
            <author initials="M." surname="Meijers" fullname="Matthias Meijers">
              <organization/>
            </author>
            <date year="2025"/>
          </front>
          <seriesInfo name="DOI" value="10.1109/SP63933.2026.00143"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA7Vc3VIbSZa+z6fIpS8aT6hkkMA2zPTMYsCGsMEY6PmJjQ2r
kBJUQ6lKXVkCq8HzLPsUe7VXOy+23zknMyurhKe9PbsdM1iUMrMyz893fpMk
SVSd1bnZ1UfpbJYVN/rjIrVZsr8c59lYrx993H+m35mlPizG6dwu8rTOykKf
mPE0LTI7s/q6rPTR8qrKJvpscUWT3PBqOeex60dn7w6fqfTqqjJ3eM/Hff3u
8ETm4Rs1KcdFOsMOJlV6XSeVmUyWyXR+a5LpT+MELzS2VmP8c1NWy11t64nK
5tWurquFrQcbGzsbA2UXV7PMWryuXs6x1PHh5RuFlw1VWpl0V69dmPGiyurl
mrovq9ubqlzM8ZTe73bN5+ph7/NaH15fZ+PMFPWaujVLTJjsqoQ2Tj9py4k+
K22dgFRFvZjpfTpqeVOl8+lSpYt6WlY04XqR53Kyo7QojNWXdjwtr02R3Sit
y+oGFPyZ37urfyyyO1NZ7FCX17qeGv16UUyMvTfTSp8simw8xRxPQ4x+fa9P
+ng0xpRdfWoWV9mVqWjhcTnBK79/tb398uX3/PuiqIlyb001S4slHplZmuW7
esrb6tdhW/96M/vcL0zd2vxlVi1maY69pJU+J+6s7P60vM3SsJnXaXGT5mVl
8KQyNzziXVoVaZ3epvGGjosJT3PbuS2LSZ1V2AR+7Y/LmSpK7LgGZXYxiiiP
OclBPzP1tZMQ/MBXZx+Tp76d/4Tv3h6eHp4f77vvKnw3vq5ukimLbHJrZhaD
9j+c7p8fXh52R41LyLGpTWc4RIF2pPUv6g6P8iJBnxMinWjBWVX+1YxrfjyB
fO/qwcZgO9l4lQwGsnpa3ZgafKrrud19/nwOfYBO9LHCc2jNc3z+ZOdmnF07
+bWfaIVPG68+DQb9+eQaq7w5PrvAw9Z21y6O9pKhvqjTYpJCuPUZJGNR8xLJ
69SaCU5kpxpf68PPtcGoq9wkHxb1fFHrN4tizC9b+9rhTnmlNAeDLV65qA0J
tX+d5XUvgSBFmZc3y9b5N+n8/MSaKjM2K65LWVuOgs3jNGtPkmdSZkyazY3+
i43Bq+enxxeXfZrUxxRFK0XSdP5mf+flzpYXrOR473SvzdNvwLSvnJ/WenKH
9/f3/SwtUt5mCry6KWaAGfucxPU5pvCWj8/7r7a3tlu7AfHqhYX6zcuq1tgB
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

-->

</rfc>
