パスワード生成
文字数や文字種を選んで「生成」を押すだけ。生成されたパスワードはブラウザ内でのみ処理され、サーバーには送信されません。
使い方
①文字数を入力欄で設定します(8〜128字、デフォルトは16字)。②使いたい文字種のトグルを選びます。大文字・小文字・数字・記号を自由にON/OFFできます。③「生成」ボタンを押すと、その場でパスワードが表示されます。「再生成」を押すたびに別のパスワードが即座に作れます。
用途ごとの使いどころを紹介します。銀行・証券口座などの金融サービスは8〜12字の制限があることが多いため、文字数をそれに合わせてください。SNS・ゲームアカウントの初期設定では、記号が使えないサービスがある場合は記号OFFで生成できます。Wi-Fiルーターのパスワードは長めかつ記号ありが推奨されるため、20〜32字程度を目安にしてください。開発者向けには、テスト環境・ステージング環境の初期パスワードとして128字まで生成できます。また、家族のアカウント設定を代わりに行う際の「使い捨てパスワード生成」にも活用できます。
Web Crypto API と Math.random の違い
ブラウザでパスワードを生成するツールの安全性を左右するのが、乱数の生成方法です。JavaScriptで一般的に使われる Math.random() は疑似乱数生成器(PRNG)であり、内部の状態を推測されると生成シーケンスを再現される可能性があります。ECMAScript の仕様上も暗号目的への使用は推奨されていません。
本ツールはすべての乱数生成に crypto.getRandomValues() を使用しています。これはW3C Web Cryptography API(https://www.w3.org/TR/WebCryptoAPI/)で定義された関数で、OSのエントロピーソース(Linuxなら /dev/urandom 等)でシードされた暗号論的擬似乱数生成器(CSPRNG)を呼び出します。生成される値は実用上予測不可能であり、パスワード生成などセキュリティ目的に適しています。
さらに、文字の選出では「モジュロバイアス」を排除するrejecton sampling(上限を超えた乱数を棄却して再取得する方式)を実装し、各文字が均等な確率で選ばれるよう配慮しています。
文字種バランスとエントロピーの関係
パスワードの強度は「何文字か」だけでなく「何種類の文字を使うか」でも大きく変わります。同じ16文字でも文字プールのサイズによって攻撃耐性が変わります。数字のみ(10文字)16桁:10の16乗 ≈ 約53 bits。英小文字のみ(26文字)16文字:26の16乗 ≈ 約75 bits。英大小文字+数字(62文字)16文字:62の16乗 ≈ 約95 bits。英大小文字+数字+記号(95文字)16文字:95の16乗 ≈ 約105 bits。
NIST SP 800-63B Rev.4では、MFA使用時は8文字以上、単体認証時は15文字以上を推奨しています。本ツールのデフォルト設定(全種ON・16文字)は約105 bitsのエントロピーを持ち、現行の推奨水準を十分に上回ります。記号を外した場合(62文字ベース)は約95 bitsになります。記号を使用できないサービスでも文字数を増やすことで強度を補えます。ただし、各サービスの文字数上限・使用可能文字種の制約に合わせることを優先してください。
アルゴリズムの解説
①有効な文字種(ONになっているもの)の文字セットを結合して「文字プール」を作成します。②各有効文字種から1文字ずつランダムに選出します(各文字種が必ず1文字以上含まれることを保証するステップ)。単純にランダム選出するだけでは、たとえば「記号が1文字も入らない」確率がゼロになりません。③残りの文字(指定文字数 − 文字種数)を文字プール全体からランダムに選出します。④②と③で集めた文字列を、Fisher-Yates(Knuth/Durstenfeld)シャッフルでランダムに並び替えます。これにより「先頭に必ず大文字が来る」といった偏りが解消されます。⑤並び替えた文字を結合して完成です。
ブラウザを閉じるとパスワードは消えます。生成したパスワードを保存するには、1Password・Bitwarden・Google パスワードマネージャーなどのパスワードマネージャーの使用をお勧めします。メモ帳やスプレッドシートへの平文保存は避けてください。
よくある質問
- 生成されたパスワードはサーバーに送信されますか?
- いいえ、一切送信されません。本ツールはすべての処理をブラウザ内のJavaScriptで完結しており、パスワードを含むいかなるデータも外部に送信しません。確認したい場合は、ブラウザの開発者ツール(F12)のネットワークタブを開いた状態でパスワードを生成してみてください。通信が発生していないことを自分の目で確かめられます。
- Math.random との違いは?本当に安全ですか?
- 安全です。Math.random() は内部状態が予測可能な疑似乱数であり、パスワード生成への使用は推奨されません。本ツールはW3C Web Cryptography API準拠の crypto.getRandomValues() を使用しており、OSのエントロピーソースでシードされた暗号論的乱数生成器(CSPRNG)が動作します。これはパスワードマネージャーやセキュリティツールで採用されている方式と同等です。
- 記号が使えないサービスがあります。記号なしで生成できますか?
- はい、「記号」トグルをOFFにするだけで記号を除いたパスワードを生成できます。記号なしでも文字数を長くすることでエントロピーを補えます。たとえば記号なし・大小文字+数字の20文字(約119 bits)は、全種ありの16文字(約105 bits)より強度が高くなります。
- 生成したパスワードはどこに保存すればいいですか?
- 本ツールにはパスワードの保存機能がありません。1Password・Bitwarden・Google パスワードマネージャー(Chrome組み込み)・Apple キーチェーンなどのパスワードマネージャーへの保存をお勧めします。メモ帳・スプレッドシートへの平文保存、同じパスワードの使い回しは情報漏洩リスクがあるため避けてください。
- 「最後の1種類はOFFにできない」とはどういう意味ですか?
- 文字種を全てOFFにするとパスワードを生成できなくなるため、最低1種類は選択状態を維持する仕様です。たとえば「数字のみ」でPINコード風の文字列を作りたい場合は、大文字・小文字・記号をすべてOFFにして数字だけONにしてください。その状態で数字のトグルを押しても変わりません(最後の1つを守る制約)。