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

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="pre5378Trust200902" docName="draft-ietf-cose-hpke-01" category="std">
  <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>Arm Limited</organization>
      <address>
        <email>hannes.tschofenig@arm.com</email>
      </address>
    </author>
    <author initials="R." surname="Housley" fullname="Russ Housley">
      <organization abbrev="Vigil Security">Vigil Security, LLC</organization>
      <address>
        <email>housley@vigilsec.com</email>
      </address>
    </author>
    <author initials="B." surname="Moran" fullname="Brendan Moran">
      <organization>Arm Limited</organization>
      <address>
        <email>Brendan.Moran@arm.com</email>
      </address>
    </author>

    <date year="2022" month="March" day="07"/>

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

    <abstract>


<t>This specification defines hybrid public-key encryption (HPKE) for use with 
CBOR Object Signing and Encryption (COSE). HPKE offers a variant of
public-key encryption of arbitrary-sized plaintexts for a recipient public key.</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) encryption function. Authentication for HPKE in COSE is
provided by COSE-native security mechanisms.</t>



    </abstract>



  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>Hybrid public-key encryption (HPKE) <xref target="I-D.irtf-cfrg-hpke"/> 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="I-D.irtf-cfrg-hpke"/>.</t>

<t>The HPKE specification defines several features for use with public key encryption
and a subset of those features is applied to COSE <xref target="RFC8152"/>. Since COSE provides
constructs for authentication, those are not re-used from the HPKE specification.
This specification uses the “base” mode, as it is called in HPKE specification
language.</t>

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

<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:
- Content-encryption key (CEK), a term defined in CMS <xref target="RFC2630"/>.
- Hybrid Public Key Encryption (HPKE) is defined in <xref target="I-D.irtf-cfrg-hpke"/>.
- pkR is the public key of the recipient, as defined in <xref target="I-D.irtf-cfrg-hpke"/>.
- skR is the private key of the recipient, as defined in <xref target="I-D.irtf-cfrg-hpke"/>.</t>

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

<section anchor="overview" title="Overview">

<t>The CDDL for the COSE_Encrypt structure, as used with this specification,
is shown in <xref target="cddl-hpke"/>.</t>

<t>HPKE, when used with COSE, follows a two layer structure:</t>

<t><list style="symbols">
  <t>Layer 0 (corresponding to the COSE_Encrypt structure) contains 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 includes the 
encrypted CEK.</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>For example, the content encrypted at layer 0 is a firmware image.  The
same ciphertext firmware image is processed by all of the recipients;
however, each recipient uses their own private key to obtain the CEK.</t>

