HPKPとは何ですか?

HPKPは非推奨のWebセキュリティ応答ヘッダーであり、頭字語はHTTP公開鍵ピンを表します。これは、侵害された、または不正な認証局が、公的に信頼されているがハッカーが制御するHTTPS証明書をWebサイトに発行するのを防ぐことを目的としています。このシナリオでは、ハッカーは影響を受けるWebサイトへの傍受されたHTTPSトラフィックを復号化できます。

ヒント:Web応答ヘッダーは、サーバーが要求に応答するときに含めるメタデータの一部です。これらの小さなサブセットは、さまざまなセキュリティ機能を有効にして構成するため、セキュリティヘッダーと呼ばれます。

HTTPS証明書インフラストラクチャ

HTTPSが構築されている証明書インフラストラクチャは、信頼のWebに基づいています。多くの企業が、1つ以上のルート証明書を公開する認証局(CA)として機能します。ルート証明書のセットは、トラストストア内のすべてのデバイスに含まれています。WebサイトがCAに独自のHTTPS証明書を要求すると、証明書はルート証明書によって署名されます。コンピューターがHTTPS証明書を検出すると、署名をチェックします。証明書が信頼するルート証明書によって署名されている場合、コンピューターはHTTPS証明書も信頼します。

ヒント:CAは、ルート証明書によって署名された中間証明書を持つこともできます。これらの中間証明書は、WebサイトのHTTPS証明書に署名するためにも使用できます。

認証局の仕事は、証明書を要求した人がWebサイトの真の所有者であることを確認した場合にのみ証明書を発行することです。この構造の考え方は、ハッカーがWebサイト用に独自の証明書を作成した場合、その証明書はコンピューターが信頼するCAによって署名されないため、警告が表示されるというものです。

HPKPは何をしましたか?

証明書システム全体は、認証局の信頼性に依存しています。ただし、当初は、CAがハッカーによって侵害されたり、不正になり、証明書を誤って発行することを選択したりすることに対する保護はありませんでした。

HPKPは、この可能性に対する保護となるように設計されています。これにより、Webサイトは、ピン留めと呼ばれるプロセスでWebサイトに対して信頼できる証明書の排他的なリストを指定できます。ルート証明書または中間証明書を固定することが可能であり、基本的に単一のCAがWebサイトの証明書を発行できるようになりました。Webサイト自体の証明書を固定して、適切なCAでさえ別の有効な証明書を発行できないようにすることも可能でした。

技術的には、固定されるのは証明書自体ではなく、証明書のキーのハッシュです。ハッシュは一方向の暗号化関数です。これは、Webサイトによってブラウザーに提示された証明書が固定された証明書と一致することを確認することは可能ですが、ハッシュを使用して有効な証明書を作成することはできないことを意味します。

HPKPでは、少なくとも2つのキーを固定する必要があり、そのうちの少なくとも1つはバックアップであり、現在の証明書チェーンに含まれていない必要があります。このバックアップにより、ユーザーが接続できなくなることのない、新しい証明書へのスムーズなハンドオーバーを構成できます。

Webサイトによってブラウザーに提示されたHTTPS証明書が、固定された証明書の1つと一致しない場合、ブラウザーはそれを拒否し、ユーザーが証明書のエラーメッセージをバイパスしないようにする必要があります。

HPKPの構造

HPKPヘッダーには、3つの必須部分と2つのオプション部分があります。ヘッダーには「Public-Key-Pins」というタイトルを付ける必要があります。次の2つ以上の証明書には、base64でエンコードされたSHA256ハッシュを「pin-sha256 =」」の形式で固定する必要があります。最後の必須部分は「max-age」です。これは、ブラウザーが制限を適用する時間の秒単位のカウントです。

ヒント:SHA256は、HPKPで使用されるハッシュアルゴリズムです。Base64は、0〜9、az、AZ、および特殊文字「+」と「/」の64文字で構成される文字セットです。「=」は、必要に応じて最後の2文字までパディングするために使用されます。 

オプションの設定は「includeSubDomains」と「report-uri」です。「includeSubDomainsは、「max-age」タイマーの期間中、現在のWebサイトの任意のサブドメインにHPKP保護を適用するようにブラウザーに指示します。「report-uri」は、エラーレポートを送信できるWebサイトを指定できる機能であり、問​​題の特定と解決に役立つように設計されています。

「Public-Key-Pins-Report-Only」というタイトルのヘッダーの2番目のバリアントがあります。すべて同じですが、エラーが見つかった場合、ブラウザと「report-uri」(設定されている場合)にエラーメッセージを返す以外のアクションは実行されません。レポートのみのバリアントは、展開前にヘッダーの本格的なテストを可能にするように設計されており、エラーによってユーザーに問題が発生することはありません。

HPKPの問題

HPKPは、2つの主な理由で非推奨になりました。ヘッダーがそれを使用するWebサイトに深刻な問題を引き起こす可能性がある2つの方法があり、これらはHPKPSuicideとRansomPKPと名付けられました。

