[RFC Home] [TEXT|PDF|HTML] [Tracker] [IPR] [Errata] [Info page]
PROPOSED STANDARD
Errata ExistInternet Engineering Task Force (IETF) M. Jones
Request for Comments: 7517 Microsoft
Category: Standards Track May 2015
ISSN: 2070-1721
JSON Web 密钥 (JWK)
Abstract
JSON Web 密钥 (JWK) 是一种 JavaScript 对象表示法 (JSON) 的数据
结构,用于表示加密密钥。 本规范
还定义了一个 JWK 集(JWK Set)JSON 数据结构,用于表示一组
JWK。 与本规范一起使用的密码算法和标识符在单独的 JSON Web Algorithms (JWA)
规范以及该规范设立的 IANA 注册表中有描述。
Status of This Memo
本备忘录状态
这是一个互联网标准轨道文档。
本文档是互联网工程任务组
(IETF)。 它代表 IETF 社区的共识。 它已
接受公开审查,并已被互联网工程指导小组(IESG)批准出版。 有关
互联网标准的更多信息,请参见 RFC 5741 的第 2 节。
有关本文件当前状态、任何勘误信息
以及如何提供反馈的信息,可在下列位置获得
http://www.rfc-editor.org/info/rfc7517.
Copyright Notice
Copyright (c) 2015 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Jones Standards Track [Page 1]
RFC 7517 JSON Web Key (JWK) May 2015
Table of Contents
1. 引言 . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. 记号约定 . . . . . . . . . . . . . . . . . . . . . . 3
2. 术语 . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. JWK 示例 . . . . . . . . . . . . . . . . . . . . . . . 5
4. JSON Web Key (JWK) 格式 . . . . . . . . . . . . . . . . . 5
4.1. "kty" (密钥类型) 参数 . . . . . . . . . . . . . . . . 6
4.2. "use" (公钥用途) 参数 . . . . . . . . . . . . . . . . . . . 6
4.3. "key_ops" (密钥操作) 参数 . . . . . . . . . . . . . . 7
4.4. "alg" (算法) 参数 . . . . . . . . . . . . . . . . . . . 8
4.5. "kid" (密钥标识) 参数 . . . . . . . . . . . . . . . . . 8
4.6. "x5u" (X.509 URL) 参数 . . . . . . . . . . . . . . . . . . 8
4.7. "x5c" (X.509 证书链) 参数 . . . . . . . . . . . . . . 9
4.8. "x5t" (X.509 证书 SHA-1 指纹) 参数 . . 9
4.9. "x5t#S256" (X.509 证书 SHA-256 指纹)
参数 . . . . . . . . . . . . . . . . . . . . . . . . 10
5. JWK 集格式 . . . . . . . . . . . . . . . . . . . . . . 10
5.1. "keys" 参数 . . . . . . . . . . . . . . . . . . . . 10
6. 字符串比较规则 . . . . . . . . . . . . . . . . . . . . . 11
7. 加密的 JWK 和 加密的 JWK 集 格式 . . . . . . . . . . . . 11
8. IANA 相关事项 . . . . . . . . . . . . . . . . . . . . 11
8.1. JSON Web Key 参数 注册表 . . . . . . . . . . . . 12
8.1.1. 注册模板 . . . . . . . . . . . . . . . . . . . . 12
8.1.2. 初始注册内容 . . . . . . . . . . . . . . . . . . 13
8.2. JSON Web Key 用途 注册表 . . . . . . . . . . . . . . . 15
8.2.1. 注册模板 . . . . . . . . . . . . . . . . . . . . 15
8.2.2. 初始注册内容 . . . . . . . . . . . . . . . . . . 15
8.3. JSON Web Key 操作 注册表 . . . . . . . . . . . . . . 16
8.3.1. 注册模板 . . . . . . . . . . . . . . . . . . . . 16
8.3.2. 初始注册内容 . . . . . . . . . . . . . . . . . . 16
8.4. JSON Web Key 集 参数 注册表 . . . . . . . . . . 17
8.4.1. 注册模板 . . . . . . . . . . . . . . . . . . . 17
8.4.2. 初始注册内容 . . . . . . . . . . . . . . . . . 18
8.5. 媒体类型注册 . . . . . . . . . . . . . . . . . . . . 18
8.5.1. 注册内容 . . . . . . . . . . . . . . . . . . . . 18
9. 安全性注意事项 . . . . . . . . . . . . . . . . . . . . . 19
9.1. 密钥来源与信任 . . . . . . . . . . . . . . . . . . . . 20
9.2. 防止非公开密钥信息泄露 . . . . . . . . . . . . . . 20
9.3. RSA 私钥表示与盲化 . . . . . . . . . . . . . . . . 21
9.4. 密钥熵与随机值 . . . . . . . . . . . . . . . . . . . . 21
10. 参考文献 . . . . . . . . . . . . . . . . . . . . . . . . 21
10.1. 规范性参考文献 . . . . . . . . . . . . . . . . . . . 21
10.2. 说明性参考文献 . . . . . . . . . . . . . . . . . . . 23
附录 A. 示例 JSON Web Key 集 . . . . . . . . . . . . . 25
A.1. 示例公钥 . . . . . . . . . . . . . . . . . . . . . . 25
A.2. 示例私钥 . . . . . . . . . . . . . . . . . . . . . 25
A.3. 示例对称密钥 . . . . . . . . . . . . . . . . . . . . 27
Jones Standards Track [Page 2]
RFC 7517 JSON Web Key (JWK) May 2015
附录 B. 示例 "x5c" (X.509 证书链) 参数 的用法 . . . . . . . . . . . . . 28
附录 C. 示例加密的 RSA 私钥 . . . . . . . . . . . . . . . . . 28
C.1. 明文 RSA 私钥 . . . . . . . . . . . . . . . . . . . . . 29
C.2. JOSE 标头 . . . . . . . . . . . . . . . . . . . . . . 32
C.3. 内容加密密钥 (CEK) . . . . . . . . . . . . . . . . . 32
C.4. 密钥派生 . . . . . . . . . . . . . . . . . . . . . . . 33
C.5. 密钥加密 . . . . . . . . . . . . . . . . . . . . . . 33
C.6. 初始化向量 . . . . . . . . . . . . . . . . . . . . . 33
C.7. 额外认证数据 . . . . . . . . . . . . . . . . . . . . 34
C.8. 内容加密 . . . . . . . . . . . . . . . . . . . . . . . 34
C.9. 完整表示 . . . . . . . . . . . . . . . . . . . . . . . . 38
致谢 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
作者地址 . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
1. 引言
A JSON Web Key (JWK) 是一种表示加密密钥的 JavaScript 对象表示法 (JSON) [RFC7159]
数据结构。本规范还定义了表示一组 JWK 的 JWK 集 JSON 数据结构。
可与本规范一起使用的加密算法和标识在单独的 JSON Web Algorithms (JWA) [JWA] 规范及该规范建立的 IANA 注册表中描述。
本规范的目标不包括表示新的证书链类型、表示新的经认证密钥类型或替换 X.509 证书。
JWK 和 JWK 集在 JSON Web Signature [JWS] 和 JSON
Web Encryption [JWE] 规范中使用。
本规范定义的名称较短,因为核心目标之一是使生成的表示尽可能紧凑。
1.1. 记号约定
本文档中出现的关键字 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY" 和
"OPTIONAL" 应按 "在 RFC 中用于指示需求级别的关键字" [RFC2119] 的描述进行解释。
仅当这些术语以全部大写字母出现时,才应应用该解释。
BASE64URL(OCTETS) 表示 OCTETS 的 base64url 编码,按
[JWS] 的第 2 节。
Jones Standards Track [Page 3]
RFC 7517 JSON Web Key (JWK) May 2015
UTF8(STRING) 表示 STRING 的 UTF-8 [RFC3629] 表示的八位元组,其中 STRING 是由零个或多个 Unicode [UNICODE] 字符组成的序列。
ASCII(STRING) 表示 STRING 的 ASCII [RFC20] 表示的八位元组,其中 STRING 是由零个或多个 ASCII 字符组成的序列。
两个值 A 和 B 的连接记为 A || B。
2. 术语
术语 "JSON Web Signature (JWS)", "Base64url Encoding",
"Collision-Resistant Name", "Header Parameter" 和 "JOSE Header" 在
JWS 规范中定义 [JWS]。
术语 "JSON Web Encryption (JWE)", "Additional Authenticated Data
(AAD)", "JWE Authentication Tag", "JWE Ciphertext", "JWE Compact
Serialization", "JWE Encrypted Key", "JWE Initialization Vector" 和
"JWE Protected Header" 在 JWE 规范中定义 [JWE]。
术语 "Ciphertext", "Digital Signature", "Message Authentication
Code (MAC)" 和 "Plaintext" 在 "Internet Security
Glossary, Version 2" [RFC4949] 中定义。
这些术语由本规范定义:
JSON Web Key (JWK)
一个表示加密密钥的 JSON 对象。该对象的成员表示密钥的属性,包括其值。
JWK Set
一个表示一组 JWK 的 JSON 对象。该 JSON 对象必须具有一个 "keys" 成员,该成员是一个 JWK 数组。
Jones Standards Track [Page 4]
RFC 7517 JSON Web Key (JWK) May 2015
3. JWK 示例
本节提供了一个 JWK 的示例。下面的示例 JWK 声明该密钥是一个椭圆曲线 [DSS] 密钥,
它与 P-256 椭圆曲线一起使用,并且其 x 和 y 坐标是所示的 base64url 编码值。该密钥还提供了一个密钥标识符。
{"kty":"EC",
"crv":"P-256",
"x":"f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU",
"y":"x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0",
"kid":"在 JWS 规范中使用的公钥 附录 A.3 示例"
}
其他示例 JWK 值可以在 附录 A 中找到。
4. JSON Web Key (JWK) 格式
JWK 是一个表示加密密钥的 JSON 对象。该对象的成员表示密钥的属性,包括其值。该 JSON 对象在任何 JSON 值或结构字符的前后可以包含空白符和/或换行符,符合 RFC 7159 第 2 节 [RFC7159] 的规定。本文档定义了非算法特定、因此适用于多种密钥的通用密钥参数。
除了通用参数外,每个 JWK 将具有特定于密钥类型的成员。这些成员表示密钥的参数。JSON Web Algorithms (JWA) [JWA] 规范的 第 6 节 定义了多种加密密钥及其关联的成员。
JWK 中的成员名必须唯一;JWK 解析器必须要么拒绝具有重复成员名的 JWK,要么使用返回仅最后一个重复成员名的 JSON 解析器,正如 ECMAScript 5.1 的 第 15.12 节(JSON 对象)中所规定的那样 [ECMAScript]。
可以存在附加成员;如果实现遇到不理解的成员,则必须忽略它们。用于表示不同密钥类型的密钥参数的成员名不必彼此不同。任何新的成员名应当在由 第 8.1 节 建立的 IANA “JSON Web Key Parameters” 注册表中注册,或者应当是包含抗冲突名称(Collision-Resistant Name)的值。
Jones Standards Track [Page 5]
RFC 7517 JSON Web Key (JWK) May 2015
4.1. "kty" (密钥类型) 参数
"kty"(密钥类型)参数标识与密钥一起使用的加密算法
族,例如 "RSA" 或 "EC"。 "kty" 值应当
要么在 IANA "JSON Web Key Types" 注册表
由 [JWA] 建立,或者是一个包含抗冲突-
名称的值。"kty" 值是区分大小写的字符串。该
成员必须出现在 JWK 中。
定义的 "kty" 值的列表可以在 IANA "JSON Web Key
Types" 注册表中找到,该注册表由 [JWA] 建立;该注册表的初始内容是
在 [JWA] 第 6.1 节中定义的值。
密钥类型的定义包含为这些密钥类型使用的成员的规范。
与特定 "kty" 值一起使用的成员可以在 IANA "JSON Web Key Parameters" 注册表
中找到,该注册表由 Section 8.1 建立。
4.2. "use" (公钥用途) 参数
"use"(公钥用途)参数标识公钥的预期用途。"use" 参数用于指示公钥是用于加密数据还是用于验证数据上的签名。
本规范定义的值为:
o "sig"(签名)
o "enc"(加密)
也可以使用其他值。"use" 值是区分大小写的字符串。除非应用要求其存在,否则 "use" 成员是可选的。
当一个密钥用于包裹另一个密钥并且需要为第一个密钥指定公钥用途时,应使用 "enc"(加密)公钥用途值,因为密钥包裹是一种加密。对于用于密钥协商操作的公钥,也应使用 "enc" 值。
可以在由 第 8.2 节 建立的 IANA “JSON Web Key Use” 注册表中注册附加的 "use"(公钥用途)值。
当在开放环境中使用本规范并且多个组织需要对所使用的任何扩展有共同理解时,强烈建议注册任何扩展值。然而,在封闭环境中使用时(生成者和消费者始终为同一组织),可以使用未注册的扩展值。
Jones Standards Track [Page 6]
RFC 7517 JSON Web Key (JWK) May 2015
4.3. "key_ops"(密钥操作)参数
"key_ops"(密钥操作)参数定义了该密钥被用于哪些操作。
"key_ops"参数适用于存在公钥、私钥或对称密钥的场景。
其值为一个密钥操作值的数组。本规范定义的值包括:
o "sign"(计算数字签名或MAC)
o "verify"(验证数字签名或MAC)
o "encrypt"(加密内容)
o "decrypt"(解密内容并在适用时验证解密正确性)
o "wrapKey"(加密密钥)
o "unwrapKey"(解密密钥并在适用时验证解密正确性)
o "deriveKey"(派生密钥)
o "deriveBits"(派生出不能用作密钥的比特位)
(注意,"key_ops"的取值有意与Web Cryptography API
[W3C.CR-WebCryptoAPI-20141211]规范中定义的"KeyUsage"取值保持一致。)
也可以使用其他取值。密钥操作值为区分大小写的字符串。
数组中不得出现重复的密钥操作值。"key_ops"成员的使用为可选,
除非应用程序要求其必须存在。
不应为一个密钥指定多个不相关的密钥操作,
因为让同一个密钥被多个算法同时使用可能存在安全隐患。
因此,允许"sign"与"verify"、"encrypt"与"decrypt"、
以及"wrapKey"与"unwrapKey"的组合,但不应使用其他组合。
其他"key_ops"(密钥操作)取值可在IANA
"JSON Web Key Operations"注册表(见第8.3节)中注册。
关于扩展值注册的注意事项,与"use"成员一致。
不建议同时使用"use"和"key_ops"这两个JWK成员;
但如果两者同时使用,所表达的信息必须保持一致。
应用应明确说明它们会使用哪一个参数(如果应用需要使用其一)。
Jones Standards Track [Page 7]
RFC 7517 JSON Web Key (JWK) May 2015
4.4. "alg"(算法)参数
"alg"(算法)参数表示该密钥预期用于哪个算法。
使用的取值应在IANA的"JSON Web Signature and Encryption Algorithms"
注册表(见[JWA])中注册,或者为一个具备碰撞抵抗性的名称。
"alg"取值为区分大小写的ASCII字符串。该成员为可选项。
4.5. "kid"(密钥ID)参数
"kid"(密钥ID)参数用于匹配特定的密钥。例如,
在密钥轮转期间,可用于在JWK集合中选择密钥。
"kid"取值的结构未指定。当在JWK集合中使用"kid"时,
集合中的不同密钥应使用不同的"kid"取值。
(一种不同密钥使用相同"kid"的情况,是它们具有不同的"kty"(密钥类型),
但被应用认为是等价的备选项。)
"kid"取值是区分大小写的字符串。该成员为可选。
在与JWS或JWE搭配使用时,"kid"用于匹配JWS或JWE头部的"kid"参数值。
4.6. "x5u"(X.509 URL)参数
"x5u"(X.509 URL)参数是一个URI [RFC3986],
指向X.509公钥证书或证书链[RFC5280]的资源。
被标识的资源必须提供符合RFC 5280
[RFC5280]的PEM编码格式证书或证书链,
每份证书的分界符如RFC 4945第6.1节 [RFC4945]所规定。
第一份证书中的密钥必须与JWK其他成员表示的公钥一致。
获取该资源所用协议必须提供完整性保护;HTTP GET请求必须使用TLS
[RFC2818] [RFC5246];
服务器身份必须按照RFC 6125第6节
[RFC6125]进行验证。该成员为可选项。
虽无要求在使用"x5u"时必须包含其他JWK可选成员(如用途、算法等),
但这样做可以提升那些不能处理PKIX证书[RFC5280]的应用的互操作性。
如果其他成员存在,则其内容必须与第一份证书中相关字段在语义上一致。
例如,如果有"use"成员,则其取值必须与证书中声明的用途一致,
Jones Standards Track [Page 8]
RFC 7517 JSON Web Key (JWK) May 2015
当证书中包含此信息时。如果有"alg"成员,其取值必须与证书中指定的算法一致。
4.7. "x5c"(X.509证书链)参数
"x5c"(X.509证书链)参数包含一组PKIX证书链
[RFC5280]。证书链以JSON数组形式表示,
数组中的每个字符串为base64编码
([RFC4648]第4节,非base64url编码)
的DER [ITU.X690.1994] PKIX证书值。
含密钥的PKIX证书必须是第一个证书。后续证书可为对前一个证书认证的证书。
第一个证书中的密钥必须与JWK其他成员表示的公钥一致。该成员为可选项。
同"x5u"成员一样,在使用"x5c"成员时,也可以包含表明用途、算法或其他信息的可选JWK成员。
如果其他成员存在,其内容必须与第一个证书中相关字段在语义上一致。
进一步指导可见第4.6节的最后一段。
4.8. "x5t"(X.509证书SHA-1摘要)参数
"x5t"(X.509证书SHA-1摘要)参数是
X.509证书[RFC5280]的DER编码的SHA-1摘要
(即指纹或摘要),并以base64url编码表示。
注意,证书摘要有时也称为证书指纹。
证书中的密钥必须与JWK其他成员表示的公钥一致。该成员为可选项。
同"x5u"成员一样,在使用"x5t"成员时,
也可以包含表明用途、算法或其他信息的可选JWK成员。
如果有其他成员,内容需与被引用证书中相关字段在语义上一致。
进一步指导可见第4.6节的最后一段。
Jones Standards Track [Page 9]
RFC 7517 JSON Web Key (JWK) May 2015
4.9. "x5t#S256"(X.509证书SHA-256摘要)参数
"x5t#S256"(X.509证书SHA-256摘要)参数是
X.509证书[RFC5280]的DER编码的SHA-256摘要
(又称为摘要),采用base64url编码表示。
注意,证书摘要有时也称为证书指纹。
证书中的密钥必须与JWK其他成员表示的公钥一致。该成员为可选项。
同"x5u"成员一样,在使用"x5t#S256"成员时,
也可以包含表明用途、算法或其他信息的可选JWK成员。
如果存在其它成员,其内容必须与被引用证书中相关字段在语义上一致。
进一步指导可见第4.6节的最后一段。
5. JWK集合格式
JWK集合是用于表示一组JWK的JSON对象。该JSON对象必须含有"keys"成员,
且其值必须为JWK的数组。此JSON对象可包含空白符或换行符。
JWK集合中的成员名称必须唯一;解析器必须拒绝有重复成员名的JWK集合,
或者按ECMAScript 5.1 [ECMAScript]第15.12节
("JSON对象")的要求,仅返回字典序最后的成员名。
JWK集合可以有其他附加成员;实现遇到不认识的成员时,必须忽略它们。
用于描述JWK集合附加属性的参数应在IANA
"JSON Web Key Set Parameters"注册表(见第8.4节)注册,
或具备碰撞抵抗性名称。
实现应忽略集合内带有无法识别"kty"(密钥类型)取值、
缺少必要成员或数值超出支持范围的JWK。
5.1. "keys"参数
"keys"参数的值为JWK值的数组。
默认情况下,数组中JWK值的顺序并不表示优先级顺序,
但JWK集合的应用可为其赋予特定语义,按需解释。
Jones Standards Track [Page 10]
RFC 7517 JSON Web Key (JWK) May 2015
6. 字符串比较规则
本规范的字符串比较规则与[JWS]第5.3节中定义的规则相同。
7. 加密的JWK和加密的JWK集合格式
必须防止没有合法访问权限的方访问包含非公钥材料的JWK。
这可以通过加密JWK来实现,当该JWK可能被此类方观察时,以防止泄露私钥或对称密钥值。
推荐使用加密的JWK,即一个JWE,JWE的明文值是JWK的UTF-8编码。
对加密JWK的处理与其他JWE的处理相同。
必须使用"cty"(内容类型)头参数值"jwk+json"来指示JWE的内容是JWK,除非应用程序知道加密内容是JWK,否则通常省略"cty"值。
在这种情况下,也需要加密包含非公钥材料的JWK集合。
推荐使用加密的JWK集合,即一个JWE,JWE的明文值是JWK集合的UTF-8编码。
对加密JWK集合的处理与其他JWE的处理相同。
必须使用"cty"(内容类型)头参数值"jwk-set+json"来指示JWE的内容是JWK集合,除非应用程序知道加密内容是JWK集合,否则通常省略"cty"值。
请参见附录C,了解加密JWK的示例。
8. IANA考虑事项
本规范所建立的所有注册表均使用以下注册程序。
值的注册程序是“规范要求”
[RFC5226],在经过三周的审查期后,由jose-reg-review@ietf.org邮件列表上的一个或多个指定专家的建议。
但是,为了在发布之前分配值,指定专家可以在确认将发布规范后批准注册。
注册请求应使用适当的主题发送到邮件列表进行审查(例如,“请求注册JWK参数:示例”)。
Jones Standards Track [Page 11]
RFC 7517 JSON Web Key (JWK) May 2015
在审查期内,指定专家将批准或拒绝注册请求,并将此决定传达给审查列表和IANA。
拒绝时应包括解释,并在适用的情况下,提供如何使请求成功的建议。
对于那些超过21天未决定的注册请求,可以提交给IESG(使用iesg@ietf.org邮件列表)以进行解决。
指定专家应适用的标准包括:确定拟议的注册是否重复现有功能,是否可能具有广泛适用性,还是仅对单个应用程序有用,以及注册描述是否清晰。
IANA只能接受来自指定专家的注册更新,并应将所有注册请求转发至审查邮件列表。
建议任命多个指定专家,他们能够代表使用本规范的不同应用程序的观点,以便对注册决策进行广泛的知情审查。
如果某个注册决策可能被视为对某个专家的利益冲突,该专家应将决策的判断权交给其他专家。
8.1. JSON Web Key参数注册表
本节建立了IANA的"JSON Web Key Parameters"注册表,用于JWK参数名称。
注册表记录参数名称、与该参数关联的密钥类型和定义该参数的规范的引用。
它还记录该参数是否传达公钥或私钥信息。
本节注册了第4节中定义的参数名称。
同一JWK参数名称可以多次注册,前提是重复注册仅限于特定密钥类型的JWK参数;在这种情况下,重复的参数名称通过JWK中"kty"值进行消歧。
8.1.1. 注册模板
参数名称:
请求的名称(例如,"kid")。
由于本规范的核心目标是使结果表示尽可能紧凑,建议名称简短——没有充分理由的情况下,名称不超过8个字符。
此名称区分大小写。
名称不得与其他已注册名称在不区分大小写的情况下匹配,除非指定专家声明有充分理由允许例外。
然而,可以注册匹配的名称,前提是该参数名称使用的"kty"值集不交集;
对于" kty"值的匹配,"*"匹配所有值。
参数描述:
参数的简要描述(例如,“Key ID”)。
用于" kty"值的密钥类型:
参数名称要与哪些密钥类型的值一起使用,或者如果该参数适用于所有密钥类型,则使用" *"值。
注册的参数名称与其他已注册的" kty"值不应匹配,除非指定专家声明有充分理由允许例外。
参数信息类别:
注册参数是否传达公钥或私钥信息。
它的值必须是Public或Private。
更改控制者:
对于标准跟踪的RFC,列出" IESG"。
对于其他规范,给出负责方的名称,其他细节(例如邮政地址、电子邮件地址、主页URI)也可以包括。
规范文档:
参考指定该参数的文档,最好包括可用于检索文档副本的URI。
还可以包含相关部分的指示,但不是必需的。
8.1.2. 初始注册表内容
o 参数名称:"kty"
o 参数描述:密钥类型
o 用于" kty"值:*
o 参数信息类别:Public
o 更改控制者:IESG
o 规范文档:RFC 7517 第4.1节
o 参数名称:"use"
o 参数描述:公钥使用
o 用于" kty"值:*
o 参数信息类别:Public
o 更改控制者:IESG
o 规范文档:RFC 7517 第4.2节
Jones Standards Track [Page 15]
RFC 7517 JSON Web Key (JWK) May 2015
8.3. JSON Web Key 操作注册表
本节建立 IANA“JSON Web Key Operations”注册表,用于记录 JWK
“key_ops” 数组元素的值。注册表会登记密钥操作值以及相应定义
的规范引用。本节注册了第 4.3 节中定义的参数名。
8.3.1. 注册模板
密钥操作值:
请求的名称(例如 "sign")。由于本规范追求紧凑表达,建议
名称采用短小形式 —— 除非有充分理由,不超 8 个字符。名称
区分大小写。名称不可与其他已注册名称以大小写不敏感形式
冲突,除非指定专家声明允许例外。
密钥操作描述:
简要描述密钥操作(例如“计算数字签名或 MAC”)。
变更控制者:
对于标准跟踪 RFC,填写 "IESG"。其他情况需注明负责人姓名。
其他细节(如邮寄地址、电子邮箱、主页 URI)也可包含。
规范文档:
参考定义参数的文档,优先给出可下载文档的 URI。可指明
相关章节,但非必须。
8.3.2. 初始注册内容
o 密钥操作值:"sign"
o 密钥操作描述:计算数字签名或 MAC
o 变更控制者:IESG
o 规范文档:RFC 7517 第 4.3 节
o 密钥操作值:"verify"
o 密钥操作描述:验证数字签名或 MAC
o 变更控制者:IESG
o 规范文档:RFC 7517 第 4.3 节
Jones Standards Track [Page 16]
RFC 7517 JSON Web Key (JWK) May 2015
o 密钥操作值:"encrypt"
o 密钥操作描述:加密内容
o 变更控制者:IESG
o 规范文档:RFC 7517 第 4.3 节
o 密钥操作值:"decrypt"
o 密钥操作描述:解密内容并在适用时验证解密
o 变更控制者:IESG
o 规范文档:RFC 7517 第 4.3 节
o 密钥操作值:"wrapKey"
o 密钥操作描述:加密密钥
o 变更控制者:IESG
o 规范文档:RFC 7517 第 4.3 节
o 密钥操作值:"unwrapKey"
o 密钥操作描述:解密密钥并在适用时验证解密
o 变更控制者:IESG
o 规范文档:RFC 7517 第 4.3 节
o 密钥操作值:"deriveKey"
o 密钥操作描述:导出密钥
o 变更控制者:IESG
o 规范文档:RFC 7517 第 4.3 节
o 密钥操作值:"deriveBits"
o 密钥操作描述:导出不作为密钥使用的比特
o 变更控制者:IESG
o 规范文档:RFC 7517 第 4.3 节
8.4. JSON Web Key Set 参数注册表
本节建立 IANA“JSON Web Key Set Parameters”注册表,用于 JWK Set
参数名称。注册表登记参数名及定义它的规范引用。本节注册了第 5 节中定义的参数名。
8.4.1. 注册模板
参数名称:
请求的名称(例如“keys”)。因规范追求紧凑表达,建议命名
简短 —— 非特殊理由不超 8 字符。参数区分大小写。名称不
可不区分大小写与其它注册名称重复,除非指定专家允许例外。
Jones Standards Track [Page 17]
RFC 7517 JSON Web Key (JWK) May 2015
参数描述:
参数简要说明(例如“JWK 值数组”)。
变更控制者:
标准跟踪 RFC 填写 “IESG”,其他情况注明负责人姓名。其余
信息(如邮寄地址、邮箱、主页 URI)可以补充。
规范���档:
定义参数的参考文档,优先提供可下载副本的 URI。可指明
相关章节,但不是必须。
8.4.2. 初始注册内容
o 参数名称:"keys"
o 参数描述:JWK 值数组
o 变更控制者:IESG
o 规范文档:RFC 7517 第 5.1 节
8.5. 媒体类型注册
8.5.1. 注册内容
本节将 "application/jwk+json" 与 "application/
jwk-set+json" 媒体类型 [RFC2046] 注册到 “Media Types”
注册表 [IANA.MediaTypes],注册方式见 RFC 6838 [RFC6838],
用于表明内容分别为 JWK 或 JWK Set。
o 类型名称:application
o 子类型名称:jwk+json
o 要求参数:无
o 可选参数:无
o 编码说明:8bit;application/jwk+json 以 JSON 对象表示;
JSON 对象应使用 UTF-8 编码。
o 安全注意事项:参见 RFC 7517 的 Security Considerations 部分。
o 互操作性说明:无
o 已发布规范:RFC 7517
o 典型应用:OpenID Connect、Salesforce、
Google、Android、Windows Azure、W3C WebCrypto API 等
o Fragment 标识说明:无
Jones Standards Track [Page 18]
RFC 7517 JSON Web Key (JWK) May 2015
o 其他信息:
Magic number(s):无
文件扩展名:无
Macintosh 文件类型代码:无
o 进一步信息联系邮箱:
Michael B. Jones, mbj@microsoft.com
o 预期用途:COMMON
o 使用限制:无
o 作者:Michael B. Jones, mbj@microsoft.com
o 变更控制者:IESG
o 临时注册?否
o 类型名称:application
o 子类型名称:jwk-set+json
o 要求参数:无
o 可选参数:无
o 编码说明:8bit;application/jwk-set+json 以 JSON 对象表示;
JSON 对象应使用 UTF-8 编码。
o 安全注意事项:参见 RFC 7517 的 Security Considerations 部分。
o 互操作性说明:无
o 已发布规范:RFC 7517
o 典型应用:OpenID Connect、Salesforce、
Google、Android、Windows Azure、W3C WebCrypto API 等
o Fragment 标识说明:无
o 其他信息:
Magic number(s):无
文件扩展名:无
Macintosh 文件类型代码:无
o 进一步信息联系邮箱:
Michael B. Jones, mbj@microsoft.com
o 预期用途:COMMON
o 使用限制:无
o 作者:Michael B. Jones, mbj@microsoft.com
o 变更控制者:IESG
o 临时注册?否
9. 安全注意事项
所有与任何加密应用相关的安全问题都必须由 JWS/JWE/JWK 代理处理。
这些问题包括保护用户的非对称私钥和对称密钥,以及采取针对各类攻击的防护措施。
Jones Standards Track [Page 19]
RFC 7517 JSON Web Key (JWK) May 2015
9.1. 密钥来源与信任
不应对密钥加密保护的数据寄予超出该密钥获取方式和关联
实体可靠性的信任。以不可信方式获得的任何与密钥有关的数据
需持怀疑态度。关于密钥来源认证的安全注意事项,
详见 [JWS] 第 10.3 节。
几乎所有情况下,应用在决定是否信任一个密钥时,依赖的是与该密钥绑定的属性,
例如名称、角色以及密钥来源,而不是仅凭密钥本身。当应用需要判断是否信任某个密钥时,
有多种方式可以将属性绑定到 JWK。两个示例机制为 PKIX [RFC5280]
和 JSON Web Token (JWT) [JWT]。
例如,JWK 创建者可在 JWK 的 "x5c" 成员中包含一个 PKIX 证书。
如果应用验证了该证书,并确认 JWK 与证书主题公钥一致,
则可将证书中的属性(如主题名、主题替代名、扩展密钥用途
及其签名链)关联到 JWK。
另一个例子是 JWT 可通过把 JWK 作为 JWT 声明引用,将属性
绑定到 JWK。JWK 可直接作为声明值插入,或 JWT 中包含用于获取
JWK 值的 TLS 保护的 URI。无论哪种方式,通过 JWT 声明获取 JWK
的应用可将其与 JWT 的加密属性关联,并依此及其它声明判断
是否信任该密钥。
XML DSIG 2.0 第 12.3 节
[W3C.NOTE-xmldsig-core2-20130411] 关于数字签名强度取决于安全链
所有环节的安全问题,对本规范同样适用。
[JWS] 第 8 节 TLS 要求也适用于本规范,但仅 "x5u" JWK 成员
定义为采用 TLS 的功能。
9.2. 防止非公开密钥信息泄露
必须保护私钥和对称密钥不被非预期方获取。推荐做法是,
将包含此类密钥的 JWK 或 JWK Set 作为 JWE 明文进行加密。
当然,这需要有安全方法让接收方获取加密密钥,
对方也需能安全获取对应的解密密钥。
Jones Standards Track [Page 20]
RFC 7517 JSON Web Key (JWK) May 2015
RFC 3447 [RFC3447] 和 RFC 6030
[RFC6030] 关于保护私钥和对称密钥、密钥用法及信息泄露的安全
注意事项同样适用于本规范。
9.3. RSA私钥表示与盲化
RSA密钥盲化操作 [Kocher],用于防御某些时序攻击,
需要所有RSA密钥值 "n"、"e" 和 "d"。然而,有些RSA私钥表示不包含
公共指数 "e",只包括模数 "n" 和私有指数 "d"。比如 Java 的
RSAPrivateKeySpec API 就没有把 "e" 作为参数包含进去。为使RSA密钥
支持盲化操作,应避免此类表示。对于Java,可改用
RSAPrivateCrtKeySpec API。实际如何仅利用 "n"、"e"、"d" 算出其余
RSA私钥参数,可参考《实用密码学手册》(Handbook of Applied Cryptography)
[HAC]第8.2.2(i)节。
9.4. 密钥熵与随机值
有关密钥熵和随机值的安全考量,参见 [JWS] 第10.1节。
10. 参考文献
10.1. 规范性引用
[ECMAScript]
Ecma International,《ECMAScript语言规范,
第5.1版》,ECMA标准262,2011年6月,
<http://www.ecma-international.org/ecma-262/5.1/
ECMA-262.pdf>。
[IANA.MediaTypes]
Internet Assigned Numbers Authority (IANA),“媒体类型”,
<http://www.iana.org/assignments/media-types>。
[ITU.X690.1994]
国际电信联盟,“信息技术 - ASN.1 编码规则:基本编码规则(BER),
规范编码规则(CER)和区分编码规则(DER)”,ITU-T建议X.690,1994年。
Jones Standards Track [Page 21]
RFC 7517 JSON Web Key (JWK) May 2015
[JWA] Jones, M., “JSON Web Algorithms (JWA)”,RFC 7518,
DOI 10.17487/RFC7518,2015年5月,
<http://www.rfc-editor.org/info/rfc7518>。
[JWE] Jones, M. 和 J. Hildebrand,“JSON Web Encryption (JWE)”,
RFC 7516, DOI 10.17487/RFC7516,2015年5月,
<http://www.rfc-editor.org/info/rfc7516>。
[JWS] Jones, M., Bradley, J., 和 N. Sakimura,“JSON Web
Signature (JWS)”,《RFC 7515》,DOI 10.17487/RFC7515,2015年5月,
<http://www.rfc-editor.org/info/rfc7515>。
[RFC20] Cerf, V., “网络交换用的ASCII格式”,STD 80,
RFC 20, DOI 10.17487/RFC0020,1969年10月,
<http://www.rfc-editor.org/info/rfc20>。
[RFC2046] Freed, N. 和 N. Borenstein,“多用途互联网邮件扩展
(MIME) 第二部分:媒体类型”,RFC 2046,
DOI 10.17487/RFC2046,1996年11月,
<http://www.rfc-editor.org/info/rfc2046>。
[RFC2119] Bradner, S., “RFC中用于指示要求级别的关键词”,
BCP 14, RFC 2119,
DOI 10.17487/RFC2119,1997年3月,
<http://www.rfc-editor.org/info/rfc2119>。
[RFC2818] Rescorla, E., “HTTP Over TLS”,RFC 2818,
DOI 10.17487/RFC2818,2000年5月,
<http://www.rfc-editor.org/info/rfc2818>。
[RFC3629] Yergeau, F., “UTF-8,ISO 10646的转换格式”,STD 63,
RFC 3629,DOI 10.17487/RFC3629,2003年11月,
<http://www.rfc-editor.org/info/rfc3629>。
[RFC3986] Berners-Lee, T., Fielding, R., 和 L. Masinter,“统一资源
标识符(URI):通用语法”,STD 66,
RFC 3986,DOI 10.17487/RFC3986,2005年1月,
<http://www.rfc-editor.org/info/rfc3986>。
[RFC4648] Josefsson, S., “Base16、Base32 和 Base64 数据编码”,
RFC 4648,DOI 10.17487/RFC4648,2006年10月,
<http://www.rfc-editor.org/info/rfc4648>。
[RFC4945] Korver, B., “IKEv1/ISAKMP、IKEv2、PKIX的互联网
IP安全PKI描述”,RFC 4945,
DOI 10.17487/RFC4945,2007年8月,
<http://www.rfc-editor.org/info/rfc4945>。
Jones Standards Track [Page 22]
RFC 7517 JSON Web Key (JWK) May 2015
[RFC4949] Shirey, R., “互联网安全术语表,第2版”,
FYI 36,RFC 4949,DOI 10.17487/RFC4949,2007年8月,
<http://www.rfc-editor.org/info/rfc4949>。
[RFC5246] Dierks, T. 和 E. Rescorla,“传输层安全性(TLS)协议
版本1.2”,RFC 5246,
DOI 10.17487/RFC5246,2008年8月,
<http://www.rfc-editor.org/info/rfc5246>。
[RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S.,
Housley, R., 和 W. Polk,“互联网 X.509 公钥基础设施
证书及证书吊销列表(CRL)规范”,RFC 5280,DOI 10.17487/RFC5280,2008年5月,
<http://www.rfc-editor.org/info/rfc5280>。
[RFC6125] Saint-Andre, P. 和 J. Hodges,“在传输层安全性(TLS)
环境下,基于域的应用服务身份使用互联网公共密钥基础
设施 (PKIX) 证书的表示与验证”,RFC 6125,DOI 10.17487/RFC6125,2011年3月,
<http://www.rfc-editor.org/info/rfc6125>。
[RFC7159] Bray, T., Ed.,“JavaScript对象表示法(JSON)数据交换格式”,
RFC 7159,DOI 10.17487/RFC7159,2014年3月,
<http://www.rfc-editor.org/info/rfc7159>。
[UNICODE] The Unicode Consortium,“Unicode 标准”,
<http://www.unicode.org/versions/latest/>。
10.2. 信息性引用
[DSS] 美国国家标准与技术研究院(NIST),“数字签名标准(DSS)”,
FIPS PUB 186-4,2013年7月,
<http://nvlpubs.nist.gov/nistpubs/FIPS/
NIST.FIPS.186-4.pdf>。
[HAC] Menezes, A., van Oorschot, P., 和 S. Vanstone,“实用密码学手册”,
CRC出版社,1996年10月,
<http://cacr.uwaterloo.ca/hac/>。
[JWT] Jones, M., Bradley, J., 和 N. Sakimura,“JSON Web Token
(JWT)”,《RFC 7519》,DOI 10.17487/RFC7519,2015年5月,
<http://www.rfc-editor.org/info/rfc7519>。
Jones Standards Track [Page 23]
RFC 7517 JSON Web Key (JWK) May 2015
[Kocher] Kocher, P.,“对Diffie-Hellman、RSA、DSS及其他系统实现的时序攻击”,
见《第16届国际密码学大会论文集》Advances in Cryptology,
Springer-Verlag,页码104-113,1996年。
[MagicSignatures]
Panzer, J.,Ed.,Laurie, B.,和 D. Balfanz,“Magic Signatures”,
2011年1月,
<http://salmon-protocol.googlecode.com/svn/trunk/
draft-panzer-magicsig-01.html>。
[RFC3447] Jonsson, J. 和 B. Kaliski,“公钥密码学标准(PKCS) #1:
RSA密码规范第2.1版”,RFC 3447,DOI 10.17487/RFC3447,2003年2月,
<http://www.rfc-editor.org/info/rfc3447>。
[RFC5226] Narten, T. 和 H. Alvestrand,“RFC中IANA注意事项章节写作指南”,
BCP 26,RFC 5226,
DOI 10.17487/RFC5226,2008年5月,
<http://www.rfc-editor.org/info/rfc5226>。
[RFC6030] Hoyer, P., Pei, M., 和 S. Machani,“便携式对称密钥容器(PSKC)”,
RFC 6030,DOI 10.17487/RFC6030,2010年10月,
<http://www.rfc-editor.org/info/rfc6030>。
[RFC6838] Freed, N., Klensin, J., 和 T. Hansen,“媒体类型规范与注册流程”,
BCP 13,
RFC 6838,DOI 10.17487/RFC6838,2013年1月,
<http://www.rfc-editor.org/info/rfc6838>。
[W3C.CR-WebCryptoAPI-20141211]
Sleevi, R. 和 M. Watson,“Web Cryptography API”,万维网联盟
候选推荐标准CR-WebCryptoAPI-20141211,2014年12月,
<http://www.w3.org/TR/2014/CR-WebCryptoAPI-20141211/>。
[W3C.NOTE-xmldsig-core2-20130411]
Eastlake, D., Reagle, J., Solo, D., Hirsch, F., Roessler,
T., Yiu, K., Datta, P., 和 S. Cantor,“XML签名语法与处理2.0版”,
万维网联盟Note NOTE-xmldsig-core2-20130411,2013年4月,
<http://www.w3.org/TR/2013/NOTE-xmldsig-core2-20130411/>。
Jones Standards Track [Page 24]
RFC 7517 JSON Web Key (JWK) May 2015
附录A. JSON Web Key Set 示例
A.1. 公钥示例
下例的JWK Set包含两个以JWK形式表示的公钥:一个采用椭圆曲线
算法,另一个采用RSA算法。第一个密钥指定用于加密用途,第二个
指定要与“RS256”算法配合使用。两者都提供了密钥ID,用于密钥匹配。
无论哪种情况,整数都以其大端表示的base64url编码方式表示。
(值中的换行仅为展示目的。)
{"keys":
[
{"kty":"EC",
"crv":"P-256",
"x":"MKBCTNIcKUSDii11ySs3526iDZ8AiTo7Tu6KPAqv7D4",
"y":"4Etl6SRW2YiLUrN5vfvVHuhp7x8PxltmWWlbbM4IFyM",
"use":"enc",
"kid":"1"},
{"kty":"RSA",
"n": "0vx7agoebGcQSuuPiLJXZptN9nndrQmbXEps2aiAFbWhM78LhWx
4cbbfAAtVT86zwu1RK7aPFFxuhDR1L6tSoc_BJECPebWKRXjBZCiFV4n3oknjhMs
tn64tZ_2W-5JsGY4Hc5n9yBXArwl93lqt7_RN5w6Cf0h4QyQ5v-65YGjQR0_FDW2
QvzqY368QQMicAtaSqzs8KJZgnYb9c7d0zgdAZHzu6qMQvRL5hajrn1n91CbOpbI
SD08qNLyrdkt-bFTWhAI4vMQFh6WeZu0fM4lFd2NcRwr3XPksINHaQ-G_xBniIqb
w0Ls1jF44-csFCur-kEgU8awapJzKnqDKgw",
"e":"AQAB",
"alg":"RS256",
"kid":"2011-04-29"}
]
}
A.2. 私钥示例
下例JWK Set包含两个以JWK格式表示的密钥,含有公钥和私钥值:
一个采用椭圆曲线算法,另一个采用RSA算法。本示例是在前一节
的基础上增加私钥值。(值中的换行仅为展示目的。)
Jones Standards Track [Page 25]
RFC 7517 JSON Web Key (JWK) May 2015
{"keys":
[
{"kty":"EC",
"crv":"P-256",
"x":"MKBCTNIcKUSDii11ySs3526iDZ8AiTo7Tu6KPAqv7D4",
"y":"4Etl6SRW2YiLUrN5vfvVHuhp7x8PxltmWWlbbM4IFyM",
"d":"870MB6gfuTJ4HtUnUvYMyJpr5eUZNP4Bk43bVdj3eAE",
"use":"enc",
"kid":"1"},
{"kty":"RSA",
"n":"0vx7agoebGcQSuuPiLJXZptN9nndrQmbXEps2aiAFbWhM78LhWx4
cbbfAAtVT86zwu1RK7aPFFxuhDR1L6tSoc_BJECPebWKRXjBZCiFV4n3oknjhMst
n64tZ_2W-5JsGY4Hc5n9yBXArwl93lqt7_RN5w6Cf0h4QyQ5v-65YGjQR0_FDW2Q
vzqY368QQMicAtaSqzs8KJZgnYb9c7d0zgdAZHzu6qMQvRL5hajrn1n91CbOpbIS
D08qNLyrdkt-bFTWhAI4vMQFh6WeZu0fM4lFd2NcRwr3XPksINHaQ-G_xBniIqbw
0Ls1jF44-csFCur-kEgU8awapJzKnqDKgw",
"e":"AQAB",
"d":"X4cTteJY_gn4FYPsXB8rdXix5vwsg1FLN5E3EaG6RJoVH-HLLKD9
M7dx5oo7GURknchnrRweUkC7hT5fJLM0WbFAKNLWY2vv7B6NqXSzUvxT0_YSfqij
wp3RTzlBaCxWp4doFk5N2o8Gy_nHNKroADIkJ46pRUohsXywbReAdYaMwFs9tv8d
_cPVY3i07a3t8MN6TNwm0dSawm9v47UiCl3Sk5ZiG7xojPLu4sbg1U2jx4IBTNBz
nbJSzFHK66jT8bgkuqsk0GjskDJk19Z4qwjwbsnn4j2WBii3RL-Us2lGVkY8fkFz
me1z0HbIkfz0Y6mqnOYtqc0X4jfcKoAC8Q",
"p":"83i-7IvMGXoMXCskv73TKr8637FiO7Z27zv8oj6pbWUQyLPQBQxtPV
nwD20R-60eTDmD2ujnMt5PoqMrm8RfmNhVWDtjjMmCMjOpSXicFHj7XOuVIYQyqV
WlWEh6dN36GVZYk93N8Bc9vY41xy8B9RzzOGVQzXvNEvn7O0nVbfs",
"q":"3dfOR9cuYq-0S-mkFLzgItgMEfFzB2q3hWehMuG0oCuqnb3vobLyum
qjVZQO1dIrdwgTnCdpYzBcOfW5r370AFXjiWft_NGEiovonizhKpo9VVS78TzFgx
kIdrecRezsZ-1kYd_s1qDbxtkDEgfAITAG9LUnADun4vIcb6yelxk",
"dp":"G4sPXkc6Ya9y8oJW9_ILj4xuppu0lzi_H7VTkS8xj5SdX3coE0oim
YwxIi2emTAue0UOa5dpgFGyBJ4c8tQ2VF402XRugKDTP8akYhFo5tAA77Qe_Nmtu
YZc3C3m3I24G2GvR5sSDxUyAN2zq8Lfn9EUms6rY3Ob8YeiKkTiBj0",
"dq":"s9lAH9fggBsoFR8Oac2R_E2gw282rT2kGOAhvIllETE1efrA6huUU
vMfBcMpn8lqeW6vzznYY5SSQF7pMdC_agI3nG8Ibp1BUb0JUiraRNqUfLhcQb_d9
GF4Dh7e74WbRsobRonujTYN1xCaP6TO61jvWrX-L18txXw494Q_cgk",
"qi":"GyM_p6JrXySiz1toFgKbWV-JdI3jQ4ypu9rbMWx3rQJBfmt0FoYzg
UIZEVFEcOqwemRN81zoDAaa-Bk0KWNGDjJHZDdDmFhW3AN7lI-puxk_mHZGJ11rx
yR8O55XLSe3SPmRfKwZI6yU24ZxvQKFYItdldUKGzO6Ia6zTKhAVRU",
"alg":"RS256",
"kid":"2011-04-29"}
]
}
Jones Standards Track [Page 26]
RFC 7517 JSON Web Key (JWK) May 2015
A.3. 对称密钥示例
下列示例 JWK Set 包含两个以 JWK 表示的对称密钥:一个指定用于
AES 密钥包裹(AES Key Wrap)算法,另一个为 HMAC 密钥。
(值内换行仅用于显示目的。)
{"keys":
[
{"kty":"oct",
"alg":"A128KW",
"k":"GawgguFyGrWKav7AX4VKUg"},
{"kty":"oct",
"k":"AyM1SysPpbyDfgZld3umj1qzKObwVMkoqQ-EstJQLr_T-1qS0gZH75
aKtMN3Yj0iPS4hcgUuTwjAzZr1Z9CAow",
"kid":"HMAC key used in JWS spec Appendix A.1 example"}
]
}
Jones Standards Track [Page 27]
RFC 7517 JSON Web Key (JWK) May 2015
附录 B. 使用 "x5c"(X.509 证书链)参数的示例
下例是一个 JWK 示例,其中的 RSA 签名密钥既以 RSA 公钥形式表示,
也通过 "x5c" 参数以 X.509 证书链形式表示(值内换行仅用于显示):
{"kty":"RSA",
"use":"sig",
"kid":"1b94c",
"n":"vrjOfz9Ccdgx5nQudyhdoR17V-IubWMeOZCwX_jj0hgAsz2J_pqYW08
PLbK_PdiVGKPrqzmDIsLI7sA25VEnHU1uCLNwBuUiCO11_-7dYbsr4iJmG0Q
u2j8DsVyT1azpJC_NG84Ty5KKthuCaPod7iI7w0LK9orSMhBEwwZDCxTWq4a
YWAchc8t-emd9qOvWtVMDC2BXksRngh6X5bUYLy6AyHKvj-nUy1wgzjYQDwH
MTplCoLtU-o-8SNnZ1tmRoGE9uJkBLdh5gFENabWnU5m1ZqZPdwS-qo-meMv
VfJb6jJVWRpl2SUtCnYG2C32qvbWbjZ_jBPD5eunqsIo1vQ",
"e":"AQAB",
"x5c":
["MIIDQjCCAiqgAwIBAgIGATz/FuLiMA0GCSqGSIb3DQEBBQUAMGIxCzAJB
gNVBAYTAlVTMQswCQYDVQQIEwJDTzEPMA0GA1UEBxMGRGVudmVyMRwwGgYD
VQQKExNQaW5nIElkZW50aXR5IENvcnAuMRcwFQYDVQQDEw5CcmlhbiBDYW1
wYmVsbDAeFw0xMzAyMjEyMzI5MTVaFw0xODA4MTQyMjI5MTVaMGIxCzAJBg
NVBAYTAlVTMQswCQYDVQQIEwJDTzEPMA0GA1UEBxMGRGVudmVyMRwwGgYDV
QQKExNQaW5nIElkZW50aXR5IENvcnAuMRcwFQYDVQQDEw5CcmlhbiBDYW1w
YmVsbDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL64zn8/QnH
YMeZ0LncoXaEde1fiLm1jHjmQsF/449IYALM9if6amFtPDy2yvz3YlRij66
s5gyLCyO7ANuVRJx1NbgizcAblIgjtdf/u3WG7K+IiZhtELto/A7Fck9Ws6
SQvzRvOE8uSirYbgmj6He4iO8NCyvaK0jIQRMMGQwsU1quGmFgHIXPLfnpn
fajr1rVTAwtgV5LEZ4Iel+W1GC8ugMhyr4/p1MtcIM42EA8BzE6ZQqC7VPq
PvEjZ2dbZkaBhPbiZAS3YeYBRDWm1p1OZtWamT3cEvqqPpnjL1XyW+oyVVk
aZdklLQp2Btgt9qr21m42f4wTw+Xrp6rCKNb0CAwEAATANBgkqhkiG9w0BA
QUFAAOCAQEAh8zGlfSlcI0o3rYDPBB07aXNswb4ECNIKG0CETTUxmXl9KUL
+9gGlqCz5iWLOgWsnrcKcY0vXPG9J1r9AqBNTqNgHq2G03X09266X5CpOe1
zFo+Owb1zxtp3PehFdfQJ610CDLEaS9V9Rqp17hCyybEpOGVwe8fnk+fbEL
2Bo3UPGrpsHzUoaGpDftmWssZkhpBJKVMJyf/RuP2SmmaIzmnw9JiSlYhzo
4tpzd5rFXhjRbg4zW9C+2qok+2+qDM1iJ684gPHMIY8aLWrdgQTxkumGmTq
gawR+N5MDtdPTEQ0XfIBc2cJEUyMTY5MPvACWpkA6SdS4xSvdXK3IVfOWA=="]
}
附录 C. 加密的 RSA 私钥示例
本示例使用 "PBES2-HS256+A128KW" 用于密钥加密,并使用
"A128CBC+HS256" 用于内容加密,将一个 RSA 私钥加密发给接收方。
注意:除非另有说明,所有换行仅为可读性所加。
Jones Standards Track [Page 28]
RFC 7517 JSON Web Key (JWK) May 2015
C.1. 明文 RSA 私钥
下列 RSA 密钥为经认证加密操作的明文,格式为 JWK(值内换行仅
用于显示目的):
{
"kty":"RSA",
"kid":"juliet@capulet.lit",
"use":"enc",
"n":"t6Q8PWSi1dkJj9hTP8hNYFlvadM7DflW9mWepOJhJ66w7nyoK1gPNqFMSQRy
O125Gp-TEkodhWr0iujjHVx7BcV0llS4w5ACGgPrcAd6ZcSR0-Iqom-QFcNP
8Sjg086MwoqQU_LYywlAGZ21WSdS_PERyGFiNnj3QQlO8Yns5jCtLCRwLHL0
Pb1fEv45AuRIuUfVcPySBWYnDyGxvjYGDSM-AqWS9zIQ2ZilgT-GqUmipg0X
OC0Cc20rgLe2ymLHjpHciCKVAbY5-L32-lSeZO-Os6U15_aXrk9Gw8cPUaX1
_I8sLGuSiVdt3C_Fn2PZ3Z8i744FPFGGcG1qs2Wz-Q",
"e":"AQAB",
"d":"GRtbIQmhOZtyszfgKdg4u_N-R_mZGU_9k7JQ_jn1DnfTuMdSNprTeaSTyWfS
NkuaAwnOEbIQVy1IQbWVV25NY3ybc_IhUJtfri7bAXYEReWaCl3hdlPKXy9U
vqPYGR0kIXTQRqns-dVJ7jahlI7LyckrpTmrM8dWBo4_PMaenNnPiQgO0xnu
ToxutRZJfJvG4Ox4ka3GORQd9CsCZ2vsUDmsXOfUENOyMqADC6p1M3h33tsu
rY15k9qMSpG9OX_IJAXmxzAh_tWiZOwk2K4yxH9tS3Lq1yX8C1EWmeRDkK2a
hecG85-oLKQt5VEpWHKmjOi_gJSdSgqcN96X52esAQ",
"p":"2rnSOV4hKSN8sS4CgcQHFbs08XboFDqKum3sc4h3GRxrTmQdl1ZK9uw-PIHf
QP0FkxXVrx-WE-ZEbrqivH_2iCLUS7wAl6XvARt1KkIaUxPPSYB9yk31s0Q8
UK96E3_OrADAYtAJs-M3JxCLfNgqh56HDnETTQhH3rCT5T3yJws",
"q":"1u_RiFDP7LBYh3N4GXLT9OpSKYP0uQZyiaZwBtOCBNJgQxaj10RWjsZu0c6I
edis4S7B_coSKB0Kj9PaPaBzg-IySRvvcQuPamQu66riMhjVtG6TlV8CLCYK
rYl52ziqK0E_ym2QnkwsUX7eYTB7LbAHRK9GqocDE5B0f808I4s",
"dp":"KkMTWqBUefVwZ2_Dbj1pPQqyHSHjj90L5x_MOzqYAJMcLMZtbUtwKqvVDq3
tbEo3ZIcohbDtt6SbfmWzggabpQxNxuBpoOOf_a_HgMXK_lhqigI4y_kqS1w
Y52IwjUn5rgRrJ-yYo1h41KR-vz2pYhEAeYrhttWtxVqLCRViD6c",
"dq":"AvfS0-gRxvn0bwJoMSnFxYcK1WnuEjQFluMGfwGitQBWtfZ1Er7t1xDkbN9
GQTB9yqpDoYaN06H7CFtrkxhJIBQaj6nkF5KKS3TQtQ5qCzkOkmxIe3KRbBy
mXxkb5qwUpX5ELD5xFc6FeiafWYY63TmmEAu_lRFCOJ3xDea-ots",
"qi":"lSQi-w9CpyUReMErP1RsBLk7wNtOvs5EQpPqmuMvqW57NBUczScEoPwmUqq
abu9V0-Py4dQ57_bapoKRu1R90bvuFnU63SHWEFglZQvJDMeAvmj4sm-Fp0o
Yu_neotgQ0hzbI5gry7ajdYy9-2lNx_76aBZoOUu9HCJ-UsfSOI8"
}
用于本示例的明文八位组(采用 JSON 数组表示)为:
[123, 34, 107, 116, 121, 34, 58, 34, 82, 83, 65, 34, 44, 34, 107,
105, 100, 34, 58, 34, 106, 117, 108, 105, 101, 116, 64, 99, 97, 112,
117, 108, 101, 116, 46, 108, 105, 116, 34, 44, 34, 117, 115, 101, 34,
58, 34, 101, 110, 99, 34, 44, 34, 110, 34, 58, 34, 116, 54, 81, 56,
80, 87, 83, 105, 49, 100, 107, 74, 106, 57, 104, 84, 80, 56, 104, 78,
Jones Standards Track [Page 29]
RFC 7517 JSON Web Key (JWK) May 2015
89, 70, 108, 118, 97, 100, 77, 55, 68, 102, 108, 87, 57, 109, 87,
101, 112, 79, 74, 104, 74, 54, 54, 119, 55, 110, 121, 111, 75, 49,
103, 80, 78, 113, 70, 77, 83, 81, 82, 121, 79, 49, 50, 53, 71, 112,
45, 84, 69, 107, 111, 100, 104, 87, 114, 48, 105, 117, 106, 106, 72,
86, 120, 55, 66, 99, 86, 48, 108, 108, 83, 52, 119, 53, 65, 67, 71,
103, 80, 114, 99, 65, 100, 54, 90, 99, 83, 82, 48, 45, 73, 113, 111,
109, 45, 81, 70, 99, 78, 80, 56, 83, 106, 103, 48, 56, 54, 77, 119,
111, 113, 81, 85, 95, 76, 89, 121, 119, 108, 65, 71, 90, 50, 49, 87,
83, 100, 83, 95, 80, 69, 82, 121, 71, 70, 105, 78, 110, 106, 51, 81,
81, 108, 79, 56, 89, 110, 115, 53, 106, 67, 116, 76, 67, 82, 119, 76,
72, 76, 48, 80, 98, 49, 102, 69, 118, 52, 53, 65, 117, 82, 73, 117,
85, 102, 86, 99, 80, 121, 83, 66, 87, 89, 110, 68, 121, 71, 120, 118,
106, 89, 71, 68, 83, 77, 45, 65, 113, 87, 83, 57, 122, 73, 81, 50,
90, 105, 108, 103, 84, 45, 71, 113, 85, 109, 105, 112, 103, 48, 88,
79, 67, 48, 67, 99, 50, 48, 114, 103, 76, 101, 50, 121, 109, 76, 72,
106, 112, 72, 99, 105, 67, 75, 86, 65, 98, 89, 53, 45, 76, 51, 50,
45, 108, 83, 101, 90, 79, 45, 79, 115, 54, 85, 49, 53, 95, 97, 88,
114, 107, 57, 71, 119, 56, 99, 80, 85, 97, 88, 49, 95, 73, 56, 115,
76, 71, 117, 83, 105, 86, 100, 116, 51, 67, 95, 70, 110, 50, 80, 90,
51, 90, 56, 105, 55, 52, 52, 70, 80, 70, 71, 71, 99, 71, 49, 113,
115, 50, 87, 122, 45, 81, 34, 44, 34, 101, 34, 58, 34, 65, 81, 65,
66, 34, 44, 34, 100, 34, 58, 34, 71, 82, 116, 98, 73, 81, 109, 104,
79, 90, 116, 121, 115, 122, 102, 103, 75, 100, 103, 52, 117, 95, 78,
45, 82, 95, 109, 90, 71, 85, 95, 57, 107, 55, 74, 81, 95, 106, 110,
49, 68, 110, 102, 84, 117, 77, 100, 83, 78, 112, 114, 84, 101, 97,
83, 84, 121, 87, 102, 83, 78, 107, 117, 97, 65, 119, 110, 79, 69, 98,
73, 81, 86, 121, 49, 73, 81, 98, 87, 86, 86, 50, 53, 78, 89, 51, 121,
98, 99, 95, 73, 104, 85, 74, 116, 102, 114, 105, 55, 98, 65, 88, 89,
69, 82, 101, 87, 97, 67, 108, 51, 104, 100, 108, 80, 75, 88, 121, 57,
85, 118, 113, 80, 89, 71, 82, 48, 107, 73, 88, 84, 81, 82, 113, 110,
115, 45, 100, 86, 74, 55, 106, 97, 104, 108, 73, 55, 76, 121, 99,
107, 114, 112, 84, 109, 114, 77, 56, 100, 87, 66, 111, 52, 95, 80,
77, 97, 101, 110, 78, 110, 80, 105, 81, 103, 79, 48, 120, 110, 117,
84, 111, 120, 117, 116, 82, 90, 74, 102, 74, 118, 71, 52, 79, 120,
52, 107, 97, 51, 71, 79, 82, 81, 100, 57, 67, 115, 67, 90, 50, 118,
115, 85, 68, 109, 115, 88, 79, 102, 85, 69, 78, 79, 121, 77, 113, 65,
68, 67, 54, 112, 49, 77, 51, 104, 51, 51, 116, 115, 117, 114, 89, 49,
53, 107, 57, 113, 77, 83, 112, 71, 57, 79, 88, 95, 73, 74, 65, 88,
109, 120, 122, 65, 104, 95, 116, 87, 105, 90, 79, 119, 107, 50, 75,
52, 121, 120, 72, 57, 116, 83, 51, 76, 113, 49, 121, 88, 56, 67, 49,
69, 87, 109, 101, 82, 68, 107, 75, 50, 97, 104, 101, 99, 71, 56, 53,
45, 111, 76, 75, 81, 116, 53, 86, 69, 112, 87, 72, 75, 109, 106, 79,
105, 95, 103, 74, 83, 100, 83, 103, 113, 99, 78, 57, 54, 88, 53, 50,
101, 115, 65, 81, 34, 44, 34, 112, 34, 58, 34, 50, 114, 110, 83, 79,
86, 52, 104, 75, 83, 78, 56, 115, 83, 52, 67, 103, 99, 81, 72, 70,
98, 115, 48, 56, 88, 98, 111, 70, 68, 113, 75, 117, 109, 51, 115, 99,
52, 104, 51, 71, 82, 120, 114, 84, 109, 81, 100, 108, 49, 90, 75, 57,
117, 119, 45, 80, 73, 72, 102, 81, 80, 48, 70, 107, 120, 88, 86, 114,
Jones Standards Track [Page 30]
RFC 7517 JSON Web Key (JWK) May 2015
120, 45, 87, 69, 45, 90, 69, 98, 114, 113, 105, 118, 72, 95, 50, 105,
67, 76, 85, 83, 55, 119, 65, 108, 54, 88, 118, 65, 82, 116, 49, 75,
107, 73, 97, 85, 120, 80, 80, 83, 89, 66, 57, 121, 107, 51, 49, 115,
48, 81, 56, 85, 75, 57, 54, 69, 51, 95, 79, 114, 65, 68, 65, 89, 116,
65, 74, 115, 45, 77, 51, 74, 120, 67, 76, 102, 78, 103, 113, 104, 53,
54, 72, 68, 110, 69, 84, 84, 81, 104, 72, 51, 114, 67, 84, 53, 84,
51, 121, 74, 119, 115, 34, 44, 34, 113, 34, 58, 34, 49, 117, 95, 82,
105, 70, 68, 80, 55, 76, 66, 89, 104, 51, 78, 52, 71, 88, 76, 84, 57,
79, 112, 83, 75, 89, 80, 48, 117, 81, 90, 121, 105, 97, 90, 119, 66,
116, 79, 67, 66, 78, 74, 103, 81, 120, 97, 106, 49, 48, 82, 87, 106,
115, 90, 117, 48, 99, 54, 73, 101, 100, 105, 115, 52, 83, 55, 66, 95,
99, 111, 83, 75, 66, 48, 75, 106, 57, 80, 97, 80, 97, 66, 122, 103,
45, 73, 121, 83, 82, 118, 118, 99, 81, 117, 80, 97, 109, 81, 117, 54,
54, 114, 105, 77, 104, 106, 86, 116, 71, 54, 84, 108, 86, 56, 67, 76,
67, 89, 75, 114, 89, 108, 53, 50, 122, 105, 113, 75, 48, 69, 95, 121,
109, 50, 81, 110, 107, 119, 115, 85, 88, 55, 101, 89, 84, 66, 55, 76,
98, 65, 72, 82, 75, 57, 71, 113, 111, 99, 68, 69, 53, 66, 48, 102,
56, 48, 56, 73, 52, 115, 34, 44, 34, 100, 112, 34, 58, 34, 75, 107,
77, 84, 87, 113, 66, 85, 101, 102, 86, 119, 90, 50, 95, 68, 98, 106,
49, 112, 80, 81, 113, 121, 72, 83, 72, 106, 106, 57, 48, 76, 53, 120,
95, 77, 79, 122, 113, 89, 65, 74, 77, 99, 76, 77, 90, 116, 98, 85,
116, 119, 75, 113, 118, 86, 68, 113, 51, 116, 98, 69, 111, 51, 90,
73, 99, 111, 104, 98, 68, 116, 116, 54, 83, 98, 102, 109, 87, 122,
103, 103, 97, 98, 112, 81, 120, 78, 120, 117, 66, 112, 111, 79, 79,
102, 95, 97, 95, 72, 103, 77, 88, 75, 95, 108, 104, 113, 105, 103,
73, 52, 121, 95, 107, 113, 83, 49, 119, 89, 53, 50, 73, 119, 106, 85,
110, 53, 114, 103, 82, 114, 74, 45, 121, 89, 111, 49, 104, 52, 49,
75, 82, 45, 118, 122, 50, 112, 89, 104, 69, 65, 101, 89, 114, 104,
116, 116, 87, 116, 120, 86, 113, 76, 67, 82, 86, 105, 68, 54, 99, 34,
44, 34, 100, 113, 34, 58, 34, 65, 118, 102, 83, 48, 45, 103, 82, 120,
118, 110, 48, 98, 119, 74, 111, 77, 83, 110, 70, 120, 89, 99, 75, 49,
87, 110, 117, 69, 106, 81, 70, 108, 117, 77, 71, 102, 119, 71, 105,
116, 81, 66, 87, 116, 102, 90, 49, 69, 114, 55, 116, 49, 120, 68,
107, 98, 78, 57, 71, 81, 84, 66, 57, 121, 113, 112, 68, 111, 89, 97,
78, 48, 54, 72, 55, 67, 70, 116, 114, 107, 120, 104, 74, 73, 66, 81,
97, 106, 54, 110, 107, 70, 53, 75, 75, 83, 51, 84, 81, 116, 81, 53,
113, 67, 122, 107, 79, 107, 109, 120, 73, 101, 51, 75, 82, 98, 66,
121, 109, 88, 120, 107, 98, 53, 113, 119, 85, 112, 88, 53, 69, 76,
68, 53, 120, 70, 99, 54, 70, 101, 105, 97, 102, 87, 89, 89, 54, 51,
84, 109, 109, 69, 65, 117, 95, 108, 82, 70, 67, 79, 74, 51, 120, 68,
101, 97, 45, 111, 116, 115, 34, 44, 34, 113, 105, 34, 58, 34, 108,
83, 81, 105, 45, 119, 57, 67, 112, 121, 85, 82, 101, 77, 69, 114, 80,
49, 82, 115, 66, 76, 107, 55, 119, 78, 116, 79, 118, 115, 53, 69, 81,
112, 80, 113, 109, 117, 77, 118, 113, 87, 53, 55, 78, 66, 85, 99,
122, 83, 99, 69, 111, 80, 119, 109, 85, 113, 113, 97, 98, 117, 57,
86, 48, 45, 80, 121, 52, 100, 81, 53, 55, 95, 98, 97, 112, 111, 75,
82, 117, 49, 82, 57, 48, 98, 118, 117, 70, 110, 85, 54, 51, 83, 72,
87, 69, 70, 103, 108, 90, 81, 118, 74, 68, 77, 101, 65, 118, 109,
Jones Standards Track [Page 31]
RFC 7517 JSON Web Key (JWK) May 2015
106, 52, 115, 109, 45, 70, 112, 48, 111, 89, 117, 95, 110, 101, 111,
116, 103, 81, 48, 104, 122, 98, 73, 53, 103, 114, 121, 55, 97, 106,
100, 89, 121, 57, 45, 50, 108, 78, 120, 95, 55, 54, 97, 66, 90, 111,
79, 85, 117, 57, 72, 67, 74, 45, 85, 115, 102, 83, 79, 73, 56, 34,
125]
C.2. JOSE 头部
下列示例 JWE Protected Header 声明:
o 内容加密密钥(Content Encryption Key)使用 PBES2-HS256+A128KW
算法加密给接收方,从而生成 JWE Encrypted Key,
o Salt Input("p2s")值为 [217, 96, 147, 112, 150, 117, 70,
247, 127, 8, 155, 137, 174, 42, 80, 215],
o 迭代计数("p2c")值为 4096,
o 对明文进行认证加密采用 AES_128_CBC_HMAC_SHA_256 算法以产生
密文和认证标签(Authentication Tag),且
o 内容类型为 application/jwk+json。
{
"alg":"PBES2-HS256+A128KW",
"p2s":"2WCTcJZ1Rvd_CJuJripQ1w",
"p2c":4096,
"enc":"A128CBC-HS256",
"cty":"jwk+json"
}
将此 JWE Protected Header 编码为 BASE64URL(UTF8(JWE Protected
Header)) 后得到该值(换行仅为显示):
eyJhbGciOiJQQkVTMi1IUzI1NitBMTI4S1ciLCJwMnMiOiIyV0NUY0paMVJ2ZF9DSn
VKcmlwUTF3IiwicDJjIjo0MDk2LCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiY3R5Ijoi
andrK2pzb24ifQ
C.3. 内容加密密钥(CEK)
生成一个 256 位的随机内容加密密钥(CEK)。在本示例中,其值(
采用 JSON 数组表示)为:
[111, 27, 25, 52, 66, 29, 20, 78, 92, 176, 56, 240, 65, 208, 82, 112,
161, 131, 36, 55, 202, 236, 185, 172, 129, 23, 153, 194, 195, 48,
253, 182]
Jones Standards Track [Page 32]
RFC 7517 JSON Web Key (JWK) May 2015
C.4. 密钥派生
使用 PBKDF2 算法(基于 HMAC SHA-256),并采用指定的盐值和迭代
计数,与请求的 128 位输出密钥长度,从共享口令派生出一个密钥以
生成 PBKDF2 派生密钥。本示例使用如下口令:
Thus from my lips, by yours, my sin is purged.
表示该口令的八位组为:
[84, 104, 117, 115, 32, 102, 114, 111, 109, 32, 109, 121, 32, 108,
105, 112, 115, 44, 32, 98, 121, 32, 121, 111, 117, 114, 115, 44, 32,
109, 121, 32, 115, 105, 110, 32, 105, 115, 32, 112, 117, 114, 103,
101, 100, 46]
盐值(UTF8(Alg) || 0x00 || Salt Input)为:
[80, 66, 69, 83, 50, 45, 72, 83, 50, 53, 54, 43, 65, 49, 50, 56, 75,
87, 0, 217, 96, 147, 112, 150, 117, 70, 247, 127, 8, 155, 137, 174,
42, 80, 215].
由此产生的 PBKDF2 派生密钥值为:
[110, 171, 169, 92, 129, 92, 109, 117, 233, 242, 116, 233, 170, 14,
24, 75]
C.5. 密钥加密
使用 PBKDF2 派生密钥通过 "A128KW" 算法加密 CEK。得到的 JWE
Encrypted Key 值为:
[78, 186, 151, 59, 11, 141, 81, 240, 213, 245, 83, 211, 53, 188, 134,
188, 66, 125, 36, 200, 222, 124, 5, 103, 249, 52, 117, 184, 140, 81,
246, 158, 161, 177, 20, 33, 245, 57, 59, 4]
将此 JWE Encrypted Key 编码为 BASE64URL(JWE Encrypted Key) 得到:
TrqXOwuNUfDV9VPTNbyGvEJ9JMjefAVn-TR1uIxR9p6hsRQh9Tk7BA
C.6. 初始化向量
生成一个随机的 128 位 JWE 初始化向量(IV)。在本示例中,其值为:
[97, 239, 99, 214, 171, 54, 216, 57, 145, 72, 7, 93, 34, 31, 149,
156]
Jones Standards Track [Page 33]
RFC 7517 JSON Web Key (JWK) May 2015
将该 JWE 初始化向量编码为 BASE64URL(JWE Initialization Vector) 得到:
Ye9j1qs22DmRSAddIh-VnA
C.7. 附加认证数据
令附加认证数据(Additional Authenticated Data)加密参数为
ASCII(BASE64URL(UTF8(JWE Protected Header)))。该值为:
[123, 34, 97, 108, 103, 34, 58, 34, 80, 66, 69, 83, 50, 45, 72, 83,
50, 53, 54, 43, 65, 49, 50, 56, 75, 87, 34, 44, 34, 112, 50, 115, 34,
58, 34, 50, 87, 67, 84, 99, 74, 90, 49, 82, 118, 100, 95, 67, 74,
117, 74, 114, 105, 112, 81, 49, 119, 34, 44, 34, 112, 50, 99, 34, 58,
52, 48, 57, 54, 44, 34, 101, 110, 99, 34, 58, 34, 65, 49, 50, 56, 67,
66, 67, 45, 72, 83, 50, 53, 54, 34, 44, 34, 99, 116, 121, 34, 58, 34,
106, 119, 107, 43, 106, 115, 111, 110, 34, 125]
C.8. 内容加密
使用 CEK 作为加密密钥、上述 JWE 初始化向量以及附加认证数据,
对明文执行 AES_128_CBC_HMAC_SHA_256 算法的认证加密。得到的密文为:
[3, 8, 65, 242, 92, 107, 148, 168, 197, 159, 77, 139, 25, 97, 42,
131, 110, 199, 225, 56, 61, 127, 38, 64, 108, 91, 247, 167, 150, 98,
112, 122, 99, 235, 132, 50, 28, 46, 56, 170, 169, 89, 220, 145, 38,
157, 148, 224, 66, 140, 8, 169, 146, 117, 222, 54, 242, 28, 31, 11,
129, 227, 226, 169, 66, 117, 133, 254, 140, 216, 115, 203, 131, 60,
60, 47, 233, 132, 121, 13, 35, 188, 53, 19, 172, 77, 59, 54, 211,
158, 172, 25, 60, 111, 0, 80, 201, 158, 160, 210, 68, 55, 12, 67,
136, 130, 87, 216, 197, 95, 62, 20, 155, 205, 5, 140, 27, 168, 221,
65, 114, 78, 157, 254, 46, 206, 182, 52, 135, 87, 239, 3, 34, 186,
126, 220, 151, 17, 33, 237, 57, 96, 172, 183, 58, 45, 248, 103, 241,
142, 136, 7, 53, 16, 173, 181, 7, 93, 92, 252, 1, 53, 212, 242, 8,
255, 11, 239, 181, 24, 148, 136, 111, 24, 161, 244, 23, 106, 69, 157,
215, 243, 189, 240, 166, 169, 249, 72, 38, 201, 99, 223, 173, 229, 9,
222, 82, 79, 157, 176, 248, 85, 239, 121, 163, 1, 31, 48, 98, 206,
61, 249, 104, 216, 201, 227, 105, 48, 194, 193, 10, 36, 160, 159,
241, 166, 84, 54, 188, 211, 243, 242, 40, 46, 45, 193, 193, 160, 169,
101, 201, 1, 73, 47, 105, 142, 88, 28, 42, 132, 26, 61, 58, 63, 142,
243, 77, 26, 179, 153, 166, 46, 203, 208, 49, 55, 229, 34, 178, 4,
109, 180, 204, 204, 115, 1, 103, 193, 5, 91, 215, 214, 195, 1, 110,
208, 53, 144, 36, 105, 12, 54, 25, 129, 101, 15, 183, 150, 250, 147,
115, 227, 58, 250, 5, 128, 232, 63, 15, 14, 19, 141, 124, 253, 142,
137, 189, 135, 26, 44, 240, 27, 88, 132, 105, 127, 6, 71, 37, 41,
124, 187, 165, 140, 34, 200, 123, 80, 228, 24, 231, 176, 132, 171,
Jones Standards Track [Page 34]
RFC 7517 JSON Web Key (JWK) May 2015
138, 145, 152, 116, 224, 50, 141, 51, 147, 91, 186, 7, 246, 106, 217,
148, 244, 227, 244, 45, 220, 121, 165, 224, 148, 181, 17, 181, 128,
197, 101, 237, 11, 169, 229, 149, 199, 78, 56, 15, 14, 190, 91, 216,
222, 247, 213, 74, 40, 8, 96, 20, 168, 119, 96, 26, 24, 52, 37, 82,
127, 57, 176, 147, 118, 59, 7, 224, 33, 117, 72, 155, 29, 82, 26,
215, 189, 140, 119, 28, 152, 118, 93, 222, 194, 192, 148, 115, 83,
253, 216, 212, 108, 88, 83, 175, 172, 220, 97, 79, 110, 42, 223, 170,
161, 34, 164, 144, 193, 76, 122, 92, 160, 41, 178, 175, 6, 35, 96,
113, 96, 158, 90, 129, 101, 26, 45, 70, 180, 189, 230, 15, 5, 247,
150, 209, 94, 171, 26, 13, 142, 212, 129, 1, 176, 5, 0, 112, 203,
174, 185, 119, 76, 233, 189, 54, 172, 189, 245, 223, 253, 205, 12,
88, 9, 126, 157, 225, 90, 40, 229, 191, 63, 30, 160, 224, 69, 3, 140,
109, 70, 89, 37, 213, 245, 194, 210, 180, 188, 63, 210, 139, 221, 2,
144, 200, 20, 177, 216, 29, 227, 242, 106, 12, 135, 142, 139, 144,
82, 225, 162, 171, 176, 108, 99, 6, 43, 193, 161, 116, 234, 216, 1,
242, 21, 124, 162, 98, 205, 124, 193, 38, 12, 242, 90, 101, 76, 204,
184, 124, 58, 180, 16, 240, 26, 76, 195, 250, 212, 191, 185, 191, 97,
198, 186, 73, 225, 75, 14, 90, 123, 121, 172, 101, 50, 160, 221, 141,
253, 205, 126, 77, 9, 87, 198, 110, 104, 182, 141, 120, 51, 25, 232,
3, 32, 80, 6, 156, 8, 18, 4, 135, 221, 142, 25, 135, 2, 129, 132,
115, 227, 74, 141, 28, 119, 11, 141, 117, 134, 198, 62, 150, 254, 97,
75, 197, 251, 99, 89, 204, 224, 226, 67, 83, 175, 89, 0, 81, 29, 38,
207, 89, 140, 255, 197, 177, 164, 128, 62, 116, 224, 180, 109, 169,
28, 2, 59, 176, 130, 252, 44, 178, 81, 24, 181, 176, 75, 44, 61, 91,
12, 37, 21, 255, 83, 130, 197, 16, 231, 60, 217, 56, 131, 118, 168,
202, 58, 52, 84, 124, 162, 185, 174, 162, 226, 242, 112, 68, 246,
202, 16, 208, 52, 154, 58, 129, 80, 102, 33, 171, 6, 186, 177, 14,
195, 88, 136, 6, 0, 155, 28, 100, 162, 207, 162, 222, 117, 248, 170,
208, 114, 87, 31, 57, 176, 33, 57, 83, 253, 12, 168, 110, 194, 59,
22, 86, 48, 227, 196, 22, 176, 218, 122, 149, 21, 249, 195, 178, 174,
250, 20, 34, 120, 60, 139, 201, 99, 40, 18, 177, 17, 54, 54, 6, 3,
222, 128, 160, 88, 11, 27, 0, 81, 192, 36, 41, 169, 146, 8, 47, 64,
136, 28, 64, 209, 67, 135, 202, 20, 234, 182, 91, 204, 146, 195, 187,
0, 72, 77, 11, 111, 152, 204, 252, 177, 212, 89, 33, 50, 132, 184,
44, 183, 186, 19, 250, 69, 176, 201, 102, 140, 14, 143, 212, 212,
160, 123, 208, 185, 27, 155, 68, 77, 133, 198, 2, 126, 155, 215, 22,
91, 30, 217, 176, 172, 244, 156, 174, 143, 75, 90, 21, 102, 1, 160,
59, 253, 188, 88, 57, 185, 197, 83, 24, 22, 180, 174, 47, 207, 52, 1,
141, 146, 119, 233, 68, 228, 224, 228, 193, 248, 155, 202, 90, 7,
213, 88, 33, 108, 107, 14, 86, 8, 120, 250, 58, 142, 35, 164, 238,
221, 219, 35, 123, 88, 199, 192, 143, 104, 83, 17, 166, 243, 247, 11,
166, 67, 68, 204, 132, 23, 110, 103, 228, 14, 55, 122, 88, 57, 180,
178, 237, 52, 130, 214, 245, 102, 123, 67, 73, 175, 1, 127, 112, 148,
94, 132, 164, 197, 153, 217, 87, 25, 89, 93, 63, 22, 66, 166, 90,
251, 101, 10, 145, 66, 17, 124, 36, 255, 165, 226, 97, 16, 86, 112,
154, 88, 105, 253, 56, 209, 229, 122, 103, 51, 24, 228, 190, 3, 236,
48, 182, 121, 176, 140, 128, 117, 87, 251, 224, 37, 23, 248, 21, 218,
85, 251, 136, 84, 147, 143, 144, 46, 155, 183, 251, 89, 86, 23, 26,
Jones Standards Track [Page 35]
RFC 7517 JSON Web Key (JWK) May 2015
237, 100, 167, 32, 130, 173, 237, 89, 55, 110, 70, 142, 127, 65, 230,
208, 109, 69, 19, 253, 84, 130, 130, 193, 92, 58, 108, 150, 42, 136,
249, 234, 86, 241, 182, 19, 117, 246, 26, 181, 92, 101, 155, 44, 103,
235, 173, 30, 140, 90, 29, 183, 190, 77, 53, 206, 127, 5, 87, 8, 187,
184, 92, 4, 157, 22, 18, 105, 251, 39, 88, 182, 181, 103, 148, 233,
6, 63, 70, 188, 7, 101, 216, 127, 77, 31, 12, 233, 7, 147, 106, 30,
150, 77, 145, 13, 205, 48, 56, 245, 220, 89, 252, 127, 51, 180, 36,
31, 55, 18, 214, 230, 254, 217, 197, 65, 247, 27, 215, 117, 247, 108,
157, 121, 11, 63, 150, 195, 83, 6, 134, 242, 41, 24, 105, 204, 5, 63,
192, 14, 159, 113, 72, 140, 128, 51, 215, 80, 215, 39, 149, 94, 79,
128, 34, 5, 129, 82, 83, 121, 187, 37, 146, 27, 32, 177, 167, 71, 9,
195, 30, 199, 196, 205, 252, 207, 69, 8, 120, 27, 190, 51, 43, 75,
249, 234, 167, 116, 206, 203, 199, 43, 108, 87, 48, 155, 140, 228,
210, 85, 25, 161, 96, 67, 8, 205, 64, 39, 75, 88, 44, 238, 227, 16,
0, 100, 93, 129, 18, 4, 149, 50, 68, 72, 99, 35, 111, 254, 27, 102,
175, 108, 233, 87, 181, 44, 169, 18, 139, 79, 208, 14, 202, 192, 5,
162, 222, 231, 149, 24, 211, 49, 120, 101, 39, 206, 87, 147, 204,
200, 251, 104, 115, 5, 127, 117, 195, 79, 151, 18, 224, 52, 0, 245,
4, 85, 255, 103, 217, 0, 116, 198, 80, 91, 167, 192, 154, 199, 197,
149, 237, 51, 2, 131, 30, 226, 95, 105, 48, 68, 135, 208, 144, 120,
176, 145, 157, 8, 171, 80, 94, 61, 92, 92, 220, 157, 13, 138, 51, 23,
185, 124, 31, 77, 1, 87, 241, 43, 239, 55, 122, 86, 210, 48, 208,
204, 112, 144, 80, 147, 106, 219, 47, 253, 31, 134, 176, 16, 135,
219, 95, 17, 129, 83, 236, 125, 136, 112, 86, 228, 252, 71, 129, 218,
174, 156, 236, 12, 27, 159, 11, 138, 252, 253, 207, 31, 115, 214,
118, 239, 203, 16, 211, 205, 99, 22, 51, 163, 107, 162, 246, 199, 67,
127, 34, 108, 197, 53, 117, 58, 199, 3, 190, 74, 70, 190, 65, 235,
175, 97, 157, 215, 252, 189, 245, 100, 229, 248, 46, 90, 126, 237, 4,
159, 128, 58, 7, 156, 236, 69, 191, 85, 240, 179, 224, 249, 152, 49,
195, 223, 60, 78, 186, 157, 155, 217, 58, 105, 116, 164, 217, 111,
215, 150, 218, 252, 84, 86, 248, 140, 240, 226, 61, 106, 208, 95, 60,
163, 6, 0, 235, 253, 162, 96, 62, 234, 251, 249, 35, 21, 7, 211, 233,
86, 50, 33, 203, 67, 248, 60, 190, 123, 48, 167, 226, 90, 191, 71,
56, 183, 165, 17, 85, 76, 238, 140, 211, 168, 53, 223, 194, 4, 97,
149, 156, 120, 137, 76, 33, 229, 243, 194, 208, 198, 202, 139, 28,
114, 46, 224, 92, 254, 83, 100, 134, 158, 92, 70, 78, 61, 62, 138,
24, 173, 216, 66, 198, 70, 254, 47, 59, 193, 53, 6, 139, 19, 153,
253, 28, 199, 122, 160, 27, 67, 234, 209, 227, 139, 4, 50, 7, 178,
183, 89, 252, 32, 128, 137, 55, 52, 29, 89, 12, 111, 42, 181, 51,
170, 132, 132, 207, 170, 228, 254, 178, 213, 0, 136, 175, 8]
得到的认证标签(Authentication Tag)为:
[208, 113, 102, 132, 236, 236, 67, 223, 39, 53, 98, 99, 32, 121, 17,
236]
Jones Standards Track [Page 36]
RFC 7517 JSON Web Key (JWK) May 2015
将此 JWE 密文编码为 BASE64URL(JWE Ciphertext) 得到该值(换行仅
为显示):
AwhB8lxrlKjFn02LGWEqg27H4Tg9fyZAbFv3p5ZicHpj64QyHC44qqlZ3JEmnZTgQo
wIqZJ13jbyHB8LgePiqUJ1hf6M2HPLgzw8L-mEeQ0jvDUTrE07NtOerBk8bwBQyZ6g
0kQ3DEOIglfYxV8-FJvNBYwbqN1Bck6d_i7OtjSHV-8DIrp-3JcRIe05YKy3Oi34Z_
GOiAc1EK21B11c_AE11PII_wvvtRiUiG8YofQXakWd1_O98Kap-UgmyWPfreUJ3lJP
nbD4Ve95owEfMGLOPflo2MnjaTDCwQokoJ_xplQ2vNPz8iguLcHBoKllyQFJL2mOWB
wqhBo9Oj-O800as5mmLsvQMTflIrIEbbTMzHMBZ8EFW9fWwwFu0DWQJGkMNhmBZQ-3
lvqTc-M6-gWA6D8PDhONfP2Oib2HGizwG1iEaX8GRyUpfLuljCLIe1DkGOewhKuKkZ
h04DKNM5Nbugf2atmU9OP0Ldx5peCUtRG1gMVl7Qup5ZXHTjgPDr5b2N731UooCGAU
qHdgGhg0JVJ_ObCTdjsH4CF1SJsdUhrXvYx3HJh2Xd7CwJRzU_3Y1GxYU6-s3GFPbi
rfqqEipJDBTHpcoCmyrwYjYHFgnlqBZRotRrS95g8F95bRXqsaDY7UgQGwBQBwy665
d0zpvTasvfXf_c0MWAl-neFaKOW_Px6g4EUDjG1GWSXV9cLStLw_0ovdApDIFLHYHe
PyagyHjouQUuGiq7BsYwYrwaF06tgB8hV8omLNfMEmDPJaZUzMuHw6tBDwGkzD-tS_
ub9hxrpJ4UsOWnt5rGUyoN2N_c1-TQlXxm5oto14MxnoAyBQBpwIEgSH3Y4ZhwKBhH
PjSo0cdwuNdYbGPpb-YUvF-2NZzODiQ1OvWQBRHSbPWYz_xbGkgD504LRtqRwCO7CC
_CyyURi1sEssPVsMJRX_U4LFEOc82TiDdqjKOjRUfKK5rqLi8nBE9soQ0DSaOoFQZi
GrBrqxDsNYiAYAmxxkos-i3nX4qtByVx85sCE5U_0MqG7COxZWMOPEFrDaepUV-cOy
rvoUIng8i8ljKBKxETY2BgPegKBYCxsAUcAkKamSCC9AiBxA0UOHyhTqtlvMksO7AE
hNC2-YzPyx1FkhMoS4LLe6E_pFsMlmjA6P1NSge9C5G5tETYXGAn6b1xZbHtmwrPSc
ro9LWhVmAaA7_bxYObnFUxgWtK4vzzQBjZJ36UTk4OTB-JvKWgfVWCFsaw5WCHj6Oo
4jpO7d2yN7WMfAj2hTEabz9wumQ0TMhBduZ-QON3pYObSy7TSC1vVme0NJrwF_cJRe
hKTFmdlXGVldPxZCplr7ZQqRQhF8JP-l4mEQVnCaWGn9ONHlemczGOS-A-wwtnmwjI
B1V_vgJRf4FdpV-4hUk4-QLpu3-1lWFxrtZKcggq3tWTduRo5_QebQbUUT_VSCgsFc
OmyWKoj56lbxthN19hq1XGWbLGfrrR6MWh23vk01zn8FVwi7uFwEnRYSafsnWLa1Z5
TpBj9GvAdl2H9NHwzpB5NqHpZNkQ3NMDj13Fn8fzO0JB83Etbm_tnFQfcb13X3bJ15
Cz-Ww1MGhvIpGGnMBT_ADp9xSIyAM9dQ1yeVXk-AIgWBUlN5uyWSGyCxp0cJwx7HxM
38z0UIeBu-MytL-eqndM7LxytsVzCbjOTSVRmhYEMIzUAnS1gs7uMQAGRdgRIElTJE
SGMjb_4bZq9s6Ve1LKkSi0_QDsrABaLe55UY0zF4ZSfOV5PMyPtocwV_dcNPlxLgNA
D1BFX_Z9kAdMZQW6fAmsfFle0zAoMe4l9pMESH0JB4sJGdCKtQXj1cXNydDYozF7l8
H00BV_Er7zd6VtIw0MxwkFCTatsv_R-GsBCH218RgVPsfYhwVuT8R4HarpzsDBufC4
r8_c8fc9Z278sQ081jFjOja6L2x0N_ImzFNXU6xwO-Ska-QeuvYZ3X_L31ZOX4Llp-
7QSfgDoHnOxFv1Xws-D5mDHD3zxOup2b2TppdKTZb9eW2vxUVviM8OI9atBfPKMGAO
v9omA-6vv5IxUH0-lWMiHLQ_g8vnswp-Jav0c4t6URVUzujNOoNd_CBGGVnHiJTCHl
88LQxsqLHHIu4Fz-U2SGnlxGTj0-ihit2ELGRv4vO8E1BosTmf0cx3qgG0Pq0eOLBD
IHsrdZ_CCAiTc0HVkMbyq1M6qEhM-q5P6y1QCIrwg
将此 JWE 认证标签编码为 BASE64URL(JWE Authentication Tag) 得到:
0HFmhOzsQ98nNWJjIHkR7A
Jones Standards Track [Page 37]
RFC 7517 JSON Web Key (JWK) May 2015
C.9. 完整表示
组装最终表示:根据 [JWE] 第 7.1 节定义,本例
的 JWE Compact Serialization 为字符串
BASE64URL(UTF8(JWE Protected Header)) || '.' || BASE64URL(JWE
Encrypted Key) || '.' || BASE64URL(JWE Initialization Vector) || '.'
|| BASE64URL(JWE Ciphertext) || '.' || BASE64URL(JWE Authentication
Tag)。
Jones Standards Track [Page 38]
RFC 7517 JSON Web Key (JWK) May 2015
本示例中的最终结果(换行仅为显示目的)为:
eyJhbGciOiJQQkVTMi1IUzI1NitBMTI4S1ciLCJwMnMiOiIyV0NUY0paMVJ2ZF9DSn
VKcmlwUTF3IiwicDJjIjo0MDk2LCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiY3R5Ijoi
andrK2pzb24ifQ.
TrqXOwuNUfDV9VPTNbyGvEJ9JMjefAVn-TR1uIxR9p6hsRQh9Tk7BA.
Ye9j1qs22DmRSAddIh-VnA.
AwhB8lxrlKjFn02LGWEqg27H4Tg9fyZAbFv3p5ZicHpj64QyHC44qqlZ3JEmnZTgQo
wIqZJ13jbyHB8LgePiqUJ1hf6M2HPLgzw8L-mEeQ0jvDUTrE07NtOerBk8bwBQyZ6g
0kQ3DEOIglfYxV8-FJvNBYwbqN1Bck6d_i7OtjSHV-8DIrp-3JcRIe05YKy3Oi34Z_
GOiAc1EK21B11c_AE11PII_wvvtRiUiG8YofQXakWd1_O98Kap-UgmyWPfreUJ3lJP
nbD4Ve95owEfMGLOPflo2MnjaTDCwQokoJ_xplQ2vNPz8iguLcHBoKllyQFJL2mOWB
wqhBo9Oj-O800as5mmLsvQMTflIrIEbbTMzHMBZ8EFW9fWwwFu0DWQJGkMNhmBZQ-3
lvqTc-M6-gWA6D8PDhONfP2Oib2HGizwG1iEaX8GRyUpfLuljCLIe1DkGOewhKuKkZ
h04DKNM5Nbugf2atmU9OP0Ldx5peCUtRG1gMVl7Qup5ZXHTjgPDr5b2N731UooCGAU
qHdgGhg0JVJ_ObCTdjsH4CF1SJsdUhrXvYx3HJh2Xd7CwJRzU_3Y1GxYU6-s3GFPbi
rfqqEipJDBTHpcoCmyrwYjYHFgnlqBZRotRrS95g8F95bRXqsaDY7UgQGwBQBwy665
d0zpvTasvfXf_c0MWAl-neFaKOW_Px6g4EUDjG1GWSXV9cLStLw_0ovdApDIFLHYHe
PyagyHjouQUuGiq7BsYwYrwaF06tgB8hV8omLNfMEmDPJaZUzMuHw6tBDwGkzD-tS_
ub9hxrpJ4UsOWnt5rGUyoN2N_c1-TQlXxm5oto14MxnoAyBQBpwIEgSH3Y4ZhwKBhH
PjSo0cdwuNdYbGPpb-YUvF-2NZzODiQ1OvWQBRHSbPWYz_xbGkgD504LRtqRwCO7CC
_CyyURi1sEssPVsMJRX_U4LFEOc82TiDdqjKOjRUfKK5rqLi8nBE9soQ0DSaOoFQZi
GrBrqxDsNYiAYAmxxkos-i3nX4qtByVx85sCE5U_0MqG7COxZWMOPEFrDaepUV-cOy
rvoUIng8i8ljKBKxETY2BgPegKBYCxsAUcAkKamSCC9AiBxA0UOHyhTqtlvMksO7AE
hNC2-YzPyx1FkhMoS4LLe6E_pFsMlmjA6P1NSge9C5G5tETYXGAn6b1xZbHtmwrPSc
ro9LWhVmAaA7_bxYObnFUxgWtK4vzzQBjZJ36UTk4OTB-JvKWgfVWCFsaw5WCHj6Oo
4jpO7d2yN7WMfAj2hTEabz9wumQ0TMhBduZ-QON3pYObSy7TSC1vVme0NJrwF_cJRe
hKTFmdlXGVldPxZCplr7ZQqRQhF8JP-l4mEQVnCaWGn9ONHlemczGOS-A-wwtnmwjI
B1V_vgJRf4FdpV-4hUk4-QLpu3-1lWFxrtZKcggq3tWTduRo5_QebQbUUT_VSCgsFc
OmyWKoj56lbxthN19hq1XGWbLGfrrR6MWh23vk01zn8FVwi7uFwEnRYSafsnWLa1Z5
TpBj9GvAdl2H9NHwzpB5NqHpZNkQ3NMDj13Fn8fzO0JB83Etbm_tnFQfcb13X3bJ15
Cz-Ww1MGhvIpGGnMBT_ADp9xSIyAM9dQ1yeVXk-AIgWBUlN5uyWSGyCxp0cJwx7HxM
38z0UIeBu-MytL-eqndM7LxytsVzCbjOTSVRmhYEMIzUAnS1gs7uMQAGRdgRIElTJE
SGMjb_4bZq9s6Ve1LKkSi0_QDsrABaLe55UY0zF4ZSfOV5PMyPtocwV_dcNPlxLgNA
D1BFX_Z9kAdMZQW6fAmsfFle0zAoMe4l9pMESH0JB4sJGdCKtQXj1cXNydDYozF7l8
H00BV_Er7zd6VtIw0MxwkFCTatsv_R-GsBCH218RgVPsfYhwVuT8R4HarpzsDBufC4
r8_c8fc9Z278sQ081jFjOja6L2x0N_ImzFNXU6xwO-Ska-QeuvYZ3X_L31ZOX4Llp-
7QSfgDoHnOxFv1Xws-D5mDHD3zxOup2b2TppdKTZb9eW2vxUVviM8OI9atBfPKMGAO
v9omA-6vv5IxUH0-lWMiHLQ_g8vnswp-Jav0c4t6URVUzujNOoNd_CBGGVnHiJTCHl
88LQxsqLHHIu4Fz-U2SGnlxGTj0-ihit2ELGRv4vO8E1BosTmf0cx3qgG0Pq0eOLBD
IHsrdZ_CCAiTc0HVkMbyq1M6qEhM-q5P6y1QCIrwg.
0HFmhOzsQ98nNWJjIHkR7A
Jones Standards Track [Page 39]
RFC 7517 JSON Web Key (JWK) May 2015
Acknowledgements
A JSON representation for RSA public keys was previously introduced
by John Panzer, Ben Laurie, and Dirk Balfanz in Magic Signatures
[MagicSignatures].
Thanks to Matt Miller for creating the encrypted key example and to
Edmund Jay and Brian Campbell for validating the example.
This specification is the work of the JOSE working group, which
includes dozens of active and dedicated participants. In particular,
the following individuals contributed ideas, feedback, and wording
that influenced this specification:
Dirk Balfanz, Richard Barnes, John Bradley, Brian Campbell, Breno de
Medeiros, Stephen Farrell, Joe Hildebrand, Edmund Jay, Stephen Kent,
Ben Laurie, James Manger, Matt Miller, Kathleen Moriarty, Chuck
Mortimore, Tony Nadalin, Axel Nennker, John Panzer, Eric Rescorla,
Pete Resnick, Nat Sakimura, Jim Schaad, Ryan Sleevi, Paul Tarjan,
Hannes Tschofenig, and Sean Turner.
Jim Schaad and Karen O'Donoghue chaired the JOSE working group and
Sean Turner, Stephen Farrell, and Kathleen Moriarty served as
Security Area Directors during the creation of this specification.
Author's Address
Michael B. Jones
Microsoft
EMail: mbj@microsoft.com
URI: http://self-issued.info/
Jones Standards Track [Page 40]