(57)【要約】      （修正有）【課題】メモリブロックの割り当てを管理する方法及びデバイス、データ伝送ネットワークシステム、コンピュータ可読媒体、並びにコンピュータプログラムの提供。【解決手段】関連するＴＣＰ接続に割り当てられている再組み立てバッファの占有率を測定する関数ｒ（ｔ）で、ＴＣＰ接続に属するあらゆるパケットの受信時に更新される関数ｒ（ｔ）を接続ごとに計算し、対応する関数ｒ（ｔ）に設定された、関数ｒ（ｔ）の２つの異なる状態を定義する少なくとも第１のトリガを含む判定方式に基づいて、ＴＣＰ接続をクローズし、対応するメモリブロックを解放する。【選択図】図５
2008136176.tif 000002
【特許請求の範囲】
【請求項１】
ＴＣＰ処理ユニットを含むＴＣＰネットワークデバイスにおける、ＴＣＰ接続に対するＴＣＰ再組み立てバッファのメモリブロックの割り当てを管理する方法であって、以下のステップ、すなわち、
関連するＴＣＰ接続に割り当てられている前記再組み立てバッファの前記メモリブロックの占有率を測定する関数ｒ（ｔ）であって、前記ＴＣＰ接続に属するあらゆるＴＣＰパケットの受信時に更新される関数ｒ（ｔ）を、接続ごとに計算するステップと、
対応する前記関数ｒ（ｔ）に設定された、前記関数ｒ（ｔ）の２つの異なる状態を定義する少なくとも第１のトリガを含む判定方式に基づいて、ＴＣＰ接続をクローズすることを可能にし、対応する前記メモリブロックを解放することを可能にするステップと
を含む方法。
【請求項２】
前記関数ｒ（ｔ）は、前記関連するＴＣＰ接続に割り当てられているメモリ空間の浪費を表す第１の因数であって、前記ＴＣＰ接続について受信されたＴＣＰパケットのシーケンス内のホールの存在に起因する浪費を表す第１の因数を含む、請求項１に記載の方法。
【請求項３】
前記関数ｒ（ｔ）は、前記関連するＴＣＰ接続に割り当てられている前記メモリ空間を、前記ＴＣＰ接続について許容される最大メモリ空間と比較して表す第２の因数を含む、請求項１または２に記載の方法。
【請求項４】
前記関数ｒ（ｔ）は、
r(t)=[u(t)/(b(t)・S)]p・[b(t)/B]q
として定義され、ここで、
ｕ（ｔ）は、対応するデータが受信されていない割り当て済みメモリブロック内のバイトの割合であり、
ｂ（ｔ）は、前記関連するＴＣＰ接続によって使用されるメモリブロックの個数であり、
Ｂは、１つのＴＣＰ接続に割り当てることができるメモリブロックの最大数であり、
Ｓは、１つのメモリブロックの固定サイズであり、
ｐ及びｑは、決定された値の係数である、請求項１〜３のいずれか一項に記載の方法。
【請求項５】
ｐ及びｑは固定値の係数である、請求項４に記載の方法。
【請求項６】
前記判定方式は、前記関数ｒ（ｔ）に設定されたトリガであって、前記ＴＣＰ接続に関連する少なくとも第１の状態、第２の状態、第３の状態、及び第４の状態を定義するトリガに基づく、請求項１〜５のいずれか一項に記載の方法。
【請求項７】
前記関数ｒ（ｔ）に設定された第１のトリガは、前記関数ｒ（ｔ）が第１のしきい値（ＲＳ）に達した時に、第１の状態（４１）から第２の状態（４２）へ前記ＴＣＰ接続が変化するものである、請求項１〜６のいずれか一項に記載の方法。
【請求項８】
前記関数ｒ（ｔ）に設定された第２のトリガは、前記関数ｒ（ｔ）が、ヒステリシスをもって前記第１のしきい値に対応する第２のしきい値（Ｒｐ）に戻って前記第２のしきい値（Ｒｐ）を通過する時に、前記第２の状態から前記第３の状態（４３）へ前記ＴＣＰ接続が変化するものである、請求項７に記載の方法。
【請求項９】
前記関数ｒ（ｔ）に設定された第３のトリガは、前記関数ｒ（ｔ）が前記第２のしきい値を下回り、前記ＴＣＰ接続が前記第３の状態（４３）になってからの期間（ｔ−ｔｐ）が、前記ＴＣＰ接続が前に前記第２の状態に留まっていた期間（ｔｐ−ｔＳ）と比較して実質的に大きいという条件が満たされる時に、前記第３の状態（４３）から前記第１の状態（４１）へ前記ＴＣＰ接続が変化するものである、請求項８に記載の方法。
【請求項１０】
前記関数ｒ（ｔ）に設定された第４のトリガは、前記ＴＣＰ接続が前記第２の状態（４２）になってからの期間（ｔ−ｔＳ）が第３のしきい値（ＴＳ，Ｍａｘ）を超える時に、前記第２の状態（４２）から前記第４の状態（４４）へ前記ＴＣＰ接続が変化するものである、請求項７〜９のいずれか一項に記載の方法。
【請求項１１】
前記接続は、前記関数ｒ（ｔ）が前記第４の状態（４４）にある時にのみクローズすることができる、請求項１０に記載の方法。
【請求項１２】
前記判定方式は、
前記第２の状態（４２）にある前記ＴＣＰ接続の組を、それらのＴＣＰ接続が前記第２の状態（４２）になってからの時間ｔＳに従って順序付けることと、
利用可能なメモリブロックの個数が定義されているしきい値を下回るごとに、前記第２の状態（４２）にある前記ＴＣＰ接続の組のうち最小のｔＳを有する１つのＴＣＰ接続を閉じることを可能にすることと
を含む、請求項７〜１１のいずれか一項に記載の方法。
【請求項１３】
ＴＣＰ処理ユニットを含むＴＣＰネットワークデバイスにおける、ＴＣＰ接続に対するＴＣＰ再組み立てバッファのメモリブロックの割り当てを管理するデバイス（１００）であって、請求項１〜１２のいずれか一項に記載の方法を実施する手段を備える、デバイス。
【請求項１４】
請求項１３に記載のデバイスを備える、データ伝送ネットワークシステム。
【請求項１５】
請求項１〜１２のいずれか一項に記載の方法を実施する１つ又は２つ以上の命令シーケンスを保持する、コンピュータ可読媒体。
【請求項１６】
プロセッサにとってアクセス可能であり、且つ、前記プロセッサによって実行されると、請求項１〜１２のいずれか一項に記載の方法を前記プロセッサに実施させる１つ又は２つ以上の記憶されている命令シーケンスを含む、コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、包括的には、インターネット等のデータ伝送ネットワークに関する。より具体的には、本発明は、たとえば伝送制御プロトコル（「ＴＣＰ」）パケットの処理を行うためのネットワークシステムの保護に関する。このようなデバイスは、以下ではＴＣＰネットワークデバイスと呼ばれ、ＴＣＰ処理ユニットを含む。
【０００２】
ＴＣＰは、インターネットエンジニアリングタスクフォース（ＩＥＴＦ）のコメント要求（ＲＦＣ）７９３に定義されているように、インターネットの基本プロトコルのうちの１つである。
【０００３】
ＴＣＰの基本的な特徴は、スライディングウィンドウメカニズムに基づいて、順序の揃っていないセグメントの伝送、フロー及び輻輳の制御メカニズム、並びに喪失データの再送をサポートすることにより、安全なトランスポートレイヤを提供することである。ＴＣＰに特有のこれらの機能は、ＴＣＰ処理ユニットが、各接続の状態を記憶する接続ごとのデータ構造体を保持することを必要とする。これらのデータ構造体は、接続コンテキストと呼ばれ、再組み立てバッファ、送信バッファ、スライディングウィンドウメンテナンスパラメータ、タイマ等を備える。
【０００４】
たとえば攻撃といった過酷な状況下では、これらの接続コンテキストは、過度の処理資源、特に過度のメモリ資源を消費する可能性があり、その結果、ＴＣＰ処理ユニットのこの資源を枯渇させる可能性がある。
【０００５】
インターネットの急速な発展によって、ネットワークレイヤよりも上のセマンティックレベルにおいてパケット処理を行うネットワークシステムが必要となってきた。このようなシステムには、トラフィック観測及び／又は解析システム、コンテンツ検査及び変換システム、侵入検知システム（ＩＤＳ）、並びに侵入防止システム（ＩＰＳ）が含まれる。侵入検知システムは、悪意のあるアクティビティの存在を受信者に警告することしかできないという意味で完全に受動型であるのに対して、侵入防止システムは、インライン（すなわち、カットスルー）で動作する。換言すると、侵入防止システムは、ネットワークトラフィックの中間ストリームを解析する。
【０００６】
これらのすべてのシステムの共通の特徴は、高レベルのパケット処理を正確に行うために、システムがトラフィックのフローごとの状態を保持しなければならないということである。インラインシステムであってもエンドポイントシステムであっても、この状態保持タスクのコア部分は、接続確立制御、再組み立て、再送、フロー制御、輻輳制御等のＴＣＰ処理タスクの実施を可能にするコンテキストを、ＴＣＰ接続ごとに保持することにある。
【０００７】
［発明の背景］
現代のデータ伝送システムは、たとえば、バッファオーバーサイジング型の攻撃等、ますます高度化した攻撃を受ける。この種の攻撃は、ネットワークシステムの資源を枯渇させることにある。
【０００８】
確かに、ＴＣＰネットワークデバイスに対して起こり得る攻撃は、多数の偽のＴＣＰ接続をオープンして、一貫していないシーケンス番号を有するセグメントを送信することである。たとえば、攻撃者は、ＴＣＰウィンドウ全体にわたる不連続なシーケンス番号を有する一組の非常に小さなセグメントを送信する可能性があり、ウィンドウボトム（ＢｏＷ（Bottom of Window））に位置するパケットを送信してくる可能性はない。又は、より巧妙に、攻撃者は、ＢｏＷセグメントを非常に低レートで送信する可能性もある。そのコンテキストでは、ＴＣＰネットワークデバイスは、ＴＣＰウィンドウ全体を観測できるように、一組の再組み立てバッファを割り当てるが、それらの再組み立てバッファを決して解放しない。そうすることによって、攻撃者は、制御されたＴＣＰ接続ごとに大きなボリュームのメモリをＴＣＰネットワークデバイスに強制的に割り当てさせる。
【０００９】
その種の攻撃からの損傷を防止するか又は少なくとも制限する多くの努力が行われてきた。これらの多くの努力の結果、さまざまなタイプの答えがもたらされている。
【００１０】
それにもかかわらず、既知の保護技法のいずれも、すべてのタイプの状況で完全に満足できるものでないことが分かる。資源割り当ては、対象とされ得る攻撃に対する或るレベルの回復力を当該機器に提供する必要性と、それらの機器が攻撃を受けていない時にそれらの機器のオペレーションを過度に悪化させない必要性との間のトレードオフの結果として得られるものでなければならない。
【００１１】
［発明の概要］
本発明の目的は、ＴＣＰ処理ユニットを含むＴＣＰ処理デバイスを、上述したタイプの攻撃から保護するための既知の技法に代わるものを提案することである。
【００１２】
このために、本発明の実施の形態は、偽造接続の再組み立てバッファのメモリブロックの割り当てを検出して、このような接続を「キル」する、すなわちクローズすることを可能にする方式に基づいている。この方式は、あらゆるパケットの受信時に更新され、且つ、再組み立てに使用される割り当て済みメモリの使用量を測定する、状態変数の解析に基づいている。
【００１３】
本発明の第１の態様によれば、ＴＣＰ処理ユニットを含むＴＣＰネットワークデバイスにおける、ＴＣＰ接続に対するＴＣＰ再組み立てバッファのメモリブロックの割り当てを管理する方法であって、以下のステップ、すなわち、関連するＴＣＰ接続に割り当てられている再組み立てバッファのメモリブロックの占有率を測定する関数ｒ（ｔ）であって、ＴＣＰ接続に属するあらゆるＴＣＰパケットの受信時に更新される関数ｒ（ｔ）を接続ごとに計算するステップと、対応する関数ｒ（ｔ）に設定された、関数ｒ（ｔ）の２つの異なる状態を定義する少なくとも第１のトリガを含む判定方式に基づいて、ＴＣＰ接続をクローズすることを可能にし、対応するメモリブロックを解放することを可能にするステップとを含む、方法が提案される。
【００１４】
本発明の有利な実施の形態は、従属請求項２〜１２に従って規定される。
【００１５】
本発明の第２の態様は、ＴＣＰ処理ユニットを含むＴＣＰネットワークデバイスにおける、ＴＣＰ再組み立てバッファの割り当てを管理するデバイスであって、第１の態様による方法を実施する手段を備える、デバイスに関する。
【００１６】
本発明の第３の態様は、第２の態様によるデバイスを備えるデータ伝送ネットワークシステムを対象とする。
【００１７】
最後に、本発明の第４の態様及び第５の態様は、それぞれ、第１の態様による方法を実施する１つ又は２つ以上の命令シーケンスを保持するコンピュータ可読媒体と、プロセッサにとってアクセス可能な命令シーケンスであって、当該プロセッサによって実行されると、第１の態様による方法を当該プロセッサに実施させる１つ又は２つ以上の記憶されている命令シーケンスを含むコンピュータプログラム製品とに関する。
【００１８】
［好ましい実施形態の説明］
本発明は、添付図面の図に、限定としてではなく例として示されている。添付図面において、同じ参照符号は同様の要素を指す。
【００１９】
以下の説明は、ＴＣＰネットワークデバイスにおいて偽造ＴＣＰ接続に割り当てられた再組み立てバッファのメモリブロックを検出する、提案された方式の主要な原理を定義することを目的としている。
【００２０】
ＴＣＰネットワークデバイスは、ＴＣＰフローごとに処理機能を実行する一般的なデバイスである。管理された各ＴＣＰ接続について、デバイスは、攻撃されたＴＣＰ接続に属するいくつかのパケットを受信するごとに更新できるコンテキストを割り当てる必要がある。ＴＣＰネットワークデバイスは、双方向から到来するＴＣＰパケットを取得することができる。
【００２１】
ＴＣＰネットワークデバイスは、ＴＣＰエンドポイントサーバとすることができる。その場合、受信されたパケットは再組み立てされ、ＴＣＰペイロードに収容されたバイトストリームが上位レイヤに渡される。ＴＣＰシグナリング（ＴＣＰヘッダ、ＡＣＫ等）は、ＴＣＰ処理ユニットによって生成される。
【００２２】
ＴＣＰネットワークデバイスは、代替的に、各ＴＣＰ接続上の統計を取る監視デバイスとすることもできる。その場合、ＴＣＰパケットは、ＴＣＰ処理ユニットによって解析のみが行われ、その後、ＴＣＰエンドポイントへ転送される。
【００２３】
図１は、ＴＣＰネットワークデバイス１００のアーキテクチャを説明している。
【００２４】
ＴＣＰパケットがネットワークから受信され、下位レイヤ処理がユニット１１１において適用される。次に、ＴＣＰパケットチェックユニット１１２が、ＴＣＰパケットを他のユニットへ送信する前に、ＴＣＰパケットの有効性のチェックを担当する。他のユニットには、ＴＣＰ接続監視ユニット１０３及びＴＣＰ処理ユニット１０４が含まれる。以下の処理機能がユニット１１２によって実行される。
ＴＣＰチェックサムの計算及び比較；
接続識別（アドレス、ポート）；
正しいシーケンス番号；
オープンされた接続に属さないパケットの廃棄。
【００２５】
有効なＴＣＰパケットは、ＴＣＰ接続監視ユニット１１３へ転送される。それ以外のパケットは廃棄される。詳細には、ＳＹＮパケット及びＳＹＮＡＣＫパケットが先行していなかったＡＣＫパケットは拒否される。この機能を達成するために、ＴＣＰパケットチェックユニット１１２は、双方向から通過するＴＣＰパケットにアクセスすることできる。ＴＣＰエンドポイントサーバの場合、ＴＣＰパケットチェックユニット１１２は、ＴＣＰ処理ユニット１１４によって放出されたＴＣＰパケットのシグナリング部分にアクセスすることができる。それらの機能の実施を説明することは、本説明の範囲外であり、また目的外である。
【００２６】
ＴＣＰ接続監視ユニット１１３は、ＴＣＰ処理ユニット１１４へ転送する前に、初期ハンドシェークＡＣＫパケットに応答して、ＴＣＰ接続コンテキストの割り当て又は解放の認可をＴＣＰ処理ユニット１１４に与えることを担当する。それ以外の受信されたＴＣＰパケットは、ＴＣＰ処理ユニット１１４へ直接転送される。このユニットの説明は以下で詳述することにする。
【００２７】
最後に、ＴＣＰ処理ユニット１１４は、当該ＴＣＰ処理ユニット１１４を実装しているデバイスの種類に応じて、受信されたＴＣＰパケットからいくつかのタスクを実行する。１つの共通タスクは、接続コンテキスト管理であり、接続コンテキストの割り当てや解放等のオペレーションが、ＴＣＰ接続監視ユニット１１３によって送信された表示を考慮して行われる。ＴＣＰ処理ユニット１１４のオペレーションを説明することは、本説明の範囲外であり、また目的外である。
【００２８】
従来技術によるシステムで行われることに反して、ＴＣＰ接続は、アルゴリズムに基づいて疑わしいと考えられるときに、ＴＣＰ接続監視ユニット１１３がクローズすることができる。このアルゴリズムの一実施形態は、以下の「オペレーションの原理」の節で提供することにする。
【００２９】
［接続のオープン］
次に、図２について、ＴＣＰ接続確立のオペレーションの詳細を提示することにする。
【００３０】
図２は、ＴＣＰクライアントとＴＣＰサーバとの間のメッセージの交換を図的に示している。このメッセージの交換には、同期メッセージ（ＳＹＮ）の送信、同期確認応答メッセージ（ＳＹＮＡＣＫ）の送信、及び確認応答メッセージ（ＡＣＫ）の送信が含まれる。この図において、文字「ＳＮ」は、「シーケンス番号（Sequence Number）」の略語であり、文字「ＡＮ」は「確認済シーケンス番号（Acknowledged sequence Number）」の略語である。
【００３１】
従来技術では、ＴＣＰ再組み立てバッファの割り当ては、初期ＴＣＰハンドシェークが完了した時点、すなわち、ＳＹＮパケット、ＳＹＮＡＣＫパケット、及びＡＣＫパケットがＴＣＰ送信機とＴＣＰ受信機との間で交換された時点で行われる。従来技術では、ＴＣＰ再組み立てバッファの解放は、ＴＣＰ接続がクローズされた時点（通常の場合）又はデバイスがＴＣＰエンドポイント間で十分なトラフィックが交換されていないことを検出した時点で行われる。
【００３２】
［再組み立てバッファの管理］
次に、図３について、再組み立てバッファのオペレーションをより詳細に説明することにする。
【００３３】
セグメントがデバイスによって受信されると、そのペイロードは、そのシーケンス番号に従って対応する接続再組み立てバッファに挿入される。再組み立てバッファの下限（LowBuffBoundとして参照する）は、セグメントの方向とは逆方向のＡＣＫによって伝達されるＡＣＫシーケンス番号を解釈することによって保持される。この下限は、初期値として、ＴＣＰ接続確立ハンドシェーク中に交渉された値に設定される。
【００３４】
再組み立てバッファの上限（UpBuffBoundとして参照する）は、現在のUpBuffBoundと、ウィンドウサイズ情報及び最後に受信されたＡＣＫによって運ばれたＡＣＫシーケンス番号の合計との最大値である。ＴＣＰネットワークデバイスがＴＣＰ送信機の下流側に位置すると考えると、UpBuffBoundを計算するこの方法によって、UpBuffBoundが送信機のものと常に一致することが保証される。
【００３５】
再組み立てバッファは、一組のｎ個までの個々の固定サイズのメモリブロック（複数可）３１０から構成される。メモリブロック３１０は、メモリブロックのプールからピックアップされる。メモリブロックのプールは、すべてのＴＣＰ接続の間で共有される。メモリブロックは、所与の接続に割り当てられる。すなわち、メモリブロックは、以下のように、セグメントの受信時に、その接続の再組み立てバッファに挿入されるか又は追加される。すなわち：
‐そのセグメントによってカバーされるシーケンス番号の範囲は、再組み立てバッファのシーケンス番号の範囲に属する。すなわち、範囲［LowBuffBound，UpBuffBound］内に含まれる；
‐そのセグメントによってカバーされるシーケンス番号の範囲は、その接続の再組み立てバッファにすでに割り当てられたメモリブロック（複数可）によってカバーされるシーケンス番号の範囲（複数可）にすべてが含まれるわけではない；
‐その接続の再組み立てバッファには、最大でｎ−１個のメモリブロックがすでに割り当てられている。
【００３６】
各接続について、ｎ個のエントリーのポインタテーブル３２０が、再組み立てバッファを構成するメモリブロックへのポインタを保持するのに使用される。このポインタテーブルは、ＴＣＰウィンドウ全体をカバーするように適合されている。これは、ポインタの個数が、ＴＣＰウィンドウのサイズをメモリブロックのサイズ（メモリブロックは固定サイズを有する）によって割ったものに等しいことを意味する。ポインタテーブルは、パケットシーケンス番号について連続している。
【００３７】
バイトストリームが進むと、メモリブロックは解放され、メモリブロックプールに戻される。
【００３８】
各再組み立てバッファには、その再組み立てバッファのホール(hole)についての情報を記憶するデータ構造体が関連付けられる。ホールを取り囲むデータは、以下ではエッジと呼ばれる。上位エッジ及び下位エッジは、それらのエッジが取り囲むホールと比較してそれぞれ大きなシーケンス番号及び小さなシーケンス番号を有する。
【００３９】
パケットは可変サイズを有するので、メモリギャップが形成される。それにもかかわらず、上述したようなポインタテーブルを使用することによって、連鎖リストを管理する必要なく、受信データの再組み立ての管理が可能になる。
【００４０】
［攻撃に対する回復力］
ＴＣＰネットワークデバイスは、攻撃を受ける可能性がある。これらの攻撃は、主として、ＴＣＰ接続状態及びバイトストリームコンテンツを維持するように実装された資源、特にＴＣＰ処理ユニットの再組み立てバッファを対象にする。ＴＣＰネットワークデバイスに対する通常の攻撃は、ＴＣＰ処理ユニットのこれらの資源を枯渇させることにある。
【００４１】
次に、再組み立てバッファを構成する資源を枯渇させることにある資源枯渇攻撃（「バッファオーバーサイジング」としても知られている）を緩和することを目的としたメカニズムを説明することにする。
【００４２】
以下の説明では、ＴＣＰネットワークデバイス内のＴＣＰ処理ユニットによるＴＣＰ接続コンテキストの偽造ＴＣＰ接続への割り当てを検出する方式を提示することにする。
【００４３】
或る種の攻撃は、したがって、多数の接続をオープンし、一貫していないシーケンス番号を有するセグメントを送信することによってメモリブロックのプールを枯渇させることにあるものとすることができる。たとえば、攻撃者は、ＴＣＰウィンドウ全体にわたる不連続なシーケンス番号を有する一組の非常に小さなセグメントを送信する可能性があり、ウィンドウボトム（ＢｏＷ）に位置するパケットを送信してくる可能性はない。又は、より巧妙に、攻撃者は、ＢｏＷセグメントを非常に低レートで送信する可能性もある。
【００４４】
そのコンテキストでは、ＴＣＰネットワークデバイスは、ＴＣＰウィンドウ全体を観測できるように、一組の再組み立てバッファを割り当てるが、それらの再組み立てバッファを決して解放しない。そうすることによって、攻撃者は、図４の再組み立てバッファメモリ使用例によって示すように、制御されたＴＣＰ接続ごとに大きなボリュームのメモリをＴＣＰネットワークデバイスに強制的に割り当てさせる。
【００４５】
図４において、３つの長方形は、所与の接続に割り当てられたバッファメモリの３つのメモリブロック３１、３２、及び３３をシンボル化したものである。ブロック３１、３２、及び３３のそれぞれ１つにおいて、破線エリア(dashed area)は、関連するＴＣＰ接続について受信されていないバイトの範囲（すなわち、ホール）を表している。
【００４６】
次に、この種の攻撃を検出して、実質的なトラフィックが観測されないオープンされた接続を「キル」する（すなわち、クローズする）ことを可能にするメカニズムを説明することにする。このメカニズムは状態変数の解析に基づいている。この状態変数は、あらゆるパケットの受信時に更新され、再組み立てに使用される割り当てられたメモリの使用量を測定するものである。
【００４７】
［オペレーションの原理］
ｒ（ｔ）を、再組み立てバッファの占有率の変化（dynamic）を測定する関数であるとする。この関数は、たとえば、０と１との間に含まれる値を取ることができる。この関数が１に近いとき、この関数は、占有率が低いという特徴を示し、したがって、ＴＣＰネットワークデバイスが攻撃を受けている可能性があるという特徴を示す。逆に、この関数が０に近いときは、この関数は、メモリブロックがほとんど接続に割り当てられていないことを反映し、メモリブロックは十分に満たされている（ホールをほとんど含んでいない）ことを反映する。通常、ｒ（ｔ）は、セグメントが順序正しく受信されるＴＣＰ接続については０に等しくなるべきである（ホールがない）。
【００４８】
さらに、ｂ（ｔ）を、接続によって使用されるメモリブロックの個数であるとし、Ｂを、１つのＴＣＰ接続に割り当てることができるブロックの最大数であるとし、Ｓを、１つのメモリブロックの固定サイズであるとする。
【００４９】
さらに、ｕ（ｔ）を、対応するデータが受信されていない割り当て済みブロック内のバイトの割合であるとする（すなわち、ホールである）。
【００５０】
ｒ（ｔ）は、
r(t)=[u(t)/(b(t)・S)]p・[b(t)/B]q          （１）
として定義されることになる。ここで、ｐ及びｑは、この式の双方の因数に異なる重みを与えるように選ばれた係数である。第１の因数は、ホールによるメモリの浪費を測定する。第２の因数は、その接続に割り当てられたメモリを、許容される最大値と比較して表したものである。上記関係（１）によって与えられるｒ（ｔ）の定義でこれらの２つの因数を結合することによって、双方のパラメータを考慮することが可能になる。
【００５１】
攻撃検出は、ｒ（ｔ）に設定されたトリガに基づいている。単純なしきい値比較は十分でない場合があるので、好ましくは、４つの状態が接続ごとに定義される。これらの状態は、それぞれ「無害」（Innocuous）、「嫌疑」（Suspicious）、「審査」（Probation）、及び「有罪」（Guilty）と示される。
【００５２】
接続がオープンされるとき、対応する関数ｒ（ｔ）の状態は「無害」に初期化される。ｒ（ｔ）が所定のしきい値ＲＳよりも小さい限り、接続は「無害」状態に留まる。ＲＳを超えると、状態は「嫌疑」に変化する。接続が「嫌疑」状態に入る時刻はｔＳによって示される。
【００５３】
接続は、ＴＳ，Ｍａｘで示されるあまりも長い期間この状態に留まる場合、潜在的に有害であるとみなされる。このような場合には、接続状態は「有罪」に変化し、接続をクローズすることができる。この条件によって、接続のウィンドウボトムの進行が、接続のウィンドウエンド（End of Window）と比較してあまりにも遅い接続は、本質的に検出されてクローズされることになる。なお、上記ウィンドウボトム及び上記ウィンドウエンドは、その接続の受信された有効なＴＣＰパケットの組の中で、それぞれ最小のシーケンス番号（ＳＮ）及び最大のシーケンス番号として定義される。
【００５４】
一方、「嫌疑」状態で、ｒ（ｔ）がしきい値ＲＰ（ＲＰ＜ＲＳ）よりも小さくなった場合、状態は「審査」に変化する。言い換えれば、ＲＰは、ヒステリシスをもってＲＳに対応するしきい値である。接続が「審査」状態に入る時刻は、ｔＰで示される。
【００５５】
ｒ（ｔ）が「審査」状態で再びＲＳよりも大きくなった場合、接続は、「嫌疑」状態に戻る。一方、接続が（「嫌疑」状態に留まっていた時間と比較して）かなり長い時間「審査」状態に留まる場合、接続は無害であることが証明され、「無害」状態に戻る。このイベントは、「嫌疑」の期間と「審査」の期間とを比較する条件
(t-tP)/(tP-tS)>VN
によってトリガすることができる。ここで、ＶＮは、接続状態をリセットする或る柔軟性を導入する固定値である。
【００５６】
言い換えれば、ｒ（ｔ）がＲＰを下回り、且つ、接続が「審査」状態になってからの期間ｔ−ｔｐが、接続が前に「嫌疑」状態に留まっていた期間ｔｐ−ｔＳと比較してかなり大きいという条件が満たされる時、ＴＣＰ接続が「審査」状態から「無害」状態へ変化するトリガが関数ｒ（ｔ）に設定される。
【００５７】
図５の状態図は、上述した接続オートマトンを要約している。この図は、「無害」、「嫌疑」、「審査」、及び「有罪」として参照される接続状態間の展開を与えている。この図において、
ＲＳ及びＲＰは、ｒ（ｔ）についてのしきい値であり、ＲＰ<ＲＳであり；
ＴＳ，Ｍａｘは、接続が、「有罪」状態に変化してクローズすることが可能になる前に、（「無害」状態に戻ることなく）「嫌疑」状態又は「審査」状態に留まることができる最大時間であり；
ＶＮは、「審査」期間と「嫌疑」期間との間のしきい値比であり、「審査」期間はｔ−ｔｐによって定義され、「嫌疑」期間はｔｐ−ｔＳによって定義され；
ｔＳは、オートマトンが「嫌疑」状態に入った最初の時刻であり、接続が「無害」状態に戻った時にリセットされ；
ｔｐは、オートマトンが「審査」状態に入った最後の時刻である。
【００５８】
図６の例は、ＴＣＰ再組み立てバッファにホールを誘発するエラー及び再送を経験する接続の状態展開を示している。エラーが回復すると、ｒ（ｔ）は０に戻り、接続状態は「無害」にリセットされる。
【００５９】
第２の例は、図７によって示されており、攻撃者によって制御される接続がどのようにキルされるかを示している。二重のしきい値の使用及びＶＮ条件によって、接続は、攻撃者がいくつかのバッファを頻繁に解放していても除去される。
【００６０】
［拡張］
このメカニズムを実施し、且つ、このメカニズムをＴＳ，Ｍａｘ値にそれほど依存しないようにする拡張を追加することができる。確かに、このパラメータを選ぶことは容易ではない。このパラメータがあまりにも低い場合、いくつかの無害な接続がクローズされるはずである（これは、フォールスアラームに等しい）。逆に、このパラメータがあまりにも高い場合、接続をクローズするのがあまりにも遅くなり、攻撃者は、ＴＳ，Ｍａｘ内に多数の接続をオープンすることによって防御メカニズムを依然として迂回できるので、この方式は非効率的なものとなる。
【００６１】
この拡張によれば、ＥＳを、「嫌疑」状態にあるＴＣＰ接続の組とする。この組において、接続はｔＳに従って順序付けられる。利用可能なメモリブロックの個数が、定義されたしきい値Ｈを下回るごとに、ＥＳに属する最小のｔＳを有する接続がクローズされ、そのメモリブロックが解放される。この方式によって、もっとも疑わしい接続がクローズされることになる。
【００６２】
この拡張は、２分木を使用してｔＳに従いＥＳに属する接続をソートすることにより実施することができる。そして、ＴＣＰネットワークデバイスが攻撃を受けているとき、木のルートの接続がクローズされる。
【００６３】
［実装］
上記アルゴリズムは、メモリをほとんど必要とせず（状態用に１つの変数、ｔｓ用に１つの変数、及びｔｐ用に１つの変数の３つの状態変数しか必要とされない）、計算をほとんど必要としない（ｒ（ｔ）を計算するのに使用される係数ｐ及びｑは、実施を簡単にするために固定値とすることができる）ので、パケットベースで容易に実装することができる。
【００６４】
本発明は、ハードウェア、ソフトウェア、又はハードウェア及びソフトウェアの組み合わせで実施することができる。本明細書で説明した機能を実行するように適合されたあらゆるプロセッサ、コントローラ、又は他の装置が適している。
【００６５】
また、本発明は、コンピュータプログラム製品に具現化することもできる。コンピュータプログラム製品は、本明細書で説明した方法の実装を可能にするすべての機能を含み、情報処理システムにロードされると、これらの方法を実行することができる。本文脈におけるコンピュータプログラム手段又はコンピュータプログラムは、情報処理能力を有するシステムに特定の機能を直接実行させるか、又は、以下のａ）別の言語への変換のいずれか又は双方の後に実行させることを目的とした一組の命令の、あらゆる言語、コード、又は表記によるあらゆる表現を意味する。このようなコンピュータプログラムは、コンピュータ可読媒体又はマシン可読媒体に記憶することができる。この媒体は、データ、命令、メッセージ又はメッセージパケット、及び他のマシン可読情報を当該媒体から読み出すことを可能にする。コンピュータ可読媒体又はマシン可読媒体には、ＲＯＭ、フラッシュメモリ、ディスクドライブメモリ、ＣＤ−ＲＯＭ、及びそれ以外の永久ストレージ等の不揮発性メモリが含まれ得る。加えて、コンピュータ可読媒体又はマシン可読媒体には、たとえば、ＲＡＭ、バッファ、キャッシュメモリ、ネットワーク回路等の揮発性ストレージも含まれ得る。さらに、コンピュータ可読媒体又はマシン可読媒体には、このようなコンピュータ可読情報又はマシン可読情報の読み出しをデバイスに可能にする、有線ネットワーク又は無線ネットワークを含むネットワークリンク及び／又はネットワークインターフェース等の一時的な状態の媒体(transitory state medium)のコンピュータ可読情報又はマシン可読情報も含まれ得る。
【００６６】
本発明の好ましい実施形態であると現在考えられているものを図示して説明してきたが、本発明の真の範囲から逸脱することなく、さまざまな他の変更を行うことができ、均等物を代替することができることが当業者に理解されよう。
【００６７】
詳細には、ＴＣＰ接続コンテキストの管理について本発明を説明してきたのに対して、他のデータ伝送プロトコルも、本発明の利点から好都合に利益を得ることができる。
【００６８】
加えて、本明細書で説明した中心となる発明概念から逸脱することなく、特定の状況を本発明の教示に適合させるために多くの変更を行うこともできる。さらに、本発明の一実施形態は、上述した特徴のすべてを含むとは限らない。したがって、本発明が、開示した特定の実施形態に限定されるものでないことが意図されており、本発明は、添付の特許請求の範囲の範囲内に含まれるすべての実施形態を含むことが意図されている。
【図面の簡単な説明】
【００６９】
【図１】ＴＣＰネットワークデバイスのアーキテクチャを示す図である。
【図２】ＴＣＰ接続のオープン及びオペレーションを示すチャートである。
【図３】再組み立てバッファ管理を示す図である。
【図４】ＴＣＰネットワークデバイスの再組み立てバッファにおけるメモリブロックの占有を示す図である。
【図５】本発明の一実施形態による関数ｒ（ｔ）に関連する状態を示す状態図である。
【図６】ＴＣＰネットワークデバイスのオペレーションの第１の例における関数ｒ（ｔ）のグラフである。
【図７】ＴＣＰネットワークデバイスのオペレーションの第２の例における、関連するＴＣＰ接続のクローズにつながる関数ｒ（ｔ）のグラフである。
【図１】
2008136176.tif 000003
【図２】
2008136176.tif 000004
【図３】
2008136176.tif 000005
【図４】
2008136176.tif 000006
【図５】
2008136176.tif 000007
【図６】
2008136176.tif 000008
【図７】
2008136176.tif 000009
【外国語明細書】
2008136176.tif 000010
2008136176.tif 000011
2008136176.tif 000012
2008136176.tif 000013
2008136176.tif 000014
2008136176.tif 000015
2008136176.tif 000016
2008136176.tif 000017
2008136176.tif 000018
2008136176.tif 000019
2008136176.tif 000020
2008136176.tif 000021
2008136176.tif 000022
2008136176.tif 000023
2008136176.tif 000024
2008136176.tif 000025
2008136176.tif 000026
2008136176.tif 000027
2008136176.tif 000028
2008136176.tif 000029
2008136176.tif 000030