<?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.5 (Ruby 3.0.2) -->
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-rha-jose-hpke-encrypt-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.1 -->
  <front>
    <title abbrev="Use of HPKE in JOSE">Use of Hybrid Public-Key Encryption (HPKE) with Javascript Object Signing and Encryption (JOSE)</title>
    <seriesInfo name="Internet-Draft" value="draft-rha-jose-hpke-encrypt-02"/>
    <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/>
      <address>
        <postal>
          <country>Austria</country>
        </postal>
        <email>hannes.tschofenig@gmx.net</email>
      </address>
    </author>
    <author fullname="Aritra Banerjee">
      <organization>Nokia</organization>
      <address>
        <postal>
          <city>Munich</city>
          <country>Germany</country>
        </postal>
        <email>aritra.banerjee@nokia.com</email>
      </address>
    </author>
    <author initials="O." surname="Steele" fullname="Orie Steele">
      <organization>Transmute</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>orie@transmute.industries</email>
      </address>
    </author>
    <author initials="M." surname="Jones" fullname="Michael B. Jones">
      <organization>independent</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>michael_b_jones@hotmail.com</email>
      </address>
    </author>
    <date year="2024" month="January" day="22"/>
    <area>Security</area>
    <workgroup>JOSE</workgroup>
    <keyword>HPKE</keyword>
    <keyword>JOSE</keyword>
    <keyword>PQC</keyword>
    <keyword>Hybrid</keyword>
    <abstract>
      <?line 87?>

<t>This specification defines Hybrid public-key encryption (HPKE) for use with 
Javascript Object Signing and Encryption (JOSE). HPKE offers a variant of
public-key encryption of arbitrary-sized plaintexts for a recipient public key.</t>
      <t>HPKE works for any combination of an asymmetric key encapsulation mechanism (KEM),
key derivation function (KDF), and authenticated encryption with additional data 
(AEAD) function. Authentication for HPKE in JOSE is provided by 
JOSE-native security mechanisms or by one of the authenticated variants of HPKE.</t>
      <t>This document defines the use of the HPKE with JOSE.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-rha-jose-hpke/"/>.
      </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>
    </note>
  </front>
  <middle>
    <?line 102?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Hybrid public-key encryption (HPKE) <xref target="RFC9180"/> is a scheme that 
provides public key encryption of arbitrary-sized plaintexts given a 
recipient's public key. HPKE utilizes a non-interactive ephemeral-static 
Diffie-Hellman exchange to establish a shared secret. The motivation for
standardizing a public key encryption scheme is explained in the introduction
of <xref target="RFC9180"/>.</t>
      <t>The HPKE specification provides a variant of public key encryption of
arbitrary-sized plaintexts for a recipient public key. It also
includes three authenticated variants, including one that authenticates
possession of a pre-shared key, one that authenticates possession of
a key encapsulation mechanism (KEM) private key, and one that
authenticates possession of both a pre-shared key and a KEM private key.</t>
      <t>This specification utilizes HPKE as a foundational building block and
carries the output to JOSE (<xref target="RFC7516"/>, <xref target="RFC7518"/>).</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="conventions-and-terminology">
      <name>Conventions and Terminology</name>
      <t>This specification uses the following abbreviations and terms:</t>
      <ul spacing="normal">
        <li>
          <t>Content-encryption key (CEK), a term defined in CMS <xref target="RFC2630"/>.</t>
        </li>
        <li>
          <t>Hybrid Public Key Encryption (HPKE) is defined in <xref target="RFC9180"/>.</t>
        </li>
        <li>
          <t>pkR is the public key of the recipient, as defined in <xref target="RFC9180"/>.</t>
        </li>
        <li>
          <t>skR is the private key of the recipient, as defined in <xref target="RFC9180"/>.</t>
        </li>
        <li>
          <t>Key Encapsulation Mechanism (KEM), see <xref target="RFC9180"/>.</t>
        </li>
        <li>
          <t>Key Derivation Function (KDF), see <xref target="RFC9180"/>.</t>
        </li>
        <li>
          <t>Authenticated Encryption with Associated Data (AEAD), see <xref target="RFC9180"/>.</t>
        </li>
        <li>
          <t>Additional Authenticated Data (AAD), see <xref target="RFC9180"/>.</t>
        </li>
        <li>
          <t>Key Type (kty), see <xref target="RFC7517"/>.</t>
        </li>
      </ul>
    </section>
    <section anchor="hpke-for-jose">
      <name>HPKE for JOSE</name>
      <section anchor="overview">
        <name>Overview</name>
        <t>The JSON Web Algorithms (JWA) <xref target="RFC7518"/> in Section 4.6 defines two ways using the key agreement result. When Direct Key Agreement is employed, the shared secret established through the HPKE will be the content encryption key (CEK). When Key Agreement with Key Wrapping is employed, the shared secret established through the HPKE will wrap the CEK. If multiple recipients are needed, then Key Agreement with Key Wrapping mode is used.</t>
        <t>In both cases a new JOSE header parameter, called 'encapsulated_key', is used to convey the content of the "enc" structure defined in the HPKE specification. "enc" represents the serialized public key.</t>
        <t>When the alg value is set to any of algorithms registered by this
