(58)【調査した分野】(Int.Cl.,DB名)
前記複数の字のセットおよび前記複数の字の入力セットは、文字、数字、および記号の少なくとも1つを含む請求項1に記載のフォーマット維持ベースマスキングシステム。
前記動的マップは、前記複数の字のセット内のそれぞれの字用にマスキングされ、置換された字を示すインデックスをさらに含む請求項1に記載のフォーマット維持ベースマスキングシステム。
前記1つ以上の数字が、特定の範囲を示す場合、前記1つ以上の数字を含む前記複数のマスキング可能な字は、前記特定の範囲内においてマスキングされる請求項4に記載のフォーマット維持ベースマスキングシステム。
前記1つ以上の数字が、特定の範囲を示す場合、前記1つ以上の数字を含む前記複数のマスキング可能な字は、前記特定の範囲内においてマスキングされる請求項10に記載のコンピューター実施のフォーマット維持ベースマスキング方法。
【発明の概要】
【発明が解決しようとする課題】
【0005】
以下の記述は、本発明の基本的な理解を提供するために、本発明のいくつかの実施形態の簡略化された概要を提供する。この概要は、実施形態の詳細な概観ではない。本概要は、本発明の重要/決定的な要素を特定、または本発明の範囲を正確に記述するよう意図されたものではない。本概要の唯一つの目的は、以下に提供されるより詳細な記述の前置きとして、簡略化された形式で、いくつかの実施形態を提供することにある。
【0006】
上述の事項を参照し、実施形態の1つにおいて、フォーマット維持ベースマスキングシステムが提供される。フォーマット維持ベースマスキングシステムは、複数の命令を保存しているメモリーと、該メモリーに接続されたハードウェアプロセッサーとを含む。ハードウェアプロセッサーは、複数の命令によって、ユーザーから、複数の字(letters)の入力セットおよびプライベートキーを取得する工程と、複数の字のセットおよびプライベートキーを用いて、複数の字のセットを暗号化し、複数の暗号化済みの字のリストを取得する工程と、複数の暗号化済みの字のリストに基づいて、動的マップを作成する工程と、動的マップを用いてマスキングされる複数の字の入力セット内の複数のマスキング可能な字のそれぞれの位置を算出する工程と、動的マップを用い、複数のマスキング可能な字のそれぞれの位置に基づいて、複数のマスキング可能な字のマスキングを実行し、マスキングされたデータを取得する工程と、を実行するよう構成されている。ここで、複数の暗号化済みの字のリストは、複数の暗号化済みの字のセットを含み、動的マップは、複数のキーのセットを含む。また、複数のキーのそれぞれは、複数の字のセット内の字にそれぞれ特有(specific:特有、固有、一意的)である。
【0007】
複数の字のセットおよび複数の字の入力セットは、文字(characters)、数字、および記号の少なくとも1つを含む。さらに、複数の字のセットおよび複数の字の入力セットは、1つ以上の言語から選択される。複数の字の入力セットが1つ以上の数字を含む場合、ハードウェアプロセッサーは、さらに、複数の命令によって、1つ以上の数字の最重要ビット(MSB:Most Significant Bit)マップを作成する工程と、動的マップおよびMSBマップを用いて、複数の字の入力セット内の複数のマスキング可能な字のそれぞれの位置を算出する工程と、動的マップおよびMSBマップを用い、複数のマスキング可能な字のそれぞれの位置に基づいて、複数のマスキング可能な字のマスキングを実行し、マスキングされたデータを取得する工程と、を実行するよう構成されている。
【0008】
さらに、ハードウェアプロセッサーは、複数の命令によって、複数の暗号化済みの字のリスト内の複数の字の順番を判別する工程と、複数の字の順番から、複数の暗号化済みの字のリストをソートし、ソートされた複数の暗号化済みの字のリストを取得する工程と、ソートされた複数の暗号化済みの字のリストに基づいて、動的マップを作成する工程と、動的マップを用いてマスキングされる複数の字の入力セット内の複数のマスキング可能な字のそれぞれの位置を算出する工程と、動的マップを用い、複数のマスキング可能な字のそれぞれの位置に基づいて、複数のマスキング可能な字のマスキングを実行し、マスキングされたデータを取得する工程と、を実行するよう構成されている。ここで、動的マップは、複数のキーのセットと、複数の値を含み、複数のキーのそれぞれは、複数の字のセット内の少なくとも1つの字に特有であり、複数の値のそれぞれは、複数の字のセットからマスキングされる1つ以上の置換された字を含む。さらに、動的マップは、複数の字のセット内のそれぞれの字用のマスキングされ、置換された字を示すインデックスを含む。
【0009】
1つ以上の数字が特定の範囲を示す場合、1つ以上の数字を含む複数のマスキング可能な字は、特定の範囲内においてマスキングされる。
【0010】
別の様態において、コンピューター実施のフォーマット維持ベースマスキング方法が提供される。該方法は、ユーザーから、複数の字の入力セットおよびプライベートキーを取得する工程と、複数の字のセットおよびプライベートキーを用いて、複数の字のセットを暗号化し、複数の暗号化済みの字のセットを含む複数の暗号化済みの字のリストを取得する工程と、複数の暗号化済みの字のリストに基づいて、動的マップを作成する工程と、動的マップを用いてマスキングされる複数の字の入力セット内の複数のマスキング可能な字のそれぞれの位置を算出する工程と、動的マップを用い、複数のマスキング可能な字のそれぞれの位置に基づいて、複数のマスキング可能な字のマスキングを実行し、マスキングされたデータを取得する工程と、を含む。ここで、動的マップは、複数のキーのセットを含み、複数のキーのそれぞれは、複数の字のセット内の字に特有である。
【0011】
複数の字のセットおよび複数の字の入力セットは、文字、数字、および記号の少なくとも1つを含む。さらに、複数の字のセットおよび複数の字の入力セットは、1つ以上の言語から選択される。
【0012】
複数の字の入力セットが1つ以上の数字を含む場合、該方法は、1つ以上の数字の最重要ビット(MSB)マップを作成する工程と、動的マップおよびMSBマップを用いて、複数の字の入力セット内の複数のマスキング可能な字のそれぞれの位置を算出する工程と、動的マップおよびMSBマップを用い、複数のマスキング可能な字のそれぞれの位置に基づいて、複数のマスキング可能な字のマスキングを実行し、マスキングされたデータを取得する工程と、を含む。
【0013】
該方法は、複数の暗号化済みの字のリスト内の複数の字の順番を判別する工程と、複数の字の順番から、複数の暗号化済みの字のリストをソート(sort)し、ソートされた複数の暗号化済みの字のリストを取得する工程と、ソートされた複数の暗号化済みの字のリストに基づいて、動的マップを作成する工程と、動的マップを用いてマスキングされる複数の字の入力セット内の複数のマスキング可能な字のそれぞれの位置を算出する工程と、動的マップを用い、複数のマスキング可能な字のそれぞれの位置に基づいて、複数のマスキング可能な字のマスキングを実行し、マスキングされたデータを取得する工程と、を含む。ここで、動的マップは、複数のキーのセットと、複数の値とを含み、複数のキーのそれぞれは、複数の字のセット内の少なくとも1つの字に特有であり、複数の値のそれぞれは、複数の字のセットからマスキングされる1つ以上の再配置された字を含む。
【0014】
さらに別の様態において、1つ以上の命令を含む非一時的マシーン可読情報記憶媒体(non-transitory machine readable information storage medium)が提供される。1つ以上の命令は、1つ以上のハードウェアプロセッサーによって実行されたとき、ユーザーから、複数の字の入力セットおよびプライベートキーを取得する工程と、複数の字のセットおよびプライベートキーを用いて、複数の字のセットを暗号化し、複数の暗号化済みの字のセットを含む複数の暗号化済みの字のリストを取得する工程と、複数の暗号化済みの字のリストに基づいて、動的マップを作成する工程と、動的マップを用いてマスキングされる複数の字の入力セット内の複数のマスキング可能な字のそれぞれの位置を算出する工程と、動的マップを用い、複数のマスキング可能な字のそれぞれの位置に基づいて、複数のマスキング可能な字のマスキングを実行し、マスキングされたデータを取得する工程と、を実行させる。ここで、動的マップは、複数のキーのセットを含み、複数のキーのそれぞれは、複数の字のセット内の字に特有である。
【0015】
複数の字のセットおよび複数の字の入力セットは、文字、数字、および記号の少なくとも1つを含む。さらに、複数の字のセットおよび複数の字の入力セットは、1つ以上の言語から選択される。
【0016】
複数の字の入力セットが1つ以上の数字を含む場合、1つ以上の命令は、1つ以上のハードウェアプロセッサーによって実行されたとき、1つ以上の数字の最重要ビット(MSB)マップを作成する工程と、動的マップおよびMSBマップを用いて、複数の字の入力セット内の複数のマスキング可能な字のそれぞれの位置を算出する工程と、動的マップおよびMSBマップを用い、複数のマスキング可能な字のそれぞれの位置に基づいて、複数のマスキング可能な字のマスキングを実行し、マスキングされたデータを取得する工程と、を実行させる。
【0017】
さらに、1つ以上の命令は、1つ以上のハードウェアプロセッサーによって実行されたとき、複数の暗号化済みの字のリスト内の複数の字の順番を判別する工程と、複数の字の順番から、複数の暗号化済みの字のリストをソートし、ソートされた複数の暗号化済みの字のリストを取得する工程と、ソートされた複数の暗号化済みの字のリストに基づいて、動的マップを作成する工程と、動的マップを用いてマスキングされる複数の字の入力セット内の複数のマスキング可能な字のそれぞれの位置を算出する工程と、動的マップを用い、複数のマスキング可能な字のそれぞれの位置に基づいて、複数のマスキング可能な字のマスキングを実行し、マスキングされたデータを取得する工程と、を実行させる。ここで、動的マップは、複数のキーのセットと、複数の値とを含み、複数のキーのそれぞれは、複数の字のセット内の少なくとも1つの字に特有であり、複数の値のそれぞれは、複数の字のセットからマスキングされる1つ以上の再配置された字を含む。さらに、1つ以上の数字が特定の範囲を示す場合、1つ以上の数字を含む複数のマスキング可能な字は、特定の範囲内においてマスキングされる。
【0018】
本分野における当業者であれば、ここに提供される任意のブロック図が、本発明の原理を具体化する説明のシステムの概念図を表すことを適切に理解できるであろう。同様に、任意のフローチャート、フロー図、状態遷移図、擬似コード等は、コンピューター可読媒体内において実質的に実現され、明示的に図示または図示されない演算デバイスまたはプロセッサーによって実行される様々な処理を表すことは、適切に理解されるであろう。
【発明を実施するための形態】
【0027】
本発明、並びに、その様々な特徴および利点の詳細は、添付の図面に示され、以下の詳細な説明において記述される非限定的な実施形態を参照することにより、さらに十分に説明される。ここで用いられる実施例は、本発明を実施可能とし、さらに、本分野における当業者が本発明を実施可能とするような様態での発明の理解を容易とするためにのみ用いられるものである。したがって、実施例は、本発明の範囲の限定として解釈されるべきではない。
【0028】
用語「含む(comprising)」、「有する(having)」、「含む/含有する(containing)」、「備える(including)」、およびこれらの他の形式は、同等の意味を表すものであり、これらの任意の1つの用語に続く1つまたは複数の項目が含まれるオープンエンドなリストを意味し、これらの1つまたは複数の項目の完全網羅的なリスト(クローズドエンドなリスト)を意味するものではなく、リストされた1つまたは複数の項目にのみ限定されるという意味ではない。
【0029】
本明細書および添付の特許請求の範囲において用いられる単数形「a」、「an」、および「the」は、文脈が明示的に示していない限り、複数への参照を含むことに留意すべきである。ここに記述されるものと同様または同等の任意のシステムおよび方法は、本発明の実施形態の実施またはテストにおいて使用可能であるが、好適なシステムおよび方法が、以下に記述される。
【0030】
その全ての特徴が説明される本発明のいくつかの実施形態が、詳細に記述される。開示の実施形態は、様々な形態において実施可能な本発明の例示にすぎない。
【0031】
詳細な例示を説明する前に、以下の議論の全ては、記述される特定の実施形態に関わらず、限定のためではなく、事実上、説明のためのものであることを留意されたし。
【0032】
図面、より具体的には
図1から
図3Eを参照すると、同様の参照記号が、対応する特徴に、全ての図面を通して一貫して付されている。好適な実施形態が示され、これらの実施形態が以下の例示的なシステムおよび/または方法の文脈において記述される。
【0033】
図1は、本発明の実施形態に係るフォーマット維持ベースマスキングシステムのブロック図を示している。用語「フォーマット維持ベースマスキングシステム」および「システム」は、本明細書において、ほぼ同じ意味で用いられる。フォーマット維持ベースマスキングシステム100は、メモリー102と、ハードウェアプロセッサー104と、入力/出力(I/O)インターフェース106とを含む。さらに、メモリー102は、1つ以上のモジュール108を含む。メモリー102、ハードウェアプロセッサー104、入力/出力(I/O)インターフェース106、および/またはモジュール108は、システムバスまたは同様のメカニズムによって接続されている。
【0034】
メモリー102は、本発明の機能(または実施形態)を実施するためにコンピューターシステム、例えば、フォーマット維持ベースマスキングシステム100によって用いられる複数の命令、任意の数の情報およびデータを保存している。メモリー102は、例えば、揮発性メモリーおよび/または不揮発性メモリーを含む。揮発性メモリーの例としては、これに限定されるものではないが、揮発性ランダムアクセスメモリー(RAM)が挙げられる。不揮発性メモリーは、追加的または代替的に、電気的消去可能プラグラム可能リードオンリーメモリー(EEPROM)、フラッシュメモリー、ハードドライブ等を含む。揮発性メモリーのいくつかの例としては、これに限定されるものではないが、ランダムアクセスメモリー、ダイナミックランダムアクセスメモリー、スタティックランダムアクセスメモリー等が挙げられる。非揮発性メモリーのいくつかの例としては、これに限定されるものではないが、ハードディスク、磁気テープ、光ディスク、プログラム可能リードオンリーメモリー、消去可能プログラム可能リードオンリーメモリー、電気的消去可能プログラム可能リードオンリーメモリー、フラッシュメモリー等が挙げられる。メモリー102は、フォーマット維持ベースマスキングシステム100が様々な例示的な実施形態に係る様々な機能を実行することを可能とする情報、データ、アプリケーション、命令等を保存するよう構成されている。
【0035】
追加的または代替的に、メモリー102は、ハードウェアプロセッサー104によって実行されたとき、フォーマット維持ベースマスキングシステム100に、様々な実施形態において記述される方法(例えば、動的マップ作成、データのマスキング、複数の字のリストの暗号化、および複数の暗号化済みの字のリストのソート)を実行させる複数の命令を保存するよう構成されている。メモリー102は、情報、例えば、少なくとも1つの字等を含む情報を保存している。複数の字は、文字(character)、数字、記号、および空白/空欄(whitespace/blank space)の少なくとも1つを含む。文字は、大文字または小文字の少なくとも一方である。複数の字は、1つ以上の言語(例えば、英語、ヒンディー語、カンナダ語、タミル語、テルグ語、中国語、日本語等)を含む。
【0036】
ハードウェアプロセッサー104は、1つ以上のマイクロプロセッサー、マイクロコンピューター、マイクロコントローラー、デジタル信号プロセッサー、中央演算ユニット(CPU)、状態マシーン、論理回路、および/または動作命令に基づいて信号を操作する任意のデバイスとして実施される。さらに、ハードウェアプロセッサー104は、マルチコアアーキテクチャを含んでいてもよい。機能の中でも特に、ハードウェアプロセッサー104は、メモリー102内に保存されている複数のコンピューター可読命令(computer-readable instruction)またはモジュールをフェッチ(fetch:命令コードを読み出すこと)および実行するよう構成されている。ハードウェアプロセッサー104は、特に、通信関連の音声および論理機能を実施する電気回路を含んでいてもよい。例えば、ハードウェアプロセッサー104は、これに限定されるものではないが、1つ以上のデジタル信号プロセッサー(DSPs)、1つ以上のマイクロプロセッサー、1つ以上の特殊用途コンピューターチップ、1つ以上のフィールドプログラマブルゲートアレイ(FPGAs)、1つ以上の特定用途向け集積回路(ASICs)、1つ以上のコンピューター、様々なアナログ−デジタルコンバーター、デジタル−アナログコンバーター、および/またはその他のサポート回路を含む。
【0037】
また、このハードウェアプロセッサー104は、メッセージおよび/またはデータ、または情報を暗号化(エンコード)する機能を含む。ハードウェアプロセッサー104は、特に、ハードウェアプロセッサー104の動作をサポートするよう構成されたクロック、演算論理ユニット(ALU)、および論理ゲートを含む。さらに、ハードウェアプロセッサー104は、メモリー102またはハードウェアプロセッサー104がアクセス可能な他の媒体内に保存された1つ以上のソフトウェアプログラムを実行する機能を含む。
【0038】
ハードウェアプロセッサー104は、メモリー102内に保存されている複数の命令によって設定される。複数の命令によって設定されたとき、ハードウェアプロセッサー104は、入力として、複数の字のセットとプライベートキーとを取得する。入力は、1人以上のユーザーから、1つ以上の言語で取得される。入力は、上述のように、1つ以上の入力デバイス(例えば、マルチ言語キーボード)を介した1つ以上の言語からの複数の字の選択を含む。複数の字のセット(以下、「Charset」とも称される)およびプライベートキー(以下、「ユーザーキー」とも称される)は、以下のようなものであるとする。
複数の字のセット={a,b,c,d,e,....x,y,z}
プライベートキー=「Key」
【0039】
ハードウェアプロセッサー104は、ユーザーから、複数の字の入力セット(例えば、名前、給料、所在地住所等)を受信するよう構成されている。フォーマット維持ベースマスキングシステム100が英文字キーボードを利用する場合(例えば、英語キーボードを用いるクライアントシステムの場合)、複数の字のセットは、任意(オプショナル)である。複数の字のセット(以下、複数の字の第1のセットとも称される)、および複数の字の入力セット(複数の字の第2のセット)が非英語の文字の場合、複数の字のセットおよび複数の字の入力セットは、1つ以上の入力デバイス(例えば、非英語キーボード、または非英語の字を提供可能な任意の仮想キーボード)からの入力として受信される。実施形態の1つにおいて、複数の非英語の字は、メモリー102内に保存されなくてもよい。(1つ以上の言語の)複数の字のセットおよび複数の字の入力セットは、メモリー102内に保存されても、保存されなくてもよい。別の実施形態において、(1つ以上の言語の)複数の字のセットおよび複数の字の入力セットは、リアルタイムまたは準リアルタイム(near real time)で、1つ以上のソース(例えば、クラウド、遠隔サーバー、および/またはサードパーティーソース)から、取得可能となっている。さらに、ハードウェアプロセッサー104は、複数の命令によって設定され、1つ以上の暗号化技術を用いて、複数の字のセット(例えば、複数の字の第1のセット)を暗号化する。ハードウェアプロセッサー104は、プライベートキーをパラメーターの1つとし、複数の字のセットに対し暗号化を実行する。換言すれば、ハードウェアプロセッサー104は、複数の字のセットおよびプライベートキーを用いて、複数の字のセットを暗号化し、複数の暗号化済みの字のリストを取得する。複数の暗号化済みの字のリストは、以下の表1に示すような複数の暗号化済みの字のセットを含む。
表1
【0040】
暗号化の後、ハードウェアプロセッサー104は、リストがソートされた複数の暗号化済みの字のセットを含んでいるか否かをチェックする。複数の暗号化済みの字のセットを含む複数の暗号化済みの字のリストが特定の順番(例えば、昇順)でソートされていることが判明した場合、ハードウェアプロセッサー104は、ソートを実行せずに、複数の暗号化済みの字のセットに基づいて、動的マップを作成する。動的マップは、複数のキーのセットを含む。ここで、複数のキーのそれぞれは、複数の字のセット内の字に特有である。
【0041】
複数の暗号化済みの字のセットを含む複数の暗号化済みの字のリストが、別の特定の順番(例えば、許容できない順番)で並んでいると判明した場合、ハードウェアプロセッサー104は、複数の暗号化済みの字のセット(例えば、ソートされていない複数の暗号化済みの字)をソートし、フォーマット維持ベースマスキングシステム100が以下の表2に示すようなソートされた複数の暗号化済みの字のリストを出力できるようにする。
表2
【0042】
(必要であれば)ソートを実行した後、ハードウェアプロセッサー104は、その後、以下の表3に示すような動的マップを作成する。
表3
【0043】
フォーマット維持ベースマスキングシステム100がソートされた複数の暗号化済みの字のリストを出力したとき、ソートされた複数の暗号化済みの字のリストを用いて作成された動的マップは、複数のキーのセットと、複数の値とを含む。複数の値のそれぞれは、複数の字のセットからマスキングされる1つ以上の再配置された字を含む。作成された動的マップは、プライベートキーに変化があった場合、異なったものとなる。さらに、ハードウェアプロセッサー104は、動的マップを用いて、複数の字の入力セット(例えば、これに限定されるものではないが、名前、給料、所在地住所等の複数の字の第2のセット)内の複数のマスキング可能な字のそれぞれの位置を算出し、さらに、動的マップを用い、複数のマスキング可能な字のそれぞれの位置に基づいて、複数のマスキング可能な字のマスキングを実行し、マスキングされたデータを取得するよう構成されている。例えば、プライベートキー=「My key」の場合、マスキングされたデータは、以下の表4に示すようなものである。
表4
【0044】
さらに、上述のように、生成された動的マップは、プライベートキーに変化があった場合、異なったものとなる。例えば、プライベートキーが「New Key」である場合、マスキングされたデータは、以下の表5に示すようなものである。
表5
【0045】
上記の表4および表5からわかるように、フォーマットの、またはオリジナルの複数の字(複数の文字)は、データがマスクキングされたときでも、維持される。動的マップは、上記の表からわかるように、複数の字のセット内のそれぞれの字用にマスキングされ、置換された字を示すインデックスを含んでいる。また、入力が複数の数字(数字のみ、または、文字と記号との組み合わせ)を含む場合の課題が残っている。
【0046】
また、本発明の実施形態は、ユニークなマスキングされた数値を生成し、上述のアプローチにおける主要な課題の1つを解決する。1つ以上の数字を含む複数の字のセットを想定すると、ハードウェアプロセッサー104は、1つ以上の数字の非最重要ビット(非MSB:Non-Most Significant Bit)マップを作成し、さらに、非MSBマップ(および、入力が文字と数字の双方を含む場合には、既に生成されている動的マップ)を用いて、複数の暗号化済みの字のリスト内の複数のマスキング可能な字(この場合には、複数のマスキング可能な数字)のそれぞれの位置を算出する。複数の暗号化済みの字は、暗号化されている複数の字のセットおよび1つ以上の数字を含む。その後、ハードウェアプロセッサー104は、複数のマスキング可能な字のそれぞれの位置に基づいて、複数のマスキング可能な字(または数字)のマスキングを実行し、マスキングされたデータを取得する。プライベートキー=「Key」である場合、1つ以上の数字(入力として取得されたもの)のマスキングされたデータの図示の例は、以下の表6(非MSBマップテーブル6)に示すようなものとなる。
表6
【0047】
非MSBマップに基づき、マスキングされた値は、以下の表7に示すようなものとなる。
表7
【0048】
ハードウェアプロセッサー104(または、フォーマット維持ベースマスキングシステム100)は、数字データタイプのデータの最重要ビット(MSB)マップを作成する。このMSBマップは、非ゼロ(non-zero)の数字にのみ生成される。これにより、その一意性(uniqueness)を損なうことなく、一貫したデータ(consistent data)を取得および保証することができる。例えば、プライベートキー=「Key」の場合、MSBマップは、以下の表8(MSBマップテーブル8)に示すようなものとなる。
表8
【0049】
表6および表8に基づき、マスキングされた値のマップは、以下の表9に示すようなものとなる。
表9
【0050】
表4から、動的マップを用いた場合であっても、マスキングされた値の作成がセキュア(安全)であることがわかる。しかしながら、ユーザーが特定のキー値のマップ情報を理解している場合、マスキングされたデータからオリジナルデータを突き止めることは依然として可能である。そのため、データマスキングをより安全で、データ一貫性のあるものとするため、任意のデータの最終的なマスキングされた出力は、データ内の個々の字(文字、数字、または記号)の位置に応じたものとなる。
【0051】
ここに説明される本発明の実施形態のより深い理解のため、動的マップ作成の例が記述される。動的マップ(A〜Z、a〜z、0〜9、ユーザー入力数値およびアルファベット)が形成される。ここで、キーは、オリジナルの文字であり、一方、値は、ソートされたマスキング済みアレイ内のマスキングされた文字のリストインデックス(list-index)と、ソートされたマスキング済みアレイポインター(sorted masked array pointer)とを含む。同時に、マップが形成され、該マップの形成では、キーは、ソートされたマスキング済みアレイポインターであり、値は、ソートされたマスキング済みアレイである。多言語文字のマスキングは、ユーザーに、複数の非英語の文字と、[0〜9]以外の複数の数字とを取り込む選択肢を提供する事によって実行される。これらの文字は、取り込まれた後、動的マップ形成と同じ手順を経る。さらに、入力データのマスキングされた値は、このマップと、このマップ内の個々の文字の位置に応じたものとなる。
【0052】
代替的に、フォーマット維持ベースマスキングシステム100は、入力処理モジュールを含む複数のモジュールを実行してもよい。入力処理モジュールは、ハードウェアプロセッサー104によって実行されたとき、(ユーザーが複数の字を、1つ以上の入力デバイス、例えば、キーボードを用いて入力することによって)複数の字のセットと、プライベートキーとを取得し、暗号化のために処理する。フォーマット維持ベースマスキングシステム100は、暗号化モジュールを含む複数のモジュールを実行する。暗号化モジュールは、ハードウェアプロセッサー104によって実行されたとき、複数の字およびプライベートキーを用いて、複数の字を暗号化し、複数の暗号化済みの字のリストを取得する。フォーマット維持ベースマスキングシステム100は、マップ作成モジュールを含む複数のモジュールを実行する。マップ作成モジュールは、ハードウェアプロセッサー104によって実行されたとき、複数の暗号化済みの字のセットに基づいて、動的マップを作成する。フォーマット維持ベースマスキングシステム100は、位置算出モジュールを含む複数のモジュールを実行する。位置算出モジュールは、ハードウェアプロセッサー104によって実行されたとき、動的マップを用いて、複数の字の入力セット内の複数のマスキング可能な字のそれぞれの位置を算出する。
【0053】
フォーマット維持ベースマスキングシステム100は、マスキングモジュールを含む複数のモジュールを実行する。マスキングモジュールは、ハードウェアプロセッサー104によって実行されたとき、動的マップを用い、複数のマスキング可能な字のそれぞれの位置に基づいて、複数のマスキング可能な字のマスキングを実行し、マスキングされたデータを取得する。フォーマット維持ベースマスキングシステム100は、ソートモジュールを含む複数のモジュールを実行する。ソートモジュールは、ハードウェアプロセッサー104によって実行されたとき、複数の暗号化済みの字のリスト内の複数の字の順番を判別し、複数の字の順番から、複数の暗号化済みの字のリストをソートし、ソートされた複数の暗号化済みの字のリストを取得する。これにより、マップ作成モジュールがソートされた複数の暗号化済みの字のリストに基づいて、動的マップを作成することが可能となる。ソートされた複数の暗号化済みの字のリストを用いて作成された動的マップは、複数のキーのセットと、複数の値とを含む。複数の値のそれぞれは、複数の字のセットからマスキングされる1つ以上の再配置された字を含む。
【0054】
その後、位置算出モジュールは、動的マップを用いて、複数の字の入力セット内の複数のマスキング可能な字のそれぞれの位置を算出する。さらに、マスキングモジュールは、複数のマスキング可能な字のそれぞれの位置に基づいて、複数のマスキング可能な字のマスキングを実行し、マスキングされたデータを取得する。複数の字が複数の数字を含む場合、マップ作成モジュールは、1つ以上の数字の最重要ビット(MSB)マップを作成する。これにより、位置算出モジュールが、動的マップおよびMSBマップを用いて、複数の字の入力セット内の複数のマスキング可能な字のそれぞれの位置を算出することが可能となる。その後、マスキングモジュールは、動的マップおよびMSBマップを用い、複数のマスキング可能な字のそれぞれの位置に基づいて、複数のマスキング可能な字のマスキングを実行し、マスキングされたデータを取得する。
【0055】
複数のモジュール(例えば、入力処理モジュール、暗号化モジュール、マップ生成モジュール、位置算出モジュール、マスキングモジュール、およびソートモジュール)は、ソフトウェアプログラムの論理的自己完結型の部分(a logically self-contained part of a software program)、自己完結型のハードウェアコンポーネント、および/または、ソフトウェアプログラムの論理的自己完結型の部分がハードウェアコンポーネント内に実装され、実行されたとき、任意の実施形態において説明された上述の方法を実行する自己完結型のハードウェアコンポーネントの少なくとも1つとして実施することができる。
【0056】
図1に関連する
図2は、本発明の実施形態に係る
図1のフォーマット維持ベースマスキングシステム100を用いたコンピューター実施のフォーマット維持ベースマスキング方法を図示するフロー図である。工程202において、複数の字のセットおよびプライベートキーが、(例えば、ユーザーから)取得される。複数の字の入力セット(例えば、名前、住所、国名等)は、複数の字のセット(例えば、a、b、c、d、e、....x、y、z)とは別に、追加的に受信される。フォーマット維持ベースマスキングシステム100が英文字キーボードを利用する場合(例えば、英語キーボードを用いたクライアントシステムである場合)、複数の字のセットは、任意(オプショナル)である。複数の非英語の文字の場合、複数の字のセットは、原則的に、入力として受信される。ここで、複数の非英語の文字は、メモリー102内に保存されない。しかしながら、(1つ以上の言語の)複数の字のセットは、メモリー102内に保存されてもよく、または、(1つ以上の言語の)複数の字のセットは、リアルタイムまたは準リアルタイムで、1つ以上のソース(例えば、クラウド、遠隔サーバー、および/またはサードパーティーソース)から取得されてもよい。工程204において、複数の字のセットが、複数の字のセットおよびプライベートキーを用いて暗号化され、複数の暗号化済みの字のリストが取得される。複数の暗号化済みの字のリストは、複数の暗号化済みの字のセットを含む。
【0057】
工程206において、複数の暗号化済みの字のリスト内の複数の暗号化済みの字のセットに基づいて(または、複数の暗号化済みの字のセットを用いて)、動的マップが作成される。動的マップは、複数のキーのセットを含む。ここで、複数のキーのそれぞれは、複数の字のセット内の字(例えば、文字)に特有である。工程208において、複数の字の入力セット内のマスキング可能な字のそれぞれの位置が、動的マップを用いて、算出される。
【0058】
工程210において、複数のマスキング可能な字のそれぞれの位置および動的マップに基づいて(または、複数のマスキング可能な字のそれぞれの位置および動的マップを用いて)、複数のマスキング可能な字のマスキングが実行され、マスキングされたデータが取得される。上述のように、複数の字が複数の数字を含む場合、フォーマット維持ベースマスキングシステム102は、MSBマップを生成する。換言すれば、本方法は、複数の数字の最重要ビット(MSB)マップを生成する工程と、動的マップおよびMSBマップを用いて、複数の字の入力セット内の複数のマスキング可能な字のそれぞれの位置を算出する工程と、動的マップおよびMSBマップを用い、複数のマスキング可能な字のそれぞれの位置に基づいて、複数のマスキング可能な字のマスキングを実行し、マスキングされたデータを取得する工程とを含む。
【0059】
さらに、本方法は、複数の暗号化済みの字のリスト内の複数の字の順番を判別する工程と、複数の字の順番から、複数の暗号化済み字のリストをソートし、ソートされた複数の暗号化済みの字のリストを取得する工程と、ソートされた複数の暗号化済みの字のリストに基づいて、動的マップを作成する工程と、動的マップを用いて、複数の字の入力セット内の複数のマスキング可能な字のそれぞれの位置を算出する工程と、動的マップを用い、複数のマスキング可能な字のそれぞれの位置に基づいて、複数のマスキング可能な字のマスキングを実行し、マスキングされたデータを取得する工程とを含む。ここで、動的マップは、複数のキーのセットと、複数の値とを含んでおり、複数のキーのそれぞれは、複数の字のセット内の少なくとも1つの字に特有であり、複数の値のそれぞれは、複数の字のセットからマスキングされる1つ以上の置換された字を含む。1つ以上の数字が、特定の範囲を示す場合、1つ以上の数字を含む複数のマスキング可能な字は、特定の範囲内でマスキングされる。
【0060】
本実施形態のより深い理解のため、以下の実施例を用いて、提案の方法が説明される。
【0061】
複数の字のセットの動的マップが形成される。オリジナル入力データである複数の字A〜Z、a〜z、0〜9、ユーザー入力数字、およびアルファベットを想定する。上述のように、ここでは、キーは、オリジナルの文字であり、一方、値は、ソートされたマスキング済みアレイ内のマスキング済みの字のリストインデックスと、ソートされたマスキング済みアレイポインターとを含む。同時に、マップが形成される。マップにおいて、キーは、ソートされたマスキング済みアレイポインターであり、値は、ソートされたマスキング済みアレイである。動的マップを作成したのと同様の方法で、複数の数字(ゼロ以外の数)のMSBマップが形成される。複数のマスキング可能な文字(動的マップ内に存在する複数の文字)の数と、オリジナル入力データ内の第1のマスキング可能な文字のインデックスとが算出される。これらの値は、オリジナルデータのフォーマットを維持するために後に必要とされる。第1のマスキング可能な文字が数字である場合、その後、マスキングされる。この文字がゼロである場合、その後、マスキングされない。すなわち、非ゼロの文字に到達するまで(非ゼロの文字が特定されるまで)、先行するゼロ(preceding zeros)の全ては、ゼロのまま維持される。例えば、1234567890は、上述のように、2143658709にマスキングされる。同様に、123−456−7890は、特殊文字「−」が存在していないものとして、214−365−8709にマスキングされる。動的マップ内において、マスキングの間、特殊文字「−」は無視される。
【0062】
実施例を参照して、任意の所与の文字の最終的なマスキング済み値が説明される。
実施例:123−ABC−pqr
【0063】
第1のマスキング可能な文字に、複数のマスキング可能な文字の合計数であるインデックス値が割り当てられ、さらに、次に続く文字用に、インデックス値が「1」だけインクリメント(値を増加)される。上述のように、このインデックス値は、オリジナルの文字の第1のマスキング可能文字を取得するためのパラメーターの1つとして後に必要とされる。入力データは、1文字ずつ繰り返される(iterated character by character)。第1の文字は、数字なので、MSBマップが作成されることになる。キー「1」用のMSBマップからの値は、以下のようになる。
a.マスキングされた文字:6
b.リストインデックス:1
c.ソートされたマスキング済みアレイポインター(アレイ(5,4,3,2,7,1,8,6,9)へのポインティング)
得られるインデックス=(インデックス値+リストインデックス)%(ソートされたマスキング済みアレイのサイズ)
=(9+1)%9
=10%9
=1
【0064】
インデックス値「1」における文字が取得される。この場合、5である。同様に、残りの複数の文字のマスキングされた文字が、動的マップを用いて取得され、さらに、マスキングされた文字列へ追加される。そのため、マスキングされた出力は、501−GIS−ksjとなる。フォーマット維持ベースマスキングシステム100は、データのマスキング、特に、入力が1つ以上の数字(特定の範囲内または特定の範囲外の数字)を含む場合のデータのマスキングを可能とする。
【0065】
図1および
図2に関連する
図3A〜
図3Eは、本発明の1つ以上の実施形態に係るオリジナルデータおよびマスキングされたデータの例示的な図を示している。具体的には、
図3Aは、本発明の1つ以上の実施形態に係る複数の文字(例えば、所在地住所)を含む複数の字のセットのオリジナルデータおよびマスキングされたデータの例示的な比較図を示している。
図3Bは、本発明の1つ以上の実施形態に係る最低給料(例えば、データを特定の範囲内(最小値:1000、最大値25000)でマスキングするための入力として受信された数字(給料))のオリジナルデータおよびマスキングされたデータの例示的な図を示している。この範囲は特定されているため、マスキングされたデータの出力もまた、この範囲内となり、ユーザーは、この範囲を入力するための設定を行う。1つ以上の数字が、特定の範囲を示す場合、1つ以上の数字を含む複数のマスキング可能な文字は、特定の範囲内でマスキングされる。換言すれば、この範囲は、数字を含む複数の字が提供されるときに、ユーザーによって提供される。フォーマット維持ベースマスキングシステム100は、特定の範囲内において、複数の数字をマスキングする。
【0066】
図3Cは、本発明の1つ以上の実施形態に係る最低給料(例えば、特定の範囲外においてデータをマスキングするための入力として受信される複数の数字)のオリジナルデータおよびマスキングされたデータの例示的な図を示している。範囲が特定されていない場合、入力値の範囲から外れた複数の値が存在し得る。例えば、最低給料15000は、最低給料69628にマスキングされる。
【0067】
図3Dは、本発明の1つ以上の実施形態に係る非英語の文字のオリジナルデータおよびマスキングされたデータの例示的な図を示している。具体的には、
図3Dは、漢字のオリジナルデータおよびマスキングされたデータの例示的な図を示している。
図3Eは、ユーザーが、特定の値は所定の値によってマスキングされなければならないと指定した場合の例外的な状況におけるオリジナルデータおよびマスキングされたデータの例示的な図を示している。フォーマット維持ベースマスキングシステム100は、オーストラリアが英国にマスキングされ、イタリアがシンガポールにマスキングされるように設定されている。そのため、これら2つの値がいつ発生しようと、それぞれの所定の値によってマスキングされることとなり、これらの値は、文字置換マスキングを経ない。
【0068】
上記の記述は、本分野における当業者が本発明を実施および使用することを可能とするために、本発明を説明するものである。本発明の範囲は、特許請求の範囲によって規定され、本分野における当業者が想到し得るその他の変形例を含む。そのようなその他の変形例が特許請求の範囲の文言と変わらない同等の要素を有するか、特許請求の範囲の文言と実質的に変わらない同等の要素を含んでいるのであれば、そのようなその他の変形例は、特許請求の範囲の権利範囲内に含まれる。
【0069】
本開示の実施形態は、データの一貫性を企業レベルで保ち、入力データのフォーマットを維持し、マスキングされたデータが解読可能ではないことを保証し、データセキュリティに繋がるフォーマット維持ベースマスキングシステムおよび方法を実施する。さらに、フォーマット維持ベースマスキングシステム100は、非英語の文字および数字をサポートする。セキュリティの低い方法を用いてデータの生成、更新、および処理するために、より多くのディスクスペースと、より多くの時間を消費する静的ルックアップテーブルを作成する従来のシステムや方法と異なり、複数のマップ(データのマスキングを実行するための参照として用いられる、実行中における動的ルックアップテーブルとして機能する動的マップ、非MSBマップ、およびMSBマップ)を動的に生成するフォーマット維持ベースマスキングシステム100は、より少ないディスクスペース消費(または、より少ないメモリースペース消費)、より少ないデータ更新時間、および、より少ないデータ処理時間を可能とする。従来のマスキングツールと異なり、フォーマット維持ベースマスキングシステム100は、それぞれの字の最終的な置換(または、マスキング)の決定において重要な役割を果たす入力データ内の字の位置を算出する。
【0070】
しかしながら、本発明による保護範囲は、メッセージを有するコンピューター可読手段に加え、プログラムにも及ぶことは理解されるであろう。そのようなコンピューター可読記憶媒体は、サーバー、携帯デバイス、または任意の適切なプログラム可能デバイス上でプログラムが実行されたとき、本発明の方法の1つ以上の工程を実施するプログラムコード手段(program-code means)を含む。ハードウェアデバイスは、例えば、サーバー、パーソナルコンピューター等、または、これらの組み合わせの任意の種類のコンピューターを含む任意の種類のプログラム可能なデバイスであってもよい。また、デバイスは、例えば、ハードウェア手段(例えば、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA))、ハードウェア手段およびソフトウェア手段の組み合わせ(例えば、ASICおよびFPGA)、少なくとも1つのマイクロプロセッサー、および、ソフトウェアモジュールが内部に保存されている少なくとも1つのメモリーのような手段を含む。よって、手段は、ハードウェア手段と、ソフトウェア手段の双方を含む。本発明の方法は、ハードウェアおよびソフトウェアにおいて実施可能である。また、デバイスは、ソフトウェア手段を含んでいてもよい。代替的に、本発明は、複数の異なるハードウェアデバイス、例えば、複数のCPUを用いて、実施されていてもよい。
【0071】
本発明は、ハードウェア要素と、ソフトウェア要素とを含むことができる。本発明は、ソフトウェアにおいて実施することができ、これに限定されるものではないが、ファームウェア、常駐ソフトウェア、マイクロコード等を含む。ここに説明された様々なモジュールによって実行される機能は、他のモジュールや他のモジュールの組み合わせにおいて実施されてもよい。説明の目的のため、コンピューター使用可能またはコンピューター可読媒体は、命令実行システム、装置、またはデバイスによって使用可能またはこれらに関連したプログラムを含み、保存し、通信し、伝播し、または伝送可能な任意の装置であってもよい。
【0072】
媒体は、電気、磁気、光、電磁気、赤外線、半導体システム(または、装置やデバイス)、または、伝播媒体であってもよい。コンピューター可読媒体の例としては、半導体または固体メモリー、磁気テープ、リムーバブルコンピューターディスケット、ランダムアクセスモメリー(RAM)、リードオンリーメモリー(ROM)、リジッド磁気ディスク、および光ディスクが挙げられる。光ディスクの最近の例としては、コンパクトディスク−リードオンリーメモリー(CD−ROM)、コンパクトディスク−リード/ライト(CD−R/W)、およびDVDが挙げられる。
【0073】
プログラムコードの保存および/または実行に適したデータ処理システムは、メモリー要素に直接的またはシステムバスを介して間接的に接続された少なくとも1つのプロセッサーを含む。メモリー要素は、プログラムコードの実際の実行の際に用いられるローカルメモリー、大容量記憶装置、および、実行の間に大容量記憶装置からの必須読み出しの回数を低減させるために少なくとも複数のプログラムコードの一時保存を提供するキャッシュメモリーを含む。
【0074】
入力/出力(I/O)デバイス(これに限定されるものではないが、キーボード、ディスプレイ、ポインティングデバイス等を含む)は、システムに直接的またはI/Oコントローラーを介して接続されている。また、ネットワークアダプターは、システムに接続され、データ処理システムが、プライベートまたは公共ネットワークを介して、他のデータ処理システム、遠隔プリンター、または記憶デバイスに接続されることを可能とする。モデム、ケーブルモデム、およびイーサネット(登録商標)カードは、ネットワークアダプターの現在使用可能なタイプのいくつかの例である。
【0075】
本発明を実施するための代表的なハードウェア環境は、本発明に係る情報操作/コンピューターシステムのハードウェア構成を含む。システムは、少なくとも1つのプロセッサーまたは中央演算ユニット(CPU)を含む。CPUは、システムバスを介して、様々なデバイス(例えば、ランダムアクセスメモリー(RAM)、リードオンリーメモリー(ROM)、入力/出力(I/O)アダプター)に相互接続されている。I/Oアダプターは、周辺機器(例えば、ディスクユニット、テープドライバー)や、システムによって読み込まれることが可能なその他のプログラム記憶デバイスを接続することができる。システムは、プログラム記憶デバイス上の複数の命令を読み込み、これらの命令に従って、本発明の方法を実行可能である。
【0076】
さらに、システムは、キーボード、マウス、スピーカー、マイク、および/または、タッチスクリーンデバイス(図示せず)のようなその他のユーザーインターフェースデバイスをバスに接続し、ユーザー入力を収集するユーザーインターフェースアダプターを含む。追加的に、通信アダプターは、バスをデータ処理ネットワークに接続し、表示アダプターは、バスを、例えば、モニター、プリンター、送信機のような出力デバイスとしても実装可能な表示デバイスに接続する。
【0077】
上記の記述が、様々な実施形態を参照して提供された。本発明の属する分野および技術における当業者であれば、記述された構造および動作方法における変形および変更が、本発明の原理、考え方、および範囲から有意に逸脱することなく、実行可能であることを理解できるであろう。