(57)【特許請求の範囲】
【請求項１】
電気通信ネットワークを通じてクライアントとサーバーとの間で交換されるデータストリームのリアルタイム分類を実行する方法であって、
前記データストリームのデータセグメントを受信することであって、該データセグメントは、前記データストリーム内におけるデータオフセットを示すことと、
前記受信されたデータセグメントを用いて、前記示されたデータオフセットに基づいてビットマップテーブルを更新することであって、該ビットマップテーブルは、予め設定されたサイズを有する複数のデータブロックを含み、該データブロックは、該ビットマップテーブルにおいてブロックシーケンス番号によって順序付けられていることと、
前記ビットマップテーブルを更新した後、第一のブロックシーケンス番号を有する少なくとも１つの最初のデータブロックが完全か不完全かを判定し、不完全である場合、更に受信されるデータセグメント内に存在する補間データの受信を待つために、前記不完全なデータブロックをペンディングブロックリストに追加し、一方、完全である場合、前記第一のブロックシーケンス番号よりも小さなブロックシーケンス番号を有する全ての前記ビットマップテーブルの前記データブロックが完成されるのを待機することなく、前記完全なデータブロックに対して測定を実行して、少なくとも１つの測定結果を取得することと、
幾つかの完全なブロックについて取得された測定結果に基づいて少なくとも１つの統計的解析を実行することと、
少なくとも前記実行された統計的解析に基づいて、複数のグループの中の１つのグループに前記データストリームを分類することと、
を含む、方法。
【請求項２】
Ｋを予め設定された数として、前記データストリームの最初のＫバイトについて、
前記データストリームの前記最初のＫバイトを含む前記データブロックを再組み立てして、それらのそれぞれのブロックシーケンス番号に従って順序付けられたデータブロックを取得することと、
前記データストリームの前記最初のＫバイトが受信されて再組み立てされた後に、前記データストリームの前記最初のＫバイトに対して少なくとも１つのディープパケット検査（ＤＰＩ）解析を実行することと、
を更に含み、
前記データストリームは、前記実行された統計的解析及び前記ＤＰＩ解析に基づいて１つのグループに分類される、請求項１に記載の方法。
【請求項３】
前記複数のグループは、平文データグループ及び少なくとも１つの非平文データグループを含み、前記完全なデータブロックに対して実行される前記測定は、前記データブロックのエントロピーを求めることを含み、前記統計的解析は、前記データストリームのグローバルエントロピー値を求めることを含み、前記グローバルエントロピー値が、予め設定されたエントロピー閾値よりも大きい場合、前記データストリームは、前記非平文データグループに属するものとして分類される、請求項１に記載の方法。
【請求項４】
前記複数のグループは、平文データグループ及び少なくとも１つの非平文データグループを含み、前記完全なデータブロックに対して実行される前記測定は、前記データブロックのエントロピーを求めることを含み、前記統計的解析は、前記データストリームのグローバルエントロピー値を求めることを含み、前記グローバルエントロピー値が、予め設定されたエントロピー閾値よりも大きい場合、前記データストリームは、前記非平文データグループに属するものとして分類される、請求項２に記載の方法。
【請求項５】
前記グローバルエントロピー値が前記エントロピー閾値未満の場合、前記データストリームは、前記平文データグループに属するものとして分類される、請求項３または４に記載の方法。
【請求項６】
前記グローバルエントロピー値が前記エントロピー閾値未満の場合、前記ＤＰＩ解析は、前記データストリーム内に平文パターンを見つける平文パターン検出を含み、平文パターンが前記データストリーム内に見つかった場合、前記データストリームは、既知の平文フォーマットグループとして分類され、前記既知の平文フォーマットグループは、前記平文データグループのサブグループである、請求項４に記載の方法。
【請求項７】
平文パターンが前記データストリーム内に見つからなかった場合、前記ＤＰＩ解析は、前記データストリーム内に文字集合を見つけるテキストファイル識別解析を更に含み、
文字集合が前記データストリーム内に見つかった場合、前記データストリームは、テキスト符号化グループ又は前記既知の平文フォーマットグループに属するものとして分類され、
文字集合が前記データストリーム内に見つからなかった場合、前記データストリームは、難読化データグループ又は未知の平文フォーマットグループに属するものとして分類される、請求項６に記載の方法。
【請求項８】
前記非平文データグループは、少なくとも暗号化グループを含み、前記測定は、前記完全なブロックのカイ二乗偏差の推定を実行することを更に含み、前記統計的解析は、各完全なブロックについて、
前記完全なブロックのカイ二乗偏差を求めることと、
前記求められたカイ二乗偏差を、予め設定された偏差閾値と比較することと、
前記求められたカイ二乗偏差が前記偏差閾値よりも大きい場合、カウンター値をインクリメントすることと、
を更に含み、
前記カウンター値が、予め設定された整数Ｎ未満である場合、前記データストリームは、前記暗号化グループに分類される、請求項３から７までのいずれか１項に記載の方法。
【請求項９】
Ｋを予め設定された数として、前記データストリームの最初のＫバイトについて、
前記データストリームの前記最初のＫバイトを含む前記データブロックを再組み立てして、それらのそれぞれのブロックシーケンス番号に従って順序付けられたデータブロックを取得することと、
前記データストリームの前記最初のＫバイトが受信されて再組み立てされた後に、前記データストリームの前記最初のＫバイトに対して少なくとも１つのディープパケット検査（ＤＰＩ）解析を実行することと、
を更に含み、
前記データストリームは、前記実行された統計的解析及び前記ＤＰＩ解析に基づいて１つのグループに分類され、
前記カウンター値が、予め設定された整数Ｎ未満である場合、前記データストリームは、前記暗号化グループに分類され、前記ＤＰＩ解析は、前記データストリーム内にＸＯＲパターンを見つけるＸＯＲパターンスキャンを含み、
ＸＯＲパターンが前記データストリーム内に見つかった場合、前記データストリームは、難読化グループに分類され、ＸＯＲパターンが前記データストリーム内に見つからなかった場合、前記データストリームは、暗号化データグループに分類され、前記難読化グループ及び前記暗号化データグループは前記暗号化グループのサブグループである、請求項８に記載の方法。
【請求項１０】
Ｋを予め設定された数として、前記データストリームの最初のＫバイトについて、
前記データストリームの前記最初のＫバイトを含む前記データブロックを再組み立てして、それらのそれぞれのブロックシーケンス番号に従って順序付けられたデータブロックを取得することと、
前記データストリームの前記最初のＫバイトが受信されて再組み立てされた後に、前記データストリームの前記最初のＫバイトに対して少なくとも１つのディープパケット検査（ＤＰＩ）解析を実行することと、
を更に含み、
前記データストリームは、前記実行された統計的解析及び前記ＤＰＩ解析に基づいて１つのグループに分類され、
前記カウンター値が、予め設定された整数Ｎよりも大きい場合、前記ＤＰＩ解析は、前記データストリーム内に圧縮パターンを見つける圧縮パターン識別を含み、
圧縮パターンが前記データストリーム内に見つかった場合、前記データストリームは、既知の圧縮フォーマットグループに分類され、圧縮パターンが前記データストリーム内に見つからなかった場合、前記データストリームは、難読化グループ又は未知の圧縮フォーマットグループに分類される、請求項８または９に記載の方法。
【請求項１１】
前記データストリームが分類される前記グループの表示を、前記クライアントと前記サーバーとの間で交換されるデータストリームにフィルタリングポリシーを適用することを担当する中央スーパーバイザーに対して送信することを更に含む、請求項１から１０までのいずれか１項に記載の方法。
【請求項１２】
Ｋを予め設定された数として、前記データストリームの最初のＫバイトについて、
前記データストリームの前記最初のＫバイトを含む前記データブロックを再組み立てして、それらのそれぞれのブロックシーケンス番号に従って順序付けられたデータブロックを取得することと、
前記データストリームの前記最初のＫバイトが受信されて再組み立てされた後に、前記データストリームの前記最初のＫバイトに対して少なくとも１つのディープパケット検査（ＤＰＩ）解析を実行することと、
を更に含み、
前記データストリームは、前記実行された統計的解析及び前記ＤＰＩ解析に基づいて１つのグループに分類され、
Ｋを予め設定された整数として、前記データストリームの前記最初のＫバイトを受信した後、前記方法は、該最初のＫバイトを一時バッファーに記憶することを含み、
前記記憶された最初のＫバイトは再組み立てされ、前記ＤＰＩ解析は、前記統計的解析の後、該再組み立てされた、記憶された最初のＫバイトに対して実行される、請求項１，３から１０までのいずれか１項に記載の方法。
【請求項１３】
前記ビットマップテーブルは、固定サイズを有し、ウィンドウの底部から開始し、前記方法は、前記サーバーと前記クライアントとの間で交換される肯定応答メッセージであって、ウィンドウの新たな底部を示す肯定応答メッセージを受信すると、前記ビットマップテーブルがウィンドウの前記示された新たな底部から開始するように前記ビットマップテーブルを更新することを更に含む、請求項１から１２までのいずれか１項に記載の方法。
【請求項１４】
コンピューター可読媒体であって、
前記コンピューター可読媒体はコンピュータープログラム命令を記憶しており、
前記コンピュータープログラム命令は、
コンピューティングデバイス内にロード可能であり、該コンピューティングデバイス内にロードされて、該コンピューティングデバイスによって実行されたときに、該コンピューティングデバイスに請求項１から１３までのいずれか１項に記載の方法を実行させるように構成されている、
コンピューター可読媒体。
【請求項１５】
電気通信ネットワークを通じてクライアントとサーバーとの間で交換されるデータストリームのリアルタイム分類を実行する分類デバイスであって、
前記データストリームのデータセグメントを受信する入力インターフェースであって、該データセグメントは、前記データストリーム内におけるデータオフセットを示す、入力インターフェースと、
プロセッサと
を備え、
前記プロセッサは、以下のステップ、すなわち、
前記受信されたデータセグメントを用いて、前記示されたデータオフセットに基づいてビットマップテーブルを更新するステップであって、該ビットマップテーブルは、予め設定されたサイズを有する複数のデータブロックを含み、該データブロックは、該ビットマップテーブルにおいてブロックシーケンス番号によって順序付けられている、ステップと、
前記ビットマップテーブルを更新した後、第一のブロックシーケンス番号を有する少なくとも１つの最初のデータブロックが完全か不完全かを判定し、不完全である場合、更に受信されるデータセグメント内に存在する補間データの受信を待つために、前記不完全なデータブロックをペンディングブロックリストに追加し、一方、完全である場合、前記第一のブロックシーケンス番号よりも小さなブロックシーケンス番号を有する全ての前記ビットマップテーブルの前記データブロックが完成されるのを待機することなく、前記完全なデータブロックに対して測定を実行して少なくとも１つの測定結果を取得するステップと、
幾つかの完全なブロックについて取得された測定結果に基づいて少なくとも１つの統計的解析を実行するステップと、
少なくとも前記実行された統計的解析に基づいて、複数のグループの中の１つのグループに前記データストリームを分類するステップと、
を実行するように構成されている、
分類デバイス。
【請求項１６】
請求項１５に記載の分類デバイスと、中央スーパーバイザーとを備えるシステムであって、
前記分類デバイスは、前記データストリームが分類された前記グループの指示子を送信するように構成され、
前記中央スーパーバイザーは、前記指示子を受信すると、前記受信された指示子に基づいて前記電気通信ネットワークにおいてフィルタリングルールを適用するように構成されている、
システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、包括的には、通信ネットワークにおけるデータ解析に関し、より正確には、データストリームの分類に関する。
【背景技術】
【０００２】
このセクションにおいて記述される手法は追及することはできたが、必ずしも以前から考えられてきたか、又は追及されてきた手法であるとは限らない。それゆえ、本明細書において別の指示がない限り、このセクションにおいて記述される手法は、本出願における特許請求の範囲に対する先行技術でもなければ、このセクションに含めることによって従来技術であると認めるものでもない。
【０００３】
ＨＴＴＰプロトコルは、インターネットエンジニアリングタスクフォース（ＩＥＴＦ）によってＲＦＣ２６１６として標準化され、ＴＣＰ／ＩＰスタック（伝送制御プロトコル／インターネットプロトコル）上で伝送される。
【０００４】
ＨＴＴＰは、非常に多くのサービスを実施するのに用いられている。確かに、ますます多くのアプリケーションがウェブブラウザー内で実行され、それらのアプリケーションの通信はＨＴＴＰに基づいている。
【０００５】
ＨＴＴＰの１つの利点は単純さである。なぜならば、このプロトコルがサポートする要求方法は少数であり、基本的に、アプリケーションが用いる要求方法は２つ又は３つ（主として、ＧＥＴ及びＰＯＳＴと呼ばれる方法）であるからである。
【０００６】
多くのアプリケーションが、セッションプロトコルとしてＨＴＴＰを利用して、単純なテキストファイル、オフィス文書、オーディオファイル及びビデオファイル等の種々のタイプのメディアを伝達する。
【０００７】
以下では、ＨＴＴＰによって伝送されるファイル又はデータストリームは、ＨＴＴＰコンテンツと呼ぶことにする。
【０００８】
ＨＴＴＰプロトコルによれば、ＨＴＴＰコンテンツは、ＨＴＴＰメッセージのＨＴＴＰ本体部（又はペイロード）内に挿入され、ＨＴＴＰヘッダー部は、ＨＴＴＰメッセージの制御情報を含む。
【０００９】
ＨＴＴＰメッセージの送信に先立ち、ボリュームフォーマットの削減又は送信のセキュア化のいずれかを行うためにＨＴＴＰコンテンツをアプリケーションによって圧縮又は暗号化することができる。
【００１０】
例えば、オーディオメディア及びビデオメディアは、オーディオ／ビデオコーデックによって圧縮される。同じ目的で、パケットアーカイブ（例えば、ｚｉｐフォーマット、ｒａｒフォーマット等）は、一組の圧縮ファイルを含む。
【００１１】
ＨＴＴＰプロトコルの効率を改善するために、持続的接続及びパイプライン化等の幾つかの拡張が、ＨＴＴＰプロトコル標準規格に従って開発されてきた。
【００１２】
持続的接続は、ＨＴＴＰ要求の完了後（サーバーからのＨＴＴＰ応答の受信後）、ＨＴＴＰクライアントとＨＴＴＰサーバーとの間のＨＴＴＰセッションを搬送するＴＣＰ接続をオープンに維持することを含む。その場合、ＨＴＴＰクライアントは、同じＴＣＰ接続上で別のＨＴＴＰ要求を送信することができる。
【００１３】
ＨＴＴＰパイプライン化は、対応するＨＴＴＰ応答の受信を待機することなく単一のＴＣＰ接続を通じてＨＴＴＰクライアントからＨＴＴＰサーバーに幾つかのＨＴＴＰ要求を送信することを含む。
【００１４】
マルウェア、トロイの木馬又はリモートアドミニストレーションツール（ＲＡＴ）等の悪意のあるアプリケーションも、感染したマシンとコマンド及び制御（Ｃ＆Ｃ）サーバーとの間の通信の搬送プロトコルとしてＨＴＴＰを用いることが多い。
【００１５】
これらの悪意のあるアプリケーションは、ＨＴＴＰを用いて、盗んだ情報及びファイルを搬送する場合があり、伝送に先立ち、通信を難読化するためにファイルの圧縮及び／又は暗号化も行う可能性がある。
【００１６】
その場合、暗号化鍵が知られていない場合には、総当り法を適用することによらない限り、オフラインプロセスを用いてデータストリームを解読することは不可能である。
【００１７】
通常、悪意のあるアプリケーションは、ＸＯＲ暗号化等の符号のスクランブルに依拠した基本的な難読化方法を利用する。一方、それらのアプリケーションは、幾つかの場合には、ＡＥＳ（次世代暗号化標準）又は３ＤＥＳ（トリプルデータ暗号化標準）等の標準暗号化を適用する可能性がある。これらの場合には、データのどのロードがＨＴＴＰクライアントとＨＴＴＰサーバーとの間で交換されるのかをリアルタイムで識別することが必要となり得る。
【００１８】
これは、疑わしいコンテンツが、クライアントとサーバーとの間に配置されたトラフィックアナライザーによって迅速に解析されることを要する。実際は、このシステム解析は、好ましくは、暗号化鍵が悪意のあるアプリケーションによって送信機又は受信機のシステムメモリから消去される前に、クライアントに対して実行される。
【００１９】
幾つかの方法によれば、パターンマッチングが、ファイルを分類するのに用いられる。例えば、よく知られたＵｎｉｘ（登録商標）の「ｆｉｌｅ」という名称のユーティリティは、パターンマッチングに基づいており、ｌｉｂｍａｇｉｃ（ライブマジック）ライブラリーを用いて、所与のファイルに関係したアプリケーションを出力する。
【発明の概要】
【発明が解決しようとする課題】
【００２０】
しかしながら、そのような方法は、例えば、デバイスに記憶されたバイナリーファイルに対して適用される。一方、そのような方法は、サーバーとオンラインクライアントとの間で通信されるデータストリームに対してリアルタイムで実行することができない。
【００２１】
電気通信ネットワークを通じて搬送されるデータストリーム（ＨＴＴＰコンテンツ等）をリアルタイムで解析し、１つ又は幾つかの所与のグループに属するデータに対して更なる解析を実行するために、このデータストリームを異なるグループ（又はタイプ）に分類することが必要とされている。
【課題を解決するための手段】
【００２２】
これらの需要に対処するために、本発明の第１の態様は、電気通信ネットワークを通じてクライアントとサーバーとの間で交換されるデータストリームのリアルタイム分類を実行する方法であって、
データストリームのデータセグメントを受信することであって、このデータセグメントは、データストリーム内におけるデータオフセットを示すことと、
受信されたデータセグメントを用いて、示されたデータオフセットに基づいてビットマップテーブルを更新することであって、このビットマップテーブルは、予め設定されたサイズを有する複数のデータブロックを含み、このデータブロックは、このビットマップテーブルにおいてブロックシーケンス番号によって順序付けられていることと、
ビットマップテーブルを更新した後、最初のブロックシーケンス番号を有する少なくとも１つの最初のデータブロックが完全である場合、最初のブロックシーケンス番号よりも小さなブロックシーケンス番号を有する全てのデータブロックが完成されるのを待機することなく、完全なデータブロックに対して測定を実行して少なくとも１つの測定結果を取得することと、
幾つかの完全なブロックについて取得された測定結果に基づいて少なくとも１つの統計的解析を実行することと、
少なくとも実行された統計的解析に基づいて、複数のグループの中の１つのグループにデータストリームを分類することと、
を含む、方法に関する。
【００２３】
統計的解析が実行されるデータブロックは、潜在的に順不同であるので、データストリームの部分的な再組み立てのみが実行される。
【００２４】
したがって、本発明は、有利には、データストリームの部分的な再組み立てを、順不同の可能性があるデータストリームのデータブロックに対して実行される統計的解析の使用と組み合わせることを提案する。部分的な再組み立てを行うのに必要とされるメモリ及び計算能力はより少なくなる。加えて、部分的な再組み立てを行うことによって、統計的解析をリアルタイムで行うことが可能になり、これによって、レイテンシーが低減され、データストリームの分類が高速化される。データストリームの分類は、中央スーパーバイザーが、疑わしいデータストリームが検出されたときに幾つかのアラームイベントを生成し、フィルタリングポリシーをクライアントに適用し、又はクライアントにインストールされたソフトウェアエージェントとインタラクトしてシステム情報を集めるのに用いることができる。
【００２５】
以下で説明するように、データセグメントは、ＴＣＰデータセグメントとすることができる。
【００２６】
本発明の幾つかの実施の形態によれば、Ｋを予め設定された個数として、データストリームの最初のＫバイトについて、本方法は、
データストリームの最初のＫバイトを含むデータブロックを再組み立てして、それらのそれぞれのブロックシーケンス番号に従って順序付けられたデータブロックを取得することと、
データストリームの最初のＫバイトが受信され、再組み立てされた後、データストリームのＫ個の最初のバイトに対して少なくとも１つのディープパケット検査（ＤＰＩ：Deep Packet Inspection）解析を実行することと、
を更に含み、
データストリームは、実行された統計的解析及びＤＰＩ解析に基づいてグループに分類される。
【００２７】
したがって、これらの実施の形態は、統計的分類解析を決定論的ＤＰＩ解析と有利に組み合わせ、これによって、より多くの数のグループを区別することができるので、分類の精度が改善される。
【００２８】
幾つかの実施の形態によれば、複数のグループは、平文データグループ（cleartext data group）及び少なくとも１つの非平文データグループ（non-cleartext data group）を含み、完全なデータブロックに対して実行される測定は、上記データブロックのエントロピーを求めることを含み、統計的解析は、データストリームのグローバルエントロピー値を求めることを含む。グローバルエントロピー値が、予め設定されたエントロピー閾値よりも大きい場合、データストリームは、非平文データグループに属するものとして分類される。
【００２９】
エントロピーを求めることは、計算リソースの点で多くのコストを要せず、データストリームを平文データ又は非平文データ（圧縮データ又は暗号化データ）を含むものとして分類することを可能にする。
【００３０】
補完として、グローバルエントロピー値が予め設定されたエントロピー閾値よりも低い場合、データストリームは、平文データグループに属するものとして分類することができる。
【００３１】
代替的に又は補完として、グローバルエントロピー値が、予め設定されたエントロピー閾値よりも低い場合、ＤＰＩ解析は、データストリーム内に平文パターンを見つける平文パターン検出を含み、平文パターンがデータストリーム内に見つかった場合、データストリームは、既知の平文フォーマットグループとして分類され、既知の平文フォーマットグループは、平文データグループのサブグループである。
【００３２】
統計的解析を補完して決定論的解析（ＤＰＩ解析）を用いることによって、分類の精度を改善することが可能になる。
【００３３】
更なる補完として、平文パターンがデータストリーム内に見つからなかった場合、ＤＰＩ解析は、データストリーム内に文字集合を見つけるテキストファイル識別解析を更に含むことができ、
文字集合がデータストリーム内に見つかった場合、データストリームは、テキスト符号化グループ又は既知の平文フォーマットグループに属するものとして分類することができ、
文字集合がデータストリーム内に見つからなかった場合、データストリームは、難読化データグループ又は未知の平文フォーマットグループに属するものとして分類することができる。
【００３４】
統計的解析を補完して決定論的解析（ＤＰＩ解析）を用いることによって、分類の精度を改善することが可能になる。
【００３５】
本発明の幾つかの実施の形態によれば、非平文データグループは、少なくとも暗号化グループを含み、測定は、完全なブロックのカイ二乗偏差の推定を実行することを更に含み、統計的解析は、各完全なブロックについて、
上記完全なブロックのカイ二乗偏差を求めることと、
求められたカイ二乗偏差を予め設定された偏差閾値と比較することと、
求められたカイ二乗偏差が予め設定された偏差閾値よりも大きい場合、カウンター値をインクリメントすることと、
を更に含むことができる。
【００３６】
さらに、カウンター値が予め設定された整数Ｎ未満である場合（かつ、以下で説明するように、十分な数の完全なブロックが解析されているならば）、データストリームを暗号化グループに分類することができる。
【００３７】
カイ二乗偏差解析は、計算リソースの点で多くのコストを要せず、圧縮データグループと暗号化グループとを区別することを可能にする。さらに、その計算は、必要とされる計算リソースを削減するためにエントロピー計算と組み合わせることができる。
【００３８】
幾つかの実施の形態によれば、カウンター値が予め設定された整数Ｎ未満である場合、データストリームは、暗号化グループに分類することができ、ＤＰＩ解析は、データストリーム内のＸＯＲパターンを見つけるためにＸＯＲパターンスキャンを含む。ここで、ＸＯＲパターンがデータストリーム内に見つかった場合、データストリームは、難読化グループに分類することができ、ＸＯＲパターンがデータストリーム内に見つからなかった場合、データストリームは、暗号化データグループに分類することができ、難読化グループ及び暗号化データグループは暗号化グループのサブグループである。
【００３９】
統計的解析を補完して決定論的解析（ＤＰＩ解析）を用いることによって、分類の精度を改善することが可能になる。
【００４０】
補完として、カウンター値が予め設定された整数Ｎよりも大きい場合、ＤＰＩ解析は、データストリーム内に圧縮パターンを見つける、データストリームの最初のＫバイトにわたる圧縮パターン識別を含むことができる。ここで、圧縮パターンがデータストリーム内に見つかった場合、データストリームは、既知の圧縮フォーマットグループに分類することができ、圧縮パターンがデータストリーム内に見つからなかった場合、データストリームは、難読化グループ又は未知の圧縮フォーマットグループに分類することができる。
【００４１】
統計的解析を補完して決定論的解析（ＤＰＩ解析）を用いることによって、分類の精度を改善することが可能になる。
【００４２】
本発明の幾つかの実施の形態によれば、本方法は、データストリームが分類されるグループの表示を、クライアントとサーバーとの間で交換されるデータストリームにフィルタリングポリシーを適用することを担当する中央スーパーバイザーに送信することを更に含むことができる。
【００４３】
既に説明したように、送信された表示は、電気通信システムの他のエンティティが有利に用いることができる関連のある情報である。
【００４４】
幾つかの実施の形態によれば、Ｋを予め設定された整数として、データストリームの最初のＫバイトを受信した後、本方法は、この最初のＫバイトを一時バッファーに記憶することを含むことができる。記憶された最初のＫバイトは再組み立てされ、ＤＰＩ解析は、統計的解析の後、この再組み立てされた、記憶された最初のＫバイトに対して実行することができる。
【００４５】
統計的解析の後にＤＰＩ解析を行うことによって、計算リソースを節約することが可能になる。実際は、上記で説明したように、データストリームを分類するのに有用なＤＰＩ解析は、統計的解析の予備的な結果に依存する。したがって、この実施の形態によって、全ての異なるＤＰＩ解析を実行することを回避することが可能になる。すなわち、関連のあるＤＰＩ解析のみが実行される。
【００４６】
幾つかの実施の形態によれば、ビットマップテーブルは、固定サイズ（解析されたＴＣＰデータセグメントに公表されているようなＴＣＰウィンドウサイズに少なくとも等しい）を有し、ウィンドウの底部（bottom）から開始し、本方法は、サーバーとクライアントとの間で交換される肯定応答メッセージであって、ウィンドウの新たな底部を示す肯定応答メッセージを受信すると、ビットマップテーブルがウィンドウの示された当該新たな底部から開始するようにビットマップテーブルを更新することを更に含むことができる。
【００４７】
これによって、データストリームの受信機によって肯定応答されていないデータを含む更新されたビットマップテーブルを維持することが可能になる。
【００４８】
本発明の第２の態様は、コンピュータープログラム製品に関し、当該コンピュータープログラム製品はコンピューター可読媒体を備え、当該コンピューター可読媒体は、コンピュータープログラム命令を記憶し、当該コンピュータープログラム命令は、コンピューティングデバイス内にロード可能であり、コンピューティングデバイス内にロードされて、コンピューティングデバイスによって実行されると、当該コンピューティングデバイスに本発明の第１の態様による方法を実行させるように構成されている。
【００４９】
本発明の第３の態様は、分類デバイスに関し、当該分類デバイスは、電気通信ネットワークを通じてクライアントとサーバーとの間で交換されるデータストリームのリアルタイム分類を実行するものであって、当該分類デバイスは、
データストリームのデータセグメントを受信する入力インターフェースであって、このデータセグメントは、データストリーム内におけるデータオフセットを示す、入力インターフェースと、
プロセッサと、を備え、
当該プロセッサは、以下のステップ、すなわち、
受信されたデータセグメントを用いて、示されたデータオフセットに基づいてビットマップテーブルを更新するステップであって、このビットマップテーブルは、予め設定されたサイズを有する複数のデータブロックを含み、このデータブロックは、このビットマップテーブルにおいてブロックシーケンス番号によって順序付けられている、ステップと、
ビットマップテーブルを更新した後、最初のブロックシーケンス番号を有する少なくとも１つの最初のデータブロックが完全である場合、最初のブロックシーケンス番号よりも小さなブロックシーケンス番号を有する全てのデータブロックが完成されるのを待機することなく、完全なデータブロックに対して測定を実行して少なくとも１つの測定結果を取得するステップと、
幾つかの完全なブロックについて取得された測定結果に基づいて少なくとも１つの統計的解析を実行するステップと、
少なくとも実行された統計的解析に基づいて、複数のグループの中の１つのグループにデータストリームを分類するステップと、
を実行するように構成されている。
【００５０】
本発明の第４の態様は、システムに関し、当該システムは、本発明の第３の態様による分類デバイスと、中央スーパーバイザーとを備え、分類デバイスは、データストリームが分類されたグループの指示子を送信するように構成され、中央スーパーバイザーは、指示子を受信すると、受信された指示子に基づいて電気通信ネットワークにおいてフィルタリングルールを適用するように構成されている。
【図面の簡単な説明】
【００５１】
【図１】本発明の１つの実施形態による電気通信システムを表す図である。
【図２】本発明の１つの実施形態による分類デバイスを表す図である。
【図３】本発明の１つの実施形態によるデータストリームの部分的な再組み立てを実行するビットマップテーブルを示す図である。
【図４】本発明の１つの実施形態によるＴＣＰ解析ユニットによって実行されるステップを示す図である。
【図５】本発明の１つの実施形態によるＨＴＴＰ解析ユニットによって実行されるステップを示す図である。
【図６】本発明の１つの実施形態によるコンテンツ解析ユニットによって実行されるステップを示す図である。
【図７】複数のグループの中の一グループにデータストリームを分類する分類ステップを示す図である。
【発明を実施するための形態】
【００５２】
図１は、本発明の一実施形態によるシステムを示している。
【００５３】
本システムは、ローカルアクセスネットワーク１６に属する幾つかのクライアント１０．１及び１０．２を備える。これらのクライアントは、例えば、ラップトップ１０．１及びデスクトップコンピューター１０．２とすることができる。
【００５４】
クライアント１０．１及び１０．２に限定が加えられることはなく、これらのクライアントは、ラップトップ、デスクトップコンピューター、タッチパネル又はスマートフォン等の任意のユーザーデバイスとすることができる。
【００５５】
クライアント１０．１及び１０．２は、アクセスポイント１１を介してインターネット等の電気通信ネットワーク１２にアクセスすることができる。
【００５６】
図１において、アクセスポイント１１は、有線手段を介してアクセスされる。しかしながら、アクセスポイント１１は、例えばＷｉ−ｆｉを介してクライアント１０．１及び１０．２がアクセスすることができる無線アクセスポイントとすることもできる。
【００５７】
したがって、クライアントは、アクセスポイント１１及びネットワーク１２を通じてアクセスすることができるサーバー１３とデータストリーム（又はファイル）を交換することができる。以下では、「ファイル」、「コンテンツ」又は「ＨＴＴＰコンテンツ」という表現は全て、サーバー１３とクライアント１０．１及び１０．２のうちの一方との間で交換されるデータストリームを指す。
【００５８】
以下では、プロトコルスタックＨＴＴＰ／ＴＣＰ／ＩＰを介したＨＴＴＰコンテンツの交換の例が検討される。ＨＴＴＰコンテンツは、その場合、ＴＣＰセグメントで伝送される。クライアント１０．１及び１０．２とサーバー１３との間でファイルを交換するのに用いられるプロトコルスタックに限定が加えられることはない。
【００５９】
アクセスポイント１１は、本発明の一実施形態による分類デバイス１４を備えることができる。以下で説明するように、分類デバイス１４は、データストリーム（ＨＴＴＰコンテンツ）を複数のグループの中の１つのグループに分類するように構成されている。
【００６０】
分類デバイス１４は、ＴＣＰセグメントに含まれるデータを解析することができる。ＴＣＰセグメントは、ソースＩＰアドレス及びデスティネーションＩＰアドレス並びにソースＴＣＰポート及びデスティネーションＴＣＰポートを含むＴＣＰ４つ組（quadruplet）を用いて識別される。新たに識別された各ＴＣＰ接続にＴＣＰコンテキスト情報を割り当てて付属させることができる。このＴＣＰコンテキスト情報は、その後、ＴＣＰ接続がクローズすると解放することができる。本発明によれば、分類デバイス１４によって実行される分類は、受動的（passive）（又はトランスペアレント（transparent））である。すなわち、ＴＣＰセグメントは、検査のみを受け、変更されることなく転送される。本発明は、持続的接続が用いられるときも有利に実施することができる。以下では、持続的接続のコンテキストが、例示として用いられる。
【００６１】
ＨＴＴＰセッションを搬送するＴＣＰ接続は、当該接続がオープンされている間、監視することができる。以下で説明するように、分類デバイス１４は、ＨＴＴＰ要求（クライアント１０．１及び１０．２からサーバー１３へのアップロードの場合）又はＨＴＴＰ応答（サーバー１３からクライアント１０．１及び１０．２へのダウンロードの場合）のいずれかに挿入されるＴＣＰシーケンス番号及びコンテンツ長フィールドを用いることができ、分類デバイス１４は、持続的接続が用いられているときに、次のＨＴＴＰ要求が挿入されるデータオフセット（ＴＣＰシーケンス番号）を求めることができる。
【００６２】
分類デバイス１４の目標は、ＨＴＴＰコンテンツを、以下の少なくとも２つの異なるグループに分類することである。
平文データグループ；
圧縮データグループ及び暗号化グループを含む非平文データグループ。
【００６３】
平文データグループは、人間が読み取ることができるテキストストリームだけでなく、オフィスソフトウェアスイート、実行可能アプリケーション等の任意のアプリケーション又はオペレーティングシステムによって用いられる非圧縮フォーマット及び非暗号化フォーマットを有する全てのデータストリームも含む。本発明は、前述の列挙したものに限定されるものではなく、平文データグループは、任意の非圧縮フォーマットを包含することができる。例えば、既存のアプリケーションごとに１つのファイルフォーマットを定義することができる。本発明の幾つかの実施形態によれば、平文データグループは、以下の幾つかのサブグループに分割することができる。
分類デバイス１４によって認識されるデータフォーマットを指す既知の平文フォーマットグループ；
未知の平文フォーマットグループ。
【００６４】
圧縮データは、ＷｉｎＺｉｐ、ｒａｒ等のパッキングアプリケーションによって生成することもできるし、画像（ＪＰＥＧ、ＰＮＧ、ＧＩＦ等）、オーディオ（ＭＰ３、ＦＬＡＣ、ＯＧＧ等）及びビデオ（ＭＰＥＧ２、Ｈ．２６４、Ｈ．２６５等）のマルチメディアコンテンツを記憶するのに用いることもできる。種々のメディアをＡＶＩ、ＭＰ４又はＭＫＶ等のコンテナーフォーマットに混合することができる。圧縮方法及びファイルフォーマットが既知であるならば、一般に、更なる情報を必要とすることなく圧縮データを復号化することができる。平文データグループに関して、圧縮データグループを、２つのサブグループ、すなわち、既知の圧縮データグループ及び未知の圧縮データグループに分割することができる。
【００６５】
暗号化は、正当な関係者しか暗号化データを読み取ることができないようにデータを符号化する暗号化アルゴリズムによって生成される。
【００６６】
既に説明したように、暗号化は、悪意のある第三者も、リークしたデータストリームを隠蔽し難読化するのに用いることができる。暗号化データは、解読鍵が判明している場合にしか解読することができない。通常、電気通信ネットワークを通じて交換されるデータストリームは、符号化及び復号化が同じである対称鍵暗号化方法を用いて保護される。この鍵は、より多くのコストを要する非対称鍵暗号化（公開鍵／秘密鍵）を用いて送信機と受信機との間（サーバー１３とクライアント１０．１又は１０．２との間）で前もって交換される。その場合、鍵は平文で交換されないので、鍵にアクセスする唯一の方法は、送信機又は受信機のいずれかにおけるメモリを解析し、交換された暗号化データを解読するために鍵を抽出することである。
【００６７】
任意選択で、暗号化グループは、以下の少なくとも３つのサブグループに分割することができる。
ＡＥＳ、３ＤＥＳ等の真の暗号化方式（暗号化データグループと呼ばれる）；
ＸＯＲ符号化等の難読化方式（難読化データグループと呼ばれる）；
ＡＳＣＩＩ（アスキー）文字のみをサポートするメディアを通じてバイナリーメッセージを送信するのに用いられる符号化方法（例えば、ベース６４）（テキスト符号化グループと呼ばれる）。
【００６８】
これらの３つのサブグループの識別は、システム解析を最適化するとともに演算の数を削減するのに役立つ可能性がある。
【００６９】
図１に示すように、分類デバイス１４は、アクセスポイント１１に含まれる。これは、分類デバイス１４が、その場合に、ＬＡＮ１６とサーバー１３との間の全てのデータストリームを解析することができるので有利である。
【００７０】
分類デバイス１４は、クライアント１０．１及び１０．２とサーバー１３との間で交換されるデータストリームにアクセスすることができるならば、アクセスポイント１１の外部に配置することもできる。
【００７１】
分類の結果（データストリームが分類された、決定されたグループの指示子）は、中央スーパーバイザー１５に送信することができる。この中央スーパーバイザーは、以下で説明するように、更なる解析を実行することができ及び／又は制限ポリシーをクライアント１０．１及び１０．２に適用することができ及び／又はクライアント１０．１及び１０．２に記憶された情報にアクセスすることができる。代替的に、分類デバイス１４は、疑わしいデータストリームが検出されると、アラームイベントを中央スーパーバイザー１５に送信することができる。アラームイベントは、その後、解析、アドミニストレーターへの表示、及び／又はＬＡＮ１６における多岐にわたるフィルタリングポリシーの適用を行うために、中央スーパーバイザー１５が収集することができる。任意選択で、中央スーパーバイザー１５は、クライアント１０．１及び１０．２のそれぞれにインストールされたソフトウェアエージェントとインタラクトしてシステム情報を集めることもできる。
【００７２】
図１では、中央スーパーバイザー１５は、ＬＡＮ１６に属するものとして示されている。しかしながら、中央スーパーバイザー１５は、ＬＡＮ１６の外部に配置することができる。その場合、中央スーパーバイザー１５は、電気通信ネットワーク１２を介してクライアント１０．１及び１０．２によるアクセスを受けることができるとともに、クライアント１０．１及び１０．２にアクセスすることができる。
【００７３】
幾つかの分類方法を分類デバイス１４によって実行し、データストリームを異なるグループに分類することができる。
【００７４】
分類方法の第１のカテゴリー：統計的方法
分類方法の第１のカテゴリーは、エントロピー推定又はカイ二乗分布（CHI-square distribution：χ２分布）の偏差測定等の統計的解析に基づくものである。これらの方法は、それ自体よく知られているが、以下で手短に説明する。
【００７５】
エントロピー推定：
圧縮データを含むファイルの主な特性は、高いエントロピーであり、これは、ファイルに含まれる平均情報量（又は情報密度）が高いことを意味する。データソースのエントロピーレートは、シンボルを符号化するのに必要とされるシンボル（すなわち、バイト）当たりの平均ビット数を意味する。シャノンによれば、可能な値の集合｛ｘ１，ｘ２，．．．，ｘｎ｝及び確率質量関数Ｐ（Ｘ）を有する離散確率変数ＸのエントロピーＨは、以下の式によって与えられる。
【数１】
0006556232.tif 000002
【００７６】
通常、ファイル内のデータを圧縮するということは、バイト当たり最大８ビット（完全無損失圧縮）までのエントロピーの増大をもたらす。
【００７７】
ほとんどのアプリケーションによって用いられる非圧縮ファイルは、それよりも低いエントロピーレベルを有する。例えば、Ｃソースファイル等のテキストＡＳＣＩＩファイルは、約４．９ビットのエントロピーを有し、その結果、シンボル当たりのビット数は４．９から８に移るので、３９％のファイル縮小の可能性がある。通常のＸ８６  Ｗｉｎｄｏｗｓ（登録商標）実行可能ファイルは、バイト当たり６．３ビットのエントロピーを有する。少なくとも、通常のＭｉｃｒｏｓｏｆｔ−Ｗｏｒｄ（登録商標）非圧縮文書ファイルは、バイト当たり約４．１ビットのエントロピーを有する。
【００７８】
したがって、エントロピー推定は、平文データと圧縮データとを区別する良好な指標である。しかしながら、暗号化データは、高いエントロピー平均も有し、したがって、この指標は、種々の非平文データストリームを区別するのに十分でない。
【００７９】
カイ二乗偏差：
カイ二乗分布方法は、データのランダム性を試験するのに用いられ、擬似乱数列発生器におけるエラーに対して極めて感度が高い。その結果、カイ二乗分布方法は、暗号化データグループと圧縮データグループとを区別する満足基準として用いることができる。
【００８０】
実際は、圧縮アルゴリズムは、幾つかのフォーマットに準拠するようにタグを挿入する場合がある。その結果、生成されたファイルは、暗号化方法によって作成されたファイルよりもランダム性が低下する。換言すれば、シンボル（バイト）の分布は、χ２統計量を計算することによって一様分布と比較することができる。このχ２は、以下のように表すことができる。
【数２】
0006556232.tif 000003
ここで、Ｏｉは、ファイル内のインデックスｉのシンボルの出現回数（インデックスｉのシンボルの頻度とも呼ばれる）であり、
Ｅｉは、インデックスｉのシンボルの予想される理論上の頻度である。
【００８１】
本発明者らの場合、２５６個の可能なシンボル（ＡＳＣＩＩ文字）について、そのため、
【数３】
0006556232.tif 000004
について、観測された分布が一様分布と比較される。
【００８２】
データストリームの幾つかの短いデータブロックにわたってカイ二乗偏差を計算し、カイ二乗偏差を閾値と比較し、カイ二乗偏差がデータストリームのかなりの部分にわたって閾値を越えているブロックの数をカウントすることによって、圧縮アルゴリズムによって生成された擬似乱数列の不備な点を検出することができる。
【００８３】
この最新の方法は、進行中のデータストリームを解析するのに適用することができる。なぜならば、この方法は、短いブロック（例えば、３２バイト又は６４バイト）に適用することができ、順次データを解析することを必要とせず、それによって、メモリ及びレイテンシーの観点から多くのコストを要するＴＣＰセグメントの完全な再組み立て（full reassembly）が回避されるからである。この方法は、必要とされる計算能力も削減する。
【００８４】
第１のグループの方法（エントロピー推定及びカイ二乗偏差を含む統計的方法）は、パケットを順序付けることが統計量を変更しないので、順序正しいデータパケットにアクセスすることを要しない。データは、固定長を有するデータのブロックの形態でそれらの方法に提供することができる。しかしながら、これらの方法は、一般に、データストリーム全体を解析することを要する。
【００８５】
分類方法の第２のカテゴリー：決定論的方法
分類方法の第２のカテゴリーは、プロトコルパーシング及びパターンマッチングアルゴリズム等のディープパケット検査（ＤＰＩ）解析に基づく方法を含む。これらの方法は、順序正しいデータにアクセスすることを要するが、完全なファイルを解析する必要はない。確かに、ファイルフォーマットは、データストリームの最初のＫバイトにわたる短い特定のデータシーケンスを識別することによって識別することができる。
【００８６】
パターン検出
ファイルフォーマット識別（したがって、ファイル分類）は、パターン検出を適用することによって行うことができる。このパターン検出は、データストリームの先頭（最初のＫバイト、Ｋは例えば１０００に等しい）において、データベース内に列挙された短い既知のパターンを見つけることを含む。
【００８７】
パターン検出方法は、例えば、Ｕｎｉｘ（登録商標）ユーティリティファイルによって実施され、「マジックテスト（magic test）」と呼ばれる。所与のファイルについて、マジックテストは、「ｌｉｂｍａｇｉｃ」データベースに基づいて対応するアプリケーションを取り出すことができる。このデータベースは、ファイルフォーマットごとに、指定されたファイルオフセットにおいてバイト、ワードに適用される幾つかのテストルールを定義する。そのような方法は、決定論的であり、圧縮バイナリーフォーマット（ＺＩＰ、rａｒ等）を含む多数の異なるフォーマットに対して効率的である。一方、そのような方法は、統計的解析方法の処理よりも複雑で多くのコストを要する処理を必要とする。したがって、以下で説明するように、本発明の幾つかの実施形態は、統計的解析方法を補完してパターン検出を用い、平文データグループ及び圧縮データグループの既知のサブグループと未知のサブグループとの間でファイルを分類することを有利に提案する。
【００８８】
テキストファイル識別：
データベース（上記で説明したとおり）に基づくパターン検出は、バイナリーファイルに対して効率的である。一方、この方法は、テキストデータストリームを検出することができない。なぜならば、そのようなデータストリームには、予め設定されたパターンが存在しないからである。その結果、付加的な決定論的方法を実施して、ＡＳＣＩＩ文字集合符号化方法、ＵＴＦ−８符号化方法又は他の任意の文字符号化方法を試験することができる。本発明では、これまでに明らかにされたパターン検出方法が失敗したときにのみ、テキストファイル識別が用いられる。完全に信頼可能なものにするために、テキストファイル識別は、好ましくはファイル全体に適用される。なぜならば、ファイルは、テキスト部分とバイナリー部分とを含む場合があるからである。一方、この種のファイルは、全く一般的でない（uncommon）ので、テキストファイル識別は、有利には、ファイルの先頭（例えば、最初のＫバイト）にのみ適用することができる。
【００８９】
ＸＯＲ暗号化ファイル検出：
データストリームを符号化するのに用いられていたＸＯＲ鍵の長さを検出する効率的な検出方法が知られているが、この検出方法は、暗号化データストリーム内のパターンの知識を必要とする。例えば、Ｍｉｃｒｏｓｏｆｔ−Ｗｉｎｄｏｗｓ（登録商標）実行可能ファイルには、「This program cannot be run in DOS mode（このプログラムはＤＯＳモードで実行することはできません）」等の既知のパターンを体系的に見つけることができる。ＸＯＲ演算の幾つかの基本的特性を用いると、各可能なＸＯＲ鍵長について演算の数を単一のＸＯＲパターンスキャンに削減することができる。鍵長ＬのＸＯＲパターンスキャンは、ＸＯＲ変換をデータストリームに適用することと、所与のＸＯＲ鍵長Ｌについて予め計算された幾つかの既知のパターンを変換されたデータストリーム内で検索することとを含む。これは、検索されたパターンがＸＯＲ鍵よりも長い長さを有することを要する。
【００９０】
この手法は、既知のパターンを体系的に含むＸＯＲ暗号化ファイルを検出するのに用いることができる。通常、マルウェアは短いＸＯＲ鍵（例えば、３２ビット）を用いており、そのため、この手法を上記で説明したパターン検出手法と効率的に結合することができるようになっている。
【００９１】
上述した分類方法の２つのカテゴリーは、それ自体よく知られているので、これ以上詳述されない。以下で説明するように、本発明は、これらの分類方法を組み合わせるとともに、サーバー１３とクライアント１０．１及び１０．２との間で通信される少なくとも１つのファイルのリアルタイム解析にこの組み合わせを最適化する方法を提案する。
【００９２】
図２は、本発明の一実施形態による分類デバイス１４を示している。
【００９３】
分類デバイス１４は、以下で説明するような方法のステップを実行する命令を記憶することができるランダムアクセスメモリ２０４及びプロセッサ２０３を備える。
【００９４】
分類デバイス１４は、本発明による方法から得られたデータを記憶するデータベース２０５も備えることができる。例えば、データベース２０５は、分類結果（データストリームが属するグループの指示子）を、データストリームを識別するＴＣＰ４つ組と関連付けて記憶することができる。
【００９５】
分類デバイス１４は、クライアント１０．１及び１０．２とサーバー１３との間で交換されるＨＴＴＰコンテンツ（又はより一般的には任意のデータストリーム）を受信する入力インターフェース２０１を備える。分類デバイス１４は、入力インターフェース２０１上で受信されたＨＴＴＰコンテンツを転送するように構成されているとともに、以下で説明するような中央スーパーバイザー１５にデータを送信するようにも構成されている出力インターフェース２０６も備える。
【００９６】
分類デバイス１４は、デジタル信号プロセッサ２０２も備えることができる。
【００９７】
プロセッサ２０３は、ＴＣＰ解析ユニット２０７を備える。このＴＣＰ解析ユニットは、ＴＣＰパケットの受信、オープンされた各ＴＣＰ接続の状態の監視、ＨＴＴＰコンテンツを伝達するＴＣＰデータセグメントの再組み立て、及びＴＣＰ接続の状態によるＨＴＴＰ解析ユニット２０８又はデータストリーム解析ユニット２０９（コンテンツ解析ユニット２０９とも呼ばれる）へのデータセグメントの転送を担当する。以下で詳述するように、ＴＣＰ解析ユニット２０７によって実行される再組み立ては、部分的なＴＣＰ再組み立てとすることができる。
【００９８】
ＨＴＴＰ解析ユニット２０８は、ＴＣＰ解析ユニット２０７が、レイヤ５の他のプロトコルを搬送するＴＣＰ接続をスキップすることができるように、ＨＴＴＰセッションを識別するよう構成されている。これは、一具体例として与えられているものであって、既に説明したように、本発明をＨＴＴＰ／ＴＣＰ／ＩＰプロトコルスタックに限定するものではない。ＨＴＴＰセッションの場合、ＨＴＴＰ解析ユニット２０８は、ＨＴＴＰ本体の長さを示すコンテンツ長ヘッダー等の関連のある情報を得るために、ＨＴＴＰパケットのＨＴＴＰヘッダーをパース（parse）する。ＨＴＴＰ解析ユニット２０８は、コンテンツ解析ユニット２０９による更なる解析のためにＨＴＴＰ本体も抽出することができる。ＨＴＴＰ解析ユニット２０８は、好ましくは、ＲＦＣ２６１６の仕様に記載されているようにＴＣＰ持続的接続をサポートする。
【００９９】
コンテンツ解析ユニット２０９は、上記で説明した第１のカテゴリー及び第２のカテゴリーの分類方法を実施し、次いで、分類デバイス１４によって受信されて転送されたデータストリームを複数の分類グループの中の或るグループに分類するように構成されている。
【０１００】
図３は、本発明の幾つかの実施形態によるビットマップテーブル３００を示している。ビットマップテーブル３００は、受信データセグメントの部分的な再組み立てを実行するためにＴＣＰ解析ユニット２０７によって用いられる。
【０１０１】
部分的な再組み立ては、ビットマップテーブル３００のデータブロック３０３に基づくことができ、これらのデータブロックは、短い固定サイズＢ、例えば３２バイト又は６４バイトのブロックである。ビットマップテーブル３００は、ＴＣＰウィンドウサイズに少なくとも等しい（例えば、ＴＣＰウィンドウサイズに等しい）固定サイズを有する。以下では、８００バイトに等しいＴＣＰウィンドウサイズと、３２バイトのサイズＢを有するデータブロック３０３とを有する下記の例を例示として検討する。
【０１０２】
各データブロックは、受信されたＴＣＰストリーム内でのそのオフセットによって識別される。各ブロックのオフセットは、ブロックシーケンス番号Ｎとして変換することができる。ここで、
【数４】
0006556232.tif 000005
であり、TCP_sequence_numberは、ＴＣＰ接続におけるブロックの最初のバイトのオフセット（最初のTCP_sequence_numberが０である場合には、最初のバイトのオフセット＋１）である。
【０１０３】
ＴＣＰウィンドウ内の各ブロックの受信は、サイズTCP_Window_Size／Ｂのビットマップテーブル３００、すなわち、８００／３２=２５個のデータブロックを用いて監視される。
【０１０４】
ビットマップテーブル３００は、ウィンドウの底部３０１及びウィンドウの末端部（end）３０２を含む。
【０１０５】
各ブロックは、ｋ〜ｋ＋２４に変化するそのブロックシーケンス番号Ｎによってインデックス付けされる。ここで、ｋは、ウィンドウの底部３０１のブロックシーケンス番号である。
【０１０６】
ウィンドウの底部３０１は、監視され、各受信データブロックのビットマップテーブル内におけるビット位置（オフセット）の計算を可能にする。ウィンドウの底部３０１は、ＴＣＰエンドポイント受信機によって返されるＴＣＰ肯定応答メッセージ（ＡＣＫ）に基づいて取得される。
【０１０７】
データオフセットを示すＴＣＰパケットにカプセル化されたデータシーケンス３０５が受信されると、ビットマップテーブル３００は、このデータシーケンス３０５を用いて、示されたデータオフセットに基づいて更新される。例えば、図３の例では、ウィンドウの底部３０１がブロックシーケンス番号０（ＴＣＰ接続の開始）を有すると仮定すると、受信データシーケンスの最初のバイトのデータオフセットは、３５０とすることができる。３５０を３２によって除算した比の整数部分は１０であるので、データシーケンスは、１１番目のデータブロック（ブロックシーケンス番号は１０に等しい）の一部分をカバーする。データシーケンスの長さは、１２番目のデータブロックから１９番目のデータブロックまでのビットマップテーブルを完全に満たすようになっている。２０番目のブロック（ブロックシーケンス番号は１９に等しい）も部分的に満たされる。
【０１０８】
本発明によれば、ブロックシーケンス番号２、１０及び１９のデータブロックの場合に該当するように、２つの異なるデータセグメントにわたって分割された単一のブロックのデータを一時的に記憶するのに短いバッファーを用いることができる。
【０１０９】
このバッファーのサイズは、データブロックのサイズ（３２バイト）に等しく、図３（ＴＣＰデータセグメントが喪失され、再送信される場合がある）における場合のように、データセグメントが正しいシーケンスで送信されないときは、数個のバッファーを単一のＴＣＰ接続に用いることができる。
【０１１０】
不完全なデータブロック（ビットマップテーブル３００におけるグレーのブロック）は、図３の右側に示すペンディングブロックリストに入れることができる。ペンディングブロックリストは、更に受信されるＴＣＰセグメントに存在する補完データの受信を待機する短いバッファーに対応する。不完全なブロックは、それぞれ３０３．２、３０３．１０及び３０３．１９のラベルが付けられている。不完全なブロック３０３．２、３０３．１０及び３０３．１９のそれぞれにおけるハッチングエリアは受信データを表す。
【０１１１】
図３では、受信ブロックは黒色であり、一方、非受信ブロックは白色である。
【０１１２】
ウィンドウの底部が更新されると（すなわち、ウィンドウの新たな底部を示すＴＣＰ肯定応答メッセージが受信されると）、ビットマップテーブル３００を更新することができる。ウィンドウの以前の底部と新たな底部との間に含まれるビットはリセットされ、更新されたビットマップテーブルは、ウィンドウのこの新たな底部から開始する。
【０１１３】
部分的な再組み立ては、ブロックのそれぞれのブロックシーケンス番号に従ってブロックを順序付ける必要なく、順序付けられたデータ（ブロックの内部において順序付けられたデータ）のブロックを取得することを含む。
【０１１４】
図４は、本発明の幾つかの実施形態による方法のステップを示す図である。特に、図４は、部分的に再組み立てされてコンテンツ解析ユニット２０９に供給されるＨＴＴＰ本体に属するデータシーケンスの受信の際にＴＣＰ解析ユニット２０７によって実行されるステップを示している。データは、固定データのブロックとしてコンテンツ解析ユニット２０９に提供される。すなわち、各ブロック内では、データは順序正しく、ブロックは、コンテンツ解析ユニット２０９に順不同で送信することができる。
【０１１５】
ステップ４０１において、データセグメントが受信される。このデータセグメントは、データオフセット及びセグメントサイズを示す。
【０１１６】
ステップ４０２において、データオフセットに基づいて、ビットマップテーブル３００のデータブロックを満たすデータセグメントの最初の部分（例えば、図３では、データセグメント３０５の最初の部分は、データブロック３０３．２に挿入されるデータを含む）が求められる。最初の部分の長さは、ビットマップテーブル３００のデータブロックの長さＢ以下である。
【０１１７】
ステップ４０３において、最初の部分で満たされるデータブロックのブロックシーケンス番号ＢＳＮが求められる。このために、最初の部分の最初のバイトのオフセットをＢ（３２バイト）によって除算した比の整数部分が計算される。この整数部分は、図３に示す例では１０に等しい。
【０１１８】
ステップ４０４において、ＴＣＰ解析ユニット２０７は、ブロックシーケンス番号がペンディングブロックリストのデータブロック（不完全なデータブロック）のブロックシーケンス番号に対応するか否かを判断する。
【０１１９】
ブロックシーケンス番号が、ペンディングブロックリストのデータブロックのブロックシーケンス番号に対応しない場合、ステップ４０５において、最初の部分の長さが、Ｂ（３２バイト）と比較される。
【０１２０】
最初の部分の長さが、（図３に示す例の場合のように）厳密にＢ未満である場合、ステップ４０６において、空きバッファーが、最初の部分を一時的に記憶するのに用いられ、ブロックシーケンス番号ＢＳＮがペンディングブロックリストに追加される。
【０１２１】
最初の部分の長さがＢに等しい場合、ステップ４０７において、最初の部分が、以前に受信されたデータ（冗長データ）に対応するか否かが、ビットマップテーブル３００内の対応するビットを試験することによって判定される。
【０１２２】
最初の部分が冗長データでない場合、ブロックシーケンス番号ＢＳＮのデータブロックは、最初の部分によって完全に満たされており、ＢＳＮよりも小さなブロックシーケンス番号を有する全てのデータブロックが完成されるのを待機することなく、ステップ４０８においてコンテンツ解析ユニット２０９に送信される。次に、ビットマップテーブル３００内に対応するビットが設定される。
【０１２３】
ステップ４１１において、最初の部分がデータシーケンスの最後の部分であるか否かが調べられる。最後の部分である場合、ステップ４１３において、再組み立てが終了する。そうでない場合、データシーケンスの次の部分が、ステップ４１２において決定され、当該次の部分について、ステップ４０３以降の各ステップの処理が実行される。
【０１２４】
ステップ４０７において、最初の部分が冗長データであると判断された場合、本方法は、ステップ４１１に直接進む。
【０１２５】
ステップ４０４において、ブロックシーケンス番号ＢＳＮがペンディングブロックリストのブロックに対応すると判断された場合、ステップ４０９において、最初の部分のデータは、ブロックシーケンス番号ＢＳＮに対応するバッファーにコピーされる。
【０１２６】
ステップ４１０において、最初の部分がブロックシーケンス番号ＢＳＮのデータブロック内にコピーされた後、ブロックシーケンス番号ＢＳＮのデータブロックが完全であるか否かが判定される。
【０１２７】
ブロックシーケンス番号ＢＳＮのデータブロックが完全である場合、このデータブロックは、ＢＳＮよりも小さなブロックシーケンス番号を有する全てのデータブロックが完成されるのを待機することなく、ステップ４０８においてコンテンツ解析ユニット２０９に送信される。
【０１２８】
ブロックシーケンス番号ＢＳＮのデータブロックが不完全である場合、ステップ４１１において、次の部分が決定される。
【０１２９】
図５は、本発明の幾つかの実施形態による方法のステップを示す図である。特に、図５は、ＨＴＴＰセッションを搬送するＴＣＰセグメントの受信の際にＨＴＴＰ解析ユニット２０８によって実行されるステップを示している。接続識別、ＴＣＰコンテキスト割り当て及び標準的な再組み立て等のＴＣＰプロトコルに関係した標準的な動作は、以下では詳述されない。ＨＴＴＰ解析ユニット２０８は、それぞれの方向（アップリンク及びダウンリンク）に専用化された別々のユニットを備えることができる。
【０１３０】
ステップ５０１において、ＴＣＰデータセグメントが、ＨＴＴＰ解析ユニット２０８によって受信される。
【０１３１】
ステップ５０２において、ＴＣＰデータセグメントが新たなＨＴＴＰ要求を伝送しているか否かが判断される。ＴＣＰデータセグメントが新たなＨＴＴＰ要求を伝送している場合、ステップ５０３において、完全な再組み立てを起動することができる。
【０１３２】
ステップ５０４において、ＴＣＰデータセグメントがＨＴＴＰヘッダーの少なくとも一部を伝送しているか否かが判定される。
【０１３３】
伝送している場合、ステップ５０６において、ＨＴＴＰヘッダーが完全であるか否か（又はデータセグメントが、以前のＴＣＰデータセグメントにおいて受信されたＨＴＴＰヘッダーの一部を完成させることを可能にするか否か）が判断される。
【０１３４】
ＨＴＴＰヘッダーが完全である場合、ステップ５０７において、ＨＴＴＰコンテンツの長さを求めることができる。
【０１３５】
ＨＴＴＰヘッダーが不完全である場合、本方法は、以下で詳述するステップ５１０に直接進む。
【０１３６】
ステップ５０７に続いて、ステップ５０８において、ＨＴＴＰヘッダーはスキップされ、ステップ５０９において、ＴＣＰセグメントがＨＴＴＰ本体の一部も伝送しているか否かが判断される。ＨＴＴＰ本体の一部を伝送していない場合、本方法は、ステップ５１０に直接進み、このステップにおいて、次のＴＣＰデータセグメントが受信される。
【０１３７】
ステップ５０４において、ＴＣＰデータセグメントがＨＴＴＰヘッダーからのデータを含まないと判断された場合、又はステップ５０９において、ＴＣＰデータセグメントがＨＴＴＰ本体のデータを含むと判断された場合、このデータセグメントは、ステップ５０５において、ＴＣＰ解析ユニット２０７に送信され、図４に示すステップが実行される（部分的な再組み立てが起動されている場合）か、又は完全な再組み立てが実行される（完全な再組み立てが起動されている場合）。
【０１３８】
次に、ステップ５１１において、第２のカテゴリーの分類方法（ＤＰＩ解析方法）を実行するのに必要とされるＨＴＴＰコンテンツの全てのデータが受信されているか否かが判断される。説明したように、ＤＰＩ解析方法は、ＨＴＴＰ本体の最初のＫバイト（例えば、最初の１０００バイト）に対して実行することができ、最初のＫバイトを含むブロックは再順序付けされていなければならない（完全な再組み立て）。
【０１３９】
第２のカテゴリーの分類方法を実行するのに必要とされるＨＴＴＰコンテンツの全てのデータが受信されている場合、ステップ５１２において、部分的な再組み立てが起動される。
【０１４０】
ステップ５１３において、ＨＴＴＰコンテンツが完全に受信されているか否かが検証される。受信されている場合、ステップ５１４において、分類デバイス１４の処理を完結させることができ、分類の結果を中央スーパーバイザー１５に送信することができる。
【０１４１】
ＨＴＴＰコンテンツが完全に受信されていない場合、本方法は、新たなＴＣＰデータセグメントを受信するためにステップ５１０に進む。
【０１４２】
したがって、説明したように、完全な再組み立て手順は、ＨＴＴＰヘッダー及びＨＴＴＰ本体の先頭の受信についてのみ有効にされる。完全な再組み立て手順は、ＤＰＩ分類方法が更なるデータを必要としないときは直ちに無効にされる。ＨＴＴＰヘッダーが完全に受信され、正確に解析されると直ちに、ＤＰＩ分類方法に順序正しいブロックが供給される。ＨＴＴＰヘッダーはパースされ、ＲＦＣ２６１６に詳述されているプロトコル文法と照合される。特に、ヘッダーのコンテンツ長フィールドが抽出され、ＨＴＴＰ本体部の末端の位置を特定するために調べられる。
【０１４３】
図６は、本発明の幾つかの実施形態による方法のステップを示す図である。特に、図６は、（図４のステップ４０８を実行するＴＣＰ解析ユニット２０７からの）完全なデータブロックの受信の際に、コンテンツ解析ユニット２０９によって実行されるステップを示している。
【０１４４】
ステップ６００において、コンテンツ解析ユニット２０９は、サイズＢの完全なデータブロックを受信する。
【０１４５】
ステップ６０１において、受信されたデータブロックがＨＴＴＰコンテンツの最初のＫバイトからのデータを含むか否かが判断される。含む場合、受信されたデータブロックは、第２のカテゴリーの分類方法にとって有用であり、ステップ６０２において、バッファーにアペンド（append）することができる。
【０１４６】
ステップ６０３において、測定結果を取得し、ＨＴＴＰコンテンツの統計的解析を更新するために、少なくとも１つの測定が、受信されたデータブロックに対して実行される。この測定は、データブロックのエントロピーを求めること又はデータブロックのカイ二乗偏差を測定することを含むことができる。次に、以下で説明するように、データブロックの新たに求められたエントロピーに基づいてデータストリームのグローバルエントロピー値を更新することもできるし、カイ二乗偏差が閾値よりも大きい場合には、カウンター値をインクリメントすることもできる。
【０１４７】
ステップ６０４において、少なくとも１つの統計的解析が、測定結果に基づいて更新される。
【０１４８】
ステップ６０５において、受信された完全なデータブロックがコンテンツの最後のブロックであるか否か（コンテンツの全てのブロックが受信されたか否か）が判定される。
【０１４９】
受信された完全なブロックが最後のブロックでない場合、本方法は、ステップ６００に戻って新しい完全なデータブロックを受信する。
【０１５０】
受信された完全なブロックが最後のブロックである場合、バッファーに記憶された最初のＫバイトに基づいて、第２のカテゴリーの決定論的分類方法を任意選択で実行することができる（ステップ６０６）。
【０１５１】
ステップ６０７において、ステップ６０４において実行された最後の更新に基づいて、したがって、全ての受信された完全なデータブロックについて取得された測定結果に基づいて、統計的解析の結果が抽出される。幾つかの結果は、幾つかの統計的解析（カイ二乗偏差及びエントロピー推定）が実行された場合に抽出することができる。例えば、エントロピー推定の場合、全てのデータブロックのそれぞれのエントロピーの平均値を計算して、コンテンツのグローバルエントロピー値を取得することができる。カイ二乗偏差方法の場合、完全な各データブロックのカイ二乗偏差を予め設定された偏差閾値と比較することができ、カイ二乗偏差が当該偏差閾値を上回るごとにカウンター値（初期値は０）をインクリメントすることができる。その後、このカウンター値は、以下で説明するように、予め設定された整数Ｎと比較することができる。
【０１５２】
代替的に、ステップ６０５において、ブロックの閾値数が完了したか否かを判断することができる。実際は、統計的解析は、データストリームの全てのデータブロックに対して実行することを必要とせず、測定結果を求めるのに最小数のブロックが解析された場合に重要となる可能性がある。
【０１５３】
ステップ６０８において、少なくとも１つの統計的解析の結果に基づいて、コンテンツが、複数のグループの中の１つのグループに分類される。一方、本発明は、図７に示すように、幾つかの統計的解析（第１のカテゴリー）及び補完的な決定論的方法（第２のカテゴリー）に依拠してコンテンツを分類することもできる。
【０１５４】
図７は、図６に示すステップ６０８を実行するときにコンテンツ解析ユニットによって実施される例示的な分類図である。
【０１５５】
ステップ７０１において、コンテンツのグローバルエントロピー値が取り出され、ステップ７０２において、予め設定された第１のエントロピー閾値（例えば、０と８との間に含まれる）と比較される。
【０１５６】
グローバルエントロピー値が「低い」（すなわち、第１のエントロピー閾値未満である）場合、コンテンツは、平文データグループに属するものとして分類することができる。
【０１５７】
エントロピー値が「高い」（すなわち、第１のエントロピー閾値よりも大きい）場合、コンテンツは、非平文データグループ（暗号化グループ及び圧縮データグループを含む）に属するものとして分類することができる。
【０１５８】
したがって、本発明によって、データストリームの部分的な再組み立て後に実行される統計的解析に基づいて、コンテンツの２つのグループを区別することが可能になる。
【０１５９】
幾つかの実施形態によれば、更なる分類方法を用いて、分類の精度を改善することができる。
【０１６０】
例えば、ステップ７０２においてグローバルエントロピー値が高いと判断された場合、ステップ７０３において、カイ二乗偏差の推定値を取り出すことができる。ステップ７０４において、上記で説明したカウンター値が、予め設定された整数Ｎと比較される。カウンター値がＮよりも大きい場合には、コンテンツを、暗号化グループに属するものとして分類することができ、カウンター値がＮ未満の場合には、コンテンツを、圧縮データグループに属するものとして分類することができる。
【０１６１】
したがって、最大２つの統計的分類方法を用いることによって、コンテンツを３つの異なるグループの中の１つのグループに分類することができる。
【０１６２】
より高い精度が必要とされる場合、本発明は、コンテンツを上述した３つの主なグループのサブグループに分類するために決定論的方法（ＤＰＩ解析）を用いることを提案する。
【０１６３】
ステップ７０４においてカウンター値がＮよりも大きいと判断された場合、ステップ７０５において、ＸＯＲデルタパターン識別をコンテンツ（一時バッファーに記憶された最初のＫバイト）に対して実行することができる。
【０１６４】
ステップ７０６においてＸＯＲデルタパターンがコンテンツ内に見つかった場合、ステップ７０７において、このコンテンツを難読化グループに属するものとして分類することができる。見つからなかった場合、ステップ７０８において、このコンテンツを暗号化データグループに属するものとして分類することができる。
【０１６５】
ステップ７０４においてカウンター値がＮ未満と判断された場合、ステップ７０９において、圧縮パターン検出がコンテンツ（一時バッファー内の最初のＫバイト）に対して実行される。
【０１６６】
ステップ７１０において圧縮パターンがコンテンツ内に見つかった場合、ステップ７１１において、このコンテンツを既知の圧縮フォーマットグループに属するものとして分類することができる。
【０１６７】
ステップ７１０において圧縮パターンがコンテンツ内に見つからなかった場合、ステップ７１２において、ＸＯＲパターンスキャンをコンテンツ（一時バッファー内の最初のＫバイト）に対して実行することができる。
【０１６８】
ステップ７１３においてＸＯＲパターンが見つかった場合、ステップ７１４において、コンテンツを難読化グループに属するものとして分類することができる。見つからなかった場合、ステップ７１５において、コンテンツを未知の圧縮フォーマットグループに属するものとして分類することができる。
【０１６９】
ステップ７０２においてコンテンツのグローバルエントロピー値が低いと判断された場合、ステップ７１６において、平文パターン検出をコンテンツ（一時バッファー内の最初のＫバイト）に対して実行することができる。
【０１７０】
ステップ７１７において平文パターンが見つかった場合、ステップ７１８において、コンテンツを既知の平文フォーマットグループに属するものとして分類することができる。
【０１７１】
ステップ７１７において平文パターンが見つからなかった場合、ステップ７１９において、テキストファイル識別をコンテンツ（一時バッファー内の最初のＫバイト）に対して実行することができる。
【０１７２】
ステップ７２０において文字集合が識別された場合、ステップ７２１において、その文字集合が、第２の既定の閾値よりも高いエントロピーを有するＡＳＣＩＩ文字集合であるか否かが判断される。文字集合がＡＳＣＩＩ文字集合であり、エントロピーが第２の既定の閾値よりも高い場合、ステップ７２３において、コンテンツをテキスト符号化グループに属するものとして分類することができる。そうでない場合、ステップ７２２において、コンテンツを既知の平文グループに属するものとして分類することができる。
【０１７３】
ステップ７２０において文字集合がコンテンツ内に見つからなかった場合、ステップ７２４において、ＸＯＲパターンスキャンがコンテンツ（一時バッファー内の最初のＫバイト）に対して実行される。
【０１７４】
ステップ７２５においてＸＯＲパターンが見つかった場合、ステップ７２６において、コンテンツを難読化グループに属するものとして分類することができる。見つからなかった場合、ステップ７２７において、コンテンツを未知の平文フォーマットグループに属するものとして分類することができる。
【０１７５】
したがって、上記で説明したとおり、統計的解析は、関連のある結果を取得するために各コンテンツの大きな部分に対して実行することができる一方、決定論的分類方法（ＤＰＩ解析）は、コンテンツの短い部分（一般に、コンテンツの先頭で十分である）に対してのみ実行することができる。図６に示す実施形態によれば、コンテンツの先頭は、ステップ６０２において一時バッファーに記憶することができる。その後、図７のステップは、統計的解析方法が正確な結果を提供することができるとき、コンテンツ転送の終了時に実行することができる。一時バッファーは、決定論的分類方法（ＤＰＩ解析）にのみ用いられる。
【０１７６】
本発明はコンピュータープログラム製品に組み込むこともでき、そのコンピュータープログラム製品は本明細書において説明される方法を実施できるようにする全ての機構を含み、情報処理システムにロードされるときに、情報処理システムを生成する。この文脈におけるコンピュータープログラム手段又はコンピュータープログラムは、情報処理能力を有するシステムが直接、又は別の言語への変換後に特定の機能を実行するように意図される１組の命令に関する、任意の言語、コード又は表記における任意の表現を意味する。そのようなコンピュータープログラムは、データ、命令、メッセージ又はメッセージパケット及び他の機械可読情報を媒体から読み出すことができるようにする、コンピューター可読媒体又は機械可読媒体上に記憶することができる。コンピューター可読媒体又は機械可読媒体は、ＲＯＭ、フラッシュメモリ、ディスクドライブメモリ、ＣＤ−ＲＯＭ及び他の永久記憶装置のような不揮発性メモリを含むことができる。さらに、コンピューター可読媒体又は機械可読媒体は、ＲＡＭ、バッファー、キャッシュメモリ、及びネットワーク回線のような揮発性記憶装置を含む場合がある。さらに、コンピューター可読媒体又は機械可読媒体は、有線ネットワーク又は無線ネットワークを含む、ネットワークリンク及び／又はネットワークインターフェースのような一時的状態の媒体内にあるコンピューター可読情報又は機械可読情報を含むことができ、デバイスがそのようなコンピューター可読情報又は機械可読情報を読み出すことができるようになる。
【０１７７】
「備える」、「含む」、「組み込む」、「収容する」、「である」、「有する」のような表現は、説明及び関連する特許請求の範囲を解釈する際に非排他的に解釈されるべきであり、すなわち、同様に存在していると明示的には規定されない他の項目又は構成要素を考慮に入れるように解釈されるべきである。単数形への参照は複数形への参照であるとも解釈されるべきであり、その逆も同様である。
【０１７８】
現時点で本発明の好ましい実施形態であると見なされるものが図示及び説明されてきたが、本発明の真の範囲から逸脱することなく、種々の他の変更を加えることができること、及び代わりに均等物を用いることができることは当業者には理解されよう。さらに、本明細書において記述される中心的な発明の概念から逸脱することなく、特定の状況を本発明の教示に適合させるように数多くの変更を加えることができる。さらに、本発明の実施形態は、上記の特徴の全てを含むとは限らない場合がある。それゆえ、本発明は開示される特定の実施形態に限定されるのではなく、上記で広く定義されたように本発明の範囲内に入る全ての実施形態を含むことを意図している。
【０１７９】
本明細書において開示される種々のパラメーターを変更できること、及び本発明の範囲から逸脱することなく、開示及び／又は特許請求される種々の実施形態を組み合わせることができることは当業者には容易に理解されよう。
【図１】
0006556232.tif 000006
【図２】
0006556232.tif 000007
【図３】
0006556232.tif 000008
【図４】
0006556232.tif 000009
【図５】
0006556232.tif 000010
【図６】
0006556232.tif 000011
【図７】
0006556232.tif 000012