<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.21 (Ruby 3.0.2) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>

<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc docmapping="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-jose-hpke-encrypt-11" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="Use of HPKE in JOSE">Use of Hybrid Public Key Encryption (HPKE) with JSON Object Signing and Encryption (JOSE)</title>

    <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="July" day="07"/>

    <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 Associated 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 title="About This Document" removeInRFC="true">
      <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>

<t><list style="symbols">
  <t>Content Encryption Key (CEK), is defined in <xref target="RFC7517"/>.</t>
  <t>Hybrid Public Key Encryption (HPKE) is defined in <xref target="RFC9180"/>.</t>
  <t>pkR is the public key of the recipient, as defined in <xref target="RFC9180"/>.</t>
  <t>skR is the private key of the recipient, as defined in <xref target="RFC9180"/>.</t>
  <t>Key Encapsulation Mechanism (KEM), see <xref target="RFC9180"/>.</t>
  <t>Key Derivation Function (KDF), see <xref target="RFC9180"/>.</t>
  <t>Authenticated Encryption with Associated Data (AEAD), see <xref target="RFC9180"/>.</t>
  <t>Additional Authenticated Data (AAD), see <xref target="RFC9180"/>.</t>
</list></t>

</section>
<section anchor="overview"><name>Overview</name>

<t>This specification defines two modes of use for HPKE in JWE:</t>

<t><list style="symbols">
  <t>HPKE JWE Integrated Encryption, where HPKE is used to encrypt the plaintext.</t>
  <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>
</list></t>

<t>When "alg" is a JOSE-HPKE algorithm:</t>

<t><list style="symbols">
  <t>If "enc" is "int", HPKE JWE Integrated Encryption is used.</t>
  <t>If "enc" is an AEAD algorithm, the recipient Key Management mode is Key Encryption.</t>
</list></t>

<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>

<t><list style="symbols">
  <t>additional authenticated data</t>
  <t>multiple recipients</t>
  <t>unprotected headers</t>
</list></t>

<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 <spanx style="verb">apu</spanx> and <spanx style="verb">apv</spanx> 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>

<t><list style="symbols">
  <t>The protected header <bcp14>MUST</bcp14> contain an "alg" that is JOSE-HPKE algorithm.</t>
  <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>
  <t>The protected header parameters "psk_id" <bcp14>MAY</bcp14> be present.</t>
  <t>The protected header parameter "ek" <bcp14>MUST NOT</bcp14> be present.</t>
  <t>There <bcp14>MUST</bcp14> be exactly one recipient.</t>
  <t>The JWE Encrypted Key <bcp14>MUST</bcp14> be encapsulated key, as defined in Section 5.1.1 of <xref target="RFC9180"/>.</t>
  <t>The JWE Initialization Vector and JWE Authentication Tag <bcp14>MUST</bcp14> be the empty octet sequence.</t>
  <t>The JWE AAD <bcp14>MAY</bcp14> be present when using the JWE JSON Serialization.</t>
  <t>The JWE Ciphertext is the ciphertext defined in <xref section="5.2" sectionFormat="of" target="RFC9180"/>.</t>
  <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>
  <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>
  <t>Then follow Steps 11-19 of <xref section="5.1" sectionFormat="of" target="RFC7516"/> (Message Encryption).</t>
</list></t>

<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>

<figure><artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

eyJhbGciOiAiSFBLRS0wIiwgImVuYyI6ICJpbnQiLCAia2lkIjogIkc1Tl9fQ3FNdl9r\
SkdpZUdTRnVBdWd2bDBqclFKQ1ozeUt3Vks2c1VNNG8ifQ.BIh6I40uiBbK8-\
UK7nHdo3ISEfgwJ_MF3zWjQzLt00GhFF2-\
1VgWKHSYLXdeVeRV7AinyocYiCYmISvW0yqiDmc..Ov-\
                                    llz6VUyiw8nZL0OPGLGZckLTm5UcTZFg.
]]></artwork></figure>

