7

ソルトのベスト プラクティスに関していくつか素晴らしい議論がありましたが、パスワードごとに異なるソルトを生成し、それをパスワードと一緒にデータベースに保存することが圧倒的に推奨されているようです。

しかし、ソルトの目的を正しく理解すれば、レインボー テーブル アタックによって危険にさらされる可能性を減らすことができます。したがって、データベースに保存することで、ユーザーごとに変更するのが最適であることは理解していますが、ソルトがデータベースの近くにない場合はどうなりますか? コードに 1 つのソルト値を格納すると (Web サーバーではコンパイル済みの dll になります)、攻撃者が何らかの形でデータベースにアクセスできた場合、同じ目的にはなりませんか? より安全であるように思えます。

4

5 に答える 5

16

ソルトの価値は、ユーザーごとに異なることにあります。また、比較のためにハッシュ値を再作成するときに、この一意でない値を取得できる必要があります。

すべてのパスワードに使用する単一のソルト値を保存すると、そもそもソルトを持つ価値が大幅に減少します。

于 2009-05-18T16:24:21.633 に答える
15

ソルトの目的は、パスワードごとにレインボー テーブルの再生成を要求することです。単一のソルトを使用すると、ハッカー/クラッカーはレインボー テーブルを 1 回再生成するだけで、すべてのパスワードを取得できます。ただし、ユーザーごとにランダムに生成する場合、ユーザーごとに生成する必要があります。ハッカー側でははるかに高価です。これが、salt をプレーン テキストで保存できる理由です。ソルトが複数ある限り、ハッカーがそれを知っているかどうかは問題ではありません。

あいまいさによるセキュリティは良くありません。マイクロソフトはそれを教えてくれました。

于 2009-05-18T16:28:19.097 に答える
8

... 攻撃者が DLL にアクセスできるようになるまで。

于 2009-05-18T16:23:53.333 に答える
7

他の回答に加えて、攻撃者がパスワードを理解するのと同じ方法であなたのソルトを理解できることも注目に値します: 既知のパスワード (彼自身) が与えられた場合、彼は可能性のあるソルトに対してブルート フォース攻撃を行うことができます。

于 2009-05-19T09:09:36.923 に答える
1

私が塩から学んだ教訓は次のとおりです。分割統治(セキュリティ)

于 2009-05-18T17:18:40.260 に答える