HPKP Suicideは、Webサイトの正当な所有者がピン留めされたすべてのキーにアクセスできなくなる問題です。これは、偶発的な削除、ハッキング、ウイルス、データの破損、またはその他の多くの理由で発生する可能性があります。HPKPを正しく実装すること、特に証明書のローテーション中にHPKPを更新し続けることは複雑であるため、構成エラーを起こすのは比較的簡単です。ただし、HPKPを使用すると、問題が発生した場合、最近Webサイトにアクセスしたすべてのユーザーが、「最大年齢」タイマーの期間中、Webサイトにアクセスできなくなります。ウェブサイトsmashingmagazine.comは、まさにこの問題の経験を詳述した記事を投稿しました。これにより、修正が展開される前の4日間、ほとんどの訪問者がサイトをオフラインにしました。

身代金PKPは、ハッカーがWebサーバーにアクセスし、信頼できるすべての証明書とキーを盗み、その返還のために身代金を要求する理論上の攻撃です。通常の設定では、新しいキーと証明書を生成するだけで、1時間以内にWebサイトをバックアップして実行できます。ただし、HPKPを有効にすると、これらのキーは固定されます。固定された証明書をユーザーに提供できない場合、「最大年齢」タイマーの間、ユーザーはWebサイトにアクセスできません。構成によっては、バックアップが存在する場合、この問題を解決できない可能性があります。

これらの問題の両方で、新しいユーザーは通常どおりWebサイトにアクセスできます。これは、古いHPKPヘッダーが、現在欠落している証明書のみを信頼するようにブラウザーに指示するのを見たことがないためです。ただし、常連客や読者など、最近のすべての訪問者は、「最大年齢」タイマーの全期間を待つ必要があります。

これらの問題の重大度と構成および保守の複雑さを考えると、HPKPヘッダーの使用は非常に少なかった。最終的に、主要なブラウザは完全にサポートを終了することに同意し、数年以内にHPKPヘッダーは一般的に非推奨になりました。



Leave a Comment

Google Chrome に常に完全な URL を表示させる方法

Google Chrome に常に完全な URL を表示させる方法

Chrome では、デフォルトでは完全な URL が表示されません。この詳細はあまり気にしないかもしれませんが、何らかの理由で完全な URL を表示する必要がある場合は、Google Chrome でアドレス バーに完全な URL を表示する方法の詳細な手順をご覧ください。

古いRedditを取り戻す方法

古いRedditを取り戻す方法

Reddit は 2024 年 1 月に再びデザインを変更しました。再デザインはデスクトップ ブラウザ ユーザーに表示され、リンクを提供しながらメイン フィードを絞り込みます。

Googleレンズを使って教科書のコンテンツをコピーする方法

Googleレンズを使って教科書のコンテンツをコピーする方法

本からお気に入りの引用を Facebook に入力するのは時間がかかり、間違いも多いです。Google レンズを使用して書籍からデバイスにテキストをコピーする方法を学びます。

ChromeでサーバーDNSアドレスが見つからない問題を修正

ChromeでサーバーDNSアドレスが見つからない問題を修正

Chrome で作業しているときに、特定の Web サイトにアクセスできず、「Fix Server DNS アドレスが Chrome で見つかりませんでした」というエラーが表示されることがあります。この問題を解決する方法は次のとおりです。

Google Homeでリマインダーを作成する方法に関するクイックガイド

Google Homeでリマインダーを作成する方法に関するクイックガイド

リマインダーは常に Google Home の大きなハイライトでした。彼らは確かに私たちの生活を楽にしてくれます。重要な用事を見逃さないように、Google Home でリマインダーを作成する方法を簡単に説明します。

Netflix: パスワードを変更する

Netflix: パスワードを変更する

好みのブラウザまたは Android アプリを使用して、Netflix ストリーミング ビデオ サービスのパスワードを変更する方法。

Chromebook で検索履歴と閲覧履歴を削除する方法

Chromebook で検索履歴と閲覧履歴を削除する方法

ブラウザの履歴を削除すると、特に共有または公開の Chromebook を使用している場合、閲覧アクティビティの機密性を保つことができます。このチュートリアルでは、個人、職場、学校の Chromebook でブラウザ履歴を削除する手順について説明します。

Googleスプレッドシートで行と列を入れ替える方法

Googleスプレッドシートで行と列を入れ替える方法

スプレッドシートを設定した後で、別のレイアウトの方がうまく機能することに気づいたことがありますか。Google スプレッドシートでは、行を列に、またはその逆に簡単に変換して、データを自由に表示できます。

最も人気のあるビデオ ゲーム ジャンル 7

最も人気のあるビデオ ゲーム ジャンル 7

誕生以来、ゲーマーが楽しめるようにさまざまなスタイルのビデオ ゲームが作成されてきました。アクション指向のもの、頭を使ってパズルを解いたり戦略を立てたいもの、またはカジュアルなゲームプレイでリラックスしたものなど、誰もが楽しくプレイできるものがそこにはあります。

Facebookメッセンジャーの通知が消えない?それを修正する8つの方法

Facebookメッセンジャーの通知が消えない?それを修正する8つの方法

Facebook Messenger の通知は、未読のメッセージをすべて読み終え​​ると消えるはずです。ただし、通知が引き続き表示され、何をしても消えない場合は、問題を解決するために適用できる解決策がいくつかあります。