specification then the 'encapsulated_key' header parameter <bcp14>MUST</bcp14>
be present in the unprotected header parameter.</t>
        <t>The 'encapsulated_key' parameter contains the encapsulated key, which is output of the HPKE KEM, and is represented as a base64url encoded string. The parameter "kty" <bcp14>MUST</bcp14> be present and set to "OKP" defined in Section 2 of <xref target="RFC8037"/>.</t>
        <section anchor="hpke-usage-in-direct-and-key-agreement-with-key-wrapping">
          <name>HPKE Usage in Direct and Key Agreement with Key Wrapping</name>
          <t>In Direct Key Agreement mode, HPKE is employed to directly encrypt the plaintext, and the resulting ciphertext is included in the JWE ciphertext. In Key Agreement with Key Wrapping mode, HPKE is used to encrypt the Content Encryption Key (CEK), and the resulting ciphertext is included in the JWE ciphertext.</t>
          <section anchor="hpke-usage-in-direct-key-agreement-mode">
            <name>HPKE Usage in Direct Key Agreement mode</name>
            <t>In Direct Key Agreement mode, the sender <bcp14>MUST</bcp14> specify the 'encapsulated_key' and 'alg' parameters in the protected header to indicate the use of HPKE. In this mode, the 'enc' (Encryption Algorithm) parameter <bcp14>MUST NOT</bcp14> be present because the ciphersuite (KEM, KDF, AEAD) is fully-specified in the 'alg' parameter itself. If the 'enc' parameter is present, it <bcp14>MUST</bcp14> be ignored by implementations. This is a deviation from the rule in Section 4.1.2 of <xref target="RFC7516"/>. Optionally, the protected header <bcp14>MAY</bcp14> contain the 'kid' parameter used to identify the static recipient public key used by the sender.</t>
          </section>
          <section anchor="hpke-usage-in-key-agreement-with-key-wrapping-mode">
            <name>HPKE Usage in Key Agreement with Key Wrapping mode</name>
            <t>In the JWE JSON Serialization, the sender <bcp14>MUST</bcp14> place the 'encapsulated_key' and 'alg' parameters in the per-recipient unprotected header to indicate the use of HPKE. Optionally, the per-recipient unprotected header <bcp14>MAY</bcp14> contain the 'kid' parameter used to identify the static recipient public key used by the sender.
In the JWE Compact Serialization, the sender <bcp14>MUST</bcp14> place the 'encapsulated_key' and 'alg' parameters in the protected header to indicate the use of HPKE.</t>
          </section>
        </section>
      </section>
    </section>
    <section anchor="ciphersuite-registration">
      <name>Ciphersuite Registration</name>
      <t>This specification registers a number of ciphersuites for use with HPKE.
A ciphersuite is thereby a combination of several algorithm configurations:</t>
      <ul spacing="normal">
        <li>
          <t>HPKE Mode</t>
        </li>
        <li>
          <t>KEM algorithm</t>
        </li>
        <li>
          <t>KDF algorithm</t>
        </li>
        <li>
          <t>AEAD algorithm</t>
        </li>
      </ul>
      <t>The "KEM", "KDF", and "AEAD" values are conceptually taken from the HPKE IANA
registry <xref target="HPKE-IANA"/>. Hence, JOSE-HPKE cannot use an algorithm combination
that is not already available with HPKE.</t>
      <t>For better readability of the algorithm combination ciphersuites labels are
build according to the following scheme:</t>
      <artwork><![CDATA[
HPKE-<Mode>-<KEM>-<KDF>-<AEAD>
]]></artwork>
      <t>The "Mode" indicator may be populated with the following values from
