パスワード強度 計算ツール
使う文字の種類と文字数を選ぶだけで、そのパスワードが取り得る組み合わせの総数とエントロピー(ビット)、そして総当たり攻撃でしらみ潰しに試した場合の解読時間の目安をその場で概算します。
つまり:このパスワードは36種類の文字から8文字を並べるので、 ありうる組み合わせは約 2,821,109,907,456 通り。 すべて試す総当たり攻撃でも、高性能なGPUで毎秒100億回試して約2分かかる計算で、「普通」レベルです。文字数を増やすか文字種を足すほど、解読にかかる時間は一気に伸びます。
くわしい計算の内訳(参考)
| 使える文字の種類数(N) | 36 種 |
|---|---|
| 文字数(L) | 8 文字 |
| 組み合わせ総数(N の L 乗) | 約 2,821,109,907,456 通り |
| エントロピー(L × log2(N)・強度の物差し) | 約41.4 ビット |
| 解読時間:オンライン攻撃(1,000回/秒)(全パターンの半分を試す想定) | 約45年 |
| 解読時間:オフラインGPU(100億回/秒)(全パターンの半分を試す想定) | 約2分 |
| 解読時間:大規模クラスタ(100兆回/秒)(全パターンの半分を試す想定) | 一瞬(1秒未満) |
※ これは総当たり攻撃(しらみ潰し)への強さの概算です。実際には、よく使われる単語・名前・誕生日などを試す 「辞書攻撃」や、他サービスから漏えいしたパスワードの使い回しのほうが危険です。複雑さに頼りすぎず、 パスワードの使い回しを避け、二段階認証(2要素認証)を有効にすることをおすすめします。解読時間は攻撃環境で大きく変わるため、あくまで目安です。
文字種・文字数別「解読時間」早見表(概算)
高性能なGPUで毎秒100億回試す「オフライン総当たり攻撃」を想定したときの、解読にかかる時間の目安です。 縦が使う文字の種類、横が文字数。長く・種類を多くするほど、時間が桁違いに伸びるのが分かります。
| 文字の種類\文字数 | 6文字 | 8文字 | 10文字 | 12文字 | 16文字 |
|---|---|---|---|---|---|
| 数字のみ | 一瞬(1秒未満) | 一瞬(1秒未満) | 一瞬(1秒未満) | 約50秒 | 約6日 |
| 英小文字のみ | 一瞬(1秒未満) | 約10秒 | 約2時間 | 約55日 | 約7万年 |
| 英数字(小) | 一瞬(1秒未満) | 約2分 | 約2日 | 約8年 | 約1,261万年 |
| 英数字(大小) | 約3秒 | 約3時間 | 約1年 | 約1万年 | 約755億年 |
| 英数字+記号 | 約34秒 | 約4日 | 約85年 | 約75万年 | 約10の14乗 年(事実上、解読不能) |
※ 概算。毎秒100億回(オフラインGPU)の試行を想定し、平均で全パターンの半分を試すとした目安です。攻撃環境により大きく変わります。
パスワードの「強さ」はどう決まる?
パスワードの総当たり攻撃への強さは、「使える文字の種類数(N)」と「文字数(L)」で決まります。ありうる組み合わせの総数は N の L 乗。 この総数が大きいほど、しらみ潰しに試すのに時間がかかり、解読されにくくなります。
文字種ごとの「文字の数」
- 数字(0-9):10種類
- 英小文字(a-z):26種類
- 英大文字(A-Z):26種類
- 記号:約32種類(ASCIIの印字可能な記号)
たとえば「英数字(大小)+記号」をすべて使うと N=10+26+26+32=94。 これで8文字なら 94 の 8 乗 ≒ 約6,000兆通りになります。
エントロピー(ビット)という物差し
組み合わせの総数はすぐ天文学的な数になるため、強さの比較にはエントロピー(情報量・ビット)がよく使われます。これは総数を2進数で表すのに必要な桁数で、L × log2(N) で求まります。1ビット増えるごとに、解読の手間(組み合わせ)が2倍になります。 目安として、60ビット未満は弱め、80ビット前後で実用上十分、128ビット以上はとても強い、とされます。
強くするコツ
- まず長くする:1文字増えるごとに組み合わせが N 倍になるので効果が大きい。
- 文字種を混ぜる:数字だけより、英大小文字や記号を混ぜると N が増える。
- 使い回さない・2段階認証:複雑さだけでは漏えいや使い回しは防げません。
よくある質問
- パスワードの「複雑さ」はどう計算していますか?
- 選んだ文字種から使える文字の種類数 N を求め(数字10・英小文字26・英大文字26・記号32の合計)、文字数 L 乗した N^L を「ありうる組み合わせの総数」とします。強さの物差しには、これを2進数のビットに直したエントロピー(L × log2(N) ビット)を使い、28・36・60・128ビットを境に5段階で判定しています。
- 解読時間はどうやって出していますか?
- 総当たり攻撃では平均すると全パターンの半分(組み合わせ総数 ÷ 2)を試した時点で当たる、と仮定し、それを1秒あたりの試行回数で割って時間を概算します。試行速度は攻撃環境で桁が大きく変わるため、オンライン攻撃(毎秒1,000回)・オフラインGPU(毎秒100億回)・大規模クラスタ(毎秒100兆回)の3通りを併記しています。あくまで上限の目安です。
- 強くするには文字数と文字種、どちらが効きますか?
- どちらも効きますが、一般に「文字数を増やす」ほうが効果が大きいです。組み合わせは N の L 乗なので、文字数を1増やすたびに総数が N 倍になります。記号を足して N を増やすのも有効ですが、覚えやすさを保ちつつ強くしたいときは、まず長くすることをおすすめします。
- この計算だけ満たせば安全ですか?
- いいえ、これは総当たり攻撃への強さの目安にすぎません。実際の被害は、よくある単語や誕生日を試す辞書攻撃や、他サービスから漏えいしたパスワードの使い回しが原因のことが多いです。複雑さに加えて、同じパスワードを使い回さない・二段階認証(2要素認証)を有効にする、といった対策を併用してください。
出典・計算の根拠
- 組み合わせ総数 = 文字種数 N の文字数 L 乗(N^L)。エントロピー = L × log2(N) ビット(情報理論の定義式)。
- パスワード強度・エントロピーの考え方:NIST SP 800-63B「Digital Identity Guidelines(Authentication)」。
- 解読時間 = (組み合わせ総数 ÷ 2)÷ 1秒あたりの試行回数。試行速度は攻撃環境別の代表値(オンライン1,000回/秒・オフラインGPU100億回/秒・大規模クラスタ100兆回/秒)を使用。
本ツールは総当たり攻撃を前提とした概算であり、辞書攻撃・パスワードの使い回し・実装上の弱点は考慮していません。 実際の安全性を保証するものではありません。具体的なパスワード運用は、使い回しの回避と二段階認証の併用を前提にご検討ください。