パスワードエントロピー解説: 何が実際にパスワードを強くするのか

パスワードのエントロピーをビットでどう測るか、なぜランダムな長さが複雑さの規則に勝つか、そして鍵・トークン・パスフレーズでエントロピーの基準をどこに置くかを整理します。

パスワードの強度には単位があります。エントロピーのビットで、各ビットは攻撃者が 平均して行うべき推測の数を倍にします。40 ビットのパスワードは総当たりで余さず 破るのに 2^40 回、約 1 兆回の推測が必要です。80 ビットは 2^80、おおよそ 1 𥝱 (じょ) 回です。エントロピーは単一のパスワードの特性ではありません。それを生んだ 過程 の特性です。その区別が、強いパスワードについての直感のほとんどが外れる ところであり、どの数字を信じる前にも正確に押さえておく価値があります。

公式と、それが仮定するもの

N 個の異なる記号のプールから長さ L で一様ランダムに引かれたパスワードの エントロピーは、ビットで次のとおりです。

H = L × log2(N)

プールのサイズ N は、各位置が等しくなりえた文字の数です。95 個の印字可能な ASCII 文字からランダムに選んだ 12 文字のパスワードは、次を持ちます。

12 × log2(95) = 12 × 6.5699 ≈ 78.8 ビット

その値は 1 つの条件のもとでのみ正確です。すべての位置が独立で一様なランダム 抽出で埋められた場合です。人が文字を選ぶ瞬間、または規則がそれを制約する瞬間、 実際のエントロピーは下がり、しばしば半分以上下がり、公式は攻撃者が実際に直面 するパスワードをもう説明しません。

プールごとの 1 文字あたりビット

各位置は log2(N) ビットを寄与します。よくあるプールです。

文字プール サイズ N 1 文字あたりビット
数字 0-9 10 3.32
小文字 a-z 26 4.70
小文字 + 数字 36 5.17
英数字 a-zA-Z0-9 62 5.95
印字可能 ASCII 全体 95 6.57

エントロピーの目標を 1 文字あたりビットで割ると、ランダムな 生成器で必要な 長さが出ます。

目標 数字 小文字 英数字 ASCII 全体
~80 ビット 25 文字 18 文字 14 文字 13 文字
~128 ビット 39 文字 28 文字 22 文字 20 文字

この表は、「記号を 1 つ足す」が人々の期待ほど買えないことを示します。英数字から ASCII 全体へ行くと、1 文字あたり 0.62 ビットしか足されません。12 文字の パスワード全体で約 7.5 ビットです。同じプールにランダムな文字を 2 つ足すと 11.9 ビット足されます。長さのほうが安いてこで、プールの逓減する見返りに上限なく 線形に積み上がります。

人が選んだパスワードが数学の言うより弱い理由

P@ssw0rd! は ASCII 全体のプールから 9 文字です。公式は 59 ビットと言います。 有能な攻撃者に対する実際のエントロピーは十数ビットに近いです。どの攻撃者も 95^9 個の候補を盲目的に列挙しないからです。彼らは人がどう選ぶかをモデル化します。

  • 辞書と漏洩コーパス。 password という単語とその何百万もの変種が最初に 試されます。rockyou.txt や HaveIBeenPwned のコーパスのようなリストは、何十億 もの実在のパスワードを順位付けた推測順に変えます。
  • リートスピーク置換。 a→@o→0s→$i→1 は小さくよく知られた変換 集合です。hashcat のようなツールは、基本のワードリストの上に規則としてほぼ 追加コストなしで適用します。
  • キーボードウォーク。 qwerty1qaz2wsxasdfgh はキーボードを横切る 短い経路で、合わせて数千個の候補です。
  • 予測可能な配置。 先頭が大文字、末尾に数字と記号。構成規則は人をこの パターンに 集中 させ、探索空間を広げるのではなく狭めます。

教訓は単純です。ランダムな 13 文字の ASCII 全体の文字列 (~85 ビット) は、 あらゆる複雑さのチェックボックスを満たすが予測可能な形に従う、人が作った 16 文字のパスワードより劇的に強いです。エントロピーは生成器に宿り、キーボードに 宿りません。これは、攻撃者があなたのライブのログインに決して触れないときでさえ、 なぜエントロピーが重要かも説明します。パスワードのデータベースが漏れると、 クラッキングは保存されたハッシュに対して毎秒数十億の推測でオフラインで行われ、 元のパスワードのエントロピーだけが、彼らがどこまで進むかを制限します (詳しくは ハッシュ・暗号化・エンコーディング を参照)。

パスフレーズ: 覚えられるエントロピー

