使い方
- スライダーで希望の長さを設定してください(16以上を推奨)。
- 希望する文字種にチェックを入れてください。文字種が多ければ多いほど、パスワードの強度が高くなります。
- パスワードを手入力する場合は、必要に応じて判別が難しい文字を除外してください。
- 「パスワードを生成」をクリックしてください(オプションを変更するたびに、新しいパスワードが表示されます)。
- 「コピー」をクリックして、パスワード管理ツールに保存してください。
例
入力
Length: 16, all character types enabled出力
K7#mQv9!xR2pWz@e約105ビットのエントロピー――現代のGPUクラスターで総当たり攻撃を行っても、宇宙の年齢よりも長い時間がかかってしまうだろう。
このツールとは?
パスワード生成ツールは、人間が思いつくものよりもはるかに強力なランダムなパスワードを生成します。人は覚えやすいパターン(名前、日付、キーボード上のキーの並びなど)を選びがちですが、攻撃者はそうしたパターンをすべて把握しています。 全文字セットから生成された16文字のランダムなパスワードは、約100ビットのエントロピーを持ち、これは現実的な総当たり攻撃の限界をはるかに超えています。
このジェネレータはWeb Crypto API(オペレーティングシステムが暗号化キーの生成に使用するのと同じ安全な乱数生成機能)を採用しており、選択した各文字セットから少なくとも1文字が含まれることを保証します。また、エントロピーに基づく強度の推定値を表示するため、各オプションがどのような影響を与えるかを確認することができます。
NIST のパスワードガイドライン SP 800-63B もこの考え方を裏付けています。同ガイドラインは、長いパスワード(少なくとも64文字まで)への対応、既知の漏洩リストとの照合を推奨し、強制的な文字種構成ルールや定期的なパスワード変更の廃止を求めています。実際の強度を決めるのは、記号の強制ではなく長さとランダム性だからです。
実用的なヒント
- 長さが巧妙さを上回る:小文字と数字のみで構成された20文字のパスワードは、あらゆる記号を使った10文字のパスワードよりも強固です。スライダーを動かしながらエントロピーメーターを確認すれば、その違いを自分の目で確かめることができます。
- サイトによっては、文字数に制限を設けたり、特定の記号の使用を禁止したりしています(銀行サイトはその点で特に有名です)。パスワードを手動で編集するのではなく、チェックボックスを使って各サイトのルールに合わせましょう。手動で編集すると、編集した箇所ほど予測されやすくなってしまいます。
- サイトごとに新しいパスワードを設定してください。一度セキュリティ侵害を受けたサイトでパスワードが再利用されてしまえば、そのパスワードの強度など関係ありません。
- 暗記する必要があるパスワード(ノートPCのログインやパスワードマネージャーのマスターパスワードなど)の場合、記号を含まない20文字以上のものの方が、入力しやすく、強度も同等です。
「強い」とはどの程度のことか? 比較
具体的な数値を例に挙げると、8文字の混合パスワード(約52ビット)は、サイトのハッシュが漏洩した場合、最新のGPUリグなら数時間で解読されてしまいます。12文字(約78ビット)なら数年持ちこたえます。16文字(約105ビット)なら、それを攻撃するハードウェアの寿命よりも長く持ちこたえることになります。 オンラインでの総当たり攻撃は、これらのオフラインの数値よりもはるかに遅い(レート制限により、攻撃者の試行回数は数千回に制限され、数兆回にはならない)が、どの種類の侵害が発生するかは制御できないため、オフラインのケースを想定してパスワードを生成すべきである。
これが、パスワードマネージャーが状況を一変させた理由でもあります。覚えておく必要がなくなれば、どのパスワードも16文字以上のランダムな文字列にでき、1つのアカウントが侵害されても、他のアカウントへの影響は気にする必要がなくなるからです。
→ 乱数生成器 · MD5ジェネレーター
パスワードの長さと解読にかかる推定時間
以下は、流出したパスワードハッシュに対して最新のGPUを用いたオフライン攻撃を想定した目安です。実際の時間はハッシュアルゴリズムや攻撃者の計算資源によって変わります。
| 文字数 | 小文字のみ | 全文字種を使用 |
|---|---|---|
| 8文字 | 数秒 | 数時間〜数日 |
| 12文字 | 数週間〜数か月 | 数百年 |
| 16文字 | 数千年 | 事実上解読不可能 |
| 20文字以上 | 事実上解読不可能 | 事実上解読不可能 |
一般的な利用例
- 特定のパスワードポリシー(最小文字数、記号の必須使用など)が適用されているサイトで新しいアカウントを作成する場合、要件に合うようにパスワードを手動で編集するのではなく、ここで適切な設定を行ってください。
- 複数のアカウントやテストユーザーを一度に設定する際、一意のパスワードを一括で生成する。
- 情報漏洩の通知を受けた後、再利用されていたパスワードを変更し、影響を受けたアカウントごとに固有のパスワードを設定する。
- 印刷されたカードから入力する人がいても、曖昧な文字を含まない、かつ強固なWi-Fiルーターや共有デバイスのパスワードを作成する。
なぜこれを使うのか?
新しく開設したネットバンキングの口座で「12文字以上、記号必須」というパスワード規則を突きつけられた——ここで生成すれば、その条件をワンクリックでクリアできます。
会社の情報システム部門から、会議室のWi-Fiパスワードは推測されにくく、かつ印刷したカードから手入力できるものにするよう指示された——「曖昧な文字を除外」を有効にすれば、強度を保ったまま読み間違いを防げます。
利用しているECサイトの情報漏えいを知り、同じパスワードをLINEや他のアカウントにも使い回していたことに気づいた——影響を受けたアカウントごとに、ここで新しく一意なパスワードを生成し直せます。
検証環境用に5つのテストアカウントを一気に作る必要があり、1つずつ自分で考える時間はない——数秒でそれぞれ異なる強固なパスワードを用意できます。
生成処理はWeb Crypto APIを使いブラウザ内で完結し、サーバーには一切送信されないため、社内規定で厳格なパスワードポリシーが求められる業務アカウントにもそのまま使えます。
パスワードマネージャーのマスターパスワードを一度だけ紙に書き留めて金庫に保管する必要がある場合——記号を含まず長めの文字列を選べば、書き写す際も入力する際もミスが起きにくくなります。
よくある質問
ウェブサイトでパスワードを生成しても安全ですか?
この点に関しては、その通りです。パスワードの生成は、Web Crypto API を使用してブラウザ内だけで行われます。パスワードがネットワークリクエストで送信されることは一切ありません。ページを読み込んだ後、インターネット接続を切断して、オフラインで生成することも可能です。
パスワードはどのくらいの長さにするべきですか?
重要なアカウントでは、16文字でさまざまな文字種を組み合わせたパスワードをデフォルトとして設定するのが望ましいです。12文字は許容できる最低基準です。複雑さよりも長さが重要です。つまり、短いパスワードに多くの記号を含めるよりも、長いパスワードの方が安全です。サイト側の文字数制限でやむを得ず短いパスワードを使う場合は、すべての文字種を有効にして補ってください。ただし選べるのであれば常に長さを優先すべきであり、これは NIST SP 800-63B の立場でもあります。
「強度の推定値」とはどういう意味ですか?
これはエントロピー、つまり攻撃者が推測しなければならないビット数です。ビットが1つ増えるごとに、推測に必要な労力は2倍になります。オンラインアカウントの場合、45ビット未満は脆弱であり、70ビット以上は強固であり、100ビット以上であれば、盗まれたパスワードハッシュに対するオフライン攻撃にも耐えることができます。
生成されたパスワードを複数のサイトで使い回してもいいのでしょうか?
いいえ。あるサイトが侵害されると、攻撃者は流出したパスワードを他のあらゆるサイトで試そうとします。サイトごとに固有のパスワードを設定し、パスワードマネージャーに保存しておきましょう。パスワードマネージャーは、まさにそのためにあるのです。
なぜ曖昧な文字を除外するのですか?
0/O や 1/l/I といった文字は、多くのフォントでは見分けがつきません。パスワードを声に出して読んだり、紙に書かれたものを打ち込んだりする場合は、こうした文字を除外することで、イライラするようなミスを防ぐことができます。これによりエントロピーがわずかに低下しますが、強度メーターにはその変化が正確に反映されます。
生成されたパスワードはどのくらいの長さにすべきですか?
サイトが許可するなら、フルセットの文字から成る16文字のランダムなパスワードは、現実的などんなブルートフォース攻撃も上回ります。12文字は通常のアカウントにとって妥当な下限です。サイトの制限で短いパスワードを使わざるを得ない場合は、すべての文字種を有効にすることで補いましょう — ただし可能な限り長さを優先してください。これはNIST SP 800-63Bの立場でもあります。
乱数の元になっているのは何ですか?本当に安全なのでしょうか?
このツールはブラウザのWeb Crypto APIが提供するcrypto.getRandomValues()を利用しており、これはOSレベルの暗号学的に安全な擬似乱数生成器(CSPRNG)を基にしています。TLS通信の鍵生成にも使われる同じ仕組みで、一部の値が分かれば次の値を予測できてしまうMath.random()とは根本的に異なります。
生成したパスワードはどこかに保存・記録されますか?
いいえ。サーバーとの通信も履歴の保存も一切行われません。ページを再読み込みまたは閉じた時点で、生成されたパスワードはあなたがコピーして貼り付けた先以外どこにも残りません。
日本企業の厳しいパスワードポリシー(大文字・小文字・数字・記号必須、定期変更など)にも対応できますか?
はい。文字種のチェックボックスと長さのスライダーを組み合わせれば、大文字・小文字・数字・記号をすべて含む長いパスワードを一括生成できます。ただし定期的な強制変更は近年のNISTガイドラインでは推奨されておらず、長さと乱数性の方が実効的な強度を左右します。
LINEやスマホアプリのパスワードにもこのツールは使えますか?
使えます。生成はブラウザ内で完結しどこにも送信されないため、スマートフォンでこのページを開き、生成したパスワードをそのままコピーしてアプリの設定画面に貼り付けるだけで安全に利用できます。
パスワードの「強さ」とアプリの入力欄の文字数制限が合わない場合はどうすればいいですか?
サイトやアプリ側の上限文字数にスライダーを合わせたうえで、使える文字種をすべて有効にしてください。短くせざるを得ない場合でも、文字種を増やすことである程度エントロピーを補うことができます。