本文へスキップ
ecdsa.com

証明書または公開鍵のピンニング

通常のチェーン検証に加えて、CA の鍵、中間証明書、またはサーバー自身の鍵のハッシュ値を照合することで、クライアントがホストに対して受け入れる証明書や公開鍵を固定のセットに限定することです。
別表記certificate pinningpublic key pinningHPKPSSL pinningpin-sha256

ピンには通常 SubjectPublicKeyInfo のハッシュ値を使います(OkHttp や Android のネットワークセキュリティ構成の sha256/…)。そのため、同じ鍵で更新された証明書はそのまま一致します。CA や中間証明書の鍵をピンニングする方が、リーフ証明書をピンニングするより変化に強くなります。どのピンセットにも、本番環境で使っていないバックアップ鍵が少なくとも 1 つ必要です。

Web では動的なピンニングは放棄されました。HTTP 公開鍵ピンニング(RFC 7469)は、自ら招いたサービス停止や「敵対的ピンニング」を引き起こし、Chrome はバージョン 72(2019年)で削除し、Firefox もバージョン 72(2020年)でデフォルトで無効にしました。ブラウザーは、自社のドメイン向けに小さな組み込みのピンリストを保持しています。HPKP が対象としていた脅威の大部分は、Certificate Transparency と CAA がカバーしています。

モバイルアプリや IoT ではピンニングは今も一般的ですが、同じリスクを抱えています。証明書の有効期間の短縮、CA の鍵のローテーション(Let's Encrypt は 2024年と 2026年に中間証明書を変更しました)、信頼の取り消しといった出来事によって、すぐに更新できないピンニング済みのクライアントは動かなくなります。SPKI ピン生成ツールは、証明書や鍵からピンを計算します。

規格と参考文献

すべての用語