ダイスウェアは 単語 をランダムにすることで、人のパターンの問題を回避します。 サイコロを振って固定されたリストから単語を選び、エントロピーは次のとおりです。

H = 単語数 × log2(ワードリストのサイズ)

標準の EFF/ダイスウェアのリストは 7776 個の単語 (6^5、サイコロ 5 個の出目ごとに 1 項目) なので、各単語が log2(7776) ≈ 12.92 ビットを寄与します。6 単語の パスフレーズは次のとおりです。

6 × 12.92 ≈ 77.5 ビット

それは ~80 ビットの近辺を通過し、anvil-collide-runway-fossil-mocha-stout の ような句として覚えられ、決定的に、攻撃者があなたがダイスウェアを使い正確な ワードリストを持っていると知っていてもエントロピーが保たれます。方法を知っても 役立ちません。ランダム性はサイコロにあります。7 単語にすれば ~90 ビット、 8 単語で ~103 です。区切りや大文字化は意味のあるものを足さないので、強度の主張に 数えないでください。

現代のガイダンス: 演出ではなく長さと選別

NIST SP 800-63B (Rev. 4) は、パスワードのポリシーを実際に攻撃に抵抗するものを 中心に再構成し、その転換は身につける価値があります。デプロイ済みのポリシーの 多くが今もそれに矛盾するからです。

  • 長さを優先しましょう。 最低 8 文字を要求し、最低 64 文字をサポートし、 長さを主たる強度のてことして扱ってください。パスワードが唯一の認証手段の とき、推奨される下限は 15 に上がります。
  • ブロックリストで選別しましょう。 漏洩コーパス、辞書、反復・連続する 文字列、そして文脈上の用語 (サービス名、ユーザー名) で見つかったパスワードを 拒否してください。実世界の強度が強制される場所がここです。
  • 必須の構成規則を捨てましょう。 NIST は今や検証側が特定の文字種の組み合わせ を要求してはならないと言います。その規則はユーザーを上記の予測可能な パターンへ押しやり、実効エントロピーを下げます。
  • 定期的な強制ローテーションを捨てましょう。 スケジュールでパスワードを失効 させないでください。侵害の証拠があるときだけローテーションしてください。強制 ローテーションは漸進的で推測可能な変更 (Spring2025!Summer2025!) を 招きます。

貫く筋はこうです。ユーザーが決して持たなかったランダム性を仮定する公式のために 最適化するのをやめ、代わりに攻撃者が実際に行う推測を遮断してください。 TOTP のような第 2 の要素は、どんな構成規則より アカウントのセキュリティにずっと多くを果たします。パスワードを単一障害点から 完全に取り除くからです。

基準をどこに置くか

エントロピーの目標は、秘密が何を守りどれだけ長く生きるかに従うべきです。

  • 低価値、レート制限あり、使い捨てのアカウント: オンラインの推測が抑えられ ロックアウトが適用されるなら ~40〜50 ビットが擁護できます。毎秒数回しか試せ ない攻撃者は 2^45 を使い切れません。
  • 復元可能、またはオフラインでクラック可能なハッシュを持つもの全般: ~80 ビット以上を狙ってください。ハッシュが漏れた瞬間にレート制限は消え、攻撃は ハードウェアの速度で走ります。
  • 暗号鍵、API トークン、セッションの秘密: 128 ビット、例外なし。これらは 機械が生成し、決してタイプされず、最も強い現実的な余裕を正当化するものを 守ります。22 文字のランダムな英数字や 20 文字の ASCII 全体の文字列がそれを 通過します。

正直な限界が 2 つあります。第一に、「エントロピーのビット」は総当たりへの抵抗を 説明するのであって、フィッシングや再利用されたパスワードのクレデンシャル スタッフィング、キーロガー、または漏れた平文に対するものではありません。サイト 間で再利用された 128 ビットのパスワードも、依然として 1 回の侵害で無価値に なります。第二に、人が選んだ パスワードのエントロピーはどんな公式でも測れ ません。P@ssw0rd! を高く採点する強度メーターはパターンへの抵抗を粗く見積もって いるだけなので、その数字を精密なものではなく動機づけとして扱ってください。

信頼できる道は、人のパターンを方程式から完全に取り除くことです。あなたの脅威 モデルが求める長さで秘密をランダムに生成してください。私たちの パスワード生成器 は、あなたが選んだプールから 暗号学的に安全なソースで抽出するので、それが報告する L × log2(N) の値は、 あなたが実際に得るエントロピーです。あなたの指がタイプしたであろう文字列の 楽観的な見積もりではありません。