パスワードクラックとは、推測や漏えい情報、パスワードハッシュの解析などによって、認証に使われるパスワードを割り出そうとする行為です。ここで大切なのは、攻撃速度を一つの数字で覚えないことです。Webサイトへ試行するオンライン攻撃と、盗まれたハッシュを攻撃者の環境で調べるオフライン攻撃では、試行を制限できる主体も有効な対策も異なります。
インフラエンジニアとしてシステムを運用し、CIOとしてセキュリティの基礎固めに取り組んだ経験からも、パスワード対策は利用者への注意喚起だけでは成立しないと感じます。利用者が長くて固有のパスワードを選び、サービス側が試行を抑え、保存側が漏えい後の解析を遅くする。この三つを重ねて初めて、現実的な防御になります。
この記事で学べること
- パスワードクラックの意味と、オンライン攻撃とオフライン攻撃の違い
- ブルートフォース攻撃、辞書攻撃、パスワードスプレー、パスワードリスト攻撃の見分け方
- 利用者、認証サービス、パスワード保存の各層で実施する対策
- 情報処理安全確保支援士(SC)試験で攻撃と対策を対応付ける考え方
パスワードクラックとは?オンライン攻撃とオフライン攻撃の違い
パスワードクラックを理解する最初の分岐は、攻撃者がどこで候補を試すかです。この違いを押さえると、アカウントロックが効く場面と、パスワードハッシュ関数が効く場面を混同しなくなります。
オンライン攻撃は認証サービスへ試行する
オンライン攻撃は、WebサイトやVPN(Virtual Private Network)などの認証サービスにIDとパスワードの候補を送る攻撃です。サービス側は試行を観測できるため、送信元IPアドレス、アカウント、端末、時間帯などを基にレート制限や追加認証を適用できます。失敗ログを相関分析すれば、一つのアカウントへの集中だけでなく、多数のアカウントへ分散した攻撃も検知できます。
ただし、固定回数で一律に永久ロックすると、攻撃者が他人のアカウントを意図的にロックするサービス妨害につながります。短い待機時間から段階的に遅延を増やす方法や、利用者への通知、リスクに応じた追加確認を組み合わせる設計が必要です。CAPTCHAも自動化を難しくする一要素ですが、単独で全攻撃を止める仕組みではありません。
オフライン攻撃は入手したハッシュを手元で照合する
オフライン攻撃は、侵害などで入手したパスワードハッシュに対して、攻撃者が自分の環境で候補をハッシュ化し、一致する値を探す攻撃です。認証サービスへ通信しないため、ログイン画面のレート制限やアカウントロックは直接作用しません。試行速度は、利用するハードウェアだけでなく、保存に使われたアルゴリズム、コスト設定、候補の性質によって大きく変わります。
「1秒に何回試せるから何文字なら何年」と一律に断定できないのは、このためです。高速な汎用ハッシュ関数をそのまま使う場合と、メモリや計算時間を消費するパスワード専用関数を適切に設定した場合では、同じ機器でも照合コストが異なります。学習では特定の速度を暗記するより、オンラインでは試行経路を制御し、オフラインでは候補一つ当たりの計算を重くすると整理する方が応用できます。

