web-dev-qa-db-ja.com

不正なパスワードは不正なソルトハッシュを生成しますか?

強力にハッシュおよびソルト処理されたデータベースにパスワードが保存されている場合、基になるユーザーパスワードが弱いかどうかは本当に重要ですか?

ログイン推測の制限などの機能を設定し、キャプチャを使用して自動推測を停止した場合、「password」などの弱いパスワードを効果的に補うことができますか?

私の質問は、「password」のようなパスワードを使用すると、「fish&*n0d1cTionaRYatt@ck」のような長いパスワードを使用するよりもソルトハッシュが弱くなるのでしょうか? -すべてのソルトハッシュは同等に安全ですか、それともパスワードが優れているかに依存しますか?

44
Crizly

ソルトハッシュは、攻撃者が複数のハッシュを同時に攻撃したり、事前に計算されたハッシュ値のレインボーテーブルを作成したりすることを防ぐために設計されています。以上です。それらは、パスワード自体の根本的な強さを弱くしても強くしても何も改善しません。

これはまた、オンライン攻撃を防御するように設計されていないため、攻撃者がハッシュを直接計算するのではなく、候補のパスワードを入力するため、ソルトが無関係であるログインフォームを操作する攻撃者の能力に影響を与えないことも意味します(あなたが言ったように)レート制限されたり、キャプチャによって保護されたりする可能性のある形式に。

脆弱なパスワードは脆弱です。強力なパスワードは強力です。塩は、この方程式に影響を与えません。

86
Xander

2つの攻撃ベクトルを考慮する必要があります。

  • オンライン攻撃
  • オフライン攻撃

ログイン推測を制限すると、オンライン攻撃を防ぐことができます。
3回だとしましょう。これは、攻撃者がすべてのアカウントをテストして、パスワードポリシーに適合する最も一般的な3つのパスワードを確認できることを意味します(「password」、「12345678」、「12345」はどうですか)。

塩漬けはオフライン攻撃の防止に役立ちます
同じ無塩ハッシュは同じ平文パスワードです。したがって、各ソルトに対して1回ではなく、すべてのハッシュを1回計算する必要があります。塩を使用しても、攻撃者は辞書攻撃を試すことができます。「ストライク」ルールはここでは適用されないため、攻撃者は(計算能力の制限を除いて)彼を止めることはできません。

弱いパスワードはどちらの場合もセキュリティを低下させます
オンライン攻撃:一般的なパスワード(「password」や「12345」など)を許可すると、攻撃者は5に侵入できるようになります3つの推測でのアカウントの%。
オフライン攻撃:ここではもちろん、最も一般的なパスワードを最初に試します。したがって、ユーザーごとに3つのハッシュを計算した場合、アカウントの5%は既に破損しています...

38
Alexander

データベースが盗まれた場合、ソルト/ハッシュは優れていますが、通常のログイン手順で行われる可能性のある辞書攻撃とは関係ありません。

ログイン試行回数を制限し、CAPTCHAを使用すると、通常のログイン手順で行われる辞書攻撃が無効になる可能性がありますが、ソルティングはそのタイプの攻撃に影響を与えません。

ログイン試行回数が制限されていて、CAPTCHAが設定されている場合でも、非常に弱いパスワードを許可することはお勧めできません。悪意のあるユーザーが十分に判断したり、十分な価値がある場合、その弱点を悪用する方法を見つけることができます。

7
Abe Miessler

いいえ、ソルトハッシュの1つのポイントは、開始素材に関係なくハッシュのランダム性を高めることです。

ただし、これによって不正なパスワードを使用できるようになるわけではありません。優れたハッシュは、侵入者がハッシュでファイルを盗むという1つの攻撃ベクトルからのみ保護します。パスワードには他にも多くの攻撃ベクトルが存在します...ショルダーサーフィン、ブルートフォース、変更されたブルートフォーシング(インテリジェントな開始推測など)...優れたパスワードは依然として重要です。

ソルトハッシュは、良いパスワードを保護しますが、悪いパスワードからあなたを救いません。

4
DavidF

一般的に、最も重要なことはパスワードの長さです。しかし、簡単なパスワードはランダムなパスワードよりも簡単に解読できることは事実です。たとえば、 Rainbow tables を使用してハッシュを推測しようとしている場合。 「猫」のように通常使用されている単語の場合、「07OFmy3HOY3l9e1gCNww7nNpd5lQ8I9an」よりもこの表に表示される可能性が高くなります。; D

1
user3799089

理論的には:

攻撃者がレインボーテーブルを作成していない場合、ある程度の強度のパスワードが1単位時間でハッキングされる可能性があれば、その強度のN個のパスワードがO(1)時間なしでハッキングされます。 saltとO(N) saltの時間。これはsaltが行うことです。固定パスワードには利点がありません。複数のパスワードよりも利点があります。

攻撃者がソルトなしのレインボーテーブルを持っている場合、弱いパスワード(この場合、「弱い」とは「レインボーテーブルに既にある」ことを意味します)は裸のままです。塩を使用する場合でも、数秒で分解する必要があります。

実際には、パスワードの強度はこれよりもはるかに重要です。レインボーテーブルは単に便利な場合があります。万が一パスワードが弱い場合は、塩漬けでも浸透します。

1
djechlin

「love」、「dog」、「cow」の3つの弱いパスワードのいずれかを選択した場合、パスワードデータベースが失われます。ソルトがなければ、これら3つのパスワードを試してすぐに見つけることができますeverybodyこれら3つの弱いパスワードを使用するデータベース全体。ソルティングでは、love + your salt、dog + your salt、cow + your saltをクラックしてみてくださいyourパスワードが途方もなく弱い場合は、データベース内の全員に対して同じことを繰り返します。

ハッカーがあなたを特に攻撃する場合、塩漬けは役に立ちません。これは、データベース全体を攻撃することを不可能にすることによってのみ役立ち、代わりにデータベース内の個々のユーザーに対する攻撃を要求します。

1
gnasher729