web-dev-qa-db-ja.com

最大年齢が切れた後、HPKPは役に立たなくなりませんか?

HPKPの背後にある基本的な考え方は、中間CAが誤ってドメインの不正な証明書を攻撃者に発行した場合に、ユーザーを[〜#〜] mitm [〜#〜]攻撃から保護することでした。

キーまたはハッシュのいずれかを証明書に固定し、最大年齢を設定します。問題は最大年齢そのものです。最大有効期限が切れていない限り、ブラウザはHPKPポリシーを記憶しています。最大年齢を超えると、攻撃者は不正な証明書を使用して、サイトの正当なWebサーバーとして表示される可能性があります。

GithubおよびMozilla HPKPを使用します。攻撃者が最大年齢が切れるまで待ってから攻撃を実行することは明らかではありませんか?

3
defalt

最大年齢が切れた後、HPKPは役に立たなくなりませんか?

はい、タイムアウトに達すると、ピンは無効になります。ただし、ピンの有効期限が切れる前に、最終的にページに再度アクセスして、タイムアウトを再度更新し、ピンを更新することが期待されます。誤って間違ったキーを1回だけピン留めさせた場合、以前のユーザーを永久にロックアウトする可能性があるため、ピンを期限切れにしないことは危険です。

攻撃者が最大年齢が切れるまで待ってから攻撃を実行することは明らかではありませんか?

このような攻撃者は、非常に辛抱強く、いくつかの仮定を立てる必要があります。被害者は定期的にサイトにアクセスしない可能性があります。これにより、各アクセスのタイムアウトが延長されるためです。さらに、攻撃はその後も実行可能である必要があります。 CA違反が検出されないままになるには、2か月かかる場合があります。

最終的には、 RFC 7469 ( "HTTPの公開鍵ピンニング拡張機能")が セキュリティの考慮事項 のセクションで説明するトレードオフです。

4.1。最大最大年齢

[...]最大値が低いと、既知の固定ホストにアクセスする頻度が低いユーザーに保護のウィンドウが狭くなり、最大値が高いと、UAがピン検証を正常に実行できなくなる可能性があるというセキュリティ上のトレードオフがあります。 UAの記録されたピンとホストの真のピンが分岐している場合は、既知の固定ホスト。

(UA =ユーザーエージェント、つまりブラウザ)

RFCは、約60日(Githubが使用する時間とまったく同じ)の有効期限を推奨しています。

すべてのユースケースを満たすmax-ageディレクティブに理想的な上限はおそらくありません。ただし、60日(5,184,000秒)のオーダーの値は、2つの競合するセキュリティ上の懸念のバランスと見なされる場合があります。

6
Arminius