パスワードクラックと不正ログインは同じではない
用語の範囲にも注意が必要です。パスワードリスト攻撃は、別のサービスから漏れたIDとパスワードをそのまま試すため、文字列を計算で割り出すとは限りません。それでも、パスワード認証を破る代表的な攻撃としてパスワードクラックと並べて扱われます。一方、フィッシングや情報窃取型マルウェアは、利用者から認証情報を盗む入口です。攻撃手段は違っても、盗まれた認証情報が不正ログインに使われる点でつながっています。
テンプレート集
+おまけ:毎日1通の無料メール講座つき。登録した日が「1日目」、図解と論理で16週間かけて基礎も固まります。
パスワードクラックの代表的な手法と違い
攻撃名は、何を固定し、何を変え、どの候補を使うかで見分けます。名称だけを暗記せず、攻撃者が利用している弱点を一文で説明できるようにしておきましょう。
| 攻撃手法 | 主な候補 | 狙う弱点 | 主な対策 |
|---|---|---|---|
| ブルートフォース攻撃 | 文字の組合せ | 短いパスワード、無制限の試行 | 長さ、レート制限、多要素認証 |
| 辞書攻撃、ハイブリッド攻撃 | 単語と規則的な変形 | 予測しやすい文字列 | 漏えい済み候補の拒否、パスワードマネージャー |
| パスワードスプレー | 少数の頻出パスワード | アカウント単位だけのロック | 横断監視、レート制限、多要素認証 |
| パスワードリスト攻撃 | 漏えい済みのIDとパスワードの組 | パスワードの使い回し | サービスごとに固有のパスワード、多要素認証 |
| ハッシュ解析 | 辞書、規則変形、総当たり | 弱い保存方式、弱いパスワード | Argon2idなど、一意なソルト、適切なコスト |
ブルートフォース攻撃は組合せを広く試す
ブルートフォース攻撃(総当たり攻撃)は、考えられる文字の組合せを機械的に試す方法です。候補となる文字種が一定でも、長さが一文字増えるたびに組合せは大きく増えます。そのため、防御では記号を一つ足すといった形式だけに頼らず、十分な長さを確保することが重要です。
オンラインでは、候補を作れても認証サービスへ送れる速度が制限されます。オフラインでは、サービス側の制限がない代わりに、保存方式の計算コストが防御になります。「ブルートフォース攻撃にはアカウントロック」とだけ覚えると、盗まれたハッシュの解析には効かないことを見落とします。
辞書攻撃とハイブリッド攻撃は人の選び方を利用する
辞書攻撃は、一般的な単語、人名、サービス名、よく使われるパスワードなどを候補として試します。ハイブリッド攻撃は、辞書の単語に数字を付ける、文字を似た記号に置き換えるなど、人が行いがちな変更規則を加えます。「password」を「p@ssw0rd」に変えるような置換は、攻撃側も候補生成に組み込めるため、強さを大幅に高めるとは限りません。
学び始めの頃は「大文字、小文字、数字、記号を混ぜれば安全」と覚えがちです。しかし、予測可能な位置に記号を置く形式的な複雑化より、長いパスフレーズやパスワードマネージャーが生成する固有の値の方が、候補を絞りにくくできます。もちろん、長くても有名な歌詞や格言をそのまま使えば辞書候補になり得ます。
パスワードスプレーとリバースブルートフォースは多数のIDを横断する
パスワードスプレー攻撃は、少数のよく使われるパスワードを多数のアカウントに試します。一つのアカウントに対する失敗回数を抑え、アカウント単位のロックを避けようとする点が特徴です。組織名や季節に関係する文字列が初期パスワードとして共通利用されていると、被害が広がるおそれがあります。
リバースブルートフォース攻撃も、パスワード側を固定し、利用者ID側を変えて試す考え方です。用語の使われ方には重なりがありますが、試験では「一つのIDへ多数のパスワードを試す通常の総当たり」と「同じ候補を多数のIDへ試す攻撃」の向きを対比すると整理しやすくなります。検知では個別アカウントの失敗回数だけでなく、送信元、時間帯、端末情報、複数アカウントにまたがる同一パターンを相関させます。
パスワードリスト攻撃は使い回しを狙う
パスワードリスト攻撃(Credential Stuffing)は、あるサービスから漏えいしたIDとパスワードの組を、別のサービスのログインに試す攻撃です。攻撃者はパスワードを推測する必要がありません。同じ認証情報が複数サービスで使い回されていれば、一つの漏えいが連鎖します。
対策の中心は、サービスごとに異なるパスワードを使うことです。多数の固有パスワードを人が暗記するのは現実的ではないため、信頼できるパスワードマネージャーで生成、保存する方法が有力です。サービス側では既知の漏えい認証情報との照合、異常ログインの検知、MFAによる追加確認を重ねます。
ハッシュ解析とレインボーテーブルは保存方式を狙う
サービスはパスワードを平文で保存せず、一方向のパスワードハッシュ関数で処理した値を保存します。ログイン時には入力値を同じ方法で処理し、保存値と照合します。ハッシュ値から元の文字列を単純に復号するのではなく、攻撃者は候補を同じ方法で計算し、一致するかを調べます。
レインボーテーブルは、事前計算した値を利用して照合を効率化する考え方です。利用者ごとに一意なソルトを付加してからハッシュ化すれば、同じパスワードでも保存値が異なり、同じ事前計算表を多数の利用者へ使い回す利点を小さくできます。ただし、ソルトを付けただけで弱いパスワードが解析不能になるわけではありません。攻撃者はソルトを含めて候補を計算できるため、専用のパスワードハッシュ関数と適切なコスト設定が必要です。
攻撃手法ごとに有効な対策は何か
パスワードクラック対策は、利用者だけに責任を負わせても、サービス側だけを固めても不十分です。利用者、認証サービス、保存処理の三層に分けると、抜けを見つけやすくなります。

