総当たり攻撃

出典: フリー百科事典『ウィキペディア(Wikipedia)』

これはこのページの過去の版です。Minsbot (会話 | 投稿記録) による 2012年5月16日 (水) 11:57個人設定で未設定ならUTC)時点の版 (r2.7.2) (ロボットによる 変更: fa:حمله جستجوی فراگیر)であり、現在の版とは大きく異なる場合があります。

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

概要

総当たり攻撃とは、暗号暗証番号などで理論的にありうるパターン全てを入力し解読する暗号解読法。人間の操作では「面倒臭過ぎ」て解析不可能な回数の計算をコンピュータにまかせ、時間の許す限りパスワードの検証等を行う行為がコンピュータセキュリティ分野で良く知られている。時間的制約が無い限りは、確実にパスワードをクラックする方法である。

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

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

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

2進法

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

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

時間

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

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

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

問題点

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

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


防衛手段

攻撃されても、主要なシステムへの侵入が困難であるようシステムを構築することが大事である。簡単にセキュリティーを向上させるには、まず以下のような防衛手段が挙げられる。

  • パスワードを辞書にない文字、数字、記号の羅列にする
  • パスワードを頻繁に変更する
  • パスワードの入力回数を制限する

また総当たり攻撃に真っ向から勝負を挑むことも可能である。侵入者に対して「不親切な対応」をするようにシステムを構築する方法がある。

例えば、侵入者(クラッカー)は様々な鍵穴に対応する鍵束を持っているとしよう。侵入者は鍵束にある鍵を使って扉の鍵をこじ開けに掛かるが、「開けられても一向に困らない」ようなドアがたくさん存在するような建物では、侵入者はどのドアを開けるべきかをまず悩む。またどの鍵を差し込んで回しても、同じように回転するが、一向にドアそのものは開く気配がない扉というのも侵入者を悩ませる。いくつもの鍵を試そうにも、ゆっくりとしか鍵が差し込めない鍵穴というのも、侵入者の「鍵束の鍵を片っ端から試そう」という気持ちをそぎやすい。鍵穴そのものが見当たらない扉ともなると、折角の万能鍵束も意味がない。

上述のように、コンピュータシステム上でも似たような仕組みを構築することが出来る。例えば「さして重要ではない、たくさんのドア」は様々なコンピュータの提供するサービスに、別々のパスワードを設定することであり、「一向に開かないドア」や「鍵穴が見当たらないドア」はTCP/IPネットワーク上で所定のIPアドレス範囲以外からはパスワードの入力操作をそもそも受け付けない設定などが挙げられる。「ベタ付く鍵穴」は、ある一定入力速度以上でパスワードが入力することができないシステムとし、人間がキーボードから入力している場合には問題が無くとも、攻撃用のコンピュータプログラムで高速にパスワードを入力しようとしても受け付けないため、侵入者の攻撃を妨害することができるというものである。

先に挙げた「パスワードを頻繁に変更する」は「前に侵入したときと同じ鍵で、同じ扉を開かなくさせる」ことができるため、侵入者が繰り返し入り込んで被害を与えつづけることを予防することができ、また偶然にも「既に試した鍵」に錠前が変更されれば、結果的に侵入者の持つ万能鍵束はどれも役立たずだったと思わせることも可能である。「パスワード入力回数の制限」は、「鍵を3回間違えると、鍵穴が壊れて開かなくなる扉」といった風である。こういった嫌がらせは、クラッカーも人間である以上、諦めてしまう可能性もある。

この他に、攻撃を仕掛ける侵入者に対する嫌がらせともいえるシステムは様々な可能性があり、中には一見すると重要な部屋のドアだが、中はただのガラクタ部屋というシステム(ハニーポット)もある。

また「一つの鍵穴に幾つもの鍵が試されていること」を検知するための侵入検知システムもあり、それらを利用することで安全度は更に向上する。


パスワード長と解読時間の関係

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/

関連項目