<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.39 (Ruby 3.0.2) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="pre5378Trust200902" docName="draft-ietf-cose-hpke-06" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="COSE HPKE">Use of Hybrid Public-Key Encryption (HPKE) with CBOR Object Signing and Encryption (COSE)</title>

    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization></organization>
      <address>
        <postal>
          <country>Austria</country>
        </postal>
        <email>hannes.tschofenig@gmx.net</email>
      </address>
    </author>
    <author initials="O." surname="Steele" fullname="Orie Steele" role="editor">
      <organization>Transmute</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>orie@transmute.industries</email>
      </address>
    </author>
    <author initials="D." surname="Ajitomi" fullname="Daisuke Ajitomi">
      <organization></organization>
      <address>
        <postal>
          <country>Japan</country>
        </postal>
        <email>dajiaji@gmail.com</email>
      </address>
    </author>
    <author initials="L." surname="Lundblade" fullname="Laurence Lundblade">
      <organization>Security Theory LLC</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>lgl@securitytheory.com</email>
      </address>
    </author>

    <date year="2023" month="October" day="07"/>

    <area>Security</area>
    <workgroup>COSE</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<?line 60?>

<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.</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 COSE is
provided by COSE-native security mechanisms or by one of the authenticated
variants of HPKE.</t>

<t>This document defines the use of the HPKE with COSE.</t>



    </abstract>



  </front>

  <middle>


<?line 74?>

<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 COSE (<xref target="RFC9052"/>, <xref target="RFC9053"/>).</t>

</section>
<section anchor="conventions-and-terminology"><name>Conventions and Terminology</name>

<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" 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>

<t>This specification uses the following abbreviations and terms:</t>

<t><list style="symbols">
  <t>Content-encryption key (CEK), a term defined in CMS <xref target="RFC2630"/>.</t>
  <t>Hybrid Public Key Encryption (HPKE) is defined in <xref target="RFC9180"/>.</t>
  <t>pkR is the public key of the recipient, as defined in <xref target="RFC9180"/>.</t>
  <t>skR is the private key of the recipient, as defined in <xref target="RFC9180"/>.</t>
  <t>Key Encapsulation Mechanism (KEM), see <xref target="RFC9180"/>.</t>
  <t>Key Derivation Function (KDF), see <xref target="RFC9180"/>.</t>
  <t>Authenticated Encryption with Associated Data (AEAD), see <xref target="RFC9180"/>.</t>
  <t>Additional Authenticated Data (AAD), see <xref target="RFC9180"/>.</t>
</list></t>

</section>
<section anchor="hpke-for-cose"><name>HPKE for COSE</name>

<section anchor="overview"><name>Overview</name>

<t>This specification supports two uses of HPKE in COSE, namely</t>

<t><list style="symbols">
  <t>HPKE in a single recipient setup.
This use case utilizes a one layer COSE structure. 
<xref target="one-layer"/> provides the details.</t>
  <t>HPKE in a multiple recipient setup. 
This use case requires a two layer COSE structure.  <xref target="two-layer"/> 
provides the details. While it is possible to support the single 
recipient use case with a two layer structure, the single 
layer setup is more efficient.</t>
</list></t>

<t>In both cases a new COSE 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>For use with HPKE the 'encapsulated_key' header parameter MUST
be present in the unprotected header parameter and MUST contain
the encapsulated key, which is output of the HPKE KEM, and it
is a bstr.</t>

<section anchor="one-layer"><name>Single Recipient / One Layer Structure</name>

<t>With the one layer structure the information carried inside the 
COSE_recipient structure is embedded inside the COSE_Encrypt0.</t>

<t>HPKE is used to directly encrypt the plaintext and the resulting ciphertext
is either included in the COSE_Encrypt0 or is detached. If a payload is
transported separately then it is called "detached content". A nil CBOR
object is placed in the location of the ciphertext. See Section 5
of <xref target="RFC9052"/> for a description of detached payloads.</t>

<t>The sender MUST set the alg parameter in the protected header, which
indicates the use of HPKE.</t>

