<?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-10" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <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-10"/>
    <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="20"/>
    <area>Security</area>
    <workgroup>JOSE</workgroup>
    <keyword>HPKE</keyword>
    <keyword>JOSE</keyword>
    <keyword>JWE</keyword>
    <keyword>Hybrid</keyword>
    <abstract>
      <?line 103?>

<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 is a general encryption framework utilizing
an asymmetric key encapsulation mechanism (KEM), a key derivation function (KDF),
and an authenticated encryption with additional data (AEAD) algorithm.</t>
      <t>This document defines the use of HPKE with JOSE.
The specification chooses a specific subset of the HPKE features to use with JOSE.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ietf-wg-jose.github.io/draft-ietf-jose-hpke-encrypt/draft-ietf-jose-hpke-encrypt.html"/>.
        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>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-wg-jose/draft-ietf-jose-hpke-encrypt"/>.</t>
    </note>
  </front>
  <middle>
    <?line 118?>

<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 defines 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 Management 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 <xref section="5" sectionFormat="of" target="RFC9180"/>.</t>
      <t>This specification updates the "enc" definition in Section 4.1.2 of <xref target="RFC7516"/>
by allowing the "enc" value "int" when the "alg" value is a JOSE-HPKE algorithm.
When "alg" is not a JOSE-HPKE algorithm and the "enc" value is "int",
the input <bcp14>MUST</bcp14> be rejected.</t>
      <section anchor="auxiliary-authenticated-application-information">
        <name>Auxiliary Authenticated Application Information</name>
        <t>The HPKE "aad parameter" for Open() and Seal()
specified in <xref section="8.1" sectionFormat="of" target="RFC9180"/>
is used with both HPKE JWE Integrated Encryption and HPKE JWE Key Encryption.
Its value is the Additional Authenticated Data encryption parameter value
computed in Step 14 of <xref section="5.1" sectionFormat="of" target="RFC7518"/> (Message Encryption).</t>
        <t>Despite similarities to ECDH-ES,
this specification does not use the <tt>apu</tt> and <tt>apv</tt> header parameters,
which are described in Section 4.6.1 of <xref target="RFC7518"/>.</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>The JWE Initialization Vector and JWE Authentication Tag <bcp14>MUST</bcp14> be the empty octet sequence.</t>
        </li>
        <li>
          <t>The JWE AAD <bcp14>MAY</bcp14> be present when using the JWE JSON Serialization.</t>
        </li>
        <li>
          <t>The JWE Ciphertext is the ciphertext defined in <xref section="5.2" sectionFormat="of" 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 "Additional Authenticated Data encryption parameter", as specified in Step 14 of <xref section="5.1" sectionFormat="of" target="RFC7516"/>.</t>
        </li>
        <li>
          <t>Then follow Steps 11-19 of <xref section="5.1" sectionFormat="of" target="RFC7516"/> (Message Encryption).</t>
        </li>
      </ul>
      <t>When decrypting, the checks in <xref section="5.2" sectionFormat="of" target="RFC7516"/>,
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>Below is an example of a Compact JWE using HPKE integrated encryption:</t>
        <artwork><![CDATA[
eyJhbGciOiAiSFBLRS0wIiwgImVuYyI6ICJpbnQiLCAia2lkIjogIkc1Tl9fQ3FNdl9rSkdpZUdTRnVBdWd2bDBqclFKQ1ozeUt3Vks2c1VNNG8ifQ.BIh6I40uiBbK8-UK7nHdo3ISEfgwJ_MF3zWjQzLt00GhFF2-1VgWKHSYLXdeVeRV7AinyocYiCYmISvW0yqiDmc..Ov-llz6VUyiw8nZL0OPGLGZckLTm5UcTZFg.
]]></artwork>
        <t>The keys used for this example are in <xref target="keys-used"/>.</t>
      </section>
    </section>
    <section anchor="key-encryption">
      <name>Key Encryption</name>
      <t>When using the JWE JSON Serialization,
recipients using JOSE-HPKE can be added alongside other recipients
(e.g., those using <tt>ECDH-ES+A128KW</tt> or <tt>RSA-OAEP-256</tt>),
since 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 remains consistent with existing JWE 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 the 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 as already defined in <xref target="RFC7516"/>.
Implementations process these parameters as defined in <xref target="RFC7516"/>;
no additional processing requirements are introduced by HPKE-based key encryption.</t>
      <section anchor="json-example">
        <name>JSON Example</name>
        <t>Below is an example of a JWE using the JSON Serialization and HPKE key encryption:</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>
        <t>The keys used for this example are in <xref target="keys-used"/>.</t>
      </section>
    </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" (Algorithm Key Pair <xref target="I-D.ietf-cose-dilithium"/>) 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>The example below is a JWK representation of a JOSE-HPKE public and private key:</t>
        <artwork><![CDATA[
{
  "kty": "OKP",
  "crv": "X25519",
  "x": "3pPHgcHYVYpOpB6ISwHdoPRB6jNgd8mM4nRyyj4H3aE",
  "d": "nWGxne0tAiV8Hk6kcy4rN0wMskjl9yND0N3Xeho9n6g",
  "kid": "recipient-key-1",
  "alg": "HPKE-3",
  "key_ops": "encrypt"
}
]]></artwork>
        <t>It uses the "key_ops" value of "encrypt",
