<?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.39 (Ruby 3.2.3) -->
<?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-19" category="std" consensus="true" submissionType="IETF" updates="7516" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="Use of HPKE in JWE">Use of Hybrid Public Key Encryption (HPKE) with JSON Web Encryption (JWE)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-jose-hpke-encrypt-19"/>
    <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>London</city>
          <country>United Kingdom</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="2026" month="June" day="11"/>
    <area>Security</area>
    <workgroup>JOSE</workgroup>
    <keyword>Hybrid Public Key Encryption</keyword>
    <keyword>HPKE</keyword>
    <keyword>JSON Web Encryption</keyword>
    <keyword>JWE</keyword>
    <keyword>JSON Object Signing and Encryption</keyword>
    <keyword>JOSE</keyword>
    <keyword>Hybrid</keyword>
    <abstract>
      <?line 111?>

<t>This specification defines how to use Hybrid Public Key Encryption (HPKE) with
JSON Web Encryption (JWE).
HPKE enables public key encryption
of arbitrary-sized plaintexts to a recipient's public key, and provides security
against adaptive chosen ciphertext attacks.
This specification chooses a specific subset of the HPKE features to use with JWE.</t>
      <t>This specification updates RFC 7516 (JWE) to enable use of
Integrated Encryption as a Key Management Mode.</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 123?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Hybrid Public Key Encryption (HPKE) <xref target="I-D.ietf-hpke-hpke"/> is a public key encryption
(PKE) scheme that provides encryption of arbitrary-sized plaintexts to a
recipient's public key.
This specification enables JSON Web Encryption (JWE) <xref target="RFC7516"/> to leverage HPKE,
bringing support for HPKE encryption and KEMs to JWE,
and the possibility of utilizing future HPKE algorithms.</t>
    </section>
    <section anchor="notational-conventions">
      <name>Notational Conventions</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="terminology">
      <name>Terminology</name>
      <t>This specification uses the following abbreviations and terms:</t>
      <ul spacing="normal">
        <li>
          <t>Content Encryption Key (CEK), Header Parameter, and JOSE Header,
as defined in <xref target="RFC7516"/>.</t>
        </li>
        <li>
          <t>Hybrid Public Key Encryption (HPKE), as defined in <xref target="I-D.ietf-hpke-hpke"/>.</t>
        </li>
        <li>
          <t>pkR is the public key of the recipient, as defined in <xref target="I-D.ietf-hpke-hpke"/>.</t>
        </li>
        <li>
          <t>skR is the private key of the recipient, as defined in <xref target="I-D.ietf-hpke-hpke"/>.</t>
        </li>
        <li>
          <t>Key Encapsulation Mechanism (KEM), per <xref target="I-D.ietf-hpke-hpke"/>.</t>
        </li>
        <li>
          <t>Key Derivation Function (KDF), per <xref target="I-D.ietf-hpke-hpke"/>.</t>
        </li>
        <li>
          <t>Authenticated Encryption with Associated Data (AEAD); see <xref target="I-D.ietf-hpke-hpke"/> and <xref target="RFC7516"/>.</t>
        </li>
        <li>
          <t>Additional Authenticated Data (AAD); see <xref target="I-D.ietf-hpke-hpke"/> and <xref target="RFC7516"/>.</t>
        </li>
      </ul>
      <t>This specification defines the following terms:</t>
      <dl>
        <dt>Key Management Mode</dt>
        <dd>
          <t>A method of determining whether a Content Encryption Key (CEK) value is used
and, if so, what CEK value to use.
Each algorithm used for making these determinations uses a
specific Key Management Mode.
Key Management Modes employed by this specification are
Key Encryption,
Key Wrapping,
Direct Key Agreement,
Key Agreement with Key Wrapping,
Direct Encryption,
and
Integrated Encryption.
Of these, only Integrated Encryption is defined by this
specification; the remaining modes are defined in <xref target="RFC7516"/>
and are included here because this specification replaces the
Message Encryption and Message Decryption procedures
of <xref target="RFC7516"/> in their entirety.</t>
        </dd>
        <dt>Integrated Encryption</dt>
        <dd>
          <t>A Key Management Mode in which the plaintext is directly encrypted
without the use of a Content Encryption Key (CEK).
This mode corresponds to the Single-Shot API defined in
<xref section="6.1" sectionFormat="of" target="I-D.ietf-hpke-hpke"/>, which is used in
cases where applications encrypt only a single message to
a recipient's public key. This mode is appropriate when there is
exactly one recipient and no separate content encryption algorithm
is required.</t>
        </dd>
      </dl>
      <t>The definition of Key Management Mode above replaces the one in JWE <xref target="RFC7516"/>.</t>
    </section>
    <section anchor="overview">
      <name>Overview</name>
      <t>This specification defines the use of HPKE in JWE for two Key Management Modes:</t>
      <ul spacing="normal">
        <li>
          <t>Key Encryption, and</t>
        </li>
        <li>
          <t>Integrated Encryption.</t>
        </li>
      </ul>
      <t>It specifies the Integrated Encryption Key Management Mode and registers the
corresponding JWE algorithm identifiers for both modes. Distinct JWE algorithms
are defined for Key Encryption and Integrated Encryption
so that they are fully specified, as required by <xref target="RFC9864"/>.</t>
      <t>When the Key Management Mode is Integrated Encryption, HPKE is used to directly
encrypt the plaintext, and the "enc" header parameter <bcp14>MUST NOT</bcp14> be included.
This specification updates the definition of the "enc" header parameter in
<xref section="4.1.2" sectionFormat="of" target="RFC7516"/> to require that it be omitted when Integrated
Encryption is used.</t>
      <t>When the Key Management Mode is Key Encryption,
HPKE is used to encrypt the Content Encryption Key (CEK).
In this mode, the "enc" header parameter is used as specified in JWE <xref target="RFC7516"/>.
The HPKE AEAD encryption function used internally by HPKE
is distinct from the JWE AEAD algorithm specified in "enc".</t>
      <t>In both Key Management Modes,
the HPKE key encapsulation mechanism (KEM), key derivation function (KDF),
and authenticated encryption with additional data (AEAD) encryption function
utilized depend on the JWE algorithm used.</t>
      <t>HPKE supports two modes, which are described in Table 1 of <xref target="I-D.ietf-hpke-hpke"/>.
In this specification, both "mode_base" and "mode_psk" are supported
for both Key Management Modes.
When the "psk_id" header parameter is present, the HPKE mode is "mode_psk";
otherwise, the HPKE mode is "mode_base".</t>
      <t>JWE supports two kinds of serializations:</t>
      <ul spacing="normal">
        <li>
          <t>the JWE Compact Serialization described in <xref section="3.1" sectionFormat="of" target="RFC7516"/>, and</t>
        </li>
        <li>
          <t>the JWE JSON Serialization described in <xref section="3.2" sectionFormat="of" target="RFC7516"/>.</t>
        </li>
      </ul>
      <t>Certain JWE features are only supported in specific serializations.
For example, the JWE Compact Serialization does not support:</t>
      <ul spacing="normal">
        <li>
          <t>the additional authenticated data header parameter "aad",</t>
        </li>
        <li>
          <t>multiple recipients, and</t>
        </li>
        <li>
          <t>unprotected header parameters.</t>
        </li>
      </ul>
      <t>Key Encryption can be used with the "aad" header parameter
when using the JWE JSON Serialization.
Single recipient Key Encryption with no "aad" header parameter can be expressed
in the JWE Compact Serialization.</t>
      <section anchor="encapsulated-secrets">
        <name>Encapsulated Secrets</name>
        <t>HPKE encapsulated secret is defined in <xref section="5" sectionFormat="of" target="I-D.ietf-hpke-hpke"/>.</t>
        <t>When using Integrated Encryption, the JWE Encrypted Key of the sole recipient
