<?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.8 (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-07" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.20.1 -->
  <front>
    <title abbrev="Use of HPKE in JOSE">Use of Hybrid Public Key Encryption (HPKE) with JSON Object Signing and Encryption (JOSE)</title>
    <seriesInfo name="Internet-Draft" value="draft-rha-jose-hpke-encrypt-07"/>
    <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>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="2024" month="March" day="31"/>
    <area>Security</area>
    <workgroup>JOSE</workgroup>
    <keyword>HPKE</keyword>
    <keyword>JOSE</keyword>
    <keyword>PQC</keyword>
    <keyword>Hybrid</keyword>
    <abstract>
      <?line 92?>

<t>This specification defines Hybrid Public Key Encryption (HPKE) for use with
JSON Object Signing and Encryption (JOSE). HPKE offers a variant of
public key encryption of arbitrary-sized plaintexts for a recipient public key.</t>
      <t>HPKE 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 106?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Hybrid Public Key Encryption (HPKE) <xref target="RFC9180"/> is a scheme that
provides public key encryption of arbitrary-sized plaintexts given a 
recipient's public key.</t>
      <t>This specification enables JSON Web Encryption (JWE) to leverage HPKE, 
bringing support for KEMs and the possibility of Post Quantum or Hybrid KEMs to JWE.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="conventions-and-terminology">
      <name>Conventions and Terminology</name>
      <t>This specification uses the following abbreviations and terms:</t>
      <ul spacing="normal">
        <li>
          <t>Key Type (kty), see <xref target="RFC7517"/>.</t>
        </li>
        <li>
          <t>Content Encryption Key (CEK), is defined in <xref target="RFC7517"/>.</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>
      </ul>
    </section>
    <section anchor="hpke-for-jose">
      <name>HPKE for JOSE</name>
      <section anchor="overview">
        <name>Overview</name>
        <t>JSON Web Encryption (JWE) <xref target="RFC7516"/> defines several serializations for expressing encrypted content with JSON:</t>
        <ul spacing="normal">
          <li>
            <t>Compact JWE Serialization</t>
          </li>
          <li>
            <t>General JWE JSON Serialization</t>
          </li>
          <li>
            <t>Flattened JWE JSON Serialization</t>
          </li>
        </ul>
        <t>JSON Web Algorithms (JWA) <xref section="4.6" sectionFormat="of" target="RFC7518"/> defines two ways to use public key cryptography with JWE:</t>
        <ul spacing="normal">
          <li>
            <t>Direct Key Agreement</t>
          </li>
          <li>
            <t>Key Agreement with Key Wrapping</t>
          </li>
        </ul>
        <t>The specification enables Hybrid Public Key Encryption (HPKE) <xref target="RFC9180"/> to be used with the serializations defined in JWE.</t>
        <t>Unless otherwise stated, no changes to the processes described in <xref target="RFC7516"/> have been made.</t>
        <t>This specification describes two modes of use for HPKE in JWE:</t>
        <ul spacing="normal">
          <li>
            <t>HPKE Direct Encryption mode, where HPKE is used to encrypt the plaintext. This mode can only be used with a single recipient. This setup is conceptually similar to Direct Key Agreement.</t>
          </li>
          <li>
            <t>HPKE Key Encryption mode, where HPKE is used to encrypt a content encryption key (CEK) and the CEK is subsequently used to encrypt the plaintext. This mode supports multiple recipients. This setup is conceptually similar to Key Agreement with Key Wrapping.</t>
          </li>
        </ul>
        <t>When the alg value or enc value is set to any of algorithms registered by this specification then the 'epk' header parameter <bcp14>MUST</bcp14> be present, and it <bcp14>MUST</bcp14> be a JSON Web Key as defined in <xref target="EK"/> of this document.</t>
        <t>The "ek" member of an 'epk' will contain the base64url encoded "enc" value produced by the encapsulate operation of the HPKE KEM.</t>
        <t>In all serializations, "ct" will be base64url encoded.</t>
        <t>If the 'alg' header parameter is set to the "dir" value (as defined in <xref target="IANA"/>), HPKE is used in Direct Encryption mode; otherwise, it is in Key Encryption mode.</t>
        <t>Interested readers will observe this is due to all recipients using the same JWE Protected Header when JSON Serializations are used, as described in <xref section="7.2.1" sectionFormat="of" target="RFC7516"/>.</t>
        <t>We provide the following table for additional clarity:</t>
        <table align="left" anchor="serialization-mode-table">
          <name>JOSE HPKE Serializations and Modes</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Recipients</th>
              <th align="left">Serializations</th>
              <th align="left">Content Encryption Key</th>
              <th align="left">Similar to</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Direct Encryption</td>
              <td align="left">1</td>
              <td align="left">Compact, JSON</td>
              <td align="left">Derived from HPKE</td>
              <td align="left">Direct Key Agreement</td>
            </tr>
            <tr>
              <td align="left">Key Encryption</td>
              <td align="left">1 or More</td>
              <td align="left">Compact, JSON</td>
              <td align="left">Encrypted by HPKE</td>
              <td align="left">Key Agreement with Key Wrapping</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="hpke-encryption">
        <name>HPKE Encryption</name>
        <t>The message encryption process is as follows.</t>
        <ol spacing="normal" type="1"><li>
            <t>The sending HPKE context is created by invoking invoking SetupBaseS() (Section 5.1.1 of <xref target="RFC9180"/>) with the recipient's public key "pkR" and "info". 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 SetupBaseS function will be called with the default value of an empty string for the 'info' parameter. This yields the context "sctxt" and an encapsulation key "enc".</t>
          </li>
        </ol>
        <t>There exist two cases of HPKE plaintext which need to be distinguished:</t>
        <ul spacing="normal">
          <li>
            <t>In HPKE Direct Encryption mode, the plaintext "pt" passed into Seal
  is the content to be encrypted.  Hence, there is no intermediate
  layer utilizing a CEK.</t>
          </li>
          <li>
            <t>In HPKE Key Encryption mode, the plaintext "pt" passed into
  Seal 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>
      </section>
      <section anchor="hpke-decryption">
        <name>HPKE Decryption</name>
        <t>The recipient will create the receiving HPKE context by invoking SetupBaseR() (Section 5.1.1 of <xref target="RFC9180"/>) with "skR", "enc" (output of base64url decoded 'ek'), and "info" (empty string). This yields the context "rctxt". The receiver 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 Open function will, if successful, decrypts "ct".  When decrypted, the result will be either the CEK (when Key Encryption mode is used), or the content (if Direct Encryption mode is used).  The CEK is the symmetric key used to decrypt the ciphertext.</t>
      </section>
      <section anchor="EK">
        <name>Encapsulated JSON Web Keys</name>
        <t>An encapsulated key is represented as JSON Web Key as described in { Section 4 of RFC7515 }.</t>
        <t>The "kty" parameter <bcp14>MUST</bcp14> be "EK".</t>
        <t>The "ek" parameter <bcp14>MUST</bcp14> be present, and <bcp14>MUST</bcp14> be the base64url encoded output of the encap operation defined for the HPKE KEM.</t>
        <t>As described in { Section 4 of RFC7515 }, additional members can be present in the JWK; if not understood by implementations encountering them, they <bcp14>MUST</bcp14> be ignored.</t>
        <t>This example demonstrates the representaton of an encapsulated key as a JWK.</t>
        <artwork><![CDATA[
{
   "kty": "EK",
   "ek": "BHpP-u5JKziyUpqxNQqb0apHx1ecH2UzcRlhHR4ngJVS__gNu21DqqgPweuPpjglnXDnOuQ4kt9tHCs3PUzPxQs"
}
]]></artwork>
        <section anchor="hpke-direct-encryption">
          <name>HPKE Direct Encryption</name>
          <t>This mode only supports a single recipient.</t>
          <t>HPKE is employed to directly encrypt the plaintext, and the resulting ciphertext is included in the JWE ciphertext.</t>
          <t>In HPKE Direct Encryption mode:</t>
          <ul spacing="normal">
            <li>
              <t>The "epk" Header Parameter <bcp14>MUST</bcp14> be present, it <bcp14>MUST</bcp14> contain an Encapsulated JSON Web Key and it <bcp14>MUST</bcp14> occur only within the JWE Protected Header.</t>
            </li>
            <li>
              <t>The "alg" Header Parameter <bcp14>MUST</bcp14> be "dir", "enc" <bcp14>MUST</bcp14> be an HPKE algorithm from JSON Web Signature and Encryption Algorithms in <xref target="JOSE-IANA"/> and they <bcp14>MUST</bcp14> occur only within the JWE Protected Header.</t>
            </li>
            <li>
              <t>The JWE Ciphertext <bcp14>MUST</bcp14> be the resulting HPKE ciphertext ('ct' value) encoded using base64url.</t>
            </li>
            <li>
              <t>The JWE Initialization Vector value <bcp14>MUST</bcp14> be absent.</t>
            </li>
            <li>
              <t>The JWE Authentication Tag <bcp14>MUST</bcp14> be absent.</t>
            </li>
            <li>
              <t>The JWE Encrypted Key <bcp14>MUST</bcp14> be absent.</t>
            </li>
            <li>
              <t>The HPKE "aad" parameter <bcp14>MUST</bcp14> be set to the JWE Additional Authenticated Data encryption parameter defined in Step 14 of Section 5.1 of <xref target="RFC7516"/> as input.</t>
            </li>
          </ul>
          <t>The following example demonstrates the use of Direct Encryption with Compact Serialization:</t>
          <figure anchor="direct-encryption-compact">
            <name>Direct Encryption with Compact Serialization</name>
            <artwork align="left"><![CDATA[
eyJhbGciOiJkaXIiLCJlbmMiOiJIUEtFLUJhc2UtUDI1Ni1TSEEyNTYtQUVTMTI4R0NNIiwiZXBrIjp7Imt0eSI6IkVLIiwiZWsiOiJCR05ranp0MDc2YnNSR2o3OGFYNUF6VF9IRU9KQmJZOXEyWm9fNWU3dGJLMGFQcXU0ZVQxV0kxNmp2UmxacXBNeXFaZlAtUndSNEp3dGF6XzhVOXRoWEEifX0...DG3qygxcMHw3iACy5mX_T4N4EqWc03W0nkTHjMJsC4nb6JS6vVj6wTGdlr5TOSr0ykaoyzpePXEvEyHhvpUwCyQQr6kbGlGuZsrJdUbZ728vmA.
]]></artwork>
          </figure>
          <t>In the above example, the JWE Protected Header value is:</t>
          <artwork><![CDATA[
{
  "alg": "dir",
  "enc": "HPKE-Base-P256-SHA256-AES128GCM",
  "epk": {
    "kty": "EK",
    "ek": "BGNkjzt076bsRGj78aX5AzT_HEOJBbY9q2Zo_5e7tbK0aPqu4eT1WI16jvRlZqpMyqZfP-RwR4Jwtaz_8U9thXA"
  }
}
]]></artwork>
          <figure anchor="direct-encryption-json">
            <name>Direct Encryption with JSON Serialization</name>
            <artwork align="left"><![CDATA[
{
    "protected": "eyJhbGciOiJkaXIiLCJlbmMiOiJIUEtFLUJhc2UtUDI1Ni1TSEEyNTYtQUVTMTI4R0NNIiwiZXBrIjp7Imt0eSI6IkVLIiwiZWsiOiJCTzRFbGZXd0xKRDZWcERza3c5LWxWMm9OMDJ2U1FKTW55ZHk3enhvSVlKZ1kydk9taE44Q1BqSHdRM1NONkhTcnNHNElacVpHVUR3dExKZjBoeHFTWGsifX0",
    "ciphertext": "1ATsw0jshqPrv8CFcm9Rem9Wfi1Ygv30sozlRTtNNzcaaZ828GqP0AXtqQ1Msv8YXI9XZqh81MK3QnlZ7pOBC1BP7j00J1rrHujdb3zvnOpmJg"
}
]]></artwork>
          </figure>
          <t>In the above example, the JWE Protected Header value is:</t>
          <artwork><![CDATA[
{
  "alg": "dir",
  "enc": "HPKE-Base-P256-SHA256-AES128GCM",
  "epk": {
    "kty": "EK",
    "ek": "BGNkjzt076bsRGj78aX5AzT_HEOJBbY9q2Zo_5e7tbK0aPqu4eT1WI16jvRlZqpMyqZfP-RwR4Jwtaz_8U9thXA"
  }
}
]]></artwork>
        </section>
        <section anchor="hpke-key-encryption">
          <name>HPKE Key Encryption</name>
          <t>This mode supports more than one recipient.</t>
          <t>HPKE is used to encrypt the     Content Encryption Key (CEK), and the resulting ciphertext is included in the JWE Encrypted Key. The plaintext will be encrypted using the CEK as explained in Step 15 of Section 5.1 of <xref target="RFC7516"/>.</t>
          <t>When there are multiple recipients, the sender <bcp14>MUST</bcp14> place the 'epk' parameter in the per-recipient unprotected header to indicate the use of HPKE. In this case, the 'enc' (Encryption Algorithm) Header Parameter <bcp14>MUST</bcp14> be a content encryption algorithm from JSON Web Signature and Encryption Algorithms in <xref target="JOSE-IANA"/>, and it <bcp14>MUST</bcp14> be present in the JWE Protected Header. The integrity-protected 'enc' parameter provides protection against an attacker who manipulates the encryption algorithm in the 'enc' parameter. This attack is discussed in <xref target="I-D.draft-ietf-lamps-cms-cek-hkdf-sha256"/>.</t>
          <t>In HPKE Key Encryption mode:</t>
          <ul spacing="normal">
            <li>
              <t>The JWE Encrypted Key <bcp14>MUST</bcp14> be the resulting HPKE ciphertext ('ct' value) encoded using base64url.</t>
            </li>
          </ul>
          <t>The following example demonstrates the use of Key Encryption with General JSON Serialization:</t>
          <figure anchor="key-encryption-multiple-recipient-general-json">
            <name>Key Encryption (multiple recipient) General JSON Serialization</name>
            <artwork align="left"><![CDATA[
{
  "protected": "eyJlbmMiOiJBMTI4R0NNIn0",
  "ciphertext": "S0qqrM3xXPUavbmL9LQkgUKRBu8BZ7DQWoT-mdNIZVU-ip_V-fbMokiGwp2aPM57DX3cXCK3TKHqdhZ8rSNduUja",
  "iv": "AzaXpooLg3ZxEASQ",
  "aad": "8J-SgCBhYWQ",
  "tag": "S0omWw35S0H7tyEHsmGLDw",
  "recipients": [
    {
      "encrypted_key": "yDVZLsO7-ecy_GCgEluwn9U723TCHNAzeYRRQPOfpHM",
      "header": {
        "kid": "urn:ietf:params:oauth:jwk-thumbprint:sha-256:adjwW6fyyZ94ZBjGjx_OpDEKHLGfd1ELkug_YmRAjCk",
        "alg": "HPKE-Base-P256-SHA256-AES128GCM",
        "epk": {
          "kty": "EK",
          "ek": "BHpP-u5JKziyUpqxNQqb0apHx1ecH2UzcRlhHR4ngJVS__gNu21DqqgPweuPpjglnXDnOuQ4kt9tHCs3PUzPxQs"
        }
      }
    },
    {
      "encrypted_key": "iS73TFqJ61gkmh4DHAXADx4wyftA7pnY",
      "header": {
        "kid": "urn:ietf:params:oauth:jwk-thumbprint:sha-256:D2FKlj9MTIQma5bwdOVXk5Zh3_d60knzlbmD-SyMNAI",
        "alg": "ECDH-ES+A128KW",
        "epk": {
          "kty": "EC",
          "crv": "P-256",
          "x": "nX6Y3DWC0olVe5H7-NkCzVDghsYSa_L9da3jzkHYkV8",
          "y": "wDshQdcaY0J08wx25V3ystQSNe_qjsCaaFeeRWJqcE0"
        }
      }
    }
  ]
}
]]></artwork>
          </figure>
          <t>In the above example, the JWE Protected Header value is:</t>
          <artwork><![CDATA[
{
   "enc": "A128GCM"
}
]]></artwork>
          <figure anchor="key-encryption-single-recipient-flattened-json">
            <name>Key Encryption (single recipient) Flattened JSON Serialization</name>
            <artwork align="left"><![CDATA[
{
  "protected": "eyJhbGciOiAiSFBLRS1CYXNlLVAyNTYtU0hBMjU2LUFFUzEyOEdDTSIsImVuYyI6IkExMjhHQ00iLCJlcGsiOnsia3R5IjoiRUsiLCJlayI6IkJQUlRLbjhtUUw0aE4xYXlva1I4Z2twVHk1SFFsZDROMEhYWEI5Y1h0alVJUTM3enNKREw3VHVnVmttRDFhRllUeC0wYk0wdGZ4emVqTGN0U0RLak1RcyJ9fQ",
  "encrypted_key": "zR0ArfrVVRQ9-X_heDU2riwx36QxLBffRrKAWU-tLC4",
  "iv": "o3v11Hw6gUxUN-pY",
  "ciphertext": "Ny-2IDGHMI3MzVsUAVMGNoKAZfoewTZ1dkAIBikPy4eZUfHW_LPhhKpD6Mf4zYGkhAeLwGgJKjyDoFIj0EuDsEtJ",
  "tag": "0sfzHJvxVoWt02EPxMTh8w"
}
]]></artwork>
          </figure>
          <t>In the above example, the JWE Protected Header value is:</t>
          <artwork><![CDATA[
{

  "alg": "HPKE-Base-P256-SHA256-AES128GCM",
  "enc": "A128GCM",  
  "epk": {
    "kty": "EK",
    "ek": "BPRTKn8mQL4hN1ayokR8gkpTy5HQld4N0HXXB9cXtjUIQ37zsJDL7TugVkmD1aFYTx-0bM0tfxzejLctSDKjMQs"
  }
}
]]></artwork>
          <figure anchor="key-encryption-single-recipient-compact">
            <name>Key Encryption (single recipient) Compact</name>
            <artwork align="left"><![CDATA[
eyJhbGciOiAiSFBLRS1CYXNlLVAyNTYtU0hBMjU2LUFFUzEyOEdDTSIsImVuYyI6IkExMjhHQ00iLCJlcGsiOnsia3R5IjoiRUsiLCJlayI6IkJKN3JkTmJrdnd1bnNzZGp1NVdEa0FhekxhQlgzSWRjTFJqeTFSRFNBOXNpajAwamR5YmFIdVFQVHQ2UDMxQmkwbkUya1lXXzdMX3RhQXFBRks3NURlayJ9fQ.xaAa0nFxNJxsQQ5J6EFdzUYROd2aV517o2kZnfwhO7s.AgBYEWTj-EMji17I.Ejwu2iEP4xs3FfGO_zTZYu35glQmUvd_qpHpvB1hNqg6Yz5ek3NsZRGMzd--HYWvABNslxBkRwrkZDXnv_BTgOTj.u0ac86ipoAwUZuYwkaKwNw
]]></artwork>
          </figure>
          <t>In the above example, the JWE Protected Header value is:</t>
          <artwork><![CDATA[
{
  "alg": "HPKE-Base-P256-SHA256-AES128GCM",
  "enc": "A128GCM",
  "epk": {
    "kty": "EK",
    "ek": "BJ7rdNbkvwunssdju5WDkAazLaBX3IdcLRjy1RDSA9sij00jdybaHuQPTt6P31Bi0nE2kYW_7L_taAqAFK75Dek"
  }
}
]]></artwork>
        </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 a group of algorithms, often sharing component algorithms such as hash functions, targeting a security level.
An HPKE ciphersuite, is composed of the following choices:</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 chosen from the HPKE IANA registry <xref target="HPKE-IANA"/>.</t>
      <t>For readability the algorithm ciphersuites labels are built 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="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 anchor="plaintext-compression">
        <name>Plaintext Compression</name>
        <t>Implementers are advised to review Section 3.6 of <xref target="RFC8725"/>, which states: 
Compression of data <bcp14>SHOULD NOT</bcp14> be done before encryption, because such compressed data often reveals information about the plaintext.</t>
      </section>
      <section anchor="header-parameters">
        <name>Header Parameters</name>
        <t>Implementers are advised to review Section 3.10 of <xref target="RFC8725"/>, which comments on application processing of JWE Protected Headers.
Additionally, Unprotected Headers can contain similar information which an attacker could leverage to mount denial of service, forgery or injection attacks.</t>
      </section>
      <section anchor="ensure-cryptographic-keys-have-sufficient-entropy">
        <name>Ensure Cryptographic Keys Have Sufficient Entropy</name>
        <t>Implementers are advised to review Section 3.5 of <xref target="RFC8725"/>, which provides comments on entropy requirements for keys. This guidance is relevant to both public and private keys used in both Key Encryption and Direct Encryption. Additionally, this guidance is applicable to content encryption keys used in Key Encryption mode.</t>
      </section>
      <section anchor="validate-cryptographic-inputs">
        <name>Validate Cryptographic Inputs</name>
        <t>Implementers are advised to review Section 3.4 of <xref target="RFC8725"/>, which provides comments on the validation of cryptographic inputs. This guidance is relevant to both public and private keys used in both Key Encryption and Direct Encryption, specifically focusing on the structure of the public and private keys, as well as the 'ek' value. These inputs are crucial for the HPKE KEM operations.</t>
      </section>
      <section anchor="use-appropriate-algorithms">
        <name>Use Appropriate Algorithms</name>
        <t>Implementers are advised to review Section 3.2 of <xref target="RFC8725"/>, which comments on the selection of appropriate algorithms.
This is guidance is relevant to both Key Encryption and Direct Encryption.
When using Key Encryption, the strength of the content encryption algorithm should not be significantly different from the strengh of the Key Encryption algorithms used.</t>
      </section>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>This document adds entries to <xref target="JOSE-IANA"/>.</t>
      <section anchor="json-web-key-types">
        <name>JSON Web Key Types</name>
        <t>The following entry is added to the "JSON Web Key Types" registry:</t>
        <ul spacing="normal">
          <li>
            <t>"kty" Parameter Value: "EK"</t>
          </li>
          <li>
            <t>Key Type Description: HPKE Encapsulated Key Type (See issue #18)</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Specification Document(s): [[TBD: This RFC]]</t>
          </li>
        </ul>
      </section>
      <section anchor="json-web-key-parameters">
        <name>JSON Web Key Parameters</name>
        <t>The following entry is added to the "JSON Web Key Parameters" registry:</t>
        <ul spacing="normal">
          <li>
            <t>Parameter Name: "ek"</t>
          </li>
          <li>
            <t>Parameter Description: Encapsulated Key</t>
          </li>
          <li>
            <t>Parameter Information Class: Public</t>
          </li>
          <li>
            <t>Used with "kty" Value(s): "EK"</t>
          </li>
          <li>
            <t>Specification Document(s): [[TBD: This RFC]]</t>
          </li>
        </ul>
      </section>
      <section anchor="json-web-signature-and-encryption-algorithms">
        <name>JSON Web Signature and Encryption Algorithms</name>
        <t>The following entries are added to the "JSON Web Signature and Encryption Algorithms" registry:</t>
        <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, enc"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IETF</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, enc"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IETF</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, enc"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IETF</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, enc"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IETF</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, enc"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IETF</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, enc"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IETF</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, enc"</t>
          </li>
          <li>
            <t>JOSE Implementation Requirements: Optional</t>
          </li>
          <li>
            <t>Change Controller: IETF</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="json-web-signature-and-encryption-header-parameters">
        <name>JSON Web Signature and Encryption Header Parameters</name>
        <t>The following entries are added to the "JSON Web Key Parameters" registry:</t>
        <ul spacing="normal">
          <li>
            <t>Parameter Name: "psk_id"</t>
          </li>
          <li>
            <t>Parameter Description: A key identifier (kid) for the pre-shared key as defined in { Section 5.1.1 of RFC9180 }</t>
          </li>
          <li>
            <t>Parameter Information Class: Public</t>
          </li>
          <li>
            <t>Used with "kty" Value(s): *</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Specification Document(s): [[This specification]]</t>
          </li>
          <li>
            <t>Parameter Name: "auth_kid"</t>
          </li>
          <li>
            <t>Parameter Description: A key identifier (kid) for the asymmetric key as defined in { Section 5.1.4 of RFC9180 }</t>
          </li>
          <li>
            <t>Parameter Information Class: Public</t>
          </li>
          <li>
            <t>Used with "kty" Value(s): *</t>
          </li>
          <li>
            <t>Change Controller: IETF</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="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="JOSE-IANA" target="https://www.iana.org/assignments/jose/jose.xhtml">
          <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="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="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.draft-ietf-lamps-cms-cek-hkdf-sha256">
          <front>
            <title>Encryption Key Derivation in the Cryptographic Message Syntax (CMS) using HKDF with SHA-256</title>
            <author fullname="Russ Housley" initials="R." surname="Housley">
              <organization>Vigil Security, LLC</organization>
            </author>
            <date day="18" month="March" year="2024"/>
            <abstract>
              <t>   This document specifies the derivation of the content-encryption key
   or the content-authenticated-encryption key in the Cryptographic
   Message Syntax (CMS).  The use of this mechanism provides protection
   against where the attacker manipulates the content-encryption
   algorithm identifier or the content-authenticated-encryption
   algorithm identifier.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-cek-hkdf-sha256-01"/>
        </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 581?>

<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, Aaron Parecki and Filip Skokan for their feedback.</t>
    </section>
    <section numbered="false" anchor="document-history">
      <name>Document History</name>
      <t>-07</t>
      <ul spacing="normal">
        <li>
          <t>Corrected some working group and document titles.</t>
        </li>
        <li>
          <t>Added Document History section.</t>
        </li>
      </ul>
      <t>-06</t>
      <ul spacing="normal">
        <li>
          <t>Use existing <tt>"alg": "dir"</tt> value for HPKE Direct Encryption mode.</t>
        </li>
      </ul>
      <t>-05</t>
      <ul spacing="normal">
        <li>
          <t>Defined both Integrated Encryption mode and Key Encryption mode.</t>
        </li>
        <li>
          <t>Aligned choices more closely with those of draft-ietf-cose-hpke.</t>
        </li>
      </ul>
      <t>-04</t>
      <ul spacing="normal">
        <li>
          <t>Revamped Introduction and Overview sections.</t>
        </li>
        <li>
          <t>Removed use of the <tt>zip</tt> parameter.</t>
        </li>
        <li>
          <t>Populated IANA registries.</t>
        </li>
      </ul>
      <t>-03</t>
      <ul spacing="normal">
        <li>
          <t>Described key encryption.</t>
        </li>
      </ul>
      <t>-02</t>
      <ul spacing="normal">
        <li>
          <t>Removed Post-Quantum Considerations.</t>
        </li>
      </ul>
      <t>-01</t>
      <ul spacing="normal">
        <li>
          <t>Described direct key agreement mode and key agreement with key wrapping mode.</t>
        </li>
        <li>
          <t>Improved example.</t>
        </li>
      </ul>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>Initial version.</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
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
70LeRS1EyFzhVsNRnz/JzicRFn4JzIdIGwOzEt+ihgc9YaVyBMCAHRGBZUCh
GeNlo9jEo5PEAVkcj48ND3OhRsQGHI/k+HBPeMJiRvJ3DsCbheNoLhOsFEnz
+w61pCw3g5GgI3DNXvGPIGvB9iLu3JiH2e+r9so7xnypP9zN+0XiWJ52I6wW
3deXs3tZbat1jUxq6sNdXZ+tm/i9Niw7lYdhfSnnhs6wVMu21OygXy7vW4NH
pzscDZqD2nkv02rV1K06ndzatZV1WVs7GdqvXdS00QN/Pma41l0vU4DA08o0
S3Lu0Wj1ezkz376vPLaGlYtR5brWG143uuv6tD0p78fr63lrPMwr9/WH5n2l
K0+GmemouxtltF1rbeWG6x2RJ7ctOqmQqV50hobSb5UtGF+5mByWo/akZ47L
ZXU+yaTT6dJ9/nm/2MnN6javFu/2hfXkaXDeOi8/j+VMfpwxtEF11ayzu3Nj
dlHvX2xGq4vt4F7R7cKg3bcze42Y+4NFO5PypryvLjfWcHu373btC212r9+7
U2bXleFsepm72qyLaeELIJkWZjMVCkVK9vhwKpv+COswr655ZcCZuaFhDP6a
igfVQTw18J0VN1w3noHC72ii4DvvDcHwONXJFS5S/WoR/0B4D9E9BPfeWAsd
G/d5L5xe4PXuW9rq4GQuL2asd7+6vCKTQvEweKqW2/Xb2eP1c25qPhXopTNr
ZEjn2T2ng+y4lr1YbXr69Nlq7p+n806qt+2d17cOOTxdDa+d5aSIfW9ffc8X
eF4IXn2kce/fS64Hh15ldj+dKJldo1eajuVy70DycuFhvBs319ftZqmeG2Yr
jcG4UJhWtTw1lpv+SG9Ms9pe0a4dUj4/72Zvn/tVpdfMttotbTmQjVa1VdaJ
PLKqo2Evr5R3jenq1qTVymB8z1CufUKHdhiRzhYHbJtZseVzx95c3VXk9XWP
rq/HczX7uNjkM8w86L2B02odZEKmV8DO506mOHGeu9km21w9TmrXk+nz8irb
bOS7hj69tNq3d9nbzuUqk6lnbbvqrpRZ/rAx2ta6vvCjj9PCvmI8V3y3pL+s
H/5bzEMxDwK8eFIUje7CAwhT1IoM3iNzKro7daiB/719nv1r4ryYCxa5baRa
42d/waCw2oxZGsEInQ+P+s/C2/4zckiC4RP8/8SBzJl3qIfJhPD1sI1MI4cf
kSq+wAZyn1RYdXCNwNr4dX8HCzwKjweiPpm3IEk1r3sEC1dn3jaG/En6fCq2
+/J6NHnyJOu3jCJfHOq8yMVOBJCcr8jUBdbhUyFpBJIhLcOuJzGEQ78ABjOH
t645DpE1fqJgSmtiqBYP2NmrJSgfqqN9vCqLWI6fbahMdr0SGeD711qqlBb9
5dhendLBrrCUvIb/Uy211JR5ii0JmAMuTm8U426kdwScv0n4/LFA8AhUbmCD
boAXhvYmYiyPnajvNG8Dp2gI53PkevqZ52e7md9NOkOyma0frh+62mLY6N26
V7fTy1J3bA5Sa6VVm46GKdV6GqXms6apqfdbK0c6zcJlaZKXJ3eN/KBRfVaW
0yu731Lc4YqIvdQN7lE8kIllmg+L/HRXLva74jeM3OHHq3qqv7i7XT6OvecO
WQjAzPV4my/0M9VLZ1+usvX9Q2krhoQGAUb+yG36z14LbDIwSk+Q6+NC+9Jo
+sDalykq75/u7xZl3d0a18PLXH5wV20VD/Sx1+t22nOr2vT8A6wibEPgQoQb
UTnArm3coPTdcLFlNya2Md6stlrKWbrrmWWDQt2AGKZADm+IstqOL+b7/fT6
fHq7ul/tntpWqdyoPtzPlWz5QXMXT4/rXnF1pwWbh67vPa7ORzvi8Hx4j9ye
P/KfW9nw9/maiP79evYNLqn9y/yg8ly/yC609fK8VC1OiqXd+XY/d4qXlvH4
27OmlKs09NU16Ed3TQqzrdIeTbTCdJl/Ui4ymnEADSql+vtmq1g7wZryXama
Kvf/swisaIzfyYm7OCdkm6tHB8GJ/7LD58bk4jFfGt9lTH1EC9XLVEu7O4xK
iyV77JOnh2uF5FcHrfqoja7is/lm2xJbdhWZPGbqmavtLlcY5ffM6fZb9Ol5
xe4IqVDaG9ef5XLmVabBvz9FgkVgVTRS9P1z6F5TC2GrXg8ij7t4Xvr4L28Y
vN8osgxCyaKnR8dJyWspSVHtV24fev3s3eOkpT+Mijz1GGaWt83VMPcwrFSG
h/K+XVZKg36N1dYj93GPqUd511wtq91MhqczMqQCbYOpJN8r1Fam2hsy/pzw
sfXuUO89zFZLZzjcZiDN2D1O9A3J1s6nOWc7qmrZfqXCpqVeu1kGo1muFR6z
ywzRR/XhoAlpSqvRK2/zo+rIGK0dp1eqLHu6PqR3me2jltkq99Nzuh49D+5b
mWGm90C0bE/e16/n3SDGjuvloZcp2nN7NOp1r1OTpyUtDXO2ut3lL7q7h9v5
vGc3iuNhynm4O4+afDO/yWar24vFcDdspazHU66ntU/laqX7arOWbx5GbFgc
Ne9bZqM4nZt0O5hmFa1Yu1W1zv6cTofz6vjpobNcNqzSRXN+fni815ZF+rC9
X9Qbq33JrNRWmbJbYmWnHnMjGTY/VOub3cgcO5lcubNrDpZX2+TrUi2KqxGZ
nvvNdu+X6uMC7Zdox94/R6oTH/Maxxpwxlu13pc2dXqDhnG17j6cL1tZsje1
3tVCswb7QrWrK+etTHUyub2WJ85qWOvmLw+sXnq4HLiLkbYuZUnlcbBLZWbN
jDPfHejqQXb6pcaqKTxHrDrwO6tdo5Wva4N13VYMJTszWofpvZVtjZQyyVSW
VNstu/ri0B/3VoNK/ZkOKv1epXXbnrQssipuybpXeFxXasqo0h1Vu7lhqbnr
rrXtTBvuSVafTA5Kc5LvLbuTym1PY/nWsAf7otqld6RIMkZl16rvWLdbqF+U
K8ph+NhrKzkyKmQvzZw2NebbZfuSpYuL28fyeLBKlZsrNXtZS5dXWzenljvn
O5avzO/bT4fB9NHNFxZ6dz3cKE/PVtXa3GaXrefFxeOhQLV8i017982DkkpV
H8eb4m2L6btbrbe1tWlpYmyebgeL9mCVdjNEvrpQLbO4HU7dx61GGtvW9t06
81bF7NvK4hXPfuM6wq9Si3crRf3SVlozbbN1DcaUlVsYl7QiOTyQ20m+psgP
vdU+2yv1i9dMXWUyK2U/I1W32xk4F5189lbNGOWc9jh+unx4ckjxuVhpXBZK
sHRUKbB1nhtQ5qqQq3p3tUiknhDvZvH7BvHISNyxxRRDDpdgsatT3qWbYnSE
6Dzgt2TjTYln8BXsmQTBFD+zQ4abBr9eEeaozJWXWAxYErYMzp4xh+f3ykTr
RHBRCC+wQMJUNKKZFgfiTLRewgaYCHonm2FOJS9NVaai959PxR4m7DwuN8OE
Gb+XKrHv2GYeeSDOX2ESHvrAWP8mCQ7z2v9EYxzsx/AsHVP24AyV356zvdtz
kKkG9/QgEwVZxIYLbOIj3n0brxPUS4ZjLNHJjOpip5mr6kBQWTZtfszvHWiE
qIuLSb6w8z3/hNj/JfUnQAT/LVXgX0ThL0KGOJI4JOkXPQCyNeF9wJZpeeds
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

-->

</rfc>
