レインボーテーブルとは?
れいんぼーてーぶる
レインボーテーブルとは、パスワードのハッシュ値から元の文字列を逆引きするための事前計算済みデータベースで、パスワード解析攻撃に使われます。
レインボーテーブル(Rainbow Table)とは、パスワードなどの文字列をハッシュ関数で変換した値(ハッシュ値)から元の文字列を効率よく逆引きするために、あらかじめ大量の組み合わせを計算して格納した特殊なデータベースのことです。
ハッシュ関数は一方向性(元に戻せないこと)を特徴としますが、レインボーテーブルを使うと「このハッシュ値はあのパスワードから生成されたものだ」と照合できてしまいます。完全な逆変換テーブルよりもメモリ効率が高い「チェーン」と呼ばれる構造を採用しており、ストレージと計算コストのバランスをとって設計されています。
攻撃の流れは次のとおりです。
- 攻撃者がデータベース漏洩などでハッシュ値の一覧を入手する
- レインボーテーブルと照合してハッシュ値に対応するパスワードを特定する
- 特定したパスワードでアカウントへのログインを試みる
この攻撃への主な対策がソルト(salt)の使用です。ソルトとは、パスワードをハッシュ化する前にランダムな文字列を付加する処理で、同じパスワードでもユーザーごとに異なるハッシュ値が生成されます。これによりレインボーテーブルによる一括解析が無効化されます。現代のパスワード管理ではbcryptやArgon2などのソルト付き専用ハッシュ関数が推奨されています。
使い方・例文
Webサービスがパスワードをハッシュ化して保存していても、ソルトなしのMD5ハッシュであれば、公開されているレインボーテーブルと照合することで短時間にパスワードが特定されてしまう危険があります。
この用語をシェア
最終更新: