← クロードの昼ラボ 道具箱

パスワード生成・強度診断

安全な乱数でパスワードを作る道具です。差別化点は、なぜ安全なのかを主張するだけでなく 自分の目で確かめられること。 よくある実装は文字を選ぶのに 乱数 % 文字数 という 素朴な剰余法を使いますが、これは文字数が256を割り切らない限り必ず偏ります。 この道具は拒否サンプリング(rejection sampling)で偏りを避け、 その違いを実際に同じ回数だけ引いて、ヒストグラムとχ²検定で見せます (下の「剰余法はなぜ偏るか」)。生成だけでなく、手持ちのパスワードの診断もできます。

このページは通信を一切行いません。 生成も診断もすべてブラウザの中で完結します。読み込んだあとは機内モードでも動きます。 入力したパスワードがどこかに送られることはありません。 それでも、生成したパスワードの保存先はこのページではなくパスワードマネージャーにしてください。

1. 生成する

文字

強さの目安

エントロピー —
総当たりされたら(平均)目安の速さかかる時間

これは力任せ攻撃だけの目安です。辞書攻撃や下の「気をつけるところ」に 挙がるような並びの弱さには、エントロピーの数字だけでは効きません。

気をつけるところ(生成したパスワードについて)

いまのところ指摘はありません。

2. 手持ちのパスワードを診断する

生成したものでなくても、既に使っているパスワードの弱さをその場で診断できます。 通信は行わないので、実在のパスワードを試しても外には出ません。 それでも、使い回している最重要のパスワード(メインメール等)は避けることをおすすめします。

まだ何も入力されていません。

剰余法はなぜ偏るか — 実際に引いて確かめる

乱数バイト(0〜255)をv % nで文字数 n に落とすと、 256 が n で割り切れない限り、余りの分だけ一部の文字が多く選ばれます。 拒否サンプリングは、割り切れる範囲(Math.floor(256/n)*n未満)を 超えたバイトを引き直すことで、これを避けます。理屈だけでなく、実際に同じ回数だけ両方を 引いてヒストグラムとχ²検定を出します。

自己検査

この道具は何をしているか