<?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.30 (Ruby 3.4.8) -->
<?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-16" 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-16"/>
    <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="February" day="16"/>
    <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
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 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
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)  | 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
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)  | 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 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
<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 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 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>Tradeverifyd</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>
            <author fullname="Michael B. Jones" initials="M. B." surname="Jones">
              <organization>Self-Issued Consulting</organization>
            </author>
            <date day="2" month="February" 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-21"/>
        </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>-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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
nrjA00J0yCWXwaXFrTdaVaQg+O5GnB8HYg/jI3g77i5z0N8URFZIgbZ7X9Pk
2x8QYxp/nxUbIhjSCQNBRuevltwmcRcnggv1ZjLgnQ60mN2HyGTr8+noVDMu
jfP2bdNrdW5qRqd+7qjDa3xWvi6U5w/z/OPN3eL5rnje6Z/1x/3TxeXj8Hxw
fdB+0a3pcFRsFXpnd97guX8/eJ0OhsOF07YOcied2vl9VdWdltu4UO3zmlY0
1gX9S7by3Dwr3i6zo8HkS9tusH7zy2I4Mbv2zaByeO/eg5GUf3x4Ma4vmq3b
Snc0ZNXLw+VcNwdz7XaWy/W03hFblVXj2aoODxdG565/W3UK2uXVwfnFl5fL
Vqlvmnfuebf0xa2N7+6H5Qu14tpHr/rt/P6+d3m/rjdnB6u7J7fartesRqkz
6qvlm9n0hvlT47k9rnlHo+vCuNu5ZGumF4frmuNW12rXUdWjx9G0ZFQG6plv
dQ+fb59e7NenXmE4Ws8Gl4P1YF6/LB2dleZXxefO8KjzdPNwPWZ34wfXOalq
5hd79lidZovs+rS3ml9eebPnob6ojdWzW3dRyp7Vj6y+Xlk7N7eV+V2l3LMK
xsPa8ov3s8m60JlnZ9cXDXXZbg6LVyeLJjNWlbl3dd48sqvuTfbAfDyaLYbe
F3tSuB/1Tpvj58Hls/+87LH86GBSyrb0Xqvbunwa2wfOCzs6KAzzi9Obw1dr
WbrOvpzM2mv9ovS4ejZavYpeu/c9y9ZsrXhYOzhzysy96qzO+jc3zklrlSPm
CU6xgwMQMrElu6LFjqofFyh8JddDC6xWsNeZvssPES6Lsfz0+xdGpJftHt6/
Pr6CKZMOTZ70sZLuqKN29emifdUYree3g9H6TvOeq7Vxe3B/fXDodr38y3Xe
dAbZgym7LTw/s+fFdfvisHyRv7jXlisrX25WLgzzyTuvdE60h7p/ULjMn1Wf
VNs+P/Xtziq/bL5eW/nKtHRUfbg/YoVBrdDW7pzzm5lWf+4cPixaR2O31iqe
N19Px+587iwer67u9Je6dTip6rPTvrb2TevM6S1P/NJJy/NH2ds+2FrWQ73V
Pj97LM2yvnk0buj6F9/QWq/1l2vbeqlUso/3ZWv0XFFfz04rZa/2aHl65a41
60+Mqf5ys2wvljeD0mTsm9fsYj2YjoxV9rJ+3hu9tvSmdQnC03LXX/rPq9ND
485pNQ2zVeu6y855vpQ1Nb9fHnnt2a3ltVem5Y5v1cKDNysWX636uNbqHawe
/JneWJ6z7N2BZfVuW+Yl66wf7g5Y89RwJ/Uj/fo6P2v5xUkaDcx0sAN/AuZC
wpzULs3H7J01ml77pd6leWM2ancPq9vzk+x15UEbrqx+b3hReegMjLMzc1hy
egdfbl9Pzot9rfC0rloz1bWq1u3d6cmr/uXwcqpfXBidLyXeGzpboI+706nZ
bj6ao9OXpV7s2ep9bTIqPEx0fN46X4zmGv8+2CFiq19RyqZT3372WtyMJ4+6
DXZvyjJhxI6b6EYJF5F0Rqm6jr5507YmrgE7D3KURpxvqY8sN8mhnwcUrID5
uVlvnGWbgz/VwOC6GH5WYEqf+4Na9rLWJDvk86dMCr7U2Nb5zPvPF3b7ghI8
JNw6T/ZY4CR3O0LioOX+6nudDntcDZGNNco26bWJOZay5FgCDO12KO3cbb9n
d7tvd4xO/HCjHnjE8EdfcsETGFC+RpFUcns2QllPcM+aHG54LpzgAACaykHs
9eG9uZVt/pitbNLUvn5wtp8KE/RzQoPPwbnWFuYSEM19zAvmoDdhH1OngmA9
8p7h9j7igZAes02/wA2uLRenIQxWi7k8qojOy2zoWOUBcnimhUQP5m24iuQ/
dCcqI8NSwV7mffJjucDxicrdFXt5VyjiJFz+RakN6u32R8qbyXJDXFt4adhu
/SOIGI7/O3m4aX6EDdqeTzhM4VR8Cr0aT7CqfxnkkPKAcEd9QpRz4T1ExyAd
9uyYEQZNjI0XwB59QMkkiCl++L6WElsSU7rGJaowhC4cIQIT3lM8HFt7TPl4
8NJqfQpPuJlpzA1YFgYzdTcXDmwHWo6VtgwDcMOB7PDJiuCNSLQHbTNDj/re
aJ3gGFpR2iCQ+IqIOiO5Y/ljUs+ftmUotU8pijwlCePbArczISGMbkVxkrRo
hBAKznExNFb3TYYihE+Vrx03CGHYdYIysn1Ll/BcZnJP8z6U/gD6JjEnALKk
lOcMJzQLhRaG3tYEdGCamJxm1AEpnI+uRPimiFGU7q/hId3wj3LjyLAWvhfy
ArHUGI8W9k+NHwgTN+gZDomzyNsu8VQPrEKOmOT9R3DUiV5Jb6dOkMcg0kq7
Cs4jRNhm4LjH0AQnjDORaA90PPG/PKQf0Sk0D18LTz0lJ4bqktRbsn4Tmzeu
0JI+iGgBoQM2Yza+fk1SkfwEO2Kdcpxz90xqh2ACFZFG+/G03k1nElkcv0h/
QpvWJQNH4Cd0JNPykRQUymhDPP/vl/FY9IJ/pkODPB44NQVrXIcxzIGvHCYM
NslSAnRJLY3LxVK5oJeq5YPSCP46OCxUiocHh6XxuJQv5ouFYrV0WCqW9PFY
9mS48ShGaS/QED/jPD9HZN57jYRcisyYjde7XPFg/PwoT/xmPNi7XfA/xOct
vPDKD3TE/5BxcV98Fnr5Ue74OKxf5pGPw/plTvkorF/ql/9uWHtc8zFYv9A7
/92w9jjofxZP7PLR/wBeTXLTC/Hwtpc+vvh/Xfc8irdTZsG2xXzbGznhH36/
LzLoIdkTucfxsMMF6bfy9yeju8fh9GH+tGiM2Pmy/TSe+V9a58aFnh92r4qX
Tye108urbGe2uOk0i02vcHfd0y4XV7X2yXj9UnVuX93p6RfjsnU5fNXs4WNx
3l49+I3lsjYsZq/y/fqg2vC+HB6c95fq9LJ8WXVrvfzy9XxSfdLXJ1fWyr1+
qNTXxf6026i4g0H9+XmwOmg9zOcvlcO20S68nleGTvW1cjQ7GBdLjzfTUnFW
qmcXNyv1drB8Ngv37acH53aiN+4e5g9P3fPycm5e3Wga66psfFW9tF6fxi/l
l0vtdGzdndy9FiaL7vWVf92pzsr9WfnifHl1Om6Ne5WpMxnOLp46jVejZDpj
q+0se+6seFI/YY9XCy1r5Y+y/uGwlD29fuk818y7dfeMnQKEkndbmZydVK8s
67rUa5Qfb7z1vXM+vB5mr5280WLLinA2GkvE+7xjnD0/qNe1UsG6muc7/F3o
x4Jv/kZ7v69iB7jtpJzeVkYH00Upuy492hf569fqw3DemH9pzCc3nl08GxbK
2f76aqp1bgk6QeG7Fmj+NdhZkpICeIFSCL6GdzOD3I5H9fHtlXGq1bSbxaF9
P7kbNQbeqtBqPs/U7NPF2e2Tkb0v3nfrzVq0NZuRN/V0eDXs2I3yye1zq9lo
P3cH2fXS0+r3J1a5lp35y0L/+fX24akwvbh9njy2e1+85jqvnj1W9eFLzVjX
Fnflc3V8elgZVi+f1o+v6/JNuZQW/XxLyf//OyHRU2k6F4VCvVJ6nLZqJ02/
MCi0Dg6uOpMf44I1R/MuultPujftUv+g1/t+9+mMBd7T1Ae0unVfk8U0KCN+
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

-->

</rfc>