<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 <spanx style="verb">ECDH-ES+A128KW</spanx> or <spanx style="verb">RSA-OAEP-256</spanx>),
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>

<t><list style="symbols">
  <t>The Key Management Mode is Key Encryption.</t>
  <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>
  <t>JOSE Header parameter "alg" <bcp14>MUST</bcp14> be a JOSE-HPKE algorithm.</t>
  <t>JOSE Header parameter "psk_id" <bcp14>MAY</bcp14> be present.</t>
  <t>JOSE Header parameter "ek" <bcp14>MUST</bcp14> be present and contain the base64url-encoded HPKE encapsulated key.</t>
  <t>Recipient JWE Encrypted Key <bcp14>MUST</bcp14> be the ciphertext from HPKE Encryption.</t>
  <t>The HPKE info parameter defaults to the empty string; mutually known private information <bcp14>MAY</bcp14> be used instead.</t>
  <t>The HPKE AAD parameter <bcp14>MUST</bcp14> be set to the empty string.</t>
  <t>THE HPKE plaintext <bcp14>MUST</bcp14> be set to the CEK.</t>
</list></t>

<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>

<figure><artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

{
  "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></figure>

<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 title="JWK Types and Curves for JOSE-HPKE Ciphersuites" anchor="ciphersuite-kty-crv"><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>

<figure><artwork><![CDATA[
{
  "kty": "OKP",
  "crv": "X25519",
  "x": "3pPHgcHYVYpOpB6ISwHdoPRB6jNgd8mM4nRyyj4H3aE",
  "d": "nWGxne0tAiV8Hk6kcy4rN0wMskjl9yND0N3Xeho9n6g",
  "kid": "recipient-key-1",
  "alg": "HPKE-3",
  "key_ops": "encrypt"
}
]]></artwork></figure>

<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>

<t><list style="symbols">
  <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>
  <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>
</list></t>

</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>

<t><list style="symbols">
  <t>KEM Algorithm</t>
  <t>KDF Algorithm</t>
  <t>AEAD Algorithm</t>
</list></t>

<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>

<t><list style="symbols">
  <t>Algorithm Name: HPKE-0</t>
  <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>
  <t>Algorithm Usage Location(s): "alg"</t>
  <t>JOSE Implementation Requirements: Optional</t>
  <t>Change Controller: IETF</t>
  <t>Specification Document(s): <xref target="alg-mapping"/> of this specification</t>
  <t>Algorithm Analysis Documents(s): <xref target="RFC9180"/></t>
</list></t>

</section>
<section anchor="hpke-1"><name>HPKE-1</name>

<t><list style="symbols">
  <t>Algorithm Name: HPKE-1</t>
  <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>
  <t>Algorithm Usage Location(s): "alg"</t>
  <t>JOSE Implementation Requirements: Optional</t>
  <t>Change Controller: IETF</t>
  <t>Specification Document(s): <xref target="alg-mapping"/> of this specification</t>
  <t>Algorithm Analysis Documents(s): <xref target="RFC9180"/></t>
</list></t>

</section>
<section anchor="hpke-2"><name>HPKE-2</name>

<t><list style="symbols">
  <t>Algorithm Name: HPKE-2</t>
  <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>
  <t>Algorithm Usage Location(s): "alg"</t>
  <t>JOSE Implementation Requirements: Optional</t>
  <t>Change Controller: IETF</t>
  <t>Specification Document(s): <xref target="alg-mapping"/> of this specification</t>
  <t>Algorithm Analysis Documents(s): <xref target="RFC9180"/></t>
</list></t>

</section>
<section anchor="hpke-3"><name>HPKE-3</name>

<t><list style="symbols">
  <t>Algorithm Name: HPKE-3</t>
  <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>
  <t>Algorithm Usage Location(s): "alg"</t>
  <t>JOSE Implementation Requirements: Optional</t>
  <t>Change Controller: IETF</t>
  <t>Specification Document(s): <xref target="alg-mapping"/> of this specification</t>
  <t>Algorithm Analysis Documents(s): <xref target="RFC9180"/></t>
</list></t>

</section>
<section anchor="hpke-4"><name>HPKE-4</name>

<t><list style="symbols">
  <t>Algorithm Name: HPKE-4</t>
  <t>Algorithm Description: Cipher suite for JOSE-HPKE using the DHKEM(X25519, HKDF-SHA256) KEM, the HKDF-SHA256 KDF, and the ChaCha20Poly1305 AEAD</t>
  <t>Algorithm Usage Location(s): "alg"</t>
  <t>JOSE Implementation Requirements: Optional</t>
  <t>Change Controller: IETF</t>
  <t>Specification Document(s): <xref target="alg-mapping"/> of this specification</t>
  <t>Algorithm Analysis Documents(s): <xref target="RFC9180"/></t>
</list></t>

</section>
<section anchor="hpke-5"><name>HPKE-5</name>

<t><list style="symbols">
  <t>Algorithm Name: HPKE-5</t>
  <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>
  <t>Algorithm Usage Location(s): "alg"</t>
  <t>JOSE Implementation Requirements: Optional</t>
  <t>Change Controller: IETF</t>
  <t>Specification Document(s): <xref target="alg-mapping"/> of this specification</t>
  <t>Algorithm Analysis Documents(s): <xref target="RFC9180"/></t>
</list></t>

</section>
<section anchor="hpke-6"><name>HPKE-6</name>

<t><list style="symbols">
  <t>Algorithm Name: HPKE-6</t>
  <t>Algorithm Description: Cipher suite for JOSE-HPKE using the DHKEM(X448, HKDF-SHA512) KEM, the HKDF-SHA512 KDF, and the ChaCha20Poly1305 AEAD</t>
  <t>Algorithm Usage Location(s): "alg"</t>
  <t>JOSE Implementation Requirements: Optional</t>
  <t>Change Controller: IETF</t>
  <t>Specification Document(s): <xref target="alg-mapping"/> of this specification</t>
  <t>Algorithm Analysis Documents(s): <xref target="RFC9180"/></t>
</list></t>

</section>
<section anchor="int"><name>int</name>

<t><list style="symbols">
  <t>Algorithm Name: int</t>
  <t>Algorithm Description: Indicates that HPKE Integrated Encryption is being used</t>
  <t>Algorithm Usage Location(s): "enc"</t>
  <t>JOSE Implementation Requirements: Required</t>
  <t>Change Controller: IETF</t>
  <t>Specification Document(s): <xref target="overview"/> of this specification</t>
  <t>Algorithm Analysis Documents(s): <xref target="RFC9180"/></t>
</list></t>

</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>

<t><list style="symbols">
  <t>Header Parameter Name: "ek"</t>
  <t>Header Parameter Description: A base64url-encoded encapsulated key, as defined in <xref section="5.1.1" sectionFormat="of" target="RFC9180"/></t>
  <t>Header Parameter Usage Location(s): JWE</t>
  <t>Change Controller: IETF</t>
  <t>Specification Document(s): <xref target="encapsulated-keys"/> of this specification</t>
</list></t>

</section>
<section anchor="pskid"><name>psk_id</name>

<t><list style="symbols">
  <t>Header Parameter Name: "psk_id"</t>
  <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>
  <t>Header Parameter Usage Location(s): JWE</t>
  <t>Change Controller: IETF</t>
  <t>Specification Document(s): <xref target="overview"/> of this specification</t>
</list></t>

</section>
</section>
</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<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 year="n.d."/>
  </front>
</reference>


    </references>

    <references title='Informative References' anchor="sec-informative-references">



<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>Tradeverifyd</organization>
      </author>
      <author fullname="Orie Steele" initials="O." surname="Steele">
         <organization>Tradeverifyd</organization>
      </author>
      <date day="7" month="July" 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-08"/>
   
</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 year="n.d."/>
  </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="7" month="July" 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 is a general encryption framework utilizing an asymmetric key
   encapsulation mechanism (KEM), a key derivation function (KDF), and
   an Authenticated Encryption with Associated Data (AEAD) algorithm.

   This document defines the use of HPKE with COSE.  Authentication for
   HPKE in COSE is provided by COSE-native security mechanisms or by the
   pre-shared key authenticated variant of HPKE.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-cose-hpke-15"/>
   
</reference>




    </references>

</references>


<?line 517?>

<section anchor="keys-used"><name>Keys Used in Examples</name>

<t>This private key and its implied public key are used the examples:</t>

<figure><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></figure>

</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>-11</t>

<t><list style="symbols">
  <t>Fix too long lines</t>
</list></t>

<t>-10</t>

<t><list style="symbols">
  <t>Addressed WGLC review comments by Neil Madden and Sebastian Stenzel.</t>
</list></t>

<t>-09</t>

<t><list style="symbols">
  <t>Corrected examples.</t>
</list></t>

<t>-08</t>

<t><list style="symbols">
  <t>Use "enc":"int" for integrated encryption.</t>
  <t>Described reasons for excluding authenticated HPKE.</t>
  <t>Stated that mutually known private information <bcp14>MAY</bcp14> be used as the HPKE info value.</t>
</list></t>

<t>-07</t>

<t><list style="symbols">
  <t>Clarifications</t>
</list></t>

<t>-06</t>

<t><list style="symbols">
  <t>Remove auth mode and auth_kid from the specification.</t>
  <t>HPKE AAD for JOSE HPKE Key Encryption is now empty.</t>
</list></t>

<t>-05</t>

<t><list style="symbols">
  <t>Removed incorrect text about HPKE algorithm names.</t>
  <t>Fixed #21: Comply with NIST SP 800-227 Recommendations for Key-Encapsulation Mechanisms.</t>
  <t>Fixed #19: Binding the Application Context.</t>
  <t>Fixed #18: Use of apu and apv in Recipient context.</t>
  <t>Added new Section 7.1 (Authentication using an Asymmetric Key).</t>
  <t>Updated Section 7.2 (Key Management) to prevent cross-protocol attacks.</t>
  <t>Updated HPKE Setup info parameter to be empty.</t>
  <t>Added details on HPKE AEAD AAD, compression and decryption for HPKE Integrated Encryption.</t>
</list></t>

<t>-04</t>

<t><list style="symbols">
  <t>Fixed #8: Use short algorithm identifiers, per the JOSE naming conventions.</t>
</list></t>

<t>-03</t>

<t><list style="symbols">
  <t>Added new section 7.1 to discuss Key Management.</t>
  <t>HPKE Setup info parameter is updated to carry JOSE context-specific data for both modes.</t>
</list></t>

<t>-02</t>

<t><list style="symbols">
  <t>Fixed #4: HPKE Integrated Encryption "enc: dir".</t>
  <t>Updated text on the use of HPKE Setup info parameter.</t>
  <t>Added Examples in Sections 5.1, 5.2 and 6.1.</t>
  <t>Use of registered HPKE  "alg" value in the recipient unprotected header for Key Encryption.</t>
</list></t>

<t>-01</t>

<t><list style="symbols">
  <t>Apply feedback from call for adoption.</t>
  <t>Provide examples of auth and psk modes for JSON and Compact Serializations</t>
  <t>Simplify description of HPKE modes</t>
  <t>Adjust IANA registration requests</t>
  <t>Remove HPKE Mode from named algorithms</t>
  <t>Fix AEAD named algorithms</t>
</list></t>

<t>-00</t>

<t><list style="symbols">
  <t>Created initial working group version from draft-rha-jose-hpke-encrypt-07</t>
</list></t>

</section>


  </back>

<!-- ##markdown-source:
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
Crr9/wAoh3kygVYAAA==

-->

</rfc>

