(57)【要約】  データをマスキングするための装置、コンピュータ可読媒体、およびコンピュータ実装方法である。第１のデータ要素に不可逆関数を適用して派生データ要素を生成するステップを含む。第１のデータ要素は第１のデータタイプであり、派生データ要素は第１のデータタイプとは異なる第２のデータタイプであり、派生データ要素は派生データ要素の少なくとも一部をテンプレートとして選択し、テンプレートを第２のデータタイプから第１のデータタイプに変換した結果として、マスクデータ要素を生成する。【選択図】図４
2019522269.tif 000002
【特許請求の範囲】
【請求項１】
データをマスキングするために１つ以上のコンピューティングデバイスによって実行される方法であって、
１つ以上のコンピューティングデバイスのうちの少なくとも１つによって、派生データ要素を生成するために、不可逆関数を第１のデータ要素に適用するステップであって、第１のデータ要素は第１のデータタイプであり、派生データ要素は第１のデータタイプとは異なる第２のデータタイプである、ステップと、
１つ以上のコンピューティングデバイスのうちの少なくとも１つによって、派生データ要素の少なくとも一部をテンプレートとして選択するステップと、
１つ以上のコンピューティングデバイスのうちの少なくとも１つによって、前記テンプレートを第２のデータタイプから第１のデータタイプに変換した結果として、マスクデータ要素を生成するステップとを含む、方法。
【請求項２】
前記第１のデータタイプは、１つ以上のアルファベットおよび位置マップによって特徴付けられ、前記位置マップは、前記１つ以上のアルファベットに関して前記第１のデータタイプの構文構造を記述する、請求項１に記載の方法。
【請求項３】
前記第１のデータタイプの全ての要素は、各々が位置を有する固定数の要素メンバーを含み、前記位置マップは、前記要素メンバーの位置に基づいて、前記１つ以上のアルファベットのうちの１つによって各要素メンバーを特徴付けることによって、前記第１のデータタイプの全ての要素の構文構造を記述する、請求項２に記載の方法。
【請求項４】
前記１つ以上のアルファベットの各々は、数字、文字、または記号を含む値のセットを含む、請求項３に記載の方法。
【請求項５】
前記不可逆関数は、ハッシュ関数、決定性ランダムビット生成器、または擬似乱数生成器である、請求項４に記載の方法。
【請求項６】
前記第２のデータタイプは、２進数またはビットストリングである、請求項１に記載の方法。
【請求項７】
前記第１のデータタイプの全ての要素は、各々が位置を有する固定数の要素メンバーを含み、前記テンプレートとして選択された前記派生データ要素の一部は、前記固定数の要素メンバーに等しい数のオクテットを含む、請求項６に記載の方法。
【請求項８】
前記第１のデータタイプは、１つ以上のアルファベットおよび位置マップによって特徴付けられ、
前記テンプレートを前記第１のデータタイプから前記第２のデータタイプに変換するステップは、
各オクテットに位置を割り当てるステップと、
各オクテットを、当該オクテットに割り当てられた位置および位置マップに基づいて、１つ以上のアルファベットのうちの１つから選択されたそれぞれのアルファベットから選択された値にマッピングするステップと、
を含む、請求項７に記載の方法。
【請求項９】
前記１つ以上のアルファベットのそれぞれのアルファベットが、前記それぞれのアルファベットにおける複数の固有値に対応する長さを有し、
前記１つ以上のアルファベットのうちの１つから選択された値に各オクテットをマッピングするステップが、各オクテットについて、
それぞれのアルファベットの長さに基づいて基底モジュロを決定するステップと、
結果を得るために、基底モジュロに基づいてオクテットに基底モジュラ除算を適用するステップと、
前記結果をそれぞれのアルファベットの最初の値に加算するステップと、
を含む、請求項８に記載の方法。
【請求項１０】
前記第１のデータタイプは、条件のセットによってさらに特徴付けられる、請求項１に記載の方法。
【請求項１１】
１つ以上のコンピューティングデバイスによって、マスクデータ要素が条件のセットを満たすかどうかを判定するステップと、
１つ以上のコンピューティングデバイスのうちの少なくとも１つによって、マスクデータ要素が条件のセットを満たさないという決定に少なくとも部分的に基づいて、第２のマスクデータ要素を生成するステップと、
をさらに含む、請求項１０に記載の方法。
【請求項１２】
第２のマスクデータ要素を生成するステップが、
１つ以上のコンピューティングデバイスのうちの少なくとも１つによって、不可逆関数をマスクデータ要素に適用するステップであって、二次微分データ要素を生成し、二次微分データ要素は第２のデータタイプである、ステップと、
１つ以上のコンピューティングデバイスのうちの少なくとも１つによって、２次導関数データ要素の少なくとも一部を第２のテンプレートとして選択するステップと、
１つ以上のコンピューティングデバイスのうちの少なくとも１つによって、第２のテンプレートを第２のデータタイプから第１のデータタイプに変換した結果として、第２のマスクデータ要素を生成するステップと、
を含む、請求項１１に記載の方法。
【請求項１３】
前記不可逆関数は、ルックアップテーブルに少なくとも部分的に基づいて複数の不可逆関数から選択される、請求項１に記載の方法。
【請求項１４】
前記第１のデータ要素は、平文である、請求項１に記載の方法。
【請求項１５】
前記第１のデータ要素が暗号化される、請求項１に記載の方法。
【請求項１６】
前記テンプレートは、所定のアルゴリズムを使用して前記派生データ要素から選択される、請求項１に記載の方法。
【請求項１７】
前記第１のデータタイプは、１つ以上のアルファベットおよび位置マップによって特徴付けられ、前記位置マップは、前記１つ以上のアルファベットおよびチェックサムに関して、前記第１のデータタイプの構文構造を記述する、請求項１に記載の方法。
【請求項１８】
前記不可逆関数を前記第１のデータ要素に適用する前に、固有のソルトを使用して前記第１のデータ要素を増補するステップをさらに含む、請求項１に記載の方法。
【請求項１９】
前記固有のソルトは、前記インスタンス、前記データベース、前記ハードウェア、前記要求アプリケーション、前記要求アプリケーションのユーザ、または前記配備に基づいて決定される、請求項１９に記載の方法。
【請求項２０】
データをマスキングする装置であって、
１つ以上のプロセッサと、
前記１つ以上のプロセッサの少なくとも１つに操作可能に結合され、命令を格納した１つ以上のメモリとを含み、
前記命令は、前記１つ以上のプロセッサの少なくとも１つに実行されたとき、前記１つ以上のプロセッサの少なくとも１つに、
派生データ要素を生成するために、不可逆関数を第１のデータ要素に適用するステップであって、第１のデータ要素は第１のデータタイプであり、派生データ要素は第１のデータタイプとは異なる第２のデータタイプである、ステップと、
派生データ要素の少なくとも一部をテンプレートとして選択するステップと、
前記テンプレートを第２のデータタイプから第１のデータタイプに変換した結果として、マスクデータ要素を生成するステップと、
を実行させる、装置。
【請求項２１】
前記第１のデータタイプは、１つ以上のアルファベットおよび位置マップによって特徴付けられ、前記位置マップは、前記１つ以上のアルファベットに関して前記第１のデータタイプの構文構造を記述する、請求項１０に記載の装置。
【請求項２２】
前記第１のデータタイプの全ての要素は、各々が位置を有する固定数の要素メンバーを含み、前記位置マップは、前記要素メンバーの位置に基づいて、前記１つ以上のアルファベットのうちの１つによって各要素メンバーを特徴付けることによって、前記第１のデータタイプの全ての要素の構文構造を記述する、請求項２１に記載の装置。
【請求項２３】
前記１つ以上のアルファベットの各々は、数字、文字、または記号を含む値のセットを含む、請求項２２に記載の装置。
【請求項２４】
前記不可逆関数は、ハッシュ関数、決定性ランダムビット生成器、または擬似乱数生成器である、請求項２３に記載の装置。
【請求項２５】
前記第２のデータタイプは、２進数またはビットストリングである、請求項２０に記載の装置。
【請求項２６】
前記第１のデータタイプの全ての要素は、各々が位置を有する固定数の要素メンバーを含み、前記テンプレートとして選択された前記派生データ要素の一部は、前記固定数の要素メンバーに等しい数のオクテットを含む、請求項２５に記載の装置。
【請求項２７】
前記第１のデータタイプは、１つ以上のアルファベットおよび位置マップによって特徴付けられ、
前記テンプレートを前記第１のデータタイプから前記第２のデータタイプに変換するステップは、
各オクテットに位置を割り当てるステップと、
各オクテットを、当該オクテットに割り当てられた位置および位置マップに基づいて、１つ以上のアルファベットのうちの１つから選択されたそれぞれのアルファベットから選択された値にマッピングするステップと、
を含む、請求項２６に記載の装置。
【請求項２８】
前記１つ以上のアルファベットのそれぞれのアルファベットが、前記それぞれのアルファベットにおける複数の固有値に対応する長さを有し、
前記１つ以上のアルファベットのうちの１つから選択された値に各オクテットをマッピングするステップが、各オクテットについて、
それぞれのアルファベットの長さに基づいて基底モジュロを決定するステップと、
結果を得るために、基底モジュロに基づいてオクテットに基底モジュラ除算を適用するステップと、
前記結果をそれぞれのアルファベットの最初の値に加算するステップと、
を含む、請求項２７に記載の装置。
【請求項２９】
前記第１のデータタイプは、条件のセットによってさらに特徴付けられる、請求項２０に記載の装置。
【請求項３０】
マスクデータ要素が条件のセットを満たすかどうかを判定するステップと、
マスクデータ要素が条件のセットを満たさないという決定に少なくとも部分的に基づいて、第２のマスクデータ要素を生成するステップと、
を、少なくとも１つのプロセッサにさらに実行させる命令をさらに含む、請求項２９に記載の装置。
【請求項３１】
前記少なくとも１つのプロセッサに、第２のマスクデータ要素を生成させるステップが、
不可逆関数をマスクデータ要素に適用するステップであって、二次微分データ要素を生成し、二次微分データ要素は第２のデータタイプである、ステップと、
２次導関数データ要素の少なくとも一部を第２のテンプレートとして選択するステップと、
第２のテンプレートを第２のデータタイプから第１のデータタイプに変換した結果として、第２のマスクデータ要素を生成するステップと、
を含む、請求項２９に記載の装置。
【請求項３２】
前記不可逆関数は、ルックアップテーブルに少なくとも部分的に基づいて複数の不可逆関数から選択される、請求項２０に記載の装置。
【請求項３３】
前記第１のデータ要素は、平文である、請求項２０に記載の装置。
【請求項３４】
前記第１のデータ要素が暗号化される、請求項２０に記載の装置。
【請求項３５】
前記テンプレートは、所定のアルゴリズムを使用して前記派生データ要素から選択される、請求項２０に記載の装置。
【請求項３６】
前記第１のデータタイプは、１つ以上のアルファベットおよび位置マップによって特徴付けられ、前記位置マップは、前記１つ以上のアルファベットおよびチェックサムに関して、前記第１のデータタイプの構文構造を記述する、請求項２０に記載の装置。
【請求項３７】
前記不可逆関数を前記第１のデータ要素に適用する前に、固有のソルトを使用して前記第１のデータ要素を増補するステップをさらに含む、請求項２０に記載の装置。
【請求項３８】
前記固有のソルトは、前記インスタンス、前記データベース、前記ハードウェア、前記要求アプリケーション、前記要求アプリケーションのユーザ、または前記配備に基づいて決定される、請求項３７に記載の装置。
【請求項３９】
コンピュータ読み取り可能な命令を格納した、少なくとも１つの非一時的コンピュータ読み取り可能媒体であって、
前記命令は、１つ以上のコンピューティングデバイスによって実行されたとき、前記１つ以上のコンピューティングデバイスの少なくとも１つに、
派生データ要素を生成するために、不可逆関数を第１のデータ要素に適用するステップであって、第１のデータ要素は第１のデータタイプであり、派生データ要素は第１のデータタイプとは異なる第２のデータタイプである、ステップと、
派生データ要素の少なくとも一部をテンプレートとして選択するステップと、
前記テンプレートを第２のデータタイプから第１のデータタイプに変換した結果として、マスクデータ要素を生成するステップと、
を実行させる、媒体。
【請求項４０】
前記第１のデータタイプは、１つ以上のアルファベットおよび位置マップによって特徴付けられ、前記位置マップは、前記１つ以上のアルファベットに関して前記第１のデータタイプの構文構造を記述する、請求項３９に記載の媒体。
【請求項４１】
前記第１のデータタイプの全ての要素は、各々が位置を有する固定数の要素メンバーを含み、前記位置マップは、前記要素メンバーの位置に基づいて、前記１つ以上のアルファベットのうちの１つによって各要素メンバーを特徴付けることによって、前記第１のデータタイプの全ての要素の構文構造を記述する、請求項４０に記載の媒体。
【請求項４２】
前記１つ以上のアルファベットの各々は、数字、文字、または記号を含む値のセットを含む、請求項４１に記載の媒体。
【請求項４３】
前記不可逆関数は、ハッシュ関数、決定性ランダムビット生成器、または擬似乱数生成器である、請求項４２に記載の媒体。
【請求項４４】
前記第２のデータタイプは、２進数またはビットストリングである、請求項３９に記載の媒体。
【請求項４５】
前記第１のデータタイプの全ての要素は、各々が位置を有する固定数の要素メンバーを含み、前記テンプレートとして選択された前記派生データ要素の一部は、前記固定数の要素メンバーに等しい数のオクテットを含む、請求項４４に記載の媒体。
【請求項４６】
前記第１のデータタイプは、１つ以上のアルファベットおよび位置マップによって特徴付けられ、
前記テンプレートを前記第１のデータタイプから前記第２のデータタイプに変換するステップは、
各オクテットに位置を割り当てるステップと、
各オクテットを、当該オクテットに割り当てられた位置および位置マップに基づいて、１つ以上のアルファベットのうちの１つから選択されたそれぞれのアルファベットから選択された値にマッピングするステップと、
を含む、請求項４５に記載の媒体。
【請求項４７】
前記１つ以上のアルファベットのそれぞれのアルファベットが、前記それぞれのアルファベットにおける複数の固有値に対応する長さを有し、
前記１つ以上のアルファベットのうちの１つから選択された値に各オクテットをマッピングするステップが、各オクテットについて、
それぞれのアルファベットの長さに基づいて基底モジュロを決定するステップと、
結果を得るために、基底モジュロに基づいてオクテットに基底モジュラ除算を適用するステップと、
前記結果をそれぞれのアルファベットの最初の値に加算するステップと、
を含む、請求項４６に記載の媒体。
【請求項４８】
前記第１のデータタイプは、条件のセットによってさらに特徴付けられる、請求項３９に記載の媒体。
【請求項４９】
前記コンピュータ読み取り可能な命令が、実行されたときに、前記コンピュータデバイスに、
マスクデータ要素が条件のセットを満たすかどうかを判定するステップと、
マスクデータ要素が条件のセットを満たさないという決定に少なくとも部分的に基づいて、第２のマスクデータ要素を生成するステップと、
をさらに実行させる、請求項４８に記載の媒体。
【請求項５０】
第２のマスクデータ要素を生成させるステップが、
不可逆関数をマスクデータ要素に適用するステップであって、二次微分データ要素を生成し、二次微分データ要素は第２のデータタイプである、ステップと、
２次導関数データ要素の少なくとも一部を第２のテンプレートとして選択するステップと、
第２のテンプレートを第２のデータタイプから第１のデータタイプに変換した結果として、第２のマスクデータ要素を生成するステップと、
を含む、請求項４９に記載の媒体。
【請求項５１】
前記不可逆関数は、ルックアップテーブルに少なくとも部分的に基づいて複数の不可逆関数から選択される、請求項３９に記載の媒体。
【請求項５２】
前記第１のデータ要素は、平文である、請求項３９に記載の媒体。
【請求項５３】
前記第１のデータ要素が暗号化される、請求項３９に記載の媒体。
【請求項５４】
前記テンプレートは、所定のアルゴリズムを使用して前記派生データ要素から選択される、請求項３９に記載の媒体。
【請求項５５】
前記第１のデータタイプは、１つ以上のアルファベットおよび位置マップによって特徴付けられ、前記位置マップは、前記１つ以上のアルファベットおよびチェックサムに関して、前記第１のデータタイプの構文構造を記述する、請求項３９に記載の媒体。
【請求項５６】
前記不可逆関数を前記第１のデータ要素に適用する前に、固有のソルトを使用して前記第１のデータ要素を増補するステップをさらに含む、請求項３９に記載の媒体。
【請求項５７】
前記固有のソルトは、前記インスタンス、前記データベース、前記ハードウェア、前記要求アプリケーション、前記要求アプリケーションのユーザ、または前記配備に基づいて決定される、請求項５８に記載の媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２０１６年５月２３日に出願された米国非仮出願第１５／１６１，５８６号の優先権を主張し、その開示は、その全体が参照により本明細書に組み込まれる。
【発明の概要】
【０００２】
データマスキングまたは編集は、権限のないユーザによる機密データへのアクセスを防止する重要なデータ管理技術である。データマスキングは、記憶されたデータに任意の時期に適用されてもよいし、データ要素が永続的データストア内で変更されるときに適用されてもよいし、伝送中のデータであって、データ要素がデータ利用者に送信される間に変更されるデータ、に適用されてもよい。
【０００３】
データマスキング技術は、データを可逆的にマスキングすることを含む。可逆データマスキングは、そのマスキングされた表現からオリジナルデータの回復を可能にする。データ要素暗号化は、可逆データマスキング技術の一例である。あるいは、不可逆データマスキングは、オリジナルデータ要素を、そのオリジナルコンテンツが完全にまたは部分的に失われるように変換する。例えば、１つの不可逆マスキング技術は、文字列のサブストリングを抽出し、残りの文字を任意の値に置き換える。
【０００４】
従来のデータマスキングは、アプリケーションに優しいものではない。部分的な編集などの従来のデータマスキング技術が適用される場合、アプリケーションは、マスキングされていない元のデータ要素を用いた場合とは異なる結果を生成する。これは、特に、機密データが、例えば、ＰＡ１２３４５６７８などのデータ要素として格納された運転免許証番号などの、フォーマットされたデータ文字列として構文的に定義される場合に見られることである。上記の例では、最初の２つのデータ要素メンバーは、発行した州を表し、５０個の２文字の州識別子のセットに制限される。そのような場合、アプリケーションによって受信されるデータ要素ＺＸ８７６５４３２１をもたらすマスキングは、アプリケーションが５０の州識別子のうちの１つを予測する場合、処理中にエラーをもたらす可能性がある。あるいは、例えば、各々がマスクされたクレジットカード番号の最初の１２桁（例えば、ｘｘｘｘ−ｘｘｘｘ−ｘｘｘｘ−１２３４）を有するデータ要素を含むデータセット上の照会は、口座番号の最後の４桁が同じである重複する可能性のあるクレジットカードのために、マスクされていないデータセット上の照会とは異なる結果を生成し得る。フォーマット保存暗号化技術（「ＦＰＥ」）は、特定の望ましい特性を示すが、特殊なフォーマット変換規則を有するデータ要素を処理することが困難であり（または全く不可能である）、機密暗号材料の管理を必要とする。例えば、カリフォルニアのナンバープレートは、カリフォルニアのナンバープレートの最初のメンバーが２から７の間の数字であり、次の３つのメンバーが文字であり、最後の３つのメンバーが０から９の間の数字であるように、構文的に構築されたフォーマットを有する。ＦＰＥは、データオブジェクトコンポーネント間の独立性のために、カリフォルニアのナンバープレート番号などの複雑なデータ要素について、意味的に正しい変換を実行することができない。例えば、３文字コードは、シリアル番号値から導出することができず、その逆も同様である。ナンバープレート番号の意味的正しさを達成するために３文字コードを調整しようとすると、解読中に元の情報が失われたり、データベースに格納された追加情報が必要となり、データベース内の保護されたデータオブジェクトのサイズが事実上増加する。
【０００５】
したがって、同じ条件下でデータマスキングシステムによって変換されたときに、元のデータ要素の各インスタンスが、同じフォーマットを有する同じマスクデータ要素をもたらすように、決定論的な様式でフォーマットを保存しながらデータをマスキングするためのシステムにおいて、改善が必要とされる。
【図面の簡単な説明】
【０００６】
【図１】図１は、例示的な実施形態のマスクデータ要素（マスクされたデータ要素）を生成するための機能フローブロック図を示す。
【図２】図２は、例示的な実施形態による、マスクデータ要素を生成するための方法のフローチャートを示す。
【図３】図３は、例示的な実施形態による不可逆変換を適用するための機能フローブロック図を示す。
【図４】図４は、例示的な実施形態による、構文的に定義されたデータタイプに従ってデータ要素を特徴付けることを示す。
【図５】図５は、例示的な実施形態による、派生データ要素からテンプレートを選択するための機能フローブロック図を示す。
【図６】図６のａ〜ｂは、例示的な実施形態による、マスクデータ要素を生成するための中間データ要素を生成するための方法のフローチャートを示す。
【図７】図７は、例示的な実施形態による、マスクデータ要素を生成するためのテンプレートから中間データ要素を生成するための機能フローブロック図を示す。
【図８】図８は、例示的な実施形態による、テンプレートからマスクデータ要素を生成するための機能フローブロック図を示す。
【図９】図９は、例示的な実施形態によるシステムの機能ブロック図である。
【図１０】図１０は、例示的な実施形態によるシステムの機能ブロック図である。
【図１１】図１１は、元のデータ要素からマスクデータ要素を生成する方法を実行するために使用することができる例示的なコンピューティング環境を示す。
【発明を実施するための形態】
【０００７】
本明細書では、方法と、装置と、コンピュータ可読媒体とを、例および実施形態として説明するが、当業者は、フォーマット保存データマスキングを利用してマスキングされたデータ要素を生成するための方法、装置と、コンピュータ可読媒体とが、説明された実施形態または図面に限定されないことを認識する。図面および説明は、開示された特定の形態に限定されることを意図していないことを理解されたい。むしろ、意図は、添付の特許請求の範囲の精神および範囲内に入るすべての修正、等価物、および代替物を網羅することである。本明細書で使用される見出しはいずれも、編成目的のためだけのものであり、説明または特許請求の範囲を限定することを意味しない。本明細書で使用されるように、単語「することができる（ｍａｙ）」は、必須の意味（すなわち、必須の意味）ではなく、許容される意味（すなわち、可能性を有することを意味する）で使用される。同様に、単語「含む（ｉｎｃｌｕｄｅ）」、「含む（ｉｎｃｌｕｄｉｎｇ）」、および「含む（ｉｎｃｌｕｄｅｓ）」は、これに限定されないが、含んでいることを意味する。
【０００８】
従来のマスキングの制限により、マスキングされたデータに対して動作するビジネスアプリケーションからロバストな結果を得るために、オリジナルデータ要素のフォーマットを保存するためのマスキングメカニズムを提供するための改良された技術が望ましい。本出願人は、フォーマット保存データマスキングを利用して、元のデータ要素からマスクされたデータ要素（マスクデータ要素）を生成するための方法、装置、およびコンピュータ可読媒体を発見した。開示される方法、媒体、およびシステムは、データタイプ、データ位置、１つ以上の基底セットまたはアルファベット、およびセキュリティパラメータなどの１つ以上の属性によるデータオブジェクトの特徴付けを含む。より具体的には、開示される方法およびシステムは、ユーザにとって透過的であり、マスクされた機密データに依存するアプリケーションのロバストな性能を維持する形で機密データをマスクするために機密データ要素を処理することを含み、その結果、コンピューティング環境の性能に悪影響を与えることなく、より安全なコンピューティング環境、および／または従来のマスキング技法よりもコンピューティング環境の性能を改善しながら、より安全なコンピューティング環境をもたらす。
【０００９】
本出願人は、コンピュータが異なる方法でデータ要素を処理することを可能にするために、データ要素のセットの構文的特徴付けに基づいてデータ要素を変換する新規なアプローチを発見した。データオブジェクト、例えば、機密データオブジェクトの構文的特徴付けは、同じタイプのデータ要素のセット、例えば、上述のカリフォルニアライセンスプレート番号などの特定の順序で配列された異なるタイプの値を含む順序付けられたペアの意味フォーマットを記述する方法である。
【００１０】
本システムは、データタイプＸを有する元のデータ要素、例えばデータ要素ｘのフォーマットを保存するための新規な技術を利用する。マスクデータ要素、例えばマスクデータ要素ｘ＊を得るためにマスキング手順が適用される場合、ｘ、ｘ＊∈Ｘ、すなわちデータ要素ｘおよびマスクデータ要素ｘ＊はそれぞれ、データタイプＸを有するすべての要素セットの要素である。言い換えれば、本明細書で開示される様々な実施形態は、要素ｘの別の要素ｘ＊への一方向マッピングＦ（ｘ）を提供する。ここで、ｘおよびｘ＊は、同じ構文定義フォーマットを有する。
【００１１】
実施形態は、特定のタイプのデータ要素または特定のタイプのデータタイプに限定されない。データ要素は、限定はしないが、連続数、不連続数、ストリング、またはシンボルの形態をとることができ、それらのいずれもが特別な条件に従うこともできる。データ要素は、順序付けられた配列またはランダムな配列の番号データ要素メンバーから構成される。各データ要素またはデータ要素メンバーは、１６進、８進、１０進、１０進の２進、２進数、ＡＳＣＩＩ値に対応する２進数、２進数として格納された１０進数とＡＳＣＩＩ値として格納された文字数と記号との組み合わせ、または上記の任意の組み合わせなどの任意のタイプの符号化に従って表され、格納され得る。データ要素が格納されるとき、データ要素が検索されるとき、データが通信されるとき、データが処理されるとき、およびデータがユーザに表示されるとき、任意のタイプの符号化を使用して、データ要素を含む値を表すことができることを理解されたい。また、データ要素の符号化は、符号化の効率または実装のシステム効率を達成するための必要性によって、または設計によって、処理の過程で起こり得ることも理解されよう。また、記憶、検索、処理、通信等の過程におけるデータの様々な変換は、すべて、本明細書に開示されるデータマスキングシステムの様々な実施形態によって処理されることも理解されよう。
【００１２】
実施形態は、データマスキングデータ要素が検索され、通信され、または処理されるときに、中間値またはマスク値（マスクされた値）をそれらが必要とされた後に格納する必要なく、データマスキングデータ要素を適用する動的な様式で動作することができ、なぜなら、各オリジナルデータ要素は、常に、同じ条件下で同じフォーマットが保存されたマスクデータ要素をもたらすからである。例えば、条件は、ユーザ、ユーザ認証、ユーザアクセスレベル、要求アプリケーションのアクセスレベル、アプリケーションまたはアプリケーションが実行しているマシンの認証レベル、データ要素のインスタンス、データ要素が格納されているデータベーステーブル、データベースインスタンス、またはデータベースの特定の展開とすることができる。データ要素のマスキングを変更し得る条件のタイプは、多数であり、本明細書に列挙されたものによって限定されず、とりわけ、データ要素値に関連する処理コストおよびコストを含む設計仕様およびコストに基づいてシステム設計者によって選択されることが理解されるであろう。
【００１３】
本明細書で開示される実施形態は、暗号化方式を必要とせず、したがって、暗号化の使用に関連するいかなる制限もなく、同時に、データマスキング能力によって提供されるマスキング能力は、機密暗号情報を管理する必要なく、ＦＰＥなどの暗号化技術に依存するデータマスキング技術と同等であるか、またはそれを超えることがさらに理解されるであろう。また、本明細書で開示されるデータマスキングは、暗号化ベースのアプローチでは不可能な特殊なフォーマット保存変換ルールの妨げられない適用によって、同等の暗号化ベースのソリューションよりも著しく高い柔軟性を有することも理解されよう。
【００１４】
本明細書で説明される実施形態は、暗号化に依存しないが、特定のシステムにおける暗号化メカニズムから独立している一方で、暗号化されたデータと互換性がある。したがって、本明細書に開示されるデータマスキングメカニズムは、データオブジェクト暗号化のプロセスとフォーマット保存プレゼンテーションのプロセスを分離することを可能にする。本発明の例示的な実装では、データベース内のデータオブジェクトは、ガロアカウンタモード（ＧＣＭ：Ｇａｌｏｉｓ／Ｃｏｕｎｔｅｒ  Ｍｏｄｅ）におけるＡＥＳ暗号化などの標準的な暗号方法を使用して暗号化され、または、限定はしないが、フォーマット保存変換がリモートプロキシサービスによって実行される間、任意の他の標準的なブロック暗号アプリケーションモードを使用して暗号化される。
【００１５】
この説明は、複雑な構文的に定義されたデータ要素が１つ以上の実施形態に従ってどのように処理され得るかを示すためにライセンスプレート番号のマスキングを含む例を含むが、開示された方法、システム、およびコンピュータ可読媒体はまた、銀行口座番号、バッジ番号、識別番号、分類番号、名前、クレジットカード番号などの任意のデータオブジェクトの機密データ要素をマスクするために利用され得る。
【００１６】
図１は、例示的な実施形態１００の機能フローブロック図によって、元のデータ要素からマスクデータ要素を生成する例を示す。ここで、元のデータ要素はデータ要素１１０である。データ要素１１０は、１つ以上のデータ要素メンバーから構成されてもよい。例えば、それは、７つのメンバー、あるいは１６個のメンバー、あるいは任意に多数または少数のメンバーから構成されてもよい。各メンバーは、特定のデータタイプに従って符号化され、順序付けられた方法で配列されてもよい。
【００１７】
最初に、不可逆関数１２０がデータ要素１１０に適用される。不可逆関数は一方向関数である。不可逆関数１２０は、例えば、ハッシュ関数、決定性ランダムビットジェネレータ（「ＤＲＢＧ」）、または擬似乱数ジェネレータ（「ＰＲＮＧ」）であってもよい。不可逆関数は、例えば、ｓｈａ−２５６またはｍｄ５であり得る。任意の一方向関数は、それが所与の入力セットに対して同じ出力に決定論的に到達する限り、使用されてもよく、不可逆関数の特定の形式は、システムのセキュリティ要件に基づいて選択され得ることが理解されるであろう。
【００１８】
不可逆関数１２０は、データ要素１１０に適用されると、微分データ要素１１２を出力する。不可逆変換１２０としてどちらの方向関数が選択されるかに応じて、結果として得られる派生データ要素は、データ要素１１０と同じデータタイプではなく、すなわち派生データ要素１１２がデータ要素１１０と同じ方法で構文的に定義されない均一なフォーマットで符号化された固定数の値を含む。微分データ要素１１２は、例えば、不可逆変換がｍｄ５である場合、例えば、２進数で符号化された３２個の１６進メンバー、２個の１６進数から８進数で符号化された３２個のメンバーを含むことができ、あるいは、それぞれがＡＳＣＩＩで符号化された３２個のメンバーのストリングとして符号化することができる。あるいは、例えば、不可逆関数１２０がａｄｌｅｒ３２である場合、微分データ要素１１２は、８つの値のストリングであってもよい。
【００１９】
より長い微分データ要素１１２が望まれる場合、例えば、ｍｄ５を不可逆関数１２０として使用して、３２個のメンバーを含む微分データ要素をもたらすが、所与のデータ要素ｘはデータタイプＸのものであり、５０個のデータ要素メンバーを含む要素を有する場合、微分データ要素の要素メンバーの長さは、例えば、ｍｄ５をｘに適用し、その結果をハッシュし、２つの値を連結することによって増加させることができる。例えば、結果として得られる微分データ値は、ｍｄ５（ｘ）||ｍｄ５（ｍｄ５（ｘ））であってもよい。このプロセスを繰り返して、少なくとも任意の所望のサイズの微分データ値を得ることができる。
【００２０】
テンプレート１１４は、派生データ要素１１２の一部から選択される（１２２）。テンプレート１１４のこの選択は、任意の適切な方法で達成することができる。例えば、長さ１０のデータ要素ｘ１１０、すなわち、Ｌ（ｘ）＝１０の場合、テンプレート１１４の選択は、左から数えて、派生データ要素１１２の第１の１０個の派生データ要素メンバーを選択することによって達成される。あるいは、テンプレート１１４の選択は、右から１０個の派生データ要素メンバーを選択することによって達成することができる。あるいは、テンプレート１１４の選択は、左または右のいずれかから２６番目から３５番目の派生データ要素メンバーを選択することによって達成することができる。派生データ要素１１２からテンプレート１１４を選択するために、任意の適切な決定論的アルゴリズムを使用できることが理解されよう。
【００２１】
次に、１２４で構文定義１０１をテンプレート１１４に適用することによって、マスクデータ要素１１８が得られる。構文定義１０１は、１つ以上のアルファベット１０２、位置マップ１０４、および一組の条件１０６に関して、データタイプＸのすべての要素を特徴付ける。例えば、上述のように、１９８２年以降に発行されたカリフォルニアのナンバープレート、例えば、ｘ＝４ＳＡＭ１２３は、フォーマットｍＳＳｎｎｎによって構文的に定義され、ここで、ｍは、２から９の間の数字のアルファベットから取られ、ＳＳＳは、英語のアルファベットから取られた３つの文字のシーケンス、すなわち、文字Ａ〜Ｚのセットであり、ｎｎｎは、０から９の３桁の数字のシーケンスである。カリフォルニア州の乗用車ナンバープレート番号の特別な条件は、文字列中の欠落部分（ギャップ）である。ナンバープレート３ＹＡＡ−３ＺＹＺシリーズは発行されなかった。簡潔にするために簡略化したが、上記の例は、身近なデータオブジェクトタイプの特徴付けを完全に示している。
【００２２】
ｍＳＳＳｎｎｎ形式の構文複合体を有するカリフォルニアのナンバープレートデータ要素ｘ、例えば１１０は、データタイプＸであり、０≦ｎ≦６のデータ要素メンバーｘｎはｘ６ｘ５ｘ４ｘ３ｘ２ｘ１ｘ０の形式で順序付けられる。データタイプＸの全ての要素は、ｘ６∈ｍ、ｘ５ｘ４ｘ３∈ＳＳＳ、ｘ２ｘ１ｘ０∈ｎｎｎのフォームのメンバーを含む。ここで、ｘｎは０≦ｎ≦６の１つのオクテットを含む。例えばｘ６∈ｍはタイプｍの１つのオクテットを含み、ＳＳＳはタイプＳの３つのオクテットを含み、ｎｎｎはタイプｎの３つのオクテットを含み、例えば各オクテットはＡＳＣＩＩ文字または８ビットの２進数であり、ｘは合計で７オクテットである。データタイプＸの各データ要素ｘは、メンバデータ要素を含み、各メンバデータ要素は、以下のアルファベットの１つによって特徴付けられる。ｘ５，ｘ４，ｘ３∈Ｓ∈Ａ１＝｛ＡＢＣＤ．．．ＸＹＺ｝；ｘ２，ｘ１，ｘ０∈ｎ∈Ａ２＝｛０１２３４５６７８９｝；ｘ６∈ｍ∈Ａ３＝｛２３４５６７｝である。したがって、ｍＳＳＳｎｎｎ形式のデータ要素メンバーｘ６ｘ５ｘ４ｘ３ｘ２ｘ１ｘ０として表される構文複合データ要素ｘ、例えば１１０は、各データ要素メンバーをアルファベット１０２、例えば位置マップ１０４にマッピングする位置マップに関連付けられる。ｘ６ｘ５ｘ４ｘ３ｘ２ｘ１ｘ０∈Ａ３Ａ２Ａ２Ａ２Ａ１Ａ１Ａ１である。データタイプＸの構文複合語ｘ、例えばデータ要素１１０は、更に、１組の条件１０６（これらの特別な条件は、データ要素ｘにおける不連続性を許容する）に関連付けられ、例えば条件１０６は以下の通りである。ｘ６＝３∈Ａ３の場合、以下の条件が適用される。ｘ５ｘ４ｘ３＜ＹＡＡ  または  ｘ５ｘ４ｘ３＞ＺＹＺ。
【００２３】
テンプレート１１４に構文定義１０１を適用する（１２４）ことは、任意の適切な方法によってテンプレートをデータタイプＸに変換することによって、マスクデータ要素１１８を生成する。マスクデータ要素１１８が構文定義に適合するために１つ以上の条件１０６が満たされなければならない場合、ステップ１３０で条件がチェックされ、条件が満たされたと判断される。条件が満たされない場合、結果は無効なマスクデータ要素１１６である。次に、不可逆関数１２０が無効なマスクデータ要素１１６に適用され、システムは再び上述の方法を実行し、条件が満たされるまでこれを繰り返し、マスクデータ要素１１８を生成する。
【００２４】
図２は、第１のデータオブジェクトからマスクデータ要素を生成するための方法のフローチャート２００を示し、第１のデータオブジェクトは、例えば、アプリケーションによってデータベースから要求された機密データオブジェクトであってもよい。ステップ２０１において、第１のデータ要素を第２のデータタイプの第２のデータ要素に不可逆的に変換する第１のデータタイプの第１のデータ要素に不可逆関数が適用される。第１のデータ要素は、第１のデータタイプである。不可逆関数は、元の第１のデータ要素を得ることが不可能であるか、または元のデータ要素を得ることが非現実的に困難である結果を出力する任意の一方向関数である。ステップ２０１で適用される様々な不可逆変換の例は、ＤＲＢＧ、ＰＲＮＧ、および様々なハッシュ関数であり、いくつかの非限定的な例は、Ａｄｌｅｒ３２、ＣＲＣ３２、Ｈａｖａｌ、ＭＤ２、ＭＤ４、ＭＤ５、ＲｉｐｅｍＤ１２８、ＲｉｐｅｍＤ１６０、ＳＨＡ−１、ＳＨＡ−２５６、ＳＨＡ−３８４、ＳＨＡ−５１２、Ｔｉｇｅｒ、およびＷｈｉｒｌｐｏｏｌ等である。さらに、ステップ２０１で適用される不可逆関数は、１つ以上の不可逆関数の組み合わせを構成し得ることが理解される。また、ステップ２０１の不可逆変換は、最初に、固有のソルト（ｓａｌｔ）値を適用し、その後、入力シードとして増補された第１のデータ要素を用いて擬似乱数を生成することによって、第１のデータ要素を増補すること、または増補された第１のデータ要素にハッシュ関数を適用すること、またはこれらの技法の任意の組合せを含むことができることも理解されよう。
【００２５】
図３は、タイプＸ３０２のデータ要素などの元のデータ要素に不可逆変換３１４を適用するシステムのプロセス３００の一例を示す。例示の目的で、タイプＸ３０２のデータ要素は、ｘ＝４ＳＡＭ１２３であり、これは、１９８２年以降に発行されるタイプのカリフォルニア州のナンバープレート番号である（すなわち、この非限定的な例では、タイプＸは、１９８２年以降に発行されるタイプのカリフォルニア州のナンバープレート番号を示す）。例示の目的のために、この非限定的な例は、例示的な実施形態がどのようにマスクデータ要素を生成するかを実証するために全体を通して使用される。図３に示す例では、タイプＸのデータ要素ｘ３０２は、３１４で、ハッシュ関数ｍｄ５をデータ要素ｘに適用することによって、タイプＹの派生データ要素ｙ３０４を得るために変換され、例えば、ｘ＝４ＳＡＭ１２３、ｍｄ５（ｘ）＝５ｅ７ｅ３０ｄｆａ８ｄｃｌ６１ａｆｂ２９６６ｅａ９８１ｌｆ４１３は、派生データ要素３０４ｙである。
【００２６】
再び図２を参照すると、任意選択で、ステップ２１０で、不可逆変換、または不可逆関数、または一方向関数を、１つ以上のパラメータに基づいてルックアップテーブルから選択することができる。図３に示されるように、適用される変換３１４は、任意選択で、様々な不可逆変換のリストを含むルックアップテーブル３１０から選択することができる。ルックアップテーブル３１０からのこの選択は、例えば、１つ以上のパラメータ３１２に基づくことができ、これらのパラメータは、例えば、ユーザ、ユーザの許可、ユーザのアクセスレベル、要求しているアプリケーションのアクセスレベル、アプリケーションまたはアプリケーションが実行しているマシンの許可レベル、データ要素のインスタンス、データ要素が格納されているデータベーステーブル、データベースインスタンス、またはデータベースの特定の展開などの条件に関連付けることができる。あるいは、不可逆関数または不可逆変換３１４は、反復関数であってもよく、最初に１つの変換を適用し、次いで変換の一部、例えば最初の１０ビットを識別して、３１０から第２の変換を選択するためのインデックス３１２を得る。元のデータ要素（例えば、３０２）に不可逆変換３１４を適用するために不可逆変換３１０の選択を変更する可能性のある条件のタイプは、多数であり、本明細書に列挙されたものによって限定されるものではないが、とりわけ、データ要素値に関連する処理コストおよびコストを含む設計仕様およびコストに基づいてシステム設計者によって選択されることが理解されるであろう。
【００２７】
任意選択で、不可逆変換３１４を適用する前に、タイプＸ３０２のデータ要素を、一意のソルト値３１６を適用することによって増補することができる。この一意のソルト値は、非限定的な例として、とりわけ、特定のデータオブジェクトインスタンス、データベーステーブル、データベース、または特定の展開に固有のものとすることができる。例えば、セキュリティの理由から、設計者が、無許可のユーザまたはアプリケーションが、同じデータエントリ、例えば「Ｊｏｈｎ  Ｓｍｉｔｈ」が２つの別個のデータベースに存在することを「見る」ことを排除することを望む場合があり得る。例えば、データベースＡは、第１の会社によって管理されてもよく、データベースＢは、第２の会社によって管理されてもよく、データベースＡおよびデータベースＢのそれぞれは、エントリＪｏｈｎ  Ｓｍｉｔｈを有してもよい。各データベースのユーザまたはアプリケーションが、各データベースＡおよびＢが類似のエントリを有することを知ることを妨げられることが望ましい場合がある。不可逆変換３１４を適用する前にデータ要素３０２に固有のソルト３１６を適用することは、各実装、展開、またはインスタンスの派生データ要素３０４が異なることを保証する。
【００２８】
図４は、データタイプＸ４１０の例示的な構文定義に従ってタイプＸ４０２の例示的なデータ要素を特徴付け、データタイプＹ４３０の第２の例示的な構文定義に従ってタイプＹ４０４の第２の例示的なデータ要素を特徴付ける例示的なデータ構造４００を示す。データタイプＸ４１０の例示的な構文定義は、１９８２年以降に発行されたカリフォルニアナンバープレートのデータタイプを記述する。この例は、その例示目的のために選択され、開示された実施形態がデータタイプを記述するロバストな能力を実証する。データタイプＸ４１０は、３つのアルファベットＡｘｌ４１２、Ａｘ２４１４、およびＡｘ３４１６、ならびに位置マップ４１８、ならびに１組の条件４２０によって特徴付けられる。アルファベットＡｘｌ４１２は、大文字、例えば、｛Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ、Ｈ、Ｉ、Ｊ、Ｋ、Ｌ、Ｍ、Ｎ、Ｏ、Ｐ、Ｑ、Ｒ、Ｓ、Ｔ、Ｕ、Ｖ、Ｗ、Ｘ、Ｙ、Ｚ｝に対応する英字の値の集合を含むアルファベットである。Ａｘ１４１２は、長さＬ（Ａｘｌ）を有する。長さＬ（Ａｘｌ）は、集合内の値の数として計算され、Ｌ（Ａｘｌ）＝２６である。アルファベットＡｘ２４１４は、１０進数のすべての数字の集合を含み、例えば、Ａｘ２＝｛０、１、２、３、４、５、６、７、８、９｝であり、Ｌ（Ａｘ２）＝１０である。アルファベットＡｘ３４１６は、１０進数の数字のサブセットを含むアルファベットであり、例えば、Ａｘ３＝｛２、３、４、５、６、７｝であり、Ｌ（Ａｘ３）＝６である。
【００２９】
位置マップ４１８は、データタイプＸのデータ要素のデータ要素メンバーの数、例えばｘ４０２、の両方に関してデータタイプＸの全ての要素を特徴付ける。位置マップ４１８は、いずれのアルファベット（例えばＡｘｌ４１２、Ａｘ２４１４、またはＡｘ３４１６）によって、各データ要素メンバー（例えばデータ要素メンバーｘ６４２２）が特徴付けられるかを指定することによって、データタイプＸの全ての要素を特徴付ける。このように、データ要素ｘ４０２は、各値ｘｎがデータ要素メンバー（例えばデータ要素メンバーｘ６４２２）である７個の個別メンバーを有するデータ要素メンバーｘ６ｘ５ｘ４ｘ３ｘ２ｘ１ｘ０を含む。得られたデータ要素ｘ４０２は、各データ要素ｘｎを位置マップに従って順序付けることによって特徴付けられる。ｘ＝４ＳＡＭ１２３について説明すると、位置マップ４１８に明確に示されているように、ｘ６＝４∈Ａｘ３、ｘ５＝Ｓ∈Ａｘｌ、ｘ４＝Ａ∈Ａｘｌ、ｘ３＝Ｍ∈Ａｘｌ、ｘ２＝１∈Ａｘ２、ｘ１＝２∈Ａｘ２、Ｘ０＝３∈Ａｘ２である。
【００３０】
データタイプＸ４１０の構文定義は、１組の条件４２０を含む。この例示的な例では、開示された実施形態のデータ構造４００は、カリフォルニアが、３ＹＡＡ−３ＺＹＺで始まる一連のナンバープレートを発行しなかったため、１９８２年以降に発行されたカリフォルニアのナンバープレート番号が、データ要素メンバー３ＹＡＡ−３ＺＹＺの以下の範囲で始まる未発行のナンバープレートを除外するという事実を反映するために、条件４２０を含む。したがって、１９８２年以降に発行されたすべてのカリフォルニアナンバープレートのセット内のデータ要素、たとえばデータタイプＸを正確に記述するために、１つのデータ要素（たとえば４０２）に１つ以上の条件４２０が必要である。この条件を記述する１つの方法は、データ要素メンバーｘ６＝３∈ＡＸ３を有するデータ要素４０２に関して、データ要素メンバーｘ５ｘ４ｘ３が値ＹＡＡ∈ＡｘｌＡｘｌＡｘｌよりも小さくなければならないか、またはｘ５ｘ４ｘ３が値ＺＹＺ∈ＡｘｌＡｘｌＡｘｌよりも大きくなければならないと表現することである。条件は、任意の適切な様式で記載され、適用され得ることが理解される。例えば、１つ以上の条件４２０は、チェックサム、またはそうでなければ連続するセット内の任意の他の不連続な範囲の値、またはデータ要素メンバー位置および対応するアルファベットの観点で一般には表現できない任意の条件とすることができる。
【００３１】
図４は、データタイプＹ４３０の構文定義によって、データタイプＹの派生データ要素、例えば４０４をさらに特徴付ける。図から分かるように、データタイプＹは、データタイプＹ４３０の構文定義によって定義されるより単純な特徴付けである。定義４３０は、１つのアルファベット４３２と、データタイプＹの各データ要素メンバーを単一のアルファベットＡｙｉにマッピングする位置マップとに関して、データタイプＹの全ての要素（例えばｙ４０４）を特徴付ける。したがって、データタイプＹのデータ要素の３２個のデータ要素メンバーの各々（例えば、そのうちの１つがｙ３１４２４である）、例えばｙ＝５ｅ７ｅ３０ｄｆａ８ｄｃｌ６１ａｆｂ２９６６ｅａ９８１ｌｆ４１３のデータ要素は、長さＬ（Ａｙ１）＝１６を有するアルファベットＡｙ１４３２にマッピングされる。この例では、アルファベットＡｙ１４３２は、すべての１６進数０〜ｆのセットであるが、これらの例示的な例に基づいて、データタイプＹの派生データ要素、例えば、４０４は、適用される不可逆変換および結果の符号化に基づいて、任意の数のアルファベットおよび対応する位置によって特徴付けられてもよいことが理解されるであろう。
【００３２】
再び図２を参照すると、ステップ２０２において、マスキングテンプレートとして機能するテンプレートが選択される。このテンプレート（例えば、５０６）は、図５に示すシステムフロー図５００に例示されるような様々な実施形態に従って、派生データ要素（例えば、５０２）の一部から選択される。図５には、派生データ要素５０２のデータ要素メンバーのサブセットを選択する選択が行われることが例として示されている（５０４）。この選択は、アルゴリズムに従って行われ、例えば、派生データ要素５０２から選択オクテット２１〜２７（理解されるように、０から始まる右から数える）がテンプレートｔ５０６を生成し、ここで、ｔは、データタイプＹを記述する位置マップのサブセットによって特徴付けられるデータタイプＹ’である。例えば、図４に示される位置マップ４３４のサブセットは、データ要素メンバーｙ２７ｙ２６ｙ２５ｙ２４ｙ２３ｙ２２ｙ２１∈Ａｙ１によって特徴付けられる。したがって、データタイプＹ’の位置マップは、ｙ２７ｙ２６ｙ２５ｙ２４ｙ２３ｙ２２ｙ２１∈Ａｙ１に対応することが理解されよう。選択された部分の長さは、選択されたデータ要素メンバーの数に関して、データタイプＸの全ての要素のデータ要素メンバーの長さに対応する。この例示的な例では、７つのデータ要素メンバーが、派生データ要素５０２から７つのオクテットとして、例えばｙから選択されて、テンプレート５０６、例えばｔ＝３０ｄｆａ８ｄを生成する。各データ要素メンバーは、データ要素メンバー値を例えばＡＳＣＩＩ符号化テキストを表すバイナリとして表現する２進数数字のオクテットである。派生データ要素５０２の一部のこの選択５０４は、代わりに、任意の適切なアルゴリズムに従って行われてもよい。例えば、左から最初の７オクテットを選択するようにしても良い。別の適切なアルゴリズムでは、左から最初の３つの要素を選択し、右から最初の４つの要素を選択し、２つの選択を連結して、７つのデータ要素メンバーを含むテンプレートを形成することによって選択を行うことができる。選択されたデータメンバーの符号化は、任意の符号化とすることができ、アルゴリズムは、バイナリ符号化１６進数または１０進数としてデータ要素メンバーを異なるように選択することができることを理解されたい。派生データ要素ｙの符号化は、設計上の理由からシステム設計者によって選択される任意の適切な符号化とすることができ、したがって、システム要件および設計上の考慮事項に基づいて、選択された部分がどのように選択されるか（５０４）、および選択されたデータ要素メンバーにどのような符号化が適用されるかを設計者に選択させる。以下の例では、説明を容易にするために様々なエンコーディングが説明されるが、これらは、オリジナルのデータ要素、例えば、４０２が、マスクデータ要素を生成することによってどのようにマスクされるかを明確に示すために、例示を目的としていることが理解されるであろう。
【００３３】
再び図２を参照すると、ステップ２０２において、実施形態は、テンプレートを第２のデータタイプ、例えばデータタイプＹ’から第１のデータタイプ、データタイプＸに変換することによって、マスクデータ要素を生成する。例えば、データタイプＹ’のテンプレート５０６のこのデータ変換は、テンプレート５０６の個々のデータ要素メンバーの値に基づいて、データタイプＸである順序付けられたデータ要素メンバーのセットを生成する。図６のａおよびｂは、テンプレート（例えばｔ）をあるデータタイプから別のデータタイプに変換することによってマスクデータ要素を生成するプロセスを説明するフローチャートを示す。これらのフローチャートは、設計または符号化プロセスにおいて簡単に仮定することができるステップを明示的に示すことが理解されよう。例えば、値１２３４５は、左から右に示される順序を有すると仮定されるが、テンプレートが１つのデータタイプから別のデータタイプにどのように変換されるかを明瞭かつ具体的に実証するために、様々なステップが、明瞭化のために示される。最初に、ステップ６０１で、テンプレートｔの各データ要素メンバーに位置が割り当てられる。次に、ステップ６０２において、例えばオクテットによって特徴付けられるテンプレートｔの各要素メンバーが、所望のデータタイプのデータ要素を記述する位置マップに基づいて、１つ以上のアルファベットのうちの１つから選択された値にマッピングされる。このマッピングは、ステップ６０３、６０４、および６０５においてさらに説明される。
【００３４】
図７は、テンプレート（例えばｔ＝３０ｄｆａ８ｄに対応するテンプレート７０２）からマスクデータ要素を生成することに付随する変換プロセスにおける種々の中間ステップを示す。サブプロセス７５０において、各データ要素メンバーは、データ要素メンバーｔ０〜ｔ６に対応する位置７０４ａ〜７０５ｇに割り当てられる。例示の目的で、図示された例は、位置７０４ａ〜７０４ｇに割り当てられたｔ０〜ｔ６に対するデータ要素メンバーがＡＳＣＩＩ形式でコード化されると仮定する。例示の目的で、これらの値は、ＡＳＣＩＩ値の基礎をなす２進オクテットの１０進値または任意の他の底を利用することによって演算されてもよく、例えば、ＡＳＣＩＩ「３」は、１０進値「５１」に対応する８進値「６３」に対応する１６進値「３３」に対応する２進オクテット「００１１００１１」に対応する。実証を容易にするために図７に示される例示的な例では、値はそれらの対応する１０進値に変換される。
【００３５】
したがって、サブプロセス７６０において、ＡＳＣＩＩ値は、値に対する演算を実行するために、それらの１０進値に論理的に変換される。したがって、テンプレート７０２、ｔ＝３０ｄｆａ８ｄに対応するデータ要素メンバー７０４ａ〜７０４ｇを含むデータ要素７０４の表現は、７０６において、論理１０進数で「５１」、「４８」、「１００」、「１０２」、「９７」、「５６」、「１００」のデータ要素メンバー７０６ａ〜７０６ｇとして論理的に表される。これらの値は、所望のデータタイプ（例えば、元のデータ要素のデータタイプ、例えば、１１０、３０２、４０２、および７０２に対応する）の位置マップ、例えば（１０２または４１８）によって記述されるように、所望のアルファベット、例えば、１０２、４１２、４１４、または４１６内の値にマッピングされる必要がある。この例示的な実施形態では、このマッピングを達成するために、モジュロ除算が値７０６ａ〜７０６ｇの各々に適用され、ここで、基底モジュロは、関連する位置マップ、例えば１０２または４１８によって記述される所望のデータ要素メンバーに対応するアルファベット、例えば１０２、４１２、４１４または４１６の長さによって決定される。
【００３６】
図６のｂに戻って参照すると、ステップ６０２は、チャート６２０、ステップ６０３〜６０５で詳述される。第１に、基底モジュロは、関連する位置マップ、例えば、１０２、４１２、４１４、または４１６に記述されるように、各データ要素メンバー、またはオクテットの位置に対応するアルファベットの長さに基づいて、テンプレートの各オクテットに対して決定される。次に、ステップ６０４において、中間結果を得るために、各オクテットに対して決定された基底モジュロに基づいて、各オクテットに基底モジュロ除算が適用される。次に、ステップ６０５で、中間結果がそれぞれのアルファベットの第１の要素の値に加算されて、マスクデータ要素内のそれぞれの位置についてのマスクデータ要素メンバーが得られる。したがって、図７および図８に一例として示されるように、サブプロセス７７０において、７０６ｇについて、モジュロ除算は、モジュロ基底＝Ｌ（Ａｘ３）＝６を使用して１０進値「５１」に適用され、７０８ｇ＝３という結果を得て、７０６ｆについて、モジュロ除算は、モジュロ基底＝Ｌ（Ａｘｌ）＝２６を使用して１０進値「４８」に適用され、結果として７０８ｆ＝２２を得る。７０６ｅについては、モジュロ基底＝Ｌ（Ａｘｌ）＝２６を用いてモジュロ除算を１０進値「１００」に適用し、結果として７０８ｅ＝２２を得る。７０６ｄの場合、モジュロ基底＝Ｌ（Ａｘｌ）＝２６を使用してモジュロ除算が１０進値「１０２」に適用され、結果として７０８ｄ＝２４が得られる。７０６ｃの場合、モジュロ除算は、モジュロ基底＝Ｌ（Ａｘ２）＝１０を使用して１０進値「９７」に適用され、結果として７０８ｃ＝７が得られる。７０６ｂについて、モジュロ除算は、モジュロ基底＝Ｌ（Ａｘ２）＝１０を使用して１０進値「５６」に適用され、結果として７０８ｂ＝６を提供する。最後に、７０６ａについて、モジュロ基底＝Ｌ（Ａｘ２）＝１０を使用して、モジュロ除算が１０進値「１００」に適用され、結果７０８ａ＝０が与えられる。このプロセスは、中間結果データ要素７０８、７０８ｇ＝３、７０８ｆ＝２０、７０８ｅ＝２２、７０８ｄ＝２４、７０８ｃ＝７、７０８ｂ＝６、７０８ａ＝０を提供する。
【００３７】
中間結果データ要素７０８から、サブプロセス８８０において、各中間データ要素メンバー７０８ａ〜７０８ｇが、所望のマスクデータ要素の所望のデータタイプ、例えば８１２についての位置マップによって決定される対応するアルファベットの第１の値に加えられる。この例示におけるデータタイプＸのすべてのデータ要素は、データタイプＸの各要素、例えばマスクデータ要素ｘ＊８１２をそれぞれのアルファベット４１２、４１４、または４１６にマッピングする位置マップ４１８を含むデータタイプＸ４１０の構文定義によって記述されることを思い出されたい。したがって、ｘ＊８１２のデータ要素メンバーは、図８の位置８１０ａ〜８１０ｇに対応するｘ＊６ｘ＊５ｘ＊４ｘ＊３ｘ＊２ｘ＊１ｘ＊０であり、アルファベットにマッピングされ、ｘ＊６ｘ＊５ｘ＊４ｘ＊３ｘ＊２ｘ＊１ｘ＊０∈Ａｘ３Ａｘ１Ａｘ１Ａｘ１Ａｘ２Ａｘ２Ａｘ２となる。したがって、サブプロセス８８０は、アルファベットＡｘ３の第１の要素の値に、３の値を有する中間データ要素メンバー８０８ｇを追加し、中間データ要素メンバー８０８ｆ〜８０８ａにも同様の処理を行う。これにより、マスクデータ要素メンバー８１０ｇ＝「５」、８１０ｆ＝「Ｗ」、８１０ｅ＝「Ｗ」、８１０ｄ＝「Ｙ」、８１０ｃ＝「８」、８１０ｂ＝「７」、８１０ａ＝「１」が得られ、最終的にマスクデータ要素８１２ｘ＊＝５ＷＷＹ８７１が得られる。この値は、ｘ＊６が３に等しくないので、適用可能な例示的状態４２０に照らして保持され、従って、図１の機能フローブロック図を参照すると、１３０における判定は満たされ、マスクデータ要素８１２は、例えば、１１８に対応するシステムアウトプットである。
【００３８】
図９を参照すると、複数のアプリケーション９０１、９０２、９０３、９０４は、例えば、１つ以上のデータベース９１２、９１３、９１４、９１５に格納されたデータにアクセスを試みることができる。一実施形態では、アプリケーションは、要求がデータマスキングシステム９１０を介してルーティングされるようにデータを要求するように構成され、あるいは、データマスキングシステムは、アプリケーション９０１、９０２、９０３、９０４によるデータベース９１２、９１３、９１４、９１５への要求をインターセプトし、アプリケーションまたはアプリケーションのユーザに透過的な方法で要求を処理することができる。一実施形態では、アプリケーションは、データベース接続のために指定されたポートを利用するように構成され、システム９１０は、着信データ要求を受信するためにそれらのポートをリッスンするように構成される。あるいは、データマスキングシステム９１０は、アプリケーション９０１、９０２、９０３、９０４がデータベース要求を送信するように構成されるプロキシとして構成されてもよい。
【００３９】
図１０を参照すると、マスキングシステム１０００の一実施形態によれば、システム１０００と同様に、システム１０００は、要求アプリケーション、例えばアプリケーション９０１からデータベースクエリ１００１を受信し、データベースクエリは、例えばデータベース９１５上で実行される（１００５）。データベース照会１００６の結果がシステム１０００で受信されると、どのデータが要求され、受信されたらマスキング１００２が必要であるかについて、システム１０００によって判定が行われる。次いで、システムは、マスクされたデータをアプリケーション１００５に提供する前に、フォーマット保存マスキングを受信データ１００３に適用する。代替的に、どのデータがマスクされるべきかに関する決定１００２は、データが受信される１００３前に行われてもよく、システム１０００が、それがシステム１０００に受信されるときに、フォーマット保存データマスキングを受信されたデータ１００３に適用することを可能にすることも理解されよう。
【００４０】
図１１を参照すると、実施形態１１００を含むコンピューティング環境は、少なくともプロセッサ１１１５およびメモリ１１１４を有するコンピュータと、フォーマット保存データマスキングサービス１１１０と、１つ以上の通信ポート１１１１と、データベース接続サービス１１１２（１００１、１００５、１００６に対応する実施形態で開示される態様を含むことができる）と、ユーザインターフェース１１１６とを含むことができる。通信ポート１１１１は、アプリケーション１１０１、１１０２または１１０３によって送信されたクエリを受信し、マスクされたデータを含む結果をアプリケーション１１０１、１１０２または１１０３に送信する。データベース接続サービスは、様々な外部データベース１１２２、１１２３、１１２４、１１２５への接続を管理することができ、内部データベース１１１３へのデータベース接続も管理することができる。データベース接続サービス１１１２は、通信ポート１１１１に送信されたクエリを受信し、データベース１１１３、１１２２、１１２３、１１２４および１１２５のうちの１つ以上でこれらのクエリを実行する。データベース接続サービス１１１２は、フォーマット保存データマスキングサービス１１１０と通信して、要求されたデータをサービス１１１０に通知することができ、その結果、サービス１１１０は、どのデータがマスクされる必要があるか、また、どのマスキングがどの要求されたデータに適用されるべきかを、１つ以上の考慮に基づいて決定することができる。これらの考慮事項は、例えば、ユーザ、ユーザの許可、ユーザのアクセスレベル、要求アプリケーションのアクセスレベル、アプリケーションまたはアプリケーションが実行しているマシンの許可レベル、データ要素のインスタンス、データ要素が格納されているデータベーステーブル、データベースインスタンス、またはデータベースの特定の展開などの条件に関連付けることができ、１つ以上のパラメータの形態でフォーマット保存データマスキングサービス１１１０内に維持することができる。ユーザインタフェースモジュール１１１６は、さらに、上述の実施形態の構成、ならびにシステム管理者によるマスキングパラメータの入力および編集を可能にするために提供され得る。
【００４１】
様々な実施形態は、コンピュータ可読媒体上に記録され、１つ以上のプロセッサによって実行されるコンピュータソフトウェアコードからなることを開示する。実施形態が、この説明においてそれらの機能に関して開示される場合、それは、説明を明確にする目的のためであるが、別個のデバイスまたはコード部分である必要はなく、任意の特定の様式で分離または統合されて統合されてもよい。サービサー（ｓｅｒｖｉｃｅｒｓ）、ＰＣ、モバイルデバイス、ラップトップコンピュータ、タブレット、ハンドヘルドコンピューティングデバイス、またはこれらのデバイスの様々な組合せなど、様々なコンピュータデバイスを使用して実施形態を実装することができる。さらに、実施形態は、ソフトウェアコードで実装される必要はなく、代わりに、例えば、ＦＰＧＡ、ＡＳＩＣチップ、カスタマイズされたプロセッサ、ストレッチマイクロプロセッサ、ＤＳＰチップ、ＡＲＭプロセッサ、マイクロプロセッサ、システムオンチップベースのデバイスなどにハードコードされてもよい。
【００４２】
記載された実施形態を参照して本発明の原理を説明し例示してきたが、記載された実施形態は、そのような原理から逸脱することなく、配置および詳細において変更され得ることが認識されるであろう。本明細書で説明されるプログラム、プロセス、または方法は、別段の指示がない限り、任意の特定のタイプのコンピューティング環境に関連または限定されないことを理解されたい。様々なタイプの汎用または特殊化されたコンピューティング環境を、本明細書で説明される教示に従って使用するか、または動作を実行することができる。ソフトウェアに示される説明される実施形態の要素は、上述したように、ハードウェアで実施することができ、その逆も同様である。本発明の原理を適用することができる多くの可能な実施形態を考慮して、本発明者らは、以下の特許請求の範囲およびその均等物の範囲および精神内に入ることができるすべてのそのような実施形態を本発明として特許請求する。
【図１】
2019522269.tif 000003
【図２】
2019522269.tif 000004
【図３】
2019522269.tif 000005
【図４】
2019522269.tif 000006
【図５】
2019522269.tif 000007
【図６】
2019522269.tif 000008
【図７】
2019522269.tif 000009
【図８】
2019522269.tif 000010
【図９】
2019522269.tif 000011
【図１０】
2019522269.tif 000012
【図１１】
2019522269.tif 000013
【国際調査報告】
2019522269.tif 000014