is the HPKE encapsulated secret.</t>
        <t>When using Key Encryption, each recipient's JWE Encrypted Key
is the encrypted content encryption key, and the value of header parameter "ek"
is the base64url encoding of the HPKE encapsulated secret.</t>
      </section>
    </section>
    <section anchor="integrated-encryption">
      <name>Integrated Encryption</name>
      <t>When using Integrated Encryption with HPKE:</t>
      <ul spacing="normal">
        <li>
          <t>The protected header <bcp14>MUST</bcp14> contain an "alg" value that is
an HPKE JWE algorithm using Integrated Encryption.</t>
        </li>
        <li>
          <t>The "enc" header parameter <bcp14>MUST NOT</bcp14> be present.
This is because no separate content encryption algorithm is used in this mode.</t>
        </li>
        <li>
          <t>The protected header parameter "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 the encapsulated secret, as defined in <xref section="5" sectionFormat="of" target="I-D.ietf-hpke-hpke"/>.</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 HPKE aad parameter <bcp14>MUST</bcp14> be set to the "Additional Authenticated Data encryption parameter" value specified in Step 15 of <xref target="encryption"/>.</t>
        </li>
        <li>
          <t>The HPKE info parameter defaults to the empty octet sequence;
mutually known private information (a concept also utilized in <xref target="NIST.SP.800-56Ar3"/>)
<bcp14>MAY</bcp14> be used instead so the application can include it during key derivation.</t>
        </li>
        <li>
          <t>The JWE Ciphertext is the ciphertext from the HPKE encryption,
as defined in <xref section="5.2" sectionFormat="of" target="I-D.ietf-hpke-hpke"/>.</t>
        </li>
      </ul>
      <section anchor="int-algs">
        <name>Integrated Encryption Algorithms using HPKE</name>
        <t>The following JWE algorithms using HPKE are defined for use with
Integrated Encryption as the Key Management Mode:</t>
        <figure anchor="ciphersuite-int-algs">
          <name>Algorithms using HPKE for Integrated Encryption</name>
          <artwork><![CDATA[
+--------+------------------+-------------+------------------+
| "alg"  | HPKE KEM         | HPKE KDF    | HPKE AEAD        |
+--------+------------------+-------------+------------------+
| HPKE-0 | DHKEM(P-256,     | HKDF-SHA256 | AES-128-GCM      |
|        |   HKDF-SHA256)   |             |                  |
| HPKE-1 | DHKEM(P-384,     | HKDF-SHA384 | AES-256-GCM      |
|        |   HKDF-SHA384)   |             |                  |
| HPKE-2 | DHKEM(P-521,     | HKDF-SHA512 | AES-256-GCM      |
|        |   HKDF-SHA512)   |             |                  |
| HPKE-3 | DHKEM(X25519,    | HKDF-SHA256 | AES-128-GCM      |
|        |   HKDF-SHA256)   |             |                  |
| HPKE-4 | DHKEM(X25519,    | HKDF-SHA256 | ChaCha20Poly1305 |
|        |   HKDF-SHA256)   |             |                  |
| HPKE-5 | DHKEM(X448,      | HKDF-SHA512 | AES-256-GCM      |
|        |   HKDF-SHA512)   |             |                  |
| HPKE-6 | DHKEM(X448,      | HKDF-SHA512 | ChaCha20Poly1305 |
|        |   HKDF-SHA512)   |             |                  |
| HPKE-7 | DHKEM(P-256,     | HKDF-SHA256 | AES-256-GCM      |
|        |   HKDF-SHA256)   |             |                  |
+--------+------------------+-------------+------------------+
]]></artwork>
        </figure>
        <t>The HPKE KEM, KDF, and AEAD values are chosen from the IANA HPKE registry <xref target="IANA.HPKE"/>.</t>
      </section>
      <section anchor="compact-example">
        <name>JWE Compact Serialization Example</name>
        <t>Below is an example of a JWE using the Compact Serialization and Integrated Encryption with HPKE:</t>
        <artwork><![CDATA[
eyJhbGciOiJIUEtFLTAiLCJraWQiOiJ5Q25mYm1ZTVpjV3JLRHRfRGpOZWJS
Q0IxdnhWb3F2NHVtSjRXSzhSWWprIn0.BLAJX8adrFsDKaoJAc3iy2dq-6jE
H3Uv-bSgqIoDeREqpWglMoTS67XsXere1ZYxiQKEFU6MbWe8O7vmdlSmcUk..
NcN9ew5aijn8W7piLVRU8r2cOP0JKqxOF4RllVsJM4qsAfVXW5Ka6so9zdUmX
XNOXyCEk0wV_s8ICAnD4LbRa5TkhTeuhijIfAt9bQ2fMLOeyed3WyArs8yaMra
a9Zbh4i6SaHunM7jU_xoz_N2WbykSOSySmCO49H4mP3jLW9L_TYQfeVfYsrB8
clqokZ8h-3eQGNwmOPtkjWdpAfaHUsp4-HC9nRd6yrTU6mV65Nn2iYynu3Xkg
y2Lm-kQKDavIEW3PBpEeiw6mtPJE9o8sT-0lZ9kpWtqog2XbNGEfjSOjujvNe
1b0g4-FdNFMFO_fo0rxe902W1pGT7znv4Q-xBkIydK4ZwjiFN6dAXutnococ3
7A0Hr5esPLwHRTTrBFw.
]]></artwork>
        <t>Note: Line breaks are for display purposes only.</t>
        <t>The key used for this example is in <xref target="int-key"/>.</t>
      </section>
      <section anchor="flattened-example">
        <name>JWE JSON Serialization Example</name>
        <t>Below is an example of a JWE using the JWE JSON Serialization and Integrated Encryption with HPKE:</t>
        <artwork><![CDATA[
{
  "ciphertext": "LabI8_KIPDbymUSbyVctj8AfISXQ07sMt1xQ1lrS-0h
    eU2jjejpQIK75K1KXcvwn15E6Kil_tJ6LBcYCu02O1H8_aooJGuoLw1v
    EzQn16h498YX9e2SA2IcVrJTkcCjL7YpF9fsAF3JEzGfsmmrpZPPVdxCn
    7g8dkGRcyulnHrNvBu4BFtub-URtf-nYCFIJHZ4k-ul9fDddquicFzCxQ
    onx66-ZX5nbj6azHG65tAZntd6VFkRgihdxTvIpvTS4gfulQeKyShbiw-
    OCJNbzFdEnOKEMnsyqRjwG7iVrFEilFAMsvLJ14-lcuR5btIkUntIwlnsf
    Ua2Ytk33znCfAFN0wYukdDvJe-V0nnNUFlOeLyYV0eEGisgC9dQQ1kFu3g",
  "encrypted_key": "BAOlZ-VnbhQu4NOlTlDAVYwUJB-Q6YcWwnRNWK6Y
    LSiHHlW4rN0qUzBJ3Rc2_y8nkasn8nUVGBzdq7OhdKKiLq4",
  "aad": "VGhlIEZlbGxvd3NoaXAgb2YgdGhlIFJpbmc",
  "protected": "eyJhbGciOiJIUEtFLTAiLCJraWQiOiJ5Q25mYm1ZTVpj
    V3JLRHRfRGpOZWJSQ0IxdnhWb3F2NHVtSjRXSzhSWWprIn0"
}
]]></artwork>
        <t>Note: Line breaks are for display purposes only.</t>
        <t>The key used for this example is in <xref target="int-key"/>.</t>
      </section>
    </section>
    <section anchor="key-encryption">
      <name>Key Encryption</name>
      <t>When using the JWE JSON Serialization,