<t>The sender MUST place the 'encapsulated_key' parameter into the unprotected
header. Although the use of the 'kid' parameter in COSE_Encrypt0 is
discouraged by RFC 9052, this profile allows the use of the 'kid' parameter
(or other parameters) to identify the static recipient public key used by
the sender. If the COSE_Encrypt0 contains the 'kid' then the recipient may
use it to select the appropriate private key.</t>

<t>HPKE defines an API and this API uses an "aad" parameter as input. When
COSE_Encrypt0 is used then there is no AEAD function executed by COSE
natively and HPKE offers this functionality.</t>

<t>The "aad" parameter provided to the HPKE API is constructed
as follows (and the design has been re-used from <xref target="RFC9052"/>):</t>

<figure><artwork><![CDATA[
Enc_structure = [
    context : "Encrypt0",
    protected : empty_or_serialized_map,
    external_aad : bstr
]

empty_or_serialized_map = bstr .cbor header_map / bstr .size 0
]]></artwork></figure>

<t>The protected field in the Enc_structure contains the protected attributes 
from the COSE_Encrypt0 structure at layer 0, encoded in a bstr type.</t>

<t>The external_aad field in the Enc_structure contains the Externally Supplied
Data described in Section 4.3 and Section 5.3 in RFC 9052. If this field is
not supplied, it defaults to a zero-length byte string.</t>

<t>The HPKE APIs also use an "info" parameter as input and the details are
provided in <xref target="info"/>.</t>

<t><xref target="cddl-hpke-one-layer"/> shows the COSE_Encrypt0 CDDL structure.</t>

<figure title="CDDL for HPKE-based COSE_Encrypt0 Structure" anchor="cddl-hpke-one-layer"><artwork><![CDATA[
COSE_Encrypt0_Tagged = #6.16(COSE_Encrypt0)

; Layer 0
COSE_Encrypt0 = [
    Headers,
    ciphertext : bstr / nil,
]
]]></artwork></figure>

<t>The COSE_Encrypt0 MAY be tagged or untagged.</t>

<t>An example is shown in <xref target="one-layer-example"/>.</t>

</section>
<section anchor="two-layer"><name>Multiple Recipients / Two Layer Structure</name>

<t>With the two layer structure the HPKE information is conveyed in the COSE_recipient 
structure, i.e. one COSE_recipient structure per recipient.</t>

<t>In this approach the following layers are involved:</t>

<t><list style="symbols">
  <t>Layer 0 (corresponding to the COSE_Encrypt structure) contains the content (plaintext)
encrypted with the CEK. This ciphertext MAY be detached. If not detached, then
it is included in the COSE_Encrypt structure.</t>
  <t>Layer 1 (corresponding to a recipient structure) contains parameters needed for 
HPKE to generate a shared secret used to encrypt the CEK. This layer conveys the 
encrypted CEK in the encCEK structure. The protected header MUST contain the HPKE 
alg parameter and the unprotected header MUST contain the 'encapsulated_key' parameter.
The unprotected header MAY contain the kid parameter to identify the static recipient
public key the sender has been using with HPKE.</t>
</list></t>

<t>This two-layer structure is used to encrypt content that can also be shared with
multiple parties at the expense of a single additional encryption operation.
As stated above, the specification uses a CEK to encrypt the content at layer 0.</t>

<t>The COSE_recipient structure, shown in <xref target="cddl-hpke"/>, is repeated for each
recipient.</t>

<figure title="CDDL for HPKE-based COSE_Encrypt Structure" anchor="cddl-hpke"><artwork><![CDATA[
COSE_Encrypt_Tagged = #6.96(COSE_Encrypt)
 
/ Layer 0 /
COSE_Encrypt = [
  Headers,
  ciphertext : bstr / nil,
  recipients : + COSE_recipient
]

/ Layer 1 /
COSE_recipient = [
  protected   : bstr .cbor header_map,
  unprotected : header_map,
  encCEK      : bstr,
]

header_map = {
  Generic_Headers,
  * label => values,
}
]]></artwork></figure>

