パスワード生成 — 暗号学的に安全・強度メーター付き
Math.random ではなく crypto.getRandomValues を使用するため、銀行や OS のキーチェーンと同じ品質の乱数源で生成されます。長さや文字種を調整でき、エントロピー(強度)も同時に表示します。
仕組み
本当に安全な乱数を使っている理由
Web上の多くの「パスワード生成ツール」は Math.random() を使っていますが、これは暗号学的には安全ではありません。出力の数値を数個観測されると、攻撃者に次の値を予測される可能性があります。本ツールは Web Crypto API の crypto.getRandomValues を使用しており、これは HTTPS の暗号化や OS のキーチェーンと同じ乱数源です。
生成は完全にブラウザ内で完結します。パスワードはネットワークに送信されず、当方のサーバーには一切記録されません。万が一サイトが侵害されても盗まれるデータがありません。
強度メーターの見方
強度ラベルはエントロピー(ビット数)から算出されます: ビット = log₂(文字種の数) × 長さ。例: 小文字のみ10文字なら log₂(26) × 10 ≈ 47ビットで、本気の攻撃者にとっては短時間で破られます。4文字種フルで16文字なら約105ビットで、現実的に破れません。区分は <50 弱い・50-80 中程度・80-128 強い・≥128 非常に強い です。
目安としては、弱い = 並の攻撃者が数日で突破、中程度 = ボットネットで数年、強い = 現実的な攻撃者では破れない、非常に強い = 量子計算などの将来的脅威に対しても余裕、というレベルです。
「複雑さ」より「長さ」
数学的には、1文字長さを足すと探索空間がほぼ倍になります(文字種にもよる)。一方、文字種を1種類追加してもわずかしか増えません。20文字の小文字だけのパスワードは、12文字の英数記号混在パスワードより強力で、しかも入力しやすいのです。覚えたい場合は7000語の単語リストから4語ランダム選択でも51ビットで、強い8文字パスワードと同等です。
「紛らわしい文字を除外」オプションは、フォントによって混同しやすい文字(0とO、Iと1とl)を除外します。強度はわずかに下がりますが、紙に書いた時に読みやすくなります。マネージャー保存のみなら不要、印刷から手入力する可能性があるなら有効にしてください。
よくある質問
›本当に安全な乱数ですか?
はい。Math.random() ではなく Web Crypto API の secure random を使用します。ブラウザベンダー提供の実装は監査されており、HTTPS の基盤と同じものです。
›パスワードはサーバーに送信されますか?
一切送信されません。生成・エントロピー計算・コピーは全てブラウザ内で完結します。受信側のサーバーエンドポイントもありません。
›16文字で十分ですか?
オンラインアカウントなら十分です。マネージャーのマスターパスワードや暗号鍵には24文字以上、または6単語のパスフレーズを推奨します。
›長くしてもメーターの評価が上がらないのは?
メーターは選択された文字種から計算します。小文字だけのままだと文字種が26しかないので、伸び率が低くなります。
›「ビット」とは何ですか?
現設定で生成しうるパスワード総数の log₂ です。80ビット ≈ 1.2 × 10²⁴ 通りで、現代の総当たり攻撃の到達範囲を遥かに超えます。
›記号は含めるべき?
可能なら含めるべきです。記号1文字は数字+英字に近いエントロピー寄与があります。古いサイトで使えない場合は、長さを増やして補ってください。
›「紛らわしい文字を除外」は使うべき?
手動入力する可能性がある時のみ。マネージャー保存だけなら無効でOKです(読みやすさのコストが無駄になります)。
›同じパスワードが2回生成される可能性は?
理論上は0ではありませんが、50ビットでも1回ずつの組合せで1/2⁵⁰ ≈ 10¹⁵分の1の確率です。実質的に発生しません。
関連ツール
最終更新: