<?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.7.21 (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-15" 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 abbrev="H-BRS">University of Applied Sciences Bonn-Rhein-Sieg</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>hannes.tschofenig@gmx.net</email>
      </address>
    </author>
    <author 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>bibital</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="2025" month="July" day="07"/>

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

    <abstract>


<?line 69?>

<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 is a general encryption framework utilizing an asymmetric key encapsulation
mechanism (KEM), a key derivation function (KDF), and an Authenticated Encryption
with Associated Data (AEAD) algorithm.</t>

<t>This document defines the use of HPKE with COSE. Authentication for HPKE in COSE is
provided by COSE-native security mechanisms or by the pre-shared key authenticated
variant of HPKE.</t>



    </abstract>



  </front>

  <middle>


<?line 83?>

<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 document defines the use of the HPKE with 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 modes of HPKE in COSE, namely</t>

<t><list style="symbols">
  <t>HPKE Integrated Encryption mode, where HPKE is used to encrypt the plaintext. This mode can only be used with a single recipient. <xref target="one-layer"/> provides the details.</t>
  <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. <xref target="two-layer"/> provides the details.</t>
</list></t>

<t>In both cases, a new COSE header parameter called 'ek' is used
to convey the content of the enc structure defined in the HPKE
specification. The enc value represents the serialized encapsulated
public key.</t>

<t>When used with HPKE, the 'ek' header parameter MUST be present in
the unprotected header and MUST contain the encapsulated key,
which is the output of the HPKE KEM. The value of 'ek' MUST be a
bstr.</t>

<t>For all modes, the HPKE info parameter defaults to the empty string; mutually known private information MAY be used instead. The concept of mutually known private information is defined in <xref target="NIST.SP.800-56Ar3"/> as an input to the key derivation function.</t>

<t>HPKE defines several authentication modes, as described in Table 1 of <xref target="RFC9180"/>.
In COSE HPKE, only 'mode_base' and 'mode_psk' are supported. The mode is 'mode_psk' if
the 'psk_id' header parameter is present; otherwise, the mode defaults to 'mode_base'.
'mode_base' is described in Section 5.1.1 of <xref target="RFC9180"/>, which only enables encryption
to the holder of a given KEM private key. 'mode_psk' is described in Section 5.1.2 of <xref target="RFC9180"/>,
which authenticates using a pre-shared key.</t>

<section anchor="one-layer"><name>HPKE Integrated Encryption Mode</name>

<t>This mode applies if the COSE_Encrypt0 structure uses a COSE-HPKE algorithm
and has no recipient structure(s).</t>

<t>Because COSE-HPKE supports header protection, if the 'alg' parameter is present, it MUST be included
in the protected header and MUST be a COSE-HPKE algorithm.</t>

<t>Although the use of the 'kid' parameter in COSE_Encrypt0 is
discouraged by RFC 9052, this document RECOMMENDS the use of the 'kid' parameter
(or other parameters) to explicitly identify the static recipient public key
used by the sender. If the COSE_Encrypt0 structure includes a 'kid' parameter, the
recipient MAY use it to select the corresponding private key.</t>

<t>When encrypting, the inputs to the HPKE Seal operation are set as follows:</t>

<t><list style="symbols">
  <t>kem_id: Depends on the COSE-HPKE algorithm used.</t>
  <t>pkR: The recipient public key, converted into an HPKE public key.</t>
  <t>kdf_id: Depends on the COSE-HPKE algorithm used.</t>
  <t>aead_id: Depends on the COSE-HPKE algorithm used.</t>
  <t>info: Defaults to the empty string; mutually known private information MAY be used instead.</t>
  <t>aad: Canonical encoding of the Recipient_structure.</t>
  <t>pt: The raw message plaintext.</t>
</list></t>

<t>The outputs are used as follows:</t>

<t><list style="symbols">
  <t>enc: MUST be placed raw into the 'ek' (encapsulated key) parameter in the unprotected bucket.</t>
  <t>ct: MUST be used as layer ciphertext. If not using detached content, this is directly placed as
ciphertext in COSE_Encrypt0 structure. Otherwise, it is transported separately and the ciphertext field is nil.
See Section 5 of <xref target="RFC9052"/> for a description of detached payloads.</t>
</list></t>

<t>If 'mode_psk' has been selected, then the 'psk_id' parameter MUST be present.
If 'mode_base' has been chosen, then the 'psk_id' parameter MUST NOT be present.</t>

<t>When decrypting, the inputs to the HPKE Open operation are set as follows:</t>

<t><list style="symbols">
  <t>kem_id: Depends on the COSE-HPKE algorithm used.</t>
  <t>skR: The recipient private key, converted into an HPKE private key.</t>
  <t>kdf_id: Depends on the COSE-HPKE algorithm used.</t>
  <t>aead_id: Depends on the COSE-HPKE algorithm used.</t>
  <t>info: Defaults to the empty string; mutually known private information MAY be used instead.</t>
  <t>aad: Canonical encoding of the Recipient_structure.</t>
  <t>enc: The contents of the layer 'ek' parameter.</t>
  <t>ct: The contents of the layer ciphertext.</t>
</list></t>

<t>The plaintext output is the raw message plaintext.</t>

<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>HPKE Key Encryption Mode</name>

<t>This mode is selected if the COSE_recipient structure uses a COSE-HPKE algorithm.</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, and 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 COSE_recipient structure using a COSE-HPKE algorithm.
The unprotected header MAY contain the kid parameter to identify the static recipient
public key that 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>

<section anchor="recipient-encryption"><name>Recipient Encryption</name>

<t>This section describes the Recipient_structure.
It serves instead of COSE_KDF_Context for COSE-HPKE recipients (and possibly other COSE algorithms defined outside this document).
It MUST be used for COSE-HPKE recipients as it provides the protection for recipient-protected headers.
It is patterned after the Enc_structure in <xref target="RFC9052"/>, but is specifically for a COSE_recipient, never a COSE_Encrypt.
The COSE_KDF_Context MUST NOT be used in COSE-HPKE.</t>

<figure><artwork><![CDATA[
Recipient_structure = [
    context: "Recipient",
    next_layer_alg: int/tstr,
    recipient_protected_header: empty_or_serialize_map,
    recipient_aad: bstr
]
]]></artwork></figure>

<t><list style="symbols">
  <t>"next_layer_alg" is the algorithm ID of the COSE layer for which the COSE_recipient is encrypting a key.
It is the algorithm that the key MUST be used with.
This value MUST match the alg parameter in the next lower COSE layer.
(This serves the same purpose as the alg ID in the COSE_KDF_Context.
It also mitigates attacks where a where the attacker manipulates the content-encryption
algorithm identifier. This attack has been demonstrated against CMS and the mitigation
can be found in <xref target="I-D.ietf-lamps-cms-cek-hkdf-sha256"/>.</t>
  <t>"recipient_protected_header" contains the protected headers from the COSE_recipient CBOR-encoded deterministically with the "Core Deterministic Encoding Requirements", specified in Section 4.2.1 of RFC 8949 <xref target="STD94"/>.</t>
  <t>"recipient_aad" contains any additional context the application wishes to protect.
If none, it is a zero-length string.
This is distinct from the external_aad for the whole COSE_Encrypt.
It is per recipient.
Since it is not a header, it may be secret data that is not transmitted.
It provides a means to convey many of the fields in COSE_KDF_Context.</t>
</list></t>

</section>
<section anchor="cose-hpke-recipient-construction"><name>COSE-HPKE Recipient Construction</name>

<t>Because COSE-HPKE supports header protection, if the 'alg' parameter is present, it MUST be in the protected header and MUST be a COSE-HPKE algorithm.</t>

<t>The unprotected header MAY contain the kid parameter to identify the static recipient public key that the sender used.
Use of the 'kid' parameter is RECOMMENDED
to explicitly identify the static recipient public key
used by the sender.</t>

<t>When encrypting, the inputs to the HPKE Seal operation are set as follows:</t>

<t><list style="symbols">
  <t>kem_id: Depends on the COSE-HPKE algorithm used.</t>
  <t>pkR: The recipient public key, converted into HPKE public key.</t>
  <t>kdf_id: Depends on the COSE-HPKE algorithm used.</t>
  <t>aead_id: Depends on the COSE-HPKE algorithm used.</t>
  <t>info: Defaults to the empty string; mutually known private information MAY be used instead.</t>
  <t>aad: Canonical encoding of the Recipient_structure.</t>
  <t>pt: The raw key for the next layer down.</t>
</list></t>

<t>The outputs are used as follows:</t>

<t><list style="symbols">
  <t>enc: MUST be placed raw into the 'ek' (encapsulated key) parameter in the unprotected bucket.</t>
  <t>ct: MUST be placed raw in the ciphertext field in the COSE_recipient.</t>
</list></t>

<t>When decrypting, the inputs to the HPKE Open operation are set as follows:</t>

<t><list style="symbols">
  <t>kem_id: Depends on the COSE-HPKE algorithm used.</t>
  <t>skR: The recipient private key, converted into HPKE private key.</t>
  <t>kdf_id: Depends on the COSE-HPKE algorithm used.</t>
  <t>aead_id: Depends on the COSE-HPKE algorithm used.</t>
  <t>info: Defaults to the empty string; mutually known private information MAY be used instead.</t>
  <t>aad: Canonical encoding of the Recipient_structure.</t>
  <t>enc: The contents of the layer 'ek' parameter.</t>
  <t>ct: The contents of the layer ciphertext field.</t>
</list></t>

<t>The plaintext output is the raw key for the next layer down.</t>

<t>It is not necessary to fill in recipient_aad as HPKE itself covers the attacks that recipient_aad (and COSE_KDF_Context (and SP800-56A)) are used to mitigate.
COSE-HPKE use cases may use it for any purpose they wish, but it should generally be for small identifiers, context or secrets, not to protect bulk external data.
Bulk external data should be protected at layer 0 with external_aad.</t>

<t>The COSE_recipient structure is repeated for each recipient.</t>

<t>When encrypting the content at layer 0, the instructions in <xref section="5.3" sectionFormat="of" target="RFC9052"/> MUST be followed, including the calculation of the
authenticated data structure.</t>

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

</section>
</section>
</section>
<section anchor="key-representation"><name>Key Representation</name>

<t>The COSE_Key with the existing key types can be used to represent KEM private
or public keys. When using a COSE_Key for COSE-HPKE, the following checks are made:</t>

<t><list style="symbols">
  <t>If the "kty" field is "AKP", then the public and private keys SHALL be the raw HPKE public and private
keys (respectively) for the KEM used by the algorithm.</t>
  <t>Otherwise, the key MUST be suitable for the KEM used by the algorithm. In case the "kty" parameter
is "EC2" or "OKP", this means the value of "crv" parameter is suitable. The valid combinations of
KEM, "kty" and "crv" for the algorithms defined in this document are shown in <xref target="ciphersuite-kty-crv"/>.</t>
  <t>If the "key_ops" field is present, it MUST include only "derive bits" for the private key
and MUST be empty for the public key.</t>
</list></t>

<t>Examples of the COSE_Key for COSE-HPKE are shown in <xref target="key-representation-example"/>.</t>

</section>
</section>
<section anchor="ciphersuite-registration"><name>Ciphersuite Registration</name>

<t>A ciphersuite is a group of algorithms, often sharing component algorithms
such as hash functions, targeting a security level.
A COSE-HPKE algorithm is composed of the following choices:</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 chosen from the HPKE IANA
registry <xref target="HPKE-IANA"/>.</t>

<t>The HPKE mode is determined by the presence or absence of the
'psk_id' parameter and is therefore not explicitly indicated in the
ciphersuite.</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        |
| Ciphersuite Label                                | KEM | KDF | AEAD |
+--------------------------------------------------+-----+-----+------+
| HPKE-0                                           |0x10 | 0x1 | 0x1  |
| HPKE-1                                           |0x11 | 0x2 | 0x2  |
| HPKE-2                                           |0x12 | 0x3 | 0x2  |
| HPKE-3                                           |0x20 | 0x1 | 0x1  |
| HPKE-4                                           |0x20 | 0x1 | 0x3  |
| HPKE-5                                           |0x21 | 0x3 | 0x2  |
| HPKE-6                                           |0x21 | 0x3 | 0x3  |
+--------------------------------------------------+-----+-----+------+
]]></artwork></figure>