利用者側は長さ、固有性、追加要素で守る
- 長さを確保する:短く複雑なだけの文字列より、十分に長く予測しにくい値を選びます。
- 使い回さない:サービスごとに固有のパスワードを使い、一つの漏えいによる連鎖を防ぎます。
- パスワードマネージャーを使う:長く固有な値の生成と保存を任せ、記憶への依存を減らします。
- 多要素認証(MFA:Multi-Factor Authentication)を有効にする:パスワードが漏れても追加要素を要求し、不正ログインの可能性を下げます。
- パスキーを検討する:FIDOベースのパスキーは公開鍵暗号を利用し、サーバーに共有秘密としてのパスワードを保存しません。
MFAは強力ですが、導入しただけで安全が保証されるわけではありません。方式によってはフィッシングや、繰り返し承認を求める攻撃の影響を受けます。可能であれば、接続先の正当性を暗号学的に確認するFIDOベースの認証を選びます。関連する仕組みは「FIDO・FIDO2と生体認証の仕組み」でも整理しています。
サービス側はレート制限、横断監視、リスク評価を組み合わせる
オンライン攻撃への防御では、単位時間当たりの試行数を抑えるレート制限が基本です。ただし、送信元IPアドレスだけを基準にすると、分散した送信元に弱くなります。アカウントだけを基準にすると、意図的なロックを招きます。複数のシグナルを組み合わせ、段階的な遅延、追加認証、利用者への通知へつなげます。
ログには成功と失敗の両方を残し、短時間の集中だけでなく、多数アカウントにまたがる低頻度の失敗も相関分析します。CAPTCHAはリスクが高い試行で補助的に使えますが、アクセシビリティや回避の可能性を考慮し、主要な防御を置き換えないようにします。初期パスワードを共通化せず、初回利用時に安全な登録手続きを行うことも重要です。
保存側はArgon2idなどの専用関数を使う
OWASP(Open Worldwide Application Security Project)は、パスワード保存にArgon2idを優先し、利用できない場合の選択肢としてscryptなどを示しています。既存システムとの互換性などでbcryptを使う場合も、適切なワークファクターを設定し、実装上の入力長制限に注意します。重要なのは、SHA系の高速な汎用ハッシュ関数を単純に一回適用する設計ではなく、攻撃者の候補照合にも時間とメモリを使わせる専用関数を採用することです。
コスト設定は、正規のログインに許容できる応答時間と、サービス全体の負荷を測定して決めます。ハードウェアの進歩に合わせて見直し、古い設定で保存された値は、利用者が正常にログインした機会に再ハッシュする移行方法があります。
ソルトは利用者ごとに一意な値で、秘密である必要はありません。これに対してペッパーは、パスワードデータベースとは分離して管理する秘密値です。二つは役割が違います。ペッパーを使う場合は、秘密管理基盤での保護と、漏えい時の更新手順まで設計しなければなりません。
米国国立標準技術研究所(NIST)の現行方針は形式的な複雑性より長さを重視する
NIST SP 800-63Bの現行版では、パスワードだけを単一要素として使う場合は最低15文字を要求し、MFAの一要素として使う場合は最低8文字を許容しています。また、少なくとも64文字まで受け付け、構成規則を課さず、侵害の証拠がない定期変更を要求しない方針です。これは、組織が自らの認証方式を設計する際の指針であり、すべての利用者が一律に同じ文字数を選べばよいという意味ではありません。
登録、変更時には、よく使われる値、予測されやすい値、侵害済みの値を含むブロックリストと照合します。パスワードマネージャーと自動入力を許可し、貼り付けも認めることが推奨されています。以前の「定期的に変更する」「文字種を必ず混ぜる」だけの運用から、利用者が長く固有な値を扱いやすい設計へ考え方が変わっています。
SC試験での出題パターンと対策
SC試験では、攻撃名の定義だけでなく、ログや設定から攻撃を判別し、対策を選ぶ力が問われます。科目A-2(旧午前Ⅱ)では類似用語の区別、科目B(旧午後)では認証ログ、パスワードポリシー、ハッシュ保存方式を含む事例として読み解く準備をします。
攻撃者が変える値を見て攻撃名を判定する
- 一つのIDに多数の候補を試す:ブルートフォース攻撃や辞書攻撃
- 少数の候補を多数のIDに試す:パスワードスプレーやリバースブルートフォース攻撃
- 漏えい済みのIDとパスワードの組を別サービスで試す:パスワードリスト攻撃
- 盗まれたハッシュへ候補を照合する:オフライン攻撃
この四つを、対象、候補、試行場所の三軸で整理します。「大量のログイン失敗」という情報だけでは攻撃名を決められません。どのアカウントに、どの送信元から、どの程度の間隔で試行されているかを読みます。
対策が効く層を取り違えない
定番の引っかけは、オンライン対策と保存対策の取り違えです。アカウントロックやレート制限は、認証サービスを経由しないオフライン解析を止めません。一方、Argon2idやソルトは、オンラインで使い回された正しい認証情報を入力されること自体は止めません。MFA、監視、漏えい済みパスワードの拒否などと組み合わせます。
さらに、認証は利用者が誰かを確認する処理、認可は確認された利用者に何を許すかを決める処理です。パスワードクラックは主に認証を破る攻撃であり、ログイン後の権限管理とは論点が異なります。両者の区別は「認証と認可の違い」で確認できます。
科目B(旧午後)ではログから攻撃と防御の組を説明する
科目B(旧午後)の事例では、ログイン失敗の分布、パスワードポリシー、保存方法、MFAの有無などが複数の資料に分かれて示されます。最初に「どの資産が漏れたか」「攻撃者はオンラインかオフラインか」「利用者IDとパスワードのどちらを変えているか」をメモします。そのうえで、検知、試行抑制、侵害後の影響低減をそれぞれ答えます。攻撃と防御の対応を横断して復習するには「SC試験の攻撃手法と防御策の対応マップ」も活用してください。
【演習】パスワードクラック理解度チェック(全10問)
科目A-2(旧午前Ⅱ)では攻撃手法や対策の用語が選択式で問われ、科目B(旧午後)ではログイン試行の分布やパスワード保存方式から攻撃と対策を判断する形で現れます。オンラインとオフラインの混同、パスワードスプレーとパスワードリスト攻撃の混同が定番の注意点です。以下の練習問題で本記事の理解度を確認してみましょう。
まとめ:パスワード対策は攻撃の場所に合わせて重ねる
パスワードクラックは、候補を総当たりする攻撃だけではありません。人が選びやすい単語を狙う辞書攻撃、少数の候補を多数のIDへ試すパスワードスプレー、使い回しを狙うパスワードリスト攻撃、盗まれたハッシュへのオフライン解析があります。まず、候補、対象、試行場所を見て攻撃を判別します。
新卒エンジニアへインフラを教えていたときも、対策名を一対一で暗記すると、条件が変わった事例で迷いやすいと感じました。オンラインではレート制限、横断監視、MFAを組み合わせ、オフラインではArgon2idなどの専用関数、一意なソルト、適切なコスト設定で解析を遅くします。利用者側では、長く固有なパスワード、パスワードマネージャー、パスキーを活用します。SC試験でも実務でも、一つの対策を万能視せず、攻撃が通る経路ごとに防御を重ねることが要点です。
本記事は情報処理安全確保支援士(SC)試験対策を目的として作成しています。
参考資料
- NIST SP 800-63B-4 Digital Identity Guidelines: Authentication and Authenticator Management(https://pages.nist.gov/800-63-4/sp800-63b.html)
- OWASP Password Storage Cheat Sheet(https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html)
- OWASP Authentication Cheat Sheet(https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html)
- OWASP Credential Stuffing Prevention Cheat Sheet(https://cheatsheetseries.owasp.org/cheatsheets/Credential_Stuffing_Prevention_Cheat_Sheet.html)
- FIDO Alliance Passkeys(https://fidoalliance.org/passkeys/)
- IPA「応用情報技術者試験、高度試験及び情報処理安全確保支援士試験におけるCBT方式での実施について」(https://www.ipa.go.jp/shiken/2026/ap_koudo_sc-cbt.html)
テンプレート集
+おまけ:毎日1通の無料メール講座つき。登録した日が「1日目」、図解と論理で16週間かけて基礎も固まります。