パスワード生成

ブラウザ内で作成され、どこにも送信されないランダムなパスワード。強度は目分量ではなく、ビット単位のエントロピーで示します。

すべてブラウザ内で動作します。アップロード、記録、保存は一切行いません。

使用する文字
エントロピー(ビット)
—
選択対象の文字数
—
可能なパスワードの数
—
使用した文字セット
—

ランダムなパスワードを、あなた自身のブラウザが作成し、どこにも送信しません。強度はビット単位のエントロピーで示します。これは意見ではなく測定値で、その数値の意味もこのページで説明しています。

仕組み

各文字は、選択した文字セットから、ブラウザの暗号論的乱数生成器を使って独立かつ一様に選ばれます。パスワードのどの部分も、時刻や端末、その他攻撃者が推測できるものからは導かれません。

エントロピーは「長さ × log2(文字セットの大きさ)」です。これは推定ではなく定義で、選んだ設定から生まれうるパスワードの数の、2を底とする対数です。1ビット増えるごとにその数は2倍になります。

これはランダムに選ばれたパスワードにしか当てはまりません。このページが作るのはそういうパスワードですが、人が自分で選ぶ場合はそうなりません。自分で考えたパスワードは、長さから想像されるよりはるかにエントロピーが低くなります。人がパスワードを考える方法は予測できるからです。

よくある質問

パスワードはサーバーに送信されますか?

いいえ。しかもそれは約束ではなく設計によるものです。このサイトのサーバー側のコードは、意図的にパスワードを生成できないようになっています。このツールについてサーバーが計算するのは、文字セット、その大きさ、エントロピーといった算術だけで、パスワードは一切扱いません。パスワードが生まれる唯一の場所は、それを使うブラウザです。

なぜ強度メーターがないのですか?

作り話になってしまうからです。パスワードがどれだけ持ちこたえるかは、攻撃者のハードウェアや予算、サイトが選んだハッシュアルゴリズム、データベースからどれだけ漏洩したかによって決まります。このページはそのどれも知らないので、「解読に300万年かかります」と表示しても根拠のない数字になります。ビット単位のエントロピーなら、正直に言えることです。

では、何ビット必要ですか?

覚えられる以上のビット数、というのが本当の答えです。パスワードマネージャーを使い、このページが提示する長さを使ってください。目安として、1ビットごとに可能性の数が2倍になるので、60ビットは40ビットより100万倍破られにくくなります。実際にどれだけあれば十分かは、そのパスワードが何を守るのか、サイトがそれをどう保存しているかによりますが、どちらもここからは見えません。

紛らわしい文字を除外すると、なぜ数値が下がるのですか?

それが本当のトレードオフであって、無料の改善ではないからです。Il1O0oB8S5Z2 を除くと、画面上でパスワードが読みやすくなる一方、選ぶ元になる文字セットが小さくなるので、エントロピーは下がります。チェックボックスを切り替えると数値が変わるのは、まさにそれを見せるためです。

乱数の質は十分ですか?

ブラウザの暗号論的乱数生成器である crypto.getRandomValues を使っており、Math.random は使いません。Math.random はこの用途のために作られておらず、その出力から先を予測できてしまいます。ブラウザにこの生成器がない場合、ツールはその旨を表示し、より弱いものに頼らずに生成を拒否します。

知っておきたいこと

  • ここでは何も保存、記録、送信されません。共有リンクはありません。URLに含まれたパスワードは、閲覧履歴にも、そのリンクを貼り付けた先にも残ってしまうからです。
  • 数値の横に文字セットを表示しているので、文字数を信じるだけでなく、どの文字が使えたのかを正確に確認できます。
  • 記号は、多くのフォームで削除されてしまうスペースを除いた、ASCIIの句読記号です。それ以外に黙って除外する文字はありません。文字が欠けた文字セットでは、横に表示される数値が示すよりもパスワードが弱くなってしまうからです。

出典

開発者向けのすべてのツール