<t>The COSE_Encrypt MAY be tagged or untagged.</t>

<t>An example is shown in <xref target="two-layer-example"/>.</t>

</section>
</section>
<section anchor="info"><name>Info Parameter</name>

<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.</t>

<t>This section provides a suggestion for constructing the info structure. HPKE leaves
the info parameter for these two functions as optional. Application profiles of this
specification MAY populate the fields of the COSE_KDF_Context structure or MAY use
a different structure as input to the "info" parameter. If no content for the
"info" parameter is not supplied, it defaults to a zero-length byte string.</t>

<t>This specification re-uses the context information structure defined in
<xref target="RFC9053"/> as a foundation for the info structure. This payload becomes the content
of the info parameter for the HPKE functions, when utilized. For better readability of
this specification the COSE_KDF_Context structure is repeated in <xref target="cddl-cose-kdf"/>.</t>

<figure title="COSE_KDF_Context Data Structure as 'info' Parameter for HPKE" anchor="cddl-cose-kdf"><artwork><![CDATA[
   PartyInfo = (
       identity : bstr / nil,
       nonce : bstr / int / nil,
       other : bstr / nil
   )

   COSE_KDF_Context = [
       AlgorithmID : int / tstr,
       PartyUInfo : [ PartyInfo ],
       PartyVInfo : [ PartyInfo ],
       SuppPubInfo : [
           keyDataLength : uint,
           protected : empty_or_serialized_map,
           ? other : bstr
       ],
       ? SuppPrivInfo : bstr
   ]
]]></artwork></figure>

</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>

<t><list style="symbols">
  <t>HPKE Mode</t>
  <t>KEM algorithm</t>
  <t>KDF algorithm</t>
  <t>AEAD algorithm</t>
</list></t>

<t>The "KEM", "KDF", and "AEAD" values are conceptually taken from the HPKE IANA
registry <xref target="HPKE-IANA"/>. Hence, COSE-HPKE cannot use a 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>

<figure><artwork><![CDATA[
HPKE-<Version>-<Mode>-<KEM>-<KDF>-<AEAD>
]]></artwork></figure>

<t>The "Mode" indicator may be populated with the following values from
Table 1 of <xref target="RFC9180"/>:</t>

<t><list style="symbols">
  <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>
  <t>"PSK" refers to "mode_psk", described in Section 5.1.2 of <xref target="RFC9180"/>,
which authenticates using a pre-shared key.</t>
  <t>"Auth" refers to "mode_auth", described in Section 5.1.3 of <xref target="RFC9180"/>,
which authenticates using an asymmetric key.</t>
  <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>
</list></t>

<t>For a list of ciphersuite registrations, please see <xref target="IANA"/>. The following
table summarizes the relationship between the ciphersuites registered in this
document and the values registered in the HPKE IANA registry <xref target="HPKE-IANA"/>.</t>

