パスワードの組合せ数と解読時間の計算

文字の種類と桁数から、パスワードの組合せの総数と、総当たりで破られるまでの時間を見積もります。平均では総数の半分を試した時点で当たるので、その時間を出します。桁数を 1 つ増やすほうが、文字種を増やすより効きます。

文字の種類と桁数から、パスワードの組合せの総数と、総当たりで破られるまでの時間を見積もります。

N=cLN = c^{L}
t=N2vt = \dfrac{N}{2 v}

cc は使える文字の種類数、LL は桁数、NN が組合せの総数です。vv は 1 秒あたりの試行回数、tt が平均の解読時間です。平均では総数の半分を試したところで当たるので、2 で割ります。

桁数のほうが効く

NN は桁数の指数で増えます。文字の種類を増やしても底が大きくなるだけですが、桁数を 1 つ増やすと総数がまるごと cc 倍になります。

英数字(62 種類)の 8 桁は 2.18×10142.18 \times 10^{14} 通り、12 桁は 3.23×10213.23 \times 10^{21} 通りです。4 桁増やすだけで、およそ 1478 万倍になります。記号を足して 95 種類にしても、8 桁のままなら 6.63×10156.63 \times 10^{15} 通りで、12 桁の英数字には遠く及びません。

英数字 62 種類、12 桁、1 秒あたり 100 億回の試行とすると、組合せは 3.23×10213.23 \times 10^{21} 通り、平均の解読時間はおよそ 5112 年になります。

注意点

これは、まったくでたらめに作った文字列の話です。辞書にある語や、その語の文字を記号に置き換えたものは、この計算よりはるかに早く破られます。攻撃する側は、総当たりの前に辞書を試すからです。

使い回したパスワードは、桁数と関係なく破られます。一度どこかで漏れれば、それは 1 回の試行で当たります。