<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-jose-hpke-encrypt-09" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.1 -->
  <front>
    <title abbrev="Use of HPKE in JOSE">Use of Hybrid Public Key Encryption (HPKE) with JSON Object Signing and Encryption (JOSE)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-jose-hpke-encrypt-09"/>
    <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>
    <author 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 fullname="Aritra Banerjee">
      <organization>Nokia</organization>
      <address>
        <postal>
          <city>Munich</city>
          <country>Germany</country>
        </postal>
        <email>aritra.banerjee@nokia.com</email>
      </address>
    </author>
    <author initials="O." surname="Steele" fullname="Orie Steele">
      <organization>Tradeverifyd</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>orie@or13.io</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="2025" month="June" day="13"/>
    <area>Security</area>
    <workgroup>JOSE</workgroup>
    <keyword>HPKE</keyword>
    <keyword>JOSE</keyword>
    <keyword>PQC</keyword>
    <keyword>Hybrid</keyword>
    <abstract>
      <?line 102?>

<t>This specification defines Hybrid Public Key Encryption (HPKE) for use with
JSON Object Signing and Encryption (JOSE). HPKE offers a variant of
public key encryption of arbitrary-sized plaintexts for a recipient public key.</t>
      <t>HPKE works for any combination of an asymmetric key encapsulation mechanism (KEM),
