(57)【特許請求の範囲】
【請求項１】
コンピュータにより実行される方法であって、
ネットワークコンピューティングデバイスにおけるネットワークトラフィックのキャプチャ中に失われたセグメントを含みそれぞれがセッションに対応する部分データストリームを識別するステップと、
前記部分データストリームの特徴を決定するステップと、
前記部分データストリーム内の損失セグメントのコンテンツ部分をパディングして、パディングされた部分データストリームを生成するステップと、
少なくとも一つのデータ損失防止（ＤＬＰ）ポリシーに従って、前記パディングされた部分データストリームを機密情報についてスキャンするステップと
を含む方法。
【請求項２】
請求項１に記載のコンピュータにより実行される方法において、前記部分データストリームを識別するステップが、
前記ネットワークコンピューティングデバイスにおいて、複数のセグメントを含むネットワークトラフィックをキャプチャするステップと、
前記セグメントのトランスポート層ヘッダに基づいて、セグメントが前記データストリームの第１セグメントとして識別される毎にデータストリームを生成するステップと、
前記データストリームをセッションと関連付けるステップと、
前記データストリームに属するセグメントを、該セグメントのトランスポート層ヘッダを使って識別するステップと、
前記データストリームから欠落したセグメントを識別するステップと、
前記欠落したセグメントを損失セグメントキューに置くステップと、
ストリーム終端の表示を受信した際、または所定の時間間隔が経過した際に、前記損失セグメントキューに残っているセグメントを損失セグメントとしてマーキングするステップと
を含む方法。
【請求項３】
請求項２に記載のコンピュータにより実行される方法において、
データストリームの生成されていない接続タプルと関連付けられたデータセグメントを識別するステップと、
前記接続タプルと関連付けられた第１セグメントが失われたことを決定するステップと、
前記接続タプルに基づいて部分データストリームを生成するステップと、
前記部分データストリームが前に生成したセッションに属しているか否かを決定するステップと、
前記部分データストリームが前に生成したセッションに属していない場合、該部分データストリームを新しいセッションと関連付けるステップと、
前記部分データストリームが前に生成したセッションに属している場合、該部分データストリームを前に生成したセッションに移動させるステップと
をさらに含む方法。
【請求項４】
請求項１に記載のコンピュータにより実行される方法において、前記部分データストリームの特徴を決定するステップが、
損失セグメントを識別した後に、部分データストリームにおける前記損失セグメントの位置に開始マーカおよび終了マーカを挿入するステップと、
前記損失セグメントの位置をメタデータストアに記録するステップと、
前記部分データストリームのデータストリーム要素のプロトコル解析を行うステップとを含む方法。
【請求項５】
請求項４に記載のコンピュータにより実行される方法において、前記部分データストリームのデータストリーム要素のプロトコル解析を行うステップが、
各データストリーム要素の種類を決定するステップと、
前記種類に基づいて各データストリーム要素をパーシングしてメタデータを抽出するステップと、
前記メタデータをメタデータストアに格納するステップと
を含む方法。
【請求項６】
請求項５に記載のコンピュータにより実行される方法において、各データストリーム要素の種類を決定するステップが、
前記データストリーム要素の種類がわかっている場合、該データストリーム要素の種類に対応するパーサを識別するステップと、
前記データストリーム要素の種類がわからない場合、照合するシグネチャを見つけるまで、各々が特定の種類に対応する、複数のシグネチャを前記データストリーム要素に適用するステップと、前記照合するシグネチャを使って前記データストリーム要素の種類を識別するステップと、前記データストリーム要素の種類に対応するパーサを識別するステップと
を含む方法。
【請求項７】
請求項６に記載のコンピュータにより実行される方法において、前記複数のシグネチャをデータストリーム要素に適用するステップが、
可能な最初のヘッダタグから開始するように前記データストリーム要素を配置するステップと、
前記複数のシグネチャを各々の可能なヘッダタグに適用するステップと、
前記照合するシグネチャを使って、ヘッダの種類を識別するステップと
を含む方法。
【請求項８】
請求項７に記載のコンピュータにより実行される方法において、
前記ヘッダの種類がアプリケーション層プロトコルヘッダであり、
該アプリケーション層プロトコルヘッダから抽出されたメタデータは、送信者情報、受信者情報、データの種類およびデータの長さのうちの少なくとも一つを含んでいる方法。
【請求項９】
請求項７に記載のコンピュータにより実行される方法において、
前記ヘッダの種類がプレゼンテーション層ヘッダであり、
該プレゼンテーション層ヘッダから抽出されたメタデータはデータフォーマットを含んでいる方法。
【請求項１０】
請求項７に記載のコンピュータにより実行される方法において、
前記照合するシグネチャがヘッダフォーマットおよび前記ヘッダの種類に関連付けられた複数のタグを使用し、該複数のタグは複数の主要タグおよび複数の追加タグを含んでいる方法。
【請求項１１】
請求項６に記載のコンピュータにより実行される方法において、前記照合するシグネチャを使って前記データストリーム要素の種類を識別するステップが、
前記データストリームの前のデータストリーム要素の種類を識別する際に収集したメタデータを利用するステップをさらに含む方法。
【請求項１２】
請求項４に記載のコンピュータにより実行される方法において、前記部分データストリーム内の損失セグメントのコンテンツ部分をパディングして、パディングされた部分データストリームを生成するステップが、
前記部分データストリーム内に存在する各コンテンツ部分の位置を識別するステップと、
前記部分データストリーム内に存在する各コンテンツ部分の種類を識別するステップと、
各損失セグメントのコンテンツ部分を無効とタグ付けするステップと、
前記部分データストリーム内に存在する任意のコンテンツ部分の変換が必要か否かを決定するステップと、
前記部分データストリーム内に存在する任意のコンテンツ部分の変換が必要な場合、必要とされる変換の種類を識別し、必要とされる変換の識別された種類を使って前記コンテンツ部分を変換するステップと
を含む方法。
【請求項１３】
請求項１に記載のコンピュータにより実行される方法において、前記少なくとも一つのＤＬＰポリシーに従って、前記パディングされた部分データストリームを機密情報についてスキャンするステップが、
欠落したコンテンツ部分を識別するステップと、
前記機密情報のシグネチャを使って該機密情報のコンテンツをスキャンする際に、前記欠落したコンテンツ部分を無視するステップと
を含む方法。
【請求項１４】
請求項１３に記載のコンピュータにより実行される方法において、前記コンテンツをｋグラムのシグネチャを使ってスキャンする方法。
【請求項１５】
請求項１３に記載のコンピュータにより実行される方法において、前記パディングされた部分データストリーム内の機密情報を検出すると、ＤＬＰポリシー違反と前記パディングされた部分データストリーム内の欠落したコンテンツの割合とを報告するステップをさらに含む方法。
【請求項１６】
命令を提供しコンピュータで読み取り可能な非一時的記録媒体であって、該命令は、コンピュータシステムで実行される場合、該コンピュータシステムに、
ネットワークコンピューティングデバイスにおけるネットワークトラフィックのキャプチャ中に失われたセグメントを含みそれぞれがセッションに対応する部分データストリームを識別するステップと、
前記部分データストリームの特徴を決定するステップと、
前記部分データストリーム内の損失セグメントのコンテンツ部分をパディングして、パディングされた部分データストリームを生成するステップと、
少なくとも一つのデータ損失防止（ＤＬＰ）ポリシーに従って、前記パディングされた部分データストリームを機密情報についてスキャンするステップと
を含む方法を行わせる非一時的記録媒体。
【請求項１７】
請求項１６に記載のコンピュータで読み取り可能な非一時的記録媒体において、前記方法が、
損失セグメントを識別した後に、部分データストリームにおける該損失セグメントの位置に開始マーカおよび終了マーカを挿入するステップと、
前記損失セグメントの位置をメタデータストアに記録するステップと、
前記部分データストリームにおけるデータストリーム要素のプロトコル解析を行うステップと
を含む非一時的記録媒体。
【請求項１８】
請求項１７に記載のコンピュータで読み取り可能な非一時的記録媒体において、前記部分データストリームにおけるデータストリーム要素のプロトコル解析を行うステップが、
複数のシグネチャを使って各データストリーム要素の種類を決定するステップと、
前記種類に基づいて各データストリーム要素をパーシングしてメタデータを抽出するステップと、
前記メタデータをメタデータストアに格納するステップと
を含む非一時的記録媒体。
【請求項１９】
ネットワークデバイスであって、
メモリと、
前記メモリに連結された処理装置と、
前記処理装置によって前記メモリから実行される部分データストリームサブシステムとを備え、
ネットワークコンピューティングデバイスにおけるネットワークトラフィックのキャプチャ中に失われたセグメントを含みそれぞれがセッションに対応する部分データストリームの識別と、
前記部分データストリームの特徴の決定と、
前記部分データストリーム内の損失セグメントのコンテンツ部分をパディングして、パディングされた部分データストリームを生成することと、
少なくとも一つのデータ損失防止（ＤＬＰ）ポリシーに従って、前記パディングされた部分データストリームの機密情報についてのスキャンと
を行う、ネットワークデバイス。
【請求項２０】
請求項１９に記載のネットワークデバイスにおいて、前記部分データストリームサブシステムが、
複数のシグネチャを使って部分データストリームにおけるデータストリーム要素のプロトコル解析を行うプロトコル解析器と、
プロトコル解析中に抽出されたメタデータを格納するメタデータストアと、
前記部分データストリーム内に存在する各コンテンツ部分の位置と種類とを識別し、各損失セグメントの前記コンテンツ部分を無効としてタグ付けをし、変換を必要とする前記部分データストリーム内に存在する任意のコンテンツ部分を変換するコンテンツマネージャと、
欠落したコンテンツ部分を識別し、機密情報のシグネチャを使って前記コンテンツ部分を機密情報についてスキャンする際に、欠落したコンテンツ部分を無視し、パディングされた部分データストリーム内で機密情報が検出されると、ＤＬＰポリシー違反と、前記パディングされた部分データストリーム内の欠落したコンテンツの割合とを報告するＤＬＰスキャナと
を備えるネットワークデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態はデータ処理分野に関し、特に、部分データストリームにおけるデータ損失の監視に関する。
【背景技術】
【０００２】
データ損失防止（ＤＬＰ：Data Loss Prevention）の重要な態様として、ネットワークトラフィックを、機密情報の有無について監視することが含まれる。通常、保護を必要とする機密情報の指紋が生成され、ＤＬＰ監視装置に提供される。ＤＬＰ監視装置はこれらの指紋を使用して、組織のコンピューティングデバイスによって送受信される種々のメッセージについて、機密情報の有無を検出する。機密情報は、データベース、表計算などの構造化された形態に格納することができ、機密情報には例えば、顧客、従業員、患者または価格のデータが含まれる。さらに機密情報には、設計プラン、ソースコード、ＣＡＤ図面、会計報告書などの非構造化データが含まれることもある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ＤＬＰ監視装置は通常、ネットワークトラフィックを指定バッファに記録する、ネットワークアダプタカードやパケットキャプチャソフトウェアに依存する受動素子である。大量のネットワークトラフィックのため、バッファは満杯になり、データパケットのいくつかは失われてしまう可能性がある。現状では、ＤＬＰ監視装置は損失データパケットを含むデータストリームをドロップし、そのように不完全なデータストリームについては機密情報のスキャンを行っていない。しかしながら、これは信頼性やＤＬＰソリューションの完全性に関して深刻な結果を招くことになる。
【課題を解決するための手段】
【０００４】
部分データストリームにおけるデータ損失監視の方法および装置について説明する。一実施形態による例示的方法は、ネットワークコンピューティングデバイスにおけるネットワークトラフィックのキャプチャ中に失われたセグメントを含みそれぞれがセッションに対応する部分データストリームを識別するステップと、これらの部分データストリームのコンテンツの特徴を決定するステップと、これらの部分データストリーム内における損失セグメントのコンテンツ部分をパディングするステップと、少なくとも一つのデータ損失防止（ＤＬＰ）ポリシーに従って、これらの部分データストリームを機密情報についてスキャンするステップとを含んでいる。一実施形態において、部分データストリームを識別するステップは、ネットワークコンピューティングデバイスにおいて複数のセグメントを含むネットワークトラフィックをキャプチャするステップと、セグメントのトランスポート層ヘッダに基づき、セグメントがデータストリーム内の第１セグメントとして識別される毎にデータストリームを生成するステップと、このデータストリームをセッションと関連付けるステップと、セグメントのトランスポート層ヘッダを使ってデータストリームに属するセグメントを識別するステップと、データストリームから欠落したセグメントを識別するステップと、この欠落したセグメントを損失セグメントキューに置くステップと、ストリーム終端の表示を受信した際、または所定時間間隔が経過した際に、損失セグメントキューに残っているセグメントを損失セグメントとしてマーキングするステップとを含んでいる。一実施形態において、例示的方法は、データストリームの生成されていない接続タプルと関連付けられているデータセグメントを識別するステップと、この接続タプルと関連付けられている第１セグメントが失われていることを決定するステップと、この接続タプルに基づいて部分データストリームを生成するステップと、この部分データストリームが前に生成したセッションに属しているか否かを決定するステップと、この部分データストリームが前に生成したセッションに属していない場合、この部分データストリームを新しいセッションに関連付け、この部分データストリームが前に生成したセッションに属している場合、この部分データストリームを前に生成したセッションに移動させるステップとをさらに含んでいる。
【０００５】
一実施形態において、部分データストリームのコンテンツ部分の特徴を決定するステップは、損失セグメントを識別した後に、部分データストリーム内の損失セグメントの位置に開始マーカおよび終了マーカを挿入するステップと、この損失セグメントの位置をメタデータストアに記録するステップと、この部分データストリームにおけるデータストリーム要素のプロトコル解析を行うステップとを含んでいる。一実施形態において、部分データストリームにおけるデータストリーム要素のプロトコル解析を行うステップは、各データストリーム要素の種類を決定するステップと、種類に基づいて各データストリーム要素をパーシングしてメタデータを抽出するステップと、このメタデータをメタデータストアに格納するステップとを含んでいる。一実施形態において、各データストリーム要素の種類を決定するステップは、データストリーム要素の種類がわかっている場合は、データストリーム要素の種類に対応するパーサを識別し、データストリーム要素の種類がわからない場合は、照合するシグネチャが見つかるまで複数のシグネチャをデータストリーム要素に適用するステップであって、この複数のシグネチャの各々は特定の種類に対応するステップと、照合するシグネチャを使ってデータストリーム要素の種類を識別するステップと、このデータストリーム要素の種類に対応するパーサを識別するステップとを含んでいる。一実施形態において、複数のシグネチャをデータストリーム要素に適用するステップには、データストリーム要素を、可能な最初のヘッダタグから開始するように配置するステップと、複数のシグネチャを各々の可能なヘッダタグに適用するステップと、照合するシグネチャを使ってヘッダの種類を識別するステップとを含むことができる。ヘッダの種類はアプリケーション層プロトコルヘッダであってもよく、アプリケーション層プロトコルヘッダから抽出されたメタデータは、送信者情報、受信者情報、データの種類およびデータ長さの内の少なくとも一つを含んでいてもよい。あるいは、ヘッダの種類はプレゼンテーション層ヘッダであってもよく、プレゼンテーション層ヘッダから抽出されたメタデータはデータフォーマットを含んでいてもよい。照合するシグネチャは、ヘッダフォーマットおよびヘッダの種類と関連付けられた複数のタグを使用してもよく、これらの複数のタグは、複数の主要タグおよび複数の追加タグを有している。一実施形態において、データストリーム要素の種類を識別するステップは、当該データストリームの前のデータストリーム要素の種類を識別する際に、収集したメタデータを利用するステップをさらに含んでいる。
【０００６】
一実施形態において、部分データストリーム内における各損失セグメントのコンテンツ部分をパディングするステップは、部分データストリーム内に存在する各コンテンツ部分の位置を識別するステップと、部分データストリーム内に存在する各コンテンツ部分の種類を識別するステップと、各損失セグメントのコンテンツ部分を無効としてタグ付けするステップと、部分データストリーム内に存在する任意のコンテンツ部分の変換が必要か否かを決定するステップと、部分データストリーム内に存在する任意のコンテンツ部分の変換が必要な場合、必要とされる変換の種類を識別し、必要とされる変換の識別された種類を使ってコンテンツ部分を変換するステップとを含んでいる。一実施形態において、少なくとも一つのＤＬＰポリシーに従って、部分データストリームを機密情報についてスキャンするステップは、欠落したコンテンツの部分を識別するステップと、機密情報のシグネチャを使ってコンテンツを機密情報についてスキャンする際に、欠落したコンテンツの部分を無視するステップとを含んでいる。このコンテンツはｋグラムのシグネチャを使ってスキャンしてもよい。一実施形態において、部分データストリーム内で機密情報を検出すると、ＤＬＰポリシー違反と部分データストリーム内の欠落したコンテンツの割合を報告する。
【０００７】
さらに、部分データストリームにおけるデータ損失監視のための、コンピュータ読み取り可能記録媒体について説明する。例示的なコンピュータ読み取り可能記録媒体は命令を提供し、これが処理システムで実行されると、処理システムに上述の例示的方法のような方法を実行させる。
【０００８】
さらに、ネットワークデバイスでの部分データストリームのデータ損失監視について説明する。例示的なネットワークデバイスは、メモリと、メモリに連結されるプロセッサと、プロセッサによってメモリから実行される部分データストリームサブシステムとを備え、ネットワークコンピューティングデバイスにおけるネットワークトラフィックのキャプチャ中に失われたセグメントを含みそれぞれがセッションに対応する部分データストリームを識別し、部分データストリームにおけるコンテンツの特徴を決定し、部分データストリーム内の損失セグメントのコンテンツ部分をパディングし、少なくとも一つのデータ損失防止（ＤＬＰ）ポリシーに従って、部分データストリームを機密情報についてスキャンする。一実施形態において、部分データストリームサブシステムは、複数のシグネチャを使って部分データストリームにおけるデータストリーム要素のプロトコル解析を行うプロトコル解析器と、プロトコル解析中に抽出されたメタデータを格納するメタデータストアと、部分データストリーム内に存在する各コンテンツ部分の位置と種類を識別し、各損失セグメントのコンテンツ部分に無効とタグ付けをし、変換を必要とする部分データストリーム内に存在する任意のコンテンツ部分を変換するコンテンツマネージャと、欠落したコンテンツの部分を識別し、機密情報のシグネチャを使ってコンテンツを機密情報についてスキャンする際に、欠落したコンテンツの部分を無視し、部分データストリーム内の機密情報検出の際に、ＤＬＰポリシー違反と部分データストリーム内の欠落したコンテンツの割合を報告するＤＬＰスキャナとを備えている。
【０００９】
本発明は、下記の詳述および本発明における種々の実施形態の添付の図面から、より十分に理解されるであろうが、これらは本発明を特定の実施形態に限定するものではなく、説明および理解のためのみのものであるととらえるべきである。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態が動作できる、例示的ネットワークアーキテクチャのブロック図である。
【図２】本発明のいくつかの実施形態に係る、部分データストリームの処理を示したものである。
【図３】部分データストリームサブシステムの一実施形態のブロック図である。
【図４】部分データストリームにおけるデータ損失の監視方法に関する一実施形態のフローチャートである。
【図５】損失セグメントを含む部分データストリームの識別方法に関する一実施形態のフローチャートである。
【図６】部分データストリームのコンテンツの特徴の決定方法に関する一実施形態のフローチャートである。
【図７】部分データストリームにおけるデータストリーム要素のプロトコル解析を行う方法に関する一実施形態のフローチャートである。
【図８】部分データストリームのコンテンツの変換方法に関する一実施形態のフローチャートである。
【図９】部分データストリームのＤＬＰポリシー違反の検出方法に関する一実施形態のフローチャートである。
【図１０】コンピュータシステムの例示的な形態におけるマシンを図示したものである。
【発明を実施するための形態】
【００１１】
部分データストリームにおけるデータ損失の監視方法および装置について説明する。ネットワーク監視装置はネットワークトラフィックをキャプチャし、キャプチャしたトラフィックに関して、顧客、従業員または患者のデータ、設計プラン、ソースコード、ＣＡＤ図面、会計報告書などの機密情報の有無についてスキャンする。大量のトラフィックのため、ネットワーク監視装置は常に全てのデータセグメントをキャプチャできるわけではなく、いくつかのデータストリームが不完全なものとなってしまう。本発明の実施形態は、不完全な（または部分）データストリームにおける機密情報の有無についてスキャンすることを可能にする技術を提供することにより、ネットワーク監視装置におけるデータ損失防止（ＤＬＰ）機能の信頼性や完全性を向上させる。
【００１２】
以下の多くの詳細を記載する。しかしながら本開示の恩恵を受ける当事者にとって、本発明の実施形態がこれらの具体的詳細なく実施可能であることは明白であろう。
【００１３】
図１は、本発明の実施形態を操作することができる例示的ネットワークアーキテクチャ１００のブロック図である。ネットワークアーキテクチャ１００は、一以上のサーバ１０４およびネットワーク１０６（例えばインターネットなどのパブリックネットワークまたはローカルエリアネットワーク（ＬＡＮ）などのプライベートネットワーク）を介して連結したクライアントデバイス（「クライアント」）１０２を有する。クライアント１０２にはパーソナルコンピュータ、ラップトップ、ＰＤＡ、携帯電話、ネットアプライアンスなどが含まれる。サーバ１０４にはｅメールサーバ、ウェブサーバまたはクライアント１０２とデータ交換を行う任意のその他のサーバが含まれる。サーバ１０４は同じまた異なるマシン（例えば、サーバコンピュータシステム、ゲートウェイ、パーソナルコンピュータなど）上に設けることができる。 
【００１４】
ネットワークデバイス１０８はネットワーク上に設けられ、そこで、例えば、クライアント１０２およびサーバ１０４によって送受信されるｗｅｂ要求およびメッセージを含む、ネットワークトラフィックを観察することができる。メッセージは、ｅメールメッセージ、インスタントメッセージ（ＩＭ）、テルネットセッション中に交換されるメッセージ、ファイル転送プロトコル（ＦＴＰ）セッション中に交換されるメッセージなどであってもよい。ネットワークデバイス１０８は、スニファーまたはネットワーク１０６を通過するトラフィックをキャプチャすることの可能な、任意のその他のコンピューティングデバイスであってもよい。
【００１５】
ネットワークデバイス１０８は、キャプチャしたトラフィックを組織が保持する機密情報の有無についてスキャンする、データ損失防止（ＤＬＰ）システム１１０をホストする。機密情報には、例えば、顧客、従業員、患者または価格データ、設計プラン、ソースコード、ＣＡＤ図面、会計報告書、人事報告書、顧客または患者報告書、価格文書、企業の合併吸収文書、政府（例えば証券取引委員会）の書類およびユーザアクセスの制限された任意のその他の情報が含まれる。ＤＬＰシステム１１０は、ＤＬＰポリシーに従ってキャプチャされたネットワークトラフィックをスキャンする。ＤＬＰポリシーには、コンテンツをスキャンして機密情報の有無を検出するルールが含まれている。ルールによってコンテンツのスキャンを行う必要のある機密情報を識別し、ポリシー違反を引き起こす条件（例えば、同じ送信者による３つのｅメールメッセージにおける機密情報の検出時）を特定し、スキャンの例外（例えば、ｅメールメッセージの受信者が組織のＣＥＯである場合、スキャンを控える）を提供するなどを行うことができる。スキャンされるコンテンツは、ファイル、ｅメールメッセージ、テキストメッセージ、ｗｅｂ要求またはネットワークデバイス１０８によってキャプチャされたネットワークトラフィックの一部である、任意のその他のデータアイテムであってもよい。ネットワークデバイス１０８には、ネットワークトラフィックを指定バッファに記録するネットワークアダプタカードおよび／またはパケットキャプチャソフトウェアが含まれる。大量のネットワークトラフィックのため、バッファは周期的に満杯となり、データセグメントのうちのいくつかが失われてしまう。
【００１６】
一実施形態において、ＤＬＰシステム１１０は、損失セグメントを含む部分データストリームのＤＬＰ監視を可能にする、部分データストリームサブシステム１１２を有する。特に、部分データストリームサブシステム１１２は、セグメントをデータストリームに（例えばセグメントのトランスポート層ヘッダを使って）再構成し、いくつかのデータストリームが欠落したセグメントを有することを決定することによって、最初に損失セグメントを含む部分データストリームを識別することができる。欠落したセグメントのため、部分データストリームは部分データストリームの異なる要素の種類を識別する情報が欠けているかもしれない。データストリーム要素には、異なるプロトコルおよびアプリケーションのヘッダと、コンテンツ部分（例えば、ｅメールの本文部分、ｅメールの添付部分など）とが含まれている。ヘッダには、例えば、トランスポート層プロトコルヘッダ（例えば、伝送制御プロトコル（ＴＣＰ）ヘッダ、ユーザデータグラムプロトコル（ＵＤＰ）ヘッダなど）、アプリケーション層プロトコルヘッダ（例えば、ハイパーテキスト転送プロトコル（ＨＴＴＰ）ヘッダ、簡易メール転送（ＳＭＴＰ）ヘッダなど）、アプリケーションヘッダ（例えば、ｅメールヘッダ、Ｗｅｂ２．０アプリケーションヘッダなど）、およびデータプレゼンテーションヘッダ（例えば、ｚｉｐファイルヘッダ、マルチパートフォームヘッダなど）がある。ヘッダは、データストリーム内におけるコンテンツ部分の位置、コンテンツ部分の長さ、コンテンツ部分の種類、コンテンツ部分のフォーマットなど、それぞれのコンテンツ部分の特徴を識別する情報を提供する。
【００１７】
部分データストリームサブシステム１１２は、データストリーム要素を解析してそれらの種類を決定し、決定した種類に従ってデータストリーム要素をパーシングし、部分データストリームのそれぞれのコンテンツ部分の特徴を抽出する。これらの特徴に基づいて、部分データストリームサブシステム１１２は部分データストリーム内に存在するコンテンツ部分の位置を見つけ、損失セグメントのコンテンツ部分をパディングし、部分データストリームに存在するどのコンテンツ部分を変換する必要があるのかと、必要とされる変換の種類（例えば、解凍または復号化）とを識別する。その後、部分データストリームサブシステム１１２は必要であれば（例えば部分データ操作専用ハイブリッド変換エンジンを使って）コンテンツ部分を変換し、その結果得られたコンテンツを、機密情報の有無についてＤＬＰポリシーに従ってスキャンすることができる。コンテンツをスキャンする際、部分データストリームサブシステム１１２は実際のソースデータ（実際の機密情報）を使用せず、ソースデータの指紋を使用して機密情報がさらされるのを防ぎ、コンテンツのより効率的な検索を容易にする。指紋には、ソースデータのハッシュ、暗号化されたソースデータ、またはソースデータを独自に識別する任意のその他のシグネチャが含まれる。スキャンされたコンテンツに機密情報が含まれる場合、部分データストリームサブシステム１１２は部分データストリーム内の欠落したコンテンツの割合とともに、ＤＬＰポリシーの違反を報告することができる。
【００１８】
図２は、部分データストリームサブシステム２００の一実施形態のブロック図である。部分データストリームサブシステム２００は、部分データストリーム生成器２０２、ストリームマーカ２０４、プロトコル解析器２０６、メタデータストア２１２、コンテンツマネージャ２１４およびＤＬＰスキャナ２１６を含むことができる。いくつかの実施形態によれば、部分データストリームサブシステム２００の構成要素はモジュールとすることができ、これらのモジュールは組み合わせたり、さらにモジュールに分けたりすることができる。
【００１９】
部分データストリーム生成器２０２は、キャプチャされたデータセグメントの（例えば、ＴＣＰヘッダに含まれるシーケンス番号、セグメントソース、宛先データを使った）データストリームへの再構成、（例えば、ＳＹＮ／ＡＣＫおよびＦＩＮ  ＴＣＰメッセージを使った）再構成したデータセグメントからのデータストリームの生成、およびデータストリームから欠落したセグメントの検出を行う。一実施形態において、部分データストリーム生成器２０２は、例えば、ＴＣＰ制御メッセージに応答するセッションを生成し、またはＴＣＰ制御メッセージを損失した場合、接続タプル（ソースアドレス／ポートおよび宛先アドレス／ポート）のセッションを生成することによって、各々の部分データストリームをセッションと関連付ける。ストリームマーカ２０４は、部分データストリーム内の各損失セグメントの位置に、開始および終了マーカを挿入し、各損失セグメントの位置をメタデータストア２１２に記録する。
【００２０】
プロトコル解析器２０６は、部分データストリームのデータストリーム要素の処理を行い、それらの種類を決定する。データストリーム要素には、トランスポート層ヘッダ（例えば、ＴＣＰヘッダ、ＵＤＰヘッダなど）、アプリケーション層ヘッダ（例えば、ＨＴＴＰヘッダ、ＳＭＴＰヘッダなどのアプリケーション層プロトコルヘッダおよびｅメールヘッダ、ウェブログヘッダなどのアプリケーションヘッダ）、プレゼンテーション層ヘッダ（例えばｚｉｐファイルヘッダ、マルチパートフォームヘッダなど）およびコンテンツ部分（例えば、ｅメール本文、ｅメール添付、ブログ投稿など）が含まれる。損失データセグメントのため、現在のデータストリーム要素の種類がわからない場合がある。例えば、ｗｅｂメールを送信するクライアントはｗｅｂメールメッセージを５つの部分に分割して、５つのデータセグメントとなることがある。第２データセグメントがＨＴＴＰ識別子を含むＨＴＴＰヘッダを含んでいる可能性もある。次のデータセグメントのＨＴＴＰヘッダは種々のその他の情報（例えば、ｗｅｂメールメッセージの本文を含むクッキー部）を含み、ＨＴＴＰ識別子を含んでいない能性がある。第２データセグメントが失われた場合、次のデータセグメントのＨＴＴＰヘッダのＩＤが明らかでなくなる。プロトコル解析器２０６には、シグネチャデータストアに格納されているシグネチャ２０８を利用することにより、現在のデータストリーム要素におけるＩＤの欠如に対処する。シグネチャ２０８には、種々のプロトコルヘッダのシグネチャと種々のコンテンツフォーマット（例えば、ｅメールメッセージのフォーマット、マルチパートフォーム、ブログなど）のシグネチャとが含まれる。シグネチャ２０８は、特定のプロトコルのフォーマットを理解する対応パーサ２１０を有している。データストリーム要素に照合するシグネチャ２０８を見つけると、プロトコル解析器２０６は対応するパーサ２１０を使ってデータストリーム要素をパーシングし、データストリーム要素に含まれているメタデータを抽出する。現在のデータストリーム要素の終端に達すると、プロトコル解析器２０６は部分データストリーム内に存在する次のデータストリーム要素に移動し、同様に次のデータストリーム要素を処理し、部分データストリーム内に存在する全てのデータセグメントを処理するまでこれらの操作を反復する。プロトコル検出操作の例を、以下により詳細に記載する。データストリーム要素の処理中に収集したメタデータをメタデータストア２１２に格納する。メタデータには、例えば、データストリーム要素における種類の識別子、部分データストリームの送信者と受信者、部分データストリームのコンテンツ部分の特徴（例えば、部分データストリーム内に存在する各コンテンツ部分の位置、部分データストリーム内に存在する各コンテンツ部分の長さ、部分データストリーム内に存在する各コンテンツ部分の種類、部分データストリーム内に存在するコンテンツ部分の変換（必要とされる場合）の種類）、各損失セグメントの開始および終了位置などが含まれる。
【００２１】
コンテンツマネージャ２１４はメタデータストア２１２内のメタデータを使用し、部分データストリームに存在するコンテンツ部分の位置および種類と、必要であればこれらのコンテンツ部分の変換の種類を決定する。さらにコンテンツマネージャ２１４はメタデータを使って損失セグメントのコンテンツ部分を識別し、それによってこれらのコンテンツ部分をパディングする。部分データストリーム内に存在する任意のコンテンツ部分の変換が必要とされる場合、コンテンツマネージャ２１４は必要とされる変換を行う。変換操作の例をより詳しく以下に説明する。
【００２２】
ＤＬＰスキャナ２１６は、機密データの指紋２２０を使って部分データストリームをスキャンする。スキャンはＤＬＰポリシー２１８に従って行うことができる。さらにＤＬＰポリシーは、いつポリシー違反をトリガすべきかを定義することができる（例えば、ポリシー違反をトリガするための指紋照合の数、送信者または受信者の例外など）。指紋２２０は指紋ストアに格納することができる。ＤＬＰポリシー２１８はＤＬＰポリシーストアに格納することができる。メタデータストア２１２、シグネチャストア、指紋ストアおよびＤＬＰポリシーストアは、磁気または光学式記憶ベースディスク、ソリッドステートドライブまたはハードドライブなどの一以上の大容量記憶装置上に置かれた、単一のデータ構造または複数のデータ構造（データベース、保管所、ファイルなど）とすることができる。
【００２３】
ＤＬＰスキャナ２１６は部分コンテンツをスキャンする際に、損失セグメントのコンテンツ部分を無視することができる。部分ＤＬＰスキャン操作の例をより詳しく以下に説明する。ＤＬＰスキャナ２１６はＤＬＰポリシー２１８の違反を検出するとＤＬＰ警報を生成し、警報に部分データストリーム内の欠落したコンテンツの割合を含めることにより、警報の信頼性を示してもよい。
【００２４】
図３は本発明のいくつかの実施形態に係る部分データストリームの処理を示している。部分データストリームは、トランスポート層要素（例えばＴＣＰヘッダ、ＵＤＰヘッダなど）３０２、アプリケーション層要素（例えばＨＴＴＰヘッダ、ＳＭＴＰヘッダなどのアプリケーション層プロトコルヘッダなど、およびｅメールヘッダ、ウェブログヘッダなどのアプリケーションヘッダ）３０６、プレゼンテーション層要素（例えば、ｚｉｐファイルヘッダ、マルチパートフォームヘッダなど）３０６、およびコンテンツ要素（例えば、ｅメール本文、ｅメール添付、ブログ投稿など）３０８などの、種々の層のデータストリーム要素を含むことができる。各層において、メタデータはメタデータストアに記録し、格納する。各層で収集したメタデータは、次の層における処理のヒントとして使用することができる。
【００２５】
一実施形態において、トランスポート層３０２で行う処理には、パケットのキャプチャ処理３１０および損失セグメントの検出処理３１２が含まれる。パケット通信に使用するトランスポート層プロトコルがデータセグメント（例えばＵＤＰ）のシーケンス番号を提供しないその他の実施形態において、パケットのキャプチャ処理３１０および損失セグメントの検出処理３１２は、アプリケーション層３０４での処理中に行う。
【００２６】
パケットのキャプチャ処理３１０には、データセグメントのキャプチャと、例えばセグメントヘッダ（例えばＴＣＰヘッダ）に含まれるシーケンス番号を使った、データセグメントのデータストリームへの再構成を含めることができる。一実施形態において、欠落したセグメントを検出すると、それを所定時間（例えばタイマーを設定して）またはＴＣＰクローズ接続（ＦＩＮ）メッセージが受信されるまで、損失セグメントキューに置く。ＴＣＰ制御（ＳＹＮ／ＡＣＫ）メッセージは、特定の接続タプル（宛先アドレス／ポートおよびソースアドレス／ポート）に関連付けられたデータストリームをいつ生成するかを決定するために使用することができる。損失セグメントの検出処理３１２は、損失セグメントキューのタイムアウトによって起動することができる。損失セグメントの検出処理３１２では、特定のセッションのために記録したセグメントを全て抜き出し、セッションが存在しない場合（例えば、ＴＣＰ制御セグメントが失われた場合）にはセッションを生成し、または、データストリームがデータストリームをアクティブなストリームとして識別する情報を（例えばＨＴＴＰヘッダのクッキー内に）含んでいる場合には、前に生成したセッションにデータストリームを移す。
【００２７】
一実施形態において、アプリケーション層３０４で行う処理には、損失セグメントストリームのマーキング処理３１４と、ストリームのパディング処理３１６と、部分プロトコルの配置処理３１８と、部分プロトコルの検出処理３２０と、メタデータのパーシング処理３２２と、コンテンツの発見処理３２４とが含まれる。損失セグメントストリームのマーキング処理３１４では、損失セグメントが検出される各々の一定の点に開始および終了のストリームマーカを挿入し、開始および終了のストリームマーカの位置をメタデータストアに格納する。ストリームのパディング処理３１６では、ストリームマーカを使ってパディングを提供する。一実施形態において、ストリームのパディング処理３１６は、アプリケーション層ヘッダ処理の前（すなわち、部分プロトコルの配置処理３１８および部分プロトコルの検出処理３２０の前）に行う。あるいは、ストリームのパディング処理３１６は、部分プロトコル検出処理３２０を終了して、部分データストリームのコンテンツ部分を発見した後に実行される。この代替実施形態において、部分プロトコルの配置処理３１８および部分プロトコルの検出処理３２０では、ストリームマーカを使って、パーシングするコンテキストのデリミタを決定し、不必要なオーバーヘッドを回避するためにパッディングは使用しない。
【００２８】
部分プロトコルの配置処理３１８は、アプリケーション層ヘッダの情報がすぐに利用できない（例えば、前の層または現在のデータストリーム要素内に提供されていない）場合のアプリケーション層ヘッダの種類の決定において、部分プロトコルの検出処理３２０を支援するために実行される。部分プロトコルの検出処理３２０では、特定のプロトコルに関連付けられた異なるシグネチャを使ってヘッダの種類が決定される。部分データストリームの処理中、ストリームはマルチプルプロトコルからマルチプルプロトコルへ（例えば、ＴＣＰヘッダからＨＴＴＰヘッダへ、ＨＴＴＰヘッダからＷｅｂ２．０アプリケーションｅメールヘッダへ、Ｗｅｂ２．０アプリケーションｅメールヘッダからｚｉｐファイルヘッダへなど）と遷移させることができる。プロトコルヘッダは通常、新しいフィールドまたはヘッダタグがいつ利用可能かを示す共通のデリミタを使用する。部分プロトコル配置処理３１８ではデリミタを識別し、プロトコルシグネチャ処理で認識することのできる、可能な最初の「プロトコルタグ」から開始するようにストリームを配置する。複数のデリミタ標識を単一のデータストリーム内に置くことができるので、部分プロトコルの配置処理３１８では、部分プロトコルの検出処理３２０において部分データストリームの処理が終了するまで、プロトコルシグネチャ処理のために、各々の可能な「開始」位置を、部分プロトコルの検出処理３２０のために配置し、ディスパッチする。
【００２９】
部分プロトコルの検出処理３２０では、異なるプロトコルに関連付けられた種々のシグネチャを、部分データストリームの異なるデータストリーム要素に適用する。一実施形態において、部分プロトコルの検出処理３２０では、プロトコルの拡張属性を反映させるシグネチャを使ってプロトコルのＩＤを確認する。既存のシグネチャ識別手法では、プロトコルヘッダのフォーマットを使用して、使用されているプロトコルの種類を確立する。例えば、ＨＴＴＰのシグネチャ検出では、「ＧＥＴ＜ＵＲＩ＞ＨＴＴＰ／１．１＼ｒ＼ｎ」の文字列を使ってこのプロトコルを識別する。しかしながら上述の文字列を有するＨＴＴＰヘッダを含むデータセグメントが失われた場合、既存のシグネチャＩＤ手法のＨＴＴＰのＩＤも失われる。本発明の実施形態では、シグネチャを利用してこの制限を解消する。これらのシグネチャは、主要なプロトコル属性だけでなく追加の従属タグ（例えば、「Ｋｅｅｐ−ａｌｉｖｅ」、「Ｃｏｎｎｅｃｔｉｏｎ」、「Ｃｏｎｔｅｎｔ−Ｔｙｐｅ」などのＨＴＴＰタグ）を含む全プロトコル仕様（例えば全てのＨＴＴＰタグ仕様）も反映している。一実施形態において、部分プロトコルの検出処理３２０では、ヘッダフォーマット（例えば、ＨＴＴＰ接続タグ「Ｃｏｎｎｅｃｔｉｏｎ：ｋｅｅｐ−ａｌｉｖｅ＼ｒ＼ｎ」に基づくもの）と、追加タグの存在との組み合わせを使って、プロトコルシグネチャを認証する。部分プロトコルの検出処理３２０では、テキストベースプロトコルおよびバイナリプロトコルを含む種々のプロトコルのために、拡張プロトコル属性を反映させるシグネチャを使用する。プロトコルを一旦識別すると、対応するパーサを使ってデータストリーム要素をパーシングする。部分プロトコルの検出処理３２０によって解析、パーシングされるデータストリーム要素には、アプリケーション層プロトコルヘッダ（例えばＨＴＴＰまたはＳＭＴＰヘッダ）、アプリケーションヘッダ（例えばｅメールヘッダまたはウェブログヘッダ）およびプレゼンテーション層ヘッダ（例えばｚｉｐファイルヘッダまたはマルチパートフォームヘッダ）がある。ヘッダからヘッダへと遷移させることによって、部分プロトコルの検出処理３２０では対応するパーサを使ってヘッダをパーシングし、次の層における処理に必要なメタデータを抽出する。一実施形態において、収集したメタデータがそれぞれのコンテンツ部分の発見やコンテンツの種類の識別に十分でない場合、部分プロトコルの検出処理３２０は、コンテンツ部分の種類（例えば、ｅメールメッセージの本文またはｅメール添付）を決定するため、シグネチャをコンテンツ部分に適用することによって処理を続ける。
【００３０】
メタデータのパーシング処理３２２では、パーサによって抽出されたメタデータを記録する。メタデータには、送信者と受信者の情報（例えば、Ｆａｃｅｂｏｏｋのような特定アプリケーションのためにＨＴＴＰヘッダに埋め込まれているもの）、損失セグメントの位置、部分データストリームに存在するコンテンツ部分の位置、コンテンツ部分の長さ（例えば、損失セグメントによる、部分データを含むｅメールメッセージの本文）、コンテンツ部分の種類および該当する場合には、コンテンツ部分に使用される変換の種類（例えば圧縮または符号化の種類）がある。コンテンツの特徴に加え、メタデータには、部分データストリームに存在する異なるヘッダの特徴（例えば、種類、長さなど）が含まれる。メタデータのパーシング処理３２２では、部分データストリーム処理における異なる層のメタデータを収集し、この情報は次の層の処理を補助する。特に、メタデータは次の処理が行われている際に「ヒント」として使用することができる。例えば、メタデータがデータセグメントの前の２つのデータストリーム要素をＨＴＴＰヘッダおよびＳＭＴＰヘッダとして識別する場合、データセグメントの現在のデータストリーム要素はｗｅｂメールヘッダである可能性が高い。
【００３１】
コンテンツの発見処理３２４では、部分データストリームに存在するコンテンツ部分の位置と種類を決定し、該当する場合、これらのコンテンツ部分の復号化および／またはマーシャリングのレベルを定義する。コンテンツの発見処理３２４ではまた、部分データストリームにおいて、損失セグメントのコンテンツ部分のパディングも行う。例えば、マルチパートフォームを処理する場合、非常に長いペイロード部分は部分データセットとなることがあり、このような損失は、メタデータストア内のストリームの位置のパディングおよびタグ付けによって表すことができる。一実施形態において、コンテンツの発見３２４では、部分データストリームに存在するコンテンツ部分を有効とし、そしてパディングされた部分を無効としてラベルを付け、次の操作（例えばＤＬＰスキャン処理）にどの部分を無視することができるかを知らせる。下の層からのメタデータは、変換するコンテンツが存在するか（またはしないか）を決定するために使用することができる。コンテンツの発見処理３２４では、異なる種類のコンテンツにおける次の処理のための、ユーザ設定の可能な方法または所定の方法を識別することができるが、この場合、次の処理には、全ての利用できるコンテンツまたは部分コンテンツの変換、およびコンテンツのＤＬＰスキャンを含むことができる。
【００３２】
一実施形態において、プレゼンテーション層３０６で行われる処理には、部分データストリームにおけるコンテンツの変換を行うプレゼンテーションの変換処理３２６が含まれる。全て利用可能なコンテンツは、標準変換プロセス（例えばｇｚｉｐ解凍など）を使って変換することができる。部分コンテンツの場合、プレゼンテーション変換３２６では、部分データ操作専用のハイブリッド変換エンジンを使用し、マルチパートフォーム、圧縮データおよび符号化データなどのコンテンツの制限を理解し、それに従ってコンテンツを変換することができる。
【００３３】
一実施形態において、データ（コンテンツ）層３０８で行われる処理には、全ＤＬＰスキャン処理３２８、部分ＤＬＰスキャン処理３３０およびＤＬＰ部分警報処理３３２が含まれる。全ＤＬＰスキャン処理３２８は、データストリームにおける全ての利用可能なコンテンツを、機密情報の指紋を使って機密情報に関してスキャンするために使用する。部分データコンテンツの場合、部分ＤＬＰスキャン処理３３０を使用する。これはプロトコルおよびコンテンツの解析中に派生したメタデータを理解するように構成されている。部分ＤＬＰスキャン処理３３０ではメタデータを使用して部分コンテンツの許容レベル（例えば、欠落したコンテンツの大きさがどれ位であるか）を計算し、ＤＬＰスキャン中の指紋照合基準を定義する（例えば、部分コンテンツと指紋との間の類似度が少なくとも７５％である場合に照合をトリガするなど）。メタデータは、ストリームマーカを介して、無視するべきコンテンツ部分の表示にも使用され、スキャンを続けるべき相対的なコンテンツ／指紋の交差の提供にも使用される。
【００３４】
一実施形態において、部分ＤＬＰスキャン処理３３０において変換する必要のないデータの処理を行う場合、部分ＤＬＰスキャン処理３３０ではパターン照合手法を使って、元のコンテンツ指紋と部分セット（可能な場合）との間の次の有効なデータ交差の位置を見つける。部分ＤＬＰスキャン処理３３０でｋグラムの指紋（すなわちｋ個の文字のセットの指紋）を使用する一実施形態において、メタデータは、ｋグラム指紋とコンテンツの適切な部分との位置を合わせ、欠落したコンテンツ部分に対応するｋグラム指紋を無視するために使用される。
【００３５】
一実施形態において、部分ＤＬＰスキャン処理３３０で解凍データを処理する場合、メタデータを使用して、評価中の特定のファイルを確認する。この目的のために使用するメタデータは、添付タグおよび他のそのような標識を介したファイル名であってもよい。ファイルのＩＤを決定すると、上述のパターン照合手法および／またはｋグラム指紋を使ってスキャンを行うことができる。全てのスキャン手法に関して、欠落したデータの量に対する照合の割合は、警報の決断のための計算中に粒度／重量を提供するための測定関数として定義することができる。
【００３６】
ＤＬＰ部分警報処理３３２では、ＤＬＰポリシーの違反が検出された際に警報を生成する。ＤＬＰポリシーのルールにより、違反は例えば、指紋照合が単一のメッセージ内で検出された場合、または指紋照合が同じ送信者から送信された少なくともＮ個のメッセージで検出された場合、あるいは指紋照合が特定の受信者に送信されたメッセージで検出された場合などにトリガすることができる。ＤＬＰ部分警報処理３３２によって生成される警報には、損失の可能性がその誤検出（ＦＰ）の確立に対して決定できるように、解析されたデータのレベルおよび／または割合および／または量を定義する追加情報を含むことができる。この追加情報は警報の信頼性を示す。
【００３７】
図４〜図７は、本発明のいくつかの実施形態に係るネットワークデバイス（例えば、図１のネットワークデバイス１０８）によって行われる方法を示すフローチャートである。これらの方法は、ハードウェア（電気回路、専用論理回路など）、ソフトウェア（汎用コンピュータシステムまたは専用マシンで実行されるもの）またはそれらの組み合わせから構成することのできる処理論理回路によって行われる。
【００３８】
図４は、部分データストリームにおけるデータ損失の監視方法４００の一実施形態のフローチャートである。方法４００は、ネットワークデバイスで損失セグメントを含む部分データストリームを識別するステップ（ブロック４０２）から始めることができる。部分データストリームはトランスポート層プロトコルヘッダまたはアプリケーション層プロトコルヘッダを使って識別することができる。ＴＣＰヘッダを使って部分データストリームを識別する方法の一実施形態について、図５を参照して以下に詳述する。
【００３９】
ブロック４０４において、ネットワークデバイスは部分データストリームのコンテンツの特徴を決定する。部分データストリームのコンテンツの特徴には、部分データストリームに存在するコンテンツ部分の位置、部分データストリームに存在する各コンテンツ部分の長さ、部分データストリームに存在する各コンテンツ部分の種類、部分データストリームに存在するコンテンツ部分に必要な変換の種類（該当する場合）および部分データストリーム内における損失セグメントのコンテンツ部分の位置がある。部分データストリームのコンテンツの特徴を決定する方法のいくつかの実施形態を、図６および図７を参照して以下に詳述する。
【００４０】
決定されたコンテンツの特徴に基づき、ネットワークデバイスは部分データストリームに存在するコンテンツ部分を発見し、部分データストリーム内の損失セグメントのコンテンツ部分をパディングする（ブロック４０６）。該当する場合、ネットワークデバイスは部分データストリームのコンテンツを変換（例えば、解凍または復号化）する。部分データストリームのコンテンツを変換する方法の一実施形態を、図８を参照して以下に詳述する。
【００４１】
ブロック４０８において、ネットワークデバイスは、一以上のＤＬＰポリシーに従い、部分データストリームを機密情報についてスキャンする。ネットワークデバイスは機密情報の指紋を使ってスキャンを行うことができ、ＤＬＰポリシーの違反を識別するＤＬＰ警報を生成することができる。ＤＬＰ警報は部分データストリーム内の欠落したコンテンツの割合を特定し、ＤＬＰ警報の信頼性を示すこともできる。部分データストリームのＤＬＰスキャンの方法に関する一実施形態を、図９を参照して以下に詳述する。
【００４２】
図５は、損失セグメントを含む部分データストリームを識別する方法５００に関する一実施形態のフローチャートである。方法５００は、ネットワークデバイスでデータストリームがまだ生成されていない接続タプル（ソースアドレス／ポートおよび宛先アドレス／ポート）と関連付けられたセグメントを検出するステップから始まる（ブロック５０２）。ブロック５０４において、ネットワークデバイスは、この接続タプルに関連付けられた初期セグメント（例えば、ＴＣＰ制御（ＳＹＮ／ＡＣＫ）セグメント）が存在するかどうか（例えば、検出されたセグメントがＴＣＰ制御セグメントか、またはバッファ内に対応するＴＣＰ制御セグメントがあるか）を決定する。識別された接続タプルに関連付けられた初期セグメントが存在する場合、ネットワークデバイスは初期セグメントに基づいて新しいデータストリームを生成し（ブロック５１０）、この新しいデータストリームを新しいセッションと関連付け（ブロック５１２）、ブロック５１４に進む。
【００４３】
識別された接続タプルに関連付けられた初期セグメントが存在しない（すなわち失われた）場合、ネットワークデバイスは接続タプルに基づいて新しいデータストリームを生成し（ブロック５０５）、このデータストリームのセッションがすでに存在しているか否かを決定する（ブロック５０６）。このデータストリームのセッションが存在しない場合、ネットワークデバイスはデータストリームを新しいセッションと関連付け（ブロック５１２）、ブロック５１４に進む。このデータストリームのセッションがすでに存在する場合、ネットワークデバイスはデータストリームを存在するセッションに関連付け（ブロック５０８）、ブロック５１４に進む。
【００４４】
ブロック５１４において、ネットワークデバイスはセグメントのトランスポート層ヘッダ（例えば、データセグメントのＴＣＰヘッダ内のシーケンス番号）を使って、データストリームに属するセグメントを識別する。ブロック５１６において、ネットワークデバイスはデータストリームから欠落したセグメントを識別する。ブロック５１８において、ネットワークデバイスは欠落したセグメントを損失セグメントキュー上に置く。キューに置かれたセグメントがキャプチャされた場合（ブロック５２０）、ネットワークデバイスはこのセグメントをキューから取り除き（ブロック５２２）、ブロック５２４に進む。
【００４５】
ブロック５２４において、ネットワークデバイスはストリーム終端の表示を（例えば、ＴＣＰ  ＦＩＮメッセージとして）受信したかどうかを決定する。受信している場合、方法５００はブロック５２８に進む、受信していない場合、ネットワークデバイスは所定の時間間隔が経過したかどうかを決定する（ブロック５２６）。経過している場合、方法５００はブロック５２８に進む。経過していない場合、方法５００はブロック５２０に戻る。ブロック５２８において、ネットワークデバイスは損失セグメントキューに残っているセグメントを損失セグメントとしてマークする。
【００４６】
図６は、部分データストリームのコンテンツの特徴を決定する方法６００の一実施形態のフローチャートである。方法６００は、ネットワークデバイスで部分データストリーム内における各損失セグメントの位置に開始マーカおよび終了マーカを挿入するステップから始まる（ブロック６０２）。ブロック６０４において、ネットワークデバイスは各損失セグメントの位置をメタデータストアに記録する。
【００４７】
ブロック６０６において、ネットワークデバイスは部分データストリームにおけるデータストリーム要素のプロトコル解析を行う。プロトコル解析には、部分データストリームにおけるデータストリーム要素の種類を決定するステップと、対応するパーサを使ってデータストリーム要素をパーシングして、データストリーム要素からメタデータを抽出するステップとが含まれる。プロトコル解析方法の一実施形態を、図７を参照して以下に詳述する。
【００４８】
図7は、部分データストリームにおけるデータストリーム要素のプロトコル解析を行う方法７００の、一実施形態によるフローチャートである。方法７００は、ネットワークデバイスにおいて、部分データストリームに存在する第１データセグメントを識別するステップから始まる（ブロック７０２）。ブロック７０４において、ネットワークデバイスは第１データセグメントのトランスポート層プロトコルヘッダ（例えばＴＣＰヘッダ）をパーシングし、次のデータストリーム要素の開始を識別する（例えば、ＨＴＴＰヘッダ、ＳＭＴＰヘッダなどのアプリケーション層プロトコルヘッダの先頭）。ブロック７０６において、ネットワークデバイスは次のデータストリーム要素の種類がわかっているかどうか（例えば、次のデータストリーム要素が自身の種類の識別子を含んでいるか、または前のデータストリーム要素が次のデータストリーム要素の識別子を含んでいたか）を決定する。
【００４９】
データストリーム要素の種類がわかっている場合、ネットワークデバイスは対応するパーサをデータストリーム要素に適用してメタデータを抽出し、データストリーム要素の終端を検出する（ブロック７１０）。データストリーム要素の種類がわからない場合、ネットワークデバイスは照合するシグネチャが見つかるまで、シグネチャのセットをデータストリーム要素に適用し（ブロック７０８）、対応するパーサをデータストリーム要素に適用してメタデータを抽出し、このデータストリーム要素の終端を検出する（ブロック７１０）。一実施形態において、シグネチャを適用する前に、ネットワークデバイスはいつ新しいフィールドまたはヘッダタグが利用できるかを示す共通のデリミタを識別し、プロトコルシグネチャ処理で認識される可能性のある、可能な最初のプロトコルタグから開始するようにストリームを配置する。複数のデリミタ標識を単一のデータストリーム内に置くことができるので、各々の可能な開始位置を、シグネチャの適用に使用することができる。一実施形態において、ネットワークデバイスはプロトコルの拡張属性を反映するシグネチャを使ってプロトコルのＩＤを確認する。プロトコルシグネチャは、ヘッダフォーマット（例えば、ＨＴＴＰ接続タグ「Ｃｏｎｎｅｃｔｉｏｎ：ｋｅｅｐ−ａｌｉｖｅ＼ｒ＼ｎ」に基づくもの）と追加タグの存在との組み合わせを使って有効にすることができる。解析、パーシングされるデータストリーム要素には、アプリケーション層プロトコルヘッダ（例えばＨＴＴＰまたはＳＭＴＰヘッダ）、アプリケーションヘッダ（例えばｅメールヘッダまたはウェブログヘッダ）およびプレゼンテーション層ヘッダ（例えばｚｉｐファイルヘッダまたはマルチパートフォームヘッダ）がある。
【００５０】
ブロック７１２において、ネットワークデバイスはパーシング中に抽出したメタデータをメタデータストアに格納する。メタデータにはデータストリーム要素の種類（例えば、ＨＴＴＰヘッダ、ＳＭＴＰヘッダ、ｅメールヘッダ、Ｆａｃｅｂｏｏｋヘッダ、ｚｉｐファイルヘッダなど）、送信者と受信者の情報（例えば、Ｆａｃｅｂｏｏｋのような特定アプリケーションのためにＨＴＴＰヘッダに埋め込まれたもの）、損失セグメントの位置、部分データストリーム内に存在するコンテンツ部分の位置、コンテンツ部分の長さ（例えば、損失セグメントによる部分データを含むｅメールメッセージの本文）、コンテンツ部分の種類および該当する場合、コンテンツ部分に使用される変換の種類（例えば、圧縮または符号化の種類）が含まれる。
【００５１】
データストリーム要素のパーシングが終了すると、ネットワークデバイスは現在のデータセグメントが他のデータストリーム要素を含んでいるか否かを決定することができる（ブロック７１４）。含んでいる場合、ネットワークデバイスはデータセグメントの次のデータストリーム要素に移動し（ブロック７１８）、ブロック７０６に戻る。一実施形態において、次のデータストリーム要素がデータセグメントのコンテンツ部分である場合、ネットワークデバイスは収集したメタデータがコンテンツ部分に関する十分な情報（例えば、コンテンツ部分の長さ、コンテンツ部分の種類、コンテンツ部分に必要な変換）を含んでいるかどうかを決定する。含んでいる場合、ネットワークデバイスはコンテンツ部分の処理をスキップし、ブロック７１６に進む。含んでいない場合、ネットワークデバイスはブロック７０６から７１４でコンテンツ部分を処理し、ブロック７１６に進む。
【００５２】
ブロック７１６において、ネットワークデバイスは、部分データストリームがまだ処理されていないデータセグメントをさらに含んでいるか否かを決定する（ブロック７１６）。含んでいない場合、方法７００は終了する。含んでいる場合、ネットワークデバイスは部分データストリームに存在する次のセグメントに進み（ブロック７２０）、ブロック７０４に戻る。
【００５３】
図８は、部分データストリームのコンテンツを変換する方法８００に関する一実施形態のフローチャートである。方法８００は、ネットワークデバイスにおいて部分データストリームに存在する各コンテンツ部分の位置を決定するステップ（ブロック８０２）および部分データストリーム内に存在する各コンテンツ部分の種類を決定するステップ（ブロック８０４）から始まる。ネットワークデバイスはメタデータストアに格納されたメタデータを使用してこの決定を行う。
【００５４】
ブロック８０６において、ネットワークデバイスは部分データストリームに存在するデータセグメントのコンテンツ部分を有効としてタグ付けを行い、損失データセグメントのパディングされたコンテンツ部分を無効としてタグ付けを行い、ＤＬＰスキャン中にどの部分をスキャンし、どの部分を無視するのかを示す。ブロック８０８において、ネットワークデバイスは任意のコンテンツ部分が変換を必要とするか否かを決定する。必要としない場合、方法８００は終了する。必要とする場合、ネットワークデバイスは必要とされる変換を識別し（ブロック８１０）、部分データストリームに存在する対応するコンテンツ部分を変換する（ブロック８１２）。いくつかの実施形態において、部分データ操作専用で、マルチパートフォーム、圧縮データおよび符号化データの制限を解釈するハイブリッド変換エンジンを、部分コンテンツの変換に使用する。変換エンジンの使用はコンテンツの種類に応じて（例えば、ユーザ指定データに基づいて）設定することができる。
【００５５】
図９は、部分データストリームにおけるＤＬＰポリシー違反を検出する方法９００に関する一実施形態のフローチャートである。ブロック９０２において、ネットワークデバイスは部分データストリームのコンテンツを機密情報についてスキャンする（ブロック９０２）。部分データストリームのコンテンツが全て利用できる場合、ネットワークデバイスは機密情報の指紋を使ってコンテンツをスキャンする。コンテンツのいくつかの部分が欠落している場合、ネットワークデバイスは部分コンテンツの許容レベル（例えば、欠落したコンテンツの大きさがどれ位であるか）を決定し、ＤＬＰスキャン中の指紋照合基準（例えば、部分コンテンツと指紋との間の類似度が少なくとも７５％である場合に照合をトリガするなど）を定義する。一実施形態において、スキャンするコンテンツを変換する必要がない場合、ネットワークデバイスはパターン照合手法を使って、最初のコンテンツ指紋と部分セットとの間の次の有効なデータ交差の位置を見つける。一実施形態において、ネットワークデバイスはｋグラムの指紋を使い、欠落したコンテンツ部分に対応するｋグラム指紋を無視して、ｋグラムの指紋とコンテンツの適切な部分とをメタデータに基づいて位置合わせする。あるいは、スキャンするコンテンツが解凍されたデータを含んでいる場合、ネットワークデバイスはメタデータを使って評価中の特定のファイルを確認する。この目的に使用されるメタデータは、添付タグまたは他のそのような標識によるファイル名であってもよい。ファイルのＩＤが決定されると、上述のパターン照合手法および／またはｋグラム指紋を使ってスキャンを行うことができる。
【００５６】
ブロック９０４において、ネットワークデバイスは部分データストリームが機密情報を含んでいるか否かを決定する。含んでいない場合、方法９００を終了する。含んでいる場合、ネットワークデバイスは損失セグメントによって何パーセントのコンテンツが欠落しているのかを計算する（ブロック９０６）。さらにネットワークデバイスは欠落したデータの量に対する照合の割合を計算することもできる。ブロック９０８において、ネットワークデバイスはＤＬＰポリシー違反と欠落したコンテンツの割合とを報告する。さらに、欠落したデータの量に対する照合の割合も報告することができる。
【００５７】
図１０は、コンピュータシステム１０００の例示的な形態におけるマシンを図式で表したものであり、このコンピュータシステム内では、本明細書に記載する方法の内の一つまたは複数をマシンに実行させる命令のセットを実行することができる。代替実施形態において、マシンは他のマシンにＬＡＮ，イントラネット、エクストラネットまたはインターネットで接続（ネットワーク接続）することができる。マシンはクライアントサーバネットワーク環境において、サーバまたはクライアントマシンとして、またはピアツーピア（または分散）ネットワーク環境において、ピアマシンとして操作することができる。このマシンは、スニファー、パソコン（ＰＣ），タブレット型ＰＣ、セットトップボックス（ＳＴＢ）、パーソナル・デジタル・アシスタント（ＰＤＡ）、携帯電話、ウェブアプライアンス、サーバ、ネットワークルータ、スイッチまたはブリッジあるいはそのマシンのとる動作を特定する命令のセット（連続的またはその他）を実行することのできる任意のマシンとすることができる。さらに、単一のマシンのみを説明したが、「マシン」という用語は、命令の一セット（または複数のセット）を個々にまたは共同して実行し、本明細書に記載する方法の内の一つまたは複数を実行するマシンの任意の集合体を含むと解釈されたい。
【００５８】
例示的コンピュータシステム１０００は、処理装置（プロセッサ）１００２、メインメモリ１００４（例えば、読み取り専用メモリ（ＲＯＭ）、フラッシュメモリ、同期ＤＲＡＭ（ＳＤＲＡＭ）などの動的ランダム・アクセス・メモリ、スタティックメモリ１００６（例えば、フラッシュメモリ、スタティックＲＡＭ（ＳＲＡＭ）など）およびバス１００８を介して相互に通信するデータ記憶装置（例えばドライブユニット）を含む。
【００５９】
プロセッサ１００２は、マイクロプロセッサ、中央演算処理装置などの一以上の汎用処理装置を表す。より詳細には、プロセッサ１００２は、複数命令セット・コンピュータ（ＣＩＳＣ：complex instruction set computing）マイクロプロセッサ、縮小命令セット・コンピュータ（ＲＩＳＣ：reduced instruction set computing）マイクロプロセッサ、超長命令語（ＶＬＩＷ：very long instruction word）マイクロプロセッサまたはその他の命令のセットを実行するプロセッサもしくは命令セットの組み合わせを実行するプロセッサであってもよい。プロセッサ１００２はまた、特定用途向け集積回路（ＡＳＩＣ：application specific integrated circuit）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ：field programmable gate array）、デジタル・シグナル・プロセッサ（ＤＳＰ：digital signal processor）、ネットワークプロセッサなどの、一以上の特定用途向け処理装置であってもよい。プロセッサ１００２は、本明細書に記載の操作やステップを行うための処理論理回路（例えば命令）１０２６を実行するように構成される。
【００６０】
コンピュータシステム１０００は、ネットワークインターフェース装置１０２２をさらに含むことができる。コンピュータシステム１０００にはまた、ビデオディスプレー装置１０１０（例えば、液晶表示（ＬＣＤ：liquid crystal display）またはブラウン管（ＣＲＴ：cathode ray tube））、英数字入力装置１０１２（例えばキーボード）、カーソル移動制御装置１０１４（例えばマウス）、信号発生装置１０２０（例えばスピーカー）も含まれる。
【００６１】
データ記憶装置１０１６は、本明細書に記載の方法または機能の内の一つまたは複数を具体化する、一以上の命令のセット（例えばソフトウェア）１０２６が格納された、コンピュータ可読媒体１０２４を含むことができる。ソフトウェア１０２６はまた、コンピュータ可読媒体を構成するコンピュータシステム１０００、メインメモリ１００４およびプロセッサ１００２によって実行される間、メインメモリ１００４および／またはプロセッサ１００２内に完全に、または少なくとも部分的に置いてもよい。ソフトウェア１０２６はさらに、ネットワークインターフェース装置１０２２を介してネットワーク１０２０で送受信することができる。
【００６２】
コンピュータ可読媒体１０２４を例示的実施形態において単一の媒体として説明したが、「コンピュータ可読媒体」という用語は、一以上の命令のセットを格納する単一または複数の媒体（例えば、集中または分散データベースおよび／または関連するキャッシュまたはサーバ）を含むものと解釈されたい。「コンピュータ可読媒体」という用語はまた、マシンによって実行するための命令のセットを格納、符号化またはキャリーすることができ、マシンに本発明の一以上の方法を実行させる任意の媒体を含むと解釈されたい。よって「コンピュータ可読媒体」という用語は、ソリッドステートメモリ、光媒体および磁気媒体を含むが、それらに限定されるものではないと解釈されたい。
【００６３】
上述の説明において、周知の構造および装置を詳細ではなくブロック図で示し、本発明が曖昧なものにならないようにした。説明のいくつかの部分は、コンピュータメモリ内のデータビットの演算アルゴリズムおよび記号表現の用語で表している。これらのアルゴリズム的記述および表現は、データ処理を行う当事者が彼らの作業の内容を他の当事者へ最も効率的に伝えるための手段である。本明細書において、そして一般に、アルゴリズムは所望の結果を導き出すステップの自己無撞着なシーケンスであると考えられる。ステップは物理量の物理的操作を必要とするものである。一般に、これらの量は格納、伝送、結合、比較およびその他の操作が可能な電気または磁気信号の形態をとるが、必ずしもそうでなければならないということではない。主に共用のため、時として、これらの信号をビット、値、要素、記号、文字、用語、数字などと称すると便利であることがわかっている。
【００６４】
しかしながらこれらの用語および類似の用語は全て適切な物理量に関連するものであり、これらの量に適用される便利なラベルにすぎないものであると留意されたい。特に明記しない限り、上述の記載から明らかなように、説明全体において「識別」、「適用」、「抑制」、「スキャン」、「更新」などの用語を使用している記載は、コンピュータシステムのレジスタおよびメモリ内において物理（例えば電子）量で表されるデータを、コンピュータシステムメモリ、レジスタまたはその他の情報記憶装置、伝送装置または表示装置内において物理量として表される同様の他のデータに操作、変換するコンピュータシステムまたは類似の電子コンピューティングデバイスの動作および処理のことであると理解されたい。
【００６５】
本発明の実施形態は、本明細書における操作を行うための装置に関するものでもある。その装置は、必要とされる目的のために特別に構成することができる、または、コンピュータに格納されたコンピュータプログラムによって選択的に起動または再設定される汎用コンピュータを備えることができる。上述のように、このようなコンピュータプログラムはコンピュータ可読媒体に格納することができる。
【００６６】
本明細書に提示するアルゴリズムおよび表示は、任意の特定のコンピュータまたはその他の装置と本質的に関係があるものではない。種々の汎用システムを本明細書の教示に従ってプログラムと共に使用することができる、または、必要とされる方法のステップを行うためにより特殊化された装置を構成すると便利だろう。これらの種々のシステムに必要とされる構造は、下記の記載から明らかとなるだろう。さらに本発明は、任意の特定のプログラミング言語を使って説明していない。本明細書に記載する発明の教示を実現するには、種々のプログラミング言語を使用することができると理解されたい。
【００６７】
上記の記載は説明のためのものであって、制限するものではないと理解されたい。当事者であれば、上述の記載を読んで理解する際に、多くの他の実施形態が明らかとなるであろう。従って本発明の範囲は、添付の特許請求の範囲およびこの特許請求の範囲に権利が与えられる均等物の全ての範囲を参照して決定されるべきである。
【図１】
0006026423.tif 000002
【図２】
0006026423.tif 000003
【図３】
0006026423.tif 000004
【図４】
0006026423.tif 000005
【図５】
0006026423.tif 000006
【図６】
0006026423.tif 000007
【図７】
0006026423.tif 000008
【図８】
0006026423.tif 000009
【図９】
0006026423.tif 000010
【図１０】
0006026423.tif 000011