| < 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 10, line 45 ¶ | skipping to change at page 11, line 4 ¶ | |||
| make sense, the Designated Experts can choose to accept | make sense, the Designated Experts can choose to accept | |||
| registrations for which the JWT Claim Name is listed as "N/A". | registrations for which the JWT Claim Name is listed as "N/A". | |||
| Confirmation Key: | Confirmation Key: | |||
| CBOR map key value for the confirmation method. | CBOR map key value for the confirmation method. | |||
| Confirmation Value Type(s): | Confirmation Value Type(s): | |||
| CBOR types that can be used for the confirmation method value. | CBOR types that can be used for the confirmation method value. | |||
| Change Controller: | Change Controller: | |||
| 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. 46 change blocks. | ||||
| 125 lines changed or deleted | 137 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/ | ||||