-
Notifications
You must be signed in to change notification settings - Fork 4
/
883.txt
134 lines (114 loc) · 4.42 KB
/
883.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
[11]
[DFN[[CODE[alg]]]]
は、[[暗号化アルゴリズム]]を表す[[ヘッダー引数]]です。
* 仕様書
[REFS[
- [2] [[RFC 7518]]
-- [1] [CITE@en[[[RFC 7518]] - JSON Web Algorithms ([[JWA]])]], [TIME[2019-11-27 04:11:14 +09:00]] <https://tools.ietf.org/html/rfc7518#section-3>
--- [5] <https://tools.ietf.org/html/rfc7518#section-3.6>
-- [16] <https://tools.ietf.org/html/rfc7518#section-4>
-- [18]
<https://tools.ietf.org/html/rfc7518#section-7.1>
-- [22]
<https://tools.ietf.org/html/rfc7518#section-8.5>
- [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>
]REFS]
* 値
[FIG(short list)[ [3] [[デジタル署名]]・[[MAC]] 用の [CODE[alg]] [SRC[>>1]]
- [CODE[HS256]]
- [CODE[HS384]]
- [CODE[HS512]]
- [CODE[RS256]]
- [CODE[RS384]]
- [CODE[RS512]]
- [CODE[ES256]]
- [CODE[ES384]]
- [CODE[ES512]]
- [CODE[PS256]]
- [CODE[PS384]]
- [CODE[PS512]]
- [CODE[none][alg=none]]
- [CODE[EdDSA]] [SRC[[[RFC 8032]], >>20]]
]FIG]
[FIG(short list)[ [15] [[JWE]] 用の [CODE[alg]] [SRC[>>16]]
- [CODE[RSA1_5]]
- [CODE[RSA-OAEP]]
- [CODE[RSA-OAEP-256]]
- [CODE[A128KW]]
- [CODE[A192KW]]
- [CODE[A256KW]]
- [CODE[dir]]
- [CODE[ECDH-ES]]
- [CODE[ECDH-ES+A128KW]]
- [CODE[ECDH-ES+A192KW]]
- [CODE[ECDH-ES+A256KW]]
- [CODE[A128GCMKW]]
- [CODE[A192GCMKW]]
- [CODE[A256GCMKW]]
- [CODE[PBES2-HS256+A128KW]]
- [CODE[PBES2-HS384+A192KW]]
- [CODE[PBES2-HS512+A256KW]]
- [CODE[RSA-OAEP-384]] [SRC[[[WebCrypto]], >>20]]
- [CODE[RSA-OAEP-512]] [SRC[[[WebCrypto]], >>20]]
]FIG]
[4] 実装が必須のものと、そうでないものがあります。 [SRC[>>1, >>16]]
[17] [CODE[alg]] 依存で、他の[[ヘッダー引数]]を使ったり、
[[JWE Encrypted Key value]] を生成したりします。
[SRC[>>16]]
[19] [[IANA登録簿]] [SRC[>>20]] があります。 [SRC[>>18]]
[21]
[CODE[enc]] や [[JWK]] の登録簿と共通になっていますが、
種別で区別されており、
現時点で複数の場面で使えるものはありません。
[TIME[2019-12-06T04:44:58.100Z]]
* [CODE[alg=none]]
[6]
[[JWS]]
は、
[[一貫性]]保護なしで作成して[MAY[構いません]]。
これを[DFN[[RUBYB[非保安JWS][Unsecured JWS]]]]と呼び、
[CODE[alg]] の値 [DFN[[CODE[none][alg=none]]]]
で表します。
[SRC[>>5]]
[7]
[CODE[alg=none]]
の場合、
[[空のオクテット列][空バイト列]]を [[JWS Signature value]] として使わなければ[MUST[なりません]]。
[SRC[>>5]]
[8]
[[受信者]]は、
[[JWS Signature value]]
が[[空のオクテット列][空バイト列]]であることを[[検証]]しなければ[MUST[なりません]]。
[SRC[>>5]]
[9]
[[実装]]は、
[[非保安JWS]]に対応する場合であっても、
[[応用]]が当該[[オブジェクト]]の[[一貫性]]が保護されなくても受理可能と規定する場合を除き、
当該[[オブジェクト]]を[[妥当]]なものとして受理しては[MUST[なりません]]。
[SRC[>>5]]
[10]
[[実装]]は、[[既定]]で[[非保安JWS]]を受理しては[MUST[なりません]]。
[[応用]]は、
[[downgrade attack]] を軽減するため、
[[非保安JWS]]を[RUBYB[大域的][at a global level]]に受理することを[RUBYB[信号][signal]]しては[MUST[ならず]]、
[[オブジェクト]]毎に受理することを信号する[SHOULD[べきです]]。
[SRC[>>5]]
[12]
このように[[仕様書]]で警告されているにも関わらず、
[CODE[alg=none]]
は[[脆弱性]]の温床となっているようです。
[13]
[[JWS]] は[[デジタル署名]]するものですが、
署名のための[[暗号化アルゴリズム]]が「なし」
である、つまり[[デジタル署名]]しないことを表しています。
[[デジタル署名]]されていることを期待して [[JWS]]
を採用しているのに、
[CODE[alg=none]]
が使われていると意味をなしません。
[14]
おそらく、
[[暗号化アルゴリズム]]の適用が比較的高コストな操作であるため、
リスクの低い操作では適用しない[[応用]]が考えられて、
しかも[[デジタル署名]]を適用する場合としない場合で同一の構文とすることで処理の統一による簡略化が期待され、
このような方法が用意されているのでしょう。
* メモ