recipients using Key Encryption with HPKE can be added alongside other recipients
(e.g., those using "ECDH-ES+A128KW" or "RSA-OAEP-256"),
since HPKE is used to encrypt the Content Encryption Key (CEK).</t>
      <t>When using Key Encryption with HPKE:</t>
      <ul spacing="normal">
        <li>
          <t>The "alg" header parameter <bcp14>MUST</bcp14> be an HPKE JWE algorithm using Key Encryption.</t>
        </li>
        <li>
          <t>The header parameter "psk_id" <bcp14>MAY</bcp14> be present.</t>
        </li>
        <li>
          <t>The header parameter "ek" <bcp14>MUST</bcp14> be present and contain the base64url-encoded HPKE encapsulated secret.</t>
        </li>
        <li>
          <t>The HPKE aad parameter defaults to the empty octet sequence.</t>
        </li>
        <li>
          <t>The HPKE info parameter is set to the value of the "Recipient_structure" defined below.</t>
        </li>
        <li>
          <t>The HPKE plaintext <bcp14>MUST</bcp14> be set to the CEK.</t>
        </li>
        <li>
          <t>The recipient's JWE Encrypted Key is the ciphertext from the HPKE Encryption,
as defined in <xref section="5.2" sectionFormat="of" target="I-D.ietf-hpke-hpke"/>.</t>
        </li>
      </ul>
      <section anchor="recipient_structure">
        <name>Recipient_structure</name>
        <t>The "Recipient_structure" used as the value of the HPKE info parameter
when performing Key Encryption with HPKE
provides context information used in key derivation.
To ensure compactness and interoperability,
this structure is encoded in a binary format.
The encoding is as follows:</t>
        <artwork><![CDATA[
Recipient_structure = ASCII("JOSE-HPKE rcpt") ||
                      BYTE(255) ||
                      ASCII(content_encryption_alg) ||
                      BYTE(255) ||
                      recipient_extra_info
]]></artwork>
        <t>Where:</t>
        <ul spacing="normal">
          <li>
            <t>ASCII("JOSE-HPKE rcpt"): A fixed ASCII string identifying the context of the structure.</t>
          </li>
          <li>
            <t>BYTE(255): A separator byte (0xFF) used to delimit fields.</t>
          </li>
          <li>
            <t>ASCII(content_encryption_alg): Identifies the content encryption algorithm
with which the HPKE-encrypted Content Encryption Key (CEK) is used.
Its value <bcp14>MUST</bcp14> be the "enc" (encryption algorithm) header parameter value
in the JOSE Header.
This field provides JWE context information to the HPKE key schedule,
which ensures that the encapsulated secret is bound to the selected content encryption algorithm.</t>
          </li>
          <li>
            <t>BYTE(255): A separator byte (0xFF) used to delimit fields.</t>
          </li>
          <li>
            <t>recipient_extra_info: An octet string containing additional context information
that the application includes in the key derivation.
Mutually known private information (a concept also utilized in <xref target="NIST.SP.800-56Ar3"/>) <bcp14>MAY</bcp14> be used in this input parameter.
If no additional context information is provided, this field <bcp14>MUST</bcp14> be the empty octet sequence.</t>
          </li>
        </ul>
        <t>Note that Integrated Encryption does not use the "Recipient_structure" because the JWE Protected Header and JWE AAD are included in the HPKE aad value, which binds these parameters to the ciphertext.</t>
        <section anchor="recipientstructure-example">
          <name>Recipient_structure Example</name>
          <t>The "Recipient_structure" encoded in binary as specified in <xref target="recipient_structure"/>, and using the field values
(content_encryption_alg = "A128GCM", recipient_extra_info = ""),
results in the following byte sequence:</t>
          <artwork><![CDATA[
"JOSE-HPKE rcpt\xffA128GCM\xff"
]]></artwork>
          <t>The corresponding hexadecimal representation is:</t>
          <artwork><![CDATA[
4a4f53452d48504b452072637074ff4131323847434dff
]]></artwork>
          <t>This value is used as the HPKE "info" parameter when performing Key Encryption with HPKE.</t>
        </section>
      </section>
      <section anchor="ke-algs">
        <name>Key Encryption Algorithms using HPKE</name>
        <t>The following JWE algorithms using HPKE are defined for use with
Key Encryption as the Key Management Mode:</t>
        <figure anchor="ciphersuite-ke-algs">
          <name>Algorithms using HPKE for Key Encryption</name>
          <artwork><![CDATA[
+-----------+------------------+-------------+------------------+
| "alg"     | HPKE KEM         | HPKE KDF    | HPKE AEAD        |
+-----------+------------------+-------------+------------------+
| HPKE-0-KE | DHKEM(P-256,     | HKDF-SHA256 | AES-128-GCM      |
|           |   HKDF-SHA256)   |             |                  |
| HPKE-1-KE | DHKEM(P-384,     | HKDF-SHA384 | AES-256-GCM      |
|           |   HKDF-SHA384)   |             |                  |
| HPKE-2-KE | DHKEM(P-521,     | HKDF-SHA512 | AES-256-GCM      |
|           |   HKDF-SHA512)   |             |                  |
| HPKE-3-KE | DHKEM(X25519,    | HKDF-SHA256 | AES-128-GCM      |
|           |   HKDF-SHA256)   |             |                  |
| HPKE-4-KE | DHKEM(X25519,    | HKDF-SHA256 | ChaCha20Poly1305 |
|           |   HKDF-SHA256)   |             |                  |
| HPKE-5-KE | DHKEM(X448,      | HKDF-SHA512 | AES-256-GCM      |
|           |   HKDF-SHA512)   |             |                  |
| HPKE-6-KE | DHKEM(X448,      | HKDF-SHA512 | ChaCha20Poly1305 |
|           |   HKDF-SHA512)   |             |                  |
| HPKE-7-KE | DHKEM(P-256,     | HKDF-SHA256 | AES-256-GCM      |
|           |   HKDF-SHA256)   |             |                  |
+-----------+------------------+-------------+------------------+
]]></artwork>
        </figure>
        <t>The HPKE KEM, KDF, and AEAD values are chosen from the IANA HPKE registry <xref target="IANA.HPKE"/>.</t>
      </section>
      <section anchor="general-example">
        <name>General JWE JSON Serialization Example</name>
        <t>Below is an example of a JWE using the General JSON Serialization and Key Encryption with HPKE:</t>
        <artwork><![CDATA[
{
  "ciphertext": "uF1XBbVZWhYm_pDbeJvI_fkuqFJiKd1WMP3O_BAGOP-L
    kpTLE3Et2VQNcOpPAIBfyx8rUzshGqiOFOWzcoWZ3mIwYuDvvAW3-P1RC
    S8Dtq70JRvahO5O8sAN1vzJg8_dyBPnwsQY6Cy3RhMD6sSSCjjSw0FYmm
    x67IiI2zJ6Wr8z69k0f34ZTh43k4C-pTwaUSvjl2XI_YrUgdDVYmY_MJ5
    vmlPTcceMaefP8Onz_fx5xOcGfnVBVz2gpMQPuQL8k5Rk5KJvPGfFfN6hr
    gWkK_LDzi4lrfnIrvNsk3BCBeZPpc-n19-u7W4-GQxLjAlVyMHeGk5K4tU
    6gHB8PnnQ4ND5ZTtyXrJWQW-Qr1iFev6g",
  "iv": "mLiHjYaQA42nPm1L",
  "recipients": [
    {
      "encrypted_key": "hU6b0hp4-y4ZoK1Qz8YWmDmqDmgTto3HW25-RyPhcLU",
      "header": {
        "alg": "HPKE-0-KE",
        "kid": "9CfUPiGcAcTp7oXgVbDStw2FEjka-_KHU_i-X3XMCEA",
        "ek": "BGWPWLoD5BUjFEDIjMS-yvtcCXBn5A-kuv2RjzUY_2hKUjg
          ZINqtEy1aHZ8dWxAiyApV5JafG76W8O_yZzy5T54"
      }
    }
  ],
  "tag": "K22C64ZhFABEu2S2F00PLg",
  "aad": "VGhlIEZlbGxvd3NoaXAgb2YgdGhlIFJpbmc",
  "protected": "eyJlbmMiOiJBMTI4R0NNIn0"
}
]]></artwork>
        <t>Note: Line breaks are for display purposes only.</t>
        <t>The key used for this example is in <xref target="ke-key"/>.</t>
      </section>
    </section>
    <section anchor="producing-and-consuming-jwes">
      <name>Producing and Consuming JWEs</name>
      <t>Sections 5.1 (Message Encryption) and 5.2 (Message Decryption) of <xref target="RFC7516"/>