<figure title="CDDL for HPKE-based COSE_Encrypt Structure" anchor="cddl-hpke"><artwork><![CDATA[
COSE_Encrypt_Tagged = #6.96(COSE_Encrypt)
 
HPKE_Encryption_Info = COSE_Encrypt_Tagged

; Layer 0
COSE_Encrypt = [
  Headers,
  ciphertext : bstr / nil,
  recipients : + COSE_recipient
]

; Layer 1   
COSE_recipient = [
  protected   : bstr .cbor header_map, ; must contain alg parameter
  unprotected : header_map, ; must contain kid and ephemeral public key
  encCEK      : bstr, ; CEK encrypted with HPKE-derived shared secret
]

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

<t>The COSE_recipient structure shown in <xref target="cddl-hpke"/> is repeated for each
recipient, and it includes the encrypted CEK as well as the sender-generated
ephemeral public key in the unprotected header structure.</t>

</section>
<section anchor="hpke-encryption-with-sealbase" title="HPKE Encryption with SealBase">

<t>The SealBase(pkR, info, aad, pt) function is used to encrypt a plaintext pt to
a recipient’s public key (pkR).</t>

<t>IMPORTANT: For use in this specification, the plaintext “pt” passed into the
SealBase is the CEK. The CEK is a random byte sequence of length appropriate
for the encryption algorithm selected in layer 0. For example, AES-128-GCM
requires a 16 byte key and the CEK would therefore be 16 bytes long.</t>

<t>The “info” parameter can be used to influence the generation of keys and the
“aad” parameter provides additional authenticated data to the AEAD algorithm
in use. This specification does not mandate the use of the info and the aad
parameters.</t>

<t>If SealBase() is successful, it will output a ciphertext “ct” and an encapsulated
key “enc”.  The content of enc is the ephemeral public key.</t>

<t>The content of the info parameter is based on the ‘COSE_KDF_Context’ structure,
which is detailed in <xref target="cddl-cose-kdf"/>.</t>

</section>
<section anchor="hpke-decryption-with-openbase" title="HPKE Decryption with OpenBase">

<t>The recipient will use the OpenBase(enc, skR, info, aad, ct) function with the enc and
ct parameters received from the sender. The “aad” and the “info” parameters are obtained
via the context of the usage.</t>

<t>The OpenBase function will, if successful, decrypt “ct”. When decrypted, the result
will be the CEK. The CK is the symmetric key used to decrypt the ciphertext in layer 0
of the COSE_Encrypt structure.</t>

</section>
<section anchor="info-structure" title="Info Structure">

<t>This section provides a suggestion for constructing the info structure, when used with
SealBase() and OpenBase(). Note that the use of the aad and the info structures for these
two functions is optional. Profiles of this specification may require their use and may
define different info structure.</t>

<t>This specification re-uses the context information structure defined in
<xref target="RFC8152"/> 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 for info parameter" 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>

<t>The fields in <xref target="cddl-cose-kdf"/> are populated as follows:</t>

<t><list style="symbols">
  <t>PartyUInfo.identity corresponds to the kid found in the
COSE_Sign_Tagged or COSE_Sign1_Tagged structure (when a digital
signature is used). When utilizing a MAC, then the kid is found in
the COSE_Mac_Tagged or COSE_Mac0_Tagged structure.</t>
  <t>PartyVInfo.identity corresponds to the kid used for the respective
recipient from the inner-most recipients array.</t>
  <t>The value in the AlgorithmID field corresponds to the alg parameter
in the unprotected header structure of the recipient structure.</t>
  <t>keyDataLength is set to the number of bits of the desired output value.</t>
  <t>protected refers to the protected structure of the inner-most array.</t>
</list></t>

</section>
</section>
<section anchor="example" title="Example">

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

<t><list style="symbols">
  <t>AES-GCM-128 for encryption of detached ciphertext in layer 0.</t>
  <t>AES-GCM-128 for encryption of the CEK in layer 1 as well as ECDH
with NIST P-256 and HKDF-SHA256 as a Key Encapsulation Mechanism (KEM).</t>
</list></t>

<t>The algorithm selection is based on the registry of the values offered
by the alg parameters.</t>

<figure title="COSE_Encrypt Example for HPKE" anchor="hpke-example"><artwork><![CDATA[
96_0([
    / protected header with alg=AES-GCM-128 /
    h'a10101',
    / unprotected header with nonce /
    {5: h'938b528516193cc7123ff037809f4c2a'},
    / detached ciphertext /
    null,
    / recipient structure /
    [
        / protected field with alg for HPKE /
        h'a1013863',
        / unprotected header /
        {
            / ephemeral public key with x / y coodinate /
            -1: h'a401022001215820a596f2ca8d159c04942308ca90
                  cfbfca65b108ca127df8fe191a063d00d7c5172258
                  20aef47a45d6d6c572e7bd1b9f3e69b50ad3875c68
                  f6da0caaa90c675df4162c39',
             /  kid for recipient static ECDH public key /
             4: h'6b69642d32',
        },
        / encrypted CEK /
        h'9aba6fa44e9b2cef9d646614dcda670dbdb31a3b9d37c7a
          65b099a8152533062',
    ],
])
]]></artwork></figure>

<t>Note that the COSE_Sign1 wrapper outside the COSE_Encrypt structure is not shown
in the example above.</t>

</section>
<section anchor="sec-cons" title="Security Considerations">

<t>This specification is based on HPKE and the security considerations of HPKE
<xref target="I-D.irtf-cfrg-hpke"/> 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. Some form of public key distribution
mechanism is assumed to exist.</t>

<t>Since the CEK is randomly generated it must be ensured that the guidelines for
random number generations are followed, see <xref target="RFC8937"/>.</t>

<t>The COSE_Encrypt structure must be authenticated using COSE constructs like 
COSE_Sign, or COSE_Sign1.</t>

</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>This document requests IANA to add new values to the COSE Algorithms registry
defined in <xref target="RFC8152"/> (in the Standards Action With Expert Review category):</t>

<section anchor="hpkep-256hkdf-256-and-aes-128-gcm" title="HPKE/P-256+HKDF-256 and AES-128-GCM">

<t><list style="symbols">
  <t>Name: HPKE_P256_HKDF256_AES128_GCM</t>
  <t>Value: TBD1</t>
  <t>Description: HPKE/P-256+HKDF-256 and AES-128-GCM</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="hpkep-512hkdf-512-and-aes-256-gcm" title="HPKE/P-512+HKDF-512 and AES-256-GCM">

<t><list style="symbols">
  <t>Name: HPKE_P521_HKDF512_AES256_GCM</t>
  <t>Value: TBD2</t>
  <t>Description: HPKE/P-512+HKDF-512 and AES-256-GCM</t>
  <t>Capabilities: [kty]</t>
  <t>Change Controller: IESG</t>
  <t>Reference:  [[TBD: This RFC]]</t>
  <t>Recommended: Yes</t>
</list></t>

<t>TBD: More values to be added.</t>

</section>
</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference anchor='RFC2119' target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author fullname='S. Bradner' initials='S.' surname='Bradner'><organization/></author>
<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' target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author fullname='B. Leiba' initials='B.' surname='Leiba'><organization/></author>
<date month='May' year='2017'/>
<abstract><t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='8174'/>
<seriesInfo name='DOI' value='10.17487/RFC8174'/>
</reference>


<reference anchor='I-D.irtf-cfrg-hpke'>
   <front>
      <title>Hybrid Public Key Encryption</title>
      <author fullname='Richard L. Barnes'>
	 <organization>Cisco</organization>
      </author>
      <author fullname='Karthik Bhargavan'>
	 <organization>Inria</organization>
      </author>
      <author fullname='Benjamin Lipp'>
	 <organization>Inria</organization>
      </author>
      <author fullname='Christopher A. Wood'>
	 <organization>Cloudflare</organization>
      </author>
      <date day='2' month='September' year='2021'/>
      <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.

 This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.
	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-irtf-cfrg-hpke-12'/>
   <format target='https://www.ietf.org/archive/id/draft-irtf-cfrg-hpke-12.txt' type='TXT'/>
</reference>



<reference anchor='RFC8152' target='https://www.rfc-editor.org/info/rfc8152'>
<front>
<title>CBOR Object Signing and Encryption (COSE)</title>
<author fullname='J. Schaad' initials='J.' surname='Schaad'><organization/></author>
<date month='July' year='2017'/>
<abstract><t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size.  There is a need for the ability to have basic security services defined 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></abstract>
</front>
<seriesInfo name='RFC' value='8152'/>
<seriesInfo name='DOI' value='10.17487/RFC8152'/>
</reference>




    </references>

    <references title='Informative References'>





<reference anchor='RFC8937' target='https://www.rfc-editor.org/info/rfc8937'>
<front>
<title>Randomness Improvements for Security Protocols</title>
<author fullname='C. Cremers' initials='C.' surname='Cremers'><organization/></author>
<author fullname='L. Garratt' initials='L.' surname='Garratt'><organization/></author>
<author fullname='S. Smyshlyaev' initials='S.' surname='Smyshlyaev'><organization/></author>
<author fullname='N. Sullivan' initials='N.' surname='Sullivan'><organization/></author>
<author fullname='C. Wood' initials='C.' surname='Wood'><organization/></author>
<date month='October' year='2020'/>
<abstract><t>Randomness is a crucial ingredient for Transport Layer Security (TLS) and related security protocols.  Weak or predictable &quot;cryptographically secure&quot; 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' target='https://www.rfc-editor.org/info/rfc2630'>
<front>
<title>Cryptographic Message Syntax</title>
<author fullname='R. Housley' initials='R.' surname='Housley'><organization/></author>
<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>




    </references>


<section anchor="acknowledgements" title="Acknowledgements">

<t>We would like to thank Goeran Selander, John Mattsson and Ilari Liusvaara for their review feedback.</t>

</section>


  </back>

<!-- ##markdown-source:
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
HoU9keIyljLCjXvsfwEl1+gBZCoAAA==

-->

</rfc>

