Public Key Pinning

提供: セキュリティ
2014年11月15日 (土) 12:38時点におけるDaemon (トーク | 投稿記録)による版 (ページの作成:「Public Key Pinning とは、中間者攻撃(MITM, Man-In-The-Middle攻撃)により不正なSSLサーバ証明書が利用された場合に、それを検知...」)

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索
スポンサーリンク

Public Key Pinning とは、中間者攻撃(MITM, Man-In-The-Middle攻撃)により不正なSSLサーバ証明書が利用された場合に、それを検知する機能です。サイトとブラウザの両方で対応している必要があります。

読み方

Public Key Pinning
ぱぶりっく きー ぴにんぐ(ぴんにんぐ)

概要

認証局が何らかの事故などによって、不正なSSL証明書が発行される事象が何度も起きてきました。Public Key Pinningは、不正な証明書を検知する対策として開発されました。

Public Key Pinningには、2種類の方法があります。

  • 公開鍵をあらかじめプログラムに埋め込む Pre-loaded Public Key Pinning
  • サーバからHTTPヘッダでウェブブラウザ公開鍵の情報を通知する HTTP-based Public Key Pinning(HPKP)

Pre-loaded Public Key Pinning

この機能を使用するためには、ブラウザ自身にPinningを埋め込まなければなりません。ソースコードレベルで証明書情報を埋め込み、実行ファイルに組み込むことになります。ブラウザの開発者しか、Pre-loaded Public Key Pinningを組み込むことはできません。

HTTP-based Public Key Pinning(HPKP)

Public-Key-Pins ヘッダ

HTTP-based Public Key Pinning を使用する場合には、HTTPレスポンスヘッダに Public-Key-Pins フィールドをクライアントに送信します。

Public-Key-Pins: max-age=300; includeSubDomains; pin-sha256="hash値"; pin-sha256="hash値"
max-age
Pinning の有効期限を指定します。アクセスする都度、更新されます。
includeSubDomains
「サブドメインも対象に含む」ことを示すフラグです。
pin-sha256
は、SHA-256のハッシュ値です。

trust-on-first-use (TOFU)

Key Pinning は、trust-on-first-use (TOFU) のメカニズムです。 Key Pinningを持っていない最初の1回目の接続は、信用するしかありません。 1回目の接続は、通常のサーバ証明書の検証のみしかできません。このときにKey Pinning がサーバから提供されれば、それ以降の通信は、 HPKP を使用できます。

チェック対象は Subject Publik Key Infoフィールド

Public Key Pinningは、証明書のSubject Public Key Info(SPKI)フィールドのハッシュ値をチェックします。

Pre-loadedとHTTP-based の併用

Chrome は、 HTTP-based (HPKP) を優先する実装です。

ウェブブラウザ

Firefox

Firefoxが対応しているPre-loaded Public Key Pinning の例を挙げます。

  • firefox/mozilla のサイト, Mozilla CDN
  • Twitter の twitter.com とサブドメイン
  • Google の多くのホスト
  • Dropbox
  • Tor

対応しているユーザーエージェント

Public Key Pinningに対応しているユーザーエージェントには、以下のものがあります。

関連項目




スポンサーリンク