(57)【特許請求の範囲】
【請求項１】
アンチマルウェアシステムにおける動作方法であって、
フィルタリング対象であるデータ（以下、第１ターゲットデータとする）とルールパターンとをマッチングさせることによって、前記第１ターゲットデータに対してフィルタリング動作を行うステップと、
ウイルススキャニング対象になるデータ（以下、第２ターゲットデータとする）とウイルスパターンとをマッチングさせることによって、前記第２ターゲットデータに対してウイルススキャニング動作を行うステップとを含み、
前記フィルタリング動作と前記スキャニング動作とは、システムオンチップ上で動作し、
前記第１ターゲットデータにフィルタリング動作を行うステップは、
前記ルールパターンのハッシュ値と前記第１ターゲットデータの少なくとも一部のハッシュ値とをマッチングさせるステップと、
前記ハッシュ値のマッチングが成功した場合、前記ルールパターンと前記第１ターゲットデータとをマッチングさせるステップとを含むことを特徴とするアンチマルウェアシステムにおける動作方法。
【請求項２】
前記第１ターゲットデータは、前記システムオンチップが装着されるデバイスから受信したことであって、前記フィルタリング動作を行うステップは、前記デバイスから受信する第１ターゲットデータに対してフィルタリング動作を行うことを特徴とする請求項１に記載のアンチマルウェアシステムにおける動作方法。
【請求項３】
前記第１ターゲットデータは、前記システムオンチップが備える通信部を介して外部デバイスから受信したことであって、前記フィルタリング動作を行うステップは、前記通信部を介して受信する第１ターゲットデータに対して前記フィルタリング動作を行うことを特徴とする請求項１に記載のアンチマルウェアシステムにおける動作方法。
【請求項４】
前記ルールバターンと前記ウイルスパターンとを前記システムオンチップが有する格納部に格納するステップを含むことを特徴とする請求項１に記載のアンチマルウェアシステムにおける動作方法。
【請求項５】
前記ハッシュ値とをマッチングさせるステップは、
前記第１ターゲットデータのヘッダに含まれたＩＰアドレス、プロトコル、及びポートのうち、少なくとも何れか一つのハッシュ値と、前記ルールパターンに含まれたＩＰアドレス、プロトコル、及びポートのうち、少なくとも何れか一つのハッシュ値とをマッチングさせることであることを特徴とする請求項１に記載のアンチマルウェアシステムにおける動作方法。
【請求項６】
前記第１ターゲットデータに対してフィルタリング動作を行うステップは、
前記第１ターゲットデ一タに対してパケット分類プロセスを行うステップと、
前記パケット分類プロセスの遂行結果、前記第１ターゲットデ一タに対するパターンマッチングを行うと判断された場合にのみ、前記第１ターゲットデータと前記ルールパターンに対するパターンマッチングを行うステップとを含むことを特徴とする請求項１に記載アンチマルウェアシステムにおける動作方法。
【請求項７】
前記ルールパターンのうち、すべてのＩＰアドレスに対してパスするルールパターンが一つでも存在すると、ＩＰフラグをＡＬＬに設定するステップと、
前記ルールパターンのうち、すべてのプロトコルに対してパスするルールパターンが１つでも存在すると、プロトコルプラグをＡＬＬに設定するステップと、
前記ルールパターンにすべてのポートに対してパスするルールパターンが一つでも存在すると、ポートフラグをＡＬＬに設定するステップとをさらに含み、
前記パケット分類プロセスは、前記ＩＰフラグ、プロトコルフラグ及びポートフラグを利用して行われることを特徴とする請求項６に記載のアンチマルウェアシステムにおける動作方法。
【請求項８】
前記ＩＰフラグ、プロトコルフラグ及びポートフラグがすべてＡＬＬに設定されているか、又は前記ＩＰフラグと前記ポートフラグとがＡＴＴに設定された場合には、前記第１ターゲットデータに対するパターンマッチングを行うステップは行わないことを特徴とする請求項７に記載のアンチマルウェアシステムにおける動作方法。
【請求項９】
前記パケット分類プロセスを行うステップは、
前記ルールパターンのうち、すべてのＩＰアドレスに対してパスするルールが全く存在しない場合には、前記第１ターゲットデータに含まれたＩＰアドレスと前記ルールパターンに各々含まれたＩＰアドレスとをマッチングさせるＩＰマッチングプロセス遂行ステップを含み、
前記ルールパターンのうち、すべてのＩＰアドレスに対してパスするルールが一つでも存在する場合には、前記ＩＰマッチングプロセスを行わないことを特徴とする請求項６に記載のアンチマルウェアシステムにおける動作方法。
【請求項１０】
前記ＩＰマッチングプロセスの遂行結果、ＩＰマッチングが成功した場合にのみ前記第１ターゲットデータに対するパターンマッチングを行うことを特徴とする請求項９に記載のアンチマルウェアシステムにおける動作方法。
【請求項１１】
前記ＩＰマッチングプロセスは、
前記ＩＰマッチングが成功した場合、前記ＩＰマッチングが成功したルールパターンがすべてのプロトコルに対して適用されるか否かを確認し、前記ＩＰマッチングが成功したルールパターンが仮にすべてのプロトコルに対して適用されることであると、プロトコルフラグをＡＬＬに設定することを特徴とする請求項９に記載のアンチマルウェアシステムにおける動作方法。
【請求項１２】
前記パケット分類プロセスを行うステップは、
前記プロトコルプラグがＡＬＬに設定されていない場合、前記第１ターゲットデータに含まれたプロトコルと前記ＩＰマッチングが成功したルールパターンに含まれたプロトコルとをマッチングさせるプロトコルマッチングプロセス遂行ステップをさらに含み、
前記プロトコルプラグがＡＬＬに設定された場合には、前記プロトコルマッチングプロセスを行わないことを特徴とする請求項１１に記載のアンチマルウェアシステムにおける動作方法。
【請求項１３】
前記プロトコルマッチングプロセスの遂行結果、プロトコルマッチングが成功した場合にのみ前記第１ターゲットデータに対するパターンマッチングを行うことを特徴とする請求項１２に記載のアンチマルウェアシステムにおける動作方法。
【請求項１４】
前記プロトコルマッチングプロセスの遂行結果、プロトコルマッチングが成功した場合、前記プロトコルマッチングが成功したルールパターンがすべてのポートに対して適用されることであるか否かを確認し、仮に、前記プロトコルマッチングが成功したルールパターンがすべてのポートに対して適用されることであると、ポートフラグをＡＬＬに設定することを特徴とする請求項１２に記載のアンチマルウェアシステムにおける動作方法。
【請求項１５】
前記パケット分類プロセスを行うステップは、
前記ポートプラグがＡＬＬに設定されていない場合、前記第１ターゲットデータに含まれたポートと前記ＩＰマッチングが成功したルールパターンに含まれたポートとをマッチングさせるポートマッチングプロセス遂行ステップをさらに含み、
前記ポートプラグがＡＬＬに設定された場合には、前記ポートマッチングプロセスを行わないことを特徴とする請求項１４に記載のアンチマルウェアシステムにおける動作方法。
【請求項１６】
前記ポートマッチングプロセスの遂行結果、ポートマッチングが成功し、そして前記ＩＰマッチングが成功した場合にのみ前記第１ターゲットデータに対するパターンマッチングを行うことを特徴とする請求項１５に記載のアンチマルウェアシステムにおける動作方法。
【請求項１７】
前記第１ターゲットデータと前記ルールパターンに対するパターンマッチングを行うステップは、
前記第１ターゲットデータに含まれたＩＰアドレスに対するハッシュ値と前記ルールパターンに各々含まれたＩＰアドレスに対するハッシュ値とをマッチングさせるハッシュ値マッチングステップと、
前記ハッシュ値のマッチングが成功した場合、前記ハッシュ値のマッチングが成功したルールパターンに含まれたＩＰアドレスの中間値と最後値と、前記第１ターゲットデータに含まれたＩＰアドレスの中間値と最後値とを各々マッチングさせるライトパターンマッチングステップと、
前記ライトパターンマッチングステップが成功した場合、前記ライトパターンマッチングが成功したルールバターンと前記第１ターゲットデータとをマッチングさせる精密パターンマッチングステップとを含むことを特徴とする請求項６に記載のアンチマルウェアシステムにおける動作方法。
【請求項１８】
前記ハッシュ値マッチングステップは、
ハッシュマッチャーテーブルと前記第１ターゲットデータのＩＰのハッシュ値とを互いにマッチングさせるステップであり、
前記ハッシュマッチャーテーブルは、ルールパターンの各々に含まれたＩＰに対したハッシュ値と、そのハッシュ値の存在有無を表す項目を含んでいることを特徴とする請求項１７に記載のアンチマルウェアシステムにおける動作方法。
【請求項１９】
前記ライトパターンマッチングステップは、
サブマッチャーテーブルと前記第１ターゲットデータに含まれたＩＰアドレスの一部値とを互いにマッチングさせるステップであり、
前記サブマッチャーテーブルは、ルールパターンの各々に含まれたＩＰアドレスのハッシュ値を表す項目と、そのＩＰアドレスの一部を表す項目とを含んでいることを特徴とする請求項１７に記載のアンチマルウェアシステムにおける動作方法。
【請求項２０】
前記ＩＰアドレスの一部は、ＩＰアドレスの中間値と最後値であることを特徴とする請求項１９に記載のアンチマルウェアシステムにおける動作方法。
【請求項２１】
前記サブマッチャーテーブルは、ルールパターンが格納されたアドレスを表す項目をさらに含み、
前記精密パターンマッチングステップは、前記ルールパターンが格納されたアドレスの中で、前記ライトパターンマッチングステップが成功したルールパターンが格納されているアドレスを参照し、参照したアドレスに格納されたルールバターンと前記第１ターゲットデータとをマッチングさせるステップであることを特徴とする請求項１９に記載のアンチマルウェアシステムにおける動作方法。
【請求項２２】
前記サブマッチャーテーブルは、Ｎｅｘｔ項目をさらに含み、
前記Ｎｅｘｔ項目は、前記ＩＰアドレスのハッシュ値を表す項目に記載されたＩＰのハッシュ値と衝突されるＩＰハッシュ値を有する他のルールパターンに対する情報を探索できるデータを表すことを特徴とする請求項１９に記載の
アンチマルウェアシステムにおける動作方法。
【請求項２３】
前記他のルールパターンに対する情報を探索できるデータは、前記他のルールパターン
に対する情報が格納されたアドレスであることを特徴とする請求項２２に記載のアンチマルウェアシステムにおける動作方法。
【請求項２４】
前記第２ターゲットデータをフィルタリングするステップは、
前記ウイルスパターンのハッシュ値と前記第２ターゲットデータの少なくとも一部のハッシュ値とをマッチングさせるステップと、
前記ハッシュ値のマッチングが成功した場合、前記ウイルスバターンと前記第２ターゲットデータとをマッチングさせるステップとを含むことを特徴とする請求項１に記載のアンチマルウェアシステムにおける動作方法。
【請求項２５】
前記ハッシュ値をマッチングさせるステップは、
前記第２ターゲットデータの一部に対するハッシュ値と、
前記ウイルスパターンに対するハッシュ値をマッチングさせることを特徴とする請求項２４に記載のアンチマルウェアシステムにおける動作方法。
【請求項２６】
前記ウイルスパターンと前記第２ターゲットデータとをマッチングさせるステップは、
前記ウイルスパターンの一部と前記第２ターゲットデータの一部とをマッチングさせるライトパターンマッチングステップと、
前記ライトパターンマッチングが成功した場合、前記ウイルスパターンと前記第２ターゲットデータとをマッチングさせる精密マッチングステップとを含むことを特徴とする請求項２４に記載のアンチマルウェアシステムにおける動作方法。
【請求項２７】
前記ライトパターンマッチングステップは、
前記第２ターゲットデータの第３位置の値及び第４位置の値と、
前記ウイルスパターンの第３位置の値及び第４位置の値とをマッチングさせることであることを特徴とする請求項２６に記載のアンチマルウェアシステムにおける動作方法。
【請求項２８】
前記精密マッチングステップは、
前記第２ターゲットデータとウイルスパターンとをマッチングさせることを特徴とする請求項２６に記載のアンチマルウェアシステムにおける動作方法。
【請求項２９】
ターゲットデータを受信してアンチマルウェアをスキャニングするか、又はフィルタリングするアンチマルウェアシステムであって、
マルウェアパターンを格納する格納部と、
前記ターゲットデータの少なくとも一部のハッシュ値と、前記マルウェアパターンのハッシュ値とをマッチングさせる第１ハッシュ値マッチング部と、
前記ハッシュ値のマッチングが成功した場合、前記マルウェアパターンと前記ターゲットデータの一部とをマッチングさせる第１ライトパターンマッチング部とを備え、
前記ライトパターンマッチングが成功した場合、前記マルウェアパターンと前記ターゲットデータの全てとをマッチングさせることを特徴とするアンチマルウェアシステム。
【請求項３０】
前記マルウェアパターンは、ウイルスパターンとルールパターンとを含み、
前記受信したターゲットデータがフィルタリング対象である場合、
前記第１ハッシュ値マッチング部と第１ライトパターンマッチング部とは、前記ルールパターンと前記ターゲットデータに対して各々のマッチング動作を行うことを特徴とする請求項２９に記載のアンチマルウェアシステム。
【請求項３１】
前記受信されたターゲットデータがウイルススキャニング対象である場合、
前記第１ハッシュ値マッチング部と第１ライトパターンマッチング部とは、前記ウイルスパターンと前記ターゲットデータに対して各々のマッチング動作を行うことを特徴とする請求項３０に記載のアンチマルウェアシステム。
【請求項３２】
前記ターゲットデータが入力されると、前記ターゲットデータをウイルススキャニング対象として認知するアンチマルウェアマネジャーをさらに備え、
前記マルウェアパターンは、ウイルスパターンとルールパターンとを備え、
前記第１ハッシュ値マッチング部と第１ライトパターンマッチング部とは、前記アンチマルウェアマネジャーの指示により前記ルールパターンとターゲットデータとの間のマッチング動作を行うか、又は前記ウイルスパターンとターゲットデータとの間のマッチング動作を行うことを特徴とする請求項２９に記載のアンチマルウェアシステム。
【請求項３３】
前記ターゲットデータの少なくとも一部のハッシュ値と、前記マルウェアパターンのハッシュ値とをマッチングさせる第２ハッシュ値マッチング部と、
前記ハッシュ値のマッチングが成功した場合、前記マルウェアパターンと前記ターゲットデータの一部とをマッチングさせる第２ライトパターンマッチング部とをさらに備え、
前記マルウェアパターンは、ウイルスパターンとルールパターンとを備え、
前記ターゲットデータがフィルタリング対象になる場合、前記第１ハッシュ値マッチング部と前記第１ライトパターンマッチング部とは、前記フィルタリング対象になるターゲットデータと前記ルールパターンとをマッチングさせ、
前記ターゲットデータがウイルススキャニング対象になる場合、前記第２ハッシュ値マッチング部と前記第２ライトパターンマッチング部とは、前記ウイルススキャニング対象になるターゲットデータと前記ウイルスパターンとをマッチングさせることを特徴とする請求項２９に記載のアンチマルウェアシステム。
【請求項３４】
前記ウイルススキャニング対象になる前記ターゲットデータを受信するアンチウイルスマネジャーをさらに備え、
前記マルウェアパターンは、ウイルスパターンとルールパターンとを備えることを特徴とする請求項３３に記載のアンチマルウェアシステム。
【請求項３５】
前記第２ハッシュ値マッチング部と前記第２ライトパターンマッチング部とは、前記アンチウイルスマネジャーが受信したターゲットデータと前記ウイルスパターンに対して各々の動作を行うことを特徴とする請求項３４に記載のアンチマルウェアシステム。
【請求項３６】
第１ハッシュ値マッチング部及び第１ライトパターンマッチング部は、ハードウェアにより具現化されることを特徴とする請求項２９に記載のアンチマルウェアシステム。
【請求項３７】
前記ハードウェアは、
前記ターゲットデータを格納するバッファと、
前記バッファに格納されたターゲットデータの一部に対するハッシュ値と、前記マルウェアパターンのハッシュ値とをマッチングさせるハッシュマッチャーと、
前記ハッシュマッチャーによりハッシュ値がマッチングされた場合、前記ターゲットデータを格納するハッシュＱバッファと、
前記ハッシュＱバッファに格納された前記ターゲットデータの第１位置の値及び第２位置の値と、前記マルウェアパターンの第１位置の値と第２位置の値とをマッチングさせるライトパターンマッチャーとを備えることを特徴とする請求項３６に記載のアンチマルウェアシステム。
【請求項３８】
前記ハッシュマッチャーは、
前記マルウェアパターンのハッシュ値の存在有無を表すハッシュマッチャーテーブルと前記ターゲットデータの一部に対するハッシュ値とをマッチングさせ、
マッチングが成功すると、前記ターゲットデータを前記ハッシュＱバッファに格納することを特徴とする請求項３７に記載のアンチマルウェアシステム。
【請求項３９】
前記ハードウェアは、
スキャンＱバッファをさらに備え、
前記ライトパターンマッチャーは、前記マルウェアパターンのハッシュ値、第１位置の値と第２位置の値とを有する少なくとも一つのレコードを含むサブマッチャーテーブルと前記ターゲットデータの第１位置の値と第２位置の値とをマッチングさせ、マッチングが成功すると、前記ターゲットデータを前記スキャンＱバッファに格納することを特徴とする請求項３８に記載のアンチマルウェアシステム。
【請求項４０】
前記マルウェアパターンと前記ターゲットデータの全てとをマッチングさせる動作は、前記スキャンＱバッファに格納されたターゲットデータに対して行われることを特徴とする請求項３９に記載のアンチマルウェアシステム。
【請求項４１】
前記ハードウェアは、
前記サブマッチャーテーブルのレコードの中で、前記ハッシュＱバッファに格納されるターゲットデータのハッシュ値を有したレコードを格納するアドレスを発生させるオフセットアドレスジェネレーターをさらに備えることを特徴とする請求項３９に記載のアンチマルウェアシステム。
【請求項４２】
前記オフセットアドレスジェネレーターにより発生したアドレスは、前記ハッシュＱバッファに格納されるターゲットデータと関連されて、前記ハッシュＱバッファに共に格納されることを特徴とする請求項４１に記載のアンチマルウェアシステム。
【請求項４３】
デバイスをさらに備え、
前記格納部と前記第１ハッシュ値マッチング部とは、システムオンチップの形態で具現化され、
前記システムオンチップは、デバイスに着脱自在に装着され、前記デバイスから前記ターゲットデータを受信してアンチマルウェアスキャニング又はフィルタリング動作を行い、遂行結果を前記デバイスに通知することを特徴とする請求項２９に記載のアンチマルウェアシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アンチマルウェアシステム及びその動作方法に関し、さらに詳細には、高速でマルウェアをフィルタリングしたりスキャニングできるアンチマルウェアシステム及びその動作方法に関する。
【背景技術】
【０００２】
マルウェア（Ｍａｌｗａｒｅ）とは、コンピュータウイルス、トロイの木馬、悪性コード（Ｍａｌｉｃｉｏｕｓ  Ｃｏｄｅ）等、コンピュータに悪影響をおよぼすことができるすべてのソフトウェアを総称する。モバイルデバイスのハードウェアが高級化し、携帯端末機で行われるアプリケーションプログラムが多様化し複雑になることにつれて、既存のコンピュータを攻撃していたマルウェアがモバイルデバイスにも深刻な弊害を起こすおそれが高まっている。特に、ワイブロ（ＷｉＢｒｏ）等無線携帯インターネットサービスが広がる傾向につれて、既存コンピュータ用アプリケーションプログラムの脆弱点を攻撃する悪性コードに加えて、ブルートゥース（Ｂｌｕｅｔｏｏｔｈ）、ＭＭＳ（Ｍｕｌｔｉｍｅｄｉａ  Ｍｅｓｓａｇｉｎｇ  Ｓｙｓｔｅｍ）等、アプリケーションプログラム及びサービスの脆弱点を攻撃するモバイル悪性コード（ｍｏｂｉｌｅ  ｍａｌｗａｒｅ）が登場している。このような各種悪性コードは、モバイルデバイスの誤動作を誘導しデータを削除したりユーザの個人情報を流出したりする等、深刻な被害を与えることができる。
【０００３】
既存のアンチマルウェアソリューション（Ａｎｔｉ−Ｍａｌｗａｒｅ  Ｓｏｌｕｔｉｏｎ）は、ソフトウェア基盤になっており、このような形態でモバイルデバイスに使用されている。モバイルデバイスは、ＣＰＵ（Ｃｏｎｔｒｏｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、バッテリーなどの構成要素によって資源に制限があるので、従来のソフトウェア基盤のアンチマルウェアソリューションを使用する場合、パフォーマンス低下によってユーザが他の作業を行わせるのに不便さがある。また、ネットワークパケットを監視するときにも、パフォーマンスがよくないために、すべてのパケットをモニターリングし難い。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一実施の形態によれば、高速でマルウェアをフィルタリングしスキャニングできるアンチマルウェアシステム及びその動作方法を提供することをその目的とする。
【０００５】
本発明の他の実施の形態によれば、限定されたリソースを有したモバイルデバイスにおいて高速でマルウェアをフィルタリングしスキャニングできるアンチマルウェアシステム及びその動作方法を提供することをその目的とする。
【課題を解決するための手段】
【０００６】
本発明の一実施の形態によれば、アンチマルウェアシステムにおける動作方法は、フィルタリング対象であるデータ（以下、第１ターゲットデータとする）とルールパターンとをマッチングさせることによって、前記第１ターゲットデータに対してフィルタリング動作を行うステップと、ウイルススキャニング対象になるデータ（以下、第２ターゲットデータとする）とウイルスパターンとをマッチングさせることによって、前記第２ターゲットデータに対してウイルススキャニング動作を行うステップとを含み、前記フィルタリング動作と前記スキャニング動作とは、システムオンチップ上で動作する。
【０００７】
一方、本発明の他の実施の形態によれば、ターゲットデータを受信してアンチマルウェアをスキャニングするか、又はフィルタリングするアンチマルウェアシステムは、マルウェアパターンを格納する格納部と、前記ターゲットデータの少なくとも一部のハッシュ値と、前記マルウェアパターンのハッシュ値とをマッチングさせる第１ハッシュ値マッチング部と、前記ハッシュ値のマッチングが成功した場合、前記マルウェアパターンと前記ターゲットデータの一部とをマッチングさせる第１ライトパターンマッチング部とを備え、前記ライトパターンマッチングが成功した場合、前記マルウェアパターンと前記ターゲットデータの全てとをマッチングさせる。
【発明の効果】
【０００８】
本発明の一実施の形態によれば、限定されたリソースを有したモバイルデバイスにおいて高速でマルウェアをフィルタリングしスキャニングできる。
【０００９】
本発明の一実施の形態によれば、モバイルデバイスのメインＣＰＵ外のシステムオンチップ自体にＣＰＵを使用することによって、メインＣＰＵに負荷を与えずにアンチマルウェアシステムの役割を果たすことができる。本発明の一実施の形態によれば、本アンチマルウェアシステムは、ＳｏＣ形態でハードウェアロジックとソフトウェアモジュールとの結合で複数の部品が集積化されることが可能なので、速い変化が要求されるソフトウェアの機能的な部分を満足させることができる。そして、ソフトウェアの変更事項を反映でき、ウイルスＤＢ部分に対するアップデート処理に柔軟な対応が可能である。特に、ポータブルなデバイスで高性能及び低電力の要求事項を満足させるのに適している。
【００１０】
また、本発明の一実施の形態によれば、ＳｏＣ上においてハードウェアロジックである防火壁エンジンを利用して、パケットに対するフィルタリングを速かに処理でき、ＳｏＣ上においてハードウェアロジックであるアンチウイルスエンジンを利用して、ファイルに対するパターンのマッチング結果を速かに処理できるという効果がある。
【００１１】
また、ＳｏＣ上においてソフトウェアが直接パターンマッチングに関連した作業を行って同じパターンを検出するために、必要によっていつでも容易にアルゴリズムをアップデートできるという効果がある。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態に係るアンチマルウェアシステムを含むモバイルデバイスを示すブロック図である。
【図２】本発明の実施の形態に係るアンチマルウェアシステムを示すブロック図である。
【図３】本発明の一実施の形態に係る第１アンチマルウェアシステムの機能を説明するための機能ブロック図である。
【図４】図３のＦＷエンジン、ＡＶエンジン及びマッチング部を説明するための図である。
【図５】第１ハッシュマッチャーテーブルと第１サブマッチャーテーブルの一例を示す図である。
【図６】図４のＡＶエンジンが使用するパターンハッシュ値テーブルの一例を示す図である。
【図７】図４のＡＶエンジンが使用する第２ハッシュマッチャーテーブルと第２サブマッチャーテーブルの一例を示す図である。
【図８】本発明の他の実施の形態に係る第２アンチマルウェアシステムの機能を説明するための機能ブロック図である。
【図９】本発明の他の実施の形態に係る第３アンチマルウェアシステムの機能を説明するための機能ブロック図である。
【図１０】ＦＷエンジンを説明するための図である。
【図１１】ＡＶエンジンを説明するための図である。
【図１２】本発明の他の実施の形態に係る第４アンチマルウェアシステムの機能を説明するための機能ブロック図である。
【図１３】本発明の一実施の形態に係るアンチマルウェアシステムにおける動作方法を説明するためのフローチャートである。
【図１４】図２に示すアンチウイルスエンジンのハードウェア構成を示したブロック図である。
【図１５】本発明の一実施の形態に係るアンチウイルスエンジンにおけるウイルススキャニング動作を説明するための図である。
【図１６】本発明の一実施の形態に係るアンチマルウェアシステムにおけるアンチウイルスエンジンの動作方法を示すフローチャートである。
【図１７】図１６のステップＳ１６０９のハッシュマッチャーのマッチング動作を説明するためのフローチャートである。
【図１８】ステップＳ１７１１のライトパターンマッチャーのマッチング動作を説明するためのフローチャートである。
【図１９】本発明の一実施の形態に係る防火壁エンジンにおけるパケットフィルタリング動作を説明するための図である。
【図２０】本発明の一実施の形態に係る防火壁エンジンのパケットフィルタリング方法を説明するためのフローチャートである。
【図２１】ステップＳ２００３のパケット分類プロセスを説明するためのフローチャートである。
【図２２】ステップＳ２１０３のＩＰマッチングプロセスを説明するためのフローチャートである。
【図２３】ステップＳ２１０９のプロトコルマッチングプロセスを説明するためのフローチャートである。
【図２４】Ｓ２１１５のポートマッチングプロセスを説明するためのフローチャートである。
【発明を実施するための形態】
【００１３】
以上の本発明の目的、他の目的、特徴及び利点は、添付された図面と関連した以下の好ましい実施の形態により容易に理解されるはずである。しかしながら、本発明は、ここで説明される実施の形態に限定されずに他の形態で具体化されることもできる。むしろ、ここで紹介される実施の形態は、開示された内容が徹底かつ完全になるように、そして当業者に本発明の思想を十分に送信させるために提供されることである。本明細書において、ある構成要素が他の構成要素上にあると言及される場合に、それは、他の構成要素上に直接形成されうるか、又はそれらの間に第３の構成要素が介在されうることを意味する。
【００１４】
本明細書で使用された用語は、実施の形態を説明するためのもので、本発明を制限しようとするものではない。本明細書において、単数型は、特に言及しない限り、複数型も含む。明細書で使用される「含む（ｃｏｍｐｒｉｓｅｓ）」及び／又は「含む（ｃｏｍｐｒｉｓｉｎｇ）」と言及された構成要素は、一つ以上の他の構成要素の存在又は追加を排除しない。
【００１５】
以下、図面を参照して本発明を詳細に説明する。以下の特定実施の形態を述べるにおいて、色々な特定な内容は、発明をさらに具体的に説明し理解を助けるために作成された。しかしながら、本発明を理解することができる程度のこの分野における知識を有した読者は、このような色々な特定な内容がなくても使用されうることを認知できる。ある場合には、発明を述べるにおいて周知で発明と大きく関連のない部分は、本発明を説明するにおいて特別な理由なしで混乱を引き起こすことを防止するために述べないことを予め言及しておく。
【００１６】
本発明の実施の形態においてアンチマルウェア（Ａｎｔｉ−ｍａｌｗａｒｅ）機能を行うアンチマルウェアシステムは、ＳｏＣ基盤で単独チップ形態で具現化されたり、既存のアプリケーションプロセッサ内に一つのＩＰチップの形態で具現化されることができる。
【００１７】
携帯電話、スマートフォン、タブレットＰＣなどをはじめとする多数のモバイルデバイスは、部品間のインターフェース規格が標準化しておらず、かつ機能別に多様なラインを有するモデルが多い。したがって、本発明において説明する構成の例は、一つの実施の形態に過ぎず、インターフェース状況別に本発明の具現例は異なり得る。また、本発明の実施の形態では、モバイルデバイスを例に挙げて説明するが、一般ＰＣのようなコンピュータデバイスにも適用可能であることはもちろんである。
【００１８】
図１は、本発明の実施の形態に係るアンチマルウェアシステムを含むモバイルデバイスを示すブロック図である。
【００１９】
図１に示すように、アンチマルウェアシステム１００は、単独チップ形態で具現化されてモバイルデバイスに装着されうる。アンチマルウェアシステム１００は、モバイルプロセッサ１０とデータ及びアドレス信号、リード及びライト（ｒｅａｄ  ａｎｄ  ｗｒｉｔｅ）信号、制御（ｃｏｎｔｒｏｌ）信号をやり取りする。
【００２０】
また、アンチマルウェアシステム１００は、デバッグポート２０とデバッギング（ｄｅｂｕｇｇｉｎｇ）のためのＵＡＲＴ（Ｕｎｉｖｅｒｓａｌ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｒｅｃｅｉｖｅｒ  Ｔｒａｎｓｍｉｔｔｅｒ）、ＧＰＩＯ（Ｇｅｎｅｒａｌ  Ｐｕｒｐｏｓｅ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｐｉｎ）を介して通信する。
【００２１】
アンチマルウェアシステム１００は、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）３０を有する周辺装置と通信するためのＳＰＩ（Ｓｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ）を備えることができる。
【００２２】
アンチマルウェアシステム１００は、ワイパイ（ＷｉＦｉ）４０を有する割込み処理のためのＧＰＩＯを含むことができる。
【００２３】
図２は、本発明の実施の形態に係るアンチマルウェアシステムを示すブロック図である。
【００２４】
図２に示すように、アンチマルウェアシステム１００は、コンフィギュアバス１０１、１２５、ＣＰＵ１０３、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラ１０５、ローカルバス１０７、１３１、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）コントローラ１０９、フラッシュコントローラ１１１、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）コントローラ１１３、バッファ１１５、アンチウイルスＨ／Ｗ１１７、防火壁Ｈ／Ｗ１１９、バスマトリックス１２１及びブート１２３を備える。アンチマルウェアシステム１００は、ＳＤＲＡＭ１２７、フラッシュメモリ１２９、及びＳＲＡＭ１３０をさらに備えることができる。
【００２５】
ＣＰＵ１０３は、アンチマルウェアシステム１００を全般的に制御し、要求される作業を処理する。本発明の一実施の形態においてＣＰＵ１０３は、再構成可能なＣＰＵであるが、これは、例示的なものであって、再構成可能なＣＰＵでなくても本願発明に使用されることができる。
【００２６】
ＤＭＡコントローラ１０５は、ＤＭＡを制御する役割を果たす。
【００２７】
図２においてメモリコントローラは、ＳＤＲＡＭコントローラ１０９、フラッシュコントローラ１１１及びＳＲＡＭコントローラ１１３を備えることができる。ＳＤＲＡＭコントローラ１０９は、ＳＤＲＡＭ１２７に対する入出力を制御する。フラッシュコントローラ１１１は、フラッシュメモリ１２９に対した入出力を制御する。ＳＲＡＭコントローラ１１３は、ＳＲＡＭ１３０に対する入出力を制御する。
【００２８】
バッファ１１５は、外部とのインターフェースを介してデータを一時格納する。
【００２９】
アンチウイルスハードウェア（Ｈ／Ｗ）１１７は、ウイルススキャニング対象になるターゲットデータとウイルスパターンとの間にマッチング動作を行うことができる。例えば、ウイルスパターンＤＢ（Ｄａｔａｂａｓｅ）は、ＳＲＡＭ１３０に格納されていることができ、アンチウイルスＨ／Ｗ１１７は、ウイルスパターンＤＢとターゲットデータとの間のマッチング動作を行うことができる。
【００３０】
防火壁ハードウェア（Ｈ／Ｗ）１１９もハードウェアで具現化されて、フィルタリング対象になるターゲットデータとルールパターンＤＢとをマッチングさせる動作を行うことができる。例えば、ルールパターンＤＢは、ＳＲＡＭ１３０に格納されていることができ、防火壁Ｈ／Ｗ１１９は、ルールパターンＤＢとターゲットデータとの間のマッチング動作を行うことができる。アンチウイルスＨ／Ｗ１１７を駆動するソフトウェアや防火壁Ｈ／Ｗ１１９を駆動するソフトウェアは、メモリ１２７、１２９、１３０のうちの何れか一つにロードされて、ハードウェア１１７、１１９を制御する。
【００３１】
アンチマルウェアシステム１００において各ブロック間のデータ送信のためのバスは、データの迅速な送信のためのローカルバス１０７、１３１と、コンフィギュレーション（ｃｏｎｆｉｇｕｒａｔｉｏｎ）のためのコンフィギュア（ｃｏｎｆｉｇｕｒｅ）バス１０１、１２５とに区分できる。本発明においてローカルバス１０７とコンフィギュアバス１０１、１２５とは、ＡＨＢ（Ａｄｖａｎｃｅｄ  Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｂｕｓ）規格からなっていることができる。
【００３２】
バスマトリックス１２１は、ＡＨＢ規格の制御信号とデータ信号をＡＰＢ（Ａｄｖａｎｃｅｄ  Ｐｅｒｉｐｈｅｒａｌ  Ｂｕｓ）規格の制御信号とデータ信号に変換したり、ＡＰＢ規格の制御信号とデータ信号をＡＨＢ規格の制御信号とデータ信号に変換して送信する役割を果たす。
【００３３】
ブート１２３は、ＳｏＣにおいてアンチマルウェアシステム１００が初期動作されるようにする役割を果たす。
【００３４】
以下、図３〜図１１を参照して、本発明の多様な実施の形態に係るアンチマルウェアシステムについて説明する。図３〜図１１に示す第１〜４アンチマルウェアシステム３００、８００、９００、１２００は、図１及び図２を参照して説明したアンチマルウェアシステム１００の一実施の形態である。
【００３５】
第１〜４アンチマルウェアシステム３００、８００、９００、１２００は、ＳｏＣ形態で具現化されたり、あるいはＰＣ、モバイル機器などネットワーク通信が可能な機器自体に搭載されたりすることができる。したがって、第１〜４アンチマルウェアシステム３００、８００、９００、１２００が搭載された機器は、第１〜４アンチマルウェアシステム３００、８００、９００、１２００を使用するためのドライバー（図示せず）とアプリケーション部（図示せず）とを備えることができる。すなわち、第１〜４アンチマルウェアシステム３００、８００、９００、１２００が機器内で動作するためには、ソフトウェア的階層構造に従って第１〜４アンチマルウェアシステム３００、８００、９００、１２００上にドライバーがインストールされ、ドライバー上にアプリケーション部がインストールされることができる。
【００３６】
図３は、本発明の一実施の形態に係る第１アンチマルウェアシステム３００の機能を説明するための機能ブロック図である。
【００３７】
図３に示すように、第１アンチマルウェアシステム３００は、マネジャー３１０、ルールパターンＤＢ３２０、ウイルスパターンＤＢ３３０、防火壁（ＦＷ：Ｆｉｒｅ  ｗａｌｌ）エンジン３４０、マッチング部３５０及びアンチウイルス（ＡＶ：Ａｎｔｉ−Ｖｉｒｕｓ）エンジン３６０を備えることができる。
【００３８】
マネジャー３１０は、ルール関連設定、ルールパターンＤＢ３２０の生成／削除／追加／変更及びウイルスパターンＤＢ３３０のアップデート（生成／削除／追加／変更）を担当し、ユーザ命令を処理する。ユーザ命令は、例えば、防火壁エンジンのアップデートやアンチウイルスエンジンと関連した命令でありうる。
【００３９】
まず、マネジャー３１０がルールパターンＤＢ３２０を生成する動作について説明する。マネジャー３１０は、資料構造であるコマンドリスト（Ｃｏｍｍａｎｄ  Ｌｉｓｔ）とルールリスト（Ｒｕｌｅ  Ｌｉｓｔ）とを含み、このような資料構造を処理する防火壁コマンダー（ＦＷ  Ｃｏｍｍａｎｄｅｒ）モジュールとルールマネジャー（Ｒｕｌｅ  Ｍａｎａｇｅｒ）モジュールとを備えることができる。
【００４０】
ユーザが防火壁アプリケーションが提供する防火壁ＵＩ（Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）を介して防火壁ルール設定を行うと、防火壁コマンダーは、ユーザの設定に該当する命令語をマネジャー３１０のコマンドリストに追加し、マネジャー３１０を活性化（ｗａｋｅ  ｕｐ）させる。コマンドリストに追加された命令語がルール追加命令であると、防火壁コマンダーは、ルール追加命令のデータフィールドにある情報に基づいてルールパターンを生成してルールリストに追加できる。そして、ルール適用命令がコマンドリストに追加されると、防火壁コマンダーは、ルールマネジャーを呼び出してルールリストに登録されたルールパターンに基づいてルールパターンＤＢ３２０を生成又はアップデートできる。
【００４１】
ルールパターンＤＢ３２０は、パケットの通過有無を決めたルールパターンの集合体である。このようなルールパターンＤＢ３２０は、マネジャー３１０がユーザアプリケーションからルールに関するリストを受信して生成したことでありうる。また、マネジャー３１０は、ルールパターンＤＢを防火壁エンジンが使用できるように所定のメモリ（又はバッファ）にロードさせる機能を行うことができる。
【００４２】
また、ユーザアプリケーションがルールパターンＤＢ自体をマネジャー３１０に送信し、マネジャー３１０は、そういうルールパターンＤＢを受信した後防火壁エンジンが使用できるように、所定のメモリ（又はバッファ）にロードさせる機能を行うように構成することも可能である。
【００４３】
ルールパターンＤＢ３２０は、ユーザにより直接設定されたルールパターンを決まった形態に変換してＤＢ化したことでありうる。ルールパターンは、各々、ターゲットデータを許容（ＡＬＬＯＷ）するか、又は遮断（ＢＬＯＣＫ）するかに対する情報を有していることができる。したがって、ルールパターンＤＢ３２０又はルールパターンは、ＦＷエンジン３４０が外部から流入したターゲットデータを許容するか、又は遮断するかを判断するために用いられる。このようなルールパターンＤＢ３２０は、ＦＷエンジン３４０がルールパターンの各々のハッシュ値を生成するのに用いられ、ハッシュ値マッチング、ＬＰＭ（Ｌｉｇｈｔ  Ｐａｔｔｅｒｎ  Ｍａｔｃｈｉｎｇ）及びＥＰＭ（Ｅｘａｃｔ  Ｐａｔｔｅｒｎ  Ｍａｔｃｈｉｎｇ）を行う際にも用いられることができる。
【００４４】
ウイルスパターンＤＢ３３０は、ウイルスパターンの集合体であって、ＡＶエンジン３６０がウイルススキャニング動作を行う際に用いられることができる。マネジャー３１０は、ＡＶアプリケーション（図示せず）からウイルスパターンＤＢを受信して、所定の格納部に格納することができる。マネジャー３１０は、既格納されたウイルスパターンＤＢをアップデートする機能を行うことができる。
【００４５】
ウイルスパターンは、ターゲットデータのウイルス感染の有無を検出するために、ＡＶエンジン３６０がターゲットデータとのマッチング動作を行う際に用いられることができる。ルールパターンＤＢ３２０とウイルスパターンＤＢ３３０とは、ＳｏＣに備えられたメモリ（例えば、図２のフラッシュメモリ１２９）に又は別に備えられたメモリ（図示せず）に格納されていることができる。
【００４６】
具体的に、ウイルスパターンＤＢ３３０は、ＡＶエンジン３６０がウイルスパターンの各々のハッシュ値を生成する際に用いられるか、又はターゲットデータとウイルスパターンとを利用してＬＰＭ、ＥＰＭ及びＦＰＭを行う際に用いられることができる。ウイルスパターンＤＢ３３０は、文法的に決まった簡単なウイルスパターンを集めたことでありえ、又は文法的に複雑なウイルスパターンを集めたことでもありえ、又は文法的に簡単なウイルスパターンと文法的に複雑なウイルスパターンとが混在したことでありうる。文法的に簡単なウイルスパターン又は複雑なウイルスパターンに対する定義は、韓国特許出願第１０−２０１０−００４９５６６号（２０１０．５．２７日付出願）と韓国特許出願第１０−２０１０−００５２９８１（２０１０．６．４日付出願）に記載されており、そういうパターンに対する定義と内容は、本願と相反しない範囲内で本願明細書の一部として結合される。
【００４７】
本発明の一実施の形態に係るマネジャー３１０は、ユーザアプリケーションから受信される命令やデータなどを解析して、それに対応する動作を行うことができる。
【００４８】
例えば、スキャニング動作と関連した命令を受信した場合には、ＡＶエンジン３６０を動作させることができ、ウイルスパターンＤＢのアップデート命令を受信した場合には、ウイルスパターンＤＢ３３０をアップデートさせることができる。また、マネジャー３１０は、スキャニング対象になるファイルをユーザアプリケーションから受信し、受信したスキャニング対象になるファイルに対してＡＶエンジン３６０がスキャニング動作を行うように指示でき、そしてＡＶエンジン３６０のスキャニング結果をユーザアプリケーションに送信することもできる。
【００４９】
一方、ＦＷエンジン３４０の動作と関連して、マネジャー３１０は、ユーザアプリケーションからフィルタリング結果報告指示を受信することができ、そういう指示に対応してＦＷエンジン３４０のフィルタリング結果をユーザアプリケーションに送信できる。
【００５０】
マネジャー３１０は、アプリケーションから所定の命令又はデータを受信すると、それがスキャニングと関連したものであるか、フィルタリングと関連したものであるかを解析し、それに対応する動作を行う。
【００５１】
例えば、マネジャー３１０は、スキャニング命令を受信した場合には、ＡＶエンジン３６０を動作させてスキャニング動作を行うようにすることができる。ターゲットデータは、ウェブブラウザ又は各種ファイルを生成及び管理するアプリケーション部（図示せず）から入力されることができる。マネジャー３１０は、ターゲットデータがファイル形態であると、ウイルススキャニング対象であると判断し、ターゲットデータをＡＶエンジン３６０に提供できる。このとき、マネジャー３１０は、ターゲットデータに対してウイルススキャニングを行うように、ＡＶエンジン３６０の動作を制御できる。また、マネジャー３１０は、アプリケーション部（図示せず）からアップデートするウイルスパターンが入力されると、入力されるウイルスパターンを利用してウイルスパターンＤＢ３３０をアップデートできる。このようなマネジャー３１０は、ＦＷエンジン３４０を管理又は制御するＦＷマネジャーとＡＶエンジン３６０を管理又は制御するＡＶマネジャーとに区分されることもできる。
【００５２】
以下では、フィルタリング対象であるターゲットデータを「第１ターゲットデータ」、ウイルススキャニング対象であるターゲットデータを「第２ターゲットデータ」とする。
【００５３】
本発明の一実施の形態に係るマッチング部３５０は、選択的にルールパターンと第１ターゲットデータとの間のマッチング動作を行うか、又はウイルスパターンと第２ターゲットデータとの間のマッチング動作を行うことができる。マッチング部３５０は、ある瞬間には、ＦＷエンジン３４０の一部として動作し、他の瞬間には、ＡＶエンジン３６０の一部として動作できる。動作順序は、所定のスケジューラによって適切に行われることができる。
【００５４】
第１ターゲットデータが受信されると、ＦＷエンジン３４０は、ルールパターンＤＢに基づいて第１ターゲットデータを遮断するか、又は通過させるかを判断する。例えば、ＦＷエンジン３４０は、ルールパターンＤＢ３２０と第１ターゲットデータとが互いに一致しているか否かを判断し、一致すると判断された場合、ＦＷエンジン３４０は、決まったルールに従って第１ターゲットデータを「遮断」又は「通過」させる。
【００５５】
一方、第２ターゲットデータが受信されると、ＡＶエンジン３６０は、ウイルスパターンＤＢを利用して第２ターゲットデータに対するスキャニング動作を行うことができる。本発明の一実施の形態によれば、スキャニング動作の対象になる第２ターゲットデータは、マネジャー３１０が受信することができ、ＡＶエンジン３６０は、マネジャー３１０が受信した第２ターゲットデータに対してスキャニング動作を行う。
【００５６】
図４は、図３のＦＷエンジン、ＡＶエンジン及びマッチング部を説明するための図である。
【００５７】
図４に示すように、本実施の形態に係るＦＷエンジン３４０とＡＶエンジン３６０とは、マッチング部３５０を共有する。ここで、ＦＷエンジン３４０、ＡＶエンジン３６０及びマッチング部３５０は、ＳｏＣの形態で具現化されることができる。ＦＷエンジン３４０は、ルールパターンＤＢ３２０、第１ハッシュマッチャーテーブル３７０、及び第１サブマッチャーテーブル３７５を利用してパケットのようなターゲットデータに対してフィルタリング動作を行うことができる。ＡＶエンジン３６０は、ウイルスパターンＤＢ３３０、第２ハッシュマッチャーテーブル３８０、及び第２サブマッチャーテーブル３８５を利用して、ファイルのようなターゲットデータに対してスキャニング動作を行うことができる。
【００５８】
ＦＷエンジン３４０がフィルタリング動作を行う際には、マッチング部３５０は、ＦＷエンジン３４０の一部として動作し、ＡＷエンジン３６０がスキャニング動作を行う際には、マッチング部３５０は、ＡＶエンジン３６０の一部として動作する。好ましくは、マッチング部３５０は、ハードウェアとして構成され、本実施の形態においてマッチング部３５０は、ハッシュ値マッチング部３５１及びライトパターンマッチング部３５２を備えることができる。
【００５９】
第１ハッシュマッチャーテーブル３７０及び第１サブマッチャーテーブル３７５は、ルールパターンＤＢ３２０のルールパターンから生成されることができ、第２ハッシュマッチャーテーブル３８０及び第２サブマッチャーテーブル３８５は、ウイルスパターンＤＢ３３０のウイルスパターンから生成されることができる。これらのテーブル３７０、３７５、３８０、３８５の生成方法については、図５〜図７を参照して詳細に後述する。
【００６０】
ＦＷエンジン３４０のフィルタリング動作を説明する。
【００６１】
本発明の一実施の形態によれば、ＦＷエンジン３４０が行うフィルタリング動作は、パケット分類プロセスと、ルールパターンパターンマッチング動作から構成される。
【００６２】
パケット分類プロセスには、ＩＰマッチングプロセス、プロトコルマッチングプロセス、及び／又はポートマッチングプロセスが含まれ、これらのプロセスは、ハッシュ値マッチング部３５１及びライトパターンマッチング部３５２により行われる。パケット分類プロセスでは、精密パターンマッチング動作が行われない。
【００６３】
ＩＰマッチングプロセスを説明すれば、ハッシュ値マッチング部３５１は、パケットデータに含まれたＩＰアドレスのハッシュ値が第１ハッシュマッチャーテーブル３７０をマッチングさせ、マッチングが成功すると、ライトパターンマッチング部３５２は、パケットデータに含まれたＩＰアドレスの中間値及び最後値と第１サブマッチャーテーブル３７５とをマッチングさせる。
【００６４】
ポートマッチングプロセスを説明すれば、ハッシュ値マッチング部３５１は、パケットデータに含まれたポートのハッシュ値と第１ハッシュマッチャーテーブル３７０とをマッチングさせ、マッチングが成功すると、ライトパターンマッチング部３５２は、ハッシュ値マッチングが成功したパケットデータに含まれたＩＰアドレスのハッシュ値、及びプロトコルのハッシュ値と第１サーバマッチャーテーブル３７５とをマッチングさせる。
【００６５】
プロトコルマッチングプロセスを説明すれば、ハッシュ値マッチング部３５１は、パケットデータに含まれたプロトコルのハッシュ値と第１ハッシュマッチャーテーブル３７０とをマッチングさせる。本実施の形態において、プロトコルマッチングプロセスでは、ライトパターンマッチング部３５２によるライトパターンマッチング動作が行われず、ハッシュ値マッチング動作までのみ行う。
【００６６】
以上説明したマッチングプロセスを、ハッシュ値マッチング部３５１とライトパターンマッチング部３５２とは、それぞれ順次行う。これらのＩＰマッチングプロセス、ポートマッチングプロセス、及びプロトコルマッチングプロセスについては、図２１以下の図面を参照して詳細に後述する。
【００６７】
ＦＷエンジン３４０は、パケットデータに対するパケット分類プロセスを完了すると、ルールパターンマッチング動作を行う。ルールパターンマッチング動作は、すべてのパケットデータに対して行われることではなく、パケット分類プロセス結果、ルールパターンマッチングを行うことと分類されたパケットデータに対してのみ行われる。パケット分類プロセスについては、図２１を参照して詳細に後述する。ルールパターンマッチング動作は、ハッシュ値マッチング部３５１及びライトパターンマッチング部３５２により行われ、ライトパターンマッチングが成功すると、精密パターンマッチング動作が行われる。以下、これらの動作を各々説明する。
【００６８】
ルールパターンマッチング動作を行う際のハッシュ値マッチング部３５１は、パケットデータに含まれたＩＰアドレスのハッシュ値と第１ハッシュマッチャーテーブル３７０とをマッチングさせる。ハッシュ値マッチングが成功すると、ライトパターンマッチング部３５２は、ハッシュ値がマッチングされたパケットデータに含まれたＩＰアドレスの中間値及び最後値と第２サブマッチャーテーブル３７５とをマッチングさせる。ライトパターンマッチングが成功すると、ＦＷエンジン３４０は、ライトパターンマッチングが成功したパケットデータのヘッダ情報（ソースＩＰアドレス、デスティネーションＩＰアドレス、プロトコル、ソースポート、デスティネーションポート、入出力方向等）と、実際ルールパターンとをマッチングさせる。
【００６９】
以上説明したように、ハッシュ値マッチング部３５１とライトパターンマッチング部３５２とは、パケット分類プロセス動作とルールパターンマッチング動作とを順次行うことができる。第１ハッシュマッチャーテーブルと第１サブマッチャーテーブルとは、パケット分類プロセスとルールパターンマッチング動作に共通的に使用されうるが、これとは異なり、パケット分類プロセスのためのハッシュマッチャーテーブル及びサブマッチャーテーブルと、ルールパターンマッチング動作のためのハッシュマッチャーテーブル及びサブマッチャーテーブルを各々別に設けることも可能である。
【００７０】
本発明の一実施の形態によれば、ルールパターンＤＢは、ソースＩＰアドレス、デスティネーションＩＰ（Ｄｅｓｔｉｎａｔｉｏｎ  ＩＰ）アドレス、プロトコル、ソースポート、デスティネーションポート、ＴＣＰフラグ及びパケットの入出力方向ののうち、少なくとも一つを含むことができる。ここで、パケットの入出力方向は、第１ターゲットデータが外部に送信されるか、又はＮＩＣを介して外部から受信されるかを示す。
【００７１】
本発明の一実施の形態によれば、ＦＷエンジン３４０は、ルールパターンＤＢを参照して図５のように第１ハッシュマッチャーテーブル３７０と第１サブマッチャーテーブル３７５とを生成できる。本実施の形態において、第１ハッシュマッチャーテーブル３７０と第１サブマッチャーテーブル３７５とをＦＷエンジン３４０が生成すると説明したが、これは例示に過ぎず、これらのテーブルを生成する構成要素を別に用意したり又は他の構成要素（例えば、マネジャー）が前記テーブルを生成するように構成することも可能である。
【００７２】
図５は、本発明の一実施の形態に係る第１ハッシュマッチャーテーブル３７０と第１サブマッチャーテーブル３７５とを示した図である。
【００７３】
図５に示すように、（ａ）は、ヘッダ情報を示した一例で、（ｂ）は、ハッシュマッチャーテーブルの一例で、そして（ｃ）は、サブマッチャーテーブルの一例である。
【００７４】
本実施の形態において、防火壁エンジンは、ルールパターンＤＢに格納されたパターンルールを利用して、ハッシュマッチャーテーブルを生成できる。具体的に、防火壁エンジンは、所定のハッシュ関数を利用してルールパターンに各々含まれたＩＰ  ａｄｄｒｅｓｓ各々に対してハッシュ値を全部求め、このように求めたハッシュ値を図５の（ｂ）のようなハッシュマッチャーテーブルの形態で構成できる。
【００７５】
図５の（ｂ）に示すように、ハッシュマッチャーテーブルは、インデックスと、そのインデックスの存在有無を表す存在有無項目を含み、ここでインデックスは、前記所定のハッシュ関数を介して導出されうる可能なすべてのハッシュ値で決められ、前記ルールパターンが有した各々のＩＰ  ａｄｄｒｅｓｓに対するハッシュ値と同じ値を有するインデックスに対して存在有無項目の値が「１」と設定される。
【００７６】
ハッシュマッチャーテーブルは、また、プロトコルに対するハッシュ値とポートに対するハッシュ値をも含む。
【００７７】
防火壁エンジンは、サブマッチャーテーブルも生成できる。防火壁エンジンは、ルールパターンＤＢがアップデートされるごとにサブマッチャーテーブルを新しく生成し、前記ハッシュマッチャーテーブルも新しく生成する。防火壁エンジンは、サブマッチャーテーブルをルールパターンＤＢ及び／又はハッシュマッチャーテーブルから生成できる。
【００７８】
サブマッチャーテーブルは、インデックス、ｍｉｄ項目、ｔａｉｌ項目、ｉｓｐｒｏ項目、ｉｓｐｏｒｔ項目、実際パターンメモリアドレス項目、及びｎｅｘｔ項目を含む。
【００７９】
理解の便宜のために、図５（ｃ）を参照してサブマッチャーテーブルを説明するようにする。図５（ｃ）の第１番目のレコードには、インデックスが「Ｘ」で、ｍｉｄ項目が「０ｘ０３」で、ｔａｉｌ項目が「０ｘ２１」で、ｉｓｐｒｏ項目が「１」で、ｉｓｐｏｒｔ項目が「１」で、実際パターンメモリアドレスが「Ｏｘ０００１」で、ｎｅｘｔ項目が「Ｒ」である。
【００８０】
サブマッチャーテーブルのインデックスに記載された値は、ハッシュマッチャーテーブルにおいて存在有無項目の値が「１」であるインデックス値から構成される。すなわち、サブマッチャーテーブルの第１番目のレコードのインデックス「Ｘ」は、ハッシュマッチャーテーブルにも存在するものであって、存在有無項目の値が「１」であることが分かる。一方、「Ｒ」のようにハッシュマッチャーテーブルに存在しない値が、サブマッチャーテーブルのインデックス値として存在しているが、これは、ルールパターンは、互いに異なるが、ＩＰ  ａｄｄｒｅｓｓのハッシュ値は互いに同じである場合（すなわち、ハッシュ衝突）のために設けられたことである。例えば、ルールパターンＡとルールパターンＢとは、互いに異なるＩＰ  ａｄｄｒｅｓｓを有しているが、ルールパターンＡに含まれたＩＰ  ａｄｄｒｅｓｓのハッシュ値とルールパターンＢに含まれたＩＰ  ａｄｄｒｅｓｓのハッシュ値とが互いに同じである場合（すなわち、両方とも「Ｘ」というハッシュ値を有することができる）が発生できる（ハッシュ衝突）。このような場合、図５の（ｃ）のサブマッチャーテーブルに示したように、ルールパターンＡに対したＩＰ  ａｄｄｒｅｓｓのハッシュ値を「Ｘ」と記載し、ルールパターンＢに対したＩＰ  ａｄｄｒｅｓｓのハッシュ値は、「Ｒ」と記載した後、Ｎｅｘｔ項目に「Ｒ」と記載する。このような場合、インデックスが「Ｘ」であるレコードに対してサブマッチングを行った結果、サブマッチングが成功されないと、インデックスが「Ｒ」であるレコードに対してサブマッチングを再度行う。本発明の一実施の形態によれば、ｎｅｘｔ項目に記載された「Ｒ」は、インデックスがＸであるレコードが格納されたメモリアドレスと、インデックスが「Ｒ」であるレコードが格納されたメモリアドレス間の差と定義されうる。
【００８１】
サブマッチャーテーブルにおいてインデックス項目に記載される値（例えば、Ｘ、Ａ、Ｂ）は、ハッシュマッチャーテーブルから導出されうるが、ハッシュマッチャーテーブルを使用せずにルールパターンＤＢから直接導出されることもできる。すなわち、ルールパターンＤＢのルールパターンが各々有するＩＰ  ａｄｄｒｅｓｓに対するハッシュ値を求めると、これらのハッシュ値がサブマッチャーテーブルでのインデックスとして記載されることができる。
【００８２】
サブマッチャーテーブルの第１番目のレコードのインデックス「Ｘ」は、実際パターンメモリアドレス項目から指定したメモリアドレス（すなわち、Ｏｘ０００１´）に格納されたルールパターンのＩＰ  ａｄｄｒｅｓｓに対するハッシュ値である。
【００８３】
サブマッチャーテーブルのｍｉｄ項目の値「０ｘ０３」は、実際パターンメモリアドレス項目から指定したメモリアドレス（すなわち、Ｏｘ０００１´）に格納されたルールパターンのＩＰ  ａｄｄｒｅｓｓの中間バイトの値である。
【００８４】
サブマッチャーテーブルのｔａｉｌ項目の値「０ｘ２１」は、実際パターンメモリアドレス項目から指定したメモリアドレス（すなわち、Ｏｘ０００１´）に格納されたルールパターンのＩＰ  ａｄｄｒｅｓｓの最後のバイトの値である。
【００８５】
サブマッチャーテーブルのｉｓｐｒｏ項目の値「１」であることは、実際パターンメモリアドレス項目から指定したメモリアドレス（すなわち、Ｏｘ０００１´）に格納されたルールパターンは、すべてのプロトコルに対して適用されるということを表す。
【００８６】
サブマッチャーテーブルのｉｓｐｏｒｔ項目の値「１」であることは、実際パターンメモリアドレス項目から指定したメモリアドレス（すなわち、Ｏｘ０００１´）に格納されたルールパターンは、すべてのポートに対して適用されるということを表す。
【００８７】
以上説明した部分は、ＩＰマッチングプロセスのためのものであって、図５（ｃ）のサブマッチャーテーブルにおいてＩＰ  ｓｕｂと表示した領域についての説明であった。これから、図５（ｃ）のサブマッチャーテーブルにおいてＰｏｒｔ  ｓｕｂと表示した領域を説明する。この領域の値は、ポートマッチングプロセスの遂行のために使用される。
【００８８】
図５（ｃ）のサブマッチャーテーブルにおいてインデックス「Ａ」は、実際パターンメモリアドレス項目から指定したメモリアドレス（すなわち、Ｏｘ２０００´）に格納されたルールパターンのポートのハッシュ値がすべてのポートに対して適用されるということを表す。一方、ＩＰ  ｈａｓｈ項目に記載された「Ｃ」は、実際パターンメモリアドレス項目から指定したメモリアドレス（すなわち、Ｏｘ２０００´）に格納されたルールパターンに含まれたＩＰ  ａｄｄｒｅｓｓのハッシュ値である。Ｐｒｏｔｏ  ｈａｓｈ項目に記載された「Ｄ」は、実際パターンメモリアドレス項目から指定したメモリアドレス（すなわち、Ｏｘ２０００´）に格納されたルールパターンに含まれたポートのハッシュ値である。インデックス「Ｂ」は、ＩＰ  ａｄｄｒｅｓｓハッシュ値が衝突した場合のために用意した値である。
【００８９】
以上説明したハッシュマッチャーテーブルとサブマッチャーテーブルとは、防火壁エンジンにより生成されうるが、防火壁エンジンでなくて別に備えられた他の構成要素により生成されることもできる。
【００９０】
以下、ＡＶエンジン３６０のスキャニング動作を説明する。
【００９１】
ＡＶエンジン３６０は、マネジャー３１０を介して受信される第２ターゲットデータに対してウイルスが存在しているか否かを判断するために、ウイルスパターンＤＢ３３０を利用してスキャニング動作を行う。本発明の一実施の形態によれば、ＡＶエンジン３６０のウイルススキャニング動作は、ＦＷエンジン３４０のフィルタリング動作と交互に行われうる。又は、両エンジンの中で何れか一方のエンジンが動作に対する優先順位を持つことができ、優先順位は、デフォルトとして与えられるか、ユーザの設定により決まることができる。
【００９２】
本発明の一実施の形態に係るＡＶエンジン３６０は、第２ターゲットデータを構成するサブデータとウイルスパターンとのパターンマッチング動作を行うことができる。このようなＡＶエンジン３６０は、ハードウェア及び／又はソフトウェアにより具現化されることができる。
【００９３】
ＡＶエンジン３６０は、ウイルスパターンＤＢ３３０のウイルスパターンに対するハッシュ値を生成できる。ＡＶエンジン３６０は、ウイルスパターンデータにハッシュ関数を適用して、ウイルスパターンのハッシュ値を生成できる。例えば、ウイルスパターンデータが２３バイトからなっていると仮定すると、ＡＶエンジンは、そういうウイルスパターンデータの第１番目のバイトから第３番目のバイト値までをハッシュ関数に入力してハッシュ値を求め、第２番目のバイトから第４番目のバイト値までをハッシュ関数に入力してハッシュ値を求め、このような方式で２３バイトに対するすべてのハッシュ値を求めて、後述する第２ハッシュマッチャーテーブル３８０と第２サブマッチャーテーブル３８５とを生成できる。したがって、場合によっては、互いに異なるウイルスパターンに対して同じハッシュ値が生成されることもできる。本実施の形態において、ＡＶエンジン３６０がマッチャーテーブル３８０、３８５を生成すると説明したが、これは、例示に過ぎず、これとは異なって構成することも可能である。例えば、マッチャーテーブル３８０、３８５を生成する別途の構成要素を備えるか、他の構成要素（例えばマネジャー）がマッチャーテーブル３８０、３８５を生成するように構成することが可能である。
【００９４】
図６は、ＡＶエンジン３６０が使用するパターンハッシュ値テーブルの一例を示す図である。図６に示すように、パターンハッシュ値テーブルにおいて、ウイルスパターンと、そのウイルスパターンから求めたハッシュ値は、互いに対応している。例えば、「Ｘ」というハッシュ値を有するウイルスパターンは、「ａｂｃｄｅｆｇ」である。
【００９５】
本発明の一実施の形態に係るＡＶエンジン３６０は、第２ターゲットデータに対するハッシュ値を生成できる。例えば、第２ターゲットデータが事前に定義された大きさに分割されたサブデータ（Ｓ１，Ｓ２，Ｓ３、…）からなると仮定した場合、ＡＶエンジン３６０は、これらのサブデータの各々に対するハッシュ値ＨSを生成できる。本発明の一実施の形態に係る、ＡＶエンジン３６０は、サブデータの一部をハッシュ関数に入力することによってハッシュ値を求めることができる。例えば、サブデータが１５バイトからなっていると仮定すると、ＡＶエンジン３６０は、サブデータの第１番目のバイトから第３番目のバイトまでの値をハッシュ関数に入力してハッシュ値を生成でき、第２番目のバイトから第４番目のバイトまでの値をハッシュ関数に入力してハッシュ値を生成でき、第３番目のバイトから第５番目のバイトまでの値をハッシュ関数に入力してハッシュ値を生成でき、こういう方式で残りのバイトに対するハッシュ値を生成することもできる。
【００９６】
本発明の一実施の形態によれば、第２ハッシュマッチャーテーブル３８０は、ハッシュ値マッチング部３５１で使用され、第２サブマッチャーテーブル３８５は、ライトパターンマッチング部３５２及び精密マッチング動作時に使用されることができる。
【００９７】
本発明の一実施の形態に係るハッシュ値マッチング部３５１は、第２ターゲットデータの少なくとも一部に対するハッシュ値ＨT1と第２ハッシュ値マッチャーテーブルとをマッチングさせる。第２ターゲットデータがサブデータに分割された場合、ハッシュ値マッチング部３５１は、各サブデータの一部に対するハッシュ値と第２ハッシュ値マッチャーテーブルとをマッチングさせる。以下では、サブデータを例に挙げて説明する。
【００９８】
図７に示すように、第２ハッシュマッチャーテーブル３８０のうち、「１」がチェックされたマッチングインデックスは、ウイルスパターンのハッシュ値ＨPのうちの何れか一つである。
【００９９】
第２ハッシュマッチャーテーブル３８０のうち、「１」がチェックされたマッチングインデックス（例えば、ＸとＹ）と、サブデータのハッシュ値ＨSと一致するマッチングインデックスがあると、ハッシュ値マッチングが成功したと判断されうる。図７の実施の形態において、サブデータのハッシュ値ＨSが「Ｘ」又は「Ｙ」であうと、ハッシュ値マッチングが成功したと判断されうる。
【０１００】
ハッシュ値のマッチングが成功すると、ライトパターンマッチング部３５２は、ハッシュ値マッチングが成功したサブデータ及び第２ハッシュマッチャーテーブル３８０を利用してＬＰＭを行う。詳細に説明すれば、ライトパターンマッチング部３５２は、ハッシュ値ＨSと一致するマッチングインデックス（例えば、Ｘ）に該当するウイルスパターンとサブデータのパターンとをマッチングする動作を行うことができる。
【０１０１】
ＬＰＭは、互いにマッチングされるハッシュ値ＨP1を有するウイルスパターンの中間値と最後値、そしてサブデータの中間値と最後値とを互いにマッチングさせる動作である。本発明の一実施の形態によれば、ライトパターンマッチング部３５２は、サブデータの中間値と最後値とを第２サブマッチャーテーブル３８５とマッチングさせる。ＬＰＭが失敗した場合、すなわち、中間値が互いに一致しないか、又は最後値が互いに一致しないと、サブデータには、ウイルスパターンが存在しないことを意味する。したがって、サブデータは、正常データであると判断されることができる。
【０１０２】
反面、ＬＰＭが成功した場合、ＡＶエンジン３６０は、ウイルスパターン、サブデータ及び第２サブマッチャーテーブル３８５を利用してＥＰＭを行うことができる。ＥＰＭは、ハッシュ値ＨP1を有するウイルスパターンとサブデータのすべての位置を比較してパターンをマッチングする動作である。詳細に説明すれば、ＡＶエンジン３６０は、第２サブマッチャーテーブル３８５を参照してマッチングインデックスＸにマッピング格納されたウイルスパターンのアドレスを確認する。ＡＶエンジン３６０は、確認されたアドレスに格納されたウイルスパターンをウイルスパターンＤＢ３３０から読み込む。ＡＶエンジン３６０は、該当アドレスに格納されたウイルスパターンの全体パターンである「ａｂｃｄｅｆｇ」と第２ターゲットデータの全体パターンとをマッチングさせる。
【０１０３】
ＥＰＭが成功した場合、すなわち、すべての位置の値が互いに一致する場合、ＡＶエンジン３６０は、ターゲットデータにウイルスが存在すると判断できる。一方、あるサブデータに対してスキャニングした結果、ＥＰＭが成功しても、そのサブデータが文法的に複雑なウイルスパターンの一部である場合には、ＦＰＭを行う。例えば、ＡＶエンジン３６０は、ＥＰＭが成功したサブデータが文法的に複雑なウイルスパターンの一部と一致した場合、残りのサブデータに対するマッチング動作を行う。ＡＶエンジン３６０は、サブデータの各々に対するマッチング結果と、ウイルスパターンとを比較して文法的に複雑なウイルスパターンとマッチングされるか否かを判断できる。
【０１０４】
本発明の一実施の形態によれば、サブデータに対する各々のＥＰＭ結果は、サブパターンマトリックスに記録され、ＡＶエンジン３６０は、そういうサブパターンマトリックスを参照して、ターゲットデータにウイルスが存在しているか否かを判断できる。このように、サブパターンマトリックスを参照して、ターゲットデータにウイルスが存在しているか否かを判断する過程は、フルマッチング動作の一実施の形態に該当する。
【０１０５】
ＦＰＭ結果、互いにマッチングされないと、ＡＶエンジン３６０は、第２ターゲットデータが正常データであると判断できる。反面、ＦＰＭ結果、互いにマッチングされると、ＡＶエンジン３６０は、第２ターゲットデータがウイルスに感染されたものと判断し、判断結果をマネジャー３１０に通知できる。
【０１０６】
以上説明した本実施の形態では、ＡＶエンジン３６０の場合は、マネジャー３１０からスキャニングするターゲットデータを受信してスキャニング動作を行うが、ＦＷエンジン３４０は、マネジャー３１０を経由せずに直にパケットデータを受信してフィルタリングする構成からなっている。ＦＷエンジン３４０は、フィルタリング結果をマネジャー３１０に通知でき、マネジャー３１０は、通知されたフィルタリング結果を防火壁インターフェースアプリケーションに通知できる。
【０１０７】
このように、マネジャー３１０タスクとＦＷエンジン３４０のタスクとを区分させた理由は、以下のとおりである。
【０１０８】
第１に、マネジャー３１０がＦＷエンジン３４０を制御する状況は、ＦＷエンジン３４０が第１ターゲットデータをフィルタリングする状況より少なく発生する。したがって、マネジャー３１０が行うタスクとＦＷエンジン３４０が行うタスク（ｔａｓｋ）とを区分することが効率的である。
【０１０９】
第２に、ＦＷエンジン３４０は、第１ターゲットデータごとに速かに第１ターゲットデータが悪性データであるか否かを判断して、第１ターゲットデータの送信有無を決定しなければならない。仮に、ユーザが防火壁ルールを変更する場合、ＦＷエンジン３４０が直接ルールパターンＤＢ３２０を変更すると、すなわち、マネジャー３１０の代りにＦＷエンジン３４０がそういうルールパターンＤＢ３２０を変更する作業を併行すると、ＦＷエンジン３４０の第１ターゲットデータの処理動作が遅れるようになる。したがって、これを防止し、マネジャー３１０とＦＷエンジン３４０との間の仕事処理に優先順位を与えるために、互いに別途のモジュールから構成した。
【０１１０】
図８は、本発明の他の実施の形態に係る第２アンチマルウェアシステムの機能を説明するための機能ブロック図である。
【０１１１】
図８に示すように、第２アンチマルウェアシステム８００は、マネジャー８１０、ルールパターンＤＢ８２０、ウイルスパターンＤＢ８３０、ＦＷエンジン８４０、マッチング部８５０、ＡＶエンジン８６０及び通信部８７０を備えることができる。
【０１１２】
図８に示すマネジャー８１０、ルールパターンＤＢ８２０、ウイルスパターンＤＢ８３０、ＦＷエンジン８４０、マッチング部８５０及びＡＶエンジン８６０の動作は、図３及び図４を参照して説明したマネジャー３１０、ルールパターンＤＢ３２０、ウイルスパターンＤＢ３３０、ＦＷエンジン３４０、マッチング部３５０及びＡＶエンジン３６０と同一なので、詳細な説明は省略する。また、ＦＷエンジン８４０とＡＶエンジン８６０とは、マッチング部８５０を共有でき、マッチング部８５０は、ハードウェアロジックで具現化されることができる。
【０１１３】
第２アンチマルウェアシステム８００は、通信部８７０をさらに備え、マネジャー８１０、ルールパターンＤＢ８２０、ウイルスパターンＤＢ８３０、ＦＷエンジン８４０、マッチング部８５０及びＡＶエンジン８６０と共に一つのＳｏＣで具現化されることができる。
【０１１４】
通信部８７０は、外部デバイスから第１ターゲットデータを受信し、外部デバイスに第１ターゲットデータを送信する通信モジュールであって、ＷｉＦｉ（Ｗｉｒｅｌｅｓｓ  ｆｉｄｅｌｉｔｙ）モジュール、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）モジュール、ＯＴＡ（Ｏｖｅｒ  ｔｈｅ  ａｉｒ）モジュール、ブルートゥース（Ｂｌｕｅｔｏｏｔｈ）モジュール、及び４Ｇモジュールののうち、少なくとも一つを備えることができる。通信部８７０を介して受信された第１ターゲットデータは、ＦＷエンジン８４０に入力される。ＦＷエンジン８４０は、受信された第１ターゲットデータのハッシュ値を生成し、図３を参照して説明したハッシュ値マッチング、ＬＰＭ及びＥＰＭを行うことができる。ＥＰＭ結果、第１ターゲットデータが正常データと判断されると、ＦＷエンジン８４０は、第１ターゲットデータがアプリケーション部（図示せず）に送信されるようにすることができる。
【０１１５】
図９は、本発明の他の実施の形態に係る第３アンチマルウェアシステムの機能を説明するための機能ブロック図である。
【０１１６】
図９に示すように、第３アンチマルウェアシステム９００は、ＡＭ（Ａｎｔｉ−Ｍａｌｗａｒｅ）マネジャー９０５、ＦＷマネジャー９１０、ルールパターンＤＢ９２０、ＦＷエンジン９３０、ＡＶマネジャー９４０、ウイルスパターンＤＢ９５０及びＡＶエンジン９６０を備えることができる。図９に示すＡＭマネジャー９０５、ＦＷマネジャー９１０、ルールパターンＤＢ９２０、ＦＷエンジン９３０、ＡＶマネジャー９４０、ウイルスパターンＤＢ９５０及びＡＶエンジン９６０は、図３を参照して説明したマネジャー３１０、ルールパターンＤＢ３２０、ウイルスパターンＤＢ３３０、ＦＷエンジン３４０、マッチング部３５０及びＡＶエンジン３６０と同一なので、詳細な説明は省略する。
【０１１７】
ただし、図３の実施の形態のマネジャー３１０は、図９の実施の形態では、３個のマネジャー（ＡＭマネジャー、ＡＶマネジャー９４０、及びＦＷマネジャー９１０から構成される。上述した図３のマネジャー３１０は、ＡＭマネジャー９０５、ＡＶマネジャー９４０、及びＦＷマネジャー９１０の各々の機能をすべて行うと説明したが、本実施の形態では、これらの３個のマネジャーは、互いの作業を分担して行うことにしている。一方、マネジャーを１個で構成するか、又は３個で構成することは、本願発明の例示に過ぎないので、他の方式（すなわち、マネジャーの個数をもっと増やして作業をより細分化する方式）で具現が可能であることはもちろんである。
【０１１８】
図９に示すように、ＡＭマネジャー９０５は、ＦＷ  ＵＩアプリケーションとＡＶ  ＵＩアプリケーションと連動して動作できる。ＡＭマネジャー９０５は、ＦＷ  ＵＩアプリケーションとＡＶ  ＵＩアプリケーションから命令を受けて、ＦＷと関連した命令であれば、ＦＷマネジャー９１０に送信し、ＡＶと関連した命令であれば、ＡＶマネジャー９４０に送信する。ＦＷマネジャー９１０とＡＶマネジャー９４０とは、指示された命令に対応する動作を行った後、その結果をＡＭマネジャー９０５に送信できる。ＡＭマネジャー９０５は、ＦＷマネジャー９１０とＡＶマネジャー９４０とから送信された結果を各々のアプリケーションに送信する。
【０１１９】
ＡＭマネジャー９０５がＦＷ  ＵＩアプリケーションから受信する命令は、例えば、ルールパターンＤＢ９２０に対するアップデート命令でありうる。このような命令がある場合、ＡＭマネジャー９０５は、ルールパターンＤＢ９２０に対するアップデート（生成、追加、削除、変更）命令をＦＷマネジャー９１０に送信する。ＦＷマネジャー９１０は、ルールパターンＤＢ９２０に対するアップデート動作を行った後、その結果をＡＭマネジャー９０５に報告できる。
【０１２０】
ＡＭマネジャー９０５がＡＶ  ＵＩアプリケーション（図示せず）から受信する命令は、例えば、スキャニング命令又はウイルスパターンＤＢ９５０のアップデート命令などになりうる。スキャニング命令がある場合、ＡＭマネジャー９０５は、ＡＶマネジャー９４０にスキャニング命令があるのを通知し、ＡＭマネジャー９０５は、ＡＶエンジン９６０にスキャニング命令があるのを通知する。ＡＶエンジン９６０は、ターゲットデータ（例えば、このデータは、スキャニング命令と共にＡＭマネジャー９０５が受信できる）に対してスキャニング動作を行う。遂行結果は、逆にＡＶマネジャー９４０とＡＭマネジャー９０５とを経てＡＶ  ＵＩアプリケーションに送信される。
【０１２１】
ＡＭマネジャー９０５がＡＶ  ＵＩアプリケーション（図示せず）から受信する命令は、ウイルスパターンＤＢ９５０のアップデート命令になることができ、このような場合、ＡＶマネジャー９４０がそういうアップデート動作を行うことができる。
【０１２２】
図１０は、ＦＷエンジン９３０を説明するための図である。
【０１２３】
図１０に示すように、ＦＷエンジン９３０は、第１マッチング部９３１を備える。第１マッチング部９３１は、図４に示すマッチング部３５０とほぼ同じ機能を行うので、図４の説明を参照しさらに詳細な説明は省略する。
【０１２４】
第１ハッシュマッチャーテーブル９７０及び第１サブマッチャーテーブル９７５は、ルールパターンＤＢ９２０のルールパターンから生成されることができ、これらについては、図４及び図５の説明を参照すれば良い。
【０１２５】
図１１に示すように、ＡＶエンジン９６０は、第２マッチング部９６１を備える。第２マッチング部９６１は、図４に示すマッチング部３５０とほぼ同一なので、図４の説明を参照し、さらに詳細な説明は省略する。
【０１２６】
第２ハッシュマッチャーテーブル９８０及び第２サブマッチャーテーブル９８５は、ウイルスパターンＤＢ９５０のウイルスパターンから生成される。第２ハッシュマッチャーテーブル９８０及び第２サブマッチャーテーブル９８５を生成する方法は、図４、図６及び図７の説明を参照し、さらに詳細な説明は省略する。
【０１２７】
ＡＶエンジン９６０は、ウイルスパターンＤＢ９５０のウイルスパターンのハッシュ値と第２ターゲットデータの少なくとも一部のハッシュ値を生成できる。
【０１２８】
第２マッチング部９６１は、第２ハッシュマッチャーテーブル９８０と第２サブマッチャーテーブル９８５とを利用して、ハッシュ値マッチングとＬＰＭとを行うことができる。第２マッチング部９６１は、第２ハッシュ値マッチング部９６１ａ及び第２ライトパターンマッチング部９６１ｂを備える。
【０１２９】
第２ハッシュ値マッチング部９６１ａは、ＡＶエンジン９６０から生成されるウイルスパターンのハッシュ値と第２ターゲットデータの少なくとも一部のハッシュ値とをマッチングさせることができる。
【０１３０】
第２ハッシュ値マッチング部９６１ａにおいて、ハッシュ値のマッチングが成功すると、第２ライトパターンマッチング部９６１ｂは、ＬＰＭを行う。
【０１３１】
ＬＰＭが成功した場合、ＡＶエンジン９６０は、ウイルスパターン、第２ターゲットデータ及び第２サブマッチャーテーブル９８５を利用してＥＰＭを行うことができる。
【０１３２】
ＥＰＭが成功した場合、ＡＶエンジン９６０は、サブパターンマトリックスを利用してＦＰＭを行う。
【０１３３】
ＦＰＭ結果、互いにマッチングされないと、ＡＶエンジン９６０は、第２ターゲットデータが正常データであると判断し、第２ターゲットデータを次のデスティネーションに送信する。反面、ＦＰＭ結果、互いにマッチングされると、ＡＶエンジン９６０は、第２ターゲットデータがウイルスに感染されたデータであると判断する。本実施の形態では、パターンＤＢがブラックリストを格納することを前提にして説明したが、ホワイトリストを格納することも可能である。ホワイトリストが格納された場合には、ＥＰＭやＦＰＭの遂行結果、マッチングされなければ正常なデータとして判断されない。
【０１３４】
図１２は、本発明の他の実施の形態に係る第４アンチマルウェアシステムの機能を説明するための機能ブロック図である。
【０１３５】
図１２に示すように、第４アンチマルウェアシステム１２００は、ＦＷマネジャー１２１０、ルールパターンＤＢ１２２０、ＦＷエンジン１２３０、ＡＶマネジャー１２４０、ウイルスパターンＤＢ１２５０、ＡＶエンジン１２６０及び通信部１２７０を備えることができる。図１２に示す第４アンチマルウェアシステム１２００は、図９に示すＡＭマネジャー９０５をさらに備えることもできる。図１１に示すＦＷマネジャー１２１０、ルールパターンＤＢ１２２０、ＦＷエンジン１２３０、ＡＶマネジャー１２４０、ウイルスパターンＤＢ１２５０及びＡＶエンジン１２６０は、図９〜図１１を参照して説明したＦＷマネジャー９１０、ルールパターンＤＢ９２０、ＦＷエンジン９３０、ＡＶマネジャー９４０、ウイルスパターンＤＢ９５０及びＡＶエンジン９６０と同一なので、詳細な説明は省略する。
【０１３６】
ただし、通信部１２７０は、外部デバイスから第１ターゲットデータを受信し、外部デバイスに第１ターゲットデータを送信する通信モジュールである。第４アンチマルウェアシステム１２００は、通信部１２７０をさらに備えて、ＦＷマネジャー１２１０、ルールパターンＤＢ１２２０、ＦＷエンジン１２３０、ＡＶマネジャー１２４０、ウイルスパターンＤＢ１２５０及びＡＶエンジン１２６０と共に一つのＳｏＣで具現化されることができる。
【０１３７】
通信部１２７０を介して受信された第１ターゲットデータは、ＦＷエンジン１２３０に入力される。ＦＷエンジン１２３０は、受信された第１ターゲットデータのハッシュ値を生成し、図３を参照して説明したハッシュ値マッチング、ＬＰＭ及びＥＰＭを行うことができる。ＥＰＭ結果、第１ターゲットデータが正常データと判断されると、ＦＷエンジン１２３０は、第１ターゲットデータがアプリケーション部（図示せず）に送信されるようにすることができる。アプリケーション部（図示せず）は、例えばウェブブラウザでありうる。
【０１３８】
図１３は、本発明の一実施の形態に係るアンチマルウェアシステムにおける動作方法を説明するためのフローチャートである。
【０１３９】
図１３の方法は、第１〜第４アンチマルウェアシステム３００、８００、９００、１２００のうちの何れか一つにより動作されることができ、以下では、第１アンチマルウェアシステム１００を例に挙げて説明する。
【０１４０】
マネジャー３１０は、ルールパターンからなるルールパターンＤＢ３２０とウイルスパターンとからなるウイルスパターンＤＢ３３０をアップデートして格納することができる（Ｓ１３０２）。マネジャー３１０は、基本に設定されたルールパターン又はユーザが防火壁ＵＩを介して設定したルールパターンを利用して、ルールパターンＤＢ３２０を生成できる。
【０１４１】
ＦＷエンジン３４０は、ルールパターンのハッシュ値を利用して、第１ハッシュマッチャーテーブル（第１ＨＭＴ）３７０と第１サブマッチャーテーブル（第１ＳＭＴ）３７５を生成及び格納し、ＡＶエンジン３６０は、ウイルスパターンのハッシュ値を利用して、第２ハッシュマッチャーテーブル（第２ＨＭＴ）３８０と第２サブマッチャーテーブル（第２ＳＭＴ）３８５とを生成及び格納することができる（Ｓ１３０４）。
【０１４２】
ＦＷエンジン３４０がターゲットデータを受信すると（Ｓ１３０６）、ＦＷエンジン３４０は、受信されたターゲットデータ（以下、第１ターゲットデータとする）をハッシュ関数に適用して、第１ターゲットデータの少なくとも一部のハッシュ値を生成できる（Ｓ１３０８）。
【０１４３】
マッチング部３５０のハッシュ値マッチング部３５１は、ステップＳ１３０２にて生成されるルールパターンのハッシュ値と、ステップＳ１３０８にて生成される第１ターゲットデータの少なくとも一部のハッシュ値とをマッチングできる（Ｓ１３１０）。
【０１４４】
ハッシュ値マッチングが成功すると（Ｓ１３１２−Ｙ）、ライトパターンマッチング部３５２は、ルールパターン、第１ターゲットデータ及び第１ハッシュマッチャーテーブル３７０を利用して、ＬＰＭを行うことができる（Ｓ１３１４）。
【０１４５】
ステップＳ１３１４のＬＰＭが成功した場合（Ｓ１３１６−Ｙ）、ＦＷエンジン３４０は、第１丁ミールマッチング部３４２は、ルールパターン、第１ターゲットデータ及び第１サブマッチャーテーブル３７５を利用して、ＥＰＭを行うことができる（Ｓ１３１８）。
【０１４６】
ステップＳ１３１８のＥＰＭが成功した場合（Ｓ１３２０−Ｙ）、ＦＷエンジン３４０は、第１ターゲットデータを非正常データとして判別して遮断できる（Ｓ１３２２）。
【０１４７】
反面、ステップＳ１３１２にて互いにマッチングされるハッシュ値がない場合（Ｓ１３１２−Ｎ）、ＦＷエンジン３４０は、第１ターゲットデータを正常データとして判断しフィルタリング「許容」を決定できる（Ｓ１３２４）。
【０１４８】
また、ステップＳ１３１４のＬＰＭが失敗した場合（Ｓ１３１６−Ｎ）、ＦＷエンジン３４０は、第１ターゲットデータを正常データとして判断できる（Ｓ１３２４）。
【０１４９】
また、ステップＳ１３１８のＥＰＭが失敗した場合（Ｓ１３２０−Ｎ）、ＦＷエンジン３４０は、第１ターゲットデータを正常データとして判断できる（Ｓ１３２４）。
【０１５０】
一方、マネジャー３１０がターゲットデータを受信すると、マネジャー３１０は、ターゲットデータがウイルススキャニング対象であるから、受信されたターゲットデータをＡＶエンジン３６０に送信できる（Ｓ１３２６）。
【０１５１】
ＡＶエンジン３６０は、受信されたターゲットデータ（以下、第２ターゲットデータとする）をハッシュ関数に適用して、第２ターゲットデータのハッシュ値を生成できる（Ｓ１３２８）。ステップＳ１３２８にて、ＡＶエンジン３６０は、第２ターゲットデータを一定大きさに分割したサブデータに対するハッシュ値を生成できる。
【０１５２】
マッチング部３５０のハッシュ値マッチング部３５１は、ステップＳ１３０２にて生成されるウイルスパターンのハッシュ値と、ステップＳ１３２８にて生成される第２ターゲットデータの少なくとも一部のハッシュ値とをマッチングできる（Ｓ１３３０）。
【０１５３】
ハッシュ値マッチングが成功すると（Ｓ１３３２−Ｙ）、ライトパターンマッチング部３５２は、ウイルスパターン、第２ターゲットデータ及び第２ハッシュマッチャーテーブル３８０を利用して、ＬＰＭを行うことができる（Ｓ１３３４）。
【０１５４】
ステップＳ１３３４のＬＰＭが成功した場合（Ｓ１３３６−Ｙ）、ＡＶエンジン３６０は、ウイルスパターン、第２ターゲットデータ及び第２サブマッチャーテーブル３８５を利用して、ＥＰＭを行うことができる（Ｓ１３３８）。
【０１５５】
ステップＳ１３３８のＥＰＭが成功した場合（Ｓ１３４０−Ｙ）、ＡＶエンジン３６０は、ＦＰＭを行う（Ｓ１３４２）。
【０１５６】
ステップＳ１３４２のＦＰＭが成功した場合（Ｓ１３４４−Ｙ）、ＡＶエンジン３６０は、第２ターゲットデータがウイルスに感染されたデータであると判断し、第２ターゲットデータを遮断する（Ｓ１３２２）。したがって、ＡＶエンジン３６０は、ウイルススキャニング対象である第２ターゲットデータを外部デバイス又はこの第２ターゲットデータを使用するアプリケーション部（図示せず）に送信しない。
【０１５７】
反面、ステップＳ１３３２にて互いにマッチングされるハッシュ値がない場合（Ｓ１３３２−Ｎ）、ＡＶエンジン３６０は、第２ターゲットデータを正常データとして判断し、フィルタリング「許容」を決定できる（Ｓ１３２４）。したがって、ＡＶエンジン３６０は、ウイルススキャニング対象である第２ターゲットデータを外部デバイス又はこの第２ターゲットデータを使用するアプリケーション部に送信する。
【０１５８】
また、ステップＳ１３３４のＬＰＭが失敗した場合（Ｓ１３３６−Ｎ）、ＡＶエンジン３６０は、第２ターゲットデータを正常データとして判断できる（Ｓ１３２４）。
【０１５９】
また、ステップＳ１３３８のＥＰＭが失敗した場合（Ｓ１３４０−Ｎ）、ＡＶエンジン３６０は、第２ターゲットデータを正常データとして判断できる（Ｓ１３２４）。
【０１６０】
また、Ｓ１３４２のＦＰＭが失敗した場合（Ｓ１３４４−Ｎ）、ＡＶエンジン３６０は、第２ターゲットデータが正常データであると判断し、第２ターゲットデータを許容して次のデスティネーションに送信する（Ｓ１３２４）。
【０１６１】
以上、図１３を参照して説明した実施の形態では、理解の便宜のためにパケット分類プロセスに対しては言及しておらず、ルールパターンマッチング動作についてのみ説明したことを明らかにする。すなわち、ステップＳ１３０８〜Ｓ１３２４の動作は、ルールパターンマッチング動作に関するもので、パケット分類プロセス動作は、ステップＳ１３０８とＳ１３０６との間で行われうる。
【０１６２】
図１４は、本発明の一実施の形態に係る図２に示すアンチウイルスＨ／Ｗのハードウェア構成を示したブロック図である。
【０１６３】
図１４に示すように、本発明の一実施の形態に係るアンチウイルスＨ／Ｗは、システムインターフェース２０１、システムレジスタ２０３、メモリインターフェース２０５、メモリ２０７、バッファ２０９、ハッシュマッチャー２１１、オフセットアドレスジェネレーター２１３、ハッシュＱ（Ｑｕｅｕｅ）バッファ２１５、ライトパターンマッチャー２１７及びスキャンＱバッファ２１９を備えることができる。本発明の一実施の形態によれば、図１４のアンチウイルスＨ／Ｗは、図３、図４、図８、又は図９のマッチングユニットとして使用されることができる。
【０１６４】
システムインターフェース２０１は、アンチマルウェアシステム１００と外部構成要素との間のインターフェースを支援し、メモリインターフェース２０５は、アンチマルウェアシステム１００内に格納されたＤＢ又はファイルの内容を読み込むために使用される。
【０１６５】
メモリ２０７には、ハッシュマッチャー２１１でハッシュマッチング動作を行うためのデータを提供するために、パターンハッシュ値テーブルがロードされうる。
【０１６６】
バッファ２０９は、メモリインターフェース２０５から読み込んだＤＢ又はファイルの内容を格納する役割を果たす。バッファ２０９は、デュアルバンク方式で構成されることができる。
【０１６７】
ターゲットデータは、バッファ２０９の格納容量に合う大きさ分だけ分割されて２個のバッファ２０９に格納される。ここで、図１４のアンチウイルスＨ／Ｗがアンチ−ウイルスエンジンの一部として使用される場合には、前記ターゲットデータは、ファイルのようなデータでありうる。一方、図１４のアンチウイルスＨ／Ｗが防火壁エンジンの一部として使用される場合には、前記ターゲットデータは、パケットデータでありうる。
【０１６８】
ハッシュマッチャー２１１は、ターゲットデータのハッシュ値とハッシュマッチャーテーブルのマッチング動作を行う。ハッシュマッチャー２１１は、ハッシュ値マッチングが成功したターゲットデータをハッシュＱバッファ２１５に格納する。
【０１６９】
オフセットアドレスジェネレーター（ｏｆｆｓｅｔ  ａｄｄｒｅｓｓ  ｇｅｎｅｒａｔｏｒ）２１３は、ハッシュ値マッチングが成功した場合、サブマッチャーテーブルから前記マッチングされたハッシュ値が格納されたメモリアドレスを発生させる。
【０１７０】
ハッシュＱ（Ｑｕｅｕｅ）バッファ部２１５は、オフセットアドレスジェネレーター２１３から発生されたアドレスとターゲットデータとを互いに対応させて格納する。
【０１７１】
ライトパターンマッチャー２１７は、ハッシュＱバッファ部２１５が格納したターゲットデータの一部（例えば、ターゲットデータの中間値と最後値）とウイルスパターン（又はルールパターンのＩＰ  ａｄｄｒｅｓｓハッシュ値、プロトコルハッシュ値、又はＩＰ  ａｄｄｒｅｓｓの中間値）とを互いにマッチングさせる。ライトパターンマッチャー２１７は、ライトパターンマッチングが成功したターゲットデータをスキャンＱバッファ２１９に格納する。
【０１７２】
スキャンＱ（Ｑｕｅｕｅ）バッファ部２１９は、ライトパターンマッチングが成功したターゲットデータを格納することができる。
【０１７３】
図１４のアンチウイルスＨ／Ｗがアンチウイルスエンジンの一部として使用されるとき、アンチウイルスエンジンは、スキャンＱバッファ部２１９に格納されたターゲットデータとウイルスパターンとを精密にマッチングさせる精密パターンマッチング動作を行い、精密パターンマッチングが成功すると、フルパターンマッチングを行う。ここで、フルパターンマッチングは、複雑な文法を有したパターンである場合に行われ、簡単な文法を有したパターンは、精密パターンマッチングまでのみ行っても良い。
【０１７４】
一方、図１４のアンチウイルスＨ／Ｗが防火壁エンジンの一部として使用されるときには、防火壁エンジンは、スキャンＱバッファ部２１９に格納されたターゲットデータとルールパターンを精密にマッチングさせる精密パターンマッチング動作を行う。
【０１７５】
上記のマッチング動作の中で、ウイルスパターンマッチングに対するさらに詳細な説明は、韓国特許出願第１０−２０１０−００４９５６６号（２０１０．５．２７日付出願）、韓国特許出願第１０−２０１０−００５２９８１号（２０１０．６．４日付出願）、韓国特許出願第１０−２０１１−００４９２４９号（２０１１．５．２４日付出願）に記載されており、この特許出願に記載された内容は、本願明細書の内容と相反しない範囲内で本願明細書の一部として結合される。
【０１７６】
図１５は、本発明の一実施の形態に係るアンチウイルスＨ／Ｗ１１７においてウイルススキャニング動作を説明するための図である。
【０１７７】
図１５に示すように、ウイルスパターンＤＢ４１には、ウイルススキャニングに使用するウイルスパターンが格納されている。ウイルスパターンＤＢ４１は、図３〜図１２に示すウイルスパターンＤＢ３３０、８３０、９５０、１２５０のうちの何れか一つでありうる。
【０１７８】
ハッシュマッチャーテーブル４３は、ハッシュマッチャー２１１とデータをやり取りし、ハッシュマッチャー２１１においてハッシュマッチングを行うときに使用される。ハッシュマッチャーテーブル４３は、図４及び図１１に示すハッシュマッチャーテーブル３８０、９８０のうちの何れか一つでありうる。
【０１７９】
ウイルスパターンＤＢ４１に格納されているすべてのウイルスパターンがメモリ２０７にロードされた後、ハッシュ値生成器（図示せず）がメモリ２０７にロードされたすべてのウイルスパターンに対するハッシュ値を生成すると、生成されたハッシュ値からパターンハッシュ値テーブルが生成される。パターンハッシュ値テーブルは、メモリ２０７に格納されることができる。
【０１８０】
サブマッチャーテーブル４４は、ライトパターンマッチャー２１７とデータをやり取りし、ＬＰＭとＥＰＭ動作の遂行に使用される。本発明の一実施の形態においてサブマッチャーテーブル４４は、重複パターンのオフセット、中間値オフセット、中間値、最後値オフセット、最後値、実際パターン情報を含むことができる。サブマッチャーテーブル４４は、図４及び図１０に示すサブマッチャーテーブル３７５、９７５のうちの何れか一つでありうる。
【０１８１】
サブパターンマトリックス４５は、ターゲットデータを構成する各々のサブデータに対するサブパターンマッチング結果を含む。サブパターンマトリックスは、ＦＰＭ動作に使用される。ウイルスパターン全体とサブデータの全体に対してＥＰＭが行われた結果、該当サブデータにウイルスパターンが存在しているか否かが確認されると、サブデータ別にその存在有無がサブパターンマトリックス４５に記録される。
【０１８２】
バッファ２０９には、ターゲットデータのサブデータがロードされ、ロードされたサブデータは、ハッシュマッチャー２１１に提供される。
【０１８３】
このために、ハッシュマッチャー２１１は、メモリ２０７からはパターンハッシュ値テーブル４２を、バッファ２０９からはサブデータを、メモリ（図示せず）（例えば、図２のＳＲＡＭ１３０）からはハッシュマッチャーテーブル４３が提供されて、ハッシュマッチングを行う。
【０１８４】
ハッシュＱバッファ２１５は、ハッシュマッチャー２１１によりハッシュ値がマッチングされた場合、ターゲットデータを格納することができる。
【０１８５】
以後、ライトパターンマッチャー２１７では、サブマッチャーテーブル４４を利用してサブデータの一部に対するマッチング動作を行う。ライトパターンマッチングが成功すると、ライトパターンマッチャー２１７は、成功したサブデータをスキャンＱバッファ２１９側に出力する。スキャンＱバッファ２１９からの出力結果は、ＥＰＭ動作に使用される。
【０１８６】
ＥＰＭが成功した場合、アンチマルウェアシステムは、サブパターンマトリックス４５を利用して、サブパターンマトリックスに含まれたサブデータとウイルスパターンとをフルマッチングする動作を行う。すなわち、ウイルスパターンとターゲットデータの全てとをマッチングさせる動作は、スキャンＱバッファ２１９に格納されたターゲットデータに対して行われる。
【０１８７】
図１６は、本発明の一実施の形態に係るアンチマルウェアシステムにおけるアンチウイルスＨ／Ｗ１１７の動作方法を示すフローチャートである。
【０１８８】
図１６に示すように、アンチウイルスＨ／Ｗ１１７が初期化されると（Ｓ１６０１）、ウイルスパターンが格納されたウイルスパターンＤＢ４１がメモリ２０７にロードされる（Ｓ１６０３）。
【０１８９】
ウイルススキャニング対象であるターゲットデータ（例えば、図３の第２ターゲットデータ）がバッファ２０９の大きさ分だけバッファ２０９にロードされる（Ｓ１６０５）。
【０１９０】
ハッシュマッチャー２１１は、決まった大きさ分だけバッファ２０９からターゲットデータとメモリ２０７からパターンハッシュ値テーブルを読み込む（Ｓ１６０７）。ターゲットデータのパターンハッシュ値テーブルは、予め生成されてメモリ２０７に格納されていることができる。
【０１９１】
ハッシュマッチャー２１１は、ステップＳ１６０７にて読み込んだターゲットデータのハッシュ値とウイルスパターンのハッシュ値とをマッチングさせる（Ｓ１６０９）。
【０１９２】
読み込んだターゲットデータの大きさは、ターゲットデータカウントとして設定される（Ｓ１６１１）。
【０１９３】
ターゲットデータカウントとバッファ２０９の大きさを比較して、互いに一致すると（Ｓ１６１３−Ｙ）、アンチウイルスＨ／Ｗ１１７は、現在使用中のバッファを他のバッファに変更する（Ｓ１６１５）。バッファが変更された場合、変更されたバッファにターゲットデータをロードし、ステップＳ１６０５〜ステップＳ１６１３を繰り返す。
【０１９４】
ターゲットデータカウントがバッファ２０９の大きさと一致しないと（Ｓ１６１５−Ｎ）、アンチウイルスＨ／Ｗ１１７は、ハッシュＱバッファ２１５がフル（ｆｕｌｌ）であるか否かを確認する（Ｓ１６１７）。ハッシュＱバッファ２１５がフルであると、アンチウイルスＨ／Ｗ１１７は、該当作業を終了し、フルでないと、ハッシュＱバッファ２１５が分析されるまでステップＳ１６０７〜ステップＳ１６１５を繰り返す。
【０１９５】
図１７は、図１６のステップＳ１６０９のハッシュマッチャー２１１のマッチング動作を説明するためのフローチャートである。
【０１９６】
図１７に示すように、ハッシュマッチャー２１１は、ターゲットデータのハッシュ値がパターンハッシュ値テーブルに存在するか否かを確認する（Ｓ１７０１）。
【０１９７】
ターゲットデータのハッシュ値がハッシュマッチャーテーブルに存在すると、ハッシュマッチャー２１１は、ターゲットデータのハッシュ値にパターン表示があるか否かを確認する（Ｓ１７０３）。
【０１９８】
ターゲットデータのハッシュ値にパターン表示があると、ハッシュマッチャー２１１は、ハッシュＱバッファ２１５がフル（ｆｕｌｌ）であるか否かを確認する（Ｓ１７０５）。
【０１９９】
ハッシュＱバッファ２１５がフルでないと（Ｓ１７０５−Ｎ）、ハッシュマッチャー２１１は、最新情報にハッシュＱバッファ２１５をアップデートする（Ｓ１７０７）。最新情報は、オフセットアドレスジェネレーター２１３から発生したデータであって、ハッシュマッチャー２１１のマッチング動作の遂行結果、マッチングが成功した場合にハッシュ値に対応する実際比較メモリ領域に対するメモリアドレス値を含むことができる。
【０２００】
以後、ハッシュＱバッファ２１５から読み出し動作があると（Ｓ１７０９−Ｙ）、ライトパターンマッチャー２１７は、ＬＰＭ動作を行う（Ｓ１７１１）。
【０２０１】
反面、ハッシュＱバッファ２１５がフルであると（Ｓ１７０５−Ｙ）、ハッシュマッチャー２１１は、ハッシュＱバッファ２１５をフルに設定する（Ｓ１７１３）。
【０２０２】
図１８は、ステップＳ１７１１のライトパターンマッチャー２１７のマッチング動作を説明するためのフローチャートである。
【０２０３】
図１８に示すように、ライトパターンマッチャー２１７は、読み込んだターゲットデータのハッシュ値からオフセットが指定したメモリからパターンを読み込む（Ｓ１８０１）。すなわち、ライトパターンマッチャー２１７は、ハッシュ値に対応するターゲットデータのパターンのうち、中間値と最後値を読み込み、サブマッチャーテーブル４４からウイルスパターンの中間値と最後値とを読み込むことができる。
【０２０４】
ライトパターンマッチャー２１７は、ターゲットデータの中間値とウイルスパターンの中間値とが同じであるか否かを確認する（Ｓ１８０３）。
【０２０５】
ターゲットデータの中間値がウイルスパターンの中間値と同一であると（Ｓ１８０３−Ｙ）、ライトパターンマッチャー２１７は、ターゲットデータの最後値とウイルスパターンの最後値とが同じであるか否かを確認する（Ｓ１８０５）。
【０２０６】
ターゲットデータの最後値とウイルスパターンの最後値とが同一であると（Ｓ１８０５−Ｙ）、ライトパターンマッチャー２１７は、スキャンＱバッファ２１９がフル（ｆｕｌｌ）であるか否かを確認する（Ｓ１８０７）。
【０２０７】
スキャンＱバッファ２１９がフルでないと（Ｓ１８０７−Ｎ）、ライトパターンマッチャー２１７は、最新情報にスキャンＱバッファ２１９をアップデートする（Ｓ１８０９）。最新情報は、ＦＰＭを行うために必要な、ライトパターンマッチャー２１７のマッチング動作結果でありうる。
【０２０８】
スキャンＱバッファ２１９がフルであると（Ｓ１８０７−Ｙ）、ライトパターンマッチャー２１７は、スキャンＱバッファ２１９をフルに設定する（Ｓ１８１１）。
【０２０９】
図１９は、本発明の一実施の形態に係る防火壁Ｈ／Ｗ１１９におけるパケットフィルタリング動作を説明するための図である。
【０２１０】
図１９に示すように、ルールパターンＤＢ５１は、パケットルールを格納し、ルールパターンは、パケットの方向、ＩＰ  ａｄｄｒｅｓｓ、プロトコル、ポート、許容／遮断情報と内容を含むことができる。ここで、パケットの方向は、パケットが伝えられる方向（例えば受信、送信又は両方向）を表し、ＩＰ  ａｄｄｒｅｓｓは、ソースＩＰ  ａｄｄｒｅｓｓとデスティネーションＩＰ  ａｄｄｒｅｓｓを表し、プロトコルは、使用するプロトコルの種類（例えば、ＴＣＰ、ＵＤＰ、ＩＣＭＰ、Ａｌｌ）を表し、ポートは、設定しようとするポート番号を表し、そして許容／遮断情報は、表示された情報のパケットを許容するか遮断するかを表す。
【０２１１】
本実施の形態においてハッシュマッチャー２１１は、ハッシュマッチャーテーブル５３を利用してハッシュ値マッチング動作を行い、ライトパターンマッチャー２１７は、サブマッチャーテーブル５４を利用してライトパターンマッチング動作を行う。ここで、ハッシュマッチャー２１１は、バッファ２０９に格納されたデータのハッシュ値と、ハッシュマッチャーテーブル５３をハードウェアー的にマッチングさせる。ハッシュ値がマッチングされたデータは、ハッシュＱバッファ２１５に格納され、ライトパターンマッチャー２１７は、ハッシュＱバッファ２１５に格納されたデータとサブマッチャーテーブルとをハードウェアー的にマッチングさせる。ライトパターンマッチャー２１７によりマッチングが成功されると、マッチングされたデータは、スキャンＱバッファ２１９に格納され、防火壁エンジン１３０は、ソフトウェア的にスキャンＱバッファ２１９に格納されたデータとルールパターンＤＢとが全て一致しているか否かを判断する精密パターンマッチング動作を行う。以後、防火壁エンジン１３０は、精密パターンマッチングの結果に応じて、パケットデータを通過又は遮断する。
【０２１２】
図１９を参照し続けると、防火壁エンジンは、フィルタリングするパケットデータを受けると、まずパケットデータに対するパケット分類プロセスを行い、パケット分類プロセスの分類結果にパターンマッチングする必要性がある場合にのみパケットデータとルールパターンＤＢとのマッチング動作を行う。防火壁エンジンは、パケット分類プロセスを行う際に、マッチング部１１９を少なくとも一回以上使用し、パケットデータとルールパターンＤＢとのマッチング動作を行うときにもマッチング部１１９を使用する。これについての詳細な説明は、後述する図２０〜図２４の説明を参照すれば良い。
【０２１３】
一方、図１９に示す防火壁エンジンの構成は、あくまでも例示的なものであり、パケットデータをフィルタリングできる構成であれば、いかなる構成でも本願発明に使用されることができる。
【０２１４】
図２０は、本発明の一実施の形態に係るパケットフィルタリング方法を説明するためのフローチャートである。
【０２１５】
図２０に示すように、防火壁エンジンは、フィルタリングする対象になるパケットデータが入力されると（Ｓ２００１）、パケットデータのヘッダ（ｈｅａｄｅｒ）をパターン形態に変換し（Ｓ２００３）、パケットデータのヘッダ情報を利用してパケットデータに対してパケット分類プロセスを実施する（Ｓ２００５）。ステップＳ２００３でのパターン形態は、例えば図５の（ａ）のような形態でありうる。本実施の形態において、ステップＳ２００３は、例示的なものであって、フィルタリングする対象になるパケットデータのヘッダを必ず図９の（ａ）のような形態に変換する必要はない。例えば、図２０の実施の形態は、ステップＳ２００３の代りに、パケットデータからヘッダ情報を抽出するステップを含め、このように抽出したヘッダ情報を利用してステップＳ２００５を行うように構成することも可能である。パケット分類プロセスについては、後述する図２１において説明する。
【０２１６】
パケットデータに対してパケット分類プロセスが完了すると、後述するステップＳ２００７のパターンマッチング動作を行うか否かが決定される。すなわち、防火壁エンジンは、入力されたすべてのパケットデータに対してパターンマッチング動作を行うのではなく、パケット分類プロセス（Ｓ２００５）をパケットデータに適用することによって、パケットデータに対してパターンマッチング動作を行うか否かを決定し、パターンマッチング動作を行うことと決定した場合にのみ、後述するパターンマッチングステップ（Ｓ２００７）を行う。
【０２１７】
パターンマッチングステップでは、パケットデータをルールパターンＤＢに既格納されたルールパターンとのマッチングを行う。これにより、パケットデータがルールパターンとマッチングされるか否かを確認する（Ｓ２００７）。例えば、防火壁エンジンは、図１４に例示的に示すハードウェア１１７を利用して、パケットデータのヘッダ情報（ＩＰ  ａｄｄｒｅｓｓ、ポート番号、プロトコル）とルールパターンとがマッチングされるか否かを確認することができる。図１４のハードウェア１１７を利用してステップＳ２００７を行うとき、ハッシュマッチャー２１１は、パケットデータに対するヘッダのハッシュ値と、ルールパターンのヘッダのハッシュ値とをマッチングさせ、ハッシュ値が互いにマッチングされると、ライトパターンマッチャー２１７は、パケットデータのヘッダの中間値と最後値と、ルールパターンのヘッダの中間値と最後値とを各々マッチングさせ、これらの値が互いにマッチングされると、防火壁エンジンは、パケットデータのヘッダの全てとルールパターンのヘッダの全てとをマッチングさせる精密マッチング動作を行う。精密マッチング結果、マッチングされると、防火壁エンジンは、後述するようにパケットデータを遮断することができる。パケットデータがルールパターンとマッチングされると、マッチングされたルールパターンに応じてパケットデータを許容（Ａｌｌｏｗ）又は遮断（Ｂｌｏｃｋ）する（Ｓ２００９）。反面、パケットデータがルールパターンとマッチングされないと、マッチングが失敗したという意味であるから、パケットデータを通過させる（Ｓ２０１１）。
【０２１８】
図２１は、本発明の一実施の形態に係るパケット分類プロセスを説明するためのフローチャートである。
【０２１９】
図２１に示すように、パケット分類プロセスは、ステップＳ２１０１〜Ｓ２１１９からなり、防火壁エンジンは、パケット分類プロセス結果、パケットデータに対してパターンマッチングする必要があると決定した場合、パターンマッチングステップ（Ｓ２１２１）を行う。本実施の形態によれば、防火壁エンジンが少なくとも一つ以上のフラグを使用してパケット分類プロセスを行う。
【０２２０】
フラグ（ｆｌａｇ）は、ＩＰフラグ、プロトコルフラグ、ポートフラグ、ＩＰマッチングと関連した分類有無フラグ、プロトコルマッチングと関連した分類有無フラグ、及びポートマッチングと関連した分類有無フラグを含むことができる。本実施の形態において、防火壁エンジンは、ルールパターンＤＢ及び／又は図５の（ｃ）に示すサブマッチャーテーブルを参照して、各フラグの値を設定できる。防火壁エンジンは、フラグ値をシステムレジスタ２０３に格納することができるが、システムレジスタ２０３でない他の格納部（図示せず）にも格納できることはもちろんである。防火壁エンジンは、ルールパターンのうち、すべてのＩＰ  ａｄｄｒｅｓｓに対してパスするルールパターンが一つでもあれば、ＩＰフラグをＡＬＬに設定する。同じ方式で、防火壁エンジンは、ルールパターンの中ですべてのプロトコルに対してパスするルールパターンが一つでもあれば、プロトコルフラグをＡＬＬに設定する。そして、防火壁エンジンは、ルールパターンの中ですべてのポートに対してパスするルールパターンが一つでもあれば、ポートフラグをＡＬＬに設定する。以上説明したフラグに対する設定動作は、パケットデータに対する分類プロセスが始まる前に行われても良く、分類プロセスの進行中に行われても良い。
【０２２１】
一方、分類有無フラグは、各々ＩＰマッチング、プロトコルマッチング、ポートマッチング過程に防火壁エンジンにより、Ｙｅｓ又はＮｏに設定される。この部分についての説明は、各々図２２、図２３、図２４で後述する。
【０２２２】
防火壁エンジンは、フィルタリングする対象になるパケットデータが入力されると、ＩＰフラグをチェックしてＩＰフラグがＡｌｌに設定されているか否かを確認する（Ｓ２１０１）。ＩＰフラグがＡｌｌでないと、前記パケットデータに対してＩＰマッチングプロセスを実施する（Ｓ２１０３）。ＩＰマッチングプロセスについては、後述する図２２で説明する。
【０２２３】
防火壁エンジンは、ＩＰマッチングプロセスの完了後、ＩＰマッチングと関連した分類有無フラグが「Ｎ」に設定された状態であると（Ｓ２１０５：Ｎ）、プロトコルフラグがＡＬＬに設定されているか否かを確認する（Ｓ２１０７）。ここで、ＩＰマッチングと関連した分類有無フラグは、図２２を参照して後述するが、ＩＰマッチングプロセス過程に「Ｙ」又は「Ｎ」のうちの何れか一つの値に設定される。プロトコルフラグがＡｌｌでないと、防火壁エンジンは、プロトコルマッチングプロセスを実施する（Ｓ２１０９）。プロトコルマッチングプロセスについては、後述する図２４で説明する。
【０２２４】
プロトコルマッチングプロセスの完了後、防火壁エンジンは、プロトコルマッチングと関連した分類有無フラグが「Ｎ」に設定された状態であると（Ｓ２１１１：Ｎ）ポートフラグがＡＬＬに設定されているか否かを確認する（Ｓ２１１３）。仮にポートフラグがＡＬＬに設定された状態であると、ＩＰフラグがＡＬＬに設定されているか否かを確認する（Ｓ２１１９）。ステップＳ２１１９の遂行結果、防火壁エンジンは、ＩＰフラグがＡＬＬに設定された状態であると、該当パケットデータに対するルールパターンマッチング動作を終了するが、ＩＰフラグがＡＬＬでない場合（Ｓ２１１９：Ｎ）パターンマッチング動作を行う（Ｓ２１２１）。
【０２２５】
ステップＳ２１１３の遂行結果、ポートフラグがＡＬＬに設定された状態でないと（Ｓ２１１３：Ｎ）、防火壁エンジンは、パケットデータに対するポートマッチングプロセスを実施する（Ｓ２１１５）。ポートマッチングプロセスに対しては、後述する図２４で説明する。ポートマッチングプロセスの完了後、防火壁エンジンは、ポートマッチングと関連した分類有無フラグが「Ｎ」に設定された状態であると（Ｓ２１１７：Ｎ）、該当パケットに対するパターンマッチングを実施する（Ｓ２１２１）。
【０２２６】
一方、防火壁エンジンは、分類有無フラグが「Ｙ」に設定された状態であると（Ｓ２１０５：Ｙ、Ｓ２１１１：Ｙ、Ｓ２１１７：Ｙ）、該当パケットデータに対するルールパターンマッチング動作を終了する。
【０２２７】
図２２は、本発明の一実施の形態に係るＩＰマッチングプロセスを説明するためのフローチャートである。
【０２２８】
防火壁エンジンは、パケットデータのヘッダに含まれたＩＰ  ａｄｄｒｅｓｓに対するハッシュ（ｈａｓｈ）値とルールパターンＤＢに含まれたルールパターンのＩＰ  ａｄｄｒｅｓｓのハッシュ値とが互いにマッチングされるか否かを行うハッシュマッチャー（ｈａｓｈ  ｍａｔｃｈｅｒ）プロセスを実施する（Ｓ２２０１）。本発明の一実施の形態によれば、防火壁エンジンのハッシュマッチャー２１１は、パケットデータのヘッダに含まれたＩＰ  ａｄｄｒｅｓｓに対するハッシュ値と、図５の（ｂ）に例示されるハッシュマッチャーテーブルとを互いにマッチングさせる。例えば、パケットデータのヘッダに含まれたＩＰ  ａｄｄｒｅｓｓに対するハッシュ値が「Ｘ」であると、ハッシュマッチャーテーブルに「Ｘ」が存在すると表示されているので、このような場合は、両者が互いにマッチングされるといえる。
【０２２９】
ハッシュマッチャープロセスにおいてマッチングされないと（Ｓ２２０３）、防火壁エンジンは、ＩＰマッチングと関連した分類有無フラグを該当パケットが分類されたという意味（すなわち、「Ｙ」）に変更する（Ｓ２２０５）。反面、ハッシュマッチャープロセスにおいてマッチングされると（Ｓ２２０３）、防火壁エンジンは、パケットに対してサブマッチャーテーブルを利用してマッチングを行うサブマッチャー（ｓｕｂ  ｍａｔｃｈｅｒ）プロセスを実施する（Ｓ２２０７）。本発明の一実施の形態によれば、防火壁エンジンのライトパターンマッチャー２１７は、パケットデータのヘッダに含まれたＩＰ  ａｄｄｒｅｓｓの中間値と最後値とを、図５の（ｃ）に例示されるサブマッチャーテーブルと互いにマッチングさせる。
【０２３０】
サブマッチャープロセスにおいてマッチングされないと（Ｓ２２０９）、防火壁エンジンは、ＩＰマッチングと関連した分類有無フラグを該当パケットが分類されたことであるという意味（すなわち、「Ｙ」）に変更する（Ｓ２２０５）。反面、サブマッチャープロセスにおいてマッチングされると（Ｓ２２０９）、防火壁エンジンは、サブマッチャーテーブルにおいてすべてのプロトコルに適用されるルールが存在しているか否かを表すｉｓｐｒｏの値と、すべてのポートに適用されるルールが存在しているか否かを表すｉｓｐｏｒｔの値とを確認する（Ｓ２２１１）。ここで、ｉｓｐｏｒｔの値が「１」というのは、ルールパターンＤＢに存在するルールパターンの中ですべてのポートに適用されるルールパターンが少なくとも一つは存在するということを意味し、ｉｓｐｒｏの値が「１」というのは、ルールパターンＤＢに存在するルールパターンの中ですべてのプロトコルに適用されるルールパターンが少なくとも一つは存在するということを意味する。
【０２３１】
ステップＳ２２１１の遂行結果、ｉｓｐｒｏ値が１でないと（Ｓ２２１３）、防火壁エンジンは、プロトコルフラグをＮｏｔ  ａｌｌに変更する（Ｓ２２１７）。一方、防火壁エンジンは、ｉｓｐｒｏ値が１であると（Ｓ２２１３）、ｉｓｐｏｒｔ値が１であるか否かを確認する（Ｓ２２１５）。
【０２３２】
防火壁エンジンは、ｉｓｐｏｒｔ値が１でないと（Ｓ２２１５）、ポートフラグをＮｏｔ  ａｌｌに変更する（Ｓ２２１９）。
【０２３３】
一方、図２２の実施の形態での分類有無フラグと、プロトコルフラグと、ポートフラグは、各々図２１のステップＳ２１０５が行われるときに参照される分類有無フラグと、ステップＳ２１０７が行われるときに参照されるプロトコルフラグと、ステップＳ２１１３が行われるときに参照されるポートフラグに該当する。
【０２３４】
図２３は、本発明の一実施の形態に係るプロトコルマッチングプロセスを説明するためのフローチャートである。
【０２３５】
防火壁エンジンは、パケットデータのヘッドに含まれたプロトコルに対するハッシュ値と、ルールパターンＤＢに含まれたルールパターンのプロトコルのハッシュ値とが互いにマッチングされるか否かを行うハッシュマッチャープロセスを実施する（Ｓ２３０１）。本発明の一実施の形態によれば、防火壁エンジンのハッシュマッチャー２１１は、パケットデータのヘッダに含まれたプロトコルに対するハッシュ値と、図５の（ｂ）に例示されるハッシュマッチャーテーブルとを互いにマッチングさせる。例えば、パケットデータのヘッダに含まれたプロトコルに対するハッシュ値が「Ｚ」であれば、ハッシュマッチャーテーブルに「Ｚ」が存在しないと表示されているので、このような場合は、両者が互いにマッチングされないといえる。
【０２３６】
ハッシュマッチャープロセスにおいてマッチングされると（Ｓ２３０３）、防火壁エンジンは、ハッシュマッチャープロセスを終了し、次のステップ（例えば、図２１のステップＳ２１１１）を行う。反面、ハッシュマッチャープロセスにおいてマッチングされないと、防火壁エンジンは、プロトコルマッチングと関連した分類有無フラグを該当パケットが分類されたことであるという意味（すなわち、「Ｙ」）に変更する（Ｓ２３０５）。ここで、分類有無フラグは、図２１のステップＳ２１１１にて参照される分類有無フラグに該当する。
【０２３７】
本実施の形態においてプロトコルマッチングは、場合の数が多くないので、サブマッチャープロセスを行わずに、ハッシュマッチャープロセスのみを使用して検証した。しかしながら、これは、本願発明の例示に過ぎず、プロトコルマッチングにおいてもサブマッチャープロセスを行うように構成することも当然可能である。
【０２３８】
図２４は、本発明の一実施の形態に係るポートマッチングプロセスを説明するためのフローチャートである。
【０２３９】
防火壁エンジンは、パケットデータのヘッドに含まれたポートに対するハッシュ値とルールパターンＤＢに含まれたルールパターンのポートのハッシュ値とが互いにマッチングされるか否かを行うハッシュマッチャープロセスを実施する（Ｓ２４０１）。本発明の一実施の形態によれば、防火壁エンジンのハッシュマッチャー２１１は、パケットデータのヘッダに含まれたポートに対するハッシュ値と、図５の（ｂ）に例示されるハッシュマッチャーテーブルとを互いにマッチングさせる。例えば、パケットデータのヘッダに含まれたプロトコルに対するハッシュ値が「Ａ」であると、ハッシュマッチャーテーブルに「Ａ」が存在すると表示されているので、このような場合は、両者のハッシュ値が互いにマッチングされるといえる。
【０２４０】
ハッシュマッチャープロセスにおいてマッチングされないと（Ｓ２４０３）、防火壁エンジンは、ポートマッチングと関連した分類有無フラグを該当パケットが分類されたことであるという意味（すなわち、「Ｙ」）に変更する（Ｓ２４０９）。
【０２４１】
ハッシュマッチャープロセスにおいてマッチングされると（Ｓ２４０３）、防火壁エンジンは、データパケットに対してサブマッチャープロセスを実施する（Ｓ２４０５）。本発明の一実施の形態によれば、防火壁エンジンのライトパターンマッチャー２１７は、パケットデータのヘッダに含まれたＩＰ  ａｄｄｒｅｓｓのハッシュ値とプロトコルのハッシュ値とを、図５の（ｃ）に例示されるサブマッチャーテーブルと互いにマッチングさせる。
【０２４２】
サブマッチャープロセスにおいてマッチングされないと（Ｓ２４０７）、ポートマッチングと関連した分類有無フラグを該当パケットが分類されたことであるという意味（すなわち、「Ｙ」）に変更する（Ｓ２４０９）。一方、サブマッチャープロセスにおいてマッチングされると、防火壁エンジンは、ポートマッチングプロセスを終了し、図２１のステップＳ２１１７を行う。
【０２４３】
一方、図２４のステップＳ２４０９における分類有無フラグは、図２１のステップＳ２１１７にて参照される分類有無フラグに該当する。
【０２４４】
本実施の形態において、アンチウイルスＨ／Ｗと防火壁Ｈ／Ｗとは、ハードウェアロジックから構成されて、単純でかつ速い作業を行うことができ、ビットテーブルであるハッシュマッチャーは、大きさが小さく、ハッシュ関数を介して求められたハッシュ値をマッチング対象にするために、比較速度が速いという長所がある。また、ライトパターンマッチャーは、ハッシュ値をインデックスとして接近するために、速いマッチング結果を出力できる。また、マルチパターンによりハッシュ値が衝突する場合には、衝突に対するサブマッチャーテーブルを構成して、衝突されるハッシュ値に対する処理を可能にした。
【０２４５】
以上、本発明は、限定された実施の形態と図面により説明されたが、本発明は、上記の実施の形態に限定されるものではなく、本発明が属する分野における通常の知識を有した者であればこのような記載から多様な修正及び変形が可能である。したがって、本発明の範囲は、説明された実施の形態に限って決まってはならず、後述する特許請求の範囲だけでなく、この特許請求の範囲と均等なものによって決まらねばならない。
【符号の説明】
【０２４６】
３００      第１アンチマルウェアシステム
３１０      アンチマルウェアマネジャー
３２０      ルールパターンＤＢ
３３０      ウイルスパターンＤＢ
３４０      防火壁エンジン
３５０      マッチング部
３５１      ハッシュ値マッチング部
３５２      ライトパターンマッチング部
３６０      アンチウイルスエンジン
【図１】
0005425840.tif 000002
【図２】
0005425840.tif 000003
【図３】
0005425840.tif 000004
【図４】
0005425840.tif 000005
【図５】
0005425840.tif 000006
【図６】
0005425840.tif 000007
【図７】
0005425840.tif 000008
【図８】
0005425840.tif 000009
【図９】
0005425840.tif 000010
【図１０】
0005425840.tif 000011
【図１１】
0005425840.tif 000012
【図１２】
0005425840.tif 000013
【図１３】
0005425840.tif 000014
【図１４】
0005425840.tif 000015
【図１５】
0005425840.tif 000016
【図１６】
0005425840.tif 000017
【図１７】
0005425840.tif 000018
【図１８】
0005425840.tif 000019
【図１９】
0005425840.tif 000020
【図２０】
0005425840.tif 000021
【図２１】
0005425840.tif 000022
【図２２】
0005425840.tif 000023
【図２３】
0005425840.tif 000024
【図２４】
0005425840.tif 000025