(57)【要約】  【課題】  通常のコンピュータ・トラフィックのストリーム内で、１つのＩＰソース・アドレス（ＳＡ）値、１つのまたはいくつかの宛先アドレス（ＤＡ）値、および個々の宛先ポート（ＤＰ）値のしきい値を超える数を有するＴＣＰまたはＵＤＰパケットのサブセットを検出するための一組のアルゴリズムを含む検出および応答システムを提供する。  【解決手段】  直接テーブルおよびパトリシア・サーチ・ツリーのようなルックアップ機構は、１つのＳＡおよび１つのＤＡを含む数組のパケットならびに所与のＳＡ、ＤＡの組合せについて観察した一組のＤＰ値を記録し、追跡する。検出および応答システムは、このようなサブセットの存在、およびサブセットのＳＡ、ＤＡおよび複数のＤＰを含むヘッダ値を報告する。この検出および応答システムは、また、報告に対する種々の管理応答も含む。【選択図】      図３
2008507222.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上の不正なスキャンニングを検出するための方法であって、
（ａ）ネットワーク・デバイス内で受信したトラフィックを監視するステップと、
（ｂ）前記トラフィック内のパケットの予め定めたサブセットを検出するステップと、
（ｃ）予め定めた統計的特徴を有する疑いのあるパケットを検出するために、パケットの前記予め定めたサブセットを分析するステップとを含む方法。
【請求項２】
前記予め定めた統計的特徴を有するパケットの検出を示すアラームを鳴動するステップをさらに含む、請求項１に記載の方法。
【請求項３】
パケットの前記サブセットが、ＴＣＰ／ＩＰセットからのＴＣＰパケット内にセット（ＳＹＮ，ＲＳＴ，ＦＩＮ）されているＴＣＰヘッダの３つのビットのうちの少なくとも２つを含む、請求項１または２に記載の方法。
【請求項４】
前記ネットワークと結合しているデバイス内にルックアップ構造を提供するステップであって、前記ルックアップ構造が、ツリー構造と動作可能に結合している少なくとも１つのスロットを含む複数のスロットに分割されている第１の部分を有するサーチ・ツリーと論理的に等価であるステップと、
前記デバイス内でネットワーク・トラフィックを受信するステップと、
予め定めた統計的特徴を有するＴＣＰ／ＩＰパケットを検出するために、プログラムされたＣＰＵにより前記ネットワーク・トラフィックを分析するステップと、
このように検出した各ＴＣＰ／ＩＰパケットに対して、ソース・アドレス（ＳＡ）および宛先アドレス（ＤＡ）からハッシュした値を生成するために、前記プログラムされたＣＰＵを使用するステップと、
スロット内に索引するために前記ハッシュした値を使用するステップと、
ポインタを探して前記スロットをチェックするステップと、
ポインタを発見できなかった場合に、新しいリーフの識別子であるＳＡおよびＤＡを有する前記リーフを挿入するステップと、
前記リーフ内に、前記各ＴＣＰ／ＩＰパケット内に含まれている宛先ポート（ＤＰ）に対するアドレスを格納するステップと、
前記スロット内に、前記リーフをポイントしているポインタを生成するステップとをさらに含む、前記請求項の何れか１項に記載の方法。
【請求項５】
ポインタが前記スロット内に位置している場合に、リーフにアクセスするために前記ポインタを使用するステップと、
その中に記録している宛先ポート（ＤＰ）のアドレスを検出するために、前記リーフの内容をチェックするステップと、
このように検出したアドレスの数をしきい値と比較するステップと、
アドレスの数が前記しきい値以上である場合に、第２の階層ルックアップを行うステップとをさらに含む、請求項４に記載の方法。
【請求項６】
前記リーフ内のアドレスの数が前記しきい値より小さい場合に、前記リーフにＤＡを追加するステップをさらに含む、請求項５に記載の方法。
【請求項７】
ネットワーク上のスキャンニングを検出するためのシステムであって、
メモリと、
前記メモリ内で動作可能に構成されているルックアップ・データ構造と、
予め定めた統計的特徴を有する予め定めたパケットを検出し、疑いのあるパケットを検出する目的でパケットの前記予め定めたサブセットを分析するために、予め定めたパケットを前記ルックアップ・データ構造と関連付ける一組のアルゴリズムを実行するプロセッサとを含むシステム。
【請求項８】
前記予め定めた統計的特徴を有するパケットの検出を知らせるアラームを鳴動するための手段をさらに備える、請求項７に記載のシステム。
【請求項９】
パケットの前記サブセットが、ＴＣＰ／ＩＰセットからのＴＣＰパケット内にセット（ＳＹＮ，ＲＳＴ，ＦＩＮ）されているＴＣＰヘッダの３つのビットのうちの少なくとも２つを含む、請求項７または８に記載のシステム。
【請求項１０】
前記ネットワークと結合しているデバイス内のルックアップ構造であって、ツリー構造と動作可能に結合している少なくとも１つのスロットを含む複数のスロットに分割されている第１の部分を有するサーチ・ツリーと論理的に等価であるルックアップ構造と、
前記デバイス内でネットワーク・トラフィックを受信するための手段と、
予め定めた統計的特徴を有するＴＣＰ／ＩＰパケットを検出するために、プログラムされたＣＰＵで前記ネットワーク・トラフィックを分析するための手段と、
前記プログラムされたＣＰＵを使用して、このように検出した各ＴＣＰ／ＩＰパケットに対して、ソース・アドレス（ＳＡ）および宛先アドレス（ＤＡ）からハッシュした値を生成するための手段と、
前記ハッシュした値を使用してスロット内に索引するための手段と、
ポインタを探して前記スロットをチェックするための手段と、
ポインタを発見できなかった場合に、新しいリーフの識別子であるＳＡおよびＤＡを有する前記リーフを挿入するための手段と、
前記リーフ内に、前記各ＴＣＰ／ＩＰパケット内に含まれている宛先ポート（ＤＰ）に対するアドレスを格納するための手段と、
前記リーフをポイントしている前記各スロット内でポインタを生成するための手段とをさらに備える、請求項７〜８の何れか１項に記載のシステム。
【請求項１１】
ポインタが前記スロット内に位置している場合に、前記ポインタを使用してリーフにアクセスするための手段と、
その中に記録している宛先ポート（ＤＰ）のアドレスを検出するために、前記リーフの内容をチェックするための手段と、
このように検出したアドレスの数をしきい値と比較するための手段と、
アドレスの数が前記しきい値以上である場合に、第２の階層ルックアップを行うための手段とをさらに備える、請求項１０に記載のシステム。
【請求項１２】
前記リーフ内のアドレスの数が前記しきい値より小さい場合に、前記リーフにＤＡを追加するための手段をさらに備える、請求項１１に記載のシステム。
【請求項１３】
コンピュータ・プログラムであって、
前記プログラムをコンピュータ上で実行した場合に、請求項１〜６の何れか１項に記載の前記すべてのステップを実行することができるプログラム・コード手段を備えるコンピュータ・プログラム。
【請求項１４】
コンピュータ・ネットワーク上で有害なパケットを検出するための方法であって、
ａ）受信したパケットをスキャンニングする少なくとも１つのアルゴリズムを提供するステップと、
ｂ）１つのソース・アドレス（ＳＡ）と、Ｎ個の宛先アドレス（ＤＡ）と、Ｍ個の宛先ポート（ＤＰ）とを含む予め定めたフォーマットを有するパケットを識別するステップとを含む方法。
【請求項１５】
許容ＤＰのリストを提供するステップと、
識別したパケット内のＤＰを許容ＤＰの前記リストと比較するステップと、
一致するＤＰを有する前記識別したパケットを廃棄するステップとをさらに含む、請求項１４に記載の方法。
【請求項１６】
コンピュータ・ネットワーク内で有害なコードを含むパケットを検出するためのシステムであって、
メモリおよび少なくとも１つの処理素子とを含むネットワーク・プロセッサと、
前記メモリ内に位置する有害なコードを含むパケットのビット・パターン類似のビット・パターンを含む少なくとも１つの規則を格納している少なくとも１つのパトリシア・ツリー配置を含むデータ構造と、
前記少なくとも１つの処理素子上に展開していて、実行した場合に、前記処理素子に、予め定めたパケット内の予め定めたフィールドからキーを生成させ、１つのＳＡ（ソース・アドレス）、１つのＤＰ（宛先ポート）および多くのＤＡ（宛先アドレス）を有するパケットを識別するために、前記キーを前記規則と関連付けるコンピュータ・プログラムとを含むシステム。
【請求項１７】
前記処理素子が、前記直接テーブルのスロット内に索引するために、予め定めたパケットのハッシュしたＳＡおよびＤＰを使用する、請求項１６に記載のシステム。
【請求項１８】
前記スロットがエントリを有さない場合に、前記プロセッサが前記スロット内にポインタを挿入するために第２のプログラムを実行する、請求項１７に記載のシステム。
【請求項１９】
前記スロットが、リーフＳＡ、ＤＰを、予め定めたパケット内のＳＡ、ＤＰと比較する１つのリーフをポイントしている情報を含み、ＳＡ、ＤＰ上で一致が起こった場合に、前記リーフ内のＤＡが前記パケット内のＤＡと比較され、一致しない場合には、前記パケットＤＡが前記リーフ内のＤＡの前記リストに追加される、請求項１７に記載のシステム。
【請求項２０】
コンピュータ・プログラムであって、
前記プログラムをコンピュータ上で実行した場合に、請求項１４〜１５の何れか１項に記載の前記すべてのステップを実行することができるプログラム・コード手段を備えるコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、コンピュータ・ネットワークに関し、特に、上記コンピュータ・ネットワーク内の悪意のあるトラフィックの検出および管理、および悪意のあるトラフィックからの上記ネットワークの保護に関する。
【背景技術】
【０００２】
インターネットの方が通りがいいワールド・ワイド・ウェブ（ＷＷＷ）が、個人情報および公開情報両方を通信するための首位のコンピュータ・ネットワークに急速になりつつある。インターネットは、主としてＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）と呼ばれるプロトコル、または他のプロトコルにより、誰でもがアクセスすることができる開かれたネットワークである。開かれたネットワークであるために、私設ネットワーク（イントラネット）上のコンピュータは、ハッカーによる悪意のある攻撃を受けやすい。コンピュータは、ビジネスおよび政府機関にとって通信の主要な道具になっている。例えば、多くのビジネスおよび政府機関は、遠隔地のオフィスにリンクするために、またオフィスまたはキャンパス内の従業員間でデータおよび他のリソースを共有するために、電子メールにより顧客と通信するために、電子メールにより新しい顧客を獲得するために、ウェブサイトにより情報を供給するために、またその他の目的のためにコンピュータおよびコンピュータ・ネットワークを使用する。
【０００３】
インターネットのような公衆ネットワークに誰でもが自由にアクセスすることができるので、ハッカーは、ワーム、ウィルスなどと呼ばれる有害なコードを、今までよりも容易に送り込んだり、散布することができるようになってきている。大部分の私設ネットワークはインターネットに結合しているので、公衆ネットワークから侵入したウィルスが、公衆ネットワークに接続しているデバイスばかりでなく、私設ネットワークに接続しているデバイスにも影響を与える恐れがある。電子ビジネスおよび株式市場活動の時代が到来したため、大量のビジネス取引が、コンピュータ・ネットワークを介して行われていることは周知のことである。そのため、経済的混乱を起こしたいと考えている悪意のある人が、これらの取引を混乱させるために公開サイトからウィルスを侵入させることができる。
【０００４】
ビジネス、政府および個人は、コンピュータおよびインターネットに大きく依存しているので、悪意のある攻撃が壊滅的経済的損失または機能障害をもたらす恐れがある。そのため、コンピュータのセキュリティが、主要な通信媒体としてコンピュータを使用しているビジネス、政府および個人の主要な関心事になってきている。
【０００５】
コンピュータ上で悪意のある攻撃を行うためにハッカーが選択することができる方法がいくつかある。１つの方法は、コンピュータのオペレーティング・システムを不正に制御するプログラムを散布することにより、コンピュータの動作を混乱させる方法である。もう１つの方法は、データを消去したり、データを修正したりまたはデータをコピーしたり、あるいはその両方を行うために、ネットワーク内のコンピュータまたはサブネット内の資産に関する秘密情報を入手する方法である。これらの行為のどれもが、家庭、ビジネスまたは政府機関のネットワークに悪影響を及ぼす恐れがある。
【０００６】
ネットワーク・デバイスに関する情報を収集するためにハッカーまたは攻撃者が使用するいくつかの技術がある。ポートスキャンニング（scanning）は、１つのホストまたはいくつかのホストに関する情報を収集するためにハッカーまたは攻撃者が使用するいくつかの技術のうちの１つである。いくつかのホストが関連している場合には、この技術は分散型ポートスキャンニングと呼ばれる。ポートスキャンニングの場合には、ハッカーは、情報を収集するのに合法的なＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）コマンドを使用する。これに関連して、ハッカーは、ＴＣＰセッションをスタートしたい局として、ＳＹＮ（同期）パケット・マスカレードを発行する。別の方法としては、ハッカーは、ＲＳＴパケットを発行することもできる。いずれの場合も、ハッカーは、ホストについての情報を収集することができるパケットで疑いを持たないホストが応答することを期待する。ポートスキャンニングのために使用することができる多くの他の組合せがある。このような組合せとしては、ＳＹＮ／ＡＣＫ、ＦＩＮ、Ｎｕｌｌクリスマス・ツリー・パケット等がある。実際には、応答を必要とする任意のプロトコルをポートスキャンニングのために使用することができる。
【０００７】
従来技術は、コンピュータ・ネットワークの重要性を認識していて、コンピュータ・ネットワークをハッカーから保護するために侵入検出システムを提供してきた。従来技術の検出システムの例については、米国特許第６，４０５，３１８号；６，３６３，４８９号；６，４７７，６５１号；６，２７９，１１３号；６，２８２，５４６号；５，９９１，８８１号；６，３３８，１４１号；５，４１４，８３３号；および５，９８３，３４８号を参照されたい。上記各米国特許に記載されている侵入検出システム（ＩＤＳ）は、その意図する目的についてはうまく機能するが、スキャンニング活動を検出する際にはうまく機能しない。
【０００８】
従来技術のＩＤＳがネットワークのスキャンニングを検出することができないのは、これらのＩＤＳが、ヘッダ値またはペイロード・バイトの既知のパターンのライブラリを使用しているからであると考えられている。受信したパケット内のパケット・ヘッダまたはペイロードは、一定の表現または固定値であってもよい既知のパターンと比較される。このアプローチの欠点は、このようなライブラリが、前に見たことがない調査またはスキャンニングパターンを完全に含むことができないことである。そのため、いくつかの従来技術のＩＤＳ技術は、新規の調査トラフィックから保護することができない。
【０００９】
スキャンニングを検出することができることが自慢のＩＤＳ技術でさへ、多くのパケット（あるしきい値）が１つの宛先アドレスに送信されたかどうかを発見することができるだけである。これらのＩＤＳは、少ないパケット（しきい値より少ない）を使用してスキャンニングを相互に関連付けることはできないし、また複数の宛先およびフォーマットを使用している場合にはうまく機能しない。
【００１０】
従来技術は、この必要性を認識していて、悪意のあるウィルスを検出するために、上記コンピュータ・ネットワーク上で使用するツールを提供してきた。ほとんどの場合、これらのツールは、その意図する目的のためにうまく作動する。他の言い方をすれば、これらのツールは、それを検出するために生成したウィルスを検出する場合にはうまく機能する。ウィルスの特徴が変化すると、このツールは役に立たなくなる場合があり、新しいウィルスを検出することができない。ハッカーは非常に頭の良い人であり、検出を避けるためにウィルスの特徴を変える可能性が非常に高い。
【特許文献１】米国特許第６，４０５，３１８号
【特許文献２】米国特許第６，３６３，４８９号
【特許文献３】米国特許第６，４７７，６５１号
【特許文献４】米国特許第６，２７９，１１３号
【特許文献５】米国特許第６，２８２，５４６号
【特許文献６】米国特許第５，９９１，８８１号
【特許文献７】米国特許第６，３３８，１４１号
【特許文献８】米国特許第５，４１４，８３３号
【特許文献９】米国特許第５，９８３，３４８号
【特許文献１０】米国特許第６，４０４，７５２号
【発明の開示】
【発明が解決しようとする課題】
【００１１】
上記のことから言って、従来技術の技術および装置は、ネットワーク管理者に、調査またはスキャンニングトラフィックからコンピュータ・ネットワークを防衛する十分な力を提供しない。そのため、本明細書に記載するシステムおよび方法のようなシステムおよび方法に追加の保護を行うことができるものでなければならない。
【００１２】
上記のことから言って、主としてツール内のパターン・ライブラリとパケット内のウィルスとの比較をベースとする従来技術の技術は、悪意のあるウィルスからコンピュータ・ネットワークを保護するための十分な力および制御をネットワーク管理者に提供しない。そのため、ウィルス・パターンをベースとしてコンピュータ・ネットワークを保護するのではなく、悪意により送信されたパケットの他の特徴または統計をベースとするツールが必要になる。そうすることにより、ハッカーは、ウィルスのパターンを自由に変更することができる。それでもなおこのような悪意のあるパケットが依然として検出される。
【課題を解決するための手段】
【００１３】
第１の態様によれば、本発明は、（ａ）ネットワーク・デバイス内で受信したトラフィックを監視するステップと、（ｂ）上記トラフィック内のパケットの予め定めたサブセットを検出するステップと、（ｃ）予め定めた統計的特徴を有する疑いのあるパケットを検出するために、パケットの予め定めたサブセットを分析するステップとを含むネットワーク上の不正なスキャンニングを検出するための方法を提供する。
【００１４】
好ましくは、この方法は、さらに、予め定めた統計的特徴を有するパケットの検出を示すアラームを鳴動するステップを含む。一実施形態の場合には、パケットの予め定めたサブセットは、ＴＣＰ（送信制御プロトコル）／ＩＰ（インターネット・プロトコル）のセットに関連する。他の実施形態の場合には、パケットの予め定めたサブセットは、ＵＤＰ（ユーザ・データグラム・プロトコル）セットに関連する。さらに他の実施形態の場合には、パケットの予め定めたサブセットは、ＴＣＰ／ＩＰセットからのＳＹＮパケットを含む。さらに他の実施形態の場合には、パケットの予め定めたサブセットは、ＴＣＰ／ＩＰ「クリスマス・ツリー」パケットを含む。さらに他の実施形態の場合には、パケットのサブセットは、ＴＣＰ／ＩＰセットからのＲＳＴパケットを含む。さらに他の実施形態の場合には、パケットのサブセットはＴＣＰ／ＩＰセットからのヌルＴＣＰパケットを含む。
【００１５】
好ましくは、パケットのサブセットは、ＴＣＰ／ＩＰセットからのＴＣＰパケット内にセット（ＳＹＮ，ＲＳＴ，ＦＩＮ）されているＴＣＰヘッダの３つのビットのうちの少なくとも２つのビットを含んでいる。より好ましくは、予め定めた統計的特徴は、１つのソース・アドレス（ＳＡ）、ｍ個の宛先アドレス（ＤＡ）、およびｎ個の宛先ポート（ＤＰ）を含む。ここで、ｍ≧１およびｎ≧５である。
【００１６】
好ましい実施形態の場合には、アラームを鳴動するステップは、さらに、中央管理機関に上記の疑いのあるパケットを報告するステップを含む。好ましくは、上記管理機関は、疑いのあるパケットの特徴に類似している特徴を有するすべての以降のパケットを破棄する。より好ましくは、上記管理機関は、ネットワークに損傷を起こす恐れがない程度に疑いのあるパケットと同じＳＡを含むすべての以降のパケットを制限する。
【００１７】
好ましくは、この方法は、さらに、上記ネットワークと結合しているデバイス内でツリー構造と動作可能に結合している少なくとも１つのスロットを含む複数のスロットに分割されている第１の部分を有するサーチ・ツリーに論理的に等価なルックアップ構造を提供するステップと、デバイス内でネットワーク・トラフィックを受信するステップと、予め定めた統計的特徴を有するＴＣＰ／ＩＰパケットを検出するために、プログラムされたＣＰＵを含むネットワーク・トラフィックを分析するステップと、このように検出した各ＴＣＰ／ＩＰパケットに対して、ソース・アドレス（ＳＡ）および宛先アドレス（ＤＡ）からハッシュした値を生成するために、上記プログラムされたＣＰＵを使用するステップと、スロット内に索引するためにハッシュした値を使用するステップと、ポインタを探してスロットをチェックするステップと、ポインタを発見できなかった場合に、新しいリーフの識別子であるＳＡおよびＤＡを有する上記リーフを挿入するステップと、上記リーフ内に上記各ＴＣＰ／ＩＰパケット内に含まれている宛先ポート（ＤＰ）のアドレスを格納するステップと、リーフをポイントしている上記スロット内にポインタを生成するステップとを含む。
【００１８】
より好ましくは、この方法は、さらに、ポインタがスロット内に位置している場合に、リーフにアクセスするために上記ポインタを使用するステップと、その中に記録している宛先ポート（ＤＰ）のアドレスを検出するために、上記リーフの内容をチェックするステップと、このように検出したアドレスの数をしきい値と比較するステップと、アドレスの数がしきい値以上である場合に、第２の階層ルックアップを行うステップとを含む。
【００１９】
さらにより好ましくは、この方法は、さらに、上記リーフ内のアドレスの数がしきい値より小さい場合に、上記リーフにＤＡを追加するステップを含む。
【００２０】
第２の態様によれば、本発明は、メモリと、上記メモリ内で動作可能に構成されているルックアップ・データ構造と、予め定めた統計的特徴を有する予め定めたパケットを検出するために、予め定めたパケットをルックアップ・データ構造と関連付ける一組のアルゴリズムを実行し、予め定めた統計的特徴を有する予め定めたパケットを検出した場合に、管理者に警告するためにアラーム・メッセージを発行するプロセッサとを備えるネットワーク上のスキャンニングを検出するためのシステムを提供する。
【００２１】
好ましくは、ルックアップ・データ構造は、サーチ・ツリーと論理的に等価なものを含む。より好適には、サーチ・ツリーの第１の部分は、予め定めたパケットの多くのビットを試験する。さらにより好ましくは、サーチ・ツリーの第１の部分は直接テーブルを含む。
【００２２】
好ましい実施形態の場合には、予め定めた統計的特徴は、１つのソース・アドレス（ＳＡ）、１つの宛先アドレス（ＤＡ）、およびｎ個（ｎ＞１）の宛先ポート（ＤＰ）を含む。他の好ましい実施形態の場合には、予め定めた統計的特徴は、１つのソース・アドレス（ＳＡ）、ｍ個（ｍ＞１）の宛先アドレス（ＤＡ）およびｎ個（ｎ＞１）の宛先ポートを含む。
【００２３】
好ましくは、一組のアルゴリズムは、少なくとも１つの検出アルゴリズムを含む。より好ましくは、一組のアルゴリズムは、  直接テーブル（ＤＴ）アルゴリズム上での挿入を含む。さらにより好ましくは、一組のアルゴリズムは、新しいツリー挿入アルゴリズムを含む。好ましくは、一組のアルゴリズムは、大型ツリー挿入アルゴリズムの挿入を含む。より好ましくは、一組のアルゴリズムは、しきい値アルゴリズムを含む。さらにより好ましくは、一組のアルゴリズムは、削除アルゴリズムを含む。
【００２４】
第３の態様によれば、本発明は、コンピュータ・プログラムをコンピュータ上で実行した場合に、上記方法のすべてのステップを実行することができるプログラム・コード手段を備えるコンピュータ・プログラムを提供する。
【００２５】
ホスト（コンピュータ）のようなネットワーク・デバイスに対する不正なエントリは、２つの段階、すなわち調査段階および攻撃段階で行われる。調査段階中、コンピュータに関する段階情報が収集される。収集した情報は、攻撃段階中、計算活動を中断するために使用される。
【００２６】
本発明は、調査段階中（調査とも呼ばれる）不正なスキャンニングを検出し、本明細書に記載する修正動作を行う。
【００２７】
このシステムは、１つのソース・アドレス（ＳＡ）、１つまたはいくつかの宛先アドレス（ＤＡ）、いくつかの（４つより少ない）または多くの（４つより多い）宛先ポート（ＤＰ）を特徴とする高帯域幅トラフィックＴＣＰ／ＩＰ  ＳＹＮ（同期）またはＲＳＴ（リセット）パケット内で検出を行うために、ルックアップおよび記録構造と共同動作を行うＰｏｗｅｒＰＣのようなプログラムされた汎用プロセッサ、またはＰｏｗｅｒＮＰのような特種プロセッサを含む。これらの特徴に適合するＴＣＰ／ＩＰパケットは、他の動作について行政管理（administrative management）にフラグされ、報告される。
【００２８】
一実施形態の場合には、ルックアップおよび記録構造は、直接テーブル（ＤＴ）および関連するパトリシア・ツリーを含む。完全一致（ＦＭ）ルックアップの２つの階層が存在する。第１の階層は、第１の直接テーブルのスロット内に索引するために、キーまたはヘッダと呼ばれる受信したパケットの一部内のＳＡおよびＤＡのハッシュを使用する。ＤＡおよびＳＡからの選択したビットは、リーフに到着するまで、スロットに関連するツリー内を移動するために使用される。リーフ内のＳＡおよびＤＡは、キー内のＳＡおよびＤＡと比較され、キー内のＤＰと一致した場合には、同じＳＡおよびＤＡに対するＤＰのリンク・リストと比較される。ＤＰが新しい場合には（すなわち一致しない場合には）、そのＤＰはリストに追加される。リスト内のＤＰの数が≧ｎである場合には、第２の直接テーブルおよび関連するパトリシア・ツリー内で第２の階層ルックアップを行うために、ＳＡのハッシュが使用される。第２のテーブル内のルックアップは、第１のテーブル内でのルックアップに類似している。第２のテーブルのリーフ内のＳＡがハッシュしていないＳＡと一致する場合には、リーフ内のＤＡおよびＤＰがチェックされ、ＤＡ≧ｎであり、ＤＰ≧ｎである（ｎ以上である）場合には、アラームが鳴動して、ＳＡおよびＤＡを含むパケットが、不正なスキャンニングまたは調査パケットであることを知らせる。アラームに応じて、ネットワーク管理者は、パケットを受け取ったＳＡの動作を制限するための動作を行う。本発明の一実施形態の場合には、ｎは４にセットされる。
【００２９】
代替実施形態の場合には、このトラフィックが悪意のあるものかないものかを判定するために、検索したポートに対する宛先アドレスの比率を使用することができる。このトラフィック比率は、実際には、一意のＤＡの数に一意のＤＰの数を掛けたものである乗数であり、積を必ず１０（または決定した他の数）より大きくする。これによりもっと小さなスキャンニングを発見することができるが、それは低いしきい値検出装置すら避けるために最初に巧妙に作られる。これは、多くの場合、攻撃者が使用する技術で、検出を避けるために調査パケットを非常にゆっくりと送信する。
【００３０】
上記代替実施形態の場合には、（１０のような）静的数と比較して、（４のような）静的数を使用しないで乗数を使用する。その場合、ハッシュへの入力はＳＡだけである。各リーフ内においては、ＳＡに関連するＤＡのリストが維持される。リスト内の各ＤＡは、ＤＰのリストと関連する。この大きいリーフにより、１つまたはいくつかのＳＡからの多くのＤＡおよびＤＰの組合せに対するゆっくりしたスキャンニングを検出することができる。（４のような）静的数の比較の代わりに、ＤＡ当りの一意のＤＰのカウントを入手し、次に（１つのＳＡに関連する）他のＤＡが掛けられる点を除けば、これらのスキャンニングの検出は非常によく似ている。特定のＳＡに対する複数のＤＡおよびＤＰによるこのようなスキャンニングへの応答は、上記方法で引き続き行われる。
【００３１】
第４の態様によれば、本発明は、ａ）受信したパケットをスキャンニングする少なくとも１つのアルゴリズムを提供するステップと、ｂ）１つのソース・アドレス（ＳＡ）、Ｎ個の宛先アドレス（ＤＡ）、およびＭ個の宛先ポート（ＤＰ）を含む予め定めたフォーマットを有するパケットを識別するステップとを含むコンピュータ・ネットワーク上の有害なパケットを検出するための方法を提供する。
【００３２】
第５の態様によれば、本発明は、メモリおよび少なくとも１つの処理素子を含むネットワーク・プロセッサと、上記メモリ内に位置する有害なコードを含むパケットのビット・パターン類似のビット・パターンを有する少なくとも１つの規則を格納している少なくとも１つのパトリシア・ツリー（Ｐａｔｒｉｃｉａ  Ｔｒｅｅ）配置を含むデータ構造と、上記少なくとも１つの処理素子上に展開していて、実行した場合に、上記処理素子に、予め定めたパケット内の予め定めたフィールドからキーを生成させ、１つのＳＡ（ソース・アドレス）、１つのＤＰ（宛先ポート）および多くのＤＡ（宛先アドレス）を有するパケットを識別するために、キーを規則と関連付けるコンピュータ・プログラムとを備えるコンピュータ・ネットワークで有害なコードを含むパケットを検出するためのシステムを提供する。
【００３３】
第６の態様によれば、本発明は、コンピュータ・プログラムをコンピュータ上で実行した場合に、上記方法のすべてのステップを実行することができるプログラム・コード手段を備えるコンピュータ・プログラムを提供する。
【００３４】
本発明は、通常のコンピュータ・トラフィックのストリーム内で、１つのＩＰソース・アドレス（ＳＡ）、１つの宛先ポート（ＤＰ）および個々の宛先アドレス（ＤＡ）のしきい値を超えるある数を有するＴＣＰパケットのサブセットを検出するための一組のアルゴリズムを含む検出および応答システムを提供する。直接テーブル、および１つのＳＡおよび１つのＤＰを含む組のパケットを記録するためのパトリシア・サーチ・ツリー、および所与のＳＡ、ＤＰの組合せについて観察した一組のＤＡ値のようなルックアップ機構が効率的に使用される。このようなサブセットの存在、およびサブセットのＳＡ、ＤＰ、および複数のＤＡを含むヘッダ値がネットワーク管理者に報告される。さらに、報告への種々の管理応答が提供される。
【００３５】
本発明の検出システムは、直接テーブルおよびパトリシア・ツリーからなる構造がメモリ内で提供されるネットワーク・プロセッサのようなコンピュータを含む。選択したネットワーク・トラフィックを監視し、構造を維持し、１つのソース・アドレス（ＳＡ）、１つの宛先ポート（ＤＰ）、および多くの宛先アドレス（ＤＡ）を有する送信制御プロトコル（ＴＣＰ）同期（ＳＹＮ）パケットが識別され、悪意のあるパケットとして報告されるように、選択ネットワーク・トラフィックからのキーを構造と関連付けるアルゴリズムが提供される。
【００３６】
一実施形態の場合には、本発明は、最初に、生のＤＰ（１６ビット）を管理者が指定する周知のＤＰ値の比較的短いリストと比較する。このリストは、例えば、ポート８０、ハイパーテキスト転送プロトコル（ＨＴＴＰ）ポートを含むことができる。何故なら、すべてＤＰ＝８０である１つのＳＡから多くのＤＡへトラフィックを生成するのは、ウェブ・サーフィン中通常行われることであるからである。パケットがリストに記載されている場合には、本発明は、そのパケットを潜在的に悪意のあるパケットであるとそれ以上見なさない。好ましい実施形態の場合には、このような許容ＤＰ値に対する試験をデータ経路ソフトウェア内で行うことができる。すなわち、小さなルックアップ・テーブルを、ネットワーク・プロセッサのようなプログラマブル・プロセッサ内でパケットを処理するプログラムに内蔵させることができる。小さなルックアップ・テーブルは、（１０の許容ＤＰのような）許容ＤＰの短いリスト内のパケットＤＰ会員を試験するのに適している。ある場合の許容ＤＰの他の例は、簡単なメール転送プログラム（ＳＭＴＰ）を示す数２５である。
【００３７】
他の実施形態の場合には、本発明は、例えば、１に等しいＳＹＮおよび終わり（ＦＩＮ）ビットの両方を有するＴＣＰパケット、または記録した対応するＳＹＮパケットを含んでいないＳＹＮおよび肯定応答（ＡＣＫ）ビット・セットの両方を有するＴＣＰパケットのようなヘッダ・ビットの違法な設定を含むパケット、または合法的設定の違法なシーケンスを含むパケットを自動的に破棄する。また、好ましい実施形態の場合には、本発明は、１つのセッションまたは複数のセッション内のＦＩＮまたはＦＩＮ／ＡＣＫパケットを発見した場合には、１つのＳＡおよび１つまたは複数のＤＡに対応するルックアップ・エントリを削除する。
【００３８】
もっと一般的な観点からいうと、本発明は、ＴＣＰセッション内で使用するＴＣＰパケットのフリをして侵入した悪意のあるパケットを検索し、検出する。悪意のある人がコンピュータ・ネットワーク・トラフィックを中断するために選択できる多くの方法がある。１つの方法は、悪意のある人が送信制御プロトコル（ＴＣＰ）セッションのペイロード中にワームまたはウィルスを散布する方法である。この方法により、即時または後での感染に弱い機械を発見することができる。
【００３９】
この散布は、１つのＩＰソース・アドレス（ＳＡ）（攻撃者）から弱い宛先ポート（ＤＰ）番号へ、および（おそらく、ランダムな、シーケンシャルなまたは犠牲者の潜在的アドレスと見なされる１組のＤＡ内で）いくつかのＩＰ宛先アドレス（ＤＡ）へ送信したＴＣＰセッションであってもよい。本発明を使用すれば、すべてが遥かに大きな一組の通常のトラフィック内に含まれるこのような悪意のあるトラフィックを含む多くのこのようなＳＹＮパケットの組を検出することができる。また、本発明は、このような検出に対するいくつかの可能な応答を含む。
【００４０】
すなわち、本発明は、１つのＳＡ、１つのＤＰ、および多くのＤＡ値を含む同期（ＳＹＮ）パケットのサブセットの高帯域幅トラフィック内で検出を行うための効率的な検索戦略およびアルゴリズを含む。ある種の攻撃は、異常検出装置が気が付かないように毎秒約１〜１０パケットと意図的に遅い速度で行われる場合がある。遅い散布速度は上記問題の中に含まれていて、本発明により解決される。悪意のあるトラフィックは、あるアプリケーションをサポートしている目標機械のアイデンティティを発見するための調査である場合がある。別の方法としては、悪意のあるトラフィックは、ファイルへの不正なアクセス、ファイルの削除、ファイルの修正またはファイルのコピーとなる調査またはプロセッサの不正な制御を入手することができる、それ自身ウィルスまたはワームであるペイロードを含む場合がある。すべてのそのようなＳＹＮトラフィックを、本発明においてはｅｘｐｌｏｉｔと呼ぶ。
【００４１】
ネットワーク・プロセッサのようなネットワーク内のプログラマブル・プロセッサは、完全一致（ＦＭ）ルックアップを含むことができる。ＳＡ、ＤＡ、ソース・ポート（ＳＰ）、ＤＰ、およびプロトコル番号（ＴＣＰの場合は、６）からなる１０４ビットのＩＰ５タプルのようなＴＣＰパケットから長いキーを読み出すことができる。別の方法としては、ＩＰ５タプルおよび他のヘッダ値を含む最長約１９２ビットのもっと長いキーを使用することもできる。キーは、例えば１６ビットのような便利なサイズにハッシュされる。１６ビット索引の場合には、６４Ｋのスロットを含む直接テーブル（ＤＴ）を使用する。メモリを収容する各スロットは、正確に１つのリーフをポイントすることもできるし、または１つまたは複数の分岐およびいくつかのリーフを含むツリーをポイントすることもできる。ツリー内においては、せいぜい１つの一致が可能なまま残る（１つのリーフ）まで、生のキー内の追加のビットがチェックされる。何らかの手段によりリーフに達した場合には、全部のキーが、全リーフ・キー・パターン［０、１または＊（don't care）エントリ、また高いまたは低い範囲のエントリを含む］と比較され、（同様にリーフ内に記録している関連する動作になる）ヒットまたは（デフォルト動作になる）ミスが存在する。
【００４２】
本発明は、新しい方法でＦＭルックアップを使用する。目標は、既知のパラメータを使用する特定のパケットを認識し、次にある動作を適用することではない。それどころか、既知のパラメータは存在しない。目標は、これまで未知のヘッダ・ビットの組合せを含むセット・パケットにより統計的挙動を認識することである。このことは、従来のパケット認識に対して挙動認識と呼ぶことができる。本発明が解決する挙動認識問題は、１つのＳＡ、１つのＤＰ、および多くのＤＡを含む一組のＳＹＮパケットが、遥かに大きい一組のパケット内に存在するという事実を認識することである。本発明は、認識およびまた共通のＳＡおよびＤＰの報告を含む。代替実施形態の場合には、２つ以上のＳＡまたは２つ以上のＤＰ、２または１０のような小さな制限までも認識し、報告することができる。
【００４３】
挙動認識問題を解くために、本発明に対する入力キーは、各ＴＣＰパケットのＳＡおよびＤＰの連結であると定義される。
【００４４】
代替実施形態の場合には、本発明はＤＰ値がないことを許容できるものであってもよい。
【００４５】
挙動認識問題を解くために、本発明が使用する入力キーは、ＴＣＰソース・アドレス（ＳＡ）および宛先ポート（ＤＰ）の連結であると定義される。この値ＳＡ、ＤＰはキーとしてパトリシア・ツリーを内蔵する検索エンジンに送られる。
【００４６】
パケットが上記のような許容ＤＰを有していない場合には、本発明はＳＡおよびＤＰの連結（４８ビット）を直接テーブル（ＤＴ）内で便利な画像（１６ビットなど）にハッシュする。ＳＡ、ＤＰビットは、せいぜい１つの前に発見したＳＡ、ＤＰに関連するリーフに達するまでツリーのビット試験分岐に取り入れなければならない。各リーフはＳＡ、ＤＰの組合せにより定義される。各リーフは、また、少なくとも１つおよびできればもっと多くのＤＡ値を含む。
【００４７】
二種類の衝突が起こる恐れがある（ＤＴ内の同じハッシュ値を有する異なるヘッダ値を含むパケット）。最初に、悪意のあるトラフィックの散布は、同じＳＡおよびＤＰを含んでいるが、いくつかの異なるＤＡを含むパケットになる場合がある。ＳＡ、ＤＰだけがハッシュに入力されるので、このようなハッシュは衝突する。第二に、偶然、２つの関係のないＳＡ、ＤＰの組合せのハッシュが同じものになる場合がある。第２の場合には、せいぜい１つの前に発見したＳＡ、ＤＰの組合せに関連するリーフに達するまで、ＳＡ、ＤＰビットのもう１つの試験をツリーのビット試験分岐内に取り入れなければならない。それ故、各リーフは、１つのＳＡ、ＤＰの組合せにより定義される。また、各リーフは、少なくとも１つ、可能であればそれ以上のＤＡ値を含む。
【００４８】
好ましくは、Ｎ＞８およびＭ＝１である。より好ましくは、パケットが中央管理機関に報告される。
【００４９】
好ましくは、中央管理機関は、上記パケットの有害な影響を制限するために決定動作を行う。より好ましくは、決定動作は、同じＳＡ、ＤＡおよびＤＰを有するすべての後続のパケットを識別済みのパケットとして廃棄するステップを含む。さらにより好ましくは、決定動作は、上記パケットの宛先ポート、すなわちＤＰを許容ＤＰのリストに追加するステップを含む。さらにより好ましくは、決定動作は、同じＳＡを含むすべての以降のパケットの組を制限する比率を含む。
【００５０】
好ましい実施形態の場合には、ＳＡ、ＤＰおよび多くのＤＡは、パトリシア・ツリー配置のリーフ内に格納される。好ましくは、パトリシア・ツリー配置は、直接テーブルを含んでいる。より好ましくは、上記コンピュータ・ネットワークと動作することができるように結合しているシステム上で少なくとも１つのアルゴリズムを実行する。
【００５１】
添付の図面に示す本発明の好ましい実施形態を参照しながら、以下に本発明について説明するが、これは単に例示としてのものに過ぎない。
【発明を実施するための最良の形態】
【００５２】
コンピュータ・ネットワークの管理は、悪意のある調査トラフィックからのネットワーク資産の防衛を含む。いくつかの場合の調査トラフィックは、攻撃者に対応する１つのソース・アドレス（ＳＡ）を含む一組のパケット、攻撃者が調査する１つまたは複数の犠牲となる機械に対応する１つまたはいくつかの宛先アドレス（ＤＡ）値、およびおそらく攻撃者から見て弱いと思われるアプリケーションに対応するいくつかのまたは多くの宛先ポート（ＤＰ）を含む。
【００５３】
管理者は、ネットワークの防衛を助けるために、本明細書に開示しているようなツールに依存することができる。ネットワーク防衛の一部として、管理者は、このような組のパケットが、スイッチ、ルータ、ネットワーク・インタフェース・カード（ＮＩＣ）、器具、またはもっと一般的に言って、分類、切替え、経路指定、治安維持機能、または分類の結果に基づいて他のセキュリティ機能を行うことができる機械を通過する際に、これらのパケットを検出したい場合がある。
【００５４】
図１は、本発明を使用することができる非常に簡単なネットワーク１００である。インターネットまたは他のネットワーク１０２は、縁部デバイス１０４と接続している。各縁部デバイスは、本発明の一例を含む検出組立体１０８を備えていてもよいし、備えていなくてもよい。縁部デバイスは、また、サブネット１０６にも接続している。次に、２つのサブネットをブリッジ・デバイス１１０により接続することができる。ブリッジ・デバイスは、本発明の一例１１２を含んでいてもよいし、含んでいなくてもよい。縁部デバイスは、ルータ、スイッチ、サーバ等を含むことができる。縁部デバイスおよびブリッジ・デバイスは従来技術において周知のものであるので、本明細書においては本発明の教示を含むこれらの部分または本発明を理解するのに必要なこれらの部分だけについて説明する。
【００５５】
図２は、縁部デバイスまたはブリッジ・デバイスの検出組立体１０８内の構成要素のブロック図２００である。ランダム・アクセス・メモリ（ＲＡＭ）２０２が、本発明に含まれる情報の更新を格納する。中央処理装置（ＣＰＵ）２０４は、本発明のアルゴリズムを実施し、それによりＲＡＭを更新するために、読出し専用メモリ（ＲＯＭ）２０６内の構成のところに格納しているデータにアクセスする。バス２０８は、構成要素間で信号を送受信するためのものである。入力／出力（Ｉ／Ｏ）アダプタ２１０は、人間の管理者が周期的に観察するモニタ（図示せず）を含む汎用コンピュータを含むことができる外部デバイス２１２へのおよび外部デバイス２１２からの信号を管理する。
【００５６】
代替実施形態の場合には、ＩＢＭが開発し販売しているＰｏｗｅｒＮＰのようなネットワーク・プロセッサ（ＮＥＴ  ＰＲＯ）が、Ｉ／Ｏアダプタ２１０と結合している。ネットワーク・プロセッサは、データ面内に位置していて、ネットワーク内でパケットを経路指定するためのすべての必要な構成要素およびアルゴリズムを含む。本発明の教示による調査アルゴリズムは、ネットワーク・プロセッサ上で実行される。図９について簡単に説明すると、この図はネットワーク・プロセッサのブロック図である。図９は、ネットワーク・プロセッサを記載していて、その全文を参照により本明細書に組み込むものとする米国特許第６，４０４，７５２号の図１８と同じものである。このように上記米国特許を含んでいるので、ネットワーク・プロセッサの詳細な説明を容易に理解することができる。それ故、本発明に直接関係があり、本発明が使用するネットワーク・プロセッサのこれらの機能だけを識別し、説明することにする。埋込プロセッサ複合体（ＥＰＣ）は、データを経路指定するアルゴリズムおよび本発明の教示による検出アルゴリズムを実行する複数のプロセッサを含む。本明細書に記載するように、検出アルゴリズムは、ネットワーク上で調査パケットを検出し、識別する。対象となるある他の機能は、貼付の米国特許に示すデータ構造である。データ構造は、直接テーブルおよび直接テーブルと結合しているパトリシア・ツリーを含む。データ構造および関連するツリー検索エンジンは、本発明のルックアップおよび追跡機構として使用される。
【００５７】
図３を参照すると、この図は、本発明が含んでいる検出アルゴリズムのフローチャート３００である。アルゴリズムの検出がスタートすると（ブロック３０２）、次のパケットが到着する（ブロック３０４）。ＴＣＰであるかどうかについて、インターネット・プロトコル（ＩＰ）パケットが試験される（ブロック３０６）。この試験は、パケットのヘッダ内のビット上で行われる。ＴＣＰでなかった場合には、アルゴリズムはブロック３０４に戻り、次のパケットを待機する。パケットがＴＣＰであった場合には、ＳＹＮであるかどうかについて、パケットが試験される（ブロック３０８）。この試験は、パケットのヘッダ内の制御ビットをチェックすることにより行われる。ＳＮＹでなかった場合には、アルゴリズムはブロック３０４に戻る。ＳＮＹであった場合には、ＳＡおよびＤＡの連結がハッシュ機能に送られる（ブロック３１２）。ハッシュの値は直接テーブル（ＤＴ）内の索引になる（ブロック３１４）。すでにリーフまたは少なくとも２つのリーフを含むツリーへのポインタを有しているかどうかについてＤＴスロットが試験される（ブロック３１６）。ポインタがない場合には、アルゴリズムは、ＤＴ上の挿入アルゴリズムに分岐する（ブロック３１８）（図４）。ポインタがある場合には、アルゴリズムは、正確に１つのリーフをポイントしているかどうかについて試験する（ブロック３２０）。ポインタが少なくとも２つのリーフを含むツリーをポイントしている場合には、ＳＡ、ＤＡの連結がパトリシア・ツリー・アルゴリズムにより試験される（ブロック３２４）。次に、現在のリーフのラベルが一致するかどうかについて、ＳＡ、ＤＡがパトリシア・ツリー・アルゴリズムにより試験される（ブロック３３０）。ＳＡ、ＤＡが一致しなかった場合には、アルゴリズムは、大型ツリー挿入アルゴリズムに分岐する（ブロック３３４）（図６）。ＳＡ、ＤＡがツリー内のリーフと一致した場合には、キーのＤＰがリーフ内の１つまたは複数のＤＰ値と比較される（ブロック３３２）。ブロック３２０に戻り、ＤＴスロットが正確に１つのリーフをポイントしている場合には、アルゴリズムはキーＳＡ、ＤＡをこのリーフのラベルと比較する（ブロック３２２）。ＳＡ、ＤＡが一致しない場合には（ブロック３２６）、アルゴリズムは新規ツリー挿入に分岐する（ブロック３２８）（図５）。ＳＡ、ＤＡが一致した場合（ブロック３２６）には、アルゴリズムは、リーフ内に１つまたは複数のＤＰ値を含むキーのＤＡの比較に分岐する（ブロック３３２）。キーＤＰがあるリーフＤＰと一致した場合には、アルゴリズムはブロック３０４に戻り、次のパケットを待機する。キーＤＰがどのリーフＤＰとも一致しない場合には、新しいＤＰがリーフ内に格納される（ブロック３３８）。この場合、アルゴリズムはしきい値アルゴリズムに進む（ブロック３４０）（図７）。
【００５８】
フローチャートの以外の方法で、検出アルゴリズムを下記のように記述することもできる。
【００５９】
ＳＡ、ＤＡのハッシュの１６ビット（またはこのくらいのビット）は、直接テーブル（ＤＴ）内で索引として使用される。ＤＴスロットは、通常のＦＭスロットであり、リーフをポイントしないこともでき、正確に１つのリーフをポイントすることもでき、または分岐および２つ以上のリーフを含むツリーをポイントすることもできる。各リーフは、全パケットＳＡ、ＤＡをＳＡ、ＤＡの正確なパターンと比較する。この場合も、リーフはそのラベルとしてＳＡ、ＤＡを含み、少なくとも１つのできればいくつかのＤＰを含む。
【００６０】
ＳＡ、ＤＡの組合せのハッシュ値を計算した場合に、ＤＴ内のスロットが空であった場合（何もポイントしていなかった場合）には、ＤＴスロットは、ラベルＳＡ，ＤＡおよび内容ＤＰを含む新しいリーフをポイントするように改訂される。そうでない場合で、ＤＴ内のＳＡ、ＤＡスロットがポインタを有している場合には、リーフまたはツリーまでポインタを追跡する。スロットがツリーをポイントしていた場合には、せいぜい１つの前に発見したリーフがＳＡ、ＤＡと適合するまで、ＳＡ、ＤＡ内のいくつかのビットの試験を含む。いずれの場合でも、キー内の全ＳＡ、ＤＡおよびリーフ内の全ＳＡ、ＤＡが比較される。これらの全ＳＡ，ＤＡが等しくない場合には、前に発見したキーから新しいキーを区別するために、ＳＡ、ＤＡ内のビットを試験するようにツリーを再構成しなければならない。これらの全ＳＡ，ＤＡが等しい場合には、リーフはキーに本当に対応し、キーのＤＰ値がリーフ内に格納している１つまたはいくつかのＤＰ値と比較される。キーのＤＰ値が前に格納したＤＰと同じである場合には、何もしない。そうでない場合には、キーのＤＰ値がリーフ内に格納している１つまたは複数のＤＰ値に加算される。また、ＤＰ値の新しい全数がしきい値と比較される。
【００６１】
テーブルＩに検出アルゴリズムの他の表現を示す。ステップ０〜１６は説明を要しないので、これ以上の説明は省略する。
【００６２】
テーブルＩ
検出
０．次のパケットが到着する。
１．パケットがＴＣＰでない場合には、０に進む。
２．パケットがＳＮＹでない場合には、検出ステップ１（テーブルＶＩ）に進む。
３．パケットのヘッダからのＳＡ、ＤＡ組合せ（キー）をハッシュ機能に送る。
４．ハッシュ値を直接テーブル・スロットへの索引として使用する。
５．スロットがポインタを有していない場合には（スロットにハッシュするＳＡ、ＤＡを含む現在のセッションがない場合には）、ＤＴ上の挿入ステップ０（テーブルＩＩ）に進む。
６．スロットがツリー（２つ以上のリーフを含む）をポイントしている場合には、１２に進む。
７．スロットが（正確に）１つのリーフをポイントしている場合には、ＳＡ、ＤＡをリーフのＳＡ、ＤＡと比較する。
８．キーおよびリーフのＳＡ、ＤＡが一致しない場合には、新しいツリー挿入ステップ０（テーブルＩＩＩ）に進む。
９．そうでない場合には、パケットのＤＰをリーフ内の１つまたは複数のＤＰ値と順次比較する。
１０．パケットのＤＰとリーフのあるＤＰが等しい場合には、０に進む。
１１．そうでない場合には、リーフ内に新しいＤＰを格納する。しきい値（テーブルＶ）に進む。
１２．リーフに達するまでキーのＳＡ、ＤＡ上のツリー内でビット試験分岐を実行する。
１３．キーおよびリーフのＳＡ、ＤＡが一致しない場合には、大型ツリー挿入ステップ０（テーブルＩＶ）に進む。
１４．そうでない場合には、パケットのＤＰをリーフ内の１つまたは複数のＤＰ値と順次比較する。
１５．パケットのＤＰとリーフのあるＤＰが等しい場合には、０に進む。
１６．そうでない場合には、リーフ内に新しいＤＰを格納する。しきい値ステップ０に進む。
【００６３】
図４を参照すると、この図は本発明の挿入アルゴリズムのフローチャート４００である。アルゴリズムがスタートすると（ブロック４０２）、直接テーブル（ＤＴ）スロットから新しいリーフへの新しいポインタが生成される（ブロック４０４）。このリーフにはＳＡおよびＤＡの連結によりラベルが付けられる（ブロック４０６）。このリーフは、パケットＩＰヘッダ内にＤＰの値を格納するために使用される（ブロック４０８）。次に、アルゴリズムは、上記検出に分岐する（ブロック４１０）。
【００６４】
テーブルＩＩは、挿入技術の自明の他の表現である。
テーブルＩＩ
ＤＴ上の挿入
０．ＤＴスロットからラベルとしてＳＡ、ＤＡを有する新しいリーフへのポインタを生成し、ＤＰを格納する。
１．検出ステップ０に進む。
【００６５】
図５を参照すると、この図は、本発明の新しいツリー挿入アルゴリズムのフローチャート５００である。このアルゴリズムは、１つのもとのリーフがＤＴスロットにすでに取り付けられていて、異なるＳＡ、ＤＡ値を有するがハッシュ値が同じである第２のリーフを追加すべきケースをカバーする。アルゴリズムがスタートすると（ブロック５０２）、ＤＴスロットと等しいルートを含む新しいツリーが生成される（ブロック５０４）。１つの分岐がルートに取り付けられる（ブロック５０６）。２つのＳＡ、ＤＡ値は、この同じスロットにハッシュする。周知のパトリシア・ツリー・アルゴリズムの方法で、２つのＳＡ、ＤＡラベルが異なる第１のビットが発見される（ブロック５０８）。分岐のところの試験ビットの一方の値はもとのリーフをポイントしている（ブロック５０８）。同じビットの他の可能な値は、新しく追加したリーフをポイントしている（ブロック５１０）。新しく追加したリーフは、ラベルとしてそのＳＡ、ＤＡを有し、新しいキーのＤＰを格納する（ブロック５１０）。次に、アルゴリズムは、すでに説明した検出に分岐する（ブロック５１２）。
【００６６】
テーブルＩＩＩは、新しいツリー挿入技術の自明の他の表現である。
テーブルＩＩＩ
新しいツリー挿入
０．ＤＴスロットと等しいルートと１つの分岐を含む新しいツリーが生成される。
１．２つのＳＡ、ＤＡ組合せが異なるこれら２つのＳＡ、ＤＡ組合せの２つの連結での第１のビットを発見する。
２．一方のリーフがもとのリーフであり、新しいＳＡ、ＤＡを有し、新しいキーのＤＰを格納する他方のリーフが追加される、２つのリーフへのビット試験分岐でそのビットが使用される。
３．検出ステップ０に進む。
【００６７】
図６を参照すると、この図は、本発明の大型ツリー挿入アルゴリズムのフローチャート６００である。アルゴリズムがスタートすると（ブロック６０２）、新しい分岐および新しいリーフの既知のパトリシア・ツリー挿入が行われる（ブロック６０４）。新しいリーフのラベルは、キーのＳＡ、ＤＡの連結として示される（ブロック６０６）。パケットのＤＰは、新しいリーフ内に格納される（ブロック６０８）。次に、アルゴリズムは、すでに説明した検出に分岐する（ブロック６１０）。
【００６８】
テーブルＩＶは、大型ツリー挿入アルゴリズムの自明の他の表現である。
テーブルＩＶ
大型ツリー挿入
０．新しいビット試験分岐を挿入するために、従来のパトリシア・ツリー・アルゴリズムを使用して１つのリーフを追加する。
１．新しいリーフは、ラベルとして新しいキーのＳＡ、ＤＡを有し、ＤＰを格納する。
３．検出ステップ０に進む。
【００６９】
図７を参照すると、この図は本発明のしきい値アルゴリズムのフローチャート７００である。アルゴリズムがスタートすると（ブロック７０２）、リーフ内に格納しているＤＰ値の数が、通常は８である構成のところで指定されたしきい値と比較される（ブロック７０４）。（異なる）ＤＰ値の数がしきい値以下である場合には、アルゴリズムは検出に分岐する（ブロック７０８）。ＤＰ値の数がしきい値より大きい場合には、報告が管理者または管理システムに送られる（ブロック７０６）。次に、アルゴリズムは検出に分岐する（ブロック７０８）。
【００７０】
テーブルＶは、しきい値アルゴリズムの自明の他の表現である。
テーブルＶ
しきい値
０．リーフ内のＤＰの新しい数がしきい値Ｔより大きい場合には、ＳＡからの悪意のあるトラフィックの可能性を報告する。
１．検出ステップ０に進む。
【００７１】
図８を参照すると、この図は、本発明の削除アルゴリズムのフローチャート８００である。このアルゴリズムは、直接テーブル／パトリシア・ツリー・データ構造から古いエントリを削除する。アルゴリズムがスタートすると（ブロック８０２）、フレーム・カウント値が１だけ増大する（ブロック８０４）。次に、フレーム・カウントが１０２４のようなフレームのしきい値数と比較される（ブロック８０６）。フレーム・カウントがしきい値より小さい場合には、アルゴリズムは検出に分岐する（ブロック８１２）。フレーム・カウントがしきい値以上である場合には、アルゴリズムは、すべてのリーフ、ツリー（分岐）およびＤＴポインタを完全に削除する（ブロック８０８）。次にアルゴリズムは、フレーム・カウントの値を０にリセットする（ブロック８１０）。次に、アルゴリズムは検出に分岐する（ブロック８１２）。テーブルＶＩは、削除アルゴリズムの自明の他の表現を示す。
【００７２】
テーブルＶＩ
削除
１．時間カウンタを１だけ増大する。
２．時間カウンタの値をしきい値と比較する。
４．時間カウントがしきい値以下である場合には、検出ステップ０に進む。
５．時間カウンタ値がしきい値を超えた場合には、ＤＴからすべてのリーフおよびツリーを削除する。
６．時間カウントを０にリセットする。
７．検出ステップ０に進む。
【００７３】
代替実施形態の場合には、カウントはフレームの数ではなくて、時間の増大であってもよい。当業者であれば、この代替実施形態が削除アルゴリズムを若干修正したものであることを理解することができるだろう。テーブルＶＩＩは、時間の増大をベースとする検出アルゴリズムの自明の表現である。
【００７４】
テーブルＶＩＩ
削除
１．時間カウンタを１だけ増大する。
２．時間カウンタ値をしきい値と比較する。
４．時間カウントがしきい値以下である場合には、検出ステップ０に進む。
５．時間カウンタ値がしきい値を超えた場合には、ＤＴからすべてのリーフおよびツリーを削除する。
６．時間カウントを０にリセットする。
７．検出ステップ０に進む。
【００７５】
すでに説明したように、ネットワーク内で調査パケットが検出された場合には、これらパケットは、管理者または他の管理機能に報告され、さらに動作が行われる。
【００７６】
本発明は、報告機構への応答のためにいくつかの可能なオプションを含む。一実施形態の場合には、本発明は、管理者に警告するステップを含むことができる。この場合、管理者は、ありうる悪意のある意図に対する報告状態に分岐をしたパケットの所与のＳＡ、ＤＡ、ＤＰを含むトラフィックを調査することができる。第２の実施形態の場合には、本発明は同じＳＡ、ＤＡ、ＤＰを含むすべての以降のパケットを廃棄するステップを含むことができる。第３の実施形態の場合には、本発明は同じＳＡを含むすべての以降のパケットを廃棄するかまたは比率制限するステップを含むことができる。第４の実施形態の場合には、本発明は第１の３つの可能な応答のある組合せを含むことができる。応答の組合せは時間とともに変化する場合がある。
【００７７】
図１０は、ＩＰデータグラム・ヘッダ・フォーマットの図解による表示である。このＩＰデータグラム・ヘッダ・フォーマットは、従来技術において周知のものであるので、本発明に関連するヘッダのフィールドだけを取り上げて説明する。当該フィールドは、ソースＩＰアドレス（ＳＡ）および宛先ＩＰアドレス（ＤＡ）である。ＳＡは、データグラム（パケット）の起源を識別し、一方、ＤＡは上記パケットの終わり（宛先）を識別する。
【００７８】
図１１は、ＩＰデータグラムのペイロード・フィールド内で入れ子状になっているＴＣＰヘッダ・フォーマットの図解による表示である。ＴＣＰヘッダ・フォーマットも従来技術において周知のものである。それ故、本発明に関連するフィールドおよびビットだけについてさらに説明する。当該フィールドは、ソース・ポート（ＳＰ）および宛先ポート（ＤＰ）を含む。当業者であれば周知のように、ＳＰはパケットの発信ポートを識別し、一方、ＤＰはパケットが送られる終わりのポートを識別する。当該ビットは、リセット（ＲＳＴ）および同期（ＳＹＮ）を含む。これらのビットは、セットされた場合能動状態になり、リセットされた場合非能動状態になる。パケットのアイデンティティは、ビットの設定により決定される。例えば、ＳＹＮビットをセットすると、このビットはＳＮＹパケットを含む。これらのビットの使用方法および機能は、従来技術に詳細に文書化されている。それ故、これ以上の説明は省略する。
【００７９】
図１２は、本発明の教示による検索機能または検索ルックアップ構造の図解による表示である。当業者であれば他のツリー構造を考案することができることが分かっている。それ故、図解による表示は単に例示としてのものであって、特許請求の範囲に記載する本発明の範囲を制限するものではない。
【００８０】
データ構造１２００は、６４ビットのＳＡおよびＤＡの連結からなるキー１２０２の抽出を含む。このデータ構造は、さらに、１６または３２ビットのような短い索引を生成するために、ハッシュ機能１２０４を適用するステップを含む。索引は、パトリシア・ツリー１２１０のルートであるエントリを識別するために、直接テーブル１２０８に関連して使用される。パトリシア・ツリーは、１２１２、１２１４、１２１６のような１つまたは複数のリーフを有する。各リーフは、直接テーブル・エントリおよび観察した１つまたは複数のＤＰ値にハッシュする全ＳＡ、ＤＡを含む。
【００８１】
動作：
動作中、本発明が使用されるデバイスで受信したパケットは下記のようにチェックされる：
ルックアップ機構は、サーチ・ツリーと論理的に等価であると仮定する。一実施形態の場合には、ツリーの第１の分岐は、多くの従来のツリーを接続している多数のビットを同時に試験する。第１のこのような分岐は、直接テーブルと呼ぶことができる。
【００８２】
第１のルックアップ（第１の階層）は、ＴＣＰ  ＳＹＮまたはＲＳＴパケットのソース・アドレス（ＳＡ）および宛先アドレス（ＤＡ）を直接テーブル（ＤＴ）にハッシュする。ＤＴの索引は、（１６ビットのような）都合のよい値であってもよい。全キーはＳＡ、ＤＡおよび宛先ポート（ＤＰ）である。リーフはＳＡおよびＤＡによりパケットを照合し、次にさらに、ＤＰを同じＳＡおよびＤＡに対するＤＰのリンクしているリストと比較する。ＤＰが新しいものである場合には、ＤＰはリストに追加される。周期的に（例えば、毎秒１回）このルックアップのある一部（１／１６など）が完全に削除される。
【００８３】
リーフ内の観察したＤＰの数が、（４のような）しきい値より大きい場合には、リーフのＳＡ、ＤＡ、ＤＰの組合せが第２のルックアップ（第２の階層）にハッシュされる。第２のルックアップの場合、ハッシュはＳＡの上だけに位置する。ＤＴ索引内のビットの数は、（８のような）小さなものであってもよい。１つのＳＡが多くのＤＡ、ＤＰの組合せを有している場合には、ＤＡ、ＤＰの組合せはリーフ内に格納される。このようなリーフ内のＤＡ、ＤＰの組合せの数が、（４のような）しきい値を超えた場合には、ＳＡが分散型スキャンニングに関係していると疑われる。第２の階層内の全テーブルは、（４秒のような）中間周期中にパージされる。
【００８４】
上記パージ間隔は推理と実際のトラフィック統計に基づくものである。パージ間隔があまり短いと、攻撃を見落とす恐れがある。何故なら、完全な攻撃は実際には数周期かかるからである。パージ間隔があまり長いと、新しい攻撃に対する本発明の反応が遅れる。
【００８５】
通常、パージ間隔は調整することができる。いくつかの攻撃が報告された場合には、パージ間隔を限界まで長くすることができる。報告された攻撃が多すぎる場合には、パージ間隔を限界まで短くすることができる。周期を増減するために指数的に加重した関数を使用することができる。この関数は下記のように記述することができる。ｉが、周期Ｐの索引＝０，１，２，．．．を表すとすると、Ｐ（ｉ）は、シーケンス内のｉ番目の値である。Ｐ（０）＝最低限度。周期調整はある形を有することができる。
【００８６】
１．報告された攻撃が非常に少ない場合には、Ｐ（ｉ＋１）＝（１−Ｋ）＊Ｐ（ｉ）＋Ｋ＊最大限度である。
２．そうでない場合、Ｐ（ｉ＋１）＝（１−Ｋ）＊Ｐ（ｉ）＋Ｋ＊最低限度である。
【００８７】
この場合、最低限度＜最大限度であり、Ｋは、０＜Ｋ≦１のある数字である。コンピュータ・ネットワーク管理は、悪意のあるトラフィックからのネットワーク資産の防衛を含む。場合によっては、悪意のあるトラフィックの散布は、攻撃者に対応する１つのソース・アドレス（ＳＡ）を含む一組のパケット、攻撃者から見て弱いと思われるアプリケーションに対応する１つの宛先ポート（ＤＰ）、および可能な犠牲者に対応する多くの宛先アドレス（ＤＡ）を含む。他の場合には、いくつかのＳＡおよびＤＰを含むことができるが、依然として多くのそれ以上のＤＡを含むことができる。
【００８８】
図１３を参照すると、この図は本発明の教示による検出アルゴリズムのフローチャート１３００である。このアルゴリズムがスタートすると（ブロック１３０２）、次のパケットが到着する（ブロック１３０４）。インターネット・プロトコル（ＩＰ）パケットがＴＣＰであるかどうかについての試験が行われる（ブロック１３０６）。この試験は、ＩＰヘッダ内の制御ビットをチェックすることにより行われる。パケットがＴＣＰでない場合には、アルゴリズムはブロック１３０４に戻り、次のパケットを待機する。パケットがＴＣＰである場合には、パケットがＳＹＮであるかどうかについての試験が行われる（ブロック１３０８）。試験はＴＣＰヘッダ内の制御ビットをチェックすることにより行われる。パケットがＳＹＮでない場合には、アルゴリズムはブロック１３０４に戻る。パケットがＳＹＮである場合には、ＴＣＰヘッダ内のＤＰが許容リスト内の会員であるかどうかについての試験が行われる（ブロック１３１０）。許容リストである場合には、アルゴリズムはブロック１３０４に戻る。ＤＰが許容リストでない場合には、ＳＡおよびＤＰの連結がハッシュ機能に送られる（ブロック１３１２）。ハッシュの値は直接テーブル（ＤＴ）内への索引となる（ブロック１３１４）。ＤＴスロットが、すでに１つのリーフまたは少なくとも２つのリーフを含むツリーへのポインタを有しているかどうかについての試験が行われる（ブロック１３１６）。ポインタがない場合には、アルゴリズムはＤＴ上の挿入アルゴリズムに分岐する（ブロック１３１８）（図４）。ポインタがある場合には、アルゴリズムは、正確に１つのリーフをポイントしているかどうかについて試験する（ブロック１３２０）。ポインタが少なくとも２つのリーフを含むツリーに対するものである場合には、パトリシア・ツリー・アルゴリズムにより、ＳＡ、ＤＰの連結が試験される（ブロック１３２４）。次に、現存のリーフのラベルが一致するかどうかについて、パトリシア・ツリー・アルゴリズムによりＳＡ、ＤＰキーが試験される（ブロック１３３０）。ＳＡ、ＤＰが一致しなかった場合には、アルゴリズムは、大型ツリー挿入アルゴリズムに分岐する（ブロック１３３４）。ＳＡ、ＤＰがツリー内のリーフと一致した場合には、キーのＤＡがリーフ内の１つまたは複数のＤＡ値と比較される（ブロック１３３２）。ブロック１３２０に戻り、ＤＴスロットが正確に１つのリーフをポイントしている場合には、アルゴリズムはキーＳＡ、ＤＰをこのリーフのラベルと比較する（ブロック１３２２）。ＳＡ、ＤＰが一致しない場合には（ブロック１３２６）、アルゴリズムは新規ツリー挿入に分岐する（ブロック１３２８）。ＳＡ、ＤＰが一致する場合（ブロック１３２６）には、アルゴリズムは、リーフ内に１つまたは複数のＤＡ値を含むキーのＤＡの比較に分岐する（ブロック１３３２）。キーＤＡがあるリーフＤＡと一致した場合には（ブロック１３３６）、アルゴリズムはブロック１３０４に戻り、次のパケットを待機する。キーＤＡがどのリーフＤＡとも一致しない場合には、新しいＤＡがリーフ内に格納される（ブロック１３３８）。この場合、アルゴリズムはしきい値アルゴリズムに進む（ブロック１３４０）。
【００８９】
図１４を参照すると、この図は、本発明の挿入アルゴリズムのフローチャート１４００である。アルゴリズムがスタートすると（ブロック１４０２）、直接テーブル（ＤＴ）スロットから新しいリーフへの新しいポインタが生成される（ブロック１４０４）。このリーフにはＳＡおよびＤＰの連結によりラベルが付けられる（ブロック１４０６）。このリーフは、パケットＩＰヘッダ内にＤＡの値を格納するために使用される（ブロック１４０８）。次に、アルゴリズムは、図１３のところですで説明した検出に分岐する（ブロック１４１０）。
【００９０】
図１５を参照すると、この図は、本発明の新しいツリー挿入アルゴリズムのフローチャート１５００である。このアルゴリズムは、１つのもとのリーフがＤＴスロットにすでに取り付けられていて、異なるＳＡ、ＤＰ値を有するがハッシュ値が同じである第２のリーフを追加すべきケースをカバーする。アルゴリズムがスタートすると（ブロック１５０２）、ＤＴスロットと等しいルートを含む新しいツリーが生成される（ブロック１５０４）。１つの分岐がルートに取り付けられる（ブロック１５０６）。２つのＳＡ、ＤＰ値が、この同じスロットにハッシュする。周知のパトリシア・ツリー・アルゴリズムの方法で、２つのＳＡ、ＤＰラベルが異なる第１のビットが発見される（ブロック１５０８）。分岐のところの試験ビットの一方の値は、もとのリーフをポイントしている（ブロック１５０８）。同じビットの他の可能な値は、新しく追加したリーフをポイントしている（ブロック１５１０）。新しく追加したリーフは、ラベルとしてそのＳＡ、ＤＰを有し、ブロック、新しいキーのＤＡを格納する（ブロック１５１０）。次に、アルゴリズムは、検出ブロックに分岐する（ブロック１５１２）。
【００９１】
図１６を参照すると、この図は、本発明の大型ツリー挿入アルゴリズムのフローチャート１６００である。アルゴリズムがスタートすると（ブロック１６０２）、新しい分岐および新しいリーフの既知のパトリシア・ツリー挿入が行われる（ブロック１６０４）。新しいリーフのラベルは、キー・ブロックのＳＡ、ＤＰの連結として示される（ブロック１６０６）。パケットのＤＡは、新しいリーフ・ブロック内に格納される（ブロック１６０８）。次に、アルゴリズムは、検出ブロックに分岐する（ブロック１６１０）。
【００９２】
図１７を参照すると、この図は本発明のしきい値アルゴリズムのフローチャート１７００である。アルゴリズムがスタートすると（ブロック１７０２）、リーフ内に格納しているＤＡ値の数が、通常は８である構成のところで指定されたしきい値と比較される（ブロック１７０４）。（異なる）ＤＡ値の数がしきい値以下である場合には、アルゴリズムは検出に分岐する（ブロック１７０８）。ＤＡ値の数がしきい値より大きい場合には、報告が管理者または管理システムに送られる（ブロック１７０６）。次に、アルゴリズムは検出に分岐する（ブロック１７０８）。
【００９３】
図１８は、それが悪意のあるパケットであるかどうかを判定するために、ＴＣＰ／ＩＰ  ＳＹＮパケットのＳＡとＤＡが関連付けられるデータ構造の図解による表示である。
【００９４】
データ構造１８００は、ＳＡおよびＤＡの、それ故４８ビットの連結からなるキー１８０２の抽出を含む。このデータ構造は、さらに、１６ビットのようなもっと短い索引を生成するために、ハッシュ機能１８０４を適用するステップを含む。索引は、パトリシア・ツリー１８１０のルートであるエントリを識別するために、直接テーブル１８０８に関連して使用される。パトリシア・ツリーは、１８１２、１８１４、１８１６のような１つまたは複数のリーフを有する。各リーフは、直接テーブル・エントリおよび観察した１つまたは複数のＤＡ値にハッシュする全ＳＡ、ＤＰを含む。
【００９５】
今までフローチャートにより本発明を説明してきた。本発明で使用するアルゴリズムを示す他の方法は下記の通りである。
【００９６】
ＳＡ、ＤＰのハッシュの１６ビット（またはこのくらいのビット）は、直接テーブル（ＤＴ）内で索引として使用される。ＤＴスロットは、通常のＦＭスロットであり、リーフをポイントしないこともでき、正確に１つのリーフをポイントすることもでき、または分岐および２つ以上のリーフを含むツリーをポイントすることができる。各リーフは、全パケットＳＡ、ＤＰをＳＡ、ＤＰの正確なパターンと比較する。この場合も、リーフはそのラベルとしてＳＡ、ＤＰを含み、少なくとも１つのできればいくつかのＤＡを含む。
【００９７】
ＳＡ、ＤＰの組合せのハッシュ値を計算した場合に、ＤＴ内のスロットが空であった場合（何もポイントしていない場合）には、ＤＴスロットは、ラベルＳＡ、ＤＰおよび内容ＤＡを含む新しいリーフをポイントするように改訂される。そうでない場合で、ＤＴ内のＳＡ、ＤＰスロットがポインタを有している場合には、リーフまたはツリーまでポインタを追跡する。スロットがツリーをポイントしていた場合には、せいぜい１つの前に発見したリーフが可能なＳＡ、ＤＰと適合するまでの、ＳＡ、ＤＰ内のいくつかのビットの試験を含む。いずれの場合でも、キー内の全ＳＡ、ＤＰおよびリーフ内の全ＳＡ、ＤＰが比較される。これらの全ＳＡ、ＤＰが等しくない場合には、前に発見したキーから新しいキーを区別するために、ＳＡ、ＤＰ内のビットを試験するようにツリーを再構成しなければならない。これらの全ＳＡ、ＤＰが等しい場合には、リーフはキーに本当に対応し、キーのＤＡ値がリーフ内に格納している１つまたはいくつかのＤＡ値と比較される。キーのＤＡ値が前に格納したＤＡと同じである場合には、何もしない。そうでない場合には、キーのＤＡ値がリーフ内に格納している１つまたは複数のＤＡ値に加算される。また、ＤＡ値の新しい全数がしきい値と比較される。この数がしきい値より大きい場合には、パケットはウィルスを含んでいると識別される。
【００９８】
疑似コードで示す下記のサブプログラムを含む本発明の検出アルゴリズム内での検索動作について以下に説明する。
【００９９】
検出
０．次のパケットが到着する。
１．パケットがＴＣＰでない場合には、検出に進む。
２．パケットがＳＮＹでない場合には、削除に進む。
３．パケットのＤＰが許容リスト内に含まれている場合には、検出に進む。
４．パケットのヘッダからのＳＡ、ＤＰの組合せ（キー）がハッシュ機能に送られる。
５．ハッシュ値が直接テーブル・スロットへの索引として使用される。
６．スロットがポインタを有していない場合には（スロットにハッシュするＳＡ、ＤＰを含む現在のセッションがない場合には）、ＤＴ上挿入ステップ０に進む。
７．スロットがツリー（２つ以上のリーフを含む）をポイントしている場合には、ステップ１３に進む。
８．スロットが（正確に）１つのリーフをポイントしている場合には、ＳＡ、ＤＰをリーフのＳＡ、ＤＰと比較する。
９．キーおよびリーフのＳＡ、ＤＰが一致しない場合には、新しいツリー挿入ステップ０に進む。
１０．そうでない場合には、パケットのＤＡをリーフ内の１つまたは複数のＤＡ値と順次比較する。
１１．パケットのＤＡとリーフのあるＤＡが等しい場合には、ステップ０に進む。
１２．そうでない場合には、リーフ内に新しいＤＡを格納する。しきい値に進む。
１３．リーフに達するまでキーのＳＡ、ＤＰ上のツリー内でビット試験分岐を実行する。
１４．キーおよびリーフのＳＡ、ＤＰが一致しない場合には、大型ツリー挿入ステップ０に進む。
１５．そうでない場合には、パケットのＤＡをリーフ内の１つまたは複数のＤＡ値と順次比較する。
１６．パケットのＤＡとリーフのあるＤＡが等しい場合には、ステップ０に進む。
１７．そうでない場合には、リーフ内に新しいＤＡを格納する。しきい値に進む。
ＤＴ上の挿入
０．ＤＴスロットからラベルとしてＳＡ、ＤＰを有する新しいリーフへのポインタを生成し、ＤＡを格納する。
１．検出に進む。
新しいツリーの挿入
０．ＤＴスロットと等しいルートと１つの分岐を含む新しいツリーが生成される。
１．２つのＳＡ、ＤＰの組合せが異なるこれら２つのＳＡ、ＤＰ組合せの２つの連結での第１のビットを発見する。
２．一方のリーフがもとのリーフであり、新しいＳＡ、ＤＰのラベルを有し、新しいキーのＤＡを格納する他方のリーフが追加される、２つのリーフへのビット試験分岐でそのビットが使用される。
３．検出に進む。
大型ツリーの挿入
０．新しいビット試験分岐を挿入するために従来のパトリシア・ツリー・アルゴリズムを使用し、１つのリーフを追加する。
１．新しいリーフは、ラベルとして新しいキーのＳＡ、ＤＰを有し、ＤＡを格納する。
３．検出に進む。
しきい値
０．それによりリーフ内のＤＡの新しい数がしきい値Ｔより大きい場合には、ＳＡからの悪意のあるトラフィックの可能性を報告する。
１．検出に進む。
削除
１．フレーム・カウンタを１だけ増大する。
２．フレーム・カウンタの値をしきい値と比較する。
４．フレーム・カウントがしきい値以下である場合には、検出に進む。
５．フレーム・カウンタ値がしきい値を超えた場合には、ＤＴからすべてのリーフおよびツリーを削除する。
６．フレーム・カウントを０にリセットする。
７．検出に進む。
【０１００】
代替実施形態の場合には、カウントはフレームの代わりに時間間隔であってもよい。すなわち、
【０１０１】
削除
１．時間カウンタを１だけ増大する。
２．時間カウンタの値をしきい値と比較する。
４．時間カウントがしきい値以下である場合には、検出に進む。
５．時間カウンタ値がしきい値を超えた場合には、ＤＴからすべてのリーフおよびツリーを削除する。
６．時間カウントを０にリセットする。
７．検出に進む。
【０１０２】
３．報告アルゴリズム
検出機構から報告を受信した場合には、本発明は下記の応答のうちの１つで反応することができる。
１．管理者に警告し、管理者はおそらく悪意に対する所与のＳＡ、ＳＰ、ＤＡまたはＤＰでトラフィックを調査することができる。
２．許容ＤＰのリストにＤＰ＝スロット値を加算する。
３．同じＳＡ、ＤＡ、ＤＰを含むすべての以降のパケットを排除する。
４．別の方法としては、同じＳＡを含むすべての以降のパケットを排除する。
５．応答１、２、３、４の組合せは時間とともに変化する場合がある。
【０１０３】
本発明の多くの利点のうちの１つは、検出が動的にまたリアルタイムで行われることである。そのため、ネットワーク上のデバイスが被害を被る前に、不正なスパイ行為を検出し、対策を講じることができる。
【０１０４】
今までＴＣＰ／ＩＰプロトコルに関連して本発明を説明してきたが、それを本発明の範囲を制限するものと解釈すべきではない。本発明は、多くの異なるプロトコルを使用する広範な用途に使用される。当業者であれば、他のプロトコルを使用した場合、調査を検出するために本発明の教示を適用することができるだろう。このようなすべての使用方法または用途あるいはその両方は、特許請求の範囲に記載する本発明の範囲内に含まれる。
【０１０５】
本発明の上記説明は例示としてのものであって、本発明を制限するものと解釈すべきではない。本発明の例示としての実施形態について説明してきたが、当業者であれば、本発明の新規な教示および高度の使用から実質的に逸脱することなしに、例示としての実施形態を種々に修正することができることを容易に理解することができるだろう。
【０１０６】
それ故、そのようなすべての修正は、特許請求の範囲に記載する本発明の範囲内に含まれる。
【図面の簡単な説明】
【０１０７】
【図１】ネットワークのおよび検出機構としての本発明の特定のいくつかの潜在的な論理的位置内の高レベルの構成要素である。
【図２】ハードウェアのおよび本発明を動作できるようにするために必要な構成要素の特定のいくつかの潜在的な論理的位置内の高レベルの構成要素である。
【図３】本発明の検出部分のフローチャートである。
【図４】直接テーブル（ＤＴ）内への新しいポインタおよび新しいリーフの挿入に関連する本発明の一部のフローチャートである。
【図５】直接テーブル（ＤＴ）内への新しいパトリシア・ツリーの挿入に関連する本発明の一部のフローチャートである。
【図６】直接テーブル（ＤＴ）内の大型のパトリシア・ツリー内への新しいリーフおよび新しい分岐の挿入に関連する本発明の一部のフローチャートである。
【図７】リーフ内の異なる宛先アドレス（ＤＡ）の数を、しきい値、すなわち本発明の一部と比較するためのフローチャートである。
【図８】検出装置、すなわち本発明の一部をリセットするためのすべてのリーフ、ツリーおよびポインタの周期的削除のフローチャートである。
【図９】本発明を実施することができるネットワーク・プロセッサのブロック図である。
【図１０】ＩＰデータグラム・ヘッダ・フォーマットである。
【図１１】ＴＣＰヘッダ・フォーマットである。
【図１２】本発明の教示によるルックアップ検索構造である。
【図１３】本発明の検出部分のフローチャートである。
【図１４】直接テーブル（ＤＴ）内への新しいポインタおよび新しいリーフの挿入に関連する本発明の一部のフローチャートである。
【図１５】直接テーブル（ＤＴ）内への新しいパトリシア・ツリーの挿入に関連する本発明の一部のフローチャートである。
【図１６】直接テーブル（ＤＴ）内の大型のパトリシア・ツリー内への新しいリーフおよび新しい分岐の挿入に関連する本発明の一部のフローチャートである。
【図１７】リーフ内の異なる宛先アドレス（ＤＡ）の数を、しきい値、すなわち本発明の一部と比較するためのフローチャートである。
【図１８】本発明の教示によるルックアップ・データ構造の図解による表示である。
【図１】
2008507222.tif 000003
【図２】
2008507222.tif 000004
【図３】
2008507222.tif 000005
【図４】
2008507222.tif 000006
【図５】
2008507222.tif 000007
【図６】
2008507222.tif 000008
【図７】
2008507222.tif 000009
【図８】
2008507222.tif 000010
【図９】
2008507222.tif 000011
【図１０】
2008507222.tif 000012
【図１１】
2008507222.tif 000013
【図１２】
2008507222.tif 000014
【図１３】
2008507222.tif 000015
【図１４】
2008507222.tif 000016
【図１５】
2008507222.tif 000017
【図１６】
2008507222.tif 000018
【図１７】
2008507222.tif 000019
【図１８】
2008507222.tif 000020
【国際調査報告】
2008507222.tif 000021
2008507222.tif 000022
2008507222.tif 000023