[go: up one dir, main page]

JP2005524149A - コンテンツ・サーチ・エンジン - Google Patents

コンテンツ・サーチ・エンジン Download PDF

Info

Publication number
JP2005524149A
JP2005524149A JP2004500213A JP2004500213A JP2005524149A JP 2005524149 A JP2005524149 A JP 2005524149A JP 2004500213 A JP2004500213 A JP 2004500213A JP 2004500213 A JP2004500213 A JP 2004500213A JP 2005524149 A JP2005524149 A JP 2005524149A
Authority
JP
Japan
Prior art keywords
character
acquisition
matrix
phrase
data
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.)
Pending
Application number
JP2004500213A
Other languages
English (en)
Other versions
JP2005524149A5 (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.)
Winnow Tech LLC
Original Assignee
Winnow Tech 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 Winnow Tech LLC filed Critical Winnow Tech LLC
Publication of JP2005524149A publication Critical patent/JP2005524149A/ja
Publication of JP2005524149A5 publication Critical patent/JP2005524149A5/ja
Pending legal-status Critical Current

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/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99936Pattern matching access
    • 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/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Computer And Data Communications (AREA)

Abstract

取得マトリックスが、検索語句のパターンに一致するパターンに関し、データ・ストリームの全コンテンツを検索する。上記データ・ストリームのパターンおよび検索語句の間でマッチングがある状況では、この方法およびシステムは正確なマッチング演算に進むことができる。特にポインタ・マトリックスおよび対応する制御マトリックスはルール・テーブル内の1組の語句により生成される。データは取得素子の階層により配列されて取得マトリックスになる。上記取得素子は配列データ・ストリームおよび上記ルール・テーブル内の1組の語句中の任意の検索語句の間のパターン・マッチング・チェックを実行する。明確なパターン・マッチングからの結果は好ましくは一致する取得素子から正確なマッチング検索へ送信される。

Description

