web-dev-qa-db-ja.com

pbkdf2の反復回数はセキュリティ上の欠陥になる可能性がありますか?

私は現在、サーバーに2つの異なるpbkdf2ハッシュを保存することを含むプロジェクトに取り組んでいます。特定のパスワードの1000回の反復ハッシュと同じパスワードの1001回の反復ハッシュの間に数学的な関係があるかどうか疑問に思っていましたか?

1
Tomer waldman

PBKDF2の反復構造は次のようになります( https://tools.ietf.org/html/rfc2898#section-5.2 ):

U_1 = PRF (P, S || INT (i))
U_2 = PRF (P, U_1)
... 
U_{c - 1} = PRF(P, U_{c - 2})
U_c = PRF (P, U_{c-1}) 

どこ:

  • PRFは、疑似ランダム関数(つまり、基になるハッシュ関数)です。
  • Pはパスワードです
  • Sは塩です
  • iはブロック番号です

U_ {c-1}とU_cが与えられた場合、通常PBKDF2で行う必要があるように1000回繰り返すのではなく、U_c = PRF(P、U_ {c-1})となるようなPを見つけようとすることができます。

これにより、KDFでの複数の反復が本質的になくなり、PRFへの呼び出し回数が1回の試行あたり1000回から、任意の2つのハッシュの反復回数の差が最小になります。

同じパスワードからの反復回数が異なる複数のPBKDF2が必要な場合の改善点は、Saltを変更することです。

1
Lie Ryan