ssecutils
Security / Browser-native guide

パスワード強度はどう決まるか

文字数だけではなく、エントロピー、総当たり時間、パスフレーズの考え方から安全なパスワードを説明します。

5Zero tracking reading surface

「強いパスワード」って何が強いのか

「8文字以上にしてください」「記号を入れてください」など、サービスごとに違うパスワードのルール。なぜそんなことを言われるのか、どこまでやれば本当に安全なのか、初学者にはイメージしづらい部分です。

この記事では、パスワード強度を支える 「エントロピー」という考え方 を中心に、なぜ「16文字以上」が目安として挙がるのか、どうやって計算するのかを解説します。

エントロピーとは「攻撃者が試す回数」のこと

パスワードの世界でのエントロピー(bit)は、ざっくり言うと「攻撃者があなたのパスワードを総当たりで当てるまでに、最悪何通り試す必要があるか」を 2 を底とする対数で表したものです。

式は単純で、使える文字種の数 Nパスワードの長さ L から:

エントロピー (bit) = L × log2(N)

例えば「英小文字のみ(N=26)8文字」なら:

8 × log2(26) ≈ 8 × 4.7 ≈ 37.6 bit
試行回数 ≈ 2^37.6 ≈ 2,000億通り

2,000 億と聞くと多そうですが、現代の GPU を使えばオフラインで数分以内に総当たりできるレベルです。

文字種類を増やすとどう変わるか

同じ 8 文字でも、文字種類を増やすとエントロピーが増えます:

文字構成N8文字のbit16文字のbit
英小文字のみ26~38~75
英大小文字52~46~91
英数字62~48~95
英数字 + 記号~94~52~105

ただし「文字種類の追加 vs 文字数の追加」を比べると、文字数を伸ばす方が効率的です。

  • 記号を追加(94→52bit)→ 約4bitしか増えない
  • 1文字追加(94を9文字)→ 約6.5bit増える

これがパスワードのベストプラクティスとして「短く複雑」より「長く覚えやすい」が推奨される理由です。

総当たり攻撃の実時間

現代の GPU を使ったオフライン攻撃の目安:

エントロピー所要時間(GPU 1台想定)評価
~40 bit数分〜数時間弱い
~60 bit数日〜数ヶ月普通
~80 bit数十年強い
100+ bit宇宙の年齢を超える非常に強い

サーバー側のパスワード保存が bcrypt / scrypt / Argon2 のような遅いハッシュなら、攻撃速度は劇的に下がります(ハッシュ1回計算に 0.1 秒かけるだけで、SHA-256 比 10万倍遅くなる)。逆に、速い MD5/SHA-1 で生のハッシュを保存していると上記の数字に近い時間で破られます。

パスフレーズが強い理由

XKCD #936 の有名なネタで correct horse battery staple がありますが、これは4語のランダムな英単語を組み合わせたパスフレーズです。

例えば 7,000 語の辞書から 5 語を独立に選ぶと:

5 × log2(7000) ≈ 5 × 12.8 ≈ 64 bit

スペース込み 28 文字、記号もないのに、英数字 11 文字とほぼ同じエントロピーを持ちます。覚えやすい長さ強さを両立できるのがパスフレーズ最大の利点です。

⚠ ただし「思いついた英文をそのまま使う」は弱い:辞書語が独立に並んでいるからエントロピーがあるのであって、「I love my dog」のような自然文は文法的相関で実質的なエントロピーが激減します。必ずランダム生成すること。

実用的なガイドライン

  1. サービス用パスワード: パスワードマネージャに任せ、16〜30 文字のランダム英数字記号で生成(人間が覚えなくていい)
  2. マスターパスワード(パスワードマネージャの鍵): パスフレーズで 6〜7 語以上(覚えられる範囲で長く)
  3. 2 要素認証(TOTP / FIDO2)を併用: パスワードが漏れても突破されない
  4. 使い回しは絶対に避ける: 1 サービスの漏洩が他サービスへ波及する

おわりに

パスワード強度はエントロピーで定量化できます。「16文字以上」「4種類混在」というガイドラインは、ざっくり 100 bit のエントロピーを目指している、という根拠があります。

本サイトの Password Generator は、パスワード/パスフレーズ両モードで暗号学的に安全な乱数から生成し、エントロピーをリアルタイム表示します。実際に値をいじって、強度バーがどう変化するか試してみてください。

Tool companion

この記事と一緒に使えるツール

Related reading

関連記事