MD5 を使用してソルト化およびハッシュ化された従来のパスワードのデータベースがあります。データがより安全になるようにシステムを更新したいと思います。
最初のオプションは、ユーザーがログインして一定期間後に古いユーザーを非アクティブ化するときに、ユーザーを新しいハッシュ スキーム (Salt + Scrypt または PBKDF2 HMACSHA256) に移行することです。これにより、ユーザーは自動的にハッシュを更新するパスワード回復機能を使用する必要があります。
全員を即座にアップグレードできるようにする別のオプションは、既存の MD5 ハッシュを取得し、それぞれに新しいランダムなソルト値を追加してから、新しいハッシュ スキーム (Salt + Scrypt または PBKDF2 HMACSHA256) を使用して結果をハッシュし、その値を保存することです。データベースに移動し、古い値を削除します。
次に、ユーザーがログインするときに、古い方法を適用してから新しい方法を適用する必要があります。私は 2 番目のオプションの方が気に入っています。これにより、古い安全でないハッシュをデータベースから遅かれ早かれすべて削除できるからです。
既存のハッシュをソルトして再ハッシュしても安全ですか? MD5 は非常に壊れているので、スクリプトを実行してパスワードをハッシュ解除し、新しいスキームを使用してパスワードを再ハッシュできますか?
それとも、両方のオプションを組み合わせて実行するのが最善の解決策でしょうか? こうすれば、データベース内の既存の MD5 ハッシュをセキュリティで保護されていないままにしておく必要がなくなり、一定期間、ユーザーを新しいシステムに移行できますか?