小手箱 手元で終わる小道具

パスワード生成

生成した文字列はどこにも送信されません。 ここが他のパスワード生成サイトとの一番の違いです。理由は下に書きました。

なぜ「送らない」ことが重要なのか

パスワード生成サイトの多くは、サーバー側で文字列を作って返してきます。この構造には 避けられない問題があります。生成した側は、あなたのパスワードを知っています。

「保存していません」と書かれていても、それを確かめる方法はありません。しかも生成の記録が 残っていれば、あなたの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文字伸ばす方が、たいてい強くなります。 そして人間が覚える必要はありません — パスワード管理ソフトに預けてください。

紛らわしい文字の除外

O0l1|は、 印刷して手で打ち込む場面で読み違えます。Wi-Fiのパスワードを紙で配るときなどは、 除外しておくと事故が減ります。強度はわずかに下がりますが、1文字伸ばせば取り返せます。

安全性について

このページは生成した文字列をサーバーに送りません。履歴も保存しません。 ページを閉じれば何も残りません。ページを開いたあとは通信を切っても動きます。