are replaced by the following sections,
which add processing rules for using Integrated Encryption as the Key Management Mode.</t>
      <section anchor="encryption">
        <name>Message Encryption</name>
        <t>The message encryption process is as follows.
The order of the steps is not significant in cases where
there are no dependencies between the inputs and outputs of the steps.</t>
        <ol spacing="normal" type="1"><li>
            <t>Determine the Key Management Mode employed by the algorithm
used to determine the Content Encryption Key value.
(This is the algorithm recorded in the
"alg" (algorithm)
Header Parameter of the resulting JWE.)</t>
          </li>
          <li>
            <t>When Key Wrapping, Key Encryption,
or Key Agreement with Key Wrapping is employed,
generate a random CEK value to use for subsequent steps
unless one was already generated for a previously
processed recipient, in which case, let that be the one used
for subsequent steps.
See <xref target="RFC8937"/> for
considerations on generating random values.
The CEK <bcp14>MUST</bcp14> have a length equal to that
required for the content encryption algorithm.</t>
          </li>
          <li>
            <t>When Direct Key Agreement or Key Agreement with Key Wrapping
is employed, use the key agreement algorithm
to compute the value of the agreed upon key.
When Direct Key Agreement is employed,
let the CEK be the agreed upon key.
When Key Agreement with Key Wrapping is employed,
the agreed upon key will be used to wrap the CEK.</t>
          </li>
          <li>
            <t>When Key Wrapping, Key Encryption,
or Key Agreement with Key Wrapping is employed,
encrypt the CEK to the recipient and let the result be the
JWE Encrypted Key.</t>
          </li>
          <li>
            <t>When Direct Key Agreement or Direct Encryption is employed,
let the JWE Encrypted Key be the empty octet sequence.</t>
          </li>
          <li>
            <t>When Direct Encryption is employed,
let the CEK be the shared symmetric key.</t>
          </li>
          <li>
            <t>When Integrated Encryption is employed,
let the JWE Encrypted Key be as specified by the Integrated Encryption algorithm.</t>
          </li>
          <li>
            <t>Compute the encoded key value BASE64URL(JWE Encrypted Key).</t>
          </li>
          <li>
            <t>If the JWE JSON Serialization is being used, and
there are multiple recipients, repeat this process
(steps 1-8)
for each recipient.</t>
          </li>
          <li>
            <t>Generate a random JWE Initialization Vector of the correct size
for the content encryption algorithm (if required for the algorithm);
otherwise, let the JWE Initialization Vector be the empty octet sequence.</t>
          </li>
          <li>
            <t>Compute the encoded Initialization Vector value
BASE64URL(JWE Initialization Vector).</t>
          </li>
          <li>
            <t>If a "zip" parameter was included,
compress the plaintext using the specified compression algorithm,
and let M be the octet sequence representing the compressed plaintext;
otherwise, let M be the octet sequence representing the plaintext.</t>
          </li>
          <li>
            <t>Create the JSON object(s) containing the desired set of Header Parameters,
which together comprise the JOSE Header: one or more of the JWE Protected
Header, the JWE Shared Unprotected
Header, and the JWE Per-Recipient Unprotected Header.</t>
          </li>
          <li>
            <t>Compute the Encoded Protected Header value
BASE64URL(UTF8(JWE Protected Header)).
If the JWE Protected Header is not present
(which can only happen when using the JWE JSON Serialization
and no "protected" member is present),
let this value be the empty string.</t>
          </li>
          <li>
            <t>Let the Additional Authenticated Data encryption parameter be
ASCII(Encoded Protected Header).
However, if a JWE AAD value is present
(which can only be the case when using the JWE JSON Serialization),
instead let the Additional Authenticated Data encryption parameter be
ASCII(Encoded Protected Header || '.' || BASE64URL(JWE AAD)).</t>
          </li>
          <li>
            <t>If Integrated Encryption is not being employed,
encrypt M using the CEK, the JWE Initialization Vector, and
the Additional Authenticated Data value
using the specified content encryption algorithm
to create the JWE Ciphertext value and the JWE Authentication Tag
(which is the Authentication Tag output from the encryption operation).</t>
          </li>
          <li>
            <t>If Integrated Encryption is being employed,
encrypt M
using the specified Integrated Encryption algorithm
to create the JWE Ciphertext value.
Let the JWE Authentication Tag be the empty octet sequence.</t>
          </li>
          <li>
            <t>Compute the encoded ciphertext value BASE64URL(JWE Ciphertext).</t>
          </li>
          <li>
            <t>Compute the encoded Authentication Tag value
BASE64URL(JWE Authentication Tag).</t>
          </li>
          <li>
            <t>If a JWE AAD value is present,
compute the encoded AAD value BASE64URL(JWE AAD).</t>
          </li>
          <li>
            <t>Create the desired serialized output.
The Compact Serialization of this result is the string
BASE64URL(UTF8(JWE Protected Header))
|| '.' || BASE64URL(JWE Encrypted Key)
|| '.' || BASE64URL(JWE Initialization Vector)
|| '.' || BASE64URL(JWE Ciphertext)
|| '.' || BASE64URL(JWE Authentication Tag).
The JWE JSON Serialization is described in <xref section="7.2" sectionFormat="of" target="RFC7516"/>.</t>
          </li>
        </ol>
      </section>
      <section anchor="decryption">
        <name>Message Decryption</name>
        <t>The message decryption process is the reverse of the
encryption process.
The order of the steps is not significant in cases where
there are no dependencies between the inputs and outputs of the steps.
If any of these steps fail, the encrypted content cannot be validated.</t>
        <t>When there are multiple recipients,
it is an application decision which of the recipients' encrypted content
must successfully validate for the JWE to be accepted.
In some cases, encrypted content for all recipients must successfully validate
or the JWE will be considered invalid.
In other cases, only the encrypted content for a single recipient
needs to be successfully validated.
However, in all cases, the encrypted content for at least one recipient
<bcp14>MUST</bcp14> successfully validate or the JWE <bcp14>MUST</bcp14> be considered invalid.</t>
        <ol spacing="normal" type="1"><li>
            <t>Parse the JWE representation to extract the serialized values
for the components of the JWE.
When using the JWE Compact Serialization,
these components are
the base64url-encoded representations of
the JWE Protected Header,
the JWE Encrypted Key,
the JWE Initialization Vector,
the JWE Ciphertext, and
the JWE Authentication Tag.
When using the JWE JSON Serialization,
these components also include the base64url-encoded representation of
the JWE AAD, along with the unencoded
JWE Shared Unprotected Header and
JWE Per-Recipient Unprotected Header values.
When using the JWE Compact Serialization,
the JWE Protected Header,
the JWE Encrypted Key,
the JWE Initialization Vector,
the JWE Ciphertext, and
the JWE Authentication Tag
are represented as base64url-encoded values in that order,
with each value being separated from the next by a single period ('.') character,
resulting in exactly four delimiting period characters being used.
The JWE JSON Serialization
is described in <xref section="7.2" sectionFormat="of" target="RFC7516"/>.</t>
          </li>
          <li>
            <t>Base64url decode the encoded representations of
