← Back to Blog

パスワードエントロピーを解説:強度を実際にどう計算するか

2025-12-26

「強力なパスワードを使いましょう」というのはよく聞くアドバイスですが、「強力」というのは曖昧です。エントロピーはこのアドバイスの裏にある実際の尺度であり、最悪の場合に攻撃者が何回の試行を必要とするかを示すビット単位の数値です。この記事では、その数値が何を意味するのか、実際に選ぶパスワードについてどう計算するのかを説明します。

TL;DR

  • エントロピー(ビット単位)は、攻撃者が総当たりで探索しなければならない探索空間の大きさを測定します:エントロピー = log2(文字セットサイズ ^ 長さ)
  • 文字を1つ追加するごとに探索空間は倍増しますが、文字の種類を1つ追加しても、固定的で比較的小さな倍率でしか増えません。
  • 小文字のみの12文字パスワードは、4種類すべての文字を混ぜた8文字パスワードよりエントロピーが低くなりますが、小文字のみの20文字パスフレーズはその両方を上回ります。
  • CSPRNGで生成されたパスワードは理論上のエントロピーを正確に達成しますが、人間が選んだパスワードはほぼ達成できません。人間はランダムではないからです。

簡単な答え

ビット単位のエントロピーは log2(N) であり、N はその長さと文字セットで等しく起こりうるパスワードの総数です。実際には:エントロピー = 長さ × log2(文字セットサイズ)。印刷可能なASCII文字95種類から均等に選ばれた16文字のパスワードは、約16 × log2(95) ≈ 105ビットのエントロピーを持ちます——これは実用的な総当たり耐性の観点で256ビットAES鍵に匹敵しますが、比較すると過剰であり、105ビットはすでに現在または予見可能なハードウェアが使い果たせる範囲をはるかに超えています。PassGenerate はこの方法でパスワードを生成しており、Web Crypto APIのCSPRNGを使用しているため、このエントロピー値は理論上だけでなく実際のものです。

エントロピーの計算式、順を追って解説

エントロピーは、各文字が固定された集合から独立かつ均等にランダムに選ばれることを前提としています。サイズ C の文字セットと長さ L のパスワードが与えられた場合、可能なパスワードの数は C^L であり、ビット単位のエントロピーは次のようになります:

エントロピー = L × log2(C)
文字セットセットサイズ (C)1文字あたりのビット数 (log2 C)
数字のみ (0-9)103.32
小文字 (a-z)264.70
小文字 + 数字365.17
大文字小文字混在 + 数字625.95
大文字小文字混在 + 数字 + 記号(一般的な約33種)956.57

長さ vs 文字セットサイズ:なぜ長さが勝るのか

この表は、NIST SP 800-63Bが強制的な複雑さのルールよりも長さを重視する理由を示しています:

長さ数字のみ小文字大文字小文字+数字+記号の混在
827ビット38ビット52ビット
1240ビット56ビット79ビット
1653ビット75ビット105ビット
2066ビット94ビット131ビット
2480ビット113ビット157ビット
32106ビット150ビット210ビット

4種類すべての文字タイプを使う8文字のパスワード(52ビット)は、小文字のみの12文字パスワード(56ビット)よりも少ないエントロピーしか持たないことに注目してください。これは、よく知られた結論の数学的根拠です:短いパスワードに記号や数字を強制するよりも、4文字のランダムな文字を追加する方が、セキュリティ向上に貢献します。これはまた、辞書からランダムに選んだ複数の単語からなる長いパスフレーズが、短い記号の羅列よりも強力でありながら入力しやすくなる理由でもあります——数千語のリストから抽出する場合、単語を1つ追加するごとに通常11〜13ビットが加算され、4〜6語で急速に積み上がります。

なぜ「ランダムに見える」ことは実際にランダムであることと同じではないのか

エントロピーの計算は真に均等なランダム性を前提としています。人間が作成したパスワードは、一見複雑に見えても体系的にこの前提を破っています:キーボード配列の並び(Qwerty123!)、leetspeak的な置換(P@ssw0rd)、日付や名前に記号を付加したもの――これらはすべて、攻撃者の解読ツールがまさにこうしたパターンを中心に構築されているため、文字数が示唆する水準よりも実効エントロピーを大幅に下げてしまいます。パスワードは人間の目にはランダムに見えても、標的型辞書攻撃の最初の数百万回の試行の中で破られてしまうことがあります。