<figure><artwork><![CDATA[
+--------------------------------------------------+------------------+
| COSE-HPKE                                        |      HPKE        |
| Cipher Suite Label                               | KEM | KDF | AEAD |
+--------------------------------------------------+-----+-----+------+
| HPKE-Base-P256-SHA256-AES128GCM                  |0x10 | 0x1 | 0x1  |
| HPKE-Base-P256-SHA256-ChaCha20Poly1305           |0x10 | 0x1 | 0x3  |
| HPKE-Base-P384-SHA384-AES256GCM                  |0x11 | 0x2 | 0x2  |
| HPKE-Base-P384-SHA384-ChaCha20Poly1305           |0x11 | 0x2 | 0x3  |
| HPKE-Base-P521-SHA512-AES256GCM                  |0x12 | 0x3 | 0x2  |
| HPKE-Base-P521-SHA512-ChaCha20Poly1305           |0x12 | 0x3 | 0x3  |
| HPKE-Base-X25519-SHA256-AES128GCM                |0x20 | 0x1 | 0x1  |
| HPKE-Base-X25519-SHA256-ChaCha20Poly1305         |0x20 | 0x1 | 0x3  |
| HPKE-Base-X448-SHA512-AES256GCM                  |0x21 | 0x3 | 0x2  |
| HPKE-Base-X448-SHA512-ChaCha20Poly1305           |0x21 | 0x3 | 0x3  |
| HPKE-Base-X25519Kyber768-SHA256-AES256GCM        |0x30 | 0x1 | 0x2  |
| HPKE-Base-X25519Kyber768-SHA256-ChaCha20Poly1305 |0x30 | 0x1 | 0x3  |
| HPKE-Base-CP256-SHA256-ChaCha20Poly1305          |0x13 | 0x1 | 0x3  |
| HPKE-Base-CP256-SHA256-AES128GCM                 |0x13 | 0x1 | 0x1  |
| HPKE-Base-CP521-SHA512-ChaCha20Poly1305          |0x15 | 0x3 | 0x3  |
| HPKE-Base-CP521-SHA512-AES256GCM                 |0x15 | 0x3 | 0x2  |
+--------------------------------------------------+-----+-----+------+
]]></artwork></figure>

<t>Note that the last four entries in the table refer to the compact encoding
of the public keys defined in <xref target="I-D.irtf-cfrg-dnhpke"/>.</t>

<t>As the list indicates, the ciphersuite labels have been abbreviated at least
to some extend to maintain the tradeoff between readability and length.</t>

</section>
<section anchor="examples"><name>Examples</name>

<section anchor="one-layer-example"><name>Single Recipient / One Layer Example</name>

<t>This example assumes that a sender wants to communicate an
encrypted payload to a single recipient in the most efficient way.</t>

<t>An example of the COSE_Encrypt0 structure using the HPKE scheme is
shown in <xref target="hpke-example-one"/>. Line breaks and comments have been inserted
for better readability.</t>

<t>This example uses HPKE-Base-P256-SHA256-AES128GCM, which corresponds
to the following HPKE algorithm combination:</t>

<t><list style="symbols">
  <t>KEM: DHKEM(P-256, HKDF-SHA256)</t>
  <t>KDF: HKDF-SHA256</t>
  <t>AEAD: AES-128-GCM</t>
  <t>Mode: Base</t>
  <t>payload: "This is the content"</t>
  <t>aad: ""</t>
</list></t>

<figure title="COSE_Encrypt0 Example for HPKE" anchor="hpke-example-one"><artwork><![CDATA[
16([
    / alg = TBD1 (Assumed: 35) /
    h'a1011823',
    {
        / kid /
        4: h'3031',
        / encapsulated_key /
        -4: h'048c6f75e463a773082f3cb0d3a701348a578c67
              80aba658646682a9af7291dfc277ec93c3d58707
              818286c1097825457338dc3dcaff367e2951342e
              9db30dc0e7',
    },
    / encrypted plaintext /
    h'ee22206308e478c279b94bb071f3a5fbbac412a6effe34195f7
      c4169d7d8e81666d8be13',
])
]]></artwork></figure>

</section>
<section anchor="two-layer-example"><name>Multiple Recipients / Two Layer</name>

<t>In this example we assume that a sender wants to transmit a
payload to two recipients using the two-layer structure.
Note that it is possible to send two single-layer payloads, 
although it will be less efficient.</t>

<t>An example of the COSE_Encrypt structure using the HPKE scheme is
shown in <xref target="hpke-example-two"/>. Line breaks and comments have been
inserted for better readability.</t>

<t>This example uses AES-128-GCM for encryption of the plaintext
"This is the content." with aad="" at layer 0. The ciphertext is
detached.</t>

<t>At the recipient structure at layer 1, this example uses
HPKE-Base-P256-SHA256-AES128GCM as the algorithm, which
correspond to the following HPKE algorithm combination:</t>

<t><list style="symbols">
  <t>KEM: DHKEM(P-256, HKDF-SHA256)</t>
  <t>KDF: HKDF-SHA256</t>
  <t>AEAD: AES-128-GCM</t>
  <t>Mode: Base</t>
