総当たり攻撃
概要
総当たり攻撃とは、暗号や暗証番号などで、理論的にありうるパターン全てを入力し解読する暗号解読法。例としては、自転車のチェーンロックやトランクのダイヤル錠を、全ての番号の組み合わせ（4桁なら0000から9999まで）を片っ端から試す方法と同じで、この「片っ端から」で、いずれ正解に行き着こうというものである。
人間による操作では、とても気が遠くなるほどの時間と、肉体的・精神的な負荷がかかるような回数の計算をコンピュータにまかせ、時間の許す限りパスワードの検証等を行う行為がコンピュータセキュリティ分野で良く知られている。時間的制約が無い限りは、確実にパスワードをクラックする方法である。
類似する暗号解読方法としては、「人間が発想するパスワード」はワンパターンな事が多いため、予め言葉が予想される候補を優先的に組み合わせて検証していく辞書攻撃等があり、一部ハッカーなどは「良く的中する効率が良い辞書」の育成の為に、「過去の流出したパスワードからの傾向性分析」などに血道をあげる者もおり、あるいはどちらの辞書が優秀か、ハッカー同士で競い合うケースもある。実際には、総当たり攻撃と辞書攻撃を組み合わせて、総当たりしつつも確率が高いワードから取り掛かり、時短を図るケースも多い。
メリット
人間が手作業で行った場合、入力が速い人が行ったところでとてつもなく膨大な時間と労力が掛かる事となるが、単純なコンピュータプログラムで自動化する事が可能であり、またコンピュータはそのような繰り返しの作業において、非常に有効に機能する。
1台のコンピュータを使った場合は、そのコンピュータの処理速度（主演算装置の処理能力だけではなく、処理に関係する部分の全体的な処理能力）に応じていずれは正解に行き当たる。分散コンピューティングにおいては、（個々のコンピュータの空き時間に）探索する役割を分担して検索するようプログラムすると、使えるコンピュータの数によっては直ちに解読できる事がある。インターネットを使用したサイバーアタックでの総当たり攻撃では、回線速度も関係してくるが、近年光ファイバー等のブロードバンドインターネット接続の普及により、回線速度がボトルネックになる事は減少している。なお、遅いか早いかはあくまでも確率の問題である。
ゆえに、もっとも原初的な方法論でありながら、時間的制約が無い、あるいは試行回数制限が無い場合など条件を満たせば、最も万能かつ普遍的に使う事が出来る方法である為、暗号解読あるいはサイバー攻撃の基礎とみなされる。
問題点
総当たり攻撃は、回答となるキーワードが長ければ長い程、指数的に正解（目的の結果が得られるキーワードが出る）へ至るのに掛かる時間が長くなる。また「入力する」、「正解かどうかチェックする」、「不正解だったら1ビット追加する」を繰り返して行うため、正解かどうかチェックする対象のシステム（攻撃を被っている側）が何らかの理由で反応を返さなくなった場合には、検証作業は停止してしまう。
一般的にパスワードによる保護を行っているコンピューターは、一定時間内に規定回数以上のパスワード誤入力が続いた場合、アクセス禁止にしてしまうように設計されているため、総当たり攻撃による解析が難しい場合がある。銀行のキャッシュディスペンサーが一定回数以上連続して暗証番号を間違えると、それ以上の操作を受け付けなくなるのと同様である。
影響
総当たり攻撃には、様々な悪影響が出る。サーバーに対しては数万～数億回（あるいはそれ以上）のアクセスが殺到するために、負荷がかかりサーバーが重くなる。CPU使用率の異常負荷から技術者が気が付く事も多い。また、防衛策を使用すればするほど、パスワード入力が複雑化していき、ユーザーの手間が増え利便性が低下する。ブルートフォースアタックを遮断するために、攻撃元のIPアドレスを遮断するのが負荷対策としてもっとも有効だが、IPアドレスを次々に変更するためにいたちごっことなり、その際に「正規のユーザー」までIPブロックに巻き込まれてログオンできなくなるなどの弊害も発生している。また、試行回数の上限に達したIDがパスワードロックされる事により正規ユーザーが使用できなくなる例も発生しているなど、サーバー担当者のみならず正規ユーザーにも悪影響が出ている。年々、パスワードの桁数は増加傾向にあり、複雑化したパスワードを忘れるなどのデメリットも発生しており、ITコストおよび事務手間コストの増大を発生させており、コスト面からも悪影響が出ている。
逆総当たり攻撃
ひとつのIDに対してたくさんのパスワードを試すのではなく、決め打ちしたパスワードをいくつものIDに対して試す攻撃方法もあり、これは「逆総当たり攻撃」（リバースブルートフォース）と呼ばれる。これは「パスワード長が短くパスワードに使用できる文字種が少ない」システムに対して極めて有効である。たとえば「IDは必ず連続した数字10桁、パスワードは必ず数字4桁」といったシステムでパスワードに偏りがないと仮定すれば、パスワード「1234」をID:1000000000からID:1000010000までの10,000件のIDに対して試行すると、一つのIDに不正ログインできる計算になる。またこの場合、銀行ATMにあるような「ひとつのIDに対するパスワードの試行回数を制限する」防御方法では防ぐことができない。1万枚のキャッシュカードを手に入れた犯罪者が1枚ずつカードを試すところを想像されたい。
2014年1月末から3月にかけてJALおよびANAのマイレージサービスに対して行われた不正アクセスは、パスワードロックがかかる寸前まで総当たり攻撃を行い、ロック寸前にIDを変更する「総当たり攻撃」と「逆総当たり攻撃」の組み合わせで行われた。また、この際は、成功確率を上げるために確率が高いパスワードを試行された可能性が指摘されている為、考えようによっては、辞書攻撃も組み合わされた可能性もある。
ボットネットを利用した攻撃
ボットネット（BotNet）と呼ばれる「世界中に散らばった、ウイルス感染等によって支配した複数のコンピュータに1台ずつ順に攻撃させる」手法を利用された場合、「ひとつのアクセス元からのパスワード試行回数を制限する」「一定の速度以上でのパスワード試行を禁止する」としても防ぐことができない。1万枚のキャッシュカードを手に入れたメンバー1万人の犯罪組織が1人に1枚ずつカードを渡し、個々人がてんでばらばらにATMを訪問するところを想像されたい。
もちろんこのボットネット攻撃は、前述の逆総当たり攻撃と組み合わせることも可能である。