(レポート課題)
この記事では、タイトル通りアンチウィルスソフトの仕組みについて調べたことをまとめて行きます。
最初のコンピュータが開発されてから半世紀が経ちましたが、コンピュータウイルスの脅威は一向に衰える気配はありません。それどころか、情報技術の発展に合わせてますます高度化、複雑化しています。例えば、最近のニュースでは中学生がランサムウェアを独学で作り出したというニュースが有りました。このランサムウェアというものは、パソコンに保存されたデータを暗号化してしまい複合するために代金を要求するというものなのですが、最近のものには支払はビットコインが要求されることがほとんどです。詳しい説明は割愛しますが、ビットコインは近年新しく現れた仮想通貨で、国境を超えた経済システムを確立しています。ランサムウェアが増加したのはこのビットコインによってハッカーが相手の居る経済圏を問わず現金(と言えるのかわかりませんが)を受け取れるようになったからなのです。このように、情報システムが発達するほどそれを利用したウイルスの種類は増えていきます。
指名手配リスト方式、パターンマッチング法
さて、このように時が経つほどその数が膨れ上がるウィルスをセキュリティソフトはどのように感知するのでしょうか。
まず古典的な手法として、パターンマッチング法があります。これは対応すべきウィルスの特徴的な部分を抽出し、それと一致するファイルをウィルスと判定する手法です。この特徴的な部分というのは、コードであったり特定の挙動であったりしますが、ハッシュ値を利用するものもあります。昔から用いられてきた手法ですが、この手法の限界としてウィルス検出の軸になる特徴的な部分さえ少しでも書き換えてしまえばすり抜けられてしまうのです。このため、ウィルスは一つ有名なものが出るとその派生版が無数に作られてきました。これらの派生版が発見して検出リストに加えればまた新しい派生版が……と言うふうに、未知のウィルスに弱くどうしても後手に回らざるを得ないのです。そして、そのイタチごっこを繰り返した結果現代のウィルスリストはもはや膨大なものになっており、ネットを通してダウンロードするにも実際に照合するにしても大きな負荷が掛かるようになってしまっています。
ウィルスの振る舞いを感知する、ヒューリスティック法
このパターンマッチング法の欠点に対応するために開発されているのが、ヒューリスティック法です。これはウィルスのコードではなくその働きをチェックすることで、その危険性を判別し、未知のウィルスでも被害を予防できるようにするための手法です。これは静的と動的の2つの解析法があり、静的なものは自己を複製したりファイルを消去するようなコードがないかチェックし、危険度を判別する方法です。対照的に、動的な解析は検査するプログラムを実際には影響しない仮想マシン上で動かすことでメモリ上のプログラムの挙動をチェックして高い精度で危険度を判別します。ヒューリスティック法はパターンマッチング法よりも誤検出の可能性は高いですが、未知のウィルスを予防するためにこの判別法も重要なものとなってゆくでしょう。