Table 1 of <xref target="RFC9180"/>:</t>
      <ul spacing="normal">
        <li>
          <t>"Base" refers to "mode_base" described in Section 5.1.1 of <xref target="RFC9180"/>,
which only enables encryption to the holder of a given KEM private key.</t>
        </li>
        <li>
          <t>"PSK" refers to "mode_psk", described in Section 5.1.2 of <xref target="RFC9180"/>,
which authenticates using a pre-shared key.</t>
        </li>
        <li>
          <t>"Auth" refers to "mode_auth", described in Section 5.1.3 of <xref target="RFC9180"/>,
which authenticates using an asymmetric key.</t>
        </li>
        <li>
          <t>"Auth_Psk" refers to "mode_auth_psk", described in Section 5.1.4 of <xref target="RFC9180"/>,
which authenticates using both a PSK and an asymmetric key.</t>
        </li>
      </ul>
      <t>For a list of ciphersuite registrations, please see <xref target="IANA"/>.</t>
    </section>
    <section anchor="hpke-encryption-and-decryption">
      <name>HPKE Encryption and Decryption</name>
      <section anchor="hpke-encryption-with-sealbase">
        <name>HPKE Encryption with SealBase</name>
        <t>The SealBase(pkR, info, aad, pt) function is used to encrypt a plaintext pt to a recipient's public key (pkR). If "zip" parameter is present, compression is applied to the plaintext pt using the specified compression algorithm before invoking SealBase.</t>
        <t>Two cases of plaintext need to be distinguished:</t>
        <ul spacing="normal">
          <li>
            <t>In Direct Key Agreement mode, the plaintext "pt" passed into SealBase
is the content to be encrypted.  Hence, there is no intermediate
layer utilizing a CEK.</t>
          </li>
          <li>
            <t>In Key Agreement with Key Wrapping mode, the plaintext "pt" passed into
SealBase is the CEK.  The CEK is a random byte sequence of length
appropriate for the encryption algorithm. For example, AES-128-GCM 
requires a 16 byte key and the CEK would therefore be 16 bytes long.</t>
          </li>
        </ul>
        <t>In the JWE Compact Serialization, the "aad" parameter in SealBase function will take the Additional Authenticated Data encryption parameter defined in Section 5.1 of <xref target="RFC7516"/> as input. In the JWE JSON Serialization, SealBase function will be invoked with empty associated data "aad".</t>
        <t>The HPKE specification defines the "info" parameter as a context information structure that is used to ensure that the derived keying material is bound to the context of the transaction. The "info" parameter in SealBase function will take the JOSE context specific data defined in Section 4.6.2 of <xref target="RFC7518"/> as input.</t>
        <t>The SealBase function internally creates the sending HPKE context by invoking SetupBaseS() (Section 5.1.1 of <xref target="RFC9180"/>) with "pkR" and "info". This yields the context "sctxt" and an encapsulation key "enc". The SealBase function then invokes the Seal() method on "sctxt" (Section 5.2 of <xref target="RFC9180"/>) with "aad", yielding ciphertext "ct". Note that Section 6 of <xref target="RFC9180"/> discusses Single-Shot APIs for encryption and decryption; SetupBaseS internally invokes Seal() method to return both "ct" and "enc".</t>
        <t>In summary, if SealBase() is successful, it will output a ciphertext "ct" and an encapsulated key "enc".</t>
        <t>In both modes, 'encapsulated_key' will contain the value of "enc". In Direct Key Agreement mode, the JWE Ciphertext will contain the value of 'ct'. In Key Agreement with Key Wrapping mode, the JWE Encrypted Key will contain the value of 'ct'. In Direct Key Agreement mode, the JWE Encrypted Key will use the value of an empty octet sequence. In both modes, the JWE Initialization Vector value will be an empty octet sequence. In both modes, the JWE Authentication Tag <bcp14>MUST</bcp14> be absent.</t>
        <t>In both JWE Compact Serialization and the JWE JSON Serialization, "ct" and "enc" will be base64url encoded (see Section 7.1 and 7.2 of <xref target="RFC7518"/>), since JSON lacks a way to directly represent arbitrary octet sequences.</t>
      </section>
      <section anchor="hpke-decryption-with-openbase">
        <name>HPKE Decryption with OpenBase</name>
        <t>The recipient will use the OpenBase(enc, skR, info, aad, ct) function
   with the base64url decoded "encapsulated_key" and the "ciphertext" parameters 
   received from the sender.  The "aad" and the "info" parameters are constructed 
   from Additional Authenticated Data encryption parameter and JOSE context, respectively.</t>
        <t>The OpenBase internally creates the receiving HPKE context by invoking SetupBaseR() (Section 5.1.1 of <xref target="RFC9180"/>) with "skR", "enc", and "info". This yields the context "rctxt". The OpenBase function then decrypts "ct" by invoking the Open() method on "rctxt" (Section 5.2 of <xref target="RFC9180"/>) with "aad", 
   yielding "pt" or an error on failure.</t>
        <t>The OpenBase function will, if successful, decrypts "ct".  When
   decrypted, the result will be either the CEK (when Key Agreement with Key Wrapping mode is
   used), or the content (if Direct Key Agreement mode is used).  The CEK is the
   symmetric key used to decrypt the ciphertext.</t>
      </section>
      <section anchor="example-hybrid-key-agreement-computation">
        <name>Example Hybrid Key Agreement Computation</name>
        <t>This example uses HPKE-Base-P256-SHA256-AES128GCM which corresponds
