説明

パターンの検出に関する改善

【課題】複数のデータブロック内における或るパターンを検出する方法を提供すること。
【解決手段】本発明による、複数のデータブロック内のパターンを検出する方法は、一組の選択されたパターンのうちの複数のパターンからなる第1部分集合を含む第1データベースを生成するステップと、残りのパターンの第2部分集合を含む第2データベースを生成するステップと、複数のデータブロックを受け取り、データブロックごとに処理して第1出力を出力するステップと、データブロックを第2データベースと比較するのに連想メモリ(CAM)を使用して処理して第2出力を出力するステップと、第1出力及び第2出力を合成し、いずれかの出力がデータブロックが選択されたパターンを含むことを示す場合に、データブロックが選択されたパターンを含むことを示すフラグを出力するステップとを含む

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、パターンの検出に関する。
【背景技術】
【0002】
情報内のパターンを検出する能力が望まれる多数の応用例がある。これには、特定のパターン又はストリングが選択され、情報から、一致するパターン又はストリングが検索される、ストリング照合が含まれる。これは、多数の分野、たとえば、文書検索、レコード検索、セキュリティ(たとえば、データメッセージ又は音声メッセージから、特定の1つ又は複数の単語或いは単語のシーケンスを含むパターンが検索される場合がある)で応用される。パターン検出が使用される他の応用例は、DNA塩基配列決定などの生物学応用例と、正規表現処理、IPパケット分類、及びディープパケットインスペクション(deep packet inspection)などの電気通信産業での様々な応用を含む。後者の応用では、パケットを、たとえば、ウィルス又はワームなどの悪意のある内容に見られるパターンの存在について、点検することができる。
【発明の概要】
【発明が解決しようとする課題】
【0003】
パターン検出の応用は、非常に広く行きわたっているので、検出の改善、たとえば検出の速度の改善が、常に求められている。
【課題を解決するための手段】
【0004】
本発明の第1の態様によれば、複数のデータブロック内のパターンを検出する方法であって、
一組の選択されたパターンのうちの複数のパターンからなる第1部分集合を含む第1データベースを生成するステップと、
前記一組の選択されたパターンのうちの残りのパターンからなる第2部分集合を含む第2データベースを生成するステップと、
複数のデータブロックを受け取り、データブロックごとに、
キーを生成するためにデータブロック及びハッシュ関数を使用し、
第1データベースを検索するためにキーを使用し、
キーに対応する第1データベースのエントリを特定し、
キーを生成する選択されたパターン若しくは0を含むエントリの内容を読み取り、
エントリの内容が0を含む場合に、データブロックが選択されたパターンを含まないと判定し、データブロックが選択されたパターンを含まないことを示す第1出力を出力し、又は、
エントリの内容が選択されたパターンを含む場合に、データブロックが選択されたパターンを含むと判定し、データブロックが選択されたパターンを含むことを示す第1出力を出力し、又は、
データブロックが選択されたパターンを含まないと判定し、データブロックが選択されたパターンを含まないことを示す第1出力を出力する、
ステップと、
データブロックを第2データベースと比較するのに連想メモリ(CAM)を使用して、
データブロックが第2データベース内の選択されたパターンと一致すると判定し、データブロックが選択されたパターンを含むことを示す第2出力を出力し、又は、
データブロックが第2データベース内の選択されたパターンと一致しないと判定し、データブロックが選択されたパターンを含まないことを示す第2出力を出力する、
ステップと、
第1出力及び第2出力を合成し、いずれかの出力がデータブロックが選択されたパターンを含むことを示す場合に、データブロックが選択されたパターンを含むことを示すフラグを出力するステップと
を含む方法が提供される。
【0005】
一組の選択されたパターンのうちの複数のパターンからなる第1部分集合を含む第1データベースを生成するステップは、各可能性のあるデータブロックを判定するステップと、複数のキーを生成するために各可能性のあるデータブロック及びハッシュ関数を使用するステップと、キーを生成する又は各データブロックを、一組の選択されたパターンと比較するステップと、又は各データブロックが選択されたパターンを含まない場合に、キー及び0を含む第1データベースのエントリを生成し、或いは、データブロック又はそのいずれかが選択されたパターンを含む場合に、キー、選択されたパターンを含むデータブロック又はそのうちの1つ、及びデータブロックの識別子(ID)を含む第1データベースのエントリを生成するステップとを含むことができる。
【0006】
一組の選択されたパターンのうちの残りのパターンからなる第2部分集合を含む第2データベースを生成するステップは、第1データベースのエントリに格納されない選択されたパターンを含むデータブロックのそれぞれを含む第2データベースのエントリを生成するステップを含むことができる。
【0007】
キーを生成するステップは、データブロックに関して圧縮されたキーを生成するステップを含むことができる。圧縮された鍵の生成は、減らされたメモリ要件をもたらす。
【0008】
データブロックが選択されたパターンを含む又は含まないと判定するステップは、データブロックと選択されたパターンとの間の一致が発生するのか発生しないのかを判定するためにデータブロックを選択されたパターンと比較するステップを含むことができる。
【0009】
第1及び第2の出力を合成することは、出力を多重化することを含むことができる。
【0010】
この方法を、データブロックの任意の位置から始まるパターンを検出するのに使用することができる。この方法を、様々な長さを有する選択されたパターンを検出するのに使用することができる。
【0011】
本発明の第2の態様によれば、複数のデータブロック内のパターンを検出するパターン検出回路であって、
複数のハッシュモジュールと、複数のCAMモジュールと、コンバイナモジュールとを備え、
ハッシュモジュールの各々が、一組の選択されたパターンのうちの複数のパターンからなる第1部分集合を含む第1データベースを有するものであり、
ハッシュモジュールが、複数のデータブロックを受け取るものであり、データブロックごとに、
データブロック及びハッシュ関数を使用してキーを生成し、
キーを使用して前記第1データベースを検索し、
キーに対応する前記第1データベースのエントリを特定し、
キーを生成する選択されたパターン若しくは0を含む前記エントリの内容を読み取り、
エントリの内容が0を含む場合に、データブロックが選択されたパターンを含まないと判定し、データブロックが選択されたパターンを含まないことを示す第1出力を出力し、又は、
エントリの内容が選択されたパターンを含む場合に、データブロックが選択されたパターンを含むと判定し、データブロックが選択されたパターンを含むことを示す第1出力を出力し、又は、
データブロックが選択されたパターンを含まないと判定し、データブロックが選択されたパターンを含まないことを示す第1出力を出力する、
ものであり、
CAMモジュールの各々が、一組の選択されたパターンのうちの残りのパターンからなる第2部分集合を含む第2データベースを備え、
CAMモジュールの各々が、複数のデータブロックを受け取り、データブロックごとに、
データブロックを第2データベースと比較し、
データブロックが第2データベース内の選択されたパターンと一致すると判定し、データブロックが選択されたパターンを含むことを示す第2出力を出力し、又は、
データブロックが第2データベース内の選択されたパターンと一致しないと判定し、データブロックが選択されたパターンを含まないことを示す第2出力を出力する、
ものであり、
コンバイナモジュールが、第1出力及び第2出力を合成し、いずれかの出力が、データブロックが選択されたパターンを含むことを示す場合に、データブロックが選択されたパターンを含むことを示すフラグを出力するものである、回路が提供される。
【0012】
各ハッシュモジュールは、RAMデバイスを備えることができる。各RAMデバイスは、第1データベースを格納することができる。キーを、RAMデバイスの複数のメモリ位置に割り当てられたアドレスを検索するためのアドレスとしてキーを使用することによってRAMデバイスの第1データベースを検索するのに使用することができる。
【0013】
各ハッシュモジュールは、それぞれがキーを生成するためにデータブロック及びハッシュ関数を使用する複数のハッシュデバイスを備えることができる。
【0014】
各CAMモジュールは、複数のCAMセルを備えることができる。各CAMセルは、第2データベースのパターンを含むデータブロックを格納することができる。各CAMセルは、それぞれが受け取られたデータブロックをCAMセルに格納されたデータブロックと比較する複数のコンパレータを備えることができる。
【0015】
コンバイナモジュールは、マルチプレクサを含むことができる。
【0016】
このパターン検出回路は、データブロックの任意の位置から始まるパターンを検出することができる。このパターン検出回路は、複数のハッシュデバイス及び複数のCAMコンパレータを備えることができ、第1データブロックを、第1ハッシュデバイス及び第1CAMコンパレータに入力することができ、第1データブロックに関してシフトされた第2データブロックを、第2ハッシュデバイス及び第2CAMコンパレータに入力することができ、以下同様である。第2データブロックを、第1データブロックに関してブロックの1つ又は複数の位置だけシフトすることができる。たとえば、第1及び第2のデータブロックは、ビット又はバイトを備えることができ、第2データブロックを、第1データブロックに関してブロックの1つ又は複数のビット又はバイトを含む1つ又は複数の位置だけシフトすることができる。これは、データブロック内の任意の位置から始まるパターンの検出を可能にする。このパターン検出回路は、長さnのパターンを検出する第1部分、長さn−1のパターンを検出する第2部分、長さn−2のパターンを検出する第3部分など、複数の部分を備えることができる。
【0017】
選択されたパターンは、データブロック内のその存在を検出することが望まれる複数のパターンを含む。選択されたパターンは、単語全体若しくは部分的単語、ストリング全体若しくは部分的ストリング、DNA配列全体若しくは部分的DNA配列、又は悪意のある内容のシグネチャ若しくはシグネチャセグメントのうちのいずれかを含むことができる。
【0018】
用語パターンが、任意の文字又は複数の文字を記述するのに使用され、反復的性質を有する複数の文字を意味することに限定されないことを理解されたい。
【0019】
本発明の実施形態を、これから、例としてのみ、添付図面を参照して説明する。
【図面の簡単な説明】
【0020】
【図1】ハッシュモジュール及びCAMモジュールを備える、本発明によるパターン検出回路を示す概略図である。
【図2】図1のハッシュモジュールの一部を示す概略図である。
【図3】図1のCAMモジュールの一部を示す概略図である。
【図4】本発明のシグネチャ検出回路を備えるディープパケットインスペクションシステムを示す概略図である。
【発明を実施するための形態】
【0021】
以下の実施形態では、選択されたパターンは、悪意のある内容のシグネチャ又はシグネチャのセグメントを備えるものとする。しかし、これが例にすぎないことと、本発明が、多数のタイプのパターンの検出に適用可能であることとを了解されたい。
【0022】
図1に、入力レジスタ10、ハッシュモジュール12、連想メモリ(CAM)モジュール14、複数のマルチプレクサ16、及び複数の出力レジスタ18を備える、パターン検出回路又はシグネチャ検出回路1を示す。この実施形態では、シグネチャ検出回路は、通信ネットワークのディープパケットインスペクション(DPI)システムの一部を形成し、複数のエンティティの間で通信されるデータを受信する。データは、パケットにフォーマットされ、各パケットは、ヘッダ及びペイロードを備える。任意のパケットのペイロードが、ウィルス又はワームなど、悪意のある内容を含む場合があることが可能である。シグネチャ検出回路1は、データをチェックし、DPIシステムに対して、データ内で見つかったすべての悪意のある内容にフラグを立てる。ウィルスなどの悪意のある内容は、一般に、それぞれ、一意の識別子又はシグネチャを備える。現在まで、対応する有限の個数のシグネチャを有する有限の個数のウィルスなどが知られている。本発明のシグネチャ検出回路1は、これらのシグネチャを探すことによって、悪意のある内容についてネットワーク内のデータをチェックする。
【0023】
ネットワークデータは、シグネチャ検出回路1の入力レジスタ10に入力され、そこから出力され、この実施形態では、一連の4バイトデータブロックとして、この回路によって処理される。しかし、他のデータブロックサイズ、たとえば、8バイト又は16バイトのデータブロックを使用できることを了解されたい。悪意のある内容の各シグネチャは、通常、複数のバイト、たとえば、1、2、3、4、6、8、12、14、16、24などを含む。したがって、各シグネチャが、入力レジスタ10から出力される1つ又は複数のデータブロックにまたがって広がる可能性がある。検出されるべきシグネチャが、データブロックの長さより短い(すなわち、この実施形態では4バイト未満の)長さを有するときには、シグネチャ検出回路は、完全なシグネチャについて、受け取られたデータブロックを点検する。よりしばしばそうであるように、検出すべきシグネチャが、データブロックの長さより長い(すなわち、この実施形態では4バイトを超える)長さを有するときには、シグネチャ検出回路は、シグネチャのセグメントについて、受け取られたデータブロックを点検する。検出されたシグネチャ又はシグネチャセグメントに関する情報は、シグネチャ検出回路1から出力され、シグネチャセグメントの場合には、照合され得る。
【0024】
シグネチャ又は第1シグネチャセグメントは、ネットワークデータ内の複数の位置から始まる可能性がある。これは、データの第1ブロックに関してシフトされた(又はオフセットされた)、たとえば1つ又は複数のバイトだけシフトされた、データのブロックを処理するようにシグネチャ検出回路1を構成することによって考慮に入れられる。この実施形態では、シグネチャ検出回路1は、4バイトのデータのブロック、たとえばx1、x2、x3、及びx4(シフト=0)をハッシュモジュール12の第1ハッシュデバイス及びCAMモジュール14の第1CAMコンパレータに入力することによってデータを処理する。1バイトだけシフトされた4バイトのデータの次のブロックすなわち、x2、x3、x4、及びx5が、ハッシュモジュール12の第2ハッシュデバイス及びCAMモジュール14の第2CAMコンパレータに入力され、ハッシュモジュール12の各ハッシュデバイス及びCAMモジュール14の各CAMコンパレータについて、以下同様である。ハッシュモジュール12とCAMモジュール14との両方が、悪意のある内容についてデータブロックをチェックする。これらのモジュールの出力は、複数のマルチプレクサ16によって受け取られ、データブロック内で見つかったすべての悪意のある内容の詳細が、マルチプレクサ16によって複数の出力レジスタ18に出力され、これらから、通信ネットワークに出力される。
【0025】
シグネチャ検出回路1のこの実施形態のコンポーネントの機能を、これからより詳細に説明する。
【0026】
図2に、ハッシュモジュール12の一部を詳細に示す。これは、第1から第4までのハッシュデバイス20、第1から第4までのレジスタ22、マルチプレクサ24、RAMデバイス26、第1から第4までのレジスタ28、及び第1から第4までのコンパレータ30を含む。悪意のある内容についてチェックされなければならないネットワークデータは、図示のように4バイトのブロックで、ハッシュデバイス20のそれぞれによって受け取られる。
【0027】
各ハッシュデバイスは、同一の形で動作し、その基本的なハッシュ関数は、4バイト(32ビット)のデータブロックを受け取り、キーを生成することであり、このキーの値は、データブロックの値に依存し、このキーは、データブロックに関して圧縮される、すなわち、32ビット未満を含む。この実施形態では、ハッシュデバイスによって生成される各キーが、12ビットの長さを有する。しかし、12以外(ただし、32未満)のビットサイズを有するキーを生成できることを了解されたい。
【0028】
ハッシュ関数の使用は、複数の別個のデータブロックが同一のキーを生成する、高い確率を生じる。たとえば、5つの別個のデータブロック(そのうちの3つは悪意のある内容を含み、そのうちの2つは含まない)が、同一のキーを生成する可能性がある。そのような状況を、衝突と称する。
【0029】
ハッシュデバイス内で使用される特定のハッシュ関数が決定された時に、ソフトウェアモジュールは、そのハッシュ関数を使用して、すべての可能性のある32ビットデータブロックについて鍵を生成する。これは、キーごとに1エントリを有するテーブルを作成することを可能にし、このエントリは、キーの値と、0又はそのキーを生成する1つ又は複数のデータブロックのいずれかとを含む。キーが、それぞれが悪意のある内容を含まない1つ又は複数のデータブロックによって生成された場合に、そのキーのエントリは、キー値及び0を含む。キーが、それぞれが既知のシグネチャのうちの1つからなるか既知のシグネチャのうちの1つの1セグメントを含む、すなわち、悪意のある内容を含む、1つ又は複数のデータブロックによって生成された場合に、そのキーのエントリは、キー値と、1つ又は複数のデータブロックのそれぞれすなわち、1つ又は複数のシグネチャ又はシグネチャセグメントのそれぞれとを含む。1つ又は複数のデータブロックのそれぞれのシグネチャID又はシグネチャセグメントIDのどちらであれ、適当なものも、キーのエントリに追加され、その使用は、下で説明する。1つ又は複数のデータブロックが既知のシグネチャのうちの1つからなるか既知のシグネチャのうちの1つの1セグメントを含む、すなわち、悪意のある内容を含み、1つ又は複数のデータブロックが悪意のある内容を含まない、複数のデータブロックによってキーが生成された場合に、そのキーのエントリは、キー値と、悪意のある内容を含む1つ又は複数のデータブロックのそれぞれすなわち1つ又は複数のシグネチャ又はシグネチャセグメントのそれぞれと、これらの1つ又は複数のデータブロックのそれぞれのシグネチャID又はシグネチャセグメントIDとを含む。したがって、ハッシュ関数の使用から生じる衝突が、記録される。
【0030】
次に、このテーブルは、ハッシュモジュール12のRAMデバイス26を構成するのに使用される。RAMデバイス26は、複数のメモリ位置を備える。各メモリ位置には、次のように、キーのうちの1つと等しい値を有するアドレスと、0又はそのキーを生成する1つのデータブロックのいずれかを含む内容とが割り当てられる。キーが、それぞれが悪意のある内容を含まない1つ又は複数のデータブロックによって生成された場合に、そのキーのメモリ位置の内容は、0を含む。キーが、それぞれが既知のシグネチャのうちの1つからなるか既知のシグネチャのうちの1つの1セグメントを含む、すなわち悪意のある内容を含む1つ又は複数のデータブロックによって生成された場合に、そのキーのメモリ位置の内容は、1つ又は複数のデータブロックのうちの1つすなわち、1つ又は複数のシグネチャ又はシグネチャセグメントのうちの1つと、シグネチャID又はシグネチャセグメントIDとを含む。1つ又は複数のデータブロックが既知のシグネチャのうちの1つからなるか既知のシグネチャのうちの1つの1セグメントを含むすなわち悪意のある内容を含み、1つ又は複数のデータブロックが悪意のある内容を含まない、複数のデータブロックによってキーが生成された場合に、そのキーのメモリ位置の内容は、悪意のある内容を含む1つ又は複数のデータブロックのうちの1つすなわち1つ又は複数のシグネチャ又はシグネチャセグメントのうちの1つと、シグネチャ/シグネチャセグメントIDとを含む。後者の2つの状況から、悪意のある内容を含む複数のデータブロックが同一のキーを生成するときに、データブロックすなわちシグネチャ/シグネチャセグメントのうちの1つだけが、RAMデバイスのメモリ位置への入力のために選択されることに留意されたい。悪意のある内容を含む残りのデータブロックは、下で説明するように、CAMモジュール14を構成するのに使用される。
【0031】
RAMデバイス26は、別個のキー値ごとに1つのメモリ位置を有し、したがって、可能性のあるキーの個数と等しい個数のメモリ位置を含む。各キーは、12ビットを含む。したがって、212個の可能性のあるキー値がある。したがって、RAMデバイス26は、212個のメモリ位置を含む。各キーは、それがそこから生成されたデータブロックに対して圧縮される、すなわち、各キーは、データブロックの32ビットではなく12ビットだけを含む。これは、RAMデバイス26が、各キーが32ビットを含む場合に必要になるはずの232個のメモリ位置ではなく、212個のメモリ位置だけを必要とすることをもたらす。したがって、シグネチャ検出回路1へのデータ入力を圧縮するのにハッシュデバイスを使用することによって、RAMデバイス26のメモリ必要量を大幅に減らすことが可能になる。
【0032】
動作中に、ハッシュデバイスのそれぞれは、データブロックを受け取り、キーを生成する。各ハッシュデバイスは、生成されたキーをレジスタ22のうちの1つに出力する。次に、各レジスタは、そのキーをマルチプレクサ24に出力する。マルチプレクサ24は、その4つの入力のそれぞれでキーを順番に受け取らせるアドレス入力(図示せず)を受け取り、そのキーを順番にRAMデバイス26に出力する。
【0033】
RAMデバイス26は、キーを順番に受け取る。各キーは、メモリ位置アドレスとして使用される、すなわち、キーの値は、そのアドレス値がキーの値と一致するメモリ位置が見つかるまで、RAMデバイス26のメモリ位置のアドレスと比較される。RAMデバイス26の一致するメモリ位置が見つかる時に、一致するメモリ位置の内容が読み取られる。メモリ位置の内容は、0を含むか、悪意のある内容を含むデータブロックすなわちシグネチャ又はシグネチャセグメントとシグネチャ/シグネチャセグメントIDとを含むかのいずれかになる。この実施形態では、データブロックが32ビット長なので、シグネチャ又はシグネチャセグメントは、32ビット長であり、シグネチャ/シグネチャセグメントIDは、12ビットの長さを有するように選択される。
【0034】
RAMデバイス26は、アドレッシングされたメモリ位置の内容を順番に、レジスタ28の第1、次に第2、次に第3、次に第4のレジスタに出力する。レジスタ28のそれぞれは、下で説明するように、CAMモジュール14の出力との比較のために、シグネチャ検出回路1のマルチプレクサ16(図1を参照されたい)に、0又はそれが受け取ったメモリ位置内容の12ビットのシグネチャ/シグネチャセグメントID部分を出力する。
【0035】
レジスタ28のそれぞれは、図示のように、それが受け取ったメモリ位置内容の32ビットのシグネチャ/シグネチャセグメント部分をもコンパレータ30のうちの1つに出力する。各コンパレータは、2つの入力すなわち、オリジナルデータブロック(図示のように遅延を介して供給される)と、同一のデータブロックを使用して生成されたキーから生じるメモリ位置の内容の32ビットシグネチャ/シグネチャセグメント部分とを受け取る。各コンパレータは、オリジナルデータブロックの値と、メモリ位置内容の32ビットシグネチャ/シグネチャセグメント部分の値とを比較し、一致フラグを出力し、この一致フラグは、これらが同一であるとわかった場合に悪意のある内容が見つかったことを示す。
【0036】
上で説明したシグネチャ検出回路の動作によれば、データブロックが、悪意のある内容を含まないすなわち、シグネチャを含まず、シグネチャセグメントを含まない場合に、そのデータブロックは、0のメモリ位置内容をもたらす(キーが悪意のある内容を含まない1つ又は複数のデータブロックによって生成されるとき)か、32ビットシグネチャ/シグネチャセグメントを含むメモリ位置内容をもたらす(キーが、悪意のある内容を含まない1つ又は複数のデータブロック及び悪意のある内容を含む1つ又は複数のデータブロックによって生成されるとき)かのいずれかであるキーを生成する。どちらの場合でも、オリジナルデータブロックとのメモリ位置内容の32ビットシグネチャ/シグネチャセグメントの比較は、これらが同一でないことがわかることをもたらし、一致フラグは生成されない、すなわち、この回路は、悪意のある内容がそのデータブロック内で見つからなかったことを示す。データブロックが、悪意のある内容を含む、すなわち、シグネチャを含むかシグネチャセグメントを含む場合に、そのデータブロックは、データブロックのシグネチャ/シグネチャセグメントと等しい32ビットシグネチャ/シグネチャセグメントを含むメモリ位置内容(キーが、悪意のある内容を含む1つ又は複数のデータブロックによって生成され、このデータブロックが、RAMデバイスへの入力のために選択されたとき)又はデータブロックのシグネチャ/シグネチャセグメントと等しくない32ビットシグネチャ/シグネチャセグメントを含むメモリ位置内容(キーが、悪意のある内容を含む1つ又は複数のデータブロックによって生成され、このデータブロックが、RAMデバイスへの入力のために選択されなかったとき)のいずれかをもたらすキーを生成する。第1のケースでは、オリジナルデータブロックとのメモリ位置内容の32ビットシグネチャ/シグネチャセグメントの比較は、これらが同一であることがわかることをもたらし、一致フラグが生成され、すなわち、このシステムは、悪意のある内容がそのデータブロック内で見つかったことを示す。第2のケースでは、オリジナルデータブロックとのメモリ位置内容の32ビットシグネチャ/シグネチャセグメントの比較は、これらが同一でないことがわかることをもたらし、一致フラグは生成されず、すなわち、このシステムは、悪意のある内容がそのデータブロック内で見つからなかったことを示す。これは、正しい表示ではないが、このシナリオは、下で説明するように、CAMモジュール14を使用することによって考慮される。
【0037】
図2に示されたハッシュデバイスなどは、シグネチャ検出回路1の実際のハッシュモジュール12の第1部分だけを含む。ハッシュモジュール12のこの第1部分は、4バイトの長さのシグネチャ又はシグネチャセグメントを検出することができる。ハッシュモジュール12は、さらに、第2部分を含み、この第2部分は、4バイトデータブロック内で3つの上位バイトの可能性のあるシグネチャデータ及び残りのバイトの「ワイルドカード」データを有するシグネチャ/シグネチャセグメントを探すことによって、長さ3バイトのシグネチャ又はシグネチャセグメントを検出することができる。ハッシュモジュール12は、さらに、第3部分を含み、この第3部分は、4バイトデータブロック内で2つの上位バイトの可能性のあるシグネチャデータ及び残りのバイトの「ワイルドカード」データを有するシグネチャ/シグネチャセグメントを探すことによって、長さ2バイトのシグネチャ又はシグネチャセグメントを検出することができる。ハッシュモジュール12は、さらに、第4部分を含み、この第4部分は、長さ1バイトのシグネチャ又はシグネチャセグメントを検出することができる。ハッシュモジュールの第2部分及び第3部分は、第1部分と同一のコンポーネントを含み、同一の形で機能する。ハッシュモジュールの第4部分は、単純にRAMデバイスを含み、このRAMデバイスは、不相応なハードウェア要件なしで、1バイトの長さのシグネチャ又はシグネチャセグメントを検出するのに十分なメモリを提供することができる。上で説明したように、ハッシュモジュールの第1部分に入力されるデータブロックは、ハッシュモジュールの第2部分、第3部分、及び第4部分にも入力される。ハッシュモジュール12のそのような配置は、これを使用して、可変長のシグネチャ又はシグネチャセグメントを検出することを可能にする。たとえば、検出すべきシグネチャが、4バイトの長さを有する場合に、このシグネチャは、ハッシュモジュールのすべての部分に供給され、完全なシグネチャを、ハッシュモジュール12の第1部分によって検出でき、他の部分によって検出はされない。検出すべきシグネチャが、2バイトの長さを有する場合に、このシグネチャは、ハッシュモジュールのすべての部分に供給され、完全なシグネチャを、ハッシュモジュール12の第3部分によって検出でき、他の部分によって検出はされない。検出すべきシグネチャが、6バイトの長さを有する場合には、ハッシュモジュールの諸部分に供給されるデータブロックが、4バイトの長さを有するので、シグネチャの最初の上位4バイトを含むシグネチャセグメントが、ハッシュモジュールのすべての部分に供給され、このシグネチャセグメントを、ハッシュモジュール12の第1部分によって検出することができ、他の部分によって検出はされず、シグネチャの残りの2バイト及び入力データの次の2バイトを含むシグネチャセグメントが、ハッシュモジュールのすべての部分に供給され、このシグネチャセグメントを、ハッシュモジュール12の第3部分によって検出することができ、他の部分によって検出はされない。したがって、シグネチャの両方のセグメントを、ハッシュモジュール12によって検出し、そこから出力することができる。その後、セグメントを照合して、悪意のある内容が検出されたことを示すフラグを立てることを可能にしてもよい。
【0038】
上で説明したように、ハッシュ関数が悪意のある内容の検出で使用されているので、衝突が発生するすなわち、複数の異なるデータブロックが同一のキーを生成する可能性が高い。ハッシュデバイス内で使用されるハッシュ関数について発生する衝突が、判定され、RAMデバイス26が、それに従って構成される。悪意のある内容を含まないデータブロックと、悪意のある内容を含むデータブロックとが、それぞれ、同一のキーを生じる場合に、これは、シグネチャ検出回路1による悪意のある内容の検出に重要ではない。この場合には、RAMデバイス26は、そのアドレスがキーと等しいメモリ位置が、悪意のある内容を含むデータブロックの詳細を含む内容を有するように構成され、一致フラグは、悪意のある内容を含むデータブロックについて生成される。しかし、それぞれが悪意のある内容を含む複数のデータブロックが、それぞれ同一のキーを生じる場合に、これは、シグネチャ検出回路1による悪意のある内容の検出に影響する可能性がある。この場合には、RAMデバイス26は、そのアドレスがキーと等しいメモリ位置が、悪意のある内容を含むデータブロックのうちの1つだけを含む内容を有するようになるように構成される。上で詳細に示したように、これは、実際に悪意のある内容を含むデータブロックについて一致フラグが生成されないことをもたらし得る。そのような状況は、CAMモジュール14によって考慮される。
【0039】
CAMモジュール14の一部を、図3に示す。これは、複数のCAMセル40、複数のデコーダ42、複数のレジスタ44、マルチプレクサ46、RAMデバイス48、及び複数のレジスタ50を含む。各CAMセルは、内容レジスタ及び複数のコンパレータを含む。
【0040】
CAMセルは、悪意のある内容を含む複数のデータブロックの衝突を扱うようにカスタマイズされる。上で述べたように、そのような衝突を生じるデータブロックは、ソフトウェアモジュールによって判定される。データブロックのうちの1つが、ハッシュモジュール12のRAMデバイス26のメモリ位置への入力のために選択される(したがって、この選択されたデータブロックと等しいデータブロックが、シグネチャ検出回路に入力される場合に、その悪意のある内容が検出される)。残りの1つ又は複数のデータブロックは、CAMセルのうちの1つ又は複数を使用することによって考慮される。CAMセルは、1つのそのようなデータブロックを、そのデータブロックをセルの内容レジスタに格納することによって考慮するようにカスタマイズされる。したがって、CAMモジュール14は、k個のCAMセルを含み、ここで、kは、ハッシュモジュール12のRAMデバイス26への格納のために選択されない、悪意のある内容を含むデータブロックの個数と等しい。
【0041】
各CAMセルは、4つのコンパレータを含む。CAMセルごとに、コンパレータのそれぞれは、前に詳細に述べたように第1データブロックに関してシフトされた、ネットワークデータの入力データブロックを受け取る。CAMセルごとに、各コンパレータは、CAMセルの内容レジスタに格納されたデータブロックをも受け取る。各コンパレータは、入力データブロックを内容レジスタデータブロックと比較し、これらが同一ではない場合には0と等しい一致を出力し、これらが同一である場合には1と等しい一致を出力する。後者の場合に、これは、入力データブロックが悪意のある内容(すなわち、シグネチャ又はシグネチャセグメント)を含むことを意味し、この入力データブロックは、衝突を生じる悪意のある内容を含むデータブロックのうちの1つと同一である。図示のように、CAMセルのそれぞれの第1コンパレータの出力は、第1デコーダに入力され、CAMセルのそれぞれの第2コンパレータの出力は、第2デコーダに入力され、以下同様である。デコーダによって受け取られる1と等しい一致ごとに、デコーダは、CAMセルのアイデンティティ及び一致を出力したCAMセルのコンパレータのアイデンティティを判定し、一致の起点の位置を示す2進値を出力する。デコーダによって受け取られる0と等しい一致ごとに、デコーダは、0の2進値を出力する。
【0042】
各デコーダは、図示のように、レジスタ42のうちの1つに、1つ又は複数の2進位置値及び1つ又は複数の0値を出力する。次に、各レジスタは、その1つ又は複数の2進位置値及び1つ又は複数の0値をマルチプレクサ44に出力する。マルチプレクサ44は、その4つの入力のそれぞれで2進位置値又は0値を順番に受け取らせるアドレス入力(図示せず)を受け取り、2進位置値及び0値を順番にRAMデバイス48に出力する。
【0043】
RAMデバイス48は、2進位置値及び0値を順番に受け取る。各2進位置値及び0値は、メモリ位置アドレスとして使用される。0値が受け取られる時に、これは、そのアドレスが0と等しいRAMデバイス48のメモリ位置にマッピングされ、このメモリ位置の内容(0と等しい)が、レジスタ50のうちの1つに出力される。2進位置値が受け取られる時に、この値は、そのアドレスがこの2進位置値と一致するメモリ位置が見つかるまで、RAMデバイス48のメモリ位置のアドレスと比較される。RAMデバイス48の一致するメモリ位置が見つかった時に、その一致するメモリ位置の内容が、レジスタ50のうちの1つに出力される。メモリ位置の内容は、2進位置値を生成した一致を生成したデータブロックの12ビットシグネチャ/シグネチャセグメントIDを含む。
【0044】
RAMデバイス48は、0値及び12ビットシグネチャ/シグネチャセグメントIDを順番に、レジスタ50のうちの第1レジスタ、次に第2レジスタ、次に第3レジスタ、及び次に第4レジスタに出力する。レジスタ50のそれぞれは、下で説明する、ハッシュモジュール12の出力との比較のために、0値及び12ビットシグネチャ/シグネチャセグメントIDをマルチプレクサ16(図1を参照されたい)に出力する。
【0045】
ハッシュモジュール12と同様に、図3に示されたCAMデバイスなどは、シグネチャ検出回路1の実際のCAMモジュール14の第1部分だけを含む。CAMモジュール14の第1部分は、長さ4バイトのシグネチャ又はシグネチャセグメントを検出することができる。CAMモジュール14は、さらに、第2部分を含み、この第2部分は、4バイトデータブロック内で3つの上位バイトの可能性のあるシグネチャデータ及び残りのバイトの「ワイルドカード」データを有するシグネチャ/シグネチャセグメントを探すことによって、長さ3バイトであるシグネチャ又はシグネチャセグメントを検出することができる。CAMモジュール14は、さらに、第3部分を含み、この第3部分は、4バイトデータブロック内で2つの上位バイトの可能性のあるシグネチャデータ及び残りのバイトの「ワイルドカード」データを有するシグネチャ/シグネチャセグメントを探すことによって、長さ2バイトであるシグネチャ又はシグネチャセグメントを検出することができる。CAMモジュール14は、さらに、長さ1バイトであるシグネチャ又はシグネチャセグメントを検出することができる第4部分を含む。CAMモジュールの第2部分及び第3部分は、第1部分と同一のコンポーネントを含み、同一の形で機能する。CAMモジュールの第4部分は、単純にRAMデバイスを含み、このRAMデバイスは、不相応なハードウェア要件なしで、1バイトの長さのシグネチャ又はシグネチャセグメントを検出するのに十分なメモリを提供することができる。上で説明したように、CAMモジュールの第1部分に入力されるデータブロックは、CAMモジュールの第2部分、第3部分、及び第4部分にも入力される。CAMモジュール14のそのような配置は、これを使用して、可変長のシグネチャ又はシグネチャセグメントを検出することを可能にする。たとえば、検出すべきシグネチャが、3バイトの長さを有する場合に、このシグネチャは、CAMモジュールのすべての部分に供給され、完全なシグネチャを、CAMモジュール14の第2部分によって検出でき、他の部分によって検出はされない。検出すべきシグネチャが、1バイトの長さを有する場合に、このシグネチャは、CAMモジュールのすべての部分に供給され、完全なシグネチャを、CAMモジュール14の第4部分によって検出でき、他の部分によって検出はされない。検出すべきシグネチャが、7バイトの長さを有する場合には、CAMモジュールの諸部分に供給されるデータブロックが、4バイトの長さを有するので、シグネチャの最初の上位4バイトを含むシグネチャセグメントが、CAMモジュールのすべての部分に供給され、このシグネチャセグメントを、CAMモジュール14の第1部分によって検出することができ、他の部分によって検出はされず、シグネチャの残りの3バイト及び入力データの次の1バイトを含むシグネチャセグメントが、CAMモジュールのすべての部分に供給され、このシグネチャセグメントを、CAMモジュール14の第2部分によって検出することができ、他の部分によって検出はされない。したがって、シグネチャの両方のセグメントを、CAMモジュール14によって検出し、そこから出力することができる。その後、セグメントを照合して、悪意のある内容が検出されたことを示すフラグを立てることを可能にしてもよい。
【0046】
シグネチャ検出回路1に入力されるデータブロックのそれぞれについて、この回路のマルチプレクサ16はそれぞれ、図示のように、ハッシュモジュール12からの0値又は12ビットシグネチャ/シグネチャセグメントID、CAMモジュール14からの0値又は12ビットシグネチャ/シグネチャセグメントID、及びアイドル信号を受け取る。各マルチプレクサ16は、受け取られた場合にはハッシュ12ビットシグネチャ/シグネチャセグメントIDを出力し、或いは、受け取られた場合にはCAM12ビットシグネチャ/シグネチャセグメントIDを出力し、或いは、ハッシュモジュール12とCAMモジュール14との両方から0値が受け取られた場合にはアイドル信号を出力する。マルチプレクサ16の出力は、レジスタ18によって受け取られる。レジスタのそれぞれは、悪意のある内容がネットワークデータのデータブロック内で見つかったことを示すフラグと一緒のハッシュ12ビットシグネチャ/シグネチャセグメントID又はCAM12ビットシグネチャ/シグネチャセグメントID、又はアイドル値のいずれかを出力する。これらは、シグネチャ検出回路1からDPIシステムへ、そのDPIシステムでの使用のために出力される。シグネチャ/シグネチャセグメントIDが、32ビットのシグネチャ/シグネチャセグメントではなく12ビットだけを有するので、IDは、たとえばそれらを格納するのに必要なメモリに関して、シグネチャ/シグネチャセグメントより簡単に使用可能である。
【0047】
この実施形態では、シグネチャ検出回路1は、図4に示されているようにDPIシステムの一部を構成する。DPIシステムは、この図の下側部分に示されているように、IPパケットを受け取る。DPIシステムは、この図の中央部分に示されているように、IPパケットを処理して、それからペイロードを抽出する。シグネチャ検出回路は、この図の上側部分に示されているように、ペイロード内のシグネチャを検出するのに使用される。これは、シグネチャセグメントが検出される時に、それらが、ペイロード内の悪意のある内容の存在を判定するために、完全なシグネチャを形成するために照合されることを示す。

