計算の前提
この記事の数字は、このサイトのパスワード強度チェッカーと同じ計算式で出しています。
- 1文字あたりの候補の数:数字10・小文字26・大文字26・記号32の、使った種類の合計
- 強さ(エントロピー)= 文字数 × log₂(候補の数) ビット
- 総当たりにかかる時間 = 2エントロピー ÷ 1秒あたりの試行回数
試行回数は、流出したパスワードの「ハッシュ」(パスワードを変換した値)を、高性能な機器で総当たりする状況を想定して1秒に100億回としました。表の時間は、すべての組み合わせを試し終わるまでの時間です。 平均すると、その半分で当たります。
早見表:文字数と文字の種類
パスワードをランダムに作った場合の、総当たりにかかる時間です。
| 文字数 | 数字のみ(10種) | 小文字のみ(26種) | 英大小+数字(62種) | 英大小+数字+記号(94種) |
|---|---|---|---|---|
| 6文字 | 一瞬 | 一瞬 | 6秒 | 約1分 |
| 8文字 | 一瞬 | 21秒 | 6時間 | 7日 |
| 10文字 | 1秒 | 4時間 | 2.7年 | 171年 |
| 12文字 | 2分 | 110日 | 1万年 | 151万年 |
| 14文字 | 2.8時間 | 205年 | 3,930万年 | 133億年 |
| 16文字 | 12日 | 13.8万年 | 1,510億年 | 100兆年以上 |
| 20文字 | 317年 | 632億年 | 100兆年以上 | 100兆年以上 |
わかること
- 文字の種類より、文字数が効く:小文字だけの14文字(205年)は、4種類すべてを使った10文字(171年)より長くかかります。 1文字増やすたびに、時間は「候補の数」倍(小文字なら26倍、全種類なら94倍)になります。
- 8文字は、全種類を使っても7日:昔よく言われた「8文字以上」は、流出したハッシュを総当たりされる状況では十分とはいえません。
- 12文字を超えると現実的でなくなる:全種類12文字で151万年、16文字では100兆年を超えます。
- 数字だけの暗証番号は、回数制限が頼り:4けたなら組み合わせは1万通りしかありません。 銀行のカードやスマートフォンの暗証番号が短くても使えるのは、数回間違えるとロックされる仕組みがあるからです。
攻撃の速さで、時間は大きく変わる
同じパスワードでも、攻撃者が1秒に何回試せるかで結果は大きく変わります。
| 攻撃の条件 | 8文字(94種) | 12文字(94種) |
|---|---|---|
| ログイン画面から試す(1秒に1,000回と仮定) | 19万年 | 15兆年 |
| 流出したハッシュを総当たり(1秒に100億回) | 7日 | 151万年 |
| さらに100倍速い環境(1秒に1兆回) | 1.7時間 | 1.5万年 |
ログイン画面から1回ずつ試す攻撃は遅く、多くのサービスは失敗が続くとロックもかけます。 本当に危ないのは、サービスからパスワードのハッシュが流出し、手元の機器で好きなだけ試される場合です。 そのときに差が出るのが、パスワードの長さです。
計算どおりにいかないパスワード
上の表は「ランダムに作った場合」の数字です。人が考えたパスワードは、もっと早く当てられます。 実際にいくつかのパスワードを強度チェッカーにかけてみると、弱点がはっきりしました。
| パスワード | 改善前 | 改善後 | ひとこと |
|---|---|---|---|
P@ssw0rd | 52.4 bit 7日 | 24.0 bit 一瞬 | password の文字を記号・数字に置き換えただけ |
Password1! | 65.5 bit 171年 | 24.0 bit 一瞬 | 単語+数字+記号の定番の形 |
Tokyo2020! | 65.5 bit 171年 | 24.0 bit 一瞬 | 地名+年+記号 |
tanaka1985 | 51.7 bit 4日 | 51.7 bit 4日 | 名字+生まれ年。計算では見抜けない(後述) |
correct horse battery staple | 164.0 bit 100兆年以上 | 164.0 bit 100兆年以上 | 単語を並べた文。計算は過大(後述) |
k7#Qm2!xR9vB | 78.7 bit 151万年 | 78.7 bit 151万年 | ランダムな12文字の例。計算どおり |
見つかった弱点と改善
最初の計算では、P@ssw0rd が「7日」、Password1! が「171年」と表示されました。 しかしこれらは、流出したパスワードの一覧で上位に並ぶ定番の形です。攻撃者はランダムな総当たりの前に、 「よくある単語の、文字の置き換え(a→@、o→0 など)や、後ろに数字・記号を付けた形」から試します。
そこで強度チェッカーを改善し、記号や数字を元の文字に戻したうえで前後の数字・記号を外し、よく使われる単語と一致したら24ビット(一瞬で当たる強さ)まで下げるようにしました(2026年9月19日)。 ランダムに作った20万個のパスワードで試し、誤ってこの判定になるものがないことも確かめています。
計算では見抜けないもの
- 名前・誕生日・電話番号:
tanaka1985は計算上「4日」ですが、あなたを知っている人や、 SNSの情報を集めた攻撃者には、はるかに早く当てられます。本人に関係する情報は、計算で強さを判断できません。 - 単語を並べた文(パスフレーズ):
correct horse battery stapleは文字数が多いため、計算上は非常に強く見えます。 しかし攻撃者が「単語を4つ並べた形」だと知っていれば、試すのは文字ではなく単語の組み合わせです。 2,048語の中から4語をランダムに選んだ場合、強さは44ビットで、1秒100億回なら約29分で当たります。 パスフレーズを使うなら、7,776語の単語表からサイコロなどで6語を選ぶ方法(ダイスウェア)で約77.5ビット、約70万年になります。
このサイトのパスワード生成ツールで使える記号は18種類です。 強度チェッカーは記号を一律32種類として計算するため、生成したパスワードの強さを少し高めに表示します。 たとえば英大小・数字・記号の12文字は、実際には約75.9ビット(約22万年)です。
まとめ
- 覚えなくてよいパスワードは、パスワード生成ツールで16文字以上をランダムに作り、パスワード管理ソフトに保存するのが確実です。
- 覚える必要があるパスワードは、単語をランダムに6つ以上選んだパスフレーズにします。自分で考えた文や、単語の置き換えは避けましょう。
- 使い回さない:どれだけ強くても、ほかのサービスから流出すれば、そのまま試されます。
- 二要素認証を使う:パスワードが知られても、それだけではログインされにくくなります。