| < draft-jones-json-web-encryption-01.txt | draft-jones-json-web-encryption-02.txt > | |||
|---|---|---|---|---|
| Network Working Group M. Jones | Network Working Group M. Jones | |||
| Internet-Draft Microsoft | Internet-Draft Microsoft | |||
| Intended status: Standards Track E. Rescorla | Intended status: Standards Track E. Rescorla | |||
| Expires: May 2, 2012 RTFM, Inc. | Expires: June 15, 2012 RTFM, Inc. | |||
| J. Hildebrand | J. Hildebrand | |||
| Cisco Systems, Inc. | Cisco Systems, Inc. | |||
| October 30, 2011 | December 13, 2011 | |||
| JSON Web Encryption (JWE) | JSON Web Encryption (JWE) | |||
| draft-jones-json-web-encryption-01 | draft-jones-json-web-encryption-02 | |||
| Abstract | Abstract | |||
| JSON Web Encryption (JWE) is a means of representing encrypted | JSON Web Encryption (JWE) is a means of representing encrypted | |||
| content using JSON data structures. Related signature capabilities | content using JSON data structures. Related signature capabilities | |||
| are described in the separate JSON Web Signature (JWS) specification. | are described in the separate JSON Web Signature (JWS) specification. | |||
| Requirements Language | Requirements Language | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| skipping to change at page 1, line 41 ¶ | skipping to change at page 1, line 41 ¶ | |||
| 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 May 2, 2012. | This Internet-Draft will expire on June 15, 2012. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2011 IETF Trust and the persons identified as the | Copyright (c) 2011 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 | |||
| skipping to change at page 2, line 38 ¶ | skipping to change at page 2, line 38 ¶ | |||
| 9. Encrypting JWEs with Cryptographic Algorithms . . . . . . . . 12 | 9. Encrypting JWEs with Cryptographic Algorithms . . . . . . . . 12 | |||
| 9.1. Encrypting a JWE with TBD . . . . . . . . . . . . . . . . 14 | 9.1. Encrypting a JWE with TBD . . . . . . . . . . . . . . . . 14 | |||
| 9.2. Additional Algorithms . . . . . . . . . . . . . . . . . . 14 | 9.2. Additional Algorithms . . . . . . . . . . . . . . . . . . 14 | |||
| 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 11. Security Considerations . . . . . . . . . . . . . . . . . . . 15 | 11. Security Considerations . . . . . . . . . . . . . . . . . . . 15 | |||
| 11.1. Unicode Comparison Security Issues . . . . . . . . . . . . 15 | 11.1. Unicode Comparison Security Issues . . . . . . . . . . . . 15 | |||
| 12. Open Issues and Things To Be Done (TBD) . . . . . . . . . . . 16 | 12. Open Issues and Things To Be Done (TBD) . . . . . . . . . . . 16 | |||
| 13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 17 | 13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 13.1. Normative References . . . . . . . . . . . . . . . . . . . 17 | 13.1. Normative References . . . . . . . . . . . . . . . . . . . 17 | |||
| 13.2. Informative References . . . . . . . . . . . . . . . . . . 19 | 13.2. Informative References . . . . . . . . . . . . . . . . . . 19 | |||
| Appendix A. JWE Examples . . . . . . . . . . . . . . . . . . . . 20 | Appendix A. JWE Examples . . . . . . . . . . . . . . . . . . . . 19 | |||
| A.1. JWE Example using TBD Algorithm . . . . . . . . . . . . . 20 | A.1. JWE Example using TBD Algorithm . . . . . . . . . . . . . 20 | |||
| A.1.1. Encrypting . . . . . . . . . . . . . . . . . . . . . . 20 | A.1.1. Encrypting . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| A.1.2. Decrypting . . . . . . . . . . . . . . . . . . . . . . 20 | A.1.2. Decrypting . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| Appendix B. Algorithm Identifier Cross-Reference . . . . . . . . 20 | Appendix B. Algorithm Identifier Cross-Reference . . . . . . . . 20 | |||
| Appendix C. Acknowledgements . . . . . . . . . . . . . . . . . . 23 | Appendix C. Acknowledgements . . . . . . . . . . . . . . . . . . 23 | |||
| Appendix D. Document History . . . . . . . . . . . . . . . . . . 23 | Appendix D. Document History . . . . . . . . . . . . . . . . . . 23 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 24 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 24 | |||
| 1. Introduction | 1. Introduction | |||
| skipping to change at page 3, line 29 ¶ | skipping to change at page 3, line 29 ¶ | |||
| the JWE Header, the JWE Encrypted Key, and the JWE Ciphertext. | the JWE Header, the JWE Encrypted Key, and the JWE Ciphertext. | |||
| Plaintext The bytes to be encrypted - a.k.a., the message. | Plaintext The bytes to be encrypted - a.k.a., the message. | |||
| Ciphertext The encrypted version of the Plaintext. | Ciphertext The encrypted version of the Plaintext. | |||
| Content Encryption Key (CEK) A symmetric key generated to encrypt | Content Encryption Key (CEK) A symmetric key generated to encrypt | |||
| the Plaintext for the recipient to produce the Ciphertext, which | the Plaintext for the recipient to produce the Ciphertext, which | |||
| is encrypted to the recipient as the JWE Encrypted Key. | is encrypted to the recipient as the JWE Encrypted Key. | |||
| JWE Header A string containing a JSON object that describes the | JWE Header A string representing a JSON object that describes the | |||
| encryption operations applied to create the JWE Encrypted Key and | encryption operations applied to create the JWE Encrypted Key and | |||
| the JWE Ciphertext. | the JWE Ciphertext. | |||
| JWE Encrypted Key The Content Encryption Key (CEK) is encrypted with | JWE Encrypted Key The Content Encryption Key (CEK) is encrypted with | |||
| the intended recipient's key and the resulting encrypted content | the intended recipient's key and the resulting encrypted content | |||
| is recorded as a byte array, which is referred to as the JWE | is recorded as a byte array, which is referred to as the JWE | |||
| Encrypted Key. | Encrypted Key. | |||
| JWE Ciphertext A byte array containing the Ciphertext. | JWE Ciphertext A byte array containing the Ciphertext. | |||
| skipping to change at page 4, line 23 ¶ | skipping to change at page 4, line 23 ¶ | |||
| encoding without padding.) | encoding without padding.) | |||
| 3. JSON Web Encryption (JWE) Overview | 3. JSON Web Encryption (JWE) Overview | |||
| JWE represents encrypted content using JSON data structures and | JWE represents encrypted content using JSON data structures and | |||
| base64url encoding. The representation consists of three parts: the | base64url encoding. The representation consists of three parts: the | |||
| JWE Header, the JWE Encrypted Key, and the JWE Ciphertext. The three | JWE Header, the JWE Encrypted Key, and the JWE Ciphertext. The three | |||
| parts are base64url-encoded for transmission, and typically | parts are base64url-encoded for transmission, and typically | |||
| represented as the concatenation of the encoded strings in that | represented as the concatenation of the encoded strings in that | |||
| order, with the three strings being separated by period ('.') | order, with the three strings being separated by period ('.') | |||
| characters, as is done when used in JSON Web Tokens (JWTs) [JWT]. | characters. | |||
| JWE utilizes encryption to ensure the confidentiality of the contents | JWE utilizes encryption to ensure the confidentiality of the contents | |||
| of the Plaintext. JWE does not add a content integrity check if not | of the Plaintext. JWE does not add a content integrity check if not | |||
| provided by the underlying encryption algorithm. If such a check is | provided by the underlying encryption algorithm. If such a check is | |||
| needed, an algorithm providing it such as AES-GCM [NIST-800-38D] can | needed, an algorithm providing it such as AES-GCM [NIST-800-38D] can | |||
| be used, or alternatively, it can be provided through composition by | be used, or alternatively, it can be provided through composition by | |||
| encrypting a representation of the signed content. | encrypting a representation of the signed content. | |||
| 3.1. Example JWE | 3.1. Example JWE | |||
| skipping to change at page 5, line 11 ¶ | skipping to change at page 5, line 11 ¶ | |||
| o the thumbprint of the X.509 certificate that corresponds to the | o the thumbprint of the X.509 certificate that corresponds to the | |||
| key used to encrypt the JWE has the base64url encoding | key used to encrypt the JWE has the base64url encoding | |||
| "7noOPq-hJ1_hCnvWh6IeYI2w9Q0". | "7noOPq-hJ1_hCnvWh6IeYI2w9Q0". | |||
| {"alg":"RSA1_5", | {"alg":"RSA1_5", | |||
| "enc":"A256GCM", | "enc":"A256GCM", | |||
| "iv":"__79_Pv6-fg", | "iv":"__79_Pv6-fg", | |||
| "x5t":"7noOPq-hJ1_hCnvWh6IeYI2w9Q0"} | "x5t":"7noOPq-hJ1_hCnvWh6IeYI2w9Q0"} | |||
| Base64url encoding the bytes of the UTF-8 representation of the JWE | Base64url encoding the bytes of the UTF-8 representation of the JWE | |||
| Header yields this Encoded JWE Header value: | Header yields this Encoded JWE Header value (with line breaks for | |||
| TBD | display purposes only): | |||
| eyJhbGciOiJSU0ExXzUiLA0KICJlbmMiOiJBMjU2R0NNIiwNCiAiaXYiOiJfXzc5 | ||||
| X1B2Ni1mZyIsDQogIng1dCI6Ijdub09QcS1oSjFfaENudldoNkllWUkydzlRMCJ9 | ||||
| TBD: Finish this example by showing generation of a Content | TBD: Finish this example by showing generation of a Content | |||
| Encryption Key (CEK), using the CEK to encrypt the Plaintext to | Encryption Key (CEK), using the CEK to encrypt the Plaintext to | |||
| produce the Ciphertext (and base64url encoding it), and using the | produce the Ciphertext (and base64url encoding it), and using the | |||
| recipient's key to encrypt the CEK to produce the JWE Encrypted Key | recipient's key to encrypt the CEK to produce the JWE Encrypted Key | |||
| (and base64url encoding it). | (and base64url encoding it). | |||
| 4. JWE Header | 4. JWE Header | |||
| The members of the JWE Header describe the encryption applied to the | The members of the JSON object represented by the JWE Header describe | |||
| Plaintext. Implementations MUST understand the entire contents of | the encryption applied to the Plaintext and optionally additional | |||
| the header; otherwise, the JWE MUST be rejected for processing. | properties of the JWE. The Header Parameter Names within this object | |||
| MUST be unique. Implementations MUST understand the entire contents | ||||
| The member names within the JWE Header are referred to as Header | of the header; otherwise, the JWE MUST be rejected for processing. | |||
| Parameter Names. These names MUST be unique. The corresponding | ||||
| values are referred to as Header Parameter Values. | ||||
| 4.1. Reserved Header Parameter Names | 4.1. Reserved Header Parameter Names | |||
| The following header parameter names are reserved. All the names are | The following header parameter names are reserved. All the names are | |||
| short because a core goal of JWE is for the representations to be | short because a core goal of JWE is for the representations to be | |||
| compact. | compact. | |||
| TBD: Describe the relationship between the JWS and JWE header | TBD: Describe the relationship between the JWS and JWE header | |||
| parameters - especially the "alg" parameter, which can contain either | parameters - especially the "alg" parameter, which can contain either | |||
| signature algorithms (from JWS) or encryption algorithms (from JWE), | signature algorithms (from JWS) or encryption algorithms (from JWE), | |||
| skipping to change at page 6, line 14 ¶ | skipping to change at page 6, line 14 ¶ | |||
| +-----------+--------+-------------+--------------------------------+ | +-----------+--------+-------------+--------------------------------+ | |||
| | Header | JSON | Header | Header Parameter Semantics | | | Header | JSON | Header | Header Parameter Semantics | | |||
| | Parameter | Value | Parameter | | | | Parameter | Value | Parameter | | | |||
| | Name | Type | Syntax | | | | Name | Type | Syntax | | | |||
| +-----------+--------+-------------+--------------------------------+ | +-----------+--------+-------------+--------------------------------+ | |||
| | alg | string | StringOrURI | The "alg" (algorithm) header | | | alg | string | StringOrURI | The "alg" (algorithm) header | | |||
| | | | | parameter identifies the | | | | | | parameter identifies the | | |||
| | | | | cryptographic algorithm used | | | | | | cryptographic algorithm used | | |||
| | | | | to secure the JWE Encrypted | | | | | | to secure the JWE Encrypted | | |||
| | | | | Key. A list of reserved "alg" | | | | | | Key. A list of defined "alg" | | |||
| | | | | values is presented in | | | | | | values is presented in | | |||
| | | | | Table 3. The processing of | | | | | | Table 3. The processing of | | |||
| | | | | the "alg" (algorithm) header | | | | | | the "alg" (algorithm) header | | |||
| | | | | parameter requires that the | | | | | | parameter requires that the | | |||
| | | | | value of the "alg" header | | | | | | value MUST be one that is both | | |||
| | | | | parameter MUST be one that is | | | | | | supported and for which there | | |||
| | | | | both supported and for which | | | | | | exists a key for use with that | | |||
| | | | | there exists a key for use | | | | | | algorithm associated with the | | |||
| | | | | with that algorithm associated | | | | | | intended recipient. The "alg" | | |||
| | | | | with the intended recipient. | | | | | | value is case sensitive. This | | |||
| | | | | The "alg" value is case | | | | | | header parameter is REQUIRED. | | |||
| | | | | sensitive. This header | | ||||
| | | | | parameter is REQUIRED. | | ||||
| | enc | string | StringOrURI | The "enc" (encryption method) | | | enc | string | StringOrURI | The "enc" (encryption method) | | |||
| | | | | header parameter identifies | | | | | | header parameter identifies | | |||
| | | | | the symmetric encryption | | | | | | the symmetric encryption | | |||
| | | | | algorithm used to secure the | | | | | | algorithm used to secure the | | |||
| | | | | Ciphertext. A list of | | | | | | Ciphertext. A list of defined | | |||
| | | | | reserved "enc" values is | | | | | | "enc" values is presented in | | |||
| | | | | presented in Table 4. The | | | | | | Table 4. The processing of | | |||
| | | | | processing of the "enc" | | | | | | the "enc" (encryption method) | | |||
| | | | | (encryption method) header | | | | | | header parameter requires that | | |||
| | | | | parameter requires that the | | | | | | the value MUST be one that is | | |||
| | | | | value of the "enc" header | | ||||
| | | | | parameter MUST be one that is | | ||||
| | | | | supported. The "enc" value is | | | | | | supported. The "enc" value is | | |||
| | | | | case sensitive. This header | | | | | | case sensitive. This header | | |||
| | | | | parameter is REQUIRED. | | | | | | parameter is REQUIRED. | | |||
| | iv | string | String | Initialization Vector ("iv") | | | iv | string | String | Initialization Vector ("iv") | | |||
| | | | | value for algorithms requiring | | | | | | value for algorithms requiring | | |||
| | | | | it, represented as a base64url | | | | | | it, represented as a base64url | | |||
| | | | | encoded string. This header | | | | | | encoded string. This header | | |||
| | | | | parameter is OPTIONAL. | | | | | | parameter is OPTIONAL. | | |||
| | epk | object | JWK Key | Ephemeral Public Key ("epk") | | | epk | object | JWK Key | Ephemeral Public Key ("epk") | | |||
| | | | Object | value created by the | | | | | Object | value created by the | | |||
| | | | | originator for the use in | | | | | | originator for the use in | | |||
| | | | | ECDH-ES RFC 6090 [RFC6090] | | | | | | ECDH-ES RFC 6090 [RFC6090] | | |||
| | | | | encryption. This key is | | | | | | encryption. This key is | | |||
| | | | | represented in the same manner | | | | | | represented in the same manner | | |||
| | | | | as a JSON Web Key [JWK] JWK | | | | | | as a JSON Web Key [JWK] JWK | | |||
| | | | | Key Object value, containing | | | | | | Key Object value, containing | | |||
| | | | | "curve", "x", and "y" members. | | | | | | "crv" (curve), "x", and "y" | | |||
| | | | | The inclusion of the JWK Key | | | | | | members. The inclusion of the | | |||
| | | | | Object "algorithm" member is | | | | | | JWK Key Object "alg" | | |||
| | | | | (algorithm) member is | | ||||
| | | | | OPTIONAL. This header | | | | | | OPTIONAL. This header | | |||
| | | | | parameter is OPTIONAL. | | | | | | parameter is OPTIONAL. | | |||
| | zip | string | String | Compression algorithm ("zip") | | | zip | string | String | Compression algorithm ("zip") | | |||
| | | | | applied to the Plaintext | | | | | | applied to the Plaintext | | |||
| | | | | before encryption, if any. | | | | | | before encryption, if any. | | |||
| | | | | This specification defines the | | | | | | This specification defines the | | |||
| | | | | value "GZIP" to refer to the | | | | | | value "GZIP" to refer to the | | |||
| | | | | encoding format produced by | | | | | | encoding format produced by | | |||
| | | | | the file compression program | | | | | | the file compression program | | |||
| | | | | "gzip" (GNU zip) as described | | | | | | "gzip" (GNU zip) as described | | |||
| skipping to change at page 10, line 24 ¶ | skipping to change at page 10, line 24 ¶ | |||
| Table 2: Header Parameter Syntax Definitions | Table 2: Header Parameter Syntax Definitions | |||
| 4.2. Public Header Parameter Names | 4.2. Public Header Parameter Names | |||
| Additional header parameter names can be defined by those using JWE. | Additional header parameter names can be defined by those using JWE. | |||
| However, in order to prevent collisions, any new header parameter | However, in order to prevent collisions, any new header parameter | |||
| name or algorithm value SHOULD either be defined in the IANA JSON Web | name or algorithm value SHOULD either be defined in the IANA JSON Web | |||
| Encryption Header Parameters registry or be defined as a URI that | Encryption Header Parameters registry or be defined as a URI that | |||
| contains a collision resistant namespace. In each case, the definer | contains a collision resistant namespace. In each case, the definer | |||
| of the name or value MUST take reasonable precautions to make sure | of the name or value needs to take reasonable precautions to make | |||
| they are in control of the part of the namespace they use to define | sure they are in control of the part of the namespace they use to | |||
| the header parameter name. | define the header parameter name. | |||
| New header parameters should be introduced sparingly, as they can | New header parameters should be introduced sparingly, as they can | |||
| result in non-interoperable JWEs. | result in non-interoperable JWEs. | |||
| 4.3. Private Header Parameter Names | 4.3. Private Header Parameter Names | |||
| A producer and consumer of a JWE may agree to any header parameter | A producer and consumer of a JWE may agree to any header parameter | |||
| name that is not a Reserved Name Section 4.1 or a Public Name | name that is not a Reserved Name Section 4.1 or a Public Name | |||
| Section 4.2. Unlike Public Names, these private names are subject to | Section 4.2. Unlike Public Names, these private names are subject to | |||
| collision and should be used with caution. | collision and should be used with caution. | |||
| skipping to change at page 11, line 16 ¶ | skipping to change at page 11, line 16 ¶ | |||
| 4. Compress the Plaintext if a "zip" parameter was included. | 4. Compress the Plaintext if a "zip" parameter was included. | |||
| 5. Serialize the (compressed) Plaintext into a bitstring M. | 5. Serialize the (compressed) Plaintext into a bitstring M. | |||
| 6. Encrypt M using the CEK and IV to form the bitstring C. | 6. Encrypt M using the CEK and IV to form the bitstring C. | |||
| 7. Set the Encoded JWE Ciphertext equal to the base64url encoded | 7. Set the Encoded JWE Ciphertext equal to the base64url encoded | |||
| representation of C. | representation of C. | |||
| 8. Create the JWE Header containing the encryption parameters used. | 8. Create a JWE Header containing the encryption parameters used. | |||
| Note that white space is explicitly allowed in the | ||||
| representation and no canonicalization is performed before | ||||
| encoding. | ||||
| 9. Base64url encoded the UTF-8 representation of the JWE Header to | 9. Base64url encode the bytes of the UTF-8 representation of the | |||
| create the Encoded JWE Header. | JWE Header to create the Encoded JWE Header. | |||
| 10. The three encoded parts, taken together, are the result of the | 10. The three encoded parts, taken together, are the result of the | |||
| encryption. | encryption. | |||
| 6. Message Decryption | 6. Message Decryption | |||
| The message decryption process is the reverse of the encryption | The message decryption process is the reverse of the encryption | |||
| process. If any of these steps fails, the JWE MUST be rejected. | process. If any of these steps fails, the JWE MUST be rejected. | |||
| 1. The Encoded JWE Header, the Encoded JWE Encrypted Key, and the | 1. The Encoded JWE Header, the Encoded JWE Encrypted Key, and the | |||
| skipping to change at page 12, line 47 ¶ | skipping to change at page 13, line 4 ¶ | |||
| signature is stripped, leaving just an encrypted message, as well as | signature is stripped, leaving just an encrypted message, as well as | |||
| providing privacy for the signer. | providing privacy for the signer. | |||
| 9. Encrypting JWEs with Cryptographic Algorithms | 9. Encrypting JWEs with Cryptographic Algorithms | |||
| JWE uses cryptographic algorithms to encrypt the Content Encryption | JWE uses cryptographic algorithms to encrypt the Content Encryption | |||
| Key (CEK) and the Plaintext. This section specifies a set of | Key (CEK) and the Plaintext. This section specifies a set of | |||
| specific algorithms for these purposes. | specific algorithms for these purposes. | |||
| The table below Table 3 is the set of "alg" header parameter values | The table below Table 3 is the set of "alg" header parameter values | |||
| that are reserved by this specification. These algorithms are used | that are defined by this specification. These algorithms are used to | |||
| to encrypt the CEK, which produces the JWE Encrypted Key. | encrypt the CEK, which produces the JWE Encrypted Key. | |||
| +-----------+-------------------------------------------------------+ | +-----------+-------------------------------------------------------+ | |||
| | alg | Encryption Algorithm | | | alg | Encryption Algorithm | | |||
| | Parameter | | | | Parameter | | | |||
| | Value | | | | Value | | | |||
| +-----------+-------------------------------------------------------+ | +-----------+-------------------------------------------------------+ | |||
| | RSA1_5 | RSA using RSA-PKCS1-1.5 padding, as defined in RFC | | | RSA1_5 | RSA using RSA-PKCS1-1.5 padding, as defined in RFC | | |||
| | | 3447 [RFC3447] | | | | 3447 [RFC3447] | | |||
| | RSA-OAEP | RSA using Optimal Asymmetric Encryption Padding | | | RSA-OAEP | RSA using Optimal Asymmetric Encryption Padding | | |||
| | | (OAEP), as defined in RFC 3447 [RFC3447] | | | | (OAEP), as defined in RFC 3447 [RFC3447] | | |||
| skipping to change at page 13, line 30 ¶ | skipping to change at page 13, line 32 ¶ | |||
| | A256KW | Advanced Encryption Standard (AES) Key Wrap Algorithm | | | A256KW | Advanced Encryption Standard (AES) Key Wrap Algorithm | | |||
| | | using 256 bit keys, as defined in RFC 3394 [RFC3394] | | | | using 256 bit keys, as defined in RFC 3394 [RFC3394] | | |||
| | A128GCM | Advanced Encryption Standard (AES) using 128 bit keys | | | A128GCM | Advanced Encryption Standard (AES) using 128 bit keys | | |||
| | | in Galois/Counter Mode, as defined in [FIPS-197] and | | | | in Galois/Counter Mode, as defined in [FIPS-197] and | | |||
| | | [NIST-800-38D] | | | | [NIST-800-38D] | | |||
| | A256GCM | Advanced Encryption Standard (AES) using 256 bit keys | | | A256GCM | Advanced Encryption Standard (AES) using 256 bit keys | | |||
| | | in Galois/Counter Mode, as defined in [FIPS-197] and | | | | in Galois/Counter Mode, as defined in [FIPS-197] and | | |||
| | | [NIST-800-38D] | | | | [NIST-800-38D] | | |||
| +-----------+-------------------------------------------------------+ | +-----------+-------------------------------------------------------+ | |||
| Table 3: JWE Reserved alg Parameter Values | Table 3: JWE Defined "alg" Parameter Values | |||
| The table below Table 4 is the set of "enc" header parameter values | The table below Table 4 is the set of "enc" header parameter values | |||
| that are reserved by this specification. These algorithms are used | that are defined by this specification. These algorithms are used to | |||
| to encrypt the Plaintext, which produces the Ciphertext. | encrypt the Plaintext, which produces the Ciphertext. | |||
| +-----------+-------------------------------------------------------+ | +-----------+-------------------------------------------------------+ | |||
| | enc | Symmetric Encryption Algorithm | | | enc | Symmetric Encryption Algorithm | | |||
| | Parameter | | | | Parameter | | | |||
| | Value | | | | Value | | | |||
| +-----------+-------------------------------------------------------+ | +-----------+-------------------------------------------------------+ | |||
| | A128CBC | Advanced Encryption Standard (AES) using 128 bit keys | | | A128CBC | Advanced Encryption Standard (AES) using 128 bit keys | | |||
| | | in Cipher Block Chaining mode, as defined in | | | | in Cipher Block Chaining mode, as defined in | | |||
| | | [FIPS-197] and [NIST-800-38A] | | | | [FIPS-197] and [NIST-800-38A] | | |||
| | A256CBC | Advanced Encryption Standard (AES) using 256 bit keys | | | A256CBC | Advanced Encryption Standard (AES) using 256 bit keys | | |||
| | | in Cipher Block Chaining mode, as defined in | | | | in Cipher Block Chaining mode, as defined in | | |||
| | | [FIPS-197] and [NIST-800-38A] | | | | [FIPS-197] and [NIST-800-38A] | | |||
| | A128GCM | Advanced Encryption Standard (AES) using 128 bit keys | | | A128GCM | Advanced Encryption Standard (AES) using 128 bit keys | | |||
| | | in Galois/Counter Mode, as defined in [FIPS-197] and | | | | in Galois/Counter Mode, as defined in [FIPS-197] and | | |||
| | | [NIST-800-38D] | | | | [NIST-800-38D] | | |||
| | A256GCM | Advanced Encryption Standard (AES) using 256 bit keys | | | A256GCM | Advanced Encryption Standard (AES) using 256 bit keys | | |||
| | | in Galois/Counter Mode, as defined in [FIPS-197] and | | | | in Galois/Counter Mode, as defined in [FIPS-197] and | | |||
| | | [NIST-800-38D] | | | | [NIST-800-38D] | | |||
| +-----------+-------------------------------------------------------+ | +-----------+-------------------------------------------------------+ | |||
| Table 4: JWE Reserved enc Parameter Values | Table 4: JWE Defined "enc" Parameter Values | |||
| Of these algorithms, only RSA-PKCS1-1.5 with 2048 bit keys, AES-128- | Of these algorithms, only RSA-PKCS1-1.5 with 2048 bit keys, AES-128- | |||
| CBC, and AES-256-CBC MUST be implemented by conforming | CBC, and AES-256-CBC MUST be implemented by conforming | |||
| implementations. It is RECOMMENDED that implementations also support | implementations. It is RECOMMENDED that implementations also support | |||
| ECDH-ES with 256 bit keys, AES-128-GCM, and AES-256-GCM. Support for | ECDH-ES with 256 bit keys, AES-128-GCM, and AES-256-GCM. Support for | |||
| other algorithms and key sizes is OPTIONAL. | other algorithms and key sizes is OPTIONAL. | |||
| 9.1. Encrypting a JWE with TBD | 9.1. Encrypting a JWE with TBD | |||
| TBD: Descriptions of the particulars of each specified algorithm go | TBD: Descriptions of the particulars of using each specified | |||
| here. | algorithm go here. | |||
| 9.2. Additional Algorithms | 9.2. Additional Algorithms | |||
| Additional algorithms MAY be used to protect JWEs with corresponding | Additional algorithms MAY be used to protect JWEs with corresponding | |||
| "alg" and "enc" header parameter values being defined to refer to | "alg" and "enc" header parameter values being defined to refer to | |||
| them. New "alg" and "enc" header parameter values SHOULD either be | them. New "alg" and "enc" header parameter values SHOULD either be | |||
| defined in the IANA JSON Web Encryption Algorithms registry or be a | defined in the IANA JSON Web Encryption Algorithms registry or be a | |||
| URI that contains a collision resistant namespace. In particular, | URI that contains a collision resistant namespace. In particular, it | |||
| the use of algorithm identifiers defined in | is permissible to use the algorithm identifiers defined in XML | |||
| [W3C.REC-xmlenc-core-20021210], [W3C.CR-xmlenc-core1-20110303], and | Encryption [W3C.REC-xmlenc-core-20021210], XML Encryption 1.1 | |||
| related specifications is permitted. | [W3C.CR-xmlenc-core1-20110303], and related specifications as "alg" | |||
| and "enc" values. | ||||
| 10. IANA Considerations | 10. IANA Considerations | |||
| This specification calls for: | This specification calls for: | |||
| o A new IANA registry entitled "JSON Web Encryption Header | o A new IANA registry entitled "JSON Web Encryption Header | |||
| Parameters" for reserved header parameter names is defined in | Parameters" for reserved header parameter names is defined in | |||
| Section 4.1. Inclusion in the registry is RFC Required in the RFC | Section 4.1. Inclusion in the registry is RFC Required in the RFC | |||
| 5226 [RFC5226] sense for reserved JWE header parameter names that | 5226 [RFC5226] sense for reserved JWE header parameter names that | |||
| are intended to be interoperable between implementations. The | are intended to be interoperable between implementations. The | |||
| registry will just record the reserved header parameter name and a | registry will just record the reserved header parameter name and a | |||
| pointer to the RFC that defines it. This specification defines | pointer to the RFC that defines it. This specification defines | |||
| inclusion of the header parameter names defined in Table 1. | inclusion of the header parameter names defined in Table 1. | |||
| o A new IANA registry entitled "JSON Web Encryption Algorithms" for | o A new IANA registry entitled "JSON Web Encryption Algorithms" for | |||
| reserved values used with the "alg" and "enc" header parameter | values used with the "alg" and "enc" header parameters is defined | |||
| values, as defined in Section 9.2. Inclusion in the registry is | in Section 9.2. Inclusion in the registry is RFC Required in the | |||
| RFC Required in the RFC 5226 [RFC5226] sense. The registry will | RFC 5226 [RFC5226] sense. The registry will record the "alg" or | |||
| record the "alg" or "enc" value and a pointer to the RFC that | "enc" value and a pointer to the RFC that defines it. This | |||
| defines it. This specification defines inclusion of the algorithm | specification defines inclusion of the algorithm values defined in | |||
| values defined in Table 3 and Table 4. | Table 3 and Table 4. | |||
| 11. Security Considerations | 11. Security Considerations | |||
| TBD: Lots of work to do here. We need to remember to look into any | TBD: Lots of work to do here. We need to remember to look into any | |||
| issues relating to security and JSON parsing. One wonders just how | issues relating to security and JSON parsing. One wonders just how | |||
| secure most JSON parsing libraries are. Were they ever hardened for | secure most JSON parsing libraries are. Were they ever hardened for | |||
| security scenarios? If not, what kind of holes does that open up? | security scenarios? If not, what kind of holes does that open up? | |||
| Also, we need to walk through the JSON standard and see what kind of | Also, we need to walk through the JSON standard and see what kind of | |||
| issues we have especially around comparison of names. For instance, | issues we have especially around comparison of names. For instance, | |||
| comparisons of header parameter names and other parameters must occur | comparisons of header parameter names and other parameters must occur | |||
| skipping to change at page 16, line 17 ¶ | skipping to change at page 16, line 18 ¶ | |||
| 12. Open Issues and Things To Be Done (TBD) | 12. Open Issues and Things To Be Done (TBD) | |||
| The following items remain to be done in this draft: | The following items remain to be done in this draft: | |||
| o Describe the relationship between the JWE, JWS, and JWT header | o Describe the relationship between the JWE, JWS, and JWT header | |||
| parameters. In particular, point out that the set of "alg" values | parameters. In particular, point out that the set of "alg" values | |||
| defined by each must be compatible and non-overlapping. | defined by each must be compatible and non-overlapping. | |||
| o Consider whether we want to define composite signing/encryption | o Consider whether we want to define composite signing/encryption | |||
| operations (as was the consensus to do at IIW, as documented at | operations (as was the consensus to do at IIW, as documented at | |||
| http://self-issued.info/?p=378). | http://self-issued.info/?p=378). This would provide both | |||
| confidentiality and integrity. | ||||
| o Consider whether reusing the JWS "jku", "kid", "x5u", and "x5t" | o Consider whether reusing the JWS "jku", "kid", "x5u", and "x5t" | |||
| parameters is the right thing to do, particularly as it | parameters is the right thing to do, particularly as it | |||
| effectively precludes specifying composite operations. | effectively precludes specifying composite operations. | |||
| o Consider whether to add parameters for directly including keys in | o Consider whether to add parameters for directly including keys in | |||
| the header, either as JWK Key Objects, or X.509 cert values, or | the header, either as JWK Key Objects, or X.509 cert values, or | |||
| both. | both. | |||
| o Consider whether to add version numbers. | o Consider whether to add version numbers. | |||
| skipping to change at page 16, line 48 ¶ | skipping to change at page 17, line 4 ¶ | |||
| bytes of the UTF-8 representation of X'". That would potentially | bytes of the UTF-8 representation of X'". That would potentially | |||
| allow us to omit the "the bytes of" part everywhere else. | allow us to omit the "the bytes of" part everywhere else. | |||
| o Finish the Security Considerations section. | o Finish the Security Considerations section. | |||
| o Write a note in the Security Considerations section about how | o Write a note in the Security Considerations section about how | |||
| "x5t" (x.509 certificate thumbprint) should be deprecated because | "x5t" (x.509 certificate thumbprint) should be deprecated because | |||
| of known problems with SHA-1. | of known problems with SHA-1. | |||
| o Should StringOrURI use IRIs rather than RFC 3986 URIs? | o Should StringOrURI use IRIs rather than RFC 3986 URIs? | |||
| o Provide a more robust description of the use of the IV. The | o Provide a more robust description of the use of the IV. The | |||
| current statement "For GCM, the random 64-bit IV is prepended to | current statement "For GCM, the random 64-bit IV is prepended to | |||
| the ciphertext" in the Symmetric Encryption section is almost | the ciphertext" in the Symmetric Encryption section is almost | |||
| certainly out of place. | certainly out of place. | |||
| o It would be good to say somewhere, in normative language, that | o It would be good to say somewhere, in normative language, that | |||
| eventually the algorithms and/or key sizes currently specified | eventually the algorithms and/or key sizes currently specified | |||
| will no longer be considered sufficiently secure and will be | will no longer be considered sufficiently secure and will be | |||
| removed. Therefore, implementers MUST be prepared for this | removed. Therefore, implementers MUST be prepared for this | |||
| eventuality. | eventuality. | |||
| o Consider whether a media type should be proposed, such as | ||||
| "application/jwe". | ||||
| o Should we define the use of RFC 5649 key wrapping functions, which | o Should we define the use of RFC 5649 key wrapping functions, which | |||
| allow arbitrary key sizes, in addition to the current use of RFC | allow arbitrary key sizes, in addition to the current use of RFC | |||
| 3394 key wrapping functions, which require that keys be multiples | 3394 key wrapping functions, which require that keys be multiples | |||
| of 64 bits? Is this needed in practice? | of 64 bits? Is this needed in practice? | |||
| 13. References | 13. References | |||
| 13.1. Normative References | 13.1. Normative References | |||
| [FIPS-197] | [FIPS-197] | |||
| National Institute of Standards and Technology (NIST), | National Institute of Standards and Technology (NIST), | |||
| "Advanced Encryption Standard (AES)", FIPS PUB 197, | "Advanced Encryption Standard (AES)", FIPS PUB 197, | |||
| November 2001. | November 2001. | |||
| [JWK] Jones, M., "JSON Web Key (JWK)", October 2011. | [JWK] Jones, M., "JSON Web Key (JWK)", December 2011. | |||
| [JWS] Jones, M., Balfanz, D., Bradley, J., Goland, Y., Panzer, | [JWS] Jones, M., Balfanz, D., Bradley, J., Goland, Y., Panzer, | |||
| J., Sakimura, N., and P. Tarjan, "JSON Web Signature | J., Sakimura, N., and P. Tarjan, "JSON Web Signature | |||
| (JWS)", October 2011. | (JWS)", December 2011. | |||
| [NIST-800-38A] | [NIST-800-38A] | |||
| National Institute of Standards and Technology (NIST), | National Institute of Standards and Technology (NIST), | |||
| "Recommendation for Block Cipher Modes of Operation", | "Recommendation for Block Cipher Modes of Operation", | |||
| NIST PUB 800-38A, December 2001. | NIST PUB 800-38A, December 2001. | |||
| [NIST-800-38D] | [NIST-800-38D] | |||
| National Institute of Standards and Technology (NIST), | National Institute of Standards and Technology (NIST), | |||
| "Recommendation for Block Cipher Modes of Operation: | "Recommendation for Block Cipher Modes of Operation: | |||
| Galois/Counter Mode (GCM) and GMAC", NIST PUB 800-38D, | Galois/Counter Mode (GCM) and GMAC", NIST PUB 800-38D, | |||
| skipping to change at page 19, line 10 ¶ | skipping to change at page 19, line 7 ¶ | |||
| May 2008. | May 2008. | |||
| [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | |||
| (TLS) Protocol Version 1.2", RFC 5246, August 2008. | (TLS) Protocol Version 1.2", RFC 5246, August 2008. | |||
| [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | |||
| Housley, R., and W. Polk, "Internet X.509 Public Key | Housley, R., and W. Polk, "Internet X.509 Public Key | |||
| Infrastructure Certificate and Certificate Revocation List | Infrastructure Certificate and Certificate Revocation List | |||
| (CRL) Profile", RFC 5280, May 2008. | (CRL) Profile", RFC 5280, May 2008. | |||
| [RFC5785] Nottingham, M. and E. Hammer-Lahav, "Defining Well-Known | ||||
| Uniform Resource Identifiers (URIs)", RFC 5785, | ||||
| April 2010. | ||||
| [RFC6090] McGrew, D., Igoe, K., and M. Salter, "Fundamental Elliptic | [RFC6090] McGrew, D., Igoe, K., and M. Salter, "Fundamental Elliptic | |||
| Curve Cryptography Algorithms", RFC 6090, February 2011. | Curve Cryptography Algorithms", RFC 6090, February 2011. | |||
| [RFC6125] Saint-Andre, P. and J. Hodges, "Representation and | [RFC6125] Saint-Andre, P. and J. Hodges, "Representation and | |||
| Verification of Domain-Based Application Service Identity | Verification of Domain-Based Application Service Identity | |||
| within Internet Public Key Infrastructure Using X.509 | within Internet Public Key Infrastructure Using X.509 | |||
| (PKIX) Certificates in the Context of Transport Layer | (PKIX) Certificates in the Context of Transport Layer | |||
| Security (TLS)", RFC 6125, March 2011. | Security (TLS)", RFC 6125, March 2011. | |||
| 13.2. Informative References | 13.2. Informative References | |||
| skipping to change at page 19, line 37 ¶ | skipping to change at page 19, line 30 ¶ | |||
| Security Format", draft-rescorla-jsms-00 (work in | Security Format", draft-rescorla-jsms-00 (work in | |||
| progress), March 2011. | progress), March 2011. | |||
| [JCA] Oracle, "Java Cryptography Architecture", 2011. | [JCA] Oracle, "Java Cryptography Architecture", 2011. | |||
| [JSS] Bradley, J. and N. Sakimura (editor), "JSON Simple Sign", | [JSS] Bradley, J. and N. Sakimura (editor), "JSON Simple Sign", | |||
| September 2010. | September 2010. | |||
| [JWT] Jones, M., Balfanz, D., Bradley, J., Goland, Y., Panzer, | [JWT] Jones, M., Balfanz, D., Bradley, J., Goland, Y., Panzer, | |||
| J., Sakimura, N., and P. Tarjan, "JSON Web Token (JWT)", | J., Sakimura, N., and P. Tarjan, "JSON Web Token (JWT)", | |||
| October 2011. | December 2011. | |||
| [RFC3275] Eastlake, D., Reagle, J., and D. Solo, "(Extensible Markup | ||||
| Language) XML-Signature Syntax and Processing", RFC 3275, | ||||
| March 2002. | ||||
| [RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD 70, | [RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD 70, | |||
| RFC 5652, September 2009. | RFC 5652, September 2009. | |||
| [W3C.CR-xmlenc-core1-20110303] | [W3C.CR-xmlenc-core1-20110303] | |||
| Hirsch, F., Reagle, J., Eastlake, D., and T. Roessler, | Hirsch, F., Roessler, T., Reagle, J., and D. Eastlake, | |||
| "XML Encryption Syntax and Processing Version 1.1", World | "XML Encryption Syntax and Processing Version 1.1", World | |||
| Wide Web Consortium CR CR-xmlenc-core1-20110303, | Wide Web Consortium CR CR-xmlenc-core1-20110303, | |||
| March 2011, | March 2011, | |||
| <http://www.w3.org/TR/2011/CR-xmlenc-core1-20110303>. | <http://www.w3.org/TR/2011/CR-xmlenc-core1-20110303>. | |||
| [W3C.REC-xmlenc-core-20021210] | [W3C.REC-xmlenc-core-20021210] | |||
| Eastlake, D. and J. Reagle, "XML Encryption Syntax and | Eastlake, D. and J. Reagle, "XML Encryption Syntax and | |||
| Processing", World Wide Web Consortium Recommendation REC- | Processing", World Wide Web Consortium Recommendation REC- | |||
| xmlenc-core-20021210, December 2002, | xmlenc-core-20021210, December 2002, | |||
| <http://www.w3.org/TR/2002/REC-xmlenc-core-20021210>. | <http://www.w3.org/TR/2002/REC-xmlenc-core-20021210>. | |||
| skipping to change at page 20, line 29 ¶ | skipping to change at page 20, line 19 ¶ | |||
| TBD: Demonstrate encryption steps with this algorithm | TBD: Demonstrate encryption steps with this algorithm | |||
| A.1.2. Decrypting | A.1.2. Decrypting | |||
| TBD: Demonstrate decryption steps with this algorithm | TBD: Demonstrate decryption steps with this algorithm | |||
| Appendix B. Algorithm Identifier Cross-Reference | Appendix B. Algorithm Identifier Cross-Reference | |||
| This appendix contains a table cross-referencing the "alg" and "enc" | This appendix contains a table cross-referencing the "alg" and "enc" | |||
| values used in this specification with the equivalent identifiers | values used in this specification with the equivalent identifiers | |||
| used by other standards and software packages. See XML DSIG | used by other standards and software packages. See XML Encryption | |||
| [RFC3275] and Java Cryptography Architecture [JCA] for more | [W3C.REC-xmlenc-core-20021210], XML Encryption 1.1 | |||
| information about the names defined by those documents. | [W3C.CR-xmlenc-core1-20110303], and Java Cryptography Architecture | |||
| [JCA] for more information about the names defined by those | ||||
| documents. | ||||
| +---------+------+-------------------------+-------------------+----+ | +---------+-------+---------------------------+---------------------+ | |||
| | Algorit | JWE | XML ENC | JCA | OI | | | Algorit | JWE | XML ENC | JCA | | |||
| | hm | | | | D | | | hm | | | | | |||
| +---------+------+-------------------------+-------------------+----+ | +---------+-------+---------------------------+---------------------+ | |||
| | RSA | RSA1 | http://www.w3.org/2001/ | RSA/ECB/PKCS1Padd | TB | | | RSA | RSA1_ | http://www.w3.org/2001/04 | RSA/ECB/PKCS1Paddin | | |||
| | using | _5 | 04/xmlenc#rsa-1_5 | ing | D | | | using | 5 | /xmlenc#rsa-1_5 | g | | |||
| | RSA-PKC | | | | | | | RSA-PKC | | | | | |||
| | S1-1.5 | | | | | | | S1-1.5 | | | | | |||
| | paddin | | | | | | | paddin | | | | | |||
| | g | | | | | | | g | | | | | |||
| | RSA | RSA- | http://www.w3.org/2001/ | RSA/ECB/OAEPWithS | TB | | | RSA | RSA-O | http://www.w3.org/2001/04 | RSA/ECB/OAEPWithSHA | | |||
| | using | OAEP | 04/xmlenc#rsa-oaep-mgf1 | HA-1AndMGF1Paddin | D | | | using | AEP | /xmlenc#rsa-oaep-mgf1p | -1AndMGF1Padding | | |||
| | Optimal | | p | g | | | | Optimal | | | | | |||
| | Asymmet | | | | | | | Asymmet | | | | | |||
| | ric | | | | | | | ric | | | | | |||
| | Encryp | | | | | | | Encryp | | | | | |||
| | tion | | | | | | | tion | | | | | |||
| | Paddi | | | | | | | Paddi | | | | | |||
| | ng(OAEP | | | | | | | ng(OAEP | | | | | |||
| | ) | | | | | | | ) | | | | | |||
| | Ellipti | ECDH | http://www.w3.org/2009/ | TBD | TB | | | Ellipti | ECDH- | http://www.w3.org/2009/xm | TBD | | |||
| | cCurve | -ES | xmlenc11#ECDH-ES | | D | | | cCurve | ES | lenc11#ECDH-ES | | | |||
| | Diffie | | | | | | | Diffie | | | | | |||
| | -Hellma | | | | | | | -Hellma | | | | | |||
| | n Ephem | | | | | | | n Ephem | | | | | |||
| | eral | | | | | | | eral | | | | | |||
| | Stat | | | | | | | Stat | | | | | |||
| | ic | | | | | | | ic | | | | | |||
| | Advance | A128 | http://www.w3.org/2001/ | TBD | TB | | | Advance | A128K | http://www.w3.org/2001/04 | TBD | | |||
| | d | KW | 04/xmlenc#kw-aes128 | | D | | | d | W | /xmlenc#kw-aes128 | | | |||
| | Encryp | | | | | | | Encryp | | | | | |||
| | tion | | | | | | | tion | | | | | |||
| | Stand | | | | | | | Stand | | | | | |||
| | ard(AES | | | | | | | ard(AES | | | | | |||
| | ) Key | | | | | | | ) Key | | | | | |||
| | Wrap | | | | | | | Wrap | | | | | |||
| | Algo | | | | | | | Algo | | | | | |||
| | rithm R | | | | | | | rithm R | | | | | |||
| | FC 339 | | | | | | | FC 339 | | | | | |||
| | 4 [RF | | | | | | | 4 [RF | | | | | |||
| | C3394] | | | | | | | C3394] | | | | | |||
| | using12 | | | | | | | using12 | | | | | |||
| | 8 bitke | | | | | | | 8 bitke | | | | | |||
| | ys | | | | | | | ys | | | | | |||
| | Advance | A256 | http://www.w3.org/2001/ | TBD | TB | | | Advance | A256K | http://www.w3.org/2001/04 | TBD | | |||
| | d | KW | 04/xmlenc#kw-aes256 | | D | | | d | W | /xmlenc#kw-aes256 | | | |||
| | Encryp | | | | | | | Encryp | | | | | |||
| | tion | | | | | | | tion | | | | | |||
| | Stand | | | | | | | Stand | | | | | |||
| | ard(AES | | | | | | | ard(AES | | | | | |||
| | ) Key | | | | | | | ) Key | | | | | |||
| | Wrap | | | | | | | Wrap | | | | | |||
| | Algo | | | | | | | Algo | | | | | |||
| | rithm R | | | | | | | rithm R | | | | | |||
| | FC 339 | | | | | | | FC 339 | | | | | |||
| | 4 [RF | | | | | | | 4 [RF | | | | | |||
| | C3394] | | | | | | | C3394] | | | | | |||
| | using25 | | | | | | | using25 | | | | | |||
| | 6 bitke | | | | | | | 6 bitke | | | | | |||
| | ys | | | | | | | ys | | | | | |||
| | Advance | A128 | http://www.w3.org/2001/ | AES/CBC/PKCS5Padd | TB | | | Advance | A128C | http://www.w3.org/2001/04 | AES/CBC/PKCS5Paddin | | |||
| | d | CBC | 04/xmlenc#aes128-cbc | ing | D | | | d | BC | /xmlenc#aes128-cbc | g | | |||
| | Encryp | | | | | | | Encryp | | | | | |||
| | tion | | | | | | | tion | | | | | |||
| | Stand | | | | | | | Stand | | | | | |||
| | ard(AES | | | | | | | ard(AES | | | | | |||
| | ) usin | | | | | | | ) usin | | | | | |||
| | g 128 | | | | | | | g 128 | | | | | |||
| | bitkeys | | | | | | | bitkeys | | | | | |||
| | inCiph | | | | | | | inCiph | | | | | |||
| | er Bloc | | | | | | | er Bloc | | | | | |||
| | k Chai | | | | | | | k Chai | | | | | |||
| | ningmod | | | | | | | ningmod | | | | | |||
| | e | | | | | | | e | | | | | |||
| | Advance | A256 | http://www.w3.org/2001/ | AES/CBC/PKCS5Padd | TB | | | Advance | A256C | http://www.w3.org/2001/04 | AES/CBC/PKCS5Paddin | | |||
| | d | CBC | 04/xmlenc#aes256-cbc | ing | D | | | d | BC | /xmlenc#aes256-cbc | g | | |||
| | Encryp | | | | | | | Encryp | | | | | |||
| | tion | | | | | | | tion | | | | | |||
| | Stand | | | | | | | Stand | | | | | |||
| | ard(AES | | | | | | | ard(AES | | | | | |||
| | ) usin | | | | | | | ) usin | | | | | |||
| | g 256 | | | | | | | g 256 | | | | | |||
| | bitkeys | | | | | | | bitkeys | | | | | |||
| | inCiph | | | | | | | inCiph | | | | | |||
| | er Bloc | | | | | | | er Bloc | | | | | |||
| | k Chai | | | | | | | k Chai | | | | | |||
| | ningmod | | | | | | | ningmod | | | | | |||
| | e | | | | | | | e | | | | | |||
| | Advance | A128 | http://www.w3.org/2009/ | AES/GCM/NoPadding | TB | | | Advance | A128G | http://www.w3.org/2009/xm | AES/GCM/NoPadding | | |||
| | d | GCM | xmlenc11#aes128-gcm | | D | | | d | CM | lenc11#aes128-gcm | | | |||
| | Encryp | | | | | | | Encryp | | | | | |||
| | tion | | | | | | | tion | | | | | |||
| | Stand | | | | | | | Stand | | | | | |||
| | ard(AES | | | | | | | ard(AES | | | | | |||
| | ) usin | | | | | | | ) usin | | | | | |||
| | g 128 | | | | | | | g 128 | | | | | |||
| | bitkeys | | | | | | | bitkeys | | | | | |||
| | inGalo | | | | | | | inGalo | | | | | |||
| | is/Coun | | | | | | | is/Coun | | | | | |||
| | ter Mod | | | | | | | ter Mod | | | | | |||
| | e | | | | | | | e | | | | | |||
| | Advance | A256 | http://www.w3.org/2009/ | AES/GCM/NoPadding | TB | | | Advance | A256G | http://www.w3.org/2009/xm | AES/GCM/NoPadding | | |||
| | d | GCM | xmlenc11#aes256-gcm | | D | | | d | CM | lenc11#aes256-gcm | | | |||
| | Encryp | | | | | | | Encryp | | | | | |||
| | tion | | | | | | | tion | | | | | |||
| | Stand | | | | | | | Stand | | | | | |||
| | ard(AES | | | | | | | ard(AES | | | | | |||
| | ) usin | | | | | | | ) usin | | | | | |||
| | g 256 | | | | | | | g 256 | | | | | |||
| | bitkeys | | | | | | | bitkeys | | | | | |||
| | inGalo | | | | | | | inGalo | | | | | |||
| | is/Coun | | | | | | | is/Coun | | | | | |||
| | ter Mod | | | | | | | ter Mod | | | | | |||
| | e | | | | | | | e | | | | | |||
| +---------+------+-------------------------+-------------------+----+ | +---------+-------+---------------------------+---------------------+ | |||
| Table 5: Algorithm Identifier Cross-Reference | Table 5: Algorithm Identifier Cross-Reference | |||
| Appendix C. Acknowledgements | Appendix C. Acknowledgements | |||
| Solutions for encrypting JSON content were also explored by [JSS] and | Solutions for encrypting JSON content were also explored by [JSS] and | |||
| [I-D.rescorla-jsms], both of which significantly influenced this | [I-D.rescorla-jsms], both of which significantly influenced this | |||
| draft. This draft attempts to explicitly reuse as much from | draft. This draft attempts to explicitly reuse as much from XML | |||
| [W3C.CR-xmlenc-core1-20110303] and RFC 5652 [RFC5652] as possible, | Encryption 1.1 [W3C.CR-xmlenc-core1-20110303] and RFC 5652 [RFC5652] | |||
| while utilizing simple compact JSON-based data structures. | as possible, while utilizing simple compact JSON-based data | |||
| structures. | ||||
| Special thanks are due to John Bradley and Nat Sakimura for the | Special thanks are due to John Bradley and Nat Sakimura for the | |||
| discussions that helped inform the content of this specification and | discussions that helped inform the content of this specification and | |||
| to Eric Rescorla and Joe Hildebrand for allowing the reuse of some of | to Eric Rescorla and Joe Hildebrand for allowing the reuse of some of | |||
| the text from [I-D.rescorla-jsms] in this document. | the text from [I-D.rescorla-jsms] in this document. | |||
| Appendix D. Document History | Appendix D. Document History | |||
| -02 | ||||
| o Update to use short JWK Key Object names in Ephemeral Public Keys. | ||||
| o Moved "MUST" requirements from the Overview to later in the spec. | ||||
| o Respect line length restrictions in examples. | ||||
| o Applied other editorial improvements. | ||||
| -01 | -01 | |||
| o Changed type of Ephemeral Public Key ("epk") from string to JSON | o Changed type of Ephemeral Public Key ("epk") from string to JSON | |||
| object, so that a JWK Key Object value can be used directly. | object, so that a JWK Key Object value can be used directly. | |||
| o Specified that the Digest Method for ECDH-ES is SHA-256. (The | o Specified that the Digest Method for ECDH-ES is SHA-256. (The | |||
| specification was previously silent about the choice of digest | specification was previously silent about the choice of digest | |||
| method.) | method.) | |||
| o The "jku" and "x5u" URLs are now required to be absolute URLs. | o The "jku" and "x5u" URLs are now required to be absolute URLs. | |||
| End of changes. 35 change blocks. | ||||
| 199 lines changed or deleted | 202 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/ | ||||