Your SlideShare is downloading. ×

HPKP Supercookies (公開鍵ピンニングによるユーザ追跡)
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

HPKP Supercookies (公開鍵ピンニングによるユーザ追跡)

171
views

Published on

「Shibuya.XSS in セキュリティ・キャンプ・フォーラム 2015」の発表資料です。

「Shibuya.XSS in セキュリティ・キャンプ・フォーラム 2015」の発表資料です。

Published in: Technology

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
171
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. HPKP Supercookies 公開鍵ピンニングによるユーザ追跡 Shibuya.XSS in Security Camp Forum 2015
  • 2. 西村 宗晃 Sony Digital Network Applications, Inc. Lecturer of Security Camp 2014
  • 3. http://www.radicalresearch.co.uk/lab/hstssupercookies
  • 4. HTTP Cookieを使わず HSTSのみでユーザ追跡できることが話題に
  • 5. 実は2年前に指摘されていた問題 • HSTSではなく、HPKPのドラフト文書に書かれている • SNIを用いれば、HPKPでもユーザを追跡できるらしい
  • 6. HPKP Supercookies 実際に作ってみた
  • 7. その前に…HPKPとは • HTTPS通信で使用する証明書の情報をブラウザに記憶 – 証明書のピン留めとか、公開鍵ピンニングと呼ばれる – Public-Key-PinsというHTTP Responseヘッダでサーバがピン留めを指示 • ピン留めされていない証明書によるHTTPSの接続を弾く – 2011年以降相次ぐ、CAによる証明書の誤発行や不正発行を防ぐ – 偽のGoogleの証明書による攻撃を実際に防いできた • 現在の対応ブラウザはChromeとFirefoxのみ
  • 8. ユーザ追跡の仕組み① example.jp bit 0. bit 1.get. get. 証明書1で運用 証明書2で運用 • 2つの異なる証明書を使ってサブドメインを運用する
  • 9. ユーザ追跡の仕組み② example.jp bit 0. bit 1.get. get. 証明書2をピン留め • あらかじめ、ユーザを bit0.example.jp に接続させ、 HPKPで証明書2をサブドメインごとピン留めする
  • 10. ユーザ追跡の仕組み③ example.jp bit 0. bit 1.get. get. • get.bit0.example.jp は証明書1で運用されているため、 ブラウザは違反と見なし、接続を遮断する サブドメインごと証明書2をピン留めピン留めされた証明書2ではないので接続不可 証明書1で接続可能
  • 11. サブドメインの接続可否で0/1を表現 return new Promise(function(resolve, reject) { var xhr = new XMLHttpRequest(); xhr.onload = function() { resolve( 1 ); } xhr.onerror = function() { resolve( 0 ); } xhr.open('GET', 'https://get.bit' + i + '.example.jp'); xhr.send(); }); 接続不可なら0を返す 接続できたら1を返す
  • 12. get.bit0.example.jp サーバを複製して2N通りのIDを表現 get.bit1.example.jp get.bit2.example.jp get.bit3.example.jp get.bit4.example.jp get.bit5.example.jp get.bit6.example.jp get.bit7.example.jp 1 0 1 1 0 1 1 0 0 0 0 1 1 1 1 1 N=サーバ設置台数 =182
  • 13. 動作検証① • 記憶したIDはプライベートモードにも引き継がれる – 逆に、プライベートモードで記憶したIDは通常モードに引き継がれない
  • 14. 動作検証② • サイト別設定で全てブロックしてもIDは記録される
  • 15. 動作検証③ • 履歴の消去から「サイトの設定」を消せばIDは消える これを消去
  • 16. https://supercookie.csrf.jp 注意事項 • Firefox 34以降でアクセスしてください • 以下のCA証明書をFirefoxにインストールしてください ⁃ http://csrf.jp/misc/cacert_supercookie.der • Firefoxのabout:configより以下の設定を変更してください ⁃ security.cert_pinning.enforcement_level : 1  2 ⁃ security.cert_pinning.process_headers_from_non_builtin_roots : false  true • 安全のため、試し終わった後はブラウザの設定を元に戻してください 試してみたい方はこちら