<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-jose-hpke-encrypt-15" category="std" consensus="true" submissionType="IETF" updates="7516" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.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-15"/>
    <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="2025" month="November" day="30"/>
    <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 110?>

<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
the Integrated Encryption Key Establishment 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 122?>

<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 method 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.</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).</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
the Integrated Encryption Key Establishment 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)  | HKDF-SHA256 | AES-128-GCM      |
| HPKE-1 | DHKEM(P-384, HKDF-SHA384)  | HKDF-SHA384 | AES-256-GCM      |
| HPKE-2 | DHKEM(P-521, HKDF-SHA512)  | HKDF-SHA512 | AES-256-GCM      |
| HPKE-3 | DHKEM(X25519, HKDF-SHA256) | HKDF-SHA256 | AES-128-GCM      |
| HPKE-4 | DHKEM(X25519, HKDF-SHA256) | HKDF-SHA256 | ChaCha20Poly1305 |
| HPKE-5 | DHKEM(X448, HKDF-SHA512)   | HKDF-SHA512 | AES-256-GCM      |
| HPKE-6 | DHKEM(X448, HKDF-SHA512)   | HKDF-SHA512 | ChaCha20Poly1305 |
| HPKE-7 | DHKEM(P-256, HKDF-SHA256)  | HKDF-SHA256 | AES-256-GCM      |
+--------+----------------------------+-------------+------------------+
]]></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[
eyJhbGciOiJIUEtFLTAiLCJraWQiOiJ5Q25mYm1ZTVpjV3JLRHRfRGpOZWJSQ0IxdnhWb3F2NHVtSjRXSzhSWWprIn0.BLAJX8adrFsDKaoJAc3iy2dq-6jEH3Uv-bSgqIoDeREqpWglMoTS67XsXere1ZYxiQKEFU6MbWe8O7vmdlSmcUk..NcN9ew5aijn8W7piLVRU8r2cOP0JKqxOF4RllVsJM4qsAfVXW5Ka6so9zdUmXXNOXyCEk0wV_s8ICAnD4LbRa5TkhTeuhijIfAt9bQ2fMLOeyed3WyArs8yaMraa9Zbh4i6SaHunM7jU_xoz_N2WbykSOSySmCO49H4mP3jLW9L_TYQfeVfYsrB8clqokZ8h-3eQGNwmOPtkjWdpAfaHUsp4-HC9nRd6yrTU6mV65Nn2iYynu3Xkgy2Lm-kQKDavIEW3PBpEeiw6mtPJE9o8sT-0lZ9kpWtqog2XbNGEfjSOjujvNe1b0g4-FdNFMFO_fo0rxe902W1pGT7znv4Q-xBkIydK4ZwjiFN6dAXutnococ37A0Hr5esPLwHRTTrBFw.
]]></artwork>
        <t>The key used for this example is in <xref target="int-key"/>.</t>
      </section>
      <section anchor="flattened-example">
        <name>Flattened JWE JSON Serialization Example</name>
        <t>Below is an example of a JWE using the Flattened JSON Serialization and Integrated Encryption with HPKE:</t>
        <artwork><![CDATA[
{
  "ciphertext": "LabI8_KIPDbymUSbyVctj8AfISXQ07sMt1xQ1lrS-0heU2jjejpQIK75K1KXcvwn15E6Kil_tJ6LBcYCu02O1H8_aooJGuoLw1vEzQn16h498YX9e2SA2IcVrJTkcCjL7YpF9fsAF3JEzGfsmmrpZPPVdxCn7g8dkGRcyulnHrNvBu4BFtub-URtf-nYCFIJHZ4k-ul9fDddquicFzCxQonx66-ZX5nbj6azHG65tAZntd6VFkRgihdxTvIpvTS4gfulQeKyShbiw-OCJNbzFdEnOKEMnsyqRjwG7iVrFEilFAMsvLJ14-lcuR5btIkUntIwlnsfUa2Ytk33znCfAFN0wYukdDvJe-V0nnNUFlOeLyYV0eEGisgC9dQQ1kFu3g",
  "encrypted_key": "BAOlZ-VnbhQu4NOlTlDAVYwUJB-Q6YcWwnRNWK6YLSiHHlW4rN0qUzBJ3Rc2_y8nkasn8nUVGBzdq7OhdKKiLq4",
  "aad": "VGhlIEZlbGxvd3NoaXAgb2YgdGhlIFJpbmc",
  "protected": "eyJhbGciOiJIUEtFLTAiLCJraWQiOiJ5Q25mYm1ZTVpjV3JLRHRfRGpOZWJSQ0IxdnhWb3F2NHVtSjRXSzhSWWprIn0"
}
]]></artwork>
        <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 <tt>ECDH-ES+A128KW</tt> or <tt>RSA-OAEP-256</tt>),
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 a 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 <tt>Recipient_structure</tt> 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 <tt>Recipient_structure</tt> 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 <tt>info</tt> 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
the Key Encryption Key Establishment 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)  | HKDF-SHA256 | AES-128-GCM      |
| HPKE-1-KE | DHKEM(P-384, HKDF-SHA384)  | HKDF-SHA384 | AES-256-GCM      |
| HPKE-2-KE | DHKEM(P-521, HKDF-SHA512)  | HKDF-SHA512 | AES-256-GCM      |
| HPKE-3-KE | DHKEM(X25519, HKDF-SHA256) | HKDF-SHA256 | AES-128-GCM      |
| HPKE-4-KE | DHKEM(X25519, HKDF-SHA256) | HKDF-SHA256 | ChaCha20Poly1305 |
| HPKE-5-KE | DHKEM(X448, HKDF-SHA512)   | HKDF-SHA512 | AES-256-GCM      |
| HPKE-6-KE | DHKEM(X448, HKDF-SHA512)   | HKDF-SHA512 | ChaCha20Poly1305 |
| HPKE-7-KE | DHKEM(P-256, HKDF-SHA256)  | HKDF-SHA256 | AES-256-GCM      |
+-----------+----------------------------+-------------+------------------+
]]></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-LkpTLE3Et2VQNcOpPAIBfyx8rUzshGqiOFOWzcoWZ3mIwYuDvvAW3-P1RCS8Dtq70JRvahO5O8sAN1vzJg8_dyBPnwsQY6Cy3RhMD6sSSCjjSw0FYmmx67IiI2zJ6Wr8z69k0f34ZTh43k4C-pTwaUSvjl2XI_YrUgdDVYmY_MJ5vmlPTcceMaefP8Onz_fx5xOcGfnVBVz2gpMQPuQL8k5Rk5KJvPGfFfN6hrgWkK_LDzi4lrfnIrvNsk3BCBeZPpc-n19-u7W4-GQxLjAlVyMHeGk5K4tU6gHB8PnnQ4ND5ZTtyXrJWQW-Qr1iFev6g",
  "iv": "mLiHjYaQA42nPm1L",
  "recipients": [
    {
      "encrypted_key": "hU6b0hp4-y4ZoK1Qz8YWmDmqDmgTto3HW25-RyPhcLU",
      "header": {
        "alg": "HPKE-0-KE",
        "kid": "9CfUPiGcAcTp7oXgVbDStw2FEjka-_KHU_i-X3XMCEA",
        "ek": "BGWPWLoD5BUjFEDIjMS-yvtcCXBn5A-kuv2RjzUY_2hKUjgZINqtEy1aHZ8dWxAiyApV5JafG76W8O_yZzy5T54"
      }
    }
  ],
  "tag": "K22C64ZhFABEu2S2F00PLg",
  "aad": "VGhlIEZlbGxvd3NoaXAgb2YgdGhlIFJpbmc",
  "protected": "eyJlbmMiOiJBMTI4R0NNIn0"
}
]]></artwork>
        <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 the Integrated Encryption 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
