用語辞典・セキュリティ

辞書攻撃

辞書攻撃とは

辞書攻撃は、よく使われる単語や漏えいした候補の一覧を使い、パスワードを試す攻撃です。英語ではdictionary attack(ディクショナリー・アタック)と表します。

国語辞典を先頭から読むだけではありません。人名、地名、キーボード配列、過去に漏えいしたパスワード、業界語、組織名、季節や年など、当たりやすい候補を優先します。

人が作るパスワードの偏りを使って、広大な全組合せの中から「人が選びそうな範囲」を先に試す攻撃です。

単語・漏えい候補・人名・規則的変形を優先一覧へまとめ、確率の高い順に照合する全空間を均等に探す総当たりとは候補の作り方が違う
攻撃者が人名、単語、漏えい候補、規則的な変形を優先順へまとめ、オンラインログインでは制限と多要素認証、オフラインハッシュではソルトと遅い計算に阻まれ、下段で全組合せ探索と比較するピクトグラム図解
図1候補一覧は言語や組織ごとに調整できます。個人情報を加えるtargeted 辞書攻撃もあります。

候補は単語から変形して増やす

Common頻出パスワード

短い数字列、キーボード並び、一般的な単語など、漏えい統計で頻度が高いもの。

Leaked過去の漏えい候補

他サービスで使われた認証情報や、同じ利用者が以前選んだパターン。

Context人物・組織の語

氏名、誕生日、team、製品、会社名、地域、趣味など公開情報から得る語。

Rulesありがちな変形

先頭大文字、末尾の年・記号、文字置換、複数語連結などを規則で生成する。

総当たり攻撃との境界

総当たり攻撃は広い意味で反復的なパスワード攻撃全体を含む場合があります。狭い意味のexhaustive検索は、定めた文字集合と長さの全組合せを順に試します。

辞書攻撃は候補を人間の選択傾向へ絞ります。短い自然語は速く当たり、長くランダムな値は辞書に現れにくくなります。ただし単語を複数つないだパスフレーズも、既知の歌詞や定型句なら候補化されます。

認証情報の使い回し攻撃とは入力の由来が違う

認証情報の使い回し攻撃は、漏えいした利用者名とパスワードの正しい組を別サービスへ試します。辞書攻撃はパスワード候補を生成・選択してアカウントへ当てます。

実際のツールは両方を組み合わせます。監視では同じアカウントへの多候補、多アカウントへの同候補、既知の漏えい組の分散試行を分けます。

オンラインでは試行回数を支配する

アカウント、機器、送信元ネットワーク、時間帯を組み合わせてレート制限し、失敗が続けば待ち時間を増やします。単純なIP制限だけでは分散送信を止められません。

MFAとrisk-based認証を使い、パスワードが合っても未知機器からの侵入を止めます。固定ロックアウトは第三者がアカウントを停止させるDoSにもなるため、復旧手順と併せます。

オフラインでは保存方式が抵抗力になる

パスワードデータベースが漏れた場合、攻撃者は自分のハードウェアで候補を高速照合できます。サーバーのレート制限は届きません。アカウントごとのランダムソルトと、Argon2などコストの高いパスワードハッシュ化を使います。

計算コストは正規ログインの容量と攻撃耐性のトレードオフです。ハードウェア更新に合わせてパラメーターを見直し、ログイン成功時などに古いハッシュを段階移行します。

利用者は一意で長い値を作る

パスワード管理ツールでサービスごとのランダムパスワードを生成します。覚える必要がある値は、予測しにくい複数語と十分な長さを使い、公開情報や有名な文を避けます。

漏えい通知後は該当サービスだけでなく、同じ値・同じ変形規則を使ったサービスも変更し、セッションを失効します。

禁止一覧は実際の弱い候補を防ぐ

パスワード設定時に、頻出・漏えい済み・サービス名を含む値を拒否します。「大文字・小文字・数字・記号を一つずつ」の固定規則だけでは、予測可能な変形を増やしがちです。

辞書攻撃への防御は、利用者の選択を責めるのではなく、弱い候補を登録時に拒否し、試行を制限し、漏えい後のオフライン解析を遅くするシステム設計で行います。

dictionary attackとpassword認証の確認資料:NIST CSRC Glossary「Dictionary Attack」NIST SP 800-63B

関連用語