MD5を解析するWebのサービス

MD5が脆弱と言われていて、もう使っちゃダメと烙印を押されていても、さすがにハッシュ値から逆算して解析するアルゴリズムが存在するわけもなく、解析にはレインボーテーブルを使っています。レインボーテーブルというのは、平文とそのハッシュ値をDBのテーブルに格納しておいて、ハッシュ値で検索するというテクニックです。(この場合はレインボーテーブルじゃなくて、ただの平文とハッシュ値のテーブルかも。 参照レインボーテーブル - Wikipedia
たとえば、「password」という平文をMD5でハッシュ化すると「5f4dcc3b5aa765d61d8327deb882cf99」となります。こういった対応を表にたくさん入れておくことで、MD5ハッシュ値で検索すると元の平文が見つかるというわけです。


MD5のレインボーテーブルがWeb上から使えるサイトは結構あるようで、いくつかをピックアップ。どのサイトもハッシュ値をフォームに入れるだけで使えます。
5f4dcc3b5aa765d61d8327deb882cf99 → password
といった具合にMD5を解析します。
もちろん、どんな平文でも解析するわけではなく、平文が登録されているものに限ります。





そういえばPerlには「Digest::MD5::Reverse」というレインボーテーブルを使ってMD5の解析をするモジュールがありましたね。


「Webアプリでパスワードの保存などにMD5を使っているから、漏えいしてもハッシュ値なので絶対に安心」とは言えませんね。saltを併用する方がよいでしょう。ついでにアルゴリズムMD5からSHA-1かSHA-256あたりに替える方がよいでしょう。