ユーザーにパスワードの変更を許可する場合、新しいソルトを生成する必要がありますか?


8

私のデータベースには、ハッシュされたパスワードとソルトの列があります。私のアプリケーションでは、ユーザーが自分のパスワードを変更できます。パスワードに同じソルトを使用する必要がありますか、それとも新しいソルトを生成する必要がありますか?アプリケーションのセキュリティは重要ですか?

回答:


14

はい。パスワードが変更されたときは常に新しいソルトを生成します

次の2つのシナリオを検討してください。

塩を変えないことがわかっている

パスワードのソルトを変更していないことを知っています。admin「xyz」という塩が表示されているので、その塩のレインボーテーブルを削ります。あなたがあなたの管理者パスワードを何に変更するかは関係ありません、私はそれを知っています。

繰り返されるパスワード

私は、ユーザーが 'xyz:abcdef'のハッシュされたパスワードを持っていることを知っています(xyzはソルト、abcdefはハッシュされたパスワードです)。その後、ハッシュ化された情報が「xyz:012345」であることがわかりました-OK、彼らはパスワードを変更しました。それでも、後でハッシュ化されたパスワードは「xyz:abcdef」と表示され、最初のパスワードに戻したことがわかります。

パスワードが生成されるたびに新しいソルトを生成することにより、攻撃者に不要な情報が提供されるこれらの2つのシナリオは簡単に回避されます。


上記の「パスワードが変更されたとき」の斜体に注意してください。これは、塩を頻繁に変更することが「より良い、より悪い、または単に役に立たないのか」と尋ねるdarkhoggによるコメントの後に追加されました。

Security.SEで、ソルトをリセットする頻度どれくらいですか?これに答えます。塩を変更し、より頻繁にパスワードの変更以外はでき、攻撃者はただ1つのハッシュよりパスワードに関する詳細な情報を提供します。

パスワードよりも頻繁にソルトを変更しても、ソルトが何であっても同じ正しいパスワードが引き続き機能するため、攻撃者が新しい情報によって妨害されることはありません。


これは別の質問には十分かもしれませんが、...ログインが成功した後、時々(たとえば、10〜30日)塩を変更する方が良い、悪い、または役に立たないでしょうか?
Darkhogg 2014年

@Darkhoggは確かに興味深い質問であり、おそらくSecurity.SEに問い合わせて質問することになるでしょう

3
私はちょうど私が完全を期すためにそれをリンクするよ、私の答えを見つけたと思うsecurity.stackexchange.com/questions/39821/...
Darkhogg
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.