</list></t>

<figure title="COSE_Encrypt Example for HPKE" anchor="hpke-example-two"><artwork><![CDATA[
96_0([
    / alg = AES-128-GCM (1) /
    h'a10101',
    {
      / iv /
      5: h'67303696a1cc2b6a64867096'
    },
    / detached ciphertext /
    h'',
    [
        [
            / alg = TBD1 (Assumed: 35) /
            h'a1011823',
            {
                / kid /
                4: h'3031',
                / encapsulated_key /
                36: h'0421ccd1b00dd958d77e10399c
                      97530fcbb91a1dc71cb3bf41d9
                      9fd39f22918505c973816ecbca
                      6de507c4073d05cceff73e0d35
                      f60e2373e09a9433be9e95e53c',
            },
            / ciphertext containing encrypted CEK /
            h'bb2f1433546c55fb38d6f23f5cd95e1d72eb4
              c129b99a165cd5a28bd75859c10939b7e4d',
        ],
        [
            / alg = TBD1 (Assumed: 35) /
            h'a1011823',
            {
                / kid /
                4: h'313233', // kid
                / encapsulated_key /
                -4: h'6de507c4073d05cceff73e0d35
                      f60e2373e09a9433be9e95e53c
                      9fd39f22918505c973816ecbca
                      6de507c4073d05cceff73e0d35
                      f60e2373e09a9433be9e95e53c',
            },
            / ciphertext containing encrypted CEK /
            h'c4169d7d8e81666d8be13bb2f1433546c55fb
              c129b99a165cd5a28bd75859c10939b7e4d',
        ]        
    ],
])
]]></artwork></figure>

<t>To offer authentication of the sender the payload in <xref target="hpke-example-two"/>
is signed with a COSE_Sign1 wrapper, which is outlined in <xref target="hpke-example-sign"/>.
The payload in <xref target="hpke-example-sign"/> is meant to contain the content of
<xref target="hpke-example-two"/>.</t>

<figure title="COSE_Encrypt Example for HPKE" anchor="hpke-example-sign"><artwork><![CDATA[
18(
  [
    / protected / h'a10126' / {
            \ alg \ 1:-7 \ ECDSA 256 \
          } / ,
    / unprotected / {
          / kid / 4:'sender@example.com'
        },
    / payload /     h'AA19...B80C',
    / signature /   h'E3B8...25B8'
  ]
)
]]></artwork></figure>

</section>
</section>
<section anchor="sec-cons"><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 COSE 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 relies on a source of randomness to be available on the device. Additionally, 
with the two layer structure the CEK is randomly generated and it MUST be
ensured that the guidelines in <xref target="RFC8937"/> for random number generations are followed.</t>

<t>HPKE in Base mode does not offer authentication as part of the HPKE KEM. In this
case COSE constructs like COSE_Sign, COSE_Sign1, COSE_MAC, or COSE_MAC0 can be
used to add authentication. HPKE also offers modes that offer authentication.</t>

<t>If COSE_Encrypt or COSE_Encrypt0 is used with a detached ciphertext then the
subsequently applied integrity protection via COSE_Sign, COSE_Sign1, COSE_MAC, 
or COSE_MAC0 does not cover this detached ciphertext. Implementers MUST ensure
that the detached ciphertext also experiences integrity protection. This is, for
example, the case when an AEAD cipher is used to produce the detached ciphertext
but may not be guaranteed by non-AEAD ciphers.</t>

</section>
<section anchor="IANA"><name>IANA Considerations</name>

<t>This document requests IANA to add new values to the 'COSE Algorithms' and to 
the 'COSE Header Parameters' registries.</t>

<section anchor="cose-algorithms-registry"><name>COSE Algorithms Registry</name>

