/
363.txt
213 lines (164 loc) · 5.99 KB
/
363.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
* 仕様書
[REFS[
- [1] [CITE@en[[[RFC 7517]] - JSON Web Key (JWK)]]
([TIME[2015-05-20 09:55:17 +09:00]] 版)
<https://tools.ietf.org/html/rfc7517>
-- [14] 移転確認 [TIME[2022-11-25T08:11:12.100Z]]
-- [15]
[CITE@en[[[RFC 7517]]: JSON Web Key (JWK)]], [TIME[2022-11-25T08:11:02.000Z]] <https://www.rfc-editor.org/rfc/rfc7517.html>
---
[16]
[CITE@en[[[RFC 7517]]: JSON Web Key (JWK)]], [TIME[2022-11-25T08:35:10.000Z]] <https://www.rfc-editor.org/rfc/rfc7517.html#section-2>
--
[23]
[CITE@en[[[RFC 7517]]: JSON Web Key (JWK)]], [TIME[2022-11-25T08:41:52.000Z]] <https://www.rfc-editor.org/rfc/rfc7517.html#section-4>
--
[12]
[CITE[RFC Errata Report » [[RFC Editor]]]], [TIME[2022-11-25T08:08:58.000Z]] <https://www.rfc-editor.org/errata/rfc7517>
- [2] [CITE@en[RFC 7638 - JSON Web Key (JWK) Thumbprint]]
([TIME[2015-09-09 04:51:29 +09:00]] 版)
<https://tools.ietf.org/html/rfc7638>
- [18] [CITE@en[[[RFC 7518]] - JSON Web Algorithms ([[JWA]])]], [TIME[2019-11-27 04:11:14 +09:00]]
<https://tools.ietf.org/html/rfc7518#section-7.1>
- [20] [CITE[JSON Object Signing and Encryption (JOSE)]], [TIME[2019-03-14 06:55:09 +09:00]] <https://www.iana.org/assignments/jose/jose.xhtml#web-signature-encryption-algorithms>
- [5] [CITE@en[[[RFC 7515]] - JSON Web Signature (JWS)]], [TIME[2020-03-29 16:13:43 +09:00]] <https://tools.ietf.org/html/rfc7515#section-4.1.3>
- [9]
[CITE@en[[[RFC 7516]] - JSON Web Encryption (JWE)]], [TIME[2022-11-23T08:37:24.000Z]] <https://datatracker.ietf.org/doc/html/rfc7516#section-4.1.5>
- [34]
[CITE@en[[[RFC 7517]]: JSON Web Key (JWK)]], [TIME[2022-12-15T11:45:52.000Z]] <https://www.rfc-editor.org/rfc/rfc7517.html#section-8.5.1>
]REFS]
* 構文
[35]
[CODE[application/jwe+json]]
では
[[RFC 3629]] [[UTF-8]]
[[符号化]]する[SHOULD[べき]]とされます。
[SRC[>>34]]
[36] なぜか[MUST[必須]]ではなく、他の[[文字符号化]]の余地が残されています。
[37]
[[暗号化JWK]]では [[RFC 3629]] [[UTF-8]] と定義されていて、他の選択肢は提供されていません。
* データモデル
[22]
[DFN[JSON Web Key]] ([DFN[JWK]])
は、
[[暗号鍵]]を表現する[[JSONオブジェクト]]です。
[SRC[>>16, >>23]]
[24]
[[JSONオブジェクト]]の[[メンバー]]が[[鍵]]の[[特性]]を表します。
[SRC[>>16, >>23]]
[25]
[[JWK]] 本体仕様 [[RFC 7517]] は、
[[算法]]固有ではなく多くの[[鍵]]に共通の[[鍵引数]]を定義しています。
[[鍵型]] ([CODE[kty]]) に応じて他の引数も指定できます。
[[JWA]] は各[[算法]]用の[[鍵引数]]を定義しています。
(別の[[鍵型]]で同じ[[鍵引数]]の名前を共用することもあります。)
[SRC[>>23]]
[27]
[[JWK]]
にはその他の[[メンバー]]があるかもしれません。
実装は理解しない[[メンバー]]を無視しなければ[MUST[なりません]]。
[SRC[>>23]]
[28]
[[JWK]] の[[メンバー]]の名前は、
[[IANA登録簿]]に登録された値か、
[[耐衝突名]]を含む値である[RUBYB[べき][should]]です。
[SRC[>>23]]
[26]
[[メンバー]]の名前は、[[JWK]]
内で固有でなければ[MUST[なりません]]。
[[JWK]] [[構文解析器]]は、
[[JWK]]
が[[メンバー]]名の重複を含む時、
これを拒絶するか、
または重複するメンバー名について字句的に最後のもののみ採用する
[[JavaScript]] [CODE[JSON.parse]]
と同じ挙動の [[JSON]] [[構文解析器]]を使うかしなければ[MUST[なりません]]。
[SRC[>>23]]
;; [30] これは[[JOSEヘッダー]]や[[JWK集合]]と同等の規定です。
[FIG(list short)[ [29] [[JWK]] [[鍵引数]]
- [CODE[alg]]
- [CODE[key_ops]]
- [CODE[kid]]
- [CODE[kty]] (必須)
- [CODE[use][use (JWK)]]
- [CODE[x5c]]
- [CODE[x5t]]
- [CODE[x5t#S256]]
- [CODE[x5u]]
]FIG]
* 処理
[31] [[JWK集合]]においては、[[JWK集合]]中の [[JWK]] を無視するべき状況
([[エラー処理]])
がいくつか指定されています。
* アルゴリズム値
[FIG(short list)[ [3] [[JWK]] 用アルゴリズム値
- [CODE[RS1]]
- [CODE[A128CBC]]
- [CODE[A192CBC]]
- [CODE[A256CBC]]
- [CODE[A128CTR]]
- [CODE[A192CTR]]
- [CODE[A256CTR]]
- [CODE[HS1]]
]FIG]
[4] いずれも [[JOSE]] での利用が禁止されています [SRC[>>20]]。
[19] [[IANA登録簿]] [SRC[>>20]] があります。 [SRC[>>18]]
[21]
[CODE[enc]] や [CODE[alg]] の登録簿と共通になっていますが、
種別で区別されており、
現時点で複数の場面で使えるものはありません。
[TIME[2019-12-06T04:44:58.100Z]]
* MIME型
[FIG(data list middle)[ [32] [[MIME型]]
:[[MIME型]]:[DFN[[CODE[application/jwk+json]]]]
:説明:[[JWK]]
:[[CTE]]:[CODE[8bit]]
]FIG]
[33] [CODE[cty]] では省略されて [DFN[[CODE[jwk+json]]]]
と書かれます。
* 応用
[FIG(short list)[ [17] [[JWK]] の[[応用]]
- [[JWK集合]]
- [[暗号化JWK]]
]FIG]
* ヘッダー引数 [CODE[jwk]] (JOSE ヘッダー)
[6]
[[JWS]]
の[[ヘッダー引数]]
[DFN[[CODE[jwk]]]]
(JSON Web Key)
は、
[[JWS]]
を
[[RFC 4949]] [[デジタル署名]]するため用いた[[鍵]]に対応する[[公開鍵]]を表します。
[SRC[>>5]]
[10]
[[JWE]]
の[[ヘッダー引数]]
[CODE[jwk]]
は、
それに対して [[JWE]]
が[[暗号化]]された[[公開鍵]]を表します。
[[JWE]] を[[解読]]するため必要な[[秘密鍵]]を決定するため使えます。
[SRC[>>9]]
[7]
[[公開鍵]]は、
[[JWK]]
で表します。
[SRC[>>1]]
[8]
[CODE[jwk]]
[[ヘッダー引数]]の利用は[MAY[任意]]です。
[SRC[>>1]]
[11] [[JOSE鍵識別]]参照。
* 関連
[38] [[JWS]] や [[JWE]] とは違って[[簡潔直列化]]がなく、 [[JSON]] としてしか表せません。
* 歴史
[13]
[TIME[西暦2015年5月][2015-05]]、
[[RFC Editor]]
は[[標準化過程RFC]]
[DFN[RFC 7517]]
を[[提案標準]]として出版しました。
[SRC[>>15]]
* メモ