辞書攻撃とは何ですか?

Web サイトに対して認証するには、ユーザー名とパスワードを入力する必要があります。 次に、サイトは、提供された認証の詳細をデータベースに保存されている詳細と比較してチェックします。 詳細が一致すると、アクセスが許可されます。 詳細が一致しない場合、アクセスは拒否されます。

残念ながら、データ侵害は比較的頻繁に発生しています。 最も一般的に標的とされるデータの 1 つがユーザー データ、特にユーザー名とパスワードのリストであるため、データ侵害は大きな問題になる可能性があります。 パスワードがそのまま平文で保存されている場合、データベースにアクセスできる人は誰でも他のユーザーのアカウントにアクセスできます。 それはまるで、アパートのすべてのドアの鍵が入ったキーホルダーを手渡されたようなものです。

そもそもデータ侵害を防ぐために多大な努力が払われていますが、多層防御戦略をお勧めします。 具体的には、セキュリティに関するアドバイスでは、パスワードはハッシュ化され、パスワードのハッシュのみが保存されるべきであるとされています。 ハッシュ関数は、常に同じ入力を同じ出力に変換する一方向関数です。 ただし、入力をわずかに変更しただけでも、まったく異なる出力が生成されます。 重要なことに、関数を逆にして、出力されたハッシュを元の入力に戻す方法はありません。 ただし、できることは、新しい入力をハッシュし、出力がデータベースに保存されているハッシュと一致するかどうかを確認することです。 一致した場合は、実際のパスワードを知らなくても、パスワードが一致したことがわかります。

ありがたいことに、これは、攻撃者がデータベースに侵入した場合、すぐに役立つパスワードのリストを取得するのではなく、代わりにハッシュを取得することを意味します。 これらのハッシュを使用できるようにするには、それらを解読する必要があります。

Smarts を使用してパスワード ハッシュを解読する

パスワード ハッシュの解読は、ハッシュが表す元のパスワードを解明するプロセスです。 なぜなら、ハッシュ関数を逆にして、ハッシュをパスワードに変える方法がないからです。 ハッシュを解読する唯一の方法は、パスワードを推測することです。 1 つの方法は、ブルート フォース攻撃を使用することです。 これには文字通り、考えられるすべてのパスワードを試すことが含まれます。 つまり、「a」から始めて、両方の場合のすべての文字、すべての数字と記号を試してみることを意味します。 次に、攻撃者は 2 文字の組み合わせ、3 文字の組み合わせなどをすべて試す必要があります。 文字を追加するたびに、文字の可能な組み合わせは指数関数的に増加します。 このため、高速ハッシュ アルゴリズムが強力な GPU クラッキング リグで使用されている場合でも、長いパスワードを効率的に推測することが困難になります。

サイトのパスワード要件を確認し、短すぎて許可されないパスワードや数字が含まれていないパスワードなどを試行しないことで、ある程度の労力を節約できます。 これにより時間を節約できますが、許可されているすべてのパスワードを試すブルート フォース攻撃の部類に属します。 ブルート フォース攻撃は、低速ではありますが、十分な処理能力を備えた状態で十分な時間放置すると、考えられるすべての組み合わせが試行されるため、最終的にはあらゆるパスワードを解読します。

ブルート フォース攻撃の問題は、その攻撃があまり賢くないことです。 辞書攻撃は、よりターゲットを絞った亜種です。 考えられるパスワードをただ試すのではなく、指定されたパスワードのリストを試します。 このタイプの攻撃が成功するかどうかは、パスワードのリストと問題の辞書に依存します。

知識に基づいた推測を行う

パスワード辞書は通常、他のデータ侵害によって以前に解読されたパスワードから構築されます。 これらの辞書には、数千または数百万のエントリが含まれる場合があります。 これは、人々は独自のパスワードを作成するのが苦手であるという概念に基づいています。 残念ながら、データ侵害の証拠からも、これが事実であることがわかります。 人々は今でも「パスワード」という言葉のバリエーションを使用しています。 その他の一般的なトピックとしては、スポーツ チーム、ペットの名前、地名、会社名、仕事の嫌い、日付に基づいたパスワードなどがあります。 この最後の問題は、特にユーザーがパスワードを定期的に変更する必要がある場合に発生する傾向があります。

パスワード辞書を使用すると、ブルート フォース攻撃と比較して、推測が必要な回数が大幅に減少します。 また、パスワード辞書には短いパスワードと長いパスワードの両方が含まれる傾向があり、これは、何年もかけても総当たりで推測しても到達できないパスワードが試行される可能性があることを意味します。 このアプローチも成功していることがわかります。 統計はデータ侵害、使用される辞書のサイズと品質によって異なりますが、成功率は 70% を超える場合があります。

単語マングリング アルゴリズムを使用すると、成功率をさらに高めることができます。 これらのアルゴリズムは、パスワード辞書内の各単語を取得し、それを少し変更します。 これらの変更は、標準的な文字の置換や末尾の数字または記号の追加である傾向があります。 たとえば、文字「e」を「3」に置き換えたり、「s」を「$」に​​置き換えたり、末尾に感嘆符を追加したりするのが一般的です。 単語マングリング アルゴリズムにより、パスワード辞書内の各エントリの複製が作成されます。 それぞれの複製には、これらの文字置換の異なるバリエーションがあります。 これにより、推測するパスワードの数が大幅に増加し、成功率も向上し、場合によっては 90% を超えます。

結論

辞書攻撃は、ブルート フォース攻撃の標的を絞ったバリエーションです。 考えられるすべての文字の組み合わせを試すのではなく、文字の組み合わせのサブセットがテストされます。 このサブセットは、過去のデータ侵害で以前に発見され、必要に応じて解読されたパスワードのリストです。 これにより、以前に使用され、場合によっては頻繁に使用されたパスワードをカバーしながら、推測の数が大幅に減少します。 辞書攻撃の成功率はブルート フォース攻撃ほど高くありません。 ただし、これは時間と処理能力が無制限であることが前提です。 辞書攻撃は、ブルート フォース攻撃よりもはるかに速く、かなり高い成功率を得る傾向があります。 これは、非常にありそうもない文字の組み合わせに時間を無駄にしないためです。

パスワードを考えるときにしなければならない主なことの 1 つは、そのパスワードが単語リストに載っていないことを確認することです。 そのための 1 つの方法は、複雑なパスワードを作成することです。もう 1 つは、長いパスワードを作成することです。 一般に、最良の選択肢は、いくつかの単語で構成される長いパスワードを作成することです。 ご想像のとおり、これらの単語が実際のフレーズを構成しないことが重要です。 それらはまったく無関係であるはずです。 パスワードは 10 文字以上、最低でも 8 文字を選択することをお勧めします。