もし、1秒間に 1000 万回のパスワード照合が出来るとしたら

徳丸さんが、パスワードの定期変更に関して書いた記事がありました。

続パスワードの定期変更は神話なのか - ockeghem(徳丸浩)の日記

徳丸さんは、定期的にパスワードを変えた時の効果を計算していますが、文中にある、

「全てのパスワードを試行できる」という前提がおかしい。

を検証してみます。

前提

徳丸さんの文中にもありますが、そもそものネタは、

第6回 経営者が注意すべき「パスワードクラッキング」 (2/3) - ITmedia エンタープライズ

で、

仮に1秒間に1000万回の計算ができるとすれば、パスワードのクラックに要する時間は1年にもなりません。

という話です。つまり、「パスワードの照合に必要な処理が、1秒間に 1000 万回可能」というのが前提になります。

1年間に計算可能な数

1年は「365(日)× 24(時間)× 60(分)× 60(秒)= 31,536,000 秒」*1になります。

ということは、1年間で「10,000,000(回/秒)× 31,536,000(秒)= 315,360,000,000,000」通りのパスワードに関して照合可能、という事になります。

1年間で計算可能なパスワード長は?

では、315,360,000,000,000 通りのパスワードは、いったい、何文字のパスワードになるでしょうか?

パスワードに使える文字を、全ての ASCII 図形文字(いわゆる英数字記号。0x21-0x7e の範囲の文字)と半角スペースの 95 文字だと仮定します。

そうすると、315,360,000,000,000 通りのパスワードが考えられる文字列長は、log95315360000000000 = 7.331.... となります。

実際に総当りするには、7文字未満のパスワードも調べる事になるので、その点を考慮すると、7.331... より小さい値になるはずですが、ざっくり言って、「1年間で調べ上げられるパスワードの文字列長は7文字」で良いでしょう。

じゃぁ、8文字の文字列だったら?

7文字のパスワードを1年で全て調べられるとしたら、8文字のパスワードは 95 年です。もし、9文字だったら 95 × 95 = 9025 年です。

そもそも、1秒間 1000 万回は現実的?

前に書いたのですが(id:JULY:20110216)、エフセキュアブログで紹介されていた GPU を使ったブルートフォースだと、33 日間で8文字のパスワードに相当する量を計算できたらしいので、非現実的とは言えなさそうです。

まとめ

「1秒間に 1000 万回」というのは、それほどおかしな前提ではないです。ただし、パスワード情報(ハッシュ化されたパスワード)が分かっている場合に限ります。

でも、そもそも「全てのパスワードを試行できる」と言った時の「全て」って何だ? というのが最初の疑問でした。

どうやら元ネタの「全てのパスワード」は7文字程度のパスワードのようですが、確かに、Web サービスなどで文字列長が8文字までで、文字種が限られているケースを見かけることはあります。ただ、今時、パスワード長8文字までは、かなり少数派でしょう。OS のアカウントや、暗号化ファイルのパスワードで、そんな制限を見る事はありません。

また、「1秒間に 1000 万回」はパスワード情報が分かっている場合の話なので、例えば、ある Web サービスに対して1秒間に 1000 万回の要求を送ること自体が不可能でしょう。

ということは、「全てのパスワードが試行できる」というのは、

  • パスワード長が7文字程度までで制限されている。

かつ

  • ハッシュ化されたパスワードが分かっている。

の2つの条件を満たしている必要があります。

さて、そういった状況って....。

*1:閏年でない場合