8 文字 5 時間半のインパクト

グラフィックコントローラの中枢である GPU を、通常の計算処理用に使わせる GPGPU というのがあります。これを使うと、並列計算が通常の CPU に比べて飛躍的に速くなります。

これを、パスワードクラッキングに使う動きが、幾つか出ていました。パスワードクラッキングツールの「John the Ripper」で GPGPU がサポート*1されたり、実際にソルト付き SHA-1 を解析させてみたり*2、「8 文字程度のパスワードをブルートフォースで解くのが現実的になってきたなぁ」という実感がありました。

そこに、「8 文字 5 時間半」という、驚異的な数字が飛び込んできました。

8文字の全パスワードを5時間半で解析するコンピュータクラスタが登場 - CNET Japan

グラフィックコントローラを合計 25 個用意したクラスタ、ということで、個人で用意するには躊躇する金額になるとは思いますが、それを目的としている人なら、大金とまではいかない金額で作れるでしょう。

最初、「全てのパスワード、って本当か?」と思ったのですが、記事の中にある「毎秒 3500 億通り」が正しいとすると、5.5 時間で解析出来る数は、

350,000,000,000 ☓ 60 ☓ 60 ☓ 5.5 = 6,930,000,000,000,000 通り

で、ASCII 図形文字で 8 文字のバリエーション、

958 = 6,634,204,312,890,625 通り

を超えます。確かに、5時間半かければ、どんな 8 文字のパスワードでも解けることになります。なので、記事の最後にある、

つまりは、十分注意して、可能な限り堅牢なパスワードを作成する必要があるということだ。

は、ちょっと妙な話です。

多くの人は「十分に注意して」と言われると、大文字小文字に数字に記号を混ぜて、といった感じの事を想像すると思いますが、どんなにランダムな文字のパスワードでも、8文字以下だったら、最長 5 時間半で解ける、というのが、今回のポイントです。

なので、自分が書くなら、

つまりは、最低でも 10 文字以上のパスワードを作成する必要があることだ。もちろん、記号や数字を混ぜることも忘れずに。

とします。

とりあえず、このシステムを使っても 10 文字のパスワードは、最悪のケースで約 2068 日 になります。平均で3年弱は大丈夫、という事になります。

とはいえ、3年程度であれば、安心とは言えないですね。10 文字は「最低ライン」でしょう。

逆に、認証システムを作る側だと、ストレッチングの重要性が増したと思います。NTLM ハッシュは、UNICODE で記述したパスワード文字列の MD4 ハッシュなので、計算量は小さいと思います。1000 回のストレッチングをしていれば、単純計算で、5.5 時間が 5,500 時間になるので、半年以上は持ちます。

にしても、ここまで早く、現実的な問題になってくるとは思わなかったなぁ。