これが、自分でパスワードを考案するよりも、暗号学的に安全な擬似乱数生成器(CSPRNG)を使う生成器を優先すべき実務上の理由です。JavaScriptの Math.random() は暗号学的に安全ではなく、パスワード生成には適していません——一部のエンジンでは、少数の出力から再構築できるほど予測可能なアルゴリズムによってシードおよび生成されているためです。Web Crypto APIの crypto.getRandomValues() はオペレーティングシステムの暗号学的乱数源から取得するため、各文字は真に独立してランダムであり、上記のエントロピー計算が実際に成り立ちます。

実際のハードウェアではどうなるか

上記のビット数は比較には便利ですが、実際の攻撃にどれくらい時間がかかるかは示していません——それは推測を行うハードウェアに依存し、そのハードウェアは毎年高速化しています。Hive Systemsは、まさにこの点について毎年ベンチマークを発表しており、レンタルした一般消費者向けGPU群を使って総当たり速度をテストしています。2026年版の表では、フル混合文字セット(大文字、小文字、数字、記号)でランダムに生成された8文字のパスワードの解読に約132年かかるとされています——2025年の164年、2024年の225年から減少しており、GPUハードウェアの向上により年間約20〜25%のペースで低下しています。小文字のみの8文字パスワードはさらに急速に低下しました:2025年の解読期間3週間から、2026年には約2週間になりました。

このベンチマークから知っておくべきことが2つあります。第一に、この傾向は一方向です——今日「安全」に見えるものも、ハードウェアの向上だけで毎年弱くなっていきます。これは、現在の最低ラインにとどまるよりも、より長いパスワードを選ぶべきだという現実的な根拠になります。第二に、やや直感に反しますが、言語モデルの訓練用に構築された専用のAIアクセラレータチップは、パスワードの総当たり解読において同等のゲーミングGPUより速くはなく、一部のテストではむしろ遅いことが判明しました——パスワード解読は純粋な数値計算問題であり、AIハードウェアが基盤とする行列乗算の最適化の恩恵を受けないのです。

実際にどれくらいのビット数が必要か

唯一の普遍的な数値は存在しません。何から防御しているかによって異なるからです:

  • 約40〜60ビット:無差別な推測や小規模な自動化攻撃には耐性がありますが、弱くハッシュ化されたデータベースに対するリソース豊富なオフライン攻撃の射程内にあります。本当に低価値で影響の小さいアカウントにのみ適しています。
  • 約70〜90ビット:最適化された解読ハードウェアを使っても、現実的などの攻撃時間枠でも総当たりの範囲を十分に超えています。ほとんどの個人アカウントにとって妥当な目標です。
  • 100ビット以上:現在または予見可能な計算能力では、実質的に総当たりで到達不可能であり、強力な暗号鍵と同じ意味で暗号学的です。パスワードマネージャーのマスターパスワードや他の単一障害点に適しています。

重要なポイント

  • エントロピーは 長さ × log2(文字セットサイズ) です——長さは線形的な効果を持ち、文字セットサイズは対数的な効果を持つため、長さが支配的になります。
  • すべての文字タイプを使う短いパスワードは、1種類のみを使う長いパスワードよりもエントロピーが低くなることがあります。
  • 実効エントロピーが理論エントロピーと等しくなるのは、文字が真に均等にランダムである場合に限ります——これはCSPRNGが保証するものであり、人間の選択では通常達成できません。
  • 日常的なアカウントには70ビット以上、マスターパスワードや他の単一障害点には100ビット以上を目標にしてください。

PassGenerateを信頼できる理由

  • パスワードはWeb Crypto APIを使用してブラウザ内でローカルに生成されます。
  • パスワードがサーバーに送信されることはありません。
  • 暗号学的に安全な擬似乱数生成器(CSPRNG)を使用しています。
  • NISTおよびOWASPが推奨する最新のセキュリティベストプラクティスに従っています。

参考文献

  • Hive Systems 2026年パスワード表(総当たりベンチマークデータ)
  • NIST SP 800-63B – デジタルアイデンティティガイドライン
  • OWASP 認証チートシート

結論

エントロピーは、パスワードの強度を示す正確で計算可能な尺度であり、「複雑さ」という曖昧な概念ではありません。長さが重要なのは、探索空間を線形に拡大するのに対し、文字セットサイズは対数的にしか拡大しないためです。そして、文字が実際にランダムでなければ、この数学はまったく成り立ちません。だからこそ、PassGenerateのようなCSPRNGに基づく生成器は、人間が選んだパスワードではほぼ実現不可能な、理論上のエントロピーを正確に達成するパスワードを生み出すのです。