安全なパスワード生成(暗号学的乱数・偏りなし)

暗号学的に安全な乱数(crypto.getRandomValues)で、偏りのないランダムなパスワードをブラウザ内で作成します。長さ・文字の種類・紛らわしい文字の除外を選べ、エントロピーも表示します。

  • ブラウザ内で処理(アップロードなし)

8〜128 文字

1〜100 個

使う文字の種類

選んだ種類の文字は、どのパスワードにも必ず 1 文字以上入ります(偏りが出ない方法で選んでいます)。

除外する文字:0 O o 1 I l | ` ' "

生成したパスワード

使える文字
94 種類
エントロピー(1 つあたり)
130.9 ビット
強さの目安
非常に強い

エントロピーは、攻撃者がこの設定(長さと文字の種類)を知っていても、総当たりで当てるのに必要な推測回数を 2 の累乗で表したものです。目安:50 ビット未満は弱い、75 ビット以上は強い、100 ビット以上は非常に強い。

生成しています…

パスワードはこの端末のブラウザ内で作られ、保存・送信・記録はされません。ページを閉じると消えるので、使うものはパスワードマネージャーなどに保存してください。

使い方

  1. パスワードの長さ(8〜128 文字)と生成する数(1〜100 個)を入力します。
  2. 使う文字の種類(英大文字・英小文字・数字・記号)を選び、必要なら紛らわしい文字を除外します。
  3. 表示されたパスワードを「コピー」で使います。「再生成」を押すと新しいパスワードを作り直せます。

よくある質問

どのような乱数を使っていますか?

ブラウザの crypto.getRandomValues(暗号学的に安全な乱数生成器)を使い、剰余による偏りが出ないよう棄却サンプリングで 1 文字ずつ選んでいます。Math.random は使いません。

選んだ種類の文字が必ず入るのに、偏りがないのはなぜですか?

すべての文字を使える文字全体から均等に選び、選んだ種類のどれかが入っていない候補は丸ごと捨てて選び直しています。そのため条件を満たすすべてのパスワードが同じ確率で出ます。「各種類から 1 文字ずつ入れてから並べ替える」方法で生じる偏りはありません。

紛らわしい文字とはどれですか?

数字の 0 と英字の O・o、数字の 1 と英字の I・l、縦線 |、見分けにくい引用符(` ' ")の 10 文字です。除外すると使える文字が減るため、同じ長さならエントロピーは少し下がります。

エントロピーはどう計算していますか?

設定を満たすパスワードの総数を包除原理で正確に数え、その 2 を底とする対数を表示しています。攻撃者が長さや文字の種類を知っていると仮定した値です。

生成したパスワードは保存・送信されますか?

いいえ。パスワードはこのページの中だけで作られ、サーバーへの送信、ブラウザへの保存、URL やログへの記録は一切行いません。

注意事項・制限

  • 入力内容はこのページ内でのみ処理され、YUCTS のサーバーには送信されません。
  • 安全性は使い方にも左右されます。同じパスワードを複数のサービスで使い回さず、可能なら 2 段階認証も設定してください。
  • 生成したパスワードはページを閉じると消えます。使うものは自分でパスワードマネージャーなどに保存してください。
  • サービスによっては使える記号や長さに制限があります。その場合は記号を外すか長さを調整してください。
  • エントロピーと強さの目安は、この方法でランダムに生成したパスワードについての理論値です。