総当たり攻撃

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

総当たり攻撃 (そうあたりこうげき)とは、暗号解読方法のひとつで、可能な組み合わせを全て試すやり方。力任せ攻撃、もしくはカタカナでブルートフォースアタック(英:Brute force attack)とも呼ばれる。

概要[編集]

総当たり攻撃とは、暗号暗証番号などで理論的にありうるパターン全てを入力し解読する暗号解読法。人間による操作ではとても気が遠くなるほどの時間と肉体的・精神的な負荷がかかるような回数の計算をコンピュータにまかせ、時間の許す限りパスワードの検証等を行う行為がコンピュータセキュリティ分野で良く知られている。時間的制約が無い限りは、確実にパスワードをクラックする方法である。

例としては、自転車のチェーンロックやトランクの番号合わせ式を、全ての番号の組み合わせ(4桁なら0000から9999まで)を片っ端から試す方法と同じで、この「片っ端から」でいずれ正解に行き着こうというものである。

コンピュータネットワークに接続したパーソナルコンピュータを含むコンピュータのアクセス権や利用権限・管理権限を奪い、データを書き換えたり不正なプログラムを実行させるなど自分の意のままに操作し、管理者を困らせるクラッカーも存在し、技術的には極めて程度が低い方法で、スクリプトキディでも実行可能であるために、この方法を完全に防ぐことは難しい。

類似する暗号解読方法としては、予め予想される候補を優先的に組み合わせて検証していく辞書攻撃等がある。

2進法[編集]

コンピュータシステムで扱われているパスワード等を含む文字列(String)は、全て2進数に還元できる。なので「0, 1, 10, 11, 100, 101, 110, 111, 1000・・・」と順番に入力していくと、いつかはパスワードに合致する文字列を見つけることができる。

これはユーザーから見れば文字であっても、コンピュータにとっては文字コードと呼ばれる数字の羅列で扱っているため、そして数字がコンピュータ内では2進数によって扱われている以上、必然的にそのようになりえる。

時間[編集]

人間が手作業で行った場合、入力が速い人が行ったところでとてつもなく膨大な時間と労力が掛かる事となるが、単純なコンピュータプログラムで自動化する事が可能であり、またコンピュータはそのような繰り返しの作業において、非常に有効に機能する。

一台のコンピュータを使った場合は、そのコンピュータの処理速度(主演算装置の処理能力だけではなく、処理に関係する部分の全体的な処理能力)に応じていずれは正解に行き当たる。分散コンピューティングにおいては、(個々のコンピュータの空き時間に)探索する役割を分担して検索するようプログラムすると、使えるコンピュータの数によっては直ちに解読できる事がある。遅いか早いかはあくまでも確率の問題である。

ゆえに、もっとも原初的な方法論でありながら、時間的制約が無い限りは最も万能に使う事が出来る方法である。

問題点[編集]

総当たり攻撃は、回答となるキーワードが長ければ長い程、指数的に正解(目的の結果が得られるキーワードが出る)へ至るのに掛かる時間が長くなる。また「入力する」、「正解かどうかチェックする」、「不正解だったら1ビット追加する」を繰り返して行うため、正解かどうかチェックする対象のシステム(攻撃を被っている側)が何らかの理由で反応を返さなくなった場合には、検証作業は停止してしまう。

一般的にパスワードによる保護を行っているコンピューターは、一定時間内に規定回数以上のパスワード誤入力が続いた場合、アクセス禁止にしてしまうように設計されているため、総当り攻撃による解析が難しい場合がある。例として銀行キャッシュディスペンサーはカードを挿入して、3回連続して暗証番号を間違えると、それ以上の操作を受け付けず、防犯のため利用者にカードを返却しない(装置内の保管箱に収納してしまう)。

防衛手段[編集]

攻撃されても、主要なシステムへの侵入が困難であるようシステムを構築することが大事である。まず以下のような防衛手段が挙げられるが、次項以降に挙げるように攻撃方法は日進月歩で進化するため、すぐに有効でなくなる事を考えるべきである。

  • パスワードの長さを大きくする
  • パスワードの試行回数を制限する
  • アクセス元を制限する
  • 一定の速度以上でのパスワード試行を禁止する

逆総当たり攻撃[編集]

ひとつのIDに対してたくさんのパスワードを試すのではなく、決め打ちしたパスワードをいくつものIDに対して試す攻撃方法もあり、これは「逆総当たり攻撃」(リバースブルートフォース)と呼ばれる。これは「パスワード長が短くパスワードに使用できる文字種が少ない」システムに対して極めて有効である。たとえば「IDは必ず連続した数字10桁、パスワードは必ず数字4桁」といったシステムでパスワードに偏りがないと想定すれば、パスワード「1234」をID:1000000000からID:1000010000までの10,000件のIDに対して試行すればかならずひとつのIDに不正ログインできる計算になる。またこの場合、銀行ATMにあるような「ひとつのIDに対するパスワードの試行回数を制限する」防御方法では防ぐことができない。1万枚のキャッシュカードを手に入れた犯罪者が1枚ずつカードを試すところを想像されたい。

ボットネットを利用した攻撃[編集]

ボットネット(BotNet)と呼ばれる「世界中に散らばった、ウイルス感染等によって支配した複数のコンピュータに1台ずつ順に攻撃させる」手法を利用された場合、「ひとつのアクセス元からのパスワード試行回数を制限する」「一定の速度以上でのパスワード試行を禁止する」としても防ぐことができない。1万枚のキャッシュカードを手に入れたメンバー1万人の犯罪組織が1人1枚ずつカードを山分けし、個々人が十分な時間を開けてATMを訪問するところを想像されたい。

パスワード長と解読時間の関係[編集]

Lockdown.co.ukが2009年に行った試算[1]によると、総当たり攻撃によるパスワードの解読時間は、次のとおりとしている。

8文字の大小英数字および記号を含むパスワード
高性能パーソナルコンピューターで23年間、コンピュータ・クラスターで2.25年間、スーパーコンピューターで83.5日
8文字の大小英数字を含むパスワード
高性能パーソナルコンピューターで253日間、コンピュータ・クラスターで25.25日間、スーパーコンピューターで60.5時間
6文字の大小いずれかの英字だけのパスワード
Pentium 100MHzのPCで5分間~8.5時間

なお、パスワードの保管に脆弱性がある場合は、数分で突破される場合がある(例:Microsoft Windows XPと以前のバージョン[2][3] (回避方法:レジストリに NoLMHash を設定する。[2]))

脚注[編集]

  1. ^ http://www.lockdown.co.uk/?pg=combi&s=articles
  2. ^ a b http://www.atmarkit.co.jp/fsecurity/rensai/view09/view02.html
  3. ^ http://gigazine.net/index.php?/news/comments/20070816_ophcrack/

関連項目[編集]