- 不正ログインを目的としてユーザーのパスワードを解析・推測・復元しようとする攻撃手法の総称のこと
- ブルートフォース攻撃(全組み合わせの試行)・辞書攻撃(一般的な単語リストでの試行)・レインボーテーブル攻撃(ハッシュ値からの逆引き)など多様な手法があり、パスワードの強度と保存方法の両方が重要だ
- 長く・複雑で・使い回しのないパスワードとMFA(多要素認証)の組み合わせが最も効果的な防御策で、企業側ではパスワードの安全なハッシュ化(bcrypt・Argon2)が必須だ
【深掘り】これだけ知ってればOK!
クレデンシャルスタッフィング(Credential Stuffing)という攻撃手法も重要だ。他のサービスで流出したIDとパスワードのセット(コンボリスト)を使って、別のサービスへのログインを試みる攻撃だ。パスワードの使い回しが最大のリスクで、1つのサービスで流出したパスワードが他の全てのサービスで通用してしまう。パスワードマネージャーを使ってサービスごとに異なる強力なパスワードを使うことが根本的な対策だ。
企業側のパスワード保護として、パスワードをデータベースに平文で保存することは論外で、ハッシュ化が必須だ。ただし古いMD5・SHA-1によるハッシュはレインボーテーブル攻撃に弱いため使ってはいけない。現代の標準はbcrypt・scrypt・Argon2などのパスワードハッシュ関数で、これらはソルト(ランダムな付加値)とストレッチング(繰り返しハッシュ)によりレインボーテーブル攻撃・総当たり攻撃を非常に困難にする。
パスワードクラックへの多層防御として、強固なパスワードだけでなくアカウントロック(一定回数のログイン失敗でアカウントを一時ロック)・レート制限(短時間の大量ログイン試行をブロック)・CAPTCHA(ボットによる自動化攻撃の防止)・MFA(多要素認証)(パスワードが漏れても第二要素がなければログインできない)を組み合わせることがサービス側の責務だ。
よくある誤解
複雑なパスワードさえ使えばパスワードクラックは防げると思っている
複雑なパスワードはブルートフォース攻撃に対しては有効だが、パスワードを使い回していると他のサービスで流出したパスワードでログインされてしまう(クレデンシャルスタッフィング)。複雑さと合わせてサービスごとに異なるパスワードを使うことが重要だ。
パスワードをSHA-256でハッシュ化して保存すれば安全だと思っている
SHA-256などの汎用ハッシュ関数は高速に計算できるため、GPUを使えば1秒間に数百億回もの試行が可能になり、総当たり攻撃に弱い。パスワード保存には意図的に計算を遅くするbcrypt・scrypt・Argon2などのパスワードハッシュ関数を使うことが現在の標準だ。
会話での使われ方

ユーザーテーブルのパスワードがMD5ハッシュで保存されています。今すぐbcryptに切り替えてください。MD5はGPUで秒間数十億回試行できるので実質平文と同じリスクです。
セキュリティエンジニアが古いハッシュアルゴリズムのリスクを指摘してbcryptへの移行を強く推奨している場面。




Have I Been Pwnedで確認したら自分のメールアドレスが3件の流出データベースに含まれていました。そのサービスのパスワードと使い回しているパスワードを全部変更します。
社員がHIBPで自分のパスワード流出を確認して対応を取っている場面。パスワードの使い回しリスクを認識している。




ログイン試行のレート制限を10回/分に設定しました。それ以上はIPをブロックします。ブルートフォース攻撃への対策です。
バックエンドエンジニアがパスワードクラック対策としてレート制限の実装を報告している場面。
【まとめ】3つのポイント
- 総当たり・辞書攻撃・レインボーテーブルなど多様な手法でパスワードを解析:パスワードの強度・保存方法の両方が攻撃の成否を左右するため、利用者側の強いパスワード設定とサービス側の安全なハッシュ化の両輪が必要だ
- 使い回しとクレデンシャルスタッフィングが最大の実害リスク:他サービスで流出したパスワードが使い回されていることで別サービスへの不正アクセスが起きるクレデンシャルスタッフィングが現在最も多い攻撃パターンで、パスワードマネージャーによるサービスごとの異なるパスワード管理が根本対策だ
- サービス側はbcrypt・Argon2でのハッシュとMFA・レート制限を実装:パスワードのbcrypt・Argon2保存・MFA・アカウントロック・レート制限・CAPTCHAを組み合わせた多層防御がサービス提供者の責任として実装すべき最低限のセキュリティ対策だ
よくある質問
-
Qパスワードマネージャーは安全ですか?
-
A
1Password・Bitwarden・LastPassなどの評判の高いパスワードマネージャーは、強力な暗号化(AES-256)でパスワードを保護しており、マスターパスワードとMFAで保護することで非常に安全に利用できます。パスワードを使い回すリスクの方がはるかに高いため、パスワードマネージャーの活用を強く推奨します。
-
Qパスワードの最低文字数の目安は何文字ですか?
-
A
NISTの最新ガイドライン(SP 800-63B)では最低8文字以上を推奨していますが、実際には12〜16文字以上の方が安全です。重要なのは長さと複雑さ(英大小文字・数字・記号の組み合わせ)の両方で、「正しい馬バッテリーステープル」のようなパスフレーズも有効な選択肢です。
-
QbcryptとArgon2はどちらを選べばいいですか?
-
A
どちらも現代的で安全なパスワードハッシュアルゴリズムです。bcryptは実績が長く多くのフレームワークでサポートされています。Argon2は2015年のPassword Hashing Competitionで優勝した最新のアルゴリズムで、メモリハード性(GPU・ASICによる高速攻撃への耐性)が高いためNISTでも推奨されています。新規開発ならArgon2idが推奨されます。
-
QHave I Been Pwnedはどのサービスですか?
-
A
セキュリティ研究者Troy Huntが運営する無料サービスで、過去に発生した大規模なデータ漏洩事件のデータベースをもとにメールアドレスやパスワードが流出しているかを確認できます。hibp.com(haveibeenpwned.com)でメールアドレスを検索できます。
この用語と一緒に知っておきたい用語
| 用語 | この記事との関連 |
|---|---|
| パスワード | 本記事のテーマと実務上セットで使われることが多い用語です。アカウントの持ち主が本人かどうかを確かめるための、本人だけが知る合言葉、それがパスワードだ |
| データ | 本記事のテーマと実務上セットで使われることが多い用語です。コンピュータが処理する数値や文字、画像といった事実や資料そのもの、それがデータだ |
| ブルートフォース攻撃 | ブルートフォース攻撃を押さえると本記事の理解がさらに深まります。考えられるすべての文字の組み合わせを試してパスワードを解析する「力技」の攻撃だ。4桁の数字なら1万通り、8桁の英数字なら218兆通りの試行が必要になる |
| データベース | データベースは関連分野でよく登場する重要キーワードです。データを効率よく蓄積・検索・更新・削除できるよう構造化して管理する仕組みの総称。専用エンジンを持ち大量データを高速操作できる |
| ハッシュ化 | 本記事のテーマと実務上セットで使われることが多い用語です。任意のデータを固定長の文字列(ハッシュ値・ダイジェスト)に変換する一方向の処理のこと。元のデータに戻すことが計算上不可能という特性を持つ |
【出典】参考URL
https://haveibeenpwned.com :Have I Been Pwned(パスワード流出確認サービス)
https://pages.nist.gov/800-63-3/sp800-63b.html :NIST SP 800-63B デジタルアイデンティティガイドライン
https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html :OWASPパスワード保存チートシート


コメント