12

わかりました、塩を使用する理由を理解しようとしています。

ユーザーが登録すると、DB に保存する一意のソルトを生成します。次に、それとパスワードを SHA1 でハッシュします。そして、彼/彼女がログインしているとき、私はそれを で再ハッシュしsha1($salt.$password)ます。

しかし、誰かが私のデータベースをハッキングすると、ハッシュ化されたパスワードとソルトを見ることができます。

塩を使わずにパスワードをハッシュするよりもクラックするのは難しいですか? わかりません…</p>

私が愚かでしたらごめんなさい…</p>

4

3 に答える 3

10

ソルトを使用しない場合、攻撃者は、サーバーに侵入する前であっても、オフラインでパスワード<->ハッシュ データベースを事前計算できます。ソルトを追加すると、そのデータベースのサイズが大幅に増加し、そのような攻撃の実行が難しくなります。

また、侵入すると、一般的に使用されているパスワードを推測し、それをハッシュして、データベース内のすべてのパスワードが一致するかどうかを確認できます。ユーザーごとに異なるソルトを使用すると、一度に 1 つのパスワードしか攻撃できません。

ウィキペディアに、暗号化におけるソルトに関する記事があります。

于 2009-12-10T22:43:42.273 に答える
1

ソルトの使用の背後にあるもう 1 つの意図は、同じパスワードを持つ 2 人のユーザーがユーザー テーブルに同じハッシュを持たないようにすることです (ソルトが同じでないと仮定します)。ただし、ソルトとパスワードの組み合わせは、最終的に同じ「文字列」またはハッシュにつながる可能性があり、ハッシュはまったく同じになるため、2 つの異なる組み合わせが使用できない場合は、必ずソルトとパスワードの組み合わせを使用してください。同じハッシュにつながります。

于 2009-12-10T22:45:25.480 に答える
1

攻撃者がプレーンテキスト パスワードのハッシュ値の巨大なテーブルを作成した場合、ソルトを使用すると、同じテーブルを使用して複数のパスワードをクラックできなくなります。攻撃者は、ソルトごとに個別のテーブルを生成する必要があります。これが実際に適切に機能するためには、salt がかなり長くなければならないことに注意してください。それ以外の場合、攻撃者の事前計算されたテーブルには、とにかくソルト + パスワード ハッシュが含まれる可能性があります。

于 2009-12-10T22:45:39.367 に答える