-
Notifications
You must be signed in to change notification settings - Fork 4
/
160.txt
107 lines (77 loc) · 5.13 KB
/
160.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
[2] [[HTTP]] の [CODE(HTTP)@en[[[Strict-Transport-Security:]]]]
[[ヘッダー]]や [[PKP]] の [DFN[[CODE(HTTP)@en[[[max-age]]]]]] [[指令]]は、
当該[[HSTSポリシー]]や [[Known Pinned Host]]
の有効期間を[[秒]]単位の[[整数]]で表すものです。
* 仕様書
[REFS[
- [1] [CITE@en[RFC 6797 - HTTP Strict Transport Security (HSTS)]] ([TIME[2014-06-02 05:16:10 +09:00]] 版) <http://tools.ietf.org/html/rfc6797#section-6.1.1>
- [9] [CITE@en[RFC 6797 - HTTP Strict Transport Security (HSTS)]]
( ([TIME[2014-06-02 05:16:10 +09:00]] 版))
<http://tools.ietf.org/html/rfc6797#section-11.2>
- [3] [CITE@en[RFC 7469 - Public Key Pinning Extension for HTTP]] ([TIME[2015-05-05 21:00:37 +09:00]] 版) <https://tools.ietf.org/html/rfc7469#section-2.1.2>
- [16] [CITE@en[RFC 7469 - Public Key Pinning Extension for HTTP]] ([TIME[2015-05-05 21:00:37 +09:00]] 版) <https://tools.ietf.org/html/rfc7469#section-2.3.3>
- [18] [CITE@en[RFC 7469 - Public Key Pinning Extension for HTTP]] ([TIME[2015-05-05 21:00:37 +09:00]] 版) <https://tools.ietf.org/html/rfc7469#section-4.1>
- [20] [CITE@en[RFC 7469 - Public Key Pinning Extension for HTTP]] ([TIME[2015-05-05 21:00:37 +09:00]] 版) <https://tools.ietf.org/html/rfc7469#section-4.5>
]REFS]
* 意味
[8] [[HSTS]] では、[[秒数]]は、当該[[ホスト]]を[[既知HSTSホスト]]として扱うべき時間を表します。
[[零]]は、[[既知HSTSホスト]]としての扱いをやめるべきことを表します。 [SRC[>>1]]
[4] [[PKP]] の [CODE(HTTP)@en[[[max-age]]]] [[指令]]は、
[[利用者エージェント]]が当該[[ホスト]]を [[Known Pinned Host]]
と考える[['''べき''']]期間を [[PKP]] ヘッダーの[[受信]]からの[[秒]]数で表します [SRC[>>3]]。
[12] [CODE(HTTP)@en[[[Public-Key-Pins-Report-Only]]]] [[ヘッダー]]では、意味がありません
[SRC[>>3]]。
* 文脈
[5] [[HSTS]] ではこの[[指令]]は[[必須]]です。 [CODE(HTTP)@en[[[Strict-Transport-Security:]]]]
[[ヘッダー]]には必ず1つだけ [CODE(HTTP)@en[[[max-age]]]] [[指令]]がなければなりません。
[SRC[>>1]]
[10] [CODE(HTTP)@en[[[Public-Key-Pins]]]] [[ヘッダー]]ではこの[[指令]]は[['''必須''']]です
[SRC[>>3]]。
;; [11] [[PKP-RO]] では意味が無い (>>12) とされているものの、なぜか禁止はされていません。
* 構文
[7] この[[指令]]には値が[['''必須''']]です。 [SRC[>>1, >>3]]
[6] この[[指令]]の値は [CODE(HTTP)@en[[[delta-seconds]]]] ([[Δ秒]])、
すなわち[[秒数]]を[[ASCII数字]]で表したものです。 [SRC[>>1, >>3]]
* 処理
[15] [[既知ピン付きホスト]]の[[実効満期日付]]は、本[[指令]]の値で決まります。
[13] [[利用者エージェント]]は、 [[PKP-RO]] の本[[指令]]を無視しなければ[['''なりません''']]
[SRC[>>3]]。
[14] [[PKP]]、[[既知ピン付きホスト]]も参照。
* 値
[23] 値をどうするべきかは困りどころです。小さくすると、攻撃の余地を与えることになりますから、
十分大きくするべきです。大きくすると誤設定が心配ですが、 [[PKP]] はともかく、
[[HSTS]] は次回アクセス時に[[ヘッダー]]から新しい指定を読み込めますから、
あまり気にせずに大きな値にして構いません。
[17] [[利用者エージェント]]は [[PKP]] の [CODE(HTTP)@en[[[max-age]]]]
の値に上限を設けられます。その場合上限を超える値が指定された時、
上限の値が指定されたとみなすことができます。 [SRC[>>16]]
[19] 上限が小さすぎると [[PKP]] が意味を持ちませんし、大きすぎると何らかの誤りや攻撃で実際のサーバーの
[[SPKI Fingerprint]] と異なってしまった時にいつまでも接続できないままになります。
上限として常に好ましいと言える値はありませんが、 60日 (5184000s)
程度の値が良いであろうと考えられています。 [SRC[>>18, >>20]]
[HISTORY[
[24] かつて [[HSTS Preload]] のサイトでは、基準として、18週間
([N[10886400]] [[秒]]) [[以上]]でなければ受理しない [SRC[>>21]]
としていました。
]HISTORY]
[27] [[HSTS Preload]] を有効にするためには [N[31536000]]
秒 (1年) 以上でなければ[MUST[なりません]] [SRC[>>55]]。
[25] [[MozillaWiki]] は、「Modern」で [[HSTS]] の値
[N[15724800]] [[秒]]を提示しています [SRC[>>22]]。
[26] [[SSL Labs]] は [[HSTS]] の検査で「TOO SHORT (less than 180 days)」
という警告を出します。
[REFS[
- [21] [CITE[HSTS Preload Submission]] ([TIME[2015-10-27 13:56:04 +09:00]] 版)
<https://hstspreload.appspot.com/>
- [22] [CITE@en[Security/Server Side TLS - MozillaWiki]]
([TIME[2015-12-12 06:30:33 +09:00]] 版)
<https://wiki.mozilla.org/Security/Server_Side_TLS#Modern_compatibility>
[FIG(quote)[
[FIGCAPTION[
[55] [CITE@en[HSTS Preload List Submission]]
([TIME[2018-08-29 02:16:22 +09:00]])
<https://hstspreload.org/>
]FIGCAPTION]
> The max-age must be at least 31536000 seconds (1 year).
]FIG]
]REFS]