(58)【調査した分野】(Int.Cl.,DB名)
前記複数のグループは、平文データグループ及び少なくとも1つの非平文データグループを含み、前記完全なデータブロックに対して実行される前記測定は、前記データブロックのエントロピーを求めることを含み、前記統計的解析は、前記データストリームのグローバルエントロピー値を求めることを含み、前記グローバルエントロピー値が、予め設定されたエントロピー閾値よりも大きい場合、前記データストリームは、前記非平文データグループに属するものとして分類される、請求項1に記載の方法。
前記複数のグループは、平文データグループ及び少なくとも1つの非平文データグループを含み、前記完全なデータブロックに対して実行される前記測定は、前記データブロックのエントロピーを求めることを含み、前記統計的解析は、前記データストリームのグローバルエントロピー値を求めることを含み、前記グローバルエントロピー値が、予め設定されたエントロピー閾値よりも大きい場合、前記データストリームは、前記非平文データグループに属するものとして分類される、請求項2に記載の方法。
前記グローバルエントロピー値が前記エントロピー閾値未満の場合、前記データストリームは、前記平文データグループに属するものとして分類される、請求項3または4に記載の方法。
前記グローバルエントロピー値が前記エントロピー閾値未満の場合、前記DPI解析は、前記データストリーム内に平文パターンを見つける平文パターン検出を含み、平文パターンが前記データストリーム内に見つかった場合、前記データストリームは、既知の平文フォーマットグループとして分類され、前記既知の平文フォーマットグループは、前記平文データグループのサブグループである、請求項4に記載の方法。
平文パターンが前記データストリーム内に見つからなかった場合、前記DPI解析は、前記データストリーム内に文字集合を見つけるテキストファイル識別解析を更に含み、
文字集合が前記データストリーム内に見つかった場合、前記データストリームは、テキスト符号化グループ又は前記既知の平文フォーマットグループに属するものとして分類され、
文字集合が前記データストリーム内に見つからなかった場合、前記データストリームは、難読化データグループ又は未知の平文フォーマットグループに属するものとして分類される、請求項6に記載の方法。
前記非平文データグループは、少なくとも暗号化グループを含み、前記測定は、前記完全なブロックのカイ二乗偏差の推定を実行することを更に含み、前記統計的解析は、各完全なブロックについて、
前記完全なブロックのカイ二乗偏差を求めることと、
前記求められたカイ二乗偏差を、予め設定された偏差閾値と比較することと、
前記求められたカイ二乗偏差が前記偏差閾値よりも大きい場合、カウンター値をインクリメントすることと、
を更に含み、
前記カウンター値が、予め設定された整数N未満である場合、前記データストリームは、前記暗号化グループに分類される、請求項3から7までのいずれか1項に記載の方法。
前記データストリームが分類される前記グループの表示を、前記クライアントと前記サーバーとの間で交換されるデータストリームにフィルタリングポリシーを適用することを担当する中央スーパーバイザーに対して送信することを更に含む、請求項1から10までのいずれか1項に記載の方法。
前記ビットマップテーブルは、固定サイズを有し、ウィンドウの底部から開始し、前記方法は、前記サーバーと前記クライアントとの間で交換される肯定応答メッセージであって、ウィンドウの新たな底部を示す肯定応答メッセージを受信すると、前記ビットマップテーブルがウィンドウの前記示された新たな底部から開始するように前記ビットマップテーブルを更新することを更に含む、請求項1から12までのいずれか1項に記載の方法。
【背景技術】
【0002】
このセクションにおいて記述される手法は追及することはできたが、必ずしも以前から考えられてきたか、又は追及されてきた手法であるとは限らない。それゆえ、本明細書において別の指示がない限り、このセクションにおいて記述される手法は、本出願における特許請求の範囲に対する先行技術でもなければ、このセクションに含めることによって従来技術であると認めるものでもない。
【0003】
HTTPプロトコルは、インターネットエンジニアリングタスクフォース(IETF)によってRFC2616として標準化され、TCP/IPスタック(伝送制御プロトコル/インターネットプロトコル)上で伝送される。
【0004】
HTTPは、非常に多くのサービスを実施するのに用いられている。確かに、ますます多くのアプリケーションがウェブブラウザー内で実行され、それらのアプリケーションの通信はHTTPに基づいている。
【0005】
HTTPの1つの利点は単純さである。なぜならば、このプロトコルがサポートする要求方法は少数であり、基本的に、アプリケーションが用いる要求方法は2つ又は3つ(主として、GET及びPOSTと呼ばれる方法)であるからである。
【0006】
多くのアプリケーションが、セッションプロトコルとしてHTTPを利用して、単純なテキストファイル、オフィス文書、オーディオファイル及びビデオファイル等の種々のタイプのメディアを伝達する。
【0007】
以下では、HTTPによって伝送されるファイル又はデータストリームは、HTTPコンテンツと呼ぶことにする。
【0008】
HTTPプロトコルによれば、HTTPコンテンツは、HTTPメッセージのHTTP本体部(又はペイロード)内に挿入され、HTTPヘッダー部は、HTTPメッセージの制御情報を含む。
【0009】
HTTPメッセージの送信に先立ち、ボリュームフォーマットの削減又は送信のセキュア化のいずれかを行うためにHTTPコンテンツをアプリケーションによって圧縮又は暗号化することができる。
【0010】
例えば、オーディオメディア及びビデオメディアは、オーディオ/ビデオコーデックによって圧縮される。同じ目的で、パケットアーカイブ(例えば、zipフォーマット、rarフォーマット等)は、一組の圧縮ファイルを含む。
【0011】
HTTPプロトコルの効率を改善するために、持続的接続及びパイプライン化等の幾つかの拡張が、HTTPプロトコル標準規格に従って開発されてきた。
【0012】
持続的接続は、HTTP要求の完了後(サーバーからのHTTP応答の受信後)、HTTPクライアントとHTTPサーバーとの間のHTTPセッションを搬送するTCP接続をオープンに維持することを含む。その場合、HTTPクライアントは、同じTCP接続上で別のHTTP要求を送信することができる。
【0013】
HTTPパイプライン化は、対応するHTTP応答の受信を待機することなく単一のTCP接続を通じてHTTPクライアントからHTTPサーバーに幾つかのHTTP要求を送信することを含む。
【0014】
マルウェア、トロイの木馬又はリモートアドミニストレーションツール(RAT)等の悪意のあるアプリケーションも、感染したマシンとコマンド及び制御(C&C)サーバーとの間の通信の搬送プロトコルとしてHTTPを用いることが多い。
【0015】
これらの悪意のあるアプリケーションは、HTTPを用いて、盗んだ情報及びファイルを搬送する場合があり、伝送に先立ち、通信を難読化するためにファイルの圧縮及び/又は暗号化も行う可能性がある。
【0016】
その場合、暗号化鍵が知られていない場合には、総当り法を適用することによらない限り、オフラインプロセスを用いてデータストリームを解読することは不可能である。
【0017】
通常、悪意のあるアプリケーションは、XOR暗号化等の符号のスクランブルに依拠した基本的な難読化方法を利用する。一方、それらのアプリケーションは、幾つかの場合には、AES(次世代暗号化標準)又は3DES(トリプルデータ暗号化標準)等の標準暗号化を適用する可能性がある。これらの場合には、データのどのロードがHTTPクライアントとHTTPサーバーとの間で交換されるのかをリアルタイムで識別することが必要となり得る。
【0018】
これは、疑わしいコンテンツが、クライアントとサーバーとの間に配置されたトラフィックアナライザーによって迅速に解析されることを要する。実際は、このシステム解析は、好ましくは、暗号化鍵が悪意のあるアプリケーションによって送信機又は受信機のシステムメモリから消去される前に、クライアントに対して実行される。
【0019】
幾つかの方法によれば、パターンマッチングが、ファイルを分類するのに用いられる。例えば、よく知られたUnix(登録商標)の「file」という名称のユーティリティは、パターンマッチングに基づいており、libmagic(ライブマジック)ライブラリーを用いて、所与のファイルに関係したアプリケーションを出力する。
【発明の概要】
【発明が解決しようとする課題】
【0020】
しかしながら、そのような方法は、例えば、デバイスに記憶されたバイナリーファイルに対して適用される。一方、そのような方法は、サーバーとオンラインクライアントとの間で通信されるデータストリームに対してリアルタイムで実行することができない。
【0021】
電気通信ネットワークを通じて搬送されるデータストリーム(HTTPコンテンツ等)をリアルタイムで解析し、1つ又は幾つかの所与のグループに属するデータに対して更なる解析を実行するために、このデータストリームを異なるグループ(又はタイプ)に分類することが必要とされている。
【課題を解決するための手段】
【0022】
これらの需要に対処するために、本発明の第1の態様は、電気通信ネットワークを通じてクライアントとサーバーとの間で交換されるデータストリームのリアルタイム分類を実行する方法であって、
データストリームのデータセグメントを受信することであって、このデータセグメントは、データストリーム内におけるデータオフセットを示すことと、
受信されたデータセグメントを用いて、示されたデータオフセットに基づいてビットマップテーブルを更新することであって、このビットマップテーブルは、予め設定されたサイズを有する複数のデータブロックを含み、このデータブロックは、このビットマップテーブルにおいてブロックシーケンス番号によって順序付けられていることと、
ビットマップテーブルを更新した後、最初のブロックシーケンス番号を有する少なくとも1つの最初のデータブロックが完全である場合、最初のブロックシーケンス番号よりも小さなブロックシーケンス番号を有する全てのデータブロックが完成されるのを待機することなく、完全なデータブロックに対して測定を実行して少なくとも1つの測定結果を取得することと、
幾つかの完全なブロックについて取得された測定結果に基づいて少なくとも1つの統計的解析を実行することと、
少なくとも実行された統計的解析に基づいて、複数のグループの中の1つのグループにデータストリームを分類することと、
を含む、方法に関する。
【0023】
統計的解析が実行されるデータブロックは、潜在的に順不同であるので、データストリームの部分的な再組み立てのみが実行される。
【0024】
したがって、本発明は、有利には、データストリームの部分的な再組み立てを、順不同の可能性があるデータストリームのデータブロックに対して実行される統計的解析の使用と組み合わせることを提案する。部分的な再組み立てを行うのに必要とされるメモリ及び計算能力はより少なくなる。加えて、部分的な再組み立てを行うことによって、統計的解析をリアルタイムで行うことが可能になり、これによって、レイテンシーが低減され、データストリームの分類が高速化される。データストリームの分類は、中央スーパーバイザーが、疑わしいデータストリームが検出されたときに幾つかのアラームイベントを生成し、フィルタリングポリシーをクライアントに適用し、又はクライアントにインストールされたソフトウェアエージェントとインタラクトしてシステム情報を集めるのに用いることができる。
【0025】
以下で説明するように、データセグメントは、TCPデータセグメントとすることができる。
【0026】
本発明の幾つかの実施の形態によれば、Kを予め設定された個数として、データストリームの最初のKバイトについて、本方法は、
データストリームの最初のKバイトを含むデータブロックを再組み立てして、それらのそれぞれのブロックシーケンス番号に従って順序付けられたデータブロックを取得することと、
データストリームの最初のKバイトが受信され、再組み立てされた後、データストリームのK個の最初のバイトに対して少なくとも1つのディープパケット検査(DPI:Deep Packet Inspection)解析を実行することと、
を更に含み、
データストリームは、実行された統計的解析及びDPI解析に基づいてグループに分類される。
【0027】
したがって、これらの実施の形態は、統計的分類解析を決定論的DPI解析と有利に組み合わせ、これによって、より多くの数のグループを区別することができるので、分類の精度が改善される。
【0028】
幾つかの実施の形態によれば、複数のグループは、平文データグループ(cleartext data group)及び少なくとも1つの非平文データグループ(non-cleartext data group)を含み、完全なデータブロックに対して実行される測定は、上記データブロックのエントロピーを求めることを含み、統計的解析は、データストリームのグローバルエントロピー値を求めることを含む。グローバルエントロピー値が、予め設定されたエントロピー閾値よりも大きい場合、データストリームは、非平文データグループに属するものとして分類される。
【0029】
エントロピーを求めることは、計算リソースの点で多くのコストを要せず、データストリームを平文データ又は非平文データ(圧縮データ又は暗号化データ)を含むものとして分類することを可能にする。
【0030】
補完として、グローバルエントロピー値が予め設定されたエントロピー閾値よりも低い場合、データストリームは、平文データグループに属するものとして分類することができる。
【0031】
代替的に又は補完として、グローバルエントロピー値が、予め設定されたエントロピー閾値よりも低い場合、DPI解析は、データストリーム内に平文パターンを見つける平文パターン検出を含み、平文パターンがデータストリーム内に見つかった場合、データストリームは、既知の平文フォーマットグループとして分類され、既知の平文フォーマットグループは、平文データグループのサブグループである。
【0032】
統計的解析を補完して決定論的解析(DPI解析)を用いることによって、分類の精度を改善することが可能になる。
【0033】
更なる補完として、平文パターンがデータストリーム内に見つからなかった場合、DPI解析は、データストリーム内に文字集合を見つけるテキストファイル識別解析を更に含むことができ、
文字集合がデータストリーム内に見つかった場合、データストリームは、テキスト符号化グループ又は既知の平文フォーマットグループに属するものとして分類することができ、
文字集合がデータストリーム内に見つからなかった場合、データストリームは、難読化データグループ又は未知の平文フォーマットグループに属するものとして分類することができる。
【0034】
統計的解析を補完して決定論的解析(DPI解析)を用いることによって、分類の精度を改善することが可能になる。
【0035】
本発明の幾つかの実施の形態によれば、非平文データグループは、少なくとも暗号化グループを含み、測定は、完全なブロックのカイ二乗偏差の推定を実行することを更に含み、統計的解析は、各完全なブロックについて、
上記完全なブロックのカイ二乗偏差を求めることと、
求められたカイ二乗偏差を予め設定された偏差閾値と比較することと、
求められたカイ二乗偏差が予め設定された偏差閾値よりも大きい場合、カウンター値をインクリメントすることと、
を更に含むことができる。
【0036】
さらに、カウンター値が予め設定された整数N未満である場合(かつ、以下で説明するように、十分な数の完全なブロックが解析されているならば)、データストリームを暗号化グループに分類することができる。
【0037】
カイ二乗偏差解析は、計算リソースの点で多くのコストを要せず、圧縮データグループと暗号化グループとを区別することを可能にする。さらに、その計算は、必要とされる計算リソースを削減するためにエントロピー計算と組み合わせることができる。
【0038】
幾つかの実施の形態によれば、カウンター値が予め設定された整数N未満である場合、データストリームは、暗号化グループに分類することができ、DPI解析は、データストリーム内のXORパターンを見つけるためにXORパターンスキャンを含む。ここで、XORパターンがデータストリーム内に見つかった場合、データストリームは、難読化グループに分類することができ、XORパターンがデータストリーム内に見つからなかった場合、データストリームは、暗号化データグループに分類することができ、難読化グループ及び暗号化データグループは暗号化グループのサブグループである。
【0039】
統計的解析を補完して決定論的解析(DPI解析)を用いることによって、分類の精度を改善することが可能になる。
【0040】
補完として、カウンター値が予め設定された整数Nよりも大きい場合、DPI解析は、データストリーム内に圧縮パターンを見つける、データストリームの最初のKバイトにわたる圧縮パターン識別を含むことができる。ここで、圧縮パターンがデータストリーム内に見つかった場合、データストリームは、既知の圧縮フォーマットグループに分類することができ、圧縮パターンがデータストリーム内に見つからなかった場合、データストリームは、難読化グループ又は未知の圧縮フォーマットグループに分類することができる。
【0041】
統計的解析を補完して決定論的解析(DPI解析)を用いることによって、分類の精度を改善することが可能になる。
【0042】
本発明の幾つかの実施の形態によれば、本方法は、データストリームが分類されるグループの表示を、クライアントとサーバーとの間で交換されるデータストリームにフィルタリングポリシーを適用することを担当する中央スーパーバイザーに送信することを更に含むことができる。
【0043】
既に説明したように、送信された表示は、電気通信システムの他のエンティティが有利に用いることができる関連のある情報である。
【0044】
幾つかの実施の形態によれば、Kを予め設定された整数として、データストリームの最初のKバイトを受信した後、本方法は、この最初のKバイトを一時バッファーに記憶することを含むことができる。記憶された最初のKバイトは再組み立てされ、DPI解析は、統計的解析の後、この再組み立てされた、記憶された最初のKバイトに対して実行することができる。
【0045】
統計的解析の後にDPI解析を行うことによって、計算リソースを節約することが可能になる。実際は、上記で説明したように、データストリームを分類するのに有用なDPI解析は、統計的解析の予備的な結果に依存する。したがって、この実施の形態によって、全ての異なるDPI解析を実行することを回避することが可能になる。すなわち、関連のあるDPI解析のみが実行される。
【0046】
幾つかの実施の形態によれば、ビットマップテーブルは、固定サイズ(解析されたTCPデータセグメントに公表されているようなTCPウィンドウサイズに少なくとも等しい)を有し、ウィンドウの底部(bottom)から開始し、本方法は、サーバーとクライアントとの間で交換される肯定応答メッセージであって、ウィンドウの新たな底部を示す肯定応答メッセージを受信すると、ビットマップテーブルがウィンドウの示された当該新たな底部から開始するようにビットマップテーブルを更新することを更に含むことができる。
【0047】
これによって、データストリームの受信機によって肯定応答されていないデータを含む更新されたビットマップテーブルを維持することが可能になる。
【0048】
本発明の第2の態様は、コンピュータープログラム製品に関し、当該コンピュータープログラム製品はコンピューター可読媒体を備え、当該コンピューター可読媒体は、コンピュータープログラム命令を記憶し、当該コンピュータープログラム命令は、コンピューティングデバイス内にロード可能であり、コンピューティングデバイス内にロードされて、コンピューティングデバイスによって実行されると、当該コンピューティングデバイスに本発明の第1の態様による方法を実行させるように構成されている。
【0049】
本発明の第3の態様は、分類デバイスに関し、当該分類デバイスは、電気通信ネットワークを通じてクライアントとサーバーとの間で交換されるデータストリームのリアルタイム分類を実行するものであって、当該分類デバイスは、
データストリームのデータセグメントを受信する入力インターフェースであって、このデータセグメントは、データストリーム内におけるデータオフセットを示す、入力インターフェースと、
プロセッサと、を備え、
当該プロセッサは、以下のステップ、すなわち、
受信されたデータセグメントを用いて、示されたデータオフセットに基づいてビットマップテーブルを更新するステップであって、このビットマップテーブルは、予め設定されたサイズを有する複数のデータブロックを含み、このデータブロックは、このビットマップテーブルにおいてブロックシーケンス番号によって順序付けられている、ステップと、
ビットマップテーブルを更新した後、最初のブロックシーケンス番号を有する少なくとも1つの最初のデータブロックが完全である場合、最初のブロックシーケンス番号よりも小さなブロックシーケンス番号を有する全てのデータブロックが完成されるのを待機することなく、完全なデータブロックに対して測定を実行して少なくとも1つの測定結果を取得するステップと、
幾つかの完全なブロックについて取得された測定結果に基づいて少なくとも1つの統計的解析を実行するステップと、
少なくとも実行された統計的解析に基づいて、複数のグループの中の1つのグループにデータストリームを分類するステップと、
を実行するように構成されている。
【0050】
本発明の第4の態様は、システムに関し、当該システムは、本発明の第3の態様による分類デバイスと、中央スーパーバイザーとを備え、分類デバイスは、データストリームが分類されたグループの指示子を送信するように構成され、中央スーパーバイザーは、指示子を受信すると、受信された指示子に基づいて電気通信ネットワークにおいてフィルタリングルールを適用するように構成されている。
【発明を実施するための形態】
【0052】
図1は、本発明の一実施形態によるシステムを示している。
【0053】
本システムは、ローカルアクセスネットワーク16に属する幾つかのクライアント10.1及び10.2を備える。これらのクライアントは、例えば、ラップトップ10.1及びデスクトップコンピューター10.2とすることができる。
【0054】
クライアント10.1及び10.2に限定が加えられることはなく、これらのクライアントは、ラップトップ、デスクトップコンピューター、タッチパネル又はスマートフォン等の任意のユーザーデバイスとすることができる。
【0055】
クライアント10.1及び10.2は、アクセスポイント11を介してインターネット等の電気通信ネットワーク12にアクセスすることができる。
【0056】
図1において、アクセスポイント11は、有線手段を介してアクセスされる。しかしながら、アクセスポイント11は、例えばWi−fiを介してクライアント10.1及び10.2がアクセスすることができる無線アクセスポイントとすることもできる。
【0057】
したがって、クライアントは、アクセスポイント11及びネットワーク12を通じてアクセスすることができるサーバー13とデータストリーム(又はファイル)を交換することができる。以下では、「ファイル」、「コンテンツ」又は「HTTPコンテンツ」という表現は全て、サーバー13とクライアント10.1及び10.2のうちの一方との間で交換されるデータストリームを指す。
【0058】
以下では、プロトコルスタックHTTP/TCP/IPを介したHTTPコンテンツの交換の例が検討される。HTTPコンテンツは、その場合、TCPセグメントで伝送される。クライアント10.1及び10.2とサーバー13との間でファイルを交換するのに用いられるプロトコルスタックに限定が加えられることはない。
【0059】
アクセスポイント11は、本発明の一実施形態による分類デバイス14を備えることができる。以下で説明するように、分類デバイス14は、データストリーム(HTTPコンテンツ)を複数のグループの中の1つのグループに分類するように構成されている。
【0060】
分類デバイス14は、TCPセグメントに含まれるデータを解析することができる。TCPセグメントは、ソースIPアドレス及びデスティネーションIPアドレス並びにソースTCPポート及びデスティネーションTCPポートを含むTCP4つ組(quadruplet)を用いて識別される。新たに識別された各TCP接続にTCPコンテキスト情報を割り当てて付属させることができる。このTCPコンテキスト情報は、その後、TCP接続がクローズすると解放することができる。本発明によれば、分類デバイス14によって実行される分類は、受動的(passive)(又はトランスペアレント(transparent))である。すなわち、TCPセグメントは、検査のみを受け、変更されることなく転送される。本発明は、持続的接続が用いられるときも有利に実施することができる。以下では、持続的接続のコンテキストが、例示として用いられる。
【0061】
HTTPセッションを搬送するTCP接続は、当該接続がオープンされている間、監視することができる。以下で説明するように、分類デバイス14は、HTTP要求(クライアント10.1及び10.2からサーバー13へのアップロードの場合)又はHTTP応答(サーバー13からクライアント10.1及び10.2へのダウンロードの場合)のいずれかに挿入されるTCPシーケンス番号及びコンテンツ長フィールドを用いることができ、分類デバイス14は、持続的接続が用いられているときに、次のHTTP要求が挿入されるデータオフセット(TCPシーケンス番号)を求めることができる。
【0062】
分類デバイス14の目標は、HTTPコンテンツを、以下の少なくとも2つの異なるグループに分類することである。
平文データグループ;
圧縮データグループ及び暗号化グループを含む非平文データグループ。
【0063】
平文データグループは、人間が読み取ることができるテキストストリームだけでなく、オフィスソフトウェアスイート、実行可能アプリケーション等の任意のアプリケーション又はオペレーティングシステムによって用いられる非圧縮フォーマット及び非暗号化フォーマットを有する全てのデータストリームも含む。本発明は、前述の列挙したものに限定されるものではなく、平文データグループは、任意の非圧縮フォーマットを包含することができる。例えば、既存のアプリケーションごとに1つのファイルフォーマットを定義することができる。本発明の幾つかの実施形態によれば、平文データグループは、以下の幾つかのサブグループに分割することができる。
分類デバイス14によって認識されるデータフォーマットを指す既知の平文フォーマットグループ;
未知の平文フォーマットグループ。
【0064】
圧縮データは、WinZip、rar等のパッキングアプリケーションによって生成することもできるし、画像(JPEG、PNG、GIF等)、オーディオ(MP3、FLAC、OGG等)及びビデオ(MPEG2、H.264、H.265等)のマルチメディアコンテンツを記憶するのに用いることもできる。種々のメディアをAVI、MP4又はMKV等のコンテナーフォーマットに混合することができる。圧縮方法及びファイルフォーマットが既知であるならば、一般に、更なる情報を必要とすることなく圧縮データを復号化することができる。平文データグループに関して、圧縮データグループを、2つのサブグループ、すなわち、既知の圧縮データグループ及び未知の圧縮データグループに分割することができる。
【0065】
暗号化は、正当な関係者しか暗号化データを読み取ることができないようにデータを符号化する暗号化アルゴリズムによって生成される。
【0066】
既に説明したように、暗号化は、悪意のある第三者も、リークしたデータストリームを隠蔽し難読化するのに用いることができる。暗号化データは、解読鍵が判明している場合にしか解読することができない。通常、電気通信ネットワークを通じて交換されるデータストリームは、符号化及び復号化が同じである対称鍵暗号化方法を用いて保護される。この鍵は、より多くのコストを要する非対称鍵暗号化(公開鍵/秘密鍵)を用いて送信機と受信機との間(サーバー13とクライアント10.1又は10.2との間)で前もって交換される。その場合、鍵は平文で交換されないので、鍵にアクセスする唯一の方法は、送信機又は受信機のいずれかにおけるメモリを解析し、交換された暗号化データを解読するために鍵を抽出することである。
【0067】
任意選択で、暗号化グループは、以下の少なくとも3つのサブグループに分割することができる。
AES、3DES等の真の暗号化方式(暗号化データグループと呼ばれる);
XOR符号化等の難読化方式(難読化データグループと呼ばれる);
ASCII(アスキー)文字のみをサポートするメディアを通じてバイナリーメッセージを送信するのに用いられる符号化方法(例えば、ベース64)(テキスト符号化グループと呼ばれる)。
【0068】
これらの3つのサブグループの識別は、システム解析を最適化するとともに演算の数を削減するのに役立つ可能性がある。
【0069】
図1に示すように、分類デバイス14は、アクセスポイント11に含まれる。これは、分類デバイス14が、その場合に、LAN16とサーバー13との間の全てのデータストリームを解析することができるので有利である。
【0070】
分類デバイス14は、クライアント10.1及び10.2とサーバー13との間で交換されるデータストリームにアクセスすることができるならば、アクセスポイント11の外部に配置することもできる。
【0071】
分類の結果(データストリームが分類された、決定されたグループの指示子)は、中央スーパーバイザー15に送信することができる。この中央スーパーバイザーは、以下で説明するように、更なる解析を実行することができ及び/又は制限ポリシーをクライアント10.1及び10.2に適用することができ及び/又はクライアント10.1及び10.2に記憶された情報にアクセスすることができる。代替的に、分類デバイス14は、疑わしいデータストリームが検出されると、アラームイベントを中央スーパーバイザー15に送信することができる。アラームイベントは、その後、解析、アドミニストレーターへの表示、及び/又はLAN16における多岐にわたるフィルタリングポリシーの適用を行うために、中央スーパーバイザー15が収集することができる。任意選択で、中央スーパーバイザー15は、クライアント10.1及び10.2のそれぞれにインストールされたソフトウェアエージェントとインタラクトしてシステム情報を集めることもできる。
【0072】
図1では、中央スーパーバイザー15は、LAN16に属するものとして示されている。しかしながら、中央スーパーバイザー15は、LAN16の外部に配置することができる。その場合、中央スーパーバイザー15は、電気通信ネットワーク12を介してクライアント10.1及び10.2によるアクセスを受けることができるとともに、クライアント10.1及び10.2にアクセスすることができる。
【0073】
幾つかの分類方法を分類デバイス14によって実行し、データストリームを異なるグループに分類することができる。
【0074】
分類方法の第1のカテゴリー:統計的方法
分類方法の第1のカテゴリーは、エントロピー推定又はカイ二乗分布(CHI-square distribution:χ
2分布)の偏差測定等の統計的解析に基づくものである。これらの方法は、それ自体よく知られているが、以下で手短に説明する。
【0075】
エントロピー推定:
圧縮データを含むファイルの主な特性は、高いエントロピーであり、これは、ファイルに含まれる平均情報量(又は情報密度)が高いことを意味する。データソースのエントロピーレートは、シンボルを符号化するのに必要とされるシンボル(すなわち、バイト)当たりの平均ビット数を意味する。シャノンによれば、可能な値の集合{x
1,x
2,...,x
n}及び確率質量関数P(X)を有する離散確率変数XのエントロピーHは、以下の式によって与えられる。
【数1】
【0076】
通常、ファイル内のデータを圧縮するということは、バイト当たり最大8ビット(完全無損失圧縮)までのエントロピーの増大をもたらす。
【0077】
ほとんどのアプリケーションによって用いられる非圧縮ファイルは、それよりも低いエントロピーレベルを有する。例えば、Cソースファイル等のテキストASCIIファイルは、約4.9ビットのエントロピーを有し、その結果、シンボル当たりのビット数は4.9から8に移るので、39%のファイル縮小の可能性がある。通常のX86 Windows(登録商標)実行可能ファイルは、バイト当たり6.3ビットのエントロピーを有する。少なくとも、通常のMicrosoft−Word(登録商標)非圧縮文書ファイルは、バイト当たり約4.1ビットのエントロピーを有する。
【0078】
したがって、エントロピー推定は、平文データと圧縮データとを区別する良好な指標である。しかしながら、暗号化データは、高いエントロピー平均も有し、したがって、この指標は、種々の非平文データストリームを区別するのに十分でない。
【0079】
カイ二乗偏差:
カイ二乗分布方法は、データのランダム性を試験するのに用いられ、擬似乱数列発生器におけるエラーに対して極めて感度が高い。その結果、カイ二乗分布方法は、暗号化データグループと圧縮データグループとを区別する満足基準として用いることができる。
【0080】
実際は、圧縮アルゴリズムは、幾つかのフォーマットに準拠するようにタグを挿入する場合がある。その結果、生成されたファイルは、暗号化方法によって作成されたファイルよりもランダム性が低下する。換言すれば、シンボル(バイト)の分布は、χ
2統計量を計算することによって一様分布と比較することができる。このχ
2は、以下のように表すことができる。
【数2】
ここで、O
iは、ファイル内のインデックスiのシンボルの出現回数(インデックスiのシンボルの頻度とも呼ばれる)であり、
E
iは、インデックスiのシンボルの予想される理論上の頻度である。
【0081】
本発明者らの場合、256個の可能なシンボル(ASCII文字)について、そのため、
【数3】
について、観測された分布が一様分布と比較される。
【0082】
データストリームの幾つかの短いデータブロックにわたってカイ二乗偏差を計算し、カイ二乗偏差を閾値と比較し、カイ二乗偏差がデータストリームのかなりの部分にわたって閾値を越えているブロックの数をカウントすることによって、圧縮アルゴリズムによって生成された擬似乱数列の不備な点を検出することができる。
【0083】
この最新の方法は、進行中のデータストリームを解析するのに適用することができる。なぜならば、この方法は、短いブロック(例えば、32バイト又は64バイト)に適用することができ、順次データを解析することを必要とせず、それによって、メモリ及びレイテンシーの観点から多くのコストを要するTCPセグメントの完全な再組み立て(full reassembly)が回避されるからである。この方法は、必要とされる計算能力も削減する。
【0084】
第1のグループの方法(エントロピー推定及びカイ二乗偏差を含む統計的方法)は、パケットを順序付けることが統計量を変更しないので、順序正しいデータパケットにアクセスすることを要しない。データは、固定長を有するデータのブロックの形態でそれらの方法に提供することができる。しかしながら、これらの方法は、一般に、データストリーム全体を解析することを要する。
【0085】
分類方法の第2のカテゴリー:決定論的方法
分類方法の第2のカテゴリーは、プロトコルパーシング及びパターンマッチングアルゴリズム等のディープパケット検査(DPI)解析に基づく方法を含む。これらの方法は、順序正しいデータにアクセスすることを要するが、完全なファイルを解析する必要はない。確かに、ファイルフォーマットは、データストリームの最初のKバイトにわたる短い特定のデータシーケンスを識別することによって識別することができる。
【0086】
パターン検出
ファイルフォーマット識別(したがって、ファイル分類)は、パターン検出を適用することによって行うことができる。このパターン検出は、データストリームの先頭(最初のKバイト、Kは例えば1000に等しい)において、データベース内に列挙された短い既知のパターンを見つけることを含む。
【0087】
パターン検出方法は、例えば、Unix(登録商標)ユーティリティファイルによって実施され、「マジックテスト(magic test)」と呼ばれる。所与のファイルについて、マジックテストは、「libmagic」データベースに基づいて対応するアプリケーションを取り出すことができる。このデータベースは、ファイルフォーマットごとに、指定されたファイルオフセットにおいてバイト、ワードに適用される幾つかのテストルールを定義する。そのような方法は、決定論的であり、圧縮バイナリーフォーマット(ZIP、rar等)を含む多数の異なるフォーマットに対して効率的である。一方、そのような方法は、統計的解析方法の処理よりも複雑で多くのコストを要する処理を必要とする。したがって、以下で説明するように、本発明の幾つかの実施形態は、統計的解析方法を補完してパターン検出を用い、平文データグループ及び圧縮データグループの既知のサブグループと未知のサブグループとの間でファイルを分類することを有利に提案する。
【0088】
テキストファイル識別:
データベース(上記で説明したとおり)に基づくパターン検出は、バイナリーファイルに対して効率的である。一方、この方法は、テキストデータストリームを検出することができない。なぜならば、そのようなデータストリームには、予め設定されたパターンが存在しないからである。その結果、付加的な決定論的方法を実施して、ASCII文字集合符号化方法、UTF−8符号化方法又は他の任意の文字符号化方法を試験することができる。本発明では、これまでに明らかにされたパターン検出方法が失敗したときにのみ、テキストファイル識別が用いられる。完全に信頼可能なものにするために、テキストファイル識別は、好ましくはファイル全体に適用される。なぜならば、ファイルは、テキスト部分とバイナリー部分とを含む場合があるからである。一方、この種のファイルは、全く一般的でない(uncommon)ので、テキストファイル識別は、有利には、ファイルの先頭(例えば、最初のKバイト)にのみ適用することができる。
【0089】
XOR暗号化ファイル検出:
データストリームを符号化するのに用いられていたXOR鍵の長さを検出する効率的な検出方法が知られているが、この検出方法は、暗号化データストリーム内のパターンの知識を必要とする。例えば、Microsoft−Windows(登録商標)実行可能ファイルには、「This program cannot be run in DOS mode(このプログラムはDOSモードで実行することはできません)」等の既知のパターンを体系的に見つけることができる。XOR演算の幾つかの基本的特性を用いると、各可能なXOR鍵長について演算の数を単一のXORパターンスキャンに削減することができる。鍵長LのXORパターンスキャンは、XOR変換をデータストリームに適用することと、所与のXOR鍵長Lについて予め計算された幾つかの既知のパターンを変換されたデータストリーム内で検索することとを含む。これは、検索されたパターンがXOR鍵よりも長い長さを有することを要する。
【0090】
この手法は、既知のパターンを体系的に含むXOR暗号化ファイルを検出するのに用いることができる。通常、マルウェアは短いXOR鍵(例えば、32ビット)を用いており、そのため、この手法を上記で説明したパターン検出手法と効率的に結合することができるようになっている。
【0091】
上述した分類方法の2つのカテゴリーは、それ自体よく知られているので、これ以上詳述されない。以下で説明するように、本発明は、これらの分類方法を組み合わせるとともに、サーバー13とクライアント10.1及び10.2との間で通信される少なくとも1つのファイルのリアルタイム解析にこの組み合わせを最適化する方法を提案する。
【0092】
図2は、本発明の一実施形態による分類デバイス14を示している。
【0093】
分類デバイス14は、以下で説明するような方法のステップを実行する命令を記憶することができるランダムアクセスメモリ204及びプロセッサ203を備える。
【0094】
分類デバイス14は、本発明による方法から得られたデータを記憶するデータベース205も備えることができる。例えば、データベース205は、分類結果(データストリームが属するグループの指示子)を、データストリームを識別するTCP4つ組と関連付けて記憶することができる。
【0095】
分類デバイス14は、クライアント10.1及び10.2とサーバー13との間で交換されるHTTPコンテンツ(又はより一般的には任意のデータストリーム)を受信する入力インターフェース201を備える。分類デバイス14は、入力インターフェース201上で受信されたHTTPコンテンツを転送するように構成されているとともに、以下で説明するような中央スーパーバイザー15にデータを送信するようにも構成されている出力インターフェース206も備える。
【0096】
分類デバイス14は、デジタル信号プロセッサ202も備えることができる。
【0097】
プロセッサ203は、TCP解析ユニット207を備える。このTCP解析ユニットは、TCPパケットの受信、オープンされた各TCP接続の状態の監視、HTTPコンテンツを伝達するTCPデータセグメントの再組み立て、及びTCP接続の状態によるHTTP解析ユニット208又はデータストリーム解析ユニット209(コンテンツ解析ユニット209とも呼ばれる)へのデータセグメントの転送を担当する。以下で詳述するように、TCP解析ユニット207によって実行される再組み立ては、部分的なTCP再組み立てとすることができる。
【0098】
HTTP解析ユニット208は、TCP解析ユニット207が、レイヤ5の他のプロトコルを搬送するTCP接続をスキップすることができるように、HTTPセッションを識別するよう構成されている。これは、一具体例として与えられているものであって、既に説明したように、本発明をHTTP/TCP/IPプロトコルスタックに限定するものではない。HTTPセッションの場合、HTTP解析ユニット208は、HTTP本体の長さを示すコンテンツ長ヘッダー等の関連のある情報を得るために、HTTPパケットのHTTPヘッダーをパース(parse)する。HTTP解析ユニット208は、コンテンツ解析ユニット209による更なる解析のためにHTTP本体も抽出することができる。HTTP解析ユニット208は、好ましくは、RFC2616の仕様に記載されているようにTCP持続的接続をサポートする。
【0099】
コンテンツ解析ユニット209は、上記で説明した第1のカテゴリー及び第2のカテゴリーの分類方法を実施し、次いで、分類デバイス14によって受信されて転送されたデータストリームを複数の分類グループの中の或るグループに分類するように構成されている。
【0100】
図3は、本発明の幾つかの実施形態によるビットマップテーブル300を示している。ビットマップテーブル300は、受信データセグメントの部分的な再組み立てを実行するためにTCP解析ユニット207によって用いられる。
【0101】
部分的な再組み立ては、ビットマップテーブル300のデータブロック303に基づくことができ、これらのデータブロックは、短い固定サイズB、例えば32バイト又は64バイトのブロックである。ビットマップテーブル300は、TCPウィンドウサイズに少なくとも等しい(例えば、TCPウィンドウサイズに等しい)固定サイズを有する。以下では、800バイトに等しいTCPウィンドウサイズと、32バイトのサイズBを有するデータブロック303とを有する下記の例を例示として検討する。
【0102】
各データブロックは、受信されたTCPストリーム内でのそのオフセットによって識別される。各ブロックのオフセットは、ブロックシーケンス番号Nとして変換することができる。ここで、
【数4】
であり、TCP_sequence_numberは、TCP接続におけるブロックの最初のバイトのオフセット(最初のTCP_sequence_numberが0である場合には、最初のバイトのオフセット+1)である。
【0103】
TCPウィンドウ内の各ブロックの受信は、サイズTCP_Window_Size/Bのビットマップテーブル300、すなわち、800/32=25個のデータブロックを用いて監視される。
【0104】
ビットマップテーブル300は、ウィンドウの底部301及びウィンドウの末端部(end)302を含む。
【0105】
各ブロックは、k〜k+24に変化するそのブロックシーケンス番号Nによってインデックス付けされる。ここで、kは、ウィンドウの底部301のブロックシーケンス番号である。
【0106】
ウィンドウの底部301は、監視され、各受信データブロックのビットマップテーブル内におけるビット位置(オフセット)の計算を可能にする。ウィンドウの底部301は、TCPエンドポイント受信機によって返されるTCP肯定応答メッセージ(ACK)に基づいて取得される。
【0107】
データオフセットを示すTCPパケットにカプセル化されたデータシーケンス305が受信されると、ビットマップテーブル300は、このデータシーケンス305を用いて、示されたデータオフセットに基づいて更新される。例えば、
図3の例では、ウィンドウの底部301がブロックシーケンス番号0(TCP接続の開始)を有すると仮定すると、受信データシーケンスの最初のバイトのデータオフセットは、350とすることができる。350を32によって除算した比の整数部分は10であるので、データシーケンスは、11番目のデータブロック(ブロックシーケンス番号は10に等しい)の一部分をカバーする。データシーケンスの長さは、12番目のデータブロックから19番目のデータブロックまでのビットマップテーブルを完全に満たすようになっている。20番目のブロック(ブロックシーケンス番号は19に等しい)も部分的に満たされる。
【0108】
本発明によれば、ブロックシーケンス番号2、10及び19のデータブロックの場合に該当するように、2つの異なるデータセグメントにわたって分割された単一のブロックのデータを一時的に記憶するのに短いバッファーを用いることができる。
【0109】
このバッファーのサイズは、データブロックのサイズ(32バイト)に等しく、
図3(TCPデータセグメントが喪失され、再送信される場合がある)における場合のように、データセグメントが正しいシーケンスで送信されないときは、数個のバッファーを単一のTCP接続に用いることができる。
【0110】
不完全なデータブロック(ビットマップテーブル300におけるグレーのブロック)は、
図3の右側に示すペンディングブロックリストに入れることができる。ペンディングブロックリストは、更に受信されるTCPセグメントに存在する補完データの受信を待機する短いバッファーに対応する。不完全なブロックは、それぞれ303.2、303.10及び303.19のラベルが付けられている。不完全なブロック303.2、303.10及び303.19のそれぞれにおけるハッチングエリアは受信データを表す。
【0111】
図3では、受信ブロックは黒色であり、一方、非受信ブロックは白色である。
【0112】
ウィンドウの底部が更新されると(すなわち、ウィンドウの新たな底部を示すTCP肯定応答メッセージが受信されると)、ビットマップテーブル300を更新することができる。ウィンドウの以前の底部と新たな底部との間に含まれるビットはリセットされ、更新されたビットマップテーブルは、ウィンドウのこの新たな底部から開始する。
【0113】
部分的な再組み立ては、ブロックのそれぞれのブロックシーケンス番号に従ってブロックを順序付ける必要なく、順序付けられたデータ(ブロックの内部において順序付けられたデータ)のブロックを取得することを含む。
【0114】
図4は、本発明の幾つかの実施形態による方法のステップを示す図である。特に、
図4は、部分的に再組み立てされてコンテンツ解析ユニット209に供給されるHTTP本体に属するデータシーケンスの受信の際にTCP解析ユニット207によって実行されるステップを示している。データは、固定データのブロックとしてコンテンツ解析ユニット209に提供される。すなわち、各ブロック内では、データは順序正しく、ブロックは、コンテンツ解析ユニット209に順不同で送信することができる。
【0115】
ステップ401において、データセグメントが受信される。このデータセグメントは、データオフセット及びセグメントサイズを示す。
【0116】
ステップ402において、データオフセットに基づいて、ビットマップテーブル300のデータブロックを満たすデータセグメントの最初の部分(例えば、
図3では、データセグメント305の最初の部分は、データブロック303.2に挿入されるデータを含む)が求められる。最初の部分の長さは、ビットマップテーブル300のデータブロックの長さB以下である。
【0117】
ステップ403において、最初の部分で満たされるデータブロックのブロックシーケンス番号BSNが求められる。このために、最初の部分の最初のバイトのオフセットをB(32バイト)によって除算した比の整数部分が計算される。この整数部分は、
図3に示す例では10に等しい。
【0118】
ステップ404において、TCP解析ユニット207は、ブロックシーケンス番号がペンディングブロックリストのデータブロック(不完全なデータブロック)のブロックシーケンス番号に対応するか否かを判断する。
【0119】
ブロックシーケンス番号が、ペンディングブロックリストのデータブロックのブロックシーケンス番号に対応しない場合、ステップ405において、最初の部分の長さが、B(32バイト)と比較される。
【0120】
最初の部分の長さが、(
図3に示す例の場合のように)厳密にB未満である場合、ステップ406において、空きバッファーが、最初の部分を一時的に記憶するのに用いられ、ブロックシーケンス番号BSNがペンディングブロックリストに追加される。
【0121】
最初の部分の長さがBに等しい場合、ステップ407において、最初の部分が、以前に受信されたデータ(冗長データ)に対応するか否かが、ビットマップテーブル300内の対応するビットを試験することによって判定される。
【0122】
最初の部分が冗長データでない場合、ブロックシーケンス番号BSNのデータブロックは、最初の部分によって完全に満たされており、BSNよりも小さなブロックシーケンス番号を有する全てのデータブロックが完成されるのを待機することなく、ステップ408においてコンテンツ解析ユニット209に送信される。次に、ビットマップテーブル300内に対応するビットが設定される。
【0123】
ステップ411において、最初の部分がデータシーケンスの最後の部分であるか否かが調べられる。最後の部分である場合、ステップ413において、再組み立てが終了する。そうでない場合、データシーケンスの次の部分が、ステップ412において決定され、当該次の部分について、ステップ403以降の各ステップの処理が実行される。
【0124】
ステップ407において、最初の部分が冗長データであると判断された場合、本方法は、ステップ411に直接進む。
【0125】
ステップ404において、ブロックシーケンス番号BSNがペンディングブロックリストのブロックに対応すると判断された場合、ステップ409において、最初の部分のデータは、ブロックシーケンス番号BSNに対応するバッファーにコピーされる。
【0126】
ステップ410において、最初の部分がブロックシーケンス番号BSNのデータブロック内にコピーされた後、ブロックシーケンス番号BSNのデータブロックが完全であるか否かが判定される。
【0127】
ブロックシーケンス番号BSNのデータブロックが完全である場合、このデータブロックは、BSNよりも小さなブロックシーケンス番号を有する全てのデータブロックが完成されるのを待機することなく、ステップ408においてコンテンツ解析ユニット209に送信される。
【0128】
ブロックシーケンス番号BSNのデータブロックが不完全である場合、ステップ411において、次の部分が決定される。
【0129】
図5は、本発明の幾つかの実施形態による方法のステップを示す図である。特に、
図5は、HTTPセッションを搬送するTCPセグメントの受信の際にHTTP解析ユニット208によって実行されるステップを示している。接続識別、TCPコンテキスト割り当て及び標準的な再組み立て等のTCPプロトコルに関係した標準的な動作は、以下では詳述されない。HTTP解析ユニット208は、それぞれの方向(アップリンク及びダウンリンク)に専用化された別々のユニットを備えることができる。
【0130】
ステップ501において、TCPデータセグメントが、HTTP解析ユニット208によって受信される。
【0131】
ステップ502において、TCPデータセグメントが新たなHTTP要求を伝送しているか否かが判断される。TCPデータセグメントが新たなHTTP要求を伝送している場合、ステップ503において、完全な再組み立てを起動することができる。
【0132】
ステップ504において、TCPデータセグメントがHTTPヘッダーの少なくとも一部を伝送しているか否かが判定される。
【0133】
伝送している場合、ステップ506において、HTTPヘッダーが完全であるか否か(又はデータセグメントが、以前のTCPデータセグメントにおいて受信されたHTTPヘッダーの一部を完成させることを可能にするか否か)が判断される。
【0134】
HTTPヘッダーが完全である場合、ステップ507において、HTTPコンテンツの長さを求めることができる。
【0135】
HTTPヘッダーが不完全である場合、本方法は、以下で詳述するステップ510に直接進む。
【0136】
ステップ507に続いて、ステップ508において、HTTPヘッダーはスキップされ、ステップ509において、TCPセグメントがHTTP本体の一部も伝送しているか否かが判断される。HTTP本体の一部を伝送していない場合、本方法は、ステップ510に直接進み、このステップにおいて、次のTCPデータセグメントが受信される。
【0137】
ステップ504において、TCPデータセグメントがHTTPヘッダーからのデータを含まないと判断された場合、又はステップ509において、TCPデータセグメントがHTTP本体のデータを含むと判断された場合、このデータセグメントは、ステップ505において、TCP解析ユニット207に送信され、
図4に示すステップが実行される(部分的な再組み立てが起動されている場合)か、又は完全な再組み立てが実行される(完全な再組み立てが起動されている場合)。
【0138】
次に、ステップ511において、第2のカテゴリーの分類方法(DPI解析方法)を実行するのに必要とされるHTTPコンテンツの全てのデータが受信されているか否かが判断される。説明したように、DPI解析方法は、HTTP本体の最初のKバイト(例えば、最初の1000バイト)に対して実行することができ、最初のKバイトを含むブロックは再順序付けされていなければならない(完全な再組み立て)。
【0139】
第2のカテゴリーの分類方法を実行するのに必要とされるHTTPコンテンツの全てのデータが受信されている場合、ステップ512において、部分的な再組み立てが起動される。
【0140】
ステップ513において、HTTPコンテンツが完全に受信されているか否かが検証される。受信されている場合、ステップ514において、分類デバイス14の処理を完結させることができ、分類の結果を中央スーパーバイザー15に送信することができる。
【0141】
HTTPコンテンツが完全に受信されていない場合、本方法は、新たなTCPデータセグメントを受信するためにステップ510に進む。
【0142】
したがって、説明したように、完全な再組み立て手順は、HTTPヘッダー及びHTTP本体の先頭の受信についてのみ有効にされる。完全な再組み立て手順は、DPI分類方法が更なるデータを必要としないときは直ちに無効にされる。HTTPヘッダーが完全に受信され、正確に解析されると直ちに、DPI分類方法に順序正しいブロックが供給される。HTTPヘッダーはパースされ、RFC2616に詳述されているプロトコル文法と照合される。特に、ヘッダーのコンテンツ長フィールドが抽出され、HTTP本体部の末端の位置を特定するために調べられる。
【0143】
図6は、本発明の幾つかの実施形態による方法のステップを示す図である。特に、
図6は、(
図4のステップ408を実行するTCP解析ユニット207からの)完全なデータブロックの受信の際に、コンテンツ解析ユニット209によって実行されるステップを示している。
【0144】
ステップ600において、コンテンツ解析ユニット209は、サイズBの完全なデータブロックを受信する。
【0145】
ステップ601において、受信されたデータブロックがHTTPコンテンツの最初のKバイトからのデータを含むか否かが判断される。含む場合、受信されたデータブロックは、第2のカテゴリーの分類方法にとって有用であり、ステップ602において、バッファーにアペンド(append)することができる。
【0146】
ステップ603において、測定結果を取得し、HTTPコンテンツの統計的解析を更新するために、少なくとも1つの測定が、受信されたデータブロックに対して実行される。この測定は、データブロックのエントロピーを求めること又はデータブロックのカイ二乗偏差を測定することを含むことができる。次に、以下で説明するように、データブロックの新たに求められたエントロピーに基づいてデータストリームのグローバルエントロピー値を更新することもできるし、カイ二乗偏差が閾値よりも大きい場合には、カウンター値をインクリメントすることもできる。
【0147】
ステップ604において、少なくとも1つの統計的解析が、測定結果に基づいて更新される。
【0148】
ステップ605において、受信された完全なデータブロックがコンテンツの最後のブロックであるか否か(コンテンツの全てのブロックが受信されたか否か)が判定される。
【0149】
受信された完全なブロックが最後のブロックでない場合、本方法は、ステップ600に戻って新しい完全なデータブロックを受信する。
【0150】
受信された完全なブロックが最後のブロックである場合、バッファーに記憶された最初のKバイトに基づいて、第2のカテゴリーの決定論的分類方法を任意選択で実行することができる(ステップ606)。
【0151】
ステップ607において、ステップ604において実行された最後の更新に基づいて、したがって、全ての受信された完全なデータブロックについて取得された測定結果に基づいて、統計的解析の結果が抽出される。幾つかの結果は、幾つかの統計的解析(カイ二乗偏差及びエントロピー推定)が実行された場合に抽出することができる。例えば、エントロピー推定の場合、全てのデータブロックのそれぞれのエントロピーの平均値を計算して、コンテンツのグローバルエントロピー値を取得することができる。カイ二乗偏差方法の場合、完全な各データブロックのカイ二乗偏差を予め設定された偏差閾値と比較することができ、カイ二乗偏差が当該偏差閾値を上回るごとにカウンター値(初期値は0)をインクリメントすることができる。その後、このカウンター値は、以下で説明するように、予め設定された整数Nと比較することができる。
【0152】
代替的に、ステップ605において、ブロックの閾値数が完了したか否かを判断することができる。実際は、統計的解析は、データストリームの全てのデータブロックに対して実行することを必要とせず、測定結果を求めるのに最小数のブロックが解析された場合に重要となる可能性がある。
【0153】
ステップ608において、少なくとも1つの統計的解析の結果に基づいて、コンテンツが、複数のグループの中の1つのグループに分類される。一方、本発明は、
図7に示すように、幾つかの統計的解析(第1のカテゴリー)及び補完的な決定論的方法(第2のカテゴリー)に依拠してコンテンツを分類することもできる。
【0154】
図7は、
図6に示すステップ608を実行するときにコンテンツ解析ユニットによって実施される例示的な分類図である。
【0155】
ステップ701において、コンテンツのグローバルエントロピー値が取り出され、ステップ702において、予め設定された第1のエントロピー閾値(例えば、0と8との間に含まれる)と比較される。
【0156】
グローバルエントロピー値が「低い」(すなわち、第1のエントロピー閾値未満である)場合、コンテンツは、平文データグループに属するものとして分類することができる。
【0157】
エントロピー値が「高い」(すなわち、第1のエントロピー閾値よりも大きい)場合、コンテンツは、非平文データグループ(暗号化グループ及び圧縮データグループを含む)に属するものとして分類することができる。
【0158】
したがって、本発明によって、データストリームの部分的な再組み立て後に実行される統計的解析に基づいて、コンテンツの2つのグループを区別することが可能になる。
【0159】
幾つかの実施形態によれば、更なる分類方法を用いて、分類の精度を改善することができる。
【0160】
例えば、ステップ702においてグローバルエントロピー値が高いと判断された場合、ステップ703において、カイ二乗偏差の推定値を取り出すことができる。ステップ704において、上記で説明したカウンター値が、予め設定された整数Nと比較される。カウンター値がNよりも大きい場合には、コンテンツを、暗号化グループに属するものとして分類することができ、カウンター値がN未満の場合には、コンテンツを、圧縮データグループに属するものとして分類することができる。
【0161】
したがって、最大2つの統計的分類方法を用いることによって、コンテンツを3つの異なるグループの中の1つのグループに分類することができる。
【0162】
より高い精度が必要とされる場合、本発明は、コンテンツを上述した3つの主なグループのサブグループに分類するために決定論的方法(DPI解析)を用いることを提案する。
【0163】
ステップ704においてカウンター値がNよりも大きいと判断された場合、ステップ705において、XORデルタパターン識別をコンテンツ(一時バッファーに記憶された最初のKバイト)に対して実行することができる。
【0164】
ステップ706においてXORデルタパターンがコンテンツ内に見つかった場合、ステップ707において、このコンテンツを難読化グループに属するものとして分類することができる。見つからなかった場合、ステップ708において、このコンテンツを暗号化データグループに属するものとして分類することができる。
【0165】
ステップ704においてカウンター値がN未満と判断された場合、ステップ709において、圧縮パターン検出がコンテンツ(一時バッファー内の最初のKバイト)に対して実行される。
【0166】
ステップ710において圧縮パターンがコンテンツ内に見つかった場合、ステップ711において、このコンテンツを既知の圧縮フォーマットグループに属するものとして分類することができる。
【0167】
ステップ710において圧縮パターンがコンテンツ内に見つからなかった場合、ステップ712において、XORパターンスキャンをコンテンツ(一時バッファー内の最初のKバイト)に対して実行することができる。
【0168】
ステップ713においてXORパターンが見つかった場合、ステップ714において、コンテンツを難読化グループに属するものとして分類することができる。見つからなかった場合、ステップ715において、コンテンツを未知の圧縮フォーマットグループに属するものとして分類することができる。
【0169】
ステップ702においてコンテンツのグローバルエントロピー値が低いと判断された場合、ステップ716において、平文パターン検出をコンテンツ(一時バッファー内の最初のKバイト)に対して実行することができる。
【0170】
ステップ717において平文パターンが見つかった場合、ステップ718において、コンテンツを既知の平文フォーマットグループに属するものとして分類することができる。
【0171】
ステップ717において平文パターンが見つからなかった場合、ステップ719において、テキストファイル識別をコンテンツ(一時バッファー内の最初のKバイト)に対して実行することができる。
【0172】
ステップ720において文字集合が識別された場合、ステップ721において、その文字集合が、第2の既定の閾値よりも高いエントロピーを有するASCII文字集合であるか否かが判断される。文字集合がASCII文字集合であり、エントロピーが第2の既定の閾値よりも高い場合、ステップ723において、コンテンツをテキスト符号化グループに属するものとして分類することができる。そうでない場合、ステップ722において、コンテンツを既知の平文グループに属するものとして分類することができる。
【0173】
ステップ720において文字集合がコンテンツ内に見つからなかった場合、ステップ724において、XORパターンスキャンがコンテンツ(一時バッファー内の最初のKバイト)に対して実行される。
【0174】
ステップ725においてXORパターンが見つかった場合、ステップ726において、コンテンツを難読化グループに属するものとして分類することができる。見つからなかった場合、ステップ727において、コンテンツを未知の平文フォーマットグループに属するものとして分類することができる。
【0175】
したがって、上記で説明したとおり、統計的解析は、関連のある結果を取得するために各コンテンツの大きな部分に対して実行することができる一方、決定論的分類方法(DPI解析)は、コンテンツの短い部分(一般に、コンテンツの先頭で十分である)に対してのみ実行することができる。
図6に示す実施形態によれば、コンテンツの先頭は、ステップ602において一時バッファーに記憶することができる。その後、
図7のステップは、統計的解析方法が正確な結果を提供することができるとき、コンテンツ転送の終了時に実行することができる。一時バッファーは、決定論的分類方法(DPI解析)にのみ用いられる。
【0176】
本発明はコンピュータープログラム製品に組み込むこともでき、そのコンピュータープログラム製品は本明細書において説明される方法を実施できるようにする全ての機構を含み、情報処理システムにロードされるときに、情報処理システムを生成する。この文脈におけるコンピュータープログラム手段又はコンピュータープログラムは、情報処理能力を有するシステムが直接、又は別の言語への変換後に特定の機能を実行するように意図される1組の命令に関する、任意の言語、コード又は表記における任意の表現を意味する。そのようなコンピュータープログラムは、データ、命令、メッセージ又はメッセージパケット及び他の機械可読情報を媒体から読み出すことができるようにする、コンピューター可読媒体又は機械可読媒体上に記憶することができる。コンピューター可読媒体又は機械可読媒体は、ROM、フラッシュメモリ、ディスクドライブメモリ、CD−ROM及び他の永久記憶装置のような不揮発性メモリを含むことができる。さらに、コンピューター可読媒体又は機械可読媒体は、RAM、バッファー、キャッシュメモリ、及びネットワーク回線のような揮発性記憶装置を含む場合がある。さらに、コンピューター可読媒体又は機械可読媒体は、有線ネットワーク又は無線ネットワークを含む、ネットワークリンク及び/又はネットワークインターフェースのような一時的状態の媒体内にあるコンピューター可読情報又は機械可読情報を含むことができ、デバイスがそのようなコンピューター可読情報又は機械可読情報を読み出すことができるようになる。
【0177】
「備える」、「含む」、「組み込む」、「収容する」、「である」、「有する」のような表現は、説明及び関連する特許請求の範囲を解釈する際に非排他的に解釈されるべきであり、すなわち、同様に存在していると明示的には規定されない他の項目又は構成要素を考慮に入れるように解釈されるべきである。単数形への参照は複数形への参照であるとも解釈されるべきであり、その逆も同様である。
【0178】
現時点で本発明の好ましい実施形態であると見なされるものが図示及び説明されてきたが、本発明の真の範囲から逸脱することなく、種々の他の変更を加えることができること、及び代わりに均等物を用いることができることは当業者には理解されよう。さらに、本明細書において記述される中心的な発明の概念から逸脱することなく、特定の状況を本発明の教示に適合させるように数多くの変更を加えることができる。さらに、本発明の実施形態は、上記の特徴の全てを含むとは限らない場合がある。それゆえ、本発明は開示される特定の実施形態に限定されるのではなく、上記で広く定義されたように本発明の範囲内に入る全ての実施形態を含むことを意図している。
【0179】
本明細書において開示される種々のパラメーターを変更できること、及び本発明の範囲から逸脱することなく、開示及び/又は特許請求される種々の実施形態を組み合わせることができることは当業者には容易に理解されよう。