パスワード生成ツール
すべてブラウザ内で動きます。ファイルやデータが外部に送られることはありません。
エントロピー: 130 ビット
このツールについて
このツールは、選択した文字種からランダムなパスワードを作成します。小文字、大文字、数字、記号から選べます。長さを指定し、含める文字種を選び、必要に応じて0、O、1、l、Iのような画面や印刷物で見間違えやすい文字を除外できます。1件だけでも、100件まとめてでも生成できます。
パスワードの乱数性はどれくらい信頼できる?
1文字ごとの選択には、暗号鍵の生成にもブラウザが使っているWeb Crypto APIのcrypto.getRandomValues()を使っており、予測可能性を排除する設計になっていないMath.random()は使っていません。文字数が2の累乗でないプールからランダムに1文字を選ぶのは見た目より厄介な処理で、ランダムなバイト値をそのままプールサイズで割った余りを使う方法だと、一部の文字が選ばれやすくなる偏りが生じます。このツールは棄却サンプリングでこれを回避しています。ランダムなバイトを取り出し、プールサイズのきれいな倍数からはみ出す値は捨てる、という処理を繰り返すことで、プール内のどの文字も等しい確率で選ばれるようにしています。文字が並ぶ順序は、選択したすべての文字種から最低1文字ずつを確保したうえで、同じ乱数源を使ったFisher-Yatesシャッフルで決まります。そのため4種類すべてを有効にしたのに記号が1つも入らない、といった事故は起きません。表示されるエントロピー値はパスワードが持つランダム性のビット数で、長さ×log2(プールサイズ)で計算され、生成前に設定を比較する目安になります。
パスワードはどこかに送信される?
されません。パスワードの生成はすべてブラウザ内でWeb Crypto APIを使って行われ、結果や設定内容、パスワードそのものがサーバーに送信されたり、記録・保存されたりすることはありません。だからこそテスト用データだけでなく実際のアカウントパスワードにも使えます。サーバー側で生成するタイプのツールでは「記録されていないはず」という信頼が必要になりますが、このツールはそもそもサーバーと通信しないことでその心配自体をなくしています。
どんな場面で使える?
主な用途は、新規アカウントの登録、データベースやサービスの認証情報、APIキーや共有シークレット、あるいはテストアカウント用の使い捨てパスワードの一括生成などです。すべての文字種をオフにしてしまった場合や、選んだ文字種の数より短い長さを指定した場合は、意図せず弱いパスワードが生成されるのではなく、その旨がツール側から表示されます。
パスワードに関する現行の指針はNIST SP 800-63Bを、ブラウザがどのように乱数を生成するかはMDNのCrypto.getRandomValues()リファレンスを参照してください。