レインボーテーブル攻撃
まだよくわからん
例えばこういうパスワード文字列とそれに対応するハッシュ値(md5)がある code:bash
$ echo -n "password" | md5sum.exe
5f4dcc3b5aa765d61d8327deb882cf99 *-
$ echo -n "test" | md5sum.exe
098f6bcd4621d373cade4e832627b4f6 *-
$ echo -n "abc" | md5sum.exe
900150983cd24fb0d6963f7d28e17f72 *-
$ echo -n "xyz" | md5sum.exe
d16fb36f0911f878998c136191af705e *-
まとめるとこう
table:password_hash
ハッシュ値 パスワード
5f4dcc3b5aa765d61d8327deb882cf99 password
098f6bcd4621d373cade4e832627b4f6 test
900150983cd24fb0d6963f7d28e17f72 abc
d16fb36f0911f878998c136191af705e xyz
関数を定義
平文を与えるとハッシュ値が返る関数
ハッシュ値からパスワードの仕様(文字種・文字数)を満たす文字列を生成する関数
以下のように繰り返す
code:ㅤ
平文1→ハッシュ関数()→ハッシュ値1→還元関数1()→平文2→ハッシュ関数()→ハッシュ値2→還元関数2()→平文3…
code:mmd
flowchart LR
system -- h --> a489 -- 還元1 --> qwerty -- h --> b62 -- 還元2 --> admin1 -- h --> ed0 -- 還元3 --> root00
a489というハッシュ値から元パスワード「system」を求めたい
すべてのパスワードを網羅するように組み合わせる
参考