パスワード生成ツールの使い方
- 利用先に合わせてパスワードの長さを指定します。
- 英大文字・英小文字・数字・記号から使う文字種を選びます。
- 必要なら紛らわしい文字を除外し、生成個数を指定します。
- 「パスワードを生成」を押し、必要な結果だけをコピーします。
暗号学的乱数と偏りへの対策
生成にはブラウザ標準のWeb Crypto API crypto.getRandomValues()だけを使います。文字を選ぶ際は単純な余り計算だけで決めず、rejection samplingで範囲外となる乱数を捨ててからindexへ変換します。
「選択した文字種を最低1文字ずつ含める」がONの場合も、特定位置へ文字を埋め込むのではなく、完成したパスワード全体が条件を満たすまで候補全体を再生成します。
長さと文字種の考え方
長さはパスワードを考えるうえで重要な要素です。一方、利用先サービスごとに最大長や使える記号が異なります。本ツールの文字種設定は、利用先が大文字・数字・記号などを要求する場合へ対応するためのものです。
NIST SP 800-63B-4の15文字要件は、単一要素認証でパスワードを受け付けるVerifier側に向けた要件です。本ツールのすべての用途に対する万能な固定値ではありません。また、同資料はVerifierへ一律の文字種混在ルールを課すことを求めていません。
よくある質問
どのようにランダム生成していますか?
W3C Web Cryptography APIのcrypto.getRandomValues()を乱数源としてブラウザ内で生成し、index選択時の偏りをrejection samplingで除いています。Web Cryptography Level 2の仕様もご確認いただけます。
Math.random()を使っていますか?
パスワード生成には使用していません。Web Cryptoが利用できないブラウザでは、安全性を下げた代替生成をせず処理を停止します。
生成したパスワードはサーバーへ送信されますか?
生成処理のためには送信しません。ページを開いたブラウザ内だけで生成します。
生成したパスワードは保存されますか?
Cookie、localStorage、sessionStorage、IndexedDBへ保存しません。URLやAnalyticsにも生成値を入れません。
何文字にすればよいですか?
まず利用先の要件に従ってください。長さは重要ですが、用途や認証方式によって条件が異なるため、一律の万能値はありません。
記号を入れた方がよいですか?
利用先が要求する場合や使用文字の範囲を広げたい場合に選択できます。ただし、長さやサービスごとに異なるパスワードを使うことも重要です。
NISTではパスワードをどのように考えていますか?
現行のNIST SP 800-63B-4は長さを重要視し、Verifierへ一律の文字種混在ルールを課すことを要求していません。詳しくはNISTのPassword Authenticatorsをご確認ください。
紛らわしい文字を除外できますか?
はい。「紛らわしい文字を除外」をONにすると、0、O、1、I、l、|を使用文字から除きます。
数字だけも生成できますか?
はい。数字だけをONにすれば数字のみのランダム文字列を生成できます。PINとして利用できるかは利用先の仕様をご確認ください。
複数まとめて生成できますか?
1回に最大20個まで生成し、個別または改行区切りでまとめてコピーできます。
同じパスワードを複数サイトで使ってよいですか?
使い回しは避け、利用先ごとに異なるパスワードを使うことをおすすめします。
このツールで作れば絶対安全ですか?
いいえ。フィッシング、マルウェア、キーロガー、クリップボードの読み取り、サービス側の漏えいなどは別のリスクです。
利用先でパスワードが拒否されました
サービスによって最大長や利用可能な記号が異なります。記号をOFFにする、記号セットを変更する、長さを調整する方法をお試しください。