(57)【要約】【課題】パターンマッチング方法及びシステムを提供すること。【解決手段】本発明の一実施の形態によれば、ターゲットデータを構成する複数のサブデータのうち、少なくとも一つのサブデータを予め格納されたパターンデータとマッチングさせるサブパターンマッチングステップと、前記サブパターンマッチング結果を参照して、前記ターゲットデータと前記予め格納されたパターンデータとが一致するか否かを判断するフルパターンマッチングステップとを含み、前記フルパターンマッチングステップは、前記パターンデータの種類によって行われるか、又は行われないことを特徴とするパターンマッチング方法が提供される。【選択図】図１
2011248897.tif 000002
【特許請求の範囲】
【請求項１】
ターゲットデータを構成する複数のサブデータのうち、少なくとも一つのサブデータを予め格納されたパターンデータとマッチングさせるサブパターンマッチングステップと、
前記サブパターンマッチング結果を参照して、前記ターゲットデータと前記予め格納されたパターンデータとが一致するか否かを判断するフルパターンマッチングステップとを含み、
前記フルパターンマッチングステップは、前記パターンデータの種類によって行われるか、又は行われないことを特徴とするパターンマッチング方法。
【請求項２】
前記予め格納されたパターンデータの種類を決定するステップをさらに含み、
前記サブデータとマッチングされた前記予め格納されたパターンデータが文法的に簡単なパターンである場合と判断された場合には、前記フルパターンマッチングステップを行わないことを特徴とする請求項１に記載のパターンマッチング方法。
【請求項３】
前記予め格納されたパターンデータの種類を決定するステップをさらに含み、
前記サブパターンマッチングステップのマッチング結果、前記サブデータとマッチングされた前記予め格納されたパターンデータが文法的に複雑なパターンの一部と判断された場合には、前記サブパターンマッチングステップのマッチング結果をサブパターンマトリクスに記録することを特徴とする請求項１に記載のパターンマッチング方法。
【請求項４】
前記フルパターンマッチングステップは、前記サブパターンマッチング動作が前記サブパターンマトリクスに含まれたすべてのサブパターンをマッチングさせたか否かを確認するステップであることを特徴とする請求項３に記載のパターンマッチング方法。
【請求項５】
前記サブパターンマッチングステップの結果をサブパターンマトリクスに記録するステップをさらに含み、
前記フルパターンマッチングステップは、前記パターンマッチング動作が前記サブパターンマトリクスに含まれたすべてのサブパターンをマッチングさせたか否かを確認するステップであることを特徴とする請求項１に記載のパターンマッチング方法。
【請求項６】
前記サブパターンマッチングステップは、
前記一つのサブデータの一部と前記予め格納されたパターンデータをマッチングさせるライト（Ｌｉｇｈｔ）パターンマッチングステップと、
前記一つのサブデータの一部が前記予め格納されたパターンと一致するか、又は前記予め格納されたパターンに含まれた場合、前記一つのサブデータの全体と前記ライトパターンマッチングされたパターンデータ全体をマッチングさせる精密パターンマッチングステップとを含む請求項１に記載のパターンマッチング方法。
【請求項７】
前記一つのサブデータの一部は、前記サブデータの最初値、中間値、及び最後値のうち、少なくとも何れか一つであることを特徴とする請求項６に記載のパターンマッチング方法。
【請求項８】
ハッシュ（ｈａｓｈ）値が記載されるハッシュ値項目と、前記予め格納されたパターンデータが記載される項目とを含むハッシュマッチャーテーブル又は前記ハッシュ値が記載されるハッシュ値項目と、前記予め格納されたパターンデータのハッシュ値と前記ハッシュ値項目に記載されたハッシュ値との一致有無を表す項目とを含むハッシュマッチャーテーブルを構成することを特徴とする請求項１に記載のパターンマッチング方法。
【請求項９】
前記ハッシュ値が記載されるハッシュ値項目、前記ハッシュ値項目に記載されたハッシュ値に対応するパターンデータが記載されるパターンデータ項目とを含むサブマッチャーテーブルを構成するサブマッチャーテーブル構成ステップをさらに含むことを特徴とする請求項８に記載のパターンマッチング方法。
【請求項１０】
前記サブマッチャーテーブルは、前記予め格納されたパターンデータの中間値を記載する中間値項目と、最後値を記載する最後値項目とをさらに含むことを特徴とする請求項９に記載のパターンマッチング方法。
【請求項１１】
前記パターンデータ項目には、前記予め格納されたパターンデータが格納されたアドレス又は前記予め格納されたパターンデータが記載されることを特徴とする請求項９に記載のパターンマッチング方法。
【請求項１２】
前記サブマッチャーテーブルは、前記予め格納されたパターンデータのハッシュ値のうちの何れか一つと、前記予め格納されたパターンデータの残りのハッシュ値とが互いに衝突されるか否かを表す衝突パターンのオフセット値を記載する衝突パターンオフセット項目をさらに含むことを特徴とする請求項９に記載のパターンマッチング方法。
【請求項１３】
前記予め格納されたパターンデータのハッシュ値が前記予め格納されたパターンデータの残りのハッシュ値と互いに衝突された場合、前記衝突パターンオフセット項目には、前記ハッシュ値項目に記載された値のうち、何れか一つの値が記載されることを特徴とする請求項１２に記載のパターンマッチング方法。
【請求項１４】
前記一つのサブデータのハッシュ値を生成するステップと、
前記一つのサブデータのハッシュ値を前記ハッシュマッチャーテーブルに存在する一つのサブデータと比較するステップとをさらに含み、
前記サブパターンマッチングステップは、前記一つのサブデータのハッシュ値が前記ハッシュマッチャーテーブルに存在する場合にのみ行われることを特徴とする請求項７に記載のパターンマッチング方法。
【請求項１５】
前記サブパターンマッチングステップは、
前記サブマッチャーテーブルのハッシュ値項目に記載されたハッシュ値のうち、前記一つのサブデータのハッシュ値と一致するハッシュ値を検索するステップと、
前記検索されたハッシュ値に対応するパターンデータと、前記一つのサブデータとを比較するステップとを含むことを特徴とする請求項９に記載のパターンマッチング方法。
【請求項１６】
前記比較するステップは、
前記サブデータの一部と前記パターンデータとをマッチングさせるライトパターンマッチングステップと、
前記一つのサブデータの一部が、前記予め格納されたパターンデータと同一であるか、又は前記予め格納されたパターンデータに含まれた場合にのみ、前記つのサブデータの全体と、前記予め格納されたパターンデータとをマッチングさせる精密パターンマッチングステップとを含むことを特徴とする請求項１５に記載のパターンマッチング方法。
【請求項１７】
前記サブマッチャーテーブルは、前記予め格納されたパターンデータのハッシュ値のうちの何れか一つが予め格納されたパターンデータのハッシュ値のうち、残りの一つと互いに衝突されるか否かを表す衝突パターンのオフセット値を記載する衝突パターンオフセット項目をさらに含み、
衝突パターンオフセット項目にオフセット値が存在すると、そのオフセット値が表すパターンデータと前記一つのサブデータとを比較するステップをさらに含むことを特徴とする請求項１５に記載のパターンマッチング方法。
【請求項１８】
ターゲットデータを構成する複数のサブデータのうち、何れか一つのサブデータの一部と予め格納されたパターンデータベースのパターンデータとをマッチングさせるライトパターンマッチングステップと、
前記一つのサブデータの一部が前記パターンデータと同一であるか、又は前記パターンデータに含まれる場合、前記サブデータの全体と前記ライトパターンマッチングが成功したパターンデータとをマッチングさせる精密パターンマッチングステップとを含むパターンマッチング方法。
【請求項１９】
ハッシュ値が記載されるハッシュ値項目と、前記パターンデータベースのパターンデータが記載される項目を含むハッシュマッチャーテーブル、又はハッシュ値が記載されるハッシュ値項目と、前記パターンデータベースのパターンデータのハッシュ値と前記ハッシュ値項目に記載されたハッシュ値とが一致しているか否かを表す項目を含むハッシュマッチャーテーブルを構成するステップをさらに含むことを特徴とする請求項１８に記載のパターンマッチング方法。
【請求項２０】
前記ハッシュ値が記載されるハッシュ値項目、前記ハッシュ値項目に記載されたハッシュ値に対応するパターンデータが記載されるパターンデータ項目を含むサブマッチャーテーブルを構成するステップをさらに含むことを特徴とする請求項１８に記載のパターンマッチング方法。
【請求項２１】
前記サブマッチャーテーブルは、前記パターンデータのハッシュ値が互いに衝突されるか否かを表す衝突パターンのオフセット値を記載する衝突パターンオフセット項目をさらに含むことを特徴とする請求項２０に記載のパターンマッチング方法。
【請求項２２】
パターンデータに対するハッシュ値を含むハッシュマッチャーテーブルを格納する格納部と、
前記ハッシュマッチャーテーブルと、ターゲットデータを構成する複数のサブデータのうち、少なくとも一つのサブデータのハッシュ値をマッチングするハッシュ値マッチング部と、
前記サブデータのハッシュ値とマッチングされたパターンデータと、前記一つのサブデータとをマッチングするサブパターンマッチング部とを備えることを特徴とするパターンマッチングシステム。
【請求項２３】
前記サブパターンマッチング部は、
前記サブマッチャーテーブルと前記一つのサブデータの一部とをマッチングさせうるライトパターンマッチング部と、
前記一つのサブデータが前記サブマッチャーテーブルのものと同一であると、前記サブデータ全体と前記パターンデータとをマッチングする精密パターンマッチング部とを備えることを特徴とする請求項２２に記載のパターンマッチングシステム。
【請求項２４】
前記ハッシュマッチャーテーブルに含まれたハッシュ値を生成するパターンハッシュ値生成器をさらに備えることを特徴とする請求項２３に記載のパターンマッチングシステム。
【請求項２５】
前記サブパターンマッチング部のマッチング結果を参照して、前記ターゲットデータと前記パターンデータとをマッチングさせうるフルパターンマッチング部をさらに備えることを特徴とする請求項２２に記載のパターンマッチングシステム。
【請求項２６】
決定部をさらに備え、
前記決定部は、前記サブパターンマッチング部の動作以後、前記一つのサブデータのハッシュ値とマッチングされたパターンデータと前記一つのサブデータとが一致すると、前記フルパターンマッチング部を動作せず、前記ターゲットデータにパターンデータが含まれていると判断することを特徴とする請求項２５に記載のパターンマッチングシステム。
【請求項２７】
ターゲットデータを構成する複数のサブデータのうち、少なくとも一つのサブデータを予め格納されたパターンデータとマッチングさせるサブパターンマッチング部と、
前記ターゲットデータを予め格納されたパターンデータ全体とマッチングさせうるフルパターンマッチング部と、
前記予め格納されたパターンデータの種類に応じて前記フルパターンマッチング部の動作有無を決定する決定部とを備えることを特徴とするパターンマッチングシステム。
【請求項２８】
前記予め格納されたパターンの種類は、文法的に決まった複雑なパターン又は文法的に決まった簡単なパターンであることを特徴とする請求項２７に記載のパターンマッチングシステム。
【請求項２９】
前記決定部は、前記予め決定されたパターンデータの種類が前記文法的に決まった簡単なパターンのデータである場合、前記フルパターンマッチング部を動作させないことを特徴とする請求項２８に記載のパターンマッチングシステム。
【請求項３０】
前記決定部は、前記予め決定されたパターンデータの種類が前記文法的に決まった複雑なパターンのデータである場合、前記サブパターンマッチング部の動作以後、前記フルパターンマッチング部が動作するようにすることを特徴とする請求項２９に記載のパターンマッチングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パターンマッチング方法及びシステムに関し、さらに詳細には、文法的に複雑であるか、又は単純な多様なマルウェアパターンと、ターゲットデータを速かにパターンマッチングさせることができる、パターンマッチング方法及びシステムに関する。
【背景技術】
【０００２】
インターネットが広範囲に使用されるに伴い、ワームやトロイの木馬、ウイルス、ＤＤｏＳなどのような多様な形態の侵害が現れ、その波及効果も大きくなっている。そのため、ネットワーク上の情報を保護するためのネットワーク侵害対応方法及びその他関連装置が必要となるようになった。このための最も基本的な技術が高速のパターンマッチング技術である。
【０００３】
一般に、パターンマッチングは、長いテキストファイルにおいて我々が望む文字を探索することから始めって、ネットワーク侵入探知やウイルス探知などのようなセキュリティーシステム、スパムメール除去システム、データベースシステムなど多様な分野において多様な用途として活用される。特に、パケットのペイロード部分において特定の文字列を検索するパターンマッチング方法は、規則を利用して非正常な行為を探知する侵入探知又は遮断システムの重要な要素技術である。
【０００４】
管理者は、悪意的な攻撃から内部ネットワークを保護するために侵入探知又は遮断システムを使用するが、攻撃が多様化しその数が増加するにつれて、攻撃を探知するためのパターンマッチングの規則数も増加した。このように、規則の数が増加するに伴い、侵入探知や遮断領域におけるパターンマッチング費用が占める比率が大きくなっている。
【０００５】
一般に、ラップトップ（Ｌａｐｔｏｐ）、スマートフォン（ｓｍａｒｔｐｈｏｎｅ）、ネットブック（ｎｅｔｂｏｏｋ）、コネクテッドデバイス（ｃｏｎｎｅｃｔｅｄ  ｄｅｖｉｃｅ）などのようなネットワークが接続したモバイル機器にアンチウイルスＳＯＣ（Ａｎｔｉ−Ｖｉｒｕｓ  Ｓｙｓｔｅｍ−ｏｎ−Ｃｈｉｐ）が搭載されて悪性コードに対するスキャニング、検索、マッチングによりウイルスに感染されたファイルを探索することができる。
【０００６】
アンチウイルス（ａｎｔｉ−ｖｉｒｕｓ）プログラムは、ファイルをスキャニングしつつ読み込んだデータファイルからウイルスパターンがあるか否かを探索する。モバイルデバイス上においてこういうスキャニング作業を行うようになると、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）とメモリ（Ｍｅｍｏｒｙ）リソースを多く使用するようになり、ウイルスを検査する間は、リソース問題のためユーザーの望むプログラムを使用するのが容易でないという問題点がある。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の実施の形態によれば、文法的に複雑であるか、又は単純な多様なマルウェアパターンに対して、速かにパターンマッチング動作を行うことができるパターンマッチング方法及びシステムを提供することを目的とする。
【０００８】
本発明の実施の形態によれば、パターンマッチングの対象になるターゲットデータが大きくなっても、ハッシュマッチングとサブマッチングが成功した場合にのみフルマッチングを行うので、依然として速かにパターンマッチング動作を行うことができるパターンマッチング方法及びシステムを提供することを一つの目的とする。
【課題を解決するための手段】
【０００９】
上記の目的を達成すべく、本発明の一実施の形態によれば、ターゲットデータを構成する複数のサブデータのうち、少なくとも一つのサブデータを予め格納されたパターンデータとマッチングさせるサブパターンマッチングステップと、前記サブパターンマッチング結果を参照して、前記ターゲットデータと前記予め格納されたパターンデータとが一致するか否かを判断するフルパターンマッチングステップとを含み、前記フルパターンマッチングステップは、前記パターンデータの種類によって行われるか、又は行われないことを特徴とするパターンマッチング方法が提供される。
【００１０】
また、本発明の他の実施の形態によれば、ターゲットデータを構成する複数のサブデータのうち、何れか一つのサブデータの一部と予め格納されたパターンデータベースのパターンデータとをマッチングさせるライトパターンマッチングステップと、前記一つのサブデータの一部が前記パターンデータと同一であるか、又は前記パターンデータに含まれる場合、前記サブデータの全体と前記ライトパターンマッチングが成功したパターンデータとをマッチングさせる精密パターンマッチングステップとを含むパターンマッチング方法が提供される。
【００１１】
また、本発明の他の実施の形態によれば、パターンデータに対するハッシュ値を含むハッシュマッチャーテーブルを格納する格納部と、前記ハッシュマッチャーテーブルと、ターゲットデータを構成する複数のサブデータのうち、少なくとも一つのサブデータのハッシュ値をマッチングするハッシュ値マッチング部と、前記サブデータのハッシュ値とマッチングされたパターンデータと、前記一つのサブデータとをマッチングするサブパターンマッチング部とを備えることを特徴とするパターンマッチングシステムが提供される。
【００１２】
また、本発明の他の実施の形態によれば、ターゲットデータを構成する複数のサブデータのうち、少なくとも一つのサブデータを予め格納されたパターンデータとマッチングさせるサブパターンマッチング部と、前記ターゲットデータを予め格納されたパターンデータ全体とマッチングさせうるフルパターンマッチング部と、前記予め格納されたパターンデータの種類に応じて前記フルパターンマッチング部の動作有無を決定する決定部とを備えることを特徴とするパターンマッチングシステムが提供される。
【発明の効果】
【００１３】
本発明の一実施の形態によれば、文法的に複雑であるか、又は単純な多様なマルウェアパターンに対して、速かにパターンマッチング動作を行うことができる。
【００１４】
本発明の一実施の形態によれば、パターンマッチングの対象になるターゲットデータが大きくなっても、ハッシュマッチングとサブマッチングが成功した場合にのみフルマッチングを行うので、依然として速かにパターンマッチング動作を行うことができる。
【００１５】
本発明の一実施の形態によれば、ＳＯＣの形態でもパターンマッチングシステムの具現が可能なので、速度やバッテリーに制限のあるモバイルデバイスのリソース問題を解決することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の一実施の形態にかかるパターンマッチングシステムのブロック図である。
【図２】図１に示す格納部の構成を示した図である。
【図３】本発明の一実施の形態にかかるテーブル構成を説明するための図である。
【図４】本発明の一実施の形態にかかるパターンマッチングシステムをＳｏＣ形態で具現した例を示したブロック図である。
【図５】図４に示す検索エンジンのハードウェア構成を示したブロック図である。
【図６】図５に示すパターンマッチングシステムにおいて文法的に決まった簡単なパターンデータを処理する動作を説明するための図である。
【図７】本発明の一実施の形態にかかる文法的に決まった複雑なパターンデータを説明するための図である。
【図８】図５に示すパターンマッチングシステムにおいて文法的に決まった複雑なパターンデータを処理する動作を説明するための図である。
【図９】本発明の文法的に決まった簡単なパターンデータを利用したパターンマッチング方法の第１の実施の形態を説明するためのフローチャートである。
【図１０】本発明の文法的に決まった簡単なパターンデータを利用したパターンマッチング方法の第２の実施の形態を説明するためのフローチャートである。
【図１１】文法的に決まった複雑なパターンデータの処理過程に用いられるサブパターンマトリクスを構成する方法を説明するためのフローチャートである。
【図１２】本発明の文法的に決まった複雑なパターンデータに対するパターンマッチング方法の第１の実施の形態を説明するためのフローチャートである。
【図１３】本発明の文法的に決まった複雑なパターンデータに対するパターンマッチング方法の第２の実施の形態を説明するためのフローチャートである。
【図１４】本発明の文法的形式が決まらないパターンデータに対するパターンマッチング方法を説明するためのフローチャートである。
【発明を実施するための形態】
【００１７】
以上の本発明の目的、他の目的、特徴及び利点は、添付された図面と関連した以下の好ましい実施の形態により容易に理解されるはずである。しかしながら、本発明は、ここで説明される実施の形態に限定されずに他の形態で具体化されることもできる。むしろ、ここで紹介される実施の形態は、開示された内容が徹底かつ完全になるように、そして当業者に本発明の思想を十分に伝達させるために提供されることである。本明細書において、ある構成要素が他の構成要素上にあると言及される場合に、それは、他の構成要素上に直接形成されうるか、又はそれらの間に第３の構成要素が介在されうることを意味する。
【００１８】
本明細書で使用された用語は、実施の形態を説明するためのもので、本発明を制限しようとするものではない。本明細書において、単数型は、特に言及しない限り、複数型も含む。明細書で使用される「含む（ｃｏｍｐｒｉｓｅｓ）」及び／又は「含む（ｃｏｍｐｒｉｓｉｎｇ）」と言及された構成要素は、一つ以上の他の構成要素の存在又は追加を排除しない。
【００１９】
以下、図面を参照して本発明を詳細に説明する。以下の特定実施の形態を述べるにおいて、色々な特定な内容は、発明をさらに具体的に説明し理解を助けるために作成された。しかしながら、本発明を理解することができる程度のこの分野における知識を有した読者は、このような色々な特定な内容がなくても使用されうることを認知できる。ある場合には、発明を述べるにおいて周知で発明と大きく関連のない部分は、本発明を説明するにおいて特別な理由なしで混乱を引き起こすことを防止するために述べないことを予め言及しておく。
【００２０】
図１は、本発明の一実施の形態にかかるパターンマッチングシステムのブロック図で、図２は、図１に示す格納部の構成を示した図である。
【００２１】
図１に示すように、本発明の一実施の形態にかかるパターンマッチングシステムは、決定部１０、サブパターン（ｓｕｂ  ｐａｔｔｅｒｎ）マッチング部２０、ハッシュ値生成部３０、格納部４０、フルパターン（ｆｕｌｌ  ｐａｔｔｅｒｎ）マッチング部５０、ハッシュ値マッチング部６０、及びテーブル生成部７０を備えることができる。
【００２２】
決定部１０は、サブパターンマッチングされたターゲットデータがどんな種類のパターンとマッチングされたかを決定でき、決定結果にしたがって、フルパターンマッチング動作が行われるか、又は行われない。本発明の一実施の形態によれば、サブデータが、文法的に複雑なパターンデータの一部とマッチングされた場合には、フルパターンマッチング動作が行われうる。一方、サブデータが、複雑でないパターンデータとマッチングされた場合には、サブパターンマッチング動作まで行われ、フルパターンマッチング動作は行われない。
【００２３】
本発明の一実施の形態にかかる決定部１０は、ターゲットデータがどんな種類のパターンデータにマッチングされたかを決定するために、マルウェアパターンデータがどんな種類に該当するかを表す情報（以下、パターンデータ種類情報とする）を参照できる。本発明の一実施の形態によれば、パターンデータ種類情報は、ハッシュマッチャーテーブル４３、サブマッチャーテーブル４４、及び／又はサブパターンマトリクス４５に含まれていることができるが、別途のテーブルとして格納されることもできる。別途のテーブルとして設けられた場合、格納部４０に格納されるか、又は別途に設けられた他の格納部（図示せず）に格納されていることができる。
【００２４】
サブパターンマッチング部２０は、ターゲットデータを構成する複数のサブデータを順次に予め格納されたパターンデータベース（Ｄａｔａ  Ｂａｓｅ：ＤＢ）４１のパターンデータとマッチングさせる。本発明の一実施の形態によれば、サブパターンマッチング部２０は、ハッシュマッチテーブル４３とサブマッチャーテーブル４４とを利用してサブパターンマッチング動作を行うことができる。一方、サブパターンマッチング部２０の機能は、ハードウェア及び／又はソフトウェアにより具現されることができる。
【００２５】
サブパターンマッチング部２０は、２段階のマッチング動作（すなわち、ライトパターンマッチング動作と精密パターンマッチング動作）を含むことができる。ここで、サブパターンマッチング部２０は、サブデータのハッシュ値がサーバマッチャーテーブルにあるハッシュ値と同一であると（すわなち、ハッシュ値マッチング部６０によるハッシュ値マッチングが成功的になされた場合）行われる。
【００２６】
本発明の一実施の形態によれば、サブパターンマッチング部２０は、ライト（Ｌｉｇｈｔ）パターンマッチング部２２、及び精密パターンマッチング部２４を備えることができる。
【００２７】
ライトパターンマッチング部２２は、サブパターンマッチング部２０の第１番目のあるライトパターンマッチング過程を行うものであって、サブデータの一部とパターンデータとをマッチングさせる過程を行う。このために、ライトパターンマッチング部２２は、サブマッチャーテーブル４４を使用することができる。図３のサブマッチャーテーブル４４を参照すれば、サブマッチャーテーブル４４は、中間値（ｍｉｄｄｌｅ  ｖａｌｕｅ）と最後値（ｔａｉｌ  ｖａｌｕｅ）を含み、これらの値を利用してサブデータとパターンデータとをマッチングさせることができる。すなわち、ライトパターンマッチング動作は、サブデータとパターンデータとをマッチングさせるにおいて、まず中間値と最後値とが互いに一致しているか否かを確認する。本願発明の一実施の形態によれば、少なくともこれらの中間値と最後値とが一致してこそ、残りの値も一致する可能性があることから、マッチング速度を上げるために、ライトパターンマッチング動作を行うことである。仮に、中間値と最後値とが一致すると、初めてサブデータとパターンデータとをすべて比較する精密パターンマッチング動作を行う。一方、ハッシュ衝突がある場合には、互いに異なるパターンデータであってもハッシュ値は、互いに同一でありうる。図３に示すように、パターンａｂｃｄｅｆｇとパターンａｂｃｘｙｚのハッシュ値が両方とも「Ｘ」であることが分かる。このように、ハッシュが衝突される場合に備えて、サブパターンマッチャーテーブルに「衝突パターンのＯｆｆｓｅｔ」という項目をさらに含めることができる。図３のサブパターンマッチャーテーブルを参照すると、インデックス「Ｘ」と「Ｚ」は、「衝突パターンのＯｆｆｓｅｔ」項目として互いにリンクされていることが分かる。
【００２８】
例えば、あるサブデータに対するハッシュ値を「Ｘ」としよう。この場合、ライトパターンマッチング部２２は、まずＩｎｄｅｘが「Ｘ」である項目に対してまずライトパターンマッチング動作を行う。すなわち、サブデータの中間値及び最後値と、「Ｘ」中間値（「ｄ」）及び最後値（「９」）をそれぞれマッチングさせる。
【００２９】
そのマッチングが成功的でない場合、ライトパターンマッチング部２２は、Ｉｎｄｅｘ「Ｘ」の「衝突パターンのＯｆｆｓｅｔ」項目に記載されたＺ項目に対して、ライトパターンマッチング動作を行う。すなわち、サブデータの中間値及び最後値と、「Ｚ」の中間値（「ｃ」）及び最後値（「ｚ」）をそれぞれマッチングさせる。マッチングが成功的な場合に、精密パターンマッチング動作が行われる。精密パターンマッチング動作の遂行結果、マッチングされることがないと、インデックス「Ｚ」の「衝突パターンのＯｆｆｓｅｔ」項目に記載された値があるか否かを再び検討するようになる。仮に、記載された値があると、上述のように、サブパターンマッチング動作が再度行われる。
【００３０】
精密パターンマッチング部２４は、サブパターンマッチング部２０の第２番目のステップである精密マッチング過程を行い、サブデータ全部とパターンデータとをマッチングさせる過程を行う。
【００３１】
本発明の一実施の形態によれば、精密パターンマッチング部２４は、ライトパターンマッチングが成功したサブデータに対してのみ、精密パターンマッチング動作を行うことができる。
【００３２】
本発明の一実施の形態にかかる精密パターンマッチング部２４は、サブマッチャーテーブルとパターンＤＢとを参照して、精密パターン動作を行うことができる。図３に示すように、精密パターンマッチング部２４は、サブマッチャーテーブルに含まれたＲｅａｌ  Ｐａｔｔｅｒｎ  Ａｄｄｒｅｓｓが指定するアドレスに格納されたパターンデータと、サブデータとを比較して、精密パターンマッチング動作を行うことができる。サブマッチャーテーブルに含まれたＲｅａｌ  Ｐａｔｔｅｒｎ  Ａｄｄｒｅｓｓが指定するアドレスは、パターンＤＢが格納されたメモリのアドレスであるか、又はパターンハッシュ値テーブルが格納されたメモリのアドレスでありうる。又は、パターンデータが格納された他の別途のメモリのアドレスでありうる。
【００３３】
ハッシュ値生成部３０は、ターゲットデータを構成するサブデータに対するハッシュ値を生成する。ハッシュ値生成部３０は、ハッシュ関数を適用してサブデータに対するハッシュ値を生成し、できる限り、ハッシュ衝突（Ｈａｓｈ  ｃｏｌｌｉｓｉｏｎ）が少なく発生するハッシュ関数とハッシュ係数とを使用することができる。
【００３４】
本発明の一実施の形態によれば、ハッシュ値生成部３０は、サブデータの全て又は一部を入力値としてハッシュ値を生成でき、生成したハッシュ値は、ハッシュ値マッチング部６０において使用される。サブデータの一部を入力値としてハッシュ値を生成する場合には、一つのサブデータに対して複数のハッシュ値が生成されることができる。例えば、サブデータが総８バイトからなるとすれば、ハッシュ値生成部３０は、第１番目のバイト、第２番目のバイト、第３番目のバイトを入力値としてハッシュ値を生成できる。続けて、ハッシュ値生成部３０は、第２番目のバイト、第３番目のバイト、及び第４番目のバイトを入力値としてハッシュ値を生成できる。続けて、第３番目のバイト、第４番目のバイト及び第５番目のバイトを入力値としてハッシュ値を生成できる。このような過程は、残りのバイトに対しても行われることができる。
【００３５】
ハッシュ値生成部３０は、ハードウェア及び／又はソフトウェアで具現されることができ、例えばハッシュ関数がレジスタのような格納場所に格納されている途中にメモリ（図示せず）にロードされてハッシュ値を生成する方式でも具現可能である。ハッシュ関数を利用してハッシュ値を生成することは、公知の技術に該当するので、これについての具体的な説明は省略する。
【００３６】
格納部４０は、本パターンマッチングシステムに必要なすべてのデータを格納することができる。図２を参照して格納部４０の構成を説明する。格納部４０は、パターンＤＢ４１を具備でき、既に決まった格納領域には、各々パターンハッシュ値テーブル４２、ハッシュマッチャーテーブル４３、サブマッチャーテーブル４４、サブパターンマトリクス４５が格納されることができる。
【００３７】
本実施の形態において格納部４０は、ハードディスク、揮発性メモリ、及び／又は不揮発性メモリ、ＲＯＭなどのような格納媒体のうちの何れか一つでありうる。本実施の形態において、パターンハッシュ値テーブル４２、ハッシュマッチャーテーブル４３、サブマッチャーテーブル４４、サブパターンマトリクス４５が一つの格納部４０に格納されると説明したが、これは、例示に過ぎず、これらのが互いに異なる格納媒体に格納されることも当然に可能である。例えば、上のテーブルは、揮発性メモリに格納され、パターンＤＢ４１は、ハードディスクのような格納媒体に格納されることができる。パターンＤＢ４１は、サブパターンマッチング部２０及びフルパターンマッチング部５０がマッチング動作の遂行に使用するパターンデータに対するデータベースである。本実施の形態において、パターンＤＢ４１は、文法的に決まった簡単なパターンのパターンデータを集めたものでありえ、あるいは文法的に複雑なパターンのパターンデータを集めたものでありえ、あるいは、文法的に簡単なパターンのパターンデータと文法的に複雑なパターンのパターンデータとが混在しているものでありうる。一方、本パターンＤＢ４１は、パターンデータの種類を表す情報をさらに含むことができる。パターンハッシュ値テーブル４２は、パターンＤＢ４１に格納されているパターンデータのハッシュ値を含む。パターンハッシュ値テーブル４２において、一つのパターンデータに対して少なくとも一つ以上のハッシュ値が対応していることができる。例えば、１６バイトのパターンデータがあるとすれば、ハッシュ値生成部は、パターンデータにおいて順次に第１番目のバイト、第２番目のバイト、及び第３番目のバイトを入力値としてハッシュ値を生成し、次に第２番目のバイト、第３番目のバイト、及び第４番目のバイトを入力値としてハッシュ値を生成し、残りのバイトに対しても同じ方式で一つのバイトずつ移動しながらハッシュ値を生成できる。このように生成されたハッシュ値は、パターンデータに対応されてパターンハッシュ値テーブル４２に含まれる。パターンデータに対するハッシュ値を生成するハッシュ値生成部は、図１のハッシュ値生成部３０又は別途に設けられたハッシュ値生成部（図示せず）でありうる。
【００３８】
ハッシュマッチャーテーブル４３は、パターンデータに対するハッシュ値の存在有無を表すためのテーブルである。本発明の一実施の形態によれば、ハッシュマッチャーテーブル４３は、次の形態で構成されることができる。
【００３９】
第一に、ハッシュマッチャーテーブル４３は、下記の表１のようにハッシュ値が記載されるハッシュ値項目と、パターンＤＢ４１のパターンデータが記載される項目とを含む形態でありうる。
【００４０】
【表１】
2011248897.tif 000003
【００４１】
第２に、ハッシュマッチャーテーブル４３は、ハッシュ値が記載されるハッシュ値項目と、パターンＤＢ４１のパターンデータのハッシュ値とハッシュ値項目に記載されたハッシュ値とが一致しているか否かを表す項目を含む形態（図２と図３のハッシュマッチャーテーブル）でありうる。
【００４２】
図２と図３には、第２番目の形態のハッシュマッチャーテーブル４３が示されている。キー値項目には、特定ハッシュ関数により生成可能なハッシュ値が記載される。一致有無項目では、キー値のうち、パターンデータのハッシュ値と一致する値を有したキーに対してのみ「１」と表示した。前記特定ハッシュ関数は、ハッシュ値生成部３０において使用されるハッシュ関数と同一である。
【００４３】
サブマッチャーテーブル４４は、サブパターンマッチング部２０に含まれているライトパターンマッチング部２２においてマッチング動作を行う際に使用されるテーブルに該当する。
【００４４】
本発明の一実施の形態によれば、サブマッチャーテーブル４４は、ハッシュ値が記載されるハッシュ値項目、ハッシュ値項目に記載されたハッシュ値に対応するパターンデータが記載されるパターンデータ項目を含むことができる。このとき、パターンデータ項目には、パターンデータが格納されたアドレス（ａｄｄｒｅｓｓ）、あるいは、パターンデータ自体が記載されることができる。また、サブマッチャーテーブル４４は、パターンデータの中間値を記載する中間値項目と、最後値を記載する最後値項目をさらに含むことができる。
【００４５】
図２に示すように、サブマッチャーテーブル４４は、パターンデータ項目は、重複パターンのオフセット項目、中間値オフセット項目、中間値項目、最後値オフセット項目、最後値項目、及び実際パターン情報項目を含むことができる。ここで、実際パターン情報項目には、実際パターンデータ自体、あるいは、パターンデータが格納されたアドレスが記載されることができる。
【００４６】
サブパターンマトリクス４５は、ターゲットデータを構成する各々のサブデータに対するサブパターンマッチング結果を含む。
【００４７】
本発明の一実施の形態によれば、サブパターンマトリクス４５は、ターゲットデータを構成するサブデータに対する各々のマッチング結果を含むことができる。例えば、ターゲットデータが５個のサブデータから構成されていると仮定すれば、サブパターンマトリクス４５は、５個の各々に対するパターンマッチング結果を含むことができる。サブパターンマトリクス４５は、フルパターンマッチング動作に使用されるものであって、パターンデータとフルパターンマッチング動作のために必要なサブデータのパターンマッチング結果をすべて含むことができる。
【００４８】
本発明の一実施の形態にかかるサブパターンマトリクス４５は、サブデータに対する精密パターンマッチングの遂行結果、複雑なパターンの一部と決定された場合に、そのサブデータに対するマッチング結果を含む。
【００４９】
フルパターンマッチング部５０は、サブパターンマトリクス４５を利用してサブパターンマトリクス４５に含まれたサブデータとパターンデータとをフルマッチングする動作を行う。本発明の一実施の形態にかかるフルパターンマッチング部５０は、サブパターンマッチング部２０によるマッチングが成功するごとに、フルパターンマッチング動作を行うことができる。又は、フルパターンマッチング部５０は、サブパターンマッチング部２０の成功有無と無関係にサブパターンマッチング部２０によるマッチング結果が出るごとに、フルパターンマッチング動作を行うことができる。
【００５０】
本発明の一実施の形態にかかるフルパターンマッチング部５０は、ターゲットデータを構成するサブデータの各々のサブパターンマッチング結果と、パターンデータ全体とのパターンマッチング動作を行うことができる。このようなフルパターンマッチング部５０は、ハードウェア及び／又はソフトウェアにより具現されることができる。
【００５１】
ハッシュ値マッチング部６０は、ハッシュ値生成部３０により生成されたハッシュ値とハッシュマッチャーテーブル４３との間のマッチング動作を行う。ハッシュ値マッチング部６０のマッチング動作の遂行結果は、サブパターンマッチング部２０のサブパターンマッチング動作時に利用される。
【００５２】
例えば、サブデータに対するハッシュ値が「Ｘ」という値が出たと仮定し、図３を参照してハッシュ値マッチング部６０の動作を説明する。図３に示すように、ハッシュ値マッチング部６０は、ハードウェア的及び／又はソフトウェア的にハッシュマッチャーテーブル４３を利用してハッシュ値「Ｘ」を有するパターンがあることが分かり、「一致」又は「成功」という結果を出力することができる。
【００５３】
テーブル生成部７０は、本パターンマッチングシステムのパターンマッチング動作に必要なテーブル、例えば、パターンハッシュ値テーブル、ハッシュマッチャーテーブル４３、サブマッチャーテーブル４４、及び／又はサブパターンマトリクス４５を生成することができる。テーブル生成部７０により生成されたテーブルは、格納部４０の該当格納領域に格納されることができる。テーブル生成部７０により生成されるテーブルは、図２を参照して説明したとおりである。
【００５４】
本実施の形態において、上のテーブル４３、４４、４５が一つのテーブル生成部７０から生成されると説明したが、これは、例示的なもので、別途に設けられるテーブル生成部によって生成されることも可能である。
【００５５】
テーブル生成部７０は、パターンＤＢ４１内のパターンデータに対するすべての場合のハッシュ値を記載するパターンハッシュ値テーブルを生成できる。本発明の一実施の形態によれば、テーブル生成部７０は、ハッシュ値生成部３０又は別途に設けられるハッシュ値生成部（図示せず）を利用して、パターンデータに対するハッシュ値を生成し、該生成したハッシュ値をパターンハッシュ値テーブルの形態（図３において、ハッシュ値（ＨＡＳＨ  Ｖａｌｕｅ）項目とパターン（Ｐａｔｔｅｒｎ）項目からなるテーブル）で構成できる。
【００５６】
本発明の一実施の形態によれば、パターンハッシュ値テーブルは、テーブル生成部７０にてハッシュマッチャーテーブル４３を生成する際に使用されることができる。本発明の一実施の形態にかかるテーブル生成部７０は、ハッシュマッチャーテーブルを構成できる。例えば、テーブル生成部７０は、ハッシュ値生成部３０又は別途に設けられるハッシュ値生成部（図示せず）を利用してパターンデータに対するハッシュ値を生成し、該生成したハッシュ値をハッシュマッチャーテーブルの形態を有するように構成できる。又は、前記パターンハッシュ値テーブルを参照して、ハッシュマッチャーテーブルを構成できる。一方、本発明の一実施の形態にかかるテーブル生成部７０は、前記ハッシュマッチャーテーブル、パターンハッシュ値テーブル、及びパターンＤＢを参照してサブマッチャーテーブルを構成できる。
【００５７】
パターンＤＢ４１が変更されると、テーブル生成部７０は、上のテーブルを新しく作成することができる。このとき、変更された部分のみを新しく作成するか、又は全て新しく作成することができる。
【００５８】
以上のように、図１を参照して説明したパターンマッチングシステムは、複雑なパターンと簡単なパターンとを区分してパターンマッチング動作を行うと説明した。すなわち、本実施の形態によれば、ターゲットデータに対するサブパターンマッチングの結果、マッチングされ、そのサブデータが単純なパターンに該当する場合には、フルパターンマッチング動作を行わずにターゲットデータに対するマッチング動作を終了する。一方、ターゲットデータに対するサブパターンマッチングの結果、マッチングされ、そのサブデータが複雑なパターンの一部に該当する場合には、フルパターンマッチング動作を行う。理解の便宜のために、５個のサブデータから構成されたターゲットデータがあるとしよう。仮に、第１番目のサブデータに対するサブパターンマッチングの結果が成功的で、かつそのサブデータが単純なパターンに該当すると、残りの４個のサブデータに対するパターンマッチング動作は行われず、フルパターンマッチング動作も行われない。一方、第１番目のサブデータに対するサブパターンマッチングの結果が成功的で、かつそのサブデータが複雑なパターンの一部に該当する場合、第１番目のサブデータに対するマッチング結果をサブパターンマトリクスに含め、第２番目のサブデータに対するサブパターンマッチング動作が行われる。続けて、残りのサブデータに対するサブパターンマッチング動作が行われて、その結果がサブパターンマトリクスに含まれる。このサブパターンマトリクスを利用してフルパターンマッチング動作が行われる。
【００５９】
図１に示す実施の形態は、多様な形態で変形が可能である。
【００６０】
第１番目の変形例として、パターンデータが文法的に簡単なパターンのみがあると仮定して構成する場合である。すなわち、フルパターンマッチング部５０を含めずに、サブパターンマトリクスも生成しないように構成することであって、すべてのターゲットデータに対してサブパターンマッチング動作のみを行うように構成されることができる。このような場合、パターンＤＢには、文法的に簡単なパターンデータのみが格納されていることができる。
【００６１】
第２番目の変形例として、パターンデータが文法的に複雑なパターンのみがあると仮定して構成する場合である。この場合は、ターゲットデータに対してフルパターンマッチングされるまで、そのサブデータを構成するサブデータに対してフルパターンマッチング動作をすべて行う。すなわち、サブデータのサブパターンマッチング動作がなされるごとに、フルパターンマッチング動作が行われるか、又はサブパターンマッチング動作の結果が成功的であるごとにフルパターンマッチング動作が行われることができる。
【００６２】
以上説明した図１に示す決定部１０、サブパターンマッチング部２０、ハッシュ値生成部３０、格納部４０、フルパターンマッチング部５０、ハッシュ値マッチング部６０、及びテーブル生成部７０を備えるパターンマッチングシステムは、ＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）に搭載されて具現されることができ、あるいは、ＰＣ及びスマートカードに搭載されることもできる。
【００６３】
図３は、本発明の一実施の形態にかかるテーブル構成を説明するための図である。
【００６４】
本発明の一実施の形態にかかるハッシュ値生成部３０は、パターンＤＢ４１からパターンデータをロードして特定ハッシュ関数（Ｈａｓｈ  ｆｕｎｃｔｉｏｎ）を利用してパターンデータ別ハッシュ値を生成し、パターンデータ別に生成されたハッシュ値は、パターンハッシュ値テーブル４２に格納される。パターンハッシュ値テーブル４２は、ハッシュ値生成部３０ではない別途に設けられたハッシュ値生成部（図示せず）により生成されたハッシュ値から構成されることも可能である。ただし、別途に設けられたハッシュ値生部が使用するハッシュ関数とそのハッシュ係数は、前記ハッシュ値生成部３０のものと同一でなければならない。
【００６５】
テーブル生成部７０は、パターンハッシュ値テーブル４２を利用してハッシュマッチャーテーブル４３とサブマッチャーテーブル４４とを生成できる。ハッシュマッチャーテーブル４３は、ハッシュ値マッチング部６０において同じハッシュ値を有するパターンデータが存在するか否かをまず判断するための用途として使用される。一方、サブマッチャーテーブル４４は、ハッシュマッチングが成功した場合にのみ使用される。
【００６６】
ハッシュマッチャーテーブル４３とサブマッチャーテーブル４４とを利用したマッチング動作の遂行結果、これらのマッチングが全部成功されたサブデータとパターンデータの全体がマッチングされる動作が行われる。
【００６７】
以上、図３に示すテーブルは、例示的なものであって、本願発明がこれらのテーブルの構成に限定されるものでない。図３には、パターンデータ種類情報が含まれていないが、パターンデータ種類情報がさらに含まれるように構成することも可能である。例えば、サブマッチャーテーブルに、パターンデータ種類情報がさらに含まれるように構成することによって、決定部１０は、そういうサブマッチャーテーブルを参照してフルパターンマッチング動作が行われるようにするか否かを決定できる。
【００６８】
図４は、本発明の一実施の形態にかかるパターンマッチングシステムをＳｏＣ形態で具現した例を示したブロック図である。
【００６９】
図４に示すように、本パターンマッチングシステムをＳｏＣ形態で具現すれば、コンフィギュアバス１０１、１２３、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０３、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラ１０５、ローカルバス１０７、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）コントローラ１０９、フラッシュコントローラ１１１、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）コントローラ１１３、バッファ１１５、検索エンジン１１７、バスマトリクス１１９、及びブート（ｂｏｏｔ）１２１を備えることができる。
【００７０】
本パターンマッチングシステムにおいて、各ブロック間のデータ送信のためのバスは、データの迅速な送信のためのローカルバス１０７と、コンフィギュレーション（ｃｏｎｆｉｇｕｒａｔｉｏｎ）のためのコンフィギュア（ｃｏｎｆｉｇｕｒｅ）バス１０１、１２３とに区分できる。本実施の形態においてローカルバス１０７とコンフィギュアバス１０１、１２３とは、ＡＨＢ（Ａｄｖａｎｃｅｄ  Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｂｕｓ）規格でありうるが、これは、例示的なものであって、本願発明は、必ずコンフィギュアバスである必要がなく、他の規格のバスも使用することができる。一方、本実施の形態においてコンフィギュアバス１０１と１２３とは、互いに接続していることができる。
【００７１】
ＣＰＵ１０３は、本パターンマッチングシステムを全般的に制御し、要求される作業を中央演算処理する機能を果たす。ＣＰＵ１０３は、リコンフィギュラブル（ｒｅｃｏｎｆｉｇｕｒａｂｌｅ）ＣＰＵでありうるが、これは、例示的なものであって、リコンフィギュラブルＣＰＵでなくても良い。
【００７２】
ＤＭＡコントローラ１０５は、ＤＭＡを制御する機能を果たし、バッファ１１５は、外部とのインタフェースを介してデータを一時格納する機能を果たす。
【００７３】
検索エンジン１１７は、ターゲットデータとパターンデータとを受け取ってパターンマッチング動作を行うハードウェアでありうる。例えば、検索エンジン１１７は、図２に例示されたテーブルを参照してターゲットデータに対するパターンマッチング動作を行うことができる。
【００７４】
バスマトリクス１１９は、ＡＨＢ規格の制御信号とデータ信号とをＡＰＢ（Ａｄｖａｎｃｅｄ  Ｐｅｒｉｐｈｅｒａｌ  Ｂｕｓ）規格の制御信号とデータ信号に変換するか、又はＡＰＢ規格の制御信号とデータ信号をＡＨＢ規格の制御信号とデータ信号に変換して伝達する役割を果たす。
【００７５】
ブート１２１は、ＳｏＣにおいてパターンマッチングシステムが初期動作されるようにする役割を果たす。
【００７６】
本実施の形態において、メモリとしては、ＳＤＲＡＭ１２５、フラッシュ（ｆｌａｓｈ）メモリ１２７、及びＳＲＡＭ１２９を含んでいることを示した。これにより、ＳＤＲＡＭ１２５に対する入出力を制御するためのＳＤＲＡＭコントローラ１０９、フラッシュメモリ１２７に対した入出力を制御するためのフラッシュコントローラ１１１、ＳＲＡＭ１２９に対する入出力を制御するためのＳＲＡＭコントローラ１１３を含んでなる。ＳＤＲＡＭ１２５、フラッシュ（ｆｌａｓｈ）メモリ１２７、及びＳＲＡＭ１２９は、図１に示す格納部４０に含まれることができる。
【００７７】
図１を参照して説明したパターンマッチングシステムとその変形例において決定部１０、サブパターンマッチング部２０、ハッシュ値生成部３０、フルパターンマッチング部５０、ハッシュ値マッチング部６０、及びテーブル生成部７０は、ソフトウェア及び／又はハードウェアで具現されることができ、検索エンジン１１７は、その中でハッシュ値マッチング動作、サブパターンマッチング動作をハードウェアで具現したのである。一方、ソフトウェアで具現される部分は、ＳＤＲＡＭ１２５やＳＲＡＭ１２９のような格納媒体に格納されている途中でマッチング動作を行う際に検索エンジン１１７を制御してマッチング動作を行うことができる。
【００７８】
図５は、図４に示す検索エンジンのハードウェア構成を示したブロック図である。
【００７９】
図５に示すように、検索エンジン１１７は、システムインタフェース部２０１、システムレジスタ２０３、メモリインタフェース部２０５、メモリ２０７、バッファ２０９、ハッシュマッチャー２１１、オフセットアドレスジェネレーター部２１３、ハッシュＱバッファ２１５、ライトパターンマッチャー２１７、スキャンＱバッファ２１９を備えることができる。
【００８０】
本発明の一実施の形態によれば、検索エンジン１１７は、ハッシュ値マッチング動作とサブパターンマッチング動作とを行い、フルパターンマッチング動作は、図６に例示的に示すように、ソフトウェア的に具現されることができる。
【００８１】
システムインタフェース部２０１は、本パターンマッチングシステムと外部間のインタフェースを支援し、メモリインタフェース部２０５は、本パターンマッチングシステム内に格納されたＤＢ又はファイルの内容を読み込むために使用される。
【００８２】
メモリ２０７は、図１〜図３の実施の形態を参照して説明したパターンハッシュ値テーブルを格納することができ、必要な場合には、システムレジスタ２０３に移動されることができる。メモリ２０７に格納されるパターンハッシュ値テーブルは、ハッシュ値生成器（図示せず）により生成されたことでありうる。本発明の一実施の形態によれば、ハッシュ値生成器（図示せず）は、ソフトウェア的に具現されることができる。例えば、システムレジスタ２０３にハッシュ関数が格納されており、ハッシュ値生成器がレジスタに格納されたハッシュ関数を利用して、パターンデータに対するハッシュ値を生成することができる。バッファ２０９は、メモリインタフェース部２０５から順次に読み込んだターゲットデータを格納する。本発明の一実施の形態によれば、バッファ２０９は、ターゲットデータを構成する各々のサブデータを順次に受け取って格納することができる。一方、本実施の形態において、バッファ２０９は、デュアルバンク方式で構成されたが、これは、例示的なものであって、一つのバッファで具現することも可能である。ただし、デュアルバンク方式で具現する場合には、２個のバッファで交互にサブデータをハッシュマッチャー２１１側に提供することであるから、マッチング速度がより速くありうる。
【００８３】
ハッシュマッチャー２１１に入力されるデータは、サブデータとそのハッシュ値とが入力される。すなわち、バッファ２０９から出力されるサブデータは、ハッシュ値生成器（図示せず）に入力されて、そのハッシュ値が生成され、生成されたハッシュ値がサブデータと共にハッシュマッチャー２１１に入力される。
【００８４】
ハッシュマッチャー２１１は、サブデータのハッシュ値とハッシュマッチャーテーブル４３のマッチング動作を行う。ここで、ハッシュマッチャーテーブル４３は、システムレジスタ２０３に格納されているか、又は別途に設けられたメモリ（図示せず）に格納されていることができる。ここで、ハッシュマッチャーテーブルは、図１〜図３を参照して説明したハッシュマッチャーテーブルに該当することで、テーブル生成器（図示せず）によって生成されたものでありうる。
【００８５】
ハッシュマッチャー２１１は、ハッシュ値が互いにマッチングされる場合（すなわち、マッチングが成功する場合）にのみ、ハッシュマッチングが成功したサブデータをハッシュＱバッファ２１５に格納する。
【００８６】
オフセットアドレスジェネレーター部（ｏｆｆｓｅｔ  ａｄｄｒｅｓｓ  ｇｅｎｅｒａｔｏｒ）２１３は、ハッシュマッチャーのマッチング動作の遂行結果、ハッシュマッチングが成功した場合に、所定のメモリアドレス値を発生させる。具体的に、サブパターンマッチングテーブルにおいて、前記ハッシュマッチングが成功したハッシュ値が格納されたメモリアドレス値を発生させる。図３の例を挙げて説明し、ハッシュマッチング結果、サブデータのハッシュ値が「Ｘ」であると、オフセットアドレスジェネレーター部２１３は、サブマッチャーテーブルにおいてインデックス（ＩＮＤＥＸ）が「Ｘ」であるレコードを格納するメモリアドレスを生成する。
【００８７】
ハッシュＱ（Ｑｕｅｕｅ）バッファ部２１５は、ハッシュマッチングが成功したサブデータと、オフセットアドレスジェネレーター部２１３から発生したアドレスを互いに対応させて格納する。
【００８８】
ライトパターンマッチャー２１７は、ハッシュＱバッファ部２１５が格納するサブデータに対してライトパターンマッチング動作を順次に行うハードウェアである。本発明の一実施の形態によれば、ライトパターンマッチャー２１７は、図１に示すライトパターンマッチング部２２の機能と対応できる。ライトパターンマッチャー２１７は、ハッシュＱバッファ部２１５に格納されたサブデータと、そのサブデータに対応されたメモリアドレスに格納されたデータ（例えば、インデックスが「Ｘ」であるレコード）を読み込んで、両者をマッチングさせることができる。ここで、メモリから読み込んだデータは、サブパターンマッチャーテーブルに含まれたデータである。
【００８９】
本発明の一実施の形態によれば、ライトパターンマッチャー２１７は、メモリから読み込んだデータに衝突パターンオフセットが含まれている場合には、その衝突パターンオフセットが指定するデータを追加的に読み込んで、ライトパターンマッチング動作を再度行う。
【００９０】
ただし、本発明の一実施の形態によれば、ライトパターンマッチャー２１７は、例えばサブマッチャーテーブルにおいてインデックスが「Ｘ」であるパターンデータに対してライトパターンマッチングが失敗するか、又は精密パターンマッチングが失敗した場合に、衝突パターンのオフセットが指示する値（「Ｚ」）が表すパターンデータ（すなわち、インデックス「Ｚ」であるパターンデータ）を読むようになる。スキャンＱ（Ｑｕｅｕｅ）バッファ部２１９は、ライトパターンマッチャー２１７のマッチング動作以後、ライトパターンマッチングが成功したサブデートを順次格納することができる。以後、ここに格納されたサブデータに対しては、精密パターンマッチング動作が行われる。
【００９１】
図５に示されていないが、ハッシュマッチャーによるハッシュマッチング動作とライトパターンマッチャーによるライトパターンマッチング動作に使用されるハッシュマッチャーテーブルとサブマッチャーテーブルは、システムレジスタ２０３や別途に設けられたメモリ（図示せず）に格納されていることができる。
【００９２】
一方、上述した図４と図５に示されたように、本願発明がＳＯＣ形態で具現された場合、アプリケーションにおいてソフトウェアレベルでパターンマッチングをする場合より、その速度が数倍以上速く、ひいては、速度やバッテリーに制限があるモバイルデバイスのリソース問題を解決することができる。
【００９３】
図６は、図５に示すパターンマッチングシステムの全般的な動作を説明するための図である。
【００９４】
ハッシュマッチャーテーブル４３は、メモリ（図示せず）に格納されてハッシュマッチャー２１１にてマッチング動作を行うために使用される。本発明の一実施の形態においてハッシュマッチャーテーブル４３は、インデックスとして使用するためのハッシュ値であるキー値とそのキー値を使用するパターンの一致有無情報を含むことができる。ハッシュ値生成器（図示せず）がパターンＤＢ４１においてパターンＤＢをロードしてハッシュ値を生成すると、そのハッシュ値に基づいてハッシュマッチャーテーブル４４とパターンハッシュ値テーブルとが生成されることができる。パターンハッシュ値テーブルは、メモリ２０７に格納されていることができる。
【００９５】
サブマッチャーテーブル４４は、メモリ（図示せず）に格納されてライトパターンマッチャー２１７と精密パターンマッチングのために使用される。バッファ２０９には、ターゲットデータのサブデータがロードされ、ロードされたサブデータとそのハッシュ値がハッシュマッチャー２１１に提供される。ハッシュマッチャー２１１は、バッファ２０９からサブデータ及びそのハッシュ値を、図示していないメモリからはハッシュマッチャーテーブル４３を提供されてハッシュマッチングを行う。
【００９６】
以後、ライトパターンマッチャー２１７では、サブマッチャーテーブル４４を利用してサブデータの一部に対するマッチング動作を行い、サブデータの一部が前記パターンデータと同一であるか、又はパターンデータに含まれた場合（すなわち、ライトパターンマッチングが成功した場合）、その成功したサブデータをスキャンＱバッファ２１９側に出力する。
【００９７】
そして、スキャンＱバッファ２１９に格納されたサブデータに対して精密パターンマッチング動作が行われ、このような動作は、例えば、前述した精密パターンマッチング部２４により行われることができる。
【００９８】
本実施の形態における検索エンジン１１７は、ハードウェアロジックから構成されて単純でかつ速い作業を行うことができ、ビットテーブルであるハッシュマッチャー２１１は、大きさが小さく、ハッシュ関数を通じて出てきたハッシュ値をマッチング対象にするから、比較速度が速いという長所がある。また、ライトパターンマッチャー２１７は、ハッシュ値をインデックスとして接近するから、速いマッチング結果を出力することができる。
【００９９】
図７は、本発明の一実施の形態にかかる文法的に決まった複雑なパターンデータを説明するための図である。
【０１００】
図７には、文法的に決まった複雑なパターンデータ（以下、マルチパターンデータとする）の形態を例示した。このようなマルチパターンデータは、図４〜図６にて説明したパターンマッチングシステムによっては、正確なパターンマッチング結果を得ることができない。
【０１０１】
したがって、一つのマルチパターンを複数のサブパターンに分離してパターンマッチング動作を行う必要がある。図７に示すように、一つのマルチパターンデータを予め決まった規則に従って複数のサブパターンに分離できる。
【０１０２】
図８は、図５に示すパターンマッチングシステムにおいて文法的に決まった複雑なパターンデータを処理する動作を説明するための図である。
【０１０３】
図８に示す動作は、図６にて説明した動作と似ている。ただし、図６では、文法的に決まった簡単なパターンデータを処理する動作を説明したものであり、図８は、文法的に決まった複雑なパターンデータ、すなわち、マルチパターンデータを処理する動作を説明したものである。図８のマルチパターンデータを処理する動作は、図６に一部動作が追加されたことに該当するので、ここでは、追加された動作についてのみ説明する。
【０１０４】
パターンＤＢ４１に格納されているパターンデータを複数のサブパターンに分離する動作を行う。このような動作を「マルチパターン構成プロセス」とすることにする。マルチパターン構成プロセスは、図７にて示したとおりである。
【０１０５】
図８に示すように、マルチパターンデータに対してハッシュマッチャーテーブル４３、及びサブマッチャーテーブル４４、パターンハッシュ値テーブルが構成されている。
【０１０６】
ハッシュマッチャー２１１によるマッチング動作と、ライトパターンマッチャー２１７によるマッチング動作と、精密パターンマッチングは、前述した図５及び６の説明と同一なので、それに関する説明は省略する。図８の実施の形態によれば、精密パターンマッチングの結果は、サブパターンマトリクス４５に含まれて格納され、ここでサブパターンマトリクス４５は、メモリ（図示せず）に格納されていることができる。図１〜図３を参照して説明した通り、サブパターンマトリクス４５を参照して、フルパターンマッチング動作がなされることができる。
【０１０７】
図９は、本発明の文法的に決まった簡単なパターンデータを利用したパターンマッチング方法の第１の実施の形態を説明するためのフローチャートである。
【０１０８】
ターゲットデータは、複数のサブデータに区分されることができる。サブデータが本パターンマッチングシステムに入力されると（Ｓ３０１）、ハッシュ値生成部３０は、サブデータに対するハッシュ値を生成する（Ｓ３０３）。ハッシュ値マッチング部６０は、予め格納されたハッシュマッチャーテーブル４３とサブデータのハッシュ値とを順次マッチングするハッシュマッチング動作を行う（Ｓ３０５）。
【０１０９】
ハッシュ値マッチング部６０のハッシュマッチング動作の遂行結果、現在マッチング対象である一つのサブデータのハッシュ値がハッシュマッチャーテーブルと一致する場合（Ｓ３０７−Ｙ）、ライトパターンマッチング部２２が該当サブデータの一部に対するライトパターンマッチングを行う（Ｓ３０９）。ライトパターンマッチングの遂行時には、テーブル生成部７０により予め生成されたサブマッチャーテーブル４４が利用される。
【０１１０】
ライトパターンマッチングの遂行結果、該当サブデータの一部とサブマッチャーテーブル４４の値が一致する場合（Ｓ３１１−Ｙ）、該当サブデータの全体に対してマッチングする精密パターンマッチング動作を行う（Ｓ３１３）。
【０１１１】
精密パターンマッチング動作の遂行結果、現在マッチング対象であるサブデータ全体に対する値がサブマッチャーテーブル４４の値と一致する場合（Ｓ３１５−Ｙ）、決定部１０は、パターンが存在すると判断する（Ｓ３１７）。
【０１１２】
ステップＳ３１５にて、サブデータとパターンデータとが一致しない場合（Ｓ３１５−Ｎ）、現在マッチング対象であるサブデータが最後のサブデータである場合（Ｓ３１９−Ｙ）、ターゲットデータにパターンが存在しないと最終決定する（Ｓ３２１）。
【０１１３】
ステップＳ３１１にて、サブデータの一部がサブマッチャーテーブル４４の値と一致しない場合（Ｓ３１１−Ｎ）、現在マッチング対象であるサブデータが最後のサブデータである場合（Ｓ３１９−Ｙ）、ターゲットデータにパターンが存在しないと最終決定する（Ｓ３２１）。
【０１１４】
ステップＳ３１９にて、現在マッチング対象であるサブデータが最後のサブデータでない場合（Ｓ３１９−Ｎ）、ステップＳ３０３にフィードバックして次のマッチング対象であるサブデータに対するハッチング動作を繰り返す。
【０１１５】
図９において、ステップＳ３０７とステップＳ３１９からステップＳ３０３にフィードバックする過程を示したが、これは、例示的なものであって、他の具現も可能である。すなわち、ステップＳ３０１の動作は、一定の時刻間隔を隔てて入力され続けることができ、ステップＳ３０７やステップＳ３１９のフィードバック動作はないことも可能である。ステップＳ３０７にてハッシュ値が互いに一致しない場合（Ｓ３０７−Ｎ）には、現在ハッシュマッチング中のサブデータとそのハッシュ値を捨てる動作を行うことができる。また、ステップＳ３１９にて最後のサブデータでない場合（Ｓ３１９−Ｎ）、現在精密パターンマッチング又はライトパターンマッチングしたサブデータを捨てる動作を行うことができる。図９にて説明したパターンマッチング方法は、本パターンマッチングシステムに入力されるターゲットデータが文法的に決まった簡単なパターンのデータであることを前提としたもので、図１のパターンマッチングシステムにおいてサブパターンマッチング部２０、ハッシュ値生成部３０、格納部４０、ハッシュ値マッチング部６０、及びテーブル生成部７０のみの構成でも動作可能である。
【０１１６】
図１０は、本発明の文法的に決まった簡単なパターンデータを利用したパターンマッチング方法の第２の実施の形態を説明するためのフローチャートである。
【０１１７】
図１０は、図９に示す文法的に決まった簡単なパターンデータを利用したパターンマッチング方法の第１の実施の形態の一部を変形した例に該当する。
【０１１８】
パターンデータが入力されると（Ｓ４０１）、ハッシュ値生成部３０は、パターンデータに対するハッシュ値を生成し、テーブル生成部７０は、ハッシュ値生成部３０により生成されたハッシュ値を利用してパターンハッシュ値テーブル４２、ハッシュマッチャーテーブル４３、及びサブマッチャーテーブル４４を構成する（Ｓ４０３）。
【０１１９】
以後、マッチング動作を行うために、本パターンマッチングシステムに複数のサブデータから構成されたターゲットデータが入力される（Ｓ４０５）。
【０１２０】
ターゲットデータが入力されると、サブパターンマッチング部２０は、サブデータのはじめからパターンマッチングを行う。サブデータの最初位置は、ポジションが０である地点を意味する（Ｓ４０７）。
【０１２１】
サブデータのポジションを移動してパターンマッチングを行う過程において、現在マッチング対象であるサブデータのポジションがデータの終わりでない場合（Ｓ４０９−Ｎ）、サブデータの現在ポジションから予め決まった大きさ分だけを読み込んでハッシュ関数を適用してハッシュ値を生成する（Ｓ４１１）。
【０１２２】
仮に、ステップＳ４０９にて、サブデータのポジションがデータの終わりである場合（Ｓ４０９−Ｙ）、現在サブデータには、パターンが存在しないと決定する（Ｓ４２３）。
【０１２３】
以後、ステップＳ４１１にて生成したハッシュ値がハッシュマッチャーテーブル４３に存在しているか否かを確認する（Ｓ４１３）。ステップＳ４１３にて、ハッシュマッチャーテーブル４３に予め生成したハッシュ値が存在すると確認されると（Ｓ４１３−Ｙ）、サブマッチャーテーブル４４から中間値、最後値を比較して、結果が同じであるか否かを確認する（Ｓ４１５）。
【０１２４】
ステップＳ４１５での結果が同じであると、サブマッチャーテーブル４４を利用してパターンデータ全体に対するパターンマッチングを行ってパターンデータ全体が一致すると（Ｓ４１７−Ｙ）、ターゲットデータにパターンが存在すると決定する（Ｓ４１９）。ターゲットデータにパターンが存在すると決定される場合は、ターゲットデータにウイルスを含んだマルウェアが存在することを意味できる。
【０１２５】
仮に、ステップＳ４１７にて、パターンデータ全体が一致しないと（Ｓ４１７−Ｎ）、ターゲットデータにパターンが存在しないと決定する（Ｓ４２３）。ターゲットデータにパターンが存在すると決定される場合は、ターゲットデータにウイルスを含んだマルウェアが存在しないのを意味できる。
【０１２６】
また、ステップＳ４１３にてハッシュマッチャーテーブル４３にマッチング対象に対するハッシュ値が存在しない場合（Ｓ４１３−Ｎ）、又はステップＳ４１５にてサブマッチャーテーブル４４での中間値と最後値との比較結果が同じでない場合（Ｓ４１５−Ｎ）、サブデータの現在ポジションに１バイトを足してポジションを変更した後（Ｓ４２１）、ステップＳ４０９にフィードバックして繰り返す。
【０１２７】
図１１は、本発明の文法的に決まった複雑なパターンデータの処理過程を説明するためのフローチャートである。
【０１２８】
図１１は、文法的に決まった複雑なパターンデータの処理過程に使用されるサブパターンマトリクスを構成する方法を説明するためのものである。
【０１２９】
パターンデータが入力されると（Ｓ５０１）、入力されたパターンデータをサブパターンに分離する（Ｓ５０３）。
【０１３０】
分離された各サブパターンごとにステップＳ５０７〜Ｓ５１５を繰り返したか否かを確認して、パターン分だけ繰り返した場合には終了し、そうでない場合には次のステップに進む（Ｓ５０５）。
【０１３１】
以後、分離されたサブパターンに対するインデックスとして使用するために、サブパターンに対するハッシュ値を生成し（Ｓ５０７）、各サブパターン別ハッシュ値をインデックスとしてハッシュマッチャーテーブル３０５に該当情報を記録し（Ｓ５０９）、各サブパターン別ハッシュ値をインデックスとしてサブマッチャーテーブル３０７にも該当情報を記録する（Ｓ５１１）。
【０１３２】
また、全体パターンと文法処理のための追加情報をサブマッチャーテーブルに格納し（Ｓ５１３）、全体パターンに再組合できるようにサブパターンの情報をサブパターンマトリクス４５に格納する（Ｓ５１５）。
【０１３３】
図１２は、本発明の文法的に決まった複雑なパターンデータに対するパターンマッチング方法の第１の実施の形態を説明するためのフローチャートである。
【０１３４】
ターゲットデータを構成する各々のサブデータが本パターンマッチングシステムに入力される（Ｓ６０１）。以後、ハッシュ値生成部３０は、サブデータに対するハッシュ値を生成する（Ｓ６０３）。
【０１３５】
ハッシュ値マッチング部６０は、ハッシュマッチャーテーブル４３と前記サブデータのハッシュ値とをマッチングするハッシュマッチング動作を行う（Ｓ６０５）。
【０１３６】
ハッシュ値マッチング部６０のハッシュマッチング動作の遂行結果、現在マッチング対象である一つのサブデータのハッシュ値がハッシュマッチャーテーブルと一致する場合（Ｓ６０７−Ｙ）、ライトパターンマッチング部２２が該当サブデータの一部に対するライトパターンマッチングを行う（Ｓ６０９）。ライトパターンマッチングの遂行時には、テーブル生成部７０により予め生成されたサブマッチャーテーブル４４が利用される。
【０１３７】
ライトパターンマッチングの遂行結果、該当サブデータの一部とサブマッチャーテーブル４４に記載されたパターンデータとが一致する場合（Ｓ６１１−Ｙ）、該当サブデータの全体に対してマッチングする精密パターンマッチング動作を行う（Ｓ６１３）。
【０１３８】
精密パターンマッチング動作の遂行結果、現在マッチング対象であるサブデータ全体とサブマッチャーテーブル４４の値とが一致する場合（Ｓ６１５−Ｙ）、このパターンマッチング結果をサブパターンマトリクス４５に格納する（Ｓ６１７）。
【０１３９】
以後、サブパターンマトリクス４５とパターンデータとを比較する動作を行う（フルパターンマッチング）（Ｓ６１９）。
【０１４０】
フルパターンマッチング結果、パターンデータとターゲットデータとのマッチングが成功した場合（Ｓ６２１−Ｙ）、決定部１０は、ターゲットデータにパターンが存在すると決定する（Ｓ６２３）。
【０１４１】
仮に、ステップＳ６１５及びステップＳ６２１にて、各マッチング動作の遂行結果、一致しないと判断されると（Ｓ６１５−Ｎ、Ｓ６２１−Ｎ）、現在マッチング対象であるサブデータが最後のサブデータであるか否かを決定する（Ｓ６２５）。
【０１４２】
現在マッチング対象であるサブデータが最後のサブデータである場合（Ｓ６２５−Ｙ）、決定部１０は、ターゲットデータにパターンが存在しないと最終決定する（Ｓ６２７）。
【０１４３】
仮に、現在マッチング対象であるサブデータが最後のサブデータでない場合（Ｓ６２５−Ｎ）、次のサブデータに対するマッチング動作を行うためにステップＳ６０３にフィードバックして同一動作が繰り返される。
【０１４４】
本実施の形態でのステップＳ６０１〜ステップＳ６１５は、図９のステップＳ３０１〜Ｓ３１５と同一である。すなわち、マルチパターンデータを処理する動作は、文法的に決まった簡単なパターンデータを処理する動作を行った後、フルパターンマッチング動作をさらに行うことである。
【０１４５】
図１３は、本発明の文法的に決まった複雑なパターンデータに対するパターンマッチング方法の第２の実施の形態を説明するためのフローチャートである。
【０１４６】
パターンデータをロードし（Ｓ７０１）、該ロードしたパターンデータをサブパターンに分離してマルチパターンデータを構成する（Ｓ７０３）。ここで、マルチパターンデータを構成する方法は、図１１にて説明したとおりである。
【０１４７】
以後、マッチング対象になるターゲットデータを受け取る（Ｓ７０５）。受け取ったデータのはじめから１バイトずつ移動しつつパターンマッチングを実施する。すなわち、受け取ったデータのポジションが０の地点から１バイトずつ移動しつつパターンマッチングを実施する（Ｓ７０７）。
【０１４８】
受け取ったターゲットデータのポジションがデータの終わりなのか確認し（Ｓ７０９）、現在ポジションがデータの終わりであると（Ｓ７０９−Ｙ）、受け取ったデータに一致するパターンがないと判断する（Ｓ７１１）。
【０１４９】
仮に、受け取ったターゲットデータのポジションがデータの終わりでないと（Ｓ７０９−Ｎ）、ターゲットデータの現在ポジションから決まった大きさ分だけ読んでハッシュ関数を適用してハッシュ値を生成する（Ｓ７１３）。
【０１５０】
ハッシュ値マッチング部６０は、ステップＳ７１３にて計算したハッシュ値がハッシュマッチャーテーブルに存在しているか否かを確認する（Ｓ７１５）。ここで、ステップＳ７１３にて計算したハッシュ値がキー値として存在すると（Ｓ７１５−Ｙ）、サブパターンマッチング動作、例えばサブデータの中間値及び最後値と、サブマッチャーテーブル４４での中間値と最後値とを比較して、結果が同じであるか否かを確認する（Ｓ７１７）。
【０１５１】
反面、該当サブデータのハッシュ値がキー値として存在しないと（Ｓ７１５−Ｎ）、サブデータの現在ポジションで１バイトを足してステップＳ７０９に戻る（Ｓ７３１）。
【０１５２】
次に、サブパターンマッチングが成功すると（Ｓ７１７−Ｙ）、サブマッチャーテーブル４４を利用して実際パターンデータ全体に対するマッチング動作を行う（Ｓ７１９）。反面、ステップＳ７１７にてマッチングが成功しないと、サブデータの現在ポジションで１バイトを足してステップＳ７０９に戻る（Ｓ７３１）。
【０１５３】
次に、ステップＳ７１９にてサブマッチャーテーブル４４を参考にした実際パターン情報に対する精密パターンマッチングを実施して、パターン全体が一致すると、サブパターンマトリクス４５に該当情報を記録する（Ｓ７２１）。
【０１５４】
次に、複雑なパターンを構成するサブパターンがすべて見付けられたか否かを確認する（Ｓ７２３）。ステップＳ７２３にて複雑なパターンを構成するサブパターンがすべて見付けられると、全体パターンが一致すると見なし、報告該当データにパターンがあると決定する（Ｓ７２５、Ｓ７２７）。
【０１５５】
反面、ステップＳ７２３にて、複雑なパターンを構成するサブパターンがすべて見付けられないと、一部サブパターンが見付けられたとし、サブデータの現在ポジションで１バイトを足してステップＳ７０９に戻る（Ｓ７２９、Ｓ７３１）。
【０１５６】
図１４は、本発明の文法的形式が決まらないパターンデータに対するパターンマッチング方法を説明するためのフローチャートである。
【０１５７】
本パターンマッチングシステムにサブデータが入力される（Ｓ８０１）。ハッシュ値生成部３０は、ハッシュ関数を適用してサブデータに対するハッシュ値を生成する（Ｓ８０３）。
【０１５８】
ハッシュ値マッチング部６０は、ハッシュマッチャーテーブル４３を利用してハッシュマッチング動作を行う。すなわち、サブデータに対するハッシュ値がハッシュマッチャーテーブル４３に存在しているか否かを確認するためのマッチングを行う（Ｓ８０５）。
【０１５９】
ハッシュ値マッチング部６０のハッシュマッチング動作の遂行結果、現在マッチング対象であるサブデータがハッシュマッチャーテーブル４３と一致すると判断されると（Ｓ８０７−Ｙ）、サブパターンマッチング部２０にてサブパターンマッチング動作を行う（Ｓ８０９）。ステップＳ８０９は、ライトパターンマッチングと精密パターンマッチングとを含むことができる。
【０１６０】
サブパターンマッチング部２０のサブパターンマッチングの遂行結果、現在マッチング対象であるサブデータがサブマッチャーテーブル４４と一致すると判断されると（Ｓ８１１−Ｙ）、サブデータとマッチングされたパターンデータが複雑なパターンに該当するか否かを判断する（Ｓ８１３）。
【０１６１】
ステップＳ８１３にて、サブデータが複雑なパターンに該当するパターンデータに該当すると判断されると（Ｓ８１３−Ｙ）、サブパターンマトリクス４５にパターンマッチング結果を格納する（Ｓ８１５）。
【０１６２】
以後、フルパターンマッチング部５０にてサブパターンマトリクス４５を参照してパターンデータを構成するすべてのサブパターンが存在しているか否かを確認し（Ｓ８１７）、すべてのサブパターンが存在すると判断されると（すなわち、サブデータとパターンデータとが一致すると判断されると）（Ｓ８１９−Ｙ）、決定部１０は、ターゲットデータにパターンが存在すると判断する（Ｓ８２１）。
【０１６３】
ステップＳ８１９にて、サブパターンマトリクス４５にパターンデータを構成するすべてのサブデータが存在しない場合（Ｓ８１９−Ｎ）、決定部１０は、現在マッチング対象であるサブデータが最後のサブデータである場合（Ｓ８２３−Ｙ）には、ターゲットデータにパターンが存在しないと判断する（Ｓ８２５）。
【０１６４】
また、ステップＳ８１１にて、サブデータがサブマッチャーテーブル４４と一致しないと判断されると（Ｓ８１１−Ｎ）、現在マッチング対象であるサブデータが最後のサブデータであるか否かを判断して、最後のサブデータである場合には、ターゲットデータにパターンが存在しないと判断する（Ｓ８２５）。
【０１６５】
上述したように、図１４に示すパターンマッチング方法は、本パターンマッチングシステムに入力されるターゲットデータのパターン種類が規定されないケースに該当することで、１次的に文法的に決まった簡単なパターンに該当することであるか否かを判断して、これに該当する場合、もうこれ以上ステップを進めず、これに該当しない場合、２次的に文法的に決まった複雑なパターンに該当することであるか否かを判断する。したがって、ターゲットデータのパターン種類が規定されていなくても、パターンマッチングを正確に行うことができる。
【０１６６】
以上、本発明は、限定された実施の形態と図面により説明されたが、本発明は、上記の実施の形態に限定されるものではなく、本発明が属する分野における通常の知識を有した者であればこのような記載から多様な修正及び変形が可能である。したがって、本発明の範囲は、説明された実施の形態に限って決まってはならず、後述する特許請求の範囲だけでなく、この特許請求の範囲と均等なものによって決まらねばならない。
【符号の説明】
【０１６７】
１０      決定部
２０      サブパターンマッチング部
２２      ライトパターンマッチング部
２４      精密パターンマッチング部
３０      ハッシュ値生成部
４０      格納部
５０      フルパターンマッチング部
６０      ハッシュ値マッチング部
７０      テーブル生成部
【図１】
2011248897.tif 000004
【図２】
2011248897.tif 000005
【図３】
2011248897.tif 000006
【図４】
2011248897.tif 000007
【図５】
2011248897.tif 000008
【図６】
2011248897.tif 000009
【図７】
2011248897.tif 000010
【図８】
2011248897.tif 000011
【図９】
2011248897.tif 000012
【図１０】
2011248897.tif 000013
【図１１】
2011248897.tif 000014
【図１２】
2011248897.tif 000015
【図１３】
2011248897.tif 000016
【図１４】
2011248897.tif 000017