⏱ 9分 ★★★★★ 頻出:高

パスワード管理

攻撃手法(ブルートフォース・辞書・リスト型)と対策・安全な保管方法を完全整理

パスワード管理=「強いパスワードを安全に運用する」

パスワードはシステムへの入口です。弱いパスワードは攻撃者への「開かれた扉」です。

「複雑にすればよい」だけでなく、保管方法・使い回し・運用ルールまで含めた管理が重要です。

パスワード攻撃の種類(総当たり・辞書・リスト型)と対策(長さ・MFA・アカウントロック)が頻出。

パスワード攻撃の種類

攻撃名方法有効な対策
ブルートフォース攻撃
(総当たり)
考えられるすべての組み合わせを試す。コンピュータで自動実行。 パスワードを長く複雑に・アカウントロック
辞書攻撃 よく使われる単語・パスワードのリストを試す(password, 123456など) 辞書にない独自のパスワード・MFA
リスト型攻撃
(パスワードスプレー)
他サービスから漏えいしたID・パスワードのリストで別サービスにログインを試みる パスワードの使い回し禁止・MFA
レインボーテーブル攻撃 ハッシュ値と元のパスワードの対応表(レインボーテーブル)で逆引きする ソルト(塩)付きハッシュ
パスワードスプレー 1つのよくあるパスワードで多数のアカウントを試す(ロック回避) MFA・異常なログイン試行の監視

強いパスワードの条件(NIST SP 800-63B準拠)

✅ 長さ優先(最低8文字以上、推奨15文字以上)
パスワードの強度は長さが最も重要。長いほど総当たり攻撃に強い。
✅ 使い回し禁止
1つのパスワードが漏えいすると、他のサービスも芋づる式に侵害される(リスト型攻撃)。 サービスごとに異なるパスワードを使う。
✅ 推測されにくい
誕生日・名前・会社名など推測されやすい情報を含めない。辞書に載っている単語も避ける。
✅ パスワードマネージャーの活用
サービスごとに異なる長いパスワードを、安全に管理するためパスワードマネージャーを使う。
旧NIST基準「90日ごとに変更」は現在は非推奨。漏えい疑いがない限り頻繁な変更は不要(複雑さが下がる副作用)。

パスワードの安全な保管(システム側)

❌ パスワードをそのまま(平文で)保存
DBが盗まれたらパスワードが即座にわかる。絶対に行ってはいけない。
⚠️ ハッシュ化のみ(ソルトなし)
レインボーテーブル攻撃に弱い。よくあるパスワードは事前計算されている。
✅ ソルト付きハッシュ(bcrypt・Argon2など)
ランダムな文字列(ソルト)をパスワードに付加してからハッシュ化。
同じパスワードでも毎回異なるハッシュ値になり、レインボーテーブル攻撃を無効化。
ソルトの効果:
パスワード「password」+ ソルト「xK3p9m」→ ハッシュ化 → 毎回異なるハッシュ値
レインボーテーブルで事前計算しても意味がなくなる

アカウントロックと不正ログイン対策

「ブルートフォース攻撃への対策=アカウントロック」はほぼ確実に正解になる選択肢です。

よくある勘違い

「複雑な文字種(記号・大文字)を入れれば安全」は一部正しいが、長さの方が重要。"P@ssw0rd"より"correct horse battery staple"の方が強い。
「90日ごとにパスワードを変える」は現在は非推奨(NIST)。頻繁な変更を強制すると"Password1!"→"Password2!"のような予測しやすいパターンになる。
🧠 確認クイズ
Q1. リスト型攻撃(パスワードリスト攻撃)に対する最も有効な対策はどれか?
Q2. パスワードをシステムで保管する際の最も安全な方法はどれか?
Q3. ブルートフォース攻撃(総当たり攻撃)を防ぐための対策として最も直接的なものはどれか?