the JWE Protected Header,
the JWE Encrypted Key,
the JWE Initialization Vector,
the JWE Ciphertext,
the JWE Authentication Tag, and
the JWE AAD,
following the restriction that no line breaks, whitespace, or other additional characters have been used.</t>
          </li>
          <li>
            <t>Verify that the octet sequence resulting from decoding the encoded JWE Protected Header
is a UTF-8-encoded representation of
a completely valid JSON object
conforming to <xref target="RFC8259"/>;
let the JWE Protected Header be this JSON object.</t>
          </li>
          <li>
            <t>If using the JWE Compact Serialization, let the JOSE Header be the
JWE Protected Header.
Otherwise, when using the JWE JSON Serialization,
let the JOSE Header be the union of
the members of the JWE Protected Header,
the JWE Shared Unprotected Header and
the corresponding JWE Per-Recipient Unprotected Header,
all of which must be completely valid JSON objects.
During this step,
verify that the resulting JOSE Header does not contain duplicate
Header Parameter names.
When using the JWE JSON Serialization, this restriction includes
that the same Header Parameter name also <bcp14>MUST NOT</bcp14> occur in
distinct JSON object values that together comprise the JOSE Header.</t>
          </li>
          <li>
            <t>Verify that the implementation understands and can process
all fields that it is required to support,
whether required by this specification,
by the algorithms being used,
or by the "crit" Header Parameter value,
and that the values of those parameters are also understood and supported.</t>
          </li>
          <li>
            <t>Determine the Key Management Mode employed by the algorithm
specified by the
"alg" (algorithm) Header Parameter.</t>
          </li>
          <li>
            <t>If using Integrated Encryption, Direct Encryption, or Direct Key Agreement,
verify that there is exactly one recipient.</t>
          </li>
          <li>
            <t>Verify that the JWE uses a key known to the recipient.</t>
          </li>
          <li>
            <t>When Direct Key Agreement or Key Agreement with Key Wrapping
is employed, use the key agreement algorithm
to compute the value of the agreed upon key.
When Direct Key Agreement is employed,
let the CEK be the agreed upon key.
When Key Agreement with Key Wrapping is employed,
the agreed upon key will be used to decrypt the JWE Encrypted Key.</t>
          </li>
          <li>
            <t>When Key Wrapping, Key Encryption,
or Key Agreement with Key Wrapping is employed,
decrypt the JWE Encrypted Key to produce the CEK.
The CEK <bcp14>MUST</bcp14> have a length equal to that
required for the content encryption algorithm.
Note that when there are multiple recipients,
each recipient will only be able to decrypt JWE Encrypted Key values
that were encrypted to a key in that recipient's possession.
It is therefore normal to only be able to decrypt one of the
per-recipient JWE Encrypted Key values to obtain the CEK value.
Also, see <xref section="11.5" sectionFormat="of" target="RFC7516"/> for security considerations
on mitigating timing attacks.</t>
          </li>
          <li>
            <t>When Direct Key Agreement or Direct Encryption is employed,
verify that the JWE Encrypted Key value is an empty octet sequence.</t>
          </li>
          <li>
            <t>When Direct Encryption is employed,
let the CEK be the shared symmetric key.</t>
          </li>
          <li>
            <t>If Integrated Encryption is not being employed,
record whether the CEK could be successfully determined for this recipient or not.</t>
          </li>
          <li>
            <t>If the JWE JSON Serialization is being used and
there are multiple recipients, repeat this process
(steps 4-13)
for each recipient contained in the representation.</t>
          </li>
          <li>
            <t>Compute the Encoded Protected Header value
BASE64URL(UTF8(JWE Protected Header)).
If the JWE Protected Header is not present
(which can only happen when using the JWE JSON Serialization
and no "protected" member is present),
let this value be the empty string.</t>
          </li>
          <li>
            <t>Let the Additional Authenticated Data encryption parameter be
ASCII(Encoded Protected Header).
However, if a JWE AAD value is present
(which can only be the case when using the JWE JSON Serialization),
instead let the Additional Authenticated Data encryption parameter be
ASCII(Encoded Protected Header || '.' || BASE64URL(JWE AAD)).</t>
          </li>
          <li>
            <t>If Integrated Encryption is not being employed,
decrypt the JWE Ciphertext using the CEK, the JWE Initialization Vector,
the Additional Authenticated Data value,
and the JWE Authentication Tag
(which is the Authentication Tag input to the calculation)
using the content encryption algorithm specified in the "enc" header parameter,
returning the decrypted plaintext and validating the JWE Authentication Tag
in the manner specified for the algorithm,
rejecting the input without emitting any decrypted output
if the JWE Authentication Tag is incorrect.</t>
          </li>
          <li>
            <t>If Integrated Encryption is being employed,
verify that no "enc" header parameter is present.</t>
          </li>
          <li>
            <t>If Integrated Encryption is being employed,
decrypt the JWE Ciphertext
using the specified Integrated Encryption algorithm,
returning the decrypted plaintext
in the manner specified for the algorithm,
rejecting the input without emitting any decrypted output
if the decryption fails.</t>
          </li>
          <li>
            <t>If a "zip" parameter was included,
uncompress the decrypted plaintext using the specified compression algorithm.</t>
          </li>
          <li>
            <t>If there was no recipient for which all of the decryption steps succeeded,
then the JWE <bcp14>MUST</bcp14> be considered invalid.
Otherwise, output the plaintext.
In the JWE JSON Serialization case, also return a result to the application
indicating for which of the recipients the decryption succeeded and failed.</t>
          </li>
        </ol>
        <t>Finally, note that it is an application decision which algorithms
may be used in a given context.
Even if a JWE can be successfully decrypted,
unless the algorithms used in the JWE are acceptable
to the application, it <bcp14>SHOULD</bcp14> consider the JWE to be invalid.</t>
      </section>
    </section>
    <section anchor="distinguishing">
      <name>Distinguishing Between JWS and JWE Objects</name>
      <t><xref section="9" sectionFormat="of" target="RFC7516"/> is updated to delete the last bullet, which says:</t>
      <ul spacing="normal">
        <li>
          <t>The JOSE Header for a JWS can also be distinguished from
the JOSE Header for a JWE by
determining whether an
"enc" (encryption algorithm) member exists.
If the "enc" member exists, it is a JWE;
otherwise, it is a JWS.</t>
        </li>
      </ul>
      <t>The deleted test no longer works when Integrated Encryption is used.</t>
      <t>The other methods of distinguishing between
JSON Web Signature (JWS) <xref target="RFC7515"/> and
JSON Web Encryption (JWE) <xref target="RFC7516"/> objects continue to work.</t>
    </section>
    <section anchor="jwk-representations-for-jwe-hpke-keys">
      <name>JWK Representations for JWE HPKE Keys</name>
      <t>The JSON Web Key (JWK) <xref target="RFC7517"/> representations for keys
used with the JWE algorithms defined in this specification are as follows.
The valid combinations of the
"alg", "kty", and "crv" in the JWK are shown in <xref target="ciphersuite-kty-crv"/>.</t>
      <figure anchor="ciphersuite-kty-crv">
        <name>JWK Types and Curves for JWE HPKE Ciphersuites</name>
        <artwork><![CDATA[
+--------------------------------------+-------+--------+
| "alg" values                         | "kty" | "crv"  |
+--------------------------------------+-------+--------+
| HPKE-0, HPKE-0-KE, HPKE-7, HPKE-7-KE | EC    | P-256  |
| HPKE-1, HPKE-1-KE                    | EC    | P-384  |
| HPKE-2, HPKE-2-KE                    | EC    | P-521  |
| HPKE-3, HPKE-3-KE, HPKE-4, HPKE-4-KE | OKP   | X25519 |
| HPKE-5, HPKE-5-KE, HPKE-6, HPKE-6-KE | OKP   | X448   |
+--------------------------------------+-------+--------+
]]></artwork>
      </figure>
      <section anchor="jwk-representation-of-key-using-jwe-hpke-ciphersuite">
        <name>JWK Representation of Key using JWE HPKE Ciphersuite</name>
        <t>The example below is a JWK representation of a public and private key
