web-dev-qa-db-ja.com

半分からPBKDF2出力全体を推測する

2nバイトのキーを生成するのに十分なパスワードとソルトを備えたPBDKF2を使用する場合、最初または最後のnバイトを知っていると、ブルートフォース攻撃を使用するよりも、サードパーティがキーの残りの半分を推測しやすくなりますか?

1
gzup

PBKDF2は 鍵導出関数 として安全であると想定されています。これは、多かれ少なかれ、出力バイトの一部を知っていると、他の出力バイトを推測するための有用な情報が残らないことを意味します。 PBKDF2で20バイトを生成したが、攻撃者がそのうちの12バイトを知っている場合でも、純粋な運よりも高い確率で残りの8バイトを推測することはできません(つまり、2-64、8バイトは64ビットであるため)。

ただし、PBKDF2の「P」は「パスワード」を意味し、パスワードに関連するものの主な弱点は、実際には、辞書攻撃を通じてパスワードを推測できることです。部分的な出力があると、他の出力バイトに関する情報がすぐに得られるわけではありませんが、考えられるパスワードの残忍な列挙の高速テストとして機能します。

PBKDF2に対する「通常の」辞書攻撃は、パスワードがデータの暗号化に使用される対称暗号化キーに拡張された状況を想定しています。攻撃者は、対応するキーを計算するたびにパスワードを「試行」し、データを復号化して、結果が「意味をなす」かどうかを確認します。攻撃者がPBKDF2によって生成されたバイトのいくつかを知っている場合、攻撃者は「復号化が理にかなっている」ステップをスキップできます。これは彼を少し助けます。

3
Thomas Pornin

もちろん、それはそれをより簡単にします。長さが2nバイトのキーをランダムに推測する可能性は1/2 ^ 16nです。最初または最後のnバイトがわかっている場合、残りを推測する可能性は1/2 ^ 8 nであり、これは2 ^ 8n倍の可能性があります。

0
Mike Scott