私は現在、サーバーに2つの異なるpbkdf2ハッシュを保存することを含むプロジェクトに取り組んでいます。特定のパスワードの1000回の反復ハッシュと同じパスワードの1001回の反復ハッシュの間に数学的な関係があるかどうか疑問に思っていましたか?
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})
どこ:
U_ {c-1}とU_cが与えられた場合、通常PBKDF2で行う必要があるように1000回繰り返すのではなく、U_c = PRF(P、U_ {c-1})となるようなPを見つけようとすることができます。
これにより、KDFでの複数の反復が本質的になくなり、PRFへの呼び出し回数が1回の試行あたり1000回から、任意の2つのハッシュの反復回数の差が最小になります。
同じパスワードからの反復回数が異なる複数のPBKDF2が必要な場合の改善点は、Saltを変更することです。