to the following HPKE algorithm combination:</t>
        <ul spacing="normal">
          <li>
            <t>KEM: DHKEM(P-256, HKDF-SHA256)</t>
          </li>
          <li>
            <t>KDF: HKDF-SHA256</t>
          </li>
          <li>
            <t>AEAD: AES-128-GCM</t>
          </li>
          <li>
            <t>Mode: Base</t>
          </li>
          <li>
            <t>payload: "This is the content"</t>
          </li>
          <li>
            <t>aad: ""</t>
          </li>
        </ul>
        <artwork><![CDATA[
{
   "alg": "HPKE-Base-P256-SHA256-AES128GCM",
   "kid": "7"
   "encapsulated_key": "BIxvdeRjp3MILzyw06cBNIpXjGeAq6ZYZGaCqa9ykd/
    Cd+yTw9WHB4GChsEJeCVFczjcPcr/Nn4pUTQunbMNwOc=",
}
              
              JWE Protected Header JSON
]]></artwork>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This specification is based on HPKE and the security considerations of
<xref target="RFC9180"/> are therefore applicable also to this specification.</t>
      <t>HPKE assumes the sender is in possession of the public key of the recipient and
HPKE JOSE makes the same assumptions. Hence, some form of public key distribution
mechanism is assumed to exist but outside the scope of this document.</t>
      <t>HPKE in Base mode does not offer authentication as part of the HPKE KEM. In this case 
JOSE constructs like JWS and JSON Web Tokens (JWTs) can be used to add authentication. 
HPKE also offers modes that offer authentication.</t>
      <t>HPKE relies on a source of randomness to be available on the device. In Key Agreement 
