夏は、セキュリティカンファレンスの多い季節だ。新しい攻撃手法が次々と報告されるだろう。特に今年は、iPhoneなどのスマートフォンを攻撃する方法にも注目が集まっている。どんな機器であろうと、OSとソフトウエアが動いていれば、攻撃対象になり得ると理解しておこう。
セキュリティソフトは、新しい攻撃手法に対応できるよう進化している。とはいえ、古くから利用し今でもウイルスを検出する手法としてよく使われているのが「パターンマッチング」である。どうしてパターンマッチングが使われるのかを理解するために、その仕組みや今でも進化を続けている部分について解説する。
手配書を使った犯人探し
パターンマッチングとは、ウイルスの特徴を記録した定義ファイルを使ってウイルスを検出する方法である。現実の世界でいえば、警察が指名手配書を使って犯人を見つけ出す方法に似ている(図1)。
コンピュータ内の警察がスキャンエンジンである。スキャンエンジンは、定義ファイルにある指名手配書を参照しながらディスク内に保存されたファイルやメールに添付されたファイル、メモリー上に常駐しているプログラムをチェックする。そして、犯人であるウイルスを探し出す。
より具体的にその仕組みを見ていこう。セキュリティソフトをインストールしておくと、ソフトベンダーから最新の定義ファイルが配信される。定義ファイルには、ウイルスの「パターン」と呼ばれるビット列やバイト列が記録されている。
パターンとは、ウイルスのプログラムコードのなかで、そのウイルスを特定できるユニークなビット列のことである。図2の例では、ウイルスAのパターンは「0101001001010100」である。スキャンエンジンは、このビット列を持ったファイルを見つけ出し、それをウイルスだと判定する。
製品にもよるが、ウイルス一つあたりのパターンは実際にはもっと長い。あるソフトベンダーは20~64バイトか、それ以上であるとしている。
パターンマッチングには、定義ファイルに記録されたパターンに間違いがない限り、誤検出しにくいといった特長がある。一方、パターンと一つでもビットが異なったり、新種でまだパターンがなかったりするウイルスは全く検出できないという欠点を持つ。