(57)【要約】  ある例示的な実装における方法は、データファイルのレコードから複数のデータ要素を抽出するステップ、前記データ要素を複数のトークンにトークン化するステップ、前記トークンを登録リストの第１のタプルに格納するステップ、を有する。方法は、複数のトークンのうちの１つを第１のタプルのトークンキーとして選択するステップであって、前記トークンは、前記登録リスト内で前記第１のタプル内の他のトークンの各々より少ない頻度で生じるために選択される、ステップを更に有する。特定の実施形態では、少なくとも１つのデータ要素は、少なくとも２つのワードを及び該ワード間の分離記号を表す所定の表現パターンに一致する文字パターンを有する表現素である。他の実施形態では、少なくとも１つのデータ要素は、１又は複数の連続する基本文字の文字パターンにより定められるワードである。他の特定の実施形態は、所定の区切り文字を認識することによりレコードの終わりを決定するステップを有する。【特許請求の範囲】
【請求項１】
データファイルのレコードから複数のデータ要素を抽出するステップ、
前記複数のデータ要素を複数のトークンにトークン化するステップ、
前記複数のトークンを登録リスト内の第１のタプルに格納するステップ、
前記複数のトークンのうちの１つを前記第１のタプルのトークンキーとして選択するステップであって、前記トークンキーは、前記第１のタプル内の前記複数のトークンのうちの他のトークンの各々より、前記登録リスト内で少ない頻度で生じる、ステップ、
を有する方法。
【請求項２】
前記複数のデータ要素のうちの少なくとも１つは、１又は複数の連続する基本文字の文字パターンにより定められるワードである、請求項１に記載の方法。
【請求項３】
少なくとも１つのデータ要素は、所定の表現パターンに一致する文字パターンにより定められる表現素であり、前記所定の表現パターンは、少なくとも２つのワード及び該ワード間の分離記号を表す、請求項１に記載の方法。
【請求項４】
前記複数のトークンのうちの各トークンは、対応するデータ要素の数値表現である、請求項１に記載の方法。
【請求項５】
前記レコードの終わりを示す所定の区切り文字を認識することにより、前記レコードの終わりを決定するステップ、
を更に有する請求項１に記載の方法。
【請求項６】
前記登録リストは複数のタプルを有し、前記登録リスト内の各タプルは、１又は複数のデータファイルの１つのレコードのみと関連付けられている、請求項１に記載の方法。
【請求項７】
前記トークンキーは、インデックステーブルのインデックスに格納され、前記インデックスは、前記登録リスト内の前記第１のタプルの位置を示す第１のオフセットを有する、請求項１に記載の方法。
【請求項８】
前記インデックスは、前記第１のオフセットに関連付けられた文書識別子を有し、前記文書識別子は、前記レコードを含むデータファイルを表す、請求項７に記載の方法。
【請求項９】
前記インデックスは、前記登録リスト内の別の複数のトークンを有する第２のタプルに対応する第２のオフセットを有し、前記第２のオフセットは、前記登録リスト内の前記第２のタプルの位置を示し、前記第２のタプルの前記別の複数のトークンのうちの１つは、前記トークンキーと等価である、請求項７に記載の方法。
【請求項１０】
前記複数のトークンのうちの１つを前記第１のタプルのトークンキーとして選択するステップは、
前記登録リスト内の各トークンの合計発生数を含むカウントテーブルを生成するステップ、
前記第１のタプル内の他のトークンの各々と比べて最低合計発生数を有する、前記複数のトークンのうちの１つを識別するために、前記カウントテーブルを検索するステップ、
を更に有する、請求項１に記載の方法。
【請求項１１】
それぞれデータ要素の特定の組合せを表す複数のタプルを有する登録リストを生成するよう動作する１又は複数の登録モジュール、
前記１又は複数の登録モジュールと関連する命令を実行するよう動作するプロセッサであって、前記命令は、
データファイルのレコードから複数のデータ要素を抽出するステップ、
前記複数のデータ要素を複数のトークンにトークン化するステップ、
前記複数のトークンを登録リスト内の第１のタプルに格納するステップ、
前記複数のトークンのうちの１つを前記第１のタプルのトークンキーとして選択するステップであって、前記トークンキーは、前記第１のタプル内の前記複数のトークンのうちの他のトークンの各々より、前記登録リスト内で少ない頻度で生じる、ステップ、を含む、プロセッサ、
を有する装置。
【請求項１２】
少なくとも１つのデータ要素は、所定の表現パターンに一致する文字パターンにより定められる表現素であり、前記所定の表現パターンは、少なくとも２つのワード及び該ワード間の分離記号を表す、請求項１１に記載の装置。
【請求項１３】
前記プロセッサは、
前記レコードの終わりを示す所定の区切り文字を認識することにより、前記レコードの終わりを決定するステップ、
を含む更なる命令を実行するよう動作する、請求項１１に記載の装置。
【請求項１４】
前記登録リスト内の各タプルは、１又は複数のデータファイルの１つのレコードのみと関連付けられている、請求項１３に記載の装置。
【請求項１５】
前記トークンキーは、インデックステーブルのインデックスに格納され、前記インデックスは、前記登録リスト内の前記第１のタプルの位置を示す第１のオフセットを有する、請求項１１に記載の装置。
【請求項１６】
前記インデックスは、前記登録リスト内の別の複数のトークンを有する第２のタプルに対応する第２のオフセットを有し、前記第２のオフセットは、前記登録リスト内の前記第２のタプルの位置を示し、前記第２のタプルの前記別の複数のトークンのうちの１つは、前記トークンキーと等価である、請求項１５に記載の装置。
【請求項１７】
前記複数のトークンのうちの１つを前記第１のタプルのトークンキーとして選択するステップは、
前記登録リスト内の各トークンの合計発生数を含むカウントテーブルを生成するステップ、
前記第１のタプル内の他のトークンの各々と比べて最低合計発生数を有する、前記複数のトークンのうちの１つを識別するために、前記カウントテーブルを検索するステップ、
を更に有する、請求項１１に記載の装置。
【請求項１８】
データファイルのレコード内の第１のデータ要素の始めを識別するステップ、
前記第１のデータ要素の始めで開始する第１の文字列が所定の表現パターンと一致する場合に、前記第１のデータ要素は表現素であると決定するステップであって、前記所定の表現パターンは、少なくとも２つのワード及び該２つのワード間の分離記号を表す、ステップ、
前記表現素を抽出するステップ、
前記表現素を第１のトークンにトークン化するステップ、
前記第１のトークンを登録リストの第１のタプル内に格納するステップ、
を有する方法。
【請求項１９】
前記表現素をトークン化するステップの前に、前記表現素を正規化するステップ、
を更に有する請求項１８に記載の方法。
【請求項２０】
前記正規化するステップは、前記表現素から前記分離記号を削除するステップを含む、請求項１９に記載の方法。
【請求項２１】
前記所定の表現パターンは、前記第１のデータ要素の始めで開始する文字列に一致する複数の所定の表現パターンのうちの最長の１つである、請求項１８に記載の方法。
【請求項２２】
前記レコード内の第２のデータ要素の始めを識別するステップ、
前記第２のデータ要素はワードであると決定するステップであって、複数の所定の表現パターンのうちのいずれも、前記第２のデータ要素の始めで開始する第２の文字列に一致しない、ステップ、
前記ワードを抽出するステップ、
前記ワードを第２のトークンにトークン化するステップ、
前記第２のトークンを前記登録リスト内の前記第１のタプル内に格納するステップ、
を更に有する請求項１８に記載の方法。
【請求項２３】
所定の区切り文字は、前記データファイル内の連続するレコード対の各々を分離する、請求項１８に記載の方法。
【請求項２４】
所定の区切り文字は、前記データファイル内のレコードの終わりに位置し、前記所定の区切り文字は、セミコロン、改行、キャリッジリターン、コロン及びピリオドを有するグループから選択される、請求項１８に記載の方法。
【請求項２５】
前記登録リスト内の各タプルは、前記データファイルの１つのレコードのみと関連付けられている、請求項１８に記載の方法。
【請求項２６】
前記少なくとも２つのワードのうちの各々は、１又は複数の連続する基本文字の文字パターンにより定められる、請求項１８に記載の方法。
【請求項２７】
前記基本文字は、数字、文字言語の文字、及び文字言語の音声部分を表す記号を有するグループから選択される、請求項２６に記載の方法。
【請求項２８】
前記分離記号は、基本文字と等価ではなく、前記分離記号は、前記分離記号が前記レコードの終わりを示す所定の区切り文字と等価である場合、前記所定の区切り文字と区別される、請求項１８に記載の方法。
【請求項２９】
登録リストモジュール、
前記登録リストモジュールに関連付けられた命令を実行するよう動作するプロセッサであって、前記命令は、
データファイルのレコード内の第１のデータ要素の始めを識別するステップ、
前記第１のデータ要素の始めで開始する第１の文字列が所定の表現パターンと一致する場合に、前記第１のデータ要素は表現素であると決定するステップであって、前記所定の表現パターンは、少なくとも２つのワード及び該２つのワード間の分離記号を表す、ステップ、
前記表現素を抽出するステップ、
前記表現素を第１のトークンにトークン化するステップ、
前記第１のトークンを登録リストの第１のタプル内に格納するステップ、を含む、プロセッサ、
を有する装置。
【請求項３０】
前記プロセッサは、
前記表現素をトークン化するステップの前に、前記表現素を正規化するステップ、
を含む更なる命令を実行するよう動作する、請求項２９に記載の装置。
【請求項３１】
前記所定の表現パターンは、前記第１のデータ要素の始めで開始する文字列に一致する複数の所定の表現パターンのうちの最長の１つである、請求項２９に記載の装置。
【請求項３２】
前記プロセッサは、
前記レコード内の第２のデータ要素の始めを識別するステップ、
前記第２のデータ要素はワードであると決定するステップであって、複数の所定の表現パターンのうちのいずれも、前記第２のデータ要素の始めで開始する第２の文字列に一致しない、ステップ、
前記ワードを抽出するステップ、
前記ワードを第２のトークンにトークン化するステップ、
前記第２のトークンを前記登録リスト内の前記第１のタプル内に格納するステップ、
を含む更なる命令を実行するよう動作する、請求項２９に記載の装置。
【請求項３３】
所定の区切り文字は、前記データファイル内の連続するレコード対の各々を分離する、請求項２９に記載の装置。
【請求項３４】
前記登録リストの各タプルは、前記データファイルの１つのレコードのみと関連付けられている、請求項２９に記載の装置。
【請求項３５】
オブジェクトから複数のデータ要素を抽出するステップ、
前記複数のデータ要素を複数のオブジェクトトークンにトークン化するステップ、
登録リスト内の複数のタプルのうちの第１のタプルを識別するステップであって、前記第１のタプルは、複数の関連するトークンを有する、ステップ、
前記複数の関連するトークンのうちの各々が前記複数のオブジェクトトークンのうちの少なくとも１つに対応するかどうか決定するステップ、
前記複数の関連するトークンと前記複数のオブジェクトトークンとの間の対応の量が所定の閾を満たす場合、イベントを有効化するステップ、
を有する方法。
【請求項３６】
前記第１のタプルを識別するステップは、
前記複数のオブジェクトトークンから保留中キーを識別するステップ、
前記保留中キーに対応するトークンキーを見付けるためにインデックステーブルを検索するステップであって、オフセットは前記トークンキーにリンク付けされ、前記オフセットは前記登録リスト内の前記第１のタプルの位置を示す、ステップ、
を更に有する、請求項３５に記載の方法。
【請求項３７】
前記保留中キーは保留中キーリストに含まれ、前記保留中キーリストは、前記複数のオブジェクトトークンのうちのいずれかが前記インデックステーブル内の複数のトークンキーのうちの１つに対応するかどうかを決定するために、前記インデックステーブルを検索することにより、生成され、前記複数のトークンキーのうちの１つに対応する各オブジェクトトークンは、前記保留中キーリストに格納される、請求項３６に記載の方法。
【請求項３８】
前記トークンキーは、前記第１のタプル内の前記複数の関連するトークンのうちの他の関連するトークンの各々より、前記登録リスト内で少ない頻度で生じる、請求項３６に記載の方法。
【請求項３９】
前記所定の閾は、前記第１のタプル内の前記複数の関連するトークンの各々が、前記複数のオブジェクトトークンのうちの少なくとも１つに対応するとき、満たされる、請求項３５に記載の方法。
【請求項４０】
前記複数のオブジェクトトークンのうちの各々についてビットを設定することにより、ビットハッシュテーブル内で前記複数のオブジェクトトークンを表すステップであって、前記ビットハッシュテーブルは、それぞれ前記ビットハッシュテーブル内の別個のビット位置を有する複数のビットを有する、ステップ、
を更に有する請求項３５に記載の方法。
【請求項４１】
前記決定するステップは、前記複数の関連するトークンの１つに対応する前記ビットハッシュテーブルの各ビット位置にビットが設定されているか否かを決定するために、前記ビットハッシュテーブルを評価するステップ、を更に有する、請求項４０に記載の方法。
【請求項４２】
前記複数のデータ要素のうちの少なくとも１つは、１又は複数の連続する基本文字の文字パターンにより定められるワードである、請求項３５に記載の方法。
【請求項４３】
前記複数のデータ要素のうちの少なくとも１つは、所定の表現パターンに一致する文字パターンを有する表現素であり、前記所定の表現パターンは、少なくとも２つのワード及び該ワード間の分離記号を表す、請求項３５に記載の方法。
【請求項４４】
複数のタプルを有する登録リストと比較するために、複数のデータ要素を有するオブジェクトを受信するよう動作する１又は複数の検出モジュールであって、各タプルは、データ要素の特定の組合せを表す、１又は複数の検出モジュール、
１又は複数の検出モジュールと関連する命令を実行するよう動作するプロセッサであって、前記命令は、
前記オブジェクトから前記複数のデータ要素を抽出するステップ、
前記複数のデータ要素を複数のオブジェクトトークンにトークン化するステップ、
前記登録リスト内の前記複数のタプルのうちの第１のタプルを識別するステップであって、前記第１のタプルは、複数の関連するトークンを含む、ステップ、
前記複数の関連するタプルのうちの各々１つが前記複数のオブジェクトトークンのうちの少なくとも１つに対応するかどうかを決定するステップ、
前記複数の関連するトークンと前記複数のオブジェクトトークンとの間の対応の量が所定の閾を満たす場合、イベントを有効化するステップ、を含む、プロセッサ、
を有する装置。
【請求項４５】
前記第１のタプルを識別するステップは、
前記複数のオブジェクトトークンから保留中キーを識別するステップ、
前記保留中キーに対応するトークンキーを見付けるためにインデックステーブルを検索するステップであって、オフセットは前記トークンキーにリンク付けされ、前記オフセットは前記登録リスト内の前記第１のタプルの位置を指す、ステップ、
を更に有する、請求項４４に記載の装置。
【請求項４６】
前記保留中キーは保留中キーリストに含まれ、前記保留中キーリストは、前記複数のオブジェクトトークンのうちのいずれかが前記インデックステーブル内の複数のトークンキーのうちの１つに対応するかどうかを決定するために、前記インデックステーブルを検索することにより、生成され、前記インデックステーブル内の前記複数のトークンキーのうちの１つに対応する各オブジェクトトークンは、前記保留中キーリストに格納される、請求項４５に記載の装置。
【請求項４７】
前記トークンキーは、前記第１のタプル内の前記複数の関連するトークンのうちの他の関連するトークンの各々より、前記登録リスト内で少ない頻度で生じる、請求項４４に記載の装置。
【請求項４８】
前記所定の閾は、前記第１のタプル内の前記複数の関連するトークンの各々が、前記複数のオブジェクトトークンのうちの少なくとも１つに対応するとき、満たされる、請求項４４に記載の装置。
【請求項４９】
前記複数のデータ要素のうちの少なくとも１つは、１又は複数の連続する基本文字の文字パターンにより定められるワードである、請求項４４に記載の装置。
【請求項５０】
前記複数のデータ要素のうちの少なくとも１つは、所定の表現パターンに一致する文字パターンを有する表現素であり、前記所定の表現パターンは、少なくとも２つのワード及び該ワード間の分離記号を表す、請求項４４に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概してデータ管理の分野に関し、より詳細には、データの特定の組合せを保護するシステム及び方法に関する。
【背景技術】
【０００２】
コンピュータネットワークは、現代のビジネスにとって不可欠なツールになっている。企業は、通信のためにネットワークを用い、更には種々の形式で且つ様々な場所にデータを格納できる。重要情報は、頻繁に企業のネットワークを介して伝搬する。特定の国及び州の条例は、種々の組織又は事業による特定種類の情報の流布に対する規制を設ける。したがって、機密情報の潜在的な損失及びその結果生じる事業への悪影響に加え、企業は、故意でない又は故意による特定データの漏出に対する法的責任も抱えている。現代の企業は、このような情報の流布を制御するために多くのツールを用いる場合が多く、これらのツールの多くは、部外者、侵入者及び無許可の人が秘密、貴重品若しくはその他の秘密情報にアクセス又は受信するのを避けようとする。一般に、これらのツールは、ファイアウォール、侵入検出システム及びパケットスニファ装置を有し得る。
【０００３】
重要情報の動きを保護及び制御可能な、効果的なデータ管理システムを提供するシステム及びプロトコルを提供できることは、セキュリティ専門家、コンポーネント製造者、サービスプロバイダ、及びシステム管理者等の重要な課題であり得る。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、データの特定の組合せを保護するシステム及び方法を提供する。
【図面の簡単な説明】
【０００５】
本発明並びにその特徴及び利点のより完全な理解を提供するため、添付の図と共に以下の説明を参照する。図中、同様の参照符号は同様の部分を表す。
【図１】本開示の一実施形態による、ネットワーク環境において特定のデータ組合せを保護するシステムの例示的な実施形態の簡略ブロック図である。
【図２】本開示によるデータ組合せ保護システムの実施形態で用いられ得るコンピュータの簡略ブロック図である。
【図３】本開示の一実施形態によるデータ組合せ保護システム内の登録システムのブロック図である。
【図４】本開示の一実施形態によるデータ組合せ保護システム内の種々のデータファイル構造のブロック図である。
【図５】本開示の登録システムの一態様による例示的なデータ入力及び出力を有する簡易ブロック図である。
【図６Ａ】登録システムに関連する一連の例示的ステップを説明する簡易フローチャートである。
【図６Ｂ】登録システムに関連する一連の例示的ステップを説明する簡易フローチャートである。
【図７】登録システムに関連する一連の例示的ステップを説明する簡易フローチャートである。
【図８】本開示の一態様に従って処理する登録システムと関連する例示的なシナリオにおけるファイルの内容を示す。
【図９】本開示の一実施形態によるデータ組合せ保護システム内の検出システムのブロック図である。
【図１０】本開示の検出システムの一態様による例示的なデータ入力及び出力を有する簡易ブロック図である。
【図１１】検出システムに関連する一連の例示的ステップを説明する簡易フローチャートである。
【図１２】検出システムに関連する一連の例示的ステップを説明する簡易フローチャートである。
【図１３】本開示の一態様に従って処理する検出システムと関連する例示的なシナリオにおけるファイルの内容を示す。
【発明を実施するための形態】
【０００６】
＜概要＞
例示的な一実施形態における方法は、データファイルのレコードから複数のデータ要素を抽出するステップ、前記複数のデータ要素を複数のトークンにトークン化するステップ、前記複数のトークンを登録リストの第１のタプルに格納するステップ、を有する。方法は、複数のトークンのうちの１つを第１のタプルのトークンキーとして選択するステップであって、前記トークンキーは、前記登録リスト内で前記第１のタプル内の他のトークンの各々より少ない頻度で生じる、ステップを更に有する。より詳細な実施形態では、少なくとも１つのデータ要素は、所定の表現パターンに一致する文字パターンを有する表現素であり、所定の表現パターンは、少なくとも２つのワードを及び該ワード間の分離記号を表す。他の特定の実施形態では、少なくとも１つのデータ要素は、１又は複数の連続する基本文字の文字パターンにより定められるワードである。他のより詳細な実施形態は、所定の区切り文字を認識することによりレコードの終わりを決定するステップを有する。
【０００７】
別の例示的な一実施形態における方法は、オブジェクトから複数のデータ要素を抽出するステップ、前記複数のデータ要素を複数のオブジェクトトークンにトークン化するステップ、登録リスト内の第１のタプルを識別するステップ、を有する。方法は、第１のタプル内の複数の関連するトークンの各々が、少なくとも１つのオブジェクトトークンに対応するかどうかを決定するステップを更に有する。さらに、方法は、第１のタプル内の複数の関連するトークンと複数のオブジェクトトークンとの間の対応の量が所定の閾を満たすかどうかを評価するステップを有する。更に詳細な方法では、所定の閾は、第１のタプル内の関連するトークンの各々が、複数のオブジェクトトークンのうちの少なくとも１つに対応するとき、満たされる。
【０００８】
＜例示的な実施形態＞
図１は、例示的なネットワーク１００内でデータの特定の組合せを登録及び検出する例示的なデータ組合せ保護システム１０を示す簡易ブロック図である。データ組合せ保護システム１０は、登録システム２２を有するネットワーク機器１２並びにそれぞれ検出システム２４、２６、２８を有する複数のネットワーク機器１４、１６、１８のような複数のネットワーク要素を有しても良い。これらのネットワーク機器１２、１４、１６、１８は、データ保護マネジャ３２を有するネットワーク機器３０のような別のネットワーク要素により管理されるか又はそれに結合され得る。さらに、ネットワークセキュリティプラットフォーム１４０は、ネットワーク１００のための既存のネットワークセキュリティ基盤を提供しても良く、データ組合せ保護システム１０と適切に統合されても良い。
【０００９】
図１に示したネットワーク環境は、一般に、パケットを交換可能な任意の通信アーキテクチャを表すよう構成され又は配置されても良い。このような構成は、図１に説明目的で示したような所与の企業体の別個の部門（例えば、マーケティング部１５２、販売部１５４、製造部１５６）を含んでも良い。さらに、電子メールゲートウェイ１６２、ウェブゲートウェイ１６４、スイッチ１７２、ファイアウォール１７４及び少なくとも１つのクライアント装置１３０のような他の共通ネットワーク要素も、ネットワーク１００内に設けられても良い。ネットワーク１００は、インターネット１８０のような他のネットワークと、ファイアウォール１７４を通じてパケットを交換するよう構成されても良い。
【００１０】
データ組合せ保護システム１０は、ネットワーク環境からの故意でない又は故意による機密データの開示に対して組織を保護するのを助けることができる。データ組合せ保護システム１０の実施形態は、デ―タ要素の特定の組合せを登録し、ネットワーク環境のオブジェクト内で登録されたデータ組合せを検出するために用いることができる。例えば、個人を識別するために組み合わせられるときに十分に独特であり、個人に関する秘密若しくは機密情報を露出する可能性のあるデータ要素は、データ組合せ保護システム１０により、組合せとして登録され、ネットワークのオブジェクト内で検出され得る。システム１０は、各特定の組合せを有する登録リスト又は該登録リストの別個のタプル若しくはレコードで表されたデータ要素のセットを作成できる。登録リスト内のこれらのタプルを作成するための登録動作は、１又は複数のデータ要素セットを有する任意のデータファイルに対して実行できる。ここで、各データ要素セットは、所定の区切り文字により他のデータ要素セットと区切られる。登録リストは、キーでインデックスを付され、各キーはタプルで表されるデータ要素のうちの１つに対応する。
【００１１】
データ組合せ保護システム１０は、ネットワーク環境内のオブジェクト（例えば、ワープロ文書、集計表、データベース、電子メール文書、テキスト形式ファイル、任意の人間語テキストファイル、等）内のデータ要素の１又は複数の登録された組合せを発見するための検出動作を実行できる。オブジェクトは、ネットワーク内でキャプチャされ、送信のためにフォーマット化され（例えば、ＨＴＭＬ、ＦＴＰ、ＳＭＴＰ、Ｗｅｂｍａｉｌ、等）、又はデータベース、ファイルシステム若しくは他の記憶レポジトリに格納される。一実施形態では、データ要素の登録された組合せの中の（つまり、登録リストの１つのタプル内に表される）全てのデータ要素がオブジェクト内で検出されるとき、イベントがフラグ設定され又は有効にされ、該オブジェクトは、送信から保護され、及び／又は監視するため及び任意の適切な救済措置を取るためにネットワークオペレータ若しくは他の認可された人に報告されても良い。他の実施形態では、データ要素の登録された組合せの特定の閾量がオブジェクト内で発見された場合、イベントが有効にされても良い。
【００１２】
データ組合せ保護システム１０の技術を説明する目的のために、図１に示したネットワークのような所与のネットワークに存在し得る活動及びセキュリティ問題を理解することは重要である。以下の基礎的情報は、本開示を正しく説明する基礎として考えることができる。このような情報は、真に単に説明を目的として提供され、したがって、決して本開示の広範な範囲及びその潜在的な適用を制限すると考えられるべきではない。
【００１３】
多くのセキュリティ環境における課題は、秘密電子データを制御する能力である。セキュリティ問題の一例では、多くの組織は、該組織に関連し得る又は単に一般社会の若しくはその種々の部門の構成員であり得る個人を特定するために用いることのできるデータを収集し格納する。この機密データは、例えば、名前、社会保障番号、クレジットカード番号、住所、電話番号、生年月日、市民権、口座番号、雇用主、結婚歴、等を有し得る。オブジェクト内の単独の機密データ要素又はオブジェクト内の少数の機密データ要素は、特定の人物を識別するため又は秘密情報を漏洩するためには十分に特色がないかも知れない。しかしながら、特定の人物に関連付けられた機密データ要素の数がオブジェクト内で増大するにつれ、人物が特定できる可能性も増大し、したがって関連する秘密情報を露呈する危険も増大する。同様に、秘密情報に関する関連データ要素（例えば、知的財産、会社財務データ、政府の秘密情報に関するデータ要素）の数が増大するにつれ、他の種類の秘密情報も特定可能になり得る。
【００１４】
種々の国及び州の法律も、特定の組織又は団体による、個人の非公開個人情報及び個人的な識別可能情報の開示を規制する。例えば、１９９６年のＨＩＰＡＡ（Health  Insurance  Portability  and  Accountability  Act）は、情報が個人を識別可能な（つまり、名前、住所、生年月日、社会保障番号、又は特定の人物を識別するために用いられ得る他の情報を含む）場合、保護された保険関連情報（ＰＨＩ）の使用及び開示を規制する。同様に、１９９９年のＧＬＢＡ（Gramm-Leach-Bliley  Act）は、金融機関による非公開個人情報の開示を規制することにより、個人の個人財務情報を保護することを求めている。別の例では、ＰＣＩ（Payment  Card  Industry）データセキュリティ基準も、支払カードのデータ要素の使用及び開示を規制する。このような規制は、特定の個人及び彼らの個人情報を識別できる可能性があるデータ要素（例えば、名前、社会保障番号、及び生年月日）の所定の組合せを含む電子データの無許可流布を排斥できる。
【００１５】
機密データ要素についてオブジェクトを監視することは、幾つかの理由で問題がある。先ず、幾つかのネットワーク内で維持される多量のデータは、ネットワーク性能低下を最小限に抑えるために高度な処理技術を必要とする。米国だけで約３億人の人々がいるので、これらの個人に関連するデータ要素の数だけで、直ちに１０億個ものデータ要素に増大してしまう。標準的なコンピュータメモリ及び処理能力は、１０億個のデータ要素を登録及び評価するためにオブジェクトを効率的に処理するために、最適化される必要がある。
【００１６】
別の監視の問題は、特定のデータが常に標準フォーマットで存在するものではないために生じる。例えば、多数のフォーマットが、生年月日（例えば、「June２５,１９６４」、「０６-２５-１９６４」、「１９６４.May.２５」等）又は電話番号（例えば、「(０００)０００-００００」、「０００-０００-００００」、「０００.０００.００００」等）のために用いられ得る。一例のシナリオでは、デ―タ要素は、１つのフォーマットでネットワークに格納され、異なるフォーマットでオブジェクト内で開示されても良い。しかしながら、無許可のデータ開示に対する規則及び結果として生じる刑罰は、開示に用いられるフォーマットに拘わらず、秘密情報の開示に課せられ得る。したがって、オブジェクト内の機密データ要素の検出は、特定データの変化するフォーマットを認識する必要がある。
【００１７】
電子データを電子的に共有できる多数のフォーマットは、セキュリティシステムが秘密情報の電子的開示の監視に成功するのを妨げる。電子データは、多数の構成（例えば、所定の列と行を有する集計表、電子メールメッセージ、ワープロ文書、データベース、所定のプロトコルを用いてフォーマット化された送信オブジェクト、等）で提供され得る。したがって、データ要素の特定の組合せが監視されているシステムでは、該要素は、必ずしも同じ特定の組合せの他の関連するデータ要素の近隣に配置されていないかも知れない。特定の指定された組合せの中のデータ要素は、ワード、フォーマット文字、線、又はオブジェクト内の任意の分離記号若しくは区切り文字により分けられ得る。データ要素がオブジェクト内のどこに現れるかに拘わらず、該データ要素の特定の組合せを含むオブジェクトを評価し検証するために高度な技術が必要である。
【００１８】
図１に概要を示した特定のデータ組合せを保護するシステムは、上述の問題の多くを解決できる。データ組合せ保護システム１０のある例示的な実施形態によると、登録システム２２は、監視されるべき特定の組合せの登録リスト又はデータ要素セットを作成するために、ネットワーク１００内に設けられる。登録システムは、種々の文字フォーマット又はパターンで表される、各データ要素セット間に所定の区切り文字を有する種々の電子ファイルフォーマットで提供されるデータ要素を認識及び登録できる。また、複数の検出システム２４、２６、２８は、ネットワーク環境内のキャプチャされた及び／又は格納されたオブジェクトを評価し、どのオブジェクトが１又は複数の登録されたデータ要素セットを含むかを決定するために設けられても良い。検出システムは、オブジェクト内のデータ要素を認識し、データ要素の登録された組合せの各データ要素がオブジェクトの範囲内のどこかに含まれるか否かを決定するよう構成される。登録リストは、コンピュータリソースを最適化し及びネットワーク性能問題を最小限に抑えるように、検出システムによりインデックス付けされ検索される。
【００１９】
留意すべきことに、本願明細書では、「一実施形態」、「例示的な実施形態」、「ある実施形態」、「別の実施形態」、「幾つかの実施形態」、「種々の実施形態」、「他の実施形態」、「代替の実施形態」等に含まれる種々の特徴への参照（例えば、要素、構造、モジュール、コンポーネント、ステップ、等）は、これらの任意の特徴が本開示の１又は複数の実施形態に含まれても良いが、必ずしも同じ実施形態に含まれても良い若しくは含まれなくても良いことを意味する。
【００２０】
図１のインフラに戻ると、データ組合せ保護システム１０は、ＬＡＮ（local  area  network）として構成されても良く種々の有線構成（例えば、Ethernet（登録商標））及び／又は無線技術（例えば、IEEE８０２.llx）を用いて実装されても良い例示的なネットワーク１００内で実施されても良い。一実施形態では、ネットワーク１００は、ＩＳＰ（Internet  Service  Provider）により又はインターネットサーバを通じて専用帯域でインターネット１８０に動作可能に結合されても良い。ネットワーク１００は、ＬＡＮ又は任意の他の適切なネットワーク種類として構成された他の論理的に別個のネットワークにも接続され得る。さらに、ネットワーク１００は、必要に応じて特定の必要性に従って任意の他の種類のネットワークで置き換えられ得る。このようなネットワークは、ＷＬＡＮ（wireless  LAN）、ＭＡＮ（metropolitan  area  network）、ＶＰＮ（virtual  private  network）、又はネットワーク環境で通信を実現する任意の他の適切なアーキテクチャ若しくはシステムを含む。インターネット１８０及び他の論理的に別個のネットワークへの接続は、例えばＤＳＬ（digital  subscriber  line）、電話線、Ｔ１線、無線、衛星、光ファイバ、ケーブル、Ethernet（登録商標）等又はこれらの任意の組合せのような任意の適切な媒体を含んでも良い。ゲートウェイ、ルータ、スイッチ（例えば１７２）等のような多数のネットワークコンポーネントは、ネットワーク１００内で、並びにネットワーク１００、インターネット１８０及びネットワーク１００に接続される任意の他の論理的に別個のネットワークの間で、電子通信を実現するために用いられても良い。
【００２１】
ネットワーク１００は、電子パケットの送信又は受信ために、ＴＣＰ／ＩＰ（transmission  control  protocol/internet  protocol）通信を可能にするよう構成されても良い。ネットワーク１００は、適切な場合及び特定の必要性に基づき、ＵＤＰ／ＩＰ（user  datagram  protocol/IP）又は任意の他の適切なプロトコルと共に動作しても良い。さらに、電子メールゲートウェイ１６２は、クライアント装置１３０のような、ネットワーク１００に動作可能に接続されるクライアントコンピュータに、ＳＭＴＰ（Simple  Mail  Transfer  Protocol）又は任意の他の適切なプロトコルを用いて電子メールメッセージを送信及び受信することを可能にしても良い。
【００２２】
クライアント装置１３０は、１又は複数のエンドポイント又はネットワーク１００内で電子通信に影響を与え若しくは管理したいと望む消費者を表す。用語「クライアント装置」は、コンピュータ、ＰＤＡ（personal  digital  assistant）、ラップトップ又は電子ノートブック、携帯電話機、又はネットワーク１００内で音声、オーディオ若しくはデータ交換を開始可能な任意の他の装置、コンポーネント、要素若しくはオブジェクトのような電子通信を開始するために用いられる装置を含み得る。また、エンドポイントは、マイクロフォン、ディスプレイ若しくはキーボード、又は他の端末機器のような、人間のユーザとの適切なインタフェースを含み得る。エンドポイントは、プログラム、データベース、又は任意の他のコンポーネント、装置、要素若しくはネットワーク１００内で音声若しくはデータ交換を開始可能なオブジェクトのような他のエンティティ若しくは要素の代わりに電子通信を開始しようとする任意の装置であっても良い。
【００２３】
登録及び検出システムを有するネットワーク機器は、ネットワーク１００においてデータ組合せ保護システム１０を提供できる。データ組合せ保護システム１０は、故意でない又は故意による情報漏洩に対する保護を可能にする。ここで、特定の組合せの漏洩データは秘密情報を露出する可能性がある。これらのネットワーク機器は、ネットワーク構成に関連付けられた通信経路にアクセスでき、１又は複数の機器が電子メールトラフィック、他のネットワークトラフィック又はビジネス基盤のどこか（例えば、サーバ、レポジトリ、等）に単に存在するデータにアクセスを有するようにしても良い。特に、登録システム２２を有するネットワーク機器１２は、機密データ要素を含むデータベース及びレポジトリ１１２へのアクセスのために、ネットワーク１００内に配置され得る。登録システム２２は、データベース及びレポジトリ１１２から又は他のファイル若しくはオブジェクトから、適切なフォーマットで、データの特定の組合せを登録できる。データの登録された組合せは、任意の完全な登録されたデータの組合せ若しくはその所定の部分の漏洩をネットワークトラフィック内で検出するために、又は事業体基盤の無認可セグメントに存在するこのようなデータの組合せ若しくはその所定の部分を検出するために、ネットワーク機器１４、１６、１８の検出システム２４、２６、２８により用いることができる。
【００２４】
検出システム２４、２６、２８を有するネットワーク機器１４、１６、１８は、内部から外部へ及び内部から内部へのネットワークトラフィックを保護するために、ネットワークイグレスポイント（例えば、電子メールゲートウェイ１６２、ウェブゲートウェイ１６４、スイッチ１７２等）に配置することができる。ネットワーク機器は、危険なイベントを検出すると、管理者に警告できる。ネットワーク機器は、既存のインフラを利用して、機密情報がネットワークから出るのを阻止又は検疫することができる。ネットワークタップ又はトラフィックモニタリングのような受動傍受技術を用いて配置された装置のように、ネットワーク機器は、非破壊的に動作でき、アプリケーション、サーバ、ワークステーション又はネットワーク自体に如何なる変更も必要としない。ネットワーク機器は、全てのアプリケーション、プロトコル、コンテンツ種類及びトリガ施行動作を実時間で監視及び分析できる。
【００２５】
図１に示したネットワーク機器３０内のデータ保護マネジャ３２は、登録システム２２及び全ての検出システム２４、２６、２８を複数のネットワーク機器に渡って管理するための集中インタフェースを提供できるので、データ組合せ保護システム１０の管理を容易にするよう設計されても良い。データ保護マネジャ３２は、登録システム２２及び検出システム２４、２６、２８から生じたデータを集中的に管理し、分散登録及び検出システム間のデータフローを調整するよう構成されても良く、図１に示すように種々のネットワーク機器内に存在し得る。特に、一実施形態は、登録システム２２により作成された登録リスト及び該登録リストへのインデックスを有する。これらは、データ保護マネジャ３２により各分散検出システム２４、２６、２８に分配され得る。
【００２６】
データ保護マネジャ３２は、認可されたセキュリティ専門家（例えば、ＩＴアドミニストレータ、ネットワークオペレータ等）が、どのデータベース若しくは他のレポジトリ登録システム２２がデータ入力のためにクロールするかを含め、どんなデータ入力が登録システム２２に供給されるかを決定できるよう、個々の検出システムに関連する施行若しくは監視状態を指定できるよう、及び誰が対応する所見にアクセス出来るかを指定できるよう、構成されても良い。施行動作は、適切な管理者に警告し、施行装置に疑わしいトラフィックを阻止又は検疫するよう指示し、及び／又はトラフィックについて報告することを含み得る。監視動作は、阻止又は検疫動作を有しないで、適切な管理者に警告し、及び／又は疑わしいトラフィックについて報告することを含み得る。
【００２７】
データ保護マネジャ３２は、集中クエリメカニズムを提供し、組織が複数の分散ネットワーク機器に含まれるデータベースを同時にキャプチャすることを通じて迅速に検索できるようにしても良い。管理者に、ネットワーク機器が配置されているネットワーク内のポイントを通じてキャプチャされた全ての履歴データに渡る統一ビューを可能にすることにより、組織は、法的分析を迅速に実行でき、調査を行い、キャプチャされたデータを利用して、機密情報を保護し又は新たに生じる脅威を処理するためにセキュリティ状態を更新できる。さらに、データ保護マネジャは、統一されたレポート及び診断情報を提供しても良い。
【００２８】
１又は複数のテーブル及びリストは、これらのネットワーク機器に含まれても良い。幾つかの実施形態では、これらのテーブル及びリストは、これらの要素に外部から供給されるか、又は任意の適切な方法で統合されても良い。テーブル及びリストは、それらの対応するネットワーク機器により参照される情報を格納するメモリ要素である。本願明細書で用いられるように、用語「テーブル」及び「リスト」は、本願明細書で詳細に説明される動作に関連する情報を維持できる（適切な形式で提供される）任意の適切なデータベース又は記憶媒体を包含する。例えば、テーブル及びリストは、電子レジスタ、ダイアグラム、レコード、インデックス又はキューに情報を格納しても良い。テーブル及びリストは、必要に応じて及び特定の必要性に基づき、このような情報を任意の適切なＲＡＭ（random  access  memory）、ＲＯＭ（read  only  memory）、ＥＰＲＯＭ（erasable  programmable  ROM）、ＥＥＰＲＯＭ（electronically  erasable  PROM）、ＡＳＩＣ（application  specific  integrated  circuit）、ソフトウェア、ハードウェア又は任意の他の適切なコンポーネント、装置、要素若しくはオブジェクト内に保持しても良い。
【００２９】
キャプチャシステム２９は、ネットワーク機器１８のような１又は複数のネットワーク機器の一部であっても（又は１又は複数のネットワーク機器に結合されても）良く、対応するキャプチャデータベース１１８に動作可能に接続されても良い。一実施形態では、キャプチャシステム２９は、共に係属中の米国特許出願番号１２/３５８,３９９、２００９年１月２３日出願、名称「SYSTEM  AND  METHOD  FOR  INTELLIGENT  STATE  MANAGEMENT」、William  Deninger他、に示され記載されたようなキャプチャシステムであっても良い。該米国特許出願は、参照されることにより全体が本願明細書に組み込まれる。キャプチャシステム２９は、ネットワーク１００のようなネットワークを出て行く又はネットワーク１００のようなネットワークの内部で通信されているデータを傍受するよう構成されても良い。キャプチャシステム２９は、ネットワークを出て行く又は内部で通信されているオブジェクト（例えば、ファイル又は他の文書）を再構成し、再構成したオブジェクトを例えばキャプチャデータベース１１８に検索可能な方法で格納できる。
【００３０】
幾つかの実施形態では、キャプチャシステム２９は、対応するイグレスポイント（例えば、電子メールゲートウェイ１６２及びウェブゲートウェイ１６４）からデータをキャプチャするために、ネットワーク１００の他の種々の検出システム２４、２６と関連して実装されても良い。キャプチャシステム２９は、他の関連するが論理的及び／又は地理的に別個のネットワーク内の検出システムと関連して実装されても良い。これらのキャプチャシステムは、図１に示したような検出システムを有するネットワーク機器内に含まれても良く、又は別個のコンポーネントとして設けられても良い。他の実施形態では、ネットワーク１００の内部及び外部に向かうトラフィックが分析される検出システム２４、２６、２８を設けるために、任意の他の適切な形式でネットワークトラフィックの傍受が用いられても良い。
【００３１】
図１で、スイッチ１７２は、ネットワーク機器１８に接続され、ファイアウォール１７４を通じてインターネット１８０に接続される。スイッチ１７２は、ネットワークコンポーネントを相互接続可能なルータ又は他のネットワーク装置として実装され、外部へのデータストリームをインターネット１８０へ、及び外部へのデータストリームのコピーをキャプチャシステム２９へ送信できる。スイッチ１７２は、キャプチャシステム２９へ及びネットワーク１００へ入来するデータを送信しても良い。代替の実施形態では、キャプチャシステム２９、登録システム２２、検出システム２４、２６、２８、及びデータ保護マネジャ３０は、スイッチ、ルータ、ゲートウェイ、ブリッジ、負荷平衡器、サーバ、又はネットワーク環境内で情報を交換可能な任意の他の適切な装置、コンポーネント若しくは要素のような他のネットワーク装置の一部として含まれても良い。
【００３２】
分散型ネットワークとしても拡張可能なデータ組合せ保護システム１０は、ネットワークインフラの分散したネットワークセグメント（例えば、別個のアクセスポイントを有する、地理的に離散している、等）に渡りデータ漏洩を防ぐための追加の検出システムを有し得る。データ保護マネジャ３２は、ネットワーク１００の分散したセグメント内に設けられた検出システムに加えて、登録システム２２と検出システム２４、２６、２８との間のデータフローを調整し続けても良い。
【００３３】
図２を参照すると、図２は、ネットワーク機器１２、１４、１６、１８、３０又は他のコンピューティング装置のような、ネットワーク１００に接続される汎用又は特定用途コンピュータ２００の簡略ブロック図である。コンピュータ２００は、プロセッサ２２０、主記憶２３０、２次記憶装置２４０、ネットワークインタフェース２５０、ユーザインタフェース２６０及び取り外し可能なメモリインタフェース２７０のような種々のコンポーネントを有しても良い。システムバスのようなバス２１０は、プロセッサ２１０と他のコンポーネント、メモリ、コンピュータ２００のインタフェースとの間の電子通信を提供しても良い。
【００３４】
プロセッサ２２０は、中央処理装置（ＣＰＵ）としても参照され、機械可読命令を実行可能であり該機械可読命令により指示されたようにデータに対して操作を実行可能な任意の汎用又は特定用途プロセッサを有し得る。主記憶２３０は、機械命令にアクセスするためにプロセッサ２２０に直接アクセスしても良く、ＲＡＭ（random  access  memory）又は任意の種類の動的記憶装置（例えばＤＲＡＭ（dynamic  RAM））の形式であり得る。２次記憶装置２４０は、ハードディスクのような、実行可能ソフトウェアファイルを有する電子データを格納可能な任意の不揮発性メモリであり得る。外部に格納された電子データは、取り外し可能なメモリインタフェース２７０を通じてコンピュータ２００に供給されても良い。取り外し可能なメモリインタフェース２７０は、コンパクトディスク（ＣＤ）、ＤＶＤ（digital  video  disc）、フラッシュドライブ、外部ハードディスク又は任意の他の外部媒体のような任意の種類の外部メモリへの接続を表す。
【００３５】
ネットワークインタフェース２５０は、コンピュータ２００と任意のネットワーク要素（例えば、電子メールゲートウェイ１６２、ウェブゲートウェイ１６４、スイッチ１７２、データベース及びレポジトリ１１８、１１２、他のネットワーク機器、等）並びにコンピュータ２００が電子データを送受信するために接続するネットワークとの間の適切なネットワーク接続を提供する任意のＮＩＣ（network  interface  controller）であり得る。例えば、ネットワークインタフェース２５０は、Ethernet（登録商標）アダプタ、トークンリングアダプタ又は無線アダプタであり得る。ユーザインタフェース２５０は、ユーザがコンピュータ２００と、グラフィカルユーザインタフェースディスプレイを含む任意の適切な手段を介して相互作用できるように設けられても良い。さらに、キーボード、マウス、音声認識、タッチパッド、入力スクリーン等のような任意の適切な入力機構が含まれても良い。
【００３６】
図２に示さないが、プロセッサ２２０とバス２１０をメモリ管理ユニット（ＭＭＵ）、追加の対称型マルチプロセッシング（ＳＭＰ）要素、ＲＯＭ（read  only  memory）、ＥＰＲＯＭ（erasable  programmable  ROM）、ＥＥＰＲＯＭ（electronically  erasable  PROM）、ＰＣＩ（peripheral  component  interconnect）バス及び対応するブリッジ、ＳＣＳＩ（small  computer  system  interface）／ＩＤＥ（integrated  drive  electronics）要素等の形式で適切に結合できる追加ハードウェアがある。任意の適切なオペレーティングシステムも、コンピュータ２００内のハードウェアコンポーネントの動作を適切に管理するために、コンピュータ２００内に設定できる。さらに、これらのコンピュータは、その動作を実現する他の適切なハードウェア、ソフトウェア、コンポーネント、モジュール、インタフェース又はオブジェクトを有しても良い。これは、本願明細書に詳細に記載される登録及び検出動作を実現する適切なアルゴリズム及び通信プロトコルを包含し得る。
【００３７】
コンピュータ２００を参照して示され及び／又は記載されるこれらの要素は、説明を目的としており、本開示に従って用いられるネットワーク機器１２、１４、１６、１８、３０のようなコンピュータのアーキテクチャの制限を示すことを意味しない。さらに、ネットワーク機器１２、１４、１６、１８、３０を含む各コンピュータは、適切な場合及び特定の要件に基づき、より多くの又はより少ないコンポーネントを有しても良い。本願明細書で用いられるように、用語「コンピュータ」は、任意のパーソナルコンピュータ、ネットワーク機器、ルータ、スイッチ、ゲートウェイ、プロセッサ、サーバ、負荷平衡器、ファイアウォール、又はネットワーク環境内で電子情報に影響を与える又は電子情報を処理するよう動作する任意の他の適切な装置、コンポーネント、要素若しくはオブジェクトを包含することを意味する。
【００３８】
＜登録システム＞
図３を参照すると、登録システム３００の一実施形態の概略ブロック図が示される。登録システム３００は、登録リストモジュール３１０及びインデックステーブル３２０を有する。登録リストモジュール３１０への入力は、デリミタデータファイル３３０及び正規表現テーブル３５０を有し、登録リストモジュール３１０への出力は、登録リスト３６０を有し得る。一実施形態では、デリミタデータファイル３３０は、種々のデータベースに対して生成された複数のデリミタデータファイル、及び／又は登録リストモジュール３１０への入力として供給されるネットワーク内のファイルを表し得る。これらのデリミタデータファイルは、登録システム３００により登録されるべき特定の組合せ又はデータ要素セットを有する。
【００３９】
登録リストモジュール３１０は、抽出３１２、トークン化３１４、タプル記憶３１６の機能を実行しても良い。一実施形態では、デリミタデータファイル３３０は、例えばキャリッジリターンのような所定の区切り文字により区切られた複数のレコードを有する。各レコードは、抽出機能３１２により抽出される１又は複数のデータ要素を有しても良い。レコード内のデータ要素セットは、安全防護対策を必要とする関連データ要素（例えば、名前、電話番号、社会保障番号、口座番号、等）の特定の組合せであり得る。レコードの各データ要素は、トークン化機能３１４によりトークン（例えば、数値表現）にトークン化される。トークンは、次に、タプル記憶機能３１６により、登録リスト３６０のタプル又はレコードに格納できる。したがって、登録リスト３６０内のタプルは、数値表現、又は保護されることが求められる関連データ要素の１つの特定の組合せ内の各データ要素のトークンを有しても良い。
【００４０】
デリミタデータファイル３３０から抽出されトークン化されたデータ要素は、複数の可能な形式（例えば、電話番号、生年月日、口座番号、等）を有し得るワード及び／又は表現素を有しても良い。参照されることにより全体が本願明細書に組み込まれている米国特許出願番号１２/３５８,３９９、２００９年１月２３日出願、名称「SYSTEM  AND  METHOD  FOR  INTELLIGENT  STATE  MANAGEMENT」に記載のように、データ要素は、データ要素の特定の文字パターンが所定の表現パターン（つまり、正規表現）と一致するか否かを決定するために、正規表現テーブル３５０と比較され得る。米国特許出願番号１２/３５８,３９９で示され記載されているように、データ組合せ保護システム１０は、正規表現テーブルを用いるよう構成され得るが、データ組合せ保護システム１０により用いられる正規表現テーブル３５０は、テーブル３５０が所定の表現パターンを有する限り、種々の他の方法で構成されても良いことが明らかである。
【００４１】
一実施形態では、正規表現テーブル３５０は、同じ概念に対する複数の表現パターンを含む多数の表現パターンを有する。例えば、電話番号の概念は、次の正規表現パターンを有し得る：「（ｎｎｎ）ｎｎｎ−ｎｎｎｎ」、「ｎｎｎ−ｎｎｎ−ｎｎｎｎ」、「ｎｎｎ．ｎｎｎ．ｎｎｎｎ」、ここで「ｎ」は０乃至９の数字を表す。同様に、異なる州は、運転免許証番号に異なる文字列及び分離記号を用いる。したがって、運転免許証の概念は、異なる州で可能な運転免許証番号を表すそれぞれユニークな文字列及び分離記号に対する正規表現パターンを含み得る。例えば、「ｄｎｎｎ−ｎｎｎｎ−ｎｎｎｎ−ｎｎ」及び「ｄｎｎｎ−ｎｎｎｎ−ｎｎｎｎ」は、ウィスコンシン州及びイリノイ州の免許証番号の表現パターンであり、ここで「ｎ」は０乃至９の数字を表し、「ｄ」はＡ乃至Ｚの文字を表す。
【００４２】
正規表現テーブル３５０内の表現パターンは、ユーザが特定の概念のための表現パターンを定めることを可能にするインタフェースを通じてユーザにより設定可能であっても良い。さらに、幾つかの表現パターンは、自動的に生成されても良く、又はデータ組合せ保護システム１０に予め設定されても良い。例えば、共通の又はよくある正規表現パターンのリストは、データ組合せ保護システム１０が販売される業界に特別に合わせられ得る正規表現テーブル３５０に予め設定され得る。
【００４３】
インデックステーブルモジュール３２０は、インデックステーブル３７０を作成するために、トークン計数動作３２２、トークンキー選択３２４、インデックス記憶３２６の機能を実行しても良い。トークン計数動作機能３２２は、登録リスト３６０内の各トークンの全ての発生を計数するために、登録リスト３６０を処理する。一時的プライムカウントテーブル３４０は、計数の合計を格納するために作成されても良い。次に、トークンキー選択機能３２４は、各タプルを処理し、プライムカウントテーブル３４０を用いて各タプルから最も少ない頻度で生じたトークンをトークンキーとして選択する。次に、各ユニークなトークンキーは、インデックステーブル３７０のインデックスに格納されても良い。したがって、インデックステーブル３７０は、複数のインデックスを含み得る。各インデックスは、ユニークなトークンキーを有し、登録リスト３６０の１又は複数のタプルと関連付けられている。
【００４４】
図４は、例示的なレコード１を有するデリミタデータファイル３３０、例示的なタプル３６２を有する登録リスト３６０、及び例示的なインデックス３７２を有するインデックステーブル３７０の例示的なファイル構造の更に詳細な図を提供する。デリミタデータファイル３３０は、データ要素種類（つまり、ワード及び表現素）の例示的な組合せを有するレコード１の可能な構成を示す詳細な第１のレコード３３２で示される。第１のレコード３３２は、登録リスト３６０のタプル３６２に対応する。ここで、第１のレコード３３２からの各ワード及び表現素は、タプル３６２内の１つのトークンに対応する。タプル３６２は、インデックステーブル３７０のインデックス３７２により登録リスト３６０内でインデックスを付される。インデックステーブル３７０は、タプル３６２の始め（つまり、トークン１）へのポインタ（つまり、オフセット４）である登録リストオフセットを有する。
【００４５】
例示的な一実施形態では、デリミタデータファイル３３０は、各レコード間に所定の区切り文字を有する複数のレコード（例えば、ＲＥＣＯＲＤ１、２、３等）を有するファイルとして構成されても良い。区切り文字は、あるレコードの終わり及び次のレコードの始めを指定するために用いられる任意のフォーマット化された文字又は他の文字であり得る。幾つかの共通の区切り文字は、キャリッジリターン、改行、セミコロン、ピリオドを含む。しかしながら、データファイルが特定の区切り文字で適切に構成される場合、任意の文字が区切り文字として指定され得る。例示的な一実施形態では、キャリッジリターンがデリミタデータファイル３３０のための区切り文字として定められる場合、各レコードは、キャリッジリターンで終了するだろう。
【００４６】
拡張された第１のレコード３３２に示されるように、各レコードは、複数のデータ要素（つまり、ワード又は表現素）を有しても良い。デリミタデータファイル３３０の各レコードに含まれるデータ要素は、少なくとも１つの分離記号（例えば、カンマ、スペース、ダッシュ、等）により分けられる。ワードは、任意の分離記号を有しない、１又は複数の連続する基本文字を有する文字列を有しても良い。表現素は、少なくとも２つのワード及びワード間に１若しくは複数の分離記号を有する文字列を有しても良い。一実施形態では、基本文字は、数字、文字言語の文字、及び／又は文字言語の音声部分を表す記号（例えば、音節を表す文字）を含む文字言語における基礎的単位を有し得る。言語の音声部分は、ワード、ワードの音節、区別できる音、句、等を有し得る。
【００４７】
分離記号は、基本文字ではなくデータファイル内のレコードの終わりを示す所定の区切り文字として認識されない任意の文字を有し得る。分離記号の例は、発音記号、ワードの仕切り、文字言語の構造及び構成を示す他の記号（例えば、ダッシュ、フォワードスラッシュ、バックスラッシュ、左括弧、右括弧、左角括弧、右角括弧、ピリオド、スペース、アットマーク、アンド記号、アスタリスク、ポンド記号、ドル記号、パーセント記号、引用符、キャリッジリターン、改行、等）を有する。幾つかのデータファイル構成では、分離記号は、データファイルの所定の区切り文字と等価な文字を有し得る。しかしながら、このようなデータファイルでは、レコード内の等価な文字は、レコードの終わりを示す所定の区切り文字と区別されなければならない。したがって、レコード内の等価な文字は、データ要素間の分離記号として又は表現素に含まれる分離記号として処理されるだろう。
【００４８】
例示的な一実施形態では、デリミタデータファイル３３０は、ＣＳＶ（comma  separated  variable）リストであり、データベース又は表形式データフォーマットを有する他のファイルのために生成されるテキストフォーマットであり得る。ＣＳＶリストは、コンマにより分離されているデータ要素を有する各レコード内に複数のデータ要素を有し得る。ＣＳＶリスト内の各レコードは、キャリッジリターン又は改行のようなレコードの終わりを示すために、所定の区切り文字として指定された文字を含む。これらの所定の区切り文字は、ＲＦＣ（Request  for  Comments）４１８０に準拠する。ＲＦＣ４１８０では、レコード内のキャリッジリターン及び改行は、引用符で囲まれるか、又はレコードの終わりを示す所定の区切り文字から区別するために適切に囲まれる。さらに、ＣＳＶリストでは、引用符も、適切に回避できる場合には、データ要素間又は表現素内で分離記号として用いられても良い（つまり、文字の引用を示す空の引用符セット）。
【００４９】
一般に、データベース又は表データフォーマットを有する他のファイルでは、各ＣＳＶレコードは、同数のデータ要素を有する。しかしながら、登録システム３００の実施形態は、各レコード内に可変数のデータ要素を有することができる。なぜなら、各レコードは、システム３００により認識される所定の区切り文字により線引きされるからである。さらに、登録システム３００は、（データ要素の所望の組合せを含む）各レコードが、データファイル３３０のために指定され登録システム３００により認識される所定の区切り文字により線引きされる限り、他のフォーマットのデリミタデータファイル３３０を有することができる。例えば、種々の分離記号（例えば、スペース、ダッシュ、等）がデータ要素を分ける自由形式のテキスト文書は、所定の区切り文字（例えば、改行、キャリッジリターン、ピリオド、等）が連続するレコードの対を分離するために用いられ且つ登録システム３００により認識されるようにデータファイルのための区切り文字として指定されている場合、デリミタデータファイルとして提供されても良い。
【００５０】
図４の例示的な第１のレコード３３２では、２個のワード、２個の表現素及び６個の連続するワードを含む１０個のデータ要素が示される。分離記号は、連続するデータ要素の各々の間に設けられ、区切り文字は、第１のレコード３３２の終わりに設けられる。登録システム３００の登録リストモジュール３１０によりデータ要素が識別され第１のレコード３３２から抽出された後、データ要素は、１つのトークンにトークン化（例えば、トークン１乃至トークン１０）され、登録リスト３６０のタプル３６２に格納されても良い。終了タグは、登録リスト３６０内のタプルの終わりを示すために設けられても良い。登録リストモジュール３１０は、デリミタデータファイル３３０の各レコードを処理し、各レコードに対応して登録リスト３６０内の分離タプルを生成できる。
【００５１】
登録リスト３６０がデリミタデータファイル３３０の各レコードに対応するタプルを有して完成すると、インデックステーブルモジュール３２０は、インデックステーブル３７０を生成するために登録リスト３６０を処理しても良い。図４に示した例では、インデックステーブルモジュール３２０は、登録リスト３６０内のタプル３６２の位置を特定するためのインデックスを提供するインデックス３７２を生成する。登録リスト３６０内の各トークンについて発生数の合計を格納するプライムカウントテーブル３４０が生成され得る。次に、タプル３６２のトークンキーが、プライムカウントテーブル３４０を検索し、タプル３６２内の他のトークンと比べて登録リスト３６０全体の中で最も少ない頻度で現れるトークンをタプル３６２から見付けることにより、計算され得る。この例示的な説明では、トークン２は、トークン１及びトークン３〜１０の発生数の合計と比べて、少ない頻度で生じている（つまり、発生数の合計が最も低い）トークンとして示される。したがって、トークン２は、トークンキーとして選択され、インデックス３７２を生成するために用いられても良い。
【００５２】
一実施形態では、インデックステーブル３７０は、ハッシュ値（例えば、トークンキー）をモジュラを有する狭い境界に押し込み境界が素数により定められる既知の技術を用いて生成できる。これは、データを終了するためにより小さいメモリ領域が割り当てられ、データが割り当てられたメモリ内で概して均一に分散される、特に大容量データの場合に有利であり得る。したがって、非常に大容量のデータが、より効率的に処理できる。インデックステーブル３７０の大きさは、例えば、システム１０のリソース供給中に認可されたユーザにより選択されたリソースに基づき、システム１０のデータ保護マネジャ３２により生成され得る。一旦メモリが割り当てられると、各インデックスは、インデックステーブルの素数の大きさ（prime  number  size）を有するトークンキーに対してモジュロ演算を実行することにより計算された値（例えば、残余）に対応するインデックステーブル３７０内のスペースに配置できる。統計的衝突が生じる場合（つまり、異なるトークンキーが、モジュロ演算から同じ結果を有する場合）、異なるトークンキーは、インデックステーブル３７０の同じスペース内にリンク及びリスト（link-listed）できる。
【００５３】
登録リストオフセットは、タプル３６２の始めを指し（例えば、オフセット４はトークン１を指している）、インデックス３７２に追加され、トークンキーと関連付けられても良い。さらに、文書識別子（文書ＩＤ、document  ID又はdocID）は、デリミタデータファイル３３０を識別でき、インデックス３７２に追加され、トークンキーと関連付けられても良い。したがって、登録リスト３６０を生成するために複数のデリミタデータファイルが用いられるとき、インデックス内の文書ＩＤフィールドは、どのデリミタデータファイルが、付随する登録リストオフセットの指すタプルに関連付けられているかを識別する。さらに、２以上のトークンキーがインデックステーブル３７０内のスペースにリンク及びリストされている場合、特定のトークンキーに対応するオフセット及び文書ＩＤは、インデックス内の該特定のトークンキーと関連付けられる。
【００５４】
インデックス３７２の＜ＮＥＸＴ＞フィールドは、インデックス３７２内の同一のトークンキーに関連付けられ得る追加の登録リストオフセット及び文書ＩＤを表す。例えば、登録リスト３６０内の第２のオフセットを有する第２のタプルは、トークン２に含まれても良い。トークン２が、第２のタプル内の他のトークンと比べて登録リスト３６０内で少ない頻度で生じる第２のタプル内のトークンである場合、第２のタプルのトークン２は、第２のタプルのトークンキーとして選択され得る。したがって、＜ＮＥＸＴ＞ポインタの後に第２の登録リストオフセット及び適切な文書ＩＤを追加することにより、同じインデックス３７２が第２のタプルを指定するために用いられ得る。
【００５５】
図５を参照すると、図５は、例示的なデータ入力及び結果として生じるプライムカウントテーブル５４０を示す簡易ブロック図である。プライムカウントテーブル５４０は、インデックステーブルモジュール３２０のトークン計数動作３２２により生成されても良い。データ要素５０１（ワード１）、データ要素５０２（ワード１）、データ要素５０３（表現素１）、及びデータ要素５０４（表現素２）は、デリミタデータファイル３３０のようなデリミタデータファイルの例示的なデータ要素を表す。これらのデータ要素は、登録リスト３６０のような登録リストの１又は複数のタプル内にトークンとして格納される。トークン計数動作機能３２２は、データ要素５０１、５０２、５０３、５０４の各々について生成されたトークンを計数し、プライムカウントテーブル５４０を生成しても良い。一実施形態では、プライムカウントテーブル５４０は、対応するトークン合計５４４を有する「ｎ」個のエントリ５４２を有しても良い。本例では、「ｎ」は素数に等しく、モジュロ演算は、どのエントリがインクリメントされるべきトークン合計に対応するかを決定するために各トークンに対して実行される。したがって、本例では、エントリ２は、データ要素５０１（ワード１）及びデータ要素５０２（ワード１）を表すトークンに対応し、したがってトークン合計２を有する。さらに、エントリ４及び７は、それぞれデータ要素５０３（表現素１）及びデータ要素５０４（表現素２）を表すトークンに対応し、それぞれトークン合計１を有する。
【００５６】
図６Ａ、６Ｂ、７を参照すると、簡易フローチャートが、登録システム３００の動作処理を説明する。図６Ａ、６Ｂは、登録システム３００の登録リストモジュール３１０の例示的な動作ステップを説明する簡易フローチャートである。図７は、登録システム３００のインデックステーブルモジュール３２０の例示的な動作ステップを説明する簡易フローチャートである。
【００５７】
図６Ａは、登録リストモジュール３１０の全体フロー６００を示し、１又は複数の区切られたデータファイルの処理、各デリミタデータファイルの各レコードの処理、及び１又は複数のデリミタデータファイルの各レコード内の各データ要素の処理を含む。フローは、図６Ａのステップ６０２で開始し、第１のデリミタデータファイルが得られる。一実施形態では、登録システム３００は、１又は複数の所望のデータベース又は他のデータファイルをクロールし、該データベース又は他のデータファイルを１又は複数のデリミタデータファイルに変換するよう構成され得る。前述のように、一例では、データベース又は他のデータファイルは、デリミタデータファイルとして供給され得るＣＳＶ（comma  separated  variable）リストに変換され得る。
【００５８】
デリミタデータファイルが得られると、ステップ６０４で、第１のレコードがフェッチされる。ステップ６０６で、フェッチされたレコード内で、第１のデータ要素の始めが識別される。ステップ６０８で、適切な抽出、トークン化、記憶動作が、現在のデータ要素に対して実行される。これは、図６Ｂを参照して更に詳細に説明される。適切な抽出、トークン化、記憶動作が現在のデータ要素に対して実行された後、フローは、決定ボックス６１０に進み、更なるデータ要素がレコード内に存在するか否かを決定する。更なるデータ要素がレコード内に存在する場合、ステップ６１２で、レコード内の次のデータ要素の始めが識別される。次に、フローはステップ６０８にループバックし、新しいデータ要素に対して抽出、トークン化、記憶を実行する。
【００５９】
再び決定ボックス６１０を参照すると、現在のデータ要素の後に所定の区切り文字がレコード内で認識された場合、もはやレコード内にデータ要素が存在しないと決定される。次に、フローは決定ボックス６１４に進み、デリミタデータファイル内に更なるレコードが存在するか否かを決定する。デリミタデータファイル内に更なるレコードが存在する場合、ステップ６１６で次のレコードがフェッチされ、フローはステップ６０６にループバックし、新しいレコード内の第１のデータ要素の始めを識別する。
【００６０】
しかしながら、デリミタデータファイル内に更なるレコードが存在しないと決定された場合、フローは決定ボックス６１８に進み、処理されるべき更なるデリミタデータファイルが存在するか否かを決定する。未だ処理されていない１又は複数のデリミタデータファイルが存在すると決定された場合、ステップ６２０で次のデリミタデータファイルが得られ、フローはステップ６０４にループバックし、第１のレコードが新しいデリミタデータファイルからフェッチされる。しかしながら、決定ボックス６１８で全てのデリミタデータファイルが既に処理されていると決定された場合、フローは終了する。
【００６１】
図６Ｂは、図６Ａのステップ６０８の全体フローを示し、デリミタデータファイルのレコードからデータ要素を抽出し、トークン化し、及び格納する例示的な動作ステップを示す。フローは、ステップ６５２で開始し、データ要素の始めで開始する文字列の文字パターンとの最長の一致を発見するために正規表現テーブル３５０が検索される。一実施形態では、正規表現テーブル３５０からの表現パターンは、一致するかどうかを決定するために、最長から最短までのサイズ順に比較される。決定ボックス６５４で、正規表現テーブル３５０からの一致が見付かったか否かについてのクエリが生成される。
【００６２】
いずれの正規表現パターンもデータ要素の始めで開始する文字列の文字パターンと一致しないと決定された場合（つまり、データ要素は、正規表現テーブル３５０内のどの正規表現パターンとも一致しない）、データ要素はワードを表し、フローはステップ６６０へ進み、データ要素（つまり、ワード）の終わりを見付ける。ワードの終わりは、データ要素の始めで開始する最後の連続する基本文字である。ステップ６６２でワードが抽出された後、フローは決定ボックス６６４へ進み、「終了ワード」か否かを決定するためにワードが評価されても良い。「終了ワード」は、管理者により決定された任意のワード、又はその他の場合に単純な文法構成ワード（例えば、and、but、or、is、the、an、a、as、等）のような終了ワードとして指定された任意のワードを含み得る。ワードが終了ワードであると決定された場合、該ワードは無視され、フローは該ワードをトークン化又は格納することなく終了する。しかしながら、ワードが終了ワードではないと決定された場合、フローはステップ６６８へ進み、ワードが語幹処理されても良い。例えば知られているPorter  Stemming  Algorithmのような語幹処理が、ワードに適用されても良く、任意のサフィックス及び／又はアッフィックスがワードの語幹から取り去られ得る。
【００６３】
必要に応じて語幹処理が実行された後、フローはステップ６７０へ進み、ワード（又は語幹処理されたワード）がトークン化される。一実施形態では、トークン化は、ワード（又は語幹処理されたワード）を３２ビット数値表現若しくはトークンに変換することを含む。ステップ６７２で、トークンは、登録リスト３６０のタプルに格納される。ここで、タプルは、データ要素が抽出されたレコードに対応する。トークンが格納された後、フローは終了し、図６Ａのステップ６１０で処理が続く。
【００６４】
［関連米国出願情報］
本願は、同一代理人に共に委任された係属中の米国特許出願番号１２/３５８,３９９、２００９年１月２３日出願、名称「SYSTEM  AND  METHOD  FOR  INTELLIGENT  STATE  MANAGEMENT」、William  Deninger他（代理人管理番号００４７９６.１０４２）に関連する。この米国出願の開示は、本願の一部と考えられ、参照することにより全体が本願に組み込まれる。
【００６５】
一実施形態では、トークンの数値表現は、ＦＩＰＳ（Federal  Information  Processing  Standards）で認可されたハッシュ関数を用いて生成される。標準的に、ハッシュ関数が低い数値強度を有し、したがってセキュアでないハッシュの場合、ハッシュを計算するために少ないコンピュータリソースしか用いられない。しかしながら、登録リスト３６０はネットワークの至る所に複数の場所に格納され、図１に示したような複数の検出システムにより繰り返し検索され得るので、ハッシュ関数にはより大きな数値強度が望ましい。したがって、トークンの生成がより多くのコンピュータリソースを必要としたとしても、個人及び他の機密情報を含むワード及び表現素のためによりセキュアなトークンを生成することが望ましい。
【００６６】
別の検討材料は、トークンに用いられる数値表現のサイズである。３２ビット数値は単独では統計的に実行可能ではない。つまり、単独の１つのワード又は表現素は、検出システムのうちの１つが、データ要素を表す１つの３２ビットトークンについて対象文書又はファイルを検索した場合、多くの偽陽性結果が生成され得る。しかしながら、レコードが一致を確認するために文書内で発見されなければならない２以上のデータ要素を含むとき、偽陽性の可能性は低減できる。レコードが、タプルに含まれ且つ一致を確認するために文書内で発見されなければならない追加トークンの各々について、偽陽性の可能性は２３２だけ低減できる。例えば、ワード対に対する偽陽性の可能性は２６４であり、３ワードでは２９６である。したがって、一実施形態では、各タプルは少なくとも２個のトークンを有する。
【００６７】
再び決定ボックス６５４を参照すると、正規表現テーブル３５０の表現パターンとデータ要素の始めで開始する文字列の文字パターンとの間で一致が見付かったと決定された場合、データ要素は、表現素を表し、一致する表現パターンと同じ長さを有する。表現素は、ステップ６５６で抽出され、ステップ６５８で正規化される。一実施形態では、表現素の正規化は、表現素からの分離記号の削除を含んでも良い。例えば、電話番号は、「ｎｎｎｎｎｎｎｎｎｎ」に正規化され得る。ここで、「ｎ」は任意の数字０乃至９を表す。他の実施形態では、正規化は、表現素の所定の規格化フォームを達成するために、分離記号及び／又は表現素の特定の基本文字を変更することを含んでも良い。例えば、全ての日付は、フォーム「ＹＹＹＹ−ＭＭ−ＤＤ」に規格化され得る。ここで「ＹＹＹＹ」は年を表し、「ＭＭ」は月を表し、「ＤＤ」は日を表す。
【００６８】
表現素が抽出され正規化されると、フローはステップ６７０へ進み、表現素がトークン化され、ステップ６７２で結果として生じたトークンが登録リスト３６０のタプルに格納される。トークンが登録リスト３６０に格納された後、フローは図６Ａのステップ６１０へ戻る。
【００６９】
図７を参照すると、図７は、インデックステーブルモジュール３２０の全体フロー７００を示し、トークンキー及び登録リスト３６０に格納されたタプルに対応する関連するオフセットを有するインデックステーブル３７０を生成する。図１に示した検出システム２４、２６、２８による処理のオーバヘッドを削減するため、各タプルは、トークンキーによりインデックスを付され得る。一実施形態では、トークンキーは、同じタプル内の他のトークンと比べて、登録リスト３６０全体の全てのタプルにおいて最も低い頻度で発生するトークンであり得る。したがって、登録リスト３６０を生成するために複数のデリミタデータファイルが用いられる場合、複数のデリミタデータファイルから生成される全てのタプルのうち最も低い頻度を有するトークンキーが選択され得る。
【００７０】
一実施形態では、トークンキーは、図３に示したプライムカウントテーブル３４０及び図５の例示的なプライムカウントテーブル５４０に更に示したようなプライムカウントテーブルを用いて決定できる。フロー７００のステップ７０２で開始すると、プライムカウントテーブル３４０は、前述のような、ハッシュ値（例えば、トークンキー）をモジュラを有する狭い境界に押し込み境界が素数により定められる既知の技術を用いて、登録リスト３６０に格納されたトークンのために生成できる。プライムカウントテーブルを用いて、数１０億個にも上る可能性のあるデータ要素を処理するために必要なコンピュータリソースを軽減できる。論理的には、３２ビットの数値表現（２３２）は、４０億個より多くの可能なトークンを表現できる。現実世界の例示的なシナリオでは、企業が３億人の個人の機密データの４個の異なるエントリを有する場合、エントリ数は１０億個を超えるだろう。各個人のエントリがインデックステーブル３７０を生成するために計数される場合、コンピュータリソースは、処理機能を適切に実行できないだろう。しかしながら、プライムカウントテーブル３４０の使用は、より小さいメモリ領域が、割り当てられ、登録リスト３６０内のト―クンを計数するために用いられ、トークンキーとして最も頻度の少ないトークンを選択することを可能にする。
【００７１】
一実施形態では、プライムカウントテーブルの大きさは、例えば、システム１０のリソース供給中に認可されたユーザにより選択されたリソースに基づき、システム１０のデータ保護マネジャ３２により生成され得る。ある例示的なシナリオでは、３億人の人々の収集した機密データを有する企業で、１億個のエントリがトークンを計数するために適切であると決定される場合、プライムカウントテーブルのサイズは、次の最も近い素数（例えば、１００，０００，００７）により定められ得る。したがって、１００，０００，００７個のエントリを有するテーブルが生成され、各エントリはゼロ値でクリアされる。
【００７２】
プライムカウントテーブルのためにメモリが割り当てられ定められると、登録リスト３６０内の各トークンは、プライムカウントテーブル３４０内のどのエントリをインクリメントすべきかを決定するために処理され得る。一実施形態では、登録リスト３６０は、最初のタプル内の最初のトークンから、最後のタプル内の最後のトークンまで、順次処理されても良い。各トークンについて、素数及び特定のトークンの数値を用いてモジュロ演算が実行され得る。モジュロ演算の残余値は、プライムカウントテーブル３４０内に置かれ、１だけインクリメントされる。２つの異なるデータ要素に対して生成されたトークンが同じ残余を生じる幾つかの統計的衝突が生じる。この場合、プライムカウントテーブル３４０内の同じエントリはインクリメントされ、したがって、１より多くのトークンに対応するエントリの数を人為的に増大させる。しかしながら、ワード数の人為的増大は、登録リスト内の最も低い頻度を有する各タプル内のトークンを決定する実行可能性を大きく低下させない。
【００７３】
ステップ７０２でプライムカウントテーブル３４０が生成された後、フローはステップ７４０へ進み、登録リスト３６０内で第１のタプルが識別される。ステップ７０６から７２２を通じ、各タプルについてトークンキーを決定しインデックステーブル３７０を生成するためのループが実行される。したがって、ループはステップ７０６で開始し、現在のタプル内のトークンのうちどのトークンが最も低い回数又は頻度を有するかを決定するために、プライムカウントテーブル３４０が検索される。ステップ７０８で、プライムカウントテーブル３４０に従って最も低い頻度を有する現在のタプルのトークンが、現在のタプルのトークンキーとして選択される。
【００７４】
現在のタプルのトークンキーを選択した後、フローはステップ７１０へ進み、インデックステーブル３７０内の全てのインデックスが、トークンキーの照合のために検索され得る。決定ボックス７１２を参照すると、現在のタプルに対して選択されたトークンキーに一致するトークンキーが見付からない場合、フローはステップ７１６へ進み、選択されたトークンキーを用いてインデックステーブル３７０内に新しいインデックスが生成される。次に、フローはステップ７１８へ進み、文書識別子及びオフセットが新しいインデックスに追加される。一実施形態では、文書ＩＤは、登録リスト３６０内の対応するタプルのヘッダ情報から得られても良い。オフセットは、登録リスト３６０内の対応するタプルへのポインタ又はインデックスであっても良い。例えば、オフセットは、対応するタプル内に現れる第１のトークンのインデックス番号であり得る。
【００７５】
決定ボックス７１２を参照すると、現在のタプルに対して選択されたトークンキーに一致するトークンキーが見付からない場合、フローはステップ７１６へ進み、選択されたトークンキーを用いてインデックステーブル３７０内に新しいインデックスが生成される。このシナリオでは、フローはステップ７１４へ進み、現在のタプル情報が既存のインデックスに追加され得る。ポインタ（例えば＜ＮＥＸＴ＞ポインタ）が既存のインデックスの終わりに追加され、文書ＩＤ及び現在のタプルに対応するオフセットが追加され得る。したがって、同じトークンキーを有する任意の数のタプルは、同じインデックスを使用できる。
【００７６】
インデックスがステップ７１８で生成され又はステップ７１４で更新された後、フローは決定ボックス７２０へ進み、現在のタプルが登録リスト３６０内の最後のタプルか否かを決定する。現在のタプルが最後のタプルではない場合、ステップ７２２で次のタプルが識別され、フローはステップ７０６に戻り、トークンキーを選択しインデックステーブル３７０を更新するために次のタプルを処理し始める。しかしながら、決定ボックス７２０で現在のタプルが登録リスト３６０内の最後のタプルであると決定された場合、全てのタプルは処理済みであり、フロー７００は終了する。
【００７７】
最低頻度のトークンをタプルのトークンキーとして選択することは、決定処理動作の間の処理効率の向上に役立つ。これは、図９〜１３を参照して更に説明される。最低頻度のトークンをインデックステーブル内でトークンキーとして用いることにより、オブジェクトが、トークン化されるときにインデックステーブル内のトークンキーと等しいデータ要素を含まない限り、登録リスト内のタプルは評価中のオブジェクトと比較される必要がない。したがって、より多くの共通に生じるトークンがトークンキーとして選択され得場合より、本実施形態ではより多くのタプルが不要な処理から除外され得る。
【００７８】
代替の実施形態は、インデックステーブルについて最低頻度のトークンを生成するために必要な処理を低減するよう実施され得る。このような実施形態はバックエンドの登録処理を低減し得るが、検出システムにより追加処理が必要であり得る。１つのこのような代替の実施形態では、異なるトークンキー選択基準（つまり、最低頻度選択基準以外）が用いられても良い。例えば、タプルからのトークンは、所定の列又はレコード内のデータ要素の位置に基づき、トークンキーとして選択され得る。結果としてインデックステーブルはより迅速に生成され得るが、特に少なくとも幾つかのトークンキーがより多くの共通に生じるデータ要素に対応する場合、より多くのタプルが検出処理中に評価され得る。しかしながら、本実施形態は、実装の特定の必要に基づき、望ましい。さらに、トークンキー選択基準はユーザにより設定可能であり、認可されたユーザが、トークンキーを選択するときに登録システム３００により使用されるべき選択基準を決定できるようにしても良い。
【００７９】
図８は、例示的なデータ要素を有するレコード８０２が登録システム３００により処理されるシナリオを示す。レコード８０２は、複数のレコードを有し得るデリミタデータファイル３３０のようなデリミタデータファイルの例示的な単一のレコードである。レコード８０２は、スペースにより分離され所定の区切り文字であるキャリッジリターンで終了するデータ要素を有する。各データ要素は、ワード又は表現素であるかどうかを決定するために評価される。ワードとして表現されるデータ要素（つまり、Carol、Deninger、１２３、Apple、Lane、Boise、ID、９９９９９）が、抽出されトークン化される。正規表現パターンと一致すると決定されたデータ要素は、抽出され正規化される。本例では、表現素の正規化は、基本的でない文字を除去することを含む。次に、正規化された表現素はト―クン化される。
【００８０】
以下の表は、データ種類、各データ種類に対応するレコード８０２の例示的なデータ要素の内容、及び各データ要素について生成されたトークンを示す。
【００８１】
【表１】
2013541792.tif 000002
登録リスト８１０のタプル８１２は、レコード８０２を登録することにより生成される。レコード８０２から生成されたトークン８０４は、登録リスト８１０のタプル８１２に起こった順番に格納されても良い。一実施形態では、タプル８１２は、デリミタデータファイルを識別する文書識別子又はレコード８０２に関連するデータ記憶（例えば、販売部の顧客レコードデータベース）を含むヘッダ情報（図示しない）を有する。また、登録リスト８１０の内の各タプルの終わりは、タプル８１２の終わりに示すようなゼロのような終了エントリにより定められ得る。さらに、オフセット８１４が、登録リスト８１０に設けられ、各オフセットは登録リスト８１０内の別個のトークンを指している。
【００８２】
インデックステーブル８２０は、登録リスト８１０に対して生成され、インデックス８２２はタプル８１２に対応している。インデックス８２２は、タプル８１２内の２番目に生じるトークンとして示されるトークンキー（５５）を含む。トークンキー（５５）は、上述のように、登録リスト８１０全体の中で最低頻度で生じるタプル８１２のトークンである場合に、選択されても良い。さらに、オフセット（１００１）がトークンキー（５５）に設けられ、タプル８１２内の最初に生じるトークン（２３）を指す。したがって、オフセット（１００１）は、タプル８１２の始めを示す。インデックス８２２は、デリミタデータファイルを示すｄｏｃＩＤ又は文書識別子又はレコード８０２と関連するデータ記憶を有しても良い。
【００８３】
＜検出システム＞
図９を参照すると、検出システム９００の一実施形態の概略ブロック図が示される。検出システム９００は、評価モジュール９１０及び検証モジュール９２０を有し得る。評価モジュール９１０への入力は、入力オブジェクト９３０、正規表現テーブル３５０、インデックステーブル３７０を有し得る。評価モジュール９１０の出力は、ビットハッシュテーブル９４０及び保留中キーリスト９５０を有し、これらは一時的であっても良い。評価モジュール９１０は、抽出９１２、トークン化９１４、ビット設定動作９１６、及び保留中キーリスト生成９１８の機能を実行しても良い。概して、評価モジュール９１０は、入力オブジェクト９３０のようなファイルを処理し、登録システム３００がデリミタデータファイル３３０のデータ要素を抽出しトークン化したのと実質的に同一の方法で、ファイルの各データ要素を抽出しトークン化する。したがって、ファイルから抽出されトークン化されたデータ要素は、デリミタデータファイル３３０から抽出されトークン化されたデータ要素と比較できる。
【００８４】
入力オブジェクト９３０は、データ要素の任意の登録された組合せ又はその所定の閾量がファイル又は文書内に存在するかどうかを決定するために分析されるべき任意の種類のデータファイル又は文書を有し得る。一実施形態では、前述のように、又は参照されることにより全体が本願明細書に組み込まれている米国特許出願番号１２/３５８,３９９に記載されているように、パケットがネットワーク１００内のキャプチャシステム２９により傍受され、オブジェクトが傍受されたパケットから再構成されるとき、入力オブジェクト９３０は、図１に示したようなキャプチャシステム２９により供給され得る。例示的な入力オブジェクトは、（Word、Excel、PowerPoint、等のような）Microsoft  Office文書、ＰＤＦ（portable  document  format）ファイル、テキストファイル、電子メールメッセージ、電子メールの添付、任意の人間言語のテキスト文書（例えば、英語テキスト、仏語テキスト、独語テキスト、スペイン語テキスト、日本語テキスト、中国語テキスト、韓国語テキスト、ロシア語テキスト、等）、等を有するが、これらに限定されない。これらの種々のオブジェクトに加えて、例えばデータベースのような記憶レポジトリは、任意の登録されたデータの組合せの存在について内容を評価するために、検出システム９００により処理されても良い。例示的な一実施形態では、ＣＳＶリストのような共通ファイルが、データベース又は他のファイルのために生成され、入力オブジェクト９３０として検出システム９００に供給され得る。
【００８５】
入力オブジェクト９３０は、任意の数の分離記号及び／又は区切り文字により分離されたワード及び／又は表現素を含み得る。一実施形態では、入力オブジェクト９３０の内容は、順次処理され得る。前述のように、及び参照されることにより全体が本願明細書に組み込まれている米国特許出願番号１２/３５８,３９９、２００９年１月２３日出願、名称「SYSTEM  AND  METHOD  FOR  INTELLIGENT  STATE  MANAGEMENT」に記載のように、入力オブジェクト９３０の各データ要素の文字パターンは、データ要素が所定の表現パターンと一致するか否かを決定するために、正規表現テーブル３５０と比較され得る。データ要素が所定の表現パターンと一致する場合、表現素全体が抽出され正規化され、トークン化機能９１４が正規化表現素に対して実行できるようにする。データ要素が所定の表現パターンと一致しない場合、データ要素は、ワードであり、トークン化機能９１４により抽出されトークン化されても良い。
【００８６】
ビット設定動作９１６及び保留中キーリスト生成９１８は、評価モジュール９１０により実行されても良い。ビット設定動作９１６は、ビットハッシュテーブル９４０内の各トークン化されたデータ要素に対応するビットを設定することにより、入力文書９３０の各トークン化されたデータ要素を示す効率的な方法を提供する。保留中キーリスト生成９１８は、入力オブジェクト９３０の各トークン化されたデータ要素をインデックステーブル３７０と比較し、インデックス内の対応するトークンキーを識別する。一実施形態では、トークンキーがトークン化されたデータ要素と等しいとき（つまり、同じ数値表現を有する）、対応するトークンキーが識別される。対応するトークンキーが識別された場合、トークン化されたデータ要素又はオブジェクトトークンは、検証モジュール９２０による更なる分析のために保留中キーリスト９５０に保存される。
【００８７】
検出システム９００の検証モジュール９２０は、登録リスト及びビットハッシュテーブルの比較９２２、並びにイベントリスト更新９２８の機能を実行しても良い。登録リスト及びビットハッシュテーブル比較９２２は、保留中キーリスト生成９５０からの保留中のキー（つまり、トークン）を処理して、インデックステーブル３７０内の対応するインデックスを見付ける。一実施形態では、保留中キーがトークンキーと等しいとき（つまり、同じ数値表現を有する）、保留中キーはインデックス内のトークンキーに対応する。次に、インデックスは、登録リスト３６０内の対応するタプルの位置を特定するために用いることができる。一実施形態では、識別されたタプル内のトークンは、識別されたタプル内の何個のトークンが入力オブジェクト９３０内に存在するかを決定するために、ビットハッシュテーブル９４０と比較され得る。入力オブジェクト９３０が、トークン化されたとき、タプルの全てのトークンに対応する又はその所定の閾量に対応するデータ要素を含む場合、イベントが有効にされる。入力オブジェクト９３０のトークン化されたデータ要素がタプル内のトークンに対応するか否かを決定するためにハッシュテーブル９４０を使用することは、図１０〜１３を参照して更に記載される。イベントリスト更新９２４は、イベントリスト９６０を更新し、入力オブジェクト９３０内で見付かった特定の登録されたデータ組合せ、特定の登録されたデータ組合せと関連する文書識別子、及び任意の他の所望の情報（例えば、日付及びタイムスタンプ、ネットワークトラフィックの送信元及び／又は宛先アドレス、ポート番号、等）を示し得る。
【００８８】
図１０を参照すると、図１０は、例示的なデータ入力及び結果として生じるビットベクトル又はビットハッシュテーブル１０４０を示す簡易ブロック図である。これらは、評価モジュール９１０のビット設定動作９１６により生成されても良い。データ要素１００１（ワード１）、データ要素１００２（ワード１）、データ要素１００３（表現素１）、及びデータ要素１００４（表現素２）は、入力オブジェクト９３０のような入力オブジェクトの例示的なデータ要素を表す。ビット位置の設定は、どの値がデフォルトかに依存して、ビットを「０」から「１」に又は「１」から「０」に変更することにより行われる。一実施形態では、ビットハッシュテーブル１０４０内の全てのビットは「０」に初期化され、同一のビット位置に対応するデータ要素が入力オブジェクト内で見付かった場合、ビットハッシュテーブル１０４０内の特定のビット位置に関連するビットは、「１」に設定され得る。
【００８９】
一実施形態では、ビット設定動作９１６は、知られている素数ハッシング技術を用いることにより、どのデータ要素がハッシュテーブル１０４０のどのビット位置に対応するかを決定できる。ビットハッシュテーブル１０４０は、ｍ個のビットを有しても良い。ここで、ｍは素数に等しい。モジュロ演算がデータ要素１００１〜１００４のうちの１つのために生成されたトークンに対して実行されるとき、モジュロ演算の結果は、トークンにより表されたデータ要素に対応するビット位置を示し得る。したがって、特定のビット位置に対応するビットは、入力オブジェクト内のデータ要素の存在を示すために設定され得る。図１０の例では、ビット位置２はデータ要素１００１（ワード１）及びデータ要素１００２（ワード１）に対応し、ビット位置５はデータ要素１００３（表現素２）に対応し、ビット位置１０はデータ要素１００４（表現素１）に対応し得る。したがって、ビット位置２、５、１０に対応する各ビットは、１に設定されても良い。
【００９０】
図１１、１２を参照すると、簡易フローチャートが、検出システム９００の動作処理を説明する。図１１は、検出システム９００の評価モジュール９１０の例示的な動作ステップを示す簡易フローチャートである。図１２は、検出システム９００の検証モジュール９２０の例示的な動作ステップを示す簡易フローチャートである。
【００９１】
図１１を参照すると、評価処理フロー１１００は、図６Ａ及び６Ｂの登録リスト処理フロー６００によりデリミタデータファイルに適用された抽出及びトークン化機能に似た、入力オブジェクト９３０に対する抽出及びトークン化機能を有しても良い。評価処理フロー１１００は、ステップ１１０２で開始し、入力オブジェクト９３０内の第１のデータ要素が識別される。ステップ１１０４で、データ要素の始めで開始する文字列の文字パターンとの最長の一致を発見するために正規表現テーブル３５０が検索される。一実施形態では、正規表現テーブル３５０からの表現パターンは、一致するかどうかを決定するために、最長から最短までのサイズ順に比較される。
【００９２】
決定ボックス１１０６で、正規表現テーブル３５０からの一致が見付かったか否かについてのクエリが生成される。いずれの正規表現パターンもデータ要素の始めで開始する文字列の文字パターンと一致しないと決定された場合（つまり、データ要素は、正規表現テーブル３５０内のどの正規表現パターンとも一致しない）、データ要素はワードを表し、フローはステップ１１１２へ進み、データ要素（つまり、ワード）の終わりを見付ける。データ要素の終わりは、ステップ１１１４で抽出され得る。ワードの終わりは、データ要素の始めで開始する最後の連続する基本文字である。ステップ１１１４でワードが抽出された後、フローは決定ボックス１１１６へ進み、前述のように、「終了ワード」か否かを決定するためにワードが評価されても良い。ワードが終了ワードであると決定された場合、該ワードは無視され、フローは決定ボックス１１２８へ進み、現在のワードが入力オブジェクト９３０内の最後のデータ要素であるか否かを決定する。現在のワードが最後のデータ要素である場合、処理は終了する。しかしながら、ワードが入力オブジェクト９３０内の最後のデータ要素ではない場合、フローはステップ１１３０へ進み、次のデータ要素の始めを見付ける。次に、フローはステップ１１０４にループバックし、新しいデータ要素に対して抽出、トークン化、記憶を実行する。
【００９３】
再び決定ボックス１１１６を参照すると、現在のワードが終了ワードではないと決定された場合、フローはステップ１１１８へ進み、ワードが語幹処理されても良い。例えば知られているPorter  Stemming  Algorithmのような語幹処理が、ワードに適用されても良く、任意のサフィックス及び／又はアッフィックスがワードの語幹から取り去られ得る。必要に応じて語幹処理が実行された後、フローはステップ１１２０へ進み、ワード（又は語幹処理されたワード）がトークン化される。一実施形態では、トークン化は、ワード（又は語幹処理されたワード）を３２ビット数値表現又はトークンに変換することを含む。これは、登録リストモジュール３１０により用いられたのと同じ技術（例えば、ＦＩＰＳ（Federal  Information  Processing  Standards）に認可されたハッシュ関数）を用いて達成される。
【００９４】
ステップ１１２０でワードに対してトークンが生成された後、ステップ１１２２で、ビットがビットハッシュテーブル９４０に設定されても良い。設定されたビットは、前述のように、ビットハッシュテーブルの素数の大きさを用いてトークンに対して実行されたモジュロ演算により決定されたビットハッシュテーブル９４０内のビット位置に対応する。ビットは、トークンにより表されたワードが入力オブジェクト９３０内で見付かったことを示すために設定される。２つの異なるデータ要素に対して生成されたトークンが同じ残余を生じる幾つかの統計的衝突が生じる。しかしながら、イベントのトリガは、単一の個々のデータ要素ではなく、データ要素の特定の組合せが文書内で発見されることを必要とするので、システムは少なくとも部分的に統計的実行可能性を維持する。さらに、テーブルが素数の大きさに十分に合わせられるとき、衝突は標準的に低頻度になる。
【００９５】
ビットハッシュテーブル９４０内で正しいビットを設定した後、フローは決定ボックス１１２４に進み、トークンが、インデックステーブル３７０のインデックスの１つの中のトークンキーに対応するか否かを決定する。トークンがインデックスの１つの中のトークンキーに対応する場合、フローはステップ１１２６に進み、トークンが保留中キーリスト９５０に保存される。トークンが保留中キーリスト９５０に保存された後、又はトークンがインデックステーブル３７０内のインデックスの如何なるトークンにも対応しない場合、フローは決定ボックス１１２８へ進み、現在のトークンに対応するデータ要素が入力オブジェクト９３０内の最後のデータ要素であるか否かを決定する。データ要素が入力オブジェクト９３０内の最後のデータ要素ではない場合、フローはステップ１１３０へ進み、次のデータ要素の始めを見付ける。次に、フローはステップ１１０４にループバックし、新しいデータ要素に対して抽出、トークン化、記憶を実行する。再び決定ボックス１１２８を参照すると、データ要素が入力オブジェクト９３０内の最後のデータ要素である場合、入力オブジェクト９３０全体が処理され、フロー１１００は終了する。
【００９６】
決定ボックス１１０６に戻ると、正規表現テーブル３５０の表現パターンとデータ要素の始めで開始する文字列の文字パターンとの間で一致が見付かったと決定された場合、データ要素は、表現素を表し、一致する表現パターンと同じ長さを有する。表現素は、ステップ１１０８で抽出され、ステップ１１１０で正規化される。一実施形態では、評価モジュール９１０により用いられる特定種類の正規化は、登録リストモジュール３１０で用いられるのと同じ種類の正規化である。前述のように、表現素の正規化は、表現素の所定の標準フォームを達成するために、表現素から任意の分離記号を除去すること、又は分離記号及び／又は表現素の特定の基本文字を変更することを含んでも良い。
【００９７】
表現素が抽出され正規化されると、フローはステップ１１２０へ進み、正規化表現素がトークン化される。ステップ１１２２で、ビットは、前述のように、ビットハッシュテーブルの素数の大きさを用いてトークンに対して実行されたモジュロ演算の結果生じた残余の値に対応して、ビットハッシュテーブル９４０内に設定されても良い。ビットハッシュテーブル９４０内で正しいビットを設定した後、フローは決定ボックス１１２４に進み、トークンが、インデックステーブル３７０のインデックスの１つの中のトークンキーに対応するか否かを決定する。トークンがインデックスの１つの中のトークンキーに対応する場合、フローはステップ１１２６に進み、トークンが保留中キーリスト９５０に保存される。トークンが保留中キーリスト９５０に保存された後、又はトークンがインデックステーブル３７０内のインデックスの如何なるトークンにも対応しない場合、フローは決定ボックス１１２８へ進み、現在のトークンに対応するデータ要素が入力オブジェクト９３０内の最後のデータ要素であるか否かを決定する。データ要素が入力オブジェクト９３０内の最後のデータ要素ではない場合、フローはステップ１１３０へ進み、次のデータ要素の始めを見付ける。次に、フローはステップ１１０４にループバックし、新しいデータ要素に対して抽出、トークン化、記憶を実行する。再び決定ボックス１１２８を参照すると、データ要素が入力オブジェクト９３０内の最後のデータ要素である場合、入力オブジェクト９３０全体が処理され、フロー１１００は終了する。
【００９８】
図１２を参照すると、図１２は、検出システム９００の検証モジュール９２０の検証処理フロー１２００の例示的な動作ステップを示す。概して、検証処理フロー１２００は、ビットハッシュテーブル９４０、保留中キーリスト９５０、登録リスト３６０及びインデックステーブル３７０を用いて、データ要素の登録された組合せ又はその所定の閾量が入力オブジェクト９３０に含まれるか否かを決定する。
【００９９】
フローはステップ１２０２で開始し、第１の保留中キーが保留中キーリスト９５０から読み出される。次に、フローはステップ１２０４へ進み、保留中キーに対応するトークンキーを有するインデックスについてインデックステーブル３７０が検索される。インデックスが見付かると、フローはステップ１２０６へ進み、インデックス内で識別された第１のタプルを見付ける。第１のタプルは、インデックス内のトークンキーにリンク付けられた第１のオフセットを用いることにより、識別できる。オフセットは、対応するタプルの始めにあるトークンの登録リスト内の位置を指しても良い。
【０１００】
ステップ１２０８で対応するタプルの第１のトークンが登録リスト３６０内で識別されると、動作ステップ１２１０乃至１２２２は、イベントが有効になるまで（つまり、登録されたデータ組合せの全てのデータ要素又はデータ要素の閾量が入力オブジェクト内に存在する）、又はイベントが有効でない限り（つまり、登録されたデータ組合せの全てのデータ要素又はデータ要素の閾量が入力オブジェクト内に見付からなかった）、タプルを処理する。決定ボックス１２１０で、トークンに対応するビットがビットハッシュテーブル９４０に設定されたか否かについてのクエリが生成される。したがって、モジュロ演算は、どのビット位置がビットハッシュテーブル９４０内でチェックされるかを決定するために、ビットハッシュテーブル９４０の素数の大きさを用いて、トークンに対して実行されても良い。適切なビット位置のビットが設定された場合、フローはステップ１２１２へ進み、データ要素カウントがインクリメントされ得る。データ要素カウントは、処理中のタプルからの、ビットハッシュテーブル９４０内で見付かった合計トークン数を示す。データ要素カウントがインクリメントされた後、又はビットがビットハッシュテーブル９４０に設定されなかった場合、フローは決定ボックス１２１４へ進み、現在のトークンがタプル内の最後のトークン化否かを決定する。現在のトークンがタプル内の最後のトークンでる場合、フローはステップ１２１６へ進み、タプル内の次のトークンを識別する。次に、フローは決定ボックス１２１０へ進み、新しいトークンに対応するビットが設定されるか否かを決定する。
【０１０１】
タプル内の各トークンが処理されると、決定ボックス１２１４で、タプル内の最後のトークンが評価されたと決定される。次に、フローは決定ボックス１２１８へ進み、データ要素カウントが所定の閾量以上か否かについてのクエリが作成される。一実施形態では、イベントは、デリミタデータファイルの単一レコードからの全てのデータ要素が入力文書内で見付かった場合、有効にされても良い。したがって、本実施形態では、所定の閾量は、レコード内のデータ要素数（つまり、対応するタプル内のトークン数）に等しい。しかしながら、他の実施形態は、単一レコードからの合計データ要素数のうちの特定の割合（例えば、５０％、７５％、等）又は特定の最小数（例えば、２、３、４、等）を用いても良い。管理上、図１に示したデータ保護マネジャ３２は、認可されたユーザが必要に応じて所定の閾量を設定できるように構成されても良い
ステップ１２１８でデータ要素カウントが所定の閾量を満たすか又は超過する場合、イベントは有効にされ、フローはステップ１２２０へ進み、タスク及びファイル情報が読み出される。例示的な一実施形態では、ファイル情報は、現在のタプルの位置を特定するために用いられるインデックス内の特定のオフセットに対応する文書ＩＤ（ｄｏｃＩＤ）から読み出されても良い。さらに、入力オブジェクト９３０に関連する他の情報（例えば、送信元及び宛先アドレスのような送信情報、送信元及びアドレスポート、日時、関連する電子メールメッセージの電子メールアドレス、文書のファイルパス、データベース、又は他の記憶レポジトリ、等）は、登録されたデータ組合せを含む特定のオブジェクトを正しく識別するために、得られても良い。さらに、入力オブジェクト９３０内で見付かったデータ要素の登録された組合せの特定のデータ要素は、格納され及び／又は再検討のために認可されたユーザに表示されても良い。
【０１０２】
有効にされたイベントに対して所望の情報の全てが読み出されると、フローはステップ１２２２へ進み、イベントはイベントリスト９６０に記録され、及び／又は読み出された情報の一部又は全てを含む適切な通知（例えば、電子メール通知、Syslog通知、状態メッセージ、等）が認可されたユーザに提供されても良い。イベントの有効化は、イベントの有効化をトリガしたオブジェクトの送信を防ぐ又はイベントの有効化をトリガしたデータベース若しくは他の記憶レポジトリをロックダウンする動作をトリガし得る。このような強制動作は、キャプチャシステム２９又はデータ送信のフローを停止するよう設計された他の既存のインフラを介して実施され得る。
【０１０３】
再び決定ボックス１２１８を参照すると、データ要素カウントが所定の閾を満たさない場合、如何なるイベントも有効化されず、ステップ１２２０及び１２２２は迂回される。現在のタプルの全てのトークンが処理され、イベントが有効化されるか又は如何なるイベントも有効化されなかった後、フローは決定ボックス１２２４へ進み、処理中のタプルがインデックス内で識別された最後のタプルか否かについての決定が行われる。現在のタプルがインデックス内の最後のタプルではない場合、インデックス内の次の＜ＮＥＸＴ＞ポインタは、登録リスト３６０内の次のタプルのオフセットを指定することにより、処理されるべき次のタプルを示す。したがって、インデックスがヌルでない＜ＮＥＸＴ＞ポインタを有する場合、フローはステップ１２２６へ進み、＜ＮＥＸＴ＞ポインタにリンク付けされたオフセットにより次のタプルが識別される。次に、フローはステップ１２０８へループバックし、次のタプルに対してイベントを有効化するか否かを決定するために、次のタプルのトークンを処理し始める。
【０１０４】
再び決定ボックス１２２４を参照すると、現在のタプルがインデックス内の最後のタプルであると決定された場合、フローは決定ボックス１２２８へ進み、保留中キーが保留中キーリスト９５０内の最後の保留中キーか否かを決定する。現在の保留中キーが保留中キーリスト９５０内の最後の保留中キーではない場合、ステップ１２４０で次の保留中キーが保留中キーリスト９５０から読み出され、フローはステップ１２０４へループバックし、新しい保留中キーに対応するトークンキーについて、インデックステーブル３７０が検索される。次に、フローは、インデックステーブル３７０の特定のインデックスにより示される各タプルについてイベントを有効化するか否かを決定するために処理を続ける。
【０１０５】
再び決定ボックス１２２８を参照すると、現在の保留中キーが保留中キーリスト９５０内の最後の保留中キーである場合、入力オブジェクト９３０内で識別された全ての保留中キーが処理済みであり、適切な場合、対応するタプルに対してイベントが有効化されている。しかしながら、次の検出システムの処理のためのメモリ割り当てを準備するために、全ての保留中キーが処理された後に実行され得る追加ステップは、図１２に図示しない。例えば＜ビットハッシュテーブル９４０内の全てのビットは、デフォルト値（例えば「０」）に設定されても良く、保留中キーリスト９５０のポインタは、リストの始めにリセットされても良い。
【０１０６】
図１３を参照すると、図１３は、例示的な入力文書１３０２が検出システム３００により処理されるシナリオを示す。データ要素の代表的な例は、入力文書１３０２に示され、省略符号により図示しない追加データ要素を示す。さらに、登録システム３００から既に生成された登録リスト１３１０及びインデックステーブル１３２０が示される。トークン化されたワード１３０４は、入力文書１３０２内に示したデータ要素の各々について生成されたオブジェクトトークンを示す。検出システム３００の評価処理中に、ビットハッシュテーブル１３５０内に示されるオブジェクトトークンの各々についてビットが設定される。さらに、各オブジェクトトークンについて、オブジェクトトークンに対応するインデックス内のトークンキーについて、インデックステーブル１３２０が検索される。図１３の例示的なデータでは、オブジェクトトークン（５５）は、トークンキー（５５）を有するインデックス内で発見され、したがって、オブジェクトトークン（５５）は保留中キーリスト１３４０に格納される。
【０１０７】
ビットハッシュテーブル１３５０及び保留中キーリスト１３４０が生成された後、保留中キーリスト１３４０内の各保留中キーは、トークンの対応するタプル又は対応するタプル内の所定の閾量のトークンがビットハッシュテーブル１３５０内に現れるかどうかを決定するために処理される。図１３の例示的なシナリオでは、保留中キーに対応するトークンキー（５５）を有するインデックスについてインデックステーブル１３２０が検索される。トークンキー（５５）を有するインデックス１３２２が見付けられ、ボックス１３０６に示すように、検証処理が実行される。インデックス１３２２のオフセット１００１は、タプル１３１２を識別するために用いられる。タプル１３１２内の各トークンは、対応するビットがビットハッシュテーブル１３５０に設定されているかどうかを決定するために分析される。本例では、タプル１３１２内の全てのトークンは、ビットハッシュテーブル１３５０内に設定されたビットにより表される。したがって、所定の閾が満たされ、イベントが有効化され、そしてボックス１３０８に示すようにイベントリストが更新されても良い。したがって、本例では、検出システム３００は、入力文書１３０２が閾量のデータ要素（つまり、タプル１３１２により表されるデータ要素）の登録された組合せを有すると決定し、その結果イベントを有効化する。
【０１０８】
上述の処理フローは例示的な実施形態を示したが、代替として他の処理フローが実施されても良い。例えば、デリミタデータファイル３３０内のレコードの各データ要素を順次処理する又は入力オブジェクト９３０の各データ要素を順次処理する代わりに、パーサは、先に参照されることにより本願明細書に組み込まれた米国特許出願番号１２/３５８,３９９に記載されたように用いられても良い。このような実施形態では、パーサは、特定のレコード又はオブジェクト内の全ての表現素を識別するために、抽出されたデータを解析（parse）し得る。表現素は、レコード又はオブジェクトに対して正規表現テーブル３５０からの表現パターンを解析することにより、識別できる。一実施形態では、表現パターンは、最長から最短へ降順で、レコード又はオブジェクト全体を通じて解析される。全ての表現素が識別されると、各ワードは、レコード又はオブジェクト内の残りのデータから抽出され得る。
【０１０９】
本願明細書に概説した登録及び検出動作を達成するソフトウェアは、種々の場所（例えば、企業のＩＴ本部、ネットワークのイグレスポイントへ分配されたネットワーク機器、等）で提供され得る。他の実施形態では、このソフトウェアは、データの特定の組合せを保護する本システムを提供するために、（例えば、別個のネットワーク、装置、サーバ等のための個々のエンドユーザライセンスを購入する状況では）ウェブサーバから受信されるか又はダウンロードされ得る。例示的なある実装では、このソフトウェアは、セキュリティ攻撃から保護されるべき（又は不要な若しくは無認可のデータ操作から保護されるべき）１又は複数のコンピュータに常駐する。
【０１１０】
種々の例では、コンピュータネットワーク環境内で特定のデータ組合せを保護するシステムのソフトウェアは、独自仕様要素（例えば、McAfee（登録商標）  Network  Data  Loss  Prevention(NDLP)ソフトウェア、McAfee（登録商標）  ePolicy  Orchestrator(ePO)ソフトウェア、等を有するネットワークセキュリティソリューションの一部として）を含み、これらの特定された要素内に（若しくは近くに）設けられ、又は任意の他の装置、サーバ、ネットワーク機器、コンソール、ファイアウォール、スイッチ、ＩＴ（information  technology）装置、分散型サーバ等に設けられ、又は（例えば、ファイアウォールと共に）補足的ソリューションとして設けられ、又はネットワーク内のどこかで供給され得る。
【０１１１】
特定の例示的な実装では、本願明細書に概説した登録及び検出動作は、ソフトウェアで実装されても良い。これは、ネットワーク機器１２、１４、１６、１８、３０（例えば、登録システム２２、検出システム２４、２６、２８、コンピュータシステム２９）内に設けられるソフトウェアを包含し得る。これらの要素及び／又はモジュールは、本願明細書で議論したような登録及び検出動作を実行するために互いに協働できる。他の実施形態では、これらの特徴は、これらの要素の外部に設けられ、他の装置に含まれ、これらの目的の機能を達成するか、又は任意の適切な方法で強化されても良い。例えば、種々の要素に関連付けられた幾つかのプロセッサは除去され又は強化され、単一プロセッサ及び単一メモリ位置が特定の動作を担うようにしても良い。一般的な意味では、図１に示した構成はその表現においてより論理的であり、一方で、物理的アーキテクチャは、種々の置換、組合せ、及び／又はこれらの要素の合成物を有しても良い。
【０１１２】
種々の実施形態では、これらの要素の全て（例えば、ネットワーク機器１２、１４、１６、１８、３０）は、本願明細書に概説したような、登録及び検出動作を達成するために、協調し、管理し又は協働するソフトウェア（又は交換ソフトウェア）を有する。これらの要素の１つ又は全部は、その動作を実現する適切なアルゴリズム、ハードウェア、ソフトウェア、コンポーネント、モジュール、インタフェース又はオブジェクトを有しても良い。ソフトウェアを含む実装では、このような構成は、非一時的媒体を含み得る１又は複数の有形媒体内にエンコードされたロジック（例えば、ＡＳＩＣ（application  specific  integrated  circuit）、ＤＳＰ（digital  signal  processor）命令、プロセッサにより実行されるソフトウェア（場合によってはオブジェクトコード及びソースコードを含む）、又は他の同様の機械等に設けられる埋め込み型ロジック）を包含し得る。
【０１１３】
上述の例の幾つかでは、１又は複数のメモリ要素（例えば、主記憶２３０、２次記憶２４０、等）は、本願明細書に記載した動作のために用いられるデータを格納できる。これは、本願明細書に記載した動作を実行するために実行されるソフトウェア、ロジック、コード又はプロセッサ命令を格納可能なメモリ要素を含む。プロセッサは、本願明細書に詳述した動作を達成するためにデータと関連付けられた任意の種類の命令を実行できる。一例では、（図２に示したような）プロセッサは、要素又はアーティクル（例えばデータ）を、有る状態若しくは物から別の状態若しくは物に変換し得る。別の例では、本願明細書に概説した動作は、固定ロジック若しくはプログラマブルロジック（例えば、プロセッサにより実行されるソフトウェア／コンピュータ命令）で実装されても良い。また、本願明細書で特定された要素は、特定種類のプログラマブルプロセッサ、プログラマブルデジタルロジック（例えば、ＦＰＧＡ（field  programmable  gate  array））、ＥＰＲＯＭ（erasable  programmable  read  only  memory）、ＥＥＰＲＯＭ（electrically  erasable  programmable  read  only  memory））、デジタルロジック、ソフトウェア、コード、電子的命令を有するＡＳＩＣ、フラッシュメモリ、光ディスク、ＣＤ−ＲＯＭ、ＤＶＤ  ＲＯＭ、磁気若しくは光カード、電子的命令を格納するのに適する他の種類の機械可読媒体、又はこれらの任意の適切な組合せであり得る。
【０１１４】
種々の実施形態では、登録及び検出システム２２、２４、２６、２８は、ネットワーク機器１２、１４、１６、１８のような独立型装置に実装されるシステムとして上述された。一実施形態では、登録及び検出システム２２、２４、２６、２８は、ソフトウェア要件に対応可能な共通に利用可能なコンピューティング機器及び記憶システムを用いて構成される機器に実装され得る。しかしながら、代替として、登録及び検出システムは、ネットワークからのデータを傍受し該データにアクセス可能な任意のコンピュータに実装され得る。例えば、登録システム２２は、図１に示したネットワーク１００のサーバに実装され得る。別の例では、検出システム１４、１６、１８は、それらの個々のゲートウェイ及びルータ／スイッチに実装され得る。
【０１１５】
本願明細書で議論した任意のメモリアイテムは、広義の用語「メモリ要素」に包含されると考えられるべきである。同様に、本願明細書に記載した可能な処理要素、モジュール及び機械のうちのいずれも、広義の用語「プロセッサ」に包含されると考えられるべきである。各コンピュータは、ネットワーク環境内でデータ又は情報を受信し、送信し、及び／又は通信する適切なインタフェースを含み得る。
【０１１６】
留意すべき事に、本願明細書で提供した多数の例では、相互作用は、２、３、４又はさらに多くのネットワーク要素の観点から記載された。しかしながら、これは、明確化及び単なる例示を目的として行われている。理解されるべきことに、システムは、任意の適切な方法で統合され得る。同様の設計選択肢に沿って、説明したコンピュータ、モジュール、コンポーネント及び図１の要素のうちのいずれも、種々の可能な構成で結合され、これらの全てが本願明細書の広範な範囲内に包含されることが明らかである。特定の例では、限られた数のネットワーク要素のみを参照することにより、所与のフローセットの１又は複数の機能を説明することが分かり易い。理解されるべきことに、図１のシステム（及びその教示）は、直ちに拡張可能であり、より多くの複雑な／高度な配置及び構成とともに多数のコンポーネントを収容できる。したがって、提供された例は、無数の他のアーキテクチャに適用可能なデータ組合せ保護システム１０の範囲を制限し又はその広範な教示を抑制すべきではない。
【０１１７】
また、重要なことに、前述の図を参照して説明した動作は、当該システムにより又は当該システム内で実行され得る可能なシナリオの一部のみを説明している。これらの動作の一部は、適切な場合、削除又は除去されても良い。或いは、これらのステップは、議論した概念の範囲から逸脱することなく大幅に修正又は変更されても良い。さらに、これらの動作のタイミングは大幅に変更されても良く、依然として本開示で教示した結果を達成する。前述の動作フローは、例示及び議論を目的として提供された。適切な配置、時間順序、及びタイミングメカニズムが議論した概念の教示から逸脱することなく提供され得るシステムにより、十分な柔軟性が提供される。
【図１】
2013541792.tif 000003
【図２】
2013541792.tif 000004
【図３】
2013541792.tif 000005
【図４】
2013541792.tif 000006
【図５】
2013541792.tif 000007
【図６Ａ】
2013541792.tif 000008
【図６Ｂ】
2013541792.tif 000009
【図７】
2013541792.tif 000010
【図８】
2013541792.tif 000011
【図９】
2013541792.tif 000012
【図１０】
2013541792.tif 000013
【図１１】
2013541792.tif 000014
【図１２】
2013541792.tif 000015
【図１３】
2013541792.tif 000016