(57)【要約】【課題】実際のデータベースに見られる分布を映し出すデータ分布を有するテストデータベースを作成するために、データベースの少なくとも一部分を難読化すること。【解決手段】方法およびシステムは、難読化されたデータ構造からデータ構造を作成する。まず、このシステムは、難読化が望まれる第１のデータ構造に対して動作し、第１のデータ構造の一部分に基づいてデータストリングを作成する（１１０）。次に、そのデータストリングに基づいて、第２のデータ構造が第３のデータ構造から決定論的に作成され、第１のデータ構造が第２のデータ構造に置き換えられる（１１２〜１２０）。【選択図】図１Ｂ
2006221647.tif 000002
【特許請求の範囲】
【請求項１】
データ難読化方法であって、
難読化が望まれる第１のデータ構造に対して動作するステップ、
前記第１のデータ構造の一部分に基づいてデータストリングを作成するステップ、
前記データストリングに基づいて、少なくとも１つの第３のデータ構造から第２のデータ構造を決定論的に生成するステップ、および、
前記第１のデータ構造を前記第２のデータ構造に置き換えるステップ
を含むことを特徴とする方法。
【請求項２】
前記第１のデータ構造は、データ値の１つまたは複数の行と１つまたは複数の列を含み、データ値の前記１つまたは複数の行の各行に識別子を含みうることを特徴とする請求項１の方法。
【請求項３】
前記識別子に基づいて前記データストリングを生成するステップをさらに含み、前記データストリングは決定論的関数の出力であることを特徴とする請求項２の方法。
【請求項４】
前記第２および少なくとも１つの第３のデータ構造は、データ値の１つまたは複数の行と１つまたは複数の列を含み、前記第２および少なくとも１つの第３のデータ構造における前記１つまたは複数の列の各列は、前記第１のデータ構造の前記１つまたは複数の列におけるデータ値のタイプと対応することを特徴とする請求項２の方法。
【請求項５】
加重値を前記第１のデータ構造の前記１つまたは複数の行の各行におけるデータ値の種々のタイプに割り当てるステップ、および、
前記第１のデータ構造の前記割り当てられた加重値に基づいて、前記第２のデータ構造に、前記少なくとも１つの第３のデータ構造からのデータ値を取り込むステップ
をさらに含むことを特徴とする請求項２の方法。
【請求項６】
前記割り当てるステップは、前記第２のデータ構造における対応するデータ値が、実際の母集団で本来見られるパターンに一致するように、前記第１のデータ構造の前記１つまたは複数の行の各行における前記タイプのデータ値の母集団におけるオカレンスに従って、加重値を割り当てることを含むことを特徴とする請求項５の方法。
【請求項７】
請求項１の方法を実行するためのコンピュータ実行可能命令を有することを特徴とするコンピュータ可読媒体。
【請求項８】
請求項１の方法を実行するためのコードを含むことを特徴とするコンピュータソフトウェア。
【請求項９】
テストデータ構造を構築するための方法であって、
１つまたは複数のタイプのデータフィールドを有するソースデータ構造に対して動作するステップであって、前記１つまたは複数の各データフィールドがデータの１つまたは複数の行を含むステップ、
前記データの１つまたは複数の行の各行ごとに識別子を決定するステップ、並びに、
前記データの１つまたは複数の行の各行ごとに、
ａ）前記識別子に基づいてデータストリングを生成するステップ、
ｂ）前記タイプのデータフィールドに基づいて、前記データストリングの一部分を、少なくとも１つの参照データ構造におけるデータ値にマップするステップ、および、
ｃ）前記テストデータ構造に、前記少なくとも１つの参照データ構造における前記マップされた値を取り込むステップを実行するステップ
を含むことを特徴とする方法。
【請求項１０】
前記データストリングは決定論的関数の出力であることを特徴とする請求項９の方法。
【請求項１１】
前記ソースデータ構造における前記１つまたは複数のタイプのデータフィールド内のデータに加重値を割り当てるステップ、および、
前記加重値に基づいて、前記テストデータ構造に、前記少なくとも１つの参照データ構造からの前記データ値を取り込むステップ
をさらに含むことを特徴とする請求項９の方法。
【請求項１２】
前記割り当てるステップは、前記テストデータ構造における対応するデータが、実際の母集団を実質的に近似するように、前記ソースデータ構造における前記１つまたは複数のタイプのデータフィールド内のデータの母集団におけるオカレンスに従って、加重値を割り当てることを含むことを特徴とする請求項１１の方法。
【請求項１３】
前記データストリングの一部分を前記１つまたは複数のタイプの各データフィールドに割り当てるステップ、および、
前記部分および対応する加重値に基づいて、前記少なくとも１つの参照データ構造において、前記マップされた値を突き止めるステップ
をさらに含むことを特徴とする請求項１２の方法。
【請求項１４】
請求項９の方法を実行するためのコンピュータ実行可能命令を有することを特徴とするコンピュータ可読媒体。
【請求項１５】
請求項９の方法を実行するためのコードを含むことを特徴とするコンピュータソフトウェア。
【請求項１６】
合成データ構造を生成する方法を実行するためのコンピュータ使用可能命令を組み込んだ１つまたは複数のコンピュータ可読媒体であって、
それぞれが１つまたは複数のデータフィールドタイプを有する少なくとも１つの参照データ構造および１つのソースデータ構造に対して動作するステップであって、前記１つまたは複数の各データフィールドがデータ値の少なくとも１つの行を含むステップ、
予め定められたパターンに従って、前記ソースデータ構造におけるデータ値の少なくとも１つの行の各行ごとに加重値を割り当てるステップ、
前記ソースデータ構造の前記データ値の少なくとも１つの行の各行ごとに、それぞれのデータストリングを導き出すステップ、並びに、
前記ソースデータ構造の前記データ値の少なくとも１つの行の各行ごとに、
ａ）前記加重値、前記それぞれのデータストリング、および前記データフィールドタイプに基づいて、前記ソースデータ構造の前記データ値の少なくとも１つの行の各データ値を前記少なくとも１つの参照データ構造の前記データ値の少なくとも１つの行のデータ値にマップするステップ、および、
ｂ）前記合成データ構造に、前記少なくとも１つの参照データ構造の前記マップされたデータ値を取り込むステップを実行するステップ
を含むことを特徴とするコンピュータ可読媒体。
【請求項１７】
前記データストリングは決定論的関数の出力であることを特徴とする請求項１６の方法。
【請求項１８】
前記割り当てるステップは、前記テストデータ構造における対応するデータが、実際の母集団に本来見られるパターンに実質的に一致するように、前記ソースデータ構造における前記１つまたは複数のデータフィールドタイプ内の母集団におけるオカレンスに従って、加重値を割り当てることを含むことを特徴とする請求項１６の方法。
【請求項１９】
前記データストリングの一部分を前記１つまたは複数の各データフィールドタイプに割り当てるステップ、および、
前記部分および対応する加重値に基づいて、前記少なくとも１つの参照データ構造において、前記マップされた値を突き止めるステップ
をさらに含むことを特徴とする請求項１８の方法。
【請求項２０】
前記データフィールドタイプは、名および姓、会社名、性別、民族性、支払方法、給与、並びに年齢に対応することを特徴とする請求項１９の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データ構造の難読化の分野に関する。より詳細には、本発明の実施形態は、これだけに限定されないが、データ構造におけるデータ値の分布を映し出す決定論的に生成された擬似ランダムデータ値に、データ構造におけるデータ値を置き換えるための新しい有用な方法およびシステムを提供する。
【背景技術】
【０００２】
多くの会社が、顧客または従業員の情報を含むデータベースを維持している。この情報は、名前、住所、電話番号、社会保障番号、会社名、給与、および購入履歴を含むことがある。例えば、インターネットの販売会社は、顧客の名前、電話番号、支払方法、および購入履歴を含む顧客データベースを有することがある。他の例では、給与部門が、従業員についての給与情報を有することがある。支払方法、社会保障番号、給与のようなこれらの一部の情報の機密性のため、アクセスは、通常、会社内の比較的小さなグループに限定されている。
【０００３】
ソフトウェアアプリケーションでは一般的なことだが、コンピュータプログラマによるトラブルシューティングを必要とする問題が発生することがある。機密情報を有するデータベースに対して動作するソフトウェアアプリケーションで問題が生じるとき、プログラマは、問題を解決するために機密データベースにアクセスすることが必要なことがある。この結果、機密情報が、通常はそれにアクセスを有していない人々によって閲覧されることがある。給与の例では、給与情報の分散が、給与の差異に関する会社内部の問題を引き起こすおそれがある。インターネット販売の例では、支払方法および社会保障番号など他の個人情報の分散により、個人情報の盗難がもたらされるおそれがある。しかし、ソフトウェアアプリケーションの不具合を効率的にトラブルシューティングするために、プログラマは、実際のデータ、および特に実際のデータの分布（地理的分布、名前の分布など）にアクセスする必要がある。
【０００４】
【非特許文献１】Internet Engineering Task Force (IETF) Request for Comments (R.F.C.) 1321
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ランダムデータ置換によってデータベースを難読化し、それによりテストデータベースを生成することは当技術分野で知られている。しかし、ランダムデータ置換は、本来のデータベースに見られる実際のデータ分布を生成しない。実際のデータベースに見られる分布を映し出すデータ分布を有するテストデータベースを作成するために、データベースの少なくとも一部分を難読化するための方法およびシステムが必要とされる。
【課題を解決するための手段】
【０００６】
本発明の実施形態は、決定論的（deterministic）な自然なデータ置換による置換えによってデータを難読化するための方法を提供する。さらに、本発明の実施形態は、これだけに限定されないが、秘密データを、自然に見えるデータ（natural-looking data）に決定論的に置き換えることを含む、当技術分野におけるいくつかの実際的な適用を有することができる。このデータは、データの分散に関して元のデータに見られるパターンを映し出すが、元の秘密データを含まない。
【０００７】
一実施形態では、データを難読化するための方法が提供される。この方法は、その難読化が所望される第１のデータ構造に対して動作すること、および、第１のデータ構造の一部分に基づいてデータストリング（data string）を作成することを含む。そのデータストリングに基づいて、第２のデータ構造が、第３のデータ構造から決定論的に生成され、第２のデータ構造が、第１のデータ構造に取って代わる。
【０００８】
他の実施形態では、テストデータ構造を構築するための方法が提供される。この方法は、各データフィールドがデータのいくつかの行を含む、いくつかのタイプのデータフィールドを有するソースデータ構造に対して動作すること、および、データの各行ごとに識別子を決定することを含む。次いで、この方法は、データの各行ごとに、識別子に基づいてデータストリングを生成し、データストリングの一部分を、参照データ構造における値にマップし、テストデータ構造に、参照データ構造におけるマップされた値を取り込む。
【０００９】
さらに他の実施形態では、合成データ構造を生成する方法を実行するためのコンピュータ使用可能命令を有するコンピュータ可読媒体が提供される。この方法は、まず、各データ構造がいくつかのデータフィールドタイプ（data field type）を有し、各データフィールドタイプはデータ値の行を含む、参照データ構造およびソースデータ構造を提供することを含む。次いで、この方法は、予め定められたパターンに従って、ソースデータ構造におけるデータ値の各行ごとに加重値(weighted value)を割り当て、ソースデータ構造のデータ値の各行ごとに、それぞれのデータストリングを導き出すことを含む。ソースデータ構造におけるデータ値の各行ごとに、ソースデータ構造におけるデータ値の行内の各データ値は、加重値、それぞれのデータストリング、およびデータフィールドタイプに基づいて、参照データ構造におけるデータ値の行内のデータ値にマップされる。最後に、合成データ構造に、参照データ構造のマップされたデータ値が取り込まれる。
【００１０】
さらなる特徴を、以下でより詳細に説明する。
【００１１】
本発明の実施形態は、本明細書を参照することによりそれらの全体に組み込まれる添付の図面を参照して、以下で詳細に説明される。
【発明を実施するための最良の形態】
【００１２】
本発明の実施形態は、第１のデータ構造におけるデータ値の各行ごとに一意のデータストリングを決定論的に生成し、そのデータストリングを使用して、第１のデータ構造の行内の各データ値を、参照データ構造におけるデータ値にマップし、参照データ構造におけるマップされたデータ値に基づいて、第２のデータ構造を作成することによって、第１のデータ構造におけるデータ値を難読化するための新規の方法およびシステムを提供する。この決定論的方法およびシステムは、第１のデータ構造の難読化の各インスタンスごとに、第１のデータ構造におけるデータ値の行が、第２のデータ構造におけるデータ値の行に関連付けられるように、再現可能な結果を可能にする。
【００１３】
さらに、本発明の様々な実施形態に示される新規の方法およびシステムは、いくつかの実施形態では、加重値を、第１のデータ構造におけるいくつかの特定のタイプのデータ値に割り当てて、第１のデータ構造におけるデータ値の分布を実質的に近似する第２のデータ構造を作成することができる。したがって、第２のデータ構造は、ランダムに見え、このことは、第１のデータ構造に対して動作するソフトウェアアプリケーションのテストおよびトラブルシューティングの際に役立つ。
【００１４】
本発明の実施形態は、以下に示す詳細な説明、および本発明の様々な実施形態についての添付の図面から、より良く理解されよう。ただし、この詳細な説明および図面は、本発明を特定の実施形態に限定するように読み取られるべきではない。むしろ、これらの詳細は、本発明をより良く理解するのを助ける例示的目的のために与えられている。
【００１５】
本発明の完全な理解を可能にするために、特定のハードウェアデバイス、プログラミング言語、コンポーネント、プロセス、並びに動作環境などを含む多数の詳細が示される。他の例では、本発明の実施形態を不明瞭にするのを避けるために、構造、デバイス、およびプロセスを、詳細を示さずにブロック図の形態で示している。しかし、このような特定の詳細なしに本発明の実施形態を実施することができることは、当業者には理解されよう。コンピュータシステム、サーバ、ワークステーション、および他のマシンは、例えば、ネットワークや複数のネットワークからなるネットワークを含む通信媒体を介して、互いに接続することができる。さらに、本発明の様々な実施形態を説明するために用いられる例示的データ構造は、データベース、スプレッドシート、および、記憶媒体の能力がある他の装置とすることができるが、それだけに限定されない。
【００１６】
ここで、図１Ａを参照すると、図１Ｂ〜８でさらに詳細が示されているデータ難読化方法を用いた例示的発注システムのプロセス１０の系統図が示されている。プロセス１０は、顧客サービスエージェント（customer service agent）が顧客の注文を受け取るステップ１４から開始する。この注文は、電子商取引のウェブサイトを経由しても電話を介しても人間が直接受けてもよい。ステップ１６で、プロセス１０は、顧客データ構造１２Ａおよび有効在庫データ構造１２Ｂを含むデータ構造１２から、顧客データを取り出す。顧客データ構造１２Ａは、住所、電話番号、会社、社会保障番号、顧客が使用した過去の支払方法などの顧客に関する情報を含むことができる。ステップ１８で、プロセス１０は、在庫データ構造１２Ｂからの有効在庫と、顧客データ構造１２Ａからの出荷情報とに基づいて、送り状を作成する。
【００１７】
ステップ２０では、ステップ１８で作成された送り状に基づいて注文品が顧客に出荷される。ステップ２２で、注文品が適切に顧客に受け取られた場合、プロセスが完了する。しかし、間違った注文品が出荷されたり正しい注文品が間違った顧客に出荷されるような状況において、注文品が適切に受け取られなかった場合、不具合の根本的原因を決定するために、プロセス１０によって使用されるソフトウェアアプリケーションをデバックしなければならない。ステップ２４で、顧客データ構造１２Ａおよび在庫データ構造１２Ｂからのデータ値を使用して、テストデータ構造１３が作成される。プロセス１０によって使用されるソフトウェアアプリケーションは、ステップ２６で、テストデータ構造１３を使用して解析される。顧客データ構造１２Ａに含まれる機密情報は、データ構造１２Ａにおける情報に対するアクセスを必要とする限定された人々のグループの外部に分散されないことが望ましい。データ構造１２Ａにおけるデータを難読化するための決定論的方法を用いることによって、テストデータ構造１３は、自然に見えるデータを有して生成されることができ、顧客の秘密情報を保護する。テストデータ構造１３におけるデータ値を生成するために決定論的関数が使用されるので、テストデータ構造１３におけるデータエントリを、データ構造１２Ａにおけるデータ値にまで遡って、プロセス１０によって利用されるソフトウェアアプリケーションにおける問題の発生源を突き止めることができる。
【００１８】
図１Ｂを参照すると、難読化されることが望まれる第１またはソースデータ構造から、テストまたは第２データ構造を作成するための、方法１００の一実施形態が示されている。図４は、列４１０〜４２０と行４２２〜４３０を有する例示的ソースデータ構造４００を示している。データ構造４００は、データフィールドタイプの列を含む。例示的データ構造４００では、列は、各行に対するＩＤ番号を指定するために提供される。データ構造４００内に含まれる種々のデータフィールドタイプには、名、姓、会社、性別、および電話番号が含まれる。データ構造４００は、いくつかの実施形態では、年齢や民族性など他のデータフィールドタイプを含むことがある。
【００１９】
図１Ｂに戻ると、難読化方法１００は、難読化が望まれるデータ構造の行に対するデータストリングが生成されるステップ１１０を含む。例えば、データ構造４００の行４２２は、データストリングを生成するために操作されるＩＤ番号「０００１」を含む。ステップ１１０でデータストリングを生成するプロセスは、図２に関連してさらに論じる。難読化方法１００を続けると、ステップ１１２で、データ構造４００におけるデータ値の住所または名前フィールドのような第１のデータフィールドタイプが決定される。例えば、行４２２におけるデータ値「Ｃｈｒｉｓ」は、列４１２で指定される「名（first name）」データフィールドタイプである。ステップ１１４で、行４２２および列４１２のデータ値「Ｃｈｒｉｓ」が取り出される。ステップ１１６で、データ値「Ｃｈｒｉｓ」は、１つまたは複数の第３または参照データ構造（図示せず）を使用して、データタイプおよびデータストリングに基づいて難読化され、対応するテストデータ構造が作成される。テストデータ構造は、データ値「Ｃｈｒｉｓ」に対応する参照データ構造からの難読化されたデータ値を含む。ステップ１１８で、難読化されることが望まれるデータ構造４００の「姓（last name）」列４１４、「会社（company）」列４１６、「性別（gender）」列４１８、および「電話番号（phone number）」列４２０のような列が、データ構造内にさらに存在する場合は、ステップ１１２から１１６が繰り返される。各列ともに難読化されたあと、ステップ１２０で、方法１００は次の行に進む。例えば、データ構造４００の行４２４に進む。さらなる行が存在する場合、ステップ１１０で、データストリングが生成され、方法１００は、ステップ１１２〜１１８を繰り返す。ただし、難読化が望まれるデータ構造内にさらなる行が存在しない場合、方法１００は完了する。図１Ａにおけるテストデータ構造１３のような第２またはテストデータ構造が作成され、ソースデータ構造における秘密データが難読化された。
【００２０】
次に、図２を参照すると、図１Ｂのステップ１１０のデータストリングを生成するプロセスが、より詳細に示されている。ステップ１１０のプロセスは、ソースデータ構造におけるデータ値の行の識別子を決定するステップ１１０Ａを含む。データ構造４００において、「ＩＤ」列４１０は、識別子として利用することができる。行４２２における識別子は、「０００１」とすることができる。ステップ１１０Ｂで、識別子は、決定論的関数に適用される。決定論的関数の一例は、ＭＤ−５（メッセージダイジェストアルゴリズム５（message-digest algorithm 5））暗号化アルゴリズムである。ＭＤ−５は、広く使用されている、１２８ビットハッシュ出力値を有する暗号ハッシュ関数である。１２８ビットＭＤ−５ハッシュは、通常、３２桁の１６進法の数として表現される。ＭＤ−５関数を使用すると、入力メッセージにおける小さい変更でさえ、全く異なる出力メッセージまたはハッシュをもたらすことになる。ＭＤ−５アルゴリズムについては、さらに説明されている（例えば、非特許文献１参照。この文献は、参照により本明細書に組み込まれる。）。ＭＤ−５決定性アルゴリズムは、本明細書では例示の目的にのみ使用される。本発明の様々な実施形態では、これらだけに限定されないがＳＨＡ−１およびＲＩＰＥＭＤ−１６０など他の決定論的関数を使用することもできる。
【００２１】
図２を続けると、ステップ１１０Ｃで、決定論的関数のデータストリングまたは出力の部分が、ソースデータ構造におけるデータフィールドタイプに割り当てられる。図４のデータ構造４００は、いくつかのデータフィールドタイプ、すなわち、「ＩＤ」４１０、「名」４１２、「姓」４１４、「会社」４１６、「性別」４１８、および「電話番号」４２０を含む。図３を参照すると、例示的な一般的データストリング３００が示されている。データストリング３００は、データ構造４００における５つのデータフィールドタイプと合致する５つの部分を含む。ステップ１１０Ｃの一実施形態では、データストリング３００の一部分３１２は、「名」データフィールドタイプを含むデータ構造４００の列４１２に割り当てることができ、データストリング３００の一部分３１４は、「姓」データフィールドタイプを含む列４１４に割り当てることができる。同様に、部分３１６をデータ構造４００の列４１６に割り当て、部分３１８を列４１８に割り当て、部分３２０を列４２０に割り当てることができる。この例では、データストリング３００の部分は、ブロックとして、データ構造４００におけるデータフィールドタイプに割り当てられるが、本発明の他の実施形態では、データストリング３００の部分は、データ構造４００におけるデータフィールドタイプの種々の列に離ればなれのグループとして割り当てることができる。
【００２２】
次に図５を参照すると、ソースデータ構造のデータ値を難読化する図１Ｂのステップ１１６に記述されたプロセスが、より詳細に示されている。ステップ１１６Ａで、図１Ｂのステップ１１０で生成され図２でさらに詳細に説明された、データストリングの一部分が、取り出される。例示のために、図３のデータストリング３００が、ステップ１１６Ａで取り出される。ステップ１１６Ｂで、例えばデータ構造４００におけるデータフィールドタイプに対応するデータストリング３００の一部分は、参照構造（図示せず）における対応するデータフィールドタイプのデータ値にマップされる。この参照データ構造は、例えば、情報のうち特に、名／姓、住所、性別、年齢、電話番号、社会保障番号、および民族性を含む、センサスデータ（census data）とすることができる。さらに、本発明の他の実施形態では、参照データ構造は、単一データ構造としてもデータ構造の集まりとしてもよく、それぞれが、データフィールドタイプに対応するデータ値を含む。ステップ１１６Ｃで、参照データ構造におけるマップされたデータ値が、合成またはテストデータ構造を作成するために取り出される。例示的合成データ構造が、図６のデータ構造６００に示されている。合成データ構造６００は、図４のソースまたは難読化されるデータ構造４００と同じ数の列およびデータタイプを含み、図４のデータ構造４００におけるデータと実質的に同じデータを含む。
【００２３】
決定論的関数は、ソースデータ構造からのデータ値の行（row）が参照データ構造にマップされる各インスタンスについて、合成データにおけるデータ値の行を生成するために利用される。ソースデータ構造におけるデータ値の所与の行と、合成データ構造における対応するデータ値の難読化された行との間には、再現可能な関係が存在する。つまり、図４および６を参照すると、ソースデータ構造４００の各難読化について、図４の行４２２は、図６の行６２２に対応している。図１Ａに関連して先に述べたように、この再現可能性は、顧客データ構造１２Ａにおけるデータ値とテストデータ構造１３におけるデータ値との間の関係を失うことなく、オーダー（order）および出荷プロセスで使用されるソフトウェアアプリケーションをデバッグする複数のインスタンスを使用可能にする。
【００２４】
先に論じたように、図３のデータストリング３００の一部分は、データ構造４００における値を、参照データ構造（図示せず）における値にマップするために用いられる。例えば、年齢データタイプは、データストリング３００のビット２２〜２７に対応することができ、名および姓は、データストリング３００の最下位１１ビットを使用してマップすることができる。名および姓の選択の一例では、米国で最も一般的な６５，０００個の名および姓を、国勢調査局からダウンロードすることができる。国勢調査局の６５，０００からなるリストから１つの姓および名を選択するために、データストリング３００から一定のビット数が必要とされる。例えば、データストリング３００における１６の別個のビットを、姓に用いるために選択し一緒にグループ化し、データストリング３００における他の１２ビットを、名に用いるためにグループ化することができる。この例では、１２ビットおよび１６ビットを選択したが、他のビット数を選択することもできる。例えば、名に用いるビットの２進数が、合計で２になった場合、参照データ構造における第２のエントリが選ばれる。６５，０００からなるリストから選択された名および姓は、次いで、合成データベース構造５００に挿入される。同様に、アドレスを使用するときは、アドレスを選択するためにデータストリング３００の一部分を使用することができる。例えば、アドレス用に選択されたデータストリング３００の部分が、合計で１９２になる場合、アドレスの参照データベースにおける１９２番目のエントリが選択され、図６の合成データ構造６００に挿入される。
【００２５】
次に図７を参照すると、図１Ｂのステップ１１６で記述された、ソースデータ構造のデータ値の難読化のための他の実施形態が示されている。ステップ１１６Ｄで、加重値を、いくつかの特定のデータタイプに割り当てることができる。例えば、文字「ｍ」で始まる会社名が、文字「ｚ」で始まる会社よりも頻繁に出現することがある。加重アルゴリズムは、母集団における会社名の実際の分布をシミュレーションするために、決定論的関数と併せて適用することができる。図４および６を併せて参照すると、「会社」データタイプフィールドにおけるデータ構造４００における文字「ｍ」で始まる会社は、文字「ｚ」で始まる会社よりも出現する頻度が高い。同様に、図６のデータ構造６００の「会社」データタイプフィールドにおいて、文字「ｍ」で始まる名前を有する会社と文字「ｚ」で始まる会社の分布は、同じまたは同様である。図８に示されるように、他のデータフィールドタイプに対して同様の加重値を与えることができる。加重値８１４は、性別８１０、年齢８１２、名および姓８１６、並びに民族性８１８に対し割り当てることができる。
【００２６】
図７を再び参照すると、方法１１６は、ステップ１１６Ｅに進んで、データストリング３００の一部分を取り出し、ステップ１１６Ｆで、それを参照データ構造における値にマップする。次いで、ステップ１１６Ｇで、合成データ構造を、参照データ構造からマップされた値を用いて生成する。一実施形態において、参照データ構造は、難読化されることが望まれるデータ構造内に含まれるすべてのデータ値およびデータタイプを含むことができるが、他の実施形態は、難読化されることが望まれるデータ構造内に含まれる各データタイプに対して１つとなるいくつかの参照データ構造を含むことができる。
【００２７】
本発明の幾つかの実施形態は、母集団におけるデータタイプの分布を正確に再現するために加重アルゴリズムを用いることができる。加重アルゴリズムの使用は、難読化されるデータの望ましい正確さ、または参照データ構造における分布の正確さに応じて異なる。
【００２８】
本発明は、特定の実施形態に関連して説明されているが、それらの実施形態は、全ての点で限定ではなく例示を目的としている。本発明の範囲から逸脱しない代替実施形態は、当業者には明らかであろう。多数の代替実施形態が存在するが、それらは、本発明の性質のため包括されていない。熟練したプログラマは、本発明の範囲から逸脱することなく、上述の改良を実装する代替手段を開発することができよう。特定の特徴および副結合は、有用であり、他の特徴および副結合を参照することなく用いることができ、特許請求の範囲の範囲内で企図されることは理解されよう。種々の図に挙げられたすべてのステップは、記載の特定の順序で実行される必要は必ずしもない。上記の流れ図のすべてのステップは、必須のステップとは限らない。
【図面の簡単な説明】
【００２９】
【図１Ａ】例示的オーダープロセスを示す系統図である。
【図１Ｂ】データ構造を難読化するための方法の一実施形態の概略を示す流れ図である。
【図２】データストリングを生成するためのプロセスの一実施形態をより詳細に示す流れ図である。
【図３】例示的データストリングを示す図である。
【図４】難読化されることが望まれる例示的データ構造を示す図である。
【図５】データ構造を難読化するためのプロセスの一実施形態をより詳細に示す流れ図である。
【図６】図４のデータ構造から得られる例示的な難読化されたデータ構造を示す図である。
【図７】データ構造を難読化するためのプロセスの他の実施形態をより詳細に示す流れ図である。
【図８】加重値を割り当てることができる種々のデータフィールドタイプを示す図である。
【符号の説明】
【００３０】
１０    プロセス
１２    データ構造
１２Ａ  顧客データ構造
１２Ｂ  有効在庫データ構造１２Ｂ
１３    テストデータ構造
１００  難読化方法
３００  データストリング
４００  ソースデータ構造
６００  合成データ構造
【図１Ａ】
2006221647.tif 000003
【図１Ｂ】
2006221647.tif 000004
【図２】
2006221647.tif 000005
【図３】
2006221647.tif 000006
【図４】
2006221647.tif 000007
【図５】
2006221647.tif 000008
【図６】
2006221647.tif 000009
【図７】
2006221647.tif 000010
【図８】
2006221647.tif 000011