辞書攻撃とは
辞書攻撃は、よく使われる単語や漏えいした候補の一覧を使い、パスワードを試す攻撃です。英語ではdictionary attack(ディクショナリー・アタック)と表します。
国語辞典を先頭から読むだけではありません。人名、地名、キーボード配列、過去に漏えいしたパスワード、業界語、組織名、季節や年など、当たりやすい候補を優先します。
人が作るパスワードの偏りを使って、広大な全組合せの中から「人が選びそうな範囲」を先に試す攻撃です。

候補は単語から変形して増やす
短い数字列、キーボード並び、一般的な単語など、漏えい統計で頻度が高いもの。
他サービスで使われた認証情報や、同じ利用者が以前選んだパターン。
氏名、誕生日、team、製品、会社名、地域、趣味など公開情報から得る語。
先頭大文字、末尾の年・記号、文字置換、複数語連結などを規則で生成する。
総当たり攻撃との境界
総当たり攻撃は広い意味で反復的なパスワード攻撃全体を含む場合があります。狭い意味のexhaustive検索は、定めた文字集合と長さの全組合せを順に試します。
辞書攻撃は候補を人間の選択傾向へ絞ります。短い自然語は速く当たり、長くランダムな値は辞書に現れにくくなります。ただし単語を複数つないだパスフレーズも、既知の歌詞や定型句なら候補化されます。
認証情報の使い回し攻撃とは入力の由来が違う
認証情報の使い回し攻撃は、漏えいした利用者名とパスワードの正しい組を別サービスへ試します。辞書攻撃はパスワード候補を生成・選択してアカウントへ当てます。
実際のツールは両方を組み合わせます。監視では同じアカウントへの多候補、多アカウントへの同候補、既知の漏えい組の分散試行を分けます。
オンラインでは試行回数を支配する
アカウント、機器、送信元ネットワーク、時間帯を組み合わせてレート制限し、失敗が続けば待ち時間を増やします。単純なIP制限だけでは分散送信を止められません。
MFAとrisk-based認証を使い、パスワードが合っても未知機器からの侵入を止めます。固定ロックアウトは第三者がアカウントを停止させるDoSにもなるため、復旧手順と併せます。
オフラインでは保存方式が抵抗力になる
パスワードデータベースが漏れた場合、攻撃者は自分のハードウェアで候補を高速照合できます。サーバーのレート制限は届きません。アカウントごとのランダムソルトと、Argon2などコストの高いパスワードハッシュ化を使います。
計算コストは正規ログインの容量と攻撃耐性のトレードオフです。ハードウェア更新に合わせてパラメーターを見直し、ログイン成功時などに古いハッシュを段階移行します。
利用者は一意で長い値を作る
パスワード管理ツールでサービスごとのランダムパスワードを生成します。覚える必要がある値は、予測しにくい複数語と十分な長さを使い、公開情報や有名な文を避けます。
漏えい通知後は該当サービスだけでなく、同じ値・同じ変形規則を使ったサービスも変更し、セッションを失効します。
禁止一覧は実際の弱い候補を防ぐ
パスワード設定時に、頻出・漏えい済み・サービス名を含む値を拒否します。「大文字・小文字・数字・記号を一つずつ」の固定規則だけでは、予測可能な変形を増やしがちです。
辞書攻撃への防御は、利用者の選択を責めるのではなく、弱い候補を登録時に拒否し、試行を制限し、漏えい後のオフライン解析を遅くするシステム設計で行います。
dictionary attackとpassword認証の確認資料:NIST CSRC Glossary「Dictionary Attack」、NIST SP 800-63B