パスワード強度分析

エントロピーからパスワード強度を推定し、解読にかかる時間を表示し、弱さの原因となるチェックリストを提示。

真の強度を測定。 強度は長さだけでなく、エントロピー(パスワードが持つ不確実性のビット数)から推定します。解読時間は毎秒 10 億回の推測を想定。すべてブラウザ内で動き、パスワードは保存も送信もされません。

強度
エントロピー
解読時間
チェックリスト
  • 12 文字以上
  • 大文字を含む
  • 小文字を含む
  • 数字を含む
  • 記号を含む
  • よく使われるパスワードでない
アドバイス

長さだけでなくエントロピー

エントロピーの数値が意味するもの

エントロピーは攻撃者が必要とする試行回数をビットで表したものです。1 ビット増えるごとに作業量は倍になります。ここでの推定式は log2(文字種数) × 長さ です。小文字と数字からなる 10 文字のパスワードなら文字プールは 36 で約 51.7 ビット、攻撃者がプールと長さを知っている前提で約 2^51.7 通りの候補があることになります。

この式が表すのは、そのプールからランダムに選んだパスワードです。あくまで上限であり、人が選んだパスワードがここに届くことはまれです。Password1! は書類上の評価は良好で、大小文字混在、数字、記号、10 文字を満たしますが、あらゆるクラック辞書に載っているため実際の強度は数回の試行にすぎません。このページのチェックリストが単なる採点表ではない理由がこれです。よくあるパスワードの判定に落ちることは、記号の判定に通ることよりはるかに重大です。

解読時間の見積もりが大きく振れる理由

答えを桁違いに変える要因が 2 つあります。1 つは攻撃者のハードウェアです。現代の GPU 1 枚で MD5 や SHA-1 のような高速ハッシュに対し毎秒数十億回の試行が可能で、レンタルクラスタを使えばさらに倍増します。もう 1 つは保存側の方式です。適切に設定された bcrypt、scrypt、Argon2 のハッシュは意図的に低速でメモリを要求し、スループットを毎秒数十億から数千に落とします。

つまり同じパスワードでも、あるサイトでは簡単に破られ、別のサイトでは十分安全ということが起こります。ここに表示される数値は高速ハッシュに対するオフライン攻撃を前提とした悲観的なケースですが、どのサイトがどう保存しているかを知る術がない以上、これを基準に考えるのが妥当です。

実際に効くこと

長さは複雑さに勝ります。小文字のパスワードに 1 文字加えれば探索空間は 26 倍になりますが、短いパスワードに記号クラスを 1 つ加えても倍率ははるかに小さくなります。大きな単語リストからランダムに選んだ 4〜5 語のパスフレーズは 50〜70 ビットに達しながら、入力しやすく記憶もしやすいままです。これが diceware の考え方です。

さらに重要なのは、個々のパスワード強度より使い回しのほうが問題だという点です。強いパスワードでも 10 サイトで使い回せば、安全性は最も弱いサイトと同じになります。1 件の漏洩で 10 件すべてが露出するからです。サイトごとに異なるランダム文字列を生成するパスワードマネージャーは両方の問題を一度に解決し、手入力するパスワードをいくら調整するより実務的な効果が大きくなります。

なお、このページの処理はすべてブラウザ内でローカルに実行されます。入力した内容がどこかに送信されることはありません。

オープンソースに関する注記:バニラ JavaScript による自前のエントロピー推定器で実装。サードパーティライブラリは使用していません。

よくある質問

パスワードはどこかに送信されますか?
いいえ。解析はすべてブラウザ内で実行され、アップロードもログ記録も保存も行いません。実際に使っているパスワードを安心して試せます。
エントロピーの数値は何を意味しますか?
同じ長さと文字種を持つパスワードの総数を 2 を底とする対数で表した値です。1 ビット増えるごとに、攻撃者が探索すべき空間は 2 倍になります。
解読時間の見積もりがこれほど変わるのはなぜですか?
攻撃者のハードウェアと、パスワードのハッシュ方式の両方に依存するからです。同じパスワードでも、ソルトなし MD5 なら数時間で破られ、bcrypt なら何年も持ちこたえます。
長さと複雑さのどちらが重要ですか?
長さです。1 文字増やすと探索空間が文字集合のサイズ倍になり、文字を記号に置き換えるより、ほとんどの場合で効果的です。
漏洩済みのパスワードを検出できますか?
できません。スコアは純粋に構造的なものなので、文字種の豊富な漏洩済みパスワードでも強く見えてしまいます。漏洩の有無は専用サービスで別途確認してください。
現実的な目標値はどれくらいですか?
一般的なアカウントで約 80 ビット、金銭・メール・インフラを守る用途では 100 ビット以上を目安にしてください。大きな単語リストから 4〜5 語を選んだパスフレーズなら余裕で到達します。