web-dev-qa-db-ja.com

秘密の塩;なぜ彼らは私より攻撃者を遅くするのですか?

Dan Bonehのスライドを 'Session Management and User Authentication'(2011) について研究しているとき、彼はスライド「Further defences」の「秘密の塩」に言及しています(58枚のうちスライド48)。

彼はデータベースに保存することを勧めています:

_Alice|SA|H(pwA , SA , rA)
_

ここで、Aliceはユーザー名、SAはアリスに関連付けられたソルト、H(pwA , SA , rA)は、アリスのパスワードをハッシュした結果pwAをソルトと小さなランダムな値rA

短いランダム値r(8ビット)を追加すると検証が128倍遅くなるのに対して、攻撃者が256倍遅くなる理由がわかりません。

54
harm

これはおそらくこれらのスライドに付随する聴覚講義で説明されるでしょう。

ユーザーが一般的に正しいパスワードを入力すると仮定して、彼はこれを計算していると私は推測しています。正しいハッシュを生成するオプションが見つかるまで、rのオプションを循環するだけです。

正しいパスワードが与えられた場合、正しいハッシュを生成するrに出くわします。正確にこれが起こるときは(ランダムであるため)異なりますが、平均して、それを見つける前に、合計オプションの半分(2 ** 8 = 256、256/2 = 128)を通過します。

ただし、攻撃者は通常不正パスワードを試みます。つまり、rのすべてのオプションを試してみる必要があります。これは完全な256です。

Xiongの答えにさらに何かを追加するだけです

データベースが侵害された場合、攻撃者はすべてのパスワード(または少なくとも最も興味深いもの)を回復しようとします。つまり、候補となる各パスワードを可能な「秘密の塩」ごとに試す必要があります。

一方、サーバーは、ユーザーが入力したパスワードを使用して、可能な「秘密の塩」を反復処理するだけです。パスワードが正しい可能性が高いだけでなく、ログインするユーザーごとに1つだけです

14
Mr. E

上記に加えて:

レインボーテーブルおよび(分散型)ブルートフォース攻撃に対する保護。

レインボーテーブルは、特定のハッシュの結果を保持します。つまり、特定のハッシュタイプ(sha1など)の結果がある場合です。結果を調べて、一連のハッシュをかなり簡単に「復号化」できます。これは、ハッシュのブロックや、ソルトされたハッシュが個別にある場合は機能しません。

同じことが分散型ブルートフォース攻撃にも当てはまります。 (ハッシュアルゴリズムのセキュリティ上の弱点を使用して)ハッシュ結果をリバースエンジニアリング/バック推測しようとする場合、これらを使用して同様のハッシュを高速化できます。複数のマシン(分散パーツ)を使用してさらにオフセットを調べ始めると、ヒットの可能性が大幅に増加します。特定の範囲の任意の場所でヒットが発生する可能性がある場合、同時に複数のオフセットで開始すると、ヒットの可能性が大幅に増加します。さらに、発見されたハッシュは、ブルートフォースしようとしているセット内の他のハッシュに対して再度テストできます。

結果は線形ではなく、予測可能でも検索可能でもないため、ハッシュをソルトすると、これはすべて役に立たなくなります。

0
RC NL