draft-ietf-cose-hpke-00.txt | draft-ietf-cose-hpke-01.txt | |||
---|---|---|---|---|
COSE H. Tschofenig | COSE H. Tschofenig | |||
Internet-Draft Arm Limited | Internet-Draft Arm Limited | |||
Intended status: Standards Track R. Housley | Intended status: Standards Track R. Housley | |||
Expires: 14 July 2022 Vigil Security | Expires: 8 September 2022 Vigil Security | |||
B. Moran | B. Moran | |||
Arm Limited | Arm Limited | |||
10 January 2022 | 7 March 2022 | |||
Use of Hybrid Public-Key Encryption (HPKE) with CBOR Object Signing and | Use of Hybrid Public-Key Encryption (HPKE) with CBOR Object Signing and | |||
Encryption (COSE) | Encryption (COSE) | |||
draft-ietf-cose-hpke-00 | draft-ietf-cose-hpke-01 | |||
Abstract | Abstract | |||
This specification defines hybrid public-key encryption (HPKE) for | This specification defines hybrid public-key encryption (HPKE) for | |||
use with CBOR Object Signing and Encryption (COSE). | use with CBOR Object Signing and Encryption (COSE). HPKE offers a | |||
variant of public-key encryption of arbitrary-sized plaintexts for a | ||||
recipient public key. | ||||
HPKE works for any combination of an asymmetric key encapsulation | ||||
mechanism (KEM), key derivation function (KDF), and authenticated | ||||
encryption with additional data (AEAD) encryption function. | ||||
Authentication for HPKE in COSE is provided by COSE-native security | ||||
mechanisms. | ||||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on 14 July 2022. | This Internet-Draft will expire on 8 September 2022. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2022 IETF Trust and the persons identified as the | Copyright (c) 2022 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents (https://trustee.ietf.org/ | |||
license-info) in effect on the date of publication of this document. | license-info) in effect on the date of publication of this document. | |||
Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
skipping to change at page 2, line 19 ¶ | skipping to change at page 2, line 28 ¶ | |||
modifications of such material outside the IETF Standards Process. | modifications of such material outside the IETF Standards Process. | |||
Without obtaining an adequate license from the person(s) controlling | Without obtaining an adequate license from the person(s) controlling | |||
the copyright in such materials, this document may not be modified | the copyright in such materials, this document may not be modified | |||
outside the IETF Standards Process, and derivative works of it may | outside the IETF Standards Process, and derivative works of it may | |||
not be created outside the IETF Standards Process, except to format | not be created outside the IETF Standards Process, except to format | |||
it for publication as an RFC or to translate it into languages other | it for publication as an RFC or to translate it into languages other | |||
than English. | than English. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Conventions and Terminology . . . . . . . . . . . . . . . . . 3 | 2. Conventions and Terminology . . . . . . . . . . . . . . . . . 3 | |||
3. HPKE for COSE . . . . . . . . . . . . . . . . . . . . . . . . 3 | 3. HPKE for COSE . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 3 | 3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
3.2. HPKE Encryption with SealBase . . . . . . . . . . . . . . 4 | 3.2. HPKE Encryption with SealBase . . . . . . . . . . . . . . 4 | |||
3.3. HPKE Decryption with Open . . . . . . . . . . . . . . . . 5 | 3.3. HPKE Decryption with OpenBase . . . . . . . . . . . . . . 5 | |||
3.4. Info Structure . . . . . . . . . . . . . . . . . . . . . 5 | 3.4. Info Structure . . . . . . . . . . . . . . . . . . . . . 5 | |||
4. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 4. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
5. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | 5. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | |||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | |||
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 6.1. HPKE/P-256+HKDF-256 and AES-128-GCM . . . . . . . . . . . 8 | |||
6.2. HPKE/P-512+HKDF-512 and AES-256-GCM . . . . . . . . . . . 8 | ||||
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 | ||||
7.1. Normative References . . . . . . . . . . . . . . . . . . 9 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 9 | |||
7.2. Informative References . . . . . . . . . . . . . . . . . 9 | 7.2. Informative References . . . . . . . . . . . . . . . . . 9 | |||
Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 9 | Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 9 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 9 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
1. Introduction | 1. Introduction | |||
Hybrid public-key encryption (HPKE) [I-D.irtf-cfrg-hpke] is a scheme | Hybrid public-key encryption (HPKE) [I-D.irtf-cfrg-hpke] is a scheme | |||
that provides public key encryption of arbitrary-sized plaintexts | that provides public key encryption of arbitrary-sized plaintexts | |||
given a recipient's public key. HPKE utilizes a non-interactive | given a recipient's public key. HPKE utilizes a non-interactive | |||
ephemeral-static Diffie-Hellman exchange to establish a shared | ephemeral-static Diffie-Hellman exchange to establish a shared | |||
secret, which is then used to encrypt plaintext. | secret. The motivation for standardizing a public key encryption | |||
scheme is explained in the introduction of [I-D.irtf-cfrg-hpke]. | ||||
The HPKE specification defines several features for use with public | The HPKE specification defines several features for use with public | |||
key encryption and a subset of those features is applied to COSE | key encryption and a subset of those features is applied to COSE | |||
[RFC8152]. Since COSE provides constructs for authenticcation, those | [RFC8152]. Since COSE provides constructs for authentication, those | |||
are not re-used from the HPKE specification. This specification uses | are not re-used from the HPKE specification. This specification uses | |||
the "base" mode (as it is called in HPKE specification language). | the "base" mode, as it is called in HPKE specification language. | |||
2. Conventions and Terminology | 2. Conventions and Terminology | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
This specification uses the following abbreviations and terms: - | This specification uses the following abbreviations and terms: - | |||
Content-encryption key (CEK), a term defined in RFC 2630 [RFC2630]. - | Content-encryption key (CEK), a term defined in CMS [RFC2630]. - | |||
Hybrid Public Key Encryption (HPKE) is defined in | Hybrid Public Key Encryption (HPKE) is defined in | |||
[I-D.irtf-cfrg-hpke]. - pkR is the public key of the recipient, as | [I-D.irtf-cfrg-hpke]. - pkR is the public key of the recipient, as | |||
defined in [I-D.irtf-cfrg-hpke]. - skR is the private key of the | defined in [I-D.irtf-cfrg-hpke]. - skR is the private key of the | |||
recipient, as defined in [I-D.irtf-cfrg-hpke]. | recipient, as defined in [I-D.irtf-cfrg-hpke]. | |||
3. HPKE for COSE | 3. HPKE for COSE | |||
3.1. Overview | 3.1. Overview | |||
The CDDL for the COSE_Encrypt structure, as used with this | The CDDL for the COSE_Encrypt structure, as used with this | |||
specification, is shown in Figure 1. The structures referenced below | specification, is shown in Figure 1. | |||
are found in the CDDL. | ||||
HPKE, when used with COSE, follows a three layer structure: | HPKE, when used with COSE, follows a two layer structure: | |||
* Layer 0 (corresponding to the COSE_Encrypt structure) contains | * Layer 0 (corresponding to the COSE_Encrypt structure) contains | |||
content encrypted with the CEK. This ciphertext may be detached. | content (plaintext) encrypted with the CEK. This ciphertext may | |||
If not detached, then it is included in the COSE_Encrypt | be detached. If not detached, then it is included in the | |||
structure. | COSE_Encrypt structure. | |||
* Layer 1 (see COSE_recipient_outer structure) includes the | ||||
encrypted CEK. | ||||
* Layer 2 (in the COSE_recipient_inner structure) contains | * Layer 1 (corresponding to a recipient structure) contains | |||
parameters needed for HPKE to generate a shared secret used to | parameters needed for HPKE to generate a shared secret used to | |||
encrypt the CEK from layer 1. | encrypt the CEK. This layer includes the encrypted CEK. | |||
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. | ||||
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. | ||||
COSE_Encrypt_Tagged = #6.96(COSE_Encrypt) | COSE_Encrypt_Tagged = #6.96(COSE_Encrypt) | |||
SUIT_Encryption_Info = COSE_Encrypt_Tagged | HPKE_Encryption_Info = COSE_Encrypt_Tagged | |||
; Layer 0 | ; Layer 0 | |||
COSE_Encrypt = [ | COSE_Encrypt = [ | |||
Headers, | Headers, | |||
ciphertext : bstr / nil, | ciphertext : bstr / nil, | |||
recipients : [+COSE_recipient_outer] | recipients : + COSE_recipient | |||
] | ] | |||
; Layer 1 | ; Layer 1 | |||
COSE_recipient_outer = [ | COSE_recipient = [ | |||
protected : bstr .size 0, | protected : bstr .cbor header_map, ; must contain alg parameter | |||
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 | unprotected : header_map, ; must contain kid and ephemeral public key | |||
empty : null, | encCEK : bstr, ; CEK encrypted with HPKE-derived shared secret | |||
empty : null | ||||
] | ] | |||
header_map = { | header_map = { | |||
Generic_Headers, | Generic_Headers, | |||
* label =values, | * label =values, | |||
} | } | |||
Figure 1: CDDL for HPKE-based COSE_Encrypt Structure | Figure 1: CDDL for HPKE-based COSE_Encrypt Structure | |||
The COSE_recipient_outer structure shown in Figure 1 includes the | The COSE_recipient structure shown in Figure 1 is repeated for each | |||
encrypted CEK (in the encCEK structure) and the COSE_recipient_inner | recipient, and it includes the encrypted CEK as well as the sender- | |||
structure, also shown in Figure 1, contains the ephemeral public key | generated ephemeral public key in the unprotected header structure. | |||
(in the unprotected structure). | ||||
3.2. HPKE Encryption with SealBase | 3.2. HPKE Encryption with SealBase | |||
The SealBase(pkR, info, aad, pt) function is used to encrypt a | 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 | plaintext pt to a recipient's public key (pkR). | |||
specification, the plaintext "pt" passed into the SealBase is the | ||||
CEK. The CEK is a random byte sequence of length appropriate for the | IMPORTANT: For use in this specification, the plaintext "pt" passed | |||
encryption algorithm selected in layer 0. For example, AES-128-GCM | into the SealBase is the CEK. The CEK is a random byte sequence of | |||
requires a 16 byte key and the CEK would therefore be 16 bytes long. | 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. | ||||
The "info" parameter can be used to influence the generation of keys | The "info" parameter can be used to influence the generation of keys | |||
and the "aad" parameter provides additional authenticated data to the | and the "aad" parameter provides additional authenticated data to the | |||
AEAD algorithm in use. If successful, SealBase() will output a | AEAD algorithm in use. This specification does not mandate the use | |||
ciphertext "ct" and an encapsulated key "enc". The content of enc is | of the info and the aad parameters. | |||
the ephemeral public key. | ||||
If SealBase() is successful, it will output a ciphertext "ct" and an | ||||
encapsulated key "enc". The content of enc is the ephemeral public | ||||
key. | ||||
The content of the info parameter is based on the 'COSE_KDF_Context' | The content of the info parameter is based on the 'COSE_KDF_Context' | |||
structure, which is detailed in Figure 2. | structure, which is detailed in Figure 2. | |||
3.3. HPKE Decryption with Open | 3.3. HPKE Decryption with OpenBase | |||
The recipient will use the OpenBase(enc, skR, info, aad, ct) function | The recipient will use the OpenBase(enc, skR, info, aad, ct) function | |||
with the enc and ct parameters received from the sender. The "aad" | with the enc and ct parameters received from the sender. The "aad" | |||
and the "info" parameters are obtained via the context of the usage. | and the "info" parameters are obtained via the context of the usage. | |||
The OpenBase function will, if successful, decrypt "ct". When | The OpenBase function will, if successful, decrypt "ct". When | |||
decrypted, the result will be the CEK. The CK is the symmetric key | decrypted, the result will be the CEK. The CK is the symmetric key | |||
used to decrypt the ciphertext in the COSE_Encrypt structure. | used to decrypt the ciphertext in layer 0 of the COSE_Encrypt | |||
structure. | ||||
3.4. Info Structure | 3.4. Info Structure | |||
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. | ||||
This specification re-uses the context information structure defined | This specification re-uses the context information structure defined | |||
in [RFC8152] for use with the HPKE algorithm. This payload becomes | in [RFC8152] as a foundation for the info structure. This payload | |||
the content of the info parameter for the HPKE functions. For better | becomes the content of the info parameter for the HPKE functions, | |||
readability of this specification the COSE_KDF_Context structure is | when utilized. For better readability of this specification the | |||
repeated in Figure 2. | COSE_KDF_Context structure is repeated in Figure 2. | |||
PartyInfo = ( | PartyInfo = ( | |||
identity : bstr / nil, | identity : bstr / nil, | |||
nonce : bstr / int / nil, | nonce : bstr / int / nil, | |||
other : bstr / nil | other : bstr / nil | |||
) | ) | |||
COSE_KDF_Context = [ | COSE_KDF_Context = [ | |||
AlgorithmID : int / tstr, | AlgorithmID : int / tstr, | |||
PartyUInfo : [ PartyInfo ], | PartyUInfo : [ PartyInfo ], | |||
skipping to change at page 6, line 5 ¶ | skipping to change at page 6, line 25 ¶ | |||
SuppPubInfo : [ | SuppPubInfo : [ | |||
keyDataLength : uint, | keyDataLength : uint, | |||
protected : empty_or_serialized_map, | protected : empty_or_serialized_map, | |||
? other : bstr | ? other : bstr | |||
], | ], | |||
? SuppPrivInfo : bstr | ? SuppPrivInfo : bstr | |||
] | ] | |||
Figure 2: COSE_KDF_Context Data Structure for info parameter | Figure 2: COSE_KDF_Context Data Structure for info parameter | |||
Since this specification may be used in a number of different | The fields in Figure 2 are populated as follows: | |||
deployment environments flexibility for populating the fields in the | ||||
COSE_KDF_Context structure is provided. | ||||
For better interoperability, the following recommended settings are | ||||
provided: | ||||
* PartyUInfo.identity corresponds to the kid found in the | * PartyUInfo.identity corresponds to the kid found in the | |||
COSE_Sign_Tagged or COSE_Sign1_Tagged structure (when a digital | COSE_Sign_Tagged or COSE_Sign1_Tagged structure (when a digital | |||
signature is used). When utilizing a MAC, then the kid is found | signature is used). When utilizing a MAC, then the kid is found | |||
in the COSE_Mac_Tagged or COSE_Mac0_Tagged structure. | in the COSE_Mac_Tagged or COSE_Mac0_Tagged structure. | |||
* PartyVInfo.identity corresponds to the kid used for the respective | * PartyVInfo.identity corresponds to the kid used for the respective | |||
recipient from the inner-most recipients array. | recipient from the inner-most recipients array. | |||
* The value in the AlgorithmID field corresponds to the alg | * The value in the AlgorithmID field corresponds to the alg | |||
parameter in the protected structure in the inner-most recipients | parameter in the unprotected header structure of the recipient | |||
array. | structure. | |||
* keyDataLength is set to the number of bits of the desired output | * keyDataLength is set to the number of bits of the desired output | |||
value. | value. | |||
* protected refers to the protected structure of the inner-most | * protected refers to the protected structure of the inner-most | |||
array. | array. | |||
4. Example | 4. Example | |||
An example of the COSE_Encrypt structure using the HPKE scheme is | An example of the COSE_Encrypt structure using the HPKE scheme is | |||
shown in Figure 3. It uses the following algorithm combination: | shown in Figure 3. Line breaks and comments have been inserted for | |||
better readability. It uses the following algorithm combination: | ||||
* AES-GCM-128 for encryption of detached ciphertext. | * AES-GCM-128 for encryption of detached ciphertext in layer 0. | |||
* AES-GCM-128 for encryption of the CEK. | * 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). | ||||
* Key Encapsulation Mechanism (KEM): NIST P-256 | The algorithm selection is based on the registry of the values | |||
offered by the alg parameters. | ||||
* Key Derivation Function (KDF): HKDF-SHA256 | 96_0([ | |||
96( | / 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=AES-GCM-128 | / protected field with alg for HPKE / | |||
h'A10101', | h'a1013863', | |||
{ // unprotected field with iv | / unprotected header / | |||
5: h'26682306D4FB28CA01B43B80' | { | |||
/ ephemeral public key with x / y coodinate / | ||||
-1: h'a401022001215820a596f2ca8d159c04942308ca90 | ||||
cfbfca65b108ca127df8fe191a063d00d7c5172258 | ||||
20aef47a45d6d6c572e7bd1b9f3e69b50ad3875c68 | ||||
f6da0caaa90c675df4162c39', | ||||
/ kid for recipient static ECDH public key / | ||||
4: h'6b69642d32', | ||||
}, | }, | |||
// null because of detached ciphertext | / encrypted CEK / | |||
null, | h'9aba6fa44e9b2cef9d646614dcda670dbdb31a3b9d37c7a | |||
[ // COSE_recipient_outer | 65b099a8152533062', | |||
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'' | ||||
] | ||||
] | ||||
] | ||||
] | ||||
) | ||||
Figure 3: COSE_Encrypt Example for HPKE | Figure 3: COSE_Encrypt Example for HPKE | |||
Note that the COSE_Sign1 wrapper outside the COSE_Encrypt structure | ||||
is not shown in the example above. | ||||
5. Security Considerations | 5. Security Considerations | |||
This specification is based on HPKE and the security considerations | This specification is based on HPKE and the security considerations | |||
of HPKE [I-D.irtf-cfrg-hpke] are therefore applicable also to this | of HPKE [I-D.irtf-cfrg-hpke] are therefore applicable also to this | |||
specification. | specification. | |||
HPKE assumes that the sender is in possession of the public key of | HPKE assumes the sender is in possession of the public key of the | |||
the recipient. A system using HPKE COSE has to assume the same | recipient and HPKE COSE makes the same assumptions. Some form of | |||
assumptions and public key distribution mechanism is assumed to | public key distribution mechanism is assumed to exist. | |||
exist. | ||||
Since the CEK is randomly generated it must be ensured that the | Since the CEK is randomly generated it must be ensured that the | |||
guidelines for random number generations are followed, see [RFC8937]. | guidelines for random number generations are followed, see [RFC8937]. | |||
The SUIT_Encryption_Info structure shown in this document does not | The COSE_Encrypt structure must be authenticated using COSE | |||
provide authentication. Hence, the SUIT_Encryption_Info structure | constructs like COSE_Sign, or COSE_Sign1. | |||
has to be used in combination with other COSE constructs, such as the | ||||
COSE_Sign or COSE_Sign1. | ||||
6. IANA Considerations | 6. IANA Considerations | |||
This document requests IANA to create new entries in the COSE | This document requests IANA to add new values to the COSE Algorithms | |||
Algorithms registry established with [RFC8152]. | registry defined in [RFC8152] (in the Standards Action With Expert | |||
Review category): | ||||
+-------------+-------+---------+------------+--------+---------------+ | 6.1. HPKE/P-256+HKDF-256 and AES-128-GCM | |||
| 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 | | ||||
+-------------+-------+---------+------------+--------+---------------+ | ||||
7. References | * Name: HPKE_P256_HKDF256_AES128_GCM | |||
* Value: TBD1 | ||||
* Description: HPKE/P-256+HKDF-256 and AES-128-GCM | ||||
* Capabilities: [kty] | ||||
* Change Controller: IESG | ||||
* Reference: [[TBD: This RFC]] | ||||
* Recommended: Yes | ||||
6.2. HPKE/P-512+HKDF-512 and AES-256-GCM | ||||
* Name: HPKE_P521_HKDF512_AES256_GCM | ||||
* Value: TBD2 | ||||
* Description: HPKE/P-512+HKDF-512 and AES-256-GCM | ||||
* Capabilities: [kty] | ||||
* Change Controller: IESG | ||||
* Reference: [[TBD: This RFC]] | ||||
* Recommended: Yes | ||||
TBD: More values to be added. | ||||
7. References | ||||
7.1. Normative References | 7.1. Normative References | |||
[I-D.irtf-cfrg-hpke] | [I-D.irtf-cfrg-hpke] | |||
Barnes, R. L., Bhargavan, K., Lipp, B., and C. A. Wood, | Barnes, R. L., Bhargavan, K., Lipp, B., and C. A. Wood, | |||
"Hybrid Public Key Encryption", Work in Progress, | "Hybrid Public Key Encryption", Work in Progress, | |||
Internet-Draft, draft-irtf-cfrg-hpke-12, 2 September 2021, | Internet-Draft, draft-irtf-cfrg-hpke-12, 2 September 2021, | |||
<https://www.ietf.org/archive/id/draft-irtf-cfrg-hpke- | <https://www.ietf.org/archive/id/draft-irtf-cfrg-hpke- | |||
12.txt>. | 12.txt>. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
skipping to change at page 9, line 42 ¶ | skipping to change at page 9, line 39 ¶ | |||
DOI 10.17487/RFC2630, June 1999, | DOI 10.17487/RFC2630, June 1999, | |||
<https://www.rfc-editor.org/info/rfc2630>. | <https://www.rfc-editor.org/info/rfc2630>. | |||
[RFC8937] Cremers, C., Garratt, L., Smyshlyaev, S., Sullivan, N., | [RFC8937] Cremers, C., Garratt, L., Smyshlyaev, S., Sullivan, N., | |||
and C. Wood, "Randomness Improvements for Security | and C. Wood, "Randomness Improvements for Security | |||
Protocols", RFC 8937, DOI 10.17487/RFC8937, October 2020, | Protocols", RFC 8937, DOI 10.17487/RFC8937, October 2020, | |||
<https://www.rfc-editor.org/info/rfc8937>. | <https://www.rfc-editor.org/info/rfc8937>. | |||
Appendix A. Acknowledgements | Appendix A. Acknowledgements | |||
TBD: Add your name here. | We would like to thank Goeran Selander, John Mattsson and Ilari | |||
Liusvaara for their review feedback. | ||||
Authors' Addresses | Authors' Addresses | |||
Hannes Tschofenig | Hannes Tschofenig | |||
Arm Limited | Arm Limited | |||
Email: hannes.tschofenig@arm.com | Email: hannes.tschofenig@arm.com | |||
Russ Housley | Russ Housley | |||
Vigil Security, LLC | Vigil Security, LLC | |||
Email: housley@vigilsec.com | Email: housley@vigilsec.com | |||
Brendan Moran | Brendan Moran | |||
Arm Limited | Arm Limited | |||
Email: Brendan.Moran@arm.com | Email: Brendan.Moran@arm.com | |||
End of changes. 50 change blocks. | ||||
150 lines changed or deleted | 156 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |