<?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.30 (Ruby 3.4.7) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="pre5378Trust200902" docName="draft-ietf-cose-hpke-20" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="COSE HPKE">Use of Hybrid Public-Key Encryption (HPKE) with CBOR Object Signing and Encryption (COSE)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-cose-hpke-20"/>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization abbrev="H-BRS">University of Applied Sciences Bonn-Rhein-Sieg</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>hannes.tschofenig@gmx.net</email>
      </address>
    </author>
    <author initials="O." surname="Steele" fullname="Orie Steele" role="editor">
      <organization>Tradeverifyd</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>orie@or13.io</email>
      </address>
    </author>
    <author initials="D." surname="Ajitomi" fullname="Daisuke Ajitomi">
      <organization>bibital</organization>
      <address>
        <postal>
          <country>Japan</country>
        </postal>
        <email>dajiaji@gmail.com</email>
      </address>
    </author>
    <author initials="L." surname="Lundblade" fullname="Laurence Lundblade">
      <organization>Security Theory LLC</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>lgl@securitytheory.com</email>
      </address>
    </author>
    <author initials="M." surname="Jones" fullname="Michael B. Jones">
      <organization>Self-Issued Consulting</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>michael_b_jones@hotmail.com</email>
        <uri>https://self-issued.info/</uri>
      </address>
    </author>
    <date year="2026" month="January" day="09"/>
    <area>Security</area>
    <workgroup>COSE</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 71?>

<t>This specification defines hybrid public-key encryption (HPKE) for use with
CBOR Object Signing and Encryption (COSE). HPKE offers a variant of
public-key encryption of arbitrary-sized plaintexts for a recipient public key.</t>
      <t>HPKE is a general encryption framework utilizing an asymmetric key encapsulation
mechanism (KEM), a key derivation function (KDF), and an Authenticated Encryption
with Associated Data (AEAD) algorithm.</t>
      <t>This document defines the use of HPKE with COSE. Authentication for HPKE in COSE is
