web-dev-qa-db-ja.com

辞書攻撃と総当たり攻撃の違いは何ですか?

ブルートフォース攻撃と辞書攻撃の主な違いを誰かが説明できますか。用語Rainbow tableこれらと何らかの関係がありますか?

17
Anandu M Das

類似点辞書攻撃と総当たり攻撃はどちらも推測攻撃です。彼らは直接欠陥やバイパスを探しているのではありません。オフライン攻撃とオンライン攻撃のどちらも可能です。

オンライン攻撃は、合法的なシステムに入力を提供する自動化ルーチンを試みます。彼らは機能のエクスプロイトを作成するのではなく、期待される機能を乱用します

オフライン攻撃は暗号化/ハッシュをエミュレートしようとし、そのプロセスの既知の出力を必要とします(つまり、システムを攻撃せず、すでにハッシュ化/暗号化されたパスワード)


ブルートフォース攻撃

定義:考えられるすべての組み合わせを試すことによって、シークレットを決定しようとします。

品質:

  • 試行回数は、最大長と位置ごとに試行する文字数(またはUnicodeパスワードを考慮する場合はバイト)によって制限されます。
  • 完了するまでの時間は長くなりますが、クリアテキスト値の範囲が広くなります(すべての可能性が最大長に設定され、すべての可能な文字がすべての位置で考慮される場合のみ)

実世界の例: 3つの数値を順番に取得する必要がある組み合わせロックが与えられた場合、考えられるすべての組み合わせを試します(例:最初の1-2-3、次に1-2-4)。

ブルートフォース攻撃では、必ずしもすべてのオプションが順番に試行されるとは限らないことに注意してください。高度なブルートフォース攻撃では、特定の仮定を行う場合があります。たとえば、複雑さのルールでは大文字が必要で、最初の文字は小文字よりも大文字である可能性が高いです).


辞書攻撃

定義:通常、オプションのプリコンパイルされたリストを使用する推測攻撃。すべてのオプションを試すのではなく、機能する可能性が高い完全なオプションのみを試してください。

品質:

  • 辞書または可能な組み合わせは、いくつかの可能性のある値に基づいており、リモートの可能性を除外する傾向があります。特定のターゲットに関する重要な情報(家族の名前、誕生日など)の把握に基づいている場合があります。辞書は、多数のユーザーと既知のパスワードに見られるパターンに基づいている場合があります(たとえば、世界で最も可能性の高い回答)。辞書には、ランダムな文字列よりも実際の単語が含まれる可能性が高くなります。
  • 組み合わせの数が辞書リストにあるものに制限されるため、辞書攻撃の実行時間が短縮されます
  • 対象範囲が狭く、特に適切なパスワードがリストにない場合があるため、見落とされます

実際の例:

  • シークレットクラブにアクセスするには、所有者の名前を知っている必要があります。「コンピュータ」ではなく「ロブ」または「ジェイク」と推測します。
  • 上記と同じロックの例で、ロックの所有者またはロックの所有者の友人や家族の誕生日に相当する組み合わせを試してみます。

トレード・オフ

2つの攻撃の主なトレードオフは、カバレッジと完了までの時間です。パスワードがどうなるかについて合理的な考えがある場合は、ありそうもない答えをスキップして、より短時間で応答を得ることができます。パスワードはしばしば変更される可能性があり、パスワードの長さが長くなるにつれて、すべての可能性を推測する時間が本当に速くなるため、これは重要です。

ハイブリッド

もちろん、トレードオフのバランスを取るために両方の手法を利用する攻撃があります。たとえば、ユーザーが辞書の単語を連結し、番号を追加することによってパスワードを作成する可能性が高いと攻撃者が確信している場合(パスワードを変更する必要があるたびに増加する)、実行されている推測は単語リストを組み合わせる可能性があります。次に数字を追加します(例:「mypassword2014」、「mypassword2015」)。ハイブリッドでは、単語を力ずくで組み合わせる場合もあります。ユーザーが90日ごとにパスワードを変更する必要がある場合、「mypasswordsummer」、「mypasswordfall」のようなパスワードを作成する場合があります。次に、攻撃者はハイブリッド攻撃を作成し、辞書の単語を受け取り、他の辞書の用語(異なる辞書の場合も同じ)を追加して推測を行います。


レインボーテーブルと辞書/ブルートフォースの比較

