本文へスキップ
kitto works
ツール一覧

パスワード生成|条件指定で安全なランダムパスワードを作成

長さ・文字種(大文字/小文字/数字/記号)を指定して安全なランダムパスワードを1〜20件まとめて生成します。エントロピー(bit)と強度も表示。生成はすべてcrypto.getRandomValues()を使ってブラウザの中だけで行われ、外部には送信されません。

使用する文字種

パスワードの生成はすべてお使いのブラウザの中で行われ、暗号学的に安全な乱数生成API(crypto.getRandomValues)を使用します。サーバーには何も送信されません。

生成結果

「生成する」を押すとパスワードがここに表示されます。

使い方

  1. 長さ(4〜64文字)と生成件数(1〜20件)、使用する文字種を選びます。
  2. 必要に応じて「紛らわしい文字を除外」を有効にします。
  3. 「生成する」を押すとパスワードの一覧とエントロピー・強度が表示され、個別または一括でコピーできます。

計算・変換の根拠

乱数源について

すべての乱数はWeb Crypto APIのcrypto.getRandomValues()(暗号学的に安全な乱数生成器、CSPRNG)から取得しています。Math.random()は予測可能な場合があり、パスワード生成という用途には適さないため使用していません。

文字集合から1文字を選ぶ際は、単純に乱数値を文字数で割った余りを使うと、文字数が256の約数でない場合にわずかな偏り(modulo bias)が生じます。本ツールは範囲外の乱数値を再取得して捨てる「rejection sampling」という手法でこの偏りを回避しています。

エントロピー(強度)の計算方法

エントロピーは 文字数 × log2(使用している文字種の合計数) で計算します。たとえば英小文字・英大文字・数字・記号すべて(94文字種)を使った16文字のパスワードなら、16 × log2(94) ≈ 約105bitになります。

強度は次の4段階で表示します。

  • 弱い: 40bit未満
  • 普通: 40bit以上60bit未満
  • 強い: 60bit以上80bit未満
  • 非常に強い: 80bit以上

この目安は一般的に紹介されている基準を参考にした概算であり、正式な業界標準ではありません。実際のパスワードの安全性は、使用先のサービスがどれだけの速度で総当たり攻撃を試みられるか等にも依存します。

紛らわしい文字の除外について

「紛らわしい文字を除外」を有効にすると、0(数字のゼロ)・O(大文字のオー)・o(小文字のオー)・1(数字のイチ)・l(小文字のエル)・I(大文字のアイ)の6文字を文字集合から取り除きます。手入力や読み上げの際に間違えやすい文字を避けたい場合に使用してください。

よくある質問

生成したパスワードや設定内容はサーバーに送信されますか?

送信されません。パスワードの生成はすべてお使いのブラウザの中で完結し、外部への通信は発生しません。

本当に安全な乱数で生成されていますか?

はい。`Math.random()`ではなく、暗号学的に安全な乱数生成器であるWeb Crypto APIの`crypto.getRandomValues()`のみを使用しています。文字選択時の偏り(modulo bias)を避けるための追加処理も行っています。

エントロピーとは何ですか?数値が大きいほど良いのですか?

エントロピーはパスワードの推測されにくさを表す指標(bit数)で、数値が大きいほど総当たり攻撃に強いことを意味します。長さを長くする、または使用する文字種を増やすことでエントロピーは大きくなります。

文字種を1つも選ばないとどうなりますか?

使用する文字がないため生成できません。少なくとも1つの文字種(英小文字・英大文字・数字・記号のいずれか)を選択してください。

生成したパスワードはどこかに保存されますか?

保存されません。ページを再読み込みしたり閉じたりすると、生成結果は失われます。必要なパスワードはコピーしてすぐにパスワード管理ツール等に保存することをおすすめします。