| < draft-ietf-jose-json-web-key-15.txt | draft-ietf-jose-json-web-key-16.txt > | |||
|---|---|---|---|---|
| JOSE Working Group M. Jones | JOSE Working Group M. Jones | |||
| Internet-Draft Microsoft | Internet-Draft Microsoft | |||
| Intended status: Standards Track September 3, 2013 | Intended status: Standards Track September 15, 2013 | |||
| Expires: March 7, 2014 | Expires: March 19, 2014 | |||
| JSON Web Key (JWK) | JSON Web Key (JWK) | |||
| draft-ietf-jose-json-web-key-15 | draft-ietf-jose-json-web-key-16 | |||
| Abstract | Abstract | |||
| A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data | A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data | |||
| structure that represents a cryptographic key. This specification | structure that represents a cryptographic key. This specification | |||
| also defines a JSON Web Key Set (JWK Set) JSON data structure for | also defines a JSON Web Key Set (JWK Set) JSON data structure for | |||
| representing a set of JWKs. Cryptographic algorithms and identifiers | representing a set of JWKs. Cryptographic algorithms and identifiers | |||
| for use with this specification are described in the separate JSON | for use with this specification are described in the separate JSON | |||
| Web Algorithms (JWA) specification and IANA registries defined by | Web Algorithms (JWA) specification and IANA registries defined by | |||
| that specification. | that specification. | |||
| skipping to change at page 1, line 36 ¶ | skipping to change at page 1, line 36 ¶ | |||
| 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 http://datatracker.ietf.org/drafts/current/. | Drafts is at http://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 March 7, 2014. | This Internet-Draft will expire on March 19, 2014. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2013 IETF Trust and the persons identified as the | Copyright (c) 2013 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 | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://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 . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 1.1. Notational Conventions . . . . . . . . . . . . . . . . . . 3 | 1.1. Notational Conventions . . . . . . . . . . . . . . . . . . 4 | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3. JSON Web Key (JWK) Format . . . . . . . . . . . . . . . . . . 4 | 3. JSON Web Key (JWK) Format . . . . . . . . . . . . . . . . . . 5 | |||
| 3.1. "kty" (Key Type) Parameter . . . . . . . . . . . . . . . . 4 | 3.1. "kty" (Key Type) Parameter . . . . . . . . . . . . . . . . 5 | |||
| 3.2. "use" (Key Use) Parameter . . . . . . . . . . . . . . . . 5 | 3.2. "use" (Key Use) Parameter . . . . . . . . . . . . . . . . 6 | |||
| 3.3. "alg" (Algorithm) Parameter . . . . . . . . . . . . . . . 5 | 3.3. "alg" (Algorithm) Parameter . . . . . . . . . . . . . . . 6 | |||
| 3.4. "kid" (Key ID) Parameter . . . . . . . . . . . . . . . . . 5 | 3.4. "kid" (Key ID) Parameter . . . . . . . . . . . . . . . . . 6 | |||
| 3.5. "x5u" (X.509 URL) Parameter . . . . . . . . . . . . . . . 5 | 3.5. "x5u" (X.509 URL) Parameter . . . . . . . . . . . . . . . 6 | |||
| 3.6. "x5t" (X.509 Certificate Thumbprint) Parameter . . . . . . 6 | 3.6. "x5t" (X.509 Certificate SHA-1 Thumbprint) Parameter . . . 7 | |||
| 3.7. "x5c" (X.509 Certificate Chain) Parameter . . . . . . . . 6 | 3.7. "x5c" (X.509 Certificate Chain) Parameter . . . . . . . . 7 | |||
| 4. JSON Web Key Set (JWK Set) Format . . . . . . . . . . . . . . 6 | 4. JSON Web Key Set (JWK Set) Format . . . . . . . . . . . . . . 7 | |||
| 4.1. "keys" (JSON Web Key Set) Parameter . . . . . . . . . . . 6 | 4.1. "keys" Parameter . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 5. String Comparison Rules . . . . . . . . . . . . . . . . . . . 7 | 5. String Comparison Rules . . . . . . . . . . . . . . . . . . . 8 | |||
| 6. Encrypted JWK and Encrypted JWK Set Formats . . . . . . . . . 7 | 6. Encrypted JWK and Encrypted JWK Set Formats . . . . . . . . . 8 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 7.1. JSON Web Key Parameters Registry . . . . . . . . . . . . . 8 | 7.1. JSON Web Key Parameters Registry . . . . . . . . . . . . . 10 | |||
| 7.1.1. Registration Template . . . . . . . . . . . . . . . . 8 | 7.1.1. Registration Template . . . . . . . . . . . . . . . . 10 | |||
| 7.1.2. Initial Registry Contents . . . . . . . . . . . . . . 9 | 7.1.2. Initial Registry Contents . . . . . . . . . . . . . . 11 | |||
| 7.2. JSON Web Key Set Parameters Registry . . . . . . . . . . . 9 | 7.2. JSON Web Key Use Registry . . . . . . . . . . . . . . . . 11 | |||
| 7.2.1. Registration Template . . . . . . . . . . . . . . . . 10 | 7.2.1. Registration Template . . . . . . . . . . . . . . . . 12 | |||
| 7.2.2. Initial Registry Contents . . . . . . . . . . . . . . 10 | 7.2.2. Initial Registry Contents . . . . . . . . . . . . . . 12 | |||
| 7.3. JSON Web Signature and Encryption Type Values | 7.3. JSON Web Key Set Parameters Registry . . . . . . . . . . . 12 | |||
| Registration . . . . . . . . . . . . . . . . . . . . . . . 10 | 7.3.1. Registration Template . . . . . . . . . . . . . . . . 12 | |||
| 7.3.1. Registry Contents . . . . . . . . . . . . . . . . . . 10 | 7.3.2. Initial Registry Contents . . . . . . . . . . . . . . 13 | |||
| 7.4. Media Type Registration . . . . . . . . . . . . . . . . . 10 | 7.4. JSON Web Signature and Encryption Type Values | |||
| 7.4.1. Registry Contents . . . . . . . . . . . . . . . . . . 11 | Registration . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | 7.4.1. Registry Contents . . . . . . . . . . . . . . . . . . 13 | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 7.5. Media Type Registration . . . . . . . . . . . . . . . . . 14 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . . 12 | 7.5.1. Registry Contents . . . . . . . . . . . . . . . . . . 14 | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . . 14 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 15 | |||
| Appendix A. Example JSON Web Key Sets . . . . . . . . . . . . . . 14 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
| A.1. Example Public Keys . . . . . . . . . . . . . . . . . . . 14 | 9.1. Normative References . . . . . . . . . . . . . . . . . . . 15 | |||
| A.2. Example Private Keys . . . . . . . . . . . . . . . . . . . 15 | 9.2. Informative References . . . . . . . . . . . . . . . . . . 17 | |||
| A.3. Example Symmetric Keys . . . . . . . . . . . . . . . . . . 17 | Appendix A. Example JSON Web Key Sets . . . . . . . . . . . . . . 17 | |||
| A.1. Example Public Keys . . . . . . . . . . . . . . . . . . . 17 | ||||
| A.2. Example Private Keys . . . . . . . . . . . . . . . . . . . 18 | ||||
| A.3. Example Symmetric Keys . . . . . . . . . . . . . . . . . . 20 | ||||
| Appendix B. Example Use of "x5c" (X.509 Certificate Chain) | Appendix B. Example Use of "x5c" (X.509 Certificate Chain) | |||
| Parameter . . . . . . . . . . . . . . . . . . . . . . 17 | Parameter . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| Appendix C. Acknowledgements . . . . . . . . . . . . . . . . . . 18 | Appendix C. Acknowledgements . . . . . . . . . . . . . . . . . . 21 | |||
| Appendix D. Document History . . . . . . . . . . . . . . . . . . 19 | Appendix D. Document History . . . . . . . . . . . . . . . . . . 22 | |||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 22 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
| 1. Introduction | 1. Introduction | |||
| A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) [RFC4627] | A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) [RFC4627] | |||
| data structure that represents a cryptographic key. This | data structure that represents a cryptographic key. This | |||
| specification also defines a JSON Web Key Set (JWK Set) JSON data | specification also defines a JSON Web Key Set (JWK Set) JSON data | |||
| structure for representing a set of JWKs. Cryptographic algorithms | structure for representing a set of JWKs. Cryptographic algorithms | |||
| and identifiers for use with this specification are described in the | and identifiers for use with this specification are described in the | |||
| separate JSON Web Algorithms (JWA) [JWA] specification and IANA | separate JSON Web Algorithms (JWA) [JWA] specification and IANA | |||
| registries defined by that specification. | registries defined by that specification. | |||
| skipping to change at page 3, line 30 ¶ | skipping to change at page 4, line 30 ¶ | |||
| JSON Web Encryption (JWE) [JWE] specifications. | JSON Web Encryption (JWE) [JWE] specifications. | |||
| Names defined by this specification are short because a core goal is | Names defined by this specification are short because a core goal is | |||
| for the resulting representations to be compact. | for the resulting representations to be compact. | |||
| 1.1. Notational Conventions | 1.1. Notational Conventions | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in Key words for use in | document are to be interpreted as described in Key words for use in | |||
| RFCs to Indicate Requirement Levels [RFC2119]. | RFCs to Indicate Requirement Levels [RFC2119]. If these words are | |||
| used without being spelled in uppercase then they are to be | ||||
| interpreted with their normal natural language meanings. | ||||
| 2. Terminology | 2. Terminology | |||
| JSON Web Key (JWK) A JSON object that represents a cryptographic | JSON Web Key (JWK) A JSON object that represents a cryptographic | |||
| key. | key. | |||
| JSON Web Key Set (JWK Set) A JSON object that contains an array of | JSON Web Key Set (JWK Set) A JSON object that contains an array of | |||
| JWKs as the value of its "keys" member. | JWKs as the value of its "keys" member. | |||
| Base64url Encoding Base64 encoding using the URL- and filename-safe | Base64url Encoding Base64 encoding using the URL- and filename-safe | |||
| character set defined in Section 5 of RFC 4648 [RFC4648], with all | character set defined in Section 5 of RFC 4648 [RFC4648], with all | |||
| trailing '=' characters omitted (as permitted by Section 3.2). | trailing '=' characters omitted (as permitted by Section 3.2). | |||
| (See Appendix C of [JWS] for notes on implementing base64url | (See Appendix C of [JWS] for notes on implementing base64url | |||
| encoding without padding.) | encoding without padding.) | |||
| Collision Resistant Namespace A namespace that allows names to be | Collision Resistant Name A name in a namespace that enables names to | |||
| allocated in a manner such that they are highly unlikely to | be allocated in a manner such that they are highly unlikely to | |||
| collide with other names. Examples of Collision Resistant | collide with other names. Examples of collision resistant | |||
| Namespaces include: Domain Names, Object Identifiers (OIDs) as | namespaces include: Domain Names, Object Identifiers (OIDs) as | |||
| defined in the ITU-T X.660 and X.670 Recommendation series, and | defined in the ITU-T X.660 and X.670 Recommendation series, and | |||
| Universally Unique IDentifiers (UUIDs) [RFC4122]. When using an | Universally Unique IDentifiers (UUIDs) [RFC4122]. When using an | |||
| administratively delegated namespace, the definer of a name needs | administratively delegated namespace, the definer of a name needs | |||
| to take reasonable precautions to ensure they are in control of | to take reasonable precautions to ensure they are in control of | |||
| the portion of the namespace they use to define the name. | the portion of the namespace they use to define the name. | |||
| 3. JSON Web Key (JWK) Format | 3. JSON Web Key (JWK) Format | |||
| A JSON Web Key (JWK) is a JSON object containing specific members, as | A JSON Web Key (JWK) is a JSON object containing specific members, as | |||
| specified below. Those members that are common to multiple key types | specified below. Those members that are common to multiple key types | |||
| skipping to change at page 4, line 29 ¶ | skipping to change at page 5, line 31 ¶ | |||
| The member names within a JWK MUST be unique; recipients MUST either | The member names within a JWK MUST be unique; recipients MUST either | |||
| reject JWKs with duplicate member names or use a JSON parser that | reject JWKs with duplicate member names or use a JSON parser that | |||
| returns only the lexically last duplicate member name, as specified | returns only the lexically last duplicate member name, as specified | |||
| in Section 15.12 (The JSON Object) of ECMAScript 5.1 [ECMAScript]. | in Section 15.12 (The JSON Object) of ECMAScript 5.1 [ECMAScript]. | |||
| Additional members MAY be present in the JWK. If not understood by | Additional members MAY be present in the JWK. If not understood by | |||
| implementations encountering them, they MUST be ignored. Member | implementations encountering them, they MUST be ignored. Member | |||
| names used for representing key parameters for different kinds of | names used for representing key parameters for different kinds of | |||
| keys need not be distinct. Any new member name SHOULD either be | keys need not be distinct. Any new member name SHOULD either be | |||
| registered in the IANA JSON Web Key Parameters registry Section 7.1 | registered in the IANA JSON Web Key Parameters registry defined in | |||
| or be a value that contains a Collision Resistant Namespace. | Section 7.1 or be a value that contains a Collision Resistant Name. | |||
| 3.1. "kty" (Key Type) Parameter | 3.1. "kty" (Key Type) Parameter | |||
| The "kty" (key type) member identifies the cryptographic algorithm | The "kty" (key type) member identifies the cryptographic algorithm | |||
| family used with the key. "kty" values SHOULD either be registered in | family used with the key. "kty" values SHOULD either be registered in | |||
| the IANA JSON Web Key Types registry [JWA] or be a value that | the IANA JSON Web Key Types registry defined in [JWA] or be a value | |||
| contains a Collision Resistant Namespace. The "kty" value is a case | that contains a Collision Resistant Name. The "kty" value is a case | |||
| sensitive string. Use of this member is REQUIRED. | sensitive string. Use of this member is REQUIRED. | |||
| A list of defined "kty" values can be found in the IANA JSON Web Key | A list of defined "kty" values can be found in the IANA JSON Web Key | |||
| Types registry [JWA]; the initial contents of this registry are the | Types registry defined in [JWA]; the initial contents of this | |||
| values defined in Section 5.1 of the JSON Web Algorithms (JWA) [JWA] | registry are the values defined in Section 5.1 of the JSON Web | |||
| specification. | Algorithms (JWA) [JWA] specification. | |||
| Additional members used with these "kty" values can be found in the | Additional members used with these "kty" values can be found in the | |||
| IANA JSON Web Key Parameters registry Section 7.1; the initial | IANA JSON Web Key Parameters registry defined in Section 7.1; the | |||
| contents of this registry are the values defined in Sections 5.2 and | initial contents of this registry are the values defined in Sections | |||
| 5.3 of the JSON Web Algorithms (JWA) [JWA] specification. | 5.2 and 5.3 of the JSON Web Algorithms (JWA) [JWA] specification. | |||
| 3.2. "use" (Key Use) Parameter | 3.2. "use" (Key Use) Parameter | |||
| The "use" (key use) member identifies the intended use of the key. | The "use" (key use) member identifies the intended use of the key. | |||
| Values defined by this specification are: | Values defined by this specification are: | |||
| o "sig" (signature or MAC operation) | o "sig" (signature or MAC operation) | |||
| o "enc" (encryption) | o "enc" (encryption) | |||
| Other values MAY be used. The "use" value is a case sensitive | Other values MAY be used. Key Use values can be registered in the | |||
| string. Use of this member is OPTIONAL. | IANA JSON Web Key Use registry defined in Section 7.2. The "use" | |||
| value is a case sensitive string. A "use" member SHOULD be present, | ||||
| unless the application uses another means or convention to determine | ||||
| the intended key usage. | ||||
| When a key is used to wrap another key and a key use designation for | ||||
| the first key is desired, the "enc" (encryption) key use value SHOULD | ||||
| be used, since key wrapping is a kind of encryption. (The "alg" | ||||
| member can be used to specify the particular kind of encryption to be | ||||
| performed, when desired.) | ||||
| 3.3. "alg" (Algorithm) Parameter | 3.3. "alg" (Algorithm) Parameter | |||
| The "alg" (algorithm) member identifies the algorithm intended for | The "alg" (algorithm) member identifies the algorithm intended for | |||
| use with the key. The values used in this field are the same as | use with the key. The values used SHOULD either be registered in the | |||
| those used in the JWS [JWS] and JWE [JWE] "alg" and "enc" header | IANA JSON Web Signature and Encryption Algorithms registry defined in | |||
| parameters; these values can be found in the JSON Web Signature and | [JWA] or be a value that contains a Collision Resistant Name. Use of | |||
| Encryption Algorithms registry [JWA]. Use of this member is | this member is OPTIONAL. | |||
| OPTIONAL. | ||||
| 3.4. "kid" (Key ID) Parameter | 3.4. "kid" (Key ID) Parameter | |||
| The "kid" (key ID) member can be used to match a specific key. This | The "kid" (key ID) member can be used to match a specific key. This | |||
| can be used, for instance, to choose among a set of keys within a JWK | can be used, for instance, to choose among a set of keys within a JWK | |||
| Set during key rollover. The interpretation of the "kid" value is | Set during key rollover. The interpretation of the "kid" value is | |||
| unspecified. When "kid" values are used within a JWK Set, different | unspecified. When "kid" values are used within a JWK Set, different | |||
| keys within the JWK Set SHOULD use distinct "kid" values. The "kid" | keys within the JWK Set SHOULD use distinct "kid" values. The "kid" | |||
| value is a case sensitive string. Use of this member is OPTIONAL. | value is a case sensitive string. Use of this member is OPTIONAL. | |||
| skipping to change at page 6, line 5 ¶ | skipping to change at page 7, line 11 ¶ | |||
| [RFC5280]. The identified resource MUST provide a representation of | [RFC5280]. The identified resource MUST provide a representation of | |||
| the certificate or certificate chain that conforms to RFC 5280 | the certificate or certificate chain that conforms to RFC 5280 | |||
| [RFC5280] in PEM encoded form [RFC1421]. The key in the first | [RFC5280] in PEM encoded form [RFC1421]. The key in the first | |||
| certificate MUST match the bare public key represented by other | certificate MUST match the bare public key represented by other | |||
| members of the JWK. The protocol used to acquire the resource MUST | members of the JWK. The protocol used to acquire the resource MUST | |||
| provide integrity protection; an HTTP GET request to retrieve the | provide integrity protection; an HTTP GET request to retrieve the | |||
| certificate MUST use TLS [RFC2818] [RFC5246]; the identity of the | certificate MUST use TLS [RFC2818] [RFC5246]; the identity of the | |||
| server MUST be validated, as per Section 3.1 of HTTP Over TLS | server MUST be validated, as per Section 3.1 of HTTP Over TLS | |||
| [RFC2818]. Use of this member is OPTIONAL. | [RFC2818]. Use of this member is OPTIONAL. | |||
| 3.6. "x5t" (X.509 Certificate Thumbprint) Parameter | 3.6. "x5t" (X.509 Certificate SHA-1 Thumbprint) Parameter | |||
| The "x5t" (X.509 Certificate Thumbprint) member is a base64url | The "x5t" (X.509 Certificate SHA-1 Thumbprint) member is a base64url | |||
| encoded SHA-1 thumbprint (a.k.a. digest) of the DER encoding of an | encoded SHA-1 thumbprint (a.k.a. digest) of the DER encoding of an | |||
| X.509 certificate [RFC5280]. The key in the certificate MUST match | X.509 certificate [RFC5280]. The key in the certificate MUST match | |||
| the bare public key represented by other members of the JWK. Use of | the bare public key represented by other members of the JWK. Use of | |||
| this member is OPTIONAL. | this member is OPTIONAL. | |||
| If, in the future, certificate thumbprints need to be computed using | ||||
| hash functions other than SHA-1, it is suggested that additional | ||||
| related JWK parameters be defined for that purpose. For example, it | ||||
| is suggested that a new "x5t#S256" (X.509 Certificate Thumbprint | ||||
| using SHA-256) JWK parameter could be defined by registering it in | ||||
| the IANA JSON Web Key Parameters registry defined in Section 7.1. | ||||
| 3.7. "x5c" (X.509 Certificate Chain) Parameter | 3.7. "x5c" (X.509 Certificate Chain) Parameter | |||
| The "x5c" (X.509 Certificate Chain) member contains a chain of one or | The "x5c" (X.509 Certificate Chain) member contains a chain of one or | |||
| more PKIX certificates [RFC5280]. The certificate chain is | more PKIX certificates [RFC5280]. The certificate chain is | |||
| represented as a JSON array of certificate value strings. Each | represented as a JSON array of certificate value strings. Each | |||
| string in the array is a base64 encoded ([RFC4648] Section 4 -- not | string in the array is a base64 encoded ([RFC4648] Section 4 -- not | |||
| base64url encoded) DER [ITU.X690.1994] PKIX certificate value. The | base64url encoded) DER [ITU.X690.1994] PKIX certificate value. The | |||
| PKIX certificate containing the key value MUST be the first | PKIX certificate containing the key value MUST be the first | |||
| certificate. This MAY be followed by additional certificates, with | certificate. This MAY be followed by additional certificates, with | |||
| each subsequent certificate being the one used to certify the | each subsequent certificate being the one used to certify the | |||
| previous one. The key in the first certificate MUST match the bare | previous one. The key in the first certificate MUST match the bare | |||
| public key represented by other members of the JWK. Use of this | public key represented by other members of the JWK. Use of this | |||
| member is OPTIONAL. | member is OPTIONAL. | |||
| 4. JSON Web Key Set (JWK Set) Format | 4. JSON Web Key Set (JWK Set) Format | |||
| A JSON Web Key Set (JWK Set) is a JSON object that contains an array | A JSON Web Key Set (JWK Set) is a JSON object that contains an array | |||
| of JSON Web Key values as the value of its "keys" member. | of JWK values as the value of its "keys" member. | |||
| The member names within a JWK Set MUST be unique; recipients MUST | The member names within a JWK Set MUST be unique; recipients MUST | |||
| either reject JWK Sets with duplicate member names or use a JSON | either reject JWK Sets with duplicate member names or use a JSON | |||
| parser that returns only the lexically last duplicate member name, as | parser that returns only the lexically last duplicate member name, as | |||
| specified in Section 15.12 (The JSON Object) of ECMAScript 5.1 | specified in Section 15.12 (The JSON Object) of ECMAScript 5.1 | |||
| [ECMAScript]. | [ECMAScript]. | |||
| Additional members MAY be present in the JWK Set. If not understood | Additional members MAY be present in the JWK Set. If not understood | |||
| by implementations encountering them, they MUST be ignored. | by implementations encountering them, they MUST be ignored. | |||
| Parameters for representing additional properties of JWK Sets SHOULD | Parameters for representing additional properties of JWK Sets SHOULD | |||
| either be registered in the IANA JSON Web Key Set Parameters registry | either be registered in the IANA JSON Web Key Set Parameters registry | |||
| Section 7.2 or be a value that contains a Collision Resistant | defined in Section 7.3 or be a value that contains a Collision | |||
| Namespace. | Resistant Name. | |||
| 4.1. "keys" (JSON Web Key Set) Parameter | Implementations SHOULD ignore JWKs within a JWK Set that use "kty" | |||
| (key type) values that are not understood by them. | ||||
| The value of the "keys" (JSON Web Key Set) member is an array of JSON | 4.1. "keys" Parameter | |||
| Web Key (JWK) values. Use of this member is REQUIRED. | ||||
| The value of the "keys" member is an array of JWK values. By | ||||
| default, the order of the JWK values within the array does not imply | ||||
| an order of preference among them, although applications of JWK Sets | ||||
| can choose to assign a meaning to the order for their purposes, if | ||||
| desired. Use of this member is REQUIRED. | ||||
| 5. String Comparison Rules | 5. String Comparison Rules | |||
| Processing a JWK inevitably requires comparing known strings to | Processing a JWK inevitably requires comparing known strings to | |||
| values in JSON objects. For example, in checking what the key type | values in JSON objects. For example, in checking what the key type | |||
| is, the Unicode string encoding "kty" will be checked against the | is, the Unicode string encoding "kty" will be checked against the | |||
| member names in the JWK to see if there is a matching name. | member names in the JWK to see if there is a matching name. | |||
| Comparisons between JSON strings and other Unicode strings MUST be | Comparisons between JSON strings and other Unicode strings MUST be | |||
| performed by comparing Unicode code points without normalization as | performed by comparing Unicode code points without normalization as | |||
| specified in the String Comparison Rules in Section 5.3 of [JWS]. | specified in the String Comparison Rules in Section 5.3 of [JWS]. | |||
| 6. Encrypted JWK and Encrypted JWK Set Formats | 6. Encrypted JWK and Encrypted JWK Set Formats | |||
| JWKs containing non-public key material will need to be encrypted in | JWKs containing non-public key material will need to be encrypted in | |||
| some contexts to prevent the disclosure of private or symmetric key | some contexts to prevent the disclosure of private or symmetric key | |||
| values to unintended parties. The use of an Encrypted JWK, which is | values to unintended parties. The use of an Encrypted JWK, which is | |||
| a JWE with a JWK as its plaintext value, is RECOMMENED for this | a JWE with a JWK as its plaintext value, is RECOMMENED for this | |||
| purpose. The processing of Encrypted JWKs is identical to the | purpose. The processing of Encrypted JWKs is identical to the | |||
| processing of other JWEs. A "cty" (content type) header parameter | processing of other JWEs. A "cty" (content type) header parameter | |||
| value of "JWK" can be used to indicate that the content of the JWE is | value of "JWK" MUST be used to indicate that the content of the JWE | |||
| a JWK in contexts where this is useful. | is a JWK, unless the application knows that the encrypted content is | |||
| a JWK by another means or convention. | ||||
| JWK Sets containing non-public key material will similarly need to be | JWK Sets containing non-public key material will similarly need to be | |||
| encrypted. The use of an Encrypted JWK Set, which is a JWE with a | encrypted. The use of an Encrypted JWK Set, which is a JWE with a | |||
| JWK Set as its plaintext value, is RECOMMENED for this purpose. The | JWK Set as its plaintext value, is RECOMMENED for this purpose. The | |||
| processing of Encrypted JWK Sets is identical to the processing of | processing of Encrypted JWK Sets is identical to the processing of | |||
| other JWEs. A "cty" (content type) header parameter value of | other JWEs. A "cty" (content type) header parameter value of | |||
| "JWK-SET" can be used to indicate that the content of the JWE is a | "JWK-SET" MUST be used to indicate that the content of the JWE is a | |||
| JWK Set in contexts where this is useful. | JWK Set, unless the application knows that the encrypted content is a | |||
| JWK Set by another means or convention. | ||||
| 7. IANA Considerations | 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 with a Specification Required [RFC5226] after a | Values are registered with a Specification Required [RFC5226] after a | |||
| two-week review period on the [TBD]@ietf.org mailing list, on the | two-week review period on the [TBD]@ietf.org mailing list, on the | |||
| advice of one or more Designated Experts. However, to allow for the | advice of one or more Designated Experts. However, to allow for the | |||
| allocation of values prior to publication, the Designated Expert(s) | allocation of values prior to publication, the Designated Expert(s) | |||
| may approve registration once they are satisfied that such a | may approve registration once they are satisfied that such a | |||
| specification will be published. | specification will be published. | |||
| Registration requests must be sent to the [TBD]@ietf.org mailing list | Registration requests must be sent to the [TBD]@ietf.org mailing list | |||
| for review and comment, with an appropriate subject (e.g., "Request | for review and comment, with an appropriate subject (e.g., "Request | |||
| for access token type: example"). [[ Note to RFC-EDITOR: The name of | for access token type: example"). [[ Note to the RFC Editor: The name | |||
| the mailing list should be determined in consultation with the IESG | of the mailing list should be determined in consultation with the | |||
| and IANA. Suggested name: jose-reg-review. ]] | IESG and IANA. Suggested name: jose-reg-review. ]] | |||
| Within the review period, the Designated Expert(s) will either | Within the review period, the Designated Expert(s) will either | |||
| approve or deny the registration request, communicating this decision | approve or deny the registration request, communicating this decision | |||
| to the review list and IANA. Denials should include an explanation | to the review list and IANA. Denials should include an explanation | |||
| and, if applicable, suggestions as to how to make the request | and, if applicable, suggestions as to how to make the request | |||
| successful. | successful. Registration requests that are undetermined for a period | |||
| longer than 21 days can be brought to the IESG's attention (using the | ||||
| iesg@iesg.org mailing list) for resolution. | ||||
| Criteria that should be applied by the Designated Expert(s) includes | ||||
| determining whether the proposed registration duplicates existing | ||||
| functionality, determining whether it is likely to be of general | ||||
| applicability or whether it is useful only for a single application, | ||||
| and whether the registration makes sense. | ||||
| IANA must only accept registry updates from the Designated Expert(s) | IANA must only accept registry updates from the Designated Expert(s) | |||
| and should direct all requests for registration to the review mailing | and should direct all requests for registration to the review mailing | |||
| list. | list. | |||
| It is suggested that multiple Designated Experts be appointed who are | ||||
| able to represent the perspectives of different applications using | ||||
| this specification, in order to enable broadly-informed review of | ||||
| registration decisions. In cases where a registration decision could | ||||
| be perceived as creating a conflict of interest for a particular | ||||
| Expert, that Expert should defer to the judgment of the other | ||||
| Expert(s). | ||||
| 7.1. JSON Web Key Parameters Registry | 7.1. JSON Web Key Parameters Registry | |||
| This specification establishes the IANA JSON Web Key Parameters | This specification establishes the IANA JSON Web Key Parameters | |||
| registry for reserved JWK parameter names. The registry records the | registry for JWK parameter names. The registry records the parameter | |||
| reserved parameter name and a reference to the specification that | name, the key type(s) that the parameter is used with, and a | |||
| defines it. It also records whether the parameter conveys public or | reference to the specification that defines it. It also records | |||
| private information. This specification registers the parameter | whether the parameter conveys public or private information. This | |||
| names defined in Section 3. The same JWK parameter name may be | specification registers the parameter names defined in Section 3. | |||
| registered multiple times, provided that duplicate parameter | The same JWK parameter name may be registered multiple times, | |||
| registrations are only for algorithm-specific JWK parameters; in this | provided that duplicate parameter registrations are only for key type | |||
| case, the meaning of the duplicate parameter name is disambiguated by | specific JWK parameters; in this case, the meaning of the duplicate | |||
| the "kty" value of the JWK containing it. | parameter name is disambiguated by the "kty" value of the JWK | |||
| containing it. | ||||
| 7.1.1. Registration Template | 7.1.1. Registration Template | |||
| Parameter Name: | Parameter Name: | |||
| The name requested (e.g., "example"). This name is case | The name requested (e.g., "example"). Because a core goal of this | |||
| sensitive. Names that match other registered names in a case | specification is for the resulting representations to be compact, | |||
| insensitive manner SHOULD NOT be accepted. | it is RECOMMENDED that the name be short -- not to exceed 8 | |||
| characters without a compelling reason to do so. This name is | ||||
| case sensitive. Names may not match other registered names in a | ||||
| case insensitive manner unless the Designated Expert(s) state that | ||||
| there is a compelling reason to allow an exception in this | ||||
| particular case. | ||||
| Used with "kty" Value(s): | ||||
| The key type parameter value(s) that the parameter name is to be | ||||
| used with, or the value "*" if the parameter value is used with | ||||
| all key types. | ||||
| Parameter Information Class: | Parameter Information Class: | |||
| Registers whether the parameter conveys public or private | Registers whether the parameter conveys public or private | |||
| information. Its value must be one the words Public or Private. | information. Its value must be one the words Public or Private. | |||
| Change Controller: | Change Controller: | |||
| For Standards Track RFCs, state "IETF". For others, give the name | For Standards Track RFCs, state "IESG". For others, give the name | |||
| of the responsible party. Other details (e.g., postal address, | of the responsible party. Other details (e.g., postal address, | |||
| email address, home page URI) may also be included. | email address, home page URI) may also be included. | |||
| Specification Document(s): | Specification Document(s): | |||
| Reference to the document(s) that specify the parameter, | Reference to the document(s) that specify the parameter, | |||
| preferably including URI(s) that can be used to retrieve copies of | preferably including URI(s) that can be used to retrieve copies of | |||
| the document(s). An indication of the relevant sections may also | the document(s). An indication of the relevant sections may also | |||
| be included but is not required. | be included but is not required. | |||
| 7.1.2. Initial Registry Contents | 7.1.2. Initial Registry Contents | |||
| o Parameter Name: "kty" | o Parameter Name: "kty" | |||
| o Used with "kty" Value(s): * | ||||
| o Parameter Information Class: Public | o Parameter Information Class: Public | |||
| o Change Controller: IETF | o Change Controller: IESG | |||
| o Specification Document(s): Section 3.1 of [[ this document ]] | o Specification Document(s): Section 3.1 of [[ this document ]] | |||
| o Parameter Name: "use" | o Parameter Name: "use" | |||
| o Used with "kty" Value(s): * | ||||
| o Parameter Information Class: Public | o Parameter Information Class: Public | |||
| o Change Controller: IETF | 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 Parameter Name: "alg" | o Parameter Name: "alg" | |||
| o Used with "kty" Value(s): * | ||||
| o Parameter Information Class: Public | o Parameter Information Class: Public | |||
| o Change Controller: IETF | o Change Controller: IESG | |||
| o Specification Document(s): Section 3.3 of [[ this document ]] | o Specification Document(s): Section 3.3 of [[ this document ]] | |||
| o Parameter Name: "kid" | o Parameter Name: "kid" | |||
| o Used with "kty" Value(s): * | ||||
| o Parameter Information Class: Public | o Parameter Information Class: Public | |||
| o Change Controller: IETF | o Change Controller: IESG | |||
| o Specification Document(s): Section 3.4 of [[ this document ]] | o Specification Document(s): Section 3.4 of [[ this document ]] | |||
| o Parameter Name: "x5u" | o Parameter Name: "x5u" | |||
| o Used with "kty" Value(s): * | ||||
| o Parameter Information Class: Public | o Parameter Information Class: Public | |||
| o Change Controller: IETF | o Change Controller: IESG | |||
| o Specification Document(s): Section 3.5 of [[ this document ]] | o Specification Document(s): Section 3.5 of [[ this document ]] | |||
| o Parameter Name: "x5t" | o Parameter Name: "x5t" | |||
| o Used with "kty" Value(s): * | ||||
| o Parameter Information Class: Public | o Parameter Information Class: Public | |||
| o Change Controller: IETF | o Change Controller: IESG | |||
| o Specification Document(s): Section 3.6 of [[ this document ]] | o Specification Document(s): Section 3.6 of [[ this document ]] | |||
| o Parameter Name: "x5c" | o Parameter Name: "x5c" | |||
| o Used with "kty" Value(s): * | ||||
| o Parameter Information Class: Public | o Parameter Information Class: Public | |||
| o Change Controller: IETF | o Change Controller: IESG | |||
| o Specification Document(s): Section 3.7 of [[ this document ]] | o Specification Document(s): Section 3.7 of [[ this document ]] | |||
| 7.2. JSON Web Key Set Parameters Registry | 7.2. JSON Web Key Use Registry | |||
| This specification establishes the IANA JSON Web Key Set Parameters | This specification establishes the IANA JSON Web Key Use registry for | |||
| registry for reserved JWK Set parameter names. The registry records | JWK "use" member values. The registry records the key use value and | |||
| the reserved parameter name and a reference to the specification that | a reference to the specification that defines it. This specification | |||
| defines it. This specification registers the parameter names defined | registers the parameter names defined in Section 3.2. | |||
| in Section 4. | ||||
| 7.2.1. Registration Template | 7.2.1. Registration Template | |||
| Parameter Name: | Use Member Value: | |||
| The name requested (e.g., "example"). This name is case | The name requested (e.g., "example"). Because a core goal of this | |||
| sensitive. Names that match other registered names in a case | specification is for the resulting representations to be compact, | |||
| insensitive manner SHOULD NOT be accepted. | it is RECOMMENDED that the name be short -- not to exceed 8 | |||
| characters without a compelling reason to do so. This name is | ||||
| case sensitive. Names may not match other registered names in a | ||||
| case insensitive manner unless the Designated Expert(s) state that | ||||
| there is a compelling reason to allow an exception in this | ||||
| particular case. | ||||
| Change Controller: | Change Controller: | |||
| For Standards Track RFCs, state "IETF". For others, give the name | For Standards Track RFCs, state "IESG". For others, give the name | |||
| of the responsible party. Other details (e.g., postal address, | of the responsible party. Other details (e.g., postal address, | |||
| email address, home page URI) may also be included. | email address, home page URI) may also be included. | |||
| Specification Document(s): | Specification Document(s): | |||
| Reference to the document(s) that specify the parameter, | Reference to the document(s) that specify the parameter, | |||
| preferably including URI(s) that can be used to retrieve copies of | preferably including URI(s) that can be used to retrieve copies of | |||
| the document(s). An indication of the relevant sections may also | the document(s). An indication of the relevant sections may also | |||
| be included but is not required. | be included but is not required. | |||
| 7.2.2. Initial Registry Contents | 7.2.2. Initial Registry Contents | |||
| o Use Member Value: "sig" | ||||
| o Change Controller: IESG | ||||
| o Specification Document(s): Section 3.2 of [[ this document ]] | ||||
| o Use Member Value: "enc" | ||||
| o Change Controller: IESG | ||||
| o Specification Document(s): Section 3.2 of [[ this document ]] | ||||
| 7.3. JSON Web Key Set Parameters Registry | ||||
| This specification establishes the IANA JSON Web Key Set Parameters | ||||
| registry for JWK Set parameter names. The registry records the | ||||
| parameter name and a reference to the specification that defines it. | ||||
| This specification registers the parameter names defined in | ||||
| Section 4. | ||||
| 7.3.1. Registration Template | ||||
| Parameter Name: | ||||
| The name requested (e.g., "example"). Because a core goal of this | ||||
| specification is for the resulting representations to be compact, | ||||
| it is RECOMMENDED that the name be short -- not to exceed 8 | ||||
| characters without a compelling reason to do so. This name is | ||||
| case sensitive. Names may not match other registered names in a | ||||
| case insensitive manner unless the Designated Expert(s) state that | ||||
| there is a compelling reason to allow an exception in this | ||||
| particular case. | ||||
| Change Controller: | ||||
| For Standards Track RFCs, state "IESG". For others, give the name | ||||
| of the responsible party. Other details (e.g., postal address, | ||||
| email address, home page URI) may also be included. | ||||
| Specification Document(s): | ||||
| Reference to the document(s) that specify the parameter, | ||||
| preferably including URI(s) that can be used to retrieve copies of | ||||
| the document(s). An indication of the relevant sections may also | ||||
| be included but is not required. | ||||
| 7.3.2. Initial Registry Contents | ||||
| o Parameter Name: "keys" | o Parameter Name: "keys" | |||
| o Change Controller: IETF | o Change Controller: IESG | |||
| o Specification Document(s): Section 4.1 of [[ this document ]] | o Specification Document(s): Section 4.1 of [[ this document ]] | |||
| 7.3. JSON Web Signature and Encryption Type Values Registration | 7.4. JSON Web Signature and Encryption Type Values Registration | |||
| 7.3.1. Registry Contents | 7.4.1. Registry Contents | |||
| This specification registers the "JWK" and "JWK-SET" type values in | This specification registers the "JWK" and "JWK-SET" type values in | |||
| the IANA JSON Web Signature and Encryption Type Values registry | the IANA JSON Web Signature and Encryption Type Values registry | |||
| [JWS], which can be used to indicate, respectively, that the content | defined in [JWS], which can be used to indicate, respectively, that | |||
| is a JWK or a JWK Set. | the content is a JWK or a JWK Set. | |||
| o "typ" Header Parameter Value: "JWK" | o "typ" Header Parameter Value: "JWK" | |||
| o Abbreviation for MIME Type: application/jwk+json | o Abbreviation for MIME Type: application/jwk+json | |||
| o Change Controller: IETF | o Change Controller: IESG | |||
| o Specification Document(s): Section 3 of [[ this document ]] | o Specification Document(s): Section 3 of [[ this document ]] | |||
| o "typ" Header Parameter Value: "JWK-SET" | o "typ" Header Parameter Value: "JWK-SET" | |||
| o Abbreviation for MIME Type: application/jwk-set+json | o Abbreviation for MIME Type: application/jwk-set+json | |||
| o Change Controller: IETF | o Change Controller: IESG | |||
| o Specification Document(s): Section 4 of [[ this document ]] | o Specification Document(s): Section 4 of [[ this document ]] | |||
| 7.4. Media Type Registration | 7.5. Media Type Registration | |||
| 7.4.1. Registry Contents | ||||
| 7.5.1. Registry Contents | ||||
| This specification registers the "application/jwk+json" and | This specification registers the "application/jwk+json" and | |||
| "application/jwk-set+json" Media Types [RFC2046] in the MIME Media | "application/jwk-set+json" Media Types [RFC2046] in the MIME Media | |||
| Type registry [RFC4288], which can be used to indicate, respectively, | Types registry [IANA.MediaTypes], which can be used to indicate, | |||
| that the content is a JWK or a JWK Set. | respectively, that the content is a JWK or a JWK Set. | |||
| o Type Name: application | o Type Name: application | |||
| o Subtype Name: jwk+json | o Subtype Name: jwk+json | |||
| o Required Parameters: n/a | o Required Parameters: n/a | |||
| o Optional Parameters: n/a | o Optional Parameters: n/a | |||
| o Encoding considerations: application/jwk+json values are | o Encoding considerations: 8bit; application/jwk+json values are | |||
| represented as JSON object; UTF-8 encoding SHOULD be employed for | represented as JSON object; UTF-8 encoding SHOULD be employed for | |||
| the JSON object. | the JSON object. | |||
| o Security Considerations: See the Security Considerations section | o Security Considerations: See the Security Considerations section | |||
| of [[ this document ]] | of [[ this document ]] | |||
| o Interoperability Considerations: n/a | o Interoperability Considerations: n/a | |||
| o Published Specification: [[ this document ]] | o Published Specification: [[ this document ]] | |||
| o Applications that use this media type: TBD | o Applications that use this media type: TBD | |||
| o Additional Information: Magic number(s): n/a, File extension(s): | o Additional Information: Magic number(s): n/a, File extension(s): | |||
| n/a, Macintosh file type code(s): n/a | n/a, Macintosh file type code(s): n/a | |||
| o Person & email address to contact for further information: Michael | o Person & email address to contact for further information: Michael | |||
| B. Jones, mbj@microsoft.com | B. Jones, mbj@microsoft.com | |||
| o Intended Usage: COMMON | o Intended Usage: COMMON | |||
| o Restrictions on Usage: none | o Restrictions on Usage: none | |||
| o Author: Michael B. Jones, mbj@microsoft.com | o Author: Michael B. Jones, mbj@microsoft.com | |||
| o Change Controller: IETF | o Change Controller: IESG | |||
| o Type Name: application | o Type Name: application | |||
| o Subtype Name: jwk-set+json | o Subtype Name: jwk-set+json | |||
| o Required Parameters: n/a | o Required Parameters: n/a | |||
| o Optional Parameters: n/a | o Optional Parameters: n/a | |||
| o Encoding considerations: application/jwk-set+json values are | o Encoding considerations: 8bit; application/jwk-set+json values are | |||
| represented as a JSON Object; UTF-8 encoding SHOULD be employed | represented as a JSON Object; UTF-8 encoding SHOULD be employed | |||
| for the JSON object. | for the JSON object. | |||
| o Security Considerations: See the Security Considerations section | o Security Considerations: See the Security Considerations section | |||
| of [[ this document ]] | of [[ this document ]] | |||
| o Interoperability Considerations: n/a | o Interoperability Considerations: n/a | |||
| o Published Specification: [[ this document ]] | o Published Specification: [[ this document ]] | |||
| o Applications that use this media type: TBD | o Applications that use this media type: TBD | |||
| o Additional Information: Magic number(s): n/a, File extension(s): | o Additional Information: Magic number(s): n/a, File extension(s): | |||
| n/a, Macintosh file type code(s): n/a | n/a, Macintosh file type code(s): n/a | |||
| o Person & email address to contact for further information: Michael | o Person & email address to contact for further information: Michael | |||
| skipping to change at page 11, line 48 ¶ | skipping to change at page 15, line 4 ¶ | |||
| for the JSON object. | for the JSON object. | |||
| o Security Considerations: See the Security Considerations section | o Security Considerations: See the Security Considerations section | |||
| of [[ this document ]] | of [[ this document ]] | |||
| o Interoperability Considerations: n/a | o Interoperability Considerations: n/a | |||
| o Published Specification: [[ this document ]] | o Published Specification: [[ this document ]] | |||
| o Applications that use this media type: TBD | o Applications that use this media type: TBD | |||
| o Additional Information: Magic number(s): n/a, File extension(s): | o Additional Information: Magic number(s): n/a, File extension(s): | |||
| n/a, Macintosh file type code(s): n/a | n/a, Macintosh file type code(s): n/a | |||
| o Person & email address to contact for further information: Michael | o Person & email address to contact for further information: Michael | |||
| B. Jones, mbj@microsoft.com | B. Jones, mbj@microsoft.com | |||
| o Intended Usage: COMMON | o Intended Usage: COMMON | |||
| o Restrictions on Usage: none | o Restrictions on Usage: none | |||
| o Author: Michael B. Jones, mbj@microsoft.com | o Author: Michael B. Jones, mbj@microsoft.com | |||
| o Change Controller: IETF | o Change Controller: IESG | |||
| 8. Security Considerations | 8. Security Considerations | |||
| All of the security issues faced by any cryptographic application | All of the security issues faced by any cryptographic application | |||
| must be faced by a JWS/JWE/JWK agent. Among these issues are | must be faced by a JWS/JWE/JWK agent. Among these issues are | |||
| protecting the user's private and symmetric keys, preventing various | protecting the user's private and symmetric keys, preventing various | |||
| attacks, and helping the user avoid mistakes such as inadvertently | attacks, and helping the user avoid mistakes such as inadvertently | |||
| encrypting a message for the wrong recipient. The entire list of | encrypting a message for the wrong recipient. The entire list of | |||
| security considerations is beyond the scope of this document, but | security considerations is beyond the scope of this document, but | |||
| some significant considerations are listed here. | some significant considerations are listed here. | |||
| skipping to change at page 12, line 43 ¶ | skipping to change at page 15, line 46 ¶ | |||
| The TLS Requirements in [JWS] also apply to this specification. | The TLS Requirements in [JWS] also apply to this specification. | |||
| 9. References | 9. References | |||
| 9.1. Normative References | 9.1. Normative References | |||
| [ECMAScript] | [ECMAScript] | |||
| Ecma International, "ECMAScript Language Specification, | Ecma International, "ECMAScript Language Specification, | |||
| 5.1 Edition", ECMA 262, June 2011. | 5.1 Edition", ECMA 262, June 2011. | |||
| [IANA.MediaTypes] | ||||
| Internet Assigned Numbers Authority (IANA), "MIME Media | ||||
| Types", 2005. | ||||
| [ITU.X690.1994] | [ITU.X690.1994] | |||
| International Telecommunications Union, "Information | International Telecommunications Union, "Information | |||
| Technology - ASN.1 encoding rules: Specification of Basic | Technology - ASN.1 encoding rules: Specification of Basic | |||
| Encoding Rules (BER), Canonical Encoding Rules (CER) and | Encoding Rules (BER), Canonical Encoding Rules (CER) and | |||
| Distinguished Encoding Rules (DER)", ITU-T Recommendation | Distinguished Encoding Rules (DER)", ITU-T Recommendation | |||
| X.690, 1994. | X.690, 1994. | |||
| [JWA] Jones, M., "JSON Web Algorithms (JWA)", | [JWA] Jones, M., "JSON Web Algorithms (JWA)", | |||
| draft-ietf-jose-json-web-algorithms (work in progress), | draft-ietf-jose-json-web-algorithms (work in progress), | |||
| September 2013. | September 2013. | |||
| skipping to change at page 13, line 34 ¶ | skipping to change at page 16, line 39 ¶ | |||
| [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, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. | [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. | |||
| [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | |||
| Resource Identifier (URI): Generic Syntax", STD 66, | Resource Identifier (URI): Generic Syntax", STD 66, | |||
| RFC 3986, January 2005. | RFC 3986, January 2005. | |||
| [RFC4288] Freed, N. and J. Klensin, "Media Type Specifications and | ||||
| Registration Procedures", RFC 4288, December 2005. | ||||
| [RFC4627] Crockford, D., "The application/json Media Type for | [RFC4627] Crockford, D., "The application/json Media Type for | |||
| JavaScript Object Notation (JSON)", RFC 4627, July 2006. | JavaScript Object Notation (JSON)", RFC 4627, July 2006. | |||
| [RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data | [RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data | |||
| Encodings", RFC 4648, October 2006. | Encodings", RFC 4648, October 2006. | |||
| [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", BCP 26, RFC 5226, | IANA Considerations Section in RFCs", BCP 26, RFC 5226, | |||
| May 2008. | May 2008. | |||
| skipping to change at page 19, line 17 ¶ | skipping to change at page 22, line 17 ¶ | |||
| Miller, Tony Nadalin, Axel Nennker, John Panzer, Eric Rescorla, Nat | Miller, Tony Nadalin, Axel Nennker, John Panzer, Eric Rescorla, Nat | |||
| Sakimura, Jim Schaad, Paul Tarjan, Hannes Tschofenig, and Sean | Sakimura, Jim Schaad, Paul Tarjan, Hannes Tschofenig, and Sean | |||
| Turner. | Turner. | |||
| Jim Schaad and Karen O'Donoghue chaired the JOSE working group and | Jim Schaad and Karen O'Donoghue chaired the JOSE working group and | |||
| Sean Turner and Stephen Farrell served as Security area directors | Sean Turner and Stephen Farrell served as Security area directors | |||
| during the creation of this specification. | during the creation of this specification. | |||
| Appendix D. Document History | Appendix D. 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 ]] | |||
| -16 | ||||
| o Changes to address editorial and minor issues #41, #42, #43, #47, | ||||
| #51, #67, #71, #76, #80, #83, #84, #85, #86, #87, and #88. | ||||
| -15 | -15 | |||
| o Changes to address editorial issues #48, #64, #65, #66, and #91. | o Changes to address editorial issues #48, #64, #65, #66, and #91. | |||
| -14 | -14 | |||
| o Relaxed language introducing key parameters since some parameters | o Relaxed language introducing key parameters since some parameters | |||
| are applicable to multiple, but not all, key types. | are applicable to multiple, but not all, key types. | |||
| End of changes. 63 change blocks. | ||||
| 131 lines changed or deleted | 245 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/ | ||||