「大文字・数字・記号を混ぜましょう」——パスワードでよく言われる助言です。もちろん有効ですが、実際に強さを大きく左右するのは「長さ」です。パスワードを1文字伸ばすたびに、試すべき候補数は文字種の数だけ倍増します。この関係はエントロピーという指標で数値化できます。パスワード強度チェックが出す評価の裏側にある考え方を見ていきましょう。
なぜ「長さ」が効くのか
攻撃者が総当たり(ブルートフォース)で試す候補数は、各文字を独立に一様ランダムで選んだ場合、(文字種の数)の(長さ)乗になります。文字を1つ増やすと候補数は文字種の数だけ倍増し(底の掛け算)、文字種を広げると底そのものが大きくなります。どちらも効きますが、覚えやすさを保ったまま伸ばせる長さは実用的なレバーです。なお、人が考えた規則的な文字列は、この理論値より実効的な強さが下がります。
エントロピーの式
候補数そのものは桁違いに大きくなるので、2を底とする対数(bit)で表すのが慣例です。これがエントロピーです。
エントロピー(bit) = 長さ × log2(文字種数)
たとえば英数字62種を16桁なら、log2(62)≈5.95 なので 16×5.95≈95bit。候補は 295 通りです。総当たりに要する時間の目安は 2bit ÷ 秒間の試行回数 で見積もれます。この式は各文字を独立に一様ランダムで選んだ場合の上限値で、規則的に人が選んだパスワードの実効エントロピーはこれより小さくなります。
文字種と桁数で見る総当たり時間
ここでは攻撃速度=毎秒 1×1011 回(オフラインで高速なハッシュを総当たりする場合の一例)と仮定し、全パターンを試し切るまでの時間を試算しました。桁を増やすと時間が跳ね上がる様子に注目してください。
| 文字種 | 8桁 | 12桁 | 16桁 | 20桁 |
|---|---|---|---|---|
| 数字のみ(10種) | 27bit・一瞬 | 40bit・約10秒 | 53bit・約1日 | 66bit・約32年 |
| 英小文字(26種) | 38bit・約2秒 | 56bit・約11日 | 75bit・約1.4万年 | 94bit・約6.3×109年 |
| 英数字(62種) | 48bit・約36分 | 71bit・約1000年 | 95bit・約1.5×1010年 | 119bit・約2.2×1017年 |
| 記号込み(95種) | 53bit・約18時間 | 79bit・約17万年 | 105bit・約1.4×1013年 | 131bit・約1.1×1021年 |
横に見れば文字種、縦に見れば桁数の効果が分かります。英小文字だけでも16桁で約1.4万年と、8桁の記号込み(約18時間)を大きく上回ります。数字4桁のPINが一瞬で破られるのも同じ理屈です。
覚えやすさで選ぶ「パスフレーズ」
記号だらけの短い文字列より、無関係な単語を並べた長いパスフレーズのほうが、覚えやすさと強さを両立しやすい方法です。ただし強さは語数だけでなく辞書の大きさで決まります。パスフレーズのエントロピーは 語数 × log2(辞書の語数)。標準的なDiceware辞書(約7,776語)なら1語あたり約12.9bitで、5〜6語で約65〜77bitに届きます。逆に辞書が小さいほど1語あたりの情報量は下がるので、その分だけ語数を増やす必要があります。重要な用途では、パスワード生成で16文字以上のランダム文字列を作り、下記の管理ツールに保存するのが最も確実です。
使い回しは最悪の一手 — 管理ツール+2要素認証
どれだけ長くても、同じパスワードを複数サービスで使い回すと台無しです。1か所が漏洩すると、その認証情報の組をそのまま別サイトで試すクレデンシャルスタッフィング(総当たりとは別で、漏洩した既知のID・パスワードを使い回す攻撃)で芋づる式に破られます。現実的な守りは2つです。
- パスワード管理ツールでサービスごとに長いランダム文字列を発行し、使い回さない。
- 2要素認証(2FA)を有効にする。とくにTOTP(ワンタイムパスワード)のような時刻ベースのコードは、パスワードが漏れても単独ではログインを許しません。
よくある質問
記号は必ず混ぜないとダメ?
結局、何桁あれば安全?
本記事のbit数と時間は当サイトの計算による概算で、攻撃速度を1×1011回/秒(オフラインの高速ハッシュ総当たりを想定した一例)と仮定しています。実際の安全性は攻撃手法・ハッシュ方式で変わります。2026-07-16時点。