現在、MD5ハッシュ化パスワードを含むいくつかのユーザーアカウントを扱っています。これらのアカウントは、古いシステムから、パスワードハッシュにPBKDF2を使用する現在のシステムに移行されました。古いアカウントをPBKDF2パスワードハッシュにも引き上げたいと思います。
独自のMD5ハッシュをクラックし、PBKDF2でハッシュを再ハッシュすることは問題外です。
最初に頭に浮かんだのは、 here の説明に従って、ログイン時にユーザーパスワードを移行することでした。
ただし、一部のユーザーは二度と戻ってログインできず、いつまでも安全でないハッシュを残してしまう可能性があるため、すべてのユーザーパスワードを移行することはできません。
したがって、2つのオプションが残っています。
PBKDF2(MD5(plaintext))
。ユーザーは新しいパスワードを設定する必要があるため、最初の解決策はユーザーにとって本当に不愉快なものになるでしょう。 これ はこのアプローチをサポートしているようですが、主にPBDKF2ではなくbcryptについて話しています
MD5をPBKDF2(または、その価値のために他の安全なハッシュアルゴリズム)でラップすることは安全に実行できることですか、それとも古い、安全でないMD5ハッシュを処理するためのより良いアプローチがありますか?
はい、古いMD5ハッシュにより多くの保護をすぐに与えるために、ダブルハッシュを安全に行うことができます。
このようなダブルハッシュと通常のハッシュを区別できることを確認し、できるだけ早く更新してください。検証プロセスは2種類のハッシュで異なる方法で行う必要があります。そうでない場合、リークされたmd5ハッシュをパスワードとして直接使用できます。これについて説明してみてください answer 。
MD5をPBKDF2(または、その価値のために他の安全なハッシュアルゴリズム)でラップすることは安全に実行できることですか、それとも古い、安全でないMD5ハッシュを処理するためのより良いアプローチがありますか?
はい、安全です。このプロセスのセキュリティを失うことはありません。これらすべてのパスワードは、MD5以外のパスワードと同じ保護がPBKDF2によって提供されます。追加のmd5 "セキュリティ"(弱く、ほとんど関係がない)を追加すると言うことができます。
ログイン時に、md5ハッシュを「ドロップ」して、MD5なしでPBKDF2を再計算し、ログイン成功後に保存することができます。そうすれば、md5チェックを「永久に」維持する必要がなくなります。