条件を確認してランダムなパスワードを生成する
文字数、文字種類、紛らわしい文字、追加除外文字を設定し、ブラウザ内で複数の候補を生成できます。
指定した文字数でパスワードを作成する結論:単一の正解文字数ではなく、Policy内で十分に長いランダム値を選ぶ
NIST SP 800-63B-4はVerifier側に単一要素で15文字以上、MFAの一部で8文字以上、最大長は少なくとも64文字を許可する方針を示します。
8・12・16という長さだけでは、生成規則、使い回し、漏洩、保存方法を評価できません。同じ長さでも人が作った規則的な値と均等なランダム値は別物です。
利用者が入力すべき文字数は、対象ServiceのPolicyと認証方式を確認して決めます。
8文字・12文字・16文字をどう読み分けるか
8文字はMFAの一部としてNISTが示す下限と同じですが、単一要素向け要件ではありません。12文字も15文字基準には届かず、16文字は超えますが、いずれも使い回しや漏洩を防ぐものではありません。
DevelopToolsは4~128文字を生成できます。短い値も作れるのはService互換性のためで、安全性を保証する推奨値ではありません。
| 確認項目 | 確認方法 | 判断 |
|---|---|---|
| 8文字 | MFAか単一要素か | 用途を誤解しない |
| 12文字 | 既存Policyとの互換 | 乱数性も確認 |
| 16文字 | 最大長・禁止記号 | 受入可能なら候補 |
| 64文字超 | Serviceの最大長 | 切り捨て有無も確認 |
安全なパスワード生成ツールで確認する手順
- 利用先の最小長と最大長を確認します。
- 同じ文字集合で8・12・16・20文字を切り替え、理論Entropyの変化を確認します。
- 利用先が受け入れる範囲で長い候補を生成します。
- 登録後に切り捨てられていないか、再Loginで確認します。
初期値20文字は汎用的な出発点ですが、すべてのServiceへ適合する保証値ではありません。
文字数だけで判断できない項目
- 予測可能な単語・日付・Keyboard配列を含むか
- 同じ値を別Serviceで使っているか
- 漏洩済みBlocklistへ該当するか
- Server側が全長を検証せず切り捨てていないか
- MFAやPasskeyなど別Factorを併用しているか
長さ・文字種・運用を分けて判断する
| 観点 | 確認すること | Generatorでできること |
|---|---|---|
| 長さ | 利用先の最小長と最大長 | 4~128文字から指定 |
| 文字種 | 許可・禁止・必須の文字 | 4文字種の選択と追加除外 |
| ランダム性 | 予測可能な規則を使っていないか | Web Crypto APIで生成 |
| 使い回し | 同じ秘密を別Serviceで利用していないか | 複数候補を生成。ただし同じ候補を再利用しない |
| 保管 | 安全に再利用できる保存先か | ツール外でPassword Manager等へ保存 |
| 漏洩 | 既知の漏洩値やBlocklistに該当しないか | 現行ツールでは照合しない |
NIST SP 800-63B-4はVerifier向けに、単一要素のPasswordは15文字以上、MFAの一部なら8文字以上、最大長は少なくとも64文字を許可する方針を示しています。これはすべてのWebサービスで利用者が一律15文字を入力すればよいという意味ではありません。実際の登録画面のPolicyを優先して確認します。
同ガイドラインは、文字種の混在を一律に強制するComposition Ruleや、漏洩の兆候がない状態での任意の定期変更をVerifierへ要求していません。一方で、よく使われる・予測可能・漏洩済みの値をBlocklistで拒否し、Password Managerと貼り付けを許可する考え方を示しています。
DevelopToolsのパスワード生成機能と判定範囲
| 項目 | 現行ツールの仕様 |
|---|---|
| 文字数 | 4~128文字。初期値は20文字 |
| 生成数 | 1~20件。初期値は5件 |
| 文字集合 | 英小文字、英大文字、数字、記号を個別に選択 |
| 追加条件 | 紛らわしい文字の除外、任意文字の追加除外、選択した各文字種を1文字以上含める |
| 乱数 | crypto.getRandomValues()と棄却法を利用 |
| 並べ替え | 暗号学的乱数を使うFisher–Yates Shuffle |
| 結果 | 個別Copy、全件Copy、文字集合と長さに基づく理論Entropyの目安 |
| 未対応 | Passphrase生成、漏洩済みPassword照合、任意の独自文字集合、Clipboard自動消去、生成履歴保存 |
「使用する文字」は生成候補へ加えるAllowed Character Setです。「各文字種を1文字以上含める」を有効にしたときだけ、選択した各Classが最低1文字入るRequired Character Classとして扱います。
強度表示は、選択した文字集合から各文字が独立かつ均等に選ばれるという前提の理論値です。漏洩済みPassword、利用先の禁止文字、最大長、認証方式、入力後の保存状態までは判定しません。
ブラウザ内生成とコピー後の取り扱いを確認する
現行ツールの生成処理はブラウザ内で完結し、生成したPasswordをDevelopToolsのServerや外部APIへ送信しません。生成値をURL、LocalStorage、生成履歴、Analyticsへ保存する処理もありません。
- 生成前に利用先の文字数・使用可能記号・必須条件を確認する
- 生成した値はServiceごとに1つずつ割り当て、別Serviceへ使い回さない
- Copy後はOSやBrowserのClipboard履歴へ残る可能性を考慮する
- 共有PCでは画面、Clipboard履歴、入力支援、拡張機能の取り扱いも確認する
- 保存が必要なら信頼できるPassword Manager等へ移し、平文MemoやScreenshotを避ける
ブラウザ内処理は転送経路を減らしますが、端末のMalware、悪意ある拡張機能、画面の覗き見、Clipboard監視まで防ぐ保証ではありません。利用端末と保存先を含めて安全性を判断します。
一次資料で現在の推奨を確認する
- NIST SP 800-63B-4:Password Authenticators
- NIST SP 800-63B-4:Strength of Passwords
- MDN:Crypto.getRandomValues()
- MDN:Math.random()
NISTの数値は認証Verifier向け要件として読み、個別Serviceの登録PolicyやDevelopToolsの安全性認証と混同しません。Web APIの用途とBrowser対応はMDNおよびWeb Cryptography仕様を優先します。
具体例:最大32文字のServiceで20文字を生成する
登録画面が8~32文字を受け入れる場合、20文字を指定し、許可された文字種だけで候補を作ります。
最大長を超えず、最小長より十分長い値を作れます。ただしService側の漏洩Blocklistや禁止記号で拒否される可能性は別に確認します。
- 8~32文字を確認
- 20文字指定
- 許可文字を選択
- 生成・登録
- 再Login確認
文字数を増やしても同じPasswordの使い回しは解決しません。
よくある質問
- パスワードは何文字あれば安全ですか?
- 文字数だけで断定できません。NIST SP 800-63B-4はVerifier向けに単一要素Passwordを15文字以上、MFAの一部なら8文字以上としています。利用先の上限・認証方式を確認し、十分に長いランダム値をServiceごとに生成してください。
- 大文字・数字・記号を全部入れれば安全ですか?
- 文字集合は候補数を増やしますが、それだけで安全とは判断できません。十分な長さ、暗号学的に安全な乱数、使い回さない運用、漏洩時の変更、安全な保存を合わせて考えます。
- Math.random()で生成したPasswordを使えますか?
- Security用途には適しません。Math.random()は暗号学的に安全な乱数源ではないため、Browserではcrypto.getRandomValues()などのCSPRNGを利用します。
- 同じ強いPasswordを複数Serviceで使ってよいですか?
- 推奨しません。1件の漏洩が別ServiceへのCredential Stuffingに使われるため、Serviceごとに異なるPasswordを生成して管理します。