Kit — パスワード生成
パスワード生成
長さと文字種を選ぶだけ。乱数はブラウザの暗号用API(crypto.getRandomValues)から取り、偏りが出ないように処理しています。強度はエントロピー(bits)と、前提を明記した解読時間の目安で表示します。生成したものは送信も保存もしません。
同じ強さを狙うなら、文字種を増やすより長くするほうが効きます。
引用符・バックスラッシュ・空白は、シェルやCSVで壊れやすいため記号に含めていません。
紙に書き写す・口頭で伝える場面向け。候補が減るぶん、同じ長さなら強度は下がります。
「大文字と数字を含めること」といった要件があるサイト向け。条件を満たさない組み合わせが除かれるため、実際の強度は上の計算値をわずかに下回ります(短いほど差が大きくなります)。
生成中…
計算式: 20 × log₂(89) ≈ 129.5 bits
前提: 漏洩したハッシュを手元で毎秒1兆回試せる攻撃者。ハッシュ方式で桁が変わります(bcryptやArgon2ならずっと長く、専用ハードウェアを並べればずっと短く)。あくまで目安の計算値です。
生成したものは保存も送信もしていません。ページを閉じると消えるので、使うならコピーしてから閉じてください。
この処理はブラウザ内で完結します。ファイルはどこにも送信されません。
関連するツール
このツールの作り
Math.random() は使っていません。crypto.getRandomValues から取った値を「文字種の数で割った余り」で丸めると特定の文字がわずかに出やすくなるため、範囲外の値は捨てて引き直す方式(棄却サンプリング)にしています。
生成後に先頭の数文字を上書きする実装は、その位置に必ず数字が来るなど分布を歪めます。ここでは必要な文字種から先に1文字ずつ引き、残りを埋めてから全体をシャッフルします。
生成はページの中だけで完結します。サーバーに送っていないので、こちらには何も残りません。ブラウザにも保存しないため、タブを閉じた時点で消えます。
強度の読み方
よくある質問
生成したパスワードは保存されますか?
保存していません。サーバーにも送信していませんし、ブラウザにも残していません。ページを開き直すと新しいものが生成され、前のものは取り出せません。使う場合は必ずコピーしてから閉じてください。
パスワードマネージャは必要ですか?
このツールは作るところまでで、保管や同期はしません。サイトごとに違うパスワードを使うには置き場所が必要になるので、パスワードマネージャやOS標準のキーチェーンと組み合わせて使うのが現実的です。
同じパスワードを使い回すとなぜ危険なのですか?
どこか1つのサービスから流出すると、そのメールアドレスとパスワードの組み合わせが他のサイトでも自動で試されます(リスト型攻撃)。この試行は総当たりではないため、パスワードがどれだけ長くても効きません。使い回しをやめることが唯一の対策です。
パスフレーズとパスワード、どちらを選べばいい?
入力する場面で決めるのがおすすめです。パスフレーズは同じ bits でも打ちやすく読み上げやすい代わりに長くなるため、文字数制限のあるサイトでは入らないことがあります。手で打つ機会がなく、マネージャに入れるだけならランダムな文字列で構いません。乱数の作り方はどちらも同じです。