(57)【特許請求の範囲】
【請求項１】
ターゲットデータの一部であるサブデータに対する誤り検出符号を計算し、前記計算した誤り検出符号とマルウェアパターンの誤り検出符号とを比較する誤り検出符号比較部と、
前記サブデータの誤り検出符号と前記マルウェアパターンの誤り検出符号とが互いに一致する場合に、前記サブデータと前記マルウェアパターンとを比較するマッチャーと、
を備え、
前記サブデータは、前記ターゲットデータの最初から順に所定のバイト数だけ、前記ターゲットデータから取得されたものであって、
前記誤り検出符号比較部は、全ての前記サブデータについて前記計算した誤り検出符号と前記マルウェアパターンの誤り検出符号とを比較し、
前記マッチャーは、前記サブデータの誤り検出符号と前記マルウェアパターンの誤り検出符号とが互いに一致する全ての前記サブデータについて、前記サブデータと前記マルウェアパターンとを比較することを特徴とするパターンマッチング用エンジン。
【請求項２】
前記サブデータのハッシュ値とマルウェアパターンのハッシュ値とを比較するハッシュローダーをさらに備え、
前記マッチャーは、また、前記サブデータのハッシュ値と前記マルウェアパターンのハッシュ値とが互いに一致する場合に、前記サブデータと前記マルウェアパターンとを比較することを特徴とする請求項１に記載のパターンマッチング用エンジン。
【請求項３】
前記ターゲットデータに対するハッシュアルゴリズムを適用してハッシュ値を計算し、前記計算したハッシュ値と前記マルウェアパターンのハッシュ値とを比較するハッシュ値比較部をさらに備え、
前記誤り検出符号比較部、前記マッチャー、及び、前記ハッシュローダーは、前記ターゲットデータのハッシュ値と前記マルウェアパターンのハッシュ値が一致しない場合にのみ、実行されることを特徴とする請求項２に記載のパターンマッチング用エンジン。
【請求項４】
前記サブデータを前記ハッシュローダーと前記誤り検出符号比較部にそれぞれ提供するテキストローダーをさらに備えることを特徴とする請求項３に記載のパターンマッチング用エンジン。
【請求項５】
前記ターゲットデータを前記ハッシュ値比較部に提供するテキストローダーをさらに備えることを特徴とする請求項４に記載のパターンマッチング用エンジン。
【請求項６】
前記ターゲットデータ、又は、前記サブデータを互いに交互に格納する第１バッファと第２バッファとをさらに備え、
前記第１バッファと前記第２バッファとは、互いに交互に前記ターゲットデータ、又は、前記サブデータを前記テキストローダーに提供することを特徴とする請求項５に記載のパターンマッチング用エンジン。
【請求項７】
マルウェアパターンを格納する格納部と、
ターゲットデータの一部であるサブデータに対するエラー検出用値誤り検出符号と前記マルウェアパターンのエラー検出用値誤り検出符号とを比較する第１の処理と、前記サブデータのエラー検出用値誤り検出符号と前記マルウェアパターンのエラー検出用値誤り検出符号とが互いに一致する場合に、前記サブデータと前記マルウェアパターンとを比較する第２の処理を実行するパターンマッチング用エンジンと、
を備え、
前記サブデータは、前記ターゲットデータの最初から順に所定のバイト数だけ、前記ターゲットデータから取得されたものであって、
前記パターンマッチング用エンジンは、前記第１の処理において、全ての前記サブデータに対するエラー検出用値誤り検出符号と前記マルウェアパターンのエラー検出用値誤り検出符号とを比較し、
前記パターンマッチング用エンジンは、前記第２の処理において、前記サブデータのエラー検出用値誤り検出符号と前記マルウェアパターンのエラー検出用値誤り検出符号とが互いに一致する全ての前記サブデータについて、前記サブデータと前記マルウェアパターンとを比較することを特徴とする端末装置。
【請求項８】
前記パターンマッチング用エンジンは、また、サブデータのハッシュ値と前記マルウェアパターンのハッシュ値とを比較する第３の処理を実行し、前記サブデータのハッシュ値と前記マルウェアパターンのハッシュ値とが互いに一致する場合に、前記第２の処理を実行することを特徴とする請求項７に記載の端末装置。
【請求項９】
前記パターンマッチング用エンジンは、また、前記ターゲットデータに対するハッシュ値を計算し、前記計算したハッシュ値と前記マルウェアパターンのハッシュ値とを比較し、前記ターゲットデータのハッシュ値と前記マルウェアパターンのハッシュ値が一致しない場合にのみ、前記第１の処理、前記第２の処理、及び、前記第３の処理を実行することを特徴とする請求項８に記載の端末装置。
【請求項１０】
アプリケーションプロセッサをさらに備え、
前記パターンマッチング用エンジンは、前記アプリケーションプロセッサのＩＰの形態で内蔵されることを特徴とする請求項７に記載の端末装置。
【請求項１１】
前記パターンマッチング用エンジンは、システムオンチップの形態で構成され、
前記ファームウェアを格納する格納部は、前記システムオンチップに備えられたことを特徴とする請求項７に記載の端末装置。
【請求項１２】
前記システムオンチップは、前記ファームウェアを動作させるプロセッサをさらに備えることを特徴とする請求項１１に記載の端末装置。
【請求項１３】
プロセッサが、ターゲットデータの一部であるサブデータに対する誤り検出符号を計算し、前記計算した誤り検出符号とマルウェアパターンの誤り検出符号とを比較する第１の誤り検出符号比較ステップと、
プロセッサが、前記サブデータの誤り検出符号と前記マルウェアパターンの誤り検出符号とが互いに一致する場合に、前記サブデータと前記マルウェアパターンとを比較する前記サブデータに関する比較ステップと、
を含み、
前記サブデータは、前記ターゲットデータの最初から順に所定のバイト数だけ、前記ターゲットデータから取得されたものであって、
前記第１の誤り検出符号比較ステップは、プロセッサが、全ての前記サブデータについて前記計算した誤り検出符号と前記マルウェアパターンの誤り検出符号とを比較し、
前記サブデータに関する比較ステップは、プロセッサが、前記ターゲットデータの誤り検出符号と前記マルウェアパターンの誤り検出符号とが互いに一致する全ての前記サブデータについて、前記サブデータと前記マルウェアパターンとを比較することを特徴とする検索またはパターンマッチング方法。
【請求項１４】
プロセッサが、前記サブデータのハッシュ値と、マルウェアパターンのハッシュ値とを比較する前記サブデータのハッシュ値に関する比較ステップをさらに含み、
前記サブデータのハッシュ値と前記マルウェアパターンのハッシュ値とが互いに一致する場合に、前記サブデータに関する比較ステップが実行されることを特徴とする請求項１３に記載の検索またはパターンマッチング方法。
【請求項１５】
プロセッサが、前記ターゲットデータに対するハッシュ値を計算し、前記計算したハッシュ値と前記マルウェアパターンのハッシュ値とを比較する前記ターゲットデータのハッシュ値に関する比較ステップをさらに含み、
前記第１の誤り検出符号比較ステップ、前記サブデータに関する比較ステップ、及び、前記サブデータのハッシュ値に関する比較ステップは、前記ターゲットデータのハッシュ値と前記マルウェアパターンのハッシュ値が一致しない場合にのみ、実行されることを特徴とする請求項１４に記載の検索またはパターンマッチング方法。
【請求項１６】
プロセッサが、前記ターゲットデータのハッシュ値と前記マルウェアパターンのハッシュ値とが互いに一致すると、前記誤り検出符号と前記ハッシュ値とが一致したかどうかに関わらず、前記ターゲットデータに前記マルウェアパターンが含まれたと判断するステップをさらに含むことを特徴とする請求項１５に記載の検索またはパターンマッチング方法。
【請求項１７】
プロセッサがターゲットデータから複数のサブデータを構成するステップと、
プロセッサが前記サブデータをダブルバッファに書き込むステップをさらに含み、
前記第１の誤り検出符号比較ステップは、プロセッサが前記複数のサブデータをダブルバッファの一方のバッファから順次読み込んで、前記読み込まれたサブデータから前記誤り検出符号をそれぞれ計算し、
前記サブデータに関する比較ステップは、プロセッサが前記読み込まれたサブデータの誤り検出符号と前記マルウェアパターンの誤り検出符号とが互いに一致したときに行われることを特徴とする請求項１３に記載の検索またはパターンマッチング方法。
【請求項１８】
プロセッサがターゲットデータから複数のサブデータを構成するステップと、
プロセッサが前記サブデータをダブルバッファに書き込むステップをさらに含み、
前記サブデータのハッシュ値に関する比較ステップは、プロセッサが前記複数のサブデータをダブルバッファの一方のバッファから順次読み込んで、前記読み込まれたサブデータからハッシュ値を順次計算し、
前記第１の誤り検出符号比較ステップは、前記サブデータのハッシュ値に関する比較ステップにおいて、プロセッサが前記マルウェアパターンのハッシュ値とハッシュ値が一致する前記読み込まれたサブデータである第１のサブデータ、及び、前記第１のサブデータの後に続く少なくとも一つ以上のサブデータに対する誤り検出符号をそれぞれ計算し、プロセッサが前記計算した複数の誤り検出符号と前記マルウェアパターンの誤り検出符号とを比較し、
前記複数の誤り検出符号と前記マルウェアパターンの誤り検出符号とが互いに一致したときに、前記サブデータに関する比較ステップが実行されることを特徴とする請求項１４に記載の検索またはパターンマッチング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検索またはパターンマッチングエンジン及びこれを備えた端末装置並びにその方法に関する。
【背景技術】
【０００２】
コンピュータデバイスが多様な用途として活用されているが、例えば、ＰＣ、サーバ、携帯電話、ＰＤＡ、タブレット端末、スマートフォンのようなモバイル装置は、本来の機能の他に金融取引、インターネットショッピングなどのような多様な種類の付加的な機能を支援している。
【０００３】
しかしながら、このような付加的な機能は、ネットワークを介して支援される場合が多く、このような過程でウイルスのような悪性マルウェアの危険にさらされるおそれが高まっている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一つ以上の実施形態によれば、速い処理性能を有し、処理負荷が少ない検索またはパターンマッチングエンジンが提供される。
【０００５】
本発明の一つ以上の実施形態によれば、速い処理性能を有し、処理負荷が少ないハードウェア基盤の検索またはパターンマッチングエンジンが提供される。
【０００６】
本発明の一つ以上の実施形態によれば、速い処理性能を有し、処理負荷が少ない検索またはパターンマッチングエンジンが備えられた端末装置が提供される。
【０００７】
本発明の一つ以上の実施の形態によれば、速い処理性能を有し、処理負荷が少ない検索またはパターンマッチング方法が提供される。
【課題を解決するための手段】
【０００８】
本発明の例示的な実施形態の一側面によれば、パターンマッチング用エンジンは、ターゲットデータの一部であるサブデータに対する誤り検出符号を計算し、前記計算した誤り検出符号とマルウェアパターンの誤り検出符号とを比較する誤り検出符号比較部と、前記サブデータの誤り検出符号と前記マルウェアパターンの誤り検出符号とが互いに一致する場合に、前記サブデータと前記マルウェアパターンとを比較するマッチャーと、を備え、前記サブデータは、前記ターゲットデータの最初から順に所定のバイト数だけ、前記ターゲットデータから取得されたものであって、前記誤り検出符号比較部は、前記サブデータについて前記計算した誤り検出符号と前記マルウェアパターンの誤り検出符号とを比較し、前記マッチャーは、前記サブデータの誤り検出符号と前記マルウェアパターンの誤り検出符号とが互いに一致する全ての前記サブデータについて、前記サブデータと前記マルウェアパターンとを比較することを特徴とする。
【０００９】
また、本発明の他の例示的な実施形態の一側面によれば、端末装置は、マルウェアパターンを格納する格納部と、ターゲットデータの一部であるサブデータに対するエラー検出用値誤り検出符号と前記マルウェアパターンのエラー検出用値誤り検出符号とを比較する第１の処理と、前記サブデータのエラー検出用値誤り検出符号と前記マルウェアパターンのエラー検出用値誤り検出符号とが互いに一致する場合に、前記サブデータと前記マルウェアパターンとを比較する第２の処理を実行するパターンマッチング用エンジンと、を備え、前記サブデータは、前記ターゲットデータの最初から順に所定のバイト数だけ、前記ターゲットデータから取得されたものであって、前記パターンマッチング用エンジンは、前記第１の処理において、前記サブデータに対するエラー検出用値誤り検出符号と前記マルウェアパターンのエラー検出用値誤り検出符号とを比較し、前記パターンマッチング用エンジンは、前記第２の処理において、前記サブデータのエラー検出用値誤り検出符号と前記マルウェアパターンのエラー検出用値誤り検出符号とが互いに一致する全ての前記サブデータについて、前記サブデータと前記マルウェアパターンとを比較することを特徴とする。
【００１０】
また、本発明のさらに他の例示的な実施形態の一側面によれば、検索またはパターンマッチング方法は、プロセッサが、ターゲットデータの一部であるサブデータに対する誤り検出符号を計算し、前記計算した誤り検出符号とマルウェアパターンの誤り検出符号とを比較する第１の誤り検出符号比較ステップと、プロセッサが、前記ターゲットデータの誤り検出符号と前記マルウェアパターンの誤り検出符号とが互いに一致する場合に、前記ターゲットデータと前記マルウェアパターンとを比較する前記ターゲットデータに関する比較ステップと、を含み、前記サブデータは、前記ターゲットデータの最初から順に所定のバイト数だけ、前記ターゲットデータから取得されたものであって、前記第１の誤り検出符号比較ステップは、プロセッサが、前記サブデータについて前記計算した誤り検出符号と前記マルウェアパターンの誤り検出符号とを比較し、前記サブデータに関する比較ステップは、プロセッサが、前記ターゲットデータの誤り検出符号と前記マルウェアパターンの誤り検出符号とが互いに一致する全ての前記サブデータについて、前記サブデータと前記マルウェアパターンとを比較することを特徴とする。 
【発明の効果】
【００１１】
本発明の一つ以上の実施形態によれば、検索またはパターンマッチングにおいて速い処理性能と低処理負荷を実現するという効果がある。
【００１２】
本発明の他の一つ以上の実施の形態によれば、検索またはパターンマッチング動作を行う端末装置において、バッテリー消耗を減らしつつ、高速処理を実現する効果がある。
【００１３】
本発明の他の一つ以上の実施形態に係る検索またはパターンマッチングエンジンは、モバイルデバイスのような端末装置のアプリケーションプロセッサにＩＰ（Ｉｎｔｅｒｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ）の形態で実装されるので、資源の制限されたモバイルデバイスにおいても、低負荷で高速処理を実現するという効果がある。
【図面の簡単な説明】
【００１４】
【図１】本発明の例示的な実施形態に係る検索またはパターンマッチング用エンジンの構成図である。
【図２】本発明の例示的な実施形態に係る検索またはパターンマッチング用エンジンを有した端末装置の構成図である。
【図３】本発明の他の例示的な実施形態に係る検索またはパターンマッチング用エンジンを有した端末装置の構成図である。
【図４】本発明の例示的な実施形態に係るシステムインタフェースの構成図である。
【図５】本発明の例示的な実施形態に係る誤り検出符号を算出する方法を説明するための図である。
【図６】本発明の例示的な実施形態に係る検索またはパターンマッチング方法を説明するためのフローチャートである。
【図７】本発明の他の例示的な実施形態に係る検索またはパターンマッチング方法を説明するためのフローチャートである。
【図８】本発明の他の例示的な実施形態に係る検索またはパターンマッチング用エンジンを有した端末装置の構成図である。
【図９】本発明の他の例示的な実施形態に係る検索またはパターンマッチング用エンジンを有した端末装置の構成図である。
【発明を実施するための形態】
【００１５】
以上の本発明の目的、他の目的、特徴及び利点は、添付された図面と関連した以下の好ましい実施形態により容易に理解されるはずである。しかしながら、本発明は、ここで説明される実施形態に限定されず、他の形態で具体化されてもよい。むしろ、ここで紹介される実施形態は、開示された内容が徹底かつ完全になるように、そして当業者に、本発明の思想を十分に理解してもらうために提供されるものである。本明細書において、ある構成要素が他の構成要素上にあると言及される場合には、それは、他の構成要素上に直接形成される場合もあり、それらの間に第３の構成要素が介在される場合もあることを意味する。
【００１６】
また、あるエレメント（または構成要素）が他のエレメント（または構成要素）上で動作または実行されると言及されるとき、そのエレメント（または構成要素）は、他のエレメント（または構成要素）が動作または実行される環境で動作または実行されるか、または他のエレメント（または構成要素）と直接または間接的に相互作用により動作または実行されると理解されなければならない。
【００１７】
あるエレメント、構成要素、装置、またはシステムが、プログラム若しくはソフトウェアからなる構成要素を含むと言及される場合には、明示的な言及がなくても、そのエレメント、構成要素、装置、またはシステムは、そのプログラム若しくはソフトウェアが実行または動作するのに必要なハードウェア（例えば、メモリ、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等）や他のプログラムまたはソフトウェア（例えば、オペレーティングシステム（ＯＳ）やハードウェアを駆動するのに必要なドライバ等）を含むと理解されなければならない。
【００１８】
また、あるエレメント（または構成要素）が具現化されるに当たって、特別な言及がない限り、そのエレメント（または構成要素）は、ソフトウェア、ハードウェア、またはソフトウェア及びハードウェアのうち、如何なる形態によっても具現化可能であると理解されなければならない。
【００１９】
本明細書で使用された用語は、実施形態を説明するためのものであって、本発明を限定するものではない。本明細書において、単数形は、特に言及しない限り、複数形も含む。明細書で使用される「含む」と言及された構成要素は、一つ以上の他の構成要素の存在又は追加を排除しない。
【００２０】
以下、図面を参照して本発明を詳細に説明する。以下の特定の実施形態を述べるにおいて、様々に特定された内容は、発明をさらに具体的に説明し、理解を助けるために作成された。しかしながら、本発明を理解することができる程度のこの分野における知識を有した読者は、このような様々に特定された内容がなくても、本発明が実施可能であることを認知できる。ある場合には、周知で発明と大きく関連のない技術的内容は、本発明を説明するにあたって、特別な理由なしでも、読者の混乱を引き起こさないようにあえて述べないこともあることを予め言及しておく。
【００２１】
図１は、本発明の例示的な実施形態に係る検索またはパターンマッチング用エンジンの構成図である。
【００２２】
図１に示すように、本発明の例示的な実施形態に係る検索またはパターンマッチング用エンジン（以下、マッチング用エンジンとする）は、システムインタフェース１、ＤＢ（Ｄａｔａ  Ｂａｓｅ）インタフェース３、バッファ５、７、９、１９、２３、テキストローダー１１、ハッシュローダー１３、誤り検出符号比較部１５、ハッシュ値比較部１７、シフトＱバッファ１９、シフトマッチャー２１、及び、ハッシュＱバッファ２３を備えることができる。
【００２３】
システムインタフェース１は、マッチング用エンジンが搭載される装置のシステムバスとマッチング用エンジンとを接続させることができ、ＤＢインタフェース３は、マッチング用エンジンが搭載される装置のＤＢバスとマッチング用エンジンとを接続させることができる。
【００２４】
バッファ５は、ＤＢインタフェース３を介して基準データを受信して格納することができる。ここで、「基準データ」とは、マルウェアパターン、検索用テキスト、ルールパターンであるとよい。マルウェアパターン、検索用テキスト、及び、ルールパターンは、それぞれ、マルウェアパターンＤＢ、検索用テキストＤＢ、及び、ルールパターンＤＢに格納されている。マルウェアパターンは、ウイルス、アドウェア、スパイウェア、トロイの木馬などのような悪性マルウェアに対するパターンを含む。検索用テキストＤＢは、検索のための索引語を含み、ルールパターンＤＢは、パケットに対する遮断または通過を定義したルールを含む。
【００２５】
本発明の例示的な実施形態によれば、マルウェアパターンＤＢは、悪性マルウェアに対するパターンを含み、各パターンに対するハッシュ値、各パターンに対する誤り検出符号、及び各パターンに対するハッシュ値のうちの何れか一つ以上をさらに含むことができる。
【００２６】
また、本発明の例示的な実施形態によれば、検索用テキストＤＢは、索引語を含み、各索引語に対するハッシュ値、各索引語に対する誤り検出符号、及び各索引語に対するハッシュ値のうちの何れか一つ以上をさらに含むことができる。
【００２７】
バッファ７とバッファ９とは、ダブルバッファであり、ターゲットデータを互いに交互にＤＢインタフェース３を介して受信して格納することができる。バッファ７とバッファ９とに格納されたターゲットデータは、互いに交互にテキストローダー１１に送信される。
【００２８】
本発明の例示的な実施形態によれば、ターゲットデータはファイルであるとよく、このようなターゲットデータは、複数のサブデータに分割されているとよい。このような複数のサブデータは、バッファ７とバッファ９とに交互に格納される。本明細書において、「ターゲットデータ」と「サブデータ」とを、互いに混用して使用するものの、ただし区別する実益がある場合には、両方を区別して使用する。
【００２９】
テキストローダー１１は、バッファ７とバッファ９とからサブデータを交互に受信して格納し、これらのサブデータは、ハッシュローダー１３、及び、誤り検出符号比較部１５に入力される。また、テキストローダー１１は、バッファ７とバッファ９とからサブデータを交互に受信して格納し、ターゲットデータをハッシュ値比較部１７に出力する。
【００３０】
ハッシュローダー１３は、バッファ５から基準データを受け取り、テキストローダー１１からサブデータを受け取る。
【００３１】
本発明の例示的な実施形態によれば、ハッシュローダー１３は、サブデータのハッシュ値を計算し、該計算したサブデータのハッシュ値と基準データに含まれたハッシュ値とを互いに比較する。
【００３２】
以下の表１は、基準データに対するハッシュ値を説明するために例示的に示したものである。
【００３３】
【表１】
0005619851.tif 000002
【００３４】
ターゲットデータが１，２，３，４，５，６，７，８，．．．，Ｄ−１，Ｄ，Ｄ＋１，Ｄ＋２，Ｄ＋３，．．．，１００からなる、１００バイトから構成されていると仮定する。このような場合、ハッシュローダー１３は、ターゲットデータのうち、最初の３バイト（１，２，３）をサブデータとしてハッシュ値を求めることができる。このように求めたハッシュ値と上記表１でのハッシュ値のうちの何れか一つとが一致すると、サブデータは、シフトＱバッファ１９に格納される。
【００３５】
一方、両方が互いに一致しないと、ハッシュローダー１３は、次の３バイト（２，３，４）をサブデータとしてハッシュ値を求め、このように求めたハッシュ値と上記表１でのハッシュ値のうちの何れか一つとが一致すると、当該サブデータについて、後述する誤り検出符号比較部１５による処理が行われる。一致しない場合には、ハッシュローダー１３は、その次の３バイト（３，４，５）をサブデータとしてハッシュ値を求め、そのハッシュ値と上記表１でのハッシュ値のうちの何れか一つが一致すると、当該サブデータについて、後述する誤り検出符号比較部１５による処理が行われる。ハッシュローダー１３は、サブデータの各々に対して上記のような動作を繰り返す。一方、サブデータに関する数値や位置は例示に過ぎず、本発明がこれらの数値や位置に限定されないことはもちろんである。
【００３６】
本発明の他の例示的な実施形態によれば、基準データにハッシュ値が含まれていなくても良く、このような場合、ハッシュローダー１３は、基準データのハッシュ値を計算し、該計算した基準データのハッシュ値とサブデータのハッシュ値とを互いに比較できる。
【００３７】
誤り検出符号比較部１５は、基準データの誤り検出符号と、サブデータの誤り検出符号とを互いに比較できる。一方、両方の誤り検出符号が一致する場合にのみ、シフトマッチャー２１は、シフトＱバッファ１９に格納されたサブデータと基準データとの間のマッチング動作を行う。
【００３８】
本発明の例示的な実施形態によれば、誤り検出符号比較部１５は、両方の誤り検出符号が互いに一致しないと、その結果をシステムレジスタ２５に格納することができる。このような場合、該当サブデータに対するマッチング動作は行われない。
【００３９】
本発明の例示的な実施形態によれば、基準データの誤り検出符号と一致する誤り検出符号を有したサブデータが、シフトＱバッファ１９に格納される。この場合、シフトマッチャー２１は、誤り検出符号とハッシュ値とが全部一致する場合にのみマッチング動作を行う。
【００４０】
ここで、誤り検出符号は、ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）値またはチェックサム（Ｃｈｅｃｋ  Ｓｕｍ）であるとよい。ただし、これらは例示に過ぎず、本発明がこれらの値にのみ限定されないことは理解されなければならない。
【００４１】
本発明の他の例示的な実施形態によれば、誤り検出符号比較部１５は、テキストローダー１１からサブデータを受け取って誤り検出符号を計算でき、このようなサブデータの誤り検出符号と基準データの誤り検出符号とを比較できる。
【００４２】
本発明の例示的な実施形態によれば、サブデータに対するマッチング動作が行われる前に、誤り検出符号比較部１５は、サブデータに対する誤り検出符号を１個または複数計算してもよい。図５は、本発明の例示的な実施形態に係る誤り検出符号を算出する方法を説明するための図である。図５と上記の表１を参照しながら、誤り検出符号が複数である場合を説明する。
【００４３】
例えば、基準データは、Ｐ１，Ｐ２，Ｐ３，．．．ＰＭ個のパターンから構成され、ターゲットデータは、１，２，３，４，５，６，７，８，．．．，Ｄ−１，Ｄ，Ｄ＋１，Ｄ＋２，Ｄ＋３，Ｄ＋４，Ｄ＋５．．．，１００なら成る、１００バイトから構成されると仮定する。また、ここで、１，２，３をグループ化する１番目の位置、２，３，４をグループ化する２番目の位置、．．．Ｄ，Ｄ＋１，Ｄ＋２をグループ化するＮ番目の位置、Ｄ＋１，Ｄ＋２，Ｄ＋３をグループ化するＮ＋１番目の位置、Ｄ＋２，Ｄ＋３，Ｄ＋４をグループ化するＮ＋２番目の位置、Ｄ＋３，Ｄ＋４，Ｄ＋５をグループ化するＮ＋３番目の位置と仮定し、ハッシュローダー１３は、３バイトずつをサブデータとしてハッシュ値を求めると仮定する。
【００４４】
サブデータのＮ番目の位置に対するハッシュ値を「Ｚ」とすると、表１においてそういうハッシュ値「Ｚ」を有する基準データは、「ｋｄｌｄｉｇｉｏｇｋｄｉｃｄｋｅｉｄｌｃｌｌｄｉｄｌｄｌ．．．ｄｏｄｌｇ」である。このような場合、誤り検出符号比較部１５は、サブデータのＮ番目の位置の誤り検出符号（Ｅ＿Ｎ）と、Ｎ＋１番目の誤り検出符号（Ｅ＿Ｎ＋１）、Ｎ＋２番目の誤り検出符号（Ｅ＿Ｎ＋２）、Ｎ＋３番目の誤り検出符号（Ｅ＿Ｎ＋３）の値を計算する。
【００４５】
そして、前記計算した誤り検出符号と、基準データ「ｋｄｌｄｉｇｉｏｇｋｄｉｃｄｋｅｉｄｌｃｌｌｄｉｄｌｄｌｄｌｄｌ．．．ｄｏｄｌｇ」において「ｇｋｄｉｃｄｋｅ」に対する誤り検出符号、「ｉｄｌｃｌｌｄｉ」に対する誤り検出符号、「ｄｌｄｌｄｌｄｌ」に対する誤り検出符号がそれぞれ比較され、これらが全部一致する場合に、シフトマッチャー２１は、サブデータと「ｋｄｌｄｉｇｉｏｇｋｄｉｃｄｋｅｉｄｌｃｌｌｄｉｄｌｄｌｄｌｄｌ．．．ｄｏｄｌｇ」とを比較する動作を行う。
【００４６】
ここで、基準データの「ｇｋｄｉｃｄｋｅ」に対する誤り検出符号、「ｉｄｌｃｌｌｄｉ」に対する誤り検出符号、「ｄｌｄｌｄｌｄｌ」に対する誤り検出符号は、予め計算されて表１に追加的に含まれていてもよいが、これと異なって誤り検出符号比較部１５が計算してもよい。
【００４７】
すなわち、誤り検出符号比較部１５は、一つの基準データに対して複数の誤り検出符号を計算できる。上述した実施形態では、４個を計算する場合を例に挙げたが、これは例示に過ぎず、このような数値にのみ本願発明が限定されないことはもちろんである。
【００４８】
ハッシュ値比較部１７は、テキストローダー１１からターゲットデータを受け取ってハッシュアルゴリズムを適用してその値を計算し、このように計算したハッシュ値と基準データのハッシュ値とを比較する。ハッシュ値比較部１７は、ターゲットデータに対して計算したハッシュ値と基準データのハッシュ値とが一致する場合、その結果をシステムレジスタ２５に格納することができる。
【００４９】
本発明の例示的な実施形態によれば、ターゲットデータに対して計算したハッシュ値と基準データのハッシュ値とが一致する場合には、ターゲットデータにマルウェアパターンが含まれたとみなして、そのターゲットデータに対しては、シフトマッチャー２１がマッチング動作を行わない。
【００５０】
本発明の例示的な実施形態によれば、ハッシュアルゴリズムは、ＭＤ５（Ｍｅｓｓａｇｅ−Ｄｉｇｅｓｔ  ａｌｇｏｒｉｔｈｍ  ５）またはＳＨＡ（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）でありうる。
【００５１】
シフトＱバッファ１９は、サブデータのハッシュ値が基準データのものと一致し、サブデータの誤り検出符号が基準データのものと一致する、そのサブデータを格納する。そして、シフトＱバッファ１９に格納されたサブデータに対してのみシフトマッチャー２１によりマッチング動作が行われる。
【００５２】
シフトマッチャー２１は、サブデータと基準データとを比較して一致するかどうかに対する結果をシステムレジスタ２５に格納し、両方が一致する場合に、該当サブデータは、ハッシュＱバッファ２３に格納される。
【００５３】
シフトマッチャー２１は、サブデータの一部（中間バイトと最後バイト）と基準データの一部とを比較して両方が一致する場合に、サブデータの全体と基準データの全体とを比較できるが、これは例示に過ぎず、シフトマッチャー２１は、一致するかどうかに関わらずサブデータの全体と基準データの全体とを比較することも可能である。
【００５４】
ハッシュＱバッファ２３は、基準データと一致するサブデータを格納する。このように格納されたサブデータを利用して検索またはパターンマッチング用エンジンを動作させるファームウェア（図示せず）は、複雑な文法的パターンなどがターゲットデータにあるかどうかを判断できる。
【００５５】
一方、図示していないが、検索またはパターンマッチング用エンジンを動作させるファームウェア（図示せず）は、システムインタフェース１及び／またはデータベースインタフェース３を介して検索またはパターンマッチング用エンジンを制御できる。
【００５６】
なお、図１の構成において、ハッシュ値比較部１７が省略されてもよい。また、ハッシュ値比較部１７の有無に関らず、ハッシュローダー１３、誤り検出符号比較部１５のいずれか一方が省略されていてもよい。この場合、シフトＱバッファ１９には、ハッシュ値が基準データのものと一致するサブデータか、誤り検出符号が基準データのものと一致するサブデータのいずれかが格納され、シフトＱバッファ１９に格納されたサブデータに対して、シフトマッチャー２１がマッチング動作を行うとよい。
【００５７】
さらには、誤り検出符号比較部１５は、サブデータに対する誤り検出符号を計算する場合を例示して説明したが、ターゲットデータに対する誤り検出符号を計算しても構わない。この場合、ハッシュローダー１３は省略され、シフトＱバッファ１９には、誤り検出符号が基準データのものと一致するターゲットデータが格納され、シフトマッチャー２１が当該ターゲットデータについてマッチング動作を行うとよい。
【００５８】
図２は、本発明の例示的な実施形態に係る検索またはパターンマッチング用エンジンを有した端末装置の構成図である。
【００５９】
図２に示すように、本発明の例示的な実施形態に係る端末装置１００は、アプリケーションプロセッサ１１０、第１メモリ１３０、及び第２メモリ１４０を備えることができる。ここで、端末装置１００は、ＰＣ、スマートフォン、ＰＤＡ、モバイル機器、ネットワーキングが可能な埋め込みデバイス、または携帯電話のように検索またはパターンマッチングの必要性がある装置であれば、いかなる装置でも良い。
【００６０】
アプリケーションプロセッサ１１０は、中央処理装置（ＣＰＵ）１２０と、検索またはパターンマッチング用エンジン１５０を備えることができる。ここで、検索またはパターンマッチング用エンジン１５０は、図１において説明した本発明の例示的な実施形態に係る検索またはパターンマッチング用エンジンのうちの何れか一つであるとよい。
【００６１】
本発明の例示的な実施形態によれば、図２に示すように、検索またはパターンマッチング用エンジン１５０は、ＩＰ（Ｉｎｔｅｒｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ）の形態でアプリケーションプロセッサに内蔵されるとよい。
【００６２】
第１メモリ１３０には、検索またはパターンマッチング用エンジン１５０を動作させるためのファームウェアが格納され、ファームウェアは、第２メモリ１４０にロードされて動作する。
【００６３】
検索またはパターンマッチング用エンジン１５０は、図１において説明したように、システムインタフェースとデータベースインタフェースとを有することができ、このようなインタフェースを介してファームウェアが検索またはパターンマッチング用エンジン１５０を制御することができる。
【００６４】
図３に示すように、本発明の他の例示的な実施形態に係る端末装置２００は、アプリケーションプロセッサ（ＡＰ）２１０とシステムオンチップ２９０とを備えることができる。また、図示していないが、アプリケーションプロセッサ２１０の制御下で動作するアプリケーションがさらに備えられていてもよい。
【００６５】
ここで、システムオンチップ２９０は、中央処理装置（ＣＰＵ）２６０、インタフェース（ＩＦ）２７０、メモリ２８０、及び検索またはパターンマッチング用エンジン２５０を備えるとよい。ここで、検索またはパターンマッチング用エンジン２５０は、図１において説明した本発明の例示的な実施形態に係る検索またはパターンマッチング用エンジンのうちの何れか一つであるとよい。
【００６６】
メモリ２８０には、検索またはパターンマッチング用エンジン２５０を制御するファームウェアがロードされ、中央処理装置２６０を利用してエンジン２５０を制御する。
【００６７】
インタフェース２７０は、システムオンチップ２９０とアプリケーションプロセッサにより動作するアプリケーションとを接続する機能を果たすことができる。一例として、インタフェース２７０は、ウェブブラウザのようなアプリケーションとのインタフェーシング機能を果たすインタフェース、アンチマルウェアスキャニングのためのユーザインタフェースアプリケーションとのインタフェーシング機能を果たすインタフェース、検索のためのアプリケーションとのインタフェーシング機能を果たすインタフェースを備えることができる。ここで、これらのアプリケーションは、例えば、ＡＰ２１０によって動作される。
【００６８】
以上のように、図１ないし図３を参照して説明した検索またはパターンマッチング用エンジンは、多様に変形されてもよく、例えば、検索またはパターンマッチング用エンジンは、ｉ）検索語をスキャニングする検索用エンジン（ＳＣエンジン）、ｉｉ）マルウェアをスキャニングするパターンマッチング用エンジン（ＡＭエンジン）またはｉｉｉ）パケットデータをフィルタリングするファイアウォールエンジン（ＦＷエンジン）のうちの何れか一つのエンジンであるとよい。
【００６９】
例えば、図８は、図２の実施形態の変形例であって、本発明の他の例示的な実施形態に係る検索またはパターンマッチング用エンジンを有した端末装置の構成図を示したものである。
【００７０】
図８に示すように、本発明の例示的な実施形態に係る端末装置３００は、アプリケーションプロセッサ３１０、第１メモリ３３０、及び第２メモリ３４０を備えることができる。これらの構成要素のうち、図２における構成要素の番号と下２桁が同一の構成要素の動作は、図２における当該構成要素の動作と同一または類似するので、詳細な説明は省略する。
【００７１】
アプリケーションプロセッサ３１０は、中央処理装置（ＣＰＵ）３２０と、複数のエンジンからなるエンジン部３５５とを備えることができる。
【００７２】
エンジン部３５５は、検索語をスキャニングする検索用エンジン（Ｓｅａｒｃｈｉｎｇ  Ｅｎｇｉｎｅ：ＳＣエンジン）３５３、マルウェアをスキャニングするパターンマッチング用エンジン（ＡＭ：Ａｎｔｉ−Ｍａｌｗａｒｅ  Ｅｎｇｉｎｅ：ＡＭエンジン）３５０、及びｉｉｉ）パケットデータをフィルタリングするファイアウォールエンジン（Ｆｉｒｅｗａｌｌ  Ｅｎｇｉｎｅ：ＦＷエンジン）３５１を備えることができ、これらのエンジンは、本発明の例示的な実施形態によって説明された検索またはパターンマッチング用エンジンである。
【００７３】
図８の本発明の例示的な実施形態によれば、エンジン部３５５は、ＩＰ（Ｉｎｔｅｒｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ）の形態でアプリケーションプロセッサに内蔵されるとよく、上述したように、複数のエンジン（ＡＭエンジン、ＳＣエンジン、ＦＷエンジン）を備えることができる。
【００７４】
ＡＭエンジン３５０、ＳＣエンジン３５３、及びＦＷエンジン３５１の動作は、図２において説明した検索またはパターンマッチング用エンジンの動作と同一または類似している。すなわち、ＡＭエンジン３５０は、マルウェアパターンＤＢとターゲットデータ（例えば、ファイル）とをマッチングさせて、両方が一致しているかどうかを判定し、ＳＣエンジン３５３は、検索用テキストＤＢとターゲットデータ（例えば、検索語）とをマッチングさせて、ターゲットデータが検索用テキストＤＢに含まれているかどうかを判定する。また、ＦＷエンジン３５１は、ルールパターンＤＢとターゲットデータ（例えば、パケットデータ）とをマッチングさせて、両方が一致しているかどうかを判定し、その結果に応じて、ターゲットデータの外部との送受信を遮断または通過させることができる。
【００７５】
図８には示されていないが、端末装置３００は、基準データ（例えば、マルウェアパターンＤＢ、検索用テキストＤＢ、またはルールパターンＤＢ）を格納する格納部をさらに備えてもよく、パケットデータを外部から受信または送信するＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）をさらに備えてもよい。ＮＩＣを介して外部から受信されるパケットデータは、ウェブブラウザのようなアプリケーションに伝達される前に、ＦＷエンジン３５１を介して通過するかどうかが決定されるとよい。また、外部に送信されるパケットデータもやはり、ＦＷエンジン３５１を介して通過するかどうかが決定された後に、通過すると決定された場合に、ＮＩＣを介して外部に送信されるとよい。
【００７６】
また、図９は、本発明の他の例示的な実施形態に係る検索またはパターンマッチング用エンジンを有した端末装置の構成図を示した図であって、図３の変形例である。
【００７７】
図９に示すように、本発明の他の例示的な実施形態に係る端末装置４００は、アプリケーションプロセッサ（ＡＰ）４１０とシステムオンチップ４９０とを備えることができる。また、図示されていないが、アプリケーションプロセッサ４１０の制御下で動作するアプリケーションがさらに備えられていてもよい。
【００７８】
ここで、システムオンチップ４９０は、中央処理装置（ＣＰＵ）４６０、インタフェース（ＩＦ）４７０、メモリ４８０、及びエンジン部４５５を備えるとよい。ここで、エンジン部４５５は、検索語をスキャニングする検索用エンジン（Ｓｅａｒｃｈｉｎｇ  Ｅｎｇｉｎｅ：ＳＣエンジン）４５３、マルウェアをスキャニングするパターンマッチング用エンジン（ＡＭ：Ａｎｔｉ−Ｍａｌｗａｒｅ  Ｅｎｇｉｎｅ：ＡＭエンジン）４５０、及びｉｉｉ）パケットデータをフィルタリングするファイアウォールエンジン（Ｆｉｒｅｗａｌｌ  Ｅｎｇｉｎｅ：ＦＷエンジン）４５１を備えるとよく、これらのエンジンは、本発明の例示的な実施形態に係る検索またはパターンマッチング用エンジンであるとよい。
【００７９】
図９の構成要素のうち、図３における構成要素の番号と下２桁が同一の構成要素の動作は、図３における当該構成要素の動作と同一または類似するので、詳細な説明は省略する。
【００８０】
ＡＭエンジン４５０、ＳＣエンジン４５３、及びＦＷエンジン４５１の動作は、図３において説明した検索またはパターンマッチング用エンジンの動作と同一または類似している。すなわち、ＡＭエンジン４５０は、マルウェアパターンＤＢとターゲットデータ（例えば、ファイル）とをマッチングさせて、両方が一致しているかどうかを判定し、ＳＣエンジン４５３は、検索用テキストＤＢとターゲットデータ（例えば、検索語）とをマッチングさせて、ターゲットデータが検索用テキストＤＢに含まれていているかどうかを判定する。また、ＦＷエンジン４５１は、ルールパターンＤＢとターゲットデータ（例えば、パケットデータ）とをマッチングさせて、両方が一致しているかどうかを判定し、その結果に応じてターゲットデータの外部との送受信を遮断または通過させることができる。
【００８１】
図９には示されていないが、端末装置４００は、基準データ（例えば、マルウェアパターンＤＢ、検索用テキストＤＢ、またはルールパターンＤＢ）を格納する格納部をさらに備えてもよく、パケットデータを外部から受信又は送信するＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）をさらに備えてもよい。ＮＩＣを介して外部から受信されるパケットデータは、ウェブブラウザのようなアプリケーションに送信される前に、通過するかどうかがＦＷエンジン４５１により決定されるとよい。また、外部に送信されるパケットデータもやはり、通過するかどうかがＦＷエンジン４５１により決定された後に、通過すると決定された場合に、ＮＩＣを介して外部に送信されるとよい。一方、ＮＩＣは、システムオンチップ４９０の内部に内蔵されて実装されるか、または／及びバス４７１に接続されてもよい。
【００８２】
システムオンチップ４９０の内部にＮＩＣ（以下、システムオンチップＮＩＣとする）が内蔵されて実装された場合、システムオンチップＮＩＣを介して外部からパケットデータが受信される。システムオンチップＮＩＣを介して受信されたパケットデータは、ＦＷエンジン４５１に送信され、ＦＷエンジン４５１によって通過と決定された後にパケットデータを処理するアプリケーションに伝達される。これに対し、外部にパケットデータを送信しようとする場合にも、まずＦＷエンジン４５１にパケットデータが伝達され、ＦＷエンジン４５１により通過と決定された後に、ＮＩＣを介して外部に送信される。
【００８３】
バス４７１にＮＩＣ（以下、ＮＩＣとする）が接続された場合にも、以上に類似した動作が行われる。すなわち、外部からパケットデータをＮＩＣが受信すると、該当するアプリケーションに伝達される前に、まずシステムオンチップのＦＷエンジン４５１に伝達されて、通過するかどうかがＦＷエンジン４５１により決定される。そして、通過と決定されたパケットデータのみをアプリケーションに伝達される。反対の場合、外部にパケットデータを送信しようとする場合にも、まず、ＦＷエンジン４５１にパケットデータが伝達されて、通過するかどうかが決定され、通過と決定されたパケットデータがアプリケーションプログラムに伝達される。
【００８４】
以上のように、図８と図９では、エンジン部は、３個のエンジン（ＡＭエンジン、ＦＷエンジン、ＳＣエンジン）を備えると説明したが、これは例示に過ぎず、これらのエンジンのうちの何れか一つまたは二つのエンジンを備えるようにエンジン部が構成されてもよい。あるいは、検索またはパターンマッチングエンジンが一つのハードウェアとして構成され、上記の三つのエンジンの機能を兼用できるように構成されてもよい。
【００８５】
図４は、本発明の例示的な実施形態に係るシステムインタフェースの構成図である。
【００８６】
図４に示すように、インタフェース１は、システムバスと接続機能を担当するシステムインタフェース、マイクロコントローラユニットと接続を担当するインタフェース、マイクロコントローラユニット（以下、ＭＣＵ）、及びマルチプレクサー（以下、ＭＵＸ）をさらに備えるとよい。
【００８７】
本発明の例示的な実施形態によれば、ＭＣＵインタフェースを介してスキャニングの対象になるターゲットデータが格納された位置情報、ターゲットデータの大きさ情報、ターゲットデータに対してマッチングするマッチャー情報がＭＣＵに送信され、ＭＣＵは、そういう情報をＭＵＸを介してレジスタ２５に送信する。以後、レジスタ２５に格納された情報により検索またはパターンマッチングするエンジンは、コンフィギュラブル（Ｃｏｎｆｉｇｕｒａｂｌｅ）に動作できる。
【００８８】
また、検索またはパターンマッチングエンジンにより発生する割込み（ｉｎｔｅｒｒｕｐｔ）もＭＣＵにより処理される。
【００８９】
システムレジスタ２５は、例えば、検索またはパターンマッチングエンジンのバッファの動作のためのレジスタ、検索またはパターンマッチングのためのレジスタ、エラー検出のためのレジスタ、ハッシュ値マッチングのためのレジスタ、及び上述したレジスタを制御するための制御レジスタを備えるとよい。
【００９０】
図６は、ハッシュ値比較部１７の構成が省略された場合の本発明の例示的な実施形態に係る検索またはパターンマッチング方法を説明するためのフローチャートである。
【００９１】
以下、図６と図１とを参照して、本発明の例示的な実施形態に係る検索またはパターンマッチング方法を説明する。
【００９２】
バッファ７、９は、ターゲットデータを受信して、サブデータを格納する（Ｓ１０１）。
【００９３】
テキストローダー１１は、バッファ７、９にアクセスし、処理対象となるサブデータを取得する（Ｓ１０３）。
【００９４】
ハッシュローダー１３は、テキストローダー１１を介して受け取ったサブデータのハッシュ値を計算し、このハッシュ値と基準データのハッシュ値とを比較する（Ｓ１０５）。ハッシュ値と基準データのハッシュ値が一致する場合（Ｓ１０７：Ｙ）、後述のＳ１０９の処理が実行されるが、そうでない場合（Ｓ１０７：Ｎ）、マッチング結果をレジスタに記録する（Ｓ１１５）。
【００９５】
ハッシュ値と基準データのハッシュ値が一致する場合（Ｓ１０７：Ｙ）、誤り検出符号比較部１５は、テキストローダー１１を介してサブデータを受け取り、該受け取ったサブデータに対する誤り検出符号を計算し、このように計算した誤り検出符号と基準データの誤り検出符号とを比較する（Ｓ１０９）。
【００９６】
シフトマッチャー２１は、サブデータの誤り検出符号と基準データの誤り検出符号とが一致する場合（Ｓ１１１：Ｙ）に、シフトＱバッファ１９に格納されたサブデータと基準データとを比較する（Ｓ１１３）。
【００９７】
シフトマッチャー２１は、システムレジスタにマッチング結果をレジスタに記録する（Ｓ１１５）。一方、シフトマッチャー２１は、サブデータの誤り検出符号と基準データの誤り検出符号とが一致しない場合（Ｓ１１１：Ｎ）には、マッチング結果をレジスタに記録する（Ｓ１１５）。そして、全サブデータについて比較を終了していない場合（Ｓ１１７：Ｎ）、Ｓ１０３〜Ｓ１１７までの処理を繰り返す。全サブデータについて比較を終了した場合（Ｓ１１７：Ｙ）、ターゲットデータに対するマッチング動作を終了する。
【００９８】
図７は、誤り検出符号比較部１５の構成が省略された場合の本発明の他の例示的な実施形態に係る検索またはパターンマッチング方法を説明するための図である。
【００９９】
以下、図７と図１とを参照して、本発明の例示的な実施形態に係る検索またはパターンマッチング方法を説明する。
【０１００】
バッファ７、９は、ターゲットデータを受信してテキストローダー１１に伝達する（Ｓ２０１）。
【０１０１】
ハッシュ値比較部１５は、テキストローダー１１を介してターゲットデータに関するテキストを受け取り、該受け取ったテキストに対してハッシュアルゴリズムを適用してテキスト全体のハッシュ値（以下、第１のハッシュ値と呼ぶ）を計算し、このように計算した第１のハッシュ値と基準データの第１のハッシュ値とを比較する（Ｓ２０３）。
【０１０２】
第１のハッシュ値が互いに一致すると（Ｓ２０５：Ｙ）、ハッシュ値比較部１５は、その結果をレジスタ２５に記録し（Ｓ２１５）、全サブデータについて比較を終了した（Ｓ２１７：Ｙ）ので、ターゲットデータに対するマッチング動作を終了する。
【０１０３】
第１のハッシュ値が互いに一致しない場合（Ｓ２０５：Ｎ）、テキストローダー１１は、バッファ７、９にアクセスし、処理対象となるサブデータを取得する（Ｓ２０７）。
【０１０４】
つぎに、ハッシュローダー１３は、テキストローダー１１を介して受け取った３バイトごとのテキスト（サブデータ）のハッシュ値（以下、第２のハッシュ値と呼ぶ）を計算し、この第２のハッシュ値と基準データの第２のハッシュ値とを比較する（Ｓ２０９）。
【０１０５】
第２のハッシュ値が互いに一致する場合（Ｓ２１１：Ｙ）には、基準データとターゲットデータとを比較し（Ｓ２１３）、ステップＳ２１３の比較結果をレジスタ２５に記録する（Ｓ２１５）。
【０１０６】
一方、第２のハッシュ値が互いに一致しない場合（Ｓ２１１：Ｎ）には、その結果をレジスタ２５に記録する（Ｓ２１５）そして、全サブデータについて比較を終了していない場合（Ｓ２１７：Ｎ）、Ｓ２０７〜Ｓ２１７までの処理を繰り返す。全サブデータについて比較を終了した場合（Ｓ２１７：Ｙ）、ターゲットデータに対するマッチング動作を終了する。
【０１０７】
図６と図７は、それぞれ、ハッシュ値比較部１７の構成が省略された場合、誤り検出符号比較部１５の構成が省略された場合の実施形態の動作について説明したに過ぎない。他の構成が省略された場合、あるいは、図１の構成がすべて存在する場合の本発明の実施形態の動作についても類推することができる。例えば、ハッシュ値比較部１７及びハッシュローダー１３が省略される場合、図６においてＳ１０５とＳ１０７が省略されればよい。また、図１の構成がすべて存在する場合の本発明の実施形態の動作は、図７のＳ２１１とＳ２１３との間に、図６のＳ１０９とＳ１１１の処理がなされればよい。
【０１０８】
また、図６は、誤り検出符号比較部１５は、サブデータを処理する場合を説明しているが、ターゲットデータを処理する場合、Ｓ１０３〜Ｓ１０７、Ｓ１１７の処理が省略されればよい。あるいは、図７において、Ｓ２０７、Ｓ２１７の処理が省略され、Ｓ２０９、Ｓ２１１に代えて、図６のＳ１０９、Ｓ１１１の処理が実行されてもよい。図１に誤り検出符号比較部１５がターゲットデータを処理する場合について詳細に説明したので、その説明を参照されたい。
【０１０９】
本明細書に説明された多様な技術は、ハードウェアまたはソフトウェア、またはこれらの適切な組合せにより具現化されうる。したがって、検索またはパターンマッチングエンジンとその方法の全てまたは一部は、ハードウェアのみから構成されるか、またはハードウェアとソフトウェアとの組合せ、またはソフトウェアのみから構成されうる。ソフトウェアから構成される場合には、フロッピーディスク（登録商標）、ＣＤ−ＲＯＭ、ハードドライブ、または任意のその他コンピュータ読み取り可能格納媒体などの実体的な媒体に具現化されたプログラムコード（すなわち、命令語）の形態を取ることができる。
【０１１０】
また、本発明の一つ以上の例示的な実施形態に係る検索またはパターンマッチングエンジン及びこれを備えた端末装置並びにその方法は、電気線またはケーブル、光ファイバなどの送信媒体を介してまたは任意のその他形態の送信を介して送信されるプログラムコードの形態により具現化されて、通信を介して実施でき、このような送信媒体も、本発明の一実施形態に該当するはずである。
【０１１１】
以上、本発明は、限定された実施形態と図面により説明されたが、本発明は、上記の実施形態に限定されるものではなく、本発明が属する分野における通常の知識を有した者であればこのような記載から多様な修正及び変形が可能である。したがって、本発明の範囲は、説明された実施形態に限定されてはならず、後述する特許請求の範囲だけでなく、この特許請求の範囲と均等なものによって定められねばならない。
【符号の説明】
【０１１２】
１      システムインタフェース
３      ＤＢ（Ｄｅｔａ  Ｂａｓｅ）インタフェース
５、７、９、１９、２３      バッファ
１１      テキストローダー
１３      ハッシュローダー
１５      誤り検出符号比較部
１７      ハッシュ値比較部
２１      シフトマッチャー
【図１】
0005619851.tif 000003
【図２】
0005619851.tif 000004
【図３】
0005619851.tif 000005
【図４】
0005619851.tif 000006
【図５】
0005619851.tif 000007
【図６】
0005619851.tif 000008
【図７】
0005619851.tif 000009
【図８】
0005619851.tif 000010
【図９】
0005619851.tif 000011