draft-ietf-ace-cwt-proof-of-possession-02.txt | draft-ietf-ace-cwt-proof-of-possession-03.txt | |||
---|---|---|---|---|
ACE Working Group M. Jones | ACE M. Jones | |||
Internet-Draft Microsoft | Internet-Draft Microsoft | |||
Intended status: Standards Track L. Seitz | Intended status: Standards Track L. Seitz | |||
Expires: September 4, 2018 RISE SICS | Expires: December 31, 2018 RISE SICS | |||
G. Selander | G. Selander | |||
Ericsson AB | Ericsson AB | |||
E. Wahlstroem | ||||
S. Erdtman | S. Erdtman | |||
Spotify AB | Spotify | |||
H. Tschofenig | H. Tschofenig | |||
ARM Ltd. | ARM Ltd. | |||
March 3, 2018 | June 29, 2018 | |||
Proof-of-Possession Key Semantics for CBOR Web Tokens (CWTs) | Proof-of-Possession Key Semantics for CBOR Web Tokens (CWTs) | |||
draft-ietf-ace-cwt-proof-of-possession-02 | draft-ietf-ace-cwt-proof-of-possession-03 | |||
Abstract | Abstract | |||
This specification describes how to declare in a CBOR Web Token (CWT) | This specification describes how to declare in a CBOR Web Token (CWT) | |||
that the presenter of the CWT possesses a particular proof-of- | that the presenter of the CWT possesses a particular proof-of- | |||
possession key. Being able to prove possession of a key is also | possession key. Being able to prove possession of a key is also | |||
sometimes described as being the holder-of-key. This specification | sometimes described as being the holder-of-key. This specification | |||
provides equivalent functionality to "Proof-of-Possession Key | provides equivalent functionality to "Proof-of-Possession Key | |||
Semantics for JSON Web Tokens (JWTs)" (RFC 7800), but using CBOR and | Semantics for JSON Web Tokens (JWTs)" (RFC 7800), but using CBOR and | |||
CWTs rather than JSON and JWTs. | CWTs rather than JSON and JWTs. | |||
skipping to change at page 1, line 45 ¶ | skipping to change at page 1, line 43 ¶ | |||
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 September 4, 2018. | This Internet-Draft will expire on December 31, 2018. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2018 IETF Trust and the persons identified as the | Copyright (c) 2018 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 | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
1.1. Notational Conventions . . . . . . . . . . . . . . . . . 3 | ||||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
3. Representations for Proof-of-Possession Keys . . . . . . . . 3 | 3. Representations for Proof-of-Possession Keys . . . . . . . . 3 | |||
3.1. Confirmation Claim . . . . . . . . . . . . . . . . . . . 4 | 3.1. Confirmation Claim . . . . . . . . . . . . . . . . . . . 4 | |||
3.2. Representation of an Asymmetric Proof-of-Possession Key . 5 | 3.2. Representation of an Asymmetric Proof-of-Possession Key . 5 | |||
3.3. Representation of an Encrypted Symmetric Proof-of- | 3.3. Representation of an Encrypted Symmetric Proof-of- | |||
Possession Key . . . . . . . . . . . . . . . . . . . . . 6 | Possession Key . . . . . . . . . . . . . . . . . . . . . 5 | |||
3.4. Representation of a Key ID for a Proof-of-Possession Key 7 | 3.4. Representation of a Key ID for a Proof-of-Possession Key 6 | |||
3.5. Specifics Intentionally Not Specified . . . . . . . . . . 7 | 3.5. Specifics Intentionally Not Specified . . . . . . . . . . 7 | |||
4. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | 4. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | |||
5. Privacy Considerations . . . . . . . . . . . . . . . . . . . 9 | 5. Privacy Considerations . . . . . . . . . . . . . . . . . . . 8 | |||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | 6. Operational Considerations . . . . . . . . . . . . . . . . . 8 | |||
6.1. CBOR Web Token Claims Registration . . . . . . . . . . . 9 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | |||
6.1.1. Registry Contents . . . . . . . . . . . . . . . . . . 10 | 7.1. CBOR Web Token Claims Registration . . . . . . . . . . . 10 | |||
6.2. CWT Confirmation Methods Registry . . . . . . . . . . . . 10 | 7.1.1. Registry Contents . . . . . . . . . . . . . . . . . . 10 | |||
6.2.1. Registration Template . . . . . . . . . . . . . . . . 10 | 7.2. CWT Confirmation Methods Registry . . . . . . . . . . . . 10 | |||
6.2.2. Initial Registry Contents . . . . . . . . . . . . . . 11 | 7.2.1. Registration Template . . . . . . . . . . . . . . . . 10 | |||
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 7.2.2. Initial Registry Contents . . . . . . . . . . . . . . 11 | |||
7.1. Normative References . . . . . . . . . . . . . . . . . . 11 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
7.2. Informative References . . . . . . . . . . . . . . . . . 12 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 11 | |||
8.2. Informative References . . . . . . . . . . . . . . . . . 12 | ||||
Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 13 | Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
Document History . . . . . . . . . . . . . . . . . . . . . . . . 13 | Document History . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 14 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
1. Introduction | 1. Introduction | |||
This specification describes how a CBOR Web Token [CWT] can declare | This specification describes how a CBOR Web Token (CWT) [RFC8392] can | |||
that the presenter of the CWT possesses a particular proof-of- | declare that the presenter of the CWT possesses a particular proof- | |||
possession (PoP) key. Proof of possession of a key is also sometimes | of-possession (PoP) key. Proof of possession of a key is also | |||
described as being the holder-of-key. This specification provides | sometimes described as being the holder-of-key. This specification | |||
equivalent functionality to "Proof-of-Possession Key Semantics for | provides equivalent functionality to "Proof-of-Possession Key | |||
JSON Web Tokens (JWTs)" [RFC7800], but using CBOR [RFC7049] and CWTs | Semantics for JSON Web Tokens (JWTs)" [RFC7800], but using CBOR | |||
[CWT] rather than JSON [RFC7159] and JWTs [JWT]. | [RFC7049] and CWTs [RFC8392] rather than JSON [RFC7159] and JWTs | |||
[JWT]. | ||||
1.1. Notational Conventions | 2. 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 BCP | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
Unless otherwise noted, all the protocol parameter names and values | This specification uses terms defined in the CBOR Web Token (CWT) | |||
are case sensitive. | [RFC8392], CBOR Object Signing and Encryption (COSE) [RFC8152], and | |||
Concise Binary Object Representation (CBOR) [RFC7049] specifications. | ||||
2. Terminology | ||||
This specification uses terms defined in the CBOR Web Token [CWT], | ||||
CBOR Object Signing and Encryption (COSE) [RFC8152], and Concise | ||||
Binary Object Representation (CBOR) [RFC7049] specifications. | ||||
These terms are defined by this specification: | These terms are defined by this specification: | |||
Issuer | Issuer | |||
Party that creates the CWT and binds its claims to the proof-of- | Party that creates the CWT and binds the claims about the subject | |||
possession key. | to the proof-of-possession key. | |||
Presenter | Presenter | |||
Party that proves possession of a private key (for asymmetric key | Party that proves possession of a private key (for asymmetric key | |||
cryptography) or secret key (for symmetric key cryptography) to a | cryptography) or secret key (for symmetric key cryptography) to a | |||
recipient. | recipient. | |||
In context of OAuth this party is also called OAuth Client. | ||||
Recipient | Recipient | |||
Party that receives the CWT containing the proof-of-possession key | Party that receives the CWT containing the proof-of-possession key | |||
information from the presenter. | information from the presenter. | |||
In context of OAuth this party is also called OAuth Resource | ||||
Server. | ||||
3. Representations for Proof-of-Possession Keys | 3. Representations for Proof-of-Possession Keys | |||
By including a "cnf" (confirmation) claim in a CWT, the issuer of the | By including a "cnf" (confirmation) claim in a CWT, the issuer of the | |||
CWT declares that the presenter possesses a particular key and that | CWT declares that the presenter possesses a particular key and that | |||
the recipient can cryptographically confirm that the presenter has | the recipient can cryptographically confirm that the presenter has | |||
possession of that key. The value of the "cnf" claim is a CBOR map | possession of that key. The value of the "cnf" claim is a CBOR map | |||
and the members of that map identify the proof-of-possession key. | and the members of that map identify the proof-of-possession key. | |||
The presenter can be identified in one of several ways by the CWT | The presenter can be identified in one of several ways by the CWT, | |||
depending upon the application requirements. If the CWT contains a | depending upon the application requirements. For instance, some | |||
"sub" (subject) claim [CWT], the presenter is normally the subject | applications may use the CWT "sub" (subject) claim [RFC8392], to | |||
identified by the CWT. (In some applications, the subject identifier | identify the presenter. Other applications may use the "iss" claim | |||
will be relative to the issuer identified by the "iss" (issuer) claim | to identify the presenter. In some applications, the subject | |||
[CWT].) If the CWT contains no "sub" claim, the presenter is | identifier might be relative to the issuer identified by the "iss" | |||
normally the issuer identified by the CWT using the "iss" claim. The | (issuer) claim [RFC8392]. The actual mechanism used is dependent | |||
case in which the presenter is the subject of the CWT is analogous to | upon the application. The case in which the presenter is the subject | |||
Security Assertion Markup Language (SAML) 2.0 | of the CWT is analogous to Security Assertion Markup Language (SAML) | |||
[OASIS.saml-core-2.0-os] SubjectConfirmation usage. At least one of | 2.0 [OASIS.saml-core-2.0-os] SubjectConfirmation usage. | |||
the "sub" and "iss" claims is typically present in the CWT and some | ||||
use cases may require that both be present. | ||||
3.1. Confirmation Claim | 3.1. Confirmation Claim | |||
The "cnf" claim is used in the CWT to contain members used to | The "cnf" claim in the CWT is used to carry confirmation methods. | |||
identify the proof-of-possession key. Other members of the "cnf" map | Some of them use proof-of-possession keys while others do not. This | |||
may be defined because a proof-of-possession key may not be the only | design is analogous to the SAML 2.0 [OASIS.saml-core-2.0-os] | |||
means of confirming the authenticity of the token. This is analogous | SubjectConfirmation element in which a number of different subject | |||
to the SAML 2.0 [OASIS.saml-core-2.0-os] SubjectConfirmation element | confirmation methods can be included (including proof-of-possession | |||
in which a number of different subject confirmation methods can be | key information). | |||
included (including proof-of-possession key information). | ||||
The set of confirmation members that a CWT must contain to be | The set of confirmation members that a CWT must contain to be | |||
considered valid is context dependent and is outside the scope of | considered valid is context dependent and is outside the scope of | |||
this specification. Specific applications of CWTs will require | this specification. Specific applications of CWTs will require | |||
implementations to understand and process some confirmation members | implementations to understand and process some confirmation members | |||
in particular ways. However, in the absence of such requirements, | in particular ways. However, in the absence of such requirements, | |||
all confirmation members that are not understood by implementations | all confirmation members that are not understood by implementations | |||
MUST be ignored. | MUST be ignored. | |||
This specification establishes the IANA "CWT Confirmation Methods" | This specification establishes the IANA "CWT Confirmation Methods" | |||
registry for these members in Section 6.2 and registers the members | registry for these members in Section 7.2 and registers the members | |||
defined by this specification. Other specifications can register | defined by this specification. Other specifications can register | |||
other members used for confirmation, including other members for | other members used for confirmation, including other members for | |||
conveying proof-of-possession keys using different key | conveying proof-of-possession keys using different key | |||
representations. | representations. | |||
The "cnf" claim value MUST represent only a single proof-of- | The "cnf" claim value MUST represent only a single proof-of- | |||
possession key. At most one of the "COSE_Key" and | possession key. At most one of the "COSE_Key" and | |||
"Encrypted_COSE_Key" confirmation values defined below may be | "Encrypted_COSE_Key" confirmation values defined in Figure 1 may be | |||
present. Note that if an application needs to represent multiple | present. Note that if an application needs to represent multiple | |||
proof-of-possession keys in the same CWT, one way for it to achieve | proof-of-possession keys in the same CWT, one way for it to achieve | |||
this is to use other claim names, in addition to "cnf", to hold the | this is to use other claim names, in addition to "cnf", to hold the | |||
additional proof-of-possession key information. These claims could | additional proof-of-possession key information. These claims could | |||
use the same syntax and semantics as the "cnf" claim. Those claims | use the same syntax and semantics as the "cnf" claim. Those claims | |||
would be defined by applications or other specifications and could be | would be defined by applications or other specifications and could be | |||
registered in the IANA "CBOR Web Token Claims" registry | registered in the IANA "CBOR Web Token Claims" registry | |||
[IANA.CWT.Claims]. | [IANA.CWT.Claims]. | |||
/--------------------+-----+-------------------------------\ | /--------------------+-----+-------------------------------\ | |||
skipping to change at page 5, line 20 ¶ | skipping to change at page 5, line 10 ¶ | |||
| kid | 3 | binary string | | | kid | 3 | binary string | | |||
\--------------------+-----+-------------------------------/ | \--------------------+-----+-------------------------------/ | |||
Figure 1: Summary of the cnf names, keys, and value types | Figure 1: Summary of the cnf names, keys, and value types | |||
3.2. Representation of an Asymmetric Proof-of-Possession Key | 3.2. Representation of an Asymmetric Proof-of-Possession Key | |||
When the key held by the presenter is an asymmetric private key, the | When the key held by the presenter is an asymmetric private key, the | |||
"COSE_Key" member is a COSE_Key [RFC8152] representing the | "COSE_Key" member is a COSE_Key [RFC8152] representing the | |||
corresponding asymmetric public key. The following example (using | corresponding asymmetric public key. The following example (using | |||
CBOR diagonstic notation) demonstrates such a declaration in the CWT | CBOR diagnostic notation) demonstrates such a declaration in the CWT | |||
Claims Set of a CWT: | Claims Set of a CWT: | |||
{ | { | |||
/iss/ 1 : "coaps://server.example.com", | /iss/ 1 : "coaps://server.example.com", | |||
/aud/ 3 : "coaps://client.example.org", | /aud/ 3 : "coaps://client.example.org", | |||
/exp/ 4 : 1361398824, | /exp/ 4 : 1361398824, | |||
/cnf/ 8 :{ | /cnf/ 8 :{ | |||
/COSE_Key/ 1 :{ | /COSE_Key/ 1 :{ | |||
/kty/ 1 : /EC/ 2, | /kty/ 1 : /EC/ 2, | |||
/crv/ -1 : /P-256/ 1, | /crv/ -1 : /P-256/ 1, | |||
skipping to change at page 5, line 46 ¶ | skipping to change at page 5, line 36 ¶ | |||
} | } | |||
} | } | |||
The COSE_Key MUST contain the required key members for a COSE_Key of | The COSE_Key MUST contain the required key members for a COSE_Key of | |||
that key type and MAY contain other COSE_Key members, including the | that key type and MAY contain other COSE_Key members, including the | |||
"kid" (Key ID) member. | "kid" (Key ID) member. | |||
The "COSE_Key" member MAY also be used for a COSE_Key representing a | The "COSE_Key" member MAY also be used for a COSE_Key representing a | |||
symmetric key, provided that the CWT is encrypted so that the key is | symmetric key, provided that the CWT is encrypted so that the key is | |||
not revealed to unintended parties. The means of encrypting a CWT is | not revealed to unintended parties. The means of encrypting a CWT is | |||
explained in [CWT]. If the CWT is not encrypted, the symmetric key | explained in [RFC8392]. If the CWT is not encrypted, the symmetric | |||
MUST be encrypted as described below. | key MUST be encrypted as described in Section 3.3. | |||
3.3. Representation of an Encrypted Symmetric Proof-of-Possession Key | 3.3. Representation of an Encrypted Symmetric Proof-of-Possession Key | |||
When the key held by the presenter is a symmetric key, the | When the key held by the presenter is a symmetric key, the | |||
"Encrypted_COSE_Key" member is an encrypted COSE_Key [RFC8152] | "Encrypted_COSE_Key" member is an encrypted COSE_Key [RFC8152] | |||
representing the symmetric key encrypted to a key known to the | representing the symmetric key encrypted to a key known to the | |||
recipient using COSE_Encrypt or COSE_Encrypt0. | recipient using COSE_Encrypt or COSE_Encrypt0. | |||
The following example (using CBOR diagnostic notation, with | The following example (using CBOR diagnostic notation, with | |||
linebreaks for readability) illustrates a symmetric key that could | linebreaks for readability) illustrates a symmetric key that could | |||
skipping to change at page 8, line 7 ¶ | skipping to change at page 7, line 40 ¶ | |||
protocols will communicate this information in different ways. | protocols will communicate this information in different ways. | |||
Likewise, the means of communicating the signed nonce is also not | Likewise, the means of communicating the signed nonce is also not | |||
specified, as this is also protocol specific. | specified, as this is also protocol specific. | |||
Note that another means of proving possession of the key when it is a | Note that another means of proving possession of the key when it is a | |||
symmetric key is to encrypt the key to the recipient. The means of | symmetric key is to encrypt the key to the recipient. The means of | |||
obtaining a key for the recipient is likewise protocol specific. | obtaining a key for the recipient is likewise protocol specific. | |||
4. Security Considerations | 4. Security Considerations | |||
All of the security considerations that are discussed in [CWT] also | All of the security considerations that are discussed in [RFC8392] | |||
apply here. In addition, proof of possession introduces its own | also apply here. In addition, proof of possession introduces its own | |||
unique security issues. Possessing a key is only valuable if it is | unique security issues. Possessing a key is only valuable if it is | |||
kept secret. Appropriate means must be used to ensure that | kept secret. Appropriate means must be used to ensure that | |||
unintended parties do not learn private key or symmetric key values. | unintended parties do not learn private key or symmetric key values. | |||
Applications utilizing proof of possession should also utilize | Applications utilizing proof of possession SHOULD also utilize | |||
audience restriction, as described in Section 4.1.3 of [JWT], as it | audience restriction, as described in Section 4.1.3 of [JWT], as it | |||
provides different protections. Proof of possession can be used by | provides additional protections. Proof of possession can be used by | |||
recipients to reject messages from unauthorized senders. Audience | recipients to reject messages from unauthorized senders. Audience | |||
restriction can be used by recipients to reject messages intended for | restriction can be used by recipients to reject messages intended for | |||
different recipients. | different recipients. | |||
A recipient might not understand the "cnf" claim. Applications that | A recipient might not understand the "cnf" claim. Applications that | |||
require the proof-of-possession keys communicated with it to be | require the proof-of-possession keys communicated with it to be | |||
understood and processed must ensure that the parts of this | understood and processed MUST ensure that the parts of this | |||
specification that they use are implemented. | specification that they use are implemented. | |||
Proof of possession via encrypted symmetric secrets is subject to | CBOR Web Tokens with proof-of-possession keys are used in context of | |||
replay attacks. This attack can, for example, be avoided when a | an architecture, such as the ACE OAuth Framework | |||
signed nonce or challenge is used since the recipient can use a | [I-D.ietf-ace-oauth-authz], in which protocols are used by a | |||
distinct nonce or challenge for each interaction. Replay can also be | presenter to request these tokens and to subsequently use them with | |||
avoided if a sub-key is derived from a shared secret that is specific | recipients. To avoid replay attacks when the proof-of-possession | |||
to the instance of the PoP demonstration. | tokens are sent to presenters, a security protocol, which uses | |||
mechansims such as nonces or timestamps, has to be utilized. Note | ||||
that a discussion of the architecture or specific protocols that CWT | ||||
proof-of-possession tokens are used with is beyond the scope of this | ||||
specification. | ||||
As is the case with other information included in a CWT, it is | As is the case with other information included in a CWT, it is | |||
necessary to apply data origin authentication and integrity | necessary to apply data origin authentication and integrity | |||
protection (via a keyed message digest or a digital signature). Data | protection (via a keyed message digest or a digital signature). Data | |||
origin authentication ensures that the recipient of the CWT learns | origin authentication ensures that the recipient of the CWT learns | |||
about the entity that created the CWT since this will be important | about the entity that created the CWT since this will be important | |||
for any policy decisions. Integrity protection prevents an adversary | for any policy decisions. Integrity protection prevents an adversary | |||
from changing any elements conveyed within the CWT payload. Special | from changing any elements conveyed within the CWT payload. Special | |||
care has to be applied when carrying symmetric keys inside the CWT | care has to be applied when carrying symmetric keys inside the CWT | |||
since those not only require integrity protection but also | since those not only require integrity protection but also | |||
confidentiality protection. | confidentiality protection. | |||
As described in Section 6 (Key Identification) and Appendix D (Notes | As described in Section 6 (Key Identification) and Appendix D (Notes | |||
on Key Selection) of [JWS], it is important to make explicit trust | on Key Selection) of [JWS], it is important to make explicit trust | |||
decisions about the keys. Proof-of-possession signatures made with | decisions about the keys. Proof-of-possession signatures made with | |||
keys not meeting the application's trust criteria MUST NOT not be | keys not meeting the application's trust criteria MUST NOT be relied | |||
relied upon. | upon. | |||
5. Privacy Considerations | 5. Privacy Considerations | |||
A proof-of-possession key can be used as a correlation handle if the | A proof-of-possession key can be used as a correlation handle if the | |||
same key is used with multiple parties. Thus, for privacy reasons, | same key is used with multiple parties. Thus, for privacy reasons, | |||
it is recommended that different proof-of-possession keys be used | it is recommended that different proof-of-possession keys be used | |||
when interacting with different parties. | when interacting with different parties. | |||
6. IANA Considerations | 6. Operational Considerations | |||
The use of CWTs with proof-of-possession keys requires additional | ||||
information to be shared between the involved parties in order to | ||||
ensure correct processing. The recipient needs to be able to use | ||||
credentials to verify the authenticity, integrity, and potentially | ||||
the confidentiality of the CWT and its content. This requires the | ||||
recipient to know information about the issuer. Likewise, there | ||||
needs to be agreement between the issuer and the recipient about the | ||||
claims being used (which is also true of CWTs in general). | ||||
When an issuer creates a CWT containing a Key ID claim, it needs to | ||||
make sure that it does not issue another CWT containing the same Key | ||||
ID with a different content, or for a different subject, within the | ||||
lifetime of the CWTs, unless intentionally desired. Failure to do so | ||||
may allow one party to impersonate another party, with the potential | ||||
to gain additional privileges. Likewise, if PoP keys are used for | ||||
multiple different kinds of CWTs in an application and the PoP keys | ||||
are identified by Key IDs, care must be taken to keep the keys for | ||||
the different kinds of CWTs segregated so that an attacker cannot | ||||
cause the wrong PoP key to be used by using a valid Key ID for the | ||||
wrong kind of CWT. | ||||
7. IANA Considerations | ||||
The following registration procedure is used for all the registries | The following registration procedure is used for all the registries | |||
established by this specification. | established by this specification. | |||
Values are registered on a Specification Required [RFC5226] basis | Values are registered on a Specification Required [RFC5226] basis | |||
after a three-week review period on the cwt-reg-review@ietf.org | after a three-week review period on the cwt-reg-review@ietf.org | |||
mailing list, on the advice of one or more Designated Experts. | mailing list, on the advice of one or more Designated Experts. | |||
However, to allow for the allocation of values prior to publication, | However, to allow for the allocation of values prior to publication, | |||
the Designated Experts may approve registration once they are | the Designated Experts may approve registration once they are | |||
satisfied that such a specification will be published. [[ Note to | satisfied that such a specification will be published. [[ Note to | |||
skipping to change at page 9, line 48 ¶ | skipping to change at page 10, line 7 ¶ | |||
and whether the registration makes sense. | and whether the registration makes sense. | |||
It is suggested that multiple Designated Experts be appointed who are | It is suggested that multiple Designated Experts be appointed who are | |||
able to represent the perspectives of different applications using | able to represent the perspectives of different applications using | |||
this specification in order to enable broadly informed review of | this specification in order to enable broadly informed review of | |||
registration decisions. In cases where a registration decision could | registration decisions. In cases where a registration decision could | |||
be perceived as creating a conflict of interest for a particular | be perceived as creating a conflict of interest for a particular | |||
Expert, that Expert should defer to the judgment of the other | Expert, that Expert should defer to the judgment of the other | |||
Experts. | Experts. | |||
6.1. CBOR Web Token Claims Registration | 7.1. CBOR Web Token Claims Registration | |||
This specification registers the "cnf" claim in the IANA "CBOR Web | This specification registers the "cnf" claim in the IANA "CBOR Web | |||
Token Claims" registry [IANA.CWT.Claims] established by [CWT]. | Token Claims" registry [IANA.CWT.Claims] established by [RFC8392]. | |||
6.1.1. Registry Contents | 7.1.1. Registry Contents | |||
o Claim Name: "cnf" | o Claim Name: "cnf" | |||
o Claim Description: Confirmation | o Claim Description: Confirmation | |||
o JWT Claim Name: "cnf" | o JWT Claim Name: "cnf" | |||
o Claim Key: TBD (maybe 8) | o Claim Key: TBD (maybe 8) | |||
o Claim Value Type(s): map | o Claim Value Type(s): map | |||
o Change Controller: IESG | o Change Controller: IESG | |||
o Specification Document(s): Section 3.1 of [[ this document ]] | o Specification Document(s): Section 3.1 of [[ this document ]] | |||
6.2. CWT Confirmation Methods Registry | 7.2. CWT Confirmation Methods Registry | |||
This specification establishes the IANA "CWT Confirmation Methods" | This specification establishes the IANA "CWT Confirmation Methods" | |||
registry for CWT "cnf" member values. The registry records the | registry for CWT "cnf" member values. The registry records the | |||
confirmation method member and a reference to the specification that | confirmation method member and a reference to the specification that | |||
defines it. | defines it. | |||
6.2.1. Registration Template | 7.2.1. Registration Template | |||
Confirmation Method Name: | Confirmation Method Name: | |||
The human-readable name requested (e.g., "kid"). | The human-readable name requested (e.g., "kid"). | |||
Confirmation Method Description: | Confirmation Method Description: | |||
Brief description of the confirmation method (e.g., "Key | Brief description of the confirmation method (e.g., "Key | |||
Identifier"). | Identifier"). | |||
JWT Confirmation Method Name: | JWT Confirmation Method Name: | |||
Claim Name of the equivalent JWT confirmation method value, as | Claim Name of the equivalent JWT confirmation method value, as | |||
skipping to change at page 11, line 7 ¶ | skipping to change at page 11, line 15 ¶ | |||
For Standards Track RFCs, list the "IESG". For others, give the | For Standards Track RFCs, list the "IESG". For others, give the | |||
name of the responsible party. Other details (e.g., postal | name of the responsible party. Other details (e.g., postal | |||
address, email address, home page URI) may also be included. | address, email address, home page URI) may also be included. | |||
Specification Document(s): | Specification Document(s): | |||
Reference to the document or documents that specify the parameter, | Reference to the document or documents that specify the parameter, | |||
preferably including URIs that can be used to retrieve copies of | preferably including URIs that can be used to retrieve copies of | |||
the documents. An indication of the relevant sections may also be | the documents. An indication of the relevant sections may also be | |||
included but is not required. | included but is not required. | |||
6.2.2. Initial Registry Contents | 7.2.2. Initial Registry Contents | |||
o Confirmation Method Name: "COSE_Key" | o Confirmation Method Name: "COSE_Key" | |||
o Confirmation Method Description: COSE_Key Representing Public Key | o Confirmation Method Description: COSE_Key Representing Public Key | |||
o JWT Confirmation Method Name: "jwk" | o JWT Confirmation Method Name: "jwk" | |||
o Confirmation Key: 1 | o Confirmation Key: 1 | |||
o Confirmation Value Type(s): map | o Confirmation Value Type(s): map | |||
o Change Controller: IESG | o Change Controller: IESG | |||
o Specification Document(s): Section 3.2 of [[ this document ]] | o Specification Document(s): Section 3.2 of [[ this document ]] | |||
o Confirmation Method Name: "Encrypted_COSE_Key" | o Confirmation Method Name: "Encrypted_COSE_Key" | |||
skipping to change at page 11, line 34 ¶ | skipping to change at page 11, line 42 ¶ | |||
o Specification Document(s): Section 3.3 of [[ this document ]] | o Specification Document(s): Section 3.3 of [[ this document ]] | |||
o Confirmation Method Name: "kid" | o Confirmation Method Name: "kid" | |||
o Confirmation Method Description: Key Identifier | o Confirmation Method Description: Key Identifier | |||
o JWT Confirmation Method Name: "kid" | o JWT Confirmation Method Name: "kid" | |||
o Confirmation Key: 3 | o Confirmation Key: 3 | |||
o Confirmation Value Type(s): binary string | o Confirmation Value Type(s): binary string | |||
o Change Controller: IESG | o Change Controller: IESG | |||
o Specification Document(s): Section 3.4 of [[ this document ]] | o Specification Document(s): Section 3.4 of [[ this document ]] | |||
7. References | 8. References | |||
7.1. Normative References | ||||
[CWT] Jones, M., Wahlstroem, E., Erdtman, S., and H. Tschofenig, | 8.1. Normative References | |||
"CBOR Web Token (CWT)", Work in Progress, draft-ietf-ace- | ||||
cbor-web-token-11, January 2018, | ||||
<https://tools.ietf.org/html/ | ||||
draft-ietf-ace-cbor-web-token-11>. | ||||
[IANA.CWT.Claims] | [IANA.CWT.Claims] | |||
IANA, "CBOR Web Token Claims", | IANA, "CBOR Web Token Claims", | |||
<http://www.iana.org/assignments/cwt>. | <http://www.iana.org/assignments/cwt>. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO | ||||
10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, November | ||||
2003, <https://www.rfc-editor.org/info/rfc3629>. | ||||
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | ||||
Resource Identifier (URI): Generic Syntax", STD 66, | ||||
RFC 3986, DOI 10.17487/RFC3986, January 2005, | ||||
<https://www.rfc-editor.org/info/rfc3986>. | ||||
[RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | |||
IANA Considerations Section in RFCs", RFC 5226, | IANA Considerations Section in RFCs", RFC 5226, | |||
DOI 10.17487/RFC5226, May 2008, | DOI 10.17487/RFC5226, May 2008, | |||
<https://www.rfc-editor.org/info/rfc5226>. | <https://www.rfc-editor.org/info/rfc5226>. | |||
[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | ||||
(TLS) Protocol Version 1.2", RFC 5246, | ||||
DOI 10.17487/RFC5246, August 2008, | ||||
<https://www.rfc-editor.org/info/rfc5246>. | ||||
[RFC6125] Saint-Andre, P. and J. Hodges, "Representation and | ||||
Verification of Domain-Based Application Service Identity | ||||
within Internet Public Key Infrastructure Using X.509 | ||||
(PKIX) Certificates in the Context of Transport Layer | ||||
Security (TLS)", RFC 6125, DOI 10.17487/RFC6125, March | ||||
2011, <https://www.rfc-editor.org/info/rfc6125>. | ||||
[RFC7049] Bormann, C. and P. Hoffman, "Concise Binary Object | [RFC7049] Bormann, C. and P. Hoffman, "Concise Binary Object | |||
Representation (CBOR)", RFC 7049, DOI 10.17487/RFC7049, | Representation (CBOR)", RFC 7049, DOI 10.17487/RFC7049, | |||
October 2013, <https://www.rfc-editor.org/info/rfc7049>. | October 2013, <https://www.rfc-editor.org/info/rfc7049>. | |||
[RFC8152] Schaad, J., "CBOR Object Signing and Encryption (COSE)", | [RFC8152] Schaad, J., "CBOR Object Signing and Encryption (COSE)", | |||
RFC 8152, DOI 10.17487/RFC8152, July 2017, | RFC 8152, DOI 10.17487/RFC8152, July 2017, | |||
<https://www.rfc-editor.org/info/rfc8152>. | <https://www.rfc-editor.org/info/rfc8152>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
7.2. Informative References | [RFC8392] Jones, M., Wahlstroem, E., Erdtman, S., and H. Tschofenig, | |||
"CBOR Web Token (CWT)", RFC 8392, DOI 10.17487/RFC8392, | ||||
May 2018, <https://www.rfc-editor.org/info/rfc8392>. | ||||
8.2. Informative References | ||||
[I-D.ietf-ace-oauth-authz] | ||||
Seitz, L., Selander, G., Wahlstroem, E., Erdtman, S., and | ||||
H. Tschofenig, "Authentication and Authorization for | ||||
Constrained Environments (ACE) using the OAuth 2.0 | ||||
Framework (ACE-OAuth)", draft-ietf-ace-oauth-authz-12 | ||||
(work in progress), May 2018. | ||||
[IANA.JWT.Claims] | [IANA.JWT.Claims] | |||
IANA, "JSON Web Token Claims", | IANA, "JSON Web Token Claims", | |||
<http://www.iana.org/assignments/jwt>. | <http://www.iana.org/assignments/jwt>. | |||
[JWS] Jones, M., Bradley, J., and N. Sakimura, "JSON Web | [JWS] Jones, M., Bradley, J., and N. Sakimura, "JSON Web | |||
Signature (JWS)", RFC 7515, May 2015, | Signature (JWS)", RFC 7515, May 2015, | |||
<http://www.rfc-editor.org/info/rfc7515>. | <http://www.rfc-editor.org/info/rfc7515>. | |||
[JWT] Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token | [JWT] Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token | |||
skipping to change at page 13, line 28 ¶ | skipping to change at page 13, line 24 ¶ | |||
2014, <https://www.rfc-editor.org/info/rfc7159>. | 2014, <https://www.rfc-editor.org/info/rfc7159>. | |||
[RFC7800] Jones, M., Bradley, J., and H. Tschofenig, "Proof-of- | [RFC7800] Jones, M., Bradley, J., and H. Tschofenig, "Proof-of- | |||
Possession Key Semantics for JSON Web Tokens (JWTs)", | Possession Key Semantics for JSON Web Tokens (JWTs)", | |||
RFC 7800, DOI 10.17487/RFC7800, April 2016, | RFC 7800, DOI 10.17487/RFC7800, April 2016, | |||
<https://www.rfc-editor.org/info/rfc7800>. | <https://www.rfc-editor.org/info/rfc7800>. | |||
Acknowledgements | Acknowledgements | |||
Thanks to the following people for their reviews of the | Thanks to the following people for their reviews of the | |||
specification: Michael Richardson and Jim Schaad. | specification: Roman Danyliw, Michael Richardson, and Jim Schaad. | |||
Ludwig Seitz and Goeran Selander worked on this document as part of | ||||
the CelticPlus project CyberWI, with funding from Vinnova. | ||||
Document History | Document History | |||
[[ to be removed by the RFC Editor before publication as an RFC ]] | [[ to be removed by the RFC Editor before publication as an RFC ]] | |||
-03 | ||||
o Addressed review comments by Jim Schaad, see https://www.ietf.org/ | ||||
mail-archive/web/ace/current/msg02798.html | ||||
o Removed unnecessary sentence in the introduction regarding the use | ||||
any strings that could be case-sensitive. | ||||
o Clarified the terms Presenter and Recipient. | ||||
o Clarified text about the confirmation claim. | ||||
-02 | -02 | |||
o Changed "typically" to "often" when describing ways of performing | o Changed "typically" to "often" when describing ways of performing | |||
proof of possession. | proof of possession. | |||
o Changed b64 to hex encoding in an example. | o Changed b64 to hex encoding in an example. | |||
o Changed to using the RFC 8174 boilerplate instead of the RFC 2119 | o Changed to using the RFC 8174 boilerplate instead of the RFC 2119 | |||
boilerplate. | boilerplate. | |||
skipping to change at page 14, line 31 ¶ | skipping to change at page 14, line 45 ¶ | |||
Email: ludwig@ri.se | Email: ludwig@ri.se | |||
Goeran Selander | Goeran Selander | |||
Ericsson AB | Ericsson AB | |||
Faeroegatan 6 | Faeroegatan 6 | |||
Kista 164 80 | Kista 164 80 | |||
Sweden | Sweden | |||
Email: goran.selander@ericsson.com | Email: goran.selander@ericsson.com | |||
Erik Wahlstroem | ||||
Sweden | ||||
Email: erik@wahlstromstekniska.se | ||||
Samuel Erdtman | Samuel Erdtman | |||
Spotify AB | Spotify | |||
Birger Jarlsgatan 61, 4tr | ||||
Stockholm 113 56 | ||||
Sweden | ||||
Phone: +46702691499 | ||||
Email: erdtman@spotify.com | Email: erdtman@spotify.com | |||
Hannes Tschofenig | Hannes Tschofenig | |||
ARM Ltd. | ARM Ltd. | |||
Hall in Tirol 6060 | Hall in Tirol 6060 | |||
Austria | Austria | |||
Email: Hannes.Tschofenig@arm.com | Email: Hannes.Tschofenig@arm.com | |||
End of changes. 45 change blocks. | ||||
125 lines changed or deleted | 136 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |