1

ウィキペディアの塩 (暗号化)から:

パスワードごとに新しいソルトがランダムに生成されます。典型的な設定では、ソルトとパスワードが連結され、暗号化ハッシュ関数で処理され、結果の出力 (元のパスワードではない)がソルトとともにデータベースに保存されます

しかし、個別のデータベースがない場合はどうなるでしょうか? リバースなど、パスワードの固有のプロパティでソルトを使用しても問題ありませんか? または、(より良い?) パスワードのハッシュでパスワードをソルトしますか? 例えば:

md5(md5("password") + "password")

もちろん、パフォーマンスへの影響はありますが、アクセスの少ないシステムで作業している場合、この種のソルティングは脆弱性を示しますか?

繰り返しますが、これを検討する主な理由は、塩を保管する手間を省くためです。

4

2 に答える 2

2

パスワードのハッシュと任意のソルトをどこかに保存する必要があるため (そうでなければ、認証時に比較するものをどのように手に入れることができるでしょうか)、それらを一緒に保存してみませんか?

ソルトと、パスワードとソルトのハッシュ結果の両方を 1 つのフィールドに格納することは珍しくありません。必要に応じて、一定の長さのソルトを使用するか、ソルトで使用される文字セットの一部ではない区切り文字を使用して、それらを切り離すことができます。

于 2014-01-06T02:31:04.440 に答える
1

この種のソルティングは脆弱性を示しますか?

はい。一意のソルトの主な目的は、同じパスワードを選択するユーザーが異なるパスワード ハッシュを持つようにすることです。ソルトがパスワードの関数として計算される場合、同じパスワードを共有するユーザーは同じパスワード ハッシュも共有します。

ハッシュのデータベースを使用すると、攻撃者は複数回出現するハッシュを簡単に見つけることができます。このようなパスワードは、ブルート フォース攻撃の脆弱で魅力的なターゲットになる可能性があります。

パスワードを保存する必要があり、専用のソルトを保存できない場合は、アカウントに関連付けられた不変フィールド (ユーザー名やアカウント識別子など) をソルトとして使用することをお勧めします。このアプローチにより、データベース内のパスワード ハッシュの重複を防ぐことができます。

于 2014-01-06T03:30:38.250 に答える