本発明は一般的にコンテンツ・サーチ・エンジン、特に、取得マトリックス素子を使用したコンテンツ・サーチ・エンジンに関する。
データ・ストリーム中の語句を見つけるために、バイナリ・サーチ方法を使用するコンテンツ・サーチ・エンジンは現在知られている。さらに、そのような検索方法の使用において、上記データ・ストリームはメモリから読み出されることが知られている。そのような情報はデータベースまたは他のメモリデバイスに保存されている。また、上記データ・ストリームがインターネット(インターネット自体は分散データベース・システムの一形態と考えられる)などからコンピュータ・ネットワークを経由して通信されることが知られている。検索されるデータ・ストリームにかかわらず、そのようなバイナリ・サーチ・エンジンを使用するシステムは、上記検索語句に関して上記データ・ストリーム内の全ての可能な組み合わせを検索せねばならない。例えば、10文字の語句(例えば“get passwd”)に関するデータ・ストリームを検索するために、バイナリ・サーチ・エンジンは1.2*1024を超える組み合わせ(25610の組み合わせ)を検索せねばならない。このような方法を使用すると、全体のデータ・ストリームは効率的に検索できない。多数のプロセッサが上記バイナリ・サーチ・エンジンに必要な全ての演算を計算するために並列に動作する必要があるか、または、データ・ストリームの一部のみを取得し、かつ、検索して、他の部分は正確なコンテンツを検索せずに通過させるかである。
本発明が開発されたのは上に記載した問題を考慮してである。本発明は、取得マトリックスを使用して、検索語句のパターンに一致するパターンのデータ・ストリームの全コンテンツを検索する方法およびシステムである。上記データ・ストリームの複数のパターンおよび検索語句の間に複数のマッチングがある状況では、上記方法およびシステムは正確なマッチング演算に進むことができる。特に、本発明はルール・テーブル内の1連の語句にしたがって、ポインタ・マトリックスおよび対応する制御マトリックスを生成する。データは取得マトリックスの取得素子の階層にしたがって配列され取得マトリックスにされる。上記取得素子は、上記配列データ・ストリームおよび上記ルール・テーブル内の1組の語句中の任意の検索語句の間で、パターン・マッチング・チェックを実行して、また、好ましくは文字マッチング・チェックを実行する。明確なパターン・マッチングおよび任意の対応する明確な文字マッチングからの結果は、好ましくは、マッチング取得素子から正確なマッチング検索へ送信される。
本発明の種々の実施の形態の構造および演算と同様に本発明のさらなる特徴と効果は添付した図を参照して以下に詳細に記載される。
同様な参照番号が同様な要素を示す添付の図を参照して、図1は本発明によるコンテンツ・サーチ・エンジン10の概略図を示す。一般的に上記コンテンツ・サーチ・エンジンは入力装置14、正確なマッチング検索16およびルール・テーブル18と通信する取得マトリックス12をもつ。上記コンテンツ・サーチ・エンジンはまた上記入力装置14および上記正確なマッチング検索16の間にバッファ・メモリ20を含み、また、上記入力装置14および上記取得マトリックスの間に大文字小文字制御モジュール22を含むことができる。以下に記載するように上記コンテンツ・サーチ・エンジン10のシステムは、上記入力装置14を経由して通信されるデータ・ストリーム24に関して処理をする。
上記ルール・テーブル18は1組の語句26および1組のテーブル・アドレス28を含む。上記1組の語句26内の各語句は、上記1組のテーブル・アドレス28により定義される位置30で上記ルール・テーブルに格納される。例えば、語句“get passwd file”およびプロトコルのために使用可能な“http”などの任意の対応するプレフィックスがテーブル・アドレス0−18で定義される位置に格納される。連続する各語句は、任意の対応するプレフィックスとともに、その前の語句の次の位置にすぐに続く。この次の位置は次のテーブル・アドレスにより定義される。1つの例により、また以下の表を参照して、“get passwd file”に続く語句は、前の語句の中の最後の文字の後、すぐにアドレス19で、始まることが可能である。上記ルール・テーブル18の好ましい実施の形態が複数の語句と共に示されているが、1組の語句26とは1の語句を含んでもよいことは分かる。
上記語句26が多数の長さ34および組み合わせ36にある多数の文字32をもつこともわかる。例えば、以下の表1に示されているように、“get passwd file”に続く1つの語句は“get pwl file type”かもしれず、プレフィックスをもっているかもしれない。この例では、両語句の最初の数文字(“get p”)は同一だが、それに続く文字は異なり、異なる文字組み合わせを表す。さらに、上記両語句の長さが異なる。語句“get passwd file”の長さは15文字であり、語句“get pwl file type”の長さは17文字である。上記ルール・テーブル18が1つの語句をもつ場合、そのような語句は1文字の長さおよび1文字の組み合わせをもつ。
表1:ルール・テーブルの例
Figure 2005524149
上記コンテンツ・サーチ・エンジン10は、上記ルール・テーブル18内の上記語句26およびアドレス28により定義されるポインタ・マトリックス38を含む。上記ポインタ・マトリックス38は1組の1対1ポインタ40を含み、その1組の1対1ポインタ40は上記ルール・テーブル18内の上記語句26の各々に関するテーブル・アドレス28により特に定義される。上記ポインタ・マトリックス38は文字長44および文字組み合わせ46により定義される行および列の座標42をもつ。文字長44および文字組み合わせは、それぞれ、文字長34および文字組み合わせ36により1組の語句26に対応する。したがって、上記ルール・テーブル18の中の各語句26に関して、上記ポインタ・マトリックス38は上記各語句26の中の文字長32および組み合わせ34により上記行および列の座標42で、対応するテーブル・アドレス28を格納する。例えば、上記語句“get pwl file type”を同定するアドレス(上に記載した表1内の“70”)は、上記ポインタ・マトリックス38内で上記語句の対応する1対1ポインタ40として格納される。上記アドレス(“70”)は、各語句26内の文字長および各語句26内の文字組み合わせに対応する行および列42により上記ポインタ・マトリックス38へ格納され、またそこから読み出される。このように、上記1組の1対1ポインタ40は上記テーブル・アドレス28を上記ルール・テーブル18内の各上記語句26と相関させる。
本発明によれば、上記ポインタ・マトリックス38内にポインタ40を格納するために使用される文字の複数の組み合わせ46は、上記語句26の各々の中の文字により、上記1組の語句26に唯一対応する1組のパターンにより一般的に定義される。以下に詳細に記載するように、上記文字組み合わせ46を使用して定義可能な多くの種類のパターンがある。本発明の好ましい実施の形態では、上記1組のパターンは1組の圧縮された文字値であり、その圧縮された文字値は数値演算および切り捨て演算により上記各語句26の内の文字を圧縮することにより生成される。異なる文字長をもった複数の語句26が同じ圧縮文字値をもってもよい。なぜなら2つの語句の行および列の座標42の少なくとも1つが、異なる文字長のために異なるからである。当然の結果、同じ文字長をもつ1対の語句26は同じ圧縮値ももつとき、その両語句26のうち1つの圧縮値はより少ない数の文字に基づいて計算でき、また、1組のポインタ40が上記語句26の各々と1対1対応をもつことを保証するため、ポインタ・アドレスは短くされた文字長にしたがって格納される。したがって、同じ文字長をもった語句26に関しては、上記1組のパターンが、ある文字長をもつ上記語句26の各々に関して、上記文字組み合わせに一意に対応する。上記1組の語句26が1つの語句をもっているとすると、そのような語句に関する行および列の座標42はその語句の文字長およびその語句の文字から生成されたパターンである。
上記取得マトリックス12は1組の取得素子48および対応する1組の遅延素子50を含む。各取得素子48は、対応する比較器54と通信するメモリ52をもち、一般的に各取得素子48のためのメモリと比較器の対56と呼ばれる。上記取得素子48は入力装置14と多重化通信して、また、上記1組の遅延素子50により階層(1からN)をもつ。上記メモリと比較器の対56を特に含む取得素子48の上記階層は、好ましくは、上記1組の語句26の上記文字長34に1対1に対応する。特に、上記取得マトリックス12は、各取得素子48および入力装置14の間に、1組の増加する遅延素子50をもつ。上記1組の増加する遅延素子50は、上記取得素子48の階層における増加する順序を定義して、階層の上記の増加する順序は上記データ・ストリーム24の増加する文字長に対応する。それ故、階層の順序が増えると、上記取得素子は、上記データ・ストリーム24の増加する長さの文字パターンを検査できる。
動作しているとき、上記入力装置14は、以下の表2に示されているように、ある時間間隔58の間上記データ・ストリーム24を受信する。上記データ・ストリーム24は長さ62および組み合わせ64をもつ1組のデータ文字60を含み、上記時間間隔58は複数のクロック・サイクル66からなる。上記入力装置14は、また、バイパス68経由で上記データ・ストリーム24の上記バッファ・メモリ20へ送信する。上記取得マトリックス12は上記入力装置14からのデータ・ストリーム24を受信して、各取得素子48経由で上記データ・ストリーム24内の上記1組のデータ文字60を配列する。上記配列された1組のデータ文字は、上記取得素子48の上記階層により1組の配列データ70として複数の上記メモリと比較器の対に入る。
上記取得マトリックス12が取得素子48経由で上記データ・ストリーム24を配列するとき、上記メモリと比較器の対56は、上記配列データ70のパターン(P)と上記ルール・テーブル18内の各語句26に関する文字組み合わせ36により定義される上記1組のパターンとの間でパターン・マッチング・チェックを実行する。各メモリと比較器の対56は、上記取得素子48の階層および上記1組の語句26の上記文字長34の1対1対応により上記パターン・マッチング・チェックを同時に実行する。マッチング用のメモリと比較器の対の1つによる明確なパターン・マッチングはある1対1ポインタ72を定義し、その1対1ポインタ72は上記ルール・テーブル18内の1つの上記語句26の上記アドレス28を含む。上記1対1ポインタ72は、一致する取得素子(k)の階層および一致する取得要素(P[k])内の上記配列データ70の上記パターン(P)により、行および列の座標74をもつ。
上記正確なマッチング検索16は上記バッファ・メモリ20、取得マトリックス12およびルール・テーブル18と通信する。上記正確なマッチング検索16は上記ポインタ・マトリックス38から上記1対1ポインタを受信する。上記正確なマッチング検索16は、上記ポインタ・マトリックス38からの上記1対1ポインタ72に対応する上記テーブル・アドレスにより、上記ルール・テーブル18から1つの語句26を読み出す。上記正確なマッチング検索16は、一致させるメモリと比較器の対により、上記時間間隔に対応する上記バッファ・メモリ20からの上記データ・ストリーム24の一部で、その読み出された語句を検査する。上記ルール・テーブル18から読み出された正確な語句および上記バッファ・メモリ20からの上記データ・ストリーム24の対応する部分を用いて、上記正確なマッチング検索が、それらの間の正確なマッチングをチェックする。
次に、上記取得マトリックス12およびルール・テーブル18の好ましい実施の形態は、図2を参照して詳しく記載される。上に説明したように、上記ルール・テーブル18内の各上記語句26の上記パターンは1組の圧縮文字値により定義可能である。一般的に、上記語句26の各々は、定義された値により語句中の各文字を表し、かつ、1組の上記値について、1組の演算を実行することにより圧縮可能である。例えば、上記演算は加算、減算、積算、除算、排他的論理和、排他的論理和の否定、および、連結などの数値演算および/または論理演算である。上記1組の演算は例えば各上記語句26内の各文字に実行される加算などの1つの数値演算である。また、上記1組の演算が複数の演算であることも可能である。本発明の好ましい実施の形態によれば、上記加算演算は上記語句26の圧縮を例示する。例えば、以下の表2に要約されているように、語句“get passwd”内の文字の16進(0x)表現は、加算されて圧縮文字値0x3E2になることが可能である。
表2:圧縮文字値の例
Figure 2005524149
この好ましい圧縮方法は、上記圧縮文字値および圧縮された語句の間に1対1対応がないので下記の式(1)により非可逆圧縮であることが分かる。上記語句中の文字の数が増加するにつれ、同じ圧縮文字値をもつ文字の他の組み合わせの数は指数関数的に増加する。したがって、一度上記語句が文字値の加算(または上記文字値に関する任意の他の演算)により圧縮されると、その圧縮された文字値は1対1表現として上記語句に伸長できない。上記圧縮文字値は、上記語句の1対1表現である代わりに、上記語句の確率である。例えば、10文字の語句“get passwd”の上記圧縮文字値は0x3E2(すなわち、Σ“get passwd”⇒0x3E2)であり、10文字の語句“got pissed”の上記圧縮文字値も0x3E2(すなわち、Σ“got pissed”⇒0x3E2)である。それ故、0x3E2がそれ自体“get passwd”の1対1表現でないことは明白である。
Σ(0x語句),@0x語句中の文字⇒語句の圧縮文字値 (1)
上記圧縮文字値は、さらに、以下の式(2)によりMSBを削除し、かつ、合計をそのLSBまで切り捨てることにより圧縮可能である。例えば、合計の0x3E2内の最上位16進ビットは削除でき、それにより、上記合計を切り捨てて、切り捨てられた圧縮文字値0xE2を生じる。したがって、上記語句“get passwd”は、その語句の文字長10およびパターン値0xE2に基づいて圧縮可能であって、配列データ・ストリーム70とチェック可能である。上に説明したように、上記語句“get passwd”のテーブル・アドレスは上記ポインタ・マトリックス38内に上記1対1ポインタとして格納され、上記文字長10およびパターン値0xE2に対応する行および列の座標に格納される。さらに、上記1組の1対1ポインタ40は上記ルール・テーブル18内の各上記語句26の最初または最後の文字に対応しても良く、上記語句中の全ての文字が上記最初の文字のアドレスおよび上記語句の上記文字長に基づいて上記ルール・テーブル18から読み出すことが出来る。
切り捨てられた圧縮文字値=LSB(圧縮文字値) (2)
上に記載したように、上記取得マトリックス12は上記取得素子48経由で上記データ・ストリーム24を配列して、上記メモリと比較器の対56は、上記配列データ70の複数のパターン(P)および上記ルール・テーブル18内の上記語句26の各々により定義される上記1組のパターンの間のパターン・マッチング・チェックを実行する。したがって、上記取得マトリックス12は、上記ルール・テーブル18内の上記語句26に関して実行された同じ組の演算を、上記データ・ストリーム24に対して実行する。これは、上記取得素子48の各々が、上記取得マトリックス12内の各上記階層により、上記配列データ70および上記語句26の各々の間のパターン・マッチング・チェックを同時に実行することを可能にする。
したがって、上記好ましい実施の形態に関して、上記取得マトリックス12は、上記入力装置および上記メモリと比較器の対56の各々の間に位置する1組の圧縮演算器76を含む。好ましい実施の形態では上記加算演算78は上記1組の演算の中で実行され、上記取得素子48の上記階層により、上記データ24が配列される1組の遅延器50に基づいて、現在の各文字80を1組の過去に加算された文字82に加える。
加えて、各加算器78からの配列データ70は好ましくはLSB演算器84で切り捨てられる。次に、上記ポインタ・マトリックス内の上記1対1ポインタ40は、上に記載したように、加算されて切り捨てられた上記配列データ70の上記パターンが上記入力装置14から各上記取得素子48に送信された時、そのパターンに基づいて検査される。特に、上記比較器54の各々は、上記取得素子48の上記階層および対応する各メモリ52内で、加算されて切り捨てられた上記配列データ70の上記パターンに対応する行および列の座標で、上記ポインタ・マトリックス38をクエリー可能である。上記ポインタ・マトリックス38が、上記行および列の座標にポインタ72を含む時、それに対応する比較器54は明確なパターン・マッチングを同定して、上記コンテンツ・サーチ・エンジン10は上記正確なマッチング検索16に進むことが出来る。上記ルール・テーブル18内の第1のテーブル・アドレスがゼロ値でもよいことや、上記第1のテーブル・アドレスがどの上記語句26の最初の文字に使用される必要がないことは分かる。加えて、上記1対1ポインタ40が、上記語句(最初の語句が上記ルール・テーブル18内の第1のテーブル・アドレスとして始まっていても、全てゼロではない)の最後の文字を同定するために設定可能である。
上記データ・ストリーム24内での文字の圧縮および切り捨てのため、階層にかかわらず、各トラップ素子48の中のメモリ52は、取得素子48の各々上記配列データ70のサイズになりうる。特に、好ましい実施の形態では、圧縮および切り捨てられた上記配列データ70は1バイト([7:0])に格納可能であり、その1バイトは16進形式で00からFFまでであり、10進形式で0から255まで(2進形式で00000000から11111111まで)である。上記メモリ52は、大文字小文字制御のため、およびデータ・パケット中のヘッダなどのプレフィックスのための追加のサイズのための追加の少なくとも1ビットを格納するサイズであるように、より大きくてもよい。
上に記載したように、上記ポインタ・マトリックス38の直接検査は、いずれか1つの上記取得素子48内の上記配列データ70および上記ルール・テーブル18内の上記語句26の間のパターン・マッチング・チェックを実行するために使用可能である。加えて、本発明の好ましい実施の形態によれば、制御マトリックス86が上記配列データ70および上記語句26の間でパターン・マッチング・チェックを実行するために使用可能である。上記制御マトリックス86は上記ポインタ・マトリックス38に非常に類似している。上記制御マトリックス86は、上記行および列の座標42の定義(すなわち、上記文字長44および上記文字組み合わせ46により定義される同じ行および列の座標系)を含み、上記ポインタ・マトリックス38と同じ行および列の座標42を使用する。上記制御マトリックス86および上記ポインタ・マトリックス38の間の違いはそれらの要素である。上に記載したように、上記ポインタ・マトリックス38は上記ルール・テーブル18内の上記語句26に関する1組のアドレス28を含む。比較すると、上記制御マトリックス86は、1および0のビットをもつ1組の2進数などの1組のフラグ88を含む。したがって、上記制御マトリックス86内の上記1組のフラグ88は、以下の式(3)により、上記ポインタ・マトリックス38内のアドレスに対応する。一般的に、上記1組のフラグ88は、各々の対応する行および列の座標42で、上記ポインタ・マトリックス38内のアドレスに対応する。それ故、好ましい実施の形態によれば、上記パターン・マッチングは第1に制御マトリックス86内の1つのフラグ88により同定され、次に、対応するパターンおよび長さを備えた上記語句のための上記ポインタ72は、上記ポインタ・マトリックス38内で同じ行および列の座標42から上記制御マトリックス86内のマッチング・フラグとして読み込まれる。
[ポインタ・マトリックス内のテーブル・アドレス]⇒
[制御マトリックス内のフラグ] (3)
好ましい実施の形態では、次に、明確なパターン・マッチングを同定する上記取得素子48のいずれか1つは、上記正確なマッチング検索16に進む前に文字マッチング・チェックを実行する。上記文字マッチング・チェックにおいて、上記データ・ストリーム24からの1対のデータ文字90は比較文字マトリックス94からの2つの非圧縮語句の文字92と比較される。上記比較文字マトリックス94内の上記非圧縮データ文字92は上記ルール・テーブル18内の各語句26からの文字のセグメントであり、語句34の長さにより上記比較文字マトリックス94に格納される。
上記非圧縮語句の文字は各上記語句26の任意の対応する位置から取得可能であり、上記取得マトリックス12はそれに応じて設計可能である。例えば、好ましい実施の形態では、上記非圧縮文字は上記語句26の各々内の最後の2文字であり、上記取得マトリックスは、上記1対のデータ文字90が、上記取得素子48に入る上記データ・ストリーム24からの最後の2文字になるように設計される。特に、上記1対のデータ文字90は、1対の通信経路96を経由して多重化通信される。上記1対のデータ文字90は圧縮演算器を経由せずに、通信経路96の前に遅延素子98を経由して、通信経路96の間の遅延素子100を経由して通信される。
文字の他の組み合わせは1組の遅延素子98、100を変更することにより可能である。例えば、最後の文字および最後から3番目の文字は、上記通信経路96の間の遅延素子100に関して、2クロック・サイクルの遅延器66、すなわち、1対の遅延素子を使用することにより、上記文字マッチング・チェックにおいて比較されるべき文字になりうる。単独の文字も上記文字マッチング・チェックに使用可能であり、3以上の文字も上記文字マッチング・チェックに使用可能である。
上記コンテンツ・サーチ・エンジン10の一般的な記述および上に記載の上記ルール・テーブル18の記述に基づき、上記ルール・テーブル18内の複数の上記語句26は、それらの長さ32に基づき分類および格納可能である。上記ルール・テーブル18は仮想的に1組のN個のルール・テーブル102に分割可能であり、ここで、1つの長さの全てのルールが上記1組のルール・テーブル102内の各ルール・テーブル104に格納される。
図3に詳しく示されているように、上記1組のルール・テーブル102内のルールの長さは、第2のルール・テーブル106の2文字の長さから第Nのルール・テーブル108のN文字の長さまで変わり、取得素子48の数と1対1に対応する。上記第Nのルール・テーブルは好ましくは24文字の長さ110をもつ語句を含む。上記ルール・テーブル18内に24文字よりかなり長い語句が存在してもよく、また、上記24文字の長さを使用して生成されたパターンに基づいて、これらのより長い語句とのパターン・マッチングを使用可能である。例えば、上記コンテンツ・サーチ・エンジン10が侵入検知システムに組み込まれると、語句26は、複数の侵入検知ルールに基づく、それらのルールのいくつかは150文字の長さを超えることが知られている。
次に、本システムの動作を、図4を参照して一般的に記載し、また、本発明の好ましい実施の形態を参照して、再度、より詳細に記載する。一般的に上記ルール・テーブル18および対応するポインタ・マトリックス38は準備ステップ210で定義されて、上記データ・ストリーム24は、入力ステップ220において、上記入力装置14を経由して通信される。ステップ222により、上記バッファ・メモリ20は、好ましくは、上記取得マトリックス12を多重化バイパスデータ・ストリーム68でバイパスする先入れ先出し(FIFO)メモリである。
上記コンテンツ・サーチ・エンジン10は、処理ステップ230において、上記取得マトリックス12を経由して、上記データ・ストリーム24を配列する。特に、上記データ・ストリーム24は、取得素子48の上記階層により上記1組の遅延素子50および上記メモリ52の各々経由で、多重化方式により通信される。処理ステップ240は上記ポインタ・マトリックス38の上記行および列の座標42を定義して、このポインタ・マトリックス38は上記配列データ・ストリーム70に基づいて取得素子48の各々によりクエリーされる(232)。取得素子48の各々は決定ステップ250によりパターン・マッチング・チェック252を実行する。特に、上記比較器54の各々は、上記取得素子48の階層により、および、対応する各メモリ52内の上記配列データ70のパターンにより、行および列の座標を定義することにより、上記ポインタ・マトリックス38をクエリーできる(232)。一般的に、上記コンテンツ・サーチ・エンジン10は、パターン・マッチング254で一致した後、上記正確なマッチング検索16に進む。上記コンテンツ・サーチ・エンジン10が上記正確なマッチング検索16に進むと、マッチング取得素子は上記1対1ポインタの行および列の座標を定義する。この1対1ポインタは、上記ルール・テーブル18内の一致の可能性のある語句のテーブル・アドレスを定義する。明確なパターン・マッチング254がないと、上記コンテンツ・サーチ・エンジンは処理ステップ230によりデータ234を配列し続ける。
上記コンテンツ・サーチ・エンジン10のための上記取得マトリックス12の好ましい実施の形態を参照して上に特に説明したように、上記比較器54は、上記制御マトリックス86を、上記取得素子48の上記階層および加算され切り捨てられた配列データ70のパターンに対応する行および列の座標でクエリーする(232)。加えて、好ましい実施の形態を参照して上に記載したように、上記比較器54は、明確なパターン・マッチング254があるとき、文字マッチング・チェック256も実行する。上記パターン・マッチング・チェック252および文字マッチング・チェック256の組み合わせは、圧縮され切り捨てられた上記データ・ストリーム70中のパターンに基づいたフォールス・ポジティブの可能性を著しく下げる。したがって、上記正確なマッチング検索16に進むために、好ましい実施の形態は上記パターン・マッチング・チェック252で一致することおよび上記文字マッチング・チェック256で一致することの両方を必要とする。好ましい実施の形態によれば、上記パターン・マッチング・チェック252および文字マッチング・チェック256のいずれも一致しないとき、上記コンテンツ・サーチ・エンジンは処理ステップ230によりデータを配列し続ける(234)。
上に記載したように、上記ルール・テーブル18から上記語句26の1つは上記正確なマッチング検索を実行するために読み込まれねばならない。したがって、上に記載したように、また処理ステップ260により、一致の可能性のある語句262は、上記ルール・テーブル18から、取得された1対1ポインタに対応するアドレスから読み込まれる。処理ステップ270において、上記正確なマッチング検索16は一致の可能性のある語句262を、バイパスされたデータ・フロー68と比較する。上記正確なマッチング検索16は、上記バイパスされたデータ・フロー68が同じ組み合わせで正確に同じ文字をもつときは、正確な一致と同定し、また、大文字と小文字を識別する場合は、一致の可能性のある語句として同定する。処理ステップ280により、上記コンテンツ・サーチ・エンジン10を実行するシステムは一般的に上記正確なマッチング272に基づいた同じポリシーで処理を進行する。
上に表2を参照して記載した文字圧縮の上記例に基づいて、圧縮されたデータ・ストリーム70中の複数のパターンに基づいて、フォールス・ポジティブの可能性を下げるために上記パターン・マッチング・チェック252と組み合わせて上記文字マッチング・チェック256を使用する例が説明される。上に記載したように、上記ルール・テーブル18が上記語句“get passwd”を含むとき、上記語句についてのパターンは16進文字値の合計により同等に表すことが可能である、すなわち、“get passwd”⇒0x3E2。上記語句“get passwd”は10文字をもつ。したがって、下記の表3を参照して、かつ、本発明の好ましい実施の形態の上に記載した説明により、第10(10番目)の取得素子は時間13と時間22の間(すなわち、取得した g−e−t− −p−a−s−s−w−dを含む)で上記データ・ストリームの明確なパターン・マッチングおよび明確な文字マッチングを同定する。以下に詳細に記載するように、第10の取得素子は時間1と時間10の間(G−o−t− −P−i−s−s−e−dを含む)で上記データ・ストリームの明確なパターン・マッチングも同定可能であるが、フォールス・ポジティブはこの文字マッチングにより避けられる。特に、上記語句の最後の2文字“w−d”の間の文字マッチングは上記データ・ストリームの最後の2文字“e−d”とは異なる。
第10の取得素子の階層は10に等しい文字長をもった語句に対応する(階層=10≒文字長=10)ので、第10の取得素子以外のどの取得素子48も“g−e−t− −p−a−s−s−w−d”を取得しない。これに対して、上記他の取得素子の上記階層は10より長いまたは10より短い文字長をもつ語句に対応する(階層>10≒文字長>10、階層<10≒文字長<10)。
表3:データ・ストリームの例
Figure 2005524149
上の好ましい実施の形態の説明によれば、上記データ・ストリーム24は、上記取得素子48の上記階層により、上記取得素子48の各々を経由して、配列される。特に、上記第10の取得素子の上記階層は組み合わされた文字長10に対応する。文字値が大文字小文字制御モジュール22を使用して設定されると仮定すると、データ文字の上記“G−o−t− −P−i−s−s−e−d”ストリームの値は、“g−o−t− −p−i−s−s−e−d”データ文字のための値により、上記取得素子48経由で配列される。したがって、時間1から時間10では、配列データ・ストリーム中の“g−o−t− −p−i−s−s−e−d”の文字値は式(1)および式(2)によりそれぞれ加算されて切り捨てられる(上記加算および上記切り捨ては上記10文字を一般的に組み合わせる1つの例である)。上に記載したように、“g−o−t− −p−i−s−s−e−d”の文字値の加算および切り捨てにより16進値0xE2が導かれる。
上記第10の取得素子は、制御マトリックス86を、階層(10)および加算され切り捨てられた配列データのパターン(E2)に対応する行および列の座標でクエリーする。上記語句“get passwd”は10文字の長さをもちその切り捨てられ圧縮された文字値はE2であるので、上記語句のテーブル・アドレスは対応する行および列の座標、すなわち、[10,E2]に格納される。同様に、“got pissed”も10文字の長さをもち、その切り捨てられ圧縮された文字値もE2である。しかし、上記ルール・テーブル18は上記語句“got pissed”を含まない。したがって、第10の取得素子の中のメモリは、“g−o−t− −p−i−s−s−e−d”の切り捨てられて圧縮された文字値を取得して、そして、第10の取得素子の中の比較器は、明確なパターン・マッチングを同定する。
上記制御マトリックス86内の上記1組のフラグ88は上記ポインタ・マトリックス38内の1組のテーブル・アドレス28に対応する。したがって、上記制御マトリックス86および上記ポインタ・マトリックス38は同じ行および列の座標系を使用するので、上記フラグは行および列の座標[10,E2]に設定される。したがって、“g−o−t− −p−i−s−s−e−d”のための上記文字長および上記切り捨てられて圧縮された文字値は明確なパターン・マッチングで得られた[10,E2]である。しかし、上記語句中の最後の2文字“wd”の間の文字マッチングは上記データ・ストリーム中の最後の2文字“e−d”とは異なる。それ故、上記第10の取得素子内の比較器はどの文字マッチングも同定せず、パターン・マッチングのみの使用により生じうるフォールス・ポジティブを避けられる。明確なマッチングの結果として、上記コンテンツ・サーチ・エンジン10は単に上記正確なマッチング検索16に進むので、当然、フォールス・ポジティブは必ずしもエラーにはならない。上記フォールス・ポジティブのマッチングに対応する上記非圧縮データ文字は上記バッファ・メモリ20を経由して通信されるが、上記非圧縮データ文字が上記ルール・テーブル内の上記語句と同一ではないので(すなわち、“g−o−t− −p−i−s−s−e−d”≠“get passwd”)マッチング検索テーブルですべてのフォールス・ポジティブがそのように識別される。
上記コンテンツ・サーチ・エンジン10内の上記取得マトリックス12の別の実施の形態は図5に示されている。この実施の形態によれば、全体のデータ・ストリーム24は、圧縮なしで上記取得素子48を経由して配列可能である。上に記載したように、各メモリ52内で組み合わされた配列データ・ストリーム70内の複数の文字は、上記取得素子48の上記階層に基づき、また、上記取得素子の上記階層は、上記入力装置14および上記メモリ52の各々の間の1組の遅延素子50により定義される。上記メモリ52の各々に取得される上記配列データ・ストリーム70の文字長が上記メモリ52のサイズに対応する。しかし、上記配列データ・ストリーム70への圧縮がないと、上記メモリ52のサイズは上記メモリ52内に格納する各々の追加文字と共に指数関数的に増加する。
例えば、2バイト・メモリ・エンジンは2つの1バイト文字を取得できねばならず、3バイト・メモリ・エンジンは3つの1バイト文字を取得できねばならない。各8ビットバイトは256(28=256)文字まで定義するために使用可能である。したがって、2バイト・メモリ・エンジンが2つの連続した1バイト文字を取得するために、上記2バイト・メモリ・エンジンは(282である8192バイトのメモリサイズをもつ。同様に、3バイト・メモリ・エンジンが3つの連続した1バイト文字を取得するために、上記3バイト・メモリ・エンジンは(283である2097152バイト(約2メガバイト)のメモリサイズをもつ。上記メモリのサイズが圧縮なしでは指数関数的に増加する理由は、上記メモリ・エンジンが、上記ルール・テーブル18内の上記1組の語句26のための種々の組み合わせの各々により、非圧縮文字を取得できるように、上記メモリ・エンジンが上記データ・ストリーム24中の文字の任意の可能な組み合わせに適応するためである。一般的に、最も大きいNバイト・メモリ・エンジンは、N個の連続した1バイト文字をもつ最も長い非圧縮の配列データ・ストリーム70を取得可能であり、上記Nバイト・メモリ・エンジンは概ね式(4)で定義されるメモリサイズをもつ。
メモリサイズ=(28N
ただしN=取得された1バイト文字の数(4)
標準的なランダム・アクセス・メモリ(RAM)の現在の技術は、メモリ・エンジンが、配列された文字および上記ルール・テーブル18内の上記1組の語句26のための文字の可能な組み合わせの間の並び替えの数のため、複数の1バイト文字を取得する能力をもつことのみを可能にさせている。上記配列データ70はCAMメモリ・レジスタのオペランドとして使用可能であり、上記CAMは、上記オペランドが上記1対1ポインタの1つに対応すると、上記CAMからアドレスを返すのみである。このためコンテンツ・アドレッサブル・メモリ(CAM)における進歩に基づいて、より多くの1バイト文字が上記CAMにより効率的に取得可能である。RAMにおいては、上記配列データ70は特定のアドレス位置に格納されねばならず、メモリの指数関数的増加となる。上記CAMにおいては、上記配列データ70は、上記オペランドとしてメモリに供給されて、上記CAMは、1クロック・サイクルで、対応するマッチングが見つかると上記CAM内のアドレスを返す。上記CAMの使用は、配列データ・ストリーム70中の文字を圧縮しても、圧縮しなくても、使用可能である。上記配列データ70を圧縮しないでも、上記CAMは上記メモリと比較器の対56として上記取得マトリックス12内に実装可能であり、そのような取得マトリックス12では、上記CAMのコンテンツは上記1組の1対1ポインタを含む。
一般的に、上記取得マトリックス12は、上記ルール・テーブル18内の上記語句26のための各々の文字の対応するパターンを一致する文字パターンに関して、上記文字が非圧縮か圧縮かおよび/または切り捨てられたかどうかにかかわらず、上記配列データ・ストリーム70を同時に検索する。上に記載したように、同時検索は各上記取得素子48内で実行される。特に、上記取得素子の各々内の上記メモリと比較器の対56は文字組み合わせを同時に取得して(再度、上記文字が非圧縮か圧縮かおよび/または切り捨てられたかどうかにかかわらず)、上記配列データ・ストリーム70内の文字組み合わせのパターンを上記語句26の対応するパターンと比較する。上記メモリと比較器の対内で組み合わされ取得された上記文字の長さは、上記取得素子48の上記階層により定義されて、取得されて組み合わされた文字に比較された上記語句26の長さに対応する。
次に、図6および図7を参照して、上記コンテンツ・サーチ・エンジンの演算は本発明の好ましい実施の形態に関し詳細に記載する。特に、上記ルール・テーブル18による上記ポインタ・マトリックス38および上記制御マトリックス86の生成は図6Aから図6Bに示されている。上記パターン・マッチング・チェック並びに上記文字マッチング・チェックを含む上記取得マトリックス12の演算および上記正確なマッチング検索16は図7Aから図7Cに示されている。
図6Aを参照すると、上記ルール・テーブル18の生成は、好ましくは長さおよび大文字小文字により上記ルール・テーブル18内の上記1組の語句26を分類することにより開始して、上に記載した1組のN個のルール・テーブル102を生成する。大文字小文字が区別されない語句は、好ましくは、小文字に設定され、大文字小文字の区別は好ましくは上記語句のASCII値のみに適用される。上に説明したように、上記1組の語句26は少なくとも1つの語句を含むが、また、上記ルール・テーブル18内に複数の語句が存在可能である。上記1組の語句26に関して、第i語句、第i語句長、および第i語句の大文字小文字の区別は各々term[i]、term_length[i]、およびcase[i]に保存される。語句長の下限(low_term)は整数値、好ましくは3などの小さい数に設定される。
上記ポインタ・マトリックス38および上記制御マトリックス86の生成は、変数の初期化で始まり、配列は初期化される(302)。特に、上記ポインタ・マトリックス38内の1組のポインタ40は好ましくは0に設定されて、上記制御マトリックス86内の上記1組のフラグ88も好ましくは0に設定される。変数“N”は取得素子の数の基準として使用されて、上に記載したように、本詳細な実施の形態は上記配列データ70の圧縮演算および切り捨て演算の両方を使用して、最終的に1バイトパターンを生成する。したがって、マトリックスのサイズ、すなわち、行数×列数は、N×256に制限可能である。
上に記載したように、取得素子の数(N)は最も長い語句の最大文字長に等しいことが好ましい。しかし、上記ポインタ・マトリックス28および上記制御マトリックス86は、上記取得マトリックス12が取得素子の数よりも長い文字長をもつ(term_length>N)語句26に関する配列データ70を取得可能であるように設定可能である(304)。これは、上記パターン・マッチングおよび上記文字マッチングに使用する文字の数を、最大、上記語句中の最初のN文字(cost_end)に制限することによりなされる(306)。当然、N文字以下の文字数をもつ語句にとって、それらの語句の実際の長さは、上記パターン・マッチングおよび上記文字マッチングに使用される文字の数(cost_end)を定義するためにその代わりに使用可能である。
好ましい実施の形態を参照して上に記載したように、各語句のパターンを定義することは、上記語句中の各文字に数値演算を実行して、その数値演算の結果を切り捨てることにより始まる(310)。好ましい実施の形態によれば、上記取得マトリックス12は大文字小文字の区別がなく、上記語句中の任意の大文字が小文字として演算される(+0x20)(312)。上記の例によれば、各語句の文字値は加算されて、1バイトのLSBに切り捨てられる。(sum%256)(312、314)。
上に記載したように、上記語句の各々は等しい文字長をもち(cost_end=i)、これらの等しい長さの語句の1組のポインタは、上記文字長および切り捨て合計値により格納される。したがって、これらの等しい長さの語句にとって、本発明は、これらの等しい長さの語句の各々がその特定のパターンの異なる切り捨て合計をもつことを保証する。図6Bを参照すると、サブプロセスAが、各上記等しい長さの語句が異なる切り捨て合計をもつことを保証する(316)。サブプロセスAは1組の一意フラグ(end_sum[cost_end][sum])を使用して、ある切り捨て合計が、それをもつ語句の文字長と同じ文字長をもつ別の語句に既に使用されていないかを判断する(318)。上記1組の一意フラグ(end_sum[cost_end][sum])を含むマトリックスは、上記ポインタ・マトリックス38と同じ行および列の座標に基づいていて、上記一意フラグは0に初期化される。語句に関して切り捨て合計が計算される時は、常に、一意フラグ・ビットが、上記語句の特定の文字長(cost_end)および切り捨て合計(sum%256)に関して、高レベルである1に設定される(320)。
もし同じ文字長をもつ他の語句が同じ切り捨て合計を生成しないならば、ポインタの値(real_ptr)は、上記文字長および上記切り捨て合計により、上記ポインタ・マトリックスの中の1組のポインタ(pointer[cost_end][sum])に加算される(322)。加えて、対応する大文字小文字制御フラグ(case[i])および制御フラグ(高レベルビット)は各々上記取得マトリックス12の大文字小文字制御マトリックス(case_control[cost_end][sum])および制御マトリックス(active[cost_end][sum])に格納される。これと比べて、もし同じ文字長をもったもう1つの語句が同じ切り捨て合計を生成するなら、上記語句中の、上記切り捨て合計を計算するために使用される文字の数は減らされ、新しい切り捨て合計が計算される(322)。上記切り捨て合計を計算するために使用される文字の数を減らすとき、上記文字の数が語句長の下限より長いことを保証することが好ましい。もしこの文字数削減システムが機能しないなら、上記取得マトリックス12が増やされるべきであるということを暗示している(326)。例えば、N個の語句が全て同じN文字で始まるならば、上記取得マトリックス12は取得素子の数だけ増加する。もう1つの例では、複数の語句の切り捨てられていない合計がそれらのMSBによりかなり異なっていても、上記複数の語句の切り捨て合計は同じLSBをもつこともあり得るので、この場合上記取得マトリックス12は上記各取得素子48の中の上記メモリ52のサイズだけ増加する。圧縮文字値の切り捨ては任意であり、上記各取得素子の各々内のメモリのサイズは上記取得素子の上記階層および上記メモリに格納可能な対応する最大可能圧縮文字値により決定される。特に、圧縮文字値の切り捨てがない場合、上記取得素子の各階層において、上記メモリは式(5)によりサイズが決定される。
メモリサイズ=(28)*(2x),
x≧log(k)/log(2),k=第k取得素子階層 (5)
上に記載したように、上記切り捨て合計がパターン・マッチングに使用されると、フォールス・ポジティブを避けるために第2のマッチング技術を使用することが好ましい。例えば、各語句から2つの非圧縮文字が上記文字マッチングに使用される。したがって、ある1つの語句が同じ長さの他の語句と異なる切り捨て合計をもつことをサブ処理Aが保証した後、これらの非圧縮文字は上記語句から選択可能である。図6Cを参照すると、サブ処理Bは切り捨てられ加算された語句の端から1対の文字を選択して、上記非圧縮文字を1対の文字マトリックス(compare_char[0,1][cost_end][sum])に格納する(328)。加えて、上記パターン・マッチングおよび上記文字マッチングのために使用される上記語句の長さが上記語句中の全ての文字を必ずしも使用しなくても、上記語句全長が上記ルール・テーブル18内に格納されて、それにしたがってポインタ値(real_ptr)が設定される(330)。特に、上記ポインタ値は、現在の語句の全文字長(term_length[i])およびプロトコル比較において使用可能なヘッダ情報などのための任意の追加長(kバイト)を加えることにより、次の語句の開始ポインタ値へインクリメントされる。上記語句カウンタは1ずつインクリメントされて、この処理は、上記ルール・テーブルの終わりに達するまで、次の語句に関し繰り返される(332)。
図7Aを参照すると、上記パターン・マッチング・チェック、上記文字マッチング・チェック、および上記正確なマッチング検索は、上記入力装置からデータを読み込み、上記1組の取得素子経由で上記データ・ストリームを配列することにより始まる。上記データ・ストリームの始めにおいて、上記取得素子48の各々の上記メモリ52内の切り捨て合計は0に初期化される(352)。例えば、もし上記データ・ストリームがヘッダおよびペイロードをもつデータ・パケットであるなら、上記ヘッダが識別されて、ペイロードの合計および切り捨てが開始可能であるとき、上記切り捨て合計を初期化可能である(354)。上に記載したように、加算以外の数値演算は、上記ルール・テーブル内の上記語句に関して実行される演算により使用可能である。上に記載したように、好ましい実施の形態の上記取得マトリックス12は大文字小文字が区別されず、上記データ・ストリーム中のどの大文字も小文字として演算される(+0x20)(356)。上記の例によれば、上記文字値は、取得素子の各々内で同時に加算および切り捨てされる(358)。上に詳細に記載したように、各上記取得素子内で上記加算のために使用される文字の数は上記取得素子の上記階層による。
上に記載したように、非圧縮文字も、上記文字マッチングのため、上記取得素子へ通信される。上記の例によれば、もし上記取得素子48のいずれか1つでパッターン・マッチングが発生するならば、上記1対の文字マトリックスに格納されるように、最後から2番目および最後から3番目の文字(byte_delay[1,2],current_delay[1,2])が、上記語句の対応する最後から2番目の文字および最後から3番目の文字とすぐに比較できるように元の文字および現在の文字は、ともに、2クロック・サイクル遅延される。上記元の文字は、大文字小文字の区別がある語句に関して、パターン・マッチングが発生した場合に遅延される(360)。上記現在の文字は、大文字小文字が区別されない語句に関してパターン・マッチングが発生した場合に遅延される。
次に、図7Bを参照すると、上記パターン・マッチングおよび上記文字マッチングのための処理は各上記取得素子48内で同時に実行される。上記処理は一般的に上記取得マトリックス364内の第k取得素子を参照して説明される。第k取得素子のための比較器は、制御マトリックス内の上記フラグが、上記第k取得素子の上記階層および上記第k取得素子のメモリ内の切り捨て合計値に対応する行および列(k,sum[k])で高レベルに設定されているか否かを決定することにより、上記パターン・マッチング・チェックを実行する(368)。マッチングは、上記配列データおよび上記語句の間の明確なパターン・マッチングを示し、また、上記比較器は上記語句の大文字小文字の区別に基づく文字マッチング・チェックへ進む。上記パターン・マッチング・チェックまたは上記文字マッチング・チェックのいずれも一致しないと、次の文字が上記取得素子経由で配列され、上記処理がもう一度開始する。上記パターン・マッチング・チェックおよび上記文字マッチング・チェックの両方で一致すると、上記取得素子はそのポインタを第k正確マッチング検索372へ提供する(372)。特に、第k正確マッチング検索のための上記ポインタはマッチング取得素子に対応するポインタ・マトリックスの行および列(k,sum[k])から取得される。
次に、図7Cを参照すると、上記第k正確マッチング検索のための上記の語句は上記ルール・テーブルから読み込まれる(374)。特に、上記語句は、第k正確マッチング検索のための上記ポインタ(pointer[k][sum[k]])と等しいアドレスから読み込まれる。大文字小文字区別の説明をすると、バッファ・メモリ経由でバイパスされた実際のコンテンツは、次に、上記ルール・テーブルからの上記語句と比較される(376)。もし上記コンテンツ・サーチ・エンジン10が上記データ・ストリーム中のあるコンテンツおよび上記ルール・テーブル内の任意の語句の間で正確なマッチングを同定すると、一般的に、それを実行するシステムは上記正確なマッチングに基づいて同じポリシーで進む(378)。例えば、上記システムは上記正確なマッチングに基づいて他のステップを実行可能であると同様にパケットを取得可能でもある。次に、データを配列し、かつ、上記パターン・マッチング・チェック、上記文字マッチング・チェック並びに上記正確なマッチング検索を実行する処理が繰り返される(380)。
図8を参照すると、上記取得マトリックス12は取得素子の複数の組で拡張可能である。例えば、16ビットのビット幅を持つ上記データ・ストリーム24の場合402、データ文字404は上記1組の取得素子400を経由して交互に配列可能である。特に、MSBデータ文字406およびLSBデータ文字408は、各々、取得素子410の第1の対を経由して配列される。上記複数の文字は、複数対の階層的取得素子412を経由して加算されるか、配列されて、そして、パターン・マッチングが上記階層的取得素子412のいずれか1つ内で決定可能である。例えば、”g−e−t− −p−a−s−s−w−d”が上記データ・ストリーム24内にあり、語句”get passwd”が上記ルール・テーブル18内にあるとき、上記データ・ストリームは第10の階層的取得素子414のいずれかで取得可能である。詳細に示されているように、取得されている上記データ・ストリームはMSBの”g”で始まり、上記第10の階層的取得素子414の中の対応する1つの取得素子で取得される。上記データ・ストリームはLSB中の”g”で始まり、上記第10の階層的取得素子414の中のもう1つの取得素子に取得される。上記取得マトリックス12の拡張性は、より多くの組の取得素子をもちいて広いビット幅も可能にする。
上記コンテンツ・サーチ・エンジン10は任意のコンテンツ・サーチ・システムに組み込み可能である。例えば、コンテンツ・サーチ・エンジン10は、図9および図10に示されるように、外部コンピュータ・ネットワーク424および内部コンピュータ・ネットワーク426の間の侵入検知システム422の中に組み込み可能である。上記侵入検知システム422の各応用例では、上記ルール・テーブル18内の上記語句26は1組のセキュリティ・ルール428であり、その1組のセキュリティ・ルールは、コンピュータ・ネットワーク426、428への不正アクセスを試みるなどのコンピュータ・ハッキングに使用されることが知られている語句を含む。図10に示されている侵入検知システム422の応用例では、上記1組のセキュリティ・ルール428が、入力データ・パケット430および/または出力データ・パケット432をチェックするために使用可能であることは明白である。入力データ・パケットおよび出力データ・パケットをチェックすることにより(428、430)、上記侵入検知システム422は、より一般的にコンピュータ・セキュリティ・システムとして使用可能である。例えば、ハッキング語句をチェックするほかに、上記セキュリティ・ルール428は、上記コンピュータ・システム経由で試みることのできる他の種類のセキュリティ攻撃を検索するために定義可能である。例えば、コンピュータ・ネットワーク426、428経由で、ある企業秘密を通信する企てを示すある語句が存在しうる。さらに、上記コンテンツ・サーチ・エンジン10は上記内部コンピュータ・ネットワーク426内に存在して、そのネットワーク内の複数のコンピュータ間のハッキングをチェックして、顧客リスト、販売者リスト、従業員給与、および競争相手情報などの企業秘密および/または他の大切な企業情報を含む不正通信を含む企業スパイの証拠をチェックする。
図9および図10に示された詳細な実施の形態では、上記データ・ストリーム24は上記コンテンツ・サーチ・エンジン10内の少なくとも1つのトランシーバ434経由でコンピュータ・ネットワーク426、428の間で通信される。上記データ・ストリーム24は、上に記載したように、上記コンテンツ・サーチ・エンジン10経由で配列される。もし正確なマッチングが上記データ・ストリーム24中の文字と上記セキュリティ・ルール428内の文字の間で見つかると、上記データ・ストリーム中のマッチングしている部分は取得され、検知制御コンピュータ436へ送信される。上記検知制御コンピュータ436はその取得されたデータ・ストリームをログに残すことが可能であり、および/または、取得された上記データ・ストリームにより所定のポリシー・ルールを実行可能である。詳細な実施の形態によれば、もう1つのトランシーバ438が、上記検知制御コンピュータ436および上記コンテンツ・サーチ・エンジン10の間の(図9)、または、入力および出力データ・パケット428、430の両方をチェックする時、コンピュータ・ネットワーク426、428の間(図10)の通信のために使用可能である。図10に示されているように、上記検知制御コンピュータ436が、ファースト・イーサネット接続などの他の種類のインターフェイス経由でも上記コンテンツ・サーチ・エンジン10と通信可能である。上記トランシーバは光イーサネット・インターフェイスでもよい。
上記1組のパターンが正確な文字パターンの集合、ほぼ正確な文字パターンの集合、部分文字パターンの集合、文字演算パターンの集合、切り捨てられた文字演算パターンの集合、またはこれらのパターン集合の組み合わせでもよい。正確な文字パターンの集合は同じ順序で大文字小文字の別も同じ文字の正確な組み合わせにより例示されて、また、ほぼ正確な文字パターンは、上に記載した別の実施の形態またはCAMで実現可能な、同じ順序の同じ文字をもつが大文字小文字が区別されない文字組み合わせにより例示される。文字部分パターンの集合は、上に記載したような文字マッチング演算およびCAMなどの、同じ順序の同じ文字をもつが、上記語句の各々の部分のみである文字組み合わせにより例示される。文字演算パターンの集合は数値演算器および/または論理演算器により演算される文字組み合わせにより例示されて、切り捨てられた文字演算パターン・セットは、上に記載した好ましい実施の形態で実現されるように、文字演算パターン・セットを切り捨てることにより例示される。
本発明によるコンテンツ・サーチ・エンジンの概略図 本発明の好ましい実施の形態による取得マトリックスの好ましい実施の形態の概略図 本発明で使用されるルール・テーブルの詳細図 本発明によるコンテンツ・サーチ・エンジンの演算のフローチャート 本発明の代わりの実施の形態の概略図 ルール・テーブルによる、また、本発明の好ましい実施の形態に従ったポインタ・マトリックスおよび制御マトリックスを生成する方法の詳細フローチャート ルール・テーブルによる、また、本発明の好ましい実施の形態に従ったポインタ・マトリックスおよび制御マトリックスを生成する方法の詳細フローチャート ルール・テーブルによる、また、本発明の好ましい実施の形態に従ったポインタ・マトリックスおよび制御マトリックスを生成する方法の詳細フローチャート 本発明の好ましい実施の形態に従ったパターン・マッチング、文字マッチング、および正確なマッチング検索の方法の詳細フローチャート 本発明の好ましい実施の形態に従ったパターン・マッチング、文字マッチング、および正確なマッチング検索の方法の詳細フローチャート 本発明の好ましい実施の形態に従ったパターン・マッチング、文字マッチング、および正確なマッチング検索の方法の詳細フローチャート 本発明の限定された実施の形態の概略図 本発明により侵入検知システムに統合されたコンテンツ・サーチ・エンジンの概略図 本発明により侵入検知システムに統合されたコンテンツ・サーチ・エンジンの概略図
符号の説明
10 コンテンツ・サーチ・エンジン
12 取得マトリックス
14 入力装置
16 正確なマッチング検索
18 ルール・テーブル
20 バッファ・メモリ
22 大文字小文字制御モジュール
24 データ・ストリーム
26 語句
28 テーブル・アドレス
30 テーブル・アドレス(28)により定義される位置
32 語句内の文字
34 語句内の文字長
36 文字組み合わせ
38 ポインタ・マトリックス
40 1対1ポインタ
42 行および列の座標
44 文字長
46 文字組み合わせ
48 取得素子
50 遅延素子
52 メモリ
54 比較器
56 メモリと比較器の対
58 時間間隔
60 データ文字
62 データ文字(60)の長さ
64 データ文字(60)組み合わせ
66 クロック・サイクル
68 バイパス
70 配列データ・ストリーム
72 1対1ポインタ
74 行および列の座標
76 圧縮演算器
78 加算演算
80 現在の文字
82 過去に加算された文字
84 LSB演算
86 制御マトリックス
88 フラグ
90 データ文字
92 非圧縮データ文字
94 比較文字マトリックス
96 通信経路
98 遅延素子
100 遅延素子
102 ルール・テーブル
104 ルール・テーブル
106 第2のルール・テーブル
108 第Nのルール・テーブル
110 24文字の長さ
400 取得素子
402 16ビットのビット幅を持つデータ・ストリーム(24)の場合
404 16ビットのビット幅を持つデータ文字
406 MSBデータ文字
408 LSBデータ文字
410 取得素子
412 階層的取得素子
414 第10の階層的取得素子
422 侵入検知システム
424 外部コンピュータ・ネットワーク
426 内部コンピュータ・ネットワーク
428 セキュリティ・ルール
430 入力データ・パケット
432 出力データ・パケット
434 トランシーバ
436 検知制御コンピュータ
438 もう1つのトランシーバ

Claims (39)

  1. データ・ストリームを検索する方法であって、
    (a)1組の語句に基づいてポインタ・マトリックスを定義するステップであって、上記語句は複数の文字長と複数の文字組み合わせとをもつ複数の語句の文字を含み、上記ポインタ・マトリックスは上記1組の語句に一意に対応する1組の1対1ポインタを含み、上記1対1ポインタは、上記ポインタ・マトリックスにおいて上記文字長により定義される行の座標と、上記文字組み合わせによって定義される1組のパターンにより定義される列の座標とに格納され、上記1組の語句は少なくとも1つの語句を含み、上記1組のパターンは、上記少なくとも1つの語句に対応する少なくとも1つのパターンを含むステップ;
    (b)ある時間間隔の間に入力装置でデータ・ストリームを受信するステップであって、上記データ・ストリームは、データ長およびデータ組み合わせをもつ1組のデータ文字を含み、上記時間間隔は複数のクロック・サイクルを含むステップ;
    (c)上記時間間隔の間、取得マトリックス経由で上記データ・ストリームを配列するステップであって、上記取得マトリックスは1組の取得素子および1組の遅延素子を含み、上記取得素子は上記入力装置と多重化通信し、上記1組の取得素子は上記1組の遅延素子により階層をもち、各々の上記取得素子と上記入力装置の間の1組の順次増加する複数の上記遅延素子は、上記取得素子の上記階層における等級の増加を定義し、上記配列データ・ストリームは上記取得素子の上記階層により1組のデータ長を含み、さらに、上記配列データ・ストリームは1組のデータ組み合わせを含み、上記1組のデータ組み合わせは上記取得素子の上記階層により上記1組のデータ長に対応するステップ;および
    (d)上記取得素子の上記階層により各上記取得素子で上記1組のパターンおよび上記1組のデータ組み合わせの間でパターン・マッチング・チェックを実行するステップ
    を備える方法。
  2. 請求項1に記載の方法であって、上記ポインタ・マトリックスを定義する上記ステップがさらに、
    (i)上記1組の語句を定義するステップ;
    (ii)1組のテーブル・アドレスによりルール・テーブル内に上記1組の語句を格納するステップ;および
    (iii)上記1組の1対1ポインタを上記1組のテーブル・アドレスとして定義するステップ
    を備える方法。
  3. 請求項2に記載の方法であって、上記パターン・マッチング・チェックを実行する上記ステップが、上記パターン・マッチング・チェックが明確なパターン・マッチングのとき、上記ポインタ・マトリックスから1つの上記テーブル・アドレスを読み込むステップをさらに備える方法。
  4. 請求項3に記載の方法であって、上記パターン・マッチング・チェックが明確なパターン・マッチングのとき、正確なマッチング検索を実行するステップをさらに備える方法。
  5. 請求項1に記載の方法であって、
    上記1組の語句からの1組の圧縮語句値を上記語句の上記文字組み合わせ中の文字に関する演算により計算するステップ;
    上記計算するステップの間に、上記演算により上記文字組み合わせの組を計算するステップ;および
    上記1組の圧縮語句値を上記1組の語句に関する上記文字組み合わせの上記パターンとして定義するステップ
    をさらに備える方法。
  6. 請求項5に記載の方法であって、上記パターン・マッチング・チェックが明確なパターン・マッチングの時、文字マッチング・チェックを実行するステップをさらに備える方法。
  7. 請求項6に記載の方法であって、上記パターン・マッチング・チェックおよび上記文字マッチング・チェックが各々明確なパターン・マッチングおよび明確な文字マッチングのとき正確なマッチング検索を実行するステップをさらに備える方法。
  8. データ・ストリームを検索する方法であって、
    (a)1組の語句を定義するステップであって、上記語句が複数の文字長および上記文字長に関しての複数の文字組み合わせをもつ複数の語句の文字を含み、上記1組の語句は1つの文字長および1つの文字組み合わせをもつ少なくとも1つの語句を含むステップ;
    (b)1組のテーブル・アドレスにより上記1組の語句をルール・テーブル内に格納するステップ;
    (c)ポインタ・マトリックスにより格納された上記1組の語句を上記1組のテーブル・アドレスに相関させるステップであって、上記ポインタ・マトリックスは1組の1対1ポインタおよび1組の行および列の座標を含み、上記1組の1対1ポインタは上記1組のテーブル・アドレスにより定義され、上記行および列の座標は上記1組の語句に対応する上記文字長および1組のパターンにより定義され、上記1組のパターンは上記文字組み合わせに一意に対応して、上記1組のパターンは上記少なくとも1つの語句に対応する少なくとも1つのパターンを含むステップ;
    (d)ある時間間隔の間、入力装置で上記データ・ストリームを受信するステップであって、上記データ・ストリームはあるデータ長およびあるデータ組み合わせをもつ1組のデータ文字を含み、上記時間間隔は複数のクロック・サイクルを含むステップ;
    (e)上記時間間隔の間、取得マトリックス経由で上記受信データ・ストリームを配列するステップであって、上記取得マトリックスは1組の取得素子および1組の遅延素子を含み、上記取得素子は上記入力装置と多重化通信して、上記取得素子は上記1組の遅延素子により階層をもち、各上記取得素子と上記入力装置の間の増加する1組の上記遅延素子が上記取得素子の上記階層内に数を増やして、上記配列受信データ・ストリームは上記取得素子の上記階層によるおよび上記1組の語句の上記文字長に対応する1組のデータ長をもち、上記配列するステップは、
    (i)各上記取得素子に関し上記入力装置から現在の文字を並列に読み込むステップ、
    (ii)上記取得素子の上記階層により上記現在の文字を1組の以前組み合わされた文字の組と並列に組み合わせ、上記組み合わされた文字の組は上記取得素子の上記階層により上記クロック・サイクルに関連するステップ、および
    (iii)上記組み合わされた文字の組を上記階層により上記1組の遅延素子および上記1組の取得素子経由でシフトして、上記組み合わされた文字の組は上記取得素子の上記階層経由で上記増加する数シフトされるステップ
    をさらに備えるステップ;
    (f)上記組み合わされた文字の組を各上記データ長に関する上記文字組み合わせの上記パターンと比較するステップであって、上記比較ステップは、
    (i)各上記取得素子に関して上記取得素子の上記階層により上記文字長を各々定義するステップ、および
    (ii)上記取得素子のいずれか1つ内の上記組み合わされた文字の組が上記文字組み合わせの対応する1つの上記パターンと一致するかどうか決定するステップ
    をさらに備えるステップ;および
    (g)任意の組み合わされた文字の組が上記文字組み合わせの対応する上記パターンと一致すると、正確なマッチングのために上記受信したデータ・ストリームの一部を上記1組の語句からの正確な語句とチェックするステップであって、上記データ・ストリームの上記一部が上記組み合わされた文字の組に関する上記クロック・サイクルに対応して、上記正確な語句は上記ポインタ・マトリックスからの一意の1対1ポインタによるテーブル・アドレスに格納され、上記一意の1対1ポインタは1つの一致する上記取得素子の上記階層および上記文字組み合わせの対応する上記パターンに等しい行および列の座標をもつステップ
    を備える方法。
  9. 請求項8に記載の方法であって、
    大文字小文字区別マトリックスにより大文字小文字が区別される1組の上記語句を同定するステップ;
    いずれの大文字小文字区別からも独立した上記1組の語句の上記パターンを定義するステップ;および
    上記データ・ストリーム中の各上記文字を上記入力装置において大文字小文字を統一して設定するステップ
    をさらに備える方法。
  10. 請求項8に記載の方法であって、
    上記文字組み合わせ中の上記語句の文字に関する演算により、上記1組の語句から1組の圧縮語句値を計算するステップ;
    上記組み合わせるステップの間上記演算により上記組み合わされた文字の組を計算するステップ;および
    上記1組の語句に関する上記文字組み合わせの上記パターンとして上記1組の圧縮された語句値を定義するステップ
    をさらに備える方法。
  11. 請求項10に記載の方法であって、上記演算により上記圧縮語句値を計算する上記ステップが
    上記1組の語句中の1組の値および各上記語句の文字の間の相関を定義するステップ;
    各上記語句中の語句の文字を上記定義された相関による上記値と同等と見なすステップ;
    各上記語句の合計を計算して、上記合計が、各上記語句の文字に相関する各上記値を含むステップ;
    一意でない圧縮語句の上記合計を計算するのに使用される上記語句の文字を減らすステップであって、上記一意でない圧縮語句は同じ文字長および同じ圧縮語句値をもつ他の語句と等しい文字長および圧縮語句値をもつ任意の語句であるステップ;および
    上記一意でない圧縮語句のための上記計算するステップおよび上記減らすステップを繰り返すステップ
    をさらに備える方法。
  12. 請求項11に記載の方法であって、上記演算により上記圧縮語句値を計算する上記ステップが上記合計を各上記語句に関する複数のLSBに切り捨てるステップをさらに備える方法。
  13. 請求項10に記載の方法であって、
    上記演算のための最大文字長を定義して、上記最大文字長が上記取得素子の最多階層に対応するステップ;および
    上記最大文字長を超える文字長をもつ各上記語句に関し上記語句値を計算する上記ステップを上記最大文字長に制限するステップ
    をさらに備える方法。
  14. 請求項13に記載の方法であって、
    加算、減算、積算、除算、排他的論理和、排他的論理和の否定、および連結から構成されるグループからの上記演算を選択するステップ;
    上記圧縮語句値を各上記語句値に関して複数のLSBに切り捨てるステップ;
    上記1組の語句中の各上記語句からの少なくとも1つの語句の文字を比較文字マトリックス内に格納するステップであって、上記比較文字マトリックスは上記取得素子の上記階層および上記切り捨てられた圧縮語句値により定義される行および列をもつステップ;
    各上記取得マトリックス素子を経由して少なくとも1つのデータ文字をいずれの圧縮もせずに配列するステップ;
    いずれの組み合わされた文字の組も上記文字組み合わせの上記対応するパターンに一致するとき、文字マッチングに関して、上記データ文字を上記1組の語句からの上記語句の文字と比較するステップ;および
    上記文字マッチングが発生したとき上記正確なマッチングを判断する上記ステップへ進むステップ
    をさらに備える方法。
  15. 請求項14に記載の方法であって、
    上記1組の圧縮語句値中の各上記圧縮語句値を1組のマッチング制御ビットと同定するステップ;および
    各上記マッチング制御ビットを制御マトリックス内に格納するステップであって、上記制御マトリックスは上記取得素子の上記階層および上記切り捨てられた圧縮語句値により定義される行および列をもつステップ
    をさらに備える方法。
  16. 請求項15に記載の方法であって、
    大文字小文字区別マトリックスにより大文字小文字が区別される1組の上記語句を同定するステップ;
    いずれの大文字小文字区別からも独立した上記1組の語句の上記パターンを定義するステップ;および
    上記データ・ストリーム中の各上記文字を上記入力装置において大文字小文字を統一して設定するステップ
    をさらに備える方法。
  17. 請求項13に記載の方法であって、コンピュータ・ネットワークのための1組のセキュリティ・ルールを上記1組の語句として定義するステップをさらに備えた方法。
  18. 請求項17に記載の方法であって、
    上記時間間隔の間上記入力装置において上記データ・ストリーム中のデータ・パケットを受信するステップであって、上記データ・パケットはヘッダおよび本体を含み、上記ヘッダは1組のプロトコル・パラメータを含み、上記包帯は上記1組のデータ文字を含むステップ;および
    上記プロトコル・パラメータおよび上記データ文字を上記1組のセキュリティ・ルールとチェックして、上記コンピュータ・ネットワーク経由でセキュリティ攻撃をする試みを検出するステップ
    をさらに備える方法。
  19. 請求項18に記載の方法であって、
    セキュリティ攻撃する上記試みのために、上記コンピュータ・ネットワークへ入力される複数の入力データ・パケットを検索するステップ;および
    セキュリティ攻撃する上記試みのために、上記コンピュータ・ネットワークから出力される複数の出力データ・パケットを検索するステップ
    をさらに備える方法。
  20. データ・ストリームを検索する方法であって、
    (a)上記1組のテーブル・アドレスにより1組の語句を語句テーブル内に格納するステップであって、上記語句テーブル内に格納された各上記語句が複数の語句の文字をもち、上記1組の語句は複数の文字長をもつステップ;
    (b)各上記語句の上記語句の文字に関する圧縮演算により、上記1組の語句を1組の圧縮された語句値へ圧縮するステップ;
    (c)1組の1対1ポインタにより格納された上記1組の語句を上記1組のテーブル・アドレスと相関づけるステップであって、上記1組の1対1ポインタはポインタ・マトリックスを備え、上記ポインタ・マトリックスは上記文字長および上記圧縮語句値により行および列の座標をもつステップ;
    (d)ある時間間隔の間入力装置で上記データ・ストリームを受信するステップであって、上記データ・ストリームは複数のデータ文字長をもつ1組のデータ文字を含み、上記時間間隔は複数のクロック・サイクルを含むステップ;
    (e)受信した上記データ・ストリームを取得マトリックス経由で上記時間間隔の間配列するステップであって、上記取得マトリックスは1組の取得素子および1組の遅延素子を備え、上記1組の取得素子は上記1組の遅延素子による階層をもち、上記取得素子の上記階層は上記1組の語句の上記文字長と1対1対応をもち、上記配列するステップは、
    (i)各上記取得素子に関して、上記入力装置から並列に現在の文字を読み込むステップ、
    (ii)上記圧縮演算により上記1組のデータ文字を1組のデータ値に並列に圧縮して、上記圧縮演算が各上記取得素子内で同時に実行されるステップ、および
    (iii)上記遅延素子の上記階層により上記1組の遅延素子経由で上記1組の圧縮データ値をシフトするステップ
    を備えるステップ;
    (f)各々、各上記取得素子および各上記文字長に関する、上記1組の圧縮データ値および上記1組の圧縮語句値中の圧縮語句値の間の値のマッチングを同時にチェックするステップであって、上記1組の圧縮データ値は、上記取得素子の上記階層および上記1組の語句の上記文字長の間の上記1対1対応により、各々、上記1組の圧縮語句値とチェックして、パターン・マッチングは上記1組の圧縮データ値からの一致する圧縮データ値および上記取得素子の上記階層からの一致する階層を返すステップ;および
    (g)上記値のマッチングが発生したとき、上記受信データ・ストリームおよび上記1組の語句からの正確な語句の間の正確なマッチングをチェックするステップであって、上記正確な語句は上記ポインタ・マトリックスからの一意の1対1ポインタによりあるテーブル・アドレスに格納され、上記一意の1対1ポインタは上記一致する圧縮データ値および上記一致する階層と等しい行および列の座標をもつステップ
    を備える方法。
  21. 請求項20に記載の方法であって、上記圧縮演算が合計を計算する上記ステップをさらに備える方法。
  22. 請求項21に記載の方法であって、各上記語句に関し上記合計を複数のLSBへ切り捨てるステップをさらに備える方法。
  23. 請求項20に記載の方法であって、
    大文字小文字区別マトリックスにより大文字小文字が区別される1組の上記語句を同定するステップ;
    いずれの大文字小文字区別からは独立して上記比較演算を定義するステップ;
    上記圧縮演算のための最大文字長を定義して、上記最大文字長が上記取得素子の最多階層に対応するステップ;
    上記1組の語句を圧縮する上記ステップを、上記最大文字長を超える文字長をもつ各上記語句に関する上記最大文字長に制限するステップ;および
    上記データ・ストリーム中の各上記文字を上記入力装置において大文字小文字を統一して設定するステップ
    をさらに備える方法。
  24. 請求項23に記載の方法であって、
    加算、減算、積算、除算、排他的論理和、排他的論理和の否定、および連結から構成されるグループからの上記演算を選択するステップ;
    上記圧縮語句値を各上記語句値に関して複数のLSBに切り捨てるステップ;
    上記1組の語句中の各上記語句からの少なくとも1つの語句の文字を比較文字マトリックス内に格納するステップであって、上記比較文字マトリックスは上記取得素子の上記階層および上記切り捨てられた圧縮語句値により定義される行および列をもつステップ;
    各上記取得マトリックス素子を経由して少なくとも1つのデータ文字をいずれの圧縮もせずに配列するステップ;
    上記値マッチングが発生したとき、上記データ文字および上記1組の語句からの上記語句の文字の間の文字マッチングをチェックするステップ;および
    上記文字マッチングが発生したとき、上記正確なマッチングをチェックする上記ステップへ進むステップ
    をさらに備える方法。
  25. 請求項24に記載の方法であって、
    上記1組の圧縮語句値中の各上記圧縮語句値を1組のマッチング制御ビットと同定するステップ;および
    各上記マッチング制御ビットを制御マトリックス内に格納するステップであって、上記制御マトリックスは上記取得素子の上記階層および上記切り捨てられた圧縮語句値により定義される行および列をもつステップ
    をさらに備える方法。
  26. 請求項20に記載の方法であって、1組のセキュリティ・ルールを上記1組の語句として定義するステップをさらに備えた方法。
  27. コンピュータ・ネットワークへセキュリティ攻撃する試みを検出する方法であって、
    (a)1組のセキュリティ・ルールを定義するステップであって、上記セキュリティ・ルールは複数の文字長内および複数の文字組み合わせ内の複数の文字を含むステップ;
    (b)上記1組のセキュリティ・ルールを1組のテーブル・アドレスによりルール・テーブル内に格納するステップ;
    (c)格納された上記1組のセキュリティ・ルールを1組の1対1ポインタにより上記1組のテーブル・アドレスと相関づけるステップであって、上記1組の1対1ポインタはポインタ・マトリックスを含み、上記ポインタ・マトリックスは上記1組のセキュリティ・ルールの上記文字長および上記1組のセキュリティ・ルールに対応する1組のパターンによる行および列をもち、上記1組のパターンは各上記セキュリティ・ルールに関する上記文字長内の上記文字組み合わせにより上記1組のセキュリティ・ルールと一意に対応するステップ;
    (d)上記時間間隔の間上記入力装置においてデータ・パケットを受信するステップであって、上記データ・パケットはある長さをもつ1組の文字を含み、上記時間間隔は複数のクロック・サイクルを含むステップ;
    (e)上記時間間隔の間取得マトリックスを経由して受信した上記データ・パケットを配列するステップであって、上記取得マトリックスは1組の取得素子および1組の遅延素子を含み、上記取得素子は上記入力装置と多重化通信して、上記取得素子は上記1組の遅延素子により階層をもち、各上記取得素子および入力装置の間の増加する1組の上記遅延素子が上記取得素子の上記階層の増加する数となり、上記配列データ・パケットは上記取得素子の上記階層による1組の長さをもち、上記取得素子の上記階層は上記1組のセキュリティ・ルールの上記文字長に1対1対応をもち、上記配列するステップは、
    (i)各上記取得素子に関し上記入力装置から現在の文字を並列に読み込むステップ、
    (ii)上記取得素子の上記階層により上記現在の文字を1組の以前組み合わされた文字の組と並列に組み合わせ、組み合わされた文字の組を生成するステップ、および
    (iii)上記階層により上記1組の遅延素子および上記1組の取得素子経由で上記組み合わされた文字の組をシフトするステップ
    をさらに備えるステップ;
    (f)上記受信したデータ・パケットからの上記組み合わされた文字の組および上記取得素子並びに各上記文字長各々に関する上記1組のセキュリティ・ルールに一意に対応する上記1組のパターンのパターン・マッチングを同時にチェックするステップであって、上記組み合わされた文字の組は上記取得素子の上記階層および上記1組の語句の上記文字長の間の上記1対1対応により上記1組のパターンと各々チェックされて、パターン・マッチングは上記組み合わされた文字の組のうち一致する文字の組および上記取得素子の一致する階層を返すステップ;および
    (g)上記パターン・マッチングが発生すると、上記データ・パケットの一部および上記1組のセキュリティ・ルールからの正確なセキュリティ・ルールの間の正確なマッチングをチェックするステップであって、上記正確なセキュリティ・ルールは上記ポインタ・マトリックスからの一意の1対1ポインタにより上記ルール・テーブル内のあるテーブル・アドレスに格納され、上記一意の1対1ポインタは上記一致する組み合わされた文字の組および上記一致する階層と等しい行と列をもつステップ
    を備える方法。
  28. データ・ストリームを検索するシステムであって、
    1組の語句および1組のテーブル・アドレスをもつルール・テーブルであって、上記1組の語句中の各上記語句は、上記ルール・テーブル内の、上記1組のテーブル・アドレス内のあるテーブル・アドレスにより定義される位置に格納され、上記1組の語句は複数の文字長および上記文字長に関する複数の文字組み合わせをもつ複数の語句の文字を含み、上記1組の語句は1つの文字長および1つの文字組み合わせをもつ少なくとも1つの語句を含むルール・テーブル;
    ポインタ・マトリックスを含む1組の1対1ポインタであって、上記1組の1対1ポインタは上記テーブル・アドレスを上記ルール・テーブル内の上記1組の語句と相関づけ、上記ポインタ・マトリックスは上記1組の語句に対応する上記文字長および上記1組のパターンにより定義される行および列の座標を含み、上記1組のパターンは同じ文字長をもつ任意の上記語句に関し上記文字組み合わせと一意に対応して、上記1組のパターンは上記少なくとも1つの語句に対応する少なくとも1つのパターンを含む1組の1対1ポインタ;
    バッファ・メモリ;
    ある時間間隔の間上記データ・ストリームを受信する入力装置であって、上記データ・ストリームは1つのデータ長と1つのデータ組み合わせをもつ1組のデータ文字を含み、上記時間間隔は複数のクロック・サイクルを含み、上記入力装置は上記バッファ・メモリ経由で上記データ・ストリームを通信するバイパスをさらに含む入力装置;
    1組の取得素子および1組の遅延素子を含む取得マトリックスであって、上記取得マトリックスは上記入力装置からの上記データ・ストリーム中の上記1組の上記データ文字を各上記取得素子経由で配列して、上記取得素子は上記入力装置と多重化通信して、上記取得素子は上記1組の遅延素子による階層をもち、上記取得素子の上記階層は上記1組の語句の上記文字長と1対1対応をもち、上記1組の取得素子は上記取得素子の上記階層により1組のメモリと比較器の対をさらに含み、上記1組のデータ文字は上記メモリと比較器の対に配列データの1組の組として入っていき、上記1組のメモリと比較器の対は上記1組の配列データおよび上記1組のパターンの間のパターン・マッチングをチェックして、各上記メモリと比較器の対は上記取得素子の上記階層および上記1組の語句の上記文字長の間の上記1対1対応により上記パターン・マッチングを同時にチェックして、一致するメモリと比較器の対は上記取得素子の上記階層および上記配列データにより行および列の座標を定義する取得マトリックス;
    上記バッファ、上記取得マトリックスおよび上記ルール・テーブルと通信する正確なマッチング検索であって、上記正確なマッチング検索が上記バッファから上記データ・ストリームの一部を受信して、および上記取得マトリックスから上記行および列の座標を受信して、上記行および列の座標は階層および上記一致するメモリと比較器の対により配列データを含み、上記正確なマッチング検索は、上記ポインタ・マトリックス内のテーブル・アドレスにより上記ルール・テーブルから正確な語句を抽出し、上記テーブル・アドレスは上記行および列の座標をもつ一意の1対1ポインタにより定義され、上記正確なマッチング検索は上記正確な語句および上記データ・ストリームの上記部分の間の正確なマッチングをチェックする正確なマッチング検索
    を備えるシステム。
  29. 請求項28に記載のシステムであって、上記取得マトリックスが各上記取得素子および上記入力装置の間の増加する1組の上記遅延素子を含み、上記増加する1組の上記遅延素子が上記取得素子の上記階層の増加する数を定義し、上記増加する数の上記階層が上記データ・ストリームの増加する文字長に対応するシステム。
  30. 請求項28に記載のシステムであって、各上記取得素子が上記入力装置と各上記メモリと比較器の対の間に位置する比較演算器をさらに含むシステム。
  31. 請求項30に記載のシステムであって、上記比較演算器が、加算、減算、積算、除算、排他的論理和、排他的論理和の否定、および連結から構成される演算器のグループから選択されるシステム。
  32. 請求項30に記載のシステムであって、各上記取得素子が上記比較演算器および各上記メモリと比較器の対の間に位置する切り捨て素子をさらに含むシステム。
  33. 請求項28に記載のシステムであって、各上記取得素子が上記入力装置および各上記メモリ比較器の組の間に位置する加算演算器をさらに含むシステム。
  34. 請求項33に記載のシステムであって、各上記取得素子が上記加算演算器および各上記メモリと比較器の対の間に位置する切り捨て素子をさらに含むシステム。
  35. 請求項28に記載のシステムであって、上記取得素子が上記ルール・テーブル内の上記1組の語句の最大文字長に対応する最多階層をもつシステム。
  36. 請求項28に記載のシステムであって、上記1組の語句が1組のセキュリティ・ルールをさらに含むシステム。
  37. 請求項28に記載のシステムであって、上記取得マトリックスがコンテンツ・アドレッサブル・メモリであり、上記メモリと比較器の対が上記1組の1対1ポインタを含むシステム。
  38. 請求項28に記載のシステムであって、上記取得マトリックスが標準的なメモリであり、上記メモリと比較器の対が比較器と通信するメモリから構成されるシステム。
  39. 請求項28に記載のシステムであって、追加の取得マトリックスをさらに含み、上記追加の取得マトリックスが追加の1組の取得素子および追加の1組の遅延素子を含み、上記追加の取得マトリックスが上記入力装置および上記取得マトリックスと通信するシステム。
JP2004500213A 2002-04-25 2003-04-25 コンテンツ・サーチ・エンジン Pending JP2005524149A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/132,336 US6959297B2 (en) 2002-04-25 2002-04-25 System and process for searching within a data stream using a pointer matrix and a trap matrix
PCT/US2003/013086 WO2003091910A2 (en) 2002-04-25 2003-04-25 Trap matrix search engine for retrieving content

Publications (2)

Publication Number Publication Date
JP2005524149A true JP2005524149A (ja) 2005-08-11
JP2005524149A5 JP2005524149A5 (ja) 2006-06-29

Family

ID=29268757

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004500213A Pending JP2005524149A (ja) 2002-04-25 2003-04-25 コンテンツ・サーチ・エンジン

Country Status (4)

Country Link
US (2) US6959297B2 (ja)
JP (1) JP2005524149A (ja)
AU (1) AU2003225183A1 (ja)
WO (1) WO2003091910A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018196150A (ja) * 2016-03-31 2018-12-06 株式会社bitFlyer トランザクション処理装置、トランザクション処理方法、及びそのためのプログラム

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6959297B2 (en) 2002-04-25 2005-10-25 Winnow Technology, Llc System and process for searching within a data stream using a pointer matrix and a trap matrix
US7870161B2 (en) 2003-11-07 2011-01-11 Qiang Wang Fast signature scan
US7308561B2 (en) * 2003-12-12 2007-12-11 Alcatel Lucent Fast, scalable pattern-matching engine
US7526804B2 (en) * 2004-02-02 2009-04-28 Microsoft Corporation Hardware assist for pattern matches
US7418410B2 (en) 2005-01-07 2008-08-26 Nicholas Caiafa Methods and apparatus for anonymously requesting bids from a customer specified quantity of local vendors with automatic geographic expansion
US7685195B2 (en) * 2005-03-24 2010-03-23 Sas Institute Inc. Systems and methods for analyzing web site search terms
US7486673B2 (en) 2005-08-29 2009-02-03 Connect Technologies Corporation Method and system for reassembling packets prior to searching
US7984180B2 (en) 2005-10-20 2011-07-19 Solarflare Communications, Inc. Hashing algorithm for network receive filtering
KR100772523B1 (ko) * 2006-08-01 2007-11-01 한국전자통신연구원 패턴을 이용하는 침입 탐지 장치 및 그 방법
US20080040345A1 (en) * 2006-08-07 2008-02-14 International Characters, Inc. Method and Apparatus for String Search Using Parallel Bit Streams
US8392174B2 (en) 2006-08-07 2013-03-05 International Characters, Inc. Method and apparatus for lexical analysis using parallel bit streams
US20080033974A1 (en) * 2006-08-07 2008-02-07 International Characters, Inc. Method and Apparatus for XML Parsing Using Parallel Bit streams
US8954484B2 (en) 2009-06-12 2015-02-10 Cray Inc. Inclusive or bit matrix to compare multiple corresponding subfields
US7764205B2 (en) * 2007-08-27 2010-07-27 Comtech Aha Corporation Decompressing dynamic huffman coded bit streams
US8843523B2 (en) * 2009-01-12 2014-09-23 Micron Technology, Inc. Devices, systems, and methods for communicating pattern matching results of a parallel pattern search engine
US8185432B2 (en) * 2009-05-08 2012-05-22 Sas Institute Inc. Computer-implemented systems and methods for determining future profitability
US9098274B2 (en) 2009-12-03 2015-08-04 Intel Corporation Methods and apparatuses to improve turbo performance for events handling
US20110145205A1 (en) * 2009-12-14 2011-06-16 Sanjeev Jain Packet Boundary Spanning Pattern Matching Based At Least In Part Upon History Information
US8504510B2 (en) * 2010-01-07 2013-08-06 Interdisciplinary Center Herzliya State machine compression for scalable pattern matching
US8458354B2 (en) * 2010-01-27 2013-06-04 Interdisciplinary Center Herzliya Multi-pattern matching in compressed communication traffic
US8627462B2 (en) * 2010-05-10 2014-01-07 Mcafee, Inc. Token processing
US8954661B2 (en) * 2010-11-02 2015-02-10 Intel Corporation Binary search pipeline
US20120150887A1 (en) * 2010-12-08 2012-06-14 Clark Christopher F Pattern matching
US8909813B2 (en) * 2011-03-22 2014-12-09 Ramot At Tel-Aviv University Ltd. Efficient processing of compressed communication traffic
US9223618B2 (en) 2011-09-20 2015-12-29 Intel Corporation Multi-threaded queuing system for pattern matching
US8903715B2 (en) * 2012-05-04 2014-12-02 International Business Machines Corporation High bandwidth parsing of data encoding languages
US20140164434A1 (en) * 2012-12-10 2014-06-12 International Business Machines Corporation Streaming data pattern recognition and processing
US9002846B2 (en) 2013-03-15 2015-04-07 International Business Machines Corporation Ending tuple processing in a stream-based computing application
US20140324530A1 (en) * 2013-04-30 2014-10-30 Liveops, Inc. Method and system for detecting patters in data streams
US11934402B2 (en) * 2021-08-06 2024-03-19 Bank Of America Corporation System and method for generating optimized data queries to improve hardware efficiency and utilization

Family Cites Families (102)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4593353A (en) 1981-10-26 1986-06-03 Telecommunications Associates, Inc. Software protection method and apparatus
US5051947A (en) * 1985-12-10 1991-09-24 Trw Inc. High-speed single-pass textual search processor for locating exact and inexact matches of a search pattern in a textual stream
US4868376A (en) 1987-05-15 1989-09-19 Smartcard International Inc. Intelligent portable interactive personal data system
US5777608A (en) * 1989-03-10 1998-07-07 Board Of Regents, The University Of Texas System Apparatus and method for in-parallel scan-line graphics rendering using content-searchable memories
US5497488A (en) * 1990-06-12 1996-03-05 Hitachi, Ltd. System for parallel string search with a function-directed parallel collation of a first partition of each string followed by matching of second partitions
US5511213A (en) * 1992-05-08 1996-04-23 Correa; Nelson Associative memory processor architecture for the efficient execution of parsing algorithms for natural language processing and pattern recognition
US5469161A (en) * 1992-08-13 1995-11-21 International Business Machines Corporation Algorithm for the implementation of Ziv-Lempel data compression using content addressable memory
US5369605A (en) * 1993-07-07 1994-11-29 Dell Usa, L.P. Incremental search content addressable memory for increased data compression efficiency
US5542045A (en) 1993-10-15 1996-07-30 Software Security, Inc. Method for interposing a security function in a computer program
US5602764A (en) * 1993-12-22 1997-02-11 Storage Technology Corporation Comparing prioritizing memory for string searching in a data compression system
JP2758826B2 (ja) * 1994-03-02 1998-05-28 株式会社リコー 文書検索装置
US5829051A (en) * 1994-04-04 1998-10-27 Digital Equipment Corporation Apparatus and method for intelligent multiple-probe cache allocation
US5525982A (en) * 1994-04-15 1996-06-11 International Business Machines Corporation Method and means for character string pattern matching for compression and the like using minimal cycles per character
US5631971A (en) * 1994-05-24 1997-05-20 Sparrow; Malcolm K. Vector based topological fingerprint matching
US5532693A (en) * 1994-06-13 1996-07-02 Advanced Hardware Architectures Adaptive data compression system with systolic string matching logic
US5546463A (en) 1994-07-12 1996-08-13 Information Resource Engineering, Inc. Pocket encrypting and authenticating communications device
US5778071A (en) 1994-07-12 1998-07-07 Information Resource Engineering, Inc. Pocket encrypting and authenticating communications device
US6151598A (en) * 1995-08-14 2000-11-21 Shaw; Venson M. Digital dictionary with a communication system for the creating, updating, editing, storing, maintaining, referencing, and managing the digital dictionary
US5867609A (en) * 1995-12-07 1999-02-02 Nec Research Institute, Inc. Method for computing correlation operations on partially occluded data
US5826011A (en) 1995-12-26 1998-10-20 Rainbow Technologies, Inc. Method of metering and protecting computer software
US5913216A (en) * 1996-03-19 1999-06-15 Lucent Technologies, Inc. Sequential pattern memory searching and storage management technique
US5576985A (en) * 1996-03-25 1996-11-19 Holtz; Klaus Integrated content addressable read only memory
US5737424A (en) 1996-06-04 1998-04-07 Software Security, Inc. Method and system for secure distribution of protected data using elliptic curve systems
US5809145A (en) * 1996-06-28 1998-09-15 Paradata Systems Inc. System for distributing digital information
US6119120A (en) * 1996-06-28 2000-09-12 Microsoft Corporation Computer implemented methods for constructing a compressed data structure from a data string and for using the data structure to find data patterns in the data string
US6167393A (en) * 1996-09-20 2000-12-26 Novell, Inc. Heterogeneous record search apparatus and method
US6523119B2 (en) 1996-12-04 2003-02-18 Rainbow Technologies, Inc. Software protection device and method
US5907838A (en) * 1996-12-10 1999-05-25 Seiko Epson Corporation Information search and collection method and system
US5805801A (en) * 1997-01-09 1998-09-08 International Business Machines Corporation System and method for detecting and preventing security
EP0859332A1 (en) 1997-02-12 1998-08-19 STMicroelectronics S.r.l. Word recognition device and method
EP0859333A1 (en) 1997-02-12 1998-08-19 STMicroelectronics S.r.l. Method of coding characters for word recognition and word recognition device using that coding
US6282290B1 (en) 1997-03-28 2001-08-28 Mykotronx, Inc. High speed modular exponentiator
US5845298A (en) * 1997-04-23 1998-12-01 Sun Microsystems, Inc. Write barrier system and method for trapping garbage collection page boundary crossing pointer stores
US6098089A (en) * 1997-04-23 2000-08-01 Sun Microsystems, Inc. Generation isolation system and method for garbage collection
US5940389A (en) * 1997-05-12 1999-08-17 Computer And Communication Research Laboratories Enhanced partially self-routing algorithm for controller Benes networks
US5987028A (en) * 1997-05-12 1999-11-16 Industrial Technology Research Insitute Multiple channel ATM switch
US5856977A (en) * 1997-05-15 1999-01-05 Yang; Muh-Rong Distribution network switch for very large gigabit switching architecture
US6167136A (en) 1997-05-16 2000-12-26 Software Security, Inc. Method for preventing copying of digital video disks
US6005940A (en) 1997-05-16 1999-12-21 Software Security, Inc. System for securely storing and reading encrypted data on a data medium using a transponder
US6708273B1 (en) 1997-09-16 2004-03-16 Safenet, Inc. Apparatus and method for implementing IPSEC transforms within an integrated circuit
US6307936B1 (en) 1997-09-16 2001-10-23 Safenet, Inc. Cryptographic key management scheme
US6282657B1 (en) 1997-09-16 2001-08-28 Safenet, Inc. Kernel mode protection
US6397331B1 (en) 1997-09-16 2002-05-28 Safenet, Inc. Method for expanding secure kernel program memory
US6278782B1 (en) 1997-09-16 2001-08-21 Safenet, Inc. Method of implementing a key recovery system
US6704871B1 (en) 1997-09-16 2004-03-09 Safenet, Inc. Cryptographic co-processor
US6453415B1 (en) 1997-09-16 2002-09-17 Safenet, Inc. Method of communicating securely between an application program and a secure kernel
US20010056540A1 (en) 1997-09-16 2001-12-27 Timothy Ober Secure memory area
US6412069B1 (en) 1997-09-16 2002-06-25 Safenet, Inc. Extending crytographic services to the kernel space of a computer operating system
US6223172B1 (en) * 1997-10-31 2001-04-24 Nortel Networks Limited Address routing using address-sensitive mask decimation scheme
US6147890A (en) * 1997-12-30 2000-11-14 Kawasaki Steel Corporation FPGA with embedded content-addressable memory
US6128741A (en) 1998-03-05 2000-10-03 Rainbow Technologies, Inc. Compact transparent dongle device
US6240436B1 (en) 1998-03-30 2001-05-29 Rainbow Technologies, Inc. High speed montgomery value calculation
US6240407B1 (en) * 1998-04-29 2001-05-29 International Business Machines Corp. Method and apparatus for creating an index in a database system
US20020019629A1 (en) 1998-07-10 2002-02-14 Medtronic, Inc. Devices, systems and methods for transluminally and controllably forming intramyocardial channels in cardiac tissue
US6311183B1 (en) * 1998-08-07 2001-10-30 The United States Of America As Represented By The Director Of National Security Agency Method for finding large numbers of keywords in continuous text streams
US6226618B1 (en) * 1998-08-13 2001-05-01 International Business Machines Corporation Electronic content delivery system
US6438612B1 (en) 1998-09-11 2002-08-20 Ssh Communications Security, Ltd. Method and arrangement for secure tunneling of data between virtual routers
US6079621A (en) 1998-11-13 2000-06-27 Chrysalis-Its Inc. Secure card for E-commerce and identification
US6253243B1 (en) * 1998-12-04 2001-06-26 Sun Microsystems, Inc. Automated trap control for a distributed network management system
US6338056B1 (en) * 1998-12-14 2002-01-08 International Business Machines Corporation Relational database extender that supports user-defined index types and user-defined search
US6314506B1 (en) * 1998-12-28 2001-11-06 Intel Corporation Method and apparatus for determining a next address within a binary search algorithm
US6463538B1 (en) 1998-12-30 2002-10-08 Rainbow Technologies, Inc. Method of software protection using a random code generator
US7269844B2 (en) 1999-01-15 2007-09-11 Safenet, Inc. Secure IR communication between a keypad and a token
US7111324B2 (en) 1999-01-15 2006-09-19 Safenet, Inc. USB hub keypad
US6848045B2 (en) 1999-01-15 2005-01-25 Rainbow Technologies, Inc. Integrated USB connector for personal token
US6671808B1 (en) 1999-01-15 2003-12-30 Rainbow Technologies, Inc. USB-compliant personal key
US20010013802A1 (en) 1999-07-07 2001-08-16 Ghene Faulcon System and process for high speed interface clock skew correction
US6842896B1 (en) 1999-09-03 2005-01-11 Rainbow Technologies, Inc. System and method for selecting a server in a multiple server license management system
US6678734B1 (en) 1999-11-13 2004-01-13 Ssh Communications Security Ltd. Method for intercepting network packets in a computing device
FI20002377L (fi) 2000-10-27 2002-04-28 Ssh Comm Security Corp Menetelmä käännetyn suodatinkoodin hallitsemiseksi
US7023816B2 (en) 2000-12-13 2006-04-04 Safenet, Inc. Method and system for time synchronization
US6941404B2 (en) 2000-12-19 2005-09-06 Safenet B.V. Data transfer device, transaction system and method for exchanging control and I/O data with a data processing system
US20020104004A1 (en) 2001-02-01 2002-08-01 Bruno Couillard Method and apparatus for synchronizing real-time clocks of time stamping cryptographic modules
US7310800B2 (en) 2001-02-28 2007-12-18 Safenet, Inc. Method and system for patching ROM code
US20020129290A1 (en) 2001-03-06 2002-09-12 Bruno Couillard Method and system for time synchronization
FI20010596A0 (fi) 2001-03-22 2001-03-22 Ssh Comm Security Oyj Turvallisuusjärjestelmä tietoliikenneverkkoa varten
US20020157003A1 (en) 2001-04-18 2002-10-24 Rouslan Beletski Apparatus for secure digital signing of documents
US6807553B2 (en) 2001-04-23 2004-10-19 Safenet B.V. Digital true random number generator circuit
US6973565B2 (en) 2001-05-09 2005-12-06 Safenet Canada, Inc. Biometrically secured memory IC
US7200759B2 (en) 2001-06-08 2007-04-03 Safenet B.V. Method and device for making information contents of a volatile semiconductor memory irretrievable
US7463739B2 (en) 2001-08-02 2008-12-09 Safenet, Inc. Method and system providing improved security for the transfer of root keys
US7328348B2 (en) 2001-08-02 2008-02-05 Safenet, Inc. Method and system for securely timestamping digital data
US20030028664A1 (en) 2001-08-02 2003-02-06 Kaijun Tan Method and system for secure distribution and utilization of data over a network
US7240040B2 (en) 2001-09-12 2007-07-03 Safenet, Inc. Method of generating of DFA state machine that groups transitions into classes in order to conserve memory
US6856981B2 (en) 2001-09-12 2005-02-15 Safenet, Inc. High speed data stream pattern recognition
US20030110208A1 (en) 2001-09-12 2003-06-12 Raqia Networks, Inc. Processing data across packet boundaries
US7233663B2 (en) 2001-10-29 2007-06-19 Safenet, Inc. Key generation performance improvement
US7222240B2 (en) 2001-11-06 2007-05-22 Safenet, Inc. Token for storing installation software and drivers
US7320075B2 (en) 2001-11-20 2008-01-15 Safenet, Inc. Software protection method utilizing hidden application code in a protection dynamic link library object
US20030110379A1 (en) 2001-12-07 2003-06-12 Tatu Ylonen Application gateway system, and method for maintaining security in a packet-switched information network
US20030163738A1 (en) 2002-02-25 2003-08-28 Bruno Couillard Universal password generator
US7461370B2 (en) 2002-02-25 2008-12-02 Safenet, Inc. Fast hardware processing of regular expressions containing sub-expressions
US6959297B2 (en) 2002-04-25 2005-10-25 Winnow Technology, Llc System and process for searching within a data stream using a pointer matrix and a trap matrix
FI113127B (fi) 2002-06-28 2004-02-27 Ssh Comm Security Corp Yleislähetyspakettien välittäminen turvallisissa tietokoneiden välisissä tietoliikenneyhteyksissä
US7054894B2 (en) 2002-08-16 2006-05-30 Safenet B.V. Generator circuit for generating large numbers
US7337323B2 (en) 2002-09-20 2008-02-26 Safenet, Inc. Boot-up and hard drive protection using a USB-compliant token
US7205883B2 (en) 2002-10-07 2007-04-17 Safenet, Inc. Tamper detection and secure power failure recovery circuit
US7895443B2 (en) 2002-11-05 2011-02-22 Safenet, Inc. Secure authentication using hardware token and computer fingerprint
US20040098596A1 (en) 2002-11-15 2004-05-20 Rainbow Technologies, Inc. Driverless USB security token
WO2004072797A2 (en) 2003-02-07 2004-08-26 Safenet, Inc. System and method for determining the start of a match of a regular expression
US7263606B2 (en) 2003-02-25 2007-08-28 Safenet, Inc. Method and apparatus for software protection via multiple-route execution
US20040215966A1 (en) 2003-04-28 2004-10-28 Rainbow Technologies, Inc. Bending USB token

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018196150A (ja) * 2016-03-31 2018-12-06 株式会社bitFlyer トランザクション処理装置、トランザクション処理方法、及びそのためのプログラム
US11436593B2 (en) 2016-03-31 2022-09-06 Bitflyer Blockchain, Inc. Transaction processing device, transaction processing method, and program for same

Also Published As

Publication number Publication date
WO2003091910A3 (en) 2004-05-27
AU2003225183A1 (en) 2003-11-10
AU2003225183A8 (en) 2003-11-10
US20060050968A1 (en) 2006-03-09
WO2003091910A2 (en) 2003-11-06
US20030208487A1 (en) 2003-11-06
US7464089B2 (en) 2008-12-09
US6959297B2 (en) 2005-10-25

Similar Documents

Publication Publication Date Title
JP2005524149A (ja) コンテンツ・サーチ・エンジン
US6000008A (en) Method and apparatus for matching data items of variable length in a content addressable memory
JP4555088B2 (ja) データ内のパターンの高速文脈サーチ及び特徴付けを実行するためのプログラム可能な規則処理装置
US7110540B2 (en) Multi-pass hierarchical pattern matching
US20080065639A1 (en) String matching engine
US7240040B2 (en) Method of generating of DFA state machine that groups transitions into classes in order to conserve memory
US8495094B2 (en) Fast signature scan
Le et al. A memory-efficient and modular approach for large-scale string pattern matching
WO2004013777A1 (en) System and method of parallel pattern matching
US20100153420A1 (en) Dual-stage regular expression pattern matching method and system
EP3292481B1 (en) Method, system and computer program product for performing numeric searches
EP1436936A2 (en) High speed data stream pattern recognition
JP2005524149A5 (ja)
US10121541B2 (en) Semiconductor device and information processing system
US6687715B2 (en) Parallel lookups that keep order
Pao et al. Multi-stride string searching for high-speed content inspection
US10795580B2 (en) Content addressable memory system
US20160105363A1 (en) Memory system for multiple clients
US20020087537A1 (en) Method and apparatus for searching a data stream for character patterns
Bu et al. A keyword match processor architecture using content addressable memory
US20020053002A1 (en) System for associative processing
CN113360726B (zh) 并行正则表达式匹配器
JPH0696124A (ja) 情報検索装置
Thinh et al. Pamela: Pattern matching engine with limited-time update for nids/nips
JP3443356B2 (ja) パケット分類装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060301

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060301

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060511

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20070426

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070426

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20081217

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20081217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090706

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100302