パスワード生成

ブラウザの暗号用乱数生成器から作られるパスワードです。長さと文字種はご自身で選べます。生成はお使いの機械の上で行われ、どこにも送られません。パスワードにとってこれは気配りではなく本質そのものです。手元に届くまでにネットワークを渡ってきたパスワードは、誰かが見ることのできたパスワードだからです。

20

l、I、1、O、0 を除きます。画面から読み取って入力する場合に便利ですが、数ビット分だけ弱くなります。

  • 処理される場所 ファイルがないので、何もアップロードされません。計算はこのページの中で行われます。
  • 順番待ちもアカウントもなし お使いの機械の速さで答え、あなたが誰かを尋ねることはありません。
  • 何度でも 回数は数えず、上限もありません。もう一度答えることに費用はかからないからです。

仕組み

  1. 長さを選んでください。二十が扱いやすい既定値で、長くしても費用はかかりません。
  2. 必要な文字種にチェックを入れてください。記号を今なお受け付けない仕組みがあるため、切り替えられるようにしてあります。
  3. 「生成する」を押してください。パスワードと、その強さがすぐに表示されます。
  4. そのままパスワード管理ソフトに貼り付けてください。覚えようとしないこと。それは管理ソフトの仕事です。

ランダム性の出どころ

文字は `crypto.getRandomValues`、すなわちブラウザの暗号用乱数生成器から引かれます。これはOSのエントロピープールから供給されます。もう一方の `Math.random` はどのブラウザにもありますが、ここでは失格です。アルゴリズムは公開され、内部状態は小さく、わずかな出力からその状態を復元することは解決済みの問題で、動くコードも公開されています。これを使った生成器は、パスワードがどれほど長く見えても、実際の鍵空間が内部状態の大きさしかないパスワードを作ります。

出力を見ても両者は区別できません。だからこそどちらを使っているかを述べる意味があり、このプロジェクトには、そのファイルに `Math.random` が現れた時点で失敗するテストが置いてあります。

ほとんどの生成器が抱える偏り

ランダムなバイトをランダムな文字に変える処理は、ふつう `byte % 文字数` と書かれます。これは256が文字集合の大きさで割り切れないとき、必ずわずかに誤ります。二十六文字なら、0から255のバイトは `a` から `v` を十回ずつ、`w` から `z` を九回しか覆いません。最初の二十二文字が約11%多く現れることになります。

小さな欠陥ですが実在し、この種の生成器でもっとも多い不具合です。対処は、その短い余りに落ちた値を捨てて引き直すことで、費用はループひとつ、平均して一文字あたり二回未満の抽選です。ここではそうしています。

エントロピーの数値が意味するもの

エントロピーはビットで表され、パスワードの強さを述べる誠実な方法です。一ビットごとに必要な試行回数が倍になります。四種すべてを使った二十文字はおよそ130ビット、つまりおよそ2^130通りで、物理的な意味を持たない数です。それこそが要点です。

取捨の重みも見えるようになります。二十文字から記号を外すと約11ビット、紛らわしい文字を外すと約3ビット失われます。四文字足すと約26ビット増えます。長さが常に複雑さに勝るのはこのためです。その四文字はキーボード上のすべての記号より価値があり、しかも手で打つことのないパスワードなら受け入れやすいものです。

選んだ文字種は必ず現れる

数字にチェックを入れれば、パスワードには数字が入ります。これは自動ではありません。混ざった文字集合から二十文字をランダムに引けば、いずれかの文字種がひとつも出ない確率は現実にあり、その結果はポリシーに弾かれ、作り直すことになるパスワードです。

それを保証する文字はまず先に置かれ、そのあと全体がかき混ぜられます。そうしなければどのパスワードも小文字、大文字、数字、記号の順で始まることになり、最初の数文字が攻撃者の推測から外れてしまいます。この保証の費用は一ビットの端数で、表示される数値の丸め幅よりも小さいものです。

生成器は半分にすぎない

使い回した強いパスワードは弱いパスワードです。そのパスワードを持つどこか一箇所が破られた瞬間に、強さは意味を失うからです。生成する価値は、アカウントごとに別のものを持てる点にあり、それは何かが代わりに覚えていてくれる場合にだけ成り立ちます。

ですからパスワード管理ソフトを使ってください。どれでも構いませんし、ブラウザに組み込まれているものでも構いません。ここの生成器はフォームを前にした瞬間のためのものです。それを役立てるのは、結果があとで見つけられる場所に収まることです。

パスワード生成:よくある質問

パスワードはサーバーに送られますか。

いいえ。そしてこれは、このサイトのどの道具よりもその点が重い道具です。生成するのはあなたのブラウザ自身で、コピーするまでページの中にしか存在しません。アップロードも記録もされず、アカウントも不要です。サーバーで動くパスワード生成器とは、その出力を誰かが見た生成器のことです。

パスワードはどのくらいの長さにすべきですか。

十六が妥当な下限で、二十ならなお良いでしょう。三十あたりを超えると現実的な攻撃者に対して得るものはなくなるため、長さを縛るのは仕組みが受け付ける上限だけです。手で打つのではなく貼り付けるべきものなので、長さの代償はありません。

紛らわしい文字は外すべきですか。

画面から読み取ってどこかに打ち込む場合だけです。テレビ、印刷した紙、クリップボードのない機器などが当てはまります。文字集合が小さくなり数ビット失われますが、切り替えた瞬間にエントロピーの数値がそれを示します。

同じパスワードが二度出ることはありますか。

意味のある形では起こりません。既定の設定ではおよそ2^130通りあるため、生きている人全員が毎秒ひとつ生成し続けても、宇宙の年齢のあいだに重なりは起きません。

無料ですか。

はい。アカウントは不要で、生成する回数にも制限はありません。あなたの機械の上で動くので、もう一度ボタンを押していただいても私たちの費用はかかりません。