<t>The following list maps the ciphersuite labels to their textual
description.</t>

<t><list style="symbols">
  <t>HPKE-0: DHKEM(P-256, HKDF-SHA256) KEM, HKDF-SHA256 KDF and AES-128-GCM AEAD.</t>
  <t>HPKE-1: DHKEM(P-384, HKDF-SHA384) KEM, HKDF-SHA384 KDF, and AES-256-GCM AEAD.</t>
  <t>HPKE-2: DHKEM(P-521, HKDF-SHA512) KEM, HKDF-SHA512 KDF, and AES-256-GCM AEAD.</t>
  <t>HPKE-3: DHKEM(X25519, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and AES-128-GCM AEAD.</t>
  <t>HPKE-4: DHKEM(X25519, HKDF-SHA256) KEM, HKDF-SHA256 KDF, and ChaCha20Poly1305 AEAD.</t>
  <t>HPKE-5: DHKEM(X448, HKDF-SHA512) KEM, HKDF-SHA512 KDF, and AES-256-GCM AEAD.</t>
  <t>HPKE-6: DHKEM(X448, HKDF-SHA512) KEM, HKDF-SHA512 KDF, and ChaCha20Poly1305 AEAD.</t>
</list></t>

<t>As the list indicates, the ciphersuite labels have been abbreviated at least
to some extent to strike a balance between readability and length.</t>

<t>The ciphersuite list above is a minimal starting point. Additional
ciphersuites can be registered into the already existing registry.
For example, once post-quantum cryptographic algorithms have been standardized
it might be beneficial to register ciphersuites for use with COSE-HPKE.
Additionally, ciphersuites utilizing the compact encoding of the public keys,
as defined in <xref target="I-D.irtf-cfrg-dnhpke"/>, may be standardized for use in
constrained environments.</t>

<t>As a guideline for ciphersuite submissions to the IANA COSE algorithm
registry, the designated experts must only register combinations of 
(KEM, KDF, AEAD) triple that constitute valid combinations for use with
HPKE, the KDF used should (if possible) match one internally used by the
KEM, and components should not be mixed between global and national standards.</t>

<section anchor="cosekeys-for-cose-hpke-ciphersuites"><name>COSE_Keys for COSE-HPKE Ciphersuites</name>

<t>The COSE-HPKE algorithm uniquely determines the KEM for which a COSE_Key is used.
The following mapping table shows the valid combinations
of the KEM used, COSE_Key type, and its curve/key subtype.</t>

<figure title="COSE_Key Types and Curves for COSE-HPKE Ciphersuites" anchor="ciphersuite-kty-crv"><artwork><![CDATA[
+---------------------+--------------+
| HPKE KEM id         | COSE_Key     |
|                     | kty | crv    |
+---------------------+-----+--------+
| 0x0010, 0x0013      | EC2 | P-256  |
| 0x0011, 0x0014      | EC2 | P-384  |
| 0x0012, 0x0015      | EC2 | P-521  |
| 0x0020              | OKP | X25519 |
| 0x0021              | OKP | X448   |
+---------------------+-----+--------+
]]></artwork></figure>

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

<t>This section provides a set of examples that show all COSE message types
(COSE_Encrypt0, COSE_Encrypt and COSE_Mac) to which the COSE-HPKE can be
applied, and also provides some examples of key representation for HPKE KEM.</t>

<t>Each example of the COSE message includes the following information
that can be used to check the interoperability of COSE-HPKE implementations:</t>

<t><list style="symbols">
  <t>plaintext: Original data of the encrypted payload.</t>
  <t>external_aad: Externally supplied AAD.</t>
  <t>skR: A recipient private key.</t>
  <t>skE: An ephemeral sender private key paired with the encapsulated key.</t>
</list></t>

<section anchor="one-layer-example"><name>HPKE Integrated Encryption Mode</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 HPKE Integrated Encryption Mode is
shown in <xref target="hpke-example-one"/>. Line breaks and comments have been inserted
for better readability.</t>

<t>This example uses the following:</t>

<t><list style="symbols">
  <t>alg: HPKE-0</t>
  <t>plaintext: "This is the content."</t>
  <t>external_aad: "COSE-HPKE app"</t>
  <t>skR: h'57c92077664146e876760c9520d054aa93c3afb04e306705db6090308507b4d3'</t>
  <t>skE: h'42dd125eefc409c3b57366e721a40043fb5a58e346d51c133128a77237160218'</t>
</list></t>

<figure title="COSE_Encrypt0 Example for HPKE" anchor="hpke-example-one"><artwork><![CDATA[
16([
    / alg = HPKE-0 (Assumed: 35) /
    h'a1011823',
    {
        / kid /
        4: h'3031',
        / ek /
        -4: h'045df24272faf43849530db6be01f42708b3c3a9
              df8e268513f0a996ed09ba7840894a3fb946cb28
              23f609c59463093d8815a7400233b75ca8ecb177
              54d241973e',
    },
    / encrypted plaintext /
    h'35aa3d98739289b83751125abe44e3b977e4b9abbf2c8cfaade
      b15f7681eef76df88f096',
])
]]></artwork></figure>

</section>
<section anchor="two-layer-example"><name>HPKE Key Encryption Mode</name>

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

<section anchor="coseencrypt"><name>COSE_Encrypt</name>

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

<t>This example uses the following:</t>

<t>TODO: recompute this for Recipient_structure</t>

<t><list style="symbols">
  <t>Encryption alg: AES-128-GCM</t>
  <t>plaintext: "This is the content."</t>
  <t>detached ciphertext: h'cc168c4e148c52a83010a75250935a47ccb8682deebcef8fce5d60c161e849f53a2dc664'</t>
  <t>kid:"01"
  <list style="symbols">
      <t>alg: HPKE-0</t>
      <t>external_aad: "COSE-HPKE app"</t>
      <t>skR: h'57c92077664146e876760c9520d054aa93c3afb04e306705db6090308507b4d3'</t>
      <t>skE: h'97ad883f949f4cdcb1301b9446950efd4eb519e16c4a3d78304eec832692f9f6'</t>
    </list></t>
  <t>kid:"02"
  <list style="symbols">
      <t>alg: HPKE-4</t>
      <t>external_aad: "COSE-HPKE app"</t>
      <t>skR: h'bec275a17e4d362d0819dc0695d89a73be6bf94b66ab726ae0b1afe3c43f41ce'</t>
      <t>skE: h'b8ed3f4df56c230e36fa6620a47f24d08856d242ea547c5521ff7bd69af8fd6f'</t>
    </list></t>
</list></t>

<figure title="COSE_Encrypt Example for HPKE" anchor="hpke-example-cose-encrypt"><artwork><![CDATA[
96_0([
    / alg = AES-128-GCM (1) /
    h'a10101',
    {
        / iv /
        5: h'b3fb95dde18c6f90a9f0ae55',
    },
    / detached ciphertext /
    null,
    [
        [
            / alg = HPKE-0 (Assumed: 35) /
            h'a1011823',
            {
                / kid /
                4: h'3031',
                / ek /
                -4: h'04d97b79486fe2e7b98fb1bd43
                      c4faee316ff38d28609a1cf568
                      40a809298a91e601f1cc0c2ba4
                      6cb67b41f4651b769cafd9df78
                      e58aa7f5771291bd4f0f420ba6',
            },
            / ciphertext containing encrypted CEK /
            h'24450f54ae93375351467d17aa7a795cfede2
              c03eced1ad21fcb7e7c2fe64397',
        ],
        [
            / alg = HPKE-4 (Assumed: 42) /
            h'a101182a',
            {
                / kid /
                4: h'3032',
                / ek /
                -4: h'd1afbdc95b0e735676f6bca34f
                      be50f2822259ac09bfc3c500f1
                      4a05de9b2833',
            },
            / ciphertext containing encrypted CEK /
            h'079b443ec6dfcda6a5f8748aff3875146a8ed
              40359e1279b545166385d8d9b59',
        ],
    ],
])
]]></artwork></figure>

<t>To offer authentication of the sender the payload in <xref target="hpke-example-cose-encrypt"/>
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-cose-encrypt"/>.</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 anchor="cosemac"><name>COSE_Mac</name>

<t>An example of the COSE_Mac structure using the HPKE scheme is
shown in <xref target="hpke-example-cose-mac"/>.</t>

<t>This example uses the following:</t>

<t><list style="symbols">
  <t>MAC alg: HMAC 256/256</t>
  <t>payload: "This is the content."</t>
  <t>kid:"01"
  <list style="symbols">
      <t>alg: HPKE-0</t>
      <t>external_aad: "COSE-HPKE app"</t>
      <t>skR: h'57c92077664146e876760c9520d054aa93c3afb04e306705db6090308507b4d3'</t>
      <t>skE: h'e5dd9472b5807636c95be0ba2575020ba91cbb3561b52be141da89678c664307'</t>
    </list></t>
  <t>kid:"02"
  <list style="symbols">
      <t>alg: HPKE-4</t>
      <t>external_aad: "COSE-HPKE app"</t>
      <t>skR: h'bec275a17e4d362d0819dc0695d89a73be6bf94b66ab726ae0b1afe3c43f41ce'</t>
      <t>skE: h'78a49d7af71b5244498e943f361aa0250184afc48b8098a68ae97ccd2cd7e56f'</t>
    </list></t>
</list></t>

<figure title="COSE_Mac Example for HPKE" anchor="hpke-example-cose-mac"><artwork><![CDATA[
97_0([
    / alg = HMAC 256/256 (5) /
    h'a10105',
    {},
    / payload = 'This is the content.' /
    h'546869732069732074686520636f6e74656e742e',
    / tag /
    h'5cdcf6055fcbdb53b4001d8fb88b2a46b200ed28e1e
          d77e16ddf43fb3cac3a98',
    [
        [
            / alg = HPKE-0 (Assumed: 35) /
            h'a1011823',
            {
                / kid = '01' /
                4: h'3031',
                / ek /
                -4: h'043ac21632e45e1fbd733f002a
                      621aa4f3d94737adc395d5a7cb
                      6e9554bd1ad273aec991493786
                      d72616d9759bf8526e6e20c1ed
                      c41ba5739f2b2e441781aa0eb4',
            },
            / ciphertext containing encrypted MAC key /
            h'5cee2b4235a7ff695164f7a8d1e79ccf3ca3d
              e8b22f3592626020a95b2a8d3fb4d7aa7fe37
              432426ee70073a368f29d1',
        ],
        [
            / alg = HPKE-4 (Assumed: 42) /
            h'a101182a',
            {
                / kid = '02' /
                4: h'3032',
                / ek /
                -4: h'02cffacc60def3bb3d0a1c3661
                      227c9de8dc2b1d3939dd2c07d4
                      49ebb0bba324',
            },
            / ciphertext containing encrypted MAC key /
            h'3f5b8b60271d5234dbea554dc1461d0239e9f
              4589f6415e8563b061dbcb37795a616111b78
              2b4c589b534309327ffadc',
        ],
    ],
])
]]></artwork></figure>

</section>
</section>
<section anchor="key-representation-example"><name>Key Representation</name>

<t>Examples of private and public KEM key representation are shown below.</t>

<section anchor="kem-public-key-for-hpke-0"><name>KEM Public Key for HPKE-0</name>

<figure title="Key Representation Example for HPKE-0" anchor="hpke-example-key-1"><artwork><![CDATA[
{
    / kty = 'EC2' /
    1: 2,
    / kid = '01' /
    2: h'3031',
    / alg = HPKE-0 (Assumed: 35) /
    3: 35,
    / crv = 'P-256' /
    -1: 1,
    / x /
    -2: h'65eda5a12577c2bae829437fe338701a10aaa375
              e1bb5b5de108de439c08551d',
    / y /
    -3: h'1e52ed75701163f7f9e40ddf9f341b3dc9ba860af
              7e0ca7ca7e9eecd0084d19c'
}
]]></artwork></figure>

</section>
<section anchor="kem-private-key-for-hpke-0"><name>KEM Private Key for HPKE-0</name>

<figure title="Key Representation Example for HPKE-0" anchor="hpke-example-key-2"><artwork><![CDATA[
{
    / kty = 'EC2' /
    1: 2,
    / kid = '01' /
    2: h'3031',
    / alg = HPKE-0 (Assumed: 35) /
    3: 35,
    / key_ops = ['derive_bits'] /
    4: [8],
    / crv = 'P-256' /
    -1: 1,
    / x /
    -2: h'bac5b11cad8f99f9c72b05cf4b9e26d244dc189f7
              45228255a219a86d6a09eff',
    / y /
    -3: h'20138bf82dc1b6d562be0fa54ab7804a3a64b6d72
              ccfed6b6fb6ed28bbfc117e',
    / d /
    -4: h'57c92077664146e876760c9520d054aa93c3afb04
              e306705db6090308507b4d3',
}
]]></artwork></figure>

</section>
<section anchor="kem-public-key-for-hpke-4"><name>KEM Public Key for HPKE-4</name>

<figure title="Key Representation Example for HPKE-4" anchor="hpke-example-key-3"><artwork><![CDATA[
{
    / kty = 'OKP' /
    1: 1,
    / kid = '11' /
    2: h'3131',
    / alg = HPKE-4 (Assumed: 42) /
    3: 42,
    / crv = 'X25519' /
    -1: 4,
    / x /
    -2: h'cb7c09ab7b973c77a808ee05b9bbd373b55c06eaa
              9bd4ad2bd4e9931b1c34c22',
}
]]></artwork></figure>

</section>
</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>Both HPKE and HPKE COSE assume that the sender possesses the recipient's
public key. Therefore, some form of public key distribution mechanism is
assumed to exist, but this is 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 generation 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.</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>

<section anchor="hpke-0"><name>HPKE-0</name>

<t><list style="symbols">
  <t>Name: HPKE-0</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>
</list></t>

</section>
<section anchor="hpke-1"><name>HPKE-1</name>

<t><list style="symbols">
  <t>Name: HPKE-1</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>
</list></t>

</section>
<section anchor="hpke-2"><name>HPKE-2</name>

<t><list style="symbols">
  <t>Name: HPKE-2</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>
</list></t>

</section>
<section anchor="hpke-3"><name>HPKE-3</name>

<t><list style="symbols">
  <t>Name: HPKE-3</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>
</list></t>

</section>
<section anchor="hpke-4"><name>HPKE-4</name>

<t><list style="symbols">
  <t>Name: HPKE-4</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>
</list></t>

</section>
<section anchor="hpke-5"><name>HPKE-5</name>

<t><list style="symbols">
  <t>Name: HPKE-5</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>
</list></t>

</section>
<section anchor="hpke-6"><name>HPKE-6</name>

<t><list style="symbols">
  <t>Name: HPKE-6</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>
</list></t>

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

<section anchor="ek-header-parameter"><name>ek Header Parameter</name>

<t><list style="symbols">
  <t>Name: ek</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: [[TBD: This RFC]]</t>
</list></t>

</section>
<section anchor="pskid-header-parameter"><name>psk_id Header Parameter</name>

<t><list style="symbols">
  <t>Name: psk_id</t>
  <t>Label: TBDX (Assumed: -5)</t>
  <t>Value type: bstr</t>
  <t>Value Registry: N/A</t>
  <t>Description: A key identifier (kid) for the pre-shared key
as defined in <xref section="5.1.2" sectionFormat="of" target="RFC9180"/></t>
  <t>Reference: [[TBD: This RFC]]</t>
</list></t>

</section>
</section>
</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-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>

<referencegroup anchor="STD94" target="https://www.rfc-editor.org/info/std94">
  <reference anchor="RFC8949" target="https://www.rfc-editor.org/info/rfc8949">
    <front>
      <title>Concise Binary Object Representation (CBOR)</title>
      <author fullname="C. Bormann" initials="C." surname="Bormann"/>
      <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
      <date month="December" year="2020"/>
      <abstract>
        <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
        <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
      </abstract>
    </front>
    <seriesInfo name="STD" value="94"/>
    <seriesInfo name="RFC" value="8949"/>
    <seriesInfo name="DOI" value="10.17487/RFC8949"/>
  </reference>
</referencegroup>




    </references>

    <references title='Informative References' anchor="sec-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="3" month="March" year="2025"/>
      <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-06"/>
   
</reference>


<reference anchor="I-D.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="19" month="September" 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) using HMAC-based Extract-and-Expand Key
   Derivation Function (HKDF) with SHA-256.  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-05"/>
   
</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="NIST.SP.800-56Ar3" target="https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf">
  <front>
    <title>Recommendation for Pair-Wise Key-Establishment Schemes Using Discrete Logarithm Cryptography, NIST Special Publication 800-56A Revision 3</title>
    <author >
      <organization>National Institute of Standards and Technology</organization>
    </author>
    <date year="2018" month="April"/>
  </front>
</reference>


    </references>

</references>


<?line 815?>

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

<t>We would like to 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
Michael B. Jones,
John Mattsson,
Mike Prorock,
Michael Richardson,
Thomas Fossati,
and
Göran Selander
for their review feedback.</t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA+1de3PbyJH/H58CJVed5ISk8H4olarIkjZ2bK99lvZyqY3L
NQAGIiIQYABQsnbX+Vj3Be6LXXfPDDAASVneR7JXd6xdmQQHMz09/fh1Tw84
n8+NruhKfmJ+03Kzzs3n90lTZObbTVIW6fwlvzcvqrS5X3dFXZlHz9++vHhq
3hXd0jx79uad+Sb5G08787K4rorq2mRVNmp+9uby4qnBkqThtycmfjKxByOr
04qtYNCsYXk3L3iXz9O65fPl+obPbd9IWcev6+b+xGy7zDCKdXNirhvuu2F0
1WzazrGs2HIM1nB2Yl7ydNMU3b1xVzc31029WYuxjBt+D5eyE/NF1fGm4t38
HMczjLYDSj+wsq6AhnveGuvixPy2q9OZ2dZN1/C8hXf3K3zz3jDYplvWzYkx
N0yzqNoT8/nCvGrTZZ3zqriGi2Iyz1lV8Xb8DV+xojwxl/TVouu/+sP16uMC
KIImij3P58/eXcLnurlmVfEdQxbCslTFLW9amB6uzul6XRY8My/TglcpDPas
rqr5uyUvqvllwXHEtN5UHXLuj7xZsep+oPrNwrzsOC95T/GbpuDDtaZGOeBZ
0dXNFh1XDava1abjw6RquPsPnbq+KKoMVgautToVQH+HBHewou1Ay/nCPP0b
DLQqemLOWdFubrh2fUxBUiRFx8ph/Iz9rYD/gJXwcZHWK33cP7E1q4bxXi3M
V5sqS0qWDdN/xTYNsnH01XhQJVvm1ZKDPJqvXp0NBJTX5R9a2aCj76dUjGdv
VDUsSQcLegKN3n115th2LN9GdujJt7EdWeqt5TvDWxffXl6dx9TSKKp80l8U
u6HqOnCpkxfz80XRoH7lzfU8q1DD+uuodyVbrdt5uoL/+c18eZPl83bJHD/A
Vqit8xenX5/iB3gpTTDlC5gF2gXfiyvSlIxsiLnbhuBN5jt+XYDI3Mu7WXPN
O1CWrlu3J8fHd3d3i4JVbAGjHLO2BSOz4lXXHuMc6M/i47JbleLuDFgMEp12
dcIb07EcF65//eLyanH5dhFZ1twPThv3oXl8TWvOSjAXLcwEZBpV7hJtBWuy
lqzbFU+XVV3W1/ejGb/jsPBAXEZdmLAu5ltWNPM/F2BVgQHzCzA5wI12iTMA
9V3yFWjvNy1azfOiTRsOo72qrxnI0nJlniG36uuGrZf3M5qFebnmaQHECa6K
ceS0YPjbosUL7m5OVrflepO0iwq4vbiub4/xDV45lr1qnbbHW0xbrLNcZ/Lp
uilKYLEdGcZ8PgcLBovIUjCsV8uiNVvsM1c0Zjwv0CwuhVCshWMB02zyLaFA
vm2AY+RgjEd7mAXJKSxWDpbSZOYtcJEBm+vc2D0cLCtrwJo0rLmft8V3oKLr
khXgJT52LVHBzAYmsS5wtUQfJvSxMAwaqcBRrnnFG1gQrd+8AbuCXsjcdEVZ
fCcoNhm4khUH00id4A1s3W5K4o+xAokCg9OuzKOXF6+fzqBnbJTxpriV0rSp
UjHbl+dfYQPgAfR6CjIM5CGfuc4Ug7h32rY1rCx+dc46Zh6dXpyePzVZCW4V
RWwhFwtc8YZkUq0TdEprgFgA5yqcPbB5oY+opFywoxK+vQBH2tS3RQaDJvd0
bV6RfTKVmTT76bagdNgKxwPXjkangftw7kyfmTGsJo22EDK3KrIMvJbxxETv
3tTZhngEC/QIOfv+e2lmP30Sa9mSQgItrDPVHFpt4R8vPNcwW1hx0+jl57Ad
S9Bn2Y5vx6w3jwTF4A0+fZqZ6oP76dPTBbLgrK5ukWGgvdJKNatCmikYj9MU
EAq15sHrby6vDmbiX/PrN/T+3cW/f/Pi3cU5vr98fvrqVf9Gtbh8/uabV/C9
Id8Nd569ef364utzcTNcNSeXXp/+5UDI7MGbt1cv3nx9+uoAJaYDNhg9G2Dt
za42E24iI5s12kOQcmAUB+NYJPAB7nl29vbfqqRd/872BBPQgcIa0nv0oJ8+
GXcgOmK8uiph1vQRWApitV5z1mA/rCxN0EGEEwD0YJR2Wd9V5pI3fLHTiMHK
iCXK67Ks70ivCbYVbOA60L1qT0A8cT06mNVckxpcgaOzi5ek4NhSrjzN6+z1
pZwPeO1PnxbQxWN8KMrR0Ikm1NjB+uYdNiD1GuRYilcvnDPB432dtFonZI/4
j+lFUj8YPfP11Oi1nO+663ywgl9NrOCOO/ZZRPMBi7i7owxAsMAC4z7ljbvv
A0UktUW7SPGH8eSJ+QbQ+23B73aKVbtZryHeAAbf1eaqRpujzK60qTOCqiDH
Bjjg3whARuEMYIPJJPH+Gcp7I80HDAdym6FeSUEUC6mMFQQxSBLeB9pQCX1J
uLiJWAaGEUS91FZ6AVOGqAlQ4z1vQPN6W4k9Z7wDXNwuEJwO1E5k9zFkMkDQ
pEHmLg0SygbjwQe8uwUgw/++geZA/6Nn3PN+tSm7Yq1PssVZwpJ8ZpbGi8pM
amBTysA8oF5X/E7Y6yWHYKIx1wwBAWg7NClLIOyQ3xyqCRtAZYqGW/hANWOp
W0A/xL4NeDWIUXTdUt7BGIkSzkzcdMvKDc4FTGiLc6EbWtAjVpKvGtAHkDBy
TH8GQdcWHwchyymo3poSOZCEnDcOBLQZ5MQq4FYHmA36kffgelFrnCOTc9Dp
QAJmYLmLdKnMTb0BgNqN3CFYCjFNMUX4ighTdDADYSjM4yvEb2DhSaFmw/0Y
L2n0A08ZLH2L0kIErdaATzCCra5/B1LRbaCTe/OmQtegrF8fc6ERO/1Lry4Q
ZHYwWUEfTDPlayL+Ed1MrfgW/AYBZOhh4GtkiSR3D0hUEFXhipbfEkplY+wm
eTN1sFcQpHDTRspHpu1FNWRvZsJQHGIXHxIQ/UNaYPF53cKKoDOX6sUlS0jl
YKZaqyIneTmEDx+KbIeAQXMpW78zQc14cwfRlFhP6k5fQI2ahaGTVkxmCAE9
McBf2IvpPNEsoQjS/HiFvGg1C2RIzi/rEglFHCjhHkim7h8Xo2k+QIAzJUDq
gA6A0VgQ3pigZPQ3T5485BBeI5O+fzKYa+mDiHmMMkktrIIwpbC6H+S9lmZ4
CPgwAeVpqD6AMHDRlyBAVa3FSv2dRy1C02c8ZYhqh/t7s6uWWxgLoHemaDmE
MQ53ygE06Xp9L6q03ECoYUiDst/soHHYNQUg8LTslvXmejnF34c3KJIaDdWE
RQheIW6vNw27FuEOrKKJCH1G0HZA+D0evvzMIMYRGC4S9OFa+5Sc2UdYrLRA
/wZuCAQjFz6j7UCb052hqkFmScZXwDtgyMJ88fBiS47igk9II60bQhoyfTiR
gsxRy0uM0YUXa2Cp1nWVoczqOiH9i1Kn6lpoMtm03gbT+lxysFf1GswWiTFZ
E96hrRLoW2DsG74Cs3ECEHENswPgVPVzmywzWWgJiU/IGu1i2Ew4YzRZGIPU
aHCpH91HwrBZ/qXDMhDHL70HHQTe8Au4KKSIATVnrKorMDGUwahpvaRcvlPs
+dDLBrGvk9xjdxDGty0IvgatRKAp3HZLi0ajTlYNhjoZkEPJUmiC/RHHe6xx
NAUHT8eqOMUZySa94R3SmHZD92p8Mn4mTGmJq4soEPSgqjtpWBHPQfifKQQm
9RdVuABBQaWThLLWGHrZNgkDs8w3g7sCFUFIg2ly4RBBmHEyHaJ6hWS1bvOC
lxneUhXlwriEIKP3GIO3oESATFQJ79LnJvrprNl9WbOMgGqueyQ02gkHXRR6
yzPSRMHV3hvvxXmLoTfhYfvu0mXdymD74c4wS6B3KCxDxj9rGd6A/vwilqHd
YRkG27XfNOj27f+0bSC9vhrCmFa1F8pHWt1LgVLU/e01ZRV2pbczKjCQYcJu
W2SKm8bqKefbsWt02JhprsR7hAHgmD6yFUaBhcoGERjvwdNcfi8CfQW8JrGt
RFxD6KgjLuxYKtwIde0ATw/ALhF2koUCCNfUoOuTxBSNLCxwUd3W5S2HBUW9
eEWstcyjsZOW8qMza6DkqYrZ2lGQetTz+qkhPboKG2VgLkNtzbCtGGUXlH0S
ObpCWOLhIhoPQ9hMBfCUxd9N4WKYmr1jamwXONVmNSAtiN45joZWVcRQcLtI
8ncIICX0bjlu1uzMMwzTllJM0b3gnMYmSltUnxMAgfl3SsDV7jAbBVyPsG8w
Dd5bXqD1Qeyo5QJEHnwAjoOJF2T16QGVLO0FXgeT22kdJT3UPWacWNlSzley
Fvs1+nQMkN5hhCJJAQzMK4Gd+7QUG/J0eoJeOYiFcdrSPNF3J/WtDB53pHYZ
LcpkORW5QICYnCVU/8lgBPVtF5ngk85axXztfqv5osO8zC0GYcL84txIIl6e
f/WBcsiIB2Q2UUjBkKMyj1B/1nXbFgnYeRE3UJDeS8qQWACj2cLqjyOTp0TC
CC3tHQwEoOjGebAhcqPb+sbzqWC2NA5GcayjOgxYjZxEEnoBBn7QIxBztNOR
CEvfrxh6NIF6xpozA+W95f11uSqLwQvoHNUxiPR+w6Rhif/xj38YOxbM/L35
Le2CpqKfE/Ogb3Uwo28quPyBZOUDLMIJgoXjDjoQ3/bUfug59EFw6ER47w91
86HP1H1YsfX0PvLNmOUy3hOVYPkOxmMeKMc4wIYX58q3knQIUUYmilzDDjNU
tFqYJvYj1RKOu+7tBBqNkSChKi+ERohsHX0LyEOOCH1sQ3qcigleTAkykbow
jqRikaqQAsNtEJY1IPwcJVN1CDPV7aq25kQ+WZsVGIxrSquAMLL0ppWpaCb/
pb7oG6BixapiTVHIyP1p+zrGwAxpXQsMtIli0c1gPDO+qivcKSd7dI3up6Ot
HxUFSNqwW7SOCXr1TSXTgp8v2CBoAhKxX84Oxt58S1HNvKlXuyQCt+LnBAWh
cYZrtiqwhkCqZO/4D85q4OG53gA1XCDId/zvG4ioqIbjYKaUepwV8xaOSMth
NiWKvRhmThUv25MDZdDmw6p73R1IHRXLiakuae0hJltywsxy8hTOANjtIzVm
fscbcGe8uoZJCTwtJZlCQphTlXYDp2AUsGmsRHpIrfDi3bIu+cQWSRvINVMJ
8V2B9UdiZARCTC4FUSMRk0QcGe49kcbJtqL0qugwyYq999aZASRmFc1SbjBg
IZiyAhRgtn34OtIS6d8GFzB4ujOSXbXL/ssm9n58Pu8XgUbmA9BIBGXfPJA5
bPUdcePny+b9r0uo/X82bV82DQVLmQ7hBMlJZ0DIrzCvNup+T/pqV3jzvzDR
8/9Znn9OlkeIzSNyPQ9ryoveN1Y8xaxQc4+My4uyRJEcYQcUJrEt3LW8zIFE
rLPW8F8rbP34Jgq6tiIKunr5Vu7YPn06qGk3IM6FMSw3uk6qGiAfL3dSKLAB
P62QbYdFSwhYZBzUYWJqA9olKw9FtQbe1a5wv3sAoO2sB0D4LeEHuEagoUc+
0Gl508MXghcL49nWNTVoonvkISQW2E8HQYgirraUf5wZaEAPyAYh9RxzWFtW
QotAdgfjynj0qKQVQHnYYHUNASRlulzZL2FCMNkkMkz9EKxMVYGSkFNjVIko
2aElnvamDfuEyCRtSAnDd6o2Qwz1/RMQ6nkzuvhJY+FLrgFs/pEA6LXAIvdr
kCAZKihx6zvSd6UNYPPgeduFKWs9hiQTDTMK/2eTvGK65KgUKNorAFVggX+j
NhQPbrr7g2Hn4uD05dsDbR9Ajkz5isGWtqaoMEx4r906QtBaG9T6CBN7uLa3
vLx/2lsBnKWOjjQ0+Bt9H2YapraboqNqh893ZL6oSFu1uQ6btjjfizPnADXt
4I2cOOZ8BQRfauUqB2lzezCGhoqKvrClwH2oVVJUsrCwzg0gbCaHpTJK6kVR
vSPZI4srzVFxpSacwuziyHwOvc6hPxRPbTX5/Yd63WorugXTZW5WlEocUB0K
NxMwpQNl2lIbOnQXLqxvpVcgXQhlafWExbZgTuezrT4jrcP62GHG6syBCLON
U1PjhqzrxhNElGbsWTuDjx1umC1ZQ6pQr9YQMiJr+zZGu8HKjRbj/WVfjoP1
R1SMLzStL4MuOUjxAobfBQEwb44joDCqoE1Tw7oA30YAiO7DTQcslwTxPe2L
M+Dz+Vejz1jtqF0g+3IAN2GNLrRVNbrY7ECIrNB1sas3xLui4ASPfDTy9AYs
QX9OhDh+pZqpfQ+VMRiUS6wWhL7o8xL5VtjcHbuGtFNAytTwHDMM6Mn0MKrK
pIkWwNPQFlUVhJklEItj6AveaMIASwUig2ouKjvldEgxe/Ybwma0m9UKROE7
mRdquHAb7bJYg4h3d5zrwJjGauVgvBlUVKt/likgyfhpU43t5l62Y0bwt/Mv
fu245bfGD5pgPvL1g/hHv+UH7Edj9yuW8PLz/aAo/0AC/IMQ2x9+/Lz0vzQv
4pn12EkhPdZH2wJK4B/5l+ZF/dhf2I/owZF/h36cL+xH9OBu9eN+WT/Ovnl5
P6EfV+vH/8J+7D3zCn5CP0TPzyU/lHUfWQRhV1YQVk81HoAqiLsK3QrwdwCT
IV4ztIqNhTLjcwuCvecg+Udv544fzMznIP9zQEjw4alJEEC7QsqBNuP04nJu
O9H8j2evSVUWqjt76M6NvOFm+DDpDq5gd7O+P+h/uz9n6M937OFu33Ym/cGV
R/Tnqv7+0/F9O37EfGcPT9j7kR2eLRn851hv6/Ledi1/3Kvf9+p50U+fdfCj
uttDIu5uUjCNAqhcoCx43iGGS4YQDT1Tf3RFRnLg9DpMTLb1SuSzK1HW1zXF
DaZaE1YydNDKszWcZSwpSgQySJ/IlUvHPxoZKaOdVwGtcE8AQlXMdDaEiNZ1
gWcKhvMWxshjytBm5A1lIoSVSMX9EBApt7ggdy8BINYqA+EApbr53zes6jYr
Mx3OVmKYMeDngUGtPPOJBfNYjLAqrpcdUpJA5J0XdA6TQi1B19jNjw4xavuK
wyRLTDTptwynBUWou1qztNtKymgB3MyYHrjZdc4Xd1DVHoI2o57CojJSsSNF
/fDqtmhqccZWSBeA4U2R8RK+ppv0tW03yapoWwpS5JoQPBlvQfcgUYglWL7i
uiLBw/18cfwCYRmGEQM7xwGQaRyRbpA+iGOMIJkYdItCgro/rrsjftJXwxjC
WrSfFOzJ7MZRkau9dP5U7lMCwhen0WjJ9NhQhGQo+n0k0KqeEJomuJf3EZtL
jbku6wSL8OGOSp0yVkvSisyAinXaSbCj4ad2yApsZQ2r4u8brCjsoXbbB7XD
Xq8W6svyjMXEmYEfW5McCpgLQVYfw044a0ipVGHzbOgb8xKyvAf4AhHPLT/G
0BtEBr96EKpOrirERsMABb2TH0ajj8YPu7GACQEu/IUQVzR7aNDf6oNaHy3L
tmbiX1f1BoE+/CUPLQalr23ZzJs2Q9c6NHNkM3/aDBzq0MyxplN48/It/BVu
bWhm72kGjuVLZoor8f2J+WRHUkAcbv/9Qc/pK8o3kUfa0Gb8fkk9+IRxt4rn
J7Ux2kYlZvVBkLgK/EmjUezoBA/ZElXeR9ku42hU1DcbF4X1ydnXLKXC+XGJ
gyBTOBVDHICQZWhUGtCTJf3gkItA4R1nGIbDz3gqyTAuMIepcoF6uYWivq+t
H0fzWqre6MuitGweJd1kohMUm7ZEpOeVxUJiUgUOvFLUiexAn0enB31cF31G
dzhiJivSZKkwpfi1TO4JLGBv/nB/l549cirwDO2knO7eRxHfX8D3lcnXeLQa
jyDJHVP9IOmaFarwS5E02p8SpvELzrj0mR8pcmpJWAshu5Ivpki5Y1Unt8lX
q01FAArkwdjijKgknB6GVLH5CuCFyXMEBnj1jt2Pc8P6IbYHplG0hpbVokfh
yB7mMD9MRbxCRwzYjd20yvuQt9agS1G1tH9loICC++mo3qDHa4sJX7YPNpPo
UPWSCEvGgnSgCiG0nPziYEtuDjQftV4fKHFZHvphGjtWGAaBZ3sBj8IgDKw0
9h0rs3yPsdhNXZYnlsddKwgtP0sCK7ZcK/KtMPEy91BJ1vLQc7LMdnzO89Sz
4tRN/NANAh46NvMsy3PzxGd+xF0vyHw7tV0XwgYWho4b2gGYz+hQuCE7OBJl
XcdUQ/R7lSA4OiWRgcm4/lPzmJosD5kN5j5y3ENRmvV9/wSRY6opOO4/e0ii
a7m2bCna8ButyZzaWJ6f5Y7nhE7Ocg88Ruy7Fkw74Zadw2UrSpAncX+beGV5
xJ0g8m03t1gcBzyz4oSFkWdFscdg8rEXpIkTTW5z3BwYmvrwrWvFbhZFts9C
4JfjuknopyziaWKH4eQ238scz45Dl8vpfJpJnmmq0m/bKWa5PmNuFkehGztR
nERu6NuwYhCOeLC+SRyG3EtiiEZyJ43SnIkH8OArsf08DCIbFjcMYKpRbsUB
DP3+ae+wpvox8lZ90bf0QL25Jr/0uOJtzZSoimulNXfKoOyzJ6o0x2SGZkHw
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
KCeHOAplZWH8D6W6hpifdwAA

-->

</rfc>