used with Integrated Encryption as the Key Management Mode:</t>
        <artwork><![CDATA[
{
  "kty": "OKP",
  "crv": "X25519",
  "x": "3pPHgcHYVYpOpB6ISwHdoPRB6jNgd8mM4nRyyj4H3aE",
  "d": "nWGxne0tAiV8Hk6kcy4rN0wMskjl9yND0N3Xeho9n6g",
  "kid": "recipient-key-1",
  "alg": "HPKE-3",
  "use": "enc"
}
]]></artwork>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This specification uses HPKE, and the security considerations of
<xref target="I-D.ietf-hpke-hpke"/> are therefore applicable.</t>
      <t>HPKE assumes the sender is in possession of the public key of the recipient and
HPKE JOSE makes the same assumption. 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 provide proof of sender origin
as part of the HPKE KEM. PSK mode authenticates the sender
as a holder of the pre-shared key (see <xref section="9.1" sectionFormat="of" target="I-D.ietf-hpke-hpke"/>).</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="RFC8937"/> applies.</t>
      <section anchor="key-management">
        <name>Key Management</name>
        <t>A KEM key pair used with HPKE is intended for use with a
specific mode and HPKE algorithm suite. Using the same
KEM key pair with multiple modes or multiple HPKE algorithm
suites in parallel is <bcp14>NOT RECOMMENDED</bcp14>.</t>
        <t>In principle, such use could be supported by the HPKE key
schedule, since it takes both the suite_id variable, which
encodes the full ciphersuite, and the mode byte as inputs,
ensuring that cryptographically distinct keys are derived
for each combination of ciphersuite and mode. However, there
is no formal proof of security for this at the time of
writing; see <xref section="9.2.2" sectionFormat="of" target="I-D.ietf-hpke-hpke"/>.</t>
        <t>Likewise,the same key <bcp14>SHOULD NOT</bcp14> be used with both HPKE and
non-HPKE algorithms (e.g., "ECDH-ES" or "ECDH-ES+A128KW").</t>
        <t>When using Key Encryption in a multi-recipient scenario, the
security of the content is limited by the weakest algorithm used
to encrypt the CEK.</t>
      </section>
      <section anchor="jwt-best-current-practices">
        <name>JWT Best Current Practices</name>
        <t>The guidance in <xref target="RFC8725"/> about encryption is also pertinent to this specification.</t>
        <t>RFC Editor Note: If draft-ietf-oauth-8725bis has been published as
