私の質問は次のとおりです。あなたの経験では、ハッシュを実行するPHPファイルに格納されているハッシュごとに単一のソルトを使用する方が安全ですか、それともハッシュ化されたオブジェクトごとに異なるソルトを設定して、そのオブジェクトとともにデータベースに格納する方がよいですか。 ?
3 に答える
ソルトは、ハッシュされた文字列ごとに異なる場合にのみ意味があります。
だから、はい、追加の列を作成し、そこにランダムな塩を置きます
ハッシュごとに異なるソルト。そうしないと、ハッシュ化されたオブジェクトがブルートフォース攻撃に対して脆弱になります。
パスワードをデータベースに保存している場合は、データベース内で一致するパスワードを簡単に見つけられないように、エントリごとに異なるものを組み合わせる必要があります。ランダムソルトを使用することも、ユーザー名(不変の場合)またはその他の不変の一意のフィールドを含めることもできます。
ユーザー名のようなものを使用する場合は、同じアルゴリズムを使用している他のサイトがおそらく存在するため、実装に固有の何かを実行する必要があります。したがって、一致を見つける可能性があります。厳密に言えば、ハッシュに含めるソルトである必要はありません。アルゴリズムの動作方法が異なる可能性がありますが、通常はグローバルソルトを追加するのが最も簡単です。エントリごとのソルトを使用している場合は、別のグローバルソルトを追加する必要はありません。
この種の問題では、通常、ハッカーが使用する可能性のある攻撃の種類を考えるのが最も簡単です。(データベースが危険にさらされているため)実際にデータを保護しようとしているのではなく、ハッカーが自分のサイトで使用されている資格情報を取得して他のサイトで使用するのを阻止しようとしていることを忘れないでください。