<t><list style="symbols">
  <t>Name: HPKE-Base-P256-SHA256-AES128GCM</t>
  <t>Value: TBD1 (Assumed: 35)</t>
  <t>Description: Cipher suite for COSE-HPKE in Base Mode that uses the DHKEM(P-256, HKDF-SHA256) KEM, the HKDF-SHA256 KDF and the AES-128-GCM AEAD.</t>
  <t>Capabilities: [kty]</t>
  <t>Change Controller: IESG</t>
  <t>Reference:  [[TBD: This RFC]]</t>
  <t>Recommended: Yes</t>
  <t>Name: HPKE-Base-P256-SHA256-ChaCha20Poly1305</t>
  <t>Value: TBD2 (Assumed: 36)</t>
  <t>Description: Cipher suite for COSE-HPKE in Base Mode that uses the DHKEM(P-256, HKDF-SHA256) KEM, the HKDF-SHA256 KDF and the ChaCha20Poly1305 AEAD.</t>
  <t>Capabilities: [kty]</t>
  <t>Change Controller: IESG</t>
  <t>Reference:  [[TBD: This RFC]]</t>
  <t>Recommended: Yes</t>
  <t>Name: HPKE-Base-P384-SHA384-AES256GCM</t>
  <t>Value: TBD3 (Assumed: 37)</t>
  <t>Description: Cipher suite for COSE-HPKE in Base Mode that uses the DHKEM(P-384, HKDF-SHA384) KEM, the HKDF-SHA384 KDF, and the AES-256-GCM AEAD.</t>
  <t>Capabilities: [kty]</t>
  <t>Change Controller: IESG</t>
  <t>Reference:  [[TBD: This RFC]]</t>
  <t>Recommended: Yes</t>
  <t>Name: HPKE-Base-P384-SHA384-ChaCha20Poly1305</t>
  <t>Value: TBD4 (Assumed: 38)</t>
  <t>Description: Cipher suite for COSE-HPKE in Base Mode that uses the DHKEM(P-384, HKDF-SHA384) KEM, the HKDF-SHA384 KDF, and the ChaCha20Poly1305 AEAD.</t>
  <t>Capabilities: [kty]</t>
  <t>Change Controller: IESG</t>
  <t>Reference:  [[TBD: This RFC]]</t>
  <t>Recommended: Yes</t>
  <t>Name: HPKE-Base-P521-SHA512-AES256GCM</t>
  <t>Value: TBD5 (Assumed: 39)</t>
  <t>Description: Cipher suite for COSE-HPKE in Base Mode that uses the DHKEM(P-521, HKDF-SHA512) KEM, the HKDF-SHA512 KDF, and the AES-256-GCM AEAD.</t>
  <t>Capabilities: [kty]</t>
  <t>Change Controller: IESG</t>
  <t>Reference:  [[TBD: This RFC]]</t>
  <t>Recommended: Yes</t>
  <t>Name: HPKE-Base-P521-SHA512-ChaCha20Poly1305</t>
  <t>Value: TBD6 (Assumed: 40)</t>
  <t>Description: Cipher suite for COSE-HPKE in Base Mode that uses the DHKEM(P-521, HKDF-SHA512) KEM, the HKDF-SHA512 KDF, and the ChaCha20Poly1305 AEAD.</t>
  <t>Capabilities: [kty]</t>
  <t>Change Controller: IESG</t>
  <t>Reference:  [[TBD: This RFC]]</t>
  <t>Recommended: Yes</t>
  <t>Name: HPKE-Base-X25519-SHA256-AES128GCM</t>
  <t>Value: TBD7 (Assumed: 41)</t>
  <t>Description: Cipher suite for COSE-HPKE in Base Mode that uses the DHKEM(X25519, HKDF-SHA256) KEM, the HKDF-SHA256 KDF, and the AES-128-GCM AEAD.</t>
  <t>Capabilities: [kty]</t>
  <t>Change Controller: IESG</t>
  <t>Reference:  [[TBD: This RFC]]</t>
  <t>Recommended: Yes</t>
  <t>Name: HPKE-Base-X25519-SHA256-ChaCha20Poly1305</t>
  <t>Value: TBD8 (Assumed: 42)</t>
  <t>Description: Cipher suite for COSE-HPKE in Base Mode that uses the DHKEM(X25519, HKDF-SHA256) KEM, the HKDF-SHA256 KDF, and the ChaCha20Poly1305 AEAD.</t>
  <t>Capabilities: [kty]</t>
  <t>Change Controller: IESG</t>
  <t>Reference:  [[TBD: This RFC]]</t>
  <t>Recommended: Yes</t>
  <t>Name: HPKE-Base-X448-SHA512-AES256GCM</t>
  <t>Value: TBD9 (Assumed: 43)</t>
  <t>Description: Cipher suite for COSE-HPKE in Base Mode that uses the DHKEM(X448, HKDF-SHA512) KEM, the HKDF-SHA512 KDF, and the AES-256-GCM AEAD.</t>
  <t>Capabilities: [kty]</t>
  <t>Change Controller: IESG</t>
  <t>Reference:  [[TBD: This RFC]]</t>
  <t>Recommended: Yes</t>
  <t>Name: HPKE-Base-X448-SHA512-ChaCha20Poly1305</t>
  <t>Value: TBD10 (Assumed: 44)</t>
  <t>Description: Cipher suite for COSE-HPKE in Base Mode that uses the DHKEM(X448, HKDF-SHA512) KEM, the HKDF-SHA512 KDF, and the ChaCha20Poly1305 AEAD.</t>
  <t>Capabilities: [kty]</t>
  <t>Change Controller: IESG</t>
  <t>Reference:  [[TBD: This RFC]]</t>
  <t>Recommended: Yes</t>
  <t>Name: HPKE-Base-X25519Kyber768-SHA256-AES256GCM</t>
  <t>Value: TBD11 (Assumed: 250)</t>
  <t>Description: Cipher suite for COSE-HPKE in Base Mode that uses the X25519Kyber768Draft00 KEM, the HKDF-SHA256 KDF, and the AES-256-GCM AEAD.</t>
  <t>Capabilities: [kty]</t>
  <t>Change Controller: IESG</t>
  <t>Reference:  [[TBD: This RFC]]</t>
  <t>Recommended: No</t>
  <t>Name: HPKE-Base-X25519Kyber768-SHA256-ChaCha20Poly1305</t>
  <t>Value: TBD12 (Assumed: 251)</t>
  <t>Description: Cipher suite for COSE-HPKE in Base Mode that uses the X25519Kyber768Draft00 KEM, the HKDF-SHA256 KDF, and the ChaCha20Poly1305 AEAD.</t>
  <t>Capabilities: [kty]</t>
  <t>Change Controller: IESG</t>
  <t>Reference:  [[TBD: This RFC]]</t>
  <t>Recommended: No</t>
  <t>Name: HPKE-Base-CP256-SHA256-ChaCha20Poly1305</t>
  <t>Value: TBD13 (Assumed: 45)</t>
  <t>Description: Cipher suite for COSE-HPKE in Base Mode that uses the DHKEM(CP-256, HKDF-SHA256) KEM, the HKDF-SHA256 KDF and the ChaCha20Poly1305 AEAD.</t>
  <t>Capabilities: [kty]</t>
  <t>Change Controller: IESG</t>
  <t>Reference:  [[TBD: This RFC]]</t>
  <t>Recommended: Yes</t>
  <t>Name: HPKE-Base-CP521-SHA512-ChaCha20Poly1305</t>
  <t>Value: TBD14 (Assumed: 46)</t>
  <t>Description: Cipher suite for COSE-HPKE in Base Mode that uses the DHKEM(CP-521, HKDF-SHA512) KEM, the HKDF-SHA512 KDF, and the ChaCha20Poly1305 AEAD.</t>
  <t>Capabilities: [kty]</t>
  <t>Change Controller: IESG</t>
  <t>Reference:  [[TBD: This RFC]]</t>
  <t>Recommended: Yes</t>
  <t>Name: HPKE-Base-CP256-SHA256-AES128GCM</t>
  <t>Value: TBD15 (Assumed: 47)</t>
  <t>Description: Cipher suite for COSE-HPKE in Base Mode that uses the DHKEM(CP-256, HKDF-SHA256) KEM, the HKDF-SHA256 KDF and the AES128GCM AEAD.</t>
  <t>Capabilities: [kty]</t>
  <t>Change Controller: IESG</t>
  <t>Reference:  [[TBD: This RFC]]</t>
  <t>Recommended: Yes</t>
  <t>Name: HPKE-Base-CP521-SHA512-AES256GCM</t>
  <t>Value: TBD16 (Assumed: 47)</t>
  <t>Description: Cipher suite for COSE-HPKE in Base Mode that uses the DHKEM(CP-521, HKDF-SHA512) KEM, the HKDF-SHA512 KDF, and the AES256GCM AEAD.</t>
  <t>Capabilities: [kty]</t>
  <t>Change Controller: IESG</t>
  <t>Reference:  [[TBD: This RFC]]</t>
  <t>Recommended: Yes</t>
