<?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-00" 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="January" day="10"/>

    <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).</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, which is then used to 
encrypt plaintext.</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 authenticcation, 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 RFC 2630 <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"/>. The structures referenced below are found in the CDDL.</t>

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

<t><list style="symbols">
  <t>Layer 0 (corresponding to the COSE_Encrypt structure) contains content 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 (see COSE_recipient_outer structure) includes the encrypted CEK.</t>
  <t>Layer 2 (in the COSE_recipient_inner structure) contains parameters needed for 
HPKE to generate a shared secret used to encrypt the CEK from layer 1.</t>
</list></t>

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

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

; Layer 1   
COSE_recipient_outer = [
  protected   : bstr .size 0,
  unprotected : header_map, ; must contain alg
  encCEK      : bstr, ; CEK encrypted with HPKE-derived shared secret
  recipients  : [ + COSE_recipient_inner ]  
]

; Layer 2
COSE_recipient_inner = [
  protected   : bstr .cbor header_map, ; must contain HPKE alg
  unprotected : header_map, ; must contain kid and ephemeral public key
  empty       : null,
  empty       : null
]

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

<t>The COSE_recipient_outer structure shown in <xref target="cddl-hpke"/> includes the 
encrypted CEK (in the encCEK structure) and the COSE_recipient_inner structure, 
also shown in <xref target="cddl-hpke"/>, contains the ephemeral public key 
(in the unprotected 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). 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. If successful, SealBase() 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-open" title="HPKE Decryption with Open">

<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 the 
COSE_Encrypt structure.</t>

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

<t>This specification re-uses the context information structure defined in 
<xref target="RFC8152"/> for use with the HPKE algorithm. This payload becomes the content 
of the info parameter for the HPKE functions. 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>Since this specification may be used in a number of different deployment environments 
flexibility for populating the fields in the COSE_KDF_Context structure is provided.</t>

<t>For better interoperability, the following recommended settings 
are provided:</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 protected structure in the inner-most recipients array.</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"/>. It uses the following algorithm 
combination:</t>

<t><list style="symbols">
  <t>AES-GCM-128 for encryption of detached ciphertext.</t>
  <t>AES-GCM-128 for encryption of the CEK.</t>
  <t>Key Encapsulation Mechanism (KEM): NIST P-256</t>
  <t>Key Derivation Function (KDF): HKDF-SHA256</t>
</list></t>

<figure title="COSE_Encrypt Example for HPKE" anchor="hpke-example"><artwork><![CDATA[
96( 
    [
        // protected field with alg=AES-GCM-128
        h'A10101',   
        {    // unprotected field with iv
             5: h'26682306D4FB28CA01B43B80'
        }, 
        // null because of detached ciphertext
        null,  
        [  // COSE_recipient_outer
            h'',          // empty protected field
            {             // unprotected field with ... 
                 1: 1     //     alg=A128GCM
            },
            // Encrypted CEK
            h'FA55A50CF110908DA6443149F2C2062011A7D8333A72721A',
            / recipients / [  // COSE_recipient_inner
             [
               / protected / h'a1013818' / {
                   \ alg \ 1:TBD1 \ HPKE/P-256+HKDF-256 \
                 } / ,
               / unprotected / {
                 // HPKE encapsulated key
                 / ephemeral / -1:{
                   / kty / 1:2,
                   / crv / -1:1,
                   / x / -2:h'98f50a4ff6c05861c8...90bbf91d6280',
                   / y / -3:true
                 },
                 // kid for recipient static ECDH public key
                 / kid / 4:'meriadoc.brandybuck@buckland.example'
               },
               // empty ciphertext
               / ciphertext / h''
             ]
            ]
        ]
     ]
)
]]></artwork></figure>

</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 that the sender is in possession of the public key of the recipient. 
A system using HPKE COSE has to assume the same assumptions and 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 SUIT_Encryption_Info structure shown in this document does not provide 
authentication. Hence, the SUIT_Encryption_Info structure has to be used in 
combination with other COSE constructs, such as the COSE_Sign or COSE_Sign1.</t>

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

<t>This document requests IANA to create new entries in the COSE Algorithms
registry established with <xref target="RFC8152"/>.</t>

<figure><artwork><![CDATA[
+-------------+-------+---------+------------+--------+---------------+  
| Name        | Value | KDF     | Ephemeral- | Key    | Description   |
|             |       |         | Static     | Wrap   |               |
+-------------+-------+---------+------------+--------+---------------+
| HPKE/P-256+ | TBD1  | HKDF -  | yes        | none   | HPKE with     |
| HKDF-256    |       | SHA-256 |            |        | ECDH-ES       |
|             |       |         |            |        | (P-256) +     |
|             |       |         |            |        | HKDF-256      |
+-------------+-------+---------+------------+--------+---------------+
| HPKE/P-384+ | TBD2  | HKDF -  | yes        | none   | HPKE with     |
| HKDF-SHA384 |       | SHA-384 |            |        | ECDH-ES       |
|             |       |         |            |        | (P-384) +     |
|             |       |         |            |        | HKDF-384      |
+-------------+-------+---------+------------+--------+---------------+
| HPKE/P-521+ | TBD3  | HKDF -  | yes        | none   | HPKE with     |
| HKDF-SHA521 |       | SHA-521 |            |        | ECDH-ES       |
|             |       |         |            |        | (P-521) +     |
|             |       |         |            |        | HKDF-521      |
+-------------+-------+---------+------------+--------+---------------+
| HPKE        | TBD4  | HKDF -  | yes        | none   | HPKE with     |
| X25519 +    |       | SHA-256 |            |        | ECDH-ES       |
| HKDF-SHA256 |       |         |            |        | (X25519) +    |
|             |       |         |            |        | HKDF-256      |
+-------------+-------+---------+------------+--------+---------------+
| HPKE        | TBD4  | HKDF -  | yes        | none   | HPKE with     |
| X448 +      |       | SHA-512 |            |        | ECDH-ES       |
| HKDF-SHA512 |       |         |            |        | (X448) +      |
|             |       |         |            |        | HKDF-512      |
+-------------+-------+---------+------------+--------+---------------+
]]></artwork></figure>

</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 which
   authenticates possession of a pre-shared key, and two optional ones
   which authenticate possession of a KEM private key.  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.  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 key agreement, 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>TBD: Add your name here.</t>

</section>


  </back>

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

-->

</rfc>

