(57)【特許請求の範囲】
【請求項１】
パケットルールに基づいて、パケットデータに対するフィルタリング動作を行うステップと、
前記フィルタリング動作を行いながら、前記パケットデータが前記パケットルールを満たすと判断される場合、前記パケットルールを満たすパケットデータを待機バッファに格納するステップと、
前記待機バッファに格納されたパケットデータに対して前記ウイルススキャニング動作を行うステップとを含み
前記フィルタリング動作中であるパケットデータに対して、前記フィルタリング動作と前記ウイルススキャニング動作が同時に行われることを特徴とするアンチマルウェアシステムにおける動作方法。
【請求項２】
前記フィルタリング動作中であるパケットデータにウイルススキャニングするデータが含まれているかどうかを判断するステップをさらに含み、
前記ウイルススキャニング動作を行うステップは、前記パケットデータにウイルススキャニングするデータがあると判断される場合にのみ行われることを特徴とするアンチマルウェアシステムにおける請求項１に記載の動作方法。
【請求項３】
前記フィルタリング動作の遂行結果、前記パケットデータがパケットルールを満たし、前記ウイルススキャニング動作の遂行結果、前記パケットデータにウイルスが含まれていないと判断されると、前記パケットデータを外部又は前記パケットデータを使用するアプリケーション部に送信することを特徴とする請求項２に記載のアンチマルウェアシステムにおける動作方法。
【請求項４】
前記フィルタリング動作の遂行結果、前記パケットデータがパケットルールを満たす場合でも、前記ウイルススキャニング動作の遂行結果、前記パケットデータにウイルスが含まれたと判断されると、前記パケットデータを外部又は前記パケットデータを使用するアプリケーション部に送信しないことを特徴とする請求項２に記載のアンチマルウェアシステムにおける動作方法。
【請求項５】
前記ウイルススキャニング動作を行うステップは、前記待機バッファに格納されたパケットデータにウイルススキャニングするデータが含まれている場合にのみ行うことを特徴とする請求項１に記載のアンチマルウェアシステムにおける動作方法。
【請求項６】
前記判断するステップにて、前記パケットルールを満たすパケットデータに前記ウイルススキャニングするデータが含まれていると判断された場合、前記パケットデータを補助バッファに複写して格納するステップとをさらに含むことを特徴とする請求項２に記載のアンチマルウェアシステムにおける動作方法。
【請求項７】
前記ウイルススキャニング動作を行うステップは、前記補助バッファに格納されたパケットデータに対して行うことを特徴とする請求項６に記載のアンチマルウェアシステムにおける動作方法。
【請求項８】
前記ウイルススキャニング動作の対象になるパケットデータを前記ウイルススキャニング動作を行うことができる形態に変換するステップをさらに含み、
前記ウイルススキャニング動作は、前記変換されたパケットデータに対して行われることを特徴とする請求項１に記載のアンチマルウェアシステムにおける動作方法。
【請求項９】
前記判断するステップにて、前記パケットデータに前記ウイルススキャニングするデータが含まれていると判断された場合、前記ウイルススキャニングするデータの種類を決定するステップをさらに含むことを特徴とする請求項２に記載のアンチマルウェアシステムにおける動作方法。
【請求項１０】
前記ウイルススキャニングするデータが第１種類に該当すると判断されると、前記パケットデータを待機バッファに格納し、前記ウイルススキャニングするデータの種類が第２種類に該当すると判断されると、補助バッファに格納するステップをさらに含むことを特徴とする請求項９に記載のアンチマルウェアシステムにおける動作方法。
【請求項１１】
前記ウイルススキャニング動作を行うステップは、
前記待機バッファ又は補助バッファに格納されたデータパケットに対して前記ウイルススキャニング動作を行うことを特徴とする請求項１０に記載のアンチマルウェアシステムにおける動作方法。
【請求項１２】
前記フィルタリング動作を行うステップは、
前記ルールパターンと前記パケットデータとをマッチングさせる第１マッチングステップと、
前記第１マッチングステップのマッチング結果によって前記パケットデータの許容有無を判断するステップとを含み、
前記ウイルススキャニング動作を行うステップは、
予め設定されたウイルスパターンと前記パケットデータとをマッチングさせる第２マッチングステップと、
前記第２マッチングステップのマッチング結果によってウイルスを含むかどうかを判断するステップとを含むことを特徴とする請求項１に記載のアンチマルウェアシステムにおける動作方法。
【請求項１３】
前記第１マッチングステップおよび前記第２マッチングステップは、各々別のハードウェアで具現されることを特徴とする請求項１２に記載のアンチマルウェアシステムにおける動作方法。
【請求項１４】
前記第１マッチングステップおよび前記第２マッチングステップは、共通のハードウェアで具現されることを特徴とする請求項１２に記載のアンチマルウェアシステムにおける動作方法。
【請求項１５】
パケットルールに基づいてパケットデータに対するフィルタリング動作を行い、前記パケットデータにウイルススキャニングするデータが含まれているかどうかを判断するファイアウォールエンジン（Ｆｉｒｅｗａｌｌ ｅｎｇｉｎｅ）と、
前記ファイアウォールエンジンにより前記パケットデータにウイルススキャニングするデータがあると判断される場合、前記パケットデータに対するウイルススキャニング動作を行うアンチウイルスエンジン（Ａｎｔｉ−ｖｉｒｕｓ ｅｎｇｉｎｅ）と、
待機バッファとを含み、
前記ファイアウォールエンジンは、前記パケットルールを満たすパケットデータを前記待機バッファに格納し、前記アンチウイルスエンジンは、前記待機バッファに格納されたパケットデータに対してウイルススキャニング動作を行い、
前記フィルタリング動作中であるパケットデータに対して、前記フィルタリング動作と前記ウイルススキャニング動作が同時に行われることを特徴とするアンチマルウェアシステム。
【請求項１６】
前記ファイアウォールエンジンは、前記パケットルールを満たすパケットデータに対してのみ前記ウイルススキャニングするデータを含んでいるかどうかを判断することを特徴とする請求項１５に記載のアンチマルウェアシステム。
【請求項１７】
前記アンチウイルスエンジンは、前記待機バッファに格納されたパケットデータにウイルススキャニングするデータが含まれている場合にのみ行うことを特徴とする請求項１５に記載のアンチマルウェアシステム。
【請求項１８】
補助バッファをさらに備え、
前記ファイアウォールエンジンは、前記パケットルールを満たすパケットデータに前記ウイルススキャニングするデータが含まれていると判断された場合、前記パケットデータを補助バッファに格納することを特徴とする請求項１５に記載のアンチマルウェアシステム。
【請求項１９】
前記アンチウイルスエンジンは、前記補助バッファに格納されたパケットデータに対して行うことを特徴とする請求項１８に記載のアンチマルウェアシステム。
【請求項２０】
前記ウイルススキャニング動作の対象になるパケットデータを前記ウイルススキャニング動作を行うことができる形態に変換するアンチマルウェアマネジャーをさらに備え、
前記ウイルススキャニング動作は、前記変換されたパケットデータに対して行われることを特徴とする請求項１５に記載のアンチマルウェアシステム。
【請求項２１】
前記ファイアウォールエンジンから前記パケットデータにウイルススキャニングするデータが含まれているという通知を受信して、前記パケットデータにウイルススキャニングするデータがあることを前記アンチウイルスエンジンに通知するアンチウイルスインスペクター（ｉｎｓｐｅｃｔｏｒ）をさらに備えることを特徴とする請求項１５に記載のアンチマルウェアシステム。
【請求項２２】
前記ファイアウォールエンジンは、前記パケットデータにスキャニングするデータが含まれていることを前記アンチウイルスインスペクターに通知し、前記パケットデータを補助バッファに格納し、
前記アンチウイルスエンジンは、前記補助バッファに格納されたパケットデータに対して前記ウイルススキャニング動作を行うことを特徴とする請求項２１に記載のアンチマルウェアシステム。
【請求項２３】
前記アンチウイルスインスペクターは、前記補助バッファにパケットデータが格納されたことを確認した後、前記アンチウイルスエンジンにウイルススキャニングするデータがあることを通知することを特徴とする請求項２２に記載のアンチマルウェアシステム。
【請求項２４】
前記アンチウイルスエンジンは、前記補助バッファに格納されたパケットデータに対するウイルススキャニング動作の結果を前記アンチウイルスインスペクターに知らせることを特徴とする請求項２３に記載のアンチマルウェアシステム。
【請求項２５】
前記ファイアウォールエンジン及び前記アンチウイルスエンジンから各々の動作結果を受信するアンチマルウェアマネジャーをさらに備えることを特徴とする請求項２３に記載のアンチマルウェアシステム。
【請求項２６】
前記アンチウイルスエンジンは、前記補助バッファに格納されたパケットデータに対するウイルススキャニング動作の結果を前記アンチウイルスインスペクターに通知し、
前記アンチウイルスインスペクターは、前記ウイルススキャニング動作の結果を前記アンチマルウェアマネジャに通知することを特徴とする請求項２５に記載のアンチマルウェアシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アンチマルウェアシステム及びその動作方法に関する。
【背景技術】
【０００２】
マルウェアとは、ウイルス、アドウェア、スパイウェア、又はトロイの木馬のようにシステムの動作を妨害したり危険に露出するようにするソフトウェアやコードのことを意味する。マルウェアは、多様な方法でシステムを感染させ、例えばイメールをあけてみるか、又は特定ウェブサイトに接続することだけでも、接続したシステムはマルウェアに感染しうる。
【０００３】
アンチマルウェアシステムは、マルウェアによる被害を事前に防ぎ治療するシステムであって、防火壁やウイルススキャニングエンジンを具備している。
【０００４】
通信が発展するに伴い、新しいマルウェアが急速に生じ、既存に存在したマルウェアも続いて変形している傾向にある。そのため、アンチマルウェアシステムは、従来のマルウェアだけでなく、新しく生じるものまで検出しなければならないので、新しいものに対応できるアップデートが可能な構造で動作する必要がある。特に、資源が限定されたモバイルデバイスの場合は、資源を少なく使いながらも高速でマルウェアを検出できるアンチマルウェアシステムが必要である。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の一実施の形態によれば、本発明の目的は、高速でパケットデータをフィルタリングできるアンチマルウェアシステム及びその動作方法を提供することにある。
【０００６】
本発明の一実施の形態によれば、本発明の他の目的は、パケットデータに対してフィルタリングとウイルススキャニングとを並行して行うことができるアンチマルウェアシステム及びその動作方法を提供することにある。
【課題を解決するための手段】
【０００７】
本発明の一実施の形態によれば、パケットルールに基づいて、パケットデータに対するフィルタリング動作を行うステップと、前記フィルタリング動作中であるパケットデータに対して、ウイルススキャニング動作を行うステップとを含むことを特徴とするアンチマルウェアシステムにおける動作方法が提供される。
【０００８】
本発明の他の実施の形態によれば、パケットルールに基づいてパケットデータに対するフィルタリング動作を行い、前記パケットデータにウイルススキャニングするデータが含まれているかどうかを判断する防火壁エンジン（Ｆｉｒｅｗａｌｌ  ｅｎｇｉｎｅ）と、前記防火壁エンジンにより前記パケットデータにウイルススキャニングするデータがあると判断される場合、前記パケットデータに対するウイルススキャニング動作を行うアンチウイルスエンジン（Ａｎｔｉ−ｖｉｒｕｓ  ｅｎｇｉｎｅ）とを備えることを特徴とするアンチマルウェアシステムが提供される。
【発明の効果】
【０００９】
本発明の一実施の形態によれば、高速でパケットデータをフィルタリングできる。
【００１０】
本発明の一実施の形態によれば、パケットデータに対してフィルタリングとウイルススキャニングとを並行して行うことができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施の形態に係るアンチマルウェアシステムのブロック図である。
【図２】本発明のさらに他の実施の形態に係るアンチマルウェアシステムのブロック図である。
【図３】本発明のさらに他の実施の形態に係るアンチマルウェアシステムのブロック図である。
【図４】本発明の一実施の形態に係るアンチマルウェアシステムにおける動作を説明するための図である。
【図５】本発明の他の実施の形態に係るアンチマルウェアシステムにおける動作を説明するための図である。
【図６】本発明の他の実施の形態に係るアンチマルウェアシステムにおける動作を説明するための図である。
【図７】本発明の一実施の形態に係るマッチング部の構成を示したブロック図である。
【図８】本発明の一実施の形態に係る防火壁エンジンにおけるフィルタリング動作を説明するための図である。
【図９】本発明の一実施の形態に係る防火壁エンジンにおけるフィルタリング動作に用いられるテーブルを例示的に示す図である。
【図１０】本発明の一実施の形態に係るアンチウイルスエンジンでのスキャニング動作を説明するための図である。
【図１１】本発明の一実施の形態に係るパケットフィルタリング方法を説明するためのフローチャートである。
【図１２】本発明の一実施の形態に係るパケット分類プロセスを説明するためのフローチャートである。
【図１３】本発明の一実施の形態に係るＩＰマッチングプロセスを説明するためのフローチャートである。
【図１４】本発明の一実施の形態に係るプロトコルマッチングプロセスを説明するためのフローチャートである。
【図１５】本発明の一実施の形態に係るポートマッチングプロセスを説明するためのフローチャートである。
【図１６】本発明の一実施の形態に係るアンチマルウェアシステムにおける動作方法を説明するためのフローチャートである。
【発明を実施するための形態】
【００１２】
以上の本発明の目的、他の目的、特徴及び利点は、添付された図面と関わった以下の好ましい実施の形態により容易に理解されるはずである。しかしながら、本発明は、ここで説明される実施の形態に限定されずに他の形態で具体化されることもできる。むしろ、ここで紹介される実施の形態は、開示された内容が徹底かつ完全になるように、そして当業者に本発明の思想を十分に送信させるために提供されることである。本明細書において、ある構成要素が他の構成要素上にあると言及される場合に、それは、他の構成要素上に直接形成されうるか、又はそれらの間に第３の構成要素が介在されうることを意味する。
【００１３】
本明細書で使用された用語は、実施の形態を説明するためのもので、本発明を制限しようとするものではない。本明細書において、単数型は、特に言及しない限り、複数型も含む。明細書で使用される「含む（ｃｏｍｐｒｉｓｅｓ）」及び／又は「含む（ｃｏｍｐｒｉｓｉｎｇ）」と言及された構成要素は、一つ以上の他の構成要素の存在又は追加を排除しない。
【００１４】
以下、図面を参照して本発明を詳細に説明する。以下の特定実施の形態を述べるにおいて、色々な特定な内容は、発明をさらに具体的に説明し理解を助けるために作成された。しかしながら、本発明を理解することができる程度のこの分野における知識を有した読者は、このような色々な特定な内容がなくても使用されうることを認知できる。ある場合には、発明を述べるにおいて周知で発明と大きく関連のない部分は、本発明を説明するにおいて特別な理由なしで混乱を引き起こすことを防止するために述べないことを予め言及しておく。
【００１５】
図１は、本発明の一実施の形態に係るアンチマルウェアシステムのブロック図である。
【００１６】
本実施の形態に係るアンチマルウェアシステム１００は、ＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）形態で具現されるか、又はＰＣ、モバイル機器などネットワーク通信が可能な機器自体に搭載されることができる。
【００１７】
図１に示すように、本発明の一実施の形態に係るアンチマルウェアシステム１００は、通信部１１０、ルールパターンデータベース（Ｄａｔａ  ｂａｓｅ：ＤＢ）１２０、防火壁エンジン１３０、ウイルスパターンＤＢ１４０、及びアンチウイルスエンジン１５０、及びマネジャー１６０を備えることができる。
【００１８】
説明の便宜のために、図１にドライバー２００とアプリケーション部３００とを共に示しており、ドライバー２００とアプリケーション部３００とは、アンチマルウェアシステム１００が装着されるデバイスの構成要素である。
【００１９】
ドライバー２００は、アンチマルウェアシステム１００とアプリケーション部３００との間のインターフェースを支援できる。ドライバー２００は、アプリケーション部３００からの命令、ルールパターンＤＢ１２０又はウイルスパターンＤＢ１４０のアップデート命令などをマネジャー１６０に案内できる。
【００２０】
アプリケーション部３００は、アンチウイルスＵＩアプリケーション、防火壁ＵＩアプリケーション、ウェブブラウザ、及びネットワークアプリケーションを含むことができる。本願明細書では、アンチウイルスＵＩアプリケーションと防火壁ＵＩアプリケーションとを通称して「ＡＭアプリケーション」と呼ぶことにし、ただし両方を区別する実益がある場合にはその限りでない。
【００２１】
通信部１１０は、ネットワークを介して外部からパケットデータを受信する。このために、通信部１１０は、ＷｉＦｉ（Ｗｉｒｅｌｅｓｓ  ｆｉｄｅｌｉｔｙ）モジュール、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）モジュール、ＯＴＡ（Ｏｖｅｒ  ｔｈｅ  ａｉｒ）モジュール、ブルートゥース（Ｂｌｕｅｔｏｏｔｈ）モジュール、及び４Ｇモジュールのうち、少なくとも一つを含むことができる。通信部１１０は、外部からパケットデータを受信すると、この受信されたパケットデータは、防火壁エンジン１３０に送信される。
【００２２】
ルールパターンＤＢ１２０は、パケットルールを含むデータベースである。パケットルールは、外部から流入したパケットデータの遮断及び通過有無を決定するために用いられる。ここで、パケットルールは、ユーザにより直接設定されるか、又はデフォルトとして設定されたものでありうる。ユーザにより設定されたルールは、本アンチマルウェアシステム１００で使用することができる形態に変換されて、ルールパターンＤＢ１２０のような形態で具現されることができる。
【００２３】
防火壁エンジン１３０は、パケットルールに基づいてパケットデータに対するフィルタリング動作と、パケットデータにスキャニングするデータが含まれているかどうかを判断できる。すなわち、本発明の一実施の形態に係る防火壁エンジン１３０は、フィルタリング動作とパケットデータにスキャニングするデータが含まれているかどうかを判断する動作とも行うことができる。このような実施の形態で、アンチウイルスエンジン１５０は、防火壁エンジン１３０がスキャニングするデータが含まれていると判断したパケットデータに対してウイルススキャニング動作を行う。ここで、ウイルススキャニング動作は、防火壁エンジン１３０によるフィルタリング動作が行われる前又はフィルタリング動作と同時に行われるか、又はフィルタリング動作が行われた後に行われることができる。
【００２４】
一方、防火壁エンジン１３０は、パケットデータに対するフィルタリング動作は行うが、パケットデータにウイルススキャニングするデータが含まれているかどうかに対する判断はしなくてもよい。このような実施の形態において、アンチウイルスエンジン１５０は、防火壁エンジン１３０がフィルタリング中であるパケットデータを区分せずにすべてのパケットデータに対してウイルススキャニング動作を行う。又は、アンチウイルスエンジン１５０は、フィルタリング動作が行われる前のパケットデータに対してウイルススキャニング動作を行うことができ、フィルタリング動作が行われた後のパケットデータに対してウイルススキャニング動作を行うことができる。
【００２５】
防火壁エンジン１３０のフィルタリング動作は、従来の周知の方法、未来に開発される方法又は本明細書に記載された方法のうちの何れかの方法でも具現されることができる。アンチウイルスエンジン１５０によるウイルススキャニング動作もやはり従来の周知の方法、未来に開発される方法又は本明細書に記載された方法のうちの何れかの方法でも具現されうる。
【００２６】
以下、本発明の一実施の形態に係る防火壁エンジン１３０のフィルタリング動作を説明する。
【００２７】
防火壁エンジン１３０は、パケットデータとルールパターンＤＢ１２０とのマッチング動作を介してパケットデータがパケットルールを満たしているかどうかを判断できる。本発明の一実施の形態によれば、防火壁エンジン１３０は、パケットデータのヘッダに含まれた情報（ＩＰ  ａｄｄｒｅｓｓ、プロトコル、ポート）とルールパターンＤＢ１２０とのマッチング動作を介して、パケットデータがパケットルールを満たしているかどうかを判断する。具体的に、防火壁エンジン１３０は、パケットデータのヘッダに含まれた情報（ＩＰ  ａｄｄｒｅｓｓ、プロトコル、ポート）と、ハッシュマッチャーテーブル及びサブマッチャーテーブルとのマッチング動作を介して、パケットデータがパケットルールを満たしているかどうかを判断する。
【００２８】
本発明の一実施の形態によれば、防火壁エンジン１３０は、ルールパターンのハッシュ値とパケットデータのハッシュ値とを利用して、マッチング動作を行うことができる。図示していないが、本発明の一実施の形態に係るアンチマルウェアシステム１００は、ハッシュ関数を適用してパケットデータとルールパターンＤＢ１２０との間のマッチング動作を行うことができる。例えば、防火壁エンジン１３０は、ルールパターンのハッシュ値とパケットデータの少なくとも一部のハッシュ値とをマッチングして成功した場合にのみ、再度ルールパターンとパケットデータとをマッチングできる。防火壁エンジン１３０により行われるフィルタリング動作の例は、図１１〜１５を参照して詳細に後述する。
【００２９】
一方、上述したように、本発明の一実施の形態に係る防火壁エンジン１３０は、パケットデータにウイルススキャニングするデータが含まれているかどうかを判断できる。
【００３０】
防火壁エンジン１３０によりパケットデータにウイルススキャニング対象になるデータが含まれていると判断された場合、そういうスキャニング対象データに対してアンチウイルスエンジン１５０は、ウイルススキャニング動作を行うことができる。これと関連しては、図４と図５を参照して後述する。
【００３１】
本発明の他の実施の形態に係る防火壁エンジン１３０は、パケットデータにウイルススキャニング対象になるデータが含まれているかどうかと、ひいては、そういうスキャニング対象になるデータの種類を決定できる。ここで、データの種類には、ファイルデータと非ファイルデータがありえ、ファイルデータには、またスクリプターファイルデータと一般ファイルデータがありうる。このような種類は、例示に過ぎないものであって、これと異なってデータの種類が定義されることも可能でありうる。防火壁エンジン１３０がデータの種類を区分した実施の形態は、図６を参照して後述する。
【００３２】
本発明のさらに他の実施の形態によれば、防火壁エンジン１３０は、パケットデータに対するフィルタリング動作を行う前に、パケットデータにウイルススキャニングの対象になるデータが含まれているかどうかを判断できる。防火壁エンジン１３０が、パケットデータにウイルススキャニングの対象になるデータが含まれていると判断した場合、アンチウイルスエンジン１５０は、そういうパケットデータに対してウイルススキャニング動作を行い、防火壁エンジン１３０は、そういうパケットデータに対してフィルタリング動作を行う。これらのスキャニング動作とフィルタリング動作とは、必ず同時に行われる必要はなく、順次に行われることもできる。
【００３３】
ウイルスパターンＤＢ１４０は、少なくとも一つ以上のウイルスパターンを含むデータベースである。また、本発明の一実施の形態に係る、ウイルスパターンＤＢ１４０は、文法的に単純なウイルスパターン及び／又は文法的に複雑なウイルスパターンを含むことができる。文法的に単純なウイルスパターン及び／又は文法的に複雑なウイルスパターンは、韓国特許出願番号１０−２０１０−００４９５６６（２０１０年５月２７日付出願）、韓国特許出願番号１０−２０１０−００５２９８１（２０１０年６月４日付出願）に記載されており、これらの文献に記載された内容は、本願発明に相反しない範囲で本願明細書の一部として結合される。
【００３４】
アンチウイルスエンジン１５０は、ウイルスパターンＤＢ１４０を利用してスキャニング対象データにウイルスが存在しているかどうかを判断できる。本発明によれば、スキャニング対象になるデータは、ドライバー２００を介して受信したデータでありうるが、防火壁エンジンから受信したパケットデータも該当することができる。
【００３５】
アンチウイルスエンジン１５０は、パケットデータに対してウイルススキャニングを行うことができるが、パケットデータに対する前処理（Ｐｒｅ−ｐｒｏｃｅｓｓｉｎｇ）動作が必要となりうる。例えば、前処理動作として、パケットデータを最小限の意味のある単位バッファ分だけのデータにスクリプト形式のウイルスパターンがあるかを探す動作が行われることができる。他の例として、前処理動作として、特定形式のファイルを含むパケットデータに対しては、パケットデータを集めてファイル形式を確認する動作が行われることができ、アンチウイルスエンジン１５０は、最小限の意味のある単位分だけのファイルに対してウイルスパターンがあるかどうかを確認するスキャニング動作を行うことができる。そういう前処理の具体的な動作は、アンチウイルスエンジン１５０のスキャニング方式やウイルスパターンＤＢの形態により異なりうる。ただし、本発明の要旨が不必要に不明確になるのを防止するために、本発明の実施の形態において、アンチウイルスエンジン１５０がパケットデータに対してウイルススキャニング動作を行う際には、事前処理に対する明示的な言及がなくても必要な事前処理動作は行われるのが前提になる。
【００３６】
図１を続いて述べると、アンチウイルスエンジン１５０は、ウイルスパターンＤＢ１４０を利用して通信部１１０を介して受信されたパケットデータに対してもウイルススキャニング動作を行うことができる。
【００３７】
本発明の一実施の形態に係るアンチウイルスエンジン１５０によるスキャニング動作は、防火壁エンジン１３０のフィルタリング動作と並行されるか、フィルタリング動作が行われる前、又はフィルタリング動作が行われた後に行われることができる。例えば、通信部１１０を介して受信したパケットデータに対してアンチウイルスエンジン１５０と防火壁エンジン１３０とは、同時又は互いに時間差をおいてそれぞれスキャニングとフィルタリング動作とを行うことができる。
【００３８】
一方、アンチウイルスエンジン１５０は、アプリケーション部３００の指示によって、ドライバー２００を介して受信されるデータに対してもウイルススキャニング動作を行うことができる。
【００３９】
本発明の一実施の形態に係るアンチウイルスエンジン１５０は、ウイルスパターンＤＢ１４０とパケットデータとをマッチングさせることによって、パケットデータにウイルスが含まれているかどうかを判断できる。
【００４０】
一実施の形態によれば、アンチウイルスエンジン１５０は、ハッシュ値を利用してウイルススキャニング動作を行うことができる。例えば、アンチウイルスエンジン１５０は、ウイルスパターンのハッシュ値とパケットデータのハッシュ値とをマッチングするハッシュ値マッチング動作を行った後、ハッシュ値がマッチングされると、パターンデータの一部とウイルスパターンとをマッチングさせるライトパターンマッチングを行い、ライトパターンマッチングが成功した場合、ウイルスパターンとパケットデータ全体とを精密にマッチングする精密パターンマッチングを行うことができる。
【００４１】
マネジャー１６０は、アプリケーション部３００から受信される命令を解析して、スキャニングと関わったものであるか、それとも防火壁と関わったものであるかを判断して、それに応じる動作を行うことができる。
【００４２】
例えば、マネジャー１６０は、アップデート用ウイルスパターンＤＢをアプリケーション部３００から受信した場合には、ウイルスパターンＤＢ１４０にアップデート用ウイルスパターンＤＢをロードさせることができる。
【００４３】
また、マネジャー１６０は、アプリケーション部３００からスキャニング命令を受けることができ、そういうスキャニング命令にしたがってアンチウイルスエンジン１５０がスキャニング動作を行うようにする。
【００４４】
また、マネジャー１６０は、アンチウイルスエンジン１５０のスキャニング結果をアンチウイルスエンジン１５０から受けてアプリケーション部３００に通知することができる。
【００４５】
一実施の形態によれば、マネジャー１６０は、アップデートのためのルールパターンリストをアプリケーション部３００から受信した場合、そういうルールパターンリストに基づいてルールパターンＤＢ１２０を生成できる。
【００４６】
また、マネジャー１６０は、フィルタリング結果を防火壁エンジン１３０から受けて、アプリケーション部３００に通知することができる。
【００４７】
本実施の形態では、防火壁エンジン１３０とアンチウイルスエンジン１５０とを一つのマネジャー１６０が管理すると示しているが、これは例示に過ぎず機能別にマネジャーを構成することも可能である。例えば、フィルタリング動作と関わった防火壁マネジャー、スキャニング動作と関わったアンチウイルスマネジャー、及び防火壁マネジャーとアンチウイルスマネジャーとを管理するマルウェアマネジャーのように構成することも可能である。このような構成において、マルウェアマネジャーは、アプリケーション部から受信するデータや命令が防火壁と関わったものであるかどうか、それともアンチウイルスと関わったものであるかどうかを判断し、それに該当するマネジャーに送信する。
【００４８】
例えば、マルウェアマネジャーは、ルールパターンリストをアプリケーション部から受信した場合には、防火壁マネジャーに伝達する。これに、防火壁マネジャーは、ルールパターンリストからルールパターンＤＢを構成する。また、マルウェアマネジャーは、スキャニング命令を受信した場合には、アンチウイルスマネジャーにスキャニング命令を送信する。アンチウイルスマネジャーは、アンチウイルスエンジンにスキャニング動作を行うことを指示し、これによりアンチウイルスエンジンは、スキャニング動作を行う。
【００４９】
図２は、本発明のさらに他の実施の形態に係るアンチマルウェアシステムのブロック図である。
【００５０】
図２に示すように、図１の実施の形態と類似の構成を有する。理解の便宜上、図１と図２において同一又は類似の機能を行う構成要素に対しては、同じ図面番号を付し、以下では、特に差異を中心に説明する。
【００５１】
本実施の形態は、アンチウイルスエンジン１５０のウイルスパターンマッチング動作と防火壁エンジン１３０のルールパターンマッチング動作とが一つの共通したハードウェアにより行われる例である。
【００５２】
本発明の一実施の形態に係るマッチング部１６５は、ウイルスパターンとパケットデータとをマッチングする動作を行うことができ、一方、ルールパターンとパケットデータとをマッチングする動作も行うことができる。すなわち、マッチング部１６５は、ある時刻にはアンチウイルスエンジンの一部として動作し、他の時刻には、防火壁エンジンの一部として動作する。
【００５３】
例えば、マッチング部１６５がアンチウイルスエンジンの一部として動作する場合には、ウイルスパターンＤＢ１４０とスキャニング対象データとをマッチングさせることができる。この場合、マッチング部１６５は、ウイルスパターンＤＢ１４０とスキャニング対象データとの間に、ハッシュ値マッチング、ライトパターンマッチング、及び精密パターンマッチング動作を行うことができる。
【００５４】
一方、マッチング部１６５が防火壁エンジンの一部として動作する場合には、ルールパターンＤＢとパケットデータとをマッチングさせることができる。この場合、マッチング部１６５は、ルールパターンＤＢ１２０とパケットデータとの間にハッシュ値マッチング、ライトパターンマッチング、及び精密パターンマッチング動作を行うことができる。マッチング部１６５でのハッシュ値マッチング、ライトパターンマッチング、及び精密パターンマッチング動作は、図７を参照して説明する。
【００５５】
図３は、本発明のさらに他の実施の形態に係るアンチマルウェアシステムのブロック図である。
【００５６】
図３に示すように、本実施の形態に係るアンチマルウェアシステム１００は、図１又は図２と類似の構成を有する。したがって、同一又は類似の機能を果たす構成要素に対しては、同じ図面番号を付し、以下では、差異点を中心に説明する。
【００５７】
本実施の形態では、アンチウイルスエンジン１５０と防火壁エンジン１３０がそれぞれウイルスパターンマッチング動作とルールパターンマッチング動作を行う別のハードウェアを備えた例である。
【００５８】
図３に示すように、防火壁エンジン１３０は、ルールパターンマッチング動作を行う第１マッチング部１５２を含み、アンチウイルスエンジン１５０は、ウイルスパターンマッチング動作を行う第２マッチング部１５４を備える。
【００５９】
第１マッチング部１５２は、ルールパターンＤＢ１２０とパケットデータとの間のマッチング動作を行い、第２マッチング部１５４は、ウイルスパターンＤＢ１４０とパケットデータとの間のマッチング動作を行う。ここで、第１マッチング部１５２と第２マッチング部１５４とは、それぞれハッシュ値マッチング、ライトパターンマッチング、及び精密パターンマッチング動作を行うことができる。ひいては、文法的に複雑なウイルスパターンの場合には、フルパターンマッチング動作まで行うことができる。
【００６０】
図４は、本発明の一実施の形態に係るアンチマルウェアシステムにおける動作を説明するための図である。
【００６１】
図４に示すように、本アンチマルウェアシステムは、通信部１１０、防火壁エンジン１３０、アンチウイルスエンジン１５０、アンチマルウェアマネジャー１６１、防火壁マネジャー１６２、アンチウイルスマネジャー１６４、アンチウイルスインスペクター１７０、補助バッファ１８０、第１バッファ１８２、第２バッファ１８４、第３バッファ１８５、送信機（ＴＸ）、及び受信機（ＲＸ）を備えることができる。ここで、通信部１１０は、外部にデータを送信するか、又は外部からデータを受信することができる。
【００６２】
以下では、上述した実施の形態との差異点を中心に説明する。
【００６３】
本発明の一実施の形態によれば、パケットデータに対してフィルタリング動作を行いつつ、これと並行してウイルススキャニング動作を行うことができる。ここで、フィルタリング動作とウイルススキャニング動作とは、正確に同じ時間に行われることもできるが、いずれか一方が先に行われることもできる。
【００６４】
本実施の形態に係る防火壁エンジン１３０は、パケットデータを受信した場合、フィルタリング動作を行いつつ又はフィルタリング動作を行った直後にそのパケットデータにウイルススキャニング対象になるデータがあるかどうかを判断できる。仮に、ウイルススキャニング対象になるデータがパケットデータに含まれていると判断されると、防火壁エンジン１３０は、パケットデータを送信せずに一時的に待機させる。例えば、待機バッファのような所にパケットデータを格納させることができる。
【００６５】
待機バッファに格納されたパケットデータは、パケットデータに対するウイルススキャニング結果を受信するまで待機する。
【００６６】
本発明の一実施の形態に係る防火壁エンジン１３０は、ウイルスが存在しないという結果を受信すると、待機中であったパケットデータを送信用バッファに送信する。もちろん、送信用バッファに送信されるパケットデータは、パケットルールにも違反しないことを前提とする。送信用バッファに送信されたパケットデータは、送信機（ＴＸ）を介して該当アプリケーション又は外部に送信されることができる。
【００６７】
一方、ウイルスが存在するという結果を受信した場合には、防火壁エンジン１３０は、待機中であったパケットデータを送信用バッファに送信せずに廃棄する。本実施の形態において、防火壁マネジャー１６２は、パケットデータに対するフィルタリング結果とウイルススキャニング結果とをユーザアプリケーションに通知することができる。
【００６８】
本発明の一実施の形態に係るアンチウイルスインスペクター１７０は、防火壁エンジン１３０からウイルススキャニング対象になるデータがあると通知された場合、アンチウイルスエンジン１５０にそういう事実を通知する。そして、アンチウイルスエンジン１５０からスキャニング結果を受けて、防火壁エンジン１３０と防火壁マネジャー１６２とに通知する。以後、防火壁エンジン１３０は、スキャニング結果に基づいて待機中であったパケットデータを送信用バッファに送信又は廃棄する。
【００６９】
以下、図４の実施の形態を参照して、データパケットに対するフィルタリングとスキャニングを併行する実施の形態を説明する。
【００７０】
図４に示すように、アンチマルウェアシステム１００の構成要素間の動作を番号を付して表示した。これらの番号は、説明の便宜のために表記したものであり、これらの番号が動作の遂行順位を定義したことではないことを明らかにする。
【００７１】
防火壁エンジン１３０は、第１バッファ１８２に格納したパケットデータを読んでフィルタリング動作を行い、フィルタリング動作中又はフィルタリング動作を完了した後には、パケットデータにウイルススキャニングするデータが含まれているかどうか（以下、スキャニング有無）を判断する。
【００７２】
防火壁エンジン１３０は、ウイルススキャニングの対象になるデータが含まれていない（以下、スキャニング不必要）と判断されると、パケットデータを第３バッファ１８５に送信する。
【００７３】
本発明の一実施の形態によれば、防火壁エンジン１３０がフィルタリング動作中に、スキャニング有無判断をすることができる。このような実施の形態では、スキャニング不要と判断された場合、パケットデータを第２バッファ１８４に格納することなく直ちに第３バッファ１８５に送信することができる。もちろん、第２バッファ１８４にパケットデータを格納してから、再度第３バッファ１８５に送信することもできる。
【００７４】
本発明の他の実施の形態によれば、防火壁エンジン１３０がフィルタリング完了後に、スキャニング有無判断を行うことができる。このような実施の形態では、防火壁エンジン１３０がスキャニング有無判断を行う間に、スキャニング有無判断の対象になるパケットデータが第２バッファ１８４に格納されていることができる。仮に、スキャニング不要と判断されると、防火壁エンジン１３０は、第２バッファ１８４に格納されていたパケットデータを第３バッファ１０に送信する。
【００７５】
ウイルススキャニングが必要である（以下、スキャニング必要）と判断された場合には、後述する(1)〜(11)動作が行われることができる。
【００７６】
防火壁エンジン１３０は、スキャニング必要判断をした場合には、現在フィルタリング中又は第２バッファ１８４に格納中のパケットデータを複写して補助バッファ１８０に格納することができる（(1)）。また、防火壁エンジン１３０は、ウイルススキャニングするパケットデータがあるという事実をアンチウイルスインスペクター１７０に通知する（(2)）。
【００７７】
防火壁エンジン１３０からウイルススキャニングするデータがあることを通知されたアンチウイルスインスペクター１７０は、補助バッファ１８６に接近してウイルススキャニングするデータが格納されているかどうかを確認し（(3)）、アンチウイルスエンジン１５０にウイルススキャニングするデータがあることを通知する（(4)）。
【００７８】
アンチウイルスエンジン１５０は、補助バッファ１８６に接近して補助バッファ１８６に格納されているパケットデータを読んでウイルススキャニング動作を行う（(5)）。
【００７９】
アンチウイルスエンジン１５０は、パケットデータに対するウイルススキャニング動作の遂行結果をアンチウイルスインスペクター１７０に通知する（(6)）。
【００８０】
アンチウイルスインスペクター１７０は、アンチウイルスエンジン１５０から受信したウイルススキャニング動作の遂行結果を防火壁マネジャー１６２と防火壁エンジン１３０とに通知する（(7)、(8)）。
【００８１】
防火壁マネジャー１６２は、アンチウイルスインスペクター１７０から受信したウイルススキャニング動作の遂行結果とフィルタリング結果とをアンチマルウェアマネジャー１６１に通知する（(9)）。ここで、フィルタリング結果は、防火壁エンジン１３０から通知されたことでありうる。
【００８２】
アンチマルウェアマネジャー１６１は、防火壁マネジャー１６２から通知されたスキャニング結果とフィルタリング結果とをアプリケーション部に送信できる（(11)）。
【００８３】
アンチウイルスインスペクター１７０からスキャニング結果を通知された防火壁エンジン１３０は、仮にスキャニング結果がウイルスが存在するということであれば、現在第２バッファ１８４に格納されたパケットデータを廃棄する。反面、ウイルスが存在しないということであれば、第２バッファ１８４に格納されたパケットデータを第３バッファ１８５に送信する（(10)）。
【００８４】
上述した実施の形態において、待機バッファ、すなわち第２バッファ１８４に格納されていたパケットデータを複写して補助バッファ１８０に格納させ、補助バッファ１８０に格納されたパケットデータをウイルススキャニングするよう構成したが、これと異なって構成することも可能である。
【００８５】
例えば、補助バッファ１８０を用意せずにアンチウイルスエンジン１５０が第２バッファ１８４に直接接近して第２バッファ１８４に格納されたパケットデータを読んでウイルススキャニングを行うよう構成できる。
【００８６】
他の例として、スキャニング有無判断の対象になるパケットデータを格納する第２バッファ１８４を、防火壁エンジン１３０の内部に位置させたが、防火壁エンジン１３０の外部に位置させても良い。
【００８７】
一方、アンチウイルスインスペクター１７０という構成要素を別に使用したが、これを別に使用しなくても本願発明は具現可能である。
【００８８】
例えば、アンチウイルスインスペクター１７０が有した機能をアンチウイルスマネジャー１６４が有するよう具現できる。このような場合、防火壁エンジン１３０は、アンチウイルスマネジャー１６４に補助バッファ１８０に格納されたパケットデータに対してスキャニングすることを通知し、アンチウイルスエンジン１５０は、アンチウイルスマネジャー１６４の指示によってウイルススキャニング動作を行い、遂行結果をアンチウイルスマネジャー１６４に通知する。以後、アンチウイルスマネジャー１６４は、スキャニング結果をアンチマルウェアマネジャー１６１及び／又は防火壁マネジャー１６２に通知する。以後の動作は、上述した実施の形態と同一である。
【００８９】
アンチウイルスエンジン１５０のウイルススキャニング動作と、防火壁エンジン１３０のフィルタリング動作については、図１〜図３の説明を参照すればよい。アンチウイルスエンジン１５０と防火壁エンジン１３０がそれぞれマッチング部を具備してそれぞれの動作を行うか（図３の実施の形態）、又はマッチング部を共有してそれぞれの動作を行うこと（図２の実施の形態）は、図４の実施の形態にも適用されうることはもちろんである。
【００９０】
図５は、本発明の他の実施の形態に係るアンチマルウェアシステムにおける動作を説明するための図である。以下では、図４との差異点を中心に説明する。
【００９１】
図５に示すように、防火壁エンジン１３０は、第１バッファ１８２に格納されたパケットデータにウイルススキャニングするデータが存在しているかどうかを判断した結果、存在すると判断した場合には、該当パケットデータを第２バッファ１８４に格納し、アンチウイルスインスペクター１７０にスキャニングするデータがあると通知する（(1)）。以後の(2)〜(3)の動作は、図４の実施の形態と同一である。
【００９２】
アンチウイルスエンジン１５０は、第２バッファ１８４に格納されたパケットデータを読んで（(4)）ウイルススキャニング動作を行う。以後の(5)〜(10)の動作は、図４の実施の形態と同一である。
【００９３】
図６は、本発明の他の実施の形態に係るアンチマルウェアシステムにおける動作を説明するための図である。以下では、図４との差異点を中心に説明する。
【００９４】
図６の実施の形態によれば、防火壁エンジン１３０は、パケットデータにスキャニングするデータが含まれているかどうかを判断し、判断結果、スキャニングが必要であると判断された場合、パケットデータに含まれたスキャニング対象データの種類（以下、スキャニングデータ種類とする）が何であるかも判断できる。
【００９５】
防火壁エンジン１３０は、スキャニング有無判断の結果、スキャニングする必要がないと、パケットデータを第３バッファ１８５に送信する。
【００９６】
防火壁エンジン１３０は、スキャニングが必要であると判断された場合には、パケットデータに含まれたスキャニング対象データの種類を判断する。防火壁エンジン１３０は、スキャニング対象データの種類が第１種であると、パケットデータを第２バッファ１８４にのみ格納し、そういう事実をアンチウイルスインスペクター１７０に通知する（(2)）。
【００９７】
一方、データ種類の判断結果、スキャニング対象データの種類が第２種類に該当すると、防火壁エンジン１３０は、パケットデータを補助バッファ１８０にも格納する。例えば、防火壁エンジン１３０は、スキャニング対象データが第２種類に該当すると、スキャニング対象データが含まれたパケットデータを第２バッファ１８４に格納し、そして補助バッファ１８０にも格納する。そして防火壁エンジン１３０は、スキャニング対象データがあるという事実をアンチウイルスインスペクター１７０に通知する（(2)）。
【００９８】
防火壁エンジン１３０がアンチウイルスインスペクター１７０にスキャニング対象データがあるという事実を通知するとき、スキャニング対象データがどんなバッファに格納されているか（例えば、補助バッファ１８０に格納されているかどうか）も共に通知できる。
【００９９】
アンチウイルスインスペクター１７０は、スキャニング対象データがあるという事実をアンチウイルスエンジン１５０に通知する（(4)）。このとき、スキャニング対象データが格納されたバッファがどんなことであるかを共に通知できる。
【０１００】
アンチウイルスエンジン１５０は、補助バッファ１８０又は第２バッファ１８４に格納されたデータを読んで（(5)´又は(5)´´）スキャニング動作を行った後、遂行結果をアンチウイルスインスペクター１７０に通知する（(6)）。アンチウイルスインスペクター１７０は、スキャニング結果を防火壁エンジン１３０に通知し（(8)）、防火壁エンジン１３０は、スキャニング結果にしたがって第２バッファ１８４に格納されたパケットデータを第３バッファ１０に送信又は廃棄する。
【０１０１】
防火壁マネジャー１６２とアンチマルウェアマネジャー１６１との機能は、図４の実施の形態と同一又は似ているので、これらについての説明は省略する。
【０１０２】
本実施の形態において第１種類データと第２種類データとの間の区分は、絶対的基準があるのではなく、本願発明を実施する者が適切に区分できる。例えば、データの大きさを基準に第１種類データと第２種類データとを区分できる。データの大きさを基準にデータの種類を区分する場合、例えばスクリプターファイルのようなデータは、その大きさが小さいので、第１種類に区分し、大きさが大きいデータは、第２種類に区分できる。
【０１０３】
図７は、本発明の一実施の形態に係るマッチング部の構成を示したブロック図である。
【０１０４】
図７に示すように、本発明の一実施の形態に係るマッチング部１１７は、システムインターフェース２０１、システムレジスタ２０３、メモリインターフェース２０５、メモリ２０７、バッファ２０９、ハッシュマッチャー２１１、オフセットアドレスジェネレーター２１３、ハッシュＱ（Ｑｕｅｕｅ）バッファ２１５、ライトパターンマッチャー２１７及びスキャンＱバッファ２１９を備えることができる。本発明の一実施の形態によれば、図７のマッチング部１１７は、図３、図４、図８、又は図９のマッチングユニットとして使用されることができる。
【０１０５】
システムインターフェース２０１は、アンチマルウェアシステム１００と外部構成要素との間のインターフェースを支援し、メモリインターフェース２０５は、アンチマルウェアシステム１００内に格納されたＤＢ又はファイルの内容を読み込むために使用される。
【０１０６】
メモリ２０７には、ハッシュマッチャー２１１でハッシュマッチング動作を行うためのデータ（例えば、パターンハッシュ値テーブル）が格納されうる。
【０１０７】
バッファ２０９は、メモリインターフェース２０５から読み込んだＤＢ又はファイルの内容を格納することができる。バッファ２０９は、デュアルバンク方式で構成されることができる。ターゲットデータは、バッファ２０９の格納容量に合う大きさ分だけ分割されて、２個のバッファ２０９に格納される。ここで、図７のマッチング部１１７がアンチ−ウイルスエンジンの一部として使用される場合には、前記ターゲットデータは、ファイルのようなデータでありうる。一方、図７のマッチング部１１７が防火壁エンジンの一部として使用される場合には、前記ターゲットデータは、パケットデータでありうる。
【０１０８】
ハッシュマッチャー２１１は、ターゲットデータのハッシュ値とハッシュマッチャーテーブルのマッチング動作を行う。ハッシュマッチャー２１１は、ハッシュ値マッチングが成功したターゲットデータをハッシュＱバッファ２１５に格納する。
【０１０９】
オフセットアドレスジェネレーター（ｏｆｆｓｅｔ  ａｄｄｒｅｓｓ  ｇｅｎｅｒａｔｏｒ）２１３は、ハッシュ値マッチングが成功した場合、サブマッチャーテーブルから前記マッチングされたハッシュ値が格納されたメモリアドレスを発生させる。
【０１１０】
ハッシュＱ（Ｑｕｅｕｅ）バッファ部２１５は、オフセットアドレスジェネレーター２１３から発生されたアドレスとターゲットデータとを互いに対応させて格納する。
【０１１１】
ライトパターンマッチャー２１７は、ハッシュＱバッファ部２１５が格納したターゲットデータの一部（例えば、ターゲットデータの中間値と最後値）とウイルスパターン（又はルールパターンのＩＰ  ａｄｄｒｅｓｓハッシュ値、プロトコルハッシュ値、又はＩＰ  ａｄｄｒｅｓｓの中間値）とを互いにマッチングさせる。ライトパターンマッチャー２１７は、ライトパターンマッチングが成功したターゲットデータをスキャンＱバッファ２１９に格納する。
【０１１２】
スキャンＱ（Ｑｕｅｕｅ）バッファ部２１９は、ライトパターンマッチングが成功したターゲットデータを格納することができる。
【０１１３】
図７のマッチング部１１７がアンチウイルスエンジンの一部として使用されるとき、アンチウイルスエンジンは、スキャンＱバッファ部２１９に格納されたターゲットデータとウイルスパターンとを精密にマッチングさせる精密パターンマッチング動作を行い、精密パターンマッチングが成功すると、フルパターンマッチングを行う。ここで、フルパターンマッチングは、複雑な文法を有したパターンである場合に行われ、簡単な文法を有したパターンは、精密パターンマッチングまでのみ行っても良い。
【０１１４】
一方、図７のマッチング部１１７が防火壁エンジンの一部として使用されるときには、防火壁エンジン１３０は、スキャンＱバッファ部２１９に格納されたターゲットデータとルールパターンとを精密にマッチングさせる精密パターンマッチング動作を行う。
【０１１５】
上記のマッチング動作の中で、ウイルスパターンマッチング動作は、韓国特許出願第１０−２０１０−００４９５６６号（２０１０．５．２７日付出願）、韓国特許出願第１０−２０１０−００５２９８１号（２０１０．６．４日付出願）、韓国特許出願第１０−２０１１−００４９２４９号（２０１１．５．２４日付出願）に記載されており、この特許出願に記載された内容は、本願発明に相反しない範囲内で本願明細書の一部として結合される。
【０１１６】
図８は、本発明の一実施の形態に係る防火壁エンジンのフィルタリング動作を説明するための図である。
【０１１７】
図８に示すように、防火壁エンジン１３０は、ハードウェアから構成されたマッチング部１１７を利用してルールパターンとパケットデータに対するマッチング動作を行う。本実施の形態において、防火壁エンジン１３０は、パケットデータのヘッダに含まれた情報、例えば、ＩＰ  ａｄｄｒｅｓｓ、プロトコル、ポート等とルールパターンに対するマッチング動作を行う。
【０１１８】
図８に示すように、ルールパターンＤＢ５１は、パケットルールを格納し、ルールパターンは、パケットの方向、ＩＰ  ａｄｄｒｅｓｓ、プロトコル、ポート、許容／遮断情報と内容を含むことができる。ここで、パケットの方向は、パケットが伝えられる方向（例えば受信、送信又は両方向）を表し、ＩＰ  ａｄｄｒｅｓｓは、ソースＩＰ  ａｄｄｒｅｓｓとデスティネーションＩＰ  ａｄｄｒｅｓｓを表し、プロトコルは、使用するプロトコルの種類（例えば、ＴＣＰ、ＵＤＰ、ＩＣＭＰ、Ａｌｌ）を表し、ポートは、設定しようとするポート番号を表し、そして許容／遮断情報は、表示された情報のパケットを許容するか遮断するかを表す。
【０１１９】
本実施の形態においてハッシュマッチャー２１１は、ハッシュマッチャーテーブル３０５を利用してハッシュ値マッチング動作を行い、ライトパターンマッチャー２１７は、サブマッチャーテーブル３０７を利用してライトパターンマッチング動作を行う。ここで、ハッシュマッチャー２１１は、バッファ２０９に格納されたデータのハッシュ値と、ハッシュマッチャーテーブル３０５をハードウェアー的にマッチングさせる。ハッシュ値がマッチングされたデータは、ハッシュＱバッファ２１５に格納され、ライトパターンマッチャー２１７は、ハッシュＱバッファ２１５に格納されたデータとサブマッチャーテーブルとをハードウェアー的にマッチングさせる。ライトパターンマッチャー２１７によりマッチングが成功されると、マッチングされたデータは、スキャンＱバッファ２１９に格納され、防火壁エンジン１３０は、ソフトウェア的にスキャンＱバッファ２１９に格納されたデータとルールパターンＤＢとが全て一致しているか否かを判断する精密パターンマッチング動作を行う。以後、防火壁エンジン１３０は、精密パターンマッチングの結果に応じて、パケットデータを通過又は遮断する。
【０１２０】
図８を参照し続けると、防火壁エンジン１３０は、フィルタリングするパケットデータを受けると、まずパケットデータに対するパケット分類プロセスを行い、パケット分類プロセスの分類結果にパターンマッチングする必要性がある場合にのみパケットデータとルールパターンＤＢとのマッチング動作を行う。防火壁エンジンは、パケット分類プロセスを行う際に、マッチング部１１７を少なくとも一回以上使用し、パケットデータとルールパターンＤＢとのマッチング動作を行うときにもマッチング部１１７を使用する。これについての詳細な説明は、後述する図１１〜図１５の説明を参照すれば良い。
【０１２１】
一方、図８に示す防火壁エンジン１３０の構成は、あくまでも例示的なものであり、パケットデータをフィルタリングできる構成であれば、いかなる構成でも本願発明に使用されることができる。
【０１２２】
図９は、本発明の一実施の形態に係る防火壁エンジンにおけるフィルタリング動作に用いられるテーブルを示す図である。
【０１２３】
図９に示すように、（ａ）は、ヘッダ情報を示した一例で、（ｂ）は、ハッシュマッチャーテーブルの一例で、そして（ｃ）は、サブマッチャーテーブルの一例である。
【０１２４】
本実施の形態において、防火壁エンジン１３０は、ルールパターンＤＢに格納されたパターンルールを利用して、ハッシュマッチャーテーブルを生成できる。具体的に、防火壁エンジン１３０は、所定のハッシュ関数を利用してルールパターンに各々含まれたＩＰ  ａｄｄｒｅｓｓ各々に対してハッシュ値を全部求め、このように求めたハッシュ値を図９の（ｂ）のようなハッシュマッチャーテーブルの形態で構成できる。
【０１２５】
図９の（ｂ）に示すように、ハッシュマッチャーテーブルは、インデックスと、そのインデックスの存在有無を表す存在有無項目を含み、ここでインデックスは、前記所定のハッシュ関数を介して導出されうる可能なすべてのハッシュ値で決められ、前記ルールパターンが有した各々のＩＰ  ａｄｄｒｅｓｓに対するハッシュ値と同じ値を有するインデックスに対して存在有無項目の値が「１」と設定される。
【０１２６】
ハッシュマッチャーテーブルは、また、プロトコルに対するハッシュ値とポートに対するハッシュ値をも含む。
【０１２７】
防火壁エンジン１３０は、サブマッチャーテーブルも生成できる。防火壁エンジン１３０は、ルールパターンＤＢがアップデートされるごとにサブマッチャーテーブルを新しく生成し、前記ハッシュマッチャーテーブルも新しく生成する。防火壁エンジン１３０は、サブマッチャーテーブルをルールパターンＤＢ及び／又はハッシュマッチャーテーブルから生成できる。
【０１２８】
サブマッチャーテーブルは、インデックス、ｍｉｄ項目、ｔａｉｌ項目、ｉｓｐｒｏ項目、ｉｓｐｏｒｔ項目、実際パターンメモリアドレス項目、及びｎｅｘｔ項目を含む。
【０１２９】
理解の便宜のために、図９（ｃ）を参照してサブマッチャーテーブルを説明するようにする。図９（ｃ）の第１番目のレコードには、インデックスが「Ｘ」で、ｍｉｄ項目が「０ｘ０３」で、ｔａｉｌ項目が「０ｘ２１」で、ｉｓｐｒｏ項目が「１」で、ｉｓｐｏｒｔ項目が「１」で、実際パターンメモリアドレスが「Ｏｘ０００１」で、ｎｅｘｔ項目が「Ｒ」である。
【０１３０】
サブマッチャーテーブルのインデックスに記載された値は、ハッシュマッチャーテーブルにおいて存在有無項目の値が「１」であるインデックス値から構成される。すなわち、サブマッチャーテーブルの第１番目のレコードのインデックス「Ｘ」は、ハッシュマッチャーテーブルにも存在するものであって、存在有無項目の値が「１」であることが分かる。一方、「Ｒ」のようにハッシュマッチャーテーブルに存在しない値が、サブマッチャーテーブルのインデックス値として存在しているが、これは、ルールパターンは、互いに異なるが、ＩＰ  ａｄｄｒｅｓｓのハッシュ値は互いに同じである場合（すなわち、ハッシュ衝突）のために設けられたことである。例えば、ルールパターンＡとルールパターンＢとは、互いに異なるＩＰ  ａｄｄｒｅｓｓを有しているが、ルールパターンＡに含まれたＩＰ  ａｄｄｒｅｓｓのハッシュ値とルールパターンＢに含まれたＩＰ  ａｄｄｒｅｓｓのハッシュ値とが互いに同じである場合（すなわち、両方とも「Ｘ」というハッシュ値を有することができる）が発生できる（ハッシュ衝突）。このような場合、図９の（ｃ）のサブマッチャーテーブルに示したように、ルールパターンＡに対したＩＰ  ａｄｄｒｅｓｓのハッシュ値を「Ｘ」と記載し、ルールパターンＢに対したＩＰ  ａｄｄｒｅｓｓのハッシュ値は、「Ｒ」と記載した後、Ｎｅｘｔ項目に「Ｒ」と記載する。このような場合、インデックスが「Ｘ」であるレコードに対してサブマッチングを行った結果、サブマッチングが成功されないと、インデックスが「Ｒ」であるレコードに対してサブマッチングを再度行う。本発明の一実施の形態によれば、ｎｅｘｔ項目に記載された「Ｒ」は、インデックスがＸであるレコードが格納されたメモリアドレスと、インデックスが「Ｒ」であるレコードが格納されたメモリアドレス間の差と定義されうる。
【０１３１】
サブマッチャーテーブルにおいてインデックス項目に記載される値（例えば、Ｘ、Ａ、Ｂ）は、ハッシュマッチャーテーブルから導出されうるが、ハッシュマッチャーテーブルを使用せずにルールパターンＤＢから直接導出されることもできる。すなわち、ルールパターンＤＢのルールパターンが各々有するＩＰ  ａｄｄｒｅｓｓに対するハッシュ値を求めると、これらのハッシュ値がサブマッチャーテーブルでのインデックスとして記載されることができる。
【０１３２】
サブマッチャーテーブルの第１番目のレコードのインデックス「Ｘ」は、実際パターンメモリアドレス項目から指定したメモリアドレス（すなわち、Ｏｘ０００１´）に格納されたルールパターンのＩＰ  ａｄｄｒｅｓｓに対するハッシュ値である。
【０１３３】
サブマッチャーテーブルのｍｉｄ項目の値「０ｘ０３」は、実際パターンメモリアドレス項目から指定したメモリアドレス（すなわち、Ｏｘ０００１´）に格納されたルールパターンのＩＰ  ａｄｄｒｅｓｓの中間バイトの値である。
【０１３４】
サブマッチャーテーブルのｔａｉｌ項目の値「０ｘ２１」は、実際パターンメモリアドレス項目から指定したメモリアドレス（すなわち、Ｏｘ０００１´）に格納されたルールパターンのＩＰ  ａｄｄｒｅｓｓの最後のバイトの値である。
【０１３５】
サブマッチャーテーブルのｉｓｐｒｏ項目の値「１」は、実際パターンメモリアドレス項目から指定したメモリアドレス（すなわち、Ｏｘ０００１´）に格納されたルールパターンは、すべてのプロトコルに対して適用されるということを表す。
【０１３６】
サブマッチャーテーブルのｉｓｐｏｒｔ項目の値「１」は、実際パターンメモリアドレス項目から指定したメモリアドレス（すなわち、Ｏｘ０００１´）に格納されたルールパターンは、すべてのポートに対して適用されるということを表す。
【０１３７】
以上説明した部分は、ＩＰマッチングプロセスのためのものであって、図９（ｃ）のサブマッチャーテーブルにおいてＩＰ  ｓｕｂと表示した領域についての説明であった。これから、図９（ｃ）のサブマッチャーテーブルにおいてＰｏｒｔ  ｓｕｂと表示した領域を説明する。この領域の値は、ポートマッチングプロセスの遂行のために使用される。
【０１３８】
図９（ｃ）のサブマッチャーテーブルにおいてインデックス「Ａ」は、実際パターンメモリアドレス項目から指定したメモリアドレス（すなわち、Ｏｘ２０００´）に格納されたルールパターンのポートのハッシュ値がすべてのポートに対して適用されるということを表す。一方、ＩＰ  ｈａｓｈ項目に記載された「Ｃ」は、実際パターンメモリアドレス項目から指定したメモリアドレス（すなわち、Ｏｘ２０００´）に格納されたルールパターンに含まれたＩＰ  ａｄｄｒｅｓｓのハッシュ値である。Ｐｒｏｔｏ  ｈａｓｈ項目に記載された「Ｄ」は、実際パターンメモリアドレス項目から指定したメモリアドレス（すなわち、Ｏｘ２０００´）に格納されたルールパターンに含まれたポートのハッシュ値である。インデックス「Ｂ」は、ＩＰ  ａｄｄｒｅｓｓハッシュ値が衝突した場合のために用意した値である。
【０１３９】
以上説明したハッシュマッチャーテーブルとサブマッチャーテーブルとは、防火壁エンジン１３０により生成されうるが、防火壁エンジン１３０でなくて別に備えられた他の構成要素により生成されることもできる。
【０１４０】
図１０は、本発明の一実施の形態に係るアンチマルウェアシステムにおけるマッチング動作を行う過程の他の例を示した図である。
【０１４１】
図１０に示すように、アンチウイルスエンジン１５０は、ハッシュ値マッチングとライトパターンマッチング動作とを行い、ライトパターンマッチングが成功すると、ウイルスパターンとターゲットデータ（パケットデータ）とが互いに正確に一致するかを判断するために、精密パターンマッチング動作を行う。アンチウイルスエンジン１５０は、精密パターンマッチングの結果によってウイルス感染有無を判断する。
【０１４２】
図１０を参照し続けると、ウイルスパターンＤＢ１２０に格納されているウイルスパターンは、複数のサブパターンに分離されて（「マルチパターン構成プロセス」）ＤＢにロードされる。「マルチパターン構成プロセス」は、アンチウイルスマネジャーによってウイルスパターンＤＢ１４０がメモリにロードされる前に、各ウイルスパターンを該当マッチャー別に、そして複数のサブパターンに分離する作業を行う。このように分離されたことを「ＤＢローディング」というモジュールによってメモリにロードする。
【０１４３】
ウイルスパターンＤＢ１４０がロードされると、アンチウイルスエンジン１５０のマッチング部１１７がマッチング動作を行う。マッチング部１１７は、ハッシュ値マッチング動作と、ライトパターンマッチング動作とを行う。マッチング部１１７の動作は、図７の実施の形態において説明したことがあるので、ここではその説明を省略する。一方、ハッシュマッチャーテーブルとサブマッチャーテーブルとを生成する方法と、ハッシュ値マッチング動作及びライトパターンマッチング動作は、韓国特許出願番号１０−２０１０−００４９５６６号（２０１０年５月２７日付出願）、韓国特許出願番号１０−２０１０−００５２９８１号（２０１０年６月４日付出願）、及び韓国特許出願番号１０−２０１１−００４９２４９（２０１１年５月２４日付出願）に詳細に記載されており、これらの文献に記載された内容は、本願発明の内容と相反しない範囲内で本願明細書の一部として結合される。
【０１４４】
図１１は、本発明の一実施の形態に係るパケットフィルタリング方法を説明するためのフローチャートである。
【０１４５】
図１１に示すように、防火壁エンジン１３０は、フィルタリングする対象になるパケットデータが入力されると（Ｓ４０１）、パケットデータのヘッダ（ｈｅａｄｅｒ）をパターン形態に変換し（Ｓ４０３）、パケットデータのヘッダ情報を利用してパケットデータに対してパケット分類プロセスを実施する（Ｓ４０５）。ステップＳ４０３でのパターン形態は、例えば図９の（ａ）のような形態でありうる。本実施の形態において、ステップＳ４０３は、例示的なものであって、フィルタリングする対象になるパケットデータのヘッダを必ず図９の（ａ）のような形態に変換する必要はない。例えば、図１１の実施の形態は、ステップＳ４０３の代りに、パケットデータからヘッダ情報を抽出するステップを含め、このように抽出したヘッダ情報を利用してステップＳ４０５を行うように構成することも可能である。パケット分類プロセスについては、後述する図１２において説明する。
【０１４６】
パケットデータに対してパケット分類プロセスが完了すると、後述するステップＳ４０７のパターンマッチング動作を行うか否かが決定される。すなわち、防火壁エンジン１３０は、入力されたすべてのパケットデータに対してパターンマッチング動作を行うのではなく、パケット分類プロセス（Ｓ４０５）をパケットデータに適用することによって、パケットデータに対してパターンマッチング動作を行うか否かを決定し、パターンマッチング動作を行うと決定した場合にのみ、後述するパターンマッチングステップ（Ｓ４０７）を行う。
【０１４７】
パターンマッチングステップでは、パケットデータをルールパターンＤＢ１２０に既格納されたルールパターンとのマッチングを行う。これにより、パケットデータがルールパターンとマッチングされるか否かを確認する（Ｓ４０７）。例えば、防火壁エンジン１３０は、図８に例示的に示すハードウェア１１７を利用して、パケットデータのヘッダ情報（ＩＰ  ａｄｄｒｅｓｓ、ポート番号、プロトコル）とルールパターンとがマッチングされるか否かを確認することができる。図８のハードウェア１１７を利用してステップＳ４０７を行うとき、ハッシュマッチャー２１１は、パケットデータに対するヘッダのハッシュ値と、ルールパターンのヘッダのハッシュ値とをマッチングさせ、ハッシュ値が互いにマッチングされると、ライトパターンマッチャー２１７は、パケットデータのヘッダの中間値と最後値と、ルールパターンのヘッダの中間値と最後値とを各々マッチングさせ、これらの値が互いにマッチングされると、防火壁エンジンは、パケットデータのヘッダの全てとルールパターンのヘッダの全てとをマッチングさせる精密マッチング動作を行う。精密マッチング結果、マッチングされると、防火壁エンジン１３０は、後述するようにパケットデータを遮断することができる。パケットデータがルールパターンとマッチングされると、マッチングされたルールパターンに応じてパケットデータを許容（Ａｌｌｏｗ）又は遮断（Ｂｌｏｃｋ）する（Ｓ４０９）。反面、パケットデータがルールパターンとマッチングされないと、マッチングが失敗したという意味であるから、パケットデータを通過させる（Ｓ４１１）。
【０１４８】
図１２は、本発明の一実施の形態に係るパケット分類プロセスを説明するためのフローチャートである。
【０１４９】
図１２に示すように、パケット分類プロセスは、ステップＳ５０１〜Ｓ５１９からなり、防火壁エンジンは、パケット分類プロセス結果、パケットデータに対してパターンマッチングする必要があると決定した場合、パターンマッチングステップ（Ｓ５２１）を行う。本実施の形態によれば、防火壁エンジンが少なくとも一つ以上のフラグを使用してパケット分類プロセスを行う。
【０１５０】
フラグ（ｆｌａｇ）は、ＩＰフラグ、プロトコルフラグ、ポートフラグ、ＩＰマッチングと関連した分類有無フラグ、プロトコルマッチングと関連した分類有無フラグ、及びポートマッチングと関連した分類有無フラグを含むことができる。本実施の形態において、防火壁エンジン１３０は、ルールパターンＤＢ及び／又は図９の（ｃ）に示すサブマッチャーテーブルを参照して、各フラグの値を設定できる。防火壁エンジン１３０は、フラグ値をシステムレジスタ２０３に格納することができるが、システムレジスタ２０３でない他の格納部（図示せず）にも格納できることはもちろんである。防火壁エンジン１３０は、ルールパターンのうち、すべてのＩＰ  ａｄｄｒｅｓｓに対してパスするルールパターンが一つでもあれば、ＩＰフラグをＡＬＬに設定する。同じ方式で、防火壁エンジン１３０は、ルールパターンの中ですべてのプロトコルに対してパスするルールパターンが一つでもあれば、プロトコルフラグをＡＬＬに設定する。そして、防火壁エンジン１３０は、ルールパターンの中ですべてのポートに対してパスするルールパターンが一つでもあれば、ポートフラグをＡＬＬに設定する。以上説明したフラグに対する設定動作は、パケットデータに対する分類プロセスが始まる前に行われても良く、分類プロセスの進行中に行われても良い。
【０１５１】
一方、分類有無フラグは、各々ＩＰマッチング、プロトコルマッチング、ポートマッチング過程において防火壁エンジンにより、Ｙｅｓ又はＮｏに設定される。この部分についての説明は、各々図１３、図１４、図１５で後述する。
【０１５２】
防火壁エンジン１３０は、フィルタリングする対象になるパケットデータが入力されると、ＩＰフラグをチェックしてＩＰフラグがＡｌｌに設定されているか否かを確認する（Ｓ５０１）。ＩＰフラグがＡｌｌでないと、前記パケットデータに対してＩＰマッチングプロセスを実施する（Ｓ５０３）。ＩＰマッチングプロセスについては、後述する図１３で説明する。
【０１５３】
防火壁エンジン１３０は、ＩＰマッチングプロセスの完了後、ＩＰマッチングと関連した分類有無フラグが「Ｎ」に設定された状態であると（Ｓ５０５：Ｎ）、プロトコルフラグがＡＬＬに設定されているか否かを確認する（Ｓ５０７）。ここで、ＩＰマッチングと関連した分類有無フラグは、図１３を参照して後述するが、ＩＰマッチングプロセス過程において「Ｙ」又は「Ｎ」のうちの何れか一つの値に設定される。プロトコルフラグがＡｌｌでないと、防火壁エンジン１３０は、プロトコルマッチングプロセスを実施する（Ｓ５０９）。プロトコルマッチングプロセスについては、後述する図１４で説明する。
【０１５４】
プロトコルマッチングプロセスの完了後、防火壁エンジン１３０は、プロトコルマッチングと関連した分類有無フラグが「Ｎ」に設定された状態であると（Ｓ５１１：Ｎ）、ポートフラグがＡＬＬに設定されているか否かを確認する（Ｓ５１３）。仮にポートフラグがＡＬＬに設定された状態であると、ＩＰフラグがＡＬＬに設定されているか否かを確認する（Ｓ５１９）。ステップＳ５１９の遂行結果、防火壁エンジン１３０は、ＩＰフラグがＡＬＬに設定された状態であると、該当パケットデータに対するルールパターンマッチング動作を終了するが、ＩＰフラグがＡＬＬでない場合（Ｓ５１９：Ｎ）、パターンマッチング動作を行う（Ｓ５２１）。
【０１５５】
ステップＳ５１３の遂行結果、ポートフラグがＡＬＬに設定された状態でないと（Ｓ５１３：Ｎ）、防火壁エンジン１３０は、パケットデータに対するポートマッチングプロセスを実施する（Ｓ５１５）。ポートマッチングプロセスに対しては、後述する図１５で説明する。ポートマッチングプロセスの完了後、防火壁エンジンは、ポートマッチングと関連した分類有無フラグが「Ｎ」に設定された状態であると（Ｓ５１７：Ｎ）、該当パケットに対するパターンマッチングを実施する（Ｓ５２１）。
【０１５６】
一方、防火壁エンジンは、分類有無フラグが「Ｙ」に設定された状態であると（Ｓ５０５：Ｙ、Ｓ５１１：Ｙ、Ｓ５１７：Ｙ）、該当パケットデータに対するルールパターンマッチング動作を終了する。
【０１５７】
図１３は、本発明の一実施の形態に係るＩＰマッチングプロセスを説明するためのフローチャートである。
【０１５８】
防火壁エンジン１３０は、パケットデータのヘッダに含まれたＩＰ  ａｄｄｒｅｓｓに対するハッシュ（ｈａｓｈ）値とルールパターンＤＢに含まれたルールパターンのＩＰ  ａｄｄｒｅｓｓのハッシュ値とが互いにマッチングされるか否かを行うハッシュマッチャー（ｈａｓｈ  ｍａｔｃｈｅｒ）プロセスを実施する（Ｓ６０１）。本発明の一実施の形態によれば、防火壁エンジンのハッシュマッチャー２１１は、パケットデータのヘッダに含まれたＩＰ  ａｄｄｒｅｓｓに対するハッシュ値と、図９の（ｂ）に例示されるハッシュマッチャーテーブルとを互いにマッチングさせる。例えば、パケットデータのヘッダに含まれたＩＰ  ａｄｄｒｅｓｓに対するハッシュ値が「Ｘ」であると、ハッシュマッチャーテーブルに「Ｘ」が存在すると表示されているので、このような場合は、両者が互いにマッチングされるといえる。
【０１５９】
ハッシュマッチャープロセスにおいてマッチングされないと（Ｓ６０３）、防火壁エンジン１３０は、ＩＰマッチングと関連した分類有無フラグを該当パケットが分類されたという意味（すなわち、「Ｙ」）に変更する（Ｓ６１３）。反面、ハッシュマッチャープロセスにおいてマッチングされると（Ｓ６０３）、防火壁エンジンは、パケットに対してサブマッチャーテーブルを利用してマッチングを行うサブマッチャー（ｓｕｂ  ｍａｔｃｈｅｒ）プロセスを実施する（Ｓ６０５）。本発明の一実施の形態によれば、防火壁エンジン１３０のライトパターンマッチャー２１７は、パケットデータのヘッダに含まれたＩＰ  ａｄｄｒｅｓｓの中間値と最後値とを、図９の（ｃ）に例示されたサブマッチャーテーブルと互いにマッチングさせる。
【０１６０】
サブマッチャープロセスにおいてマッチングされないと（Ｓ６０７）、防火壁エンジンは、ＩＰマッチングと関連した分類有無フラグを該当パケットが分類されたことであるという意味（すなわち、「Ｙ」）に変更する（Ｓ６１３）。反面、サブマッチャープロセスにおいてマッチングされると（Ｓ６０７）、防火壁エンジンは、サブマッチャーテーブルにおいてすべてのプロトコルに適用されるルールが存在しているか否かを表すｉｓｐｒｏの値と、すべてのポートに適用されるルールが存在しているか否かを表すｉｓｐｏｒｔの値とを確認する（Ｓ６０８）。ここで、ｉｓｐｏｒｔの値が「１」というのは、ルールパターンＤＢに存在するルールパターンの中ですべてのポートに適用されるルールパターンが少なくとも一つは存在するということを意味し、ｉｓｐｒｏの値が「１」というのは、ルールパターンＤＢに存在するルールパターンの中ですべてのプロトコルに適用されるルールパターンが少なくとも一つは存在するということを意味する。
【０１６１】
ステップＳ６０８の遂行結果、ｉｓｐｒｏ値が１でないと、防火壁エンジン１３０は、プロトコルフラグをＮｏｔ  ａｌｌに変更する（Ｓ６１５）。一方、防火壁エンジン１３０は、ｉｓｐｒｏ値が１であると、ｉｓｐｏｒｔ値が１であるか否かを確認する（Ｓ６１１）。
【０１６２】
防火壁エンジンは、ｉｓｐｏｒｔ値が１でないと、ポートフラグをＮｏｔ  ａｌｌに変更する（Ｓ６１７）。
【０１６３】
一方、図１３の実施の形態での分類有無フラグと、プロトコルフラグと、ポートフラグは、各々図１２のステップＳ５０５が行われるときに参照される分類有無フラグと、ステップＳ５０７が行われるときに参照されるプロトコルフラグと、ステップＳ５１３が行われるときに参照されるポートフラグに該当する。
【０１６４】
図１４は、本発明の一実施の形態に係るプロトコルマッチングプロセスを説明するためのフローチャートである。
【０１６５】
防火壁エンジン１３０は、パケットデータのヘッドに含まれたプロトコルに対するハッシュ値と、ルールパターンＤＢに含まれたルールパターンのプロトコルのハッシュ値とが互いにマッチングされるか否かを行うハッシュマッチャープロセスを実施する（Ｓ７０１）。本発明の一実施の形態によれば、防火壁エンジン１３０のハッシュマッチャー２１１は、パケットデータのヘッダに含まれたプロトコルに対するハッシュ値と、図９の（ｂ）に例示されるハッシュマッチャーテーブルとを互いにマッチングさせる。例えば、パケットデータのヘッダに含まれたプロトコルに対するハッシュ値が「Ｚ」であれば、ハッシュマッチャーテーブルに「Ｚ」が存在しないと表示されているので、このような場合は、両者が互いにマッチングされないといえる。
【０１６６】
ハッシュマッチャープロセスにおいてマッチングされると（Ｓ７０３）、防火壁エンジン１３０は、ハッシュマッチャープロセスを終了し、次のステップ（例えば、図１２のステップＳ５１１１）を行う。反面、ハッシュマッチャープロセスにおいてマッチングされないと、防火壁エンジンは、プロトコルマッチングと関連した分類有無フラグを該当パケットが分類されたことであるという意味（すなわち、「Ｙ」）に変更する（Ｓ７０５）。ここで、分類有無フラグは、図１２のステップＳ５１１にて参照される分類有無フラグに該当する。
【０１６７】
本実施の形態においてプロトコルマッチングは、場合の数が多くないので、サブマッチャープロセスを行わずに、ハッシュマッチャープロセスのみを使用して検証した。しかしながら、これは、本願発明の例示に過ぎず、プロトコルマッチングにおいてもサブマッチャープロセスを行うように構成することも当然可能である。
【０１６８】
図１５は、本発明の一実施の形態に係るポートマッチングプロセスを説明するためのフローチャートである。
【０１６９】
防火壁エンジン１３０は、パケットデータのヘッドに含まれたポートに対するハッシュ値とルールパターンＤＢに含まれたルールパターンのポートのハッシュ値とが互いにマッチングされるか否かを行うハッシュマッチャープロセスを実施する（Ｓ８０１）。本発明の一実施の形態によれば、防火壁エンジンのハッシュマッチャー２１１は、パケットデータのヘッダに含まれたポートに対するハッシュ値と、図９の（ｂ）に例示されるハッシュマッチャーテーブルとを互いにマッチングさせる。例えば、パケットデータのヘッダに含まれたプロトコルに対するハッシュ値が「Ａ」であると、ハッシュマッチャーテーブルに「Ａ」が存在すると表示されているので、このような場合は、両者のハッシュ値が互いにマッチングされるといえる。
【０１７０】
ハッシュマッチャープロセスにおいてマッチングされないと（Ｓ８０３）、防火壁エンジンは、ポートマッチングと関連した分類有無フラグを該当パケットが分類されたことであるという意味（すなわち、「Ｙ」）に変更する（Ｓ８０９）。
【０１７１】
ハッシュマッチャープロセスにおいてマッチングされると（Ｓ８０３）、防火壁エンジン１３０は、データパケットに対してサブマッチャープロセスを実施する（Ｓ８０５）。本発明の一実施の形態によれば、防火壁エンジンのライトパターンマッチャー２１７は、パケットデータのヘッダに含まれたＩＰ  ａｄｄｒｅｓｓのハッシュ値とプロトコルのハッシュ値とを、図９の（ｃ）に例示されるサブマッチャーテーブルと互いにマッチングさせる。
【０１７２】
サブマッチャープロセスにおいてマッチングされないと（Ｓ８０７）、ポートマッチングと関連した分類有無フラグを該当パケットが分類されたことであるという意味（すなわち、「Ｙ」）に変更する（Ｓ８０９）。一方、サブマッチャープロセスにおいてマッチングされると、防火壁エンジンは、ポートマッチングプロセスを終了し、図１２のステップＳ５１７を行う。
【０１７３】
一方、図１５のステップＳ８０９における分類有無フラグは、図１２のステップＳ５１７にて参照される分類有無フラグに該当する。
【０１７４】
図１６は、本発明の一実施の形態に係るアンチマルウェアシステムにおける動作方法を説明するためのフローチャートである。一方、図１６の動作方法は、図４〜図６に示すアンチマルウェアシステムのうちのいずれか一つで具現されることができるが、これらのシステムに限定されて具現される必要はない。
【０１７５】
図１６に示すように、アンチウイルスエンジン１５０がパケットデータを受信すると、防火壁エンジン１３０は、パケットデータに対するフィルタリング動作を行う（Ｓ９０１）。
【０１７６】
防火壁エンジン１３０は、パケットデータがフィルタリングルールを満たさない場合（Ｓ９０３−Ｎ）には、パケットデータを遮断し（Ｓ９０７）、満たす場合でも前記パケットデータを直ちに通過させるのではなく、一旦待機させる。
【０１７７】
アンチウイルスエンジンは、前記待機中であるパケットデータに対してウイルススキャニング動作を行う（Ｓ９０５）。
【０１７８】
スキャニング結果、ウイルスがパケットデータに存在しないと（Ｓ９０９−Ｙ）、待機中であるパケットデータは、外部又は該当アプリケーションに送信され（Ｓ９１１）、ウイルスがパケットデータに存在すると（Ｓ９０９−Ｎ）、待機中であるパケットは廃棄されるか、又は政策によって別に管理されることができる（Ｓ９１３）。
【０１７９】
図１６のアンチマルウェアシステムにおける動作方法は、例えば下記のように変形された方法も可能である。
【０１８０】
第１の方法に、防火壁エンジン１３０は、ターゲットデータがフィルタリングルールを満たす場合、そのターゲットデータにウイルススキャニング対象になるデータがあるかどうかを判断する。判断結果、スキャニング対象になるデータがある場合にのみＳ９０５〜Ｓ９１３の動作が行われる。
【０１８１】
第２の方法に、アンチウイルスエンジン１５０は、パケットデータに対してフィルタリングルールを満たしているかどうかに関わらず、すべてのパケットデータに対してウイルススキャニング動作を行う。すなわち、パケットデータを受信すると、防火壁エンジン１３０とアンチウイルスエンジン１５０は、それぞれの動作を行うことができる。
【０１８２】
以上説明した実施の形態は、アンチマルウェアシステムをＳＯＣ基盤として構成したが、これは例示に過ぎず、本願発明がＳＯＣ基盤のみで具現される必要はない。例えば、アンチマルウェアシステムをモバイル機器やＰＣにインストールされるアプリケーションの形態で具現されることも可能である。例えば、図１〜図６に示す、マネジャー１６０、アンチウイルスエンジン１５０、防火壁エンジン１３０をアプリケーション部３００の領域にソフトウェアの形態で具現することが可能である。
【０１８３】
以上、本発明は、限定された実施の形態と図面により説明されたが、本発明は、上記の実施の形態に限定されるものではなく、本発明が属する分野における通常の知識を有した者であればこのような記載から多様な修正及び変形が可能である。したがって、本発明の範囲は、説明された実施の形態に限って決まってはならず、後述する特許請求の範囲だけでなく、この特許請求の範囲と均等なものによって決まらねばならない。
【符号の説明】
【０１８４】
１００      アンチマルウェアシステム
１１０      通信部
１２０      ルールパターンＤＢ
１３０      防火壁エンジン
１４０      ウイルスパターンＤＢ
１５０      アンチウイルスエンジン
１６１      アンチマルウェアマネジャー
２００      ドライバー
３００      アプリケーション部
【図１】
0005226105.tif 000002
【図２】
0005226105.tif 000003
【図３】
0005226105.tif 000004
【図４】
0005226105.tif 000005
【図５】
0005226105.tif 000006
【図６】
0005226105.tif 000007
【図７】
0005226105.tif 000008
【図８】
0005226105.tif 000009
【図９】
0005226105.tif 000010
【図１０】
0005226105.tif 000011
【図１１】
0005226105.tif 000012
【図１２】
0005226105.tif 000013
【図１３】
0005226105.tif 000014
【図１４】
0005226105.tif 000015
【図１５】
0005226105.tif 000016
【図１６】
0005226105.tif 000017