JP5378452B2 - パターンマッチング方法及びシステム - Google Patents

パターンマッチング方法及びシステム Download PDF

Info

Publication number
JP5378452B2
JP5378452B2 JP2011119458A JP2011119458A JP5378452B2 JP 5378452 B2 JP5378452 B2 JP 5378452B2 JP 2011119458 A JP2011119458 A JP 2011119458A JP 2011119458 A JP2011119458 A JP 2011119458A JP 5378452 B2 JP5378452 B2 JP 5378452B2
Authority
JP
Japan
Prior art keywords
pattern
sub
data
pattern matching
matching
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2011119458A
Other languages
English (en)
Other versions
JP2011248897A (ja
Inventor
インソン ユ
Original Assignee
サムソン エスディーエス カンパニー リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from KR1020110049249A external-priority patent/KR101309337B1/ko
Application filed by サムソン エスディーエス カンパニー リミテッド filed Critical サムソン エスディーエス カンパニー リミテッド
Publication of JP2011248897A publication Critical patent/JP2011248897A/ja
Application granted granted Critical
Publication of JP5378452B2 publication Critical patent/JP5378452B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1416Event detection, e.g. attack signature detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/564Static detection by virus signature recognition
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Image Analysis (AREA)

Description

本発明は、パターンマッチング方法及びシステムに関し、さらに詳細には、文法的に複雑であるか、又は単純な多様なマルウェアパターンと、ターゲットデータを速かにパターンマッチングさせることができる、パターンマッチング方法及びシステムに関する。
インターネットが広範囲に使用されるに伴い、ワームやトロイの木馬、ウイルス、DDoSなどのような多様な形態の侵害が現れ、その波及効果も大きくなっている。そのため、ネットワーク上の情報を保護するためのネットワーク侵害対応方法及びその他関連装置が必要となるようになった。このための最も基本的な技術が高速のパターンマッチング技術である。
一般に、パターンマッチングは、長いテキストファイルにおいて我々が望む文字を探索することから始めって、ネットワーク侵入探知やウイルス探知などのようなセキュリティーシステム、スパムメール除去システム、データベースシステムなど多様な分野において多様な用途として活用される。特に、パケットのペイロード部分において特定の文字列を検索するパターンマッチング方法は、規則を利用して非正常な行為を探知する侵入探知又は遮断システムの重要な要素技術である。
管理者は、悪意的な攻撃から内部ネットワークを保護するために侵入探知又は遮断システムを使用するが、攻撃が多様化しその数が増加するにつれて、攻撃を探知するためのパターンマッチングの規則数も増加した。このように、規則の数が増加するに伴い、侵入探知や遮断領域におけるパターンマッチング費用が占める比率が大きくなっている。
一般に、ラップトップ(Laptop)、スマートフォン(smartphone)、ネットブック(netbook)、コネクテッドデバイス(connected device)などのようなネットワークが接続したモバイル機器にアンチウイルスSOC(Anti−Virus System−on−Chip)が搭載されて悪性コードに対するスキャニング、検索、マッチングによりウイルスに感染されたファイルを探索することができる。
アンチウイルス(anti−virus)プログラムは、ファイルをスキャニングしつつ読み込んだデータファイルからウイルスパターンがあるか否かを探索する。モバイルデバイス上においてこういうスキャニング作業を行うようになると、CPU(Central Processing Unit)とメモリ(Memory)リソースを多く使用するようになり、ウイルスを検査する間は、リソース問題のためユーザーの望むプログラムを使用するのが容易でないという問題点がある。
本発明の実施の形態によれば、文法的に複雑であるか、又は単純な多様なマルウェアパターンに対して、速かにパターンマッチング動作を行うことができるパターンマッチング方法及びシステムを提供することを目的とする。
本発明の実施の形態によれば、パターンマッチングの対象になるターゲットデータが大きくなっても、ハッシュマッチングとサブマッチングが成功した場合にのみフルマッチングを行うので、依然として速かにパターンマッチング動作を行うことができるパターンマッチング方法及びシステムを提供することを一つの目的とする。
上記の目的を達成すべく、本発明の一実施の形態によれば、ハッシュ値を用いて、ターゲットデータを構成する複数のサブデータのうち、少なくとも一つと、予め格納されたパターンデータとをマッチングさせるサブパターンマッチングステップと、前記サブパターンマッチング結果を参照して、前記ターゲットデータと前記予め格納されたパターンデータとが一致するか否かを判断するフルパターンマッチングステップとを含み、前記フルパターンマッチングステップは、前記パターンデータが複数のサブパターンに分離可能なマルチパターンデータであるかどうかによって行われるか、又は行われないかが決定され、
前記サブパターンマッチングステップは、前記一つのサブデータの一部と前記予め格納されたパターンデータとをマッチングさせるライトパターンマッチングステップと、前記一つのサブデータの一部が前記予め格納されたバターンと一致するか、又は前記予め格納されたパターンに含まれた場合、前記一つのサブデータの全体と前記ライトパターンマッチングされたパターンデータ全体をマッチングさせる精密パターンマッチングステップとを含むことを特徴とするパターンマッチング方法が提供される。
また、本発明の他の実施の形態によれば、パターンデータに対するハッシュ値を含むハッシュマッチャーテーブルを格納する格納部と、前記ハッシュマッチャーテーブルと、ターゲットデータを構成する複数のサブデータのうち、少なくとも一つのサブデータのハッシュ値をマッチングするハッシュ値マッチング部と、前記サブデータのハッシュ値とマッチングされたパターンデータと、前記一つのサブデータとをマッチングするサブパターンマッチング部と、前記サブパターンマッチング部のマッチング結果を参照して、前記ターゲットデータと前記パターンデータとをマッチングさせ得るフルパターンマッチング部と、
前記パターンデータが複数のサブパターンに分離可能なマルチパターンデータであるかどうかによって、前記フルパターンマッチング部の動作有無を決定する決定部と、を備え、前記サブパターンマッチング部は、前記パターンデータと前記一つのサブデータの一部とをマッチングさせ得るライトパターンマッチング部と、前記一つのサブデータの一部が前記パターンデータと一致するか、又は前記パターンデータに含まれる場合、前記一つのサブデータ全体と前記パターンデータ全体とをマッチングする精密パターンマッチング部とを備えることを特徴とするパターンマッチングシステムが提供される。
本発明の一実施の形態によれば、文法的に複雑であるか、又は単純な多様なマルウェアパターンに対して、速かにパターンマッチング動作を行うことができる。
本発明の一実施の形態によれば、パターンマッチングの対象になるターゲットデータが大きくなっても、ハッシュマッチングとサブマッチングが成功した場合にのみフルマッチングを行うので、依然として速かにパターンマッチング動作を行うことができる。
本発明の一実施の形態によれば、SOCの形態でもパターンマッチングシステムの具現が可能なので、速度やバッテリーに制限のあるモバイルデバイスのリソース問題を解決することができる。
本発明の一実施の形態にかかるパターンマッチングシステムのブロック図である。 図1に示す格納部の構成を示した図である。 本発明の一実施の形態にかかるテーブル構成を説明するための図である。 本発明の一実施の形態にかかるパターンマッチングシステムをSoC形態で具現した例を示したブロック図である。 図4に示す検索エンジンのハードウェア構成を示したブロック図である。 図5に示すパターンマッチングシステムにおいて文法的に決まった簡単なパターンデータを処理する動作を説明するための図である。 本発明の一実施の形態にかかる文法的に決まった複雑なパターンデータを説明するための図である。 図5に示すパターンマッチングシステムにおいて文法的に決まった複雑なパターンデータを処理する動作を説明するための図である。 本発明の文法的に決まった簡単なパターンデータを利用したパターンマッチング方法の第1の実施の形態を説明するためのフローチャートである。 本発明の文法的に決まった簡単なパターンデータを利用したパターンマッチング方法の第2の実施の形態を説明するためのフローチャートである。 文法的に決まった複雑なパターンデータの処理過程に用いられるサブパターンマトリクスを構成する方法を説明するためのフローチャートである。 本発明の文法的に決まった複雑なパターンデータに対するパターンマッチング方法の第1の実施の形態を説明するためのフローチャートである。 本発明の文法的に決まった複雑なパターンデータに対するパターンマッチング方法の第2の実施の形態を説明するためのフローチャートである。 本発明の文法的形式が決まらないパターンデータに対するパターンマッチング方法を説明するためのフローチャートである。
以上の本発明の目的、他の目的、特徴及び利点は、添付された図面と関連した以下の好ましい実施の形態により容易に理解されるはずである。しかしながら、本発明は、ここで説明される実施の形態に限定されずに他の形態で具体化されることもできる。むしろ、ここで紹介される実施の形態は、開示された内容が徹底かつ完全になるように、そして当業者に本発明の思想を十分に伝達させるために提供されることである。本明細書において、ある構成要素が他の構成要素上にあると言及される場合に、それは、他の構成要素上に直接形成されうるか、又はそれらの間に第3の構成要素が介在されうることを意味する。
本明細書で使用された用語は、実施の形態を説明するためのもので、本発明を制限しようとするものではない。本明細書において、単数型は、特に言及しない限り、複数型も含む。明細書で使用される「含む(comprises)」及び/又は「含む(comprising)」と言及された構成要素は、一つ以上の他の構成要素の存在又は追加を排除しない。
以下、図面を参照して本発明を詳細に説明する。以下の特定実施の形態を述べるにおいて、色々な特定な内容は、発明をさらに具体的に説明し理解を助けるために作成された。しかしながら、本発明を理解することができる程度のこの分野における知識を有した読者は、このような色々な特定な内容がなくても使用されうることを認知できる。ある場合には、発明を述べるにおいて周知で発明と大きく関連のない部分は、本発明を説明するにおいて特別な理由なしで混乱を引き起こすことを防止するために述べないことを予め言及しておく。
図1は、本発明の一実施の形態にかかるパターンマッチングシステムのブロック図で、図2は、図1に示す格納部の構成を示した図である。
図1に示すように、本発明の一実施の形態にかかるパターンマッチングシステムは、決定部10、サブパターン(sub pattern)マッチング部20、ハッシュ値生成部30、格納部40、フルパターン(full pattern)マッチング部50、ハッシュ値マッチング部60、及びテーブル生成部70を備えることができる。
決定部10は、サブパターンマッチングされたターゲットデータがどんな種類のパターンとマッチングされたかを決定でき、決定結果にしたがって、フルパターンマッチング動作が行われるか、又は行われない。本発明の一実施の形態によれば、サブデータが、文法的に複雑なパターンデータの一部とマッチングされた場合には、フルパターンマッチング動作が行われうる。一方、サブデータが、複雑でないパターンデータとマッチングされた場合には、サブパターンマッチング動作まで行われ、フルパターンマッチング動作は行われない。
本発明の一実施の形態にかかる決定部10は、ターゲットデータがどんな種類のパターンデータにマッチングされたかを決定するために、マルウェアパターンデータがどんな種類に該当するかを表す情報(以下、パターンデータ種類情報とする)を参照できる。本発明の一実施の形態によれば、パターンデータ種類情報は、ハッシュマッチャーテーブル43、サブマッチャーテーブル44、及び/又はサブパターンマトリクス45に含まれていることができるが、別途のテーブルとして格納されることもできる。別途のテーブルとして設けられた場合、格納部40に格納されるか、又は別途に設けられた他の格納部(図示せず)に格納されていることができる。
サブパターンマッチング部20は、ターゲットデータを構成する複数のサブデータを順次に予め格納されたパターンデータベース(Data Base:DB)41のパターンデータとマッチングさせる。本発明の一実施の形態によれば、サブパターンマッチング部20は、ハッシュマッチテーブル43とサブマッチャーテーブル44とを利用してサブパターンマッチング動作を行うことができる。一方、サブパターンマッチング部20の機能は、ハードウェア及び/又はソフトウェアにより具現されることができる。
サブパターンマッチング部20は、2段階のマッチング動作(すなわち、ライトパターンマッチング動作と精密パターンマッチング動作)を含むことができる。ここで、サブパターンマッチング部20は、サブデータのハッシュ値がサーバマッチャーテーブルにあるハッシュ値と同一であると(すわなち、ハッシュ値マッチング部60によるハッシュ値マッチングが成功的になされた場合)行われる。
本発明の一実施の形態によれば、サブパターンマッチング部20は、ライト(Light)パターンマッチング部22、及び精密パターンマッチング部24を備えることができる。
ライトパターンマッチング部22は、サブパターンマッチング部20の第1番目のあるライトパターンマッチング過程を行うものであって、サブデータの一部とパターンデータとをマッチングさせる過程を行う。このために、ライトパターンマッチング部22は、サブマッチャーテーブル44を使用することができる。図3のサブマッチャーテーブル44を参照すれば、サブマッチャーテーブル44は、中間値(middle value)と最後値(tail value)を含み、これらの値を利用してサブデータとパターンデータとをマッチングさせることができる。すなわち、ライトパターンマッチング動作は、サブデータとパターンデータとをマッチングさせるにおいて、まず中間値と最後値とが互いに一致しているか否かを確認する。本願発明の一実施の形態によれば、少なくともこれらの中間値と最後値とが一致してこそ、残りの値も一致する可能性があることから、マッチング速度を上げるために、ライトパターンマッチング動作を行うことである。仮に、中間値と最後値とが一致すると、初めてサブデータとパターンデータとをすべて比較する精密パターンマッチング動作を行う。一方、ハッシュ衝突がある場合には、互いに異なるパターンデータであってもハッシュ値は、互いに同一でありうる。図3に示すように、パターンabcdefgとパターンabcxyzのハッシュ値が両方とも「X」であることが分かる。このように、ハッシュが衝突される場合に備えて、サブパターンマッチャーテーブルに「衝突パターンのOffset」という項目をさらに含めることができる。図3のサブパターンマッチャーテーブルを参照すると、インデックス「X」と「Z」は、「衝突パターンのOffset」項目として互いにリンクされていることが分かる。
例えば、あるサブデータに対するハッシュ値を「X」としよう。この場合、ライトパターンマッチング部22は、まずIndexが「X」である項目に対してまずライトパターンマッチング動作を行う。すなわち、サブデータの中間値及び最後値と、「X」中間値(「d」)及び最後値(「9」)をそれぞれマッチングさせる。
そのマッチングが成功的でない場合、ライトパターンマッチング部22は、Index「X」の「衝突パターンのOffset」項目に記載されたZ項目に対して、ライトパターンマッチング動作を行う。すなわち、サブデータの中間値及び最後値と、「Z」の中間値(「c」)及び最後値(「z」)をそれぞれマッチングさせる。マッチングが成功的な場合に、精密パターンマッチング動作が行われる。精密パターンマッチング動作の遂行結果、マッチングされることがないと、インデックス「Z」の「衝突パターンのOffset」項目に記載された値があるか否かを再び検討するようになる。仮に、記載された値があると、上述のように、サブパターンマッチング動作が再度行われる。
精密パターンマッチング部24は、サブパターンマッチング部20の第2番目のステップである精密マッチング過程を行い、サブデータ全部とパターンデータとをマッチングさせる過程を行う。
本発明の一実施の形態によれば、精密パターンマッチング部24は、ライトパターンマッチングが成功したサブデータに対してのみ、精密パターンマッチング動作を行うことができる。
本発明の一実施の形態にかかる精密パターンマッチング部24は、サブマッチャーテーブルとパターンDBとを参照して、精密パターン動作を行うことができる。図3に示すように、精密パターンマッチング部24は、サブマッチャーテーブルに含まれたReal Pattern Addressが指定するアドレスに格納されたパターンデータと、サブデータとを比較して、精密パターンマッチング動作を行うことができる。サブマッチャーテーブルに含まれたReal Pattern Addressが指定するアドレスは、パターンDBが格納されたメモリのアドレスであるか、又はパターンハッシュ値テーブルが格納されたメモリのアドレスでありうる。又は、パターンデータが格納された他の別途のメモリのアドレスでありうる。
ハッシュ値生成部30は、ターゲットデータを構成するサブデータに対するハッシュ値を生成する。ハッシュ値生成部30は、ハッシュ関数を適用してサブデータに対するハッシュ値を生成し、できる限り、ハッシュ衝突(Hash collision)が少なく発生するハッシュ関数とハッシュ係数とを使用することができる。
本発明の一実施の形態によれば、ハッシュ値生成部30は、サブデータの全て又は一部を入力値としてハッシュ値を生成でき、生成したハッシュ値は、ハッシュ値マッチング部60において使用される。サブデータの一部を入力値としてハッシュ値を生成する場合には、一つのサブデータに対して複数のハッシュ値が生成されることができる。例えば、サブデータが総8バイトからなるとすれば、ハッシュ値生成部30は、第1番目のバイト、第2番目のバイト、第3番目のバイトを入力値としてハッシュ値を生成できる。続けて、ハッシュ値生成部30は、第2番目のバイト、第3番目のバイト、及び第4番目のバイトを入力値としてハッシュ値を生成できる。続けて、第3番目のバイト、第4番目のバイト及び第5番目のバイトを入力値としてハッシュ値を生成できる。このような過程は、残りのバイトに対しても行われることができる。
ハッシュ値生成部30は、ハードウェア及び/又はソフトウェアで具現されることができ、例えばハッシュ関数がレジスタのような格納場所に格納されている途中にメモリ(図示せず)にロードされてハッシュ値を生成する方式でも具現可能である。ハッシュ関数を利用してハッシュ値を生成することは、公知の技術に該当するので、これについての具体的な説明は省略する。
格納部40は、本パターンマッチングシステムに必要なすべてのデータを格納することができる。図2を参照して格納部40の構成を説明する。格納部40は、パターンDB41を具備でき、既に決まった格納領域には、各々パターンハッシュ値テーブル42、ハッシュマッチャーテーブル43、サブマッチャーテーブル44、サブパターンマトリクス45が格納されることができる。
本実施の形態において格納部40は、ハードディスク、揮発性メモリ、及び/又は不揮発性メモリ、ROMなどのような格納媒体のうちの何れか一つでありうる。本実施の形態において、パターンハッシュ値テーブル42、ハッシュマッチャーテーブル43、サブマッチャーテーブル44、サブパターンマトリクス45が一つの格納部40に格納されると説明したが、これは、例示に過ぎず、これらのが互いに異なる格納媒体に格納されることも当然に可能である。例えば、上のテーブルは、揮発性メモリに格納され、パターンDB41は、ハードディスクのような格納媒体に格納されることができる。パターンDB41は、サブパターンマッチング部20及びフルパターンマッチング部50がマッチング動作の遂行に使用するパターンデータに対するデータベースである。本実施の形態において、パターンDB41は、文法的に決まった簡単なパターンのパターンデータを集めたものでありえ、あるいは文法的に複雑なパターンのパターンデータを集めたものでありえ、あるいは、文法的に簡単なパターンのパターンデータと文法的に複雑なパターンのパターンデータとが混在しているものでありうる。一方、本パターンDB41は、パターンデータの種類を表す情報をさらに含むことができる。パターンハッシュ値テーブル42は、パターンDB41に格納されているパターンデータのハッシュ値を含む。パターンハッシュ値テーブル42において、一つのパターンデータに対して少なくとも一つ以上のハッシュ値が対応していることができる。例えば、16バイトのパターンデータがあるとすれば、ハッシュ値生成部は、パターンデータにおいて順次に第1番目のバイト、第2番目のバイト、及び第3番目のバイトを入力値としてハッシュ値を生成し、次に第2番目のバイト、第3番目のバイト、及び第4番目のバイトを入力値としてハッシュ値を生成し、残りのバイトに対しても同じ方式で一つのバイトずつ移動しながらハッシュ値を生成できる。このように生成されたハッシュ値は、パターンデータに対応されてパターンハッシュ値テーブル42に含まれる。パターンデータに対するハッシュ値を生成するハッシュ値生成部は、図1のハッシュ値生成部30又は別途に設けられたハッシュ値生成部(図示せず)でありうる。
ハッシュマッチャーテーブル43は、パターンデータに対するハッシュ値の存在有無を表すためのテーブルである。本発明の一実施の形態によれば、ハッシュマッチャーテーブル43は、次の形態で構成されることができる。
第一に、ハッシュマッチャーテーブル43は、下記の表1のようにハッシュ値が記載されるハッシュ値項目と、パターンDB41のパターンデータが記載される項目とを含む形態でありうる。
第2に、ハッシュマッチャーテーブル43は、ハッシュ値が記載されるハッシュ値項目と、パターンDB41のパターンデータのハッシュ値とハッシュ値項目に記載されたハッシュ値とが一致しているか否かを表す項目を含む形態(図2と図3のハッシュマッチャーテーブル)でありうる。
図2と図3には、第2番目の形態のハッシュマッチャーテーブル43が示されている。キー値項目には、特定ハッシュ関数により生成可能なハッシュ値が記載される。一致有無項目では、キー値のうち、パターンデータのハッシュ値と一致する値を有したキーに対してのみ「1」と表示した。前記特定ハッシュ関数は、ハッシュ値生成部30において使用されるハッシュ関数と同一である。
サブマッチャーテーブル44は、サブパターンマッチング部20に含まれているライトパターンマッチング部22においてマッチング動作を行う際に使用されるテーブルに該当する。
本発明の一実施の形態によれば、サブマッチャーテーブル44は、ハッシュ値が記載されるハッシュ値項目、ハッシュ値項目に記載されたハッシュ値に対応するパターンデータが記載されるパターンデータ項目を含むことができる。このとき、パターンデータ項目には、パターンデータが格納されたアドレス(address)、あるいは、パターンデータ自体が記載されることができる。また、サブマッチャーテーブル44は、パターンデータの中間値を記載する中間値項目と、最後値を記載する最後値項目をさらに含むことができる。
図2に示すように、サブマッチャーテーブル44は、パターンデータ項目は、重複パターンのオフセット項目、中間値オフセット項目、中間値項目、最後値オフセット項目、最後値項目、及び実際パターン情報項目を含むことができる。ここで、実際パターン情報項目には、実際パターンデータ自体、あるいは、パターンデータが格納されたアドレスが記載されることができる。
サブパターンマトリクス45は、ターゲットデータを構成する各々のサブデータに対するサブパターンマッチング結果を含む。
本発明の一実施の形態によれば、サブパターンマトリクス45は、ターゲットデータを構成するサブデータに対する各々のマッチング結果を含むことができる。例えば、ターゲットデータが5個のサブデータから構成されていると仮定すれば、サブパターンマトリクス45は、5個の各々に対するパターンマッチング結果を含むことができる。サブパターンマトリクス45は、フルパターンマッチング動作に使用されるものであって、パターンデータとフルパターンマッチング動作のために必要なサブデータのパターンマッチング結果をすべて含むことができる。
本発明の一実施の形態にかかるサブパターンマトリクス45は、サブデータに対する精密パターンマッチングの遂行結果、複雑なパターンの一部と決定された場合に、そのサブデータに対するマッチング結果を含む。
フルパターンマッチング部50は、サブパターンマトリクス45を利用してサブパターンマトリクス45に含まれたサブデータとパターンデータとをフルマッチングする動作を行う。本発明の一実施の形態にかかるフルパターンマッチング部50は、サブパターンマッチング部20によるマッチングが成功するごとに、フルパターンマッチング動作を行うことができる。又は、フルパターンマッチング部50は、サブパターンマッチング部20の成功有無と無関係にサブパターンマッチング部20によるマッチング結果が出るごとに、フルパターンマッチング動作を行うことができる。
本発明の一実施の形態にかかるフルパターンマッチング部50は、ターゲットデータを構成するサブデータの各々のサブパターンマッチング結果と、パターンデータ全体とのパターンマッチング動作を行うことができる。このようなフルパターンマッチング部50は、ハードウェア及び/又はソフトウェアにより具現されることができる。
ハッシュ値マッチング部60は、ハッシュ値生成部30により生成されたハッシュ値とハッシュマッチャーテーブル43との間のマッチング動作を行う。ハッシュ値マッチング部60のマッチング動作の遂行結果は、サブパターンマッチング部20のサブパターンマッチング動作時に利用される。
例えば、サブデータに対するハッシュ値が「X」という値が出たと仮定し、図3を参照してハッシュ値マッチング部60の動作を説明する。図3に示すように、ハッシュ値マッチング部60は、ハードウェア的及び/又はソフトウェア的にハッシュマッチャーテーブル43を利用してハッシュ値「X」を有するパターンがあることが分かり、「一致」又は「成功」という結果を出力することができる。
テーブル生成部70は、本パターンマッチングシステムのパターンマッチング動作に必要なテーブル、例えば、パターンハッシュ値テーブル、ハッシュマッチャーテーブル43、サブマッチャーテーブル44、及び/又はサブパターンマトリクス45を生成することができる。テーブル生成部70により生成されたテーブルは、格納部40の該当格納領域に格納されることができる。テーブル生成部70により生成されるテーブルは、図2を参照して説明したとおりである。
本実施の形態において、上のテーブル43、44、45が一つのテーブル生成部70から生成されると説明したが、これは、例示的なもので、別途に設けられるテーブル生成部によって生成されることも可能である。
テーブル生成部70は、パターンDB41内のパターンデータに対するすべての場合のハッシュ値を記載するパターンハッシュ値テーブルを生成できる。本発明の一実施の形態によれば、テーブル生成部70は、ハッシュ値生成部30又は別途に設けられるハッシュ値生成部(図示せず)を利用して、パターンデータに対するハッシュ値を生成し、該生成したハッシュ値をパターンハッシュ値テーブルの形態(図3において、ハッシュ値(HASH Value)項目とパターン(Pattern)項目からなるテーブル)で構成できる。
本発明の一実施の形態によれば、パターンハッシュ値テーブルは、テーブル生成部70にてハッシュマッチャーテーブル43を生成する際に使用されることができる。本発明の一実施の形態にかかるテーブル生成部70は、ハッシュマッチャーテーブルを構成できる。例えば、テーブル生成部70は、ハッシュ値生成部30又は別途に設けられるハッシュ値生成部(図示せず)を利用してパターンデータに対するハッシュ値を生成し、該生成したハッシュ値をハッシュマッチャーテーブルの形態を有するように構成できる。又は、前記パターンハッシュ値テーブルを参照して、ハッシュマッチャーテーブルを構成できる。一方、本発明の一実施の形態にかかるテーブル生成部70は、前記ハッシュマッチャーテーブル、パターンハッシュ値テーブル、及びパターンDBを参照してサブマッチャーテーブルを構成できる。
パターンDB41が変更されると、テーブル生成部70は、上のテーブルを新しく作成することができる。このとき、変更された部分のみを新しく作成するか、又は全て新しく作成することができる。
以上のように、図1を参照して説明したパターンマッチングシステムは、複雑なパターンと簡単なパターンとを区分してパターンマッチング動作を行うと説明した。すなわち、本実施の形態によれば、ターゲットデータに対するサブパターンマッチングの結果、マッチングされ、そのサブデータが単純なパターンに該当する場合には、フルパターンマッチング動作を行わずにターゲットデータに対するマッチング動作を終了する。一方、ターゲットデータに対するサブパターンマッチングの結果、マッチングされ、そのサブデータが複雑なパターンの一部に該当する場合には、フルパターンマッチング動作を行う。理解の便宜のために、5個のサブデータから構成されたターゲットデータがあるとしよう。仮に、第1番目のサブデータに対するサブパターンマッチングの結果が成功的で、かつそのサブデータが単純なパターンに該当すると、残りの4個のサブデータに対するパターンマッチング動作は行われず、フルパターンマッチング動作も行われない。一方、第1番目のサブデータに対するサブパターンマッチングの結果が成功的で、かつそのサブデータが複雑なパターンの一部に該当する場合、第1番目のサブデータに対するマッチング結果をサブパターンマトリクスに含め、第2番目のサブデータに対するサブパターンマッチング動作が行われる。続けて、残りのサブデータに対するサブパターンマッチング動作が行われて、その結果がサブパターンマトリクスに含まれる。このサブパターンマトリクスを利用してフルパターンマッチング動作が行われる。
図1に示す実施の形態は、多様な形態で変形が可能である。
第1番目の変形例として、パターンデータが文法的に簡単なパターンのみがあると仮定して構成する場合である。すなわち、フルパターンマッチング部50を含めずに、サブパターンマトリクスも生成しないように構成することであって、すべてのターゲットデータに対してサブパターンマッチング動作のみを行うように構成されることができる。このような場合、パターンDBには、文法的に簡単なパターンデータのみが格納されていることができる。
第2番目の変形例として、パターンデータが文法的に複雑なパターンのみがあると仮定して構成する場合である。この場合は、ターゲットデータに対してフルパターンマッチングされるまで、そのサブデータを構成するサブデータに対してフルパターンマッチング動作をすべて行う。すなわち、サブデータのサブパターンマッチング動作がなされるごとに、フルパターンマッチング動作が行われるか、又はサブパターンマッチング動作の結果が成功的であるごとにフルパターンマッチング動作が行われることができる。
以上説明した図1に示す決定部10、サブパターンマッチング部20、ハッシュ値生成部30、格納部40、フルパターンマッチング部50、ハッシュ値マッチング部60、及びテーブル生成部70を備えるパターンマッチングシステムは、SoC(System on Chip)に搭載されて具現されることができ、あるいは、PC及びスマートカードに搭載されることもできる。
図3は、本発明の一実施の形態にかかるテーブル構成を説明するための図である。
本発明の一実施の形態にかかるハッシュ値生成部30は、パターンDB41からパターンデータをロードして特定ハッシュ関数(Hash function)を利用してパターンデータ別ハッシュ値を生成し、パターンデータ別に生成されたハッシュ値は、パターンハッシュ値テーブル42に格納される。パターンハッシュ値テーブル42は、ハッシュ値生成部30ではない別途に設けられたハッシュ値生成部(図示せず)により生成されたハッシュ値から構成されることも可能である。ただし、別途に設けられたハッシュ値生部が使用するハッシュ関数とそのハッシュ係数は、前記ハッシュ値生成部30のものと同一でなければならない。
テーブル生成部70は、パターンハッシュ値テーブル42を利用してハッシュマッチャーテーブル43とサブマッチャーテーブル44とを生成できる。ハッシュマッチャーテーブル43は、ハッシュ値マッチング部60において同じハッシュ値を有するパターンデータが存在するか否かをまず判断するための用途として使用される。一方、サブマッチャーテーブル44は、ハッシュマッチングが成功した場合にのみ使用される。
ハッシュマッチャーテーブル43とサブマッチャーテーブル44とを利用したマッチング動作の遂行結果、これらのマッチングが全部成功されたサブデータとパターンデータの全体がマッチングされる動作が行われる。
以上、図3に示すテーブルは、例示的なものであって、本願発明がこれらのテーブルの構成に限定されるものでない。図3には、パターンデータ種類情報が含まれていないが、パターンデータ種類情報がさらに含まれるように構成することも可能である。例えば、サブマッチャーテーブルに、パターンデータ種類情報がさらに含まれるように構成することによって、決定部10は、そういうサブマッチャーテーブルを参照してフルパターンマッチング動作が行われるようにするか否かを決定できる。
図4は、本発明の一実施の形態にかかるパターンマッチングシステムをSoC形態で具現した例を示したブロック図である。
図4に示すように、本パターンマッチングシステムをSoC形態で具現すれば、コンフィギュアバス101、123、CPU(Central Processing Unit)103、DMA(Direct Memory Access)コントローラ105、ローカルバス107、SDRAM(Synchronous Dynamic Random Access Memory)コントローラ109、フラッシュコントローラ111、SRAM(Static Random Access Memory)コントローラ113、バッファ115、検索エンジン117、バスマトリクス119、及びブート(boot)121を備えることができる。
本パターンマッチングシステムにおいて、各ブロック間のデータ送信のためのバスは、データの迅速な送信のためのローカルバス107と、コンフィギュレーション(configuration)のためのコンフィギュア(configure)バス101、123とに区分できる。本実施の形態においてローカルバス107とコンフィギュアバス101、123とは、AHB(Advanced High Performance Bus)規格でありうるが、これは、例示的なものであって、本願発明は、必ずコンフィギュアバスである必要がなく、他の規格のバスも使用することができる。一方、本実施の形態においてコンフィギュアバス101と123とは、互いに接続していることができる。
CPU103は、本パターンマッチングシステムを全般的に制御し、要求される作業を中央演算処理する機能を果たす。CPU103は、リコンフィギュラブル(reconfigurable)CPUでありうるが、これは、例示的なものであって、リコンフィギュラブルCPUでなくても良い。
DMAコントローラ105は、DMAを制御する機能を果たし、バッファ115は、外部とのインタフェースを介してデータを一時格納する機能を果たす。
検索エンジン117は、ターゲットデータとパターンデータとを受け取ってパターンマッチング動作を行うハードウェアでありうる。例えば、検索エンジン117は、図2に例示されたテーブルを参照してターゲットデータに対するパターンマッチング動作を行うことができる。
バスマトリクス119は、AHB規格の制御信号とデータ信号とをAPB(Advanced Peripheral Bus)規格の制御信号とデータ信号に変換するか、又はAPB規格の制御信号とデータ信号をAHB規格の制御信号とデータ信号に変換して伝達する役割を果たす。
ブート121は、SoCにおいてパターンマッチングシステムが初期動作されるようにする役割を果たす。
本実施の形態において、メモリとしては、SDRAM125、フラッシュ(flash)メモリ127、及びSRAM129を含んでいることを示した。これにより、SDRAM125に対する入出力を制御するためのSDRAMコントローラ109、フラッシュメモリ127に対した入出力を制御するためのフラッシュコントローラ111、SRAM129に対する入出力を制御するためのSRAMコントローラ113を含んでなる。SDRAM125、フラッシュ(flash)メモリ127、及びSRAM129は、図1に示す格納部40に含まれることができる。
図1を参照して説明したパターンマッチングシステムとその変形例において決定部10、サブパターンマッチング部20、ハッシュ値生成部30、フルパターンマッチング部50、ハッシュ値マッチング部60、及びテーブル生成部70は、ソフトウェア及び/又はハードウェアで具現されることができ、検索エンジン117は、その中でハッシュ値マッチング動作、サブパターンマッチング動作をハードウェアで具現したのである。一方、ソフトウェアで具現される部分は、SDRAM125やSRAM129のような格納媒体に格納されている途中でマッチング動作を行う際に検索エンジン117を制御してマッチング動作を行うことができる。
図5は、図4に示す検索エンジンのハードウェア構成を示したブロック図である。
図5に示すように、検索エンジン117は、システムインタフェース部201、システムレジスタ203、メモリインタフェース部205、メモリ207、バッファ209、ハッシュマッチャー211、オフセットアドレスジェネレーター部213、ハッシュQバッファ215、ライトパターンマッチャー217、スキャンQバッファ219を備えることができる。
本発明の一実施の形態によれば、検索エンジン117は、ハッシュ値マッチング動作とサブパターンマッチング動作とを行い、フルパターンマッチング動作は、図6に例示的に示すように、ソフトウェア的に具現されることができる。
システムインタフェース部201は、本パターンマッチングシステムと外部間のインタフェースを支援し、メモリインタフェース部205は、本パターンマッチングシステム内に格納されたDB又はファイルの内容を読み込むために使用される。
メモリ207は、図1〜図3の実施の形態を参照して説明したパターンハッシュ値テーブルを格納することができ、必要な場合には、システムレジスタ203に移動されることができる。メモリ207に格納されるパターンハッシュ値テーブルは、ハッシュ値生成器(図示せず)により生成されたことでありうる。本発明の一実施の形態によれば、ハッシュ値生成器(図示せず)は、ソフトウェア的に具現されることができる。例えば、システムレジスタ203にハッシュ関数が格納されており、ハッシュ値生成器がレジスタに格納されたハッシュ関数を利用して、パターンデータに対するハッシュ値を生成することができる。バッファ209は、メモリインタフェース部205から順次に読み込んだターゲットデータを格納する。本発明の一実施の形態によれば、バッファ209は、ターゲットデータを構成する各々のサブデータを順次に受け取って格納することができる。一方、本実施の形態において、バッファ209は、デュアルバンク方式で構成されたが、これは、例示的なものであって、一つのバッファで具現することも可能である。ただし、デュアルバンク方式で具現する場合には、2個のバッファで交互にサブデータをハッシュマッチャー211側に提供することであるから、マッチング速度がより速くありうる。
ハッシュマッチャー211に入力されるデータは、サブデータとそのハッシュ値とが入力される。すなわち、バッファ209から出力されるサブデータは、ハッシュ値生成器(図示せず)に入力されて、そのハッシュ値が生成され、生成されたハッシュ値がサブデータと共にハッシュマッチャー211に入力される。
ハッシュマッチャー211は、サブデータのハッシュ値とハッシュマッチャーテーブル43のマッチング動作を行う。ここで、ハッシュマッチャーテーブル43は、システムレジスタ203に格納されているか、又は別途に設けられたメモリ(図示せず)に格納されていることができる。ここで、ハッシュマッチャーテーブルは、図1〜図3を参照して説明したハッシュマッチャーテーブルに該当することで、テーブル生成器(図示せず)によって生成されたものでありうる。
ハッシュマッチャー211は、ハッシュ値が互いにマッチングされる場合(すなわち、マッチングが成功する場合)にのみ、ハッシュマッチングが成功したサブデータをハッシュQバッファ215に格納する。
オフセットアドレスジェネレーター部(offset address generator)213は、ハッシュマッチャーのマッチング動作の遂行結果、ハッシュマッチングが成功した場合に、所定のメモリアドレス値を発生させる。具体的に、サブパターンマッチングテーブルにおいて、前記ハッシュマッチングが成功したハッシュ値が格納されたメモリアドレス値を発生させる。図3の例を挙げて説明し、ハッシュマッチング結果、サブデータのハッシュ値が「X」であると、オフセットアドレスジェネレーター部213は、サブマッチャーテーブルにおいてインデックス(INDEX)が「X」であるレコードを格納するメモリアドレスを生成する。
ハッシュQ(Queue)バッファ部215は、ハッシュマッチングが成功したサブデータと、オフセットアドレスジェネレーター部213から発生したアドレスを互いに対応させて格納する。
ライトパターンマッチャー217は、ハッシュQバッファ部215が格納するサブデータに対してライトパターンマッチング動作を順次に行うハードウェアである。本発明の一実施の形態によれば、ライトパターンマッチャー217は、図1に示すライトパターンマッチング部22の機能と対応できる。ライトパターンマッチャー217は、ハッシュQバッファ部215に格納されたサブデータと、そのサブデータに対応されたメモリアドレスに格納されたデータ(例えば、インデックスが「X」であるレコード)を読み込んで、両者をマッチングさせることができる。ここで、メモリから読み込んだデータは、サブパターンマッチャーテーブルに含まれたデータである。
本発明の一実施の形態によれば、ライトパターンマッチャー217は、メモリから読み込んだデータに衝突パターンオフセットが含まれている場合には、その衝突パターンオフセットが指定するデータを追加的に読み込んで、ライトパターンマッチング動作を再度行う。
ただし、本発明の一実施の形態によれば、ライトパターンマッチャー217は、例えばサブマッチャーテーブルにおいてインデックスが「X」であるパターンデータに対してライトパターンマッチングが失敗するか、又は精密パターンマッチングが失敗した場合に、衝突パターンのオフセットが指示する値(「Z」)が表すパターンデータ(すなわち、インデックス「Z」であるパターンデータ)を読むようになる。スキャンQ(Queue)バッファ部219は、ライトパターンマッチャー217のマッチング動作以後、ライトパターンマッチングが成功したサブデートを順次格納することができる。以後、ここに格納されたサブデータに対しては、精密パターンマッチング動作が行われる。
図5に示されていないが、ハッシュマッチャーによるハッシュマッチング動作とライトパターンマッチャーによるライトパターンマッチング動作に使用されるハッシュマッチャーテーブルとサブマッチャーテーブルは、システムレジスタ203や別途に設けられたメモリ(図示せず)に格納されていることができる。
一方、上述した図4と図5に示されたように、本願発明がSOC形態で具現された場合、アプリケーションにおいてソフトウェアレベルでパターンマッチングをする場合より、その速度が数倍以上速く、ひいては、速度やバッテリーに制限があるモバイルデバイスのリソース問題を解決することができる。
図6は、図5に示すパターンマッチングシステムの全般的な動作を説明するための図である。
ハッシュマッチャーテーブル43は、メモリ(図示せず)に格納されてハッシュマッチャー211にてマッチング動作を行うために使用される。本発明の一実施の形態においてハッシュマッチャーテーブル43は、インデックスとして使用するためのハッシュ値であるキー値とそのキー値を使用するパターンの一致有無情報を含むことができる。ハッシュ値生成器(図示せず)がパターンDB41においてパターンDBをロードしてハッシュ値を生成すると、そのハッシュ値に基づいてハッシュマッチャーテーブル44とパターンハッシュ値テーブルとが生成されることができる。パターンハッシュ値テーブルは、メモリ207に格納されていることができる。
サブマッチャーテーブル44は、メモリ(図示せず)に格納されてライトパターンマッチャー217と精密パターンマッチングのために使用される。バッファ209には、ターゲットデータのサブデータがロードされ、ロードされたサブデータとそのハッシュ値がハッシュマッチャー211に提供される。ハッシュマッチャー211は、バッファ209からサブデータ及びそのハッシュ値を、図示していないメモリからはハッシュマッチャーテーブル43を提供されてハッシュマッチングを行う。
以後、ライトパターンマッチャー217では、サブマッチャーテーブル44を利用してサブデータの一部に対するマッチング動作を行い、サブデータの一部が前記パターンデータと同一であるか、又はパターンデータに含まれた場合(すなわち、ライトパターンマッチングが成功した場合)、その成功したサブデータをスキャンQバッファ219側に出力する。
そして、スキャンQバッファ219に格納されたサブデータに対して精密パターンマッチング動作が行われ、このような動作は、例えば、前述した精密パターンマッチング部24により行われることができる。
本実施の形態における検索エンジン117は、ハードウェアロジックから構成されて単純でかつ速い作業を行うことができ、ビットテーブルであるハッシュマッチャー211は、大きさが小さく、ハッシュ関数を通じて出てきたハッシュ値をマッチング対象にするから、比較速度が速いという長所がある。また、ライトパターンマッチャー217は、ハッシュ値をインデックスとして接近するから、速いマッチング結果を出力することができる。
図7は、本発明の一実施の形態にかかる文法的に決まった複雑なパターンデータを説明するための図である。
図7には、文法的に決まった複雑なパターンデータ(以下、マルチパターンデータとする)の形態を例示した。このようなマルチパターンデータは、図4〜図6にて説明したパターンマッチングシステムによっては、正確なパターンマッチング結果を得ることができない。
したがって、一つのマルチパターンを複数のサブパターンに分離してパターンマッチング動作を行う必要がある。図7に示すように、一つのマルチパターンデータを予め決まった規則に従って複数のサブパターンに分離できる。
図8は、図5に示すパターンマッチングシステムにおいて文法的に決まった複雑なパターンデータを処理する動作を説明するための図である。
図8に示す動作は、図6にて説明した動作と似ている。ただし、図6では、文法的に決まった簡単なパターンデータを処理する動作を説明したものであり、図8は、文法的に決まった複雑なパターンデータ、すなわち、マルチパターンデータを処理する動作を説明したものである。図8のマルチパターンデータを処理する動作は、図6に一部動作が追加されたことに該当するので、ここでは、追加された動作についてのみ説明する。
パターンDB41に格納されているパターンデータを複数のサブパターンに分離する動作を行う。このような動作を「マルチパターン構成プロセス」とすることにする。マルチパターン構成プロセスは、図7にて示したとおりである。
図8に示すように、マルチパターンデータに対してハッシュマッチャーテーブル43、及びサブマッチャーテーブル44、パターンハッシュ値テーブルが構成されている。
ハッシュマッチャー211によるマッチング動作と、ライトパターンマッチャー217によるマッチング動作と、精密パターンマッチングは、前述した図5及び6の説明と同一なので、それに関する説明は省略する。図8の実施の形態によれば、精密パターンマッチングの結果は、サブパターンマトリクス45に含まれて格納され、ここでサブパターンマトリクス45は、メモリ(図示せず)に格納されていることができる。図1〜図3を参照して説明した通り、サブパターンマトリクス45を参照して、フルパターンマッチング動作がなされることができる。
図9は、本発明の文法的に決まった簡単なパターンデータを利用したパターンマッチング方法の第1の実施の形態を説明するためのフローチャートである。
ターゲットデータは、複数のサブデータに区分されることができる。サブデータが本パターンマッチングシステムに入力されると(S301)、ハッシュ値生成部30は、サブデータに対するハッシュ値を生成する(S303)。ハッシュ値マッチング部60は、予め格納されたハッシュマッチャーテーブル43とサブデータのハッシュ値とを順次マッチングするハッシュマッチング動作を行う(S305)。
ハッシュ値マッチング部60のハッシュマッチング動作の遂行結果、現在マッチング対象である一つのサブデータのハッシュ値がハッシュマッチャーテーブルと一致する場合(S307−Y)、ライトパターンマッチング部22が該当サブデータの一部に対するライトパターンマッチングを行う(S309)。ライトパターンマッチングの遂行時には、テーブル生成部70により予め生成されたサブマッチャーテーブル44が利用される。
ライトパターンマッチングの遂行結果、該当サブデータの一部とサブマッチャーテーブル44の値が一致する場合(S311−Y)、該当サブデータの全体に対してマッチングする精密パターンマッチング動作を行う(S313)。
精密パターンマッチング動作の遂行結果、現在マッチング対象であるサブデータ全体に対する値がサブマッチャーテーブル44の値と一致する場合(S315−Y)、決定部10は、パターンが存在すると判断する(S317)。
ステップS315にて、サブデータとパターンデータとが一致しない場合(S315−N)、現在マッチング対象であるサブデータが最後のサブデータである場合(S319−Y)、ターゲットデータにパターンが存在しないと最終決定する(S321)。
ステップS311にて、サブデータの一部がサブマッチャーテーブル44の値と一致しない場合(S311−N)、現在マッチング対象であるサブデータが最後のサブデータである場合(S319−Y)、ターゲットデータにパターンが存在しないと最終決定する(S321)。
ステップS319にて、現在マッチング対象であるサブデータが最後のサブデータでない場合(S319−N)、ステップS303にフィードバックして次のマッチング対象であるサブデータに対するハッチング動作を繰り返す。
図9において、ステップS307とステップS319からステップS303にフィードバックする過程を示したが、これは、例示的なものであって、他の具現も可能である。すなわち、ステップS301の動作は、一定の時刻間隔を隔てて入力され続けることができ、ステップS307やステップS319のフィードバック動作はないことも可能である。ステップS307にてハッシュ値が互いに一致しない場合(S307−N)には、現在ハッシュマッチング中のサブデータとそのハッシュ値を捨てる動作を行うことができる。また、ステップS319にて最後のサブデータでない場合(S319−N)、現在精密パターンマッチング又はライトパターンマッチングしたサブデータを捨てる動作を行うことができる。図9にて説明したパターンマッチング方法は、本パターンマッチングシステムに入力されるターゲットデータが文法的に決まった簡単なパターンのデータであることを前提としたもので、図1のパターンマッチングシステムにおいてサブパターンマッチング部20、ハッシュ値生成部30、格納部40、ハッシュ値マッチング部60、及びテーブル生成部70のみの構成でも動作可能である。
図10は、本発明の文法的に決まった簡単なパターンデータを利用したパターンマッチング方法の第2の実施の形態を説明するためのフローチャートである。
図10は、図9に示す文法的に決まった簡単なパターンデータを利用したパターンマッチング方法の第1の実施の形態の一部を変形した例に該当する。
パターンデータが入力されると(S401)、ハッシュ値生成部30は、パターンデータに対するハッシュ値を生成し、テーブル生成部70は、ハッシュ値生成部30により生成されたハッシュ値を利用してパターンハッシュ値テーブル42、ハッシュマッチャーテーブル43、及びサブマッチャーテーブル44を構成する(S403)。
以後、マッチング動作を行うために、本パターンマッチングシステムに複数のサブデータから構成されたターゲットデータが入力される(S405)。
ターゲットデータが入力されると、サブパターンマッチング部20は、サブデータのはじめからパターンマッチングを行う。サブデータの最初位置は、ポジションが0である地点を意味する(S407)。
サブデータのポジションを移動してパターンマッチングを行う過程において、現在マッチング対象であるサブデータのポジションがデータの終わりでない場合(S409−N)、サブデータの現在ポジションから予め決まった大きさ分だけを読み込んでハッシュ関数を適用してハッシュ値を生成する(S411)。
仮に、ステップS409にて、サブデータのポジションがデータの終わりである場合(S409−Y)、現在サブデータには、パターンが存在しないと決定する(S423)。
以後、ステップS411にて生成したハッシュ値がハッシュマッチャーテーブル43に存在しているか否かを確認する(S413)。ステップS413にて、ハッシュマッチャーテーブル43に予め生成したハッシュ値が存在すると確認されると(S413−Y)、サブマッチャーテーブル44から中間値、最後値を比較して、結果が同じであるか否かを確認する(S415)。
ステップS415での結果が同じであると、サブマッチャーテーブル44を利用してパターンデータ全体に対するパターンマッチングを行ってパターンデータ全体が一致すると(S417−Y)、ターゲットデータにパターンが存在すると決定する(S419)。ターゲットデータにパターンが存在すると決定される場合は、ターゲットデータにウイルスを含んだマルウェアが存在することを意味できる。
仮に、ステップS417にて、パターンデータ全体が一致しないと(S417−N)、ターゲットデータにパターンが存在しないと決定する(S423)。ターゲットデータにパターンが存在すると決定される場合は、ターゲットデータにウイルスを含んだマルウェアが存在しないのを意味できる。
また、ステップS413にてハッシュマッチャーテーブル43にマッチング対象に対するハッシュ値が存在しない場合(S413−N)、又はステップS415にてサブマッチャーテーブル44での中間値と最後値との比較結果が同じでない場合(S415−N)、サブデータの現在ポジションに1バイトを足してポジションを変更した後(S421)、ステップS409にフィードバックして繰り返す。
図11は、本発明の文法的に決まった複雑なパターンデータの処理過程を説明するためのフローチャートである。
図11は、文法的に決まった複雑なパターンデータの処理過程に使用されるサブパターンマトリクスを構成する方法を説明するためのものである。
パターンデータが入力されると(S501)、入力されたパターンデータをサブパターンに分離する(S503)。
分離された各サブパターンごとにステップS507〜S515を繰り返したか否かを確認して、パターン分だけ繰り返した場合には終了し、そうでない場合には次のステップに進む(S505)。
以後、分離されたサブパターンに対するインデックスとして使用するために、サブパターンに対するハッシュ値を生成し(S507)、各サブパターン別ハッシュ値をインデックスとしてハッシュマッチャーテーブル305に該当情報を記録し(S509)、各サブパターン別ハッシュ値をインデックスとしてサブマッチャーテーブル307にも該当情報を記録する(S511)。
また、全体パターンと文法処理のための追加情報をサブマッチャーテーブルに格納し(S513)、全体パターンに再組合できるようにサブパターンの情報をサブパターンマトリクス45に格納する(S515)。
図12は、本発明の文法的に決まった複雑なパターンデータに対するパターンマッチング方法の第1の実施の形態を説明するためのフローチャートである。
ターゲットデータを構成する各々のサブデータが本パターンマッチングシステムに入力される(S601)。以後、ハッシュ値生成部30は、サブデータに対するハッシュ値を生成する(S603)。
ハッシュ値マッチング部60は、ハッシュマッチャーテーブル43と前記サブデータのハッシュ値とをマッチングするハッシュマッチング動作を行う(S605)。
ハッシュ値マッチング部60のハッシュマッチング動作の遂行結果、現在マッチング対象である一つのサブデータのハッシュ値がハッシュマッチャーテーブルと一致する場合(S607−Y)、ライトパターンマッチング部22が該当サブデータの一部に対するライトパターンマッチングを行う(S609)。ライトパターンマッチングの遂行時には、テーブル生成部70により予め生成されたサブマッチャーテーブル44が利用される。
ライトパターンマッチングの遂行結果、該当サブデータの一部とサブマッチャーテーブル44に記載されたパターンデータとが一致する場合(S611−Y)、該当サブデータの全体に対してマッチングする精密パターンマッチング動作を行う(S613)。
精密パターンマッチング動作の遂行結果、現在マッチング対象であるサブデータ全体とサブマッチャーテーブル44の値とが一致する場合(S615−Y)、このパターンマッチング結果をサブパターンマトリクス45に格納する(S617)。
以後、サブパターンマトリクス45とパターンデータとを比較する動作を行う(フルパターンマッチング)(S619)。
フルパターンマッチング結果、パターンデータとターゲットデータとのマッチングが成功した場合(S621−Y)、決定部10は、ターゲットデータにパターンが存在すると決定する(S623)。
仮に、ステップS615及びステップS621にて、各マッチング動作の遂行結果、一致しないと判断されると(S615−N、S621−N)、現在マッチング対象であるサブデータが最後のサブデータであるか否かを決定する(S625)。
現在マッチング対象であるサブデータが最後のサブデータである場合(S625−Y)、決定部10は、ターゲットデータにパターンが存在しないと最終決定する(S627)。
仮に、現在マッチング対象であるサブデータが最後のサブデータでない場合(S625−N)、次のサブデータに対するマッチング動作を行うためにステップS603にフィードバックして同一動作が繰り返される。
本実施の形態でのステップS601〜ステップS615は、図9のステップS301〜S315と同一である。すなわち、マルチパターンデータを処理する動作は、文法的に決まった簡単なパターンデータを処理する動作を行った後、フルパターンマッチング動作をさらに行うことである。
図13は、本発明の文法的に決まった複雑なパターンデータに対するパターンマッチング方法の第2の実施の形態を説明するためのフローチャートである。
パターンデータをロードし(S701)、該ロードしたパターンデータをサブパターンに分離してマルチパターンデータを構成する(S703)。ここで、マルチパターンデータを構成する方法は、図11にて説明したとおりである。
以後、マッチング対象になるターゲットデータを受け取る(S705)。受け取ったデータのはじめから1バイトずつ移動しつつパターンマッチングを実施する。すなわち、受け取ったデータのポジションが0の地点から1バイトずつ移動しつつパターンマッチングを実施する(S707)。
受け取ったターゲットデータのポジションがデータの終わりなのか確認し(S709)、現在ポジションがデータの終わりであると(S709−Y)、受け取ったデータに一致するパターンがないと判断する(S711)。
仮に、受け取ったターゲットデータのポジションがデータの終わりでないと(S709−N)、ターゲットデータの現在ポジションから決まった大きさ分だけ読んでハッシュ関数を適用してハッシュ値を生成する(S713)。
ハッシュ値マッチング部60は、ステップS713にて計算したハッシュ値がハッシュマッチャーテーブルに存在しているか否かを確認する(S715)。ここで、ステップS713にて計算したハッシュ値がキー値として存在すると(S715−Y)、サブパターンマッチング動作、例えばサブデータの中間値及び最後値と、サブマッチャーテーブル44での中間値と最後値とを比較して、結果が同じであるか否かを確認する(S717)。
反面、該当サブデータのハッシュ値がキー値として存在しないと(S715−N)、サブデータの現在ポジションで1バイトを足してステップS709に戻る(S731)。
次に、サブパターンマッチングが成功すると(S717−Y)、サブマッチャーテーブル44を利用して実際パターンデータ全体に対するマッチング動作を行う(S719)。反面、ステップS717にてマッチングが成功しないと、サブデータの現在ポジションで1バイトを足してステップS709に戻る(S731)。
次に、ステップS719にてサブマッチャーテーブル44を参考にした実際パターン情報に対する精密パターンマッチングを実施して、パターン全体が一致すると、サブパターンマトリクス45に該当情報を記録する(S721)。
次に、複雑なパターンを構成するサブパターンがすべて見付けられたか否かを確認する(S723)。ステップS723にて複雑なパターンを構成するサブパターンがすべて見付けられると、全体パターンが一致すると見なし、報告該当データにパターンがあると決定する(S725、S727)。
反面、ステップS723にて、複雑なパターンを構成するサブパターンがすべて見付けられないと、一部サブパターンが見付けられたとし、サブデータの現在ポジションで1バイトを足してステップS709に戻る(S729、S731)。
図14は、本発明の文法的形式が決まらないパターンデータに対するパターンマッチング方法を説明するためのフローチャートである。
本パターンマッチングシステムにサブデータが入力される(S801)。ハッシュ値生成部30は、ハッシュ関数を適用してサブデータに対するハッシュ値を生成する(S803)。
ハッシュ値マッチング部60は、ハッシュマッチャーテーブル43を利用してハッシュマッチング動作を行う。すなわち、サブデータに対するハッシュ値がハッシュマッチャーテーブル43に存在しているか否かを確認するためのマッチングを行う(S805)。
ハッシュ値マッチング部60のハッシュマッチング動作の遂行結果、現在マッチング対象であるサブデータがハッシュマッチャーテーブル43と一致すると判断されると(S807−Y)、サブパターンマッチング部20にてサブパターンマッチング動作を行う(S809)。ステップS809は、ライトパターンマッチングと精密パターンマッチングとを含むことができる。
サブパターンマッチング部20のサブパターンマッチングの遂行結果、現在マッチング対象であるサブデータがサブマッチャーテーブル44と一致すると判断されると(S811−Y)、サブデータとマッチングされたパターンデータが複雑なパターンに該当するか否かを判断する(S813)。
ステップS813にて、サブデータが複雑なパターンに該当するパターンデータに該当すると判断されると(S813−Y)、サブパターンマトリクス45にパターンマッチング結果を格納する(S815)。
以後、フルパターンマッチング部50にてサブパターンマトリクス45を参照してパターンデータを構成するすべてのサブパターンが存在しているか否かを確認し(S817)、すべてのサブパターンが存在すると判断されると(すなわち、サブデータとパターンデータとが一致すると判断されると)(S819−Y)、決定部10は、ターゲットデータにパターンが存在すると判断する(S821)。
ステップS819にて、サブパターンマトリクス45にパターンデータを構成するすべてのサブデータが存在しない場合(S819−N)、決定部10は、現在マッチング対象であるサブデータが最後のサブデータである場合(S823−Y)には、ターゲットデータにパターンが存在しないと判断する(S825)。
また、ステップS811にて、サブデータがサブマッチャーテーブル44と一致しないと判断されると(S811−N)、現在マッチング対象であるサブデータが最後のサブデータであるか否かを判断して、最後のサブデータである場合には、ターゲットデータにパターンが存在しないと判断する(S825)。
上述したように、図14に示すパターンマッチング方法は、本パターンマッチングシステムに入力されるターゲットデータのパターン種類が規定されないケースに該当することで、1次的に文法的に決まった簡単なパターンに該当することであるか否かを判断して、これに該当する場合、もうこれ以上ステップを進めず、これに該当しない場合、2次的に文法的に決まった複雑なパターンに該当することであるか否かを判断する。したがって、ターゲットデータのパターン種類が規定されていなくても、パターンマッチングを正確に行うことができる。
以上、本発明は、限定された実施の形態と図面により説明されたが、本発明は、上記の実施の形態に限定されるものではなく、本発明が属する分野における通常の知識を有した者であればこのような記載から多様な修正及び変形が可能である。したがって、本発明の範囲は、説明された実施の形態に限って決まってはならず、後述する特許請求の範囲だけでなく、この特許請求の範囲と均等なものによって決まらねばならない。
10 決定部
20 サブパターンマッチング部
22 ライトパターンマッチング部
24 精密パターンマッチング部
30 ハッシュ値生成部
40 格納部
50 フルパターンマッチング部
60 ハッシュ値マッチング部
70 テーブル生成部

Claims (20)

  1. ハッシュ値を用いて、ターゲットデータを構成する複数のサブデータのうち、少なくとも一つと、予め格納されたパターンデータとをマッチングさせるサブパターンマッチングステップと、
    前記サブパターンマッチング結果を参照して、前記ターゲットデータと前記予め格納されたパターンデータとが一致するか否かを判断するフルパターンマッチングステップとを含み、
    前記フルパターンマッチングステップは、前記パターンデータが複数のサブパターンに分離可能なマルチパターンデータであるかどうかによって行われるか、又は行われないかが決定され、
    前記サブパターンマッチングステップは、
    前記一つのサブデータの一部と前記予め格納されたパターンデータとをマッチングさせるライトパターンマッチングステップと、
    前記一つのサブデータの一部が前記予め格納されたバターンと一致するか、又は前記予め格納されたパターンに含まれた場合、前記一つのサブデータの全体と前記ライトパターンマッチングされたパターンデータ全体をマッチングさせる精密パターンマッチングステップとを含むことを特徴とするパターンマッチング方法。
  2. 前記サブデータとマッチングされた前記予め格納されたパターンデータが複数のサブパターンに分離可能なマルチパターンデータではないと判断された場合には、前記フルパターンマッチングステップを行わないことを特徴とする請求項1に記載のパターンマッチング方法。
  3. 前記サブパターンマッチングステップのマッチング結果、前記サブデータとマッチングされた前記予め格納されたパターンデータが複数のサブパターンに分離可能なマルチパターンデータであると判断された場合には、前記サブパターンマッチングステップのマッチング結果をサブパターンマトリクスに記録することを特徴とする請求項1に記載のパターンマッチング方法。
  4. 前記フルパターンマッチングステップは、前記サブパターンマッチング動作が前記サブパターンマトリクスに含まれたすべてのサブパターンをマッチングさせたか否かを確認するステップであることを特徴とする請求項3に記載のパターンマッチング方法。
  5. 前記サブパターンマッチングステップの結果をサブパターンマトリクスに記録するステップをさらに含み、
    前記フルパターンマッチングステップは、前記パターンマッチング動作が前記サブパターンマトリクスに含まれたすべてのサブパターンをマッチングさせたか否かを確認するステップであることを特徴とする請求項1に記載のパターンマッチング方法。
  6. 前記一つのサブデータの一部は、前記サブデータの最初値、中間値、及び最後値のうち、少なくとも何れか一つであることを特徴とする請求項1に記載のパターンマッチング方法。
  7. 前記ハッシュ値が記載されるハッシュ値項目と、前記予め格納されたパターンデータが記載される項目とを含むハッシュマッチャーテーブル又は前記ハッシュ値が記載されるハッシュ値項目と、前記予め格納されたパターンデータのハッシュ値と前記ハッシュ値項目に記載されたハッシュ値との一致有無を表す項目とを含むハッシュマッチャーテーブルを構成することを特徴とする請求項1に記載のパターンマッチング方法。
  8. 前記ハッシュ値が記載されるハッシュ値項目、前記ハッシュ値項目に記載されたハッシュ値に対応するパターンデータが記載されるパターンデータ項目とを含むサブマッチャーテーブルを構成するサブマッチャーテーブル構成ステップをさらに含むことを特徴とする請求項7に記載のパターンマッチング方法。
  9. 前記サブマッチャーテーブルは、前記予め格納されたパターンデータの中間値を記載する中間値項目と、最後値を記載する最後値項目とをさらに含むことを特徴とする請求項8に記載のパターンマッチング方法。
  10. 前記パターンデータ項目には、前記予め格納されたパターンデータが格納されたアドレス又は前記予め格納されたパターンデータが記載されることを特徴とする請求項8に記載のパターンマッチング方法。
  11. 前記サブマッチャーテーブルは、前記予め格納されたパターンデータのハッシュ値のうちの何れか一つと、前記予め格納されたパターンデータの残りのハッシュ値とが互いに衝突されるか否かを表す衝突パターンのオフセット値を記載する衝突パターンオフセット項目をさらに含むことを特徴とする請求項8に記載のパターンマッチング方法。
  12. 前記予め格納されたパターンデータのハッシュ値が前記予め格納されたパターンデータの残りのハッシュ値と互いに衝突された場合、前記衝突パターンオフセット項目には、前記ハッシュ値項目に記載された値のうち、何れか一つの値が記載されることを特徴とする請求項11に記載のパターンマッチング方法。
  13. 前記一つのサブデータのハッシュ値を生成するステップと、
    前記一つのサブデータのハッシュ値を前記ハッシュマッチャーテーブルに存在する一つのサブデータと比較するステップとをさらに含み、
    前記サブパターンマッチングステップは、前記一つのサブデータのハッシュ値が前記ハッシュマッチャーテーブルに存在する場合にのみ行われることを特徴とする請求項6に記載のパターンマッチング方法。
  14. 前記サブパターンマッチングステップは、
    前記サブマッチャーテーブルのハッシュ値項目に記載されたハッシュ値のうち、前記一つのサブデータのハッシュ値と一致するハッシュ値を検索するステップと、
    前記検索されたハッシュ値に対応するパターンデータと、前記一つのサブデータとを比較するステップとを含むことを特徴とする請求項8に記載のパターンマッチング方法。
  15. 前記比較するステップは、
    前記サブデータの一部と前記パターンデータとをマッチングさせるライトパターンマッチングステップと、
    前記一つのサブデータの一部が、前記予め格納されたパターンデータと同一であるか、又は前記予め格納されたパターンデータに含まれた場合にのみ、前記一つのサブデータの全体と、前記予め格納されたパターンデータとをマッチングさせる精密パターンマッチングステップとを含むことを特徴とする請求項14に記載のパターンマッチング方法。
  16. 前記サブマッチャーテーブルは、前記予め格納されたパターンデータのハッシュ値のうちの何れか一つが予め格納されたパターンデータのハッシュ値のうち、残りの一つと互いに衝突されるか否かを表す衝突パターンのオフセット値を記載する衝突パターンオフセット項目をさらに含み、
    衝突パターンオフセット項目にオフセット値が存在すると、そのオフセット値が表すパターンデータと前記一つのサブデータとを比較するステップをさらに含むことを特徴とする請求項14に記載のパターンマッチング方法。
  17. パターンデータに対するハッシュ値を含むハッシュマッチャーテーブルを格納する格納部と、
    前記ハッシュマッチャーテーブルと、ターゲットデータを構成する複数のサブデータのうち、少なくとも一つのサブデータのハッシュ値をマッチングするハッシュ値マッチング部と、
    前記サブデータのハッシュ値とマッチングされたパターンデータと、前記一つのサブデータとをマッチングするサブパターンマッチング部と
    前記サブパターンマッチング部のマッチング結果を参照して、前記ターゲットデータと前記パターンデータとをマッチングさせ得るフルパターンマッチング部と、
    前記パターンデータが複数のサブパターンに分離可能なマルチパターンデータであるかどうかによって、前記フルパターンマッチング部の動作有無を決定する決定部と、を備え、
    前記サブパターンマッチング部は、
    前記パターンデータと前記一つのサブデータの一部とをマッチングさせ得るライトパターンマッチング部と、
    前記一つのサブデータの一部が前記パターンデータと一致するか、又は前記パターンデータに含まれる場合、前記一つのサブデータ全体と前記パターンデータ全体とをマッチングする精密パターンマッチング部と
    を備えることを特徴とするパターンマッチングシステム。
  18. 前記ハッシュマッチャーテーブルに含まれたハッシュ値を生成するパターンハッシュ値生成器をさらに備えることを特徴とする請求項17に記載のパターンマッチングシステム。
  19. 前記決定部は、前記パターンデータが複数のサブパターンに分離可能なマルチパ−ターンデータでない場合、前記フルパターンマッチング部を動作させない
    ことを特徴とする請求項17に記載のパターンマッチングシステム。
  20. 前記決定部は、
    前記パターンデータが複数のサブパターンに分離可能なマルチパターンデータである場合、前記サブパターンマッチング部の動作以後、前記フルパターンマッチング部が動作するようにすることを特徴とする請求項19に記載のパターンマッチングシステム。
JP2011119458A 2010-05-27 2011-05-27 パターンマッチング方法及びシステム Active JP5378452B2 (ja)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
KR10-2010-0049566 2010-05-27
KR20100049566 2010-05-27
KR10-2010-0052981 2010-06-04
KR20100052981 2010-06-04
KR1020110049249A KR101309337B1 (ko) 2010-05-27 2011-05-24 패턴 매칭 방법 및 시스템
KR10-2011-0049249 2011-05-24

Publications (2)

Publication Number Publication Date
JP2011248897A JP2011248897A (ja) 2011-12-08
JP5378452B2 true JP5378452B2 (ja) 2013-12-25

Family

ID=44117999

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011119458A Active JP5378452B2 (ja) 2010-05-27 2011-05-27 パターンマッチング方法及びシステム

Country Status (3)

Country Link
US (1) US9392005B2 (ja)
EP (1) EP2390814A3 (ja)
JP (1) JP5378452B2 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9237100B1 (en) 2008-08-06 2016-01-12 Marvell Israel (M.I.S.L.) Ltd. Hash computation for network switches
US8756424B2 (en) 2010-11-30 2014-06-17 Marvell Israel (M.I.S.L) Ltd. Load balancing hash computation for network switches
US9537771B2 (en) * 2013-04-04 2017-01-03 Marvell Israel (M.I.S.L) Ltd. Exact match hash lookup databases in network switch devices
US9906592B1 (en) 2014-03-13 2018-02-27 Marvell Israel (M.I.S.L.) Ltd. Resilient hash computation for load balancing in network switches
WO2016142774A1 (en) 2015-03-06 2016-09-15 Marvell Israel (M.I.S.L) Ltd. Method and apparatus for load balancing in network switches
US9509337B1 (en) * 2015-05-11 2016-11-29 Via Alliance Semiconductor Co., Ltd. Hardware data compressor using dynamic hash algorithm based on input block type
US9503122B1 (en) 2015-05-11 2016-11-22 Via Alliance Semiconductor Co., Ltd. Hardware data compressor that sorts hash chains based on node string match probabilities
US9628111B2 (en) 2015-05-11 2017-04-18 Via Alliance Semiconductor Co., Ltd. Hardware data compressor with multiple string match search hash tables each based on different hash size
US9515678B1 (en) 2015-05-11 2016-12-06 Via Alliance Semiconductor Co., Ltd. Hardware data compressor that directly huffman encodes output tokens from LZ77 engine
US9509335B1 (en) 2015-05-11 2016-11-29 Via Alliance Semiconductor Co., Ltd. Hardware data compressor that constructs and uses dynamic-prime huffman code tables
US9509336B1 (en) 2015-05-11 2016-11-29 Via Alliance Semiconductor Co., Ltd. Hardware data compressor that pre-huffman encodes to decide whether to huffman encode a matched string or a back pointer thereto
US10027346B2 (en) 2015-05-11 2018-07-17 Via Alliance Semiconductor Co., Ltd. Hardware data compressor that maintains sorted symbol list concurrently with input block scanning
US10904150B1 (en) 2016-02-02 2021-01-26 Marvell Israel (M.I.S.L) Ltd. Distributed dynamic load balancing in network systems
US10243857B1 (en) 2016-09-09 2019-03-26 Marvell Israel (M.I.S.L) Ltd. Method and apparatus for multipath group updates
US11676052B2 (en) * 2020-04-15 2023-06-13 Micron Technology, Inc. Apparatuses and methods for inference processing on edge devices

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5305389A (en) * 1991-08-30 1994-04-19 Digital Equipment Corporation Predictive cache system
US5841895A (en) * 1996-10-25 1998-11-24 Pricewaterhousecoopers, Llp Method for learning local syntactic relationships for use in example-based information-extraction-pattern learning
US6374250B2 (en) * 1997-02-03 2002-04-16 International Business Machines Corporation System and method for differential compression of data from a plurality of binary sources
US6702417B2 (en) * 1997-07-12 2004-03-09 Silverbrook Research Pty Ltd Printing cartridge with capacitive sensor identification
US20070192863A1 (en) * 2005-07-01 2007-08-16 Harsh Kapoor Systems and methods for processing data flows
US6823333B2 (en) * 2001-03-02 2004-11-23 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration System, method and apparatus for conducting a keyterm search
WO2002086717A1 (en) * 2001-04-16 2002-10-31 Xaxon R & D Corporation Computer virus check device and method
US20030144832A1 (en) * 2002-01-16 2003-07-31 Harris Henry M. Machine translation system
WO2003090050A2 (en) 2002-04-13 2003-10-30 Computer Associates Think, Inc. System and method for detecting malicicous code
JP2004252642A (ja) 2003-02-19 2004-09-09 Matsushita Electric Ind Co Ltd ウイルス検出方法、ウイルス検出装置、ウイルス検出サーバ及びウイルス検出クライアント
US20050015599A1 (en) 2003-06-25 2005-01-20 Nokia, Inc. Two-phase hash value matching technique in message protection systems
JP2005128792A (ja) * 2003-10-23 2005-05-19 Trend Micro Inc 通信装置、プログラムおよび記憶媒体
US7539871B1 (en) 2004-02-23 2009-05-26 Sun Microsystems, Inc. System and method for identifying message propagation
EP1744235A1 (en) 2004-06-14 2007-01-17 Lionic Corporation Method and system for virus detection based on finite automata
US7756859B2 (en) 2005-12-19 2010-07-13 Intentional Software Corporation Multi-segment string search
GB2432933B (en) * 2006-03-14 2008-07-09 Streamshield Networks Ltd A method and apparatus for providing network security
US9064115B2 (en) 2006-04-06 2015-06-23 Pulse Secure, Llc Malware detection system and method for limited access mobile platforms
US20080071783A1 (en) 2006-07-03 2008-03-20 Benjamin Langmead System, Apparatus, And Methods For Pattern Matching
US8055601B2 (en) * 2006-12-08 2011-11-08 Pandya Ashish A Compiler for compiling content search rules comprising a regular expression using a programmable intelligent search memory (PRISM) and vectors
KR100770357B1 (ko) 2007-06-04 2007-10-25 펌킨네트웍스코리아 (주) 시그너처 해싱을 이용하여 시그너처 매칭 회수를 줄이는고성능 침입 방지 시스템 및 그 방법
BRPI0815605B1 (pt) * 2007-08-06 2020-09-15 Bernard De Monseignat Método para a comunicação de dados usando um dispositivo de computação; método para gerar uma segunda versão de um componente de comunicação de dados usando um dispositivo de computação; método para comunicação de dados usando um dispositivo de computação; método para a criação de um certificado usando um dispositivo de computação; e método para usar um certificado utilizando um dispositivo de computação
US8170352B2 (en) * 2008-03-24 2012-05-01 Sophos Plc String searching facility
US8214977B2 (en) 2008-05-21 2012-07-10 Symantec Corporation Centralized scanner database with optimal definition distribution using network queries
US8589436B2 (en) * 2008-08-29 2013-11-19 Oracle International Corporation Techniques for performing regular expression-based pattern matching in data streams
US8667583B2 (en) 2008-09-22 2014-03-04 Microsoft Corporation Collecting and analyzing malware data
US20100077482A1 (en) * 2008-09-23 2010-03-25 Robert Edward Adams Method and system for scanning electronic data for predetermined data patterns

Also Published As

Publication number Publication date
EP2390814A3 (en) 2012-04-18
EP2390814A2 (en) 2011-11-30
US9392005B2 (en) 2016-07-12
JP2011248897A (ja) 2011-12-08
US20110295894A1 (en) 2011-12-01

Similar Documents

Publication Publication Date Title
JP5378452B2 (ja) パターンマッチング方法及びシステム
JP6371790B2 (ja) 変更されたウェブページを判定するためのシステム及び方法
EP2422273B1 (en) Digital dna sequence
US9645828B2 (en) Method of searching character string, character string searching device, and recording medium
JP5842768B2 (ja) 重複除去装置、重複除去方法及び重複除去プログラム
JP6777612B2 (ja) コンピュータシステムにおけるデータ損失を防止するためのシステム及び方法
US11520889B2 (en) Method and system for granting access to a file
Canfora et al. Static analysis for the detection of metamorphic computer viruses using repeated-instructions counting heuristics
US9118625B2 (en) Anti-malware system, method of processing data in the same, and computing device
KR101309337B1 (ko) 패턴 매칭 방법 및 시스템
US20220050899A1 (en) Systems and methods for synthetic file scanning
KR102289408B1 (ko) 해시 코드 기반의 검색 장치 및 검색 방법
JP6096084B2 (ja) トラヒック走査装置及び方法
KR101225870B1 (ko) 안티 멀웨어 시스템 및 그의 동작 방법
EP3746915A1 (en) Steganographic encoding detection and remediation
KR20210035502A (ko) 보안관제 데이터 분석을 위한 머신러닝 기반의 학습 벡터 생성 장치 및 방법
JP5952239B2 (ja) トラヒック走査方法および装置
Fan et al. An efficient parallel string matching algorithm based on dfa
US11151277B1 (en) Method to recover encrypted structured files
JP5483166B2 (ja) 文書検索装置、文書検索方法、及びプログラム
RU2665915C1 (ru) Система и способ определения текста, содержащего конфиденциальные данные
EP3588350A1 (en) Method and system for generating a request for information on a file to perform an antivirus scan
KR20190085637A (ko) 악성코드 격리 시스템 및 방법
KR100901701B1 (ko) 침해패턴 처리시스템 및 그 방법

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20120719

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20120720

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130328

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130423

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130723

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130827

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130925

R150 Certificate of patent or registration of utility model

Ref document number: 5378452

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250