パスワード強度チェック (zxcvbn によるスコア / 推測時間 / 改善案)
Dropbox 由来の `zxcvbn-ts` (MIT) をブラウザ内で実行し、パスワードの推測難易度を 0〜4 のスコア / エントロピー (log2 換算) / 推測回数 / 4 種類の攻撃シナリオでの推定突破時間 / 検出された弱点パターン (辞書 / 連続 / 反復 / 日付 / 鍵盤シーケンス / leet 変形) を表示します。改善案は『大文字を混ぜる』『よく使われる単語を避ける』などフィードバック形式で日英対応。表示と切替で入力フィールドはマスク表示 (目アイコンでトグル) +『紛らわしい文字 (i/l/1/L/o/0/O) を強調表示』オプション。入力したパスワードはブラウザ内処理のみ、ネットワークに送信しません。
使い方
1) 入力欄にパスワードを打ち込みます (デフォルトはマスク表示、目アイコンで表示/非表示切替)。 2) スコア (0〜4) と進捗バーがリアルタイム更新されます。0 = 1 秒で破られる、4 = 数世紀かかる、が目安です。 3) 詳細セクションでエントロピー (bit) / 推測回数 / 文字数を確認。突破時間表で 4 種類の攻撃シナリオ (オンライン制限 100/時、オンライン制限なし 10/秒、オフライン低速 1e4/秒、オフライン高速 1e10/秒) ごとの推定時間を見ます。 4) フィードバック欄に zxcvbn からの警告と改善案が表示されます。検出パターン表で『辞書一致』『鍵盤シーケンス』『反復』など、何が弱点になっているかを確認できます。
よくある質問
- zxcvbn とは?
- Dropbox が開発したオープンソース (MIT) のパスワード強度評価ライブラリ。よくあるパスワード辞書 (上位 30,000 件)、英語の辞書、人名、姓、leet 変形 (a→4, e→3, ...)、キーボード配列上のシーケンス (qwerty, asdf, ...)、日付、反復、連続文字などをパターンマッチで検出し、推測コスト (guesses) を見積もります。本ツールは TypeScript 移植版の `@zxcvbn-ts/core` (3.0) を使用しています。
- スコア 0〜4 はどう判定されるのか?
- 推測回数 (guesses) が以下の閾値で区切られます: 0 = 10^3 未満 (1 秒で破られる)、1 = 10^6 未満 (1 時間)、2 = 10^8 未満 (1 日)、3 = 10^10 未満 (数ヶ月)、4 = 10^10 以上 (数世紀)。一般的に 3 以上が Web サービス向け、4 が機密用途の推奨ラインです。
- 突破時間の 4 シナリオの意味は?
- (1) オンライン制限 100/時 = アカウントロック等のレート制限がある通常の Web サービス。(2) オンライン制限なし 10/秒 = 緩い API、Wi-Fi 認証など。(3) オフライン低速 1e4/秒 = bcrypt/Argon2 など強いハッシュで漏洩 DB を総当たり。(4) オフライン高速 1e10/秒 = MD5/SHA1 等の弱いハッシュで GPU クラッカーを使用。漏洩リスクを考えるなら (3)(4) の値を見るのが重要です。
- 日本語のパスフレーズはどう評価されますか?
- zxcvbn の辞書は英語ベースなので、日本語のひらがな・カタカナ・漢字を含むパスフレーズは『辞書一致』判定がほぼ無効になり、ほぼ全体が brute-force 扱いとなります。結果として文字長と文字種類数から計算される単純なエントロピーに近い値になります。日本語混じりのパスフレーズは『見た目より高評価』になりやすいので注意 (実際の攻撃者は日本語辞書を併用する可能性がある)。
- Diceware / correct horse battery staple は強い?
- Diceware (5〜7 単語のランダム英単語パスフレーズ) や有名な 'correct horse battery staple' (4 単語) は zxcvbn でも比較的高評価ですが、各単語が辞書に載っているとパターン検出されてエントロピーが想定より低くなることがあります。本ツールでサンプルとして 'correct horse battery staple' を試して、score 3〜4 になるか確認してみてください。
- サンプル候補のパスワードは何?
- (1) 'password123' = score 0 想定の最弱例。(2) 'Tr0ub4dor&3' = XKCD 936 の有名な 'l33t 化された辞書語' で、見た目より弱いことを実証する例。(3) 'correct horse battery staple' = 同じく XKCD 936 のパスフレーズ手法。(4) 17 文字ランダム = score 4 の理想例。
- 入力データはサーバーに送信されますか?
- いいえ。zxcvbn-ts の辞書・パターン判定はすべてブラウザ内で実行され、入力したパスワードはネットワークに送信されません。
類似のツール
パスワード生成 — 強度 / 文字種 / 桁数指定
強いランダムパスワードを 1〜25 件まとめて生成できます。長さ・文字種・紛らわしい文字の除外を選択可。crypto.getRandomValues ベースでブラウザ内処理。
ハッシュ生成 — SHA-1 / 256 / 384 / 512
テキストから SHA-1 / SHA-256 / SHA-384 / SHA-512 のハッシュ値を一括生成します。Web Crypto API ベースでブラウザ内処理。
UUID 生成 — v4 / v7 をまとめて発行
UUID v4 (完全ランダム) と UUID v7 (タイムスタンプ付き) を 1〜100 件まとめて生成できます。crypto.getRandomValues ベースでブラウザ内処理。
HTML サニタイズ — XSS 防御 (script / on* / javascript:)
DOMPurify でユーザー投稿 HTML から XSS 攻撃ベクター (script 要素・on* イベントハンドラ・javascript: URL・data: URL の不正利用・iframe など) を取り除きます。厳格 / 標準 / 許容の 3 モードでプロファイルを切替可能。CMS や掲示板に渡す前のサニタイズ、Markdown→HTML 変換結果の安全化、ブログ移行時のレガシー HTML 清掃などに。すべてブラウザ内で完結し、HTML は外部に送信されません。