generated at
Strict-Transport-Security
response header
TOFUモデル
初回は防げない




directives
併用可
下2つがoptionalという感じ


directiveを3つとも指定している例
response
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
63,072,000 s = 2 years
ここで2yearsが推奨されている




初回(未登録時)にHTTPでreqしたときの動き
① HTTPでrequest
このサイトがhttpとhttpsの両方を提供している時の話
clientは両方でアクセスする選択の自由がある
② HTTPでresponse
3XX
HTTPSで送って来るようにredirectさせる
③ HTTPSでrequest
④ HTTPSでreponse
Strict-Transport-Securityのheaderを付与するのはココ
②で付けるわけではない
Strict-Transport-Security headerはHTTPSで来たものにしか付けられない
>An HSTS Host MUST NOT include the STS header field in HTTP responses conveyed over non-secure transport. ref
⑤ 以降のrequstはHTTPSを使うようになる
browserが制御する
上の手順だけでは、①②はhttp通信になってしまう
ここで中間者攻撃が可能
それを防ぐのがHSTS preload
初回からHSTSに登録済みとして扱われる





HSTS登録済みの状態でHTTPでreqしたときの動き
①② HTTPでrequest
browserが内部でredirectする
このHTTP reqは、serverには届かない
③ HTTPSでrequest
例 GitHubにhttpでrequestを送る
①②
試しに、HTTPieで送ってみると
$ http http://github.com/mrsekut
HTTP/1.1 301 Moved Permanently が返ってきた




参考





何を解決するか?もともとどういう問題があるか?
HTTPとHTTPSの両方を提供しているwebサイトがあったとき
userが、httpで初回のアクセスすると脆弱になる
httpはresponseを改竄できる
初回で改竄すれば、その後の通信にも入り込むことができる
中間者攻撃ができる
Server側は、HTTPSでreqestしてくることを強制したい
HSTSを使うことでこれができる
次回以降のreqをHTTPSでやるようにbrowserに指示する
この辺のヤバさを具体レベルで理解していない
どれぐらい容易に可能なのか、
どこからどこまでの情報を奪取できて、
どういった改竄が可能なのか
中間者攻撃を理解していないのが原因かなmrsekut
hstsをしていない場合の問題
これがわかっていないとHSTSの必要性が理解できないmrsekut
「普通に毎回redirectすればいいじゃん」になる
①client → server
http
②client ← server
301 redirect
https
ってことか
reqがhttpだが、resがhttpsになる
>HTTPからHTTPSにリダイレクトされる途中で第三者により攻撃を受ける可能性がある ref
どういうこと #??
redirectをちゃんと理解していないのが原因
あと、中間者攻撃の具体的な手法がわかっていない


サイトが謎で、2回アクセスしないとこのページ見れないmrsekut





chrome://net-internals/#hsts
>1.「chrome://net-internals/#hsts」にアクセス
> 2.「Query HSTS/PKP domain」の「Domain」テキストボックスにドメイン(e.g. foobar.com)を入力し、「Query」を押下
> 3.「Found」が表示されていればHSTSが有効になっています

なんでhttpとhttpsの両方を提供しているの?
最初からhttps一択だとなんか問題があるの?
この選択肢って誰の裁量で提供されているの?
serverの管理者?
なぜ、Strict-Transport-Security#6252f9491982700000f44ddaの②でHSTSを付けられないのか?
An HSTS Host MUST NOT include the STS header field in HTTP responses conveyed over non-secure transport. という制約が存在するのはなぜか?