JP4855400B2 - マルチパターン検索のための方法およびシステム - Google Patents

マルチパターン検索のための方法およびシステム Download PDF

Info

Publication number
JP4855400B2
JP4855400B2 JP2007523640A JP2007523640A JP4855400B2 JP 4855400 B2 JP4855400 B2 JP 4855400B2 JP 2007523640 A JP2007523640 A JP 2007523640A JP 2007523640 A JP2007523640 A JP 2007523640A JP 4855400 B2 JP4855400 B2 JP 4855400B2
Authority
JP
Japan
Prior art keywords
state
pattern
search
list
vector
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.)
Expired - Fee Related
Application number
JP2007523640A
Other languages
English (en)
Other versions
JP2008507789A (ja
Inventor
エイ. ノートン、マーク
ジェイ. ロールカー、ダニエル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sourcefire LLC
Original Assignee
Sourcefire LLC
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
Application filed by Sourcefire LLC filed Critical Sourcefire LLC
Publication of JP2008507789A publication Critical patent/JP2008507789A/ja
Application granted granted Critical
Publication of JP4855400B2 publication Critical patent/JP4855400B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/912Applications of a database
    • Y10S707/922Communications
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99939Privileged access

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Monitoring And Testing Of Transmission In General (AREA)

Description

本発明の実施形態は、文字列のパターンを効率的に検索するための方法およびシステムに関する。より詳細には、本発明の実施形態は、パターン・マッチング・アプリケーション内の状態マシン・アルゴリズムのメモリ要件を最適化し、低減するためのシステムおよび方法に関する。
侵入検出システム(IDS)は、ネットワーク・トラフィック・パケットをチェックする。IDSは、パケットのヘッダ内の特定の値を探し、パケットのアプリケーション・データ層内の既知のパターンの検索を行うことにより、侵入したものを検索する。典型的なIDSは、Aho−Corasickマルチパターン検索エンジンに大きく依存している。そのため、Aho−Corasickアルゴリズムの性能特性は、これらIDSの性能全体に有意な影響を有する。
IDSのパターン検索問題は、多くの問題を考慮しなければならない問題である。ネットワーク・パケットのチェックはリアルタイムで行わなければならないので、現代のネットワークの速度に追随することができるパターン検索エンジンを使用しなければならない。このタイプの検索の場合には2つのタイプのデータが使用される。これら2つのタイプのデータは、パターンおよび検索テキストである。パターンは予め定義されたもので静的なものである。そのため、これらのパターンを任意の所与のパターン・マッチング・アルゴリズムに適している最善の形に前処理することができる。検索テキストは、各ネットワーク・パケットを受信した場合に動的に変化する。そのため、パターン検索を行う前に検索テキストを前処理することはできない。このタイプのパターン検索問題は、シリアル・パターン・サーチとして定義される。Aho−Corasickアルゴリズムは古典的なシリアル・サーチ・アルゴリズムであり、1975年に最初に導入されたものである。Aho−Corasickアルゴリズムにより多くの変更が行われたが、最近のIDSは、アルゴリズムの一意の特性のうちのいくつかのためにアルゴリズム内に新たな関心を呼び起こした。
IDSは、大文字/小文字を区別するものであっても、大文字/小文字を区別しないものであってもよいパターンを検索する。Aho−Corasickアルゴリズムは、元来、大文字/小文字を区別するパターン検索エンジンとして使用されたものである。検索の際に使用するパターンの大きさは、検索アルゴリズムの性能特性に有意に影響を与える場合がある。Aho−Corasickアルゴリズムのような状態マシン・ベースのアルゴリズムは、グループ内の最小または最大のパターンのサイズにより影響を受けない。Wu−Manberアルゴリズムおよび文字スキップ機能を使用する他のアルゴリズムのようなスキップをベースとする方法は、最小パターンのサイズにより大きな影響を受ける。検索テキストのスキップ部分の能力は、検索エンジンの性能を大きく改善することができる。しかし、スキップ距離は最小パターンにより制限される。IDSでの検索パターンは既知の攻撃パターンの一部を表していて、サイズは1から30またはそれ以上の文字の範囲内で変化することができるが、通常そのサイズは小さい。
パターン・グループのサイズは、通常、IDSの性能に影響を与える。何故なら、IDSパターン検索問題は、通常、プロセッサのメモリのキャッシングから利益を受けるからである。小さなパターン・グループは、キャッシュ内に収容することができ、高性能のキ
ャッシュから最も利益を受ける。パターン・グループが大きくなると、小さなパターン・グループしかキャッシュ内に収容することができなくなり、キャッシュ・ミスが多くなる。これにより性能が劣化する。大部分の検索アルゴリズムは、例えば、1,000のパターンを処理する場合よりも、10のパターンを処理するほうが処理速度が速くなる。パターン・グループのサイズが増大した場合の各アルゴリズムの性能の劣化は、アルゴリズムにより異なる。スケーラビリティを維持するためには、この劣化が線形に近いことが望ましい。
現在のIDSで使用しているアルファベットのサイズはバイトの大きさにより定義される。8ビット・バイトの値は、0〜255の範囲内であり、256の文字のアルファベットを含む侵入検出システムを提供する。これらのバイト値は、標準コンピュータ・キーボード上のASCIIおよび制御文字、および他の印刷できない値を表す。例えば、文字「A」は、65のバイト値を有する。ユニコードのような極端に大きなアルファベットは、複数の対のバイト値により表すことができ、そのためパターン検索エンジンが処理するアルファベットは、依然として256文字である。これはパターン・マッチング規格による大きなアルファベットである。英語の辞書のアルファベットは52の大文字および小文字であり、DNA研究は遺伝子配列の際に4文字のアルファベットを使用する。アルファベットのサイズは、どの検索アルゴリズムが最も効率的であり、最も高速なものになるかという点について有意な影響を有する。
侵入者によるアルゴリズム攻撃は、検索アルゴリズムの性能を低減するために、それ自身に対する検索アルゴリズムの特性および挙動を使用しようとする。検索アルゴリズムの性能挙動は、検索アルゴリズムの平均的な場合および最悪の場合の性能を考慮して評価すべきである。有意に異なる最悪の場合の性能および平均的な場合の性能を有する検索アルゴリズムは、侵入者によるアルゴリズム攻撃に弱い。Wu−Manberアルゴリズムのようなスキップ・ベースの検索アルゴリズムは、Boyer−Mooreアルゴリズムの場合の悪い文字シフトに類似の文字スキップ機能を使用する。スキップ・ベースの検索アルゴリズムは、最小パターンのサイズの影響を受けやすい。何故なら、このようなアルゴリズムは、最小パターンより小さいスキップ・サイズに制限されることを示すことができるからである。1つのバイト・パターンを含むパターン・グループは、1つの文字すらスキップできないし、または1つのバイト・パターンも発見することができない。
Wu−Manberアルゴリズムの性能特性は、悪意のあるネットワーク・トラフィックにより有意に低減することができ、その結果、サービス拒否攻撃となる。このタイプの攻撃は、小さな反復するパターンのトラフィックを退化しなければならない。この問題はテキスト検索の場合には起こるものではなく、アルゴリズム攻撃は意図的なものではなく、通常非常に稀である。この問題は、アルゴリズム攻撃が頻繁に行われ意図的であるIDSの場合には重要な問題である。Wu−Manberアルゴリズムは、また、典型的なIDSにおいては、その最善の性能レベルを達成できない。何故なら、IDS規則は、多くの場合、1〜3文字の非常に小さな検索パターンを含んでいて、文字のシーケンスをスキップする大部分の機会がないからである。
実際には、Wu−Manberアルゴリズムを使用するIDSは、平均的な場合、Aho−Corasickアルゴリズムを使用するIDSと比較した場合、性能が若干優れている。しかし、アルゴリズム的に設計された攻撃を受けている場合には、Wu−Manberアルゴリズムを使用するIDSは、Aho−Corasickアルゴリズムを使用しているIDSより処理速度が有意に遅くなる場合がある。グループ内のすべてのパターンが大きい場合には、スキップ・ベースのアルゴリズムの強さがはっきりする。スキップ・ベースの検索アルゴリズムは、一度に多くの文字をスキップすることができ、この場合に使用できる最速の平均的な場合の検索アルゴリズムの1つである。Aho−Corasi
ckアルゴリズムは、小さなパターンにより影響を受けない。Aho−Corasickアルゴリズムの最悪の場合および平均的な場合の性能は同じである。そのため、IDS用の非常にロバストなアルゴリズムになる。
IDSで読み出す検索テキストのサイズは、通常、数千バイト以下である。通常、テキストを検索する場合、検索パターンの設定コストおよびキャッシュ内に必要な検索パターン情報を設定するコストは通常一定である。検索がほんの数バイトに対して行われる場合には、これら数バイトに対して設定コストがかかることになり、そのためバイト当たりのコストが高くなる。一方、検索テキストが非常に長い場合には、もっと長い検索テキストに対して設定コストが分散するので、テキストの各バイトの検索に加算されるオーバーヘッド・コストが非常に安くなる。
侵入検出システムでの検索の頻度は、ネットワークの帯域幅、ネットワーク上のトラフィックの量、およびネットワーク・パケットのサイズにより異なる。このことは、パターン検索の頻度および各検索テキストのサイズが、検索中のネットワーク・トラフィックの性質により関連していることを意味する。この場合も、検索テキストのサイズの場合のように、IDSで検索を頻繁に行うと、もっと少ないもっと長いテキスト検索の場合と比較すると、検索設定コストが有意に高くなる。
上記説明を読めば、IDSでのパターン検索に関連する多くの問題を考慮し、IDSの性能全体を改善するための方法およびシステムの開発が実質的に求められていることを理解することができるだろう。
本発明の一実施形態は、パターン・マッチング・アプリケーション内の状態マシン・アルゴリズムの状態表を作成するための方法である。少なくとも1つの検索パターンが識別される。検索パターンtrieが生成される。検索パターンtrieは、各状態に対するすべて有効な文字のリストからなる。すべて有効な文字のリストの各要素は、有効な文字および次の有効な状態のペアを含む。少なくとも1つの検索パターンが検索パターンtrieに付加される。検索パターンは、一度に1つの文字を検索パターンtrieに付加される。この場合、各文字は状態を表す。検索パターンtrieから非決定性有限オートマトンが形成される。検索パターンtrieは、リスト・フォーマットで非決定性有限オートマトンにより置換される。非決定性有限オートマトンから決定性有限オートマトンが形成される。非決定性有限オートマトンは、リスト・フォーマットで決定性有限オートマトンにより置換される。決定性有限オートマトンは、3つの別々のデータ構造に変換される。これら3つのデータ構造は、状態遷移表、状態マッチング・パターン・リスト毎のアレイ、および非決定性有限オートマトンに対する各状態に対する別々の失敗ポインタ・リストを含む。これらの3つのデータ構造が、状態表を形成する。
この方法のもう1つの実施形態は、決定性有限オートマトンの一部を状態遷移表に変換するステップを含む。各状態に対する状態ベクトルが割り当てられる。すべて有効な文字のリストの各要素に対して、状態ベクトルの状態遷移要素が生成される。すべて有効な文字のリストの各要素の次の有効な状態は、状態ベクトルの各状態遷移要素内にコピーされる。この実施形態の場合には、状態遷移要素は全ベクトル形式で格納される。
この方法の他の実施形態の場合には、状態遷移要素はバンド状行形式で格納される。バンドは、すべて有効な文字のリストからの第1の非ゼロ状態からすべて有効な文字のリストからの最後の非ゼロ状態までの要素のグループとして定義される。状態ベクトルが、各状態に割り当てられる。状態ベクトルの状態遷移要素が、バンドの各要素に対して生成される。すべて有効な文字のリストからの第1の非ゼロ状態の索引を識別するために、状態
ベクトルの要素が生成される。バンド内の要素の数を識別するために、状態ベクトルの要素が生成される。バンドの各要素の状態は、状態ベクトルの各状態遷移要素内にコピーされる。
この方法の他の実施形態の場合には、状態ベクトルのフォーマットを識別するために、要素が状態ベクトルに付加される。例示としてのフォーマットは、全ベクトルおよびバンド状ベクトルを含むが、含むことができるものはこれらに限定されない。この方法の他の実施形態の場合には、状態ベクトルがマッチング・パターン状態を含むか否かを識別するために、状態ベクトルに要素が付加される。
本発明の他の実施形態は、パターン・マッチング・アプリケーション内の状態マシン・アルゴリズムの状態表を使用して、テキスト・シーケンスの検索パターンを検索するための方法である。テキスト・シーケンスから文字が読み出される。この文字に対応する状態表の現在の状態ベクトルの要素が読み出される。要素が非ゼロである場合には、マッチング・パターン・フラグに対する現在の状態ベクトルのパターン・マッチング要素がチェックされる。マッチング・パターン・フラグがセットされている場合には、パターン・マッチがログされる。この要素の値に対応する現在の状態ベクトルが選択される。次に、テキスト・シーケンスから次の文字が読み出される。
この方法の他の実施形態の場合には、フォーマットを識別する現在の状態ベクトルの要素がチェックされる。フォーマットがバンド状である場合には、文字がバンド内に位置しているか否かが判定される。この判定は、バンド内の多数の要素を識別する現在の状態ベクトルの要素、バンドの第1の要素の索引を識別する現在の状態ベクトルの要素、およびバンドの要素を使用して行われる。その文字がバンド内に位置している場合には、要素の値に対応する現在の状態ベクトルが選択される。文字がバンド内に位置していない場合には、現在の状態ベクトルは、初期状態にセットされる。
本発明の他の実施形態は、パターン・マッチング・アプリケーション内で使用する状態マシン・アルゴリズムに対する状態表である。状態表は、状態遷移表、状態マッチング・パターン・リスト毎のアレイ、および非決定性有限オートマトンに対する各状態に対する失敗ポインタ・リストを含む。状態遷移表は、各状態に対する状態ベクトルを含む。この状態表の一実施形態の場合には、状態ベクトルは、スパース・ベクトル・フォーマットで格納される。スパース・ベクトル・フォーマットは、圧縮スパース・ベクトル・フォーマットと、スパース行フォーマットと、バンド状行フォーマットとを含むが、含むことができるものはこれらに限定されない。状態マシン・アルゴリズムは、例えば、Aho−Corasickアルゴリズムである。状態表および状態マシン・アルゴリズムは、侵入検出システム、パッシブ・ネットワーク監視装置、アクティブ・ネットワーク監視装置、プロトコル・アナライザ、および検索エンジンを含むが、その他のものも含むことができるパターン・マッチング・アプリケーション内で使用される。
本発明の1つまたは複数の実施形態を詳細に説明する前に、当業者であれば、本発明はその用途において、構造の詳細、構成要素の配置、および下記の詳細な説明または図面に示すステップの配置に制限されないことを理解することができるだろう。本発明は、他の実施形態として実行することもできるし、種々の方法で実施または実行することもできる。また、本明細書で使用する専門語および用語は、説明のためだけのものであって本発明を制限するものでないことを理解されたい。
Aho−Corasick状態マシン
Aho−Corasick状態マシンは、特種な有限状態マシンである。有限状態マシ
ンは、システムの許容できる状態の遷移に関する情報と一緒に、システムのすべての可能な状態を示すものである。状態マシンの処理動作は、初期状態で開始し、入力イベントを受け入れ、この入力イベントに基づいて現在の状態から次の正しい状態に移行する。状態マシンを、行が状態を表し列がイベントを表すマトリクスとしてモデル化することができる。マトリクス要素は、入力イベント、および行うべき可能なある種の特定の動作、またはある状態に入りそこから抜け出した場合に処理すべき情報に基づいて移行する次の正しい状態を提供する。例えば、現在の状態が状態10であり、次の入力イベントがイベント6である場合には、状態遷移を行うために、行10および列6のところのマトリクス要素がチェックされる。現在の状態10は、行10および列6のところのマトリクス要素の値が示す状態に変化する。
Aho−Corasick状態マシンは、典型的なIDSで決定性有限オートマトン(DFA)として実施される。DFAの一意の特性は、テキスト・ストリーム内の入力文字をチェックする場合、正しい次の状態を発見するために状態マシンの正確に1つの遷移を必要とすることである。このことは、正しい次の状態を発見するために2つ以上の状態遷移を必要とする場合がある非決定性有限オートマトン(NFA)とは対照的である。DFAはNFAより速い速度でデータを処理することができる。何故なら、DFAの場合には、遷移ステップが少なくてすむからである。NFAの場合には、データのストリームを検索するためにDFAの最大2倍の遷移を要求することができる。DFAの状態表マトリクスの構成および構造も、NFAのそれらよりももっと複雑である。1回のステップですべての状態遷移を実行する方法を決定することができるまで、NFA内ですべての可能な状態遷移を予め処理することにより、NFAからDAFを構成することができる。この手順は、状態表マトリクスのより多くの要素を充填する傾向がある。Aho−Corasick状態遷移表の物理的表示は、実施毎に異なる。状態表表示の選択が、検索アルゴリズムのメモリおよび性能の折り合いを決定する。
スパース記憶フォーマット
スパース・マトリクスおよびベクトルは、かなりの数のゼロ要素および少数の非ゼロ要素を含む。スパース構造上で効率的に動作するために使用する方法および記憶フォーマットは、線形代数の分野で確実に開発されていて、多くの科学分野で利用されている。その方法および記憶フォーマットは、スパース・データを効率的に格納するのに十分なものではない。記憶フォーマットも、データに高速でランダム・アクセスできるものでなければならない。
以下にサンプルとしてのスパース・マトリクスを示す。このマトリクスは6つの行と4つの列を含む。
0003
0401
0006
1000
0200
0050
上記マトリクスは、少数の非ゼロ要素を含む一般的な長方形のマトリクスである。圧縮行記憶(CRS)フォーマットを使用して、下記のように格納することができる。
値: 3416125
列: 4244123
行: 124567
このCRSフォーマットは、非ゼロ・エントリを保持するためだけに3つのベクトルを必要とする。これらベクトルは、値ベクトル、列ベクトルおよび行ベクトルである。列ベクトルは、マトリクス内の値アレイ内の対応する値が属する列を示す。行ベクトルは、各
行が開始する列および値アレイ内の索引を示す。各値および列ベクトル内には7つのエントリが存在する。何故なら、マトリクス内には7つの非ゼロ・エントリが位置するからである。6つの行エントリが存在する。何故なら、マトリクス内には6つの行が存在するからである。例えば、第3の行エントリは、第3の行が列および値ベクトルの第4のエントリのところで開始することを示す。これは、以下に示すようにベクトルとなる1つの行を考慮することにより、ベクトルを処理するためにさらに分割することができるマトリクスのための最も簡単なスパース記憶スキームの1つである。
以下に示すフォーマットは、圧縮スパース・ベクトル・フォーマットと呼ばれる。このフォーマットの各ベクトルは、マトリクスの1つの行に対応する。
ベクトル:00024000607000000000
値: 2467
索引: 45911
この圧縮スパース・ベクトル・フォーマットにおいては、索引アレイは、対応する値のベクトル・アレイ索引を示す。4つの非ゼロ値が存在する。何故なら、索引および値アレイ内に4つのエントリが存在するからである。
値および索引アレイを1つの統合アレイに併合すると、下記のフォーマットができる。このフォーマットはスパース行フォーマットと呼ばれる。
スパース行:8425496117
このスパース行フォーマットには、9つのエントリが存在し、第1のエントリは、索引値の順序で数字の4つのペアを表す8つの数が後に続く後続の語の全数である。これは9つのエントリの1つのアレイであり、そのうち8つは索引値の順序で配列されている。これは、それぞれが索引および値エントリを有する4つのC言語構造のアレイとして表すこともできる。いずれの場合にも、必要なのは、非ゼロのエントリの数および非ゼロのエントリの1つのアレイだけである。この記憶装置スキームは、スパース・ベクトルの全記憶装置を最小限度に低減する場合にうまく動作し、マトリクス・ベクトル乗算のようなベクトルの各要素に順次触れなければならないアプリケーション内でうまく動作する。しかし、個々のエントリをランダムに探すためには、このフォーマットは、正しい索引を発見するためにアレイ全体を検索しなければならない。
ベクトルの他の表示は、要素を効率的に格納するためにベクトルのバンド状の性質を使用する。この表示の場合も、また、ベクトル要素にランダムにアクセスすることができる。この表示はバンド状行フォーマットと呼ばれる。この表示を以下に示す。
数字の項: 8
開始索引: 4
値: 24000607
バンド・アレイ:8424000607
このバンド状行フォーマットは、第1の非ゼロ値から最後の非ゼロ値までの要素を格納する。格納した項の数は、ベクトルの帯域幅と呼ばれる。狭い帯域幅は大きな記憶セービングに対応する。データへのアクセスを管理するために、データ要素の数およびデータの最初の索引だけが追跡される。このフォーマットを使用すれば、記憶装置要件が緩和され、依然としてデータに高速でランダムにアクセスすることができる。多くの問題が自分自身をバンド状マトリクスの形で表しているが、この場合、マトリクス内の各行に対してバンド状行フォーマットを使用することができる。このタイプのバンド状記憶装置は、ある行のバンド状態を他の行のバンド状態に対応させる方法について何らの要件も課さない。最適化したAho−Corasick状態マシン
本発明の一実施形態は、IDSで使用するために設計された最適化したAho−Corasick状態マシンである。この実施形態の場合には、状態表は、幾分違った方法で管
理され、それにより検索ルーチンをもっと最適な命令の混合体にコンパイルすることができる。最適化していないAho−Corasick状態マシン・アルゴリズムを使用する典型的なIDSにおいては、状態表内の各エントリは、その状態に対する遷移のベクトル、表のNFAバージョンに対する失敗ポインタ、およびその状態に対するマッチング・パターンのリストを有している。これらのものはすべて1つの構造内に含まれている。この実施形態の場合には、状態表は、状態遷移表、状態マッチング・パターン・リスト当たりのアレイ、およびNFAに対する各状態についての別々の失敗ポインタ・リストに分割される。すなわち、状態表は、3つの別々のデータ構造に分割される。状態表を3つの別々のデータ構造にこのように分割することにより性能が改善される。状態遷移表のサイズが小さくなり、それにより状態遷移表を、主メモリ内ではなく、メモリ・キャッシュ内で操作することができ、それにより状態マシン・アルゴリズムの性能全体が改善する。
状態遷移表は、状態ベクトルへのポインタのリストである。各状態ベクトルは、その状態に対する有効な状態遷移を表す。本発明の他の実施形態の場合には、各ベクトルは、また、行の記憶フォーマットを示す短いヘッダ、およびこの状態で任意のパターンの一致があったか否かを示すブール・フラグを含む。状態遷移データは、ヘッダの後に位置する。この実施形態は、また、性能も改善する。任意のパターンの一致が起こったか否かを示すブール・フラグを含んでいるので、もはやマッチング・パターンのリストを状態遷移の度毎にチェックする必要はない。
本発明の他の実施形態の場合には、状態遷移表の要素のサイズが4バイトから2バイトへと低減している。実験により、典型的なIDSが使用する状態の数は65,000の状態を超えないか、または2バイトで表すことができる状態の最大数を超えないことが分かった。以前に、4バイトを使用したが、40億の状態が可能であった。この場合も、2バイトのベクトル要素を使用すると、メモリの消費量が低減し、性能全体が向上する。
本発明の他の実施形態の場合には、検索前の全入力検索テキストを変換するのではなく、検索中に処理される場合、各入力文字が大文字に変換される。全入力検索テキストを変換するには、大文字検索テキストを主メモリに格納するか、または少なくともキャッシュ・メモリに格納しなければならない。それ故、処理する場合に各入力文字を変換することにより、この実施形態の場合には、大文字検索テキストのためのメモリは必要ない。大文字/小文字の変換は、例えば、コンピュータ・レジスタ内で行われる。そのため、処理時間が短縮する。
試験により、これらの上記実施形態は、典型的なIDSで使用する最適化していないAho−Corasick状態マシンと比較すると、性能を有意に改善することが分かった。
検索ルーチンは、テキスト・ストリーム内の入力文字に基づいて、ある状態から他の状態に本質的にジャンプするコードの小片である。状態マシンは、現在の状態を維持し、入力イベント(この場合は文字である)を受け入れ、疑似コンピュータ・コードで以下に示すように、現在の状態および入力イベントに基づいて正しい次の許容された状態を発見するために表またはマトリクスを使用することにより動作する。
Figure 0004855400
下記のC言語コードは、本発明のある実施形態による最適化したAho−Corasickアルゴリズムが使用する検索のための基本的なアルゴリズムを示す。
Figure 0004855400
NextStateアレイは、状態表の行ベクトルへのポインタのアレイである。「ps」変数は、現在の状態の最適化した記憶ベクトルをポイントするために使用される。最適化した記憶ベクトルは、記憶フォーマット・インジケータ、ブール・パターン・マッチ・フラグ、および状態遷移ベクトル情報を含む。「ps」アレイの最初の2語は、記憶フォーマットおよびブール・マッチ・フラグである。「T」パラメータは、検索中のテキストであり、「xlatcase」は、大文字/小文字独立検索のために1回でテキストの1バイトを大文字に変換する。一致を発見すると、パターンが処理される。現在の状態で任意のパターンが一致しているか否かを判定するために、「ps」変数を使用してチェックが行われる。パターンが一致していない場合には、状態マシンは次の状態に移行する。パターンが一致している場合には、現在の状態の一致しているすべてのパターンが「for」ループ内で処理される。
スパース記憶最適化Aho−Corasick状態マシン
本発明の他の実施形態の場合には、最適化したAho−Corasick状態マシンでバンド状行スパース記憶フォーマットが使用される。バンド状行フォーマットに対する状態遷移表のベクトルを下記に示す。最初の語は記憶フォーマットを示す。第2の語は、この状態で任意のパターンが一致しているか否かを示す。第3の語は、その行のために格納している項の数を示す。最後に、第4の語は、第1の項の索引を示す。バンド状行フォーマットにより、エントリに直接索引アクセスすることができる。しかし、各索引動作の前に境界チェックを行わなければならない。このアルゴリズムのC言語の例は下記の通りである。
Figure 0004855400
NextStateアレイは、状態表の行ベクトルへのポインタのアレイである。「ps」変数は、現在の状態の最適化した記憶ベクトルをポイントするために使用される。最適化した記憶ベクトルは、記憶フォーマット・インジケータ、ブール・パターン・マッチ・フラグ、および状態遷移ベクトル情報を含む。「ps」アレイの最初の2語は、記憶フォーマットおよびブール・マッチ・フラグである。「T」パラメータは、検索中のテキストであり、「xlatcase」は、大文字/小文字独立検索のために1回でテキストの1バイトを大文字に変換する。大文字は、バンド状記憶ベクトル内への索引の際に使用する入力索引である。現在の状態で任意のパターンが一致しているか否かを判定するために、「ps」変数の第2の語を使用してチェックが行われる(索引は、0の索引を有する第1の語で開始する)。パターンが一致していない場合には、状態マシンは次の状態に移行する。次の状態は、最初に境界チェックを行い、次に、所望の「入力索引」の正しいオフセットを計算するために、索引式「索引=4+入力索引−開始索引」を適用することにより決まる。パターンが一致している場合には、現在の状態で一致しているすべてのパターンが「for」ループ内で処理される。
状態表の作成
図1は、本発明のある実施形態によるパターン・マッチング・アプリケーション内の状態マシン・アルゴリズムの状態表を作成するための方法100を示すフローチャートである。状態マシン・アルゴリズムは、例えば、Aho−Corasickアルゴリズムである。パターン・マッチング・アプリケーションは、侵入検出システム、パッシブ・ネットワーク監視装置、アクティブ・ネットワーク監視装置、プロトコル・アナライザ、および検索エンジンを含むが、含むことができるものはこれらに限定されない。
方法100のステップ110において、少なくとも1つの検索パターンが識別される。この方法の他の実施形態の場合には、検索パターンの文字は、大文字に変換され、そのため最初の検索は大文字/小文字を区別しないで行われる。
ステップ120において、検索パターンtrieが生成される。検索パターンtrieは、各状態に対するすべて有効な文字のリストからなる。すべて有効な文字のリストの各要素は、有効な文字および次の有効な状態のペアを含む。この方法の他の実施形態の場合には、各状態に対するすべての有効な文字のリストは、各状態に対するすべての大文字を
含む。これにより大文字/小文字を区別しないでパターン検索を行うことができる。
ステップ130において、少なくとも1つの検索パターンが検索パターンtrieに付加される。検索パターンが、一度に1文字づつ検索パターンtrieに付加される。この場合、各文字は1つの状態を示す。
ステップ140において、NFAが検索パターンtrieから作成される。検索パターンtrieは、リスト・フォーマットでNFAにより置換される。NFAは、検索パターンtrieから作成され、周知の方法によりリスト・フォーマットに置かれる。
ステップ150において、DFAがNFAから作成される。NFAは、リスト・フォーマットでDFAにより置換される。DFAは、NFAから作成され、周知の方法によりリスト・フォーマットに置かれる。
ステップ160において、DFAは、3つの別々のデータ構造に変換される。これら3つのデータ構造は、状態遷移表、状態マッチング・パターン・リスト毎のアレイ、およびNFAに対する各状態に対する別々の失敗ポインタ・リストを含む。すでに、状態表の各エントリは、その状態に対する遷移のベクトル、表のNFAバージョンに対する失敗ポインタ、および状態に対するマッチング・パターンのリストを含む。これらすべてのものは1つの構造内に含まれている。
ステップ170において、3つのデータ構造は、状態表として使用される。
DFAのエントリは、状態遷移表に変換される。状態ベクトルは各状態に割り当てられる。この方法の他の実施形態の場合には、状態ベクトルの各要素は16ビットである。すべての有効な文字のリストの各要素に対して状態ベクトルの状態遷移要素が存在する。すべての有効な文字のリストの各要素の状態が、状態ベクトルの各要素内にコピーされる。この方法の他の実施形態の場合には、状態ベクトル内に256の状態遷移要素が存在する。
この方法の他の実施形態の場合には、状態ベクトルの要素は、状態ベクトルのフォーマットを識別する。フォーマットは全およびバンド状を含むが、含むことができるものはこれらに限定されない。この方法の他の実施形態の場合には、状態ベクトルの要素は、状態ベクトルがマッチング・パターン状態を含むか否かを識別する。
この方法の他の実施形態の場合には、状態遷移要素は、バンド状行形式に格納される。バンドは、すべて有効な文字のリストからの第1の非ゼロ状態から、すべて有効な文字のリストからの最後の非ゼロ状態への要素のグループとして定義される。状態ベクトルは、各状態に割り当てられる。この方法の他の実施形態の場合には、状態ベクトルの各要素は16ビットである。状態ベクトルの状態遷移要素が、バンドの各要素に対して生成される。すべての有効な文字のリストからの第1の非ゼロ状態の索引を識別するために、状態ベクトルの要素が生成される。バンド内の要素の数を識別するために、状態ベクトルの要素が生成される。バンドの各要素の状態が、状態ベクトルの各状態遷移要素にコピーされる。
この方法の他の実施形態の場合には、状態ベクトルの要素は、状態ベクトルのフォーマットを識別する。この方法の他の実施形態の場合には、状態ベクトルの要素は、状態ベクトルがマッチング・パターン状態を含んでいるか否かを識別する。
本発明の一実施形態の場合には、状態ベクトルの全ベクトル・フォーマットは258の要素からなる。各要素は16ビットである。第1の要素は記憶フォーマットを識別する。
これらのフォーマットは全およびバンド状を含むが、含むことができるものはこれらに限定されない。第2の要素は、この状態ベクトルで任意のパターンが一致しているか否かを識別する。残りの256の要素は遷移要素である。
本発明の他の実施形態の場合には、状態ベクトルのスパース・バンド状ベクトル・フォーマットは、変えることができる数の要素からなるが、要素の数は300以下である。各要素は16ビットである。第1の要素は記憶フォーマットを識別する。これらのフォーマットは全およびバンド状を含むが、含むことができるものはこれらに限定されない。第2の要素は、この状態ベクトルで任意のパターンが一致しているか否かを識別する。第3の要素は、バンド内の要素の数である。第4の要素は、バンド内の第1の要素の索引である。残りの要素は遷移要素である。
本発明の他の実施形態の場合には、状態表は、最初に、パターンのリストに各パターンを付加することにより作成される。各パターンは大文字に変換され、後で使用するために検索エンジン内に格納される。これが、典型的なAho−Corasickアルゴリズムが生成する典型的な大文字/小文字を区別する検索の代わりに、大文字/小文字を区別しない検索を形成する最初のステップである。もとのおよび大文字のパターンはメモリ内に維持されていて、検索段階で両方を使用することができる。パターン・リストからの各パターンは、状態表に追加される。各パターンは、状態表に大文字で一度に1語ずつ付加される。文字は、状態に対するすべての有効な大文字を格納している各状態に対するリストに追加される。リストは、また、各文字に対する次の有効な状態パラメータを含む。次の有効な状態は、検索を次の状態に向けるために使用される。状態表のこのリストは、リスト・フォーマットを使用する検索パターンtrieである。
NFAが、trieから作成され、リスト・フォーマットでtrieリストがNFAにより置換される。NFA構造は、NFAに対する標準Aho−Corasick構造の後に位置する。DFAはNFAから作成され、NFAはリスト・フォーマットでDFAにより置換される。DFA構造は、DFAに対する標準Aho−Corasick構造の後に位置する。
次に、DFAは全ベクトル・フォーマットまたはバンド状ベクトル・フォーマットに変換される。全ベクトル・フォーマットの場合には、258の要素を含む状態ベクトルが各状態に対して生成される。各状態ベクトルは、フォーマット要素、ブール・パターン・マッチ要素、および256の状態遷移要素を保持する。各状態ベクトルの場合には、状態ベクトルのフォーマットは、フォーマット・フィールド値をゼロにセットすることにより満杯になる。状態ベクトルの各遷移要素の場合には、パターンと一致するまたはパターンと一致しないとして、それぞれ1または0を使用して、ブール・パターン・マッチ・フラグがセットされる。256の遷移要素が、各状態に対してゼロに初期化される。DFAからの有効な状態遷移のリストが、状態要素データ・エリア内のその各位置にコピーされる。例えば、文字「A」は、65の値を有し、「A」に対する状態が、遷移要素の65番目の位置に置かれる。
バンド状ベクトル・フォーマットの場合には、変更可能な数の要素を含む状態ベクトルが各状態に対して生成される。各状態ベクトルは、フォーマット要素、ブール・パターン・マッチ要素、バンド要素内の多数の要素、バンド内の第1の要素の索引、および状態遷移要素のバンドを保持する。DFAからの有効な状態遷移のリストがチェックされる。第1の非ゼロ要素から最後の非ゼロ要素への要素はバンドとして定義される。バンドは、状態ベクトルの状態遷移要素にコピーされる。バンド要素内の要素の数およびバンド内の第1の要素の索引も状態ベクトルに格納される。状態ベクトルのフォーマットは、バンド状または1にセットされる。状態ベクトルの各遷移要素の場合には、パターンと一致するま
たはパターンと一致しないとして、それぞれ1または0を使用してブール・パターン・マッチ・フラグがセットされる。
テキスト・シーケンスでの検索パターンに対する検索
図2は、本発明のある実施形態によるパターン・マッチング・アプリケーション内の状態マシン・アルゴリズムの状態表を使用するテキスト・シーケンスで検索パターンを検索するための方法200を示すフローチャートである。状態マシン・アルゴリズムは、例えば、Aho−Corasickアルゴリズムである。パターン・マッチング・アプリケーションは、侵入検出システム、パッシブ・ネットワーク監視装置、アクティブ・ネットワーク監視装置、プロトコル・アナライザ、および検索エンジンを含むが、含むことができるものはこれらに限定されない。
方法200のステップ210において、テキスト・シーケンスから文字が読み出される。この方法の一実施形態の場合には、文字は大文字に変換される。この変換により大文字/小文字を区別しない検索を行うことができる。
ステップ220において、文字に対応する状態表の現在の状態ベクトルの要素が読み出される。
ステップ230において、要素が非ゼロである場合には、マッチング・パターン・フラグに対する現在の状態ベクトルのパターン・マッチング要素がチェックされる。
ステップ240において、マッチング・パターン・フラグがセットされている場合には、パターン・マッチがログされる。
ステップ250において、要素の値に対応する現在の状態ベクトルが選択される。
次に、ステップ260において、テキスト・シーケンスから次の文字が読み出される。
この方法の他の実施形態の場合には、フォーマットを識別する現在の状態ベクトルの要素がチェックされる。フォーマットがバンド状である場合には、文字がバンド内に位置するか否かの判定が行われる。この判定は、バンド内の多数の要素を識別する現在の状態ベクトルの要素を使用して行われる。現在の状態ベクトルの要素は、バンドの第1の要素の索引およびバンドの要素を識別する。文字がバンド内に位置している場合には、要素の値に対応する現在の状態ベクトルが選択される。文字がバンド内に位置していない場合には、現在の状態ベクトルは、初期状態にセットされる。
この方法の他の実施形態の場合、マッチング・パターン・フラグがセットされている場合には、テキスト・シーケンスからのパターン・マッチの大文字/小文字を区別するバージョンと検索パターンの大文字/小文字を区別するバージョンとが比較される。テキスト・シーケンスからのパターン・マッチの大文字/小文字を区別するバージョンおよび検索パターンの大文字/小文字を区別するバージョンが一致する場合には、パターン・マッチの大文字/小文字を区別するバージョンがログされる。
状態表
図3は、本発明のある実施形態によるパターン・マッチング・アプリケーションで使用する状態マシン・アルゴリズムのための状態表300の構成要素の略図である。状態表300は、状態遷移表320、状態マッチング・パターン・リスト毎のアレイ330、およびNFAに対する各状態に対する失敗ポインタ・リスト340を含む。状態遷移表320は、各状態に対する状態ベクトルを含む。状態表300の一実施形態の場合には、状態ベクトルはスパース・ベクトル・フォーマットに格納される。スパース・ベクトル・フォーマットは、圧縮スパース・ベクトル・フォーマット、スパース行フォーマット、およびバンド状行フォーマットを含むが、含むことができるものはこれらに限定されない。状態マシン・アルゴリズムは、例えば、Aho−Corasickアルゴリズムである。状態表300および状態マシン・アルゴリズムは、侵入検出システム、パッシブ・ネットワーク
監視装置、アクティブ・ネットワーク監視装置、プロトコル・アナライザ、および検索エンジンを含むが、その他のものも含むことができるパターン・マッチング・アプリケーションで使用される。
性能メトリックス
アルゴリズム的または理論的メトリックスは、ハードウェアまたはソフトウェアから独立しているアルゴリズムの考慮に基づいている。最悪の場合の挙動は、アルゴリズム的メトリックスの一例である。通常、マルチパターン検索エンジンの最悪の場合の性能は、パターンのサイズおよび検索中のデータの長さに比例する。本発明の一実施形態は、IDS用のO(n)アルゴリズムであり、検索速度の表示は、検索中のデータの長さnに比例する。
計算メトリックスは、アルゴリズムが、稼働しているコンピュータ・ハードウェアとどのように相互作用するかのチェックに基づいている。考慮対象の有意なメトリックスは、命令の混合体、キャッシング特性およびパターン・グループ・サイズ、および検索テキストの長さである。命令混合体は、アルゴリズムが必要とするハードウェア命令のタイプである。高度な命令混合体は、効率的に動作する特殊目的の機械命令またはハードウェアを必要とするアルゴリズムを示す。本発明のある実施形態は、特殊な命令混合体要件を有していないので、大部分の汎用コンピュータ上でうまく稼働することができる。
アルゴリズムのキャッシング特性が、性能に有意に影響を与える場合がある。キャッシング性能の最も強力なインジケータは、キャッシュ・サイズおよびデータの位置である。データの位置は、アルゴリズムがキャッシュの内外で行うシーケンシャル・アクセス対ランダム・メモリ・アクセスの相対的な量により定義される。本発明のある実施形態は、状態表内である状態から他の状態にジャンプする。これらのジャンプはデータ駆動であり、本質的にランダムなものである。コンピュータ・キャッシュに状態表の小さな部分しか収容できない場合には、多くのキャッシュ・ミスが起こる可能性があり、キャッシュ・ミスは、キャッシュ・ヒットの10倍のコストがかかる場合がある。それ故、本発明のある実施形態の性能は、キャッシュのサイズ、および状態表をキャッシュに収容できるか否かにより大きく影響を受ける。理想的には、キャッシュは、状態表全体を収容できるほど十分大きく、必要に応じて検索データをキャッシュに収容できるだけの余裕があることが望ましい。この理想的な構成は、通常、状態表が小さい場合またはシステムが非常に大きなキャッシュを備えている場合にのみ達成される。状態表サイズは、検索に含まれるすべてのパターンの文字の全数に比例する。
パターン・マッチング性能を測定する際に考慮すべき最後の問題は、検索の問題の領域である。パターン・マッチャ(pattern matcher)は、検索テキストのサイズ、パターンの数、および検索の頻度を定義するために適用される。典型的なIDSの問題の領域は、周知の攻撃パターンに対するネットワーク・トラフィックの検索を必要とする。典型的なIDSで使用するパターン・グループ・サイズは、最大1,000またはそれ以上のパターンである。典型的なIDSは、各検索の際に平均600〜800バイトであるネットワーク・パケットを検索し、典型的なIDSは、この検索を毎秒最大200,000回行う。パターン検索の間に、典型的なIDSでは、潜在的にキャッシュをフラッシュする他の動作が行われる。パターン検索が開始する度に、各検索の場合に顕著な設定コストを表示することができるキャッシュを再度ロードしなければならない。全く対照的に、このタイプの検索は、非常に長いデータ・ストリームの逐次検索である。このタイプの検索を行うことにより、より高性能のキャッシュしたデータ・アクセスは、全検索性能を大きく改善することができる。辞書試験がこの挙動を実証している。
試験結果
Snortは例示としてのIDSである。Snortですでに使用した標準Aho−Corasickアルゴリズム、Snortで実施したフルマトリクス記憶装置を使用する
本発明のある実施形態、およびSnortで実施したバンド状行記憶装置を使用する本発明のある実施形態に対する試験結果を示す。
試験を2つのタイプのパターン検索試験に分割した。パターン検索エンジンの相対的な利点を実証するために辞書試験を行った。検索にテキストの長いストリームを供給するための選択した辞書試験を行い、最善の可能なキャッシュ性能を達成するための機会をソフトウェアに与えた。また、ネットワーク・トラフィック捕捉ファイルが使用され、Snortで実施したAho−Corasickアルゴリズムの3つすべてのバージョンの相対性能を示した。
辞書試験は、オンライン・キング・ジェームス・バイブル全体から1,000パターンを選択した。約2.3メガバイトのデータである1903年版のウェブスター大辞典を検索するために、10〜1,000のグループでこれらのパターンを使用した。これにより、多くのパターンがうまく一致したことが確認され、バイト試験およびマッチング・パターン・コードの両方を実行することにより、試験は検索ルーチンを完全にカバーした。
試験したAho−Corasickアルゴリズムの3つのバージョンは、(1)状態表をフルマトリクスとして処理するSnortですでに使用している標準バージョン、(2)フルマトリクス記憶装置を使用する本発明のある実施形態、(3)バンド状行記憶装置を使用する本発明のある実施形態を含む。
試験する各Aho−Corasickルーチンのいくつかの異なるコンパイルしたバージョンを含む試験ベッドを開発した。使用したコンパイラは、Microsoft(登録商標)Visual C++(登録商標)6.0(VC60)、Intel(登録商標)C6.0およびCygwin gcc 3.3.1を含んでいた。3つの異なるコンパイラを使用すると、検索アルゴリズムおよび格納方法の性能およびキャッシング挙動をより広く洞察することができる。
すべての結果は、Aho−CorasickアルゴリズムのDFAバージョンに対するものである。図4、図5および図6は、3つすべてのコンパイラに対する辞書試験の正確な結果を示す。図7、図8および図9は、標準Aho−Corasickアルゴリズムに対して正規化した結果を示す。図4〜図10の棒グラフの記号は同じものである。図4に示すように、AC410は、Snortですでに使用しているAho−Corasickアルゴリズムの標準バージョンの結果であり、AC OPT420は、フルマトリクス記憶装置を使用する本発明のある実施形態の結果であり、AC BAND430は、バンド状行記憶装置を使用する本発明のある実施形態の結果である。これらの試験は、1ギガバイトのRAMを含むDell(登録商標)8100 1.7GHzシステム上で16ビットの状態値を使用して行った。
3つすべてのコンパイラによる辞書試験における標準バージョンと比較すると、最適化したバージョンの性能は有意に優れていた。図4、図5および図6のコンパイラの結果を比較すると、生の性能においてはIntel(登録商標)コンパイラの性能が最も優れていた。標準Aho−Corasickの場合には、gccコンパイラの性能の方がVC60の性能より優れていたが、フルマトリクス記憶装置を使用する本発明のある実施形態およびバンド状行記憶装置を使用する本発明のある実施形態の場合には、VC60コンパイラの性能の方がgccコンパイラの性能より優れていた。
3つすべてのコンパイラは、類似の性能の傾向を示した。標準Aho−Corasickアルゴリズムと比較すると、フルマトリクス記憶装置を使用する本発明のある実施形態の速度は少なくとも1.4倍に改善した。例外はVC60コンパイラの場合で、もっと小
さなパターン・グループの場合、2.5倍に速度が改善した。また、フルマトリクス記憶装置を使用する本発明のある実施形態の処理速度が有意に増大する。実際に、バンド状行記憶装置を使用する本発明のある実施形態の性能は、最大のパターン・グループの場合に最も優れていた。3つすべてのコンパイラは、最大500パターンのすべてのパターン・グループ・サイズに対して、フルマトリクス記憶装置を使用する本発明のある実施形態が、バンド状行記憶装置を使用する本発明のある実施形態より高速であることを示した。1,000パターンの場合、3つすべてのコンパイラの場合、バンド状行記憶装置を使用する本発明のある実施形態の性能は、フルマトリクス記憶装置を使用する本発明のある実施形態の性能より優れていた。
図10は、異なるパターン・グループ・サイズに対する記憶装置要件を示し、図11は、表により結果を示す。これらの結果は16ビットの状態サイズを反映している。フルマトリクス記憶装置を使用する本発明のある実施形態は、状態値に対して16ビット語のサイズを使用しているために、標準Aho−Corasickアルゴリズムのメモリの半分しか使用しない。バンド状行記憶装置を使用する本発明のある実施形態は、標準Aho−Corasickアルゴリズムの記憶装置の約1/15、およびフルマトリクス記憶装置を使用する本発明のある実施形態の記憶装置の約1/7しか使用しない。
フルマトリクス記憶装置を使用する本発明のある実施形態、およびバンド状行記憶装置を使用する本発明のある実施形態は、16ビットの状態値または32ビットの状態値を使用することができる。16ビットの状態値は、216または65000の状態に制限される。32ビットの状態値は、232または40億の状態に制限される。16ビット状態を使用するメリットは、少ないメモリですむことである。図12、図13および図14は、3つのコンパイラに対するフルマトリクス記憶装置を使用する本発明のある実施形態の16ビット(AC OPT)および32ビット(AC OPT32)バージョンの性能の比較を示す。図12〜図14の棒グラフの記号は同じものである。図12に示すように、AC OPT1210は、フルマトリクス記憶装置を使用する本発明のある実施形態の16ビット・バージョンの結果を示し、AC OPT32 1220は、フルマトリクス記憶装置を使用する本発明のある実施形態の32ビット・バージョンを示す。図15、図16および図17は、3つのコンパイラに対するバンド状行記憶装置を使用する本発明のある実施形態の16ビット(AC BANDED)および32ビット(AC BANDED32)バージョンの性能の比較を示す。図15〜図17の棒グラフの記号は同じものである。図15に示すように、AC BANDED1510は、バンド状行記憶装置を使用する本発明のある実施形態の16ビット・バージョンの結果を示し、AC BANDED32
1520は、バンド状行記憶装置を使用する本発明のある実施形態の32ビット・バージョンを示す。
フルマトリクス記憶装置を使用する本発明のある実施形態およびバンド状行記憶装置を使用する本発明のある実施形態両方の16ビット・バージョンと32ビット・バージョンの間の違いは僅かなものである。VC60コンパイラは、すべてのパターン・サイズ間で最大の違いを示し、32ビット状態サイズが優れている。
Snortは、パケット当たりのデータが最大1460バイトである標準イーサーネット・ベースのネットワーク上でパケットを処理する。このタイプのデータ試験は、もっと小さな検索テキスト上で、また比較的キャッシュに好ましくない環境で、性能を検索し、設定コストを検索する。試験を、Snort内に前に捕捉したトラフィックを直接再生することにより行った。使用したコンパイラは、Linux上のIntel(登録商標)C6.0コンパイラであった。選択したテスト・ファイルは、約2ギガバイトのウェブ・セントリック・トラフィックを表していた。Snortを使用した場合には、各ウェブ要求の際にチェックしたトラフィックの量を選択することができるので、このテスト・ファイ
ルを選択した。試験は下記のように行った。各ウェブ・ページ要求の最初の300バイトをチェックするようにSnortを構成した。これが典型的なSnortの構成方法である。ユーザの処理時間を記録しながら、Unix時間コマンドを使用し、ファイルを通常の方法で処理した。次に、サーバから要求された場合に、各ウェブ・ページを完全にチェックするようにSnortを構成した。この場合も、Snortを実行し、ユーザ処理時間を記録した。時間の違いは、余分なデータをパターン・マッチするために必要な正味のパターン・マッチング時間を表していた。この試験は絶対的な性能を測定しなかった。この試験は、付加データの処理の際の各検索エンジンの相対性能の違いを示した。
テスト・ファイル試験を、Aho−CorasickアルゴリズムおよびWu−Manberアルゴリズムの各バージョンと一緒に行った。Snort内のWu−Manberアルゴリズムは、通常、平均的に非常に高速なアルゴリズムであるが、最悪の場合に優れたシナリオを有していなかった。このアルゴリズムを内蔵させたのは、Aho−Corasickアルゴリズムと比較した場合、その優れた平均的な場合の性能の相対的な利点を示すためである。
図18および図19は、標準Aho−Corasick上で、時間の違い、計算した速度、および性能が増大することを示す。図18〜図19の場合には、WUMANは、Wu−Manberアルゴリズムの結果を示し、ACは、Snortですでに使用しているAho−Corasickアルゴリズムの標準バージョンの結果を示し、AC OPTは、フルマトリクス記憶装置を使用する本発明のある実施形態の結果を示し、AC BANDは、バンド状行記憶装置を使用する本発明のある実施形態の結果を示す。16ビット状態サイズを使用するこれらの試験は、デュアル2.4GHz Xeon(登録商標)cpus、および2ギガバイトのRAMを備えるシステム上で行った。
フルマトリクス記憶装置を使用する本発明のある実施形態およびバンド状行記憶装置を使用する本発明のある実施形態は、標準Aho−CorasickアルゴリズムおよびWu−Manberアルゴリズムよりかなり高速である。Snort内のウェブ規則は、多くの小さな2バイトのパターンを含む。これにより、Wu−Manberアルゴリズムが、悪い文字シフト方法から利益を受けるのが防止される。
フルマトリクス記憶装置を使用する本発明のある実施形態は、31%(8.5/12.4)高速である。このことは、エンジンが同じ時間内に46%(12.4/8.5)多いパターン・マッチングを行うことができ、もとのアルゴリズムのメモリの半分しか必要としないことを意味する。バンド状行記憶装置を使用する本発明のある実施形態は、17%高速であり、20%性能が向上し、標準Aho−Corasickアルゴリズムのメモリの約1/4しか使用しない。
本発明のある実施形態によれば、ある方法を実行するためにプロセッサが実行するように構成された命令は、コンピュータ可読媒体上に格納される。コンピュータ可読媒体は、デジタル情報を格納するデバイスであってもよい。例えば、コンピュータ可読媒体は、ソフトウェアを格納するための当業者であれば周知のコンパクト・ディスク読出し専用メモリ(CD−ROM)を含む。コンピュータ可読媒体には、実行するように構成されている命令を実行するのに適しているプロセッサによりアクセスすることができる。「実行するように構成されている命令」という用語、および「実行される命令」という用語は、プロセッサがそのままの形(例えば、機械コード)ですぐに実行することができる、またはプロセッサがすぐに実行することができるように他の操作(例えば、コンパイル、解読またはアクセス・コードを備えていること等)を必要とする任意の命令を含むことを意味する。
本明細書に開示する本発明のある実施形態による方法は、IDSでのパターン・マッチングの性能を有利に改善することができる。あるパターン・マッチング方法は、性能を有意に改善するAho−Corasick状態表の最適化したベクトル実施を使用する。他の方法は、メモリ要件を低減するためにスパース・マトリクス記憶装置を使用し、大きなパターン・グループ上での性能をさらに改善する。
本発明の好ましい実施形態の上記開示は、本発明を説明し、記述するためのものである。上記開示はすべてを余さず網羅しているものでもなければ、本発明を開示した正確な形に制限するものでもない。上記開示を読めば、通常の当業者であれば、上記実施形態の多くの変更および修正を思い付くだろう。本発明の範囲は、添付の特許請求の範囲およびその等価物によってだけ定義される。
さらに、本発明の代表的な実施形態を説明する際には、本明細書は本発明の方法および/またはプロセスをステップの特定のシーケンスとして表示することができる。しかし、方法またはプロセスが本明細書に記載するステップの特定の順序に依存しなくなるほど、方法またはプロセスを上記ステップの特定のシーケンスに限定すべきではない。通常の当業者であれば理解できると思うが、ステップは他の順序で使用することもできる。それ故、本明細書に記載するステップの特定の順序は、特許請求の範囲に対する制限であると解釈すべきではない。さらに、本発明の方法および/またはプロセスに関する特許請求の範囲は、記載の順序のそのステップの実行に制限すべきではなく、当業者であれば、このシーケンスは変更することができ、変更しても本発明の精神および範囲に含まれることを容易に理解することができるだろう。
本発明のある実施形態によるパターン・マッチング・アプリケーション内の状態マシン・アルゴリズムの状態表を作成するための方法を示すフローチャート。 本発明のある実施形態によるパターン・マッチング・アプリケーション内の状態マシン・アルゴリズムの状態表を使用するテキスト・シーケンスで検索パターンを検索するための方法を示すフローチャート。 本発明のある実施形態によるパターン・マッチング・アプリケーション内で使用する状態マシン・アルゴリズムのための状態表の構成要素の略図。 Snortで使用する標準Aho−Corasickアルゴリズムを使用する辞書検索のための例示としての試験結果、フルマトリクス記憶装置を使用する本発明のある実施形態、およびIntel(登録商標)C6.0コンパイラですべてコンパイルしたバンド状行記憶装置を使用する本発明のある実施形態を示す棒グラフ。 Snortで使用する標準Aho−Corasickアルゴリズムを使用する辞書検索のための例示としての試験結果、フルマトリクス記憶装置を使用する本発明のある実施形態、およびCygwin gcc 3.3.1コンパイラですべてコンパイルしたバンド状行記憶装置を使用する本発明のある実施形態を示す棒グラフ。 Snortで使用する標準Aho−Corasickアルゴリズムを使用する辞書検索のための例示としての試験結果、フルマトリクス記憶装置を使用する本発明のある実施形態、およびMicrosoft(登録商標)Visual C++(登録商標)6.0コンパイラですべてコンパイルしたバンド状行記憶装置を使用する本発明のある実施形態を示す棒グラフ。 Snortで使用する標準Aho−Corasickアルゴリズムを使用する辞書検索のための例示としての試験結果、フルマトリクス記憶装置を使用する本発明のある実施形態、およびIntel(登録商標)C6.0コンパイラですべてコンパイルし、Snortで使用する標準Aho−Corasickアルゴリズムの結果に正規化したバンド状行記憶装置を使用する本発明のある実施形態を示す棒グラフ。 Snortで使用する標準Aho−Corasickアルゴリズムを使用する辞書検索のための例示としての試験結果、フルマトリクス記憶装置を使用する本発明のある実施形態、およびCygwin gcc 3.3.1コンパイラですべてコンパイルし、Snortで使用する標準Aho−Corasickアルゴリズムの結果に正規化したバンド状行記憶装置を使用する本発明のある実施形態を示す棒グラフ。 Snortで使用する標準Aho−Corasickアルゴリズムを使用する辞書検索のための例示としての試験結果、フルマトリクス記憶装置を使用する本発明のある実施形態、およびMicrosoft(登録商標)Visual C++(登録商標)6.0コンパイラですべてコンパイルし、Snortで使用する標準Aho−Corasickアルゴリズムの結果に正規化したバンド状行記憶装置を使用する本発明のある実施形態を示す棒グラフ。 Snortで使用する標準Aho−Corasickアルゴリズムを使用する辞書検索のための例示としての記憶装置要件、フルマトリクス記憶装置を使用する本発明のある実施形態、バンド状行記憶装置を使用する本発明のある実施形態を示す棒グラフ。 Snortで使用する標準Aho−Corasickアルゴリズムを使用する辞書検索のための例示としての記憶装置要件、フルマトリクス記憶装置を使用する本発明のある実施形態、バンド状行記憶装置を使用する本発明のある実施形態を示す表。 両方ともIntel(登録商標)C6.0コンパイラでコンパイルされた16ビットおよび32ビットの状態値を含むフルマトリクス記憶装置を使用する本発明のある実施形態を使用する辞書検索のための例示としての試験結果を示す棒グラフ。 両方ともCygwin gcc 3.3.1コンパイラでコンパイルした16ビットおよび32ビットの状態値を含むフルマトリクス記憶装置を使用する本発明のある実施形態を使用する辞書検索のための例示としての試験結果を示す棒グラフ。 両方ともMicrosoft(登録商標)Visual C++(登録商標)6.0コンパイラでコンパイルした16ビットおよび32ビットの状態値を含むフルマトリクス記憶装置を使用する本発明のある実施形態を使用する辞書検索のための例示としての試験結果を示す棒グラフ。 両方ともIntel(登録商標)C6.0コンパイラでコンパイルした16ビットおよび32ビットの状態値を含むバンド状行記憶装置を使用する本発明のある実施形態を使用する辞書検索のための例示としての試験結果を示す棒グラフ。 両方ともCygwin gcc 3.3.1コンパイラでコンパイルした16ビットおよび32ビットの状態値を含むバンド状行記憶装置を使用する本発明のある実施形態を使用する辞書検索のための例示としての試験結果を示す棒グラフ。 両方ともMicrosoft(登録商標)Visual C++(登録商標)6.0コンパイラでコンパイルした、16ビットおよび32ビットの状態値を含むバンド状行記憶装置を使用する本発明のある実施形態を使用する辞書検索のための例示としての試験結果を示す棒グラフ。 Wu−Manberアルゴリズムを使用するウェブ・セントリック・ネットワーク・トラフィックの2つのG−バイト・ファイルの検索の例示としての試験結果、Snortで使用する標準Aho−Corasickアルゴリズム、フルマトリクス記憶装置を使用する本発明のある実施形態、およびバンド状行記憶装置を使用する本発明のある実施形態を示す表。 Wu−Manberアルゴリズムを使用するウェブ・セントリック・ネットワーク・トラフィックの2つのG−バイト・ファイルの検索の例示としての試験結果、Snortで使用する標準Aho−Corasickアルゴリズム、フルマトリクス記憶装置を使用する本発明のある実施形態、およびバンド状行記憶装置を使用する本発明のある実施形態を示す棒グラフ。

Claims (21)

  1. 主メモリとプロセッサを備えるコンピュータが、パターン・マッチング・アプリケーション内の状態マシン・アルゴリズムの状態表を作成するための作成方法であって、前記プロセッサは、メモリ・キャッシュを備え、前記作成方法は、
    前記コンピュータが、少なくとも1つの検索パターンとしての検索テキスト、前記プロセッサに入力するステップ(110)と;
    前記プロセッサが、検索パターンtrieを生成するパターン生成ステップ(120)であって、前記検索パターンtrieは、前記状態マシン・アルゴリズムの状態それぞれに対するすべて有効な文字の有効文字リストからなることと;
    前記プロセッサが、前記検索パターンtrieに少なくとも1つの前記検索パターンを付加するパターン付加ステップ(130)と;
    前記プロセッサが、前記検索パターンtrieから非決定性有限オートマトンを作成する非決定性ステップ(140)と;
    前記プロセッサが、前記非決定性有限オートマトンから決定性有限オートマトンを作成する決定性ステップ(150)と;
    前記プロセッサが、前記決定性有限オートマトンを、状態遷移表(320)と、状態マッチング・パターン・リスト毎のアレイ(330)と、前記非決定性有限オートマトンの各状態に対する別々の失敗ポインタ・リスト(340)とを有する別々のデータ構造に変換する変換ステップ(160)であって、前記状態マッチング・パターン・リスト毎のアレイ(330)は、各状態におけるマッチングパターンを有するリストを格納するアレイであり、失敗ポインタは、状態遷移が失敗した場合の遷移先へのポインタであり、前記非決定性有限オートマトンの各状態に対する別々の失敗ポインタ・リスト(340)は、前記非決定性有限オートマトンの各状態からの状態遷移が失敗した場合の前記失敗ポインタを格納するリストであり、前記データ構造は、前記状態遷移表(320)が前記主メモリ内ではなく前記メモリ・キャッシュ内で操作されるように構成されること
    を有し、
    前記プロセッサは、前記プロセッサにテキスト・シーケンスが入力された場合に、前記状態遷移表(320)が前記主メモリ内ではなく、前記メモリ・キャッシュ内で操作されることによって、前記検索パターンを検索するように構成されることを特徴とする、作成方法。
  2. 前記有効文字リストの要素はそれぞれ、有効な文字と、次の有効な状態とを有し、
    少なくとも1つの前記検索パターンに一度に1文字が付加され、
    記検索パターンtrie、リスト・フォーマットの前記非決定性有限オートマトンであるリストフォーマット非決定性有限オートマトンに置され
    前記リストフォーマット非決定性有限オートマトンは、前記リスト・フォーマットの前記決定性有限オートマトンに置される
    請求項1記載の作成方法。
  3. 前記作成方法はさらに、前記プロセッサが、少なくとも1つの前記検索パターンの文字を大文字に変換するステップを有する、
    請求項1記載の作成方法。
  4. 前記すべての有効な文字は、すべての有効な大文字である、
    請求項1記載の作成方法。
  5. 前記状態マシン・アルゴリズムは、Aho−Corasickアルゴリズムである
    請求項1記載の作成方法。
  6. 前記パターン・マッチング・アプリケーションは、侵入検出システム、パッシブ・ネットワーク監視装置、アクティブ・ネットワーク監視装置、プロトコル・アナライザ、および検索エンジンのうちの1つを有する、
    請求項1記載の作成方法。
  7. 記変換ステップ(160)は、
    状態それぞれに状態ベクトルを割り当てるステップであって、前記有効文字リストの要素それぞれに対する前記状態ベクトルは、状態遷移要素を有することと;
    前記有効文字リストの要素それぞれの次の有効な状態を、前記状態遷移要素それぞれにコピーするステップと
    を有する、
    請求項1記載の作成方法。
  8. 前記状態ベクトルは、256の前記状態遷移要素を有する、
    請求項7記載の作成方法。
  9. 前記状態遷移要素は、16ビットである、
    請求項7記載の作成方法。
  10. 前記状態ベクトルの要素は、前記状態ベクトルのフォーマットを識別するために使用される
    請求項7記載の作成方法。
  11. 前記状態ベクトルのフォーマットは、全ベクトル・フォーマットであって、
    前記全ベクトル・フォーマットは、各状態からの遷移先のリストを圧縮しないフォーマットである
    請求項10記載の作成方法。
  12. 前記状態ベクトルの要素は、前記状態ベクトルがマッチング・パターン状態を有するか否か識別するために使用される
    請求項7記載の作成方法。
  13. 前記変換ステップ(160)は、
    前記有効文字リストからの第1の非ゼロの次の有効な状態から、前記有効文字リストからの最後の非ゼロの次の有効な状態までの要素のリストを、バンドとして定義するステップと;
    各状態に対して1つの状態ベクトルを割り当てるステップであって、前記バンドの要素それぞれに対する前記状態ベクトルは、状態遷移要素を有することと;
    前記第1の非ゼロの次の有効な状態の索引を識別するために、前記状態ベクトルの要素を生成するステップと;
    前記バンド内で多数の要素を識別するために前記状態ベクトルの要素を生成するステップと;
    前記バンドの要素それぞれの次の有効な状態を、前記状態遷移要素それぞれにコピーするステップと
    を有する、
    請求項1記載の作成方法。
  14. 前記状態ベクトルの要素はそれぞれ、16ビットである、
    請求項13記載の作成方法。
  15. 前記状態ベクトルの要素は、前記状態ベクトルのフォーマットを識別するために使用される
    請求項13記載の作成方法。
  16. 前記状態ベクトルのフォーマットは、バンド状フォーマットであり、
    前記バンド状行フォーマットは、第1の非ゼロ値から最後の非ゼロ値までの要素と、前記要素の数と、前記非ゼロ値の数とを有する、
    請求項15記載の作成方法。
  17. 前記状態ベクトルの要素は、前記状態ベクトルがマッチング・パターン状態を有するか否かを識別するために使用される
    請求項16記載の作成方法。
  18. パターン・マッチング・アプリケーション内の状態マシン・アルゴリズムの状態表を使用してテキスト・シーケンス内の検索パターンを、主メモリとプロセッサとを備えるコンピュータが、検索するための検索方法であって、前記状態表は、状態遷移表(320)と、状態マッチング・パターン・リスト毎のアレイ(330)と、非決定性有限オートマトンの各状態に対する別々の失敗ポインタ・リスト(340)とを有する別々のデータ構造からなり、前記状態マッチング・パターン・リスト毎のアレイ(330)は、各状態におけるマッチングパターンのリストを格納するアレイであり、失敗ポインタは、状態遷移が失敗した場合の遷移先へのポインタであり、前記非決定性有限オートマトンの各状態に対する別々の失敗ポインタ・リスト(340)は、前記非決定性有限オートマトンの各状態からの状態遷移が失敗した場合の前記失敗ポインタを格納するリストであり、前記プロセッサは、メモリ・キャッシュを備え、前記検索方法は、
    前記プロセッサが、前記テキスト・シーケンスから第1の文字を読出す第1文字読出ステップ(210)と;
    前記プロセッサが、前記状態遷移表(320)の現在の状態ベクトルの要素を読出す要素読出ステップ(220)であって、現在の前記状態ベクトルの要素は、前記第1の文字に対応し、前記状態遷移表(320)は、前記主メモリ内ではなく、前記メモリ・キャッシュ内で操作されることと;
    現在の前記状態ベクトルの要素が非ゼロの値である場合に、マッチング・パターン・フ
    ラグのために、前記プロセッサが、現在の前記状態ベクトルのパターン・マッチング要素をチェックするチェックステップ(230)と;
    前記マッチング・パターン・フラグがセットされている場合に、侵入を検出するために、前記プロセッサが、侵入検出システムにおける前記テキスト・シーケンスからのパターン・マッチングを処理する処理ステップ(240)と
    前記プロセッサが、現在の前記状態ベクトルの要素の非ゼロの値に対応する現在の前記状態ベクトルを選択する選択ステップ(250)と;
    前記プロセッサが、前記第1の文字の次の文字である第2の文字前記テキスト・シーケンスから読出す第2文字読出ステップ(260)と;
    前記プロセッサが、現在の前記状態ベクトルの要素をチェックすることによって、現在の前記状態ベクトルのフォーマットを識別する識別ステップと
    を有し、
    バンド状行フォーマットを、第1の非ゼロ値から最後の非ゼロ値までの要素と、現在の前記状態ベクトルの要素の数と、前記第1の非ゼロ値から前記最後の非ゼロ値までの要素の数とを有する前記状態ベクトルのフォーマットとすると、
    前記検索方法はさらに、前記状態ベクトルのフォーマットが前記バンド状行フォーマットである場合には、バンド内の要素の数を識別する現在の前記状態ベクトルの要素と、前記バンドの第1の要素の索引を識別する現在の前記状態ベクトルの要素と、前記バンドの要素とから、前記文字がバンド内に位置するか否か、前記プロセッサが、判定するステップと;
    前記文字が前記バンド内に位置している場合には、現在の前記状態ベクトルの要素の非ゼロの値に対応する現在の前記状態ベクトルを、前記プロセッサが、選択するステップと;
    前記文字が前記バンド内に位置していない場合には、前記プロセッサが、現在の前記状態ベクトルを初期状態にセットするステップと
    を有し、
    全ベクトル・フォーマットを、各状態からの遷移先のリストを圧縮しないフォーマットとすると、
    前記検索方法はさらに、前記状態ベクトルのフォーマットが前記バンド状行フォーマットではない場合には、前記プロセッサが、前記全ベクトル・フォーマットにしたがって前記文字を操作するステップを有することを特徴とする、検索方法。
  19. 前記検索方法はさらに、
    前記要素読出ステップ(220)の前に、前記プロセッサが、前記第1の文字を大文字に変換するステップと;
    前記第2文字読出ステップ(260)の前に、前記プロセッサが、前記第2の文字を大文字に変換するステップとを有する、
    請求項18記載の検索方法。
  20. 前記パターン・マッチングの大文字小文字を区別するバージョンを、第1バージョンとし、
    検索パターンの大文字小文字を区別するバージョンを、第2バージョンとすると、
    前記検索方法はさらに、
    前記マッチング・パターン・フラグがセットされている場合に、前記プロセッサが、前記第1バージョンを、前記第2バージョンと比較するステップと;
    前記マッチング・パターン・フラグがセットされ且つ前記第1バージョンが前記第2バージョンに一致する場合に、前記プロセッサが、前記第1バージョンをログするステップと
    を有する、
    請求項19記載の検索方法。
  21. 前記状態マシン・アルゴリズムは、Aho−Corasickアルゴリズムである、
    請求項18記載の検索方法。
JP2007523640A 2004-07-26 2005-07-20 マルチパターン検索のための方法およびシステム Expired - Fee Related JP4855400B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/898,220 2004-07-26
US10/898,220 US7539681B2 (en) 2004-07-26 2004-07-26 Methods and systems for multi-pattern searching
PCT/US2005/025584 WO2006020290A2 (en) 2004-07-26 2005-07-20 Methods and systems for multi-pattern searching

Publications (2)

Publication Number Publication Date
JP2008507789A JP2008507789A (ja) 2008-03-13
JP4855400B2 true JP4855400B2 (ja) 2012-01-18

Family

ID=35658488

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007523640A Expired - Fee Related JP4855400B2 (ja) 2004-07-26 2005-07-20 マルチパターン検索のための方法およびシステム

Country Status (5)

Country Link
US (3) US7539681B2 (ja)
EP (1) EP1779268A4 (ja)
JP (1) JP4855400B2 (ja)
CA (1) CA2572360A1 (ja)
WO (1) WO2006020290A2 (ja)

Families Citing this family (97)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8010469B2 (en) * 2000-09-25 2011-08-30 Crossbeam Systems, Inc. Systems and methods for processing data flows
US9525696B2 (en) 2000-09-25 2016-12-20 Blue Coat Systems, Inc. Systems and methods for processing data flows
US9800608B2 (en) 2000-09-25 2017-10-24 Symantec Corporation Processing data flows with a data flow processor
US20110213869A1 (en) * 2000-09-25 2011-09-01 Yevgeny Korsunsky Processing data flows with a data flow processor
US20100042565A1 (en) * 2000-09-25 2010-02-18 Crossbeam Systems, Inc. Mezzazine in-depth data analysis facility
US20020165947A1 (en) * 2000-09-25 2002-11-07 Crossbeam Systems, Inc. Network application apparatus
US20110219035A1 (en) * 2000-09-25 2011-09-08 Yevgeny Korsunsky Database security via data flow processing
US20070192863A1 (en) * 2005-07-01 2007-08-16 Harsh Kapoor Systems and methods for processing data flows
US20110214157A1 (en) * 2000-09-25 2011-09-01 Yevgeny Korsunsky Securing a network with data flow processing
US7737134B2 (en) * 2002-03-13 2010-06-15 The Texas A & M University System Anticancer agents and use
US7801980B1 (en) 2003-05-12 2010-09-21 Sourcefire, Inc. Systems and methods for determining characteristics of a network
US8321512B2 (en) * 2003-08-22 2012-11-27 Geobytes, Inc. Method and software product for identifying unsolicited emails
GB0320176D0 (en) * 2003-08-28 2003-10-01 Syngenta Participations Ag Avermectins and avermectin monosaccharides substitued in the 4'-and 4"-positionhaving pesticidal properties
US8176051B2 (en) * 2004-05-27 2012-05-08 International Business Machines Corporation Search via fast case insensitive ASCII tree
US7539681B2 (en) * 2004-07-26 2009-05-26 Sourcefire, Inc. Methods and systems for multi-pattern searching
US7600257B2 (en) 2004-10-13 2009-10-06 Sonicwall, Inc. Method and an apparatus to perform multiple packet payloads analysis
US7835361B1 (en) 2004-10-13 2010-11-16 Sonicwall, Inc. Method and apparatus for identifying data patterns in a file
JP4535130B2 (ja) * 2004-12-09 2010-09-01 三菱電機株式会社 文字列照合装置および文字列照合プログラム
US20060259498A1 (en) * 2005-05-11 2006-11-16 Microsoft Corporation Signature set content matching
US7979368B2 (en) * 2005-07-01 2011-07-12 Crossbeam Systems, Inc. Systems and methods for processing data flows
US20080229415A1 (en) * 2005-07-01 2008-09-18 Harsh Kapoor Systems and methods for processing data flows
US7487150B2 (en) * 2005-07-02 2009-02-03 International Business Machines Corporation Method for matching pattern-based data
FR2892847B1 (fr) * 2005-11-03 2007-12-21 St Microelectronics Sa Procede de memorisation de donnees dans un circuit de memoire pour automate de reconnaissance de caracteres de type aho-corasick et citcuit de memorisation correspondant.
US7934255B1 (en) * 2005-11-08 2011-04-26 Nvidia Corporation Apparatus, system, and method for offloading packet classification
US7818806B1 (en) * 2005-11-08 2010-10-19 Nvidia Corporation Apparatus, system, and method for offloading pattern matching scanning
US7733803B2 (en) * 2005-11-14 2010-06-08 Sourcefire, Inc. Systems and methods for modifying network map attributes
US7805392B1 (en) 2005-11-29 2010-09-28 Tilera Corporation Pattern matching in a multiprocessor environment with finite state automaton transitions based on an order of vectors in a state transition table
US8010481B2 (en) * 2006-03-07 2011-08-30 The Regents Of The University Of California Pattern matching technique for high throughput network processing
GB2437560A (en) * 2006-04-28 2007-10-31 Roke Manor Research Constructing Aho Corasick trees
US7877401B1 (en) * 2006-05-24 2011-01-25 Tilera Corporation Pattern matching
US7725510B2 (en) * 2006-08-01 2010-05-25 Alcatel-Lucent Usa Inc. Method and system for multi-character multi-pattern pattern matching
US8145650B2 (en) * 2006-08-18 2012-03-27 Stanley Hyduke Network of single-word processors for searching predefined data in transmission packets and databases
US8191056B2 (en) * 2006-10-13 2012-05-29 International Business Machines Corporation Sparse vectorization without hardware gather/scatter
KR100832539B1 (ko) 2006-12-06 2008-05-27 한국전자통신연구원 다중패턴을 지원하지 않는 패턴보드를 이용한 다중패턴검색 방법 및 장치
US7630982B2 (en) 2007-02-24 2009-12-08 Trend Micro Incorporated Fast identification of complex strings in a data stream
US8863286B1 (en) 2007-06-05 2014-10-14 Sonicwall, Inc. Notification for reassembly-free file scanning
US7991723B1 (en) 2007-07-16 2011-08-02 Sonicwall, Inc. Data pattern analysis using optimized deterministic finite automaton
US7805393B1 (en) 2007-07-30 2010-09-28 Netlogic Microsystems, Inc. Assigning encoded state values to a search tree according to failure chains
US7610269B1 (en) * 2007-07-30 2009-10-27 Netlogic Microsystems, Inc. Method and apparatus for constructing a failure tree from a search tree
WO2009052039A1 (en) * 2007-10-16 2009-04-23 University Of Florida Research Foundation, Inc. Efficient intrusion detection
CN101499064A (zh) * 2008-02-01 2009-08-05 华为技术有限公司 建立模式匹配状态机的方法及装置
US7949679B2 (en) * 2008-03-05 2011-05-24 International Business Machines Corporation Efficient storage for finite state machines
CN101551803A (zh) * 2008-03-31 2009-10-07 华为技术有限公司 一种建立模式匹配状态机、模式识别的方法和装置
US8612723B2 (en) * 2008-05-06 2013-12-17 L-3 Communications Integrated Systems, L.P. System and method for storing a sparse matrix
US8620845B2 (en) * 2008-09-24 2013-12-31 Timothy John Stoakes Identifying application metadata in a backup stream
US8813221B1 (en) 2008-09-25 2014-08-19 Sonicwall, Inc. Reassembly-free deep packet inspection on multi-core hardware
US8272055B2 (en) * 2008-10-08 2012-09-18 Sourcefire, Inc. Target-based SMB and DCE/RPC processing for an intrusion detection system or intrusion prevention system
US20100318980A1 (en) * 2009-06-13 2010-12-16 Microsoft Corporation Static program reduction for complexity analysis
US9769149B1 (en) 2009-07-02 2017-09-19 Sonicwall Inc. Proxy-less secure sockets layer (SSL) data inspection
JP5090408B2 (ja) 2009-07-22 2012-12-05 インターナショナル・ビジネス・マシーンズ・コーポレーション ネットワーク通信において送信データの宛先を動的に制御する方法及び機器
US8321435B2 (en) * 2009-08-12 2012-11-27 Apple Inc. Quick find for data fields
US9141507B2 (en) * 2009-12-23 2015-09-22 Microsoft Technology Licensing, Llc Visualization of states of a process
JP5809238B2 (ja) 2010-04-16 2015-11-10 シスコ テクノロジー,インコーポレイテッド 準リアルタイムネットワーク攻撃検出のためのシステムおよび方法、ならびに検出ルーティングによる統合検出のためのシステムおよび方法
US20130204582A1 (en) * 2010-05-17 2013-08-08 Dh Technologies Development Pte. Ltd Systems and Methods for Feature Detection in Mass Spectrometry Using Singular Spectrum Analysis
US8433790B2 (en) 2010-06-11 2013-04-30 Sourcefire, Inc. System and method for assigning network blocks to sensors
US8671182B2 (en) 2010-06-22 2014-03-11 Sourcefire, Inc. System and method for resolving operating system or service identity conflicts
US8904352B2 (en) * 2010-06-23 2014-12-02 Sap Se Systems and methods for processing source code during debugging operations
US8589405B1 (en) 2010-07-16 2013-11-19 Netlogic Microsystems, Inc. Token stitcher for a content search system having pipelined engines
US8700593B1 (en) * 2010-07-16 2014-04-15 Netlogic Microsystems, Inc. Content search system having pipelined engines and a token stitcher
US8572106B1 (en) 2010-07-16 2013-10-29 Netlogic Microsystems, Inc. Memory management in a token stitcher for a content search system having pipelined engines
JP5496853B2 (ja) 2010-10-29 2014-05-21 インターナショナル・ビジネス・マシーンズ・コーポレーション 構造化文書を分類するためのルールを生成するための方法、並びにそのコンピュータ・プログラム及びコンピュータ
US8862603B1 (en) 2010-11-03 2014-10-14 Netlogic Microsystems, Inc. Minimizing state lists for non-deterministic finite state automatons
US8601034B2 (en) 2011-03-11 2013-12-03 Sourcefire, Inc. System and method for real time data awareness
US8990259B2 (en) * 2011-06-24 2015-03-24 Cavium, Inc. Anchored patterns
CN102609450B (zh) * 2012-01-10 2014-07-23 顾乃杰 一种按字长匹配的多模式串匹配方法
US9280600B2 (en) * 2012-03-20 2016-03-08 Yissum Research Development Company Of The Hebrew University Of Jerusalem Ltd. Method and system for decompression-free inspection of shared dictionary compressed traffic over HTTP
US9098620B2 (en) * 2012-05-12 2015-08-04 Palo Alto Research Center Incorporated System and method for parallel model checking utilizing parallel structured duplicate detection
US20150161266A1 (en) * 2012-06-28 2015-06-11 Google Inc. Systems and methods for more efficient source code searching
US9389841B2 (en) 2012-07-18 2016-07-12 Micron Technology, Inc. Methods and systems for using state vector data in a state machine engine
US8943085B2 (en) * 2012-10-05 2015-01-27 Lsi Corporation Start pointer tracking in NFAs
US9558224B2 (en) * 2014-01-09 2017-01-31 Netronome Systems, Inc. Automaton hardware engine employing memory-efficient transition table indexing
US10362093B2 (en) * 2014-01-09 2019-07-23 Netronome Systems, Inc. NFA completion notification
US9465651B2 (en) * 2014-01-09 2016-10-11 Netronome Systems, Inc. Transactional memory having local CAM and NFA resources
US9417656B2 (en) * 2014-01-09 2016-08-16 Netronome Systems, Inc. NFA byte detector
US9405910B2 (en) * 2014-06-02 2016-08-02 Shape Security, Inc. Automatic library detection
US10885089B2 (en) * 2015-08-21 2021-01-05 Cortical.Io Ag Methods and systems for identifying a level of similarity between a filtering criterion and a data item within a set of streamed documents
US10496642B2 (en) * 2014-10-03 2019-12-03 The Regents Of The University Of Michigan Querying input data
US10339141B2 (en) 2014-10-03 2019-07-02 The Regents Of The University Of Michigan Detecting at least one predetermined pattern in stream of symbols
US9760538B2 (en) * 2014-12-22 2017-09-12 Palo Alto Research Center Incorporated Computer-implemented system and method for efficient sparse matrix representation and processing
US9602525B2 (en) 2015-02-27 2017-03-21 Cisco Technology, Inc. Classification of malware generated domain names
CN106067039B (zh) * 2016-05-30 2019-01-29 桂林电子科技大学 基于决策树剪枝的模式匹配方法
CN106130762A (zh) * 2016-06-23 2016-11-16 昆山九华电子设备厂 一种基于有穷自动机的网络训练综合分析方法
US10572221B2 (en) 2016-10-20 2020-02-25 Cortical.Io Ag Methods and systems for identifying a level of similarity between a plurality of data representations
CN108021569A (zh) * 2016-11-01 2018-05-11 中国移动通信有限公司研究院 Ac自动机的构建和中文多模式匹配方法及相关装置
CN107229759B (zh) * 2017-07-27 2020-08-11 深圳市乐宜科技有限公司 一种字符串模式匹配的方法
US9967272B1 (en) 2017-12-05 2018-05-08 Redberry Systems, Inc. Real-time regular expression search engine
US10033750B1 (en) 2017-12-05 2018-07-24 Redberry Systems, Inc. Real-time regular expression search engine
CN108304467B (zh) * 2017-12-27 2021-08-10 中国银联股份有限公司 用于文本间匹配的方法
US11418522B1 (en) * 2018-01-22 2022-08-16 United Services Automobile Association (Usaa) Systems and methods for detecting keyboard characteristics
CN110442321B (zh) * 2019-07-19 2021-05-11 南京芯驰半导体科技有限公司 一种预取fifo电路及方法
US11194840B2 (en) 2019-10-14 2021-12-07 Microsoft Technology Licensing, Llc Incremental clustering for enterprise knowledge graph
US11709878B2 (en) 2019-10-14 2023-07-25 Microsoft Technology Licensing, Llc Enterprise knowledge graph
US11216492B2 (en) * 2019-10-31 2022-01-04 Microsoft Technology Licensing, Llc Document annotation based on enterprise knowledge graph
US11734332B2 (en) 2020-11-19 2023-08-22 Cortical.Io Ag Methods and systems for reuse of data item fingerprints in generation of semantic maps
US11782983B1 (en) * 2020-11-27 2023-10-10 Amazon Technologies, Inc. Expanded character encoding to enhance regular expression filter capabilities
KR102271489B1 (ko) * 2020-12-04 2021-07-02 (주)소만사 정규표현식 패턴의 탐지를 위한 아호코라식 오토마타 구축 장치 및 방법
US20220207085A1 (en) * 2020-12-29 2022-06-30 Imperva, Inc. Data classification technology

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6244878A (ja) * 1985-08-23 1987-02-26 Hitachi Ltd 文書フアイリングシステム
JPH07129369A (ja) * 1993-10-29 1995-05-19 Matsushita Electric Ind Co Ltd 有限状態機械作成方法とパターン照合機械作成方法とこ れらを変形する方法および駆動方法
JPH0887528A (ja) * 1995-09-11 1996-04-02 Hitachi Ltd 文書ファイリングシステム
JPH1069493A (ja) * 1996-08-29 1998-03-10 Matsushita Electric Ind Co Ltd 辞書作成装置と語切り出し装置
JPH10105576A (ja) * 1996-06-27 1998-04-24 Fujitsu Ltd スパースな状態遷移表に基づく複数記号列の照合装置および方法

Family Cites Families (143)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59195179A (ja) 1983-04-20 1984-11-06 Uro Denshi Kogyo Kk 侵入警報器
US4550436A (en) * 1983-07-26 1985-10-29 At&T Bell Laboratories Parallel text matching methods and apparatus
JPH0786537B2 (ja) 1987-09-26 1995-09-20 松下電工株式会社 人体検出装置
US4857912A (en) 1988-07-27 1989-08-15 The United States Of America As Represented By The Secretary Of The Navy Intelligent security assessment system
JP2790466B2 (ja) * 1988-10-18 1998-08-27 株式会社日立製作所 文字列検索方法及び装置
US5193192A (en) * 1989-12-29 1993-03-09 Supercomputer Systems Limited Partnership Vectorized LR parsing of computer programs
US5404488A (en) 1990-09-26 1995-04-04 Lotus Development Corporation Realtime data feed engine for updating an application with the most currently received data from multiple data feeds
US5222081A (en) * 1991-06-28 1993-06-22 Universal Data Systems, Inc. Method of performing an autobaud function using a state flow machine
US5430842A (en) 1992-05-29 1995-07-04 Hewlett-Packard Company Insertion of network data checksums by a network adapter
US5497463A (en) 1992-09-25 1996-03-05 Bull Hn Information Systems Inc. Ally mechanism for interconnecting non-distributed computing environment (DCE) and DCE systems to operate in a network system
GB9326476D0 (en) 1993-12-24 1994-02-23 Newbridge Networks Corp Network
US5459841A (en) * 1993-12-28 1995-10-17 At&T Corp. Finite state machine with minimized vector processing
US5666293A (en) * 1994-05-27 1997-09-09 Bell Atlantic Network Services, Inc. Downloading operating system software through a broadcast channel
JPH09198398A (ja) * 1996-01-16 1997-07-31 Fujitsu Ltd パターン検索装置
US5870554A (en) 1996-04-01 1999-02-09 Advanced Micro Devices, Inc. Server selection method where a client selects a server according to address, operating system and found frame for remote booting
US5995963A (en) * 1996-06-27 1999-11-30 Fujitsu Limited Apparatus and method of multi-string matching based on sparse state transition list
US5901307A (en) 1996-07-22 1999-05-04 International Business Machines Corporation Processor having a selectively configurable branch prediction unit that can access a branch prediction utilizing bits derived from a plurality of sources
US5796942A (en) 1996-11-21 1998-08-18 Computer Associates International, Inc. Method and apparatus for automated network-wide surveillance and security breach intervention
US6477648B1 (en) 1997-03-23 2002-11-05 Novell, Inc. Trusted workstation in a networked client/server computing system
US5999937A (en) * 1997-06-06 1999-12-07 Madison Information Technologies, Inc. System and method for converting data between data sets
US5919257A (en) 1997-08-08 1999-07-06 Novell, Inc. Networked workstation intrusion detection system
US6321337B1 (en) 1997-09-09 2001-11-20 Sanctum Ltd. Method and system for protecting operations of trusted internal networks
US5987473A (en) * 1997-09-09 1999-11-16 Beologic A/S Interactive configuration via network
US6002427A (en) 1997-09-15 1999-12-14 Kipust; Alan J. Security system with proximity sensing for an electronic device
US6141686A (en) 1998-03-13 2000-10-31 Deterministic Networks, Inc. Client-side application-classifier gathering network-traffic statistics and application and user names using extensible-service provider plugin for policy-based network control
JP3364207B2 (ja) 1998-04-27 2003-01-08 株式会社デジタル 制御システム、表示装置、および、データ伝送方法、並びに、そのプログラムが記録された記録媒体
EP0954139B1 (en) * 1998-05-01 2005-04-06 Hewlett-Packard Company, A Delaware Corporation Methods of altering dynamic decision trees
US6334121B1 (en) 1998-05-04 2001-12-25 Virginia Commonwealth University Usage pattern based user authenticator
US6684332B1 (en) * 1998-06-10 2004-01-27 International Business Machines Corporation Method and system for the exchange of digitally signed objects over an insecure network
US6324656B1 (en) 1998-06-30 2001-11-27 Cisco Technology, Inc. System and method for rules-driven multi-phase network vulnerability assessment
US6973455B1 (en) 1999-03-03 2005-12-06 Emc Corporation File server system providing direct data sharing between clients with a server acting as an arbiter and coordinator
US6590885B1 (en) 1998-07-10 2003-07-08 Malibu Networks, Inc. IP-flow characterization in a wireless point to multi-point (PTMP) transmission system
US6711127B1 (en) * 1998-07-31 2004-03-23 General Dynamics Government Systems Corporation System for intrusion detection and vulnerability analysis in a telecommunications signaling network
US6343362B1 (en) 1998-09-01 2002-01-29 Networks Associates, Inc. System and method providing custom attack simulation language for testing networks
US6219786B1 (en) 1998-09-09 2001-04-17 Surfcontrol, Inc. Method and system for monitoring and controlling network access
US6321338B1 (en) 1998-11-09 2001-11-20 Sri International Network surveillance
US6499107B1 (en) 1998-12-29 2002-12-24 Cisco Technology, Inc. Method and system for adaptive network security using intelligent packet analysis
US6415321B1 (en) * 1998-12-29 2002-07-02 Cisco Technology, Inc. Domain mapping method and system
US6393474B1 (en) 1998-12-31 2002-05-21 3Com Corporation Dynamic policy management apparatus and method using active network devices
US6487666B1 (en) * 1999-01-15 2002-11-26 Cisco Technology, Inc. Intrusion detection signature analysis using regular expressions and logical operators
US6754826B1 (en) 1999-03-31 2004-06-22 International Business Machines Corporation Data processing system and method including a network access connector for limiting access to the network
US6539381B1 (en) * 1999-04-21 2003-03-25 Novell, Inc. System and method for synchronizing database information
US6587876B1 (en) 1999-08-24 2003-07-01 Hewlett-Packard Development Company Grouping targets of management policies
US7073198B1 (en) 1999-08-26 2006-07-04 Ncircle Network Security, Inc. Method and system for detecting a vulnerability in a network
US7310688B1 (en) 1999-08-30 2007-12-18 Ciena Corporation Relative addressing for network elements
US7065657B1 (en) 1999-08-30 2006-06-20 Symantec Corporation Extensible intrusion detection system
US6789202B1 (en) 1999-10-15 2004-09-07 Networks Associates Technology, Inc. Method and apparatus for providing a policy-driven intrusion detection system
US6678824B1 (en) 1999-11-02 2004-01-13 Agere Systems Inc. Application usage time limiter
US6678734B1 (en) 1999-11-13 2004-01-13 Ssh Communications Security Ltd. Method for intercepting network packets in a computing device
US6957348B1 (en) 2000-01-10 2005-10-18 Ncircle Network Security, Inc. Interoperability of vulnerability and intrusion detection systems
US7315801B1 (en) * 2000-01-14 2008-01-01 Secure Computing Corporation Network security modeling system and method
US6851061B1 (en) 2000-02-16 2005-02-01 Networks Associates, Inc. System and method for intrusion detection data collection using a network protocol stack multiplexor
CA2375206A1 (en) 2000-03-27 2001-10-04 Network Security Systems, Inc. Internet/network security method and system for checking security of a client from a remote facility
JP2001285400A (ja) * 2000-03-29 2001-10-12 Kddi Corp トラヒック統計情報収集方法
US7134141B2 (en) 2000-06-12 2006-11-07 Hewlett-Packard Development Company, L.P. System and method for host and network based intrusion detection and response
US8661539B2 (en) 2000-07-10 2014-02-25 Oracle International Corporation Intrusion threat detection
US20020087716A1 (en) 2000-07-25 2002-07-04 Shakeel Mustafa System and method for transmitting customized multi priority services on a single or multiple links over data link layer frames
US6772196B1 (en) 2000-07-27 2004-08-03 Propel Software Corp. Electronic mail filtering system and methods
US6766320B1 (en) 2000-08-24 2004-07-20 Microsoft Corporation Search engine with natural language-based robust parsing for user query and relevance feedback learning
US7181769B1 (en) 2000-08-25 2007-02-20 Ncircle Network Security, Inc. Network security system having a device profiler communicatively coupled to a traffic monitor
US7032114B1 (en) 2000-08-30 2006-04-18 Symantec Corporation System and method for using signatures to detect computer intrusions
US20020035639A1 (en) 2000-09-08 2002-03-21 Wei Xu Systems and methods for a packet director
US20070192863A1 (en) * 2005-07-01 2007-08-16 Harsh Kapoor Systems and methods for processing data flows
US20020066034A1 (en) 2000-10-24 2002-05-30 Schlossberg Barry J. Distributed network security deception system
US7054930B1 (en) * 2000-10-26 2006-05-30 Cisco Technology, Inc. System and method for propagating filters
US20020083344A1 (en) 2000-12-21 2002-06-27 Vairavan Kannan P. Integrated intelligent inter/intra networking device
US6792269B2 (en) 2000-12-22 2004-09-14 Bellsouth Intellectual Property Corporation System, method and apparatus for tracking deployment of cellular telephone network sites
JP3672242B2 (ja) * 2001-01-11 2005-07-20 インターナショナル・ビジネス・マシーンズ・コーポレーション パターン検索方法、パターン検索装置、コンピュータプログラム及び記憶媒体
US7058821B1 (en) 2001-01-17 2006-06-06 Ipolicy Networks, Inc. System and method for detection of intrusion attacks on packets transmitted on a network
US20020165707A1 (en) * 2001-02-26 2002-11-07 Call Charles G. Methods and apparatus for storing and processing natural language text data as a sequence of fixed length integers
US7234168B2 (en) * 2001-06-13 2007-06-19 Mcafee, Inc. Hierarchy-based method and apparatus for detecting attacks on a computer system
US7096503B1 (en) 2001-06-29 2006-08-22 Mcafee, Inc. Network-based risk-assessment tool for remotely detecting local computer vulnerabilities
US6978223B2 (en) 2001-09-06 2005-12-20 Bbnt Solutions Llc Systems and methods for network performance measurement using packet signature collection
US7406526B2 (en) 2001-09-28 2008-07-29 Uri Benchetrit Extended internet protocol network address translation system
US6999998B2 (en) 2001-10-04 2006-02-14 Hewlett-Packard Development Company, L.P. Shared memory coupling of network infrastructure devices
US7472167B2 (en) 2001-10-31 2008-12-30 Hewlett-Packard Development Company, L.P. System and method for uniform resource locator filtering
US20030101353A1 (en) 2001-10-31 2003-05-29 Tarquini Richard Paul Method, computer-readable medium, and node for detecting exploits based on an inbound signature of the exploit and an outbound signature in response thereto
US20030083847A1 (en) 2001-10-31 2003-05-01 Schertz Richard L. User interface for presenting data for an intrusion protection system
US6546493B1 (en) * 2001-11-30 2003-04-08 Networks Associates Technology, Inc. System, method and computer program product for risk assessment scanning based on detected anomalous events
US7257630B2 (en) 2002-01-15 2007-08-14 Mcafee, Inc. System and method for network vulnerability detection and reporting
US6993706B2 (en) * 2002-01-15 2006-01-31 International Business Machines Corporation Method, apparatus, and program for a state machine framework
US7152105B2 (en) 2002-01-15 2006-12-19 Mcafee, Inc. System and method for network vulnerability detection and reporting
JP4152108B2 (ja) * 2002-01-18 2008-09-17 株式会社コムスクエア 脆弱点監視方法及びシステム
US7076803B2 (en) 2002-01-28 2006-07-11 International Business Machines Corporation Integrated intrusion detection services
US7174566B2 (en) * 2002-02-01 2007-02-06 Intel Corporation Integrated network intrusion detection
US7769997B2 (en) 2002-02-25 2010-08-03 Network Resonance, Inc. System, method and computer program product for guaranteeing electronic transactions
US20030229726A1 (en) 2002-03-18 2003-12-11 Daseke Michael J. Default device configuration system and method for thin devices
US7886357B2 (en) 2002-03-29 2011-02-08 Cisco Technology, Inc. Method and system for reducing the false alarm rate of network intrusion detection systems
JP4047053B2 (ja) * 2002-04-16 2008-02-13 富士通株式会社 繰り返しを含む順序パターンを用いた検索装置および方法
US7383577B2 (en) 2002-05-20 2008-06-03 Airdefense, Inc. Method and system for encrypted network management and intrusion detection
EP1512075A1 (en) * 2002-05-22 2005-03-09 Lucid Security Corporation Adaptive intrusion detection system
US6983323B2 (en) 2002-08-12 2006-01-03 Tippingpoint Technologies, Inc. Multi-level packet screening with dynamically selected filtering criteria
US7069438B2 (en) 2002-08-19 2006-06-27 Sowl Associates, Inc. Establishing authenticated network connections
US20040064726A1 (en) 2002-09-30 2004-04-01 Mario Girouard Vulnerability management and tracking system (VMTS)
WO2004032435A1 (ja) * 2002-10-03 2004-04-15 In4S Inc. ビットストリングの照合方法および装置
US20040093582A1 (en) 2002-11-01 2004-05-13 Segura Tim E. Method for allowing a computer to be used as an information kiosk while locked
US7363656B2 (en) 2002-11-04 2008-04-22 Mazu Networks, Inc. Event detection/anomaly correlation heuristics
US7454499B2 (en) 2002-11-07 2008-11-18 Tippingpoint Technologies, Inc. Active network defense system and method
KR100456635B1 (ko) * 2002-11-14 2004-11-10 한국전자통신연구원 분산 서비스 거부 공격 대응 시스템 및 방법
US7350077B2 (en) * 2002-11-26 2008-03-25 Cisco Technology, Inc. 802.11 using a compressed reassociation exchange to facilitate fast handoff
US7353533B2 (en) 2002-12-18 2008-04-01 Novell, Inc. Administration of protection of data accessible by a mobile device
US20040193943A1 (en) 2003-02-13 2004-09-30 Robert Angelino Multiparameter network fault detection system using probabilistic and aggregation analysis
EP1604277A2 (en) * 2003-02-28 2005-12-14 Lockheed Martin Corporation Hardware accelerator personality compiler
US7706378B2 (en) * 2003-03-13 2010-04-27 Sri International Method and apparatus for processing network packets
US8127359B2 (en) 2003-04-11 2012-02-28 Samir Gurunath Kelekar Systems and methods for real-time network-based vulnerability assessment
US7305708B2 (en) 2003-04-14 2007-12-04 Sourcefire, Inc. Methods and systems for intrusion detection
US7644275B2 (en) * 2003-04-15 2010-01-05 Microsoft Corporation Pass-thru for client authentication
US7349400B2 (en) 2003-04-29 2008-03-25 Narus, Inc. Method and system for transport protocol reconstruction and timer synchronization for non-intrusive capturing and analysis of packets on a high-speed distributed network
US20040221176A1 (en) 2003-04-29 2004-11-04 Cole Eric B. Methodology, system and computer readable medium for rating computer system vulnerabilities
US7317693B1 (en) 2003-05-12 2008-01-08 Sourcefire, Inc. Systems and methods for determining the network topology of a network
US7089383B2 (en) 2003-06-06 2006-08-08 Hewlett-Packard Development Company, L.P. State machine and system for data redundancy
US7636917B2 (en) 2003-06-30 2009-12-22 Microsoft Corporation Network load balancing with host status information
US7596807B2 (en) * 2003-07-03 2009-09-29 Arbor Networks, Inc. Method and system for reducing scope of self-propagating attack code in network
US7346922B2 (en) * 2003-07-25 2008-03-18 Netclarity, Inc. Proactive network security system to protect against hackers
US7133916B2 (en) 2003-07-28 2006-11-07 Etelemetry, Inc. Asset tracker for identifying user of current internet protocol addresses within an organization's communications network
US20050114700A1 (en) 2003-08-13 2005-05-26 Sensory Networks, Inc. Integrated circuit apparatus and method for high throughput signature based network applications
US8417673B2 (en) * 2003-10-07 2013-04-09 International Business Machines Corporation Method, system, and program for retaining versions of files
US7725936B2 (en) 2003-10-31 2010-05-25 International Business Machines Corporation Host-based network intrusion detection systems
GB2410647A (en) 2004-01-31 2005-08-03 Hewlett Packard Development Co Identifying and Patching Vulnerabilities in a Network
US20050188079A1 (en) 2004-02-24 2005-08-25 Covelight Systems, Inc. Methods, systems and computer program products for monitoring usage of a server application
US7313695B2 (en) 2004-03-23 2007-12-25 Sourcefire, Inc. Systems and methods for dynamic threat assessment
US7761918B2 (en) 2004-04-13 2010-07-20 Tenable Network Security, Inc. System and method for scanning a network
US7366728B2 (en) * 2004-04-27 2008-04-29 International Business Machines Corporation System for compressing a search tree structure used in rule classification
WO2005114541A2 (en) 2004-05-19 2005-12-01 Computer Associates Think, Inc. Systems and methods for minimizing security logs
US20050268331A1 (en) 2004-05-25 2005-12-01 Franck Le Extension to the firewall configuration protocols and features
US8074277B2 (en) * 2004-06-07 2011-12-06 Check Point Software Technologies, Inc. System and methodology for intrusion detection and prevention
US7539681B2 (en) 2004-07-26 2009-05-26 Sourcefire, Inc. Methods and systems for multi-pattern searching
US7496962B2 (en) 2004-07-29 2009-02-24 Sourcefire, Inc. Intrusion detection strategies for hypertext transport protocol
US7480245B2 (en) * 2004-12-11 2009-01-20 International Business Machines Corporation Segmenting data packets for over-network transmission at adjustable fragment boundary
US10015140B2 (en) 2005-02-03 2018-07-03 International Business Machines Corporation Identifying additional firewall rules that may be needed
US7454790B2 (en) 2005-05-23 2008-11-18 Ut-Battelle, Llc Method for detecting sophisticated cyber attacks
US20060294588A1 (en) 2005-06-24 2006-12-28 International Business Machines Corporation System, method and program for identifying and preventing malicious intrusions
US20070027913A1 (en) * 2005-07-26 2007-02-01 Invensys Systems, Inc. System and method for retrieving information from a supervisory control manufacturing/production database
US8046833B2 (en) 2005-11-14 2011-10-25 Sourcefire, Inc. Intrusion event correlation with network discovery information
US7733803B2 (en) 2005-11-14 2010-06-08 Sourcefire, Inc. Systems and methods for modifying network map attributes
US7873025B2 (en) * 2006-02-23 2011-01-18 Cisco Technology, Inc. Network device that determines application-level network latency by monitoring option values in a transport layer message
US7948988B2 (en) 2006-07-27 2011-05-24 Sourcefire, Inc. Device, system and method for analysis of fragments in a fragment train
US7701945B2 (en) 2006-08-10 2010-04-20 Sourcefire, Inc. Device, system and method for analysis of segments in a transmission control protocol (TCP) session
WO2008045302A2 (en) 2006-10-06 2008-04-17 Sourcefire, Inc. Device, system and method for use of micro-policies in intrusion detection/prevention
US7930747B2 (en) 2007-01-08 2011-04-19 Trend Micro Incorporated Host intrusion prevention server
US8069352B2 (en) 2007-02-28 2011-11-29 Sourcefire, Inc. Device, system and method for timestamp analysis of segments in a transmission control protocol (TCP) session
WO2008134057A1 (en) 2007-04-30 2008-11-06 Sourcefire, Inc. Real-time awareness for a computer network
US7936794B2 (en) * 2007-08-07 2011-05-03 Avaya Inc. Clock management between two end points

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6244878A (ja) * 1985-08-23 1987-02-26 Hitachi Ltd 文書フアイリングシステム
JPH07129369A (ja) * 1993-10-29 1995-05-19 Matsushita Electric Ind Co Ltd 有限状態機械作成方法とパターン照合機械作成方法とこ れらを変形する方法および駆動方法
JPH0887528A (ja) * 1995-09-11 1996-04-02 Hitachi Ltd 文書ファイリングシステム
JPH10105576A (ja) * 1996-06-27 1998-04-24 Fujitsu Ltd スパースな状態遷移表に基づく複数記号列の照合装置および方法
JPH1069493A (ja) * 1996-08-29 1998-03-10 Matsushita Electric Ind Co Ltd 辞書作成装置と語切り出し装置

Also Published As

Publication number Publication date
WO2006020290A2 (en) 2006-02-23
JP2008507789A (ja) 2008-03-13
US7996424B2 (en) 2011-08-09
US20070192286A1 (en) 2007-08-16
EP1779268A2 (en) 2007-05-02
US7539681B2 (en) 2009-05-26
EP1779268A4 (en) 2009-11-11
US7756885B2 (en) 2010-07-13
US20080133523A1 (en) 2008-06-05
US20060020595A1 (en) 2006-01-26
WO2006020290A3 (en) 2009-04-09
CA2572360A1 (en) 2006-02-23

Similar Documents

Publication Publication Date Title
JP4855400B2 (ja) マルチパターン検索のための方法およびシステム
Norton Optimizing pattern matching for intrusion detection
Kumar et al. Advanced algorithms for fast and scalable deep packet inspection
US9021582B2 (en) Parallelized pattern matching using non-deterministic finite automata
US9990583B2 (en) Match engine for detection of multi-pattern rules
Liu et al. A fast string-matching algorithm for network processor-based intrusion detection system
AU2003277248B2 (en) Intrusion detection accelerator
US7054855B2 (en) Method and system for performing a pattern match search for text strings
US7624105B2 (en) Search engine having multiple co-processors for performing inexact pattern search operations
US7110540B2 (en) Multi-pass hierarchical pattern matching
US20050273450A1 (en) Regular expression acceleration engine and processing model
US8572106B1 (en) Memory management in a token stitcher for a content search system having pipelined engines
US8370274B2 (en) Apparatuses and methods for deterministic pattern matching
WO2004013777A1 (en) System and method of parallel pattern matching
US8543528B2 (en) Exploitation of transition rule sharing based on short state tags to improve the storage efficiency
US20060259508A1 (en) Method and apparatus for detecting semantic elements using a push down automaton
US20070061884A1 (en) Intrusion detection accelerator
JPH09502550A (ja) デジタル信号集合体に対する改変検出方法
EP3077922B1 (en) Method and apparatus for generating a plurality of indexed data fields
KR20070003488A (ko) 효율적인 패턴검색을 위한 tcam에서의 정규수식표현방법 및 이를 이용한 패턴 검색방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080512

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110301

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110531

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110607

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110701

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110708

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110801

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110808

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110826

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: 20111004

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111026

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141104

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4855400

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

LAPS Cancellation because of no payment of annual fees