HPKP(えいちぴーけーぴー)
最終更新:2026/4/27
HPKPは、HTTP Strict Transport Security(HTTPSのみを使用するようにブラウザに指示するセキュリティメカニズム)のポリシーを定義するHTTPレスポンスヘッダーである。
ポイント
HPKPは、HTTPSへの移行を強制し、中間者攻撃のリスクを軽減する目的で導入されたが、現在は非推奨となっている。
HPKPの概要
HPKP(HTTP Public Key Pinning)は、ウェブサイトが使用するSSL/TLS証明書をブラウザに固定させることで、セキュリティを強化する技術でした。具体的には、ウェブサイトが信頼する証明書の公開鍵をブラウザに伝え、その公開鍵と一致しない証明書に対しては接続を拒否するように指示します。これにより、不正な証明書による中間者攻撃(Man-in-the-Middle attack)を防ぐことが可能になります。
HPKPの仕組み
HPKPは、Public-Key-PinsというHTTPレスポンスヘッダーを使用して設定されます。このヘッダーには、ピンニングする証明書の公開鍵のハッシュ値や、有効期限などの情報が含まれます。ブラウザは、このヘッダーを受け取ると、指定された公開鍵をキャッシュし、そのウェブサイトへの以降の接続で、キャッシュされた公開鍵と一致しない証明書を拒否します。
HPKPの問題点と非推奨化
HPKPは、セキュリティ強化に役立つ一方で、いくつかの問題点がありました。最も大きな問題は、ピンニングされた証明書が失効した場合や、ウェブサイトが新しい証明書に移行した場合に、ブラウザがウェブサイトに接続できなくなる可能性があることです。この問題を解決するために、includeSubDomainsディレクティブや、ピンの有効期限を設定する機能が導入されましたが、運用上の複雑さが残りました。
これらの問題点から、HPKPは現在、非推奨とされており、代替技術としてCertificate Transparency(CT)が推奨されています。CTは、証明書の公開鍵を公開ログに記録することで、不正な証明書の発行を検出しやすくする仕組みです。
HPKPの代替技術
HPKPの代替技術としては、以下のものが挙げられます。