パスワード生成器
カスタム長と文字タイプで強力なパスワードを生成
紛らわしい文字を除外、例:0O、1lI
パスワード生成器とは?
パスワード生成器は、ランダムな強力なパスワードを自動的に作成するツールです。暗号学的に安全な乱数生成器を使用し、ユーザーが定義した長さと文字タイプ(大文字、小文字、数字、特殊記号)に基づいて高セキュリティのパスワードを生成します。強力なパスワードはアカウントセキュリティの最初の防衛線であり、ブルートフォース攻撃や辞書攻撃を効果的に防ぐことができます。
使い方
生成ステップ
- パスワードの長さを指定します(12文字以上を推奨)
- 文字種を選択:大文字、小文字、数字、記号
- 紛らわしい文字(0O、1lIなど)を除外するオプションもあります
- 「生成」ボタンをクリックし、満足するまで繰り返します
パスワード強度
- 弱い:8文字未満、または文字種が1種類のみ
- 普通:8〜11文字で英字と数字の混合
- 良好:12〜15文字で複数の文字種
- 強力:16文字以上で全ての文字種を使用
セキュリティのヒント
- パスワードはすべてローカルで生成され、サーバーに送信されることはありません
- 異なるウェブサイトには異なるパスワードを使用してください
- パスワードマネージャーを使ってパスワードを安全に保管
- 重要なアカウントのパスワードは定期的に変更しましょう
- パスワードに個人情報を使用しないようにしましょう
利用シーン
仕組み
パスワード生成器は crypto.getRandomValues(new Uint32Array(n)) からランダム性を引き出します。これはOSのエントロピープール(Linuxのgetrandom、WindowsのBCryptGenRandom、macOS/iOSのSecRandomCopyBytes)から暗号学的に安全な擬似乱数値を型付き配列に充填するW3C Web Cryptography APIで定義されたCSPRNGです。これに対し、Math.random()はV8でxorshift128+アルゴリズムを使用しており、出力の小さなサンプルから予測可能であると明確に文書化されており、暗号学的用途には不適切です。 文字プールはユーザーが選択した文字クラスから構成されます:大文字(26文字 A-Z)、小文字(26文字 a-z)、数字(10文字 0-9)、記号(!@#$%^&*()_+-=[]{}|;:,.<>? から32文字)、最大プールサイズは94文字です。カスタム文字セットや除外リスト(i, I, l, L, 1, o, O, 0 を除去する類似文字フィルターを含む)によりプールはさらに絞り込まれます。各パスワード文字は array[i] % pool.length によって選択され、CSPRNG出力が32ビット上で一様分布であり、モジュロバイアス(|pool|が2^32を均等に割り切らない)が256文字未満のプールでは無視できるため(バイアスは0.00000006%未満)、均一な分布が得られます。 パスワード強度は探索空間のサイズで測定されます:プールサイズC、パスワード長Lの場合、可能なパスワードの数はC^L、エントロピーは log2(C^L) = L × log2(C) ビットです。4つの文字クラスを全て有効にした16文字のパスワード(C=94)では、94^16 ≈ 4.4 × 10^31通り、約105ビットのエントロピーとなります。仮に1秒あたり10^12回の推測速度(大規模GPUクラスターがNTLMなどの高速ハッシュに対して出すスループットに相当)で総当たり攻撃を行っても、約4.4 × 10^19秒かかり、宇宙の年齢よりもはるかに長い時間となります。このモデルは攻撃者が全組み合わせをテストする必要があること(辞書やパターンベースのショートカットがないこと)、パスワードがbcryptやArgon2idなどの遅いソルト付きアルゴリズムでハッシュ化されていることを前提としています。 NIST SP 800-63Bは、ユーザーが選択するパスワードには最低8文字、機械生成の資格情報には最低6文字のランダム生成を推奨し、文字セットの文書化を要求しています。生成器の4〜64文字の長さ範囲は、PINコードから高エントロピーの機械資格情報までをカバーします。先頭文字オプションは最初の文字を[A-Za-z]から選択することで、パスワードの先頭が文字であることを要求するレガシーシステムの要件を満たします。
- CSPRNGソース:crypto.getRandomValues()はOSカーネルのCSPRNG(getrandom/BCryptGenRandom/SecRandomCopyBytes)からエントロピーを取得します。Math.random()(xorshift128+)とは異なり、予測不可能でページからのシード指定ができず、資格情報の生成に適しています。
- 文字空間の数学:4つのクラスを全て有効にするとプールサイズは94、文字あたりのエントロピーはlog2(94) ≈ 6.55ビット。16文字のパスワードは約105ビットのエントロピーを持ち、長さを32文字に倍増すると約210ビットに増加します。
- モジュロ選択:array[i] % pool.lengthは32ビットCSPRNG出力を文字インデックスにマッピングします。256文字未満のプールではバイアスが6 × 10^-8 %未満であり、暗号学的に無視できる範囲です。
- ブルートフォース耐性モデル:1秒あたり10^12回の推測(GPUクラスタースケール)で、16文字・94記号のパスワードの総当たりには約10^19秒かかりますが、これは高速ハッシュを前提とした場合です。コストファクター12のbcryptでは攻撃速度は約10^4回/秒に低下し、8文字のパスワードでも耐性を持ちます。
- 類似文字の除外:フィルターは{i, I, l, L, 1, o, O, 0}(8文字)を除去し、プールを94から86に減少させます。文字あたり約0.6ビットのエントロピー低下は、手動転記時の利便性向上に対して許容範囲です。
- NIST SP 800-63B準拠:標準では機械生成シークレットに最低6文字のランダム選択を要求し、文字空間の文書化を推奨しています。生成器のプリセット(Simple 8文字、Strong 20文字)は異なる保証レベルに対応します。
- localStorage履歴:直近10件の生成パスワードはwindow.localStorageに保存されます。オリジンとブラウザプロファイルにスコープされ、履歴クリアで削除されますが、ディスクレベルのフォレンジックツールではブラウザプロファイルディレクトリ内のプレーンテキストSQLiteデータベースとして保存されるため復元可能です。
使用例
強力なパスワード (複数の文字種を混在)
Kx9#mP2$vL7@nQ4! - 16 文字、4 種すべて (大文字/小文字/数字/記号)
強度: 極めて高い。毎秒 100 億回試行しても、総当たりには数世紀かかるPIN コード (4 桁)
8527 - 4 桁の数字
強度: 10,000 通り。レート制限とロックアウトのある端末ロック解除のみに適し、オンラインアカウントには不向きパスワード強度の比較
8 文字、小文字のみ : 26^8 ≈ 2.08e11 通り
8 文字、文字種混在 : 94^8 ≈ 6.10e15 通り
16 文字、文字種混在 : 94^16 ≈ 3.7e31 通り
備考: 1 文字増えるごとに鍵空間は 8 倍ではなく 94 倍になる — 文字種の数より長さの方が重要よくある質問
パスワードはブラウザ内で生成されますか?
はい。このページはWeb Crypto APIのcrypto.getRandomValuesを使用しており、暗号学的に強力なランダムバイトを提供します。パスワードがデバイスから出ることはなく、ログにも記録されず、決定論的なシードからも導出されません。確実を期したい場合は、ページを更新して新しいエントロピーシーケンスを開始してください。
どの長さと文字の組み合わせを選ぶべきですか?
オンラインアカウントには、大文字、小文字、数字、記号を含む16文字以上が現代の最低基準です。マスターパスワード(パスワードマネージャー、暗号化キー)には、20文字以上または6〜7単語のパスフレーズがより安全です。一定の閾値を超えると、文字種の複雑さよりも長さの方が重要になります。
一部のサイトで生成したパスワードが拒否されるのはなぜですか?
一部のサイトは依然として意外な制限を強制しています。最大長(多くは12〜20)、記号不可、特定の記号のみ許可、空白不可などです。ページには文字種の切り替えが用意されているのでルールに合わせられます。問題のあるサイトを報告してください。これらのポリシーは積極的にセキュリティを弱めています。
意図的に避けられている文字はありますか?
「紛らわしい文字を避ける」オプションを有効にすると、生成器は0/O、1/l/I など、紙や付箋から書き写す際に読み間違えやすいペアを除外します。デジタルでのみ使用する場合は、最大エントロピーを得るためにこれを無効にしてください。
長いランダムパスワードはパスフレーズより安全ですか?
同等のエントロピーであれば、どちらも総当たり攻撃に対して同等に強いです。16文字の混合パスワードは、2000語のリストからランダムに選んだ6単語のパスフレーズとほぼ同等です。パスフレーズは入力と記憶が容易で、純粋なランダム文字列はマネージャーから貼り付けやすいです。用途に応じて選んでください。
パスワードマネージャーのマスターキーとして信頼できますか?
はい。ランダム性のソースは、ブラウザがHTTPSキーに使用するのと同じWeb Crypto APIです。とはいえ、極めて高リスクの秘密情報(マスターキー、リカバリーコード)については、信頼チェーンからブラウザを完全に排除するため、サイコロを振る方法(diceware)やオフラインツールを好む人も多いです。
生成したパスワードをここに保存すべきですか?
いいえ。このページはパスワードを保存しません。すぐにパスワードマネージャー(1Password、Bitwarden、KeePass、ブラウザ内蔵マネージャー)にコピーしてください。ページを閉じたり更新したりすると永久に失われます。