1. 序章

今日、デジタルの世界でセキュリティ、プライバシー、および信頼性を提供することを目的としたいくつかのメカニズムがあります。 これらのメカニズムの中で、ハッシュ関数を見つけることができます。ハッシュは、任意のサイズの特定のバイトシーケンスを所定のサイズの別のバイトシーケンスに変換するマッピング手法です。

ハッシュには多くの用途があることに注意してください。 たとえば、ハッシュはパスワードと デジタル署名の作成.

ただし、セキュリティを提供することを目的としたすべてのメカニズムと同様に、ハッシュには特定の脆弱性があります。 そのため、攻撃者はこれらの脆弱性を悪用してセキュリティメカニズムを侵害します。

このチュートリアルでは、ハッシュの特定の攻撃であるレインボーテーブル攻撃について学習します。 最初に、必要なハッシュの概念の概要を説明します。 そこで、レインボーテーブルの中心的なアイデアを調査します。 最後に、簡単な例を示して、レインボーテーブル攻撃自体を調べます。

2. ハッシュ

実際には、ハッシュはマッピング手法です。 関数を使用して、バイトのシーケンスを他のバイトのシーケンスに変換します。 ハッシュ関数に提供されるデータの長さは可変である可能性があります。 ただし、ハッシュ関数内で生成されたデータ(ハッシュコードまたはダイジェストと呼ばれる)は常に同じ長さです。

次の図は、説明されているプロセスを示しています。

ハッシュ関数は一方向性関数であることに注意してください。 したがって、ハッシュコードのみを指定すると、元の平文入力を復元することはできません。

ハッシュの特徴は、有限数のハッシュコードが存在することです。ハッシュコードの長さがこの数を定義します。

したがって、入力の長さは可変で無制限であるため、無限サイズのセットを有限サイズのセットにマップします。 これは、ある時点で、異なる平文入力が同じハッシュコードを生成することを意味します。 この現象は衝突と呼ばれます。

ただし、衝突を解決して追加のセキュリティレイヤーを取得するために、ハッシュのソルティングと呼ばれる操作を実行することができます。 ソルトは、プレーンテキスト(元の入力とは異なる)のハッシュコードを別の一方向性関数で縮小し、それを再度ハッシュして、前のコードとは異なるコードを生成することで構成されます。

次の画像は、ハッシュのソルティングプロセスを直感的に示しています。

3. レインボーテーブル

レインボーテーブルは、ハッシュコードを元の入力プレーンテキストに戻すために事前に計算されたテーブルです。 要するに、これらのテーブルは、ハッシュとリダクションのいくつかの操作の後、対応するハッシュコードに関連付けられた元の入力プレーンテキストを保持します。

レインボーテーブルは中期的な解決策として登場しました。リクエストごとにすべてのハッシュ/削減操作を実行する必要がなく、ストレートハッシュコードを元のプレーンテキストに関連付けるルックアップテーブルを使用するよりも優れたセキュリティを提供します。

このコンテキストでのルックアップテーブルは、基本的に、ソルトされていないハッシュコードを持つレインボーテーブルです。

要約すると、入力ごとにいくつかのハッシュとリダクションを処理するには、多くの時間が必要です。 それ以外の場合、特定の入力に対してハッシュコードのすべての可能性を維持するには、大量のメモリが必要です。

プレーンテキスト入力と最終コードの間に関係を作成することにより、レインボーテーブルはハッシュ操作の一般的な管理を容易にします。

次の画像は、単純なレインボーテーブルの例です。

4. レインボーテーブル攻撃

要約すると、レインボーテーブル攻撃は、盗まれたハッシュコードを特定のハッシュメソッドのレインボーテーブルと比較します。

このように、レインボーテーブル攻撃の最初のステップは、ハッシュのリストを盗むことです。通常、これらのハッシュには、パスワードやクレジットカード番号などの個人情報が含まれています。

攻撃者は、たとえば、セキュリティが不十分なデータベースの脆弱性を悪用したり、フィッシング手法を使用したりして、ハッシュのリストを盗むことができます。

ハッシュを取得した後、攻撃者はそれらをレインボーテーブルと比較し、それらとテーブルエントリとの間に一致するものを見つけようとします。 一致するものがある場合、攻撃者はハッシュの平文を取得します。

攻撃者は、元のプレーンテキスト入力を使用して、たとえば、アカウントへのアクセス(プレーンテキストがパスワードに対応する場合)またはオンラインショッピング(プレーンテキストがクレジットカード番号やその他の情報に対応する場合)を試みることができます。

4.1. シナリオ例

通常、レインボーテーブル攻撃は他のタイプの攻撃と一緒に発生します。 これは、ハッシュコードのリストにアクセスする必要があるために発生します。これには、他の攻撃手法が必要になる場合があります。

考えられるシナリオを考えてみましょう。最初に、攻撃者は脆弱なWebサーバーでSQLインジェクションを実行して、データベースを読み取ります。 次に、攻撃者はパスワードテーブルを検索し、そのデータにアクセスします。 最後に、パスワードハッシュコードのリストを使用して、攻撃者はレインボーテーブルを使用してプレーンテキストデータを取得します。

もう1つの考えられるシナリオは、分散型サービス拒否攻撃を実行してセキュリティシステム(ファイアウォールなど)を侵害することです。 したがって、攻撃者はデータベースシステムに侵入し、ハッシュコードリストを盗み、レインボーテーブル攻撃を実行する可能性があります。

4.2. 対策

ハッシュコードを保持するデータベースを保護することに加えて、レインボーテーブル攻撃を回避するために他の対策を採用することができます。 次に、これらの対策のいくつかについて説明します。

  • セキュリティの向上:レインボーテーブル攻撃の結果が壊滅的なものになるのを防ぐための優れたオプションは、パスワードのセキュリティだけに依存しているわけではありません。 多要素認証は、このコンテキストでセキュリティを向上させるための優れたオプションです
  • 簡単なパスワードは使用しないでください:0123456やqwertyなどの頻繁なパスワードは、ほとんどのレインボーテーブルに存在します。 したがって、大きくて珍しいパスワードを使用すると、一般的なレインボーテーブルにマッピングされる可能性が低くなります。
  • 塩漬け技術を使用する:塩漬けはレインボーテーブル攻撃を実行するのを非常に難しくします。 さらに、縮小操作で英数字を削除すると、セキュリティも向上します。
  • 最新のハッシュアルゴリズムを使用する:などの廃止されたハッシュアルゴリズム MD5 レインボーテーブル攻撃にはSHA1が推奨されます–これらを回避することをお勧めします

5. 結論

このチュートリアルでは、レインボーテーブル攻撃について学びました。 最初に、ハッシュの基本的な概念を確認しました。 したがって、私たちはレインボーテーブルが何であるかを理解することに焦点を合わせました。 次に、レインボーテーブル攻撃について詳しく調べました。 これに関連して、概念、シナリオ、および考えられる対策について検討しました。

ハッシュは現在のインターネットにとって不可欠な手法であると結論付けることができます。 ただし、セキュリティ技術と同様に、悪意のある攻撃者によって調査されたいくつかの弱点があります。 したがって、システムを安全に保つには、これらの弱点を理解し、攻撃の可能性を回避するための適切な対策を準備することが不可欠です。