with Key Wrapping mode, CEK has to be randomly generated and it <bcp14>MUST</bcp14> be
ensured that the guidelines in <xref target="RFC8937"/> for random number generations are followed.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>This document requests IANA to add new values to the 'JOSE Algorithms' and to 
the 'JOSE Header Parameters' registries in the 'Standards Action 
With Expert Review category'.</t>
      <section anchor="jose-algorithms-registry-direct-key-agreement">
        <name>JOSE Algorithms Registry (Direct Key Agreement)</name>
        <ul spacing="normal">
          <li>
            <t>Algorithm Name: HPKE-Base-P256-SHA256-AES128GCM</t>
          </li>
          <li>
            <t>Algorithm Description: Cipher suite for JOSE-HPKE in Base Mode that uses the DHKEM(P-256, HKDF-SHA256) KEM, the HKDF-SHA256 KDF and the AES-128-GCM AEAD.</t>
          </li>
          <li>
            <t>Algorithm Usage Location(s): "alg"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Algorithm Analysis Documents(s): TODO</t>
          </li>
          <li>
            <t>Algorithm Name: HPKE-Base-P384-SHA384-AES256GCM</t>
          </li>
          <li>
            <t>Algorithm Description: Cipher suite for JOSE-HPKE in Base Mode that uses the DHKEM(P-384, HKDF-SHA384) KEM, the HKDF-SHA384 KDF, and the AES-256-GCM AEAD.</t>
          </li>
          <li>
            <t>Algorithm Usage Location(s): "alg"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Algorithm Analysis Documents(s): TODO</t>
          </li>
          <li>
            <t>Algorithm Name: HPKE-Base-P521-SHA512-AES256GCM</t>
          </li>
          <li>
            <t>Algorithm Description: Cipher suite for JOSE-HPKE in Base Mode that uses the DHKEM(P-521, HKDF-SHA512) KEM, the HKDF-SHA512 KDF, and the AES-256-GCM AEAD.</t>
          </li>
          <li>
            <t>Algorithm Usage Location(s): "alg"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Algorithm Analysis Documents(s): TODO</t>
          </li>
          <li>
            <t>Algorithm Name: HPKE-Base-X25519-SHA256-AES128GCM</t>
          </li>
          <li>
            <t>Algorithm Description: Cipher suite for JOSE-HPKE in Base Mode that uses the DHKEM(X25519, HKDF-SHA256) KEM, the HKDF-SHA256 KDF, and the AES-128-GCM AEAD.</t>
          </li>
          <li>
            <t>Algorithm Usage Location(s): "alg"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Algorithm Analysis Documents(s): TODO</t>
          </li>
          <li>
            <t>Algorithm Name: HPKE-Base-X25519-SHA256-ChaCha20Poly1305</t>
          </li>
          <li>
            <t>Algorithm Description: Cipher suite for JOSE-HPKE in Base Mode that uses the DHKEM(X25519, HKDF-SHA256) KEM, the HKDF-SHA256 KDF, and the ChaCha20Poly1305 AEAD.</t>
          </li>
          <li>
            <t>Algorithm Usage Location(s): "alg"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Algorithm Analysis Documents(s): TODO</t>
          </li>
          <li>
            <t>Algorithm Name: HPKE-Base-X448-SHA512-AES256GCM</t>
          </li>
          <li>
            <t>Algorithm Description: Cipher suite for JOSE-HPKE in Base Mode that uses the DHKEM(X448, HKDF-SHA512) KEM, the HKDF-SHA512 KDF, and the AES-256-GCM AEAD.</t>
          </li>
          <li>
            <t>Algorithm Usage Location(s): "alg"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Algorithm Analysis Documents(s): TODO</t>
          </li>
          <li>
            <t>Algorithm Name: HPKE-Base-X448-SHA512-ChaCha20Poly1305</t>
          </li>
          <li>
            <t>Algorithm Description: Cipher suite for JOSE-HPKE in Base Mode that uses the DHKEM(X448, HKDF-SHA512) KEM, the HKDF-SHA512 KDF, and the ChaCha20Poly1305 AEAD.</t>
          </li>
          <li>
            <t>Algorithm Usage Location(s): "alg"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Algorithm Analysis Documents(s): TODO</t>
          </li>
        </ul>
      </section>
      <section anchor="jose-algorithms-registry-key-agreement-with-key-wrapping">
        <name>JOSE Algorithms Registry (Key Agreement with Key Wrapping)</name>
        <ul spacing="normal">
          <li>
            <t>Algorithm Name: HPKE-Base-P256-SHA256-AES128GCMKW</t>
          </li>
          <li>
            <t>Algorithm Description: Cipher suite for JOSE-HPKE in Base Mode that uses the DHKEM(P-256, HKDF-SHA256) KEM, the HKDF-SHA256 KDF and Key wrapping with the AES-128-GCM AEAD.</t>
          </li>
          <li>
            <t>Algorithm Usage Location(s): "alg"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Algorithm Analysis Documents(s): TODO</t>
          </li>
          <li>
            <t>Algorithm Name: HPKE-Base-P384-SHA384-AES256GCMKW</t>
          </li>
          <li>
            <t>Algorithm Description: Cipher suite for JOSE-HPKE in Base Mode that uses the DHKEM(P-384, HKDF-SHA384) KEM, the HKDF-SHA384 KDF, and Key wrapping with the AES-256-GCM AEAD.</t>
          </li>
          <li>
            <t>Algorithm Usage Location(s): "alg"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Algorithm Analysis Documents(s): TODO</t>
          </li>
          <li>
            <t>Algorithm Name: HPKE-Base-P521-SHA512-AES256GCMKW</t>
          </li>
          <li>
            <t>Algorithm Description: Cipher suite for JOSE-HPKE in Base Mode that uses the DHKEM(P-521, HKDF-SHA512) KEM, the HKDF-SHA512 KDF, and Key wrapping with the AES-256-GCM AEAD.</t>
          </li>
          <li>
            <t>Algorithm Usage Location(s): "alg"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Algorithm Analysis Documents(s): TODO</t>
          </li>
          <li>
            <t>Algorithm Name: HPKE-Base-X25519-SHA256-AES128GCMKW</t>
          </li>
          <li>
            <t>Algorithm Description: Cipher suite for JOSE-HPKE in Base Mode that uses the DHKEM(X25519, HKDF-SHA256) KEM, the HKDF-SHA256 KDF, and Key wrapping with the AES-128-GCM AEAD.</t>
          </li>
          <li>
            <t>Algorithm Usage Location(s): "alg"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Algorithm Analysis Documents(s): TODO</t>
          </li>
          <li>
            <t>Algorithm Name: HPKE-Base-X25519-SHA256-ChaCha20Poly1305KW</t>
          </li>
          <li>
            <t>Algorithm Description: Cipher suite for JOSE-HPKE in Base Mode that uses the DHKEM(X25519, HKDF-SHA256) KEM, the HKDF-SHA256 KDF, and Key wrapping with the ChaCha20Poly1305 AEAD.</t>
          </li>
          <li>
            <t>Algorithm Usage Location(s): "alg"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Algorithm Analysis Documents(s): TODO</t>
          </li>
          <li>
            <t>Algorithm Name: HPKE-Base-X448-SHA512-AES256GCMKW</t>
          </li>
          <li>
            <t>Algorithm Description: Cipher suite for JOSE-HPKE in Base Mode that uses the DHKEM(X448, HKDF-SHA512) KEM, the HKDF-SHA512 KDF, and Key wrapping with the AES-256-GCM AEAD.</t>
          </li>
          <li>
            <t>Algorithm Usage Location(s): "alg"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Algorithm Analysis Documents(s): TODO</t>
          </li>
          <li>
            <t>Algorithm Name: HPKE-Base-X448-SHA512-ChaCha20Poly1305KW</t>
          </li>
          <li>
            <t>Algorithm Description: Cipher suite for JOSE-HPKE in Base Mode that uses the DHKEM(X448, HKDF-SHA512) KEM, the HKDF-SHA512 KDF, and Key wrapping with the ChaCha20Poly1305 AEAD.</t>
          </li>
          <li>
            <t>Algorithm Usage Location(s): "alg"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): [[TBD: This RFC]]</t>
          </li>
          <li>
            <t>Algorithm Analysis Documents(s): TODO</t>
          </li>
        </ul>
      </section>
      <section anchor="jose-header-parameters">
        <name>JOSE Header Parameters</name>
        <ul spacing="normal">
          <li>
            <t>Parameter Name: "encapsulated_key"</t>
          </li>
          <li>
            <t>Parameter Description: HPKE encapsulated key</t>
          </li>
          <li>
            <t>Parameter Information Class: Public</t>
          </li>
          <li>
            <t>Used with "kty" Value(s): "OKP"</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): [[This specification]]</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC9180">
          <front>
            <title>Hybrid Public Key Encryption</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="K. Bhargavan" initials="K." surname="Bhargavan"/>
            <author fullname="B. Lipp" initials="B." surname="Lipp"/>
            <author fullname="C. Wood" initials="C." surname="Wood"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>This document describes a scheme for hybrid public key encryption (HPKE). This scheme provides a variant of public key encryption of arbitrary-sized plaintexts for a recipient public key. It also includes three authenticated variants, including one that authenticates possession of a pre-shared key and two optional ones that authenticate possession of a key encapsulation mechanism (KEM) private key. HPKE works for any combination of an asymmetric KEM, key derivation function (KDF), and authenticated encryption with additional data (AEAD) encryption function. Some authenticated variants may not be supported by all KEMs. We provide instantiations of the scheme using widely used and efficient primitives, such as Elliptic Curve Diffie-Hellman (ECDH) key agreement, HMAC-based key derivation function (HKDF), and SHA2.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9180"/>
          <seriesInfo name="DOI" value="10.17487/RFC9180"/>
        </reference>
        <reference anchor="RFC7516">
          <front>
            <title>JSON Web Encryption (JWE)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Hildebrand" initials="J." surname="Hildebrand"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Encryption (JWE) represents encrypted content using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries defined by that specification. Related digital signature and Message Authentication Code (MAC) capabilities are described in the separate JSON Web Signature (JWS) specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7516"/>
          <seriesInfo name="DOI" value="10.17487/RFC7516"/>
        </reference>
        <reference anchor="RFC7518">
          <front>
            <title>JSON Web Algorithms (JWA)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification registers cryptographic algorithms and identifiers to be used with the JSON Web Signature (JWS), JSON Web Encryption (JWE), and JSON Web Key (JWK) specifications. It defines several IANA registries for these identifiers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7518"/>
          <seriesInfo name="DOI" value="10.17487/RFC7518"/>
        </reference>
        <reference anchor="RFC8037">
          <front>
            <title>CFRG Elliptic Curve Diffie-Hellman (ECDH) and Signatures in JSON Object Signing and Encryption (JOSE)</title>
            <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document defines how to use the Diffie-Hellman algorithms "X25519" and "X448" as well as the signature algorithms "Ed25519" and "Ed448" from the IRTF CFRG elliptic curves work in JSON Object Signing and Encryption (JOSE).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8037"/>
          <seriesInfo name="DOI" value="10.17487/RFC8037"/>
        </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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8937">
          <front>
            <title>Randomness Improvements for Security Protocols</title>
            <author fullname="C. Cremers" initials="C." surname="Cremers"/>
            <author fullname="L. Garratt" initials="L." surname="Garratt"/>
            <author fullname="S. Smyshlyaev" initials="S." surname="Smyshlyaev"/>
            <author fullname="N. Sullivan" initials="N." surname="Sullivan"/>
            <author fullname="C. Wood" initials="C." surname="Wood"/>
            <date month="October" year="2020"/>
            <abstract>
              <t>Randomness is a crucial ingredient for Transport Layer Security (TLS) and related security protocols. Weak or predictable "cryptographically secure" pseudorandom number generators (CSPRNGs) can be abused or exploited for malicious purposes. An initial entropy source that seeds a CSPRNG might be weak or broken as well, which can also lead to critical and systemic security problems. This document describes a way for security protocol implementations to augment their CSPRNGs using long-term private keys. This improves randomness from broken or otherwise subverted CSPRNGs.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8937"/>
          <seriesInfo name="DOI" value="10.17487/RFC8937"/>
        </reference>
        <reference anchor="RFC2630">
          <front>
            <title>Cryptographic Message Syntax</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="June" year="1999"/>
            <abstract>
              <t>This document describes the Cryptographic Message Syntax. This syntax is used to digitally sign, digest, authenticate, or encrypt arbitrary messages. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2630"/>
          <seriesInfo name="DOI" value="10.17487/RFC2630"/>
        </reference>
        <reference anchor="HPKE-IANA" target="https://www.iana.org/assignments/hpke/hpke.xhtml">
          <front>
            <title>Hybrid Public Key Encryption (HPKE) IANA Registry</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date year="2023" month="October"/>
          </front>
        </reference>
        <reference anchor="I-D.ietf-cose-hpke">
          <front>
            <title>Use of Hybrid Public-Key Encryption (HPKE) with CBOR Object Signing and Encryption (COSE)</title>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         </author>
            <author fullname="Orie Steele" initials="O." surname="Steele">
              <organization>Transmute</organization>
            </author>
            <author fullname="Ajitomi, Daisuke" initials="A." surname="Daisuke">
         </author>
            <author fullname="Laurence Lundblade" initials="L." surname="Lundblade">
              <organization>Security Theory LLC</organization>
            </author>
            <date day="22" month="October" year="2023"/>
            <abstract>
              <t>   This specification defines hybrid public-key encryption (HPKE) for
   use with CBOR Object Signing and Encryption (COSE).  HPKE offers a
   variant of public-key encryption of arbitrary-sized plaintexts for a
   recipient public key.

   HPKE works for any combination of an asymmetric key encapsulation
   mechanism (KEM), key derivation function (KDF), and authenticated
   encryption with additional data (AEAD) function.  Authentication for
   HPKE in COSE is provided by COSE-native security mechanisms or by one
   of the authenticated variants of HPKE.

   This document defines the use of the HPKE with COSE.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-hpke-07"/>
        </reference>
      </references>
    </references>
    <?line 439?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This specification leverages text from <xref target="I-D.ietf-cose-hpke"/>. We would like to thank Matt Chanda, Ilari Liusvaara and Aaron Parecki for their feedback.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
