(57)【特許請求の範囲】
【請求項１】
既知の電子ファイルの検出をプロセッサで実行するためのコンピュータ可読インストラクションが記憶されたコンピュータ可読媒体であって、
前記インストラクションが、
ファイルの一部を受信し、この部分からコンテンツを抽出し；
前記コンテンツに対して多数回に亘って初期関数を適用し、前記初期関数は前記コンテンツ中のエレメントの複数のブロックのそれぞれに適用して前記ブロックのそれぞれに割当てられる表示を前記ブロック毎に作成し；
前記ファイルの部分毎の初期インプリントとして、所与の選択基準に基づいて最大値及び最小値のいずれか一方の値となる前記表示の1つを選択し；
前記初期インプリントを、検出すべき既知電子ファイルに割当てられた複数の検出インプリントを含む第１メモリーのコンテンツと比較し、前記検出インプリントは少なくとも前記初期関数を利用して作成し；
前記初期インプリントが第１メモリー中の検出インプリントと対応するときマッチと判断するように構成される前記コンピュータ可読媒体。
【請求項２】
初期関数の前記適用は、前記ブロックの少なくとも１つにすべてのエレメントが含まれるまで前記エレメントのブロックに順次前記初期関数を適用することを含む請求項１に記載のコンピュータ可読媒体。
【請求項３】
初期関数の前記適用は、順次隣接する関数においてエレメントをオーバーラップさせることを含む請求項２に記載のコンピュータ可読媒体。
【請求項４】
前記初期インプリントの比較の後、前記初期インプリントとして使用されるブロック中において前記エレメントを囲むエクストラ・データを識別し、前記エクストラ・データを、前記初期インプリントとして使用されるブロック中において前記エレメントを囲むエクストラ・データに対応する、第２メモリー中に記憶されているエクストラ検出データと比較するステップをも含み、前記初期インプリントおよび前記エクストラ・データが前記検出インプリントおよび前記エクストラ検出データとそれぞれマッチするとき、前記マッチの判断がなされることを含む請求項１に記載のコンピュータ可読媒体。
【請求項５】
前記初期関数とは異なる少なくとも１つの追加関数を適用して少なくとも１つの追加インプリントを作成し、前記少なくとも１つの追加インプリントを前記複数の検出インプリントと比較するステップをも含む請求項１に記載のコンピュータ可読媒体。
【請求項６】
前記ファイルの一部からの前記コンテンツの抽出は、ノイズを除去することを含む請求項１に記載のコンピュータ可読媒体。
【請求項７】
前記所与の選択基準に基づいて最大値及び最小値のいずれか一方の値となる前記表示の1つの前記選択は、最高ハッシュ値および最低ハッシュ値の一方を選択することを含む請求項１に記載のコンピュータ可読媒体。
【請求項８】
前記ファイル部分は、２次元データのファイルからのファイル部分であり、前記ブロックは、エレメントの領域である請求項１に記載のコンピュータ可読媒体。
【請求項９】
前記ファイル部分は、３次元データのファイルからのファイル部分であり、前記ブロックは、エレメントのボリュームである請求項１に記載のコンピュータ可読媒体。
【請求項１０】
初期関数の前記適用は、ハッシュ関数を適用する請求項１から請求項９までのいずれか１項に記載のコンピュータ可読媒体。
【請求項１１】
既知の電子ファイルを検出するためのシステムであって、
処理デバイスと、
前記処理デバイスに連結され、既知電子ファイルの複数の検出インプリントを記憶するメモリーと、
前記メモリーに記憶されるとともに、前記処理デバイスで実行可能な少なくとも１つのプログラム・コード及び前記処理デバイスを構成するための構成データの少なくとも一方を備える、少なくとも１つのアプリケーションとを含み、
前記システムが
ファイルの一部を受信し、この部分からコンテンツを抽出し；
前記コンテンツに対して多数回に亘って初期関数を適用し、前記初期関数を前記コンテンツ中のエレメントの複数のブロックのそれぞれに適用して、前記ブロックのそれぞれに割当てられる表示を前記ブロック毎に作成し；
前記ファイルの部分毎の初期インプリントとして所与の選択基準に基づいて最大値及び最小値のいずれか一方の値となる前記表示の1つを選択し；
前記初期インプリントを前記検出インプリントと比較し；
前記初期インプリントが前記検出インプリントの１つと対応するときマッチと判断する前記システム。
【請求項１２】
少なくとも１つの前記メモリーと、前記処理デバイスと、少なくとも１つの前記アプリケーションの一部とが、少なくとも１つのフィールド・プログラマブル・ゲート・アレイからなる、請求項１１に記載のシステム。
【請求項１３】
電子ファイルを検出するための、コンピュータで実行される方法であって、
ファイルの一部を受信し、この部分からコンテンツを抽出し；
前記コンテンツに対して多数回に亘って初期関数を適用し、前記初期関数は前記コンテンツ中のエレメントの複数のブロックのそれぞれに適用して前記ブロックのそれぞれに割当てられる表示を前記ブロック毎に作成し；
前記ファイルの部分毎の初期インプリントとして所与の選択基準に基づいて最大値及び最小値のいずれか一方の値となる前記表示の1つを選択し；
前記初期インプリントを、検出すべき既知電子ファイルに割当てられた複数の検出インプリントを含む第１メモリーのコンテンツと比較し、前記検出インプリントは少なくとも前記初期関数を利用して作成し；
前記初期インプリントが前記第１メモリー中の検出インプリントの１つと対応するときマッチと判断するステップを含む前記コンピュータで実行される前記方法。
【請求項１４】
初期関数の前記適用は、前記ブロックの少なくとも１つにすべてのエレメントが含まれるまでエレメントの前記ブロックに前記初期関数を順次適用することを含む請求項１３に記載の、コンピュータで実行される方法。
【請求項１５】
初期関数の前記適用は、順次隣接する前記初期関数においてエレメントをオーバーラップさせることを含む請求項１４に記載の、コンピュータで実行される方法。
【請求項１６】
前記初期インプリントの比較の後、前記初期インプリントとして使用されるブロック中において前記エレメントを囲むエクストラ・データを識別し、前記エクストラ・データを、前記初期インプリントとして使用されるブロック中において前記エレメントを囲むエクストラ・データに対応する、第２メモリー中に記憶されているエクストラ検出データと比較するステップをも含み、前記初期インプリントおよび前記エクストラ・データが前記検出インプリントおよび前記エクストラ検出データとそれぞれマッチするとき、前記マッチの判断がなされることを含む請求項１３に記載の、コンピュータで実行される方法。
【請求項１７】
前記初期関数とは異なる少なくとも１つの追加関数を適用し、少なくとも１つの追加インプリントを作成し、前記少なくとも１つの追加インプリントを前記複数の検出インプリントと比較することをも含む請求項１３に記載の、コンピュータで実行される方法。
【請求項１８】
前記ファイルの一部からの前記コンテンツの抽出は、ノイズを除去することを含む請求項１３に記載の、コンピュータで実行される方法。
【請求項１９】
前記所与の選択基準に基づいて最大値及び最小値のいずれか一方の値となる前記表示の1つの前記選択は、最高ハッシュ値および最低ハッシュ値の一方を選択することを含む請求項１３に記載の、コンピュータで実行される方法。
【請求項２０】
前記ファイル部分は、２次元データのファイルからのファイル部分であり、前記ブロックは、エレメントの領域である請求項１３に記載の、コンピュータで実行される方法。
【請求項２１】
前記ファイル部分は、３次元データのファイルからのファイル部分であり、前記ブロックは、エレメントのボリュームである請求項１３に記載の、コンピュータで実行される方法。
【請求項２２】
初期関数の前記適用は、ハッシュ関数の適用である請求項１３から請求項２１までのいずれか１項に記載の、コンピュータで実行される方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この特許出願は、その明細書の内容を本願明細書中に組み入れた２００８年６月２日付け米国仮出願第６１／０５７９４４号「ネットワーク・ファイル送信モニタリング」に基づく優先権を主張する。
【０００２】
本発明は、ファイルの存在モニタリング、より詳しくは、発信源から送信先へ送信中の、または記憶媒体に記憶中の特定のファイルまたはファイルの一部の検出に関する。
【背景技術】
【０００３】
多くの組織は、ある種のファイルがネットワークを介して送信されることが絶対にないように、送信されるとしたら安全に送信されることを、これらのファイルの機密性を維持するために必要としている。このことは、例えば、部外者の発信元から、または部外者の送信先へ、または想定外の時間において、予期しないネットワーク部分を介して行なわれる既知ファイルの転送に関してネットワークをモニターすることによって達成される。政府や公共の警備機関も、サイバーウォッチやサイバー監視を利用して潜在的な攻撃、不法なファイル所有などの摘発に努めている。サイバー監視は、サイバー・ウィルスとの戦いにも、著作権保護の強化にも有効である。
【０００４】
現在のサイバー監視は、ネットワークを介して送信されるデータから幾つかのパターンまたは特徴を抽出する、ソフトウェアをベースとする「スニファー」を使用して行われるのが典型である。抽出されたデータが解析される。多くの場合、種々のネットワーク層で送信されたデータは、さらなる処理がなされる前に完全に再構成することによってファイルを特定する。このようなスキームは、時間がかかり、且つ相当の処理資源を要する。従って、送信が例えば１００Ｍｂ／ｓというような比較的遅いデータ送信速度で行われる場合でも、データがネットワークを介して送信された後に初めてファイル検出が達成されるということになる。
【０００５】
従って、送信中でも、静的に媒体に記憶されるときでも、既知ファイルを検出できるように改良された方法およびシステムが必要である。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ネットワークを介して電子ファイルが送信される過程でも、ファイルが媒体に記憶されるときでも、既知ファイルを検出できる本発明の方法およびシステムを以下に説明する。
【０００７】
第１実施態様によれば、コンピュータ可読媒体において実施され、ファイルの一部を受信し、この部分からコンテンツを抽出し；コンテンツに対して多数回に亘って初期関数を適用し、即ち、コンテンツ中のエレメントの複数のブロックのそれぞれに初期関数を適用してブロックのそれぞれに割当てられる表示を作成し；ファイル部分毎の初期インプリントとして多数の表示から表示の１つを選択し；初期インプリントを、検出すべき既知電子ファイルに割当てられた、少なくとも初期関数を利用して作成された複数の検出インプリントを含む第１メモリーのコンテンツと比較し；初期インプリントが第１メモリー中の検出インプリントと対応するときマッチ（ｍａｔｃｈ）と判断するように構成された既知電子ファイル検出モジュールが提供される。
【０００８】
他の実施態様によれば、ファイルの一部を受信し、この部分からコンテンツを抽出し；コンテンツに対して多数回に亘って初期関数を適用し、即ち、コンテンツ中のエレメントの複数のブロックのそれぞれに初期関数を適用してブロックのそれぞれに割当てられる表示を作成し；ファイル部分毎の初期インプリントとして多数の表示から表示の１つを選択し；初期インプリントを、検出すべき既知電子ファイルに割当てられた、少なくとも初期関数を利用して作成された複数の検出インプリントを含む第１メモリーのコンテンツと比較し；初期インプリントが第１メモリー中の検出インプリントと対応するときマッチ（ｍａｔｃｈ）と判断するように構成された少なくとも１基のコンピュータを含み、既知電子ファイルを検出するためのソフトウェア・プロセスを実行するネットワークが提供される。
【０００９】
さらに他の実施態様によれば、ファイルの一部を受信し、この部分からコンテンツを抽出し；コンテンツに対して多数回に亘って初期関数を適用し、即ち、コンテンツ中のエレメントの複数のブロックのそれぞれに初期関数を適用してブロックのそれぞれに割当てられる表示を作成し；ファイル部分毎の初期インプリントとして多数の表示から表示の１つを選択し；初期インプリントを、検出すべき既知電子ファイルに割当てられた、少なくとも初期関数を利用して作成された複数の検出インプリントを含む第１メモリーのコンテンツと比較し；初期インプリントが第１メモリー中の検出インプリントと対応するときマッチ（ｍａｔｃｈ）と判断するステップを含む、既知電子ファイルを検出するための、コンピュータによって実行される方法が提供される。
【００１０】
さらに他の実施態様によれば、ファイルの一部を受信し、この部分からコンテンツを抽出し；コンテンツに対して多数回に亘って初期関数を適用し、即ち、コンテンツ中のエレメントの複数のブロックのそれぞれに初期関数を適用してブロックのそれぞれに割当てられる表示を作成し；ファイル部分毎の初期インプリントとして多数の表示から表示の１つを選択し；初期インプリントを、検出すべき既知電子ファイルに割当てられた、少なくとも初期関数を利用して作成された複数の検出インプリントを含む第１メモリーのコンテンツと比較し；初期インプリントが第１メモリー中の検出インプリントと対応するときマッチ（ｍａｔｃｈ）と判断するように構成された、既知電子ファイル検出のためのディジタル・デバイス・ネットワークが提供される。
【００１１】
ディジタル・デバイスのネットワークは、プロセッサ、メモリー、マイクロコントローラー、マイクロプロセッサ、フィールド・プログラマブル・ゲート・アレイ、論理ゲート・アレイ、トランジスタのような半導体デバイス、またはこれらと等価のデバイスまたは対応の構成を有する周知のディジタル・デバイスを含む。
【００１２】
本発明の方法およびシステムを使用することによって、ネットワーク上の、または記憶媒体に記憶されているファイルまたはファイルの部分の存在を検出することができる。もしファイルの一部が第１ルーター／サーバーを通過し、同じファイルの他の部分が第２ルーター／サーバーを通過した場合、表示の幾つかだけしか検出されないが、充分な数の表示が受信されれば、ファイルを検出できる。ハード・ドライブ、ＤＶＤ、ＣＤ、ＵＳＢキーまたはその他の媒体に記憶されているファイルの部分についても同様である。ファイルが記憶される時、ファイルが複数の部分に分割され、媒体の種々のセクターまたはセグメントに記憶される。ファイルの分割された各部分が２つの隣接するセクターに記憶されていなくても、また、セグメントが全部揃って存在しなくても（例えば、部分的に削除されたファイル）、分割されたファイルの部分を検出することができる。
【００１３】
この明細書において使用される語「表示」（ｒｅｐｒｅｓｅｎｔａｔｉｏｎ）とは、モニターすべきファイル部分または検出すべきファイル部分に属するエレメント群に割当てられる識別マークを意味する。「表示」は、エレメント群に関数を適用することによって割当てることができる。語「関数」は、数学的関数でも非数学的関数であってもよく、エレメントを表示として使用できるものに変換する。幾つかの実施態様においては、ハッシュ関数またはスライディング・ハッシュ関数のように、関数がビット・ファイルに含まれると考えられるビットの総数を減少させることになる。但し、例えば、１組のビットを数値に変換する関数または０次元ファイル中の構造データ・エレメントから表示を作成する関数のような異なるタイプの関数を利用することもできる。
【００１４】
さらにまた、この明細書中に使用される語「インプリント」は。ファイル部分またはファイルに属する、例えば、ビットのような同一エレメント群に割当てられる初期表示セットから選択される表示または表示群を意味する。選択は、１つまたは１組の関数を使用して、または任意に行なうことができる。インプリントは、ファイルまたはファイル部分に割当てられる。エレメント群に１つだけの表示が割当てられる場合、表示は、このエレメント群のためのインプリントを形成する。
【００１５】
「エクストラ・データ」という表現は、「インプリント」と連携するビット群を含むファイルの部分を意味し、このビット群を含めてこれを囲むデータに相当する。「エクストラ・データ」として選択されるデータの量は可変であり、所与のマッチ（ｍａｔｃｈ）基準に必要な信頼度に応じて異なる。エクストラ・データは必須なものではない。
【００１６】
最後に、この明細書中に使用される語「シグネチャ」は、モニターすべき１つの全ファイルに割当てられる複数のインプリントを意味する。シグネチャは、１つのファイルに関して決定されたすべてのインプリントを含む。１つのファイルに１つだけのインプリントが割当てられる場合、このインプリントがファイルのシグネチャを形成する。
【００１７】
コンピュータ可読媒体において実施されるモジュールは、ＵＳＢキー、携帯電話、ハード・ドライブ、ＣＤ／ＤＶＤ、またはその他のタイプの、電子媒体用支持体またはメモリーに実装してもよい。
【図面の簡単な説明】
【００１８】
本発明の実施態様を添付の図面を参照して以下に説明する。添付の図面において：
【００１９】
【図１ａ】図１ａは、本発明の一実施態様として、ネットワーク上または媒体中におけるファイルの存在を検出する方法を示すフローチャートである。
【図１ｂ】図１ｂは、図１ａのステップを示すフローチャートである。
【図２】図2は、本発明の一実施態様として、連携のインプリントを求めるための、ファイルまたはその一部の分割を例示する簡略図である。
【図３ａ】図３ａは、本発明の一実施態様として、インプリントおよびエクストラを含むテキスト・ファイル部分を例示する。
【図３ｂ】図３ｂは、２進レベルで表わされ、スライディング・ハッシュ関数を適用された図３のテキスト・ファイル部分を例示する。
【図４ａ】図４ａは、不思議の国のアリスから抜粋されたテキストのサンプル・ブロックの例である。
【図４ｂ】図４ｂは、フィルタ後における図４ａからのテキストのサンプル・ブロックである。
【図４ｃ】図４ｃは、ハッシュ・アルゴリズムが適用され、現在ハッシュ値が最大ハッシュ値として保持されないフィルタリング済みテキスト・ブロックを示す。
【図４ｄ】図４ｄは、ハッシュ・アルゴリズムが適用され、現在ハッシュ値が最大ハッシュ値として保持されないフィルタリング済みテキスト・ブロックを示す。
【図５ａ】図５ａは、図１ｂの方法の一実施態様を示すフローチャートである。
【図５ｂ】図５ｂは、図１ａの方法の一実施態様を示すフローチャートである。
【図６】図６は、一実施態様として、送信中のファイル部分の存在を検出するように構成されたモジュールである。
【図７】図７は、一実施態様として、記憶媒体におけるファイル部分の存在を検出するように構成されたモジュールである。
【００２０】
添付の全図面を通して、類似の構成エレメントには類似の参照符号を付してある。
【発明を実施するための形態】
【００２１】
電子ファイルは、ネットワークを介して送信またはスタティック・メモリーに記憶させることができる。いずれの場合にも、電子ファイルは、種々のファイル部分に分断される。送信の場合、これらの部分は、データ・パケットである。記憶されるファイルの場合、ＣＤ／ＤＶＤのトラックに、または、例えばハード・ドライブに記憶される場合ならファイルの分断部分に対応する。本発明の方法を利用する場合、ファイルを検出するのにすべての分断部分を再組立する必要はない。本発明の方法およびモジュールを利用すれば、記憶媒体におけるファイルまたはファイルの一部の存在、またはネットワークまたはネットワーク・チャンネルを介しての所与のファイルの送信またはファイルの一部の送信をリアルタイムで検出することができる。ファイルは、その全体が存在しなくてもよい。
【００２２】
図１ａに示すように、ネットワークを介して送信中のファイルまたは媒体に記憶されているフアィルの存在を検出する方法は、下記のステップを含む。ステップ１０において、検出すべきそれぞれのファイルにファイル・シグネチャを割当ててデータベースを構成する。ファイル・シグネチャはそれぞれのファイルの部分に１つまたは２つ以上の関数を適用することによって得られる。それぞれのファイル・シグネチャは、ファイルの各部分に少なくとも１つのインプリントを割当てることによって形成される。このステップについては、さらに詳しく後述する。ファイル・シグネチャが決定され、データベースに記憶されたら、本発明の方法によって、送信中のファイルの１つまたはその部分、または記憶媒体に存在するファイルまたはその部分を検出することができる。
【００２３】
ステップ２０において、ファイルが分析される。それぞれのファイル部分は、（ペイロード・ビットのような）ファイルのコンテンツに関するエレメントやエレメントをパッケージし、フォーマットするカプセルを含む。ファイル送信の場合、これらのエレメントは、発信元および送信先を示し、プロトコルおよびフォーマット層を定義（ｄｅｆｉｎｅ）する。あるいはまた、パッケージおよびフォーマット・エレメントが記憶セクターまたは、例えば、ファイルが記憶されているメモリーを示すことができる。
【００２４】
ステップ２２において、ファイル部分からペイロード・ビットが抽出される。但し、ファイル部分のプロトコル層を抽出する必要はなく、さらなる検出ステップに必要な情報だけを抽出すればよい。図３Ａに例示する電子ファイルの部分３００では、インプリント３１０とエクストラ・データ３２０の一実施態様が示されている。プロトコル情報の一部または全部をもファイルから抽出する場合には、無視するか、またはノイズとして扱うことができる。これはファイル部分を解析する際に行われる。ペイロード・ビットを抽出する際には、発信元と送信先、セクター、ターゲット・ポート番号、またはネットワークを介して交換される有用な情報を別々に記憶しておけば、検出された際にファイルの送信または記憶に関する補足的な情報をレポートすることができる。ステップ２２ではペイロード・ビットのフィルタリングが行なわれ、空白、タブ、行末、空文字または些末な冗語などのような不要なバイトが除去される。
【００２５】
ステップ２４において、コンテンツを解析することによってファイル部分にインプリントが割当てられる。このステップは、ファイル部分がネットワーク上を通過中にリアルタイムで行なうことができる。ステップ２４において、ファイルにシグネチャが割当てられる時に使用されるのと同じ関数をファイルに適用することによってファイル部分に対するインプリントを得る。
【００２６】
ステップ２６において、ファイル部分からのインプリントがデータベースに記憶されているファイル・シグネチャのインプリントのすべてと比較される。データベースは、どんな形のメモリーまたは記憶手段であってもよい。
【００２７】
ステップ２７において、ファイル部分のインプリントがファイル・シグネチャにおけるファイル部分のインプリントの１つとマッチ（ｍａｔｃｈ）するかどうかが判断される。マッチするなら、次のステップに進む。マッチしなければ、ステップ２２に戻り、次のファイル部分が検討される。
【００２８】
ステップ２８において、ファイル部分のインプリントに対応するエクストラ・データを、マッチと判断されたデータベース中のインプリントのエクストラ・データを比較する。
【００２９】
ステップ２９において、ファイル部分のインプリントに対応するエクストラ・データがデータベース中のマッチング（ｍａｔｃｈｉｎｇ）インプリントのエクストラ・データとマッチするかどうかを判断することによってランダムな且つ部分的なマッチを排除する。もしマッチするなら、ステップ３０に進む。もしマッチしなければ、ステップ２２に戻って次のファイル部分を検討する。
【００３０】
ステップ３０において、マッチが確認される。このことは、ファイル・シグネチャと連携するファイルの少なくとも一部が検出されたことを示唆する。この示唆はファイルの存在を示すトレースである。換言すると、このトレースは、ファイル部分がモニターされている所与のファイルのすくなくとも一部を含むことを指摘するものである。このトレースが検出されれば、マッチング（ｍａｔｃｈｉｎｇ）ファイル・シグネチャと連携するファイルがネットワークを介して実際に送信中であるか、または記憶媒体に記憶されている確率が高い。ステップ３０においては、ファイル部分のインプリントとファイル・シグネチャからのインプリントとのマッチに基づいて得られたトレースがレポートされ且つ記憶される。ファイル送信の場合、ステップ３０は、ファイル部分送信の発信元および送信先をユーザーにレポートするか、または統計のためこのような情報を記憶することもできる。一実施態様においては、（フォーマット情報を含む）ファイル部分全体を保存することにより、将来いつでも任意の情報を抽出できるようにする。記憶媒体に記憶されているファイルの場合、ステップ３０は、デバイスまたは記憶媒体に記憶されている検出対象としてのファイル部分の場所に関する情報をレポートすることもできる。
【００３１】
ステップ３２において、次のファイル部分を検討する。従って、ステップ２２から３２までがそれぞれのファイル部分に対して繰返される。
【００３２】
図１ｂは、図１ａのステップ１０をより詳細に示す図であり、本発明の方法の初期段階であり、データベースまたはメモリーに検出用のインプリントおよびシグネチャが設定される。ステップ４０において、ファイルまたはその一部が所与の数のデータ・ブロックに分割される。従って、それぞれのデータ・ブロックは、ファイルに属する多数のビットを含む。上述したように、多数のデータ・ブロックに分割する前にファイルをフィルタリングすることも可能である。
【００３３】
ステップ４２において、少なくとも１つの表示にそれぞれのデータ・ブロックを割当てる。表示としては、数値、マークまたはデータ・ブロック中のビットを特徴付ける任意の形式を採用することができる。
【００３４】
一実施態様においては、それぞれのデータ・ブロックをさらにサブ−ブロック（図３Ｂに詳細を示す）に分割し、それぞれのサブ−ブロックに表示を割当てる。この場合、それぞれのブロックのためのインプリントとして表示の１つが選択される。これをステップ４３に示す。ブロックをサブ−ブロックにまで細分しない場合には、ブロックの表示は、このブロックに割当てられるインプリントということになる。
【００３５】
ステップ４５において、エクストラ・データがデータベースに記憶され、それぞれのインプリントと連携させられる。エクストラ・データは、それぞれのインプリントと連携するファイルの部分を囲むデータであり、ファイル部分検出の２次確認を可能にする。ステップ４５において、データ・ブロックに割当てられたインプリントを利用してファイル・シグネチャが求められる。
【００３６】
ステップ４６において、ファイル・シグネチャとエクストラ・データがデータベースに記憶される。これらのシグネチャと連携するファイルの識別番号をも記憶させることができる。データベースは、ハッシュ表、連想メモリー、インデックス・メモリーなどのような、情報の迅速な検索を可能にする構造であれば、どのような構造であってもよい。頻繁にではなく、インプリントマッチの場合にのみ使用されるなら、情報のゆっくりとした検索を可能にするメモリーにエクストラ・データを記憶させてもよい。エクストラ・データを記憶するメモリーは、実際の検出を行なうモジュールまたはコンピュータから遠隔に配置してもよい。
【００３７】
ステップ４８において、システムは、データベース中の次のファイルまたはファイル部分に移行する。このファイルまたはファイル部分を対象にステップ４０〜４６が繰返される。ステップ４０〜４８は、ファイル検出に使用されるファイル・シグネチャのデータベースを作成する。
【００３８】
本発明の方法は、プロトコルのタイプとは無関係であり、ファイルにバイト・レベルの些細な変化があっても支障なく対応できる。ｅ−メールで送信されるファイルを検出する場合、ファイルを例えばＢＡＳＥ６４でコード化すればよい。このフォーマット中のデータを検出するためには、オリジナル・ファイルと、ＢＡＳＥ６４でコード化されているファイルとの双方を考察しなければならない。
【００３９】
図２は、図１ｂに示すステップ４０において行なわれるようなファイルまたはファイル部分の分割を例示する。
【００４０】
ファイル部分５０は、サイズがＷ１の幅（窓とも呼称される）を有する多数のデータ・ブロックに分割される。図２に示すように、データ・ブロックは、互にオーバーラップする。オーバーラップすることは必須条件ではないが、オーバーラップ・スキームを採用することで、トレースまたはファイル送信を検出する確率を高くすることができる。ファイル送信検出の確率を高めるためには、ファイルまたはファイル部分をブロック（およびサブ−ブロック）に分割する際にオーバーラッピング・スキームを採用すればよい。
【００４１】
図３ｂは、２進レベルで表わした場合のバイト・リストとしての文字リストを示す（３５２）。一実施態様に見られるように大きくオーバーラップする一連のビットに複数のハッシュ関数を適用（以下「適用」というときには「ａｐｐｌｙ」を意味する）する場合には、スライディング・ハッシュを使用すればよい（３５４）。ハッシュされるウィンドー間に差が１バイトである実施態様においては、スライディング・ハッシュの結果、ハッシュはブロックに含まれるバイトと同数となる。ハッシュの少なくとも１つがこのブロック（またはファイル部分）のためのインプリントとして選択される。
【００４２】
図４ａは、物語「不思議の国のアリス」から抜粋されたテキストの一部である。このパラグラフは、物語全体を含むファイルの一部を表わす。図４ｂでは、スペースなど不要な情報を除くためテキストがフィルタリングされている。図４ｃでは、１６文字から成るそれぞれのシリーズにスライディング・ハッシュが適用されており、第３のハッシュが図示されている。この第３ハッシュのハッシュ値は「0x3ead6b31ca87544」である。この実施態様の場合、本発明の方法は最高ハッシュ値を探しており、そのため、現在ハッシュ値が最後に記録されている最高値と比較されるが、この最後に記録された最高値が「現在のインプリント」として識別され、「0xedbb925b6ca6b761」に相当する。このヘキサデシマル値は現在ハッシュ値よりも高いから、もはや現在値ではない。図４ｄは、先行の「現在インプリント」と比較してこれよりも高いことが判明したため、新しい「現在インプリント」として記憶される新しい現在ハッシュ値を示す。このアプローチを利用し、系統立った方法でファイルにアルゴリズムを適用して一度に１つだけの値を記憶することができる。これに代わるアプローチとして、それぞれの現在ハッシュ値を記憶し、すべてのハッシュが適用された後にインプリントを選択することも可能である。
【００４３】
図５ａを参照して、図１ｂの方法におけるステップ４０からステップ４６の詳細な実施態様を説明する。
【００４４】
ステップ６０において、ファイルをそれぞれが幅Ｗ１を有するデータ・ブロックに分割する。幅Ｗ１はすべてのデータ・ブロックに関して一定とするか、または既知のビヘビアのような所与のパラメータに従って変化させるかのいずれかである。
【００４５】
例えば、２０，４８０バイトを含むファイルをフィルタリングすることによって４８０バイトを除くことができる。残る２０，０００バイトをＢ＝４個のオーバーラップするデータ・ブロックに分割する：
ｂ１＝ファイル［１...５０１５］（サイズは５０１５バイト）
ｂ２＝ファイル［５００１...１００１５］（サイズは５０１５バイト）
ｂ３＝ファイル［１０００１..１５０１５］（サイズは５０１５バイト）
ｂ４＝ファイル［１５００１..２００００］（サイズは５０００バイト）
【００４６】
ステップ６２において、図１のステップ４２と同様に、それぞれのデータ・ブロックに少なくとも１つの表示を割当てるため、Ｂ個のデータ・ブロックのそれぞれにＮ個の関数ｈｉから成る群を適用する。但し、Ｎは１からＮまでの整数である。関数ｈｉを適用することで、例えば、データ・ブロックｂ１，ｂ２，ｂ３およびｂ４のそれぞれにＮ個の表示が割当てられる。図３ｂにおいて、関数ｈｉは例えばスライディング・ハッシュ関数である場合も可能であり、この場合、Ｂ個のデータ・ブロックのそれぞれから予め抽出された幅Ｗ２の連続するＳ個のサブ-ブロックすべてにハッシュ関数ＨＦｉが適用される。従って、１つのデータ・ブロックにＮ個の関数からなる群を適用する結果、１つのデータ・ブロックにＮ×Ｓの表示が割当てられることになる。Ｓはサブ−ブロックの個数である。表示は数値などのように識別性を有するものなら如何なるものでもよい。
【００４７】
データ・ブロックｂ１〜ｂ４の上記例においては、例えば、幅Ｗ２＝１６バイトのそれぞれのサブ−ブロックにＮ個のハッシュ関数が適用される：
データ・ブロックｂ１は抽出されたＳ＝５０００個の幅１６のサブ−ブロックを有する：
ファイル［１..１６］，ファイル［２..１７］，...ファイル［５０００..５０１５］
データ・ブロックｂ４は、幅１６を抽出されたＳ＝４９８５個のサブ−ブロックを有する：
ファイル［１５００１..１５０１６］，...ファイル［１９９８５..２００００］
【００４８】
ステップ６３において、Ｎ＝３として、３個のハッシュ関数ＨＦｉがそれぞれのデータ・ブロックｂ１〜ｂ４の各サブ−ブロックに適用される。その結果、それぞれのデータ・ブロックにそれぞれが５０００個から成る３組のハッシュが適用される。ハッシュ関数ＨＦｉはサブ-ブロックの数値に定数ｃｉを乗算し、モジュロＭ（即ち、ＨＦｉ(ｖ)＝ｖ*ｃｉ  ｍｏｄｕｌｏ  Ｍ）を利用して残りを計算する。従って、それぞれのブロックのＳ個のサブ−ブロックに関数ＨＦｉが適用され、それぞれのブロックとｈｉにＳ個のハッシュという結果になる。関数ｍｉは所与の基準に従ってそれらの１つを選択し、そのブロックのインプリントとする。このインプリントからｈｉの代わりにビットと連携するエクストラ・データも記憶される。
【００４９】
データ・ブロックｂ１〜ｂ４の上記例において、Ｎ＝３ならば、ｂ１はＨＦ１、ＨＦ２およびＨＦ３からそれぞれ得られる、それぞれが５０００個のハッシュから成る３組から３つの最大値Ｍ１、Ｍ２およびＭ３を有する。ｂ２〜ｂ４についても同様であり、合計１２個の最大値Ｍ１〜Ｍ１２が得られる。選択されるこれら１２個の値Ｍ１〜Ｍ１２がファイル・インプリントであり、Ｂ×Ｎ、即ち、４×３である。
【００５０】
次いで、ファイル・シグネチャとエクストラ・データがステップ６４においてデータベースに記憶される。
【００５１】
データ・ブロックの表示は、必ずしも数値でなくてもよく、記号、タグなど、特徴付けできるエレメントであればよい。
【００５２】
図５ｂは、図１ａに示した方法の実施例を詳細に示すフローチャートである。ステップ２２においてファイル部分からペイロード・ビットを抽出した後、ステップ７０において、ファイル部分のペイロード・ビットをウィンドーＷ’１、ＪおよびＷ’１を任意に設定したＪ個のデータ・ブロックに分割する。
【００５３】
ステップ２４において、ファイル部分にインプリントを割当てたように（図１ａ参照）、ステップ７４において、ファイル部分の各ブロックＪにＮ個の関数ｈｉを適用する。但し、ｉは１からＮまでの整数である。関数ｈｉは図５のステップ６３における関数と同じ関数である。これらＮ個の関数ｈｉを適用することでパケット中の各データ・ブロックにＮ個の表示群が割当てられる。図３ｂに示すように、関数ｈｉは例えばスライディング・ハッシュ関数（３５４）であってもよく、その場合、Ｊ個のデータ・ブロックのそれぞれから予め抽出された幅Ｗ’２の連続するＴ個のサブ−ブロックすべてにハッシュ関数ＨＦｉが適用される。各データ・ブロックにＮ個の関数から成る群が適用されるから、各データ・ブロックにＮ×Ｔ個の表示が割当てられることになる。但し、Ｔはサブ−ブロックの個数である。表示は数値などのように識別性を有するものであれば如何なるものでもよい。
【００５４】
一例として、ファイル部分のサイズが１５１５バイト、ペイロードのサイズが１４６５バイトとし、ペイロードのサイズから６５バイトを除いて１４００バイトとし、Ｊ＝２と想定する；ペイロード・ビットをサイズが７１５バイトのオーバーラップするブロックｊ１＝パケット［１..７１５］とサイズが７００バイトのブロックｊ2＝パケット［７０１..１４００］に分割する。次いで、データ・ブロックｊ１およびｊ２のそれぞれにＮ個の関数ｈｉを適用する。もし関数ｈｉが例えばスライディング・ハッシュ関数なら、データ・ブロックｊ１およびｊ２をさらに、幅Ｗ’２＝１６の多数の連続し且つオーバーラップするサブ−ブロックに再分割する。
【００５５】
Ｎ＝３の場合：データ・ブロックｊ１がさらに多数のサブ−ブロックＴ＝７００個に分割される：パケット［１..１６］、パケット［２..１７］、...パケット［７００..７１５］。次いで、それぞれのサブ−ブロックにＮ＝３個のハッシュ関数ＨＦｉが適用され、それぞれが７００個のハッシュｓｈ１、ｓｈ２およびｓｈ３から成る３組のハッシュ、即ち、合計２１００個の値がデータ・ブロックｊ１と連携することになる。
【００５６】
同様に、データ・ブロックｊ２がさらに多数のサブ−ブロックＴ＝６８５個に分割される：パケット［７０１..７１５］、 パケット［１３８５..１４００］。次いで、それぞれのサブ−ブロックにＮ＝３個のハッシュ関数ＨＦｉが適用され、それぞれが６８５個のハッシュｓｈ１、ｓｈ２およびｓｈ３から成る３組のハッシュ、即ち、合計２１００個の値がデータ・ブロックｊ２と連携することになる。
【００５７】
プレイロード・ビットのインプリントを決定するため、ステップ７４において、関数ｍｉ（図５ａにおけるステップ６３参照）を適用することによってそれぞれのデータ・ブロックに割当てられる表示の１つを選択する。関数ｍｉは所定の選択基準に基づいて１つの表示を選択し、シグネチャ・データベース作成時にシグネチャ割当てに使用される関数に相当する関数であればよい。例えば、表示をその重要度基準に従って予め順序を定め、重要性が最も高い表示と最も低い表示を選択する。
【００５８】
例えば、ｍｉが最大値に相当する場合、ステップ７４において割当てられる表示をブロック毎に互に比較することによって最高値の表示を決定する。これらのＮ×Ｊ個の最高値表示を、ステップ２４（図１ａ参照）または図５ａに示すステップ６３と同様にプレイロード・ビットに割当てられる。
【００５９】
上記ｊ１およびｊ２の例においては、ブロックに割当てられるハッシュｓｈ１、ｓｈ２およびｓｈ３のそれぞれの組毎に１つの最大値を選択する。ｊ１に関しては：７００個のハッシュｓｈ１から成る第１組からｍ１を選択し；７００個のハッシュｓｈ２から成る第２組からｍ２を選択し；７００個のハッシュｓｈ３から成る第３組からｍ３を選択する。ｊ２に関しても同様である。
【００６０】
なお、ｈｉとｍｉとは互に異なる方式で選択することができる。例えば、ｍｉは必ずしも各データ・ブロックと連携する値のうちの最大値に相当しなくてもよく、ＨＦｉの適用後、ブロックに割当てられるＴ個の値から成る群から、所与の選択基準または所与の重要度順序に基づくランク付けに従って選択された値に相当すればよい。従って、最小値も選択することができる。関数ｍｉは表示群から弁別できる表示を選択する関数であれば如何なる関数であってもよい。６３（図５ａの）６３におけるｈｉは（図５ｂの）７４におけるｈｉと同じか（少なくともコンパチブル）である。
【００６１】
ステップ７６において、ファイル部分毎に決められた複数のファイル・インプリントが図５ａのステップ６３において求められるようなそれぞれのファイル・シグネチャを形成し、ファイル部分の複数のインプリントがそれぞれのファイル・シグネチャの複数のファイル・インプリントと比較される。
【００６２】
ステップ７８は、図１ａのステップ２７と同様であり、ファイル部分のインプリントとファイル・シグネチャを形成するファイル・インプリントとのマッチを判断する。マッチが検出されなければ、方法はステップ２２に戻る。マッチが検出されれば、エクストラ・データが比較される（２８）。ステップ２９においてマッチが検出されると、ステップ３０においてファイルの存在のトレースがレポートされる。
【００６３】
ステップ８０において、インプリントがファイルのシグネチャとマッチする複数のファイル部分がネットワーク上または記憶媒体中で検出された所与のファイルに関して記憶されたトレースの総量が閾値と比較される。閾値を超えれば、パケットがファイルに属し、従って、ファイルがネットワークを介して送信されている極めて高い確率が存在する。閾値はユーザーによってまたは適当な確率アルゴリズムによって設定される。最大閾値は、ファイル・シグネチャ中のファイル・インプリントの総数に相当するように設定される。
【００６４】
上記実施態様に代わる態様として、ステップ８０において、検出されるトレースの数およびこれと関連するエクストラ・データ、および／または送信のトレースが検出されるファイル部分のコンテンツに基づいてファイルの少なくとも部分が存在するかどうかを判断するためにカスタム・アルゴリズムが利用される。
【００６５】
ファイルが検出されると、本発明の方法はステップ８２に進み、検出されなければ、ステップ２２に戻り、ネットワーク上を通過中の、または検出中の次のファイルに対する作業が継続される。ステップ８２において、ファイルの存在が検出され、ファイル部分の存在を示すレポートが出力される。レポートに代わるものとして既知ファイルの検出を知らせるようにアラームを設定することもできる。統計分析またはその他のモニタリングを目的とするレポートを記憶させておくだけでもよい。ファイルが送信されている場合、好ましくないファイル送信を検出したら直ちに行動を起こすこともできる。例えば、パケット全部が送信先に到着する前に送信を阻止することができる。検出されたファイルの発信元と同じIPアドレスからの以後のファイル転送すべてを保存して、後刻これを解析することができる。ステップ８２においては、ファイル転送に関連する情報、例えば、インターネット・プロトコル（ＩＰ）アドレス、ネットワーク・アドレス、ファイル転送の発信元および送信先など、ステップ２２におけるパイロード・ビットだけでなくファイル部分から任意に抽出された情報が出力される。
【００６６】
次に、ネットワークを介したファイル送信を検出するためのモジュール９０の実施態様を示す図６を参照して説明する。モジュール９０は、２つのデータベース９２、９４、処理デバイス９６、アプリケーション９８、入／出力デバイス１００およびアラーム１０２を有する。モジュール９０は、発信元１０６から送信先１０８への、ネットワーク１０４の種々のチャンネルを巡回する、または場合によってはルーターを通過するファイル部分を回収する。なお、ネットワーク１０４は如何なるタイプのネットワークであってもよい：即ち、インターネット、ローカル・エリア・ネットワーク（ＬＡＮ）、ワイド・エリア／ネットワーク（ＷＡＮ）、ワイヤレス・ネットワークまたはその他のタイプのデータ送信ネットワークであってもよい。他の実施態様として、パーソナル・コンピュータ（ＰＣ）のようなコンピュータ・システムをネットワークとすることもできる。さらに他の実施態様として、発信元がＵＳＢ記憶媒体または外部ハード・ドライブのような外延メモリーである場合も考えられる。モジュール９０は、種々のタイプの計算デバイスに作用し、任意のタイプのコンピュータ可読媒体において実施される。プログラマブルな論理を有するフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）を、上記方法のステップのいずれかおよび／またはすべてを運用するに構成するもとできる。
【００６７】
次に、持続性メモリー１２０における電子ファイルの記憶を検出するためのモジュール９０の実施態様を示す図７を参照して説明する。この場合には、記憶媒体におけるデータを読み、ファイル部分の存在を検出するためセクターを走査するようにモジュール９０を構成する。
【００６８】
他の実施態様では、持続性メモリー１２０として、ハード・ディスク、ＣＤ、ＤＶＤなど、ファイルをセクターに分割できるものを使用することができる。モジュール９０は、持続性メモリー１２０におけるファイル部分を検出し、検出インプリントに対応する検出インプリントおよびエクストラ・データとマッチするか否かを判断することができる。なお、モジュール９０は、ファイル部分を検出するためのソフトウェア処理を実行するネットワーク中のコンピュータの形態を取ることができる。モジュール９０は、任意のタイプの計算デバイスに作用し、任意のタイプのコンピュータ可読媒体において実施される。モジュール９０は、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）またはその他のタイプのプログラマブル・プロセッサにおいて実施されるようにすることも可能である。
【００６９】
図６および図７のモジュール９０は図１ａ、１ｂ、５ａおよび５ｂのフローチャートに示すように上記方法を実行するように構成されている。
【００７０】
データベース９２は、ネットワーク１０４上で、または持続性メモリー１２０からその存在が検出またはモニターされるファイルを記憶している。データベース９２はまた、検出すべきそれぞれのファイルのそれぞれのインプリントと連携するエクストラ・データをも記憶している。ファイルは遠隔記憶が可能であり、インターネットなどの方法によってアクセスすることもできるから、上記の記憶方式は選択可能である。データベース９４これらのファイルの部分のインプリントから形成されるシグネチャとともにどのファイルにシグネチャが割当てられるかの指示をも記憶している。データベース９２および９４はハッシュ・テーブル、連携メモリー、索引付きメモリーなどのような情報の迅速な検索を可能にする構造として機能することができる。データベース９２は、特に迅速な検索を可能にする必要はない。さらにまた、組み合わせて単一のデータベースとしてもよいし、それぞれを複数のメモリー・デバイスにおける複数のデータベースと適当な態様で結合した形で構成することもできる。
【００７１】
処理デバイス９６は、データベース９２および９４と連結し、アプリケーション９８とも連結する。処理デバイス９６は、アプリケーション９８のインストラクション、構成またはプログラム・コードを実行する。アプリケーション９８は、アプリケーション自体のためのタスクを実行するように構成することができる。
【００７２】
入／出力デバイス１００およびアラーム１０２はファイルの存在、またはファイル部分のインプリントがファイル・シグネチャのインプリントとマッチすることを示唆するトレースの検出をレポートするのに使用される。ネットワーク１０４および／または持続性メモリー１２０に入／出力デバイス１００を介してアクセスされる。
【００７３】
デバイス１００はファイルが転送されている発信元１０６および送信先１０８の識別のような、チャンネルにおいて検出されたファイルの存在に関する情報を出力するためにも利用される。どのファイルが検出されているか、検出の時間または送信の時間、または統計上の、またはモニタリング上の目的に有用なその他の情報のような関連情報をレポートすることができる。デバイス１００はまた、ネットワーク上を通過中の一連のファイル部分が所与のファイルに相当することを立証するのに利用される閾値のような種々のパラメータを設定する目的でユーザーが利用することも可能である。デバイス１００は、また、例えば、望ましくないファイル送信が検出された時に然るべき行動を取るために利用することもできる。異なるネットワーク・ポートを介して巡回するトレースを相関させるには、複数のデバイスを接続すればよい。例えば、１０Ｇｂ／ｓの能力を有する１０基のデバイスを接続すれば１００Ｇｂ／ｓの通信をモニターすることができる。
【００７４】
データベース９２、９４、処理デバイス９６およびアプリケーション９８（または少なくともその一部）は約１０Ｇｂ／ｓ以上のデータ転送速度でネットワーク９４上を通過するファイルをリアルタイムで検出することを可能にするフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）テクノロジーを利用して実施することができる。データベースのサイズを増大させるためには、標準的なＰＣに含まれるＤＤＲ２のような外部メモリーにＦＰＧＡを接続すればよい。当業者には明らかなように、処理能力、記憶容量およびデータ転送速度においてＦＰＧＡと同等な如何なるテクノロジーを利用してもよい。
【００７５】
上記方法は、例えば、特定のＦＰＧＡモジュール９０によって実行することができる。このＦＰＧＡモジュール９０はファ入りをＢ＝４個のデータ・ブロックに分割し、それぞれのデータ・ブロックにハッシュ・ウィンドウＷ２が１６バイトのスライディング・ハッシュ関数を適用することによってファイル・シグネチャを決定する。Ｎ個のハッシュ関数ＨＦｉを適用することによってデータ・サブ−ブロックのそれぞれに表示を割当てる：
ＨＦｉ（サブ−ブロック）＝２進値サブ−ブロック*ｃｉモジュロＭ      （１）
上記式においてＭは任意の定数；ｉ＝１...Ｎ；ｃｉとＭはｃｉが定数Ｍとプライマリであり、ｃｉもＭも同数のビットを表わすように選択される。
【００７６】
Ｍとｃｉは、所与のビット数に対してインプリント値の個数が最大となるように選択される。システムはモジュロ乗算のための種々の論理的、演算的単純化テクニックを駆使して実行することができる。例えば、一連の回転、加算、および事前計算された定数で、ＨＦｉをすべて２項領域に求めることができる。
【００７７】
一例として、Ｍが2６４−１として、ファイル部分をサブ−パケットｐ［１..１６］にハッシュする：
ＨＦｉ（ｘ）＝（ｘ*ｃｉ）モジュロＭ
但し、ｘはｐ［１..１６］の２進値。
ＨＦｉの計算を簡単にするため、ｙ＝ｐ［２..１７］の２進値とする。Ｍを上記のように選択したから、
ｙ＝ｘ．２５６−ｐ［１］＋ｐ［１７］（モジュロＭ）；および
ＨＦｉ（ｙ）＝２５６*ＨＦｉ（ｘ）−ＨＦｉ（ｐ［１］）＋ＨＦｉ（ｐ［１７］）（モジュロＭ）
２進法では*２５６は、８個の位置の左方移動（実際にはモジュロＭによる回転）であり、ＨＦｉ（ｚ）は［０...２５５］内のｚに関して事前計算できるから、この方法は極めて迅速な検出を可能にする。
【００７８】
以上に述べたファイルの存在を検出するモジュールおよび方法は、コミュテータ、ルーターまたは異なるネットワーク・トポロジーに使用されるその他のスイッチングおよびルーティング・デバイスと一体化するように構成することができる。また、ウィルス対策のようなセキュリティ・アプリケーションやその他のネットワーク・アプリケーションとも併用されるように構成することができる。モジュールは、ファイル部分をチェックするだけであるから、非侵襲的である。従って、ネットワーク・ポートへの物理的アクセスを有する既存のモジュールと接続可能である。
【００７９】
上述したように、ファイルは、ネットワークを介して送信されたり、持続性メモリーのセクターに記憶される時にファイル部分に分割されるのが普通である。ファイル部分がモニターされているデータ・ブロックの一部に対応するに過ぎず、ファイル部分はブロックのサイズよりも小さいため、この一部からファイル・インプリントが得られたという場合がある。サブ−ブロックを利用することでこの問題を解決できるかもしれない。しかし、インプリントに対応するバイトは第１パケットの末尾と第２パケットの先頭にあるかもしれない。この場合、マッチは望めない。そこで、上述した幾つかの実施態様では複数のインプリントを使用する。
【００８０】
上記のモジュールおよび方法は、圧縮された、または圧縮されていない種々のタイプのデータ・ファイルおよびフォーマットに応用できる。例えば、オーディオ、ビデオまたはその他のタイプのデータに応用できる。このようなデータは、種々の次元に従って構成されているがいずれも上記の方法を利用して検出することができる。データのタイプとしては、例えば、ツリー構造（即ち、ＸＭＬコード）のような０次元データ、ファイル、ディジタル・サウンド・レコーディング、送信用ファイル部分のような１次元データ；画像のような２次元データ；ビデオのような３次元データがある。例示したこれらのデータ・タイプのそれぞれに対して、本発明の検出方法は所与の関数またはパターンに従ってデータから抽出されたエレメントを利用する。無次元のデータに関しては、抽出エレメントは所与の大きさＫを有するサブ−ツリーであればよい。１次元データの場合には、一連の隣接エレメントまたはブロックを抽出すればよい。画像のような２次元データの場合、抽出されるエレメントは、矩形、円または特定の形状または画像自体に含まれる図示エレメントの形となる。ビデオストリームのような３次元データ・ファイルの場合には、所与の時間に亘るビデオストリームのサブ−シーケンスに含まれる矩形または球形のような特定の形状をファイルのエレメントとして抽出すればよい。
【００８１】
一実施態様として、検出可能なデータ送信がウェブ・ページのダウンローディングまたはアップローディングまたはe-メール送信の場合がある。送信をモニターされているファイルを、同じファイルの圧縮フォーマットから計算されるファイル・インプリントと連携させることができる。これによって、圧縮、非圧縮フォーマットの別なく、ネットワーク上のファイルを検出することができる。データベース９２、９４のメモリー・スペースを節約するため、モジュールはファイル全体を記憶するのではなくファイルをタグすることもできる。
【００８２】
なお、上記方法およびモジュールはファイル送信に使用されるデータ送信プロトコルに左右されない。従って、ファイル部分がネットワークを通過し、検出モジュールに到達する順序は問題とならない。
【００８３】
図１ａ、１ｂ、５ａ、５ｂにおける方法ブロックは、特定の順序で起こるように示しているが、当業者なら容易に理解できるように、ブロックの多くは入れ替え可能であり、順序を変えても方法の結果に著しく影響することはない。また、本発明を主として方法として説明したが、当業者には明らかなように、本発明は、上記方法を実行するための装置にも関し、上記方法の各ブロックを実行するための装置部分、例えば、ハードウェア・コンポネントおよび上記方法の実行を可能にする適当なソフトウェアによってプログラムされたコンピュータとの組み合わせをも含む。また、上記装置と併用される製品、例えば、予め記録された記憶デバイスなどのようにプログラム・インストラクションが記録されているコンピュータ可読媒体、またはコンピュータのデータ信号を搬送するコンピュータ可読プログラム・インストラクションは装置による本発明の方法の実行を容易にする。このような装置、製品およびコンピュータ・データ信号も本発明の範囲に含まれる。
【００８４】
以上に述べた本発明の実施態様はあくまでも実施例である。当業者ならば、本発明の範囲を逸脱することなくこれらの実施例に多様な変更を加えることができる。具体的には、上述した１つまたは２つ以上の実施態様から選択される構成要件を組み合わせることによって、新しい実施態様を構成することができ、このような組み合わせに好適な構成要件は当業者が容易に理解するところである。特許請求の範囲に記載の内容は技術上の適当なすべての変更を包含するものである。
【図１ａ】
0005519646.tif 000002
【図１ｂ】
0005519646.tif 000003
【図２】
0005519646.tif 000004
【図３ａ】
0005519646.tif 000005
【図３ｂ】
0005519646.tif 000006
【図４ａ】
0005519646.tif 000007
【図４ｂ】
0005519646.tif 000008
【図４ｃ】
0005519646.tif 000009
【図４ｄ】
0005519646.tif 000010
【図５ａ】
0005519646.tif 000011
【図５ｂ】
0005519646.tif 000012
【図６】
0005519646.tif 000013
【図７】
0005519646.tif 000014