an RFC by the time this document is processed, please update the
reference from <xref target="RFC8725"/> to the published RFC for
draft-ietf-oauth-8725bis.</t>
      </section>
    </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"/> established by <xref target="RFC7518"/>:</t>
        <section anchor="hpke-0">
          <name>HPKE-0</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-0</t>
            </li>
            <li>
              <t>Algorithm Description: Integrated Encryption with HPKE using DHKEM(P-256, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and 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="int-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="6.1" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></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: Integrated Encryption with HPKE using DHKEM(P-384, HKDF-SHA384) KEM, HKDF-SHA384 KDF, and 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="int-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="6.1" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></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: Integrated Encryption with HPKE using DHKEM(P-521, HKDF-SHA512) KEM, HKDF-SHA512 KDF, and 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="int-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="6.1" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></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: Integrated Encryption with HPKE using DHKEM(X25519, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and 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="int-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="6.1" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></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: Integrated Encryption with HPKE using DHKEM(X25519, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and 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="int-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="6.1" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></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: Integrated Encryption with HPKE using DHKEM(X448, HKDF-SHA512) KEM, HKDF-SHA512 KDF, and 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="int-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="6.1" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></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: Integrated Encryption with HPKE using DHKEM(X448, HKDF-SHA512) KEM, HKDF-SHA512 KDF, and 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="int-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="6.1" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-7">
          <name>HPKE-7</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-7</t>
            </li>
            <li>
              <t>Algorithm Description: Integrated Encryption with HPKE using DHKEM(P-256, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and 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="int-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="6.1" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-0-ke">
          <name>HPKE-0-KE</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-0-KE</t>
            </li>
            <li>
              <t>Algorithm Description: Key Encryption with HPKE using DHKEM(P-256, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and 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="ke-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="5" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-1-ke">
          <name>HPKE-1-KE</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-1-KE</t>
            </li>
            <li>
              <t>Algorithm Description: Key Encryption with HPKE using DHKEM(P-384, HKDF-SHA384) KEM, HKDF-SHA384 KDF, and 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="ke-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="5" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-2-ke">
          <name>HPKE-2-KE</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-2-KE</t>
            </li>
            <li>
              <t>Algorithm Description: Key Encryption with HPKE using DHKEM(P-521, HKDF-SHA512) KEM, HKDF-SHA512 KDF, and 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="ke-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="5" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-3-ke">
          <name>HPKE-3-KE</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-3-KE</t>
            </li>
            <li>
              <t>Algorithm Description: Key Encryption with HPKE using DHKEM(X25519, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and 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="ke-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="5" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-4-ke">
          <name>HPKE-4-KE</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-4-KE</t>
            </li>
            <li>
              <t>Algorithm Description: Key Encryption with HPKE using DHKEM(X25519, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and 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="ke-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="5" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-5-ke">
          <name>HPKE-5-KE</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-5-KE</t>
            </li>
            <li>
              <t>Algorithm Description: Key Encryption with HPKE using DHKEM(X448, HKDF-SHA512) KEM, HKDF-SHA512 KDF, and 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="ke-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="5" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-6-ke">
          <name>HPKE-6-KE</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-6-KE</t>
            </li>
            <li>
              <t>Algorithm Description: Key Encryption with HPKE using DHKEM(X448, HKDF-SHA512) KEM, HKDF-SHA512 KDF, and 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="ke-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="5" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></t>
            </li>
          </ul>
        </section>
        <section anchor="hpke-7-ke">
          <name>HPKE-7-KE</name>
          <ul spacing="normal">
            <li>
              <t>Algorithm Name: HPKE-7-KE</t>
            </li>
            <li>
              <t>Algorithm Description: Key Encryption with HPKE using DHKEM(P-256, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and 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="ke-algs"/> of [[ this specification ]]</t>
            </li>
            <li>
              <t>Algorithm Analysis Documents(s): <xref section="5" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></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 secret, as defined in <xref section="5" sectionFormat="of" target="I-D.ietf-hpke-hpke"/></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-secrets"/> 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="I-D.ietf-hpke-hpke"/></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>
    <section anchor="summary-of-updates-to-rfc-7516-jwe">
      <name>Summary of Updates to RFC 7516 (JWE)</name>
      <t>This specification updates JSON Web Encryption (JWE) <xref target="RFC7516"/> as follows:</t>
      <ul spacing="normal">
        <li>
          <t>Adds the Integrated Encryption Key Management Mode and correspondingly
updates the Key Management Mode definition (<xref target="terminology"/>).</t>
        </li>
        <li>
          <t>Updates the "enc" header parameter to be absent when
Integrated Encryption is used in (<xref target="overview"/>).</t>
        </li>
        <li>
          <t>Replaces the Message Encryption procedure (<xref target="encryption"/>).</t>
        </li>
        <li>
          <t>Replaces the Message Decryption procedure (<xref target="decryption"/>).</t>
        </li>
        <li>
          <t>Updates the methods for distinguishing between JWS and JWE objects
(<xref target="distinguishing"/>).</t>
        </li>
      </ul>
    </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="I-D.ietf-hpke-hpke">
          <front>
            <title>Hybrid Public Key Encryption</title>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <author fullname="Karthikeyan Bhargavan" initials="K." surname="Bhargavan">
              <organization>Inria</organization>
            </author>
            <author fullname="Benjamin Lipp" initials="B." surname="Lipp">
              <organization>Inria</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
         </author>
            <date day="2" month="March" year="2026"/>
            <abstract>
              <t>   This document describes a scheme for hybrid public key encryption
   (HPKE).  This scheme provides a variant of public key encryption of
   arbitrary-sized plaintexts for a recipient public key.  It also
   includes a variant that authenticates possession of a pre-shared key.
   HPKE works for any combination of an asymmetric Key Encapsulation
   Mechanism (KEM), key derivation function (KDF), and authenticated
   encryption with additional data (AEAD) encryption function.  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>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-hpke-hpke-03"/>
        </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="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="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="RFC8937">
          <front>
            <title>Randomness Improvements for Security Protocols</title>
            <author fullname="C. Cremers" initials="C." surname="Cremers"/>
            <author fullname="L. Garratt" initials="L." surname="Garratt"/>
            <author fullname="S. Smyshlyaev" initials="S." surname="Smyshlyaev"/>
            <author fullname="N. Sullivan" initials="N." surname="Sullivan"/>
            <author fullname="C. Wood" initials="C." surname="Wood"/>
            <date month="October" year="2020"/>
            <abstract>
              <t>Randomness is a crucial ingredient for Transport Layer Security (TLS) and related security protocols. Weak or predictable "cryptographically secure" pseudorandom number generators (CSPRNGs) can be abused or exploited for malicious purposes. An initial entropy source that seeds a CSPRNG might be weak or broken as well, which can also lead to critical and systemic security problems. This document describes a way for security protocol implementations to augment their CSPRNGs using long-term private keys. This improves randomness from broken or otherwise subverted CSPRNGs.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8937"/>
          <seriesInfo name="DOI" value="10.17487/RFC8937"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC7515">
          <front>
            <title>JSON Web Signature (JWS)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) 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 an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7515"/>
          <seriesInfo name="DOI" value="10.17487/RFC7515"/>
        </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="RFC9864">
          <front>
            <title>Fully-Specified Algorithms for JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE)</title>
            <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
            <author fullname="O. Steele" initials="O." surname="Steele"/>
            <date month="October" year="2025"/>
            <abstract>
              <t>This specification refers to cryptographic algorithm identifiers that fully specify the cryptographic operations to be performed, including any curve, key derivation function (KDF), and hash functions, as being "fully specified". It refers to cryptographic algorithm identifiers that require additional information beyond the algorithm identifier to determine the cryptographic operations to be performed as being "polymorphic". This specification creates fully-specified algorithm identifiers for registered JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE) polymorphic algorithm identifiers, enabling applications to use only fully-specified algorithm identifiers. It deprecates those polymorphic algorithm identifiers.</t>
              <t>This specification updates RFCs 7518, 8037, and 9053. It deprecates polymorphic algorithms defined by RFCs 8037 and 9053 and provides fully-specified replacements for them. It adds to the instructions to designated experts in RFCs 7518 and 9053.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9864"/>
          <seriesInfo name="DOI" value="10.17487/RFC9864"/>
        </reference>
        <reference anchor="I-D.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 the Bundeswehr Munich</organization>
            </author>
            <author fullname="Michael B. Jones" initials="M. B." surname="Jones">
              <organization>Self-Issued Consulting</organization>
            </author>
            <author fullname="Orie Steele" initials="O." surname="Steele">
              <organization>Tradeverifyd</organization>
            </author>
            <author fullname="Ajitomi, Daisuke" initials="A." surname="Daisuke">
              <organization>bibital LLC</organization>
            </author>
            <author fullname="Laurence Lundblade" initials="L." surname="Lundblade">
              <organization>Security Theory LLC</organization>
            </author>
            <date day="7" month="April" year="2026"/>
            <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-25"/>
        </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="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>
        <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>
      </references>
    </references>
    <?line 1109?>

<section anchor="keys-used-in-examples">
      <name>Keys Used in Examples</name>
      <section anchor="int-key">
        <name>Integrated Encryption Key</name>
        <t>This private key and its implied public key are used for
the Integrated Encryption example in <xref target="compact-example"/> and <xref target="flattened-example"/>:</t>
        <sourcecode type="text"><![CDATA[
{
  "kty": "EC",
  "use": "enc",
  "alg": "HPKE-0",
  "kid": "yCnfbmYMZcWrKDt_DjNebRCB1vxVoqv4umJ4WK8RYjk",
  "crv": "P-256",
  "x": "gixQJ0qg4Ag-6HSMaIEDL_zbDhoXavMyKlmdn__AQVE",
  "y": "ZxTgRLWaKONCL_GbZKLNPsW9EW6nBsN4AwQGEFAFFbM",
  "d": "g2DXtKapi2oN2zL_RCWX8D4bWURHCKN2-ZNGC05ZaR8"
}
]]></sourcecode>
      </section>
      <section anchor="ke-key">
        <name>Key Encryption Key</name>
        <t>This private key and its implied public key are used for
the Key Encryption example in <xref target="general-example"/>:</t>
        <sourcecode type="text"><![CDATA[
{
  "kty": "EC",
  "use": "enc",
  "alg": "HPKE-0-KE",
  "kid": "9CfUPiGcAcTp7oXgVbDStw2FEjka-_KHU_i-X3XMCEA",
  "crv": "P-256",
  "x": "WVKOswXQAgntIrLSYlwkyaU1dIE-FIhrbTEotFgMwIA",
  "y": "jpZT1WNmQH752Bh_pDK41IhLkiXLj-15wR4ZBZ-MWFk",
  "d": "MeCnMF65SaRVZ11Gf1Weacx3H9SdzO7MtWcDXvHWNv8"
}
]]></sourcecode>
      </section>
    </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
Richard Barnes,
Brian Campbell,
Matt Chanda,
Ilari Liusvaara,
Neil Madden,
Aaron Parecki,
Filip Skokan,
Deb Cooley,
and
Sebastian Stenzel
for their contributions to the specification.</t>
      <t>Thanks to Peter Yee for the Genart review.</t>
    </section>
    <section numbered="false" anchor="document-history">
      <name>Document History</name>
      <t>-17</t>
      <ul spacing="normal">
        <li>
          <t>Clarified in Section 3 that only Integrated Encryption is newly
defined; other Key Management Modes are from <xref target="RFC7516"/>.</t>
        </li>
        <li>
          <t>Added explanation that Integrated Encryption corresponds to the
Single-Shot API in <xref section="6.1" sectionFormat="of" target="I-D.ietf-hpke-hpke"/>.</t>
        </li>
        <li>
          <t>Renamed "Flattened JWE JSON Serialization Example" to
"JWE JSON Serialization Example".</t>
        </li>
        <li>
          <t>Added note explaining HPKE-7/HPKE-7-KE pairing rationale.</t>
        </li>
        <li>
          <t>Added qualifying clause to step 9 of Message Encryption and
step 13 of Message Decryption regarding multiple recipients.</t>
        </li>
        <li>
          <t>Updated authentication wording in Security Considerations to use
HPKE spec terminology "proof of sender origin".</t>
        </li>
        <li>
          <t>Replaced RFC4086 with <xref target="RFC8937"/>.</t>
        </li>
        <li>
          <t>Upgraded <bcp14>SHOULD NOT</bcp14> to <bcp14>MUST NOT</bcp14> for key reuse across Key
Encryption and Integrated Encryption modes.</t>
        </li>
        <li>
          <t>Added RFC Editor note regarding draft-ietf-oauth-8725bis.</t>
        </li>
        <li>
          <t>Updated Algorithm Analysis field in IANA registrations to point
to specific sections of <xref target="I-D.ietf-hpke-hpke"/>.</t>
        </li>
        <li>
          <t>Moved IANA.JOSE and IANA.HPKE to informative references.</t>
        </li>
      </ul>
      <t>-16</t>
      <ul spacing="normal">
        <li>
          <t>Change uses of Key Establishment Mode to Key Management Mode to align with JWE terminology.</t>
        </li>
      </ul>
      <t>-15</t>
      <ul spacing="normal">
        <li>
          <t>Defined the Integrated Encryption Key Establishment Mode
and updated JWE to enable its use.</t>
        </li>
        <li>
          <t>Specified distinct algorithms for use with Key Encryption and Integrated Encryption
so that they are fully-specified.</t>
        </li>
        <li>
          <t>Updated the Message Encryption and Message Decryption procedures from JWE.</t>
        </li>
        <li>
          <t>Said that JWS and JWE objects can no longer be distinguished by the presence of
an "enc" header parameter.</t>
        </li>
        <li>
          <t>Many editorial improvements.</t>
        </li>
      </ul>
      <t>-14</t>
      <ul spacing="normal">
        <li>
          <t>Added HPKE-7.</t>
        </li>
        <li>
          <t>Update to Recipient_structure.</t>
        </li>
        <li>
          <t>Removed text related to apu and apv.</t>
        </li>
        <li>
          <t>Updated description of mutually known private information.</t>
        </li>
      </ul>
      <t>-13</t>
      <ul spacing="normal">
        <li>
          <t>Removed orphan text about AKP kty field</t>
        </li>
        <li>
          <t>Fixed bug in "include-fold" syntax</t>
        </li>
        <li>
          <t>Switched reference from RFC 9180 to
draft-ietf-hpke-hpke</t>
        </li>
        <li>
          <t>Editorial improvements to abstract and
introduction.</t>
        </li>
        <li>
          <t>Removed Section 8.2 "Static Asymmetric
Authentication in HPKE"</t>
        </li>
      </ul>
      <t>-12</t>
      <ul spacing="normal">
        <li>
          <t>Added the Recipient_structure</t>
        </li>
      </ul>
      <t>-11</t>
      <ul spacing="normal">
        <li>
          <t>Fix too long lines</t>
        </li>
      </ul>
      <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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
7fSWd/3guVIdNDv3V7t7/nmQe7nK2V4nszviUbK3+edn9jy9ap7tlc5yZ/f9
+cLJlerlM8t+Ck7LrcP+Q222m7/InVSeDNc9PZ65rUVuTo3rr1dOrjwq7lce
7vdZvlPNN/t33unNuF97bu09TBv7A7/aKJzWX48H/mTiTR8vL+/MlxoPXt4b
Vszx8XV/ObOdE689P5wVDxvBrJe5vQYt2XmoNZqnJ4/FcWZm7w+OTPPzzOo3
XmsvVzwO2HkplzOP9yWn91w2Xk+Oy6Wg+ugEZvmuMb4eWiPz5WbenM5vOsXh
YGZfsbNlZ9SzFjzk+KJ22u69Nsy6cwEM2PGXn6+fF8d71p3XqFt2o3ruz1un
uWLG7s+uS72gOb51gubCdnwey3hr5B+CcaHw6tQG1UZ7d/EwG5tH81OWudt1
nPZtw75greXD3S6rH1v+sLZvXl3lxo1ZYZhCSyEVulKegNQQbYfVC/sxc+f0
RlezYvvCvrGPqncPi9vTw8xV+aHfXTjX7e5Z+YFGb3WskxO7W/Tau59vXw9P
C9f9/NOy4owN36k4t3fHh6/m572LkXl2ZrU+F/mQ6DqDge6OR3az/mj3jl/m
ZqHtGvfVYS//MDTxeeN02pv0+fuhvY+tvoVn0xRXGfcbfDulff0dd/Vq0orq
O9q8L9NRVKCf6EuLtqf0SBomnvFjNsbQt8D8JG+54oHVdlh2mEVnH6xI9Jmq
145OMvXO36qg/p51UzosKXXdqWYuqnXSm1If0xq82Wdrh3TvP2Ta7BBMcJNx
Yy3ZbYWL3OIOi/ctrexvdT1tcTgp7hVkm9J3F3MvZsi9CCDa7Fbc6HN5j49j
m48Ej3Iid03oFyXfzbWkgyfQ42Z9PFJIRTEnKEJiPUdhFgmOIECrfHmrL/dN
l0b957g0EtYGstJbfypU4WRgyPPNNdglgJqfNUyZh16lbXSthTHB5EVFN4/i
iZKe01X/0A1uLx+XIRRnh/k8eJHOTV0Y2OBxuHi2iWgP1235uqRAdCvrPcsx
QG/nY/Lj2dABjjqDL3w6vpDySbD8T73aqTWbO5Sfl+EGQX8apD7qv/6qrVtB
+Hf4cFPfAZN3yyu8T+Fcfoq8W0+wr3+s5wjzAHDPeEKQc47fRQcxHfptWBHG
IA2sF4AevUBJawgpHoSxlExbIlMekUhQYaRuNEPsTHjR8ZB0GTB9Z/el0fgY
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
Hy5W2CuGJKwN9ieStiKpsBFJhZ+DJFm87k9+9wNYKm7EUvEPwdJaub0/USVR
VdqIqtJPQhVVQfyT6f0AjsobcVT+A3D052baiKi9jYja+6OU8T930yqS8JRk
s9GEP25E1caLZP49DSZZLfsnomjjjb+qtbQNQbmfgaB/F2PpD0JQfhuC8j8D
Qf8uhtIfhKDCNgQVfhxB/0ZG0h+EoeI2DBV/dwz9j9fp/iA0lbahqfQT0PTv
Yhz9Qfgpb8NP+XfGz5+baINVtA1Je3+Ewv3nLvr63jOwtfKI33sUhqiMetl0
6iWOttgYCWYt/5fTDdaRT/o1RjnVhNoZbP0ys/TmuxM3Ai5h6AS6Oe3Wv58Q
1Jlm+EzfogqCG7+gcxvsxBWe3wU/yneUt+h5+s7YMj+GofzxMJotcM3mNkcD
/B6wdefMm1ts8SY89c5sMsHLv+C1WzqppqgbPH3GIFsedJscIibefl+obuwm
yQxmBfFYkWTHUFJqOr9TVanWQDXJ5Sw2hPRx9Fh8Ul++8NBr13aHSx7alIkW
vTHRR5bW6tHVrhgTjfHX26KikRh2VCTwoa75JQJ8rISS/hQ7YFJQNO0OWYFt
W/MjltxcKeCWsFAZqS2uZUgI1Y6F3Ys4a1g29hyPvOe9ZzKwlfpjcaGxD/TM
oSBuh/GJEW/G9ZcP8lJkQWpKQCe/2BRvhJtgIJephuwhP5bXRmibySm8S4Ii
o3npk/CaGgo4h+frl6d/5QGhOmX6qFGh9dpamOVaJOZuLHBzWXMGvcnD+WO/
650dBU9Hz23Wu64d5uYvd+7neXE2OS12zyrXD8/jWLwpv2U5CjcdWi9Xp7uf
h8XqMFM+6ZwbzfpR6+m1dzRy7435+fLMnpjO01P16k6Em9J8H19uhtetrnF2
0a61no57j2et9qXf3a93y86h3y5WF1fH9Ua10eidK0Gqw/zRfXBmTK28286/
tp6ua937ylGx1729PqmdtfOZx/Zxbbf0aFxXoijTtVvqOHrF7R0/iN2VrmNo
Xb196MeQJ6+E+d7LYDbhr3t3duEv7q+qQydoeq3Og70YL43bnNmsZxrNkde7
qbtBY3i+aFYV/D1PH29y3fbk6mSvlD8cPU2Pzoq55qg1tu5bz5lcaXFdfDx8
zJx3G2MFf+es5pw3yqWOcX33mMsdD3JdZvRfCif7HfP1Yu886PaP7ucn3fZc
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
bJC3/z9maNxjGMEAAA==

-->

</rfc>
