(58)【調査した分野】(Int.Cl.,DB名)
請求項4に記載のコンピュータにより実行される方法において、前記部分データストリーム内の損失セグメントのコンテンツ部分をパディングして、パディングされた部分データストリームを生成するステップが、
前記部分データストリーム内に存在する各コンテンツ部分の位置を識別するステップと、
前記部分データストリーム内に存在する各コンテンツ部分の種類を識別するステップと、
各損失セグメントのコンテンツ部分を無効とタグ付けするステップと、
前記部分データストリーム内に存在する任意のコンテンツ部分の変換が必要か否かを決定するステップと、
前記部分データストリーム内に存在する任意のコンテンツ部分の変換が必要な場合、必要とされる変換の種類を識別し、必要とされる変換の識別された種類を使って前記コンテンツ部分を変換するステップと
を含む方法。
請求項1に記載のコンピュータにより実行される方法において、前記少なくとも一つのDLPポリシーに従って、前記パディングされた部分データストリームを機密情報についてスキャンするステップが、
欠落したコンテンツ部分を識別するステップと、
前記機密情報のシグネチャを使って該機密情報のコンテンツをスキャンする際に、前記欠落したコンテンツ部分を無視するステップと
を含む方法。
請求項13に記載のコンピュータにより実行される方法において、前記パディングされた部分データストリーム内の機密情報を検出すると、DLPポリシー違反と前記パディングされた部分データストリーム内の欠落したコンテンツの割合とを報告するステップをさらに含む方法。
請求項17に記載のコンピュータで読み取り可能な非一時的記録媒体において、前記部分データストリームにおけるデータストリーム要素のプロトコル解析を行うステップが、
複数のシグネチャを使って各データストリーム要素の種類を決定するステップと、
前記種類に基づいて各データストリーム要素をパーシングしてメタデータを抽出するステップと、
前記メタデータをメタデータストアに格納するステップと
を含む非一時的記録媒体。
【発明を実施するための形態】
【0011】
部分データストリームにおけるデータ損失の監視方法および装置について説明する。ネットワーク監視装置はネットワークトラフィックをキャプチャし、キャプチャしたトラフィックに関して、顧客、従業員または患者のデータ、設計プラン、ソースコード、CAD図面、会計報告書などの機密情報の有無についてスキャンする。大量のトラフィックのため、ネットワーク監視装置は常に全てのデータセグメントをキャプチャできるわけではなく、いくつかのデータストリームが不完全なものとなってしまう。本発明の実施形態は、不完全な(または部分)データストリームにおける機密情報の有無についてスキャンすることを可能にする技術を提供することにより、ネットワーク監視装置におけるデータ損失防止(DLP)機能の信頼性や完全性を向上させる。
【0012】
以下の多くの詳細を記載する。しかしながら本開示の恩恵を受ける当事者にとって、本発明の実施形態がこれらの具体的詳細なく実施可能であることは明白であろう。
【0013】
図1は、本発明の実施形態を操作することができる例示的ネットワークアーキテクチャ100のブロック図である。ネットワークアーキテクチャ100は、一以上のサーバ104およびネットワーク106(例えばインターネットなどのパブリックネットワークまたはローカルエリアネットワーク(LAN)などのプライベートネットワーク)を介して連結したクライアントデバイス(「クライアント」)102を有する。クライアント102にはパーソナルコンピュータ、ラップトップ、PDA、携帯電話、ネットアプライアンスなどが含まれる。サーバ104にはeメールサーバ、ウェブサーバまたはクライアント102とデータ交換を行う任意のその他のサーバが含まれる。サーバ104は同じまた異なるマシン(例えば、サーバコンピュータシステム、ゲートウェイ、パーソナルコンピュータなど)上に設けることができる。
【0014】
ネットワークデバイス108はネットワーク上に設けられ、そこで、例えば、クライアント102およびサーバ104によって送受信されるweb要求およびメッセージを含む、ネットワークトラフィックを観察することができる。メッセージは、eメールメッセージ、インスタントメッセージ(IM)、テルネットセッション中に交換されるメッセージ、ファイル転送プロトコル(FTP)セッション中に交換されるメッセージなどであってもよい。ネットワークデバイス108は、スニファーまたはネットワーク106を通過するトラフィックをキャプチャすることの可能な、任意のその他のコンピューティングデバイスであってもよい。
【0015】
ネットワークデバイス108は、キャプチャしたトラフィックを組織が保持する機密情報の有無についてスキャンする、データ損失防止(DLP)システム110をホストする。機密情報には、例えば、顧客、従業員、患者または価格データ、設計プラン、ソースコード、CAD図面、会計報告書、人事報告書、顧客または患者報告書、価格文書、企業の合併吸収文書、政府(例えば証券取引委員会)の書類およびユーザアクセスの制限された任意のその他の情報が含まれる。DLPシステム110は、DLPポリシーに従ってキャプチャされたネットワークトラフィックをスキャンする。DLPポリシーには、コンテンツをスキャンして機密情報の有無を検出するルールが含まれている。ルールによってコンテンツのスキャンを行う必要のある機密情報を識別し、ポリシー違反を引き起こす条件(例えば、同じ送信者による3つのeメールメッセージにおける機密情報の検出時)を特定し、スキャンの例外(例えば、eメールメッセージの受信者が組織のCEOである場合、スキャンを控える)を提供するなどを行うことができる。スキャンされるコンテンツは、ファイル、eメールメッセージ、テキストメッセージ、web要求またはネットワークデバイス108によってキャプチャされたネットワークトラフィックの一部である、任意のその他のデータアイテムであってもよい。ネットワークデバイス108には、ネットワークトラフィックを指定バッファに記録するネットワークアダプタカードおよび/またはパケットキャプチャソフトウェアが含まれる。大量のネットワークトラフィックのため、バッファは周期的に満杯となり、データセグメントのうちのいくつかが失われてしまう。
【0016】
一実施形態において、DLPシステム110は、損失セグメントを含む部分データストリームのDLP監視を可能にする、部分データストリームサブシステム112を有する。特に、部分データストリームサブシステム112は、セグメントをデータストリームに(例えばセグメントのトランスポート層ヘッダを使って)再構成し、いくつかのデータストリームが欠落したセグメントを有することを決定することによって、最初に損失セグメントを含む部分データストリームを識別することができる。欠落したセグメントのため、部分データストリームは部分データストリームの異なる要素の種類を識別する情報が欠けているかもしれない。データストリーム要素には、異なるプロトコルおよびアプリケーションのヘッダと、コンテンツ部分(例えば、eメールの本文部分、eメールの添付部分など)とが含まれている。ヘッダには、例えば、トランスポート層プロトコルヘッダ(例えば、伝送制御プロトコル(TCP)ヘッダ、ユーザデータグラムプロトコル(UDP)ヘッダなど)、アプリケーション層プロトコルヘッダ(例えば、ハイパーテキスト転送プロトコル(HTTP)ヘッダ、簡易メール転送(SMTP)ヘッダなど)、アプリケーションヘッダ(例えば、eメールヘッダ、Web2.0アプリケーションヘッダなど)、およびデータプレゼンテーションヘッダ(例えば、zipファイルヘッダ、マルチパートフォームヘッダなど)がある。ヘッダは、データストリーム内におけるコンテンツ部分の位置、コンテンツ部分の長さ、コンテンツ部分の種類、コンテンツ部分のフォーマットなど、それぞれのコンテンツ部分の特徴を識別する情報を提供する。
【0017】
部分データストリームサブシステム112は、データストリーム要素を解析してそれらの種類を決定し、決定した種類に従ってデータストリーム要素をパーシングし、部分データストリームのそれぞれのコンテンツ部分の特徴を抽出する。これらの特徴に基づいて、部分データストリームサブシステム112は部分データストリーム内に存在するコンテンツ部分の位置を見つけ、損失セグメントのコンテンツ部分をパディングし、部分データストリームに存在するどのコンテンツ部分を変換する必要があるのかと、必要とされる変換の種類(例えば、解凍または復号化)とを識別する。その後、部分データストリームサブシステム112は必要であれば(例えば部分データ操作専用ハイブリッド変換エンジンを使って)コンテンツ部分を変換し、その結果得られたコンテンツを、機密情報の有無についてDLPポリシーに従ってスキャンすることができる。コンテンツをスキャンする際、部分データストリームサブシステム112は実際のソースデータ(実際の機密情報)を使用せず、ソースデータの指紋を使用して機密情報がさらされるのを防ぎ、コンテンツのより効率的な検索を容易にする。指紋には、ソースデータのハッシュ、暗号化されたソースデータ、またはソースデータを独自に識別する任意のその他のシグネチャが含まれる。スキャンされたコンテンツに機密情報が含まれる場合、部分データストリームサブシステム112は部分データストリーム内の欠落したコンテンツの割合とともに、DLPポリシーの違反を報告することができる。
【0018】
図2は、部分データストリームサブシステム200の一実施形態のブロック図である。部分データストリームサブシステム200は、部分データストリーム生成器202、ストリームマーカ204、プロトコル解析器206、メタデータストア212、コンテンツマネージャ214およびDLPスキャナ216を含むことができる。いくつかの実施形態によれば、部分データストリームサブシステム200の構成要素はモジュールとすることができ、これらのモジュールは組み合わせたり、さらにモジュールに分けたりすることができる。
【0019】
部分データストリーム生成器202は、キャプチャされたデータセグメントの(例えば、TCPヘッダに含まれるシーケンス番号、セグメントソース、宛先データを使った)データストリームへの再構成、(例えば、SYN/ACKおよびFIN TCPメッセージを使った)再構成したデータセグメントからのデータストリームの生成、およびデータストリームから欠落したセグメントの検出を行う。一実施形態において、部分データストリーム生成器202は、例えば、TCP制御メッセージに応答するセッションを生成し、またはTCP制御メッセージを損失した場合、接続タプル(ソースアドレス/ポートおよび宛先アドレス/ポート)のセッションを生成することによって、各々の部分データストリームをセッションと関連付ける。ストリームマーカ204は、部分データストリーム内の各損失セグメントの位置に、開始および終了マーカを挿入し、各損失セグメントの位置をメタデータストア212に記録する。
【0020】
プロトコル解析器206は、部分データストリームのデータストリーム要素の処理を行い、それらの種類を決定する。データストリーム要素には、トランスポート層ヘッダ(例えば、TCPヘッダ、UDPヘッダなど)、アプリケーション層ヘッダ(例えば、HTTPヘッダ、SMTPヘッダなどのアプリケーション層プロトコルヘッダおよびeメールヘッダ、ウェブログヘッダなどのアプリケーションヘッダ)、プレゼンテーション層ヘッダ(例えばzipファイルヘッダ、マルチパートフォームヘッダなど)およびコンテンツ部分(例えば、eメール本文、eメール添付、ブログ投稿など)が含まれる。損失データセグメントのため、現在のデータストリーム要素の種類がわからない場合がある。例えば、webメールを送信するクライアントはwebメールメッセージを5つの部分に分割して、5つのデータセグメントとなることがある。第2データセグメントがHTTP識別子を含むHTTPヘッダを含んでいる可能性もある。次のデータセグメントのHTTPヘッダは種々のその他の情報(例えば、webメールメッセージの本文を含むクッキー部)を含み、HTTP識別子を含んでいない能性がある。第2データセグメントが失われた場合、次のデータセグメントのHTTPヘッダのIDが明らかでなくなる。プロトコル解析器206には、シグネチャデータストアに格納されているシグネチャ208を利用することにより、現在のデータストリーム要素におけるIDの欠如に対処する。シグネチャ208には、種々のプロトコルヘッダのシグネチャと種々のコンテンツフォーマット(例えば、eメールメッセージのフォーマット、マルチパートフォーム、ブログなど)のシグネチャとが含まれる。シグネチャ208は、特定のプロトコルのフォーマットを理解する対応パーサ210を有している。データストリーム要素に照合するシグネチャ208を見つけると、プロトコル解析器206は対応するパーサ210を使ってデータストリーム要素をパーシングし、データストリーム要素に含まれているメタデータを抽出する。現在のデータストリーム要素の終端に達すると、プロトコル解析器206は部分データストリーム内に存在する次のデータストリーム要素に移動し、同様に次のデータストリーム要素を処理し、部分データストリーム内に存在する全てのデータセグメントを処理するまでこれらの操作を反復する。プロトコル検出操作の例を、以下により詳細に記載する。データストリーム要素の処理中に収集したメタデータをメタデータストア212に格納する。メタデータには、例えば、データストリーム要素における種類の識別子、部分データストリームの送信者と受信者、部分データストリームのコンテンツ部分の特徴(例えば、部分データストリーム内に存在する各コンテンツ部分の位置、部分データストリーム内に存在する各コンテンツ部分の長さ、部分データストリーム内に存在する各コンテンツ部分の種類、部分データストリーム内に存在するコンテンツ部分の変換(必要とされる場合)の種類)、各損失セグメントの開始および終了位置などが含まれる。
【0021】
コンテンツマネージャ214はメタデータストア212内のメタデータを使用し、部分データストリームに存在するコンテンツ部分の位置および種類と、必要であればこれらのコンテンツ部分の変換の種類を決定する。さらにコンテンツマネージャ214はメタデータを使って損失セグメントのコンテンツ部分を識別し、それによってこれらのコンテンツ部分をパディングする。部分データストリーム内に存在する任意のコンテンツ部分の変換が必要とされる場合、コンテンツマネージャ214は必要とされる変換を行う。変換操作の例をより詳しく以下に説明する。
【0022】
DLPスキャナ216は、機密データの指紋220を使って部分データストリームをスキャンする。スキャンはDLPポリシー218に従って行うことができる。さらにDLPポリシーは、いつポリシー違反をトリガすべきかを定義することができる(例えば、ポリシー違反をトリガするための指紋照合の数、送信者または受信者の例外など)。指紋220は指紋ストアに格納することができる。DLPポリシー218はDLPポリシーストアに格納することができる。メタデータストア212、シグネチャストア、指紋ストアおよびDLPポリシーストアは、磁気または光学式記憶ベースディスク、ソリッドステートドライブまたはハードドライブなどの一以上の大容量記憶装置上に置かれた、単一のデータ構造または複数のデータ構造(データベース、保管所、ファイルなど)とすることができる。
【0023】
DLPスキャナ216は部分コンテンツをスキャンする際に、損失セグメントのコンテンツ部分を無視することができる。部分DLPスキャン操作の例をより詳しく以下に説明する。DLPスキャナ216はDLPポリシー218の違反を検出するとDLP警報を生成し、警報に部分データストリーム内の欠落したコンテンツの割合を含めることにより、警報の信頼性を示してもよい。
【0024】
図3は本発明のいくつかの実施形態に係る部分データストリームの処理を示している。部分データストリームは、トランスポート層要素(例えばTCPヘッダ、UDPヘッダなど)302、アプリケーション層要素(例えばHTTPヘッダ、SMTPヘッダなどのアプリケーション層プロトコルヘッダなど、およびeメールヘッダ、ウェブログヘッダなどのアプリケーションヘッダ)306、プレゼンテーション層要素(例えば、zipファイルヘッダ、マルチパートフォームヘッダなど)306、およびコンテンツ要素(例えば、eメール本文、eメール添付、ブログ投稿など)308などの、種々の層のデータストリーム要素を含むことができる。各層において、メタデータはメタデータストアに記録し、格納する。各層で収集したメタデータは、次の層における処理のヒントとして使用することができる。
【0025】
一実施形態において、トランスポート層302で行う処理には、パケットのキャプチャ処理310および損失セグメントの検出処理312が含まれる。パケット通信に使用するトランスポート層プロトコルがデータセグメント(例えばUDP)のシーケンス番号を提供しないその他の実施形態において、パケットのキャプチャ処理310および損失セグメントの検出処理312は、アプリケーション層304での処理中に行う。
【0026】
パケットのキャプチャ処理310には、データセグメントのキャプチャと、例えばセグメントヘッダ(例えばTCPヘッダ)に含まれるシーケンス番号を使った、データセグメントのデータストリームへの再構成を含めることができる。一実施形態において、欠落したセグメントを検出すると、それを所定時間(例えばタイマーを設定して)またはTCPクローズ接続(FIN)メッセージが受信されるまで、損失セグメントキューに置く。TCP制御(SYN/ACK)メッセージは、特定の接続タプル(宛先アドレス/ポートおよびソースアドレス/ポート)に関連付けられたデータストリームをいつ生成するかを決定するために使用することができる。損失セグメントの検出処理312は、損失セグメントキューのタイムアウトによって起動することができる。損失セグメントの検出処理312では、特定のセッションのために記録したセグメントを全て抜き出し、セッションが存在しない場合(例えば、TCP制御セグメントが失われた場合)にはセッションを生成し、または、データストリームがデータストリームをアクティブなストリームとして識別する情報を(例えばHTTPヘッダのクッキー内に)含んでいる場合には、前に生成したセッションにデータストリームを移す。
【0027】
一実施形態において、アプリケーション層304で行う処理には、損失セグメントストリームのマーキング処理314と、ストリームのパディング処理316と、部分プロトコルの配置処理318と、部分プロトコルの検出処理320と、メタデータのパーシング処理322と、コンテンツの発見処理324とが含まれる。損失セグメントストリームのマーキング処理314では、損失セグメントが検出される各々の一定の点に開始および終了のストリームマーカを挿入し、開始および終了のストリームマーカの位置をメタデータストアに格納する。ストリームのパディング処理316では、ストリームマーカを使ってパディングを提供する。一実施形態において、ストリームのパディング処理316は、アプリケーション層ヘッダ処理の前(すなわち、部分プロトコルの配置処理318および部分プロトコルの検出処理320の前)に行う。あるいは、ストリームのパディング処理316は、部分プロトコル検出処理320を終了して、部分データストリームのコンテンツ部分を発見した後に実行される。この代替実施形態において、部分プロトコルの配置処理318および部分プロトコルの検出処理320では、ストリームマーカを使って、パーシングするコンテキストのデリミタを決定し、不必要なオーバーヘッドを回避するためにパッディングは使用しない。
【0028】
部分プロトコルの配置処理318は、アプリケーション層ヘッダの情報がすぐに利用できない(例えば、前の層または現在のデータストリーム要素内に提供されていない)場合のアプリケーション層ヘッダの種類の決定において、部分プロトコルの検出処理320を支援するために実行される。部分プロトコルの検出処理320では、特定のプロトコルに関連付けられた異なるシグネチャを使ってヘッダの種類が決定される。部分データストリームの処理中、ストリームはマルチプルプロトコルからマルチプルプロトコルへ(例えば、TCPヘッダからHTTPヘッダへ、HTTPヘッダからWeb2.0アプリケーションeメールヘッダへ、Web2.0アプリケーションeメールヘッダからzipファイルヘッダへなど)と遷移させることができる。プロトコルヘッダは通常、新しいフィールドまたはヘッダタグがいつ利用可能かを示す共通のデリミタを使用する。部分プロトコル配置処理318ではデリミタを識別し、プロトコルシグネチャ処理で認識することのできる、可能な最初の「プロトコルタグ」から開始するようにストリームを配置する。複数のデリミタ標識を単一のデータストリーム内に置くことができるので、部分プロトコルの配置処理318では、部分プロトコルの検出処理320において部分データストリームの処理が終了するまで、プロトコルシグネチャ処理のために、各々の可能な「開始」位置を、部分プロトコルの検出処理320のために配置し、ディスパッチする。
【0029】
部分プロトコルの検出処理320では、異なるプロトコルに関連付けられた種々のシグネチャを、部分データストリームの異なるデータストリーム要素に適用する。一実施形態において、部分プロトコルの検出処理320では、プロトコルの拡張属性を反映させるシグネチャを使ってプロトコルのIDを確認する。既存のシグネチャ識別手法では、プロトコルヘッダのフォーマットを使用して、使用されているプロトコルの種類を確立する。例えば、HTTPのシグネチャ検出では、「GET<URI>HTTP/1.1\r\n」の文字列を使ってこのプロトコルを識別する。しかしながら上述の文字列を有するHTTPヘッダを含むデータセグメントが失われた場合、既存のシグネチャID手法のHTTPのIDも失われる。本発明の実施形態では、シグネチャを利用してこの制限を解消する。これらのシグネチャは、主要なプロトコル属性だけでなく追加の従属タグ(例えば、「Keep−alive」、「Connection」、「Content−Type」などのHTTPタグ)を含む全プロトコル仕様(例えば全てのHTTPタグ仕様)も反映している。一実施形態において、部分プロトコルの検出処理320では、ヘッダフォーマット(例えば、HTTP接続タグ「Connection:keep−alive\r\n」に基づくもの)と、追加タグの存在との組み合わせを使って、プロトコルシグネチャを認証する。部分プロトコルの検出処理320では、テキストベースプロトコルおよびバイナリプロトコルを含む種々のプロトコルのために、拡張プロトコル属性を反映させるシグネチャを使用する。プロトコルを一旦識別すると、対応するパーサを使ってデータストリーム要素をパーシングする。部分プロトコルの検出処理320によって解析、パーシングされるデータストリーム要素には、アプリケーション層プロトコルヘッダ(例えばHTTPまたはSMTPヘッダ)、アプリケーションヘッダ(例えばeメールヘッダまたはウェブログヘッダ)およびプレゼンテーション層ヘッダ(例えばzipファイルヘッダまたはマルチパートフォームヘッダ)がある。ヘッダからヘッダへと遷移させることによって、部分プロトコルの検出処理320では対応するパーサを使ってヘッダをパーシングし、次の層における処理に必要なメタデータを抽出する。一実施形態において、収集したメタデータがそれぞれのコンテンツ部分の発見やコンテンツの種類の識別に十分でない場合、部分プロトコルの検出処理320は、コンテンツ部分の種類(例えば、eメールメッセージの本文またはeメール添付)を決定するため、シグネチャをコンテンツ部分に適用することによって処理を続ける。
【0030】
メタデータのパーシング処理322では、パーサによって抽出されたメタデータを記録する。メタデータには、送信者と受信者の情報(例えば、Facebookのような特定アプリケーションのためにHTTPヘッダに埋め込まれているもの)、損失セグメントの位置、部分データストリームに存在するコンテンツ部分の位置、コンテンツ部分の長さ(例えば、損失セグメントによる、部分データを含むeメールメッセージの本文)、コンテンツ部分の種類および該当する場合には、コンテンツ部分に使用される変換の種類(例えば圧縮または符号化の種類)がある。コンテンツの特徴に加え、メタデータには、部分データストリームに存在する異なるヘッダの特徴(例えば、種類、長さなど)が含まれる。メタデータのパーシング処理322では、部分データストリーム処理における異なる層のメタデータを収集し、この情報は次の層の処理を補助する。特に、メタデータは次の処理が行われている際に「ヒント」として使用することができる。例えば、メタデータがデータセグメントの前の2つのデータストリーム要素をHTTPヘッダおよびSMTPヘッダとして識別する場合、データセグメントの現在のデータストリーム要素はwebメールヘッダである可能性が高い。
【0031】
コンテンツの発見処理324では、部分データストリームに存在するコンテンツ部分の位置と種類を決定し、該当する場合、これらのコンテンツ部分の復号化および/またはマーシャリングのレベルを定義する。コンテンツの発見処理324ではまた、部分データストリームにおいて、損失セグメントのコンテンツ部分のパディングも行う。例えば、マルチパートフォームを処理する場合、非常に長いペイロード部分は部分データセットとなることがあり、このような損失は、メタデータストア内のストリームの位置のパディングおよびタグ付けによって表すことができる。一実施形態において、コンテンツの発見324では、部分データストリームに存在するコンテンツ部分を有効とし、そしてパディングされた部分を無効としてラベルを付け、次の操作(例えばDLPスキャン処理)にどの部分を無視することができるかを知らせる。下の層からのメタデータは、変換するコンテンツが存在するか(またはしないか)を決定するために使用することができる。コンテンツの発見処理324では、異なる種類のコンテンツにおける次の処理のための、ユーザ設定の可能な方法または所定の方法を識別することができるが、この場合、次の処理には、全ての利用できるコンテンツまたは部分コンテンツの変換、およびコンテンツのDLPスキャンを含むことができる。
【0032】
一実施形態において、プレゼンテーション層306で行われる処理には、部分データストリームにおけるコンテンツの変換を行うプレゼンテーションの変換処理326が含まれる。全て利用可能なコンテンツは、標準変換プロセス(例えばgzip解凍など)を使って変換することができる。部分コンテンツの場合、プレゼンテーション変換326では、部分データ操作専用のハイブリッド変換エンジンを使用し、マルチパートフォーム、圧縮データおよび符号化データなどのコンテンツの制限を理解し、それに従ってコンテンツを変換することができる。
【0033】
一実施形態において、データ(コンテンツ)層308で行われる処理には、全DLPスキャン処理328、部分DLPスキャン処理330およびDLP部分警報処理332が含まれる。全DLPスキャン処理328は、データストリームにおける全ての利用可能なコンテンツを、機密情報の指紋を使って機密情報に関してスキャンするために使用する。部分データコンテンツの場合、部分DLPスキャン処理330を使用する。これはプロトコルおよびコンテンツの解析中に派生したメタデータを理解するように構成されている。部分DLPスキャン処理330ではメタデータを使用して部分コンテンツの許容レベル(例えば、欠落したコンテンツの大きさがどれ位であるか)を計算し、DLPスキャン中の指紋照合基準を定義する(例えば、部分コンテンツと指紋との間の類似度が少なくとも75%である場合に照合をトリガするなど)。メタデータは、ストリームマーカを介して、無視するべきコンテンツ部分の表示にも使用され、スキャンを続けるべき相対的なコンテンツ/指紋の交差の提供にも使用される。
【0034】
一実施形態において、部分DLPスキャン処理330において変換する必要のないデータの処理を行う場合、部分DLPスキャン処理330ではパターン照合手法を使って、元のコンテンツ指紋と部分セット(可能な場合)との間の次の有効なデータ交差の位置を見つける。部分DLPスキャン処理330でkグラムの指紋(すなわちk個の文字のセットの指紋)を使用する一実施形態において、メタデータは、kグラム指紋とコンテンツの適切な部分との位置を合わせ、欠落したコンテンツ部分に対応するkグラム指紋を無視するために使用される。
【0035】
一実施形態において、部分DLPスキャン処理330で解凍データを処理する場合、メタデータを使用して、評価中の特定のファイルを確認する。この目的のために使用するメタデータは、添付タグおよび他のそのような標識を介したファイル名であってもよい。ファイルのIDを決定すると、上述のパターン照合手法および/またはkグラム指紋を使ってスキャンを行うことができる。全てのスキャン手法に関して、欠落したデータの量に対する照合の割合は、警報の決断のための計算中に粒度/重量を提供するための測定関数として定義することができる。
【0036】
DLP部分警報処理332では、DLPポリシーの違反が検出された際に警報を生成する。DLPポリシーのルールにより、違反は例えば、指紋照合が単一のメッセージ内で検出された場合、または指紋照合が同じ送信者から送信された少なくともN個のメッセージで検出された場合、あるいは指紋照合が特定の受信者に送信されたメッセージで検出された場合などにトリガすることができる。DLP部分警報処理332によって生成される警報には、損失の可能性がその誤検出(FP)の確立に対して決定できるように、解析されたデータのレベルおよび/または割合および/または量を定義する追加情報を含むことができる。この追加情報は警報の信頼性を示す。
【0037】
図4〜
図7は、本発明のいくつかの実施形態に係るネットワークデバイス(例えば、
図1のネットワークデバイス108)によって行われる方法を示すフローチャートである。これらの方法は、ハードウェア(電気回路、専用論理回路など)、ソフトウェア(汎用コンピュータシステムまたは専用マシンで実行されるもの)またはそれらの組み合わせから構成することのできる処理論理回路によって行われる。
【0038】
図4は、部分データストリームにおけるデータ損失の監視方法400の一実施形態のフローチャートである。方法400は、ネットワークデバイスで損失セグメントを含む部分データストリームを識別するステップ(ブロック402)から始めることができる。部分データストリームはトランスポート層プロトコルヘッダまたはアプリケーション層プロトコルヘッダを使って識別することができる。TCPヘッダを使って部分データストリームを識別する方法の一実施形態について、
図5を参照して以下に詳述する。
【0039】
ブロック404において、ネットワークデバイスは部分データストリームのコンテンツの特徴を決定する。部分データストリームのコンテンツの特徴には、部分データストリームに存在するコンテンツ部分の位置、部分データストリームに存在する各コンテンツ部分の長さ、部分データストリームに存在する各コンテンツ部分の種類、部分データストリームに存在するコンテンツ部分に必要な変換の種類(該当する場合)および部分データストリーム内における損失セグメントのコンテンツ部分の位置がある。部分データストリームのコンテンツの特徴を決定する方法のいくつかの実施形態を、
図6および
図7を参照して以下に詳述する。
【0040】
決定されたコンテンツの特徴に基づき、ネットワークデバイスは部分データストリームに存在するコンテンツ部分を発見し、部分データストリーム内の損失セグメントのコンテンツ部分をパディングする(ブロック406)。該当する場合、ネットワークデバイスは部分データストリームのコンテンツを変換(例えば、解凍または復号化)する。部分データストリームのコンテンツを変換する方法の一実施形態を、
図8を参照して以下に詳述する。
【0041】
ブロック408において、ネットワークデバイスは、一以上のDLPポリシーに従い、部分データストリームを機密情報についてスキャンする。ネットワークデバイスは機密情報の指紋を使ってスキャンを行うことができ、DLPポリシーの違反を識別するDLP警報を生成することができる。DLP警報は部分データストリーム内の欠落したコンテンツの割合を特定し、DLP警報の信頼性を示すこともできる。部分データストリームのDLPスキャンの方法に関する一実施形態を、
図9を参照して以下に詳述する。
【0042】
図5は、損失セグメントを含む部分データストリームを識別する方法500に関する一実施形態のフローチャートである。方法500は、ネットワークデバイスでデータストリームがまだ生成されていない接続タプル(ソースアドレス/ポートおよび宛先アドレス/ポート)と関連付けられたセグメントを検出するステップから始まる(ブロック502)。ブロック504において、ネットワークデバイスは、この接続タプルに関連付けられた初期セグメント(例えば、TCP制御(SYN/ACK)セグメント)が存在するかどうか(例えば、検出されたセグメントがTCP制御セグメントか、またはバッファ内に対応するTCP制御セグメントがあるか)を決定する。識別された接続タプルに関連付けられた初期セグメントが存在する場合、ネットワークデバイスは初期セグメントに基づいて新しいデータストリームを生成し(ブロック510)、この新しいデータストリームを新しいセッションと関連付け(ブロック512)、ブロック514に進む。
【0043】
識別された接続タプルに関連付けられた初期セグメントが存在しない(すなわち失われた)場合、ネットワークデバイスは接続タプルに基づいて新しいデータストリームを生成し(ブロック505)、このデータストリームのセッションがすでに存在しているか否かを決定する(ブロック506)。このデータストリームのセッションが存在しない場合、ネットワークデバイスはデータストリームを新しいセッションと関連付け(ブロック512)、ブロック514に進む。このデータストリームのセッションがすでに存在する場合、ネットワークデバイスはデータストリームを存在するセッションに関連付け(ブロック508)、ブロック514に進む。
【0044】
ブロック514において、ネットワークデバイスはセグメントのトランスポート層ヘッダ(例えば、データセグメントのTCPヘッダ内のシーケンス番号)を使って、データストリームに属するセグメントを識別する。ブロック516において、ネットワークデバイスはデータストリームから欠落したセグメントを識別する。ブロック518において、ネットワークデバイスは欠落したセグメントを損失セグメントキュー上に置く。キューに置かれたセグメントがキャプチャされた場合(ブロック520)、ネットワークデバイスはこのセグメントをキューから取り除き(ブロック522)、ブロック524に進む。
【0045】
ブロック524において、ネットワークデバイスはストリーム終端の表示を(例えば、TCP FINメッセージとして)受信したかどうかを決定する。受信している場合、方法500はブロック528に進む、受信していない場合、ネットワークデバイスは所定の時間間隔が経過したかどうかを決定する(ブロック526)。経過している場合、方法500はブロック528に進む。経過していない場合、方法500はブロック520に戻る。ブロック528において、ネットワークデバイスは損失セグメントキューに残っているセグメントを損失セグメントとしてマークする。
【0046】
図6は、部分データストリームのコンテンツの特徴を決定する方法600の一実施形態のフローチャートである。方法600は、ネットワークデバイスで部分データストリーム内における各損失セグメントの位置に開始マーカおよび終了マーカを挿入するステップから始まる(ブロック602)。ブロック604において、ネットワークデバイスは各損失セグメントの位置をメタデータストアに記録する。
【0047】
ブロック606において、ネットワークデバイスは部分データストリームにおけるデータストリーム要素のプロトコル解析を行う。プロトコル解析には、部分データストリームにおけるデータストリーム要素の種類を決定するステップと、対応するパーサを使ってデータストリーム要素をパーシングして、データストリーム要素からメタデータを抽出するステップとが含まれる。プロトコル解析方法の一実施形態を、
図7を参照して以下に詳述する。
【0048】
図7は、部分データストリームにおけるデータストリーム要素のプロトコル解析を行う方法700の、一実施形態によるフローチャートである。方法700は、ネットワークデバイスにおいて、部分データストリームに存在する第1データセグメントを識別するステップから始まる(ブロック702)。ブロック704において、ネットワークデバイスは第1データセグメントのトランスポート層プロトコルヘッダ(例えばTCPヘッダ)をパーシングし、次のデータストリーム要素の開始を識別する(例えば、HTTPヘッダ、SMTPヘッダなどのアプリケーション層プロトコルヘッダの先頭)。ブロック706において、ネットワークデバイスは次のデータストリーム要素の種類がわかっているかどうか(例えば、次のデータストリーム要素が自身の種類の識別子を含んでいるか、または前のデータストリーム要素が次のデータストリーム要素の識別子を含んでいたか)を決定する。
【0049】
データストリーム要素の種類がわかっている場合、ネットワークデバイスは対応するパーサをデータストリーム要素に適用してメタデータを抽出し、データストリーム要素の終端を検出する(ブロック710)。データストリーム要素の種類がわからない場合、ネットワークデバイスは照合するシグネチャが見つかるまで、シグネチャのセットをデータストリーム要素に適用し(ブロック708)、対応するパーサをデータストリーム要素に適用してメタデータを抽出し、このデータストリーム要素の終端を検出する(ブロック710)。一実施形態において、シグネチャを適用する前に、ネットワークデバイスはいつ新しいフィールドまたはヘッダタグが利用できるかを示す共通のデリミタを識別し、プロトコルシグネチャ処理で認識される可能性のある、可能な最初のプロトコルタグから開始するようにストリームを配置する。複数のデリミタ標識を単一のデータストリーム内に置くことができるので、各々の可能な開始位置を、シグネチャの適用に使用することができる。一実施形態において、ネットワークデバイスはプロトコルの拡張属性を反映するシグネチャを使ってプロトコルのIDを確認する。プロトコルシグネチャは、ヘッダフォーマット(例えば、HTTP接続タグ「Connection:keep−alive\r\n」に基づくもの)と追加タグの存在との組み合わせを使って有効にすることができる。解析、パーシングされるデータストリーム要素には、アプリケーション層プロトコルヘッダ(例えばHTTPまたはSMTPヘッダ)、アプリケーションヘッダ(例えばeメールヘッダまたはウェブログヘッダ)およびプレゼンテーション層ヘッダ(例えばzipファイルヘッダまたはマルチパートフォームヘッダ)がある。
【0050】
ブロック712において、ネットワークデバイスはパーシング中に抽出したメタデータをメタデータストアに格納する。メタデータにはデータストリーム要素の種類(例えば、HTTPヘッダ、SMTPヘッダ、eメールヘッダ、Facebookヘッダ、zipファイルヘッダなど)、送信者と受信者の情報(例えば、Facebookのような特定アプリケーションのためにHTTPヘッダに埋め込まれたもの)、損失セグメントの位置、部分データストリーム内に存在するコンテンツ部分の位置、コンテンツ部分の長さ(例えば、損失セグメントによる部分データを含むeメールメッセージの本文)、コンテンツ部分の種類および該当する場合、コンテンツ部分に使用される変換の種類(例えば、圧縮または符号化の種類)が含まれる。
【0051】
データストリーム要素のパーシングが終了すると、ネットワークデバイスは現在のデータセグメントが他のデータストリーム要素を含んでいるか否かを決定することができる(ブロック714)。含んでいる場合、ネットワークデバイスはデータセグメントの次のデータストリーム要素に移動し(ブロック718)、ブロック706に戻る。一実施形態において、次のデータストリーム要素がデータセグメントのコンテンツ部分である場合、ネットワークデバイスは収集したメタデータがコンテンツ部分に関する十分な情報(例えば、コンテンツ部分の長さ、コンテンツ部分の種類、コンテンツ部分に必要な変換)を含んでいるかどうかを決定する。含んでいる場合、ネットワークデバイスはコンテンツ部分の処理をスキップし、ブロック716に進む。含んでいない場合、ネットワークデバイスはブロック706から714でコンテンツ部分を処理し、ブロック716に進む。
【0052】
ブロック716において、ネットワークデバイスは、部分データストリームがまだ処理されていないデータセグメントをさらに含んでいるか否かを決定する(ブロック716)。含んでいない場合、方法700は終了する。含んでいる場合、ネットワークデバイスは部分データストリームに存在する次のセグメントに進み(ブロック720)、ブロック704に戻る。
【0053】
図8は、部分データストリームのコンテンツを変換する方法800に関する一実施形態のフローチャートである。方法800は、ネットワークデバイスにおいて部分データストリームに存在する各コンテンツ部分の位置を決定するステップ(ブロック802)および部分データストリーム内に存在する各コンテンツ部分の種類を決定するステップ(ブロック804)から始まる。ネットワークデバイスはメタデータストアに格納されたメタデータを使用してこの決定を行う。
【0054】
ブロック806において、ネットワークデバイスは部分データストリームに存在するデータセグメントのコンテンツ部分を有効としてタグ付けを行い、損失データセグメントのパディングされたコンテンツ部分を無効としてタグ付けを行い、DLPスキャン中にどの部分をスキャンし、どの部分を無視するのかを示す。ブロック808において、ネットワークデバイスは任意のコンテンツ部分が変換を必要とするか否かを決定する。必要としない場合、方法800は終了する。必要とする場合、ネットワークデバイスは必要とされる変換を識別し(ブロック810)、部分データストリームに存在する対応するコンテンツ部分を変換する(ブロック812)。いくつかの実施形態において、部分データ操作専用で、マルチパートフォーム、圧縮データおよび符号化データの制限を解釈するハイブリッド変換エンジンを、部分コンテンツの変換に使用する。変換エンジンの使用はコンテンツの種類に応じて(例えば、ユーザ指定データに基づいて)設定することができる。
【0055】
図9は、部分データストリームにおけるDLPポリシー違反を検出する方法900に関する一実施形態のフローチャートである。ブロック902において、ネットワークデバイスは部分データストリームのコンテンツを機密情報についてスキャンする(ブロック902)。部分データストリームのコンテンツが全て利用できる場合、ネットワークデバイスは機密情報の指紋を使ってコンテンツをスキャンする。コンテンツのいくつかの部分が欠落している場合、ネットワークデバイスは部分コンテンツの許容レベル(例えば、欠落したコンテンツの大きさがどれ位であるか)を決定し、DLPスキャン中の指紋照合基準(例えば、部分コンテンツと指紋との間の類似度が少なくとも75%である場合に照合をトリガするなど)を定義する。一実施形態において、スキャンするコンテンツを変換する必要がない場合、ネットワークデバイスはパターン照合手法を使って、最初のコンテンツ指紋と部分セットとの間の次の有効なデータ交差の位置を見つける。一実施形態において、ネットワークデバイスはkグラムの指紋を使い、欠落したコンテンツ部分に対応するkグラム指紋を無視して、kグラムの指紋とコンテンツの適切な部分とをメタデータに基づいて位置合わせする。あるいは、スキャンするコンテンツが解凍されたデータを含んでいる場合、ネットワークデバイスはメタデータを使って評価中の特定のファイルを確認する。この目的に使用されるメタデータは、添付タグまたは他のそのような標識によるファイル名であってもよい。ファイルのIDが決定されると、上述のパターン照合手法および/またはkグラム指紋を使ってスキャンを行うことができる。
【0056】
ブロック904において、ネットワークデバイスは部分データストリームが機密情報を含んでいるか否かを決定する。含んでいない場合、方法900を終了する。含んでいる場合、ネットワークデバイスは損失セグメントによって何パーセントのコンテンツが欠落しているのかを計算する(ブロック906)。さらにネットワークデバイスは欠落したデータの量に対する照合の割合を計算することもできる。ブロック908において、ネットワークデバイスはDLPポリシー違反と欠落したコンテンツの割合とを報告する。さらに、欠落したデータの量に対する照合の割合も報告することができる。
【0057】
図10は、コンピュータシステム1000の例示的な形態におけるマシンを図式で表したものであり、このコンピュータシステム内では、本明細書に記載する方法の内の一つまたは複数をマシンに実行させる命令のセットを実行することができる。代替実施形態において、マシンは他のマシンにLAN,イントラネット、エクストラネットまたはインターネットで接続(ネットワーク接続)することができる。マシンはクライアントサーバネットワーク環境において、サーバまたはクライアントマシンとして、またはピアツーピア(または分散)ネットワーク環境において、ピアマシンとして操作することができる。このマシンは、スニファー、パソコン(PC),タブレット型PC、セットトップボックス(STB)、パーソナル・デジタル・アシスタント(PDA)、携帯電話、ウェブアプライアンス、サーバ、ネットワークルータ、スイッチまたはブリッジあるいはそのマシンのとる動作を特定する命令のセット(連続的またはその他)を実行することのできる任意のマシンとすることができる。さらに、単一のマシンのみを説明したが、「マシン」という用語は、命令の一セット(または複数のセット)を個々にまたは共同して実行し、本明細書に記載する方法の内の一つまたは複数を実行するマシンの任意の集合体を含むと解釈されたい。
【0058】
例示的コンピュータシステム1000は、処理装置(プロセッサ)1002、メインメモリ1004(例えば、読み取り専用メモリ(ROM)、フラッシュメモリ、同期DRAM(SDRAM)などの動的ランダム・アクセス・メモリ、スタティックメモリ1006(例えば、フラッシュメモリ、スタティックRAM(SRAM)など)およびバス1008を介して相互に通信するデータ記憶装置(例えばドライブユニット)を含む。
【0059】
プロセッサ1002は、マイクロプロセッサ、中央演算処理装置などの一以上の汎用処理装置を表す。より詳細には、プロセッサ1002は、複数命令セット・コンピュータ(CISC:complex instruction set computing)マイクロプロセッサ、縮小命令セット・コンピュータ(RISC:reduced instruction set computing)マイクロプロセッサ、超長命令語(VLIW:very long instruction word)マイクロプロセッサまたはその他の命令のセットを実行するプロセッサもしくは命令セットの組み合わせを実行するプロセッサであってもよい。プロセッサ1002はまた、特定用途向け集積回路(ASIC:application specific integrated circuit)、フィールド・プログラマブル・ゲート・アレイ(FPGA:field programmable gate array)、デジタル・シグナル・プロセッサ(DSP:digital signal processor)、ネットワークプロセッサなどの、一以上の特定用途向け処理装置であってもよい。プロセッサ1002は、本明細書に記載の操作やステップを行うための処理論理回路(例えば命令)1026を実行するように構成される。
【0060】
コンピュータシステム1000は、ネットワークインターフェース装置1022をさらに含むことができる。コンピュータシステム1000にはまた、ビデオディスプレー装置1010(例えば、液晶表示(LCD:liquid crystal display)またはブラウン管(CRT:cathode ray tube))、英数字入力装置1012(例えばキーボード)、カーソル移動制御装置1014(例えばマウス)、信号発生装置1020(例えばスピーカー)も含まれる。
【0061】
データ記憶装置1016は、本明細書に記載の方法または機能の内の一つまたは複数を具体化する、一以上の命令のセット(例えばソフトウェア)1026が格納された、コンピュータ可読媒体1024を含むことができる。ソフトウェア1026はまた、コンピュータ可読媒体を構成するコンピュータシステム1000、メインメモリ1004およびプロセッサ1002によって実行される間、メインメモリ1004および/またはプロセッサ1002内に完全に、または少なくとも部分的に置いてもよい。ソフトウェア1026はさらに、ネットワークインターフェース装置1022を介してネットワーク1020で送受信することができる。
【0062】
コンピュータ可読媒体1024を例示的実施形態において単一の媒体として説明したが、「コンピュータ可読媒体」という用語は、一以上の命令のセットを格納する単一または複数の媒体(例えば、集中または分散データベースおよび/または関連するキャッシュまたはサーバ)を含むものと解釈されたい。「コンピュータ可読媒体」という用語はまた、マシンによって実行するための命令のセットを格納、符号化またはキャリーすることができ、マシンに本発明の一以上の方法を実行させる任意の媒体を含むと解釈されたい。よって「コンピュータ可読媒体」という用語は、ソリッドステートメモリ、光媒体および磁気媒体を含むが、それらに限定されるものではないと解釈されたい。
【0063】
上述の説明において、周知の構造および装置を詳細ではなくブロック図で示し、本発明が曖昧なものにならないようにした。説明のいくつかの部分は、コンピュータメモリ内のデータビットの演算アルゴリズムおよび記号表現の用語で表している。これらのアルゴリズム的記述および表現は、データ処理を行う当事者が彼らの作業の内容を他の当事者へ最も効率的に伝えるための手段である。本明細書において、そして一般に、アルゴリズムは所望の結果を導き出すステップの自己無撞着なシーケンスであると考えられる。ステップは物理量の物理的操作を必要とするものである。一般に、これらの量は格納、伝送、結合、比較およびその他の操作が可能な電気または磁気信号の形態をとるが、必ずしもそうでなければならないということではない。主に共用のため、時として、これらの信号をビット、値、要素、記号、文字、用語、数字などと称すると便利であることがわかっている。
【0064】
しかしながらこれらの用語および類似の用語は全て適切な物理量に関連するものであり、これらの量に適用される便利なラベルにすぎないものであると留意されたい。特に明記しない限り、上述の記載から明らかなように、説明全体において「識別」、「適用」、「抑制」、「スキャン」、「更新」などの用語を使用している記載は、コンピュータシステムのレジスタおよびメモリ内において物理(例えば電子)量で表されるデータを、コンピュータシステムメモリ、レジスタまたはその他の情報記憶装置、伝送装置または表示装置内において物理量として表される同様の他のデータに操作、変換するコンピュータシステムまたは類似の電子コンピューティングデバイスの動作および処理のことであると理解されたい。
【0065】
本発明の実施形態は、本明細書における操作を行うための装置に関するものでもある。その装置は、必要とされる目的のために特別に構成することができる、または、コンピュータに格納されたコンピュータプログラムによって選択的に起動または再設定される汎用コンピュータを備えることができる。上述のように、このようなコンピュータプログラムはコンピュータ可読媒体に格納することができる。
【0066】
本明細書に提示するアルゴリズムおよび表示は、任意の特定のコンピュータまたはその他の装置と本質的に関係があるものではない。種々の汎用システムを本明細書の教示に従ってプログラムと共に使用することができる、または、必要とされる方法のステップを行うためにより特殊化された装置を構成すると便利だろう。これらの種々のシステムに必要とされる構造は、下記の記載から明らかとなるだろう。さらに本発明は、任意の特定のプログラミング言語を使って説明していない。本明細書に記載する発明の教示を実現するには、種々のプログラミング言語を使用することができると理解されたい。
【0067】
上記の記載は説明のためのものであって、制限するものではないと理解されたい。当事者であれば、上述の記載を読んで理解する際に、多くの他の実施形態が明らかとなるであろう。従って本発明の範囲は、添付の特許請求の範囲およびこの特許請求の範囲に権利が与えられる均等物の全ての範囲を参照して決定されるべきである。