みなさんは、「ブルートフォース攻撃」や「辞書攻撃」といったパスワードを狙ったサイバー攻撃を耳にしたことはありますか?
これらの攻撃は大きく分けて「オンライン攻撃」と「オフライン攻撃」の2種類に分類されます。
この2つは「攻撃のやり方」や「検知のしやすさ」、「効果的な対策」などが異なるため、それぞれの違いをしっかり理解しておくことは、セキュリティ対策を行ううえでとても重要です。
ではこれから、「オンライン攻撃」と「オフライン攻撃」の特徴・種類・対策方法について、わかりやすく解説していきます。
オンライン攻撃とは?
オンライン攻撃は、攻撃者がリアルタイムで実際のWebサーバーやログイン画面にアクセスして行う攻撃です。
オンライン攻撃の特徴
- 攻撃対象が実際のWebサービスやログインAPI
- Webサーバーにアクセスする必要がある
- 1回ごとの試行ごとに通信が発生する
- サーバー側にはアクセスログが残る
- 通信による制限があるため試行速度が遅い
- アカウントロック、CAPTCHA(画像認証)、レート制限など、通信の途中で攻撃を検知・遮断する対策が効果的です。
オンライン攻撃の種類
オンライン攻撃の代表的な種類を以下に示します。
攻撃名 | 概要 |
---|---|
ブルートフォース攻撃(オンライン) | ログイン画面で、全てのパスワードを総当たりで試す攻撃 |
パスワードスプレー攻撃 | よく使われるパスワードを、複数アカウントに対して試す攻撃 |
リバースブルートフォース攻撃 | 特定のパスワードを大量のユーザーに対して試す攻撃 |
辞書攻撃(オンライン) | 単語リスト(辞書)から1つずつ試してログインを狙う攻撃 |
パスワードリスト攻撃(オンライン) (クレデンシャルスタッフィング) | 流出済みのID+パスワードの組み合わせを使って試す攻撃 |
オンライン攻撃の対策
オンライン攻撃の対策を以下に示します。
オンライン攻撃の対策
- 一定回数ログイン失敗でアカウントロックする
- ログイン失敗を一定回数超えるとアカウントを一時的にロックすることで、総当たりや辞書攻撃を防止します。リスクはありますが、攻撃の連続試行を効果的に阻止できます。
- CAPTCHAで自動化攻撃をブロックする
- ログイン時やフォーム送信時に画像認証などのCAPTCHAを導入することで、ボットによる大量ログイン試行を防止できます。人間かどうかを確認する手段として非常に有効です。
- IP制限やレート制限を行う
- 特定のIPアドレスや地域にアクセスを制限したり、単位時間内のログイン試行回数に制限を設けたりすることで、攻撃者の活動を早期に検知・遮断できます。
- 多要素認証(MFA)を導入する
- IDとパスワードに加えて、ワンタイムコードや生体認証など複数の要素を用いることで、不正ログインのリスクを大幅に軽減できます。特に重要なアカウントには必須の対策です。
- 異常ログイン通知や監視を行う
- ログイン履歴を記録し、不自然なIPや深夜のアクセスなどがあれば通知を送る仕組みを整えることで、利用者自身が不正アクセスにいち早く気づけるようになります。
オフライン攻撃とは?
オフライン攻撃とは、あらかじめ入手したデータ(ハッシュ化されたパスワードなど)をもとに、攻撃者のローカル環境(PCなど)で行う攻撃です。
オフライン攻撃の特徴
- Webサーバーにアクセスする必要がない
- 通信が発生しないため、外部からは攻撃の兆候がほとんど見えず、気づかれにくい
- 試行回数に制限がない
- 通信による制限がないため、試行速度が速い
- ソルト(Salt)やストレッチング(反復処理)などの対策が効果的です。
オフライン攻撃の種類
オフライン攻撃の代表的な種類を以下に示します。
攻撃名 | 概要 |
---|---|
オフラインブルートフォース攻撃 | パスワードのハッシュ値を総当たりで照合する攻撃 |
レインボーテーブル攻撃 | 事前に作られた「ハッシュ値の逆引き表」を使って高速に照合する攻撃 |
辞書攻撃(オフライン) | 単語リストの各単語をハッシュ化して照合する攻撃 |
パスワードリスト攻撃(オフライン) | 流出パスワードをハッシュ化し、一致するものを探す攻撃 |
オフライン攻撃の対策
オフライン攻撃の対策を以下に示します。
オフライン攻撃の対策
- ソルト + ハッシュ化によりハッシュ値の使い回しを防止
- ソルト(Salt)とは、パスワードごとに一意なランダム文字列を加えることで、同じパスワードでも異なるハッシュ値を生成する技術です。レインボーテーブル攻撃に特に有効です。
- ストレッチング(反復処理)
- PBKDF2やbcrypt、scryptなどのアルゴリズムは、ハッシュ処理を何千〜何万回も繰り返すことで計算コストを上げ、オフライン攻撃を現実的に困難にします。現代の必須技術です。
- 長く複雑なパスワードを強制(辞書・総当たりに強い)
- 「123456」や「password」のような簡単なパスワードは秒で破られます。ランダムな英数字記号を組み合わせた長いパスワードほど、安全性が飛躍的に高まります。
- データベースの暗号化、アクセス制限などで漏洩を防止
- 仮にサーバが侵害されたとしても、データベースを暗号化しておけば、攻撃者は簡単に中身を閲覧できません。また、アクセス制限で管理者以外の侵入を防ぐことも重要です。
あわせて読みたい
『ソルト(Salt)』については下記の記事で詳しく説明しています。興味のある方は下記のリンクからぜひチェックをしてみてください。 続きを見るハッシュ化で用いる「ソルト(Salt)」や「ペッパー(Pepper)」とは?わかりやすく解説!
「オンライン攻撃」と「オフライン攻撃」の違いまとめ
「オンライン攻撃」と「オフライン攻撃」の違いを以下にまとめます。
比較項目 | オンライン攻撃 | オフライン攻撃 |
---|---|---|
攻撃の場所 | 実際のWebサービス・サーバ | 攻撃者のローカル環境 |
検知されやすさ | 高い(ログや監視で発覚されるため) | 低い(外部から見えないため) |
試行速度 | 遅い(通信による制限があるため) | 速い(通信による制限がないため) |
試行制限 | あり(アカウントロック、CAPTCHAなど) | なし(無制限に試行可能) |
主な対策 | ログイン制限、多要素認証など | ソルト+ハッシュ化、ストレッチングなど |
本記事のまとめ
この記事では「オンライン攻撃」と「オフライン攻撃」について、以下の内容を説明しました。
- オンライン攻撃とは?
- 実際のWebサーバーにアクセスして行う攻撃
- 通信が発生するので検知しやすい
- 試行ごとにログが残る、試行速度は遅い
- 対策:アカウントロック、CAPTCHA、MFA、IP制限など
- オフライン攻撃とは?
- ハッシュ値などを入手し、攻撃者のPC上で行う攻撃
- 通信が発生しないので検知されにくい
- 試行制限がなく、高速に攻撃可能
- 対策:ソルト+ハッシュ化、ストレッチング、強力なパスワード、DB暗号化など
お読み頂きありがとうございました。