</list></t>

</section>
<section anchor="cose-header-parameters"><name>COSE Header Parameters</name>

<t><list style="symbols">
  <t>Name: encapsulated_key</t>
  <t>Label: TBDX (Assumed: -4)</t>
  <t>Value type: bstr</t>
  <t>Value Registry: N/A</t>
  <t>Description: HPKE encapsulated key</t>
  <t>Reference: [[This specification]]</t>
</list></t>

</section>
</section>


  </middle>

  <back>


    <references title='Normative References'>



<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="RFC9052">
  <front>
    <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
    <author fullname="J. Schaad" initials="J." surname="Schaad"/>
    <date month="August" year="2022"/>
    <abstract>
      <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
      <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="96"/>
  <seriesInfo name="RFC" value="9052"/>
  <seriesInfo name="DOI" value="10.17487/RFC9052"/>
</reference>

<reference anchor="RFC9053">
  <front>
    <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
    <author fullname="J. Schaad" initials="J." surname="Schaad"/>
    <date month="August" year="2022"/>
    <abstract>
      <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines a set of algorithms that can be used with the CBOR Object Signing and Encryption (COSE) protocol (RFC 9052).</t>
      <t>This document, along with RFC 9052, obsoletes RFC 8152.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9053"/>
  <seriesInfo name="DOI" value="10.17487/RFC9053"/>
