事前に計算されたパスワードのハッシュ値とパスワードがペアになっている膨大なデータベース(レインボーテーブル)を使って、検索してハッシュ値からパスワードを特定する方法
主に以下のサイトでレインボーテーブルから検索できる
ソルトがあると、レインボーテーブル攻撃で平文を見つけ出すのが困難になるからソルトは大事
以下chatgptの解説
レインボーテーブル攻撃は、暗号化されたパスワード(ハッシュ)を解読するための手法の一つです。この攻撃では、事前に計算されている膨大な数のハッシュ値とそれに対応するパスワードのリスト(レインボーテーブル)を使用します。
具体的な仕組み
1. **レインボーテーブルの作成**:事前に、多くのパスワードとそのハッシュ値を生成して保存しておきます。これにより、辞書攻撃のように、一つ一つハッシュを計算するのではなく、あらかじめ計算されたハッシュを使うことができます。
2. **攻撃の実行**:攻撃者がパスワードのハッシュを入手した場合、レインボーテーブル内のハッシュと比較します。もし一致するハッシュが見つかれば、そのハッシュに対応するプレーンテキストのパスワードもわかることになります。
レインボーテーブル攻撃が有効な理由
- パスワードが同じであれば、ハッシュも同じになります。これを利用して、事前に計算されたレインボーテーブルを用いれば、特定のハッシュをすばやく逆算して対応するパスワードを見つけられる可能性があります。
防御方法
レインボーテーブル攻撃に対抗するために、一般的に「ソルト(salt)」を使用します。ソルトとは、ハッシュ化の前にパスワードに追加するランダムな値のことです。これにより、同じパスワードでも異なるソルトを使用すると異なるハッシュが生成され、レインボーテーブルの効果がほぼ無効化されます。
例えば、レインボーテーブルが password123 のハッシュを持っていたとしても、ソルトが異なる場合にはハッシュが異なるため、そのレインボーテーブルが使えなくなります。
まとめ
レインボーテーブル攻撃は、あらかじめ計算されたハッシュ値のデータベースを用いることで、ハッシュを効率的に逆算し、プレーンテキストのパスワードを特定する攻撃方法です。これに対して、ソルトを用いることで防御でき、ハッシュ化されたパスワードの安全性が向上します。