(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6887446
(24)【登録日】2021年5月20日
(45)【発行日】2021年6月16日
(54)【発明の名称】データ関連アプリケーションデータをマスキングする方法、装置、およびコンピュータ読み取り可能な媒体
(51)【国際特許分類】
G06F 21/60 20130101AFI20210603BHJP
G06F 21/62 20130101ALI20210603BHJP
【FI】
G06F21/60 320
G06F21/62 309
G06F21/62 345
【請求項の数】54
【全頁数】22
(21)【出願番号】特願2018-561258(P2018-561258)
(86)(22)【出願日】2017年5月19日
(65)【公表番号】特表2019-522269(P2019-522269A)
(43)【公表日】2019年8月8日
(86)【国際出願番号】US2017033561
(87)【国際公開番号】WO2017205208
(87)【国際公開日】20171130
【審査請求日】2020年5月18日
(31)【優先権主張番号】15/161,586
(32)【優先日】2016年5月23日
(33)【優先権主張国】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】515160389
【氏名又は名称】インフォマティカ エルエルシー
(74)【代理人】
【識別番号】100120662
【弁理士】
【氏名又は名称】川上 桂子
(74)【代理人】
【識別番号】100140327
【弁理士】
【氏名又は名称】大塚 千秋
(72)【発明者】
【氏名】バラバイン、 イゴール
(72)【発明者】
【氏名】クメルサン、 バラ
【審査官】
平井 誠
(56)【参考文献】
【文献】
米国特許出願公開第2011/0113050(US,A1)
【文献】
米国特許出願公開第2010/0074441(US,A1)
【文献】
特開2005−141282(JP,A)
【文献】
特開2009−110179(JP,A)
【文献】
特開2017−092929(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/60−64
(57)【特許請求の範囲】
【請求項1】
データをマスキングするために1つ以上のコンピューティングデバイスによって実行される方法であって、
1つ以上のコンピューティングデバイスのうちの少なくとも1つによって、派生データ要素を生成するために、不可逆関数を第1のデータ要素に適用するステップであって、第1のデータ要素は第1のデータタイプであり、派生データ要素は第1のデータタイプとは異なる第2のデータタイプであり、前記第1のデータタイプのすべての要素が固定数の要素メンバーを固定数の位置に含み、前記第1のデータタイプは、前記要素メンバーのそれぞれを位置に基づいて1つ以上のアルファベットの1つにマッピングする構文定義によって特徴付けられる、ステップと、
1つ以上のコンピューティングデバイスのうちの少なくとも1つによって、派生データ要素の一部をテンプレートとして選択するステップであって、前記テンプレートとして選択された前記派生データ要素の一部が、前記第1のデータタイプの前記固定数の要素メンバーと等しい固定数のオクテットを含む、ステップと、
1つ以上のコンピューティングデバイスのうちの少なくとも1つによって、それぞれのオクテットに位置を割り当て、それぞれのオクテットの割り当て位置に対応する前記構文定義の前記1つ以上のアルファベットのうち1つのアルファベットを特定し、それぞれのオクテットを対応するアルファベットの値へマッピングすることより、前記第1のデータタイプのマスクデータ要素を生成するステップとを含む、方法。
【請求項2】
前記構文定義は、1つ以上のアルファベットおよび位置マップを含み、前記位置マップは、前記1つ以上のアルファベットに関して前記第1のデータタイプの構文構造を記述する、請求項1に記載の方法。
【請求項3】
前記位置マップは、前記要素メンバーの位置に基づいて、前記1つ以上のアルファベットのうちの1つによって各要素メンバーを特徴付けることによって、前記第1のデータタイプの全ての要素の構文構造を記述する、請求項2に記載の方法。
【請求項4】
前記1つ以上のアルファベットの各々は、数字、文字、または記号を含む値のセットを含む、請求項3に記載の方法。
【請求項5】
前記不可逆関数は、ハッシュ関数、決定性ランダムビット生成器、または擬似乱数生成器である、請求項4に記載の方法。
【請求項6】
前記第2のデータタイプは、2進数またはビットストリングである、請求項1に記載の方法。
【請求項7】
それぞれのオクテットは、文字または8ビットの2進数値に対応する、請求項1に記載の方法。
【請求項8】
前記1つ以上のアルファベットのそれぞれのアルファベットが、前記それぞれのアルファベットにおける複数の固有値に対応する長さを有し、
前記対応するアルファベット内の値に各オクテットをマッピングするステップが、各オクテットについて、
前記対応するアルファベットの長さに基づいて基底モジュロを決定するステップと、
結果を得るために、基底モジュロに基づいてオクテットに基底モジュラ除算を適用するステップと、
前記結果をそれぞれのアルファベットの最初の値に加算するステップと、
を含む、請求項1に記載の方法。
【請求項9】
前記第1のデータタイプは、条件のセットによってさらに特徴付けられる、請求項1に記載の方法。
【請求項10】
1つ以上のコンピューティングデバイスによって、マスクデータ要素が条件のセットを満たすかどうかを判定するステップと、
1つ以上のコンピューティングデバイスのうちの少なくとも1つによって、マスクデータ要素が条件のセットを満たさないという決定に少なくとも部分的に基づいて、第2のマスクデータ要素を生成するステップと、
をさらに含む、請求項9に記載の方法。
【請求項11】
第2のマスクデータ要素を生成するステップが、
1つ以上のコンピューティングデバイスのうちの少なくとも1つによって、不可逆関数をマスクデータ要素に適用するステップであって、第2の派生データ要素を生成し、前記第2の派生データ要素は第2のデータタイプである、ステップと、
1つ以上のコンピューティングデバイスのうちの少なくとも1つによって、前記第2の派生データ要素の少なくとも一部を第2のテンプレートとして選択するステップと、
1つ以上のコンピューティングデバイスのうちの少なくとも1つによって、第2のテンプレートを第2のデータタイプから第1のデータタイプに変換した結果として、第2のマスクデータ要素を生成するステップと、
を含む、請求項10に記載の方法。
【請求項12】
前記不可逆関数は、ルックアップテーブルに少なくとも部分的に基づいて複数の不可逆関数から選択される、請求項1に記載の方法。
【請求項13】
前記第1のデータ要素は、平文である、請求項1に記載の方法。
【請求項14】
前記第1のデータ要素が暗号化される、請求項1に記載の方法。
【請求項15】
前記テンプレートは、所定のアルゴリズムを使用して前記派生データ要素から選択される、請求項1に記載の方法。
【請求項16】
前記構文定義は、1つ以上のアルファベット、位置マップ、および1つ以上の条件を含む、請求項1に記載の方法。
【請求項17】
前記不可逆関数を前記第1のデータ要素に適用する前に、固有のソルトを使用して前記第1のデータ要素を増補するステップをさらに含む、請求項1に記載の方法。
【請求項18】
前記固有のソルトは、インスタンス、データベース、ハードウェア、要求アプリケーション、前記要求アプリケーションのユーザ、または配備に基づいて決定される、請求項17に記載の方法。
【請求項19】
データをマスキングする装置であって、
1つ以上のプロセッサと、
前記1つ以上のプロセッサの少なくとも1つに操作可能に結合され、命令を格納した1つ以上のメモリとを含み、
前記命令は、前記1つ以上のプロセッサの少なくとも1つに実行されたとき、前記1つ以上のプロセッサの少なくとも1つに、
派生データ要素を生成するために、不可逆関数を第1のデータ要素に適用するステップであって、第1のデータ要素は第1のデータタイプであり、派生データ要素は第1のデータタイプとは異なる第2のデータタイプであり、前記第1のデータタイプのすべての要素が固定数の要素メンバーを固定数の位置に含み、前記第1のデータタイプは、前記要素メンバーのそれぞれを位置に基づいて1つ以上のアルファベットの1つにマッピングする構文定義によって特徴付けられる、ステップと、
派生データ要素の一部をテンプレートとして選択するステップであって、前記テンプレートとして選択された前記派生データ要素の一部が、前記第1のデータタイプの前記固定数の要素メンバーと等しい固定数のオクテットを含む、ステップと、
それぞれのオクテットに位置を割り当て、それぞれのオクテットの割り当て位置に対応する前記構文定義の前記1つ以上のアルファベットのうち1つのアルファベットを特定し、それぞれのオクテットを対応するアルファベットの値へマッピングすることより、前記第1のデータタイプのマスクデータ要素を生成するステップと、
を実行させる、装置。
【請求項20】
前記構文定義は、1つ以上のアルファベットおよび位置マップを含み、前記位置マップは、前記1つ以上のアルファベットに関して前記第1のデータタイプの構文構造を記述する、請求項19に記載の装置。
【請求項21】
前記位置マップは、前記要素メンバーの位置に基づいて、前記1つ以上のアルファベットのうちの1つによって各要素メンバーを特徴付けることによって、前記第1のデータタイプの全ての要素の構文構造を記述する、請求項20に記載の装置。
【請求項22】
前記1つ以上のアルファベットの各々は、数字、文字、または記号を含む値のセットを含む、請求項21に記載の装置。
【請求項23】
前記不可逆関数は、ハッシュ関数、決定性ランダムビット生成器、または擬似乱数生成器である、請求項22に記載の装置。
【請求項24】
前記第2のデータタイプは、2進数またはビットストリングである、請求項19に記載の装置。
【請求項25】
それぞれのオクテットは、文字または8ビットの2進数値に対応する、請求項19に記載の装置。
【請求項26】
前記1つ以上のアルファベットのそれぞれのアルファベットが、前記それぞれのアルファベットにおける複数の固有値に対応する長さを有し、
前記対応するアルファベット内の値に各オクテットをマッピングするステップが、各オクテットについて、
前記対応するアルファベットの長さに基づいて基底モジュロを決定するステップと、
結果を得るために、基底モジュロに基づいてオクテットに基底モジュラ除算を適用するステップと、
前記結果をそれぞれのアルファベットの最初の値に加算するステップと、
を含む、請求項19に記載の装置。
【請求項27】
前記第1のデータタイプは、条件のセットによってさらに特徴付けられる、請求項19に記載の装置。
【請求項28】
マスクデータ要素が条件のセットを満たすかどうかを判定するステップと、
マスクデータ要素が条件のセットを満たさないという決定に少なくとも部分的に基づいて、第2のマスクデータ要素を生成するステップと、
を、少なくとも1つのプロセッサにさらに実行させる命令をさらに含む、請求項27に記載の装置。
【請求項29】
前記少なくとも1つのプロセッサに、第2のマスクデータ要素を生成させるステップが、
不可逆関数をマスクデータ要素に適用するステップであって、第2の派生データ要素を生成し、前記第2の派生データ要素は第2のデータタイプである、ステップと、
前記第2の派生データ要素の少なくとも一部を第2のテンプレートとして選択するステップと、
第2のテンプレートを第2のデータタイプから第1のデータタイプに変換した結果として、第2のマスクデータ要素を生成するステップと、
を含む、請求項28に記載の装置。
【請求項30】
前記不可逆関数は、ルックアップテーブルに少なくとも部分的に基づいて複数の不可逆関数から選択される、請求項19に記載の装置。
【請求項31】
前記第1のデータ要素は、平文である、請求項19に記載の装置。
【請求項32】
前記第1のデータ要素が暗号化される、請求項19に記載の装置。
【請求項33】
前記テンプレートは、所定のアルゴリズムを使用して前記派生データ要素から選択される、請求項19に記載の装置。
【請求項34】
前記構文定義は、1つ以上のアルファベット、位置マップ、および1つ以上の条件を含む、請求項19に記載の装置。
【請求項35】
前記不可逆関数を前記第1のデータ要素に適用する前に、固有のソルトを使用して前記第1のデータ要素を増補するステップをさらに含む、請求項19に記載の装置。
【請求項36】
前記固有のソルトは、インスタンス、データベース、ハードウェア、要求アプリケーション、前記要求アプリケーションのユーザ、または配備に基づいて決定される、請求項35に記載の装置。
【請求項37】
コンピュータ読み取り可能な命令を格納した、少なくとも1つの非一時的コンピュータ読み取り可能媒体であって、
前記命令は、1つ以上のコンピューティングデバイスによって実行されたとき、前記1つ以上のコンピューティングデバイスの少なくとも1つに、
派生データ要素を生成するために、不可逆関数を第1のデータ要素に適用するステップであって、第1のデータ要素は第1のデータタイプであり、派生データ要素は第1のデータタイプとは異なる第2のデータタイプであり、前記第1のデータタイプのすべての要素が固定数の要素メンバーを固定数の位置に含み、前記第1のデータタイプは、前記要素メンバーのそれぞれを位置に基づいて1つ以上のアルファベットの1つにマッピングする構文定義によって特徴付けられる、ステップと、
派生データ要素の一部をテンプレートとして選択するステップであって、前記テンプレートとして選択された前記派生データ要素の一部が、前記第1のデータタイプの前記固定数の要素メンバーと等しい固定数のオクテットを含む、ステップと、
それぞれのオクテットに位置を割り当て、それぞれのオクテットの割り当て位置に対応する前記構文定義の前記1つ以上のアルファベットのうち1つのアルファベットを特定し、それぞれのオクテットを対応するアルファベットの値へマッピングすることより、前記第1のデータタイプのマスクデータ要素を生成するステップと、
を実行させる、媒体。
【請求項38】
前記構文定義は、1つ以上のアルファベットおよび位置マップを含み、前記位置マップは、前記1つ以上のアルファベットに関して前記第1のデータタイプの構文構造を記述する、請求項37に記載の媒体。
【請求項39】
前記位置マップは、前記要素メンバーの位置に基づいて、前記1つ以上のアルファベットのうちの1つによって各要素メンバーを特徴付けることによって、前記第1のデータタイプの全ての要素の構文構造を記述する、請求項38に記載の媒体。
【請求項40】
前記1つ以上のアルファベットの各々は、数字、文字、または記号を含む値のセットを含む、請求項39に記載の媒体。
【請求項41】
前記不可逆関数は、ハッシュ関数、決定性ランダムビット生成器、または擬似乱数生成器である、請求項40に記載の媒体。
【請求項42】
前記第2のデータタイプは、2進数またはビットストリングである、請求項37に記載の媒体。
【請求項43】
それぞれのオクテットは、文字または8ビットの2進数値に対応する、請求項37に記載の媒体。
【請求項44】
前記1つ以上のアルファベットのそれぞれのアルファベットが、前記それぞれのアルファベットにおける複数の固有値に対応する長さを有し、
前記対応するアルファベット内の値に各オクテットをマッピングするステップが、各オクテットについて、
前記対応するアルファベットの長さに基づいて基底モジュロを決定するステップと、
結果を得るために、基底モジュロに基づいてオクテットに基底モジュラ除算を適用するステップと、
前記結果をそれぞれのアルファベットの最初の値に加算するステップと、
を含む、請求項37に記載の媒体。
【請求項45】
前記第1のデータタイプは、条件のセットによってさらに特徴付けられる、請求項37に記載の媒体。
【請求項46】
前記コンピュータ読み取り可能な命令が、実行されたときに、前記コンピュータデバイスに、
マスクデータ要素が条件のセットを満たすかどうかを判定するステップと、
マスクデータ要素が条件のセットを満たさないという決定に少なくとも部分的に基づいて、第2のマスクデータ要素を生成するステップと、
をさらに実行させる、請求項45に記載の媒体。
【請求項47】
第2のマスクデータ要素を生成させるステップが、
不可逆関数をマスクデータ要素に適用するステップであって、第2の派生データ要素を生成し、前記第2の派生データ要素は第2のデータタイプである、ステップと、
前記第2の派生データ要素の少なくとも一部を第2のテンプレートとして選択するステップと、
第2のテンプレートを第2のデータタイプから第1のデータタイプに変換した結果として、第2のマスクデータ要素を生成するステップと、
を含む、請求項46に記載の媒体。
【請求項48】
前記不可逆関数は、ルックアップテーブルに少なくとも部分的に基づいて複数の不可逆関数から選択される、請求項37に記載の媒体。
【請求項49】
前記第1のデータ要素は、平文である、請求項37に記載の媒体。
【請求項50】
前記第1のデータ要素が暗号化される、請求項37に記載の媒体。
【請求項51】
前記テンプレートは、所定のアルゴリズムを使用して前記派生データ要素から選択される、請求項37に記載の媒体。
【請求項52】
前記構文定義は、1つ以上のアルファベット、位置マップ、および1つ以上の条件を含む、請求項37に記載の媒体。
【請求項53】
前記不可逆関数を前記第1のデータ要素に適用する前に、固有のソルトを使用して前記第1のデータ要素を増補するステップをさらに含む、請求項37に記載の媒体。
【請求項54】
前記固有のソルトは、インスタンス、データベース、ハードウェア、要求アプリケーション、前記要求アプリケーションのユーザ、または配備に基づいて決定される、請求項53に記載の媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2016年5月23日に出願された米国非仮出願第15/161,586号の優先権を主張し、その開示は、その全体が参照により本明細書に組み込まれる。
【発明の概要】
【0002】
データマスキングまたは編集は、権限のないユーザによる機密データへのアクセスを防止する重要なデータ管理技術である。データマスキングは、記憶されたデータに任意の時期に適用されてもよいし、データ要素が永続的データストア内で変更されるときに適用されてもよいし、伝送中のデータであって、データ要素がデータ利用者に送信される間に変更されるデータ、に適用されてもよい。
【0003】
データマスキング技術は、データを可逆的にマスキングすることを含む。可逆データマスキングは、そのマスキングされた表現からオリジナルデータの回復を可能にする。データ要素暗号化は、可逆データマスキング技術の一例である。あるいは、不可逆データマスキングは、オリジナルデータ要素を、そのオリジナルコンテンツが完全にまたは部分的に失われるように変換する。例えば、1つの不可逆マスキング技術は、文字列のサブストリングを抽出し、残りの文字を任意の値に置き換える。
【0004】
従来のデータマスキングは、アプリケーションに優しいものではない。部分的な編集などの従来のデータマスキング技術が適用される場合、アプリケーションは、マスキングされていない元のデータ要素を用いた場合とは異なる結果を生成する。これは、特に、機密データが、例えば、PA12345678などのデータ要素として格納された運転免許証番号などの、フォーマットされたデータ文字列として構文的に定義される場合に見られることである。上記の例では、最初の2つのデータ要素メンバーは、発行した州を表し、50個の2文字の州識別子のセットに制限される。そのような場合、アプリケーションによって受信されるデータ要素ZX87654321をもたらすマスキングは、アプリケーションが50の州識別子のうちの1つを予測する場合、処理中にエラーをもたらす可能性がある。あるいは、例えば、各々がマスクされたクレジットカード番号の最初の12桁(例えば、xxxx−xxxx−xxxx−1234)を有するデータ要素を含むデータセット上の照会は、口座番号の最後の4桁が同じである重複する可能性のあるクレジットカードのために、マスクされていないデータセット上の照会とは異なる結果を生成し得る。フォーマット保存暗号化技術(「FPE」)は、特定の望ましい特性を示すが、特殊なフォーマット変換規則を有するデータ要素を処理することが困難であり(または全く不可能である)、機密暗号材料の管理を必要とする。例えば、カリフォルニアのナンバープレートは、カリフォルニアのナンバープレートの最初のメンバーが2から7の間の数字であり、次の3つのメンバーが文字であり、最後の3つのメンバーが0から9の間の数字であるように、構文的に構築されたフォーマットを有する。FPEは、データオブジェクトコンポーネント間の独立性のために、カリフォルニアのナンバープレート番号などの複雑なデータ要素について、意味的に正しい変換を実行することができない。例えば、3文字コードは、シリアル番号値から導出することができず、その逆も同様である。ナンバープレート番号の意味的正しさを達成するために3文字コードを調整しようとすると、解読中に元の情報が失われたり、データベースに格納された追加情報が必要となり、データベース内の保護されたデータオブジェクトのサイズが事実上増加する。
【0005】
したがって、同じ条件下でデータマスキングシステムによって変換されたときに、元のデータ要素の各インスタンスが、同じフォーマットを有する同じマスクデータ要素をもたらすように、決定論的な様式でフォーマットを保存しながらデータをマスキングするためのシステムにおいて、改善が必要とされる。
【図面の簡単な説明】
【0006】
【
図1】
図1は、例示的な実施形態のマスクデータ要素(マスクされたデータ要素)を生成するための機能フローブロック図を示す。
【
図2】
図2は、例示的な実施形態による、マスクデータ要素を生成するための方法のフローチャートを示す。
【
図3】
図3は、例示的な実施形態による不可逆変換を適用するための機能フローブロック図を示す。
【
図4】
図4は、例示的な実施形態による、構文的に定義されたデータタイプに従ってデータ要素を特徴付けることを示す。
【
図5】
図5は、例示的な実施形態による、派生データ要素からテンプレートを選択するための機能フローブロック図を示す。
【
図6】
図6のa〜bは、例示的な実施形態による、マスクデータ要素を生成するための中間データ要素を生成するための方法のフローチャートを示す。
【
図7】
図7は、例示的な実施形態による、マスクデータ要素を生成するためのテンプレートから中間データ要素を生成するための機能フローブロック図を示す。
【
図8】
図8は、例示的な実施形態による、テンプレートからマスクデータ要素を生成するための機能フローブロック図を示す。
【
図9】
図9は、例示的な実施形態によるシステムの機能ブロック図である。
【
図10】
図10は、例示的な実施形態によるシステムの機能ブロック図である。
【
図11】
図11は、元のデータ要素からマスクデータ要素を生成する方法を実行するために使用することができる例示的なコンピューティング環境を示す。
【発明を実施するための形態】
【0007】
本明細書では、方法と、装置と、コンピュータ可読媒体とを、例および実施形態として説明するが、当業者は、フォーマット保存データマスキングを利用してマスキングされたデータ要素を生成するための方法、装置と、コンピュータ可読媒体とが、説明された実施形態または図面に限定されないことを認識する。図面および説明は、開示された特定の形態に限定されることを意図していないことを理解されたい。むしろ、意図は、添付の特許請求の範囲の精神および範囲内に入るすべての修正、等価物、および代替物を網羅することである。本明細書で使用される見出しはいずれも、編成目的のためだけのものであり、説明または特許請求の範囲を限定することを意味しない。本明細書で使用されるように、単語「することができる(may)」は、必須の意味(すなわち、必須の意味)ではなく、許容される意味(すなわち、可能性を有することを意味する)で使用される。同様に、単語「含む(include)」、「含む(including)」、および「含む(includes)」は、これに限定されないが、含んでいることを意味する。
【0008】
従来のマスキングの制限により、マスキングされたデータに対して動作するビジネスアプリケーションからロバストな結果を得るために、オリジナルデータ要素のフォーマットを保存するためのマスキングメカニズムを提供するための改良された技術が望ましい。本出願人は、フォーマット保存データマスキングを利用して、元のデータ要素からマスクされたデータ要素(マスクデータ要素)を生成するための方法、装置、およびコンピュータ可読媒体を発見した。開示される方法、媒体、およびシステムは、データタイプ、データ位置、1つ以上の基底セットまたはアルファベット、およびセキュリティパラメータなどの1つ以上の属性によるデータオブジェクトの特徴付けを含む。より具体的には、開示される方法およびシステムは、ユーザにとって透過的であり、マスクされた機密データに依存するアプリケーションのロバストな性能を維持する形で機密データをマスクするために機密データ要素を処理することを含み、その結果、コンピューティング環境の性能に悪影響を与えることなく、より安全なコンピューティング環境、および/または従来のマスキング技法よりもコンピューティング環境の性能を改善しながら、より安全なコンピューティング環境をもたらす。
【0009】
本出願人は、コンピュータが異なる方法でデータ要素を処理することを可能にするために、データ要素のセットの構文的特徴付けに基づいてデータ要素を変換する新規なアプローチを発見した。データオブジェクト、例えば、機密データオブジェクトの構文的特徴付けは、同じタイプのデータ要素のセット、例えば、上述のカリフォルニアライセンスプレート番号などの特定の順序で配列された異なるタイプの値を含む順序付けられたペアの意味フォーマットを記述する方法である。
【0010】
本システムは、データタイプXを有する元のデータ要素、例えばデータ要素xのフォーマットを保存するための新規な技術を利用する。マスクデータ要素、例えばマスクデータ要素x*を得るためにマスキング手順が適用される場合、x、x*∈X、すなわちデータ要素xおよびマスクデータ要素x*はそれぞれ、データタイプXを有するすべての要素セットの要素である。言い換えれば、本明細書で開示される様々な実施形態は、要素xの別の要素x*への一方向マッピングF(x)を提供する。ここで、xおよびx*は、同じ構文定義フォーマットを有する。
【0011】
実施形態は、特定のタイプのデータ要素または特定のタイプのデータタイプに限定されない。データ要素は、限定はしないが、連続数、不連続数、ストリング、またはシンボルの形態をとることができ、それらのいずれもが特別な条件に従うこともできる。データ要素は、順序付けられた配列またはランダムな配列の番号データ要素メンバーから構成される。各データ要素またはデータ要素メンバーは、16進、8進、10進、10進の2進、2進数、ASCII値に対応する2進数、2進数として格納された10進数とASCII値として格納された文字数と記号との組み合わせ、または上記の任意の組み合わせなどの任意のタイプの符号化に従って表され、格納され得る。データ要素が格納されるとき、データ要素が検索されるとき、データが通信されるとき、データが処理されるとき、およびデータがユーザに表示されるとき、任意のタイプの符号化を使用して、データ要素を含む値を表すことができることを理解されたい。また、データ要素の符号化は、符号化の効率または実装のシステム効率を達成するための必要性によって、または設計によって、処理の過程で起こり得ることも理解されよう。また、記憶、検索、処理、通信等の過程におけるデータの様々な変換は、すべて、本明細書に開示されるデータマスキングシステムの様々な実施形態によって処理されることも理解されよう。
【0012】
実施形態は、データマスキングデータ要素が検索され、通信され、または処理されるときに、中間値またはマスク値(マスクされた値)をそれらが必要とされた後に格納する必要なく、データマスキングデータ要素を適用する動的な様式で動作することができ、なぜなら、各オリジナルデータ要素は、常に、同じ条件下で同じフォーマットが保存されたマスクデータ要素をもたらすからである。例えば、条件は、ユーザ、ユーザ認証、ユーザアクセスレベル、要求アプリケーションのアクセスレベル、アプリケーションまたはアプリケーションが実行しているマシンの認証レベル、データ要素のインスタンス、データ要素が格納されているデータベーステーブル、データベースインスタンス、またはデータベースの特定の展開とすることができる。データ要素のマスキングを変更し得る条件のタイプは、多数であり、本明細書に列挙されたものによって限定されず、とりわけ、データ要素値に関連する処理コストおよびコストを含む設計仕様およびコストに基づいてシステム設計者によって選択されることが理解されるであろう。
【0013】
本明細書で開示される実施形態は、暗号化方式を必要とせず、したがって、暗号化の使用に関連するいかなる制限もなく、同時に、データマスキング能力によって提供されるマスキング能力は、機密暗号情報を管理する必要なく、FPEなどの暗号化技術に依存するデータマスキング技術と同等であるか、またはそれを超えることがさらに理解されるであろう。また、本明細書で開示されるデータマスキングは、暗号化ベースのアプローチでは不可能な特殊なフォーマット保存変換ルールの妨げられない適用によって、同等の暗号化ベースのソリューションよりも著しく高い柔軟性を有することも理解されよう。
【0014】
本明細書で説明される実施形態は、暗号化に依存しないが、特定のシステムにおける暗号化メカニズムから独立している一方で、暗号化されたデータと互換性がある。したがって、本明細書に開示されるデータマスキングメカニズムは、データオブジェクト暗号化のプロセスとフォーマット保存プレゼンテーションのプロセスを分離することを可能にする。本発明の例示的な実装では、データベース内のデータオブジェクトは、ガロアカウンタモード(GCM:Galois/Counter Mode)におけるAES暗号化などの標準的な暗号方法を使用して暗号化され、または、限定はしないが、フォーマット保存変換がリモートプロキシサービスによって実行される間、任意の他の標準的なブロック暗号アプリケーションモードを使用して暗号化される。
【0015】
この説明は、複雑な構文的に定義されたデータ要素が1つ以上の実施形態に従ってどのように処理され得るかを示すためにライセンスプレート番号のマスキングを含む例を含むが、開示された方法、システム、およびコンピュータ可読媒体はまた、銀行口座番号、バッジ番号、識別番号、分類番号、名前、クレジットカード番号などの任意のデータオブジェクトの機密データ要素をマスクするために利用され得る。
【0016】
図1は、例示的な実施形態100の機能フローブロック図によって、元のデータ要素からマスクデータ要素を生成する例を示す。ここで、元のデータ要素はデータ要素110である。データ要素110は、1つ以上のデータ要素メンバーから構成されてもよい。例えば、それは、7つのメンバー、あるいは16個のメンバー、あるいは任意に多数または少数のメンバーから構成されてもよい。各メンバーは、特定のデータタイプに従って符号化され、順序付けられた方法で配列されてもよい。
【0017】
最初に、不可逆関数120がデータ要素110に適用される。不可逆関数は一方向関数である。不可逆関数120は、例えば、ハッシュ関数、決定性ランダムビットジェネレータ(「DRBG」)、または擬似乱数ジェネレータ(「PRNG」)であってもよい。不可逆関数は、例えば、sha−256またはmd5であり得る。任意の一方向関数は、それが所与の入力セットに対して同じ出力に決定論的に到達する限り、使用されてもよく、不可逆関数の特定の形式は、システムのセキュリティ要件に基づいて選択され得ることが理解されるであろう。
【0018】
不可逆関数120は、データ要素110に適用されると、
派生データ要素112を出力する。不可逆変換120としてどちらの方向関数が選択されるかに応じて、結果として得られる派生データ要素は、データ要素110と同じデータタイプではなく、すなわち派生データ要素112がデータ要素110と同じ方法で構文的に定義されない均一なフォーマットで符号化された固定数の値を含む。
派生データ要素112は、例えば、不可逆変換がmd5である場合、例えば、2進数で符号化された32個の16進メンバー、2個の16進数から8進数で符号化された32個のメンバーを含むことができ、あるいは、それぞれがASCIIで符号化された32個のメンバーのストリングとして符号化することができる。あるいは、例えば、不可逆関数120がadler32である場合、
派生データ要素112は、8つの値のストリングであってもよい。
【0019】
より長い
派生データ要素112が望まれる場合、例えば、md5を不可逆関数120として使用して、32個のメンバーを含む
派生データ要素をもたらすが、所与のデータ要素xはデータタイプXのものであり、50個のデータ要素メンバーを含む要素を有する場合、
派生データ要素の要素メンバーの長さは、例えば、md5をxに適用し、その結果をハッシュし、2つの値を連結することによって増加させることができる。例えば、結果として得られる
派生データ値は、md5(x)||md5(md5(x))であってもよい。このプロセスを繰り返して、少なくとも任意の所望のサイズの
派生データ値を得ることができる。
【0020】
テンプレート114は、派生データ要素112の一部から選択される(122)。テンプレート114のこの選択は、任意の適切な方法で達成することができる。例えば、長さ10のデータ要素x110、すなわち、L(x)=10の場合、テンプレート114の選択は、左から数えて、派生データ要素112の第1の10個の派生データ要素メンバーを選択することによって達成される。あるいは、テンプレート114の選択は、右から10個の派生データ要素メンバーを選択することによって達成することができる。あるいは、テンプレート114の選択は、左または右のいずれかから26番目から35番目の派生データ要素メンバーを選択することによって達成することができる。派生データ要素112からテンプレート114を選択するために、任意の適切な決定論的アルゴリズムを使用できることが理解されよう。
【0021】
次に、124で構文定義101をテンプレート114に適用することによって、マスクデータ要素118が得られる。構文定義101は、1つ以上のアルファベット102、位置マップ104、および一組の条件106に関して、データタイプXのすべての要素を特徴付ける。例えば、上述のように、1982年以降に発行されたカリフォルニアのナンバープレート、例えば、x=4SAM123は、フォーマットmSSnnnによって構文的に定義され、ここで、mは、2から9の間の数字のアルファベットから取られ、SSSは、英語のアルファベットから取られた3つの文字のシーケンス、すなわち、文字A〜Zのセットであり、nnnは、0から9の3桁の数字のシーケンスである。カリフォルニア州の乗用車ナンバープレート番号の特別な条件は、文字列中の欠落部分(ギャップ)である。ナンバープレート3YAA−3ZYZシリーズは発行されなかった。簡潔にするために簡略化したが、上記の例は、身近なデータオブジェクトタイプの特徴付けを完全に示している。
【0022】
mSSSnnn形式の構文複合体を有するカリフォルニアのナンバープレートデータ要素x、例えば110は、データタイプXであり、0≦n≦6のデータ要素メンバーx
nはx
6x
5x
4x
3x
2x
1x
0の形式で順序付けられる。データタイプXの全ての要素は、x
6∈m、x
5x
4x
3∈SSS、x
2x
1x
0∈nnnのフォームのメンバーを含む。ここで、x
nは0≦n≦6の1つのオクテットを含む。例えばx
6∈mはタイプmの1つのオクテットを含み、SSSはタイプSの3つのオクテットを含み、nnnはタイプnの3つのオクテットを含み、例えば各オクテットはASCII文字または8ビットの2進数であり、xは合計で7オクテットである。データタイプXの各データ要素xは、メンバデータ要素を含み、各メンバデータ要素は、以下のアルファベットの1つによって特徴付けられる。x
5,x
4,x
3∈S∈A
1={ABCD...XYZ};x
2,x
1,x
0∈n∈A
2={0123456789};x
6∈m∈A
3={234567}である。したがって、mSSSnnn形式のデータ要素メンバーx
6x
5x
4x
3x
2x
1x
0として表される構文複合データ要素x、例えば110は、各データ要素メンバーをアルファベット102、例えば位置マップ104にマッピングする位置マップに関連付けられる。x
6x
5x
4x
3x
2x
1x
0∈A
3A
2A
2A
2A
1A
1A
1である。データタイプXの構文複合語x、例えばデータ要素110は、更に、1組の条件106(これらの特別な条件は、データ要素xにおける不連続性を許容する)に関連付けられ、例えば条件106は以下の通りである。x
6=3∈A
3の場合、以下の条件が適用される。x
5x
4x
3<YAA または x
5x
4x
3>ZYZ。
【0023】
テンプレート114に構文定義101を適用する(124)ことは、任意の適切な方法によってテンプレートをデータタイプXに変換することによって、マスクデータ要素118を生成する。マスクデータ要素118が構文定義に適合するために1つ以上の条件106が満たされなければならない場合、ステップ130で条件がチェックされ、条件が満たされたと判断される。条件が満たされない場合、結果は無効なマスクデータ要素116である。次に、不可逆関数120が無効なマスクデータ要素116に適用され、システムは再び上述の方法を実行し、条件が満たされるまでこれを繰り返し、マスクデータ要素118を生成する。
【0024】
図2は、第1のデータオブジェクトからマスクデータ要素を生成するための方法のフローチャート200を示し、第1のデータオブジェクトは、例えば、アプリケーションによってデータベースから要求された機密データオブジェクトであってもよい。ステップ201において、第1のデータ要素を第2のデータタイプの第2のデータ要素に不可逆的に変換する第1のデータタイプの第1のデータ要素に不可逆関数が適用される。第1のデータ要素は、第1のデータタイプである。不可逆関数は、元の第1のデータ要素を得ることが不可能であるか、または元のデータ要素を得ることが非現実的に困難である結果を出力する任意の一方向関数である。ステップ201で適用される様々な不可逆変換の例は、DRBG、PRNG、および様々なハッシュ関数であり、いくつかの非限定的な例は、Adler32、CRC32、Haval、MD2、MD4、MD5、RipemD128、RipemD160、SHA−1、SHA−256、SHA−384、SHA−512、Tiger、およびWhirlpool等である。さらに、ステップ201で適用される不可逆関数は、1つ以上の不可逆関数の組み合わせを構成し得ることが理解される。また、ステップ201の不可逆変換は、最初に、固有のソルト(salt)値を適用し、その後、入力シードとして増補された第1のデータ要素を用いて擬似乱数を生成することによって、第1のデータ要素を増補すること、または増補された第1のデータ要素にハッシュ関数を適用すること、またはこれらの技法の任意の組合せを含むことができることも理解されよう。
【0025】
図3は、タイプX302のデータ要素などの元のデータ要素に不可逆変換314を適用するシステムのプロセス300の一例を示す。例示の目的で、タイプX302のデータ要素は、x=4SAM123であり、これは、1982年以降に発行されるタイプのカリフォルニア州のナンバープレート番号である(すなわち、この非限定的な例では、タイプXは、1982年以降に発行されるタイプのカリフォルニア州のナンバープレート番号を示す)。例示の目的のために、この非限定的な例は、例示的な実施形態がどのようにマスクデータ要素を生成するかを実証するために全体を通して使用される。
図3に示す例では、タイプXのデータ要素x302は、314で、ハッシュ関数md5をデータ要素xに適用することによって、タイプYの派生データ要素y304を得るために変換され、例えば、x=4SAM123、md5(x)=5e7e30dfa8dcl61afb2966ea981lf413は、派生データ要素304yである。
【0026】
再び
図2を参照すると、任意選択で、ステップ210で、不可逆変換、または不可逆関数、または一方向関数を、1つ以上のパラメータに基づいてルックアップテーブルから選択することができる。
図3に示されるように、適用される変換314は、任意選択で、様々な不可逆変換のリストを含むルックアップテーブル310から選択することができる。ルックアップテーブル310からのこの選択は、例えば、1つ以上のパラメータ312に基づくことができ、これらのパラメータは、例えば、ユーザ、ユーザの許可、ユーザのアクセスレベル、要求しているアプリケーションのアクセスレベル、アプリケーションまたはアプリケーションが実行しているマシンの許可レベル、データ要素のインスタンス、データ要素が格納されているデータベーステーブル、データベースインスタンス、またはデータベースの特定の展開などの条件に関連付けることができる。あるいは、不可逆関数または不可逆変換314は、反復関数であってもよく、最初に1つの変換を適用し、次いで変換の一部、例えば最初の10ビットを識別して、310から第2の変換を選択するためのインデックス312を得る。元のデータ要素(例えば、302)に不可逆変換314を適用するために不可逆変換310の選択を変更する可能性のある条件のタイプは、多数であり、本明細書に列挙されたものによって限定されるものではないが、とりわけ、データ要素値に関連する処理コストおよびコストを含む設計仕様およびコストに基づいてシステム設計者によって選択されることが理解されるであろう。
【0027】
任意選択で、不可逆変換314を適用する前に、タイプX302のデータ要素を、一意のソルト値316を適用することによって増補することができる。この一意のソルト値は、非限定的な例として、とりわけ、特定のデータオブジェクトインスタンス、データベーステーブル、データベース、または特定の展開に固有のものとすることができる。例えば、セキュリティの理由から、設計者が、無許可のユーザまたはアプリケーションが、同じデータエントリ、例えば「John Smith」が2つの別個のデータベースに存在することを「見る」ことを排除することを望む場合があり得る。例えば、データベースAは、第1の会社によって管理されてもよく、データベースBは、第2の会社によって管理されてもよく、データベースAおよびデータベースBのそれぞれは、エントリJohn Smithを有してもよい。各データベースのユーザまたはアプリケーションが、各データベースAおよびBが類似のエントリを有することを知ることを妨げられることが望ましい場合がある。不可逆変換314を適用する前にデータ要素302に固有のソルト316を適用することは、各実装、展開、またはインスタンスの派生データ要素304が異なることを保証する。
【0028】
図4は、データタイプX410の例示的な構文定義に従ってタイプX402の例示的なデータ要素を特徴付け、データタイプY430の第2の例示的な構文定義に従ってタイプY404の第2の例示的なデータ要素を特徴付ける例示的なデータ構造400を示す。データタイプX410の例示的な構文定義は、1982年以降に発行されたカリフォルニアナンバープレートのデータタイプを記述する。この例は、その例示目的のために選択され、開示された実施形態がデータタイプを記述するロバストな能力を実証する。データタイプX410は、3つのアルファベットA
xl412、A
x2414、およびA
x3416、ならびに位置マップ418、ならびに1組の条件420によって特徴付けられる。アルファベットA
xl412は、大文字、例えば、{A、B、C、D、E、F、G、H、I、J、K、L、M、N、O、P、Q、R、S、T、U、V、W、X、Y、Z}に対応する英字の値の集合を含むアルファベットである。A
x1412は、長さL(A
xl)を有する。長さL(A
xl)は、集合内の値の数として計算され、L(A
xl)=26である。アルファベットA
x2414は、10進数のすべての数字の集合を含み、例えば、A
x2={0、1、2、3、4、5、6、7、8、9}であり、L(A
x2)=10である。アルファベットA
x3416は、10進数の数字のサブセットを含むアルファベットであり、例えば、A
x3={2、3、4、5、6、7}であり、L(A
x3)=6である。
【0029】
位置マップ418は、データタイプXのデータ要素のデータ要素メンバーの数、例えばx402、の両方に関してデータタイプXの全ての要素を特徴付ける。位置マップ418は、いずれのアルファベット(例えばA
xl412、A
x2414、またはA
x3416)によって、各データ要素メンバー(例えばデータ要素メンバーx
6422)が特徴付けられるかを指定することによって、データタイプXの全ての要素を特徴付ける。このように、データ要素x402は、各値x
nがデータ要素メンバー(例えばデータ要素メンバーx
6422)である7個の個別メンバーを有するデータ要素メンバーx
6x
5x
4x
3x
2x
1x
0を含む。得られたデータ要素x402は、各データ要素x
nを位置マップに従って順序付けることによって特徴付けられる。x=4SAM123について説明すると、位置マップ418に明確に示されているように、x
6=4∈A
x3、x
5=S∈A
xl、x
4=A∈A
xl、x
3=M∈A
xl、x2=1∈A
x2、x1=2∈Ax2、X
0=3∈A
x2である。
【0030】
データタイプX410の構文定義は、1組の条件420を含む。この例示的な例では、開示された実施形態のデータ構造400は、カリフォルニアが、3YAA−3ZYZで始まる一連のナンバープレートを発行しなかったため、1982年以降に発行されたカリフォルニアのナンバープレート番号が、データ要素メンバー3YAA−3ZYZの以下の範囲で始まる未発行のナンバープレートを除外するという事実を反映するために、条件420を含む。したがって、1982年以降に発行されたすべてのカリフォルニアナンバープレートのセット内のデータ要素、たとえばデータタイプXを正確に記述するために、1つのデータ要素(たとえば402)に1つ以上の条件420が必要である。この条件を記述する1つの方法は、データ要素メンバーx
6=3∈A
X3を有するデータ要素402に関して、データ要素メンバーx
5x
4x
3が値YAA∈A
xlA
xlA
xlよりも小さくなければならないか、またはx
5x
4x
3が値ZYZ∈A
xlA
xlA
xlよりも大きくなければならないと表現することである。条件は、任意の適切な様式で記載され、適用され得ることが理解される。例えば、1つ以上の条件420は、チェックサム、またはそうでなければ連続するセット内の任意の他の不連続な範囲の値、またはデータ要素メンバー位置および対応するアルファベットの観点で一般には表現できない任意の条件とすることができる。
【0031】
図4は、データタイプY430の構文定義によって、データタイプYの派生データ要素、例えば404をさらに特徴付ける。図から分かるように、データタイプYは、データタイプY430の構文定義によって定義されるより単純な特徴付けである。定義430は、1つのアルファベット432と、データタイプYの各データ要素メンバーを単一のアルファベットA
yiにマッピングする位置マップとに関して、データタイプYの全ての要素(例えばy404)を特徴付ける。したがって、データタイプYのデータ要素の32個のデータ要素メンバーの各々(例えば、そのうちの1つがy
31424である)、例えばy=5e7e30dfa8dcl61afb2966ea981lf413のデータ要素は、長さL(A
y1)=16を有するアルファベットA
y1432にマッピングされる。この例では、アルファベットA
y1432は、すべての16進数0〜fのセットであるが、これらの例示的な例に基づいて、データタイプYの派生データ要素、例えば、404は、適用される不可逆変換および結果の符号化に基づいて、任意の数のアルファベットおよび対応する位置によって特徴付けられてもよいことが理解されるであろう。
【0032】
再び
図2を参照すると、ステップ202において、マスキングテンプレートとして機能するテンプレートが選択される。このテンプレート(例えば、506)は、
図5に示すシステムフロー
図500に例示されるような様々な実施形態に従って、派生データ要素(例えば、502)の一部から選択される。
図5には、派生データ要素502のデータ要素メンバーのサブセットを選択する選択が行われることが例として示されている(504)。この選択は、アルゴリズムに従って行われ、例えば、派生データ要素502から選択オクテット21〜27(理解されるように、0から始まる右から数える)がテンプレートt506を生成し、ここで、tは、データタイプYを記述する位置マップのサブセットによって特徴付けられるデータタイプY’である。例えば、
図4に示される位置マップ434のサブセットは、データ要素メンバーy
27y
26y
25y
24y
23y
22y
21∈A
y1によって特徴付けられる。したがって、データタイプY’の位置マップは、y
27y
26y
25y
24y
23y
22y
21∈A
y1に対応することが理解されよう。選択された部分の長さは、選択されたデータ要素メンバーの数に関して、データタイプXの全ての要素のデータ要素メンバーの長さに対応する。この例示的な例では、7つのデータ要素メンバーが、派生データ要素502から7つのオクテットとして、例えばyから選択されて、テンプレート506、例えばt=30dfa8dを生成する。各データ要素メンバーは、データ要素メンバー値を例えばASCII符号化テキストを表すバイナリとして表現する2進数数字のオクテットである。派生データ要素502の一部のこの選択504は、代わりに、任意の適切なアルゴリズムに従って行われてもよい。例えば、左から最初の7オクテットを選択するようにしても良い。別の適切なアルゴリズムでは、左から最初の3つの要素を選択し、右から最初の4つの要素を選択し、2つの選択を連結して、7つのデータ要素メンバーを含むテンプレートを形成することによって選択を行うことができる。選択されたデータメンバーの符号化は、任意の符号化とすることができ、アルゴリズムは、バイナリ符号化16進数または10進数としてデータ要素メンバーを異なるように選択することができることを理解されたい。派生データ要素yの符号化は、設計上の理由からシステム設計者によって選択される任意の適切な符号化とすることができ、したがって、システム要件および設計上の考慮事項に基づいて、選択された部分がどのように選択されるか(504)、および選択されたデータ要素メンバーにどのような符号化が適用されるかを設計者に選択させる。以下の例では、説明を容易にするために様々なエンコーディングが説明されるが、これらは、オリジナルのデータ要素、例えば、402が、マスクデータ要素を生成することによってどのようにマスクされるかを明確に示すために、例示を目的としていることが理解されるであろう。
【0033】
再び
図2を参照すると、ステップ202において、実施形態は、テンプレートを第2のデータタイプ、例えばデータタイプY’から第1のデータタイプ、データタイプXに変換することによって、マスクデータ要素を生成する。例えば、データタイプY’のテンプレート506のこのデータ変換は、テンプレート506の個々のデータ要素メンバーの値に基づいて、データタイプXである順序付けられたデータ要素メンバーのセットを生成する。
図6のaおよびbは、テンプレート(例えばt)をあるデータタイプから別のデータタイプに変換することによってマスクデータ要素を生成するプロセスを説明するフローチャートを示す。これらのフローチャートは、設計または符号化プロセスにおいて簡単に仮定することができるステップを明示的に示すことが理解されよう。例えば、値12345は、左から右に示される順序を有すると仮定されるが、テンプレートが1つのデータタイプから別のデータタイプにどのように変換されるかを明瞭かつ具体的に実証するために、様々なステップが、明瞭化のために示される。最初に、ステップ601で、テンプレートtの各データ要素メンバーに位置が割り当てられる。次に、ステップ602において、例えばオクテットによって特徴付けられるテンプレートtの各要素メンバーが、所望のデータタイプのデータ要素を記述する位置マップに基づいて、1つ以上のアルファベットのうちの1つから選択された値にマッピングされる。このマッピングは、ステップ603、604、および605においてさらに説明される。
【0034】
図7は、テンプレート(例えばt=30dfa8dに対応するテンプレート702)からマスクデータ要素を生成することに付随する変換プロセスにおける種々の中間ステップを示す。サブプロセス750において、各データ要素メンバーは、データ要素メンバーt
0〜t
6に対応する位置704a〜705gに割り当てられる。例示の目的で、図示された例は、位置704a〜704gに割り当てられたt
0〜t
6に対するデータ要素メンバーがASCII形式でコード化されると仮定する。例示の目的で、これらの値は、ASCII値の基礎をなす2進オクテットの10進値または任意の他の底を利用することによって演算されてもよく、例えば、ASCII「3」は、10進値「51」に対応する8進値「63」に対応する16進値「33」に対応する2進オクテット「00110011」に対応する。実証を容易にするために
図7に示される例示的な例では、値はそれらの対応する10進値に変換される。
【0035】
したがって、サブプロセス760において、ASCII値は、値に対する演算を実行するために、それらの10進値に論理的に変換される。したがって、テンプレート702、t=30dfa8dに対応するデータ要素メンバー704a〜704gを含むデータ要素704の表現は、706において、論理10進数で「51」、「48」、「100」、「102」、「97」、「56」、「100」のデータ要素メンバー706a〜706gとして論理的に表される。これらの値は、所望のデータタイプ(例えば、元のデータ要素のデータタイプ、例えば、110、302、402、および702に対応する)の位置マップ、例えば(102または418)によって記述されるように、所望のアルファベット、例えば、102、412、414、または416内の値にマッピングされる必要がある。この例示的な実施形態では、このマッピングを達成するために、モジュロ除算が値706a〜706gの各々に適用され、ここで、基底モジュロは、関連する位置マップ、例えば102または418によって記述される所望のデータ要素メンバーに対応するアルファベット、例えば102、412、414または416の長さによって決定される。
【0036】
図6のbに戻って参照すると、ステップ602は、チャート620、ステップ603〜605で詳述される。第1に、基底モジュロは、関連する位置マップ、例えば、102、412、414、または416に記述されるように、各データ要素メンバー、またはオクテットの位置に対応するアルファベットの長さに基づいて、テンプレートの各オクテットに対して決定される。次に、ステップ604において、中間結果を得るために、各オクテットに対して決定された基底モジュロに基づいて、各オクテットに基底モジュロ除算が適用される。次に、ステップ605で、中間結果がそれぞれのアルファベットの第1の要素の値に加算されて、マスクデータ要素内のそれぞれの位置についてのマスクデータ要素メンバーが得られる。したがって、
図7および
図8に一例として示されるように、サブプロセス770において、706gについて、モジュロ除算は、モジュロ基底=L(A
x3)=6を使用して10進値「51」に適用され、708g=3という結果を得て、706fについて、モジュロ除算は、モジュロ基底=L(A
xl)=26を使用して10進値「48」に適用され、結果として708f=22を得る。706eについては、モジュロ基底=L(A
xl)=26を用いてモジュロ除算を10進値「100」に適用し、結果として708e=22を得る。706dの場合、モジュロ基底=L(A
xl)=26を使用してモジュロ除算が10進値「102」に適用され、結果として708d=24が得られる。706cの場合、モジュロ除算は、モジュロ基底=L(A
x2)=10を使用して10進値「97」に適用され、結果として708c=7が得られる。706bについて、モジュロ除算は、モジュロ基底=L(A
x2)=10を使用して10進値「56」に適用され、結果として708b=6を提供する。最後に、706aについて、モジュロ基底=L(A
x2)=10を使用して、モジュロ除算が10進値「100」に適用され、結果708a=0が与えられる。このプロセスは、中間結果データ要素708、708g=3、708f=20、708e=22、708d=24、708c=7、708b=6、708a=0を提供する。
【0037】
中間結果データ要素708から、サブプロセス880において、各中間データ要素メンバー708a〜708gが、所望のマスクデータ要素の所望のデータタイプ、例えば812についての位置マップによって決定される対応するアルファベットの第1の値に加えられる。この例示におけるデータタイプXのすべてのデータ要素は、データタイプXの各要素、例えばマスクデータ要素x*812をそれぞれのアルファベット412、414、または416にマッピングする位置マップ418を含むデータタイプX410の構文定義によって記述されることを思い出されたい。したがって、x*812のデータ要素メンバーは、
図8の位置810a〜810gに対応するx*
6x*
5x*
4x*
3x*
2x*
1x*
0であり、アルファベットにマッピングされ、x*
6x*
5x*
4x*
3x*
2x*
1x*
0∈A
x3A
x1A
x1A
x1A
x2A
x2A
x2となる。したがって、サブプロセス880は、アルファベットA
x3の第1の要素の値に、3の値を有する中間データ要素メンバー808gを追加し、中間データ要素メンバー808f〜808aにも同様の処理を行う。これにより、マスクデータ要素メンバー810g=「5」、810f=「W」、810e=「W」、810d=「Y」、810c=「8」、810b=「7」、810a=「1」が得られ、最終的にマスクデータ要素812x*=5WWY871が得られる。この値は、x*
6が3に等しくないので、適用可能な例示的状態420に照らして保持され、従って、
図1の機能フローブロック図を参照すると、130における判定は満たされ、マスクデータ要素812は、例えば、118に対応するシステムアウトプットである。
【0038】
図9を参照すると、複数のアプリケーション901、902、903、904は、例えば、1つ以上のデータベース912、913、914、915に格納されたデータにアクセスを試みることができる。一実施形態では、アプリケーションは、要求がデータマスキングシステム910を介してルーティングされるようにデータを要求するように構成され、あるいは、データマスキングシステムは、アプリケーション901、902、903、904によるデータベース912、913、914、915への要求をインターセプトし、アプリケーションまたはアプリケーションのユーザに透過的な方法で要求を処理することができる。一実施形態では、アプリケーションは、データベース接続のために指定されたポートを利用するように構成され、システム910は、着信データ要求を受信するためにそれらのポートをリッスンするように構成される。あるいは、データマスキングシステム910は、アプリケーション901、902、903、904がデータベース要求を送信するように構成されるプロキシとして構成されてもよい。
【0039】
図10を参照すると、マスキングシステム1000の一実施形態によれば、システム1000と同様に、システム1000は、要求アプリケーション、例えばアプリケーション901からデータベースクエリ1001を受信し、データベースクエリは、例えばデータベース915上で実行される(1005)。データベース照会1006の結果がシステム1000で受信されると、どのデータが要求され、受信されたらマスキング1002が必要であるかについて、システム1000によって判定が行われる。次いで、システムは、マスクされたデータをアプリケーション1005に提供する前に、フォーマット保存マスキングを受信データ1003に適用する。代替的に、どのデータがマスクされるべきかに関する決定1002は、データが受信される1003前に行われてもよく、システム1000が、それがシステム1000に受信されるときに、フォーマット保存データマスキングを受信されたデータ1003に適用することを可能にすることも理解されよう。
【0040】
図11を参照すると、実施形態1100を含むコンピューティング環境は、少なくともプロセッサ1115およびメモリ1114を有するコンピュータと、フォーマット保存データマスキングサービス1110と、1つ以上の通信ポート1111と、データベース接続サービス1112(1001、1005、1006に対応する実施形態で開示される態様を含むことができる)と、ユーザインターフェース1116とを含むことができる。通信ポート1111は、アプリケーション1101、1102または1103によって送信されたクエリを受信し、マスクされたデータを含む結果をアプリケーション1101、1102または1103に送信する。データベース接続サービスは、様々な外部データベース1122、1123、1124、1125への接続を管理することができ、内部データベース1113へのデータベース接続も管理することができる。データベース接続サービス1112は、通信ポート1111に送信されたクエリを受信し、データベース1113、1122、1123、1124および1125のうちの1つ以上でこれらのクエリを実行する。データベース接続サービス1112は、フォーマット保存データマスキングサービス1110と通信して、要求されたデータをサービス1110に通知することができ、その結果、サービス1110は、どのデータがマスクされる必要があるか、また、どのマスキングがどの要求されたデータに適用されるべきかを、1つ以上の考慮に基づいて決定することができる。これらの考慮事項は、例えば、ユーザ、ユーザの許可、ユーザのアクセスレベル、要求アプリケーションのアクセスレベル、アプリケーションまたはアプリケーションが実行しているマシンの許可レベル、データ要素のインスタンス、データ要素が格納されているデータベーステーブル、データベースインスタンス、またはデータベースの特定の展開などの条件に関連付けることができ、1つ以上のパラメータの形態でフォーマット保存データマスキングサービス1110内に維持することができる。ユーザインタフェースモジュール1116は、さらに、上述の実施形態の構成、ならびにシステム管理者によるマスキングパラメータの入力および編集を可能にするために提供され得る。
【0041】
様々な実施形態は、コンピュータ可読媒体上に記録され、1つ以上のプロセッサによって実行されるコンピュータソフトウェアコードからなることを開示する。実施形態が、この説明においてそれらの機能に関して開示される場合、それは、説明を明確にする目的のためであるが、別個のデバイスまたはコード部分である必要はなく、任意の特定の様式で分離または統合されて統合されてもよい。サービサー(servicers)、PC、モバイルデバイス、ラップトップコンピュータ、タブレット、ハンドヘルドコンピューティングデバイス、またはこれらのデバイスの様々な組合せなど、様々なコンピュータデバイスを使用して実施形態を実装することができる。さらに、実施形態は、ソフトウェアコードで実装される必要はなく、代わりに、例えば、FPGA、ASICチップ、カスタマイズされたプロセッサ、ストレッチマイクロプロセッサ、DSPチップ、ARMプロセッサ、マイクロプロセッサ、システムオンチップベースのデバイスなどにハードコードされてもよい。
【0042】
記載された実施形態を参照して本発明の原理を説明し例示してきたが、記載された実施形態は、そのような原理から逸脱することなく、配置および詳細において変更され得ることが認識されるであろう。本明細書で説明されるプログラム、プロセス、または方法は、別段の指示がない限り、任意の特定のタイプのコンピューティング環境に関連または限定されないことを理解されたい。様々なタイプの汎用または特殊化されたコンピューティング環境を、本明細書で説明される教示に従って使用するか、または動作を実行することができる。ソフトウェアに示される説明される実施形態の要素は、上述したように、ハードウェアで実施することができ、その逆も同様である。本発明の原理を適用することができる多くの可能な実施形態を考慮して、本発明者らは、以下の特許請求の範囲およびその均等物の範囲および精神内に入ることができるすべてのそのような実施形態を本発明として特許請求する。