生成した文字列はどこにも送信されません。 ここが他のパスワード生成サイトとの一番の違いです。理由は下に書きました。
パスワード生成サイトの多くは、サーバー側で文字列を作って返してきます。この構造には 避けられない問題があります。生成した側は、あなたのパスワードを知っています。
「保存していません」と書かれていても、それを確かめる方法はありません。しかも生成の記録が 残っていれば、あなたのIPアドレスや時刻と結びつけられます。パスワードという、 まさに秘密であるべきものを、見知らぬ相手に先に見せてから使うことになります。
このページはcrypto.getRandomValuesというブラウザ標準の暗号用乱数を使い、
あなたの端末の中だけで生成します。
ページを読み込んだあとに通信を切っても動きます。それが一番分かりやすい確認方法です。
素朴に実装すると、実は特定の文字が出やすくなります。乱数を文字数で割った余りを使う方法だと、 割り切れない分だけ先頭の文字に偏りが生じるためです(剰余バイアス)。
このページでは範囲外の乱数を捨てて引き直すことで、偏りを取り除いています。 実際に10万文字を生成して検証したところ、カイ二乗値は4.43でした(有意水準0.1%の臨界値は27.88)。 統計的に一様分布と区別がつかないということです。
| 用途 | 長さ | 強度 | 総当たりの目安 |
|---|---|---|---|
| 重要なアカウント(銀行・メール) | 20文字以上 | 128 bit | 事実上、破れません |
| 普段のサービス | 16文字 | 103 bit | 百億年以上 |
| 使い捨ての登録 | 12文字 | 77 bit | 数百万年 |
| よくある「8文字・英字のみ」 | 8文字 | 38 bit | 一瞬 |
「毎秒1兆回試せる攻撃者」を想定した目安です。流出したパスワードのハッシュを 手元で総当たりする場合を考えると、これでも甘めの見積もりです。
長さが効きます。記号を足すより1文字伸ばす方が、たいてい強くなります。 そして人間が覚える必要はありません — パスワード管理ソフトに預けてください。
Oと0、lと1と|は、
印刷して手で打ち込む場面で読み違えます。Wi-Fiのパスワードを紙で配るときなどは、
除外しておくと事故が減ります。強度はわずかに下がりますが、1文字伸ばせば取り返せます。
このページは生成した文字列をサーバーに送りません。履歴も保存しません。 ページを閉じれば何も残りません。ページを開いたあとは通信を切っても動きます。