(58)【調査した分野】(Int.Cl.,DB名)
前記工程Cは、既知のネットワークノードおよび前記ネットワークノードのネットワークアドレスの危険度を格納するデータベースに従って危険度をネットワークノードに割り当てる工程をさらに含む、請求項1に記載の方法。
前記ネットワークノードから前記コンピューティングデバイスへの前記データ送信が制限された期間に基づいて、前記データベース内に格納されている危険度を更新する工程をさらに含む請求項2に記載の方法。
前記工程Dは、前記フィルタに関連する基準が前記データ送信パラメータによって満たされているという判定に基づいて前記ネットワークノードの危険度を増大させる工程を、さらに含む請求項1に記載の方法。
前記プロセッサは、前記構成Cが、既知のネットワークノードおよび前記ネットワークノードのネットワークアドレスの危険度を格納するデータベースに従って危険度をネットワークノードに割り当てるようにさらに構成されている、請求項7に記載のシステム。
前記プロセッサは、前記ネットワークノードから前記コンピューティングデバイスへの前記データ送信が制限された期間に基づいて、前記データベース内に格納されている危険度を更新するようにさらに構成されている、請求項8に記載のシステム。
前記プロセッサは、前記データ送信パラメータに基づいて前記フィルタの繰り返しトリガを検出した場合に、フィルタの存続期間を延長するようにさらに構成されている請求項7に記載のシステム。
前記プロセッサは、前記構成Dが、前記フィルタに関連する基準が前記データ送信パラメータによって満たされているという判定に基づいて前記ネットワークノードの危険度を増大させるようにさらに構成されている請求項7に記載のシステム。
サーバを分散型サービス妨害攻撃(DDoS攻撃)から保護するネットワークトラフィックのフィルタリングのためのコンピュータ実行可能命令を含む非一時的コンピュータ可読記憶媒体であって、命令A〜命令Eを含み、
前記命令Aは、コンピューティングデバイスがDDoS攻撃の対象となったことを検出した場合に、ネットワークノードから前記コンピューティングデバイスへのデータを傍受させ、
前記命令Bは、前記傍受されたデータに基づいて1つまたは複数のデータ送信パラメータを決定し、
前記命令Cは、前記ネットワークノードに危険度を割り当てさせ、前記危険度は、前記ネットワークノードから前記コンピューティングデバイスに送信されるデータがDDoS攻撃を実行するために使用されている可能性を表す数値であり、
前記命令Dは、フィルタの適用に基づいて前記ネットワークノードの前記危険度を変更させ、前記フィルタは前記データ送信パラメータに基づいて選択され、前記フィルタは、期間満了後に前記危険度の変更が戻される持続期間を有し、
前記命令Eは、前記ネットワークノードの前記危険度が閾値を超えると判定した場合に、前記ネットワークノードの前記危険度が前記閾値を超えた程度に基づいて、前記ネットワークノードと前記コンピューティングデバイスとの間のチャネル容量を制限させる、
記憶媒体。
前記命令Cは、既知のネットワークノードおよび前記ネットワークノードのネットワークアドレスの危険度を格納するデータベースに従って危険度をネットワークノードに割り当てさせる命令をさらに含む、請求項13に記載の記憶媒体
前記ネットワークノードから前記コンピューティングデバイスへの前記データ送信が制限された期間に基づいて、前記データベース内に格納されている危険度を更新する命令をさらに含む、請求項14に記載の記憶媒体。
前記データ送信パラメータに基づいて前記フィルタの繰り返しトリガを検出した場合に、フィルタの存続期間を延長する命令をさらに含む、請求項13に記載の記憶媒体。
前記命令Dは、前記フィルタに関連する基準が前記データ送信パラメータによって満たされているという判定に基づいて前記ネットワークノードの危険度を増大させる命令をさらに含む、請求項13に記載の記憶媒体。
【発明を実施するための形態】
【0024】
本明細書では、例示的な態様は、DDoS攻撃の検出のためのトラフィックフィルタリングのシステム、方法、及びコンピュータプログラム製品に関連して説明される。当業者であれば、以下の説明は例示的なものにすぎず、決してこれらに限定することを意図するものではないことを理解するであろう。他の態様は、本開示の恩恵を受ける当業者には容易に理解されるであろう。添付の図面おいて、例示的な態様の実装についての詳細が参照される。同じ参照インジケータは、図面全体に渡って可能な限り使用され、以下の記載は、同じ又は同様のアイテムを参照する。
【0025】
本開示におけるDDoS攻撃の検出時のトラフィックフィルタリングシステムは、集積マイクロ回路(特定用途向け集積回路、ASIC)などのハードウェアの使用によって実現される実世界のデバイス、システム、コンポーネントおよびコンポーネントのグループによって実現されてもよく、またはフィールドプログラマブルゲートアレイ(FPGA)によって実現されてもよく、または例えば、マイクロプロセッサシステムおよびプログラム命令セットのようなソフトウェアとハードウェアの組み合わせの形で実現されてもよく、またニューロシナプスチップによって実現されてもよい。このようなシステム手段の機能は、ハードウェアのみによって、また、システム手段の機能の一部がソフトウェアによって実現され、一部がハードウェアによって実現される組み合わせの形態で実現されてもよい。特定の変形実施形態では、手段の一部または全部を(
図4に示すような)汎用コンピュータのプロセッサ上で実行することができる。システムコンポーネントは、単一のコンピューティングデバイス内で実現されてもよいし、いくつかの相互接続されたコンピューティングデバイス間で分散し実現されてもよい。
【0026】
本明細書では、ネットワークノードは、(インターネットなどの)データ伝送ネットワークに接続され、そのネットワークによってデータを送信することができる(コンピューティングデバイスを含む)電子デバイスを記述するために用いられる。ネットワークノードの例は、パーソナルコンピューティングデバイス、モバイルコンピューティングデバイス、サーバ、ネットワークルータおよびスイッチ、またはデータ送信ネットワークによってデータを送信することができるその他のいかなるデバイス(例えば、IPカメラ、テレビセット、冷蔵庫、IoT(Internet of Things)デバイスなど)が含まれる。
【0027】
送信されるデータのパラメータ(送信データパラメータ)は、本明細書では、データ送信に関与するネットワークノード自体の情報特性を含むネットワークノードによって送信されているデータの特性情報を記述するために使用される。送信データパラメータは、(スタックモデルTCP /IPまたはOSI/ISOのいずれかのレイヤで)送信データのパケットのヘッダと、同じ内容のパケットを含むパケットの頻度(たとえば、1秒間に送信されたTCPパケットの数)からのデータであってよい。送信データパラメータの例は、少なくとも、ネットワークノードのIPアドレス、データ送信に使用されるネットワークノードのネットワークポート、ネットワークノードのMACアドレス、(例えば、単位時間当たりに)送信されるデータのHTTPパケットのセット、送信されるデータのTCPパケットのセット、送信されるデータのIPパケットのセット、任意の他のデータ送信プロトコルのパケットのセット、(例えば、単位時間当たりに)確立された接続の数、ネットワークノードとコンピューティングデバイスとの間で1秒間に送信されるPOSTリクエストの数、確立されたTCP接続の数、および前述のパラメータの派生などである。
【0028】
本明細書では、ネットワークノードの危険度は、ネットワークノードからコンピューティングデバイスに送信されるデータがDDoS攻撃を実行するために使用されている可能性を記述するために使用される。いくつかの例示的な態様では、危険度は、量または数値として表すことができ、例えば、数値が高いほど可能性が高くなる。送信されるデータのパラメータに少なくとも1つのフィルタを適用することによって、ネットワークノードの危険度を変更することができる。フィルタは、いくつかの基準と共に、ネットワークノードの危険度を変更するなどのアクションのセットに対応するルールの形で実現可能なソフトウェアコンポーネントであり、送信されるデータのパラメータがフィルタの基準を満たす場合に実行される。ネットワークノードの危険度の変化はすべて、その存続期間が満了するとフィルタの助けを借りてその変更がキャンセルされる。
【0029】
例示的な態様によるDDoS攻撃の検出のためのトラフィックフィルタリングのシステム110のブロック図を示す。また、
図1は、システム110に関連するエンティティも示し、当該エンティティは、ネットワークノード101、DDoS攻撃を受けているコンピューティングデバイス140、ネットワークノード101がコンピューティングデバイス140にデータを送信するためのデータ伝送ネットワーク105を含む。トラフィックフィルタリングシステム110は、傍受モジュール120と、傍受モジュール120に通信可能に接続された度数決定モジュール125と、度数決定モジュール125に通信可能に接続されたネットワークノードのデータベース135と、度数決定モジュール125に通信可能に接続されたブロッキングモジュール130とを含む。本開示は、特にDDoS攻撃を検出時のトラフィックフィルタリングシステムを説明するが、本開示の態様は、一般的なサービス妨害(DoS)攻撃、または他の形態のサイバー攻撃にまで拡張され得る。
【0030】
コンピューティングデバイス140は、DDoS攻撃下にある(すなわち、DDoS攻撃を実行する複数のネットワークノードによって攻撃されている)コンピューティングデバイスである。システム110は、データ伝送ネットワーク105を介してコンピューティングデバイス140によって受信されているデータの分析に基づくものを含むサービス妨害攻撃を検出する様々な既知の技術を使用しているコンピューティングデバイス140がDDoS攻撃を受けていることを検出するように構成することができる。コンピューティングデバイス140は、一般的に、データ送信ネットワーク105に接続された任意のコンピューティングデバイスであってよい。1つの例示的な態様では、コンピューティングデバイス140は、ウェブサーバ、電子メールサーバまたはファイル転送(ftp)サーバなどの別のプロセッサにサービスを提供するサーバまたはプロセッサである。さらに別の例示的な態様では、コンピューティングデバイス140はパーソナルコンピューティングデバイス(モバイルコンピューティングデバイスを含む)である。
【0031】
説明を簡単にするために、ネットワークノード101はパーソナルコンピューティングデバイス、例えばパーソナルコンピュータ(ただし、述べられた一般化の文脈では、ネットワークノードという用語の定義におけるすべてのプロパティおよびデータを有する)であってよい。
【0032】
ネットワークノード101は、データ伝送ネットワーク105、およびトラフィックフィルタリングシステム110のコンポーネントを介して、コンピューティングデバイス140に通信可能に接続されてよい(すなわち、コンピューティングデバイス140とデータを交換する)。一般的に、ネットワークノード101コンピューティングデバイス140へのDDoS攻撃の条件の下では、(例えば、多数のデータ送信デバイスを含むことができる)ネットワーク105を介して、コンピューティングデバイス140に(103で示すように)直接通信可能に接続することができる。しかし、コンピューティングデバイス140に対するDDoS攻撃の条件の下で、デバイス140に送信されるデータは、フィルタリングデバイスに(104で表されるように)リダイレクトされる。すなわち、ルーティングテーブルを置き換えるなど、ネットワークトラフィックをリダイレクトするための既知の方法のうちのいずれか1つを使用してトラフィックフィルタリングシステム110にリダイレクトされる。したがって、ネットワークノード101によってコンピューティングデバイス140に送信されるすべてのデータは、トラフィックフィルタリングシステム110に行き着く。いくつかの態様では、コンピューティングデバイス140からネットワークノード101に送信されるデータも、システム110に行き着く。
【0033】
一般的に、ネットワークノード101群は、同時にデータをコンピューティングデバイス140に送信することができる(そして、デバイス140からの応答を待ち、受信する)。しかし、コンピューティングデバイス140が(任意の適切な方法の助けにより上記のように)DDoS攻撃を受けていることが検出された場合、デバイス140にデータを送信する特定のネットワークノードがこの攻撃に参加しており、他のノードは参加していない可能性がある。そのような場合、システム110のタスクは、攻撃に使用されているデータの送信をブロック(または少なくとも制限)することである。本開示は、ネットワークノード101とコンピューティングデバイス140との間のデータ交換、および続いて行われるの送信されるデータの解析を、DDoS攻撃に使用されるデータの送信に対するデバイス140の保護の目的で検討する。すなわち、ネットワークノード101によるコンピューティングデバイス140へのデータの送信を制限することによって実行される。ここで、そして以下で、データ送信は、httpリクエストにおけるような特定の情報の送信だけでなく、接続を確立するためのデータの送信を含むデータの送信、およびDDoS攻撃を実行するための送信を意味する(大量に送信される通常のリクエストがDDoS攻撃を実行するために頻繁に使用されるため)。ネットワークノード101の部分に対してDDoS攻撃を実行するために、データ送信は、例えば、HTTPフラッド(すなわち、比較的短い時間間隔の間に大量のデータを送信する)、ICMP(インターネットコントロールメッセージプロトコル)フラッド、UDP(ユーザーデータグラムプロトコル)フラッド、およびSYN(すなわち、TCP交換の同期メッセージ)フラッドなどの形式を想定することができる。
【0034】
1つの例示的な態様では、傍受モジュール120は、ネットワークノード101からコンピューティングデバイス140に到着する(すなわち、送信される)データを傍受するように構成されうる。傍受を実行するために、モジュール120は、ネットワークノード101からコンピューティングデバイス140に送信されるすべてのデータへのアクセスを取得するように、ルータまたはプロキシサーバの形態で実現されてもよい。その後、傍受モジュール120は、送信されたデータのパラメータを決定する。傍受モジュール120は、送信されているデータの以下のパラメータを(上記のデータパラメータの例に加えて)決定することができる。
・ネットワークノード101のIPアドレス。
・1秒間に送信されるSYNパケットの数。
・1秒間に確立されるTCP接続の数。
・確立されたTCP接続の数。
・1秒間に送信されるバイト数:
・1秒間に送信されるパケットの数。
・1秒あたりに送信されるGETリクエストの数。
・1秒あたりに送信されるPOSTリクエストの数。
・1秒あたりに送信されるHEADリクエストの数。
・1秒あたりに(TLS/SSLを使用して)確立される保護された接続の数。
・1秒間に送信される(GET、POST、およびHEADを除く)その他のHTTPリクエストの総数。
・ネットワークノード101によってアクセスされているURL。
・上記のURLに1秒間に送信されるリクエストの数。
・コンピューティングデバイス140に送信されるリクエストの総数。
・コンピューティングデバイス140に送信されるリクエストの総数に対するUser−Agentヘッダーリクエストの一意の値の数の比率。
【0035】
送信されるデータの各パラメータは、その中で決定されるデータ送信プロトコルによって特徴付けられる(例えば、1秒間に送信されるSYNパケットの数については、その中で決定されるプロトコルはTCPである)。データ送信の傍受の間に決定される送信データパラメータは、傍受モジュール120によって度数決定モジュール125に送られる。送信データパラメータは、一定の時間間隔で送信されるデータに基づいて決定されてもよいことに留意すべきである。例えば、1秒あたりに送信されるパケットの数については、例えば、10、20または30秒でパケット総量を計算することができ、このパケット量は前述のパケット数が経過した秒数で除算される。いくつかの例示的な態様では、所与の時間間隔内のある量の値(例えば、毎秒送信されるパケットの数)に関連するパラメータの代わりに、傍受モジュール120が送信されるデータのいくつかのパラメータを決定することができる。決定されるいくつかのパラメータは、例えば、10秒を超えてカウントされる1秒あたりに送信されるパケットの数、当該10秒間のパケット数を10で割った値、20秒を超えてカウントされる1秒あたりに送信されるパケットの数、30秒を超えてカウントされる1秒あたりに送信されるパケットの数などである。そのような場合、送信されるデータのカウントされるパラメータの各々は、別個の独立したパラメータである。さらに別の例示的な態様において、傍受モジュール120は、1秒あたりに送信されるパケット数または1秒あたりのGETリクエスト数などの単位時間当たりの(リクエストの送信、バイトの送信、TCP接続の確立などの)特定のイベントの数(換言すれば、レート)に関連するデータ送信のパラメータを計算してもよく、Token Bucketアルゴリズムに基づいて行われる。所定サイズのバッファが決定され(パケットの送信、リクエスト、GETリクエストなどの上記イベントの数によって算出される「バケットサイズ」)、レートはこのバケットを充填する時間に対するバケットサイズの比として決定される。バケットの充填時間は、バケットのサイズに等しい数のイベントが発生する時間である。
【0036】
度数決定モジュール125は、ネットワークノード101の危険度を決定するように構成され得る。度数決定モジュール125は、ネットワークノードの危険度の決定するために、少なくとも2つの工程、すなわち、ネットワークノードのデータベース135によるネットワークノードに危険度を割り当てる工程、および、送信されるデータ(傍受モジュール120によって送信されるデータ)のパラメータに基づいてネットワークノードの危険度を変更する工程、が実行される。
【0037】
コンピューティングデバイス140にデータを送信する対応するネットワークノード101にネットワークノードの危険度を割り当てるために、度数決定モジュール125は、ネットワークノードのデータベース135に対して要求を送り、当該要求は少なくともネットワークノード101のIPアドレスを含む。この要求に対して、ネットワークノードのデータベース135は、10または46などのネットワークノード101のIPアドレスに対応するネットワークノードの危険度を度数決定モジュール125に返す。ネットワークノードのデータベース135がネットワークノード101のIPアドレスに対応するネットワークノードの危険度を有していない場合、度数決定モジュール125はネットワークノード101に0などの「デフォルト値」を割り当てることができる。信頼できるネットワークノード101、すなわちDDoS攻撃の一部としてコンピューティングデバイス140へのデータの送信に関与する可能性が低いネットワークノード101の場合、ネットワークノードのデータベース135は、当該ネットワークノードの危険度を後の変更時に設定された閾値を故意に超えることができないようにすることができる。このような「信頼できる」ネットワークノード101のネットワークノードの度数は、前述の「デフォルト値」、例えば−1000または−100,000などより低く設定される。信頼できるネットワークノード101は、例えば、「192.168...」で始まるサブネットに対応するものと同様に、例えば、信頼できるエンティティおよび組織(例えば、Google(登録商標)、Microsoft(登録商標)、Yandex(登録商標)および他のもの)に属し、管理され、または関連付けられた既知のサーバのIPアドレスとIPアドレスが一致するネットワークノード101であってもよい。いくつかの例示的な態様では、ネットワークノードのデータベース135は、サブネットのネットワークノード101のすべての列挙されたIPアドレスを記憶するのではなく、複数のIPアドレスを表す1つ以上のマスク(例えば、「192.*.*.」「128.*.*.*」)を格納し得る。
【0038】
「信頼できる」ネットワークノード101の格付けに加えて、一般的な場合のネットワークノードのデータベース135は、それぞれがIPアドレス(またはマスク)によって特徴付けられる任意のネットワークノード101に関連する危険度を格納するように構成することができる。一般的に、ネットワークノードのデータベース135に格納された情報は、コンピュータセキュリティの分野の専門家または他の有資格者によってその中に配置される。例示的な一態様では、ネットワークノードの危険度に関する情報は、システム110内ではなく、例えばリモートサーバ上のシステムの外部に保持される。この場合、度数決定モジュール125は、このリモートサーバにリクエストを行うことによって、ネットワークノードの危険度をネットワークノード101に割り当てる。
【0039】
度数決定モジュール125は、危険度をネットワークノード101に割り当てる以外に、ネットワークノード101に関連する危険度を(データベース135の助けを借りて得られた値と比較して)上下何れかの方向に変更する(すなわち、増加または減少させる)ように構成することができる。いくつかの例示的な態様では、度数決定モジュール125は、ネットワークノード101の危険度を変更するために1つまたは複数のフィルタを使用することができる。上記のように、フィルタは、システム110のソフトウェアコンポーネントであり、基準のセットと動作のセットとをマッチングさせるルールの形で実装され得る。度数決定モジュール125は、送られるデータのパラメータがフィルタの基準を満たす場合、ネットワークノード101の危険度を変更することができる(換言すれば、対応するフィルタがトリガされた場合に実行される)。フィルタによるネットワークノード101の危険度の各変更は、対応する有効期間または持続期間を有し、満了後にその変更がキャンセルされるか、戻され(換言すれば、度数が戻され)てよい。例えば、ネットワークノードの危険度が、フィルタの使用の結果として値Xだけ増加した場合、この変更の有効期間の満了後、度数は同様の値Xだけ減少する。
【0040】
1つの例示的な態様では、フィルタは、TCP、IP、HTTPまたはHTTPSなどのデータ伝送プロトコルによって特徴付けられ、また「ポート80」などの接続ポートによっても特徴付けられ得る。これらの特徴は、指定されたプロトコルを使用した指定されたポートにおけるネットワーク接続でネットワークノード101によって送信されたデータから得られる、送信されるデータのパラメータにのみフィルタを適用可能にする。
例えば、フィルタが「TCP−ポート80」として特徴付けられている場合、フィルタは、80ポートを使用したTCPデータ送信プロトコルのコンテキストでネットワークノード101によって送信されたデータから決定された送信データのパラメータにのみ適用可能である。使用されるフィルタの例は次の通りである。
・フィルタ1:1秒あたりに送信されるSYNパケットの数が100を超える場合、ネットワークノードの危険度を10分間(つまり、この変更の有効期間は10分)増加させる(上記の度数増加の定義に従う。アクションは、データがフィルタの基準を満たす場合、すなわち1秒間に送信されるSYNパケットの量が所定値を超えた場合に実行される。)。
・フィルタ2:1秒あたりに確立されたTCP接続の数が1000を超えた場合に、ネットワークノードの危険度を50増加させ、その変更の有効期間は30分とする。
・フィルタ3:1秒あたりに送信されるPOST要求の数が10を超える場合に、ネットワークノードの危険度を30増加させ、その変更の有効期間は10分とする。
・フィルタ4:同じ(特定の)URLに1秒あたりに送信される要求の数が5を超える場合に、ネットワークノードの危険度を20増加させ、その変更の有効期間は10分とする。
・フィルタ5:1秒あたりに送信されるHTTP要求の数が100を超えた場合に、ネットワークノードの危険度を40増加させ、その変更の有効期間は10分とする。
・フィルタ6:確立されたTCP接続の数が50を超える場合に、ネットワークノードの危険度を35増加させ、その変更の有効期間は10分とする。
・フィルタ7:1秒あたりに確立される保護された接続の数が5を超える場合、ネットワークノードの危険度を35増加させ、その変更の有効期間は10分とする。
【0041】
度数決定モジュール125は、ネットワークノード101に対して決定されたネットワークノードの危険度の値(危険度数)に関する情報をブロッキングモジュール130に送信するように構成され得る。度数決定モジュール125は、度数に関する情報を送信することができるが、フィルタを使用する過程および対応したネットワークノードの危険度の値を変更する過程においてだけでなく、存続期間の満了時に対応する変更を取り消す際にも送信し得る。
【0042】
ブロッキングモジュール130は、ネットワークノード101のそれぞれの危険度に基づいて、ネットワークノード101からコンピューティングデバイス140へのデータの送信を制限するように構成されてもよい。例示的な態様では、ブロッキングモジュール130は、ネットワークノードの危険度の値が2000などの所定の閾値を超えていると判定した場合に、データの送信を制限し得る。1つの例示的な態様では、データ送信の制限は、ネットワークノード101とコンピューティングデバイス140との間のデータ送信を(当技術分野で知られている任意の方法によって)ブロックすることを意味すると理解される。別の例示的な態様では、データ伝送の制限は、ネットワークノード101とコンピューティングデバイス140との間のチャネル容量の制限(例えば、1Mb/sから100kb/s)を意味すると理解される。ブロッキングモジュール130は、ネットワークノードの危険度が閾値を超える程度、例えば危険度と閾値との差が大きいほど、チャネル容量をより制限するように構成することもできる。例えば、ネットワークノードの危険度が、所定の閾値を1000だけ超えた場合、チャネル容量は50%減少し、2未満になり、閾値を2000超えた場合、チャネル容量は75%減少し、4未満になる。
【0043】
さらに別の例示的な態様では、ブロッキングモジュール130は、危険度および閾値の履歴値と現在値との関係に基づいて、ネットワークノード101とコンピューティングデバイス140との間のチャネル容量をどれだけ制限するかを、下記式(1)に示すように決定する。
【数1】
ここで、Rはネットワークノードの危険度の("現在")値、R'は所定の閾値(変更の結果として決定される)、R
0はネットワークノード101に割り当てられたネットワークノードの危険度の初期値であり、Pはネットワークノード101とコンピューティングデバイス140との間でチャネル容量を何回制限する(すなわち、減少させる)必要があるかによって決定される量である。
【0044】
ブロッキングモジュール130は、ネットワークノード101とコンピューティングデバイス140との間のデータ送信に関する制限を取り除く(すなわちキャンセルする)ように構成することができる。例示的な一態様では、ブロッキングモジュール130は、ネットワークノードの危険度の変更(対応するフィルタの使用によって実施される)の存続期間満了時に、ネットワークノード101とコンピューティングデバイス140との間のデータ送信における制限を取り除き得、そのキャンセル後にネットワークノードの危険度は所定の閾値を超えないであろう。
【0045】
例示的な一態様では、ブロッキングモジュール130は、ネットワークノードの危険度の値を監視せず、すなわち、危険度が所定の閾値よりも大きいか否かを検証せず、ネットワークノード101とコンピューティングデバイス140との間のデータ送信を制限するか、またはこのデータ送信の制限をキャンセルする。この場合、ブロキシングモジュール130は、データ送信を制限するか、またはこの制限をキャンセルするための命令のみを度数決定モジュール125から取得する。度数決定モジュール125は、度数決定モジュール125によって決定されたネットワークノードの危険度が所定の閾値を超える場合、データ送信を制限するためにブロッキングモジュール130に命令を送る。そして、ネットワークノードの危険度の変更の存続期間の満了に対応する瞬間についても、度数決定モジュール125によって決定され、そのキャンセル後ネットワークノードの危険度がその所定の閾値を超えないであろう。
【0046】
フィルタの使用原理を完全に理解するために、
図2Aに示す例を考えてみる。
図2Aは、いくつかのフィルタを使用したときの経時的なネットワークノードの危険度の変化を示すグラフ200を示す。グラフ200は、一定期間にわたるネットワークノードの危険度の従属性を示す。線202は、危険度Rの時刻tにおける「現在」の値を表し、破線204は、ネットワークノードの危険度に関する所定の閾値R'を表す。フィルタの1つに対応する各領域(例えば、矩形206、208、210、212)は、ネットワークノードの危険度の変化の大きさ、およびその変更の持続時間(変化の存続時間)を表し、それぞれR軸に沿った矩形の高さ、およびt軸に沿った矩形の長さである。グラフから明らかなように、ネットワークノードの危険度の初期値は0であり、これは、度数決定モジュール125(例えば、ネットワークノードのデータベース135から得られる)の助けを借りてネットワークノード101に割り当てられた度数が0の値を有することを意味する。次に、傍受モジュール120によって決定された送信されるデータのパラメータに基づいて、度数決定モジュール125によってフィルタが適用される。最初に、フィルタ1が使用される(領域206によって表される)が、これは送信されるデータのパラメータがフィルタ1の基準を満たすことを意味する。一定時間の後、領域208および210によって表されるように、フィルタ2およびフィルタ3が適用される(「トリガされる」、換言すればフィルタの基準が満たされ、対応するフィルタ2およびフィルタ3によって規定される動作が実行される)。時間t
0でフィルタ4(領域212)がトリガされると、ネットワークノードの危険度の値が、所定の閾値を超え始める。閾値を超えると、ブロッキングモジュール130は、ネットワークノード101とコンピューティングデバイス140との間のデータ送信の制限を実行する。時刻t
1において、フィルタ1の存続期間が経過するが、ネットワークノードの危険度の値(フィルタ1に従って変更をキャンセルすることを許したとしても)はまだ所定の閾値を超えており、データ送信の制限はブロッキングモジュール130によって除去されない。時間t
2において、フィルタ2の存続期間が満了し、ネットワークノードの危険度の値が確立された閾値を超えなくなり、この時点でブロックモード130は、データ送信の上記制限を除去する。時間t
3において、フィルタ2及びフィルタ3が再びトリガされ、その結果、ネットワークノードの危険度等によって確立された閾値を繰り返し超えることになる。
【0047】
図2Bは、例示的な態様による、このネットワークノード101がコンピューティングデバイス140上でDDoS攻撃に参加しているときの、ネットワークノードの危険度の変化を示すグラフ250を示す。度数決定モジュール125によって適用されるフィルタが度数の値を変更すると、ネットワークノードの度数の値(「現在の度数252」と指定される)は、一般に段階的に増加する。ネットワークノードの危険度が所定の閾値254を超えた後、この度数のグラフは閾値付近で「変動」する。ネットワークノードの危険度の変更の存続期間経過後、そのキャンセルはネットワークノードの危険度の値を大きく下げて閾値よりも低くなるため、度数は減少するが、ほぼすぐに次のフィルタがトリガされ、フィルタの適用がネットワークノードの危険度の値を上げ、グラフの線は再び所定の閾値の線より高くなる。これらの変動は、ネットワークノード101がDDoS攻撃に関与しなくなるまで繰り返され(したがって、送信パラメータが特定のフィルタのトリガを引き起こしているコンピューティングデバイス140にそのようなデータを送信する)、その後、ネットワークノードの危険度の値は、元の値(例えば、ネットワークノードのデータベースの助けを借りて、または他の何らかの方法で決定された値)まで段階的に減少する。
【0048】
図3A〜
図3Bは、例示的な態様による、DDoS攻撃の検出時のトラフィックフィルタリング方法300のフローチャートを示す。ステップ301において、傍受モジュール120は、ネットワークノード101からコンピューティングデバイス140に送信されるデータ(例えば、ネットワークトラフィック)をインターセプトする。傍受モジュール120は、インターセプトの結果に基づいて、送信データパラメータを決定する。傍受モジュール120によって予め決定されたデータ送信パラメータ、少なくともネットワークノード101のIPアドレスを用いて、ステップ302において度数決定モジュール125は、ネットワークノードの危険度をネットワークノード101に割り当てる。危険度のネットワークノードへの割当てのために、度数決定モジュール125は、既知のネットワークノードの危険度を有するネットワークノードのデータベース135へのリクエストを行い、そのリクエストは、ネットワークノードから送信されるデータの少なくとも1つの予め決定されたパラメータを含む。すなわち、ネットワークノード101のIPアドレスを含む。その後、ステップ303において、度数決定モジュール125は、予め決定されているように、送信されるデータのパラメータに基づいてネットワークノード101の危険度を変更し、少なくとも1つのフィルタを適用する。
【0049】
ステップ305において、ネットワークノードの危険度が所定の閾値を超えている場合、ステップ306において、ブロッキングモジュール130は、ネットワークノードからコンピューティングデバイス140へのデータ送信を制限する。さもなければ、ステップ307において、ブロッキングモジュール130は前記データ送信を制限しない。ステップ306において、ネットワークノード101のコンピューティングデバイス140へのデータ送信が制限されている場合、ネットワークノードブロックモード130の危険度の少なくとも1つの変更の存続期間満了時に、ステップ308は、度数が所定の閾値を超えるか否かを再びチェックする。度数が所定の閾値を超えなくなった場合、ステップ309において、ブロッキングモジュール130は、データ送信の制限をキャンセルする。さもなければ制限のキャンセルは行われない。1つの例示的な態様では、ステップ307、308および310を実行した後、システム110は、ステップ301を開始し、ステップ302をもう一度実行することを省略して、方法のステップを引き続き実行する。1つの例示的な態様では、システム110がリモートサーバまたはコンピュータセキュリティの専門家からのDDoS攻撃が終了したとの通知を受信すると、方法のステップの実行の繰り返しが中止される。
【0050】
図3Cは、例示的な態様による、DDoS攻撃の検出時のトラフィックフィルタリングの方法350のフローチャートを示す。ステップ311において、傍受モジュール120は、ネットワークノード101からコンピューティングデバイス140に送信されているデータを傍受する。傍受モジュール120は、傍受結果に基づいて、送信データパラメータを決定する。傍受モジュール120によって予め決定されたデータ伝送パラメータ、少なくともネットワークノード101のIPアドレスを使用して、ステップ312で度数決定モジュール125はネットワークノード101にネットワークノードの危険度を割り当てる。ネットワークノードに危険度を割り当てるために、度数決定モジュール125は、既知のネットワークノードの危険度を有するネットワークノードのデータベース135へのリクエストを行い、そのリクエストは、ネットワークノードから送信されるデータの少なくとも1つの予め決定されたパラメータを含む。すなわち、ネットワークノード101のIPアドレスを含む。その後、ステップ313において、度数決定モジュール125は、予め決定されているように、送信データパラメータに基づいてネットワークノード101の危険度を変更し、少なくとも1つのフィルタを適用する。その後、ステップ311および313が繰り返される。すなわち、傍受モジュール120は、ネットワークノード101によってコンピューティングデバイス140に送信されているデータを傍受し続け、度数決定モジュール125は、それに従って、利用可能なフィルタ(それらのうちの少なくとも1つ)を、傍受モジュール120によって決定されるように送信データパラメータに割り当てる。したがって、(トリガ時に)適用されるフィルタによってそのような変更が規定される場合、送信データパラメータへのフィルタの継続的な適用およびそれに伴ってネットワークノードの危険度の値の変更が存在する。
【0051】
本開示の1つの例示的な態様では、同じフィルタを数回(例えば、2分の指定間隔で)適用することができ、フィルタの基準が送信されるデータの新たに決定されたパラメータによって再び満たされる場合、ネットワークノードの危険度の値も再び変更される(そのような変更のそれぞれの存続期間は、フィルタの個別のトリガの瞬間からカウントされる)。例えば、フィルタの基準が、10秒間カウントし、1秒あたりに送信されたTCPパケットの数が1000より大きい場合に、傍受モジュール120が送信されたデータのパラメータを決定するとする。フィルタの基準が満たされるとフィルタがネットワークノードの危険度を450だけ増加させるように規定されている場合、10秒間カウントして1秒あたりに送信されたTCPパケットの数が1204に等しいとき、度数決定モジュール125は、ネットワークノードの危険度を450増加させる。3分後に、傍受モジュール120が送信されたデータのパラメータを決定する場合、10秒間カウントして1秒あたりに送信されたTCPパケットの数(送信されるパケット数の増加を示す)が1304に等しいときに、ネットワークノードの危険度は、度数決定モジュール125によって追加的に450増加されるが、それらの変更の存続期間満了時の変更の取り消しにかかるネットワークノードの危険度の減少は、同時に実行されるわけではない。すなわち、2ステップで行われ、最初に450(最初の度数変更の取り消し)、次に別の450(2回目の度数変更の取り消しを最初の度数変更に対して3分遅らせて)というように行われる。
【0052】
さらに別の例示的な態様では、同じフィルタを繰り返しトリガすることにより、フィルタの適用の結果として実行されるネットワークノードの危険度の第1の変更の存続期間に、第2の変更の存続期間に等しい時間間隔を追加することになる。
【0053】
1つの例示的な態様では、ネットワークノードの危険度における第2の(リピート)変更の値は、第1の(前の)変更の値と一致してもよく、さらに別の例示的な態様では、異なっていてもよい。例えば、同一のフィルタが、先のトリガからのある一定の時間(例えば5分)内に再びトリガされた場合、より大きくなる。または、先のトリガから例えば一定の時間(例えば30分)内同じフィルタが再度トリガされなかった場合は小さくなる。
【0054】
ネットワークノードの危険度と所定の閾値との差の符号が変化した場合(度数が閾値以上であったが、閾値より低くなる場合、および度数が閾値未満であったが、閾値以上になる場合)、度数決定モジュール125は、ステップ314において、ネットワークノードの危険度が所定の閾値を超えているかをチェックする(ネットワークノードの度数の最初の変更に先立って差の値が負(マイナス符号「−」)であることを考慮しなければならない)。閾値を超えた場合、ステップ315において、ブロッキングモジュール130は、ネットワークノード101によるコンピューティングモジュール140へのデータ送信を制限する。さもなければ、データの送信は、ステップ316において、ブロッキングモジュール130によって制限されない(制限が既に存在する場合、それは除去される)。
【0055】
ステップ315またはステップ316のいずれかを実行した後、ステップ311およびステップ313が再び実行される(そして、適宜、ネットワークノードの危険度と所定の閾値との間の差の符号の変化が生じる場合、ステップ314にジャンプする)。1つの例示的な態様では、システム110がリモートサーバまたはコンピュータセキュリティの専門家からのDDoS攻撃が終了したとの通知を受信した場合、上記方法のステップの繰り返し機能は停止する。
【0056】
1つの例示的な態様(
図3A−3Bおよび
図3Cに示す両方法、300および350に適用可能である)では、所定の閾値をネットワークノードの危険度が超過した後、ネットワークノードの危険度が所定の閾値未満になるまでフィルタの適用を停止する。したがって、閾値を超えた時点ではデータが傍受されず、フィルタの適用は、送信データパラメータを決定し、フィルタを適用してネットワークノードの危険度を変更する中断のない処理ではないため、システム110のコンポーネントを実装するために使用されるコンピューティングデバイス(またはいくつかのコンピューティングデバイス)のリソースに対して作業負荷が低減される。
【0057】
1つの例示的な態様において、方法300、350のいずれかのステップは、1つのネットワークノード(1つのネットワークノード101によるコンピューティングデバイスへのデータ送信に関して)だけでなく、少なくとも2つのネットワークノード101適用される。これは、複数のネットワークノード101の関与を伴って実行されているDDoS攻撃に対してコンピューティングデバイス140を保護することを可能にする。
【0058】
1つの例示的な態様では、度数決定モジュール125は、ネットワークノードのデータベース135に保持されているネットワークノードの度数を更新することができる(そのような値が欠けている場合、それをデータベース135に追加する)ことができ、ネットワークノード101の対応するIPアドレスもまた更新される。度数決定モジュール125は、コンピューティングデバイス140に対するDDoS攻撃を検出したときに、ネットワークノード101によるコンピューティングデバイス140へのデータ送信が一定期間制限された場合、データベース135内のネットワークノード101に保持されている値(および、特に、ネットワークノード101のIPアドレス)に関する、ネットワークノード101のネットワークノードの危険度の値を増加させる。データ送信が制限された時間が長いほど、ネットワークノードの度数は増加する。
このような場合における度数の上昇は、下記式(2)によって算出することができる。
【数2】
ここでΔは度数の変化であり、RはDDoS攻撃中のネットワークノードの危険度の最大値であり、R
0は所定の閾値であり、tはネットワークノード101によるコンピューティングデバイス140へのデータ送信が制限された時間であり、TはDDoS攻撃の期間である。
式(2)はまた、コンピューティングデバイス140に対する検出されたDDoS攻撃の間に、ネットワークノード101によるコンピューティングデバイス140へのデータの送信が制限されていない場合(差R−R
0は負であり、したがってΔの値も負である)、ネットワークノード101の危険度の値を、ネットワークノードのデータベース135内のネットワークノード101に対して保存された値に対して減少させるために使用することができる。
【0059】
ネットワークノードのデータベース135内のネットワークノードの危険度の値の変更のために、以前DDoS攻撃に関与していたネットワークノードは、次のDDoS攻撃の間にコンピューティングデバイス140からより迅速に切断される。すなわち、これらのネットワークノード101によるコンピューティングデバイス140へのデータ送信はより迅速に制限され、DDoS攻撃の間にコンピューティングデバイス140上の作業負荷を低減する。
【0060】
ネットワークノードのデータベース135は、あるフィルタ(例えば、フィルタ1)をネットワークノード101によるコンピューティングデバイス140へ送信されるデータのパラメータに適用することによって生成されるネットワークノードの危険度の変更の存続期間の値を含むこともできることに留意されたい。そして、その値はそのフィルタ(たとえば、フィルタ1)の適用によって生成された度数の変更をキャンセルする時間を決定するために使用されうる。したがって、度数変更の存続期間は、ネットワークノードのデータベース135が、これらのネットワークノード101の変更の存続期間の異なる値を保存している(すなわち、ネットワークノードのデータベース135は、あるネットワークノード101のIPアドレスについて、利用可能なフィルタのそれぞれの適用によって生成されたネットワークノードの度数変更の存続期間を保存している)場合、異なるネットワークノード101に対して異なることがある。
【0061】
1つの例示的な態様では、ネットワークノードのデータベース135は、ネットワークノード101(したがって、IPアドレスによって識別される)について、補正係数Kを保存し、これは、度数決定モジュール125によって、ネットワークノード101のネットワークノードの危険度の変更の存続期間を変更するために用いられ得る(この係数は、例えば1などのデフォルト値を有する可能性がある)。特定の態様では、ネットワークノード101のネットワークノードの度数の各変更の存続期間は、K倍され、危険度の各変更の存続期間の終了時点を決定するが、使用されるフィルタの助けを借りて度数決定モジュール125によって実行される。ネットワークノード101の係数Kの値は、DDoS攻撃中ネットワークノード101によるコンピューティングデバイス140へのデータの送信が制限された時間に基づいて、度数決定モジュール125によって変更することができる。データ送信が制限されている時間が長いほど、Kの値が大きくなり、データ送信の制限が少ないほど、Kの値が小さくなる。
係数Kの変更値は、式(3)に示す以下の式で算出することができる。
【数3】
ここで、Kは係数の新しい(変更された)値であり、K
0は係数Kの前(旧)値であり、tはネットワークノード101によるコンピューティングデバイス140へのデータ送信が制限された時間であり、TはDDoS攻撃の継続時間である。なお、上記式は係数を変更する上記の法則を反映した一例にすぎない。
【0062】
なお、DDoS攻撃の開始時間、その終了時間、およびDDoS攻撃の持続時間の決定は、本発明の範囲を超えて行われ、上記の式で使用される値は、コンピューティングデバイス140のセキュリティ担当の専門家によって、または例えばリモートサーバやDDoS攻撃を検出するための同様の機能を実行するシステム110の範囲外に設けられた手段によって提供される。
【0063】
さらに別の例示的な態様では、度数決定モジュール125によって使用されるフィルタが相互接続され、フィルタの関係に関する情報が度数決定モジュール125自体に保持されてもよいが、別の態様では、ネットワークノードのデータベース135に保持される。フィルタ間の関係は、前述のフィルタの適用によって引き起こされるネットワークノードの危険度の変更存続期間の満了時を決定するため、相互接続されたフィルタについては、この満了時は、同じ時点、すなわち、すべて変更の存続期間の満了時のうちの遅い時点に発生する。例えば、フィルタ1とフィルタ2が相互接続されているとすると、フィルタの適用によって引き起こされるネットワークノードの危険度の対応する変更の存続期間は、それぞれT
1とT
2として指定され、フィルタ1は時間t
1にトリガされ、フィルタ2は時間t
2にトリガされることを意味する。フィルタ間の関係が与えられると、フィルタによって生成された各変更の存続期間の満了時点は、式(4)に示される式によって決定される。
【数4】
【0064】
上記手法および上記式は、フィルタ1がフィルタ2の使用によって生成された変更の存続期間中にトリガされた場合にのみ有効であり(すなわち、下記式(A1)を満たす)、その逆も同様であることに留意すべきである(フィルタ2は、フィルタ1の使用によって生成された変更の存続期間中にトリガされたものである(すなわち、下記式(A2)を満たす))。
【数5】
【数6】
上記の式はいくつかの相互接続されたフィルタに対しても有効であり、この場合、Tは下記式(A3)として選択され、ここでnはトリガされる相互接続されたフィルタの数である(すなわち、それらの相互接続されたフィルタについて時間t
iが決定されている)。
【数7】
【0065】
図4は、実施形態に係り、DDoS攻撃からサーバを保護するためのネットワークトラフィックフィルタリングのためのシステムと方法が実装できる汎用コンピュータシステム20の例を示している。コンピュータシステム20は、例えば、先に説明したネットワークノード101、システム110、およびコンピューティングデバイス140に相当することに留意されたい。
【0066】
図示の通り、コンピュータシステム20(パーソナルコンピュータまたはサーバであってもよい)は、CPU21と、システムメモリ22と、CPU21と関連付けられたメモリを含む様々なシステムコンポーネントを接続するシステムバス23とを含み得る。システムバス23は、バスメモリ又は、バスメモリコントローラ、周辺バス、及びローカルバスを次々含む従来から公知のあらゆるバス構造としても実現され、これらはどのような他のバスアーキテクチャとも通信可能である。システムメモリは、リードオンリーメモリ(ROM)24及びランダムアクセスメモリ(RAM)25を含む。基本的な入出力システム(BIOS)26は、ROM24の使用によってオペレーティング・システムをロードする際等、コンピュータシステム20の要素間の情報の伝達を担う基本的な手順を含む。
【0067】
コンピュータ・システム20は、データの読み書きのためのハードディスク27、取り外し可能な磁気ディスク29の読み書きのための磁気ディスクドライブ28、及びCD−ROM、DVD−ROM、その他の光学メディア等の光学ディスク31の読み書きのための光学式ドライブ30を含む。ハードディスク27、磁気ディスクドライブ28、及び光学式ドライブ30は、ハードディスクインターフェース32、磁気ディスクインターフェース33、及び光学式ドライブインターフェース34それぞれを横切るシステムバス23と接続される。ドライブ及び対応するコンピュータ情報メディアは、コンピュータ命令、データ構造体、プログラムモジュール、及びコンピュータ・システム20の他のデータのストレージのための電源依存のモジュールである。
【0068】
本発明は、ハードディスク27、取り外し可能な磁気ディスク29及び取り外し可能な光学ディスク31を用いるシステムの実装を提供するものだが、コンピュータに読み込み可能な形式でデータを保存できるフラッシュメモリカード、デジタルのディスク、ランダムアクセスのメモリ(RAM)等の他のタイプのコンピュータ情報メディア56を使用してもよいことに留意されたし。また、これはコントローラ55を介してシステムバス23に接続される。
【0069】
コンピュータ・システム20は、ファイルシステム36を有し、記録されたオペレーティング・システム35を保持する。また追加のプログラムアプリケーション37、他のプログラムモジュール38、及びプログラムデータ39を有する。ユーザは、入力機器(キーボード40、マウス42)を用いてコマンドと情報をコンピュータ・システム20に入力することができる。他の入力機器(不図示):マイクロフォン、ジョイスティック、ゲームコントローラ、スキャナ等を用いることもできる。そのような入力機器は、通常、システムバスに次々接続しているシリアルポート46を通じてコンピュータ・システム20に差し込まれるが、それらは、他の方法例えばパラレル・ポート、ゲームポート、又は一般的なシリアルバス(USB)に接続される。ディスプレイ機器のモニタ47又は他のタイプは、また、ビデオアダプタ48等のインターフェースと交差するシステムバス23に接続している。モニタ47に加えて、パーソナル・コンピュータは、スピーカー、プリンタ等の他の周辺の出力機器(不図示)を接続できる。
【0070】
コンピュータ・システム20は、1つ又は複数のリモートコンピュータ49とのネットワーク接続を用いて、ネットワーク環境で操作することができる。リモートコンピュータ(又はコンピュータ)49は、
図4に示すように、コンピュータ・システム20の性質として説明した上述の要素全ての大多数を有するパーソナル・コンピュータ又はサーバでもある。ルータ、ネットワークステーション、ピア接続の機器、又は他のネットワークノード等の他の機器もまた、かかるコンピュータ・ネットワークで存在し得るものである。
【0071】
ネットワーク接続は、ローカルエリアコンピュータ・ネットワーク(LAN)50及びワイドエリアコンピュータ・ネットワーク(WAN)を形成することができる。そのようなネットワークは、企業のコンピュータ・ネットワーク及び社内ネットワークで利用され、それらはたいていインターネットにアクセスすることができる。LAN又はWANネットワークにおいて、パソコン20は、ネットワークアダプタ又はネットワークインターフェース51に交差するローカルエリアネットワーク50に接続されている。ネットワークが用いられる時には、パソコン20は、通信にインターネット等のワイドエリアコンピュータ・ネットワークを実現するために、モデム54又は他のモジュールを使用することができる。内部又は外部の機器であるモデム54は、シリアルポート46によりシステムバス23と接続される。かかるネットワーク接続は、単なる一例であり、ネットワークの正確な構成を示すものではない。すなわち、技術の通信モジュールによって、あるコンピュータから他のコンピュータへの接続を確立する他の方法もあることに留意されたい。
【0072】
様々な実施形態において、ハードウェア、ソフトウェア、ファームウェア、又はこれらのあらゆる組み合わせにおいて、ここで説明されたシステム及び方法を実施し得る。ソフトウェアにおいて実装される場合は、方法は不揮発性コンピュータ可読メディアの1つ又は複数の指示又はコードとして保存され得る。コンピュータ可読メディアは、データストレージを含む。あくまでも例であり限定するものではないが、そのようなコンピュータ可読メディアは、RAM、ROM、EEPROM、CD−ROM、フラッシュメモリ、若しくは他のタイプの電気、磁気、光学式の記憶媒体、又はその他のメディアであってもよい。すなわち、これらによって指示又はデータ構造体という形で、要求されたプログラムコードを運ぶか又は保存することができ、汎用コンピュータのプロセッサによってアクセスすることができる。
【0073】
様々な実施形態で、本発明のシステム及び方法が、モジュールとして実装され得る。ここで用語「モジュール」は、実世界の機器、コンポーネント、又はハードウェアを用いて実装されたコンポーネント配置であり、例えばASIC(Application Specific Integrated Circuit)、FPGA(Field−Programmable Gate Array)等の、又は例えばモジュールの機能を実行するマイクロプロセッサシステムや指示セットによる等、ハードウェアとソフトウェアの組み合わせとして実装され得る。これらは、実行中にマイクロプロセッサシステムを特定の機器に変換する。モジュールは、ハードウェア単体により促進される一定の機能とハードウェア及びソフトウェアの組み合わせによって促進される他の機能という2つの組み合わせとして実施されてもよい。モジュールの少なくとも一部又は全部は、汎用コンピュータのプロセッサにおいて実行できる(
図4において詳述したもの等)。したがって、各モジュールは様々な適当な構成で実現することができて、ここに例示した特定の実装に限られるものではない。
【0074】
なお、実施形態の通常の機能のうちの全てをここで開示しているわけではない。本発明の何れの実施形態を開発する場合においてでも、開発者の具体的な目標を達成するためには多くの実施に係る特別な決定が必要であり、これらの具体的な目標は実施形態及び開発者ごとに異なることに留意されたし。そのような開発努力は、複雑で時間を要するものであるが、本発明の利益を享受し得る当業者にとってはエンジニアリングの日常であると理解されたい。
【0075】
更に、本明細書で使用される用語又は表現は、あくまでも説明のためであり、限定するものではない。つまり、関連技術の熟練の知識と組み合わせて、本明細書の用語又は表現は、ここに示される教示及び指針に照らして当業者によって解釈されるべきであると留意されたし。明示的な記載がない限り、明細書又は特許請求の範囲内における任意の用語に対して、珍しい又は特別な意味を帰することは意図されていない。
【0076】
本明細書で開示された様々な側面は、例示のために本明細書に言及した既知のモジュールの、現在及び将来の既知の均等物を包含する。更に、側面及び用途を示し、説明してきたが、本明細書に開示された発明の概念から逸脱することなく、上述したよりも多くの改変が可能であることが、この開示の利益を有する当業者には明らかであろう。