パスワードを自分で考えると、どうしても「覚えやすさ」が優先されて似た形になります。生年月日、キーボードの並び、サービス名の一部。攻撃者はまさにそこから試すので、自分で考えたパスワードは強度の割に破られやすいという問題があります。
このツールは、ブラウザに用意されている暗号学的に安全な乱数(crypto.getRandomValues)を使ってパスワードを生成します。JavaScript でよく使われる Math.random は乱数の質が保証されておらず、パスワード生成には使ってはいけないとされているものです。生成した文字列はページの中だけに存在し、通信は一切発生しません。
パスワード生成ツール
暗号学的に安全な乱数(crypto.getRandomValues)で生成します。生成したパスワードはブラウザの中だけに存在し、送信も保存もされません
- ENTROPY
- —
- CHAR SET
- —
- GPU CRACK
- —
GPU CRACK は、1秒間に1000億回試せる攻撃者がハッシュを総当たりした場合の平均所要時間です。オンラインのログイン画面から試す攻撃はもっと遅く、実際にはこれより安全です。
「複雑さ」より「長さ」が効く
パスワードの強さはエントロピー(bit)という値で測れます。総当たりで破るのに何通り試す必要があるか、を対数で表したものです。
| 作り方 | 文字数 | エントロピー | GPU総当たりの目安 |
|---|---|---|---|
| 英小文字のみ | 8文字 | 約37.6 bit | 約1秒 |
| 英大小+数字+記号 | 8文字 | 約50 bit | 約1.5時間 |
| 英小文字のみ | 16文字 | 約75.2 bit | 約6800年 |
| 英大小+数字+記号 | 16文字 | 約100 bit | 約2000億年 |
いずれも「1秒間に1000億回試せるGPU」で総当たりした場合の平均時間です。表を見ると分かるとおり、記号を足すより文字数を倍にするほうが効きます。8文字に記号を混ぜて覚えにくくするより、英小文字16文字のほうが桁違いに強い。この計算はエントロピーの定義そのものから出てくるので、例外はありません。
目安として、重要なアカウントには70 bit 以上を確保しておけば、当面の総当たりでは破られません。上のツールでは生成のたびにエントロピーを表示しています。
「発音しやすい形式」は何のためにあるのか
完全ランダムな文字列は最強ですが、Wi-Fiのパスワードのように人に口頭で伝える場面や、テレビのリモコンで入力する場面には向きません。
そこで用意したのが発音しやすい形式です。子音と母音を交互に並べるため「ホテヌキサ」のように読み上げられます。そのぶんエントロピーは下がりますが、これも表示しているので、必要なら長さを伸ばして補ってください。20文字あればランダム文字列12文字と同等の強さになります。
紛らわしい文字を除くべき場面
0(ゼロ)とO(オー)、l(小文字のエル)と1(イチ)とI(大文字のアイ)は、フォントによってほぼ見分けがつきません。
- 除いたほうがいい:紙に印刷して渡す、口頭で伝える、別の端末に手で入力する
- 除かなくていい:パスワード管理ソフトに保存して自動入力する
除外すると使える文字が5種類減るぶん、わずかに強度が落ちます。管理ソフトを使うなら除外しないほうが得です。
生成したあと、どこに保存するか
強いパスワードを作っても、保存方法が甘ければ意味がありません。現実的な選択肢は3つです。
パスワード管理ソフト(推奨)
1つのマスターパスワードだけを覚え、残りはすべてソフトに任せます。ブラウザ内蔵の機能(Chrome、Safari、Edge)でも十分実用になります。専用ソフトなら 1Password や Bitwarden が定番です。サービスごとに違うパスワードを使うという最重要の原則を、無理なく守れるのがこの方法だけです。
紙に書いて物理的に保管する
意外に思われますが、遠隔から盗めないという点で悪くない方法です。ただし付箋をモニタに貼るのは論外で、引き出しの奥や金庫など、他人の目に触れない場所に限ります。
ブラウザやスマホのメモアプリに平文で置く(非推奨)
端末が乗っ取られた時点で全滅します。とくにクラウド同期されるメモアプリは、そのクラウドアカウントが破られると全部持っていかれます。
使い回しが最大のリスク
実際の被害で圧倒的に多いのは、総当たりではなくパスワードリスト攻撃です。どこかのサービスから流出したメールアドレスとパスワードの組み合わせを、別のサービスでそのまま試す手口です。
この攻撃には、パスワードがどれだけ長くても意味がありません。他人が知っている時点で強度はゼロだからです。防ぐ方法はひとつで、サービスごとに違うパスワードを使うことです。だからこそ管理ソフトが必要になります。
あわせて、二段階認証を有効にできるサービスでは必ず有効にしてください。パスワードが漏れても、もう1つの要素で止められます。
単語をつなぐ「パスフレーズ」という選択肢
ランダムな文字列は強い代わりに、覚えられません。覚える必要があるパスワード(パスワードマネージャーのマスターパスワード、PCのログイン、スマホのバックアップ用)には、単語を組み合わせる方式が向いています。
| ランダム文字列 | パスフレーズ | |
|---|---|---|
| 例 | xK9#mQ2$vL7pR4wZ | correct-horse-battery-staple |
| 覚えやすさ | 不可能 | 可能 |
| 入力のしやすさ | 打ち間違えやすい | 打ちやすい |
| 強度 | 16文字で十分強い | 4語以上、かつ本当にランダムに選ぶことが条件 |
| 向いている用途 | マネージャーに保存する全サービス | マスターパスワード、端末のログイン |
パスフレーズの落とし穴。「自分で思いついた単語を並べる」と強度は出ません。人が思いつく組み合わせは偏るためです。強度が出るのは、単語をランダムに選んだ場合だけです。有名な歌詞、ことわざ、好きな作品の台詞は、辞書として攻撃側が持っています。単語を選ぶ作業自体を、サイコロや乱数に任せてください。
生成したパスワードが弾かれたときの対処
強いパスワードを作ったのに、サービス側で登録できないことがあります。原因は決まっています。
| エラーの内容 | 原因 | 対処 |
|---|---|---|
| 「使用できない文字が含まれています」 | 記号の一部を許可していない | 記号を含めない設定で生成し、代わりに長さを増やす |
| 「16文字以内で入力してください」 | 上限が設定されている | 上限いっぱいまで使う。短くなる分は文字種で補う |
| 「英字と数字を含めてください」 | 必須の文字種がある | 生成条件を調整して作り直す |
| 貼り付けができない | ペーストを禁止する実装 | 手入力するしかない。この場合は短めのパスフレーズが現実的 |
文字数の上限が厳しいサービスは、パスワードを平文で保存している可能性があります。正しくハッシュ化していれば、元の長さに関係なく一定の長さで保存されるため、上限を設ける理由がないからです。そうしたサービスでは、そこだけで使う専用のパスワードにし、他と絶対に共有しないでください。
定期変更は必要か
「パスワードは3か月ごとに変える」という運用が長く行われてきましたが、現在は推奨されていません。
| 従来の運用 | 何が起きたか | 現在の考え方 |
|---|---|---|
| 定期的に強制変更させる | Password1 → Password2 のような、規則的で弱い変更が横行した | 漏洩の兆候があるときに変える |
| 複雑さのルールを課す | 覚えられず、付箋に書く運用が生まれた | 長さを重視し、マネージャーで管理する |
| 使い回しの禁止だけを周知 | 守られなかった | マネージャーの導入で、使い回す理由をなくす |
変更すべきタイミングは次のとおりです。
- そのサービスから情報漏洩の発表があったとき
- 身に覚えのないログイン通知が届いたとき
- 共有していた相手との関係が終わったとき
- フィッシングサイトに入力してしまったとき
漏洩が判明した場合の具体的な手順は、パスワード管理の記事に「流出が判明したときの48時間」としてまとめています。
よくある質問
生成したパスワードが誰かに見られることはありませんか?
ありません。生成はすべてお使いのブラウザの中で行われ、サーバーへの通信は発生していません。ページを閉じた時点で消えます。心配な場合は、ページを表示したあと通信を切ってから生成しても同じように動きます。
同じパスワードが他の人に生成される可能性は?
16文字・全文字種なら約104ビット、組み合わせは2の104乗通りです。世界中の人が毎秒生成し続けても衝突は起きません。乱数には暗号用途向けの crypto.getRandomValues を使っており、規則性から次の値を予測することもできません。
記号が使えないサービスがあります
記号のチェックを外して、そのぶん長さを伸ばしてください。英大小+数字で20文字あれば約119ビットになり、記号入り16文字(約100ビット)より強くなります。
作ったパスワードの強度を確かめたい
パスワード強度チェッカーで、突破までにかかる時間の目安を確認できます。こちらも入力内容は送信されません。
何文字にするか迷ったときの目安は?
ネット銀行やメールなど失うと困るものは20文字以上、一般的なWebサービスは16文字、捨ててもいい会員登録は12文字。この3段階で考えると決めやすくなります。
あわせて読みたい
あわせて使える無料ツール
- UUID・ランダム文字列生成ツール — UUID v4とランダム文字列の生成
- ハッシュ値生成ツール — MD5やSHA-256のハッシュ値を生成