<tt>alg</tt> (algorithm)
Header Parameter of the resulting JWE.)</t>
          </li>
          <li>
            <t>When Key Wrapping, Key Encryption,
or Key Agreement with Key Wrapping are 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="RFC4086"/> 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
are 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 are 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 are 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, 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 <tt>zip</tt> 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 <tt>protected</tt> 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,
and when using the JWE JSON Serialization,
these components also include the base64url-encoded representation of
the JWE AAD and 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 <tt>crit</tt> 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
<tt>alg</tt> (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
are 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 are 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 are 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, 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 <tt>protected</tt> 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 <tt>zip</tt> 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
<tt>enc</tt> (encryption algorithm) member exists.
If the <tt>enc</tt> 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 the Integrated Encryption Key Establishment 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 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 key <bcp14>MUST NOT</bcp14> be used with multiple KEM algorithms.
Each key and its associated HPKE algorithm suite, comprising the KEM, KDF, and AEAD,
<bcp14>SHOULD</bcp14> 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 <bcp14>SHOULD NOT</bcp14> be used for both
Key Encryption and Integrated Encryption, as it may introduce security risks.
It creates algorithm confusion, increases the potential for key leakage, cross-suite attacks, and improper handling of the key.</t>
      </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>
      </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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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="4" month="November" year="2025"/>
            <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 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-02"/>
        </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="IANA.JOSE" target="https://www.iana.org/assignments/jose">
          <front>
            <title>JSON Web Signature and Encryption Algorithms</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC4086">
          <front>
            <title>Randomness Requirements for Security</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <author fullname="J. Schiller" initials="J." surname="Schiller"/>
            <author fullname="S. Crocker" initials="S." surname="Crocker"/>
            <date month="June" year="2005"/>
            <abstract>
              <t>Security systems are built on strong cryptographic algorithms that foil pattern analysis attempts. However, the security of these systems is dependent on generating secret quantities for passwords, cryptographic keys, and similar quantities. The use of pseudo-random processes to generate secret quantities can result in pseudo-security. A sophisticated attacker may find it easier to reproduce the environment that produced the secret quantities and to search the resulting small set of possibilities than to locate the quantities in the whole of the potential number space.</t>
              <t>Choosing random quantities to foil a resourceful and motivated adversary is surprisingly difficult. This document points out many pitfalls in using poor entropy sources or traditional pseudo-random number generation techniques for generating such quantities. It recommends the use of truly random hardware techniques and shows that the existing hardware on many systems can be used for this purpose. It provides suggestions to ameliorate the problem when a hardware solution is not available, and it gives examples of how large such quantities need to be for some applications. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="106"/>
          <seriesInfo name="RFC" value="4086"/>
          <seriesInfo name="DOI" value="10.17487/RFC4086"/>
        </reference>
        <reference anchor="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 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="19" month="October" 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-18"/>
        </reference>
        <reference anchor="IANA.HPKE" target="https://www.iana.org/assignments/hpke">
          <front>
            <title>Hybrid Public Key Encryption (HPKE)</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="NIST.SP.800-56Ar3" target="https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf">
          <front>
            <title>Recommendation for Pair-Wise Key-Establishment Schemes Using Discrete Logarithm Cryptography, NIST Special Publication 800-56A Revision 3</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2018" month="April"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 1031?>

<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,
and
Sebastian Stenzel
for their contributions to the specification.</t>
    </section>
    <section numbered="false" anchor="document-history">
      <name>Document History</name>
      <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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
EB1yyWVwaXHrjVYVKQi+uxEnyIHYwwgJ3o67yxz0NwWxFVKgbd/XNPn2B8SY
xt9nxYYIhnTEQJDR+aslt0ncxYngQr2ZDHirAy1m9yEy2ep0MjzWjAvjtH3T
9Frn1zXjvH7qqIMrfFa+KpRn97P8w/Xt/Om2eHreO+mNesfzi4fBaf9qr/2s
W5PBsNgqdE9uvf5T767/MukPBnOnbe3ljs5rp3dVVXdabuNMtU9rWtFYFfQv
2cpT86R4s8gO++MvbbvBes0v88HY7NjX/cr+nXsHRlL+4f7ZuDprtm4qneGA
VS/2FzPd7M+0m2ku19W6B2xZVo0nqzrYnxvnt72bqlPQLi73Ts++PF+0Sj3T
vHVPO6Uvbm10ezcon6kV1z540W9md3fdi7tVvTndW94+utV2vWY1SufDnlq+
nk6umT8xntqjmncwvCqMOucXbMX04mBVc9zqSu04qnrwMJyUjEpfPfGtzv7T
zeOz/fLYLQyGq2n/or/qz+oXpYOT0uyy+HQ+ODh/vL6/GrHb0b3rHFU184s9
fahOskV2ddxdzi4uvenTQJ/XRurJjTsvZU/qB1ZPr6yc65vK7LZS7loF435l
+cW76XhVOJ9lp1dnDXXRbg6Kl0fzJjOWlZl3edo8sKvudXbPfDiYzgfeF3tc
uBt2j5ujp/7Fk/+06LL8cG9cyrb0bqvTungc2XvOMzvYKwzy8+Pr/RdrUbrK
Ph9N2yv9rPSwfDJa3Ypeu/M9y9Zsrbhf2ztxysy9PF+e9K6vnaPWMkfME5xi
BwcgZGJLdkWLHVU/LlD4Sq6HFlitYK8zfZsfIlwWI/np+xdGpJfNHt6+Pr6C
KZMOTZ70oZI+V4ft6uNZ+7IxXM1u+sPVreY9VWujdv/uam/f7Xj556u86fSz
exN2U3h6Yk/zq/bZfvksf3anLZZWvtysnBnmo3daOT/S7uv+XuEif1J9VG37
9Ni3z5f5RfPlyspXJqWD6v3dASv0a4W2duucXk+1+tP5/v28dTBya63iafPl
eOTOZs784fLyVn+uW/vjqj497mkr37ROnO7iyC8dtTx/mL3pga1l3ddb7dOT
h9I065sHo4auf/ENrfVSf76yredKJftwV7aGTxX15eS4UvZqD5anV25b097Y
mOjP14v2fHHdL41HvnnFzlb9ydBYZi/qp93hS0tvWhcgPC139aX3tDzeN26d
VtMwW7WOuzg/zZeypub3ykOvPb2xvPbStNzRjVq496bF4otVH9Va3b3lvT/V
G4tTlr3ds6zuTcu8YOer+9s91jw23HH9QL+6yk9bfnGcRgMzHezAH4G5kDBH
tQvzIXtrDSdXfql7YV6bjdrt/fLm9Ch7VbnXBkur1x2cVe7P+8bJiTkoOd29
LzcvR6fFnlZ4XFWtqepaVevm9vjoRf+yfzHRz86M8y8l3hs6W6CP2+OJ2W4+
mMPj54Ve7NrqXW08LNyPdXzeOp0PZxr/PtghYqvfUMqmU99+8VpcjyiPug22
b8oyYcSOm+hGCReRdEapuo6+edO2xq4BOw9ylEacb6mPLDfOoZ8HFKyA+blZ
b5xkm/0/1cDgOht8VmBKn3v9Wvai1iQ75POnTAq+1NjG+czbzxe2+4ISPCTc
Ok/2WOAktztC4qDl/uq9TocdrobIxhplm/TaxBxLWXIsAYa2O5S27rbfsrvd
tTtGJ364UQ88YvijJ7ngEQwoX6NIKrk9G6KsJ7gnTQ43PBdOcAAATeUgdvrw
Xt3KNr/PVjZpal8/OJtPhQn6OaHB5+BcawNzCYjmPuY5c9CbsIupU0GwHnnP
cHsf8UBIj9m6X+Aa15aL0xAGq8VcHlVE52U2dKzyADk800KiB/M2XEXyH7oT
laFhqWAv8z75sVzg+ETl7oq9vCsUcRIu/6LU+vV2+yNlzmS5Ia7NvTRst34O
Yobj/47ur5sfYYO24xMOUzgVH0OvxiOs6l8HOaQ8INxRHxHlXHgP0DFIhz1b
ZoRBEyPjGbBHH1A6CWKKH76vpMSWxJSucYkqDKELR4jAhPcUD8dWHlM+7j23
Wp/CE25mGjMDloXBTN3NhQPbgpZDpS3DANxwIFt8siJ4IxLtQdvM0KO+M1on
OIZWlDYIJL4ios5I7lj+mNTzp00ZSu1TiiJPScL4tsDtTEgIo1tRnCQtGiGE
gnNcDI3VfZOhCOFT5WvHDUIYtp2gDG3f0iU8l5nc07wLpd+BvknMCYAsKeU5
wwnNQqGFobc1AR2YKCanGXVACuejKxG+LmIUpfNbeEjX/KPcODKsue+FvEAs
NcKjhd1T4wfCxA16hkPiLPK6SzzVBauQIyZ5/xEcdaJX0tuqE+QxiLTSLoPz
CBG2GTjuMTTBCeNMJNoDHU/8Lw/ph3QKzcPXwlNPyYmhuiT1lqzfxOaNK7Sk
DyJaQOiA9ZiNr1+TVCQ/wY5Ypxzn3D2T2iKYQEWk0X48rnfSmUQWxy/Sn9Cm
dcnAEfgJHcm0fCQFhTJaE8//+3k0Er3gn+nQII8HTk3AGtdhDDPgK4cJg02y
lABdUkujcrFULuilanmvNIS/9vYLleL+3n5pNCrli/lioVgt7ZeKJX00kj0Z
bjyKUdoLNMTPOM/PEZn3ViMhlyIzZu31Nlc8GD/f0xO/1uvbXPDfxectvPDK
d3TEf5dxcV98Fnr5Xu74OKxf55GPw/p1TvkorF/rl383rB2u+RisX+mdfzes
HQ76X8QT23z034FXk9z0Qjy87qWPL/zf1j2P4u2YWbBtMV/3Ro75h+/3RQY9
JHsidzgetrgg/Vb+7mh4+zCY3M8e540hO120H0dT/0vr1DjT84POZfHi8ah2
fHGZPZ/Or8+bxaZXuL3qahfzy1r7aLR6rjo3L+7k+Itx0boYvGj24KE4ay/v
/cZiURsUs5f5Xr1fbXhf9vdOewt1clG+qLq1bn7xcjquPuqro0tr6V7dV+qr
Ym/SaVTcfr/+9NRf7rXuZ7Pnyn7baBdeTisDp/pSOZjujYqlh+tJqTgt1bPz
66V60188mYW79uO9czPWG7f3s/vHzml5MTMvrzWNdVQ2uqxeWC+Po+fy84V2
PLJuj25fCuN55+rSvzqvTsu9afnsdHF5PGqNupWJMx5Mzx7PGy9GyXRGVttZ
dN1p8ah+xB4u51rWyh9k/f1BKXt89Xz+VDNvV50TdgwQSt5NZXxyVL20rKtS
t1F+uPZWd87p4GqQvXLyRostKsLZaCwQ77Nz4+TpXr2qlQrW5Sx/zt+Ffiz4
5u+09/sqdoCbTsrJTWW4N5mXsqvSg32Wv3qp3g9mjdmXxmx87dnFk0GhnO2t
Lifa+Q1BJyh81wLNvwY7S1JSAC9QCsHX8G5qkNvxoD66uTSOtZp2Pd+378a3
w0bfWxZazaepmn08O7l5NLJ3xbtOvVmLtmZT8qYeDy4H53ajfHTz1Go22k+d
fna18LT63ZFVrmWn/qLQe3q5uX8sTM5unsYP7e4Xr7nKqycPVX3wXDNWtflt
+VQdHe9XBtWLx9XDy6p8XS6lRT/fUvL//0FI9FSazlmhUK+UHiat2lHTL/QL
rb29y/Px93HBmsNZB92tR53rdqm31+2+3306ZYH3NPUBrW7d12Q5DcqJnwmL
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

-->

</rfc>