</reference>




    </references>

    <references title='Informative References'>



<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="I-D.irtf-cfrg-dnhpke">
   <front>
      <title>Deterministic Nonce-less Hybrid Public Key Encryption</title>
      <author fullname="Dan Harkins" initials="D." surname="Harkins">
         <organization>Hewlett-Packard Enterprise</organization>
      </author>
      <date day="28" month="September" year="2023"/>
      <abstract>
	 <t>   This document describes enhancements to the Hybrid Public Key
   Encryption standard published by CFRG.  These include use of &quot;compact
   representation&quot; of relevant public keys, support for key-wrapping,
   and two ways to address the use of HPKE on lossy networks: a
   determinstic, nonce-less AEAD scheme, and use of a rolling sequence
   number with existing AEAD schemes.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-dnhpke-02"/>
   
</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>


    </references>


<?line 667?>

<section anchor="contributors"><name>Contributors</name>

<t>We would like thank the following individuals for their contributions
to the design of embedding the HPKE output into the COSE structure 
following a long and lively mailing list discussion:</t>

<t><list style="symbols">
  <t>Richard Barnes</t>
  <t>Ilari Liusvaara</t>
</list></t>

<t>Finally, we would like to thank Russ Housley and Brendan Moran for their
contributions to the draft as co-authors of initial versions.</t>

</section>
<section anchor="acknowledgements"><name>Acknowledgements</name>

<t>We would like to thank John Mattsson, Mike Prorock, Michael Richardson,
and Goeran Selander for their review feedback.</t>

</section>


  </back>

<!-- ##markdown-source:
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

-->

</rfc>