key derivation function (KDF), and authenticated encryption with additional data
(AEAD) function.</t>
      <t>This document defines the use of the HPKE with JOSE.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-jose-hpke-encrypt/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        jose Working Group mailing list (<eref target="mailto:jose@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/jose/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/jose/"/>.
      </t>
    </note>
  </front>
  <middle>
    <?line 115?>

<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 specification enables JSON Web Encryption (JWE) to leverage HPKE,
bringing support for KEMs and the possibility of Post Quantum or Hybrid KEMs to JWE.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="conventions-and-terminology">
      <name>Conventions and Terminology</name>
      <t>This specification uses the following abbreviations and terms:</t>
      <ul spacing="normal">
        <li>
          <t>Content Encryption Key (CEK), is defined in <xref target="RFC7517"/>.</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="overview">
      <name>Overview</name>
      <t>This specification describes two modes of use for HPKE in JWE:</t>
      <ul spacing="normal">
        <li>
          <t>HPKE JWE Integrated Encryption, where HPKE is used to encrypt the plaintext.</t>
        </li>
        <li>
          <t>HPKE JWE Key Encryption, where HPKE is used to encrypt a content encryption key (CEK) and the CEK is subsequently used to encrypt the plaintext.</t>
        </li>
      </ul>
      <t>When "alg" is a JOSE-HPKE algorithm:</t>
      <ul spacing="normal">
        <li>
          <t>If "enc" is "int", HPKE JWE Integrated Encryption is used.</t>
        </li>
        <li>
          <t>If "enc" is an AEAD algorithm, the recipient Key Managment mode is Key Encryption.</t>
        </li>
      </ul>
      <t>The HPKE KEM, KDF, and AEAD used depend on the JOSE-HPKE algorithm used.</t>
      <t>HPKE supports several modes, which are described in Table 1 of <xref target="RFC9180"/>.</t>
      <t>In JOSE-HPKE, only "mode_base" and "mode_psk" are supported.
When "psk_id" JOSE Header parameter is present the mode is "mode_psk", otherwise the mode is "mode_base".</t>
      <t>JWE supports different serializations, including Compact JWE Serialization as described in Section 3.1 of <xref target="RFC7516"/>, General JWE JSON Serialization as described in Section 3.2 of <xref target="RFC7516"/>.</t>
      <t>Certain JWE features are only supported in specific serializations.</t>
      <t>For example Compact JWE Serialization does not support the following:</t>
      <ul spacing="normal">
        <li>
          <t>additional authenticated data</t>
        </li>
        <li>
          <t>multiple recipients</t>
        </li>
        <li>
          <t>unprotected headers</t>
        </li>
      </ul>
      <t>HPKE JWE Key Encryption can be used with "aad" but only when not expressed with Compact JWE Serialization.</t>
      <t>Single recipient HPKE JWE Key Encryption with no "aad" can be expressed in Compact JWE Serialization, so long as the recipient and sender use the same HPKE Setup process as described in { Section 5 of RFC9180 }.</t>
      <section anchor="auxiliary-authenticated-application-information">
        <name>Auxiliary Authenticated Application Information</name>
        <t>HPKE has two places at which applications can specify auxiliary authenticated information as described in { Section 8.1 of RFC9180 }.</t>
        <t>HPKE algorithms are not required to process "apu" and "apv" as described in Section 4.6.1 of <xref target="RFC7518"/>, despite appearing to be similar to key agreement algorithms (such as "ECDH-ES").</t>
        <t>The "aad parameter" for Open() and Seal() <bcp14>MUST</bcp14> be used with both HPKE JWE Integrated Encryption and HPKE JWE Key Encryption.</t>
        <t>To avoid confusion between JWE AAD and HPKE AAD, this document uses the term "HPKE AEAD AAD" to refer the "aad parameter" for Open() and Seal().</t>
      </section>
      <section anchor="encapsulated-keys">
        <name>Encapsulated Keys</name>
        <t>HPKE encapsulated key is defined in Section 5.1.1 of <xref target="RFC9180"/>.</t>
        <t>In HPKE JWE Integrated Encryption, the JWE Encrypted Key of the sole recipient is the HPKE encapsulated key.</t>
        <t>In HPKE JWE Key Encryption, each recipient JWE Encrypted Key is the encrypted content encryption key, and the value of JOSE Header parameter "ek"
is base64url-encoded HPKE encapsulated key.</t>
      </section>
    </section>
    <section anchor="integrated-encryption">
      <name>Integrated Encryption</name>
      <t>In HPKE JWE Integrated Encryption:</t>
      <ul spacing="normal">
        <li>
          <t>The protected header <bcp14>MUST</bcp14> contain an "alg" that is JOSE-HPKE algorithm.</t>
        </li>
        <li>
          <t>The protected header <bcp14>MUST</bcp14> contain an "enc" with value "int". This is an explicit exception to requirement in Section 4.1.2 of <xref target="RFC7516"/> that
"enc" must be an AEAD algorithm. This is appropriate, as HPKE will perform plaintext encryption.</t>
        </li>
        <li>
          <t>The protected header parameters "psk_id" <bcp14>MAY</bcp14> be present.</t>
        </li>
        <li>
          <t>The protected header parameter "ek" <bcp14>MUST NOT</bcp14> be present.</t>
        </li>
        <li>
          <t>There <bcp14>MUST</bcp14> be exactly one recipient.</t>
        </li>
        <li>
          <t>The JWE Encrypted Key <bcp14>MUST</bcp14> be encapsulated key as defined in Section 5.1.1 of <xref target="RFC9180"/>.</t>
        </li>
        <li>
          <t>JWE Initialization Vector and JWE Authentication Tag <bcp14>MUST NOT</bcp14> be present.</t>
        </li>
        <li>
          <t>JWE AAD <bcp14>MAY</bcp14> be present.</t>
        </li>
        <li>
          <t>JWE Ciphertext is ciphertext as defined in Section 5.2 of <xref target="RFC9180"/>.</t>
        </li>
        <li>
          <t>The HPKE info parameter defaults to the empty string; mutually known private information <bcp14>MAY</bcp14> be used instead. The concept of mutually known private information is defined in <xref target="NIST.SP.800-56Ar3"/> as an input to the key derivation function.</t>
        </li>
        <li>
          <t>The HPKE aad parameter <bcp14>MUST</bcp14> be set to the "JWE Additional Authenticated Data encryption parameter", as defined in Step 14 of Section 5.1 of <xref target="RFC7516"/>.</t>
        </li>
        <li>
          <t>If protected header contains the parameter "zip" (Section 4.1.3 of <xref target="RFC7516"/>), the plaintext is the message compressed with the indicated algorithm.
Otherwise, the plaintext is the raw message.</t>
        </li>
      </ul>
      <t>When decrypting, the checks in <xref target="RFC7516"/> section 5.2, steps 1 through 5 <bcp14>MUST</bcp14> be performed. The JWE Encrypted Key in step 2 is the
base64url encoded encapsulated key.</t>
      <section anchor="compact-example">
        <name>Compact Example</name>
        <t>A Compact JWE:</t>
        <artwork><![CDATA[
eyJhbGciOiAiSFBLRS0wIiwgImVuYyI6ICJpbnQiLCAia2lkIjogIkc1Tl9fQ3FNdl9rSkdpZUdTRnVBdWd2bDBqclFKQ1ozeUt3Vks2c1VNNG8ifQ.BIh6I40uiBbK8-UK7nHdo3ISEfgwJ_MF3zWjQzLt00GhFF2-1VgWKHSYLXdeVeRV7AinyocYiCYmISvW0yqiDmc..Ov-llz6VUyiw8nZL0OPGLGZckLTm5UcTZFg.
]]></artwork>
      </section>
      <section anchor="json-example">
        <name>JSON Example</name>
        <t>A JSON Encoded JWE:</t>
        <artwork><![CDATA[
{
  "protected": "eyJlbmMiOiAiQTEyOEdDTSJ9",
  "ciphertext": "9AxOd65ROJY1cQ",
  "iv": "2u3NRi3CSr-x7Wuj",
  "tag": "1NKYSWVV4pw5thsq7t6m6Q",
  "recipients": [
    {
      "encrypted_key": "l9VRW1K5CA037fY2ZqVF4bDej413TaAtfjoe3k89-eI",
      "header": {
        "alg": "HPKE-0",
        "kid": "G5N__CqMv_kJGieGSFuAugvl0jrQJCZ3yKwVK6sUM4o",
        "ek": "BJl0V6KLl3HOAZbzFwiAL9eaYbFQPg7-ROmIJpluIQjNS5zultZsC4rGhGzmW1GUWG8bzJUWLQtxFF9oze0AKhU"
      }
    }
  ]
}
]]></artwork>
      </section>
    </section>
    <section anchor="key-encryption">
      <name>Key Encryption</name>
      <t>Recipients using JOSE-HPKE can be added alongside other recpients (e.g., <tt>ECDH-ES+A128KW</tt> or <tt>RSA-OAEP-384</tt>), as HPKE is used to encrypt the
Content Encryption Key, which is then processed as specified in JWE.</t>
      <t>The encoding of the protected header encoding remains consistent with existing JWE formatting rules.</t>
      <t>In HPKE JWE Key Encryption:</t>
      <ul spacing="normal">
        <li>
          <t>The Key Management Mode is Key Encryption.</t>
        </li>
        <li>
          <t>When all recipients use the same HPKE algorithm to secure the Content Encryption Key, the JWE Protected Header <bcp14>SHOULD</bcp14> contain "alg".
Otherwise, the JWE Protected Header (and JWE Shared Unprotected Header) <bcp14>MUST NOT</bcp14> contain "alg".</t>
        </li>
        <li>
          <t>JOSE Header parameter "alg" <bcp14>MUST</bcp14> be a JOSE-HPKE algorithm.</t>
        </li>
        <li>
          <t>JOSE Header parameter "psk_id" <bcp14>MAY</bcp14> be present.</t>
        </li>
        <li>
          <t>JOSE Header parameter "ek" <bcp14>MUST</bcp14> be present and contain base64url-encoded HPKE encapsulated key.</t>
        </li>
        <li>
          <t>Recipient JWE Encrypted Key <bcp14>MUST</bcp14> be the ciphertext from HPKE Encryption.</t>
        </li>
        <li>
          <t>The HPKE info parameter defaults to the empty string; mutually known private information <bcp14>MAY</bcp14> be used instead.</t>
        </li>
        <li>
          <t>The HPKE AAD parameter <bcp14>MUST</bcp14> be set to the empty string.</t>
        </li>
        <li>
          <t>THE HPKE plaintext <bcp14>MUST</bcp14> be set to the CEK.</t>
        </li>
      </ul>
      <t>The processing of "enc", "iv", "tag", "aad", and "ciphertext" is already defined in <xref target="RFC7516"/>. Implementations should follow the existing
JWE specifications for handling these parameters, and no additional processing requirements are introduced by HPKE-based key encryption.</t>
    </section>
    <section anchor="alg-mapping">
      <name>Mapping HPKE Keys to JWK for JOSE</name>
      <t>JWKs can be used to represent JOSE-HPKE private or public keys. For the algorithms defined in this document, the valid combinations of the
JWE Algorithm, "kty", and "crv" are shown in <xref target="ciphersuite-kty-crv"/>.</t>
      <figure anchor="ciphersuite-kty-crv">
        <name>JWK Types and Curves for JOSE-HPKE Ciphersuites</name>
        <artwork><![CDATA[
+---------------------+-----------------+
| JWE Algorithm       | JWK |           |
|                     | kty | crv       |
+---------------------+-----+-----------+
| HPKE-0                    | EC  | P-256     |
| HPKE-1                | EC  | P-384     |
| HPKE-2              | EC  | P-521     |
| HPKE-3, HPKE-4      | OKP | X25519    |
| HPKE-5, HPKE-6      | OKP | X448      |
+---------------------+-----+-----------+
]]></artwork>
      </figure>
      <t>When the "kty" field is "AKP" and "alg" is a JOSE-HPKE algorithm, the public and private keys <bcp14>MUST</bcp14> be raw HPKE public and private keys (respectively)
for the KEM used by HPKE.</t>
      <section anchor="jwk-representation-of-a-jose-hpke-key-with-hpke-ciphersuite">
        <name>JWK Representation of a JOSE-HPKE Key with HPKE Ciphersuite</name>
        <t>An example is illustrated below for representing a JOSE-HPKE public/private keys.</t>
        <artwork><![CDATA[
{
  "kty": "OKP",
  "crv": "X25519",
  "x": "3pPHgcHYVYpOpB6ISwHdoPRB6jNgd8mM4nRyyj4H3aE",
  "d": "nWGxne0tAiV8Hk6kcy4rN0wMskjl9yND0N3Xeho9n6g",
  "kid": "recipient-key-1",
  "alg": "HPKE-3",
  "key_ops": "encrypt"
}
]]></artwork>
      </section>
    </section>
    <section anchor="security-considerations">
      <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>HPKE assumes the sender is in possession of the public key of the recipient and
HPKE JOSE makes the same assumptions. Hence, some form of public key distribution
mechanism is assumed to exist but outside the scope of this document.</t>
      <t>HPKE in Base mode does not offer authentication as part of the HPKE KEM.
In this case JOSE constructs like JWS and JSON Web Tokens (JWTs) can be used to add authentication.
HPKE also offers modes that offer authentication.</t>
      <t>HPKE relies on a source of randomness to be available on the device.
In Key Agreement with Key Wrapping mode, CEK has to be randomly generated and it <bcp14>MUST</bcp14> be ensured that the guidelines in <xref target="RFC8937"/> for random number generations are followed.</t>
      <section anchor="key-management">
        <name>Key Management</name>
        <t>A single KEM key <bcp14>MUST NOT</bcp14> be used with multiple algorithms.  Each key and its
associated algorithm suite, comprising the KEM, KDF, and AEAD, should be managed independently.  This separation prevents unintended
interactions or vulnerabilities between suites, ensuring the integrity and security guarantees of each algorithm suite are
preserved.  Additionally, the same key <bcp14>MUST NOT</bcp14> be used for both key encryption and integrated encryption, as it may introduce security risks.
It creates algorithm confusion, increases the potential for key leakage, cross-suite attacks, and improper handling of the key.</t>
        <t>A single recipient or sender key <bcp14>MUST NOT</bcp14> be used with both JOSE-HPKE and other algorithms as this might enable cross-protocol attacks.</t>
      </section>
      <section anchor="plaintext-compression">
        <name>Plaintext Compression</name>
        <t>Implementers are advised to review Section 3.6 of <xref target="RFC8725"/>, which states:
Compression of data <bcp14>SHOULD NOT</bcp14> be done before encryption, because such compressed data often reveals information about the plaintext.</t>
      </section>
      <section anchor="header-parameters">
        <name>Header Parameters</name>
        <t>Implementers are advised to review Section 3.10 of <xref target="RFC8725"/>, which comments on application processing of JWE Protected Headers.
Additionally, Unprotected Headers can contain similar information which an attacker could leverage to mount denial of service, forgery or injection attacks.</t>
      </section>
      <section anchor="ensure-cryptographic-keys-have-sufficient-entropy">
        <name>Ensure Cryptographic Keys Have Sufficient Entropy</name>
        <t>Implementers are advised to review Section 3.5 of <xref target="RFC8725"/>, which provides comments on entropy requirements for keys.
This guidance is relevant to both public and private keys used in both Key Encryption and Integrated Encryption.
Additionally, this guidance is applicable to content encryption keys used in Key Encryption mode.</t>
      </section>
      <section anchor="validate-cryptographic-inputs">
        <name>Validate Cryptographic Inputs</name>
        <t>Implementers are advised to review Section 3.4 of <xref target="RFC8725"/>, which provides comments on the validation of cryptographic inputs.
This guidance is relevant to both public and private keys used in both Key Encryption and Integrated Encryption, specifically focusing on the structure of the public and private keys.
These inputs are crucial for the HPKE KEM operations.</t>
      </section>
      <section anchor="use-appropriate-algorithms">
        <name>Use Appropriate Algorithms</name>
        <t>Implementers are advised to review Section 3.2 of <xref target="RFC8725"/>, which comments on the selection of appropriate algorithms.
This is guidance is relevant to both Key Encryption and Integrated Encryption.
When using Key Encryption, the strength of the content encryption algorithm should not be significantly different from the strengh of the Key Encryption algorithms used.</t>
      </section>
      <section anchor="static-asymmetric-authentication-in-hpke">
        <name>Static Asymmetric Authentication in HPKE</name>
        <t>Authenticated KEMs based on static asymmetric key authentication are not supported in JOSE HPKE for the following reasons:</t>
        <ul spacing="normal">
          <li>
            <t>The security implications vary depending on whether they are applied to Key Encryption or Integrated Encryption. When used for Key Encryption, authenticated KEMs offer little meaningful security benefit and may give a false impression of data origin authentication.</t>
          </li>
          <li>
            <t>Authenticated KEMs are susceptible to Key-Compromise Impersonation (KCI) attacks. If the sender's static private key is
compromised, an attacker can generate ciphertexts that the recipient will accept as authentic, compromising message integrity.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>This document adds entries to <xref target="JOSE-IANA"/>.</t>
      <section anchor="ciphersuite-registration">
        <name>Ciphersuite Registration</name>
        <t>This specification registers a number of ciphersuites for use with HPKE.
A ciphersuite is a group of algorithms, often sharing component algorithms such as hash functions, targeting a security level.
A JOSE-HPKE algorithm, is composed of the following choices:</t>
        <ul spacing="normal">
          <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>
      </section>
      <section anchor="json-web-signature-and-encryption-algorithms">
        <name>JSON Web Signature and Encryption Algorithms</name>
        <t>The following entries are added to the "JSON Web Signature and Encryption Algorithms" registry:</t>
        <section anchor="hpke-0">
          <name>HPKE-0</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-0</t>
            </li>
            <li>
              <t>Algorithm Description: Cipher suite for JOSE-HPKE using the DHKEM(P-256, HKDF-SHA256) KEM, the HKDF-SHA256 KDF and the AES-128-GCM AEAD.</t>
            </li>
            <li>
              <t>Algorithm Usage Location(s): "alg"</t>
            </li>
            <li>
              <t>JOSE Implementation Requirements: Optional</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="alg-mapping"/> of this specification</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref target="RFC9180"/></t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-1">
          <name>HPKE-1</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-1</t>
            </li>
            <li>
              <t>Algorithm Description: Cipher suite for JOSE-HPKE using the DHKEM(P-384, HKDF-SHA384) KEM, the HKDF-SHA384 KDF, and the AES-256-GCM AEAD.</t>
            </li>
            <li>
              <t>Algorithm Usage Location(s): "alg"</t>
            </li>
            <li>
              <t>JOSE Implementation Requirements: Optional</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="alg-mapping"/> of this specification</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref target="RFC9180"/></t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-2">
          <name>HPKE-2</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-2</t>
            </li>
            <li>
              <t>Algorithm Description: Cipher suite for JOSE-HPKE using the DHKEM(P-521, HKDF-SHA512) KEM, the HKDF-SHA512 KDF, and the AES-256-GCM AEAD.</t>
            </li>
            <li>
              <t>Algorithm Usage Location(s): "alg"</t>
            </li>
            <li>
              <t>JOSE Implementation Requirements: Optional</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="alg-mapping"/> of this specification</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref target="RFC9180"/></t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-3">
          <name>HPKE-3</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-3</t>
            </li>
            <li>
              <t>Algorithm Description: Cipher suite for JOSE-HPKE using the DHKEM(X25519, HKDF-SHA256) KEM, the HKDF-SHA256 KDF, and the AES-128-GCM AEAD.</t>
            </li>
            <li>
              <t>Algorithm Usage Location(s): "alg"</t>
            </li>
            <li>
              <t>JOSE Implementation Requirements: Optional</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="alg-mapping"/> of this specification</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref target="RFC9180"/></t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-4">
          <name>HPKE-4</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-4</t>
            </li>
            <li>
              <t>Algorithm Description: Cipher suite for JOSE-HPKE using the DHKEM(X25519, HKDF-SHA256) KEM, the HKDF-SHA256 KDF, and the ChaCha20Poly1305 AEAD.</t>
            </li>
            <li>
              <t>Algorithm Usage Location(s): "alg"</t>
            </li>
            <li>
              <t>JOSE Implementation Requirements: Optional</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="alg-mapping"/> of this specification</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref target="RFC9180"/></t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-5">
          <name>HPKE-5</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-5</t>
            </li>
            <li>
              <t>Algorithm Description: Cipher suite for JOSE-HPKE using the DHKEM(X448, HKDF-SHA512) KEM, the HKDF-SHA512 KDF, and the AES-256-GCM AEAD.</t>
            </li>
            <li>
              <t>Algorithm Usage Location(s): "alg"</t>
            </li>
            <li>
              <t>JOSE Implementation Requirements: Optional</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="alg-mapping"/> of this specification</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref target="RFC9180"/></t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-6">
          <name>HPKE-6</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-6</t>
            </li>
            <li>
              <t>Algorithm Description: Cipher suite for JOSE-HPKE using the DHKEM(X448, HKDF-SHA512) KEM, the HKDF-SHA512 KDF, and the ChaCha20Poly1305 AEAD.</t>
            </li>
            <li>
              <t>Algorithm Usage Location(s): "alg"</t>
            </li>
            <li>
              <t>JOSE Implementation Requirements: Optional</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="alg-mapping"/> of this specification</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref target="RFC9180"/></t>
            </li>
          </ul>
        </section>
        <section anchor="int">
          <name>int</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: "int"</t>
            </li>
            <li>
              <t>Algorithm Description: Indicates that Integrated Encryption is being used</t>
            </li>
            <li>
              <t>Algorithm Usage Location(s): "enc"</t>
            </li>
            <li>
              <t>JOSE Implementation Requirements: Required</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="overview"/> of this specification</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref target="RFC9180"/></t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="json-web-signature-and-encryption-header-parameters">
        <name>JSON Web Signature and Encryption Header Parameters</name>
        <t>The following entries are added to the "JSON Web Key Parameters" registry:</t>
        <section anchor="ek">
          <name>ek</name>
          <ul spacing="normal">
            <li>
              <t>Header Parameter Name: "ek"</t>
            </li>
            <li>
              <t>Header Parameter Description: An encapsulated key as defined in { Section 5.1.1 of RFC9180 }</t>
            </li>
            <li>
              <t>Header Parameter Usage Location(s): JWE</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="encapsulated-keys"/> of this specification</t>
            </li>
          </ul>
        </section>
        <section anchor="pskid">
          <name>psk_id</name>
          <ul spacing="normal">
            <li>
              <t>Header Parameter Name: "psk_id"</t>
            </li>
            <li>
              <t>Header Parameter Description: A key identifier (kid) for the pre-shared key as defined in { Section 5.1.2 of RFC9180 }</t>
            </li>
            <li>
              <t>Header Parameter Usage Location(s): JWE</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="overview"/> of this specification</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="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="RFC7516">
          <front>
            <title>JSON Web Encryption (JWE)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Hildebrand" initials="J." surname="Hildebrand"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Encryption (JWE) represents encrypted content using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries defined by that specification. Related digital signature and Message Authentication Code (MAC) capabilities are described in the separate JSON Web Signature (JWS) specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7516"/>
          <seriesInfo name="DOI" value="10.17487/RFC7516"/>
        </reference>
        <reference anchor="RFC7518">
          <front>
            <title>JSON Web Algorithms (JWA)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification registers cryptographic algorithms and identifiers to be used with the JSON Web Signature (JWS), JSON Web Encryption (JWE), and JSON Web Key (JWK) specifications. It defines several IANA registries for these identifiers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7518"/>
          <seriesInfo name="DOI" value="10.17487/RFC7518"/>
        </reference>
        <reference anchor="RFC7517">
          <front>
            <title>JSON Web Key (JWK)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key. This specification also defines a JWK Set JSON data structure that represents a set of JWKs. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries established by that specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7517"/>
          <seriesInfo name="DOI" value="10.17487/RFC7517"/>
        </reference>
        <reference anchor="RFC8725">
          <front>
            <title>JSON Web Token Best Current Practices</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="D. Hardt" initials="D." surname="Hardt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>JSON Web Tokens, also known as JWTs, are URL-safe JSON-based security tokens that contain a set of claims that can be signed and/or encrypted. JWTs are being widely used and deployed as a simple security token format in numerous protocols and applications, both in the area of digital identity and in other application areas. This Best Current Practices document updates RFC 7519 to provide actionable guidance leading to secure implementation and deployment of JWTs.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="225"/>
          <seriesInfo name="RFC" value="8725"/>
          <seriesInfo name="DOI" value="10.17487/RFC8725"/>
        </reference>
        <reference anchor="JOSE-IANA" target="https://www.iana.org/assignments/jose/jose.xhtml">
          <front>
            <title>JSON Web Signature and Encryption Algorithms</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <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="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>
        <reference anchor="NIST.SP.800-56Ar3" target="https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf">
          <front>
            <title>Recommendation for Pair-Wise Key-Establishment Schemes Using Discrete Logarithm Cryptography, NIST Special Publication 800-56A Revision 3</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2018" month="April"/>
          </front>
        </reference>
        <reference anchor="I-D.ietf-cose-hpke">
          <front>
            <title>Use of Hybrid Public-Key Encryption (HPKE) with CBOR Object Signing and Encryption (COSE)</title>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
            </author>
            <author fullname="Orie Steele" initials="O." surname="Steele">
              <organization>Transmute</organization>
            </author>
            <author fullname="Ajitomi, Daisuke" initials="A." surname="Daisuke">
              <organization>bibital</organization>
            </author>
            <author fullname="Laurence Lundblade" initials="L." surname="Lundblade">
              <organization>Security Theory LLC</organization>
            </author>
            <date day="4" month="June" year="2025"/>
            <abstract>
              <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.

   HPKE works for any combination of an asymmetric key encapsulation
   mechanism (KEM), key derivation function (KDF), and authenticated
   encryption with additional data (AEAD) function.  Authentication for
   HPKE in COSE is provided by COSE-native security mechanisms or by the
   pre-shared key authenticated variant of HPKE.

   This document defines the use of the HPKE with COSE.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-hpke-13"/>
        </reference>
      </references>
    </references>
    <?line 514?>

<section anchor="keys-used-in-examples">
      <name>Keys Used in Examples</name>
      <t>This private key and its implied public key are used the examples:</t>
      <sourcecode type="text"><![CDATA[
{
  "kty": "EC",
  "use": "enc",
  "alg": "HPKE-0",
  "kid": "G5N__CqMv_kJGieGSFuAugvl0jrQJCZ3yKwVK6sUM4o",
  "crv": "P-256",
  "x": "gixQJ0qg4Ag-6HSMaIEDL_zbDhoXavMyKlmdn__AQVE",
  "y": "ZxTgRLWaKONCL_GbZKLNPsW9EW6nBsN4AwQGEFAFFbM",
  "d": "g2DXtKapi2oN2zL_RCWX8D4bWURHCKN2-ZNGC05ZaR8"
}
]]></sourcecode>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This specification leverages text from <xref target="I-D.ietf-cose-hpke"/>.
We would like to thank
Matt Chanda,
Ilari Liusvaara,
Aaron Parecki,
and Filip Skokan
for their contributions to the specification.</t>
    </section>
    <section numbered="false" anchor="document-history">
      <name>Document History</name>
      <t>-09</t>
      <ul spacing="normal">
        <li>
          <t>Corrected examples.</t>
        </li>
      </ul>
      <t>-08</t>
      <ul spacing="normal">
        <li>
          <t>Use "enc":"int" for integrated encryption.</t>
        </li>
        <li>
          <t>Described reasons for excluding authenticated HPKE.</t>
        </li>
        <li>
          <t>Stated that mutually known private information <bcp14>MAY</bcp14> be used as the HPKE info value.</t>
        </li>
      </ul>
      <t>-07</t>
      <ul spacing="normal">
        <li>
          <t>Clarifications</t>
        </li>
      </ul>
      <t>-06</t>
      <ul spacing="normal">
        <li>
          <t>Remove auth mode and auth_kid from the specification.</t>
        </li>
        <li>
          <t>HPKE AAD for JOSE HPKE Key Encryption is now empty.</t>
        </li>
      </ul>
      <t>-05</t>
      <ul spacing="normal">
        <li>
          <t>Removed incorrect text about HPKE algorithm names.</t>
        </li>
        <li>
          <t>Fixed #21: Comply with NIST SP 800-227 Recommendations for Key-Encapsulation Mechanisms.</t>
        </li>
        <li>
          <t>Fixed #19: Binding the Application Context.</t>
        </li>
        <li>
          <t>Fixed #18: Use of apu and apv in Recipeint context.</t>
        </li>
        <li>
          <t>Added new Section 7.1 (Authentication using an Asymmetric Key).</t>
        </li>
        <li>
          <t>Updated Section 7.2 (Key Management) to prevent cross-protocol attacks.</t>
        </li>
        <li>
          <t>Updated HPKE Setup info parameter to be empty.</t>
        </li>
        <li>
          <t>Added details on HPKE AEAD AAD, compression and decryption for HPKE Integrated Encryption.</t>
        </li>
      </ul>
      <t>-04</t>
      <ul spacing="normal">
        <li>
          <t>Fixed #8: Use short algorithm identifiers, per the JOSE naming conventions.</t>
        </li>
      </ul>
      <t>-03</t>
      <ul spacing="normal">
        <li>
          <t>Added new section 7.1 to discuss Key Management.</t>
        </li>
        <li>
          <t>HPKE Setup info parameter is updated to carry JOSE context-specific data for both modes.</t>
        </li>
      </ul>
      <t>-02</t>
      <ul spacing="normal">
        <li>
          <t>Fixed #4: HPKE Integrated Encryption "enc: dir".</t>
        </li>
        <li>
          <t>Updated text on the use of HPKE Setup info parameter.</t>
        </li>
        <li>
          <t>Added Examples in Sections 5.1, 5.2 and 6.1.</t>
        </li>
        <li>
          <t>Use of registered HPKE  "alg" value in the recipient unprotected header for Key Encryption.</t>
        </li>
      </ul>
      <t>-01</t>
      <ul spacing="normal">
        <li>
          <t>Apply feedback from call for adoption.</t>
        </li>
        <li>
          <t>Provide examples of auth and psk modes for JSON and Compact Serializations</t>
        </li>
        <li>
          <t>Simplify description of HPKE modes</t>
        </li>
        <li>
          <t>Adjust IANA registration requests</t>
        </li>
        <li>
          <t>Remove HPKE Mode from named algorithms</t>
        </li>
        <li>
          <t>Fix AEAD named algorithms</t>
        </li>
      </ul>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>Created initial working group version from draft-rha-jose-hpke-encrypt-07</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
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
LbG+roGoFxCHQ7bo/cPbxv8DGce7Oj1ZAAA=

-->

</rfc>