which is appropriate when using integrated encryption.</t>
      </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.</t>
      <t>HPKE relies on a source of randomness being available on the device.
In Key Agreement with Key Wrapping mode, the CEK has to be randomly generated.
The guidance on randomness in <xref target="RFC4086"/> applies.</t>
      <section anchor="key-management">
        <name>Key Management</name>
        <t>A single KEM key should not 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 algorithms,
ensuring the integrity and security guarantees of each algorithm are preserved.
Additionally, the same key should not 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>
      </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 anchor="review-jwt-best-current-practices">
        <name>Review JWT Best Current Practices</name>
        <t>The guidance in <xref target="RFC8725"/> about encryption is also pertinent to this specification.</t>
      </section>
    </section>
    <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 makes choices for the following HPKE parameters:</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 IANA HPKE registry <xref target="IANA.HPKE"/>.</t>
      <t>All JOSE-HPKE algorithm identifiers registered by this specification begin with the string "HPKE-".
Future JOSE-HPKE ciphersuite names registered <bcp14>MUST</bcp14> also follow this convention.</t>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <section anchor="json-web-signature-and-encryption-algorithms">
        <name>JSON Web Signature and Encryption Algorithms</name>
        <t>The following entries are added to the IANA "JSON Web Signature and Encryption Algorithms" registry <xref target="IANA.JOSE"/>:</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 HPKE 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 IANA "JSON Web Key Parameters" registry <xref target="IANA.JOSE"/>:</t>
        <section anchor="ek">
          <name>ek</name>
          <ul spacing="normal">
            <li>
              <t>Header Parameter Name: "ek"</t>
            </li>
            <li>
              <t>Header Parameter Description: A base64url-encoded encapsulated key, as defined in <xref section="5.1.1" sectionFormat="of" target="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 base64url-encoded key identifier (kid) for the pre-shared key, as defined in <xref section="5.1.2" sectionFormat="of" target="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="IANA.JOSE" target="https://www.iana.org/assignments/jose">
          <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="RFC4086">
          <front>
            <title>Randomness Requirements for Security</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <author fullname="J. Schiller" initials="J." surname="Schiller"/>
            <author fullname="S. Crocker" initials="S." surname="Crocker"/>
            <date month="June" year="2005"/>
            <abstract>
              <t>Security systems are built on strong cryptographic algorithms that foil pattern analysis attempts. However, the security of these systems is dependent on generating secret quantities for passwords, cryptographic keys, and similar quantities. The use of pseudo-random processes to generate secret quantities can result in pseudo-security. A sophisticated attacker may find it easier to reproduce the environment that produced the secret quantities and to search the resulting small set of possibilities than to locate the quantities in the whole of the potential number space.</t>
              <t>Choosing random quantities to foil a resourceful and motivated adversary is surprisingly difficult. This document points out many pitfalls in using poor entropy sources or traditional pseudo-random number generation techniques for generating such quantities. It recommends the use of truly random hardware techniques and shows that the existing hardware on many systems can be used for this purpose. It provides suggestions to ameliorate the problem when a hardware solution is not available, and it gives examples of how large such quantities need to be for some applications. 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="106"/>
          <seriesInfo name="RFC" value="4086"/>
          <seriesInfo name="DOI" value="10.17487/RFC4086"/>
        </reference>
        <reference anchor="I-D.ietf-cose-dilithium">
          <front>
            <title>ML-DSA for JOSE and COSE</title>
            <author fullname="Michael Prorock" initials="M." surname="Prorock">
              <organization>mesur.io</organization>
            </author>
            <author fullname="Orie Steele" initials="O." surname="Steele">
              <organization>Transmute</organization>
            </author>
            <author fullname="Rafael Misoczki" initials="R." surname="Misoczki">
              <organization>Google</organization>
            </author>
            <author fullname="Michael Osborne" initials="M." surname="Osborne">
              <organization>IBM</organization>
            </author>
            <author fullname="Christine Cloostermans" initials="C." surname="Cloostermans">
              <organization>NXP</organization>
            </author>
            <date day="12" month="June" year="2025"/>
            <abstract>
              <t>   This document describes JSON Object Signing and Encryption (JOSE) and
   CBOR Object Signing and Encryption (COSE) serializations for Module-
   Lattice-Based Digital Signature Standard (ML-DSA), a Post-Quantum
   Cryptography (PQC) digital signature scheme defined in FIPS 204.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-dilithium-07"/>
        </reference>
        <reference anchor="IANA.HPKE" target="https://www.iana.org/assignments/hpke">
          <front>
            <title>Hybrid Public Key Encryption (HPKE)</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="NIST.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 508?>

<section anchor="keys-used">
      <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,
Neil Madden,
Aaron Parecki,
Filip Skokan,
and
Sebastian Stenzel
for their contributions to the specification.</t>
    </section>
    <section numbered="false" anchor="document-history">
      <name>Document History</name>
      <t>-10</t>
      <ul spacing="normal">
        <li>
          <t>Addressed WGLC review comments by Neil Madden and Sebastian Stenzel.</t>
        </li>
      </ul>
      <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 Recipient 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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
AAA=

-->

</rfc>
