オフライン GPU での平均解読時間 ≈ 10^11 years
機能の説明
Web Crypto の CSPRNG(crypto.getRandomValues)とリジェクションサンプリングを使って、暗号論的にランダムなパスワードを生成します。各文字は選択された文字セットから一様に引き出されます — モジュロバイアスも、予測可能なショートカットもありません。各ドローは独立で、すべてブラウザー内で完結します。
生成したパスワードごとに、リアルタイムのエントロピー(ビット)(length × log₂(charset))を表示し、5 セグメントのメーター上で 5 段階 — very weak(非常に弱い)、weak(弱い)、fair(まあまあ)、strong(強い)、very strong(非常に強い)— のいずれかに分類します。メーターの下にはヘッドラインの数字が置かれます:オフライン GPU 攻撃(1 秒あたり 10¹⁰ 回の推測)に対するパスワードの平均解読時間で、2^(bits−1) / rate — 期待時間、すなわち鍵空間の半分 — として計算されます。
Pro をオンにするとアナリティクス層が現れます:展開されたエントロピー公式(length × log₂(charset) = N bits)、オフライン GPU シナリオでプロットされた「解読時間 vs 長さ」カーブ、そしてオンライン絞り込み(100 回/時)からオフライン高速 GPU(10¹⁰ 回/秒)までを網羅する 4 行の攻撃テーブルです。
使い方
- スライダーで長さを設定します(4〜64 文字。8、16、24、32、48、64 に目盛り)。
- 使いたい文字セットをトグルします:
A-Z、a-z、0-9、!@#(記号)。少なくとも 1 つはオンにする必要があります。 - 任意で no O0Il1 をトグルすると、視覚的に紛らわしい文字(
O、0、I、l、1)がプールから取り除かれます。 - New をタップして引き直すか、Copy で現在のパスワードをコピーします。
- 強度メーターと、その下の平均オフライン GPU 解読時間を確認します。
- Pro をオンにすると、エントロピー公式、「解読時間 vs 長さ」カーブ、4 シナリオの攻撃テーブルが表示されます。
例
エントロピーは length × log₂(charset) です。4 つの文字セットの合計は 88 文字です(小文字 26 + 大文字 26 + 数字 10 + 記号 26)。
- 16 文字、A-Z + a-z + 0-9(文字セット 62):
16 × log₂(62) ≈ 95.3 ビット→ strong(5 セグメント中 4)。平均オフライン GPU 解読時間 ≈2^94 / 10¹⁰ ≈ 1.98 × 10¹⁸ 秒 ≈ 6.3 × 10¹⁰ 年— ツールはこれを10^11 yearsと表示します。 - 16 文字、記号を含む全 4 セット(文字セット 88):
16 × log₂(88) ≈ 103.4 ビット→ very strong(5 / 5 セグメント)。 - 8 文字、小文字のみ(文字セット 26):
8 × log₂(26) ≈ 37.6 ビット→ weak(2 / 5 セグメント)。 - 95 ビットにおける Pro のシナリオ比較(平均時間、
2^94 / rate):オンライン絞り込み(100 回/時)→10^22 年、オンライン無制限(10 回/秒)→10^20 年、オフライン低速ハッシュ(10⁴ 回/秒)→10^17 年、オフライン高速 GPU(10¹⁰ 回/秒)→10^11 年。
補足事項
- 設計時からプライベート: 生成にはローカルの
crypto.getRandomValuesを使います。パスワードがブラウザーの外へ出ることはなく、Pro モードは純粋な計算です(ネットワーク通信なし)。 - モジュロバイアスなし: 各文字インデックスは、2³² の Uint32 範囲に収まる文字セットサイズの最大倍数に対するリジェクションサンプリングで引き出されてから縮約されます — 決して
random % charset.lengthではありません。 - 平均であって最悪ケースではない: 解読時間は期待時間です(
2^(bits−1) / rate— 鍵空間の半分)。運の良い攻撃者ならもっと早く終わるかもしれませんし、鍵空間の全走査にはおよそ 2 倍かかります。 - 理論上のエントロピー: スコアは一様ランダムなドローを仮定しており、それは CSPRNG が保証します。人間が選んだ、あるいは使い回しているパスワードには Password Strength Analyser(zxcvbn)を使ってください — 辞書語、置換、素のエントロピーでは見えないパターンを検出します。
- 5 段階: very weak(< 28 ビット)、weak(28〜44)、fair(45〜69)、strong(70〜99)、very strong(≥ 100)。
- 共有可能: 長さ、文字セットのトグル、
no O0Il1フラグ、Pro スイッチは URL にエンコードされます(?len=…&upper=1&pro=1…)。リンクが正確な設定を再現します。 - 関連ツール: Password Strength Analyser、Token Generator。