※本ページにはプロモーション(広告)が含まれています
事前計算したハッシュ値の対応表を使い、パスワードのハッシュから元のパスワードを高速に逆引きする攻撃手法です。
詳しい解説
レインボーテーブル攻撃は、パスワードのハッシュ値と元の平文パスワードの対応関係を事前に大量計算してテーブル化し、漏洩したハッシュ値から元のパスワードを高速に特定する攻撃手法です。ブルートフォース攻撃が攻撃時に都度計算を行うのに対し、レインボーテーブル攻撃は計算済みデータを参照するだけのため、解析時間を劇的に短縮できます。
Webサイトのデータベースには、ユーザーのパスワードがそのまま保存されることはなく、MD5やSHA-1などのハッシュ関数で変換した文字列として記録されます。攻撃者がデータベースを盗んでもハッシュ値しか手に入らないはずですが、レインボーテーブルを使えば「このハッシュ値はこの平文パスワードに対応する」と即座に判明してしまいます。特にMD5やSHA-1のような古いハッシュ関数で、よく使われる短いパスワードを保存している場合は脆弱性が高くなります。
対策の中核は「ソルト(salt)」と呼ばれるランダムな文字列をパスワードに付加してからハッシュ化する手法です。ユーザーごとに異なるソルトを使うことで、事前計算されたテーブルが無効化されます。さらに、bcrypt・scrypt・Argon2のような計算コストの高いハッシュ関数(ストレッチング)を使うことで、攻撃者の計算コストを跳ね上げ、レインボーテーブルの作成自体を非現実的にできます。Webサービスを開発する場合は、これらの最新のパスワードハッシュ関数の利用が必須です。
ECサイトの脆弱性からデータベースが流出し、MD5でハッシュ化されたパスワード一覧が漏れたケースでは、攻撃者が公開されている膨大なレインボーテーブルと照合することで、短時間で多数のユーザーパスワードを復元してしまいます。bcryptやArgon2でソルト付きハッシュ化していれば被害を最小限に抑えられます。
別の呼び方
レインボーテーブル
事前計算攻撃
minto.tech スマホ(Android/iPhone)・PC(Mac/Windows)の便利情報をお届け! 月間アクセス160万PV!スマートフォン、タブレット、パソコン、地デジに関する素朴な疑問や、困ったこと、ノウハウ、コツなどが満載のお助け記事サイトはこちら!