0

最近、Jeff Six 著の Application Security For The Android Platform を読んでいて、不可解な記述に出くわしました。ソルトとハッシュ関数を説明する際の暗号化セクションで、このステートメントが作成されました

IV [Initialization Vector] と同様に、salt 値はランダムである必要がありますが、秘密にしておく必要はありません。

これは本当ですか?ソルトとハッシュ関数についての私の理解は、このステートメントは間違っており、ソルトが解放された場合、ソルトを不要にする新しいレインボーテーブルを生成できるため、ソルトを保護する必要があるということでしたか? これは正しいです?それとも、塩を秘密にしておく必要は本当にないのでしょうか? それはなぜですか?

4

1 に答える 1

1

ソルトは 64 ビットまたは 128 ビットの乱数になるため秘密にしておく必要はなく、攻撃者はそのソルトを組み込んでいないレインボー テーブルを使用できません。実際には、攻撃者は個々のパスワードを総当たり攻撃することになります (もちろん、各パスワードには独自のソルトがあるため、同じソルトで 2 つのパスワードをハッシュしてはなりません)。

レインボー テーブル攻撃は、考えられるすべてのパスワード入力 (当然、一定の長さまで) に対して事前計算されたハッシュを格納することに基づいています。考えられるすべての128ビットの複雑さのソルトに対してレインボー テーブルを格納することは実行不可能です。ドライブ)。

于 2014-05-29T06:08:45.843 に答える