パスワード生成 — 安全なランダムパスワードを作成
ブラウザーの暗号用乱数で作るランダムパスワード生成ツール
ブラウザー内で処理・アップロード不要
パスワード生成ツールとは
長さと使いたい文字の種類を選ぶと、推測されにくいランダムなパスワードを作ります。一度に最大100個まで生成でき、どれもワンクリックでコピーできます。計算はすべてブラウザー内で行い、何もアップロードしません。
使い方
- スライダー(最大128)または数値欄で長さを4〜1024の範囲で設定します。下の16、32、64、128、256、512、1024のボタンで、その長さにすぐ切り替えられます。
- 小文字、大文字、数字、記号から使いたい文字の種類にチェックを入れます。
- パスワードを手で書き写す必要があるなら、紛らわしい文字の除外をオンにします。
- オプションを変えるたびに結果が更新されます。同じオプションで別のセットを作るには「再生成」を押します。
- パスワードの横のコピーを押し、パスワードマネージャーや登録フォームに貼り付けます。
仕組み
- 乱数源:
crypto.getRandomValuesだけを使い、Math.randomは使いません。 - 剰余による偏りなし:
random % poolSizeで文字を選ぶと、一部の文字がわずかに出やすくなります。このツールでは、偏りが生じる端の部分(2^32を文字数で割った余り)に入った32ビットの値を捨てて引き直します。これがリジェクションサンプリングで、すべての文字が等しい確率になります。 - 選んだ種類は必ず含む:選んだ種類からまず1文字ずつ取り、残りを全体の文字集合から取ってから、全体をFisher-Yatesアルゴリズムでシャッフルします。
- エントロピー:長さ × log2(文字数) で表示します。各種類を必ず含めるため、実際の値はごくわずかに低くなる近似値です。
- 強度の表示:40ビット未満は「弱い」、60ビット未満は「普通」、80ビット未満は「良い」、80ビット以上は「非常に強い」です。
- 文字の集合:小文字26、大文字26、数字10、記号25(
!@#$%^&*()-_=+[]{};:,.?/~)です。
例
| 設定 | 文字数 | エントロピー | 強度 |
|---|---|---|---|
| 数字8文字 | 10 | 約26.6ビット | 弱い |
| 英数字12文字 | 62 | 約71.4ビット | 良い |
| 全種類16文字 | 87 | 約103.1ビット | 非常に強い |
| 全種類24文字 | 87 | 約154.6ビット | 非常に強い |
1つのパスワードの長さよりも、サイトごとに別のパスワードを使うことのほうが大切です。生成したパスワードはパスワードマネージャーで管理しましょう。
よくある質問
生成したパスワードは送信・保存されますか?
いいえ。ブラウザーのタブ内で作成され、外に出ることはありません。ページを閉じると消えるので、すぐにパスワードマネージャーに保存してください。
Math.randomではだめなのですか?
Math.randomは予測不可能性を目的に作られていません。このツールはcrypto.getRandomValuesを呼び出し、OSの暗号論的に安全な乱数源を使います。
エントロピーのビット数は何を意味しますか?
攻撃者が等しい確率の候補をいくつ推測しなければならないかを2のべき乗で表したものです。1ビット増えるごとに探索範囲は2倍になります。このツールでは80ビット以上を「非常に強い」と表示します。
紛らわしい文字はいつ除くべきですか?
パスワードを手で入力したり、読み上げたりする場合です。I、l、1、そして数字の0と英字のO・oを除きます。そのぶん文字の種類が少し減り、エントロピーもわずかに下がります。