パスワード解読時間計算ツールとは?
このツールは、攻撃者がすべての組み合わせを試す「総当たり攻撃(ブルートフォース)」であなたのパスワードを解読するのに、どれくらいの時間がかかるかを試算するものです。試算は、パスワードの文字数、使用している文字の種類(文字集合の大きさ)、そして攻撃者が1秒あたりに試行できる回数をもとに行います。あくまでモデルに基づいたおおまかな目安であり、現実の攻撃では辞書やパターンが使われるため、弱いパスワードはこれよりもはるかに速く解読されることが多い点に注意してください。
使い方
パスワードの文字数を入力し、使っている文字の種類(小文字・大文字・数字・記号)にすべてチェックを入れ、攻撃者の試行速度を設定します。最新のGPUを搭載したマシンであれば、高速ハッシュに対して1秒あたり100億回(10,000,000,000回)の試行が可能なこともあります。一方、bcryptのような低速ハッシュでは、攻撃者の試行回数が毎秒数千回程度に抑えられることもあります。
計算式の解説
組み合わせの総数は、文字集合の大きさ C を文字数 L 乗したもの、すなわち \(C^{L}\) で求められます。これを試行速度 g で割ると、最悪のケース(最後に正解する場合)の所要時間が得られます。ただし平均的には、正解は探索空間の半分を調べた時点で見つかるため、2で割ります。式にすると $$t = \frac{C^{L}}{2g}$$ です。ビット単位のエントロピーは $$L \times \log_{2} C$$ で表され、1ビット増えるごとに探索の手間が2倍になります。
計算例
小文字のみ8文字のパスワードは、26種類の文字集合を使うため、組み合わせの数は \(26^{8} = 208{,}827{,}064{,}576\) 通りになります。1秒あたり10億回の試行を行う攻撃者に対しては、平均的な解読時間は $$\frac{208{,}827{,}064{,}576}{2 \times 1{,}000{,}000{,}000} \approx 104.4\ \text{秒}$$ です。ここに大文字・数字・記号を加えると、文字集合は94種類まで増え、解読時間は劇的に長くなります。
文字セットのサイズ
式の基数 \(C\) は、攻撃者が各位置で考慮する必要のある異なる文字の数です。これはパスワードが引き出される可能性のあるすべての文字クラスのサイズの合計です。一般的な組み合わせ:
| 文字セット | 記号 | サイズ |
|---|---|---|
| 小文字(a~z) | [a-z] | 26 |
| 大文字(A~Z) | [A-Z] | 26 |
| 数字(0~9) | [0-9] | 10 |
| 一般的なASCII記号 | [sym] | 32 |
| 小文字+数字 | [a-z0-9] | 36 |
| 小文字+大文字 | [a-zA-Z] | 52 |
| 文字+数字(英数字) | [a-zA-Z0-9] | 62 |
| 4つのクラスすべて | [a-zA-Z0-9 sym] | 94 |
32個の「一般的な記号」は、印字可能なASCIIの句読点セット !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ と空白を反映しており、これは62個の英数字と合わせて標準的な94文字の印字可能なASCIIプールを構成しています。
クラック時間の解釈
クラック時間とパスワードの エントロピー は、2つの観点から同じものを測定しています。ランダムパスワードのビット単位のエントロピーは \(H = L\log_2 C\) です。各ビットが追加されるたびに必要な推測の数が2倍になるため、固定された推測レートでの平均クラック時間も2倍になります。ビット数の大まかな読み方:
- 40ビット未満 — 弱い。この範囲(例えば、小文字8文字のパスワードで \(\approx 37.6\) ビット)は、高速のオフラインハードウェアに対して数秒から数日で破られ、機密性の高いものを保護してはいけません。
- 約60~70ビット — 中程度。カジュアルなオフライン攻撃には耐えられますが、リソースの多いGPUクラスターによる時間をかけた攻撃の範囲内です。
- 80ビット以上 — 強い。現在および予見可能な技術でのブルートフォース攻撃は実行不可能と考えられています。12文字のすべてのクラスを含むパスワードは大約78ビットに達し、16文字のパスワードは約105ビットに達します。
NISTのデジタルアイデンティティガイダンス(SP 800-63B)は、強制的な複雑性ルールよりも 長さ を強調しており、長いパスフレーズを許可することを推奨し、混合文字クラスを強制するのではなく、パスワードをブリーチおよび辞書リストに対してスクリーニングすることをお勧めします。これは、以下のブルートフォース時間が真にランダムなパスワードを想定しているためです。
重要な注意: これらの数値は 上限 です。式は、すべての文字がフルセット全体にわたって均一にランダムに選択されることを想定しています。実際の攻撃者は「aaaaaaaa」から始めることはありません。彼らはまず辞書、漏洩パスワードリスト、キーボードパターン、名前、日付、予測可能な代替を実行します。P@ssw0rd123 のようなパスワードは、大きい公称文字セットと長さがありますが、ワードリストに表示されるため、ほぼ瞬時に破られます。計算された時間は、人間が選んだパスワードではなく、ランダムプロセスによって生成されたパスワードに対してのみ意味があると考えてください。
これは一般的なセキュリティ情報であり、特定のアカウントの安全性の保証ではありません。強力で一意のパスワードを多要素認証と組み合わせてください。
よくある質問(FAQ)
なぜ2で割るのですか? 総当たり攻撃では、パスワードは鍵空間のどこかで見つかります。平均すれば全体の半分まで探索した時点で当たるため、期待される所要時間は最大値の半分になります。
これは確実な値ですか? いいえ。この計算は完全にランカムなパスワードを前提としています。使い回し・辞書に載っている単語・規則的なパターンを含むパスワードは、文字数にかかわらずはるかに速く解読されます。
文字集合の大きさはどう選べばよいですか? 実際に使っている文字の種類だけにチェックを入れてください。なお、ここでの記号は一般的な記号32文字の集合と想定しています。