パスワード強さラボ
「記号を入れれば強い」は本当? 打ち込んで、壊して、確かめよう。
カギになる考え方はエントロピー――「どれくらい当てずっぽうで当てにくいか」を数字にしたものです。
① 打ち込んでみる
入力はこのページの中だけで計算され、どこにも送信されません。それでも、本物のパスワードではなく「似た作り方の例」で試すのがおすすめです。
赤 すぐ当てられる部分 黄 ちょっと時間がかかる 緑 ランダムで強い部分
⏱️ 破られるまでの時間(平均)
※目安です。「流出したデータ」は、サービス側から盗まれたパスワードの“ハッシュ値”を攻撃者が手元で総当たりする状況です。
推測回数 G ≈ 2bits、平均解読時間 ≈ G / 2 / 速度。速度は 2020年代の家庭用ハイエンドGPU 1枚で MD5 なら毎秒1,000億回規模、bcrypt(cost 10前後)なら毎秒1万回規模という概算。ソルトなし高速ハッシュならレインボーテーブルで実質「一瞬」です。
② 仕組みを学ぶ:「ビット」はコイン投げの回数
1ビット=コインの表か裏か、当てずっぽうで当たる確率が 1/2。
10ビット=コインを10回投げて、全部当てるくらい(約1/1000)。
1ビット増えるごとに、攻撃者の手間は2倍になります。
🔐 金庫のダイヤルを作ろう
使う文字の種類と、長さを選んでください。
GPU1枚で総当たりすると(速いハッシュの場合):一瞬
やってみて気づくこと:長さのほうが、ずっと効く。
文字の種類を増やしても1文字あたりの強さは最大でも約6.6ビット。でも長さを1文字足せば、その分まるごと上乗せ。
「記号を1個入れる」より「単語を1個足す」ほうが、人間には覚えやすくて、しかも強いのです。
③ 見かけと本当の強さレース
同じくらい「強そう」でも、攻撃者の目には全然ちがって見えます。バーは本当の強さ。
攻撃者が知っている「人間のクセ」
- 先頭だけ大文字(
Sakura) - 最後に数字や
!(…2024!) a→@、o→0、s→$の置き換え- 名前・誕生日・ペット・好きなチーム・地名
- キーボードの並び(
qwerty、1qaz2wsx) - サービス名を足すだけ(
pass_amazon)
これらは全部、攻撃ツールにルールとして組み込み済み。人間が「ひねった」つもりの部分は、ほとんど強さになりません。
じゃあ、どうするのが正解?
- 覚えなくていいもの(ほとんどのサイト)は、パスワードマネージャーにランダムで作らせる。16文字以上。
- 覚えなきゃいけないもの(マネージャーの親パスワード、PCのログインなど)は、ランダムに選んだ単語を5〜7個つなげる「パスフレーズ」。
- どちらもサイトごとに別々。強くても使い回したら意味がありません(理由)。
④ 本当にランダムなパスワードを作ってみる
ブラウザの暗号用乱数(crypto.getRandomValues)で作ります。送信はしません。
パスフレーズの強さは「単語リストの大きさ」と「単語の数」だけで決まります。このページの単語リストは — 語なので1語あたり約 — ビット。攻撃者がリストを丸ごと知っていても、この強さは変わりません(それがランダムの良いところ)。自分で「好きな単語」を選ぶと、とたんに弱くなります。
右上の切り替えを「ガチ」にすると、数式や業界の最新の考え方が読めます。
⑤ ガチ勢のための補足
エントロピーの定義と「推測エントロピー」
H = L × log₂(N) (L: 長さ, N: 文字の種類数。各文字が一様ランダムに選ばれた場合)
この式は生成方法がランダムなときだけ成り立ちます。人間が作ったパスワードの強さは、シャノン・エントロピーではなく「攻撃者が最適な順序で試したときの推測回数(guessing entropy / guesswork)」で評価すべきです。このラボの「本当の強さ」は、辞書・西暦・連番・キーボード配列・繰り返し・リート置換などのパターンで最小コストの分割を動的計画法で探す、zxcvbn 的アプローチの大幅な簡略版です(辞書は数百語しか持っていないので、実際の攻撃者より甘く評価します)。
NIST SP 800-63B の考え方(「複雑さルール」の終わり)
- 文字種の組み合わせ強制(大文字・記号必須など)は求めない。ユーザーは予測可能な置換に走るだけ。
- 定期的な強制変更は求めない(漏洩の兆候があった場合のみ変更)。
- 長いパスワードを許容し、スペースや Unicode も受け付ける。
- 既知の漏洩パスワード・辞書語・連続文字・サービス名を含むものは拒否する(漏洩チェックの仕組みが使われる)。
- 最新の第4版では、パスワード単体で認証する場合の最小長がより長く(15文字)求められています。
日本でも総務省・NISC の一般向け資料で「定期変更は不要、使い回しをしないことが重要」という方針が示されています。
攻撃の種類と、パスワードの強さが「効かない」攻撃
| 攻撃 | 概要 | 強さは効く? |
|---|---|---|
| オンライン総当たり | ログイン画面に直接試す。ロックアウト・レート制限・CAPTCHAで激減 | ◎ 弱すぎなければ十分 |
| パスワードスプレー | よくあるパスワード1個を大量のアカウントに試す(ロックアウト回避) | ○ 上位リストに載っていなければOK |
| オフライン解析 | 流出したハッシュを手元のGPUで総当たり | ◎ ここで差がつく |
| リスト型攻撃(クレデンシャルスタッフィング) | 他所で漏れたID/パスワードの組をそのまま試す | ✕ 使い回していたらどんなに強くても無意味 |
| フィッシング / AiTM | 偽サイトに本人が入力してしまう | ✕ 無意味 → パスキーで対策 |
| インフォスティーラー | マルウェアがブラウザ保存情報やCookieを盗む | ✕ 無意味 → 端末を守る |
サービスを作る側へ:保存は「遅い」ハッシュで
パスワードは Argon2id / scrypt / bcrypt など、意図的に計算コストを高くした関数で、ユーザーごとのソルト付きで保存する(OWASP Password Storage Cheat Sheet 参照)。MD5 や SHA-1/SHA-256 の単純ハッシュは、上の表の「速いハッシュ」側に分類され、流出時に短時間で大部分が平文化されます。さらに、漏洩パスワードの拒否、レート制限、MFA/パスキーの提供をセットで。