provided by COSE-native security mechanisms or by the pre-shared key authenticated
variant of HPKE.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    CBOR Object Signing and Encryption Working Group mailing list (cose@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/cose/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/cose-wg/draft-ietf-cose-hpke"/>.</t>
    </note>
  </front>
  <middle>
    <?line 85?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Hybrid public-key encryption (HPKE) <xref target="RFC9180"/> is a scheme that
provides public key encryption of arbitrary-sized plaintexts given a
recipient's public key.</t>
      <t>This document defines the use of HPKE with COSE (<xref target="RFC9052"/>, <xref target="RFC9053"/>)
with the single-shot APIs defined in <xref section="6" sectionFormat="of" target="RFC9180"/>. Multiple
invocations of Open() / Seal() on the same context, as discussed in
<xref section="9.7.1" sectionFormat="of" target="RFC9180"/> are not supported.</t>
    </section>
    <section anchor="conventions-and-terminology">
      <name>Conventions and 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 specification uses the following abbreviations and terms:</t>
      <ul spacing="normal">
        <li>
          <t>Content-encryption key (CEK), a term defined in CMS <xref target="RFC5652"/>.</t>
        </li>
        <li>
          <t>Hybrid Public Key Encryption (HPKE) is defined in <xref target="RFC9180"/>.</t>
        </li>
        <li>
          <t>pkR is the public key of the recipient, as defined in <xref target="RFC9180"/>.</t>
        </li>
        <li>
          <t>skR is the private key of the recipient, as defined in <xref target="RFC9180"/>.</t>
        </li>
        <li>
          <t>Key Encapsulation Mechanism (KEM), see <xref target="RFC9180"/>.</t>
        </li>
        <li>
          <t>Key Derivation Function (KDF), see <xref target="RFC9180"/>.</t>
        </li>
        <li>
          <t>Authenticated Encryption with Associated Data (AEAD), see <xref target="RFC9180"/>.</t>
        </li>
        <li>
          <t>Additional Authenticated Data (AAD), see <xref target="RFC9180"/>.</t>
        </li>
      </ul>
    </section>
    <section anchor="hpke-for-cose">
      <name>HPKE for COSE</name>
      <section anchor="overview">
        <name>Overview</name>
        <t>This specification supports two modes of using HPKE in COSE, namely:</t>
        <ul spacing="normal">
          <li>
            <t>HPKE Integrated Encryption mode, where HPKE is used to encrypt
the plaintext. This mode can only be used with a single recipient.
<xref target="one-layer"/> provides the details.</t>
          </li>
          <li>
            <t>HPKE Key Encryption mode, where HPKE is used to encrypt a
content encryption key (CEK) and the CEK is subsequently used to
encrypt the plaintext. This mode supports multiple recipients.
<xref target="two-layer"/> provides the details.</t>
          </li>
        </ul>
        <t>Distinct algorithm identifiers are defined and registered
that are specific to each COSE HPKE mode
so that they are fully specified, as required by <xref target="RFC9864"/>.
Algorithm identifiers MUST only be used in the COSE HPKE mode
that is specified for them.</t>
        <t>In both cases, the new COSE header parameter 'ek' MUST be present.
It contains the encapsulated KEM shared secret.
The value of this parameter MUST be the 'enc' value output by the HPKE Seal() operation, as defined in <xref section="6.1" sectionFormat="of" target="RFC9180"/>.
The 'ek' header parameter MUST be encoded as a CBOR byte string.</t>
        <t>HPKE defines several authentication modes, as described in Table 1 of <xref target="RFC9180"/>.
In COSE HPKE, only 'mode_base' and 'mode_psk' are supported.
The mode is 'mode_psk' if the 'psk_id' header parameter is present; otherwise, the mode defaults to 'mode_base'.
'mode_base' is described in <xref section="5.1.1" sectionFormat="of" target="RFC9180"/>, which only enables encryption
to the holder of a given KEM private key. 'mode_psk' is described in <xref section="5.1.2" sectionFormat="of" target="RFC9180"/>,
which authenticates using a pre-shared key.</t>
      </section>
      <section anchor="one-layer">
        <name>HPKE Integrated Encryption Mode</name>
        <t>This mode applies if the COSE_Encrypt0 structure uses a COSE-HPKE algorithm
and has no recipient structure(s).</t>
        <t>Because COSE-HPKE supports header protection, if the 'alg' parameter is present, it MUST be included
in the protected header and MUST be a COSE-HPKE algorithm.</t>
        <t>Although the use of the 'kid' parameter in COSE_Encrypt0 is
discouraged by RFC 9052, this document RECOMMENDS the use of the 'kid' parameter
(or other parameters) to explicitly identify the static recipient public key
used by the sender. If the COSE_Encrypt0 structure includes a 'kid' parameter, the
recipient MAY use it to select the corresponding private key.</t>
        <t>When encrypting, the inputs to the HPKE Seal operation are set as follows:</t>
        <ul spacing="normal">
          <li>
            <t>kem_id: Depends on the COSE-HPKE algorithm used.</t>
          </li>
          <li>
            <t>pkR: The recipient public key, converted into an HPKE public key.</t>
          </li>
          <li>
            <t>kdf_id: Depends on the COSE-HPKE algorithm used.</t>
          </li>
          <li>
            <t>info: Defaults to the empty string; externally provided information MAY be used instead.</t>
          </li>
          <li>
            <t>aad: MUST contain the byte string for the authenticated data structure according to the steps defined in Section 5.3 of RFC 9052.
For the Integrated Encryption mode the context string will be "Encrypt0".
Externally provided AAD information MAY be provided and MUST be passed into the Enc_structure via the external_aad field.</t>
          </li>
          <li>
            <t>aead_id: Depends on the COSE-HPKE algorithm used.</t>
          </li>
          <li>
            <t>pt: The raw message plaintext.</t>
          </li>
        </ul>
        <t>The outputs are used as follows:</t>
        <ul spacing="normal">
          <li>
            <t>enc: MUST be placed raw into the 'ek' (encapsulated key) parameter in the unprotected bucket.</t>
          </li>
          <li>
            <t>ct: MUST be used as layer ciphertext. If not using detached content, this is directly placed as
ciphertext in COSE_Encrypt0 structure. Otherwise, it is transported separately and the ciphertext field is nil.
See <xref section="5" sectionFormat="of" target="RFC9052"/> for a description of detached payloads.</t>
          </li>
        </ul>
        <t>If 'mode_psk' has been selected, then the 'psk_id' parameter MUST be present.
If 'mode_base' has been chosen, then the 'psk_id' parameter MUST NOT be present.</t>
        <t>When decrypting, the inputs to the HPKE Open operation are set as follows:</t>
        <ul spacing="normal">
          <li>
            <t>kem_id: Depends on the COSE-HPKE algorithm used.</t>
          </li>
          <li>
            <t>skR: The recipient private key, converted into an HPKE private key.</t>
          </li>
          <li>
            <t>kdf_id: Depends on the COSE-HPKE algorithm used.</t>
          </li>
          <li>
            <t>aead_id: Depends on the COSE-HPKE algorithm used.</t>
          </li>
          <li>
            <t>info: Defaults to the empty string; externally provided information MAY be used instead.</t>
          </li>
          <li>
            <t>aad: MUST contain the byte string for the authenticated data structure according to the steps defined in Section 5.3 of RFC 9052. For the Integrated Encryption mode the context string will be "Encrypt0". Externally provided AAD information MAY be provided and MUST be passed into the Enc_structure via the external_aad field.</t>
          </li>
          <li>
            <t>enc: The contents of the layer 'ek' parameter.</t>
          </li>
          <li>
            <t>ct: The contents of the layer ciphertext.</t>
          </li>
        </ul>
        <t>The plaintext output is the raw message plaintext.</t>
        <t>The COSE_Encrypt0 MAY be tagged or untagged.</t>
        <t>An example is shown in <xref target="one-layer-example"/>.</t>
      </section>
      <section anchor="two-layer">
        <name>HPKE Key Encryption Mode</name>
        <t>This mode is selected if the COSE_recipient structure uses a COSE-HPKE algorithm.</t>
        <t>In this approach the following layers are involved:</t>
        <ul spacing="normal">
          <li>
            <t>Layer 0 (corresponding to the COSE_Encrypt structure) contains the content (plaintext)
encrypted with the CEK. This ciphertext may be detached, and if not detached, then
it is included in the COSE_Encrypt structure.</t>
          </li>
          <li>
            <t>Layer 1 (corresponding to a recipient structure) contains parameters needed for
HPKE to generate a shared secret used to encrypt the CEK. This layer conveys the
encrypted CEK in the COSE_recipient structure using a COSE-HPKE algorithm.
The unprotected header MAY contain the kid parameter to identify the static recipient
public key that the sender has been using with HPKE.</t>
          </li>
        </ul>
        <t>This two-layer structure is used to encrypt content that can also be shared with
multiple parties at the expense of a single additional encryption operation.
As stated above, the specification uses a CEK to encrypt the content at layer 0.</t>
        <section anchor="recipientstructure">
          <name>Recipient_structure</name>
          <t>This section defines the Recipient_structure, which is used in place of COSE_KDF_Context
for COSE-HPKE recipients. It MUST be used for COSE-HPKE recipients, as it provides
integrity protection for recipient-protected header parameters.</t>
          <t>The Recipient_structure is modeled after the Enc_structure defined in <xref target="RFC9052"/>,
but is specific to COSE_recipient structures and MUST NOT be used with COSE_Encrypt.</t>
          <t>Furthermore, the use of COSE_KDF_Context is prohibited in COSE-HPKE; it MUST NOT be
used.</t>
          <artwork><![CDATA[
Recipient_structure = [
    context: "HPKE Recipient",
    next_layer_alg: int/tstr,
    recipient_protected_header: empty_or_serialize_map,
    recipient_extra_info: bstr
]
]]></artwork>
          <ul spacing="normal">
            <li>
              <t>"next_layer_alg" is the algorithm ID of the COSE layer for which the COSE_recipient is encrypting a key.
It is the algorithm that the key MUST be used with.
This value MUST match the alg parameter in the next lower COSE layer.
(This serves the same purpose as the alg ID in the COSE_KDF_Context.
It also mitigates attacks where the attacker manipulates the content-encryption
algorithm identifier. This attack has been demonstrated against CMS and the mitigation
can be found in <xref target="I-D.ietf-lamps-cms-cek-hkdf-sha256"/>.</t>
            </li>
            <li>
              <t>"recipient_protected_header" contains the protected header parameters from the COSE_recipient
CBOR-encoded deterministically with the "Core Deterministic Encoding Requirements",
specified in <xref section="4.2.1" sectionFormat="of" target="RFC8949"/>.</t>
            </li>
            <li>
              <t>"recipient_extra_info" contains any additional context the application wishes to include in
the key derivation via the HPKE info parameter. If none, it is a zero-length string.</t>
            </li>
          </ul>
        </section>
        <section anchor="cose-hpke-recipient-construction">
          <name>COSE-HPKE Recipient Construction</name>
          <t>Because COSE-HPKE supports header protection, if the 'alg' parameter is present, it
MUST be in the protected header parameters and MUST be a COSE-HPKE algorithm.</t>
          <t>The protected header MAY contain the kid parameter to identify the static recipient
public key that the sender used. Use of the 'kid' parameter is RECOMMENDED
to explicitly identify the static recipient public key used by the sender.
Including it in the protected header parameters ensures that it is input into the
key derivation function of HPKE.</t>
          <t>When encrypting, the inputs to the HPKE Seal operation are set as follows:</t>
          <ul spacing="normal">
            <li>
              <t>kem_id: Depends on the COSE-HPKE algorithm used.</t>
            </li>
            <li>
              <t>pkR: The recipient public key, converted into HPKE public key.</t>
            </li>
            <li>
              <t>kdf_id: Depends on the COSE-HPKE algorithm used.</t>
            </li>
            <li>
              <t>aead_id: Depends on the COSE-HPKE algorithm used.</t>
            </li>
            <li>
              <t>info: Deterministic encoding of the Recipient_structure. Externally provided context information MAY be provided and MUST be passed into the Recipient_structure via the recipient_extra_info field.</t>
            </li>
            <li>
              <t>aad: Defaults to the empty string; externally provided information MAY be used instead.</t>
            </li>
            <li>
              <t>pt: The raw key for the next layer down.</t>
            </li>
          </ul>
          <t>The outputs are used as follows:</t>
          <ul spacing="normal">
            <li>
              <t>enc: MUST be placed raw into the 'ek' (encapsulated key) parameter in the unprotected bucket.</t>
            </li>
            <li>
              <t>ct: MUST be placed raw in the ciphertext field in the COSE_recipient.</t>
            </li>
          </ul>
          <t>When decrypting, the inputs to the HPKE Open operation are set as follows:</t>
          <ul spacing="normal">
            <li>
              <t>kem_id: Depends on the COSE-HPKE algorithm used.</t>
            </li>
            <li>
              <t>skR: The recipient private key, converted into HPKE private key.</t>
            </li>
            <li>
              <t>kdf_id: Depends on the COSE-HPKE algorithm used.</t>
            </li>
            <li>
              <t>aead_id: Depends on the COSE-HPKE algorithm used.</t>
            </li>
            <li>
              <t>info: Deterministic encoding of the Recipient_structure. Externally provided context information MAY be provided and MUST be passed into the Recipient_structure via the recipient_extra_info field.</t>
            </li>
            <li>
              <t>aad: Defaults to the empty string; externally provided information MAY be used instead.</t>
            </li>
            <li>
              <t>ct: The contents of the layer ciphertext field.</t>
            </li>
          </ul>
          <t>The plaintext output is the raw key for the next layer down.</t>
          <t>It is not necessary to populate recipient_aad, as HPKE inherently mitigates the classes of
attacks that COSE_KDF_Context, and SP800-56A are designed to address. COSE-HPKE use cases
may still utilize recipient_aad for other purposes as needed; however, it is generally
intended for small values such as identifiers, contextual information, or secrets. It is
not designed for protecting large or bulk external data.</t>
          <t>Any bulk external data that requires protection should be handled at layer 0 using external_aad.</t>
          <t>The COSE_recipient structure is computed for each recipient.</t>
          <t>When encrypting the content at layer 0, the instructions in <xref section="5.3" sectionFormat="of" target="RFC9052"/> MUST be followed, including the calculation of the
authenticated data structure.</t>
          <t>An example is shown in <xref target="two-layer-example"/>.</t>
        </section>
      </section>
      <section anchor="key-representation">
        <name>Key Representation</name>
        <t>The COSE_Key with the existing key types can be used to represent KEM private
or public keys. When using a COSE_Key for COSE-HPKE, the following checks are made:</t>
        <ul spacing="normal">
          <li>
            <t>If the "kty" field is "AKP", then the public and private keys SHALL be the raw HPKE public and private
keys (respectively) for the KEM used by the algorithm.</t>
          </li>
          <li>
            <t>Otherwise, the key MUST be suitable for the KEM used by the algorithm. In case the "kty" parameter
is "EC2" or "OKP", this means the value of "crv" parameter is suitable. The valid combinations of
KEM, "kty" and "crv" for the algorithms defined in this document are shown in <xref target="ciphersuite-kty-crv"/>.</t>
          </li>
          <li>
            <t>If the "key_ops" field is present, it MUST include only "derive bits" for the private key
and MUST be empty for the public key.</t>
          </li>
        </ul>
        <t>Examples of the COSE_Key for COSE-HPKE are shown in <xref target="key-representation-example"/>.</t>
      </section>
    </section>
    <section anchor="ciphersuite-registration">
      <name>Ciphersuite Registration</name>
      <t>A ciphersuite is a group of algorithms, often sharing component algorithms
such as hash functions, targeting a security level.
A COSE-HPKE algorithm is composed of the following choices:</t>
      <ul spacing="normal">
        <li>
          <t>COSE HPKE Mode</t>
        </li>
        <li>
          <t>KEM Algorithm</t>
        </li>
        <li>
          <t>KDF Algorithm</t>
        </li>
        <li>
          <t>AEAD Algorithm</t>
        </li>
      </ul>
      <t>The "KEM", "KDF", and "AEAD" values are chosen from the HPKE IANA
registry <xref target="HPKE-IANA"/>.</t>
      <t>The HPKE mode is determined by the presence or absence of the
'psk_id' parameter and is therefore not explicitly indicated in the
ciphersuite.</t>
      <t>For a list of ciphersuite registrations, please see <xref target="IANA"/>. The following
table summarizes the relationship between the ciphersuites registered in this
document and the values registered in the HPKE IANA registry <xref target="HPKE-IANA"/>.</t>
      <artwork><![CDATA[
+-------------------+-----------------------+-------------------+
| COSE-HPKE         | COSE HPKE Mode        |        HPKE       |
| Ciphersuite Label |                       | KEM  | KDF | AEAD |
+-------------------+-----------------------+------+-----+------+
| HPKE-0            | Integrated Encryption | 0x10 | 0x1 | 0x1  |
| HPKE-1            | Integrated Encryption | 0x11 | 0x2 | 0x2  |
| HPKE-2            | Integrated Encryption | 0x12 | 0x3 | 0x2  |
| HPKE-3            | Integrated Encryption | 0x20 | 0x1 | 0x1  |
| HPKE-4            | Integrated Encryption | 0x20 | 0x1 | 0x3  |
| HPKE-5            | Integrated Encryption | 0x21 | 0x3 | 0x2  |
| HPKE-6            | Integrated Encryption | 0x21 | 0x3 | 0x3  |
| HPKE-7            | Integrated Encryption | 0x10 | 0x1 | 0x2  |
| HPKE-0-KE         | Key Encryption        | 0x10 | 0x1 | 0x1  |
| HPKE-1-KE         | Key Encryption        | 0x11 | 0x2 | 0x2  |
| HPKE-2-KE         | Key Encryption        | 0x12 | 0x3 | 0x2  |
| HPKE-3-KE         | Key Encryption        | 0x20 | 0x1 | 0x1  |
| HPKE-4-KE         | Key Encryption        | 0x20 | 0x1 | 0x3  |
| HPKE-5-KE         | Key Encryption        | 0x21 | 0x3 | 0x2  |
| HPKE-6-KE         | Key Encryption        | 0x21 | 0x3 | 0x3  |
| HPKE-7-KE         | Key Encryption        | 0x10 | 0x1 | 0x2  |
+-------------------+-----------------------+------+-----+------+
]]></artwork>
      <t>The following list maps the ciphersuite labels to their textual
description.</t>
      <ul spacing="normal">
        <li>
          <t>HPKE-0: Integrated Encryption with DHKEM(P-256, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and AES-128-GCM AEAD.</t>
        </li>
        <li>
          <t>HPKE-1: Integrated Encryption with DHKEM(P-384, HKDF-SHA384) KEM, HKDF-SHA384 KDF, and AES-256-GCM AEAD.</t>
        </li>
        <li>
          <t>HPKE-2: Integrated Encryption with DHKEM(P-521, HKDF-SHA512) KEM, HKDF-SHA512 KDF, and AES-256-GCM AEAD.</t>
        </li>
        <li>
          <t>HPKE-3: Integrated Encryption with DHKEM(X25519, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and AES-128-GCM AEAD.</t>
        </li>
        <li>
          <t>HPKE-4: Integrated Encryption with DHKEM(X25519, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and ChaCha20Poly1305 AEAD.</t>
        </li>
        <li>
          <t>HPKE-5: Integrated Encryption with DHKEM(X448, HKDF-SHA512) KEM, HKDF-SHA512 KDF, and AES-256-GCM AEAD.</t>
        </li>
        <li>
          <t>HPKE-6: Integrated Encryption with DHKEM(X448, HKDF-SHA512) KEM, HKDF-SHA512 KDF, and ChaCha20Poly1305 AEAD.</t>
        </li>
        <li>
          <t>HPKE-7: Integrated Encryption with DHKEM(P-256, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and AES-256-GCM AEAD.</t>
        </li>
        <li>
          <t>HPKE-0: Key Encryption with DHKEM(P-256, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and AES-128-GCM AEAD.</t>
        </li>
        <li>
          <t>HPKE-1: Key Encryption with DHKEM(P-384, HKDF-SHA384) KEM, HKDF-SHA384 KDF, and AES-256-GCM AEAD.</t>
        </li>
        <li>
          <t>HPKE-2: Key Encryption with DHKEM(P-521, HKDF-SHA512) KEM, HKDF-SHA512 KDF, and AES-256-GCM AEAD.</t>
        </li>
        <li>
          <t>HPKE-3: Key Encryption with DHKEM(X25519, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and AES-128-GCM AEAD.</t>
        </li>
        <li>
          <t>HPKE-4: Key Encryption with DHKEM(X25519, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and ChaCha20Poly1305 AEAD.</t>
        </li>
        <li>
          <t>HPKE-5: Key Encryption with DHKEM(X448, HKDF-SHA512) KEM, HKDF-SHA512 KDF, and AES-256-GCM AEAD.</t>
        </li>
        <li>
          <t>HPKE-6: Key Encryption with DHKEM(X448, HKDF-SHA512) KEM, HKDF-SHA512 KDF, and ChaCha20Poly1305 AEAD.</t>
        </li>
        <li>
          <t>HPKE-7: Key Encryption with DHKEM(P-256, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and AES-256-GCM AEAD.</t>
        </li>
      </ul>
      <t>As the list indicates, the ciphersuite labels have been abbreviated at least
to some extent to strike a balance between readability and length.</t>
      <t>The ciphersuite list above is a minimal starting point. Additional
ciphersuites can be registered into the already existing registry.
For example, once post-quantum cryptographic algorithms have been standardized
it might be beneficial to register ciphersuites for use with COSE-HPKE.
Additionally, ciphersuites utilizing the compact encoding of the public keys,
as defined in <xref target="I-D.irtf-cfrg-dnhpke"/>, may be standardized for use in
constrained environments.</t>
      <t>As a guideline for ciphersuite submissions to the IANA COSE algorithm
registry, the designated experts must only register combinations of
(KEM, KDF, AEAD) triple that constitute valid combinations for use with
HPKE, the KDF used should (if possible) match one internally used by the
KEM, and components should not be mixed between global and national standards.</t>
      <section anchor="cosekeys-for-cose-hpke-ciphersuites">
        <name>COSE_Keys for COSE-HPKE Ciphersuites</name>
        <t>The COSE-HPKE algorithm uniquely determines the KEM for which a COSE_Key is used.
The following mapping table shows the valid combinations
of the KEM used, COSE_Key type, and its curve/key subtype.
This holds for COSE algorithms using either of the COSE HPKE modes
(Integrated Encryption and Key Encryption).</t>
        <figure anchor="ciphersuite-kty-crv">
          <name>COSE_Key Types and Curves for COSE-HPKE Ciphersuites</name>
          <artwork><![CDATA[
+---------------------+--------------+
| HPKE KEM id         | COSE_Key     |
|                     | kty | crv    |
+---------------------+-----+--------+
| 0x0010, 0x0013      | EC2 | P-256  |
| 0x0011, 0x0014      | EC2 | P-384  |
| 0x0012, 0x0015      | EC2 | P-521  |
| 0x0020              | OKP | X25519 |
| 0x0021              | OKP | X448   |
+---------------------+-----+--------+
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <t>This section provides a set of examples that show the HPKE Integrated Encryption
Mode and the HPKE Key Encryption Mode, and illustrates the use of key representations
for HPKE KEM.</t>
      <section anchor="one-layer-example">
        <name>COSE HPKE Integrated Encryption Mode</name>
        <t>This example assumes that a sender wants to communicate an
encrypted payload to a single recipient, named "bob".</t>
        <t>An example of the HPKE Integrated Encryption Mode is
shown in <xref target="hpke-example-one"/>. Line breaks and comments have been inserted
for better readability.</t>
        <t>This example uses the following:</t>
        <ul spacing="normal">
          <li>
            <t>Suite: HPKE-0 (P-256 / HKDF-SHA256 / AES-128-GCM)</t>
          </li>
          <li>
            <t>Plaintext: "This is the content."</t>
          </li>
          <li>
            <t>External AAD: empty</t>
          </li>
          <li>
            <t>Info: empty</t>
          </li>
          <li>
            <t>Recipient kid: "bob"</t>
          </li>
        </ul>
        <t>The ciphertext (hex) transmitted to "bob" is:</t>
        <figure anchor="hpke-example-ciphertext">
          <name>Hex-Encoding of COSE_Encrypt0</name>
          <artwork><![CDATA[
d08344a1011823a1235841042fee971fa778fac9c095f835bdf4033d2ae8
d1b8e8dde4b1f6739a05df8bb338a9bccd52aea211b12d13496d1d5aad5f
26bc0a1789160d940130003176cf861e5825d4a351c896b4dd9c66fd9ab3
00bd5788ba8d0c9c895202bd0a42be864a5854c36b00280748
]]></artwork>
        </figure>
        <t>COSE_Encrypt0 pretty-printed:</t>
        <figure anchor="hpke-example-one">
          <name>COSE_Encrypt0 Example for HPKE</name>
          <artwork><![CDATA[
{
  "protected": {
    1 /alg/: 35 /HPKE-0 (P-256 + HKDF-SHA256 + AES-128-GCM)/
  },
  "unprotected": {
    -4 /ek/: h'042fee971fa778fac9c095f835bdf4033d2ae8d1b8e8dde4b1f6739a0
5df8bb338a9bccd52aea211b12d13496d1d5aad5f26bc0a1789160d940130003176cf861
e'
  },
  "ciphertext": h'd4a351c896b4dd9c66fd9ab300bd5788ba8d0c9c895202bd0a42be
864a5854c36b00280748'
}
]]></artwork>
        </figure>
        <t>The following COSE Key was used in this example:</t>
        <figure anchor="hpke-example-one-key">
          <name>COSE Key</name>
          <artwork><![CDATA[
{
   1 /kty/: 2,
   2 /kid/: h'626f62',
   3 /alg/: 35 /HPKE-0  (P-256 + HKDF-SHA256 + AES-128-GCM)/,
   -1 /crv/: 1 /P-256/,
   -2 /x/:
   h'02a8e3315f96bc7355dbf85740c6d8e53fb070cd8ba5c419be49a91d789ef55c',
   -3 /y/:
   h'96b6621abf5ca532e042dc5c346c1ef0c9186b83cb122e50a46f1458de023d35'
}
]]></artwork>
        </figure>
      </section>
      <section anchor="two-layer-example">
        <name>COSE HPKE Key Encryption Mode</name>
        <t>An example of key encryption using the COSE_Encrypt structure using HPKE is
shown in <xref target="hpke-example-cose-encrypt"/>. Line breaks and comments have been
inserted for better readability.</t>
        <t>This example uses the following input parameters:</t>
        <ul spacing="normal">
          <li>
            <t>Suite: HPKE-0 (P-256 / HKDF-SHA256 / AES-128-GCM)</t>
          </li>
          <li>
            <t>Plaintext: "This is the content."</t>
          </li>
          <li>
            <t>External AAD: empty</t>
          </li>
          <li>
            <t>Info: empty</t>
          </li>
          <li>
            <t>Recipient kid: "alice"</t>
          </li>
        </ul>
        <t>Alice uses the following COSE Keys, in hex-encoding:</t>
        <artwork><![CDATA[
a701020245616c69636503182e20012158201f2124bdf7da2656a1e404fd
fb9958d762de1db78959d1ef7f946437161071882258202abfce2ff6083d
28be1cd915f5682932ce8f45c08e9db1d3dfc8bd5e89d4dcb423582031e9
ff686ed68feafa8774d2fb88370da73b4de5a8a8104545c2c3db412b8202
]]></artwork>
        <t>This hex-sequence decodes to the following COSE Key:</t>
        <artwork><![CDATA[
{
1 /kty/: 2,
2 /kid/: h'616c696365',
3 /alg/: 46 /HPKE-0-KE (DHKEM(P-256, HKDF-SHA256) / HKDF-SHA256 /
AES-128-GCM)/,
-1 /crv/: 1 /P-256/,
-2 /x/:
h'1f2124bdf7da2656a1e404fdfb9958d762de1db78959d1ef7f94643716107188',
-3 /y/:
h'2abfce2ff6083d28be1cd915f5682932ce8f45c08e9db1d3dfc8bd5e89d4dcb4',
-4 /d/:
h'31e9ff686ed68feafa8774d2fb88370da73b4de5a8a8104545c2c3db412b8202'
}
]]></artwork>
        <t>As a result, the following COSE_Encrypt payload is
created:</t>
        <artwork><![CDATA[
d8608443a10101a10550311aa7cc6cf87c1068a2ca671ede2cc758253e17
fb3a5e244dc66e4d175424d364c24c6f85945b75f3788cf35116c67bc7b8
45df5757c381834ba201182e0445616c696365a123584104a97992eb7834
74b632289699b5b97218595f82c0fe2ed9097d505f6a64c8c530775a66fa
36b8728ae329a24c8c6580a59c80e7c5d583b197cd42222cdb4f674c5820
649f31f9e647c3d7ded69f8cd6ed1ca4e5171f681c39eed1f077a1d1a01b
f784
]]></artwork>
        <t>Decoded, this hex-sequence has the following
content:</t>
        <figure anchor="hpke-example-cose-encrypt">
          <name>COSE_Encrypt Example for HPKE</name>
          <artwork><![CDATA[
{
    "protected": {
        1 /alg/: 1 /A128GCM/
    },
    "unprotected": {
        5 /iv/: h'311aa7cc6cf87c1068a2ca671ede2cc7'
    },
    "ciphertext": h'3e17fb3a5e244dc66e4d175424d364c24c6f85945b75f3788cf3
5116c67bc7b845df5757c3',
    "recipients": [
    {
        "protected": {
            1 /alg/: 46 /HPKE-0-KE (DHKEM(P-256, HKDF-SHA256) / HKDF-SHA
256 / AES-128-GCM)/,
            4 /kid/: h'616c696365'
        },
        "unprotected": {
            -4 /ek/: h'04a97992eb783474b632289699b5b97218595f82c0fe2ed90
97d505f6a64c8c530775a66fa36b8728ae329a24c8c6580a59c80e7c5d583b197cd42222
cdb4f674c'
        },
        "encrypted_cek": h'649f31f9e647c3d7ded69f8cd6ed1ca4e5171f681c39e
ed1f077a1d1a01bf784'
    }
    ]
}
]]></artwork>
        </figure>
      </section>
      <section anchor="key-representation-example">
        <name>Key Representation</name>
        <t>Examples of private and public KEM key representation are shown below.</t>
        <section anchor="public-key-for-hpke-0">
          <name>Public Key for HPKE-0</name>
          <figure anchor="hpke-example-key-1">
            <name>Public Key Representation Example for HPKE-0</name>
            <artwork><![CDATA[
{
    / kty = 'EC2' /
    1: 2,
    / kid = '01' /
    2: h'3031',
    / alg = HPKE-0 (Assumed: 35) /
    3: 35,
    / crv = 'P-256' /
    -1: 1,
    / x /
    -2: h'65eda5a12577c2bae829437fe338701a10aaa375
          e1bb5b5de108de439c08551d',
    / y /
    -3: h'1e52ed75701163f7f9e40ddf9f341b3dc9ba860af
          7e0ca7ca7e9eecd0084d19c'
}
]]></artwork>
          </figure>
        </section>
        <section anchor="private-key-for-hpke-0">
          <name>Private Key for HPKE-0</name>
          <figure anchor="hpke-example-key-2">
            <name>Private Key Representation Example for HPKE-0</name>
            <artwork><![CDATA[
{
    / kty = 'EC2' /
    1: 2,
    / kid = '01' /
    2: h'3031',
    / alg = HPKE-0 (Assumed: 35) /
    3: 35,
    / key_ops = ['derive_bits'] /
    4: [8],
    / crv = 'P-256' /
    -1: 1,
    / x /
    -2: h'bac5b11cad8f99f9c72b05cf4b9e26d244dc189f7
          45228255a219a86d6a09eff',
    / y /
    -3: h'20138bf82dc1b6d562be0fa54ab7804a3a64b6d72
          ccfed6b6fb6ed28bbfc117e',
    / d /
    -4: h'57c92077664146e876760c9520d054aa93c3afb04
          e306705db6090308507b4d3',
}
]]></artwork>
          </figure>
        </section>
        <section anchor="kem-public-key-for-hpke-4">
          <name>KEM Public Key for HPKE-4</name>
          <figure anchor="hpke-example-key-3">
            <name>Public Key Representation Example for HPKE-4</name>
            <artwork><![CDATA[
{
    / kty = 'OKP' /
    1: 1,
    / kid = '11' /
    2: h'3131',
    / alg = HPKE-4 (Assumed: 42) /
    3: 42,
    / crv = 'X25519' /
    -1: 4,
    / x /
    -2: h'cb7c09ab7b973c77a808ee05b9bbd373b55c06eaa
          9bd4ad2bd4e9931b1c34c22',
}
]]></artwork>
          </figure>
        </section>
      </section>
    </section>
    <section anchor="sec-cons">
      <name>Security Considerations</name>
      <t>This specification is based on HPKE and the security considerations of
<xref target="RFC9180"/> are therefore applicable also to this specification.</t>
      <t>Both HPKE and HPKE COSE assume that the sender possesses the recipient's
public key. Therefore, some form of public key distribution mechanism is
assumed to exist, but this is outside the scope of this document.</t>
      <t>HPKE relies on a source of randomness to be available on the device. Additionally,
with the two layer structure the CEK is randomly generated and it MUST be
ensured that the guidelines in <xref target="RFC8937"/> for random number generation are followed.</t>
      <t>HPKE in Base mode does not offer authentication as part of the HPKE KEM. In this
case COSE constructs like COSE_Sign, COSE_Sign1, COSE_Mac, or COSE_Mac0 can be
used to add authentication.</t>
      <t>If COSE_Encrypt or COSE_Encrypt0 is used with a detached ciphertext then the
subsequently applied integrity protection via COSE_Sign, COSE_Sign1, COSE_Mac,
or COSE_Mac0 does not cover this detached ciphertext. Implementers MUST ensure
that the detached ciphertext also experiences integrity protection. This is, for
example, the case when an AEAD cipher is used to produce the detached ciphertext
but may not be guaranteed by non-AEAD ciphers.</t>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>This document requests IANA to add new values to the 'COSE Algorithms' and to
the 'COSE Header Parameters' registries.</t>
      <section anchor="cose-algorithms-registry">
        <name>COSE Algorithms Registry</name>
        <section anchor="hpke-0">
          <name>HPKE-0</name>
          <ul spacing="normal">
            <li>
              <t>Name: HPKE-0</t>
            </li>
            <li>
              <t>Value: TBD1 (Assumed: 35)</t>
            </li>
            <li>
              <t>Description: COSE HPKE Integrated Encryption using DHKEM(P-256, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and AES-128-GCM AEAD.</t>
            </li>
            <li>
              <t>Capabilities: [kty]</t>
            </li>
            <li>
              <t>Change Controller: IESG</t>
            </li>
            <li>
              <t>Reference:  [[TBD: This RFC]]</t>
            </li>
            <li>
              <t>Recommended: Yes</t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-1">
          <name>HPKE-1</name>
          <ul spacing="normal">
            <li>
              <t>Name: HPKE-1</t>
            </li>
            <li>
              <t>Value: TBD3 (Assumed: 37)</t>
            </li>
            <li>
              <t>Description: COSE HPKE Integrated Encryption using DHKEM(P-384, HKDF-SHA384) KEM, HKDF-SHA384 KDF, and AES-256-GCM AEAD.</t>
            </li>
            <li>
              <t>Capabilities: [kty]</t>
            </li>
            <li>
              <t>Change Controller: IESG</t>
            </li>
            <li>
              <t>Reference:  [[TBD: This RFC]]</t>
            </li>
            <li>
              <t>Recommended: Yes</t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-2">
          <name>HPKE-2</name>
          <ul spacing="normal">
            <li>
              <t>Name: HPKE-2</t>
            </li>
            <li>
              <t>Value: TBD5 (Assumed: 39)</t>
            </li>
            <li>
              <t>Description: COSE HPKE Integrated Encryption using DHKEM(P-521, HKDF-SHA512) KEM, HKDF-SHA512 KDF, and AES-256-GCM AEAD.</t>
            </li>
            <li>
              <t>Capabilities: [kty]</t>
            </li>
            <li>
              <t>Change Controller: IESG</t>
            </li>
            <li>
              <t>Reference:  [[TBD: This RFC]]</t>
            </li>
            <li>
              <t>Recommended: Yes</t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-3">
          <name>HPKE-3</name>
          <ul spacing="normal">
            <li>
              <t>Name: HPKE-3</t>
            </li>
            <li>
              <t>Value: TBD7 (Assumed: 41)</t>
            </li>
            <li>
              <t>Description: COSE HPKE Integrated Encryption using DHKEM(X25519, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and AES-128-GCM AEAD.</t>
            </li>
            <li>
              <t>Capabilities: [kty]</t>
            </li>
            <li>
              <t>Change Controller: IESG</t>
            </li>
            <li>
              <t>Reference:  [[TBD: This RFC]]</t>
            </li>
            <li>
              <t>Recommended: Yes</t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-4">
          <name>HPKE-4</name>
          <ul spacing="normal">
            <li>
              <t>Name: HPKE-4</t>
            </li>
            <li>
              <t>Value: TBD8 (Assumed: 42)</t>
            </li>
            <li>
              <t>Description: COSE HPKE Integrated Encryption using DHKEM(X25519, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and ChaCha20Poly1305 AEAD.</t>
            </li>
            <li>
              <t>Capabilities: [kty]</t>
            </li>
            <li>
              <t>Change Controller: IESG</t>
            </li>
            <li>
              <t>Reference:  [[TBD: This RFC]]</t>
            </li>
            <li>
              <t>Recommended: Yes</t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-5">
          <name>HPKE-5</name>
          <ul spacing="normal">
            <li>
              <t>Name: HPKE-5</t>
            </li>
            <li>
              <t>Value: TBD9 (Assumed: 43)</t>
            </li>
            <li>
              <t>Description: COSE HPKE Integrated Encryption using DHKEM(X448, HKDF-SHA512) KEM, HKDF-SHA512 KDF, and AES-256-GCM AEAD.</t>
            </li>
            <li>
              <t>Capabilities: [kty]</t>
            </li>
            <li>
              <t>Change Controller: IESG</t>
            </li>
            <li>
              <t>Reference:  [[TBD: This RFC]]</t>
            </li>
            <li>
              <t>Recommended: Yes</t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-6">
          <name>HPKE-6</name>
          <ul spacing="normal">
            <li>
              <t>Name: HPKE-6</t>
            </li>
            <li>
              <t>Value: TBD10 (Assumed: 44)</t>
            </li>
            <li>
              <t>Description: COSE HPKE Integrated Encryption using DHKEM(X448, HKDF-SHA512) KEM, HKDF-SHA512 KDF, and ChaCha20Poly1305 AEAD.</t>
            </li>
            <li>
              <t>Capabilities: [kty]</t>
            </li>
            <li>
              <t>Change Controller: IESG</t>
            </li>
            <li>
              <t>Reference:  [[TBD: This RFC]]</t>
            </li>
            <li>
              <t>Recommended: Yes</t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-7">
          <name>HPKE-7</name>
          <ul spacing="normal">
            <li>
              <t>Name: HPKE-7</t>
            </li>
            <li>
              <t>Value: TBD13 (Assumed: 45)</t>
            </li>
            <li>
              <t>Description: COSE HPKE Integrated Encryption using DHKEM(P-256, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and AES-256-GCM AEAD.</t>
            </li>
            <li>
              <t>Capabilities: [kty]</t>
            </li>
            <li>
              <t>Change Controller: IESG</t>
            </li>
            <li>
              <t>Reference:  [[TBD: This RFC]]</t>
            </li>
            <li>
              <t>Recommended: Yes</t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-0-ke">
          <name>HPKE-0-KE</name>
          <ul spacing="normal">
            <li>
              <t>Name: HPKE-0-KE</t>
            </li>
            <li>
              <t>Value: TBD14 (Assumed: 46)</t>
            </li>
            <li>
              <t>Description: COSE HPKE Key Encryption using DHKEM(P-256, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and AES-128-GCM AEAD.</t>
            </li>
            <li>
              <t>Capabilities: [kty]</t>
            </li>
            <li>
              <t>Change Controller: IESG</t>
            </li>
            <li>
              <t>Reference:  [[TBD: This RFC]]</t>
            </li>
            <li>
              <t>Recommended: Yes</t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-1-ke">
          <name>HPKE-1-KE</name>
          <ul spacing="normal">
            <li>
              <t>Name: HPKE-1-KE</t>
            </li>
            <li>
              <t>Value: TBD15 (Assumed: 47)</t>
            </li>
            <li>
              <t>Description: COSE HPKE Key Encryption using DHKEM(P-384, HKDF-SHA384) KEM, HKDF-SHA384 KDF, and AES-256-GCM AEAD.</t>
            </li>
            <li>
              <t>Capabilities: [kty]</t>
            </li>
            <li>
              <t>Change Controller: IESG</t>
            </li>
            <li>
              <t>Reference:  [[TBD: This RFC]]</t>
            </li>
            <li>
              <t>Recommended: Yes</t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-2-ke">
          <name>HPKE-2-KE</name>
          <ul spacing="normal">
            <li>
              <t>Name: HPKE-2-KE</t>
            </li>
            <li>
              <t>Value: TBD16 (Assumed: 48)</t>
            </li>
            <li>
              <t>Description: COSE HPKE Key Encryption using DHKEM(P-521, HKDF-SHA512) KEM, HKDF-SHA512 KDF, and AES-256-GCM AEAD.</t>
            </li>
            <li>
              <t>Capabilities: [kty]</t>
            </li>
            <li>
              <t>Change Controller: IESG</t>
            </li>
            <li>
              <t>Reference:  [[TBD: This RFC]]</t>
            </li>
            <li>
              <t>Recommended: Yes</t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-3-ke">
          <name>HPKE-3-KE</name>
          <ul spacing="normal">
            <li>
              <t>Name: HPKE-3-KE</t>
            </li>
            <li>
              <t>Value: TBD17 (Assumed: 49)</t>
            </li>
            <li>
              <t>Description: COSE HPKE Key Encryption using DHKEM(X25519, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and AES-128-GCM AEAD.</t>
            </li>
            <li>
              <t>Capabilities: [kty]</t>
            </li>
            <li>
              <t>Change Controller: IESG</t>
            </li>
            <li>
              <t>Reference:  [[TBD: This RFC]]</t>
            </li>
            <li>
              <t>Recommended: Yes</t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-4-ke">
          <name>HPKE-4-KE</name>
          <ul spacing="normal">
            <li>
              <t>Name: HPKE-4-KE</t>
            </li>
            <li>
              <t>Value: TBD18 (Assumed: 50)</t>
            </li>
            <li>
              <t>Description: COSE HPKE Key Encryption using DHKEM(X25519, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and ChaCha20Poly1305 AEAD.</t>
            </li>
            <li>
              <t>Capabilities: [kty]</t>
            </li>
            <li>
              <t>Change Controller: IESG</t>
            </li>
            <li>
              <t>Reference:  [[TBD: This RFC]]</t>
            </li>
            <li>
              <t>Recommended: Yes</t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-5-ke">
          <name>HPKE-5-KE</name>
          <ul spacing="normal">
            <li>
              <t>Name: HPKE-5-KE</t>
            </li>
            <li>
              <t>Value: TBD19 (Assumed: 51)</t>
            </li>
            <li>
              <t>Description: COSE HPKE Key Encryption using DHKEM(X448, HKDF-SHA512) KEM, HKDF-SHA512 KDF, and AES-256-GCM AEAD.</t>
            </li>
            <li>
              <t>Capabilities: [kty]</t>
            </li>
            <li>
              <t>Change Controller: IESG</t>
            </li>
            <li>
              <t>Reference:  [[TBD: This RFC]]</t>
            </li>
            <li>
              <t>Recommended: Yes</t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-6-ke">
          <name>HPKE-6-KE</name>
          <ul spacing="normal">
            <li>
              <t>Name: HPKE-6-KE</t>
            </li>
            <li>
              <t>Value: TBD20 (Assumed: 52)</t>
            </li>
            <li>
              <t>Description: COSE HPKE Key Encryption using DHKEM(X448, HKDF-SHA512) KEM, HKDF-SHA512 KDF, and ChaCha20Poly1305 AEAD.</t>
            </li>
            <li>
              <t>Capabilities: [kty]</t>
            </li>
            <li>
              <t>Change Controller: IESG</t>
            </li>
            <li>
              <t>Reference:  [[TBD: This RFC]]</t>
            </li>
            <li>
              <t>Recommended: Yes</t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-7-ke">
          <name>HPKE-7-KE</name>
          <ul spacing="normal">
            <li>
              <t>Name: HPKE-7-KE</t>
            </li>
            <li>
              <t>Value: TBD21 (Assumed: 53)</t>
            </li>
            <li>
              <t>Description: COSE HPKE Key Encryption using DHKEM(P-256, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and AES-256-GCM AEAD.</t>
            </li>
            <li>
              <t>Capabilities: [kty]</t>
            </li>
            <li>
              <t>Change Controller: IESG</t>
            </li>
            <li>
              <t>Reference:  [[TBD: This RFC]]</t>
            </li>
            <li>
              <t>Recommended: Yes</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="cose-header-parameters">
        <name>COSE Header Parameters</name>
        <section anchor="ek-header-parameter">
          <name>ek Header Parameter</name>
          <ul spacing="normal">
            <li>
              <t>Name: ek</t>
            </li>
            <li>
              <t>Label: TBD11 (Assumed: -4)</t>
            </li>
            <li>
              <t>Value type: bstr</t>
            </li>
            <li>
              <t>Value Registry: N/A</t>
            </li>
            <li>
              <t>Description: HPKE encapsulated key</t>
            </li>
            <li>
              <t>Reference: [[TBD: This RFC]]</t>
            </li>
          </ul>
        </section>
        <section anchor="pskid-header-parameter">
          <name>psk_id Header Parameter</name>
          <ul spacing="normal">
            <li>
              <t>Name: psk_id</t>
            </li>
            <li>
              <t>Label: TBD12 (Assumed: -5)</t>
            </li>
            <li>
              <t>Value type: bstr</t>
            </li>
            <li>
              <t>Value Registry: N/A</t>
            </li>
            <li>
              <t>Description: A key identifier (kid) for the pre-shared key
as defined in <xref section="5.1.2" sectionFormat="of" target="RFC9180"/></t>
            </li>
            <li>
              <t>Reference: [[TBD: This RFC]]</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </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="RFC9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC9053">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines a set of algorithms that can be used with the CBOR Object Signing and Encryption (COSE) protocol (RFC 9052).</t>
              <t>This document, along with RFC 9052, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9053"/>
          <seriesInfo name="DOI" value="10.17487/RFC9053"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC5652">
          <front>
            <title>Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="September" year="2009"/>
            <abstract>
              <t>This document describes the Cryptographic Message Syntax (CMS). This syntax is used to digitally sign, digest, authenticate, or encrypt arbitrary message content. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="70"/>
          <seriesInfo name="RFC" value="5652"/>
          <seriesInfo name="DOI" value="10.17487/RFC5652"/>
        </reference>
        <reference anchor="RFC8937">
          <front>
            <title>Randomness Improvements for Security Protocols</title>
            <author fullname="C. Cremers" initials="C." surname="Cremers"/>
            <author fullname="L. Garratt" initials="L." surname="Garratt"/>
            <author fullname="S. Smyshlyaev" initials="S." surname="Smyshlyaev"/>
            <author fullname="N. Sullivan" initials="N." surname="Sullivan"/>
            <author fullname="C. Wood" initials="C." surname="Wood"/>
            <date month="October" year="2020"/>
            <abstract>
              <t>Randomness is a crucial ingredient for Transport Layer Security (TLS) and related security protocols. Weak or predictable "cryptographically secure" pseudorandom number generators (CSPRNGs) can be abused or exploited for malicious purposes. An initial entropy source that seeds a CSPRNG might be weak or broken as well, which can also lead to critical and systemic security problems. This document describes a way for security protocol implementations to augment their CSPRNGs using long-term private keys. This improves randomness from broken or otherwise subverted CSPRNGs.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8937"/>
          <seriesInfo name="DOI" value="10.17487/RFC8937"/>
        </reference>
        <reference anchor="RFC9864">
          <front>
            <title>Fully-Specified Algorithms for JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE)</title>
            <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
            <author fullname="O. Steele" initials="O." surname="Steele"/>
            <date month="October" year="2025"/>
            <abstract>
              <t>This specification refers to cryptographic algorithm identifiers that fully specify the cryptographic operations to be performed, including any curve, key derivation function (KDF), and hash functions, as being "fully specified". It refers to cryptographic algorithm identifiers that require additional information beyond the algorithm identifier to determine the cryptographic operations to be performed as being "polymorphic". This specification creates fully-specified algorithm identifiers for registered JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE) polymorphic algorithm identifiers, enabling applications to use only fully-specified algorithm identifiers. It deprecates those polymorphic algorithm identifiers.</t>
              <t>This specification updates RFCs 7518, 8037, and 9053. It deprecates polymorphic algorithms defined by RFCs 8037 and 9053 and provides fully-specified replacements for them. It adds to the instructions to designated experts in RFCs 7518 and 9053.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9864"/>
          <seriesInfo name="DOI" value="10.17487/RFC9864"/>
        </reference>
        <reference anchor="I-D.irtf-cfrg-dnhpke">
          <front>
            <title>Deterministic Nonce-less Hybrid Public Key Encryption</title>
            <author fullname="Dan Harkins" initials="D." surname="Harkins">
              <organization>Hewlett-Packard Enterprise</organization>
            </author>
            <date day="16" month="October" year="2025"/>
            <abstract>
              <t>   This document describes enhancements to the Hybrid Public Key
   Encryption standard published by CFRG.  These include use of "compact
   representation" of relevant public keys, support for key-wrapping,
   and two ways to address the use of HPKE on lossy networks: a
   determinstic, nonce-less AEAD scheme, and use of a rolling sequence
   number with existing AEAD schemes.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-dnhpke-07"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-cms-cek-hkdf-sha256">
          <front>
            <title>Encryption Key Derivation in the Cryptographic Message Syntax (CMS) using HKDF with SHA-256</title>
            <author fullname="Russ Housley" initials="R." surname="Housley">
              <organization>Vigil Security, LLC</organization>
            </author>
            <date day="19" month="September" year="2024"/>
            <abstract>
              <t>   This document specifies the derivation of the content-encryption key
   or the content-authenticated-encryption key in the Cryptographic
   Message Syntax (CMS) using HMAC-based Extract-and-Expand Key
   Derivation Function (HKDF) with SHA-256.  The use of this mechanism
   provides protection against where the attacker manipulates the
   content-encryption algorithm identifier or the content-authenticated-
   encryption algorithm identifier.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-cek-hkdf-sha256-05"/>
        </reference>
        <reference anchor="HPKE-IANA" target="https://www.iana.org/assignments/hpke/hpke.xhtml">
          <front>
            <title>Hybrid Public Key Encryption (HPKE) IANA Registry</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date year="2023" month="October"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 872?>

<section anchor="contributors">
      <name>Contributors</name>
      <t>We would like to thank the following individuals for their contributions
to the design of embedding the HPKE output into the COSE structure
following a long and lively mailing list discussion:</t>
      <ul spacing="normal">
        <li>
          <t>Richard Barnes</t>
        </li>
        <li>
          <t>Ilari Liusvaara</t>
        </li>
      </ul>
      <t>Finally, we would like to thank Russ Housley and Brendan Moran for their
contributions to the draft as co-authors of initial versions.</t>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>We would like to thank
John Mattsson,
Mike Prorock,
Michael Richardson,
Thomas Fossati,
and
Göran Selander
for their contributions to the specification.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
