ブログ
日本語

パスワード生成 — 安全なランダムパスワードを作成

ブラウザーの暗号用乱数で作るランダムパスワード生成ツール

ブラウザー内で処理・アップロード不要

オプション
エントロピー: 103ビット強度: 非常に強い

    パスワード生成ツールとは

    長さと使いたい文字の種類を選ぶと、推測されにくいランダムなパスワードを作ります。一度に最大100個まで生成でき、どれもワンクリックでコピーできます。計算はすべてブラウザー内で行い、何もアップロードしません。

    使い方

    1. スライダー(最大128)または数値欄で長さを4〜1024の範囲で設定します。下の16、32、64、128、256、512、1024のボタンで、その長さにすぐ切り替えられます。
    2. 小文字、大文字、数字、記号から使いたい文字の種類にチェックを入れます。
    3. パスワードを手で書き写す必要があるなら、紛らわしい文字の除外をオンにします。
    4. オプションを変えるたびに結果が更新されます。同じオプションで別のセットを作るには「再生成」を押します。
    5. パスワードの横のコピーを押し、パスワードマネージャーや登録フォームに貼り付けます。

    仕組み

    • 乱数源: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を除きます。そのぶん文字の種類が少し減り、エントロピーもわずかに下がります。

    ほしいツールはありますか?