(57)【特許請求の範囲】
【請求項１】
コンピュータにより実行されるデータを解読する方法であって、
データソースからの複数のレコードの２以上のフィールドに生じる値を読み込むこと、
複数の前記レコードのそれぞれについて、データプロセッサを用いて、前記レコードの第１フィールドの値を用いてキー値を生成して保存し、前記生成されたキー値を用いて、前記レコードの所定のフィールドのオリジナル値を置き換えるための難読化された値を、前記第１フィールドの値と同じ値を有する前記複数のレコードの難読化された値が前記生成されたキー値に依存し且つ前記それぞれのオリジナル値に決定論的に関連するように、生成し、前記第１フィールドの値と同じ値を有するレコードの前記所定のフィールドについて、難読化された値の一貫した使用を実行することであって、（i）前記所定のフィールドの前記オリジナル値と前記生成されたキー値とをインデックス値を生成する関数への入力として用いるとともに、前記インデックス値を難読化された値の所定のセットにおいて前記難読化された値をルックアップするために用いること、又は（ii）前記所定のフィールドの前記オリジナル値と、前記難読化された値を選択するために用いられる選択値を生むための決定論的な関数を用いる前記生成されたキー値と、を結合することの少なくとも１つを含む、前記生成すること、および、
データストレージシステム内の難読化された値を含むレコードを含む難読化された値のコレクションを保存すること、
を含む、データを難読化する方法。
【請求項２】
請求項１に記載の方法であって、
前記フィールドの少なくとも１つの値を特徴付ける統計を含むプロファイル情報を保存することを更に含む、データを難読化する方法。
【請求項３】
請求項２に記載の方法において、
前記難読化された値が、前記キー値および前記所定のフィールドに対して前記保存されたプロファイル情報を用いて生成される、データを難読化する方法。
【請求項４】
請求項３に記載の方法において、
前記難読化された値が、難読化されたデータのコレクションの前記所定のフィールドにおいて、前記所定のフィールドの値を特徴付ける前記保存されたプロファイル情報における統計に基づいて定められる頻度にて、生じる、データを難読化する方法。
【請求項５】
請求項１に記載の方法において、
前記所定の難読化された値のセットが、各々の難読化された値が一または複数のインデックス値に対応しているルックアップテーブルとして保存されている、データを難読化する方法。
【請求項６】
請求項１に記載の方法において、
インデックス値の範囲内の複数のインデックス値は、難読化された値の前記所定のセットにおいて同じ難読化された値に対応する、データを難読化する方法。
【請求項７】
請求項６に記載の方法において、
前記インデックス値の範囲のサイズが、前記所定のフィールドの値を特徴付ける前記保存されたプロファイル情報における前記統計に基づく、データを難読化する方法。
【請求項８】
請求項１に記載の方法において、
前記選択値が、決定論的なマッピングを用いる前記難読化された値にマップされる、データを難読化する方法。
【請求項９】
請求項１に記載の方法において、
値のドメインから前記難読化された値が選択されることになるドメインが、前記データソースからの前記レコードの前記所定のフィールドにおける前記オリジナル値の複数を含む、データを難読化する方法。
【請求項１０】
請求項９に記載の方法において、
一または複数の前記オリジナル値が、値の前記ドメインに含まれていない、データを難読化する方法。
【請求項１１】
請求項１０に記載の方法において、
前記ドメインの一または複数の前記値が、前記オリジナル値に含まれていない、データを難読化する方法。
【請求項１２】
請求項１に記載の方法において、
前記決定論的な関数が、前記キーを用いて、前記難読化された値から前記オリジナル値を復元することを暗号的に妨げる、データを難読化する方法。
【請求項１３】
請求項１に記載の方法において、
前記決定論的な関数が、前記キーの異なる値についての連続的なオリジナル値に対し、選択値の異なるシーケンスを提供する、データを難読化する方法。
【請求項１４】
請求項１３に記載の方法において、
前記キーの第１の値についての連続するオリジナル値についての選択値の第１のシーケンスが、前記キーの第２の値についての連続するオリジナル値についての選択値の第２のシーケンスから予測できない、データを難読化する方法。
【請求項１５】
請求項１に記載の方法において、
前記キー値を用いて前記レコードの前記所定のフィールドの前記オリジナル値を置き換えるための前記難読化された値を生成することが、前記選択値が有効な難読化された値に対応するか否かを判定すること、および、もし違うなら前記選択値と追加の選択値が有効な難読化された値と対応するまで前記追加の選択値を生成する前記決定論的な関数を用いる前記キーとを繰り返し組み合わせること、を含む、データを難読化する方法。
【請求項１６】
請求項１５に記載の方法において、
有効な難読化された値が所定の桁数からなる、データを難読化する方法。
【請求項１７】
請求項１に記載の方法であって、
前記データソースからの前記レコードをレコードの複数のセットに区切り、前記所定のフィールドの前記オリジナル値をレコードの異なるセットのレコードにおける前記生成された難読化された値に異なる計算リソースを用いて並行して置き換えること、を更に含む、データを難読化する方法。
【請求項１８】
請求項１に記載の方法において、
難読化されたデータの前記コレクションにおける難読化された値を含む少なくとも第１のレコードが、前記難読化された値に置き換えられてない少なくとも１つのオリジナル値を含む、データを難読化する方法。
【請求項１９】
請求項１８に記載の方法であって、
前記第１のレコードのオリジナル値が、前記オリジナル値が前記オリジナル値が生じる複数のレコードに対して同一の難読化された値と常に置き換えられるか否かに基づいて前記キー値を用いて難読化された値に置き換えられるか否かを判定すること、を更に含む、データを難読化する方法。
【請求項２０】
２以上のフィールドにおける値を有するレコードを提供するデータソースと、
データストレージシステムと、
実行環境を提供する前記データストレージシステムと接続される一または複数のプロセッサであって、前記実行環境は、
前記データソースからの複数のレコードの２以上のフィールドにおいて生じる値を読み込み、
複数の前記レコードのそれぞれについて、データプロセッサを用いて、前記レコードの第１フィールドの値を用いてキー値を生成して保存し、前記生成されたキー値を用いて、前記レコードの所定のフィールドのオリジナル値を置き換えるための難読化された値を、前記第１フィールドの値と同じ値を有する前記複数のレコードの難読化された値が前記生成されたキー値に依存し且つ前記それぞれのオリジナル値に決定論的に関連するように、生成し、前記第１フィールドの値と同じ値を有するレコードの前記所定のフィールドについて、難読化された値の一貫した使用を実行することであって、（i）前記所定のフィールドの前記オリジナル値と前記生成されたキー値とをインデックス値を生成する関数への入力として用いるとともに、前記インデックス値を難読化された値の所定のセットにおいて前記難読化された値をルックアップするために用いること、又は（ii）前記所定のフィールドの前記オリジナル値と、前記難読化された値を選択するために用いられる選択値を生むための決定論的な関数を用いる前記生成されたキー値と、を結合することの少なくとも１つを含む、前記生成すること、および、
データストレージシステム内の難読化された値を含むレコードを含む難読化された値のコレクションを保存する、ためのものである、プロセッサと、
を含む、値を難読化するシステム。
【請求項２１】
２以上のフィールドにおける値を有するレコードを提供するデータソースと、
データストレージシステムと、
前記データソースからの複数のレコードの２以上のフィールドにおいて生じる値を読み込む手段と、
複数の前記レコードのそれぞれについて、データプロセッサを用いて、前記レコードの第１フィールドの値を用いてキー値を生成し、前記生成されたキー値を用いて、前記レコードの所定のフィールドのオリジナル値を置き換えるための難読化された値を、前記第１フィールドの値と同じ値を有する前記複数のレコードの難読化された値が前記生成されたキー値に依存し且つ前記それぞれのオリジナル値に決定論的に関連するように、生成し、前記第１フィールドの値と同じ値を有するレコードの前記所定のフィールドについて、難読化された値の一貫した使用を実行する手段であって、（i）前記所定のフィールドの前記オリジナル値と前記生成されたキー値とをインデックス値を生成する関数への入力として用いるとともに、前記インデックス値を難読化された値の所定のセットにおいて前記難読化された値をルックアップするために用いること、又は（ii）前記所定のフィールドの前記オリジナル値と、前記難読化された値を選択するために用いられる選択値を生むための決定論的な関数を用いる前記生成されたキー値と、を結合することの少なくとも１つを含む、前記生成する手段と、
データストレージシステム内の難読化された値を含むレコードを含む難読化された値のコレクションを保存する手段と、
を含む、値を難読化するシステム。
【請求項２２】
データを難読化するためのコンピュータプログラムを格納するコンピュータ読み取り可能な媒体において、前記コンピュータプログラムは、
データソースからの複数のレコードの２以上のフィールドにおいて生じる値を読み込むこと、
複数の前記レコードのそれぞれについて、データプロセッサを用いて、前記レコードの第１フィールドの値を用いてキー値を生成して保存し、前記生成されたキー値を用いて、前記レコードの所定のフィールドのオリジナル値を置き換えるための難読化された値を、前記第１フィールドの値と同じ値を有する前記複数のレコードの難読化された値が前記生成されたキー値に依存し且つ前記それぞれのオリジナル値に決定論的に関連するように、生成し、前記第１フィールドの値と同じ値を有するレコードの前記所定のフィールドについて、難読化された値の一貫した使用を実行することであって、（i）前記所定のフィールドの前記オリジナル値と前記生成されたキー値とをインデックス値を生成する関数への入力として用いるとともに、前記インデックス値を難読化された値の所定のセットにおいて前記難読化された値をルックアップするために用いること、又は（ii）前記所定のフィールドの前記オリジナル値と、前記難読化された値を選択するために用いられる選択値を生むための決定論的な関数を用いる前記生成されたキー値と、を結合することの少なくとも１つを含む、前記生成すること、および、
データストレージシステム内の難読化された値を含むレコードを含む難読化された値のコレクションを保存すること、
をコンピュータに実行させる命令を含む、コンピュータ読み取り可能な媒体。
【請求項２３】
請求項１に記載の方法において、
前記決定論的な関数が、前記オリジナル値の同一の値および前記キー値に対して同一の選択値を常に生成する、データを難読化する方法。
【請求項２４】
請求項１に記載の方法において、
前記保存されたキーが、難読化された値の異なるそれぞれのコレクションための複数の難読化のセッションのうちの所定の難読化のセッションにおいてそれぞれの難読化された値に全ての前記オリジナル値を置き換えるために用いられる、データを難読化する方法。
【請求項２５】
請求項２０に記載のシステムであって、
前記フィールドの少なくとも１つの値を特徴付ける統計を含むプロファイル情報を保存することを更に含む、システム。
【請求項２６】
請求項２５に記載のシステムにおいて、
前記難読化された値が、前記キー値および前記所定のフィールドに対して前記保存されたプロファイル情報を用いて生成される、システム。
【請求項２７】
請求項２６に記載のシステムにおいて、
前記難読化された値が、難読化されたデータのコレクションの前記所定のフィールドにおいて、前記所定のフィールドの値を特徴付ける前記保存されたプロファイル情報における統計に基づいて定められる頻度にて、生じる、システム。
【請求項２８】
請求項２０に記載のシステムにおいて、
前記所定の難読化された値のセットが、各々の難読化された値が一または複数のインデックス値に対応しているルックアップテーブルとして保存されている、システム。
【請求項２９】
請求項２８に記載のシステムにおいて、
インデックス値の範囲内の複数のインデックス値は、難読化された値の前記所定のセットにおいて同じ難読化された値に対応する、システム。
【請求項３０】
請求項２９に記載のシステムにおいて、
前記インデックス値の範囲のサイズが、前記所定のフィールドの値を特徴付ける前記保存されたプロファイル情報における前記統計に基づく、システム。
【請求項３１】
請求項２０に記載のシステムにおいて、
前記選択値が、決定論的なマッピングを用いる前記難読化された値にマップされる、システム。
【請求項３２】
請求項２０に記載のシステムにおいて、
値のドメインから前記難読化された値が選択されることになるドメインが、前記データソースからの前記レコードの前記所定のフィールドにおける前記オリジナル値の複数を含む、システム。
【請求項３３】
請求項３２に記載のシステムにおいて、
一または複数の前記オリジナル値が、値の前記ドメインに含まれていない、システム。
【請求項３４】
請求項３３に記載のシステムにおいて、
前記ドメインの一または複数の前記値が、前記オリジナル値に含まれていない、システム。
【請求項３５】
請求項２０に記載のシステムにおいて、
前記決定論的な関数が、前記キーを用いて、前記難読化された値から前記オリジナル値を復元することを暗号的に妨げる、システム。
【請求項３６】
請求項２０に記載のシステムにおいて、
前記決定論的な関数が、前記キーの異なる値についての連続的なオリジナル値に対し、選択値の異なるシーケンスを提供する、システム。
【請求項３７】
請求項３６に記載のシステムにおいて、
前記キーの第１の値についての連続するオリジナル値についての選択値の第１のシーケンスが、前記キーの第２の値についての連続するオリジナル値についての選択値の第２のシーケンスから予測できない、システム。
【請求項３８】
請求項２０に記載のシステムにおいて、
前記キー値を用いて前記レコードの前記所定のフィールドの前記オリジナル値を置き換えるための前記難読化された値を生成することが、前記選択値が有効な難読化された値に対応するか否かを判定すること、および、もし違うなら前記選択値と追加の選択値が有効な難読化された値と対応するまで前記追加の選択値を生成する前記決定論的な関数を用いる前記キーとを繰り返し組み合わせること、を含む、システム。
【請求項３９】
請求項３８に記載のシステムにおいて、
有効な難読化された値が所定の桁数からなる、システム。
【請求項４０】
請求項２０に記載のシステムであって、
前記データソースからの前記レコードをレコードの複数のセットに区切り、前記所定のフィールドの前記オリジナル値をレコードの異なるセットのレコードにおける前記生成された難読化された値に異なる計算リソースを用いて並行して置き換えること、を更に含む、システム。
【請求項４１】
請求項２０に記載のシステムにおいて、
難読化されたデータの前記コレクションにおける難読化された値を含む少なくとも第１のレコードが、前記難読化された値に置き換えられてない少なくとも１つのオリジナル値を含む、システム。
【請求項４２】
請求項４１に記載のシステムであって、
前記第１のレコードのオリジナル値が、前記オリジナル値が前記オリジナル値が生じる複数のレコードに対して同一の難読化された値と常に置き換えられるか否かに基づいて前記キー値を用いて難読化された値に置き換えられるか否かを判定すること、を更に含む、システム。
【請求項４３】
請求項２０に記載のシステムにおいて、
前記決定論的な関数が、前記オリジナル値の同一の値および前記キー値に対して同一の選択値を常に生成する、システム。
【請求項４４】
請求項２０に記載のシステムにおいて、
前記保存されたキーが、難読化された値の異なるそれぞれのコレクションための複数の難読化のセッションのうちの所定の難読化のセッションにおいてそれぞれの難読化された値に全ての前記オリジナル値を置き換えるために用いられる、システム。
【請求項４５】
請求項２１に記載のシステムであって、
前記フィールドの少なくとも１つの値を特徴付ける統計を含むプロファイル情報を保存することを更に含む、システム。
【請求項４６】
請求項４５に記載のシステムにおいて、
前記難読化された値が、前記キー値および前記所定のフィールドに対して前記保存されたプロファイル情報を用いて生成される、システム。
【請求項４７】
請求項４６に記載のシステムにおいて、
前記難読化された値が、難読化されたデータのコレクションの前記所定のフィールドにおいて、前記所定のフィールドの値を特徴付ける前記保存されたプロファイル情報における統計に基づいて定められる頻度にて、生じる、システム。
【請求項４８】
請求項２１に記載のシステムにおいて、
前記所定の難読化された値のセットが、各々の難読化された値が一または複数のインデックス値に対応しているルックアップテーブルとして保存されている、システム。
【請求項４９】
請求項２１に記載のシステムにおいて、
インデックス値の範囲内の複数のインデックス値は、難読化された値の前記所定のセットにおいて同じ難読化された値に対応する、システム。
【請求項５０】
請求項４９に記載のシステムにおいて、
前記インデックス値の範囲のサイズが、前記所定のフィールドの値を特徴付ける前記保存されたプロファイル情報における前記統計に基づく、システム。
【請求項５１】
請求項２１に記載のシステムにおいて、
前記選択値が、決定論的なマッピングを用いる前記難読化された値にマップされる、システム。
【請求項５２】
請求項２１に記載のシステムにおいて、
値のドメインから前記難読化された値が選択されることになるドメインが、前記データソースからの前記レコードの前記所定のフィールドにおける前記オリジナル値の複数を含む、システム。
【請求項５３】
請求項５２に記載のシステムにおいて、
一または複数の前記オリジナル値が、値の前記ドメインに含まれていない、システム。
【請求項５４】
請求項５３に記載のシステムにおいて、
前記ドメインの一または複数の前記値が、前記オリジナル値に含まれていない、システム。
【請求項５５】
請求項２１に記載のシステムにおいて、
前記決定論的な関数が、前記キーを用いて、前記難読化された値から前記オリジナル値を復元することを暗号的に妨げる、システム。
【請求項５６】
請求項２１に記載のシステムにおいて、
前記決定論的な関数が、前記キーの異なる値についての連続的なオリジナル値に対し、選択値の異なるシーケンスを提供する、システム。
【請求項５７】
請求項５６に記載のシステムにおいて、
前記キーの第１の値についての連続するオリジナル値についての選択値の第１のシーケンスが、前記キーの第２の値についての連続するオリジナル値についての選択値の第２のシーケンスから予測できない、システム。
【請求項５８】
請求項２１に記載のシステムにおいて、
前記キー値を用いて前記レコードの前記所定のフィールドの前記オリジナル値を置き換えるための前記難読化された値を生成することが、前記選択値が有効な難読化された値に対応するか否かを判定すること、および、もし違うなら前記選択値と追加の選択値が有効な難読化された値と対応するまで前記追加の選択値を生成する前記決定論的な関数を用いる前記キーとを繰り返し組み合わせること、を含む、システム。
【請求項５９】
請求項５８に記載のシステムにおいて、
有効な難読化された値が所定の桁数からなる、システム。
【請求項６０】
請求項２１に記載のシステムであって、
前記データソースからの前記レコードをレコードの複数のセットに区切り、前記所定のフィールドの前記オリジナル値をレコードの異なるセットのレコードにおける前記生成された難読化された値に異なる計算リソースを用いて並行して置き換えること、を更に含む、システム。
【請求項６１】
請求項２１に記載のシステムにおいて、
難読化されたデータの前記コレクションにおける難読化された値を含む少なくとも第１のレコードが、前記難読化された値に置き換えられてない少なくとも１つのオリジナル値を含む、システム。
【請求項６２】
請求項６１に記載のシステムであって、
前記第１のレコードのオリジナル値が、前記オリジナル値が前記オリジナル値が生じる複数のレコードに対して同一の難読化された値と常に置き換えられるか否かに基づいて前記キー値を用いて難読化された値に置き換えられるか否かを判定すること、を更に含む、システム。
【請求項６３】
請求項２１に記載のシステムにおいて、
前記決定論的な関数が、前記オリジナル値の同一の値および前記キー値に対して同一の選択値を常に生成する、システム。
【請求項６４】
請求項２１に記載のシステムにおいて、
前記保存されたキーが、難読化された値の異なるそれぞれのコレクションための複数の難読化のセッションのうちの所定の難読化のセッションにおいてそれぞれの難読化された値に全ての前記オリジナル値を置き換えるために用いられる、システム。
【請求項６５】
請求項２２に記載のコンピュータ読み取り可能な媒体であって、
前記フィールドの少なくとも１つの値を特徴付ける統計を含むプロファイル情報を保存することを更に含む、コンピュータ読み取り可能な媒体。
【請求項６６】
請求項６５に記載のコンピュータ読み取り可能な媒体において、
前記難読化された値が、前記キー値および前記所定のフィールドに対して前記保存されたプロファイル情報を用いて生成される、コンピュータ読み取り可能な媒体。
【請求項６７】
請求項６６に記載のコンピュータ読み取り可能な媒体において、
前記難読化された値が、難読化されたデータのコレクションの前記所定のフィールドにおいて、前記所定のフィールドの値を特徴付ける前記保存されたプロファイル情報における統計に基づいて定められる頻度にて、生じる、コンピュータ読み取り可能な媒体。
【請求項６８】
請求項２２に記載のコンピュータ読み取り可能な媒体において、
前記所定の難読化された値のセットが、各々の難読化された値が一または複数のインデックス値に対応しているルックアップテーブルとして保存されている、コンピュータ読み取り可能な媒体。
【請求項６９】
請求項６８に記載のコンピュータ読み取り可能な媒体において、
インデックス値の範囲内の複数のインデックス値は、難読化された値の前記所定のセットにおいて同じ難読化された値に対応する、コンピュータ読み取り可能な媒体。
【請求項７０】
請求項６９に記載のコンピュータ読み取り可能な媒体において、
前記インデックス値の範囲のサイズが、前記所定のフィールドの値を特徴付ける前記保存されたプロファイル情報における前記統計に基づく、コンピュータ読み取り可能な媒体。
【請求項７１】
請求項２２に記載のコンピュータ読み取り可能な媒体において、
前記選択値が、決定論的なマッピングを用いる前記難読化された値にマップされる、コンピュータ読み取り可能な媒体。
【請求項７２】
請求項２２に記載のコンピュータ読み取り可能な媒体において、
値のドメインから前記難読化された値が選択されることになるドメインが、前記データソースからの前記レコードの前記所定のフィールドにおける前記オリジナル値の複数を含む、コンピュータ読み取り可能な媒体。
【請求項７３】
請求項７２に記載のコンピュータ読み取り可能な媒体において、
一または複数の前記オリジナル値が、値の前記ドメインに含まれていない、コンピュータ読み取り可能な媒体。
【請求項７４】
請求項７３に記載のコンピュータ読み取り可能な媒体において、
前記ドメインの一または複数の前記値が、前記オリジナル値に含まれていない、コンピュータ読み取り可能な媒体。
【請求項７５】
請求項２２に記載のコンピュータ読み取り可能な媒体において、
前記決定論的な関数が、前記キーを用いて、前記難読化された値から前記オリジナル値を復元することを暗号的に妨げる、コンピュータ読み取り可能な媒体。
【請求項７６】
請求項２２に記載のコンピュータ読み取り可能な媒体において、
前記決定論的な関数が、前記キーの異なる値についての連続的なオリジナル値に対し、選択値の異なるシーケンスを提供する、コンピュータ読み取り可能な媒体。
【請求項７７】
請求項７６に記載のコンピュータ読み取り可能な媒体において、
前記キーの第１の値についての連続するオリジナル値についての選択値の第１のシーケンスが、前記キーの第２の値についての連続するオリジナル値についての選択値の第２のシーケンスから予測できない、コンピュータ読み取り可能な媒体。
【請求項７８】
請求項２２に記載のコンピュータ読み取り可能な媒体において、
前記キー値を用いて前記レコードの前記所定のフィールドの前記オリジナル値を置き換えるための前記難読化された値を生成することが、前記選択値が有効な難読化された値に対応するか否かを判定すること、および、もし違うなら前記選択値と追加の選択値が有効な難読化された値と対応するまで前記追加の選択値を生成する前記決定論的な関数を用いる前記キーとを繰り返し組み合わせること、を含む、コンピュータ読み取り可能な媒体。
【請求項７９】
請求項７８に記載のコンピュータ読み取り可能な媒体において、
有効な難読化された値が所定の桁数からなる、コンピュータ読み取り可能な媒体。
【請求項８０】
請求項２２に記載のコンピュータ読み取り可能な媒体であって、
前記データソースからの前記レコードをレコードの複数のセットに区切り、前記所定のフィールドの前記オリジナル値をレコードの異なるセットのレコードにおける前記生成された難読化された値に異なる計算リソースを用いて並行して置き換えること、を更に含む、コンピュータ読み取り可能な媒体。
【請求項８１】
請求項２２に記載のコンピュータ読み取り可能な媒体において、
難読化されたデータの前記コレクションにおける難読化された値を含む少なくとも第１のレコードが、前記難読化された値に置き換えられてない少なくとも１つのオリジナル値を含む、コンピュータ読み取り可能な媒体。
【請求項８２】
請求項２２に記載のコンピュータ読み取り可能な媒体であって、
前記第１のレコードのオリジナル値が、前記オリジナル値が前記オリジナル値が生じる複数のレコードに対して同一の難読化された値と常に置き換えられるか否かに基づいて前記キー値を用いて難読化された値に置き換えられるか否かを判定すること、を更に含む、コンピュータ読み取り可能な媒体。
【請求項８３】
請求項２２に記載のコンピュータ読み取り可能な媒体において、
前記決定論的な関数が、前記オリジナル値の同一の値および前記キー値に対して同一の選択値を常に生成する、コンピュータ読み取り可能な媒体。
【請求項８４】
請求項２２に記載のコンピュータ読み取り可能な媒体において、
前記保存されたキーが、難読化された値の異なるそれぞれのコレクションための複数の難読化のセッションのうちの所定の難読化のセッションにおいてそれぞれの難読化された値に全ての前記オリジナル値を置き換えるために用いられる、コンピュータ読み取り可能な媒体。
【発明の詳細な説明】
【関連する出願の相互参照】
【０００１】
本出願は、２００９年６月１日に出願された米国出願Ｎｏ．６１／１８３，０５４、および、２００９年７月２日に出願された米国出願Ｎｏ．１２／４９７，３５４、に基づく優先権を主張するものであり、その内容はここに参照として取り込まれる。
【背景技術】
【０００２】
本記載は、難読化された値の生成に関連する。
多くの企業において、ソフトウェア開発者は、製造環境の外（例えば、実際の顧客データが処理されている環境）にて働き、セキュリティ上の理由から製造データにアクセスすることができない。しかし、彼らがアプリケーションが製造データと共に正常に動作することを確実にするため、彼らは開発の途中にて現実のテストデータを必要とする場合があり、入力製造データのセットは機密情報が残ることがないように難読化される場合があり、難読化されたデータはテストデータとして使用されるべく保存される場合がある。難読化されたデータに要求される事項は、プロジェクトおよび開発者、組織のプライバシーポリシー、および、それが用いられることになる国の法令にさえも応じて、非常に異なる。例えば、データの難読化は、名前、住所、誕生日、社会保障番号、ならびに、クレジットカード番号および銀行口座番号のような個人情報の置換または変換を含む場合がある。
【発明の概要】
【０００３】
一の態様において、一般に、データを難読化する方法は、データソースからの複数のレコードの一または複数のフィールドに生じる値を読み込むこと、キー値を保存すること、複数の前記レコードのそれぞれについて、前記レコードの所定のフィールドのオリジナル値を置き換えるための難読化された値を、前記キー値を用いて、前記難読化された値が前記キー値に依存し且つ前記オリジナル値に決定論的に関連するように、生成すること、および、データストレージシステム内の難読化された値を含むレコードを含む難読化された値の前記コレクションを保存すること、を含む。
【０００４】
いくつかの態様には、後述する特性の一または複数が含まれ得る。
【０００５】
前記方法が、前記フィールドの少なくとも１つの値を特徴付ける統計を含むプロファイル情報を保存することを更に含む。
【０００６】
前記難読化された値が、前記キー値および前記所定のフィールドに対して前記保存されたプロファイル情報を用いて生成される。
【０００７】
前記難読化された値が、難読化されたデータのコレクションの前記所定のフィールドにおいて、前記所定のフィールドの値を特徴付ける前記保存されたプロファイル情報における統計に基づいて定められる頻度にて、生じる。
【０００８】
前記難読化された値が、前記オリジナル値と前記キーとをインデックス値を生成する関数への入力として用いるとともに、前記インデックス値を難読化された値の所定のセットにおいて前記難読化された値をルックアップするために用いることにより、生成される。
【０００９】
前記所定の難読化された値のセットが、各々の難読化された値が一または複数のインデックス値に対応しているルックアップテーブルとして保存されている。
【００１０】
難読化された値の前記所定のセットにおいて同じ難読化された値に対応する範囲内の複数のインデックス値。
【００１１】
前記範囲の前記サイズが、前記所定のフィールドの値を特徴付ける前記保存されたプロファイル情報における前記統計に基づく。
【００１２】
前記レコードの所定のフィールドのオリジナル値を置き換えるために前記キー値を用いて難読化された値を生成することは、前記オリジナル値と、前記難読化された値を選択するために用いられる選択値を生むための決定論的な関数を用いる前記キーと、を結合すること、を含む。
【００１３】
前記選択値が、決定論的なマッピングを用いる前記難読化された値にマップされる。
【００１４】
値のドメインから前記難読化された値が選択されることになるドメインが、前記データソースからの前記レコードの前記所定のフィールドにおける前記オリジナル値の複数を含む。
【００１５】
一または複数の前記オリジナル値が、値の前記ドメインに含まれていない。
【００１６】
前記ドメインの一または複数の前記値が、前記オリジナル値に含まれていない。
【００１７】
前記決定論的な関数が、前記キーを用いて、前記難読化された値から前記オリジナル値を復元することを暗号的に妨げる。
【００１８】
前記決定論的な関数が、前記キーの異なる値についての連続的なオリジナル値に対し、選択値の異なるシーケンスを提供する。
【００１９】
前記キーの第１の値についての連続するオリジナル値についての選択値の第１のシーケンスが、前記キーの第２の値についての連続するオリジナル値についての選択値の第２のシーケンスから予測できない。
【００２０】
前記キー値を用いて前記レコードの前記所定のフィールドの前記オリジナル値を置き換えるための前記難読化された値を生成することが、前記選択値が有効な難読化された値に対応するか否かを判定すること、および、もし違うなら前記選択値と前記追加の選択値が有効な難読化された値と対応するまで追加の選択値を生成する前記決定論的な関数を用いる前記キーとを繰り返し組み合わせること、を含む。
【００２１】
有効な難読化された値が、所定の桁数からなる。
【００２２】
前記データソースからの前記レコードをレコードの複数のセットに区切り、前記所定のフィールドの前記オリジナル値をレコードの異なるセットのレコードにおける前記生成された難読化された値に異なる計算リソースを用いて並行して置き換えること、を更に含む
。
【００２３】
難読化されたデータの前記コレクションにおける難読化された値を含む少なくとも第１のレコードが、前記難読化された値に置き換えられてない少なくとも１つのオリジナル値を含む。
【００２４】
前記第１のレコードのオリジナル値が、前記オリジナル値が前記オリジナル値が生じる複数のレコードに対して同一の難読化された値と常に置き換えられるか否かに基づいて前記キー値を用いて難読化された値に置き換えられるか否かを判定すること、を更に含む。
【００２５】
他の態様において、一般に、値を難読化するシステムは、一または複数のフィールドにおける値を有するレコードを提供するデータソースと、データストレージシステムと、実行環境を提供する前記データストレージシステムと接続される一または複数のプロセッサであって、前記実行環境は、前記データソースからの複数のレコードの一または複数のフィールドにおいて生じる値を読み込み、キー値を保存し、複数の前記レコードのそれぞれについて、前記レコードの所定のフィールドのオリジナル値を置き換えるための難読化された値を、前記キー値を用いて、前記難読化された値が前記キー値に依存し且つ前記オリジナル値に決定論的に関連するように、生成し、および、データストレージシステム内の難読化された値を含むレコードを含む難読化された値の前記コレクションを保存する、ためのものである、プロセッサと、を含む。
【００２６】
他の態様において、一般に、値を難読化するシステムは、一または複数のフィールドにおける値を有するレコードを提供するデータソースと、データストレージシステムと、前記データソースからの複数のレコードの一または複数のフィールドにおいて生じる値を読み込む手段と、複数の前記レコードのそれぞれについて、前記レコードの所定のフィールドのオリジナル値を置き換えるための難読化された値を、前記キー値を用いて、前記難読化された値が前記キー値に依存し且つ前記オリジナル値に決定論的に関連するように、生成する手段と、データストレージシステム内の難読化された値を含むレコードを含む難読化された値の前記コレクションを保存する手段と、を含む。
【００２７】
他の態様において、一般に、コンピュータ読み取り可能な媒体は、データを難読化するためのコンピュータプログラムを格納する。前記コンピュータプログラムは、前記データソースからの複数のレコードの一または複数のフィールドにおいて生じる値を読み込むこと、キー値を保存すること、複数の前記レコードのそれぞれについて、前記レコードの所定のフィールドのオリジナル値を置き換えるための難読化された値を、前記キー値を用いて、前記難読化された値が前記キー値に依存し且つ前記オリジナル値に決定論的に関連するように、生成すること、および、データストレージシステム内の難読化された値を含むレコードを含む難読化された値の前記コレクションを保存すること、をコンピュータに実行させる命令を含む。
【００２８】
態様は、一または複数の後述される効果を有する。
【００２９】
難読化された値とオリジナルの実際の値との間に決定論的な関係が存在するので、参照完全性を難読化の行程中に保つことができ、難読化されたデータはプロダクションデータとして要求される参照完全性と同等の参照完全性を満たすことができる。難読化の処理は、難読化された値への処理が、例えば「ジョイン」処理におけるキー当たりの数値の数のような特性を保つことを確保できる。所定の難読化された値と対応するオリジナル値との間の決定論的な関係は、保存されたキー値の関数であり、他の難読化された値に依存しないので、難読化は、データセットの異なる部分にてそれら部分間の関係性を保ちながら並行して実行することができる。難読化のプロセスは、権限のない第三者が難読化されたデータをリバースエンジニアリングし、プロダクションデータからオリジナル値を取り出すことを妨げる。レコードフォーマット、可能な値の範囲、静的特性、および、難読化されたデータの一般のプロファイルは、出来る限り厳密にマッチすることができる。例えば、クレジットカード番号は検査数字を用いるので、難読化されたデータはその検査数字のために正しく計算された値を有していもよい。もしオリジナルデータが誤記および不整合を有していると、難読化されたデータは、同じまたは同様の種類の不整合をエラーハンドリングをテストするために持つことができる。名前（すなわち、姓および名）および住所のような値に対して、難読化されたデータにおける定の値の頻度は、プロダクションデータにおけるそれらの頻度を反映することができる。
【００３０】
以下、本発明の一または複数の実施形態の詳細について、図面および記述とともに説明する。本発明の他の特性、目的および利点は、同記述、同図面および請求の範囲から理解され得る。
【図面の簡単な説明】
【００３１】
【図１】グラフベース計算を実行するシステムのブロック図である。
【図２】データ難読化手順の一例のフローチャートである。
【図３】データ難読化手順のための決定論的なマッピングの概略図である。
【図４】データ難読化のデータフロー図の一例である。
【図５】ルックアップテーブルの一例である。
【図６】擬似ランダム順列の一例を有するテーブルである。
【図７】有効な難読化された値を生成する手順の一例を有するテーブルである。
【発明を実施するための形態】
【００３２】
図１を参照すると、難読化されたデータをプログラム開発のために用いるシステム１００は、ストレージデバイスまたはオンラインデータストリームへの接続（それら各々が、種々の保存形式（例えば、データベーステーブル、スプレッドシートファイル、ふらっとテキストファイル、または、メインフレームにて用いられるネイティブフォーマット）にてデータを保存し得る。）のような一または複数のデータのソースを含み得るデータソース１０２を含む。難読化されたデータを生成するための実行環境１０４は、データプロファイリングモジュール１０６およびデータ難読化モジュール１１２を含む。実行環境１０４は、好適なオペレーティングシステム（ＵＮＩＸ（登録商標）オペレーティングシステムのような）のコントロール下にある一または複数の汎用コンピュータにホストされ得る。例えば、実行環境１０８は、ローカルに（例えば、ＳＭＰコンピュータのようなマルチプロセッサシステム）、ローカルに分散されて（例えば、クラスタまたはＭＰＰｓとして結合された複数プロセッサ）、リモートに分散されて（例えば、ＬＡＮまたはＷＡＮネットワークを介して結合された複数プロセッサ）、または、それらの任意の組み合わせであるように、複数の中央演算装置（ＣＰＵｓ）を用いるコンピュータシステムのコンフィグレーションを含む複数ノード並行計算環境を含むことができる。
【００３３】
データプロファイリングモジュール１０６はデータソース１０２からデータを読み込み、データソース１０２にて生じるデータ値の種々の特性を記述したプロファイル情報を保存する。データソース１０２を提供するストレージデバイスは、実行環境１０４についてローカルであってもよく（例えば、実行環境１０４を実行しているコンピュータに接続されたストレージ媒体（例えば、ハードドライブ１０８）に保存されてもよく）、または、実行環境１０４にリモートされてもよい（例えば、リモートシステム（例えば、メインフレーム１１０）に実行環境１０４を実行しているコンピュータとローカルまたは広域データネットワークを介して通信してホストされてもよい）。
【００３４】
データ難読化モジュール１１２は、データプロファイリングモジュール１０６によって生成されるプロファイル情報を用いて実行環境１０４にアクセス可能なデータストレージシステム１１６に保存された難読化データ１１４のコレクションを生成する。データストレージシステム１１６は、開発者１２０が難読化データ１１４を用いてプログラムを開発しテスト可能な開発環境１１８にもアクセス可能である。しかし、データソース１０２内のオリジナルのプロダクションデータは、開発者１２０がアクセス不可に保つことによって安全性を保つことができる。開発環境１１８は、いくつかの実装において、頂点間の有向リンク（ワークエレメントのフローを表す。）によって接続された頂点（コンポーネントまたはデータセット）を含むデータフローグラフとしてのアプリケーションの開発のためのシステム、である。例えば、そのような環境は、米国公開２００７／００１１６６８号公報「グラフベースアプリケーションのパラメータマネージング」により詳細に記載されており、その内容は参照としてここに取り込まれる。
【００３５】
データプロファイリングモジュール１０６は、データベースシステムの異なる型を含む種々のシステムの型からデータをプロファイルすることができる。データは、それぞれのフィールド（「属性」または「コラム」とも称呼される。）の値を有するレコード（ＮＵＬＬ値を含み得る。）として整理されてもよい。プロファイル情報は、異なるフィールドについての個別のプロファイル（それらフィールドにて生じる値を記述する「フィールドプロファイル」と称呼される。）を提供するように整理できる。データソースからデータが最初に読み込まれたとき、データプロファイリングモジュール１０６は、典型的には、そのデータソースのレコードについての初期フォーマット情報から始まる（いくつかのデータソースのレコード構造が最初に知られておらず、代わりにデータソースの分析の後に決定されるいくつかの環境にも留意。）。レコードについての初期情報は、特有の値、レコードのフィールドの順序、および、ビット数によって表される値の型（例えば、文字列、符号付き／符号なし整数）を表すビット数を含むことができる。データプロファイリングモジュール１０６がデータソースからレコードを読み込んだとき、統計および所定のフィールドの値を反映する他の記述的情報（例えば、特定の値の頻度）を計算する。データプロファイリングモジュール１０６は、それら統計および特有の値をデータ難読化モジュール１１２によるアクセスに関してフィールドプロパティの型で保存する。プロファイル情報はデータソース１０２のレコードの複数のフィールドと関連付けられた情報（例えば、レコードの全ての数、有効または無効なレコードの全数）を含むことができる。例えば、データソースのフィールドをプロファイルすることについてプロセスについてのひとつの記述は、「データプロファイリング」との名称の公開（２００５／０１１２３６９号公報と、により詳細に記載されている。）、その内容は参照としてここに取り込まれる。
【００３６】
図２は、データ難読化手順２００の一例のフローチャートを表す。手順２００は、データソースからの複数のレコードの一または複数のフィールドに生じる値の読み込み（２１０）を含む。オプションとして、少なくとも一つの値を特徴付ける統計を含むプロファイル情報が保存される（例えば、詳細は後述されるように、プロファイル情報における統計に対応するインデックス値の範囲にて決定された難読化された値を伴うテーブル）。手順２００は、難読化が容易に解読されないことを確保するセキュリティを提供する暗号化技術とともに用いられキー値の保存２２０を含む。複数のレコードの各々について、手順２００は、難読化された値の生成２３０を行い、所定のフィールドのオリジナル値を、キー値を用いて、難読化された値がキー値に依存し且つ決定論的にオリジナル値に関連するように置き換える。もしも保存されたプロファイル情報が用いられると、難読化された値は、保存されたプロファイル情報に基づいて定まる頻度にて、難読化されたデータのコレクションにおいて生じる。手順２００は、レデータストレージシステムにおける難読化された値を含むレコードを含む難読化されたデータのコレクションの保存（２４０）を含む。
【００３７】
いくつかの実装において、データ難読化手順２００は、新しいソースが入手可能である毎に、または、新しいレコードが既存のソースに受け取られる毎に、繰り返される。手順は、ユーザによって呼び出し可能、または、繰り返しインターバルにて又は所定のイベントに応じて自動的に呼び出し可能である。
【００３８】
難読化へのいくつかのアプローチにおいて、他のアプローチにおいて難読化プロセスを解読し難読化された値を実際の値に戻すように照合する性能を有することは役に立つ一方、実際のプロダクションデータを難読化する性能は十分であり得る。手順２００に示されるようないくつかのアプローチにおいて、例えば、詳細は後述される保存された秘密キーおよび暗号化技術を用いて、難読化プロセスが解読されて実際の値が取得されないことを確保することは有益である。
【００３９】
難読化された値の一貫性ある割り当ては、いくつかのケースにて有益である。例えば、特定のカスタマにそれぞれが関連する異なるトランザクションに対応するレコードを含むトランザクションデータは、所定の実際のカスタマＩＤについての全てのトランザクションが同一の難読化されたカスタマＩＤに割り当てられるように、あらかじめ難読化されたカスタマＩＤに一致する必要がある。他の例において、同じ世帯からのデータベースにおけるカスタマは、同じ住所を共有し得る。それらカスタマについての難読化されたデータレコードは同じ難読化された住所を有することが望ましい。もしも難読化されたデータが人間に読まれ理解される必要があるならば、単にそれら値を任意に生成された値に置き換えるよりも、実際の値をあらかじめ定められた認識可能な値のセットから選択される値に置き換えることが望ましい。所定の値と対応する難読化された値との間の一貫性ある割り当てを確実にするための方法には、種々の方法がある。
【００４０】
一つのアプローチにおいて、所定の値がエンカウントされた初回にて、難読化された値は、あらかじめ定められたセットからランダムに選択され、その所定の値にマッピングされる。双方の値は、例えば、マッピングデータ構造において互いに関連付けられて保存される。マッピングデータ構造にすでに保存された所定の値が以降に生じると、同一の対応する難読化された値がデータ構造から検索される。
【００４１】
他のアプローチにおいて、上述した手順２００のように、既にマッピングされた実際の又は難読化された値がマッピングデータ構造に保存されることが要求されることなく、ランダムに見える決定論的なマッピングを提供するためにキーが用いられる。そして、このキー・ベースのアプローチは、いくつかのケースにおいてストレージスペースを節約し得る。例えば、キーおよび暗号化的に強力なハッシュ関数は、難読化された値を所定のセット（例えば、ルックアップテーブル）から検索するために用いることができる。また、キーおよび擬似ランダム順列アルゴリズムが、難読化された値を計算するために用いることができる。双方のケースにおいて、詳細は後述されるように、キーの使用は、対応をランダムに見せながら、所定の実際の値が常に同一の難読化された値に対応することを確実にする。
【００４２】
図３は、入力データセットからのオリジナル値のドメイン３１０と、それらオリジナル値を置き換える難読化された値のドメイン３２０と、の間の決定論的なマッピング３００を表す。キーｋは、キーストレージ３３０に保存され、参照インテグリティが保たれるべき所定の難読化のセッションにおいて、オリジナル値の全てをそれぞれの難読化された値にマッピングするべく一貫して用いられる。異なるキーは、従前のセッションと参照インテグリティを保つ必要がない別の難読化のセッションにおいて使うことができる。ドメイン３１０からのオリジナル値ｖ１およびキーｋは、組み合わせ関数３４０を用いて組み合わせられ、選択ドメイン３５０からの選択値ｘを生む。値ｖ１およびキーｋを入力として扱う数学的な関数または数式のような、値ｖ１とキーｋとを組み合わせる任意の決定論的な手法を用いることができる。組み合わせ関数３４０は、同一の値ｖ１とｋが常に同一の値ｘを生むように、決定論的である。
【００４３】
選択値ｘは、ドメイン３２０からマッピング関数３６０（例えば、ルックアップテーブルを用いた決定論的なマッピング）を用いて難読化された値ｖ２にマッピングされる。マッピング関数３６０も、所定の値ｘが常に同一の難読化された値ｖ２を生成するように、決定論的である。難読化された値のドメイン３２０は、オリジナル値のドメイン３１０のように同じ値のいくつかを含んでもよいが、ドメイン３１０の値のいくつかが可能な難読化された値としてドメイン３２０に含まれておらずドメイン３２０の値のいくつかがドメイン３１０に含まれていないように、完全にオーバーラップしなくてもよい。例えば、可能な難読化された値（例えば、アドレスフィールドの都市あるいは州、または、名前フィールドの一般名）であることは多くのオリジナル値にとって望ましいが、いくつかの機密情報（例えば、クレジットカード番号、社会保障番号、または、電話番号）は可能な難読化された値からフィルタで除去されてもよい。いくつかのケースにおいては難読化された有効な（例えば、難読化されたデータの有効性テストをサポートするために）社会保障番号を持つことは望ましく、いくつかのケースにおいては難読化された有効ではない（例えば、難読化されたデータが個人情報を漏洩するものではないことを確実にするために）社会保障番号を持つことが望ましい。
【００４４】
コンビネーション関数３４０およびマッピング関数３６０の一方または双方は、難読化プロセスを解読することを困難にし、対応する難読化された値ｖ２からオリジナル値ｖ１を復元するために暗号化技術を含むことができる。後述される暗号化ハッシュ関数およびキー付き擬似ランダム順列技術について、コンビネーション関数３４０は、難読化された値ｖ２を選択するためにテーブルのインデックスとして用いられる選択値ｘを生成するための暗号化技術を組み込んでいる。しかし、他の実装において、コンビネーション関数３４０は、選択値ｘ（難読化された値ｖ２を提供するハッシュ関数または難読化された値ｖ２をルックアップするためのインデックスのような暗号化ハッシュ関数への入力として用いられる。）を生成するために非暗号化技術（例えば、単なる連結）であり得る。他の決定論的なマッピングは、所定のオリジナル値ｖ１から必ずしも中間の選択値ｘを計算することなく直接に難読化された値ｖ２を生成してもよい。
【００４５】
いくつかの実装において、特定の値を難読化するアプローチはその値の特性に依存し得る。例えば、難読化されることになる入力データセットの所定のフィールドにおけるデータ値は、「ｌｉｍｉｔｅｄ」または「ｕｎｌｉｍｉｔｅｄ」ドメインを持つようにカテゴライズされてもよく、「ｅｖｅｎ」または「ｕｎｅｖｅｎ」ディストリビューションを持つようにカテゴライズされてもよい。キーベース難読化について、それら特性は、難読化された値がルックアップテーブルから検索されるか、擬似ランダム順列によって計算されるか、を決定するために用いることができる。キーが用いられていないくても、それら特性は、難読化されたデータにおける特定の値の頻度が実際のプロダクションデータにおけるそれらの頻度を反映するかを決定するために用いることができる。
【００４６】
所定のフィールドに表され得る可能な値の数が有効な値（例えば、数値または固定長の文字列）のあらかじめ定められたセット内の有限の数に限定されている「ｌｉｍｉｔｅｄドメインデータ」。ｌｉｍｉｔｅｄドメインデータの難読化中、難読化された値が有効な値のあらかじめ定められたセット内にあるか否かを判定するために、有効性チェックが用いられてもよい。「ｕｎｌｉｍｉｔｅｄドメインデータ」は、可能な値（例えば、任意長の値）のあらかじめ定められたセットを必ずしも持たない。Ｌｉｍｉｔｅｄドメインデータのフィールドの例は、社会保障番号（ＳＳＮ）、クレジットカード番号（ＣＣＮ）、カスタマＩＤ（Ｃｕｓｔｉｄ）、米国電話番号、および、米国郵便番号を含む。ｕｎｌｉｍｉｔｅｄドメインデータのフィールドの例は、姓、名、および、住所を含む。
【００４７】
「ｅｖｅｎディストリビューションデータ」について、異なるデータ値は、ほぼ同程度に似ていると仮定され、一般にデータベースにおいて表される個々人に固有のものであると期待される。「ｕｎｅｖｅｎディストリビューションデータ」について、異なる値は、異なる頻度にてデータセットに生じ、データベースにおいて表される異なる個人のレコードにおいて繰り返すであろう。ｕｎｅｖｅｎディストリビューションデータの難読化中、詳細は後述されるように難読化されたデータの特定の値の頻度が実際のプロダクションデータにおけるそれらの頻度に対応することを確実にするため、「頻度ルックアップ」関数を用いることができる。社会保障番号、クレジットカード番号、カスタマＩＤおよび米国電話番号といった上記列挙されたフィールドは、ｅｖｅｎディストリビューションデータ（所定のカスタマ対して固有であることを期待される。姓、名、米国郵便番号は、他のカスタマについても繰り返され得るｕｎｅｖｅｎディストリビューションデータのフィールドの例である。）のフィールドの例である。
【００４８】
ｕｎｌｉｍｉｔｅｄドメインデータまたはいくつかのｕｎｅｖｅｎディストリビューションデータについて、有効性チェックは、可能ではないか有効に実行することができない場合がある。そのようなケースにおいて、もしも妥当と思われる値が計算できないならば、ルックアップテーブルを用いることができる。例えば、妥当と思われる名前および住所のルックアップテーブルを、それらフィールドを難読化するために保存することができる。ｕｎｅｖｅｎディストリビューションデータについて、難読化された値が現実的にディストリビュートされることを確実にするために頻度ルックアップ関数を用いることができ、または、ｅｖｅｎディストリビューションであってｕｎｌｉｍｉｔｅｄドメインデータについて、難読化プロセスは値がルックアップテーブルから均一に選択されること確実にすることができる。
【００４９】
キーベース難読化は、結果がランダムに見えながら実際には繰り返し可能で予測可能な関数を構築するために暗号化技術を用いる。キーは、実際のデータの所定のセットの難読化のために選択される。もしも難読化されたデータが妥協的でさえあっても、キーなしでは実際の値は難読化されたデータから復元することはできないので、キーはプライベートに保持され、安全な方法で保存されるべきである。所定のキーは、実際の値が複数の実行のときに現れるたびに同一の難読化された値が生成されることを確実にするために、難読化プロセスの複数の実行において使うように保存することができる。キーベース難読化プロセスは、キーベース難読化は必ずしも過去に用いられた実際の値と難読化された値とのマッピングデータ構造を保持する必要がないため、複数のデータセットまたは単一のデータセットの複数の部分において並列に実行することができる。例えば、データセットのレコードは、レコードの複数のセットに区分けでき（例えば、カスタマＩＤのような所定のフィールドに基づいて）、難読化された値の生成と置換は、異なる計算リソース（例えば、異なるプロセッサまたは異なるコンピュータ）を用いてレコードの異なるセットにおいて並列に実行できる。所定のフィールドへのキーベース難読化を行うための特定の技術は、そのフィールドのデータ値の特性に依存する。
【００５０】
・Ｌｉｍｉｔｅｄドメインおよびｅｖｅｎディストリビューションのデータについて、値は、キーおよび擬似ランダム順列アルゴリズムを用いて計算される。同一のキーは、複数の実行での使用のために保存される。難読化された値の有効性は、一または複数の有効性関数を用いて確実にされる。
【００５１】
・Ｕｎｌｉｍｉｔｅｄドメインデータまたはｕｎｅｖｅｎディストリビューションデータについて、値は、キーおよび暗号化ハッシュ関数を用いてルックアップテーブルから検索される。同一のキーおよびルックアップテーブルは、複数の実行での使用のために保存される。難読化された値の有効性は、ルックアップテーブルにおける値が有効であることを確実にすることで確実にされる。
【００５２】
図４を参照すると、データフローグラフ４００の一例は、入力としてのカスタマデータセット４０２への難読化プロセスを実行する。データセット４０２のレコードは、読み込まれ、レコードのフローとしてのグラフにおける要素に提供される。難読化を実行するためにデータフローグラフを用いることにより、システム１００は、データ難読化プロセスを任意の種々の追加のデータフロー処理に結合させることができ、グラフの任意の要素の実行のために並列計算技術を用いることができる。グラフ４００は、入力ポートにて受け取った所定のレコードを所定のフィールドにおける実際の値を難読化された値に置き換えることによってリフォーマットし、出力ポートにてリフォーマットしたレコードを出力する一連の「Ｒｅｆｏｒｍａｔ」要素を含む。難読化されることになるカスタマデータセット４０２における複数のフィールド（後エバ、レコードの全てのフィールド、レコードにおけるフィールドの選択されたサブセット）のそれぞれについて、リフォーマット要素が１つある。この例において、難読化されることになる６つのフィールドがある。姓、名、住所、ＳＳＮ、ＣＣＮおよびＣｕｓｔｉｄである。要素４０４は、姓フィールドの難読化を取り扱い、要素４０６は住所フィールドの難読化を取り扱い、要素４０８は住所フィールドの難読化を取り扱い、要素４１０はＳＳＮフィールドの難読化を取り扱い、要素４１２はＣＣＮフィールドの難読化を取り扱い、そして、要素４１４はＣｕｓｔｉｄフィールドの難読化を取り扱う。要素４１４から出力される難読化されたレコードのフローは、グラフ４００の出力として保存される。グラフ４００は、詳細は後述される入力データセット４０２のあるプロパティを特徴付ける情報を保存するデータセット４１８とも関連付けられる。全てのリフォーマット要素は、グラフ４００のパラメータとして保存されている共有のキー値を用いることができる。難読化されたデータセット４１６のセキュリティは、キーパラメータを秘密に管理することに依存する。キーは、セキュリティ強化のために十分に長く（例えば、１２桁あるいは６０桁、またはそれ以上）することができる。
【００５３】
データセット４０２からの最初のレコードがある要素にて処理された後または同時に、その要素は、その要素にて取り扱われているフィールドの難読化された値を決定するためにキー無し技術、キー付きテーブルルックアップ技術、または、キー付き擬似ランダム順列技術を用いるか否かを判定する。もしもフィールドが所定のカスタマに関連付けられた異なるレコード間にて一貫して割り当てされる必要がない値（例えば、トランザクション量）を有しており、それが特に機密でなければ、レコードのフィールドの値は、保存されたキー値によらない技術を用いて難読化することができる。例えば、要素は、ランダム値生成関数を用いることができる。もしもフィールドが所定のカスタマに関連付けられた異なるレコード間にて一貫して割り当てられるべき値、および／または、特定のディストリビューション、ドメインまたは有効性テストと対応するべき値、を有しているなら、保存されたキーは、キー付きテーブルルックアップ技術またはキー付き擬似ランダム順列技術の一方を実行するために用いることができる。
【００５４】
もしもフィールドがｕｎｌｉｍｉｔｅｄドメインまたはｕｎｅｖｅｎディストリビューションな値を有しているなら、要素は、暗号化ハッシュに基づくキー付きテーブルルックアップ技術を用いる。暗号化ハッシュ関数は、インデックス値を計算するために保存されたキー値を用い、インデックス値は可能な難読化された値のテーブルから値をルックアップするために用いられる。暗号化ハッシュはランダムに見える値を生成するので、インデックス（よって、難読化された値）は、ランダムに選択されたように見える。しかし、インデックスは、キー値が知られていれば実際には予測可能であり繰り返し可能である。もしもフィールド値がｕｎｅｖｅｎディストリビューションを有しているなら、要素は、データセット４１８の一つからのフィールドについての頻度プロファイル情報を用いる「頻度ルックアップ」処理を用いる。
【００５５】
例えば、姓、名、住所および米国郵便番号のようなフィールドについて、データセット４１８は、「頻度」データセットおよび「頻度最大」データセットをそれぞれのフィールドについて含む。頻度最大データセットは、実際の値の所定のフィールドに生じる全ての値の全体のカウントを含み、所定のフィールドについての全体のカウントをルックアップするための頻度ルックアップ処理を可能にする。そのため、各々の頻度最大データセットは、信号全体カウント値を含む。各々の頻度データセットは、オーバーラップしない範囲にてインデックスされたルックアップテーブルを含み、「インターバルルックアップ」関数を用いて所定のインデックス値についての所定のフィールドをルックアップする頻度ルックアップ処理を可能にする。異なるインデックス値が選択されたとき、フィールド値は、実際のデータにおいて生じる頻度に基づいた適切な頻度に選択される。
【００５６】
例えば、図５は、姓フィールドについての頻度データセットのルックアップテーブルの例を示す。名前「Ｎｏｒｔｏｎ」が０〜２の範囲におけるインデックス値について選択され、名前「Ｌｅｅ」が３〜１０の範囲におけるインデックス値について選択され、名前「Ｂｕｔｌｅｒ」が１１のインデックス値について選択されている。範囲のサイズは、プロファイル情報の統計に係る実際のデータにおいて現れる対応する値の頻度に比例する。そのため、もしもインデックス値が等しい可能性にて生じるなら、Ｎａｍｅ値のそれぞれは実際のデータにて生じるのと同一の頻度にて生じることになる。
【００５７】
もしもフィールドがＬｉｍｉｔｅｄドメインおよびｅｖｅｎディストリビューションである値を有してるなら、要素は、擬似ランダム数の生成（例えば、Ｌｕｂｙ−Ｒａｃｋｏｆｆ擬似ランダム順列ジェネレータ）に基づくキー付き擬似ランダム順列技術を用いる。いくつかの実装において、範囲１，・・・，Ｎ（例えば、社会保障番号あたはクレジットカード番号のようなオリジナル値についてのｌｉｍｉｔｅｄドメインに対応する範囲の数）の所定のキーおよび入力値について、順列ジェネレータ関数ｆ（ｋ，ｎ）が、ランダムに見える方法における実際の値に関連する難読化された値を生成するために用いられる。例えば、ｎ個の異なる値は、１〜Ｎの間の整数であるｆ（ｋ，ｎ）個の異なる値を生成する。ｎとｆ（ｋ，ｎ）との関係は決定論的であるが、ランダムに見える（例えば、ｎ個の連続した値は、ランダムに分散したように見えるｆ（ｋ，ｎ）個の値を生む。）。値ｋは、ｋ個の異なる値についてのｆ（ｋ，ｎ）に対してｎ個の異なるシーケンスを提供するキー値である。キーｋの所定の値について、ある値ｋについてｎ個の連続する値についてのｆ（ｋ，ｎ）の値の最終的なシーケンスは、別の値ｋについてｎ個の連続する値についてのｆ（ｋ，ｎ）の値のシーケンスからは予測できない。
【００５８】
図６に示されるテーブルは、順列ジェネレータが、ｆ（ｋ，ｎ）の可能な値を、１から２０までの間の一連の値ｎと単一のキー値について１から２０の間にて「シャッフル」することができる一例を示す。この例において、１つのシャッフルされた値ｆ（ｋ，ｎ）は、ｎ個の各々の入力値にマッピングされる。入力値とキーとの組み合わせはシャッフルされた値ｆ（ｋ，ｎ）に応じて選択されるので、２つの難読化された値が同一とはならない。図６に示される例は、単純化のために２０個のシャッフルされた値を示しているが、より大きいシーケンスを生成することもできる。
【００５９】
以下の例は、図４のデータフローグラフにおけるリフォーマット要素のそれぞれの実装について述べるものである。
【００６０】
名フィールドの値を難読化する要素４０４は、ｋｅｙｅｄ＿ｐｉｃｋ関数を外見上はランダムなインデックスを姓のインターバルルックアップテーブル内に生成するために用いることができる。異なるカスタマの実際の姓が同一であっても異なる難読化された姓を得ることを確実にするために、Ｃｕｓｔｉｄフィールドをｋｅｙｅｄ＿ｐｉｃｋに渡されるキー値の計算にて用いることができる。これをインターバルルックアップと組み合わせて行うことは、姓の分散統計を保つことができる。この例において、実際のデータにおいて同じ姓を持つ家族のメンバーは、難読化されたデータにおいては異なる姓を割り当てられてもよい。
【００６１】
姓フィールドの値を難読化する要素４０６は、要素４０４と同様に実装できる。ｋｅｙｅｄ＿ｐｉｃｋ関数は、もしもカスタマが男性または女性であるかを特定するフィールドが実際のデータに存在すれば、男性と女性との名を区別することができる。代わりに、その関数は、例えば、追加のルックアップテーブルを用いて「良い推測」を行うことができる。
【００６２】
住所フィールドの値を難読化する要素４０８は、外見上はランダムなインデックスを２つのインターバルルックアップテーブル（１つは郵便番号、都市、および州を格納し、１つは家番号および通りの名前）内に生成するｋｅｙｅｄ＿ｐｉｃｋ関数を用いる。インデックスは、キーが知られていれば予測し得る。より機密な情報を引き出すことをより困難にするためには、要素は、郵便番号と通りの名前とを別々に選択することができ、１６００  Ｐｅｎｎｓｙｌｖａｎｉａ  Ａｖｅｎｕｅ，Ｌｅｘｉｎｇｔｏｎ，ＭＡ  ０２４２１のような実在しない住所を構築してもよい。代わりに、住所が有効であるべきアプリケーションについて、要素は、通りの名前および郵便番号を同時に選択するように構成することができる。家番号が所定の通りに対して非現実的に大きくならないことを確実にするため、要素は、選択される可能な値の制限を設定することができる。
【００６３】
ＳＳＮフィールドを難読化する要素４１０は、擬似ランダム順列技術を用いて、有効なＳＳＮに対応する１つの値が見つかるまでの擬似ランダムな９桁の番号を選択する。要素４１０は、各々の難読化された値が固有であることを図７に示される技術を用いて確実にすることもできる。単純化のため、図７における値は、古い番号は９桁であって有効なＳＳＮではないが、有効なＳＳＮを表すと仮定する。上述したように、擬似ランダム順列技術は、順列ジェネレータ関数を用いて所定のフィールドについて可能な値を「シャッフル」することができる。図７に示される最初の２列は、どのようにＳＳＮがシャッフルされ得るかを表す。三列目は、有効なＳＳＮが出力されることを確実にするために必要な回数だけＳＳＮを検証する呼び出し関数の結果を表す。
【００６４】
テーブルにおける矢印は、ステップの手順を表す。
【００６５】
ａ．各々の入力ＳＳＮについて（第１行に表示）、ｅｎｃｏｄｅ＿ｓｓｎ関数は、第２行の同じ列におけるシャッフルされた値を割り当てる。
【００６６】
ｂ．もしも第２行の選択された値がｅｖｅｎ（有効）であれば、難読化された値として、有効な出力値（第３行に表示）に書き出されてもよい。もしも第２行の選択された値がｏｄｄ（無効）であれば、関数は、第１行に戻り、選択された番号を見つけ、第２行の列の値が通行であるか否かをチェックする。
【００６７】
ｃ．この手順は、有効な番号が見つかるまで繰り返される。第２行の各番号は第１行の１つの番号だけによって到達することができるので（つまり、第１行から第２行へのマッピングは一対一であるので）、第３行における各々の有効な難読化された値は固有の値である。例えば、２〜４を含む入力フィールドのそれぞれについて、要素４１０は、有効な出力値を見つけるために図７のテーブルの上部に示される順序を横断する。最初の手順は、図７のテーブルにおける矢印を用いて表されている。
【００６８】
ＣＣＮフィールドの値を難読化する要素４１２は、ＣＣＮが４から始まる１６桁の数字であって他の桁または桁の並びを用いることができるという有効性の基準に基づく。最初の６桁は、発行者を特定するのに十分であり得る。最後の桁は、それより前の桁におけるエラーをチェックするためのコントロール番号（例えば、Ｌｕｈｎアルゴリズムを用いて計算された）である。要素４１２は、擬似ランダム順列技術を用いて、擬似ランダムな１５桁の数字を有効である数字を見つけるまで選択し、コントロール桁を計算する。要素４１４は、ある数字が有効なＣＣＮであるかを長さとコントロール桁とをチェックすることによって検証する有効性チェック関数を提供する。
【００６９】
Ｃｕｓｔｉｄフィールドの値を難読化する要素４１４は、Ｃｕｓｔｉｄは１０００００００００から９９９９９９９９９９までの１０桁の数字であるとの仮定に基づく。ＳＳＮおよびＣＣＮと同様、この要素は、擬似ランダムな数字を選択するために擬似ランダム順列技術を用いるエンコード関数を定義することができる。難読化は、有効性チェックが必須ではないＳＳＮおよびＣＣＮについて用いられるアプローチと異なってもよい。
【００７０】
データを難読化した後、データ難読化モジュール１１２は、難読化の有効性をテストすることができる。いくつかの実装において、モジュール１１２は、複数のフィールドの値（例えば、名フィールドの値と組み合わせられた姓フィールドの値）から構成される複合キーであり得るキーを用いるジョイン処理を実行することにより、実際のデータが難読化された値の中に存在しないことを検証する。難読化されたレコードのフィールドの値を実際のレコードの対応するフィールドと比較することにより、モジュール１１２は、任意の姓および名について、難読化されたデータが実際のデータとは異なる値を含んでいるかを検証することができる。
【００７１】
上述した難読化技術は、コンピュータにて実行可能なソフトウェアを用いて実装することができる。例えば、ソフトウェアは、各々が少なくとも１つのプロセッサ、少なくとも１つのデータストレージシステム（揮発性または不揮発性のメモリおよび／またはストレージ要素を含む）、少なくとも１つの入力デバイスまたはポート、および、少なくとも１つの出力デバイスまたはポート、を含む一または複数のプログラムされたまたはプログラム可能なコンピュータシステム（分散、クライアント／サーバ、または、グリッドのような種々のアーキテクチャであり得る）において実行する一または複数のコンピュータプログラムにおける手順を構成する。ソフトウェアは、より大きなプログラムの一または複数のモジュール（例えば、デザインおよびグラフ計算の構成に関連する他のサービスを提供する。）を構成してもよい。グラフのノードおよび要素は、コンピュータ読み取り可能な媒体に格納されるデータ構造として、または、データリポジトリに格納されるデータモデルに準拠する他の体系化データとして、実現され得る。
【００７２】
ソフトウェアは、汎用または専用のプログラマブルコンピュータによって読み取り可能な記憶媒体（ＣＤ−ＲＯＭ等）上において提供されてもよく、または、ネットワークの通信媒体を介してソフトウェアが実行されるコンピュータに伝送されてもよい（伝搬信号にエンコードされてもよい。）。関数の全ては、専用コンピュータ上にて、または、コプロセッサなどの専用ハードウエアを用いて、実行され得る。ソフトウェアは、分散方式（ソフトウェアが規定する計算の異なる部分が、異なるコンピュータにより実行される。）にて実行され得る。そのようなコンピュータープログラムの各々は、汎用または専用のプログラマブルコンピュータによって読み取り可能な記録媒体または記憶装置（例えば、固体メモリまたは媒体、あるいは、磁気媒体または光媒体）に格納されるか又はダウンロードされるか、が好ましい。これにより、コンピュータシステムが記憶媒体または記憶装置を読み取ってここに記載されているプロシージャを実行する際、コンピュータが構成されて実行される。本発明のシステムは、コンピュータープログラムにて構成されたコンピュータ読み取り可能な記憶媒体として実施されると考えることもできる。そのように構成された記憶媒体により、コンピューターシステムは、ここに記載した関数を実行する特定の及び所定の方法にて作動する。
【００７３】
本発明のいくつかの実施形態を説明した。しかし、当然のことながら、本発明の精神および範囲を逸脱することなく多様な改変を実施し得る。例えば、上述したいくつかのステップの順序は自由であるので、上記と異なる順序にて実行され得る。当然のことながら、上記記載は、本発明を説明することを意図したものであって本発明の範囲を限定することを意図するものではない。本発明は、添付される特許請求の範囲によって定義される。例えば、上述したいくつかの関数ステップは、全体のプロセスに実質的な影響を与えることなく異なる順序にて実行され得る。他の態様は以下の特許請求の範囲に含まれる。
【図１】
0005878462.tif 000002
【図２】
0005878462.tif 000003
【図３】
0005878462.tif 000004
【図４】
0005878462.tif 000005
【図５】
0005878462.tif 000006
【図６】
0005878462.tif 000007
【図７】
0005878462.tif 000008