パスワード生成ツール
長さと文字種を指定して強力なランダムパスワードを生成 — ブラウザの暗号学的乱数を使用します。
1,320回閲覧
仕組み
パスワードの強度は足し算ではなく掛け算——正確には指数関数的に決まります。可能な組み合わせの数は文字種の数を長さの乗数として累乗した値(文字種数^長さ)に等しく、この指数こそが、長さを利用可能な中で最も強力な単一のレバーにしています。小文字だけを使う8文字のパスワードは26文字の文字セットから選ばれるため、26^8——およそ2080億通りの組み合わせになります。これは多く聞こえますが、最新のハードウェアは1秒間に数十億回の試行を行えることを踏まえると、決して安全とは言えません。大文字・数字・記号を加えて長さを12文字に伸ばすと、文字セットはおよそ95文字に増え、95^12——およそ540垓(5.4 × 10^23)通りという桁数になります。これはささやかな改善ではありません——追加する文字1つごとに合計が足し算ではなく掛け算で増えるため、桁違いに大きくなるのです。具体例を挙げると、小文字のみの8文字パスワードから、4種類すべての文字を含む12文字パスワードへ移行することは、安全性を単に2倍にするのではなく、総当たり攻撃にかかる時間を「現実的な期間で解読可能」から「将来のハードウェアをもってしても現実的などんな攻撃をもはるかに超える」水準へと引き上げます。
この生成ツールは、Math.random()ではなくcrypto.getRandomValues——ブラウザの暗号学的に安全な乱数生成器——を使ってすべての文字を選びます。この違いは重要です。Math.random()はアニメーションやゲーム向けに作られた高速で予測可能な疑似乱数生成器であり、その内部状態は観測された出力から再構築できる場合があるため、セキュリティに関わる用途には不向きです。crypto.getRandomValuesはオペレーティングシステムの暗号学的なエントロピー源から値を取得しており、これは以前の出力を見た攻撃者に対してさえ予測不能であるよう特別に設計されています。
知っておくべきこと
長さはほとんどの場合、複雑さに勝ります。小文字だけを使う16文字のパスワード(26^16)は、あらゆる文字種を混ぜた8文字のパスワード(95^8)よりも数学的にはるかに強力です。これは単に指数が基数を圧倒するからです。より長くシンプルなパスワードと、より短く複雑なパスワードのどちらかを選ぶ場面では、長い方を選んでください。
パスワードはお使いのデバイスから一切外に出ません——完全にブラウザ内で生成され、このツールによってどのサーバーにも送信されず、記録も保存もされません。ページを更新したり閉じたりすると完全に消滅します。だからこそ、画面上やテキストファイルに残しておくのではなく、パスワードマネージャーへ直接コピーしておくべきなのです。
同じパスワードを複数のアカウントで使い回すと、一件の情報漏えいが多数の被害へと広がってしまいます。あるサイトのデータベースが漏えいした場合——これは注意深く運営されているサービスでさえ起こり得ます——、漏えいしたパスワードリストが出回り始めた瞬間に、そのパスワードを共有している他のすべてのアカウントが危険にさらされます。サイトごとに生成した固有のパスワードをパスワードマネージャーに保管しておけば、一件の漏えいによる被害をその一つのアカウントだけに封じ込めることができます。
よくある質問
パスワードは何文字くらいが望ましいですか?
通常のアカウントなら12文字以上、メールや銀行など重要なアカウントなら16文字以上を目安にしてください。長さは複雑さに勝ります——16文字の小文字だけのパスワードは、記号を含む8文字のパスワードよりも強力です。
生成されたパスワードはサーバーに送信されますか?
いいえ。ブラウザのcrypto.getRandomValues APIによってお使いのデバイス上だけで生成され、外部には一切送られません。ページを再読み込みすると消えます。
同じパスワードを複数のサイトで使ってもよいですか?
絶対にやめてください。1つのサイトで情報漏えいが起きると、そのパスワードを共有するすべてのアカウントが危険にさらされます。サイトごとに固有のパスワードを生成し、パスワードマネージャーで管理してください。
文字を1つ追加する方が、記号を1種類追加するより効果的なのはなぜですか?
長さは指数であり、文字の種類はあくまで基数にすぎないからです。長さに文字を1つ加えると、合計の組み合わせ数は文字セット全体のサイズ分だけ掛け算で増えます。一方、記号の種類を1つ増やしても、基数はわずかに数単位増えるだけです。現実的などのパスワード長でも、長さを増やす方が圧倒的に有利です。
Math.random()ではもう十分ランダムではないのですか?
ゲームやアニメーションであれば十分です——しかしそれは暗号学的なものではなく高速な疑似乱数生成器であり、その出力は状況によっては予測されたり再構築されたりする可能性があります。パスワード生成にはブラウザの暗号学的に安全な情報源であるcrypto.getRandomValuesが必要であり、このツールはそれのみを使用しています。
関連ツール
問題を報告
パスワード生成ツール
コメント
まだコメントはありません — 最初のコメントを書いてみましょう!