レインボーテーブルは通常、オフラインのみの攻撃です。ブルートフォース攻撃または辞書攻撃では、アルゴリズムをオフラインで実行するために、推測を実際のシステムに送信する時間を費やす必要があります。ハッシュまたは暗号化アルゴリズムが遅い場合、これは時間の無駄になります。また、実行中の作業は再利用できません。

レインボーテーブルは事前に計算されたリストです。実際には、ハッシュ化/暗号化されたテキストから逆方向に作業します。攻撃者はアルゴリズムを実行して、あらゆる可能な入力が与えられたあらゆる可能な出力を取得します。入力のリストは、ブルートフォース、辞書、またはハイブリッドの場合があります。出力のリストに基づいて、攻撃者は入力を既知の出力にマッピングする再利用可能なテーブルを手に入れました。

事前計算されたテーブルを使用すると、暗号化/ハッシュ化されたバージョンのパスワードを指定すると、単純な検索が可能になります。被害者の暗号化/ハッシュ化されたバージョンを見つけることができれば、実際のプレーンテキストのパスワードを簡単に返すことができます。レインボーテーブルは、冗長な作業を減らすために使用されます。前もって作業を行い、テーブルを保管することとのトレードオフがあります。たとえば、ブルートフォースや辞書攻撃だけを行っている場合は、答えを見つけたらすぐに停止できます。ただし、レインボーテーブルは完全に計算する必要があります。

レインボーテーブル攻撃を実行し、5億エントリのうち5番目のエントリが一致した場合、他の499,999,995個のパスワードを作成するために費やされたすべての労力と時間が無駄と見なされる可能性があります。ただし、複数の攻撃でテーブルを再利用するために複数のパスワードを解読しようとしている場合は、時間を節約できる可能性があります。

19
Eric G

ブルートフォース攻撃は、アルゴリズムの完全なキースペースをプローブすることを意味します。

辞書攻撃は、辞書(完全なキースペースを含まない)からパスワード/キーのみをプローブすることを意味します。

総当たり攻撃は、主に暗号化アルゴリズム自体に対して使用されます(これはパスワードに対しても使用できますが、ほとんどの場合、辞書攻撃を使用します)。

辞書攻撃は、主にパスワードに対して使用されます。暗号化アルゴリズムは、ほとんどの場合、乱数をキーとして使用するため、辞書攻撃で攻撃されることはめったにありません(弱いPRNGを使用すると、辞書攻撃が可能になる可能性があります)。この攻撃の典型的な辞書最もよく使用されるパスワードが含まれます。

Rainbow tableは、ハッシュされたパスワードを逆に攻撃するために使用されます。つまり、ハッシュの可能なテーブルがあり、一致するパスワードを検索します。

レインボーテーブルを使用した攻撃を防ぐには、ハッシュされた各パスワードに異なるソルトを設定する必要があります。そのため、ハッシュとソルトごとにレインボーテーブルが必要になります。

6
Uwe Plonus

辞書攻撃:攻撃者は既知または一般的に使用されているパスワードのリストを試します。したがって、彼/彼女はパスワードのリスト(辞書)を試します。一般的に、辞書攻撃は成功します。多くの人々は、supermanharrypotterなどのように短くて覚えやすいパスワードを選択する傾向があるためです。

ブルートフォース攻撃:パスワードのリストを使用しません。代わりに、パスワードスペースで可能なすべての組み合わせを試すことを目的としています。

たとえば、パスワードが4桁のPINコードであると仮定します。

この場合、辞書攻撃は一般的に使用されるPINなどのコードのリストを使用しようとします:012320004444など( 最も一般的なピンコード のリストを参照)。

逆に、ブルートフォース攻撃では、可能なすべてのPINコードが試行されます。つまり、適切なPINコードが見つかるまで、10 ^ 4 = 10000回試行されます。 100%(4桁なので4桁、各桁は0〜9の任意の値にできるため10桁)

理論的には、ブルートフォース攻撃によってパスワードが発見されますが、可能なすべての組み合わせを試すには非常に長い時間がかかる可能性があります。通常、攻撃者は辞書攻撃から開始し、失敗するとブルートフォース攻撃に移動します。

レインボーテーブル:ブルートフォースまたはディクショナリ攻撃に直接リンクされていません。パスワードを(DBまたはファイルに)プレーンテキストで保存しないことが非常に重要です。パスワードはscryptなどの安全なハッシュ関数を使用してハッシュされ、このハッシュが保存されます。レインボーテーブル攻撃は、ハッシュされた値からパスワードのプレーンテキストを推測することを目的とする方法です(攻撃を阻止するには、一意の値を追加します-ハッシュ中にソルト)。

1
Ubaidah