【特許請求の範囲】
【請求項1】
複数のデータブロック内のパターンを検出する方法であって、
一組の選択されたパターンのうちの複数のパターンからなる第1部分集合を含む第1データベースを生成するステップと、
前記一組の選択されたパターンのうちの残りのパターンからなる第2部分集合を含む第2データベースを生成するステップと、
前記複数のデータブロックを受け取り、前記データブロックごとに、
前記データブロック及びハッシュ関数を使用してキーを生成し、
前記キーを使用して前記第1データベースを検索し、
前記キーに対応する前記第1データベースのエントリを特定し、
前記キーを生成する選択されたパターン若しくは0を含む前記エントリの内容を読み取り、
前記エントリの内容が0を含む場合に、前記データブロックが選択されたパターンを含まないと判定し、前記データブロックが選択されたパターンを含まないことを示す第1出力を出力し、又は、
前記エントリの内容が選択されたパターンを含む場合に、前記データブロックが前記選択されたパターンを含むと判定し、前記データブロックが前記選択されたパターンを含むことを示す第1出力を出力し、又は、
前記データブロックが前記選択されたパターンを含まないと判定し、前記データブロックが前記選択されたパターンを含まないことを示す第1出力を出力する、
ステップと、
連想メモリ(CAM)を使用して前記データブロックを前記第2データベースと比較して、
前記データブロックが前記第2データベース内の選択されたパターンと一致すると判定し、前記データブロックが前記選択されたパターンを含むことを示す第2出力を出力し、又は、
前記データブロックが前記第2データベース内の選択されたパターンと一致しないと判定し、前記データブロックが選択されたパターンを含まないことを示す第2出力を出力する、
ステップと
前記第1出力及び第2出力を合成し、いずれかの出力が、前記データブロックが選択されたパターンを含むことを示す場合に、前記データブロックが前記選択されたパターンを含むことを示すフラグを出力するステップと
を含む方法。
【請求項2】
一組の選択されたパターンのうちの複数のパターンからなる第1部分集合のパターンを含む前記第1データベースを生成する前記ステップが、
可能性のある各データブロックを判定する工程と、
可能性のある各データブロック及び前記ハッシュ関数を使用して、複数のキーを生成する工程と、
キーを生成する前記データブロックを、前記一組の選択されたパターンと比較する工程と、
前記データブロックが選択されたパターンを含まない場合に、前記キー及び0を含む前記第1データベースのエントリを生成する工程、又は、前記データブロック又はそのいずれかが選択されたパターンを含む場合に、前記キーと、選択されたパターンを含む前記データブロック又はそのうちの1つと、前記データブロックの識別子(ID)とを含む前記第1データベースのエントリを生成する工程と
を含む、請求項1に記載の方法。
【請求項3】
一組の選択されたパターンのうちの残りのパターンからなる第2部分集合を含む前記第2データベースを生成する前記ステップが、前記第2データベースのエントリを生成する工程を含み、
前記第2データベースのエントリが、前記第1データベースのエントリに格納されない選択されたパターンを含む前記データブロックのそれぞれを備える、請求項1又は2に記載の方法。
【請求項4】
キーを生成する前記ステップが、前記データブロックに関して圧縮されたキーを生成する工程を含む、請求項1〜3のいずれか一項に記載の方法。
【請求項5】
前記データブロックが選択されたパターンを含むか否かを判定するステップが、前記データブロックを前記選択されたパターンと比較して、前記データブロックと前記選択されたパターンとが一致するか否か判定する工程を含む、請求項1〜4のいずれか一項に記載の方法。
【請求項6】
データブロックの任意の位置から始まるパターンを検出するために使用される、請求項1〜5のいずれか一項に記載の方法。
【請求項7】
様々な長さを有する選択されたパターンを検出するために使用される、請求項1〜6のいずれか一項に記載の方法。
【請求項8】
前記選択されたパターンが、単語全体若しくは部分的な単語、ストリング全体若しくは部分的ストリング、DNA配列全体若しくは部分的DNA配列、又は悪意のある内容のシグネチャ若しくはシグネチャセグメントのうちのいずれかを含む、請求項1〜7のいずれか一項に記載の方法。
【請求項9】
複数のデータブロック内のパターンを検出するパターン検出回路であって、
複数のハッシュモジュールと、複数のCAMモジュールと、コンバイナモジュールとを備え、
前記ハッシュモジュールの各々が、一組の選択されたパターンのうちの複数のパターンからなる第1部分集合を含む第1データベースを有するものであり、
前記ハッシュモジュールが、前記複数のデータブロックを受け取るものであり、前記データブロックごとに、
前記データブロック及びハッシュ関数を使用してキーを生成し、
前記キーを使用して前記第1データベースを検索し、
前記キーに対応する前記第1データベースのエントリを特定し、
前記キーを生成する選択されたパターン若しくは0を含む前記エントリの内容を読み取り、
前記エントリの内容が0を含む場合に、前記データブロックが選択されたパターンを含まないと判定し、前記データブロックが選択されたパターンを含まないことを示す第1出力を出力し、又は、
前記エントリの内容が選択されたパターンを含む場合に、前記データブロックが前記選択されたパターンを含むと判定し、前記データブロックが前記選択されたパターンを含むことを示す第1出力を出力し、又は、
前記データブロックが前記選択されたパターンを含まないと判定し、前記データブロックが前記選択されたパターンを含まないことを示す第1出力を出力する、
ものであり、
前記CAMモジュールの各々が、前記一組の選択されたパターンのうちの残りのパターンからなる第2部分集合を含む第2データベースを備え、
前記CAMモジュールの各々が、前記複数のデータブロックを受け取り、前記データブロックごとに、
前記データブロックを前記第2データベースと比較し、
前記データブロックが前記第2データベース内の選択されたパターンと一致すると判定し、前記データブロックが前記選択されたパターンを含むことを示す第2出力を出力し、又は、
前記データブロックが前記第2データベース内の選択されたパターンと一致しないと判定し、前記データブロックが選択されたパターンを含まないことを示す第2出力を出力する、
ものであり、
前記コンバイナモジュールが、前記第1出力及び前記第2出力を合成し、いずれかの出力が、前記データブロックが選択されたパターンを含むことを示す場合に、前記データブロックが前記選択されたパターンを含むことを示すフラグを出力するものである、回路。
【請求項10】
前記ハッシュモジュールの各々が、RAMデバイスを備える、請求項9に記載の回路。
【請求項11】
前記RAMデバイスの各々が、前記第1データベースを格納する、請求項10に記載の回路。
【請求項12】
前記キーが、前記RAMデバイスの複数のメモリ位置に割り当てられたアドレスを検索するためのアドレスとして前記キーを使用することによって、前記RAMデバイスの前記第1データベースを検索するために使用される、請求項11に記載の回路。
【請求項13】
前記ハッシュモジュールの各々は、それぞれがキーを生成するためにデータブロック及び前記ハッシュ関数を使用する複数のハッシュデバイスを備える、請求項9〜12のいずれか一項に記載の回路。
【請求項14】
前記CAMモジュールの各々が、複数のCAMセルを備える、請求項9〜13のいずれか一項に記載の回路。
【請求項15】
前記CAMセルの各々が、前記第2データベースのパターンを含むデータブロックを格納する、請求項14に記載の回路。
【請求項16】
前記CAMセルの各々は、それぞれが受け取られたデータブロックを前記CAMセルに格納された前記データブロックと比較する複数のコンパレータを備える、請求項15に記載の回路。
【請求項17】
データブロックの任意の位置から始まるパターンを検出する、請求項9〜16のいずれか一項に記載の回路。
【請求項18】
前記パターン検出回路が、複数のハッシュデバイス及び複数のCAMコンパレータを備え、
第1のデータブロックが、第1ハッシュデバイス及び第1CAMコンパレータに入力され、前記第1のデータブロックに関してシフトされた第2のデータブロックが、第2ハッシュデバイス及び第2CAMコンパレータに入力され、以下同様である、請求項17に記載の回路。
【請求項19】
前記第2のデータブロックが、前記第1のデータブロックに関して前記データブロックの1つ又は複数の位置だけシフトされる、請求項18に記載の回路。
【請求項20】
前記第1のデータブロック及び前記第2のデータブロックが、ビット又はバイトを備え、前記第2のデータブロックが、前記第1のデータブロックに関して前記データブロックの1つ又は複数のビット又はバイトを含む1つ又は複数の位置だけシフトされる、請求項19に記載の回路。
【請求項21】
長さnのパターンを検出する第1部分、長さn−1のパターンを検出する第2部分、長さn−2のパターンを検出する第3部分など、複数の部分を備える、請求項9〜20のいずれか一項に記載の回路。
【請求項22】
前記選択されたパターンが、単語全体若しくは部分的単語、ストリング全体若しくは部分的ストリング、DNA配列全体若しくは部分的DNA配列、又は悪意のある内容のシグネチャ若しくはシグネチャセグメントのうちのいずれかを含む、請求項9〜21のいずれか一項に記載の回路。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公表番号】特表2010−506322(P2010−506322A)
【公表日】平成22年2月25日(2010.2.25)
【国際特許分類】
【出願番号】特願2009−531906(P2009−531906)
【出願日】平成19年10月10日(2007.10.10)
【国際出願番号】PCT/GB2007/003833
【国際公開番号】WO2008/044004
【国際公開日】平成20年4月17日(2008.4.17)
【出願人】(504389636)ザ クイーンズ ユニヴァーシティ オブ ベルファスト (14)
【Fターム(参考)】