辞書攻撃
出典: フリー百科事典『ウィキペディア(Wikipedia)』
辞書攻撃(じしょこうげき、英:Dictionary attack)とは、主にコンピュータセキュリティ上で用いられる用語で、クラッカーが特定のコンピュータに施されたパスワードを調べたり、スパム送信者が送信先のメールアドレスを決める際に用いる手法である。
目次 |
[編集] 概要
辞書攻撃は、辞書に記載された単語を利用して特定文字列を推察する方法だが、以下のように幾つかの利用方法がある。
[編集] クラッカーの攻撃
辞書攻撃の辞書とは、文字通りの辞書(この場合、主に英語の)で、これに載っている単語を、パスワード等を知るために、片っ端から入力して行き、対象のコンピュータが、どのような反応を示すかを調べ、件のコンピュータに施されたパスワードを知る事ができる。なお辞書と言っても大抵はコンピュータプログラムで利用し易いよう、単語のみが羅列してあるファイルである。
この、一見すると自転車などに使う番号組み合わせ錠を外すのに、0000~9999の全ての組み合わせを試すような非常に不毛な手法は、簡単なプログラムによって自動化するのも容易なため、ウェブページ改竄を目的とした技術程度の低いクラッカーが、サーバへ侵入する時などに良く試す方法の一つである。これは時間は確実に掛かるが、完全に失敗するという事が、比較的少ない。
また文字列を決めるのに、英語辞書の単語では無く、単純に「全ての文字の組み合わせ」を試す方法もあり、こちらは総当たり攻撃(ブルートフォースアタックとも)と呼ばれ、辞書そのものを使うよりも更に時間は掛かるが、より確実に結果がでる可能性が高い。同様の手法で、書庫ファイルに施されたパスワードを調べるソフトウェアも存在する。
[編集] 迷惑メールの送信
迷惑メールを携帯電話に向けて送信するスパム送信者の場合は、メールアドレスの“@”より前を、辞書にある単語や、文字の組み合わせを試すという方法で、メールアドレスのリストを作成し、これに向けて迷惑メールを送信する。
この方法では、ほとんどが「実在しないメールアドレス」になるとされており、実際に携帯電話会社のメールサーバが毎日扱うメールの内で8割以上は、これら辞書攻撃で作られた「宛先が存在しないため、配信されずに送信者に送り戻されるメール」だとする調査もあり、この宛先不明の迷惑メールと見られるメールは、NTT DoCoMoの2001年の発表では、これらは一日8億通にのぼり、この宛先不明の処理だけで、メールサーバに大変な負荷が掛かるため、正常に相手先に届いている(ユーザー同士がやり取りしているメールを含む)1.5億通の遅延の要因にもなっている。
[編集] 技術的問題と道義的問題
この辞書攻撃は、他人のコンピュータのパスワードを探ったり、誰かに迷惑な広告を送り付けるという実際の被害もさる事ながら、大量に送りつけられた情報を処理するのに、余計な仕事が増える関係上で、標的となったコンピュータが他に行っている処理を遅らせる結果にも繋がる。
比較的良く似た攻撃(サーバへの一種の嫌がらせ)には、サーバに大量のリクエストを送り付ける事で、サーバの負荷を増大させて、全般的な機能低下や動作不良を誘発させるDoS攻撃もあるが、この辞書攻撃の方が、実質的な被害を与える事を目的として、副次的に負荷を増やしている点で、より悪質といえる。
この手法は、クラッカーやスパム送信者にとっても、大変なデメリットがある。それは有意な結果を導き出すために、膨大な時間をサーバ接続した状態で費やす必要があるため、サーバを管理する側から(逆探知や調査をする時間もたっぷり取れるために)相手を特定され易く、またDoS攻撃は、サーバ側に対する業務妨害にも繋がるため、損害賠償を求められる可能性が、より高いという事でもあるためだ。
[編集] この攻撃に対する自衛策
辞書攻撃は、非常に古くからある攻撃だけに、幾つもの対策が確立されている。目的となる文字列を知られ難くする方法は以下の通り。
[編集] 単純な英単語は使わない
辞書に載っているような単語は、絶対的に避けるべきである。複数の単語を組み合わせたり、固有名詞を組み入れて用いるのがいいだろう。しかしサーバが一般公開してる情報から類推可能な組み合わせは止めたほうがいい。例えば「佐藤さんが運営する猫を扱ったホームページ」のパスワードに“satolikecat”なんていうのは、自滅行為もいいところである。
[編集] 完全にランダムな文字列
例えば“Qdihq7sD0”のような文字列は、絶対的に辞書には載っていない。そのため、この文字列を特定するには、すべての文字の組み合わせを延々とチェックしなければならないために、特定にかかる時間を増やして、相手が諦める可能性を高める。しかしこれらの文字列は非常に覚えにくいため、メモに残す人も多いかも知れない。だが、そのメモをモニターの上に貼ったりするのは止めよう。世の中にはソーシャル・エンジニアリングと呼ばれる、机の上を覗き込んでパスワードを盗むようなクラッキング手法もあるためである。
[編集] 可能なら長く設定する
文字の組み合わせでは、一桁増える毎に、使われている文字種類数の文字数乗算分だけ、想定される組み合わせが増える。特に、UNIX系のOSでは、大文字と小文字は、それぞれ別の文字として扱われるし、これに数字や記号が組み合わせる事も可能な場合は、それらも含めると、組み合わせパターンの可能性は飛躍的に増大するために、更に特定され難くなる。
[編集] 定期的に変更する
比較的地味だが、これが非常に有効である。何故なら辞書攻撃は非常に時間が掛かるために、途中で中断して最初から繰り返す事は、ほとんど行われない。最新のパソコンでも、十分な長さを持つ特定の文字列を検索するには、何日も掛かる事もありうるためである。このため、検索中に既に検索済みの文字列に変更されてしまった場合は、攻撃者は延々とありもしない組み合わせを試し続けて、そのうち諦めてしまう。
[編集] 試行回数を制限する
ログインなどを試行する回数を制限することも有効である。例えば、3回連続でログインに失敗すると翌日までログインの試行ができなくなるようにしておけば、1年掛けても1000回強しか試行できなくなる。これにより4桁の数字の暗証番号すら現実的な時間内に突破できなくなり、ほぼ確実に突破は不可能となる。
[編集] 技術的防衛策
技術面での防衛策も、非常に有効である。
[編集] アクセスログを取る
これは異常の実体を知る事ができるため、攻撃の事実を確認して回線を遮断すると言った防衛を行うにも、訴訟を起こすなどで逆襲にも利用できる。正確なログは刑事裁判での物証としても扱われる。
なお侵入者は大抵の場合に於いて侵入を果たすとまずアクセスログを削除しようとするため、改竄されないように定期的にログのバックアップを取るなどして、過去のデータを比較参照できるようにすることも勧められる。
[編集] 侵入検知システムを利用する
辞書攻撃という古典的手法は、すでに方法として確立しているために、非常に顕著なパターンが存在する。それこそ侵入検知システムという自動装置が機械的にパターンを察知する事が可能な程に類似性が見出せるために、このシステムを利用すれば、絶えず機械の前に陣取ってチェックしなくても、機械が常時監視して異常通信を受信し始めた際には警報を発するため、侵入の瞬間に居合せ、被害を受ける前に回線を切断してしまうことも可能である。
[編集] ファイアーウォール を適切に設定する
本来管理者は、管理する必要のあるコンピュータの傍に居る筈である。これは同時に、サーバ管理者がサーバと同じLANの中で作業をしている場合も多く、管理用の機能はファイアーウォール越しにLAN外部から行う必要が無い。それだけに、外部から本来参照する必要のない管理機能は、インターネットなど外部のコンピュータネットワークから操作できない状態に設定するのが望ましい。