web-dev-qa-db-ja.com

保存されたパスワードをより安全なハッシュに更新するための戦略?

平文のパスワードを再ハッシュしないと、ハッシュされたパスワードを更新できないことはわかっています。メンバーがログイン/パスワードでログインすると、プレーンテキストが得られるため、メンバーパスワードをより安全にハッシュして保存する機会が得られます。

メンバーに大パニックを引き起こさずに「私たちのサイトにアクセスして本当のパスワードでログインしてください」と頼む経験はありませんか?リクエストを伝えるために私が考えることができる方法は、データ侵害があったように思えます。私たちは単にセキュリティをアップグレードする方法を検討しており、Ashley Madisonはハッシュされたパスワードが慎重に検討すべきポイントであることを明らかにしています。

3
Edward Barnard

既存のハッシュを取得し、それらをより安全なハッシュ関数の入力として受け取り、すべての既存のユーザーを一度に移行することが問題になる理由はわかりません。アプローチに関する広範な議論は、 ここ にあります。もちろん、古い塩と新しい塩の両方を保管する必要があります。

適切なパスワードポリシー(妥当な期間が経過したらユーザーにパスワードを変更させる)と組み合わせると、「レガシー」パスワードを徐々に段階的に廃止できます。

6
zinfandel

セキュリティをアップグレードしているため、パスワードを変更する必要があることをユーザーベースに伝えます。または、適切なパスワードポリシーを使用している場合は、ユーザーのパスワードの有効期限が切れるので、一定期間移行することを許可できます。

4
blah

たとえば、パスワードの保存ポリシーを変更したため、ユーザーに通知を送信してパスワードを更新することができますが、変更したくないユーザーのために古いパスワードを保持する方法が必要になります。

明確にするために例を挙げましょう。ユーザーのパスワードのプレーンハッシュを現在保存し、ランダムソルトを追加し、1000ラウンドでpbkdf2を使用するとします。次のようにパスワードを保存します:[ラウンド数パスワードはハッシュ化されます]:[salt]:[パスワードハッシュ]

古いユーザーのパスワードは次のようになります。

0 :: oldhash

新規ユーザーの場合は、ハッシュと使用したpbkdf2ラウンドの数を保存するため、この方法でユーザーのパスワードを処理するための下位互換性のある方法を用意します。

ところで、新しいパスワードは次のようになります。

1000:ランダムソルト:ハッシュ

1
Silverfox