(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-07
(45)【発行日】2024-05-15
(54)【発明の名称】多角的に暗号化されたデータを検索する方法、装置、及びコンピュータ読み取り可能な媒体
(51)【国際特許分類】
G09C 1/00 20060101AFI20240508BHJP
H04L 9/14 20060101ALI20240508BHJP
【FI】
G09C1/00 660D
H04L9/14
【外国語出願】
(21)【出願番号】P 2019123886
(22)【出願日】2019-07-02
【審査請求日】2022-06-30
(32)【優先日】2018-07-11
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】515160389
【氏名又は名称】インフォマティカ エルエルシー
【住所又は居所原語表記】2100 Seaport Blvd,Redwood City,CA 94063 U.S.A.
(74)【代理人】
【識別番号】100120662
【氏名又は名称】川上 桂子
(74)【代理人】
【識別番号】100140327
【氏名又は名称】大塚 千秋
(72)【発明者】
【氏名】バラバイン、 イゴール
(72)【発明者】
【氏名】ゴロンディン、 リチャード
【審査官】金沢 史明
(56)【参考文献】
【文献】特開2018-097034(JP,A)
【文献】Dawn Xiaodong Song et al.,Practical Techniques for Searches on Encrypted Data,Proc. of 2000 IEEE Symposium on Security and Privacy (S&P 2000),IEEE,2000年05月,pp. 44-55,[2023年6月26日検索], インターネット<URL: https://ieeexplore.ieee.org/abstract/document/848445>,<DOI: 10.1109/SECPRI.2000.848445>
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/00- 9/40
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
多型的に暗号化されたデータを検索するために、1つまたは複数のコンピューティングデバイスによって実行される方法であって、
1つまたは複数のコンピューティングデバイスのうちの少なくとも1つによって、第1のアルゴリズムおよび暗号化鍵を使用して暗号文を暗号化することによって1つまたは複数の仮名トークンを生成するステップであって、前記第1のアルゴリズムは
多型暗号化アルゴリズムを含み、前記多型暗号化アルゴリズムは、同じ暗号化鍵を有する同じ暗号文
へ多型
暗号化アルゴリズム
を適用する度に別個の仮名トークンを生成するように構成され
たアルゴリズムを有する、ステップと、
1つまたは複数のコンピューティングデバイスのうちの少なくとも1つによって、1つまたは複数の仮名トークンをデータストアに格納するステップと、
1つまたは複数のコンピューティングデバイスのうちの少なくとも1つによって、第2のアルゴリズムおよび暗号化鍵を使用して暗号文を暗号化することによって生成された検索トークンを使用して
前記データストアに照会することによって、暗号文に対応するデータストア内のデータを識別するステップとを含み、
前記検索トークンは、前記1つまたは複数の仮名トークンとは異なる、方法。
【請求項2】
第2のアルゴリズムおよび暗号化鍵を使用して暗号文を暗号化することによって生成された検索トークンを使用して
前記データストアに照会することによって、暗号文に対応するデータストア内のデータを識別する前記ステップは、
1つまたは複数の変換された列を生成するために、1つまたは複数の仮名トークンを含む1つまたは複数の列に1つまたは複数の第1の変換を適用するステップと、
1つまたは複数の第2の変換を前記検索トークンに適用して、変換された検索トークンを生成するステップと、
1つまたは複数の変換された列および変換された検索トークンに少なくとも部分的に基づいて、暗号文に対応する1つまたは複数の行を識別するステップとを含む、
請求項1に記載の方法。
【請求項3】
前記1つまたは複数の変換された列および変換された検索トークンに少なくとも部分的に基づいて、前記暗号文に対応する1つまたは複数の行を識別する前記ステップは、
マッチング関数を使用して、1つまたは複数の変換された列内の各変換された列値を変換された検索トークンと比較して、1つまたは複数のマッチングする変換された列値を識別するステップと、
前記1つまたは複数の一致する変換済み列値を含む1つまたは複数の行を暗号文に対応するものとして識別するステップとを含む、
請求項2に記載の方法。
【請求項4】
検索トークンが複数の仮名トークンの1つまたは複数の仮名トークンと一致する場合に、1つまたは複数のコンピューティングデバイスの少なくとも1つによって第1の結果を表示するステップであって、前記第1の結果は少なくとも1つの仮名トークンのリストを含む、ステップと、
検索トークンが複数の仮名トークンの1つまたは複数の仮名トークンと一致しない場合に、1つまたは複数のコンピューティングデバイスの少なくとも1つによって異なる第2の結果を表示するステップと、をさらに含む、
請求項1に記載の方法。
【請求項5】
1つまたは複数のコンピューティングデバイスのうちの少なくとも1つによって、1つまたは複数の擬似ランダム置換(PRP)シードのそれぞれ1つを別個の擬似名トークンに追加することによって、複数の擬似名トークンの別個の擬似名トークンを修正するステップをさらに含む、請求項1に記載の方法。
【請求項6】
1つまたは複数のコンピューティングデバイスのうちの少なくとも1つによって、1つまたは複数のPRPシードのうちのそれぞれの1つを、異なる第3のアルゴリズムおよび暗号化鍵を使用して暗号化するステップをさらに含み、
1つまたは複数のPRPシードのうちのそれぞれの1つを追加することは、別個の仮名トークンの前または後のいずれかに、それぞれのPRPシードを追加することを含む、
請求項5に記載の方法。
【請求項7】
1つまたは複数のコンピューティングデバイスのうちの少なくとも1つによって、1つまたは複数のPRPシードを、初期化ベクトルとしての別個の仮名トークンの内容に基づいて暗号化するステップをさらに含む、
請求項6に記載の方法。
【請求項8】
1つまたは複数のコンピューティングデバイスのうちの少なくとも1つによって、暗号化された1つまたは複数のPRPシードを除去するステップと、
1つまたは複数のコンピューティングデバイスのうちの少なくとも1つによって、第3のアルゴリズムおよび暗号化鍵を使用して、暗号化された1つまたは複数のPRPシードを復号するステップと、をさらに含む、
請求項6に記載の方法。
【請求項9】
初期化ベクトルとしての別個の仮名トークンのコンテンツに基づいて、1つまたは複数のコンピューティングデバイスのうちの少なくとも1つによって、1つまたは複数のPRPシードを復号するステップをさらに含む、
請求項8に記載の方法。
【請求項10】
1つまたは複数のコンピューティングデバイスのうちの少なくとも1つによって、それぞれのPRPシードを別個の仮名トークンから除去した後に、復号第1アルゴリズムおよび暗号化鍵を使用して、それぞれの仮名トークンを復号するステップをさらに含む、
請求項6に記載の方法。
【請求項11】
前記第2のアルゴリズムは、前記第1のアルゴリズムと異なる、請求項1に記載の方法。
【請求項12】
多型的に暗号化されたデータを検索するためのシステムであって、
1つまたは複数のプロセッサと、
前記1つまたは複数のプロセッサのうちの少なくとも1つに動作可能に結合され、1つまたは複数のプロセッサのうちの少なくとも1つによって実行されると、1つまたは複数のプロセッサのうちの少なくとも1つに処理を行わせる命令を格納する1つまたは複数のメモリとを備え、
前記処理は、
第1のアルゴリズムおよび暗号化鍵を使用して暗号文を暗号化することによって、1つまたは複数の仮名トークンを生成するステップであって、第1のアルゴリズムは
多型暗号化アルゴリズムを含み、前記多型暗号化アルゴリズムは、同じ暗号化鍵を有する同じ暗号文
へ多型
暗号化アルゴリズム
を適用する度に別個の仮名トークンを生成するように構成され
たアルゴリズムを備える、ステップと、
1つまたは複数の仮名トークンをデータストアに格納するステップと、
第2のアルゴリズムおよび暗号化鍵を使用して暗号文を暗号化することによって生成された検索トークンを使用して
前記データストアに照会することによって、暗号文に対応するデータをデータストア内で識別するステップと、を含み、
前記検索トークンは、1つまたは複数の仮名トークンとは異なる、
システム。
【請求項13】
前記1つまたは複数のメモリのうちの少なくとも1つは、前記1つまたは複数のプロセッサのうちの少なくとも1つによって実行されると、前記1つまたは複数のプロセッサのうちの少なくとも1つに、
1つ以上の仮名トークンを含む1つ以上の列に1つ以上の第1の変換を適用して、1つ以上の変換された列を生成するステップと、
1つまたは複数の第2の変換を検索トークンに適用して、変換された検索トークンを生成するステップと、
1つまたは複数の変換された列および変換された検索トークンに少なくとも部分的に基づいて、暗号文に対応する1つまたは複数の行を識別するステップと、
を行わせるさらなる命令を格納した、請求項12に記載のシステム。
【請求項14】
前記1つまたは複数のメモリのうちの少なくとも1つは、前記1つまたは複数のプロセッサのうちの少なくとも1つによって実行されると、前記1つまたは複数のプロセッサのうちの少なくとも1つに、
マッチング関数を使用して、1つまたは複数の変換された列内の各変換された列値を変換された検索トークンと比較して、1つまたは複数のマッチングする変換された列値を識別するステップと、
1つまたは複数のマッチングする変換された列値を含む1つまたは複数の行を暗号文に対応するものとして識別するステップと、
を行わせるさらなる命令を格納した、請求項13に記載のシステム。
【請求項15】
前記1つまたは複数のメモリのうちの少なくとも1つは、前記1つまたは複数のプロセッサのうちの少なくとも1つによって実行されたときに、前記1つまたは複数のプロセッサのうちの少なくとも1つに、
1つまたは複数の擬似ランダム置換(PRP)シードのそれぞれ1つを別個の擬似名トークンに追加することによって、複数の擬似名トークンの別個の擬似名トークンを修正するステップを行わせるさらなる命令を格納した、請求項12に記載のシステム。
【請求項16】
前記1つまたは複数のメモリのうちの少なくとも1つは、前記1つまたは複数のプロセッサのうちの少なくとも1つによって実行されたときに、前記1つまたは複数のプロセッサのうちの少なくとも1つに、
異なる第3のアルゴリズムおよび暗号化鍵を使用して、1つまたは複数のPRPシードのそれぞれの1つを暗号化するステップを行わせるさらなる命令を格納し、
前記1つまたは複数のPRPシードのそれぞれの1つを追加することは、別個の仮名トークンの前または後のいずれかに、それぞれのPRPシードを追加することを含む、
請求項15に記載のシステム。
【請求項17】
前記1つまたは複数のメモリのうちの少なくとも1つは、前記1つまたは複数のプロセッサのうちの少なくとも1つによって実行されると、前記1つまたは複数のプロセッサのうちの少なくとも1つに、
1つまたは複数のPRPシードを暗号化するときに、初期化ベクトルとして別個の仮名トークンのコンテンツを使用することに基づいて、1つまたは複数のPRPシードを暗号化するステップを行わせるさらなる命令を格納した、請求項16に記載のシステム。
【請求項18】
前記1つまたは複数のメモリのうちの少なくとも1つは、前記1つまたは複数のプロセッサのうちの少なくとも1つによって実行されたときに、前記1つまたは複数のプロセッサのうちの少なくとも1つに、
暗号化された1つまたは複数のPRPシードを切り離し、第3のアルゴリズムおよび暗号化鍵を使用して、暗号化された1つまたは複数のPRPシードを復号するステップを行わせるさらなる命令を格納した、請求項16に記載のシステム。
【請求項19】
前記1つまたは複数のメモリのうちの少なくとも1つは、前記1つまたは複数のプロセッサのうちの少なくとも1つによって実行されたときに、前記1つまたは複数のプロセッサのうちの少なくとも1つに、
1つ以上のPRPシードを復号化するときに、初期化ベクトルとして別個の仮名トークンのコンテンツを使用することに基づいて、1つ以上のPRPシードを復号化するステップを行わせるさらなる命令を格納した、請求項18に記載のシステム。
【請求項20】
前記1つまたは複数のコンピューティングデバイスによって実行されると、1つまたは複数のコンピューティングデバイスのうちの少なくとも1つに処理を行わせるコンピュータ可読命令を記憶する少なくとも1つの非一時的なコンピュータ可読媒体であって、
前記処理は、
第1のアルゴリズムおよび暗号化鍵を使用して暗号文を暗号化することによって、1つまたは複数の仮名トークンを生成するステップであって、第1のアルゴリズムは
多型暗号化アルゴリズムを含み、前記多型暗号化アルゴリズムは、同じ暗号化鍵を有する同じ暗号文
へ多型
暗号化アルゴリズム
を適用する度に別個の仮名トークンを生成するように構成され
たアルゴリズムを備える、ステップと、
1つまたは複数の仮名トークンをデータストアに格納するステップと、
第2のアルゴリズムおよび暗号化鍵を使用して暗号文を暗号化することによって生成された検索トークンを使用して
前記データストアに照会することによって、暗号文に対応するデータをデータストア内で識別するステップとを含み、
前記検索トークンは、1つまたは複数の仮名トークンとは異なる、コンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【0001】
現代のデータサイエンス、または(ビッグ)データ分析において、データは多くの目的に有用である。しかしながら、このようなデータの柔軟な使用は、暗号化によって妨げられることが多い。従来の暗号化は、常に特定の当事者、すなわち復号鍵を有する当事者のためのものである。他の誰も解読することができない。暗号化の瞬間に、誰が解読できるかの決定を下さなければならない。例えば、データが暗号化される多重使用シナリオでは、多くの当事者が鍵を有しなければならない。これは、しばしば基礎となるデータの保護レベルを損なう。
【0002】
GDPR(General Data Protection Regulation)の実施により、EU(European Union)全体にわたる調和したデータ保護法の枠組みが作成されている。これは、個人データの管理を本人に戻すことを目的とすると共に、世界中のどこにおいても、このデータをホストし処理する者に厳しい規則を課すものである。GDPRは個人識別可能情報(PII)をどのように使用し、処分すべきかに関する厳格な要件を規定している。GDPRは、データ主体(個人など)に、提供したデータを撤回させる権利を提供する「忘却権」を規定している。
【0003】
GDPRでは、個人情報を保護する手段として、仮名化を用いることが議論されている。一般に、仮名化は、特定の人物を識別するために使用することができるデータ要素の分離を意味する。例えば、個人の名前または共通の識別番号(例えば、パスポート番号または社会保障番号)を、追跡されているデータ(例えば、個人によって購入された商品)から分離する。
【0004】
現代の仮名化メカニズムは、トークン化と、複数の暗号鍵およびステージングデータベースを用いたマルチキー標準対称暗号化とを使用する。しかしながら、これらの解決策は共に、暗号属性を仮名データオブジェクトのインスタンスにマッピングし、生成されたトークンを保持するための追加の記憶装置を必要とするという重大な欠点を有する。さらに、対称暗号化メカニズムは、複数の暗号鍵を保護する必要がある。追加のメタ情報を記憶する必要があると、ソリューションのメンテナンスコストを増加させ、潜在的な侵入者をおびき寄せることとなり、セキュリティ体制を弱める。
【0005】
近年、非対称多型(polymorphic)暗号化に基づく仮名化メカニズムが提案されている。仮名化メカニズムは、暗号化動作モードにおけるElGamalアルゴリズムの楕円曲線変形の多型特性に基づく。しかしながら、ElGamal暗号化動作の極めて高い性能コストのために、このアプローチの実行可能性には疑問がある。さらに、ElGamalはRSAまたはDiffie-Hellmanのような他のすべての現代の公開鍵スキームと共に、量子暗号攻撃の影響を受けやすいことが証明されている。
【0006】
PIIに関連するデータを仮名化することに向けられた従来の実装は、ルックアップソースデータまたは暗号化鍵のいずれかを危険にさらし、個人および他の潜在的に機密なデータに危険が及ぶ可能性があるため、フェールセーフアプローチとは考えられない。したがって、1つまたは複数の暗号化された機密データを、1つまたは複数の機密でないデータに一致させるために、暗号化されたデータを復号することなく、暗号化されたデータの検索を可能にする技術的改善が必要とされている。
【図面の簡単な説明】
【0007】
開示された態様は以下に、開示された態様を例示するためであって、限定する目的ではなく、添付の図面と併せて説明される。類似の符号は、類似の要素を示す。
【
図1】
図1は、ユーザの機密情報またはデータを暗号化するためのシステムを示す。
【
図2】
図2はユーザから機密情報またはデータを受信し、そのような情報を複数の暗号文に変換するプロセスを説明するフローチャートの形式の特殊アルゴリズムを示す。
【
図3】
図3は、多型対称暗号化アルゴリズムを使用した後に生成される複数の暗号文を示す。
【
図4】
図4は、検索トークンを複数の暗号文のそれぞれ1つまたは複数にマッチングさせるプロセスを説明する、フローチャートの形の特殊アルゴリズムを示す。
【
図5A】
図5Aは、例示的な実施形態による、開示されたデータ構造および方法を使用して実行され得る検索プロセスの例を示す。
【
図5B】
図5Bは、例示的な実施形態による、開示されたデータ構造および方法を使用して実行され得る検索プロセスの例を示す。
【
図5C】
図5Cは、例示的な実施形態による、開示されたデータ構造および方法を使用して実行され得る検索プロセスの例を示す。
【
図6A】
図6Aは、Song-Wagner Perrig(SWP)対称暗号アルゴリズムを用いる標準モデルを示す。
【
図6B】
図6Bは、拡張された暗号テキストが記述される特殊化されたアルゴリズムの例示的な実施形態を示す。
【
図6C】
図6Cは、拡張された暗号テキストが記述される特殊化されたアルゴリズムの例示的な実施形態を示す。
【発明を実施するための形態】
【0008】
(実施例の詳細な説明)
本明細書で開示される新規なシステム、装置、および方法の様々な態様は、添付の図面を参照して以下でより完全に説明される。しかしながら、本開示は多くの異なる形態で具現化されることができ、本開示全体を通して提示される任意の特定の構造または機能に限定されるものとして解釈されるべきではない。むしろ、これらの態様は、本開示が完全かつ完全になるように提供され、本開示の範囲を当業者に完全に伝える。本明細書の教示に基づいて、当業者は、開示の範囲が開示の任意の他の態様から独立して実装されるか、またはそれと組み合わされるかにかかわらず、本明細書で開示される新規なシステムおよび方法の任意の態様をカバーすることが意図されることを理解すべきである。例えば、本明細書に記載された任意の数の態様を使用して、システムを実装することができ、または方法を実施することができる。加えて、本開示の範囲は、本明細書に記載された本開示の様々な態様に加えて、またはそれ以外の、他の構造、機能、または構造および機能を使用して実施されるそのようなシステムまたは方法をカバーすることが意図されている。本明細書で開示される任意の態様は、請求項の1つまたは複数の要素によって実装され得ることを理解されたい。
【0009】
特定の態様が本明細書で説明されるが、これらの態様の多くの変形および置換は開示の範囲内にある。好ましい態様のいくつかの利益および利点が言及されているが、開示の範囲は特定の利益、使用、および/または目的に限定されることを意図されていない。詳細な説明および図面は限定するのではなく、単に開示を例示するものであり、開示の範囲は、添付の特許請求の範囲およびその均等物によって定義される。
【0010】
ここで、本開示のシステムおよび方法の様々な実装および変形の詳細な説明が提供される。本明細書で説明される多くの例は、暗号化および暗号化されたデータの検索のコンテキストにあるが、本明細書に含まれ説明されるシステムおよび方法は、専有情報、秘密情報、または機密情報の暗号化に関する関連技術で使用され得ることが、当業者には理解されよう。本明細書に記載された技術のための種々の他の例示的な実装または使用は、本開示の内容から当業者によって容易に想定されるであろう。
【0011】
上述のような従来の技術は、個人情報を含む「生の」データ(すなわち、元のデータまたは平文データ)を公開しなければ、記憶されたデータの分析、アクセス、更新、および検索が可能とならない。
【0012】
前述したような必要性は、とりわけ、暗号化されたデータを検索するための方法、装置、およびコンピュータ可読媒体を提供する本開示によって満たされる。本明細書で説明される例示的な実装形態は、革新的な特徴を有し、そのうちの1つだけが、それらの望ましい属性に必須でまたは単独に寄与するものではない。特許請求の範囲を限定することなく、有利な特徴のいくつかをここで要約する。
【0013】
本出願人は、1つまたは複数の暗号化された機密データを1つまたは複数の機密でないデータに一致させるために、暗号化されたデータを復号することなく、暗号化されたデータを検索することができる方法、システム、および非一時的なコンピュータ可読媒体を発明した。すなわち、本発明の概念は、データオブジェクトを仮名化し、多型対称暗号化の手段によって忘れられる権利を行使することを対象とする。「機密」は限定されるものではないが、秘密情報または所有権のある情報および/またはデータを含むことができる。本明細書で開示される例示的な実施形態は、高速対称多型暗号を使用し、これは、追加の記憶空間を必要としない単一の鍵によって操作される。トレーサビリティおよび「忘れられる権利」を含むGDPRの要件を満たす一方で、本明細書に開示される方法、システム、および非一時的なコンピュータ可読媒体は、オペレータが平文を知ることなく仮名化されたデータを追跡することを可能にする。開示された方法、システム、および非一時的なコンピュータ可読媒体は公開鍵を使用する従来の方法よりも高速であり、より少量の記憶装置しか必要とせず、複数の暗号鍵を必要とする従来の方法よりもエラーの傾向が少ない。
【0014】
例示的な実施形態によれば、ユーザによって提供された平文データオブジェクトは、第1の暗号鍵で暗号化または保護される。これにより第1の暗号文が生成される。第1の暗号文は、多型対称暗号アルゴリズムを適用することによって第2の暗号鍵で暗号化される。第2の暗号鍵を用いた第1の暗号文の暗号化は、複数回繰り返され、複数の別個の暗号文を生成する。第2の暗号鍵は後に、第2の秘密暗号鍵の所有者(すなわち、第三者)が別個の暗号文を復号化することなく、他の複数の暗号文の中で別個の暗号文を識別することを可能にするために、マッチングトークンを生成するために使用される。マッチングトークンは、複数の暗号文のうちのいずれかとは異なる。第1の暗号鍵の所有者は、第1の暗号鍵を破棄することによって、忘れられる権利を行使する。
【0015】
本開示のこれらおよび他の目的、特徴、および性質、ならびに構造の関連する要素の動作および機能の方法、ならびに部品の組合せおよび製造の経済性はすべて本明細書の一部を形成する添付の図面を参照して以下の説明および添付の特許請求の範囲を考慮するとより明らかになり、同様の参照番号は、様々な図中の対応する部品を示す。しかしながら、図面は例示および説明のみを目的としたものであり、本開示の限定の定義として意図されていないことを明確に理解されたい。本明細書および特許請求の範囲で使用されるように、単数形の「a」、「an」、および「the」は文脈が沿わないことを明確に示さない限り、複数の指示対象を含む。
【0016】
ここで
図1を参照すると、機密情報またはデータを受信し、暗号化し、それを復号することなく検索するシステム100が示されている。機密情報またはデータは、例えば、人種的または民族的な起源、政治的見解、宗教的または哲学的信念、クレジットカード情報、銀行情報(すなわち、口座番号およびルーティング番号)、または労働組合のメンバーシップを明らかにする個人データ、自然人を一意に識別するための遺伝データ、健康に関するデータ、自然人の性生活または性的指向に関するデータ(以下、「機密」情報またはデータと呼ぶ)に関連するデータを含むが、これらに限定されない。
【0017】
図1に示すように、ユーザの機密情報またはデータを暗号化するためのシステム100が示されている。当業者は、暗号化がデータ、プログラム、画像、または他の情報を読み取り不可能な暗号に変換する一種のセキュリティであることを理解するであろう。暗号化は、複雑なアルゴリズムおよび秘密鍵の集合を使用することによって行われる。システム100には、1人以上のユーザ101A-101B、1つ以上のサーバ102、および1つ以上の仮名トークン103を保存するデータベース104(C
1,C
2,C
3...C
n)が含まれる。仮名トークン、または単にトークンは、以下でより詳細に説明され、本明細書で説明される仮名化プロセスを通して生成されるデータのアイテム(リレーショナルデータベース内のレコードまたはフィールド、半構造化データベース内のフィールド、または非構造化データストア内の値など)である。
【0018】
各仮名トークンは固有の暗号文に対応するが、以下で説明するように、各固有の暗号文は複数の異なる仮名トークンに対応することができる。ユーザ101A、101Bは、自分のパーソナルコンピュータおよび/またはコンピューティング電子デバイスを使用して、機密情報またはデータを受信する第三者ベンダに自分の機密情報またはデータを共有することができる。例えば、病院または医師のウェブサイトに健康フォームを記入する患者、または銀行のウェブサイトにローン申請書を記入する見込みホームバイヤーは、機密情報またはデータがしばしば第三者ベンダと共有されるいくつかの例である。したがって、そのような第三者ベンダは、例えば、病院、銀行、ソーシャルメディアウェブサイト、および/またはしばしば、機密情報またはデータの入力を必要とするオンライントレーダを含むことができるが、これらに限定されない。
【0019】
本明細書に開示される発明概念によれば、暗号化の分野において、「暗号文」は暗号化されたデータを指すことができ、事前暗号化テキストは平文またはそれ自体別の暗号文のいずれかとすることができることが、当業者には理解されよう。「暗号化」はメッセージ(すなわち、平文)を、送信者および意図された受信者によってのみ読み取ることができるように符号化するプロセスを指すことができる。また、「暗号鍵」(以下、「鍵」という)は、データをスクランブル及びアンスクランブルするために生成されるビット系列である。鍵の大きさは、それが有するビットの数によって定義することができ、例えば、2nとすることができ、ここで、nは1より大きい整数である。したがって、例えば、暗号化鍵は、64ビット、128ビット、または256ビットなどとすることができる。本明細書に開示された発明概念は、特定の暗号化鍵サイズに限定されず、または特定されない。
【0020】
本明細書で使用されるように、コンピュータおよび/またはコンピューティングデバイスは、デスクトップ、ラップトップ、またはメインフレームコンピュータ、ワークステーション、サーバ、パーソナルデジタルアシスタント(「PDA」)、携帯型コンピュータ、埋め込み型コンピュータ、プログラマブル論理デバイス、パーソナルコミュニケータ、タブレットコンピュータ、モバイルデバイス、携帯ナビゲーション補助装置、携帯電話、スマートフォン、パーソナル統合通信または娯楽デバイス、および/または一組の命令を実行し、着信データ信号を処理することができる任意の他のデバイスを含むことができるが、それらに限定されない。
【0021】
そのような機密情報またはデータを受信すると、1つまたは複数のサーバ102は特別なコンピュータ実装アルゴリズムおよびソフトウエアを使用してそのような情報を処理し、複数の仮名トークンを生成する(以下でより詳細に説明する)。複数の仮名トークンは、後の処理、検索および分析のためにデータベース104に記憶される。
【0022】
ここで
図2を参照すると、1人または複数のユーザから機密情報またはデータを受信し、そのように受信された機密情報またはデータから複数の暗号文を生成するプロセスを例示するために、専用アルゴリズム200がフローチャートの形で示されている。
【0023】
図2を参照すると、特殊化されたアルゴリズム200が示されている。ステップ201において、機密情報を含む情報が受信される。このような情報は例えば、ユーザ101A~101BのそれぞれのPC、PDA、または携帯型デバイスから、
図1に示す1つまたは複数のサーバ102に送信することができ、この場合、1つまたは複数のサーバ102は、例えば、銀行または病院など、このような機密情報またはデータを収集または要求するエンティティの保管設備に配置され得る。1つまたは複数のサーバ102は、暗号化された形式でユーザ101A、101Bの機密情報を含む要求を受信することができる。すなわち、ユーザ101A、101Bによって送信される機密情報は、データ所有者の鍵を使用してすでに暗号化されている可能性がある。そのような機密情報を、
図1に示す1つまたは複数のサーバ102に送信すると、ユーザ101A、101Bは、GDPR規則に従って、データ所有者の鍵に関して「忘れられる権利」を行使することができる。したがって、データ所有者の鍵を使用して既に暗号化されているユーザ101A、101Bから機密情報を受信する1つまたは複数のサーバ102は、ユーザの識別および機密情報を保護するためにデータ所有者の鍵を忘れ、それによってGDPR規則に準拠することができる。
【0024】
ステップ202に関して、ユーザ101A、101Bが機密情報を受信した1つまたは複数のサーバ102は、提供された機密情報または平文(P)が保護されているかどうかを判定する。機密情報または平文(P)が保護されていない場合、ステップ203に示すように、鍵(k1)を使用して暗号化アルゴリズム(A1)を介して機密情報を処理することによって、またはセキュアハッシングアルゴリズムを適用することによって、平文(P)の暗号文またはハッシュ値を生成することができる。しかし、機密情報がすでに保護されていると判定された場合(例えば、1人または複数のユーザ101A、101Bが秘密情報を暗号文またはハッシュ値として提供した場合)、プロセスはステップ204に進む。
【0025】
ステップ204では、ステップ205に示すように、多型対称暗号化アルゴリズム(A2)および鍵(k2)を使用して暗号文をさらに暗号化し、1つまたは複数の仮名トークンを生成する。1つまたは複数の仮名トークンは、多型暗号化アルゴリズム(A2)および暗号化鍵(k2)を使用して暗号文を暗号化することによって生成することができる。1つ以上の仮名トークンが生成された後、ステップ206において、それらはデータストアに記憶される。データストアは構造化データベースであってもよく、その場合、仮名トークンはデータベースのテーブルに格納することができる。データストアは、フィールド識別子を有する文書など、非構造化または半構造化することもできる。
【0026】
ステップ205で使用される多型対称暗号化アルゴリズムは、以下の式で表すことができる。
【0027】
【0028】
この式において、「H(P)」は、平文(P)の暗号化またはハッシュ化によって生成された暗号文を指す。平文(P)は、ユーザ101A、101Bによって提供される機密情報またはデータである。例えば、上述のように、1人以上のユーザ101A、101Bは、平文(P)を構成する機密情報を提供することができる。式(1)の右辺は、鍵(k2)を使用する暗号文H(P)の多型暗号化を指す。また、最後に、Ciは暗号文H(P)を暗号化した後に得られる擬似的な名前のトークンを示す。このアルゴリズムを暗号文H(P)上で初めて実行すると、第1の仮名トークンC1が得られ、このアルゴリズムを同じ暗号文H(P)上で2度目に実行すると、第2の仮名トークンC2が得られ、以下同様である。その結果、1つ以上の仮名トークン103(C1、C2、C3...Cn)が得られる。それぞれの仮名トークン(Cn)は、1つ以上の仮名トークン103の中の他のc仮名トークン(Cn+1、Cn-1)とは異なっているか、または区別できる。
【0029】
式(1)を使用して1つまたは複数の仮名トークン103(C1、C2、C3...Cn)を生成するとき、平文(P)または暗号文H(P)に固有の仮名トークン103(C1、C2、C3...Cn)の組は、平文を公開せずに一連の1つまたは複数の変換(T1、T2、...Tn)を通して公開することができるいくつかの共有特性または特徴をすべて共有することになる。例えば、仮名トークンC1および仮名トークンC2が両方とも同じ暗号文から生成された場合、一連の変換をC1およびC2に適用して、対応する変換済み値を生成することができる。
【0030】
Tx(C1)=TV1
Tx(C2)=TV2
【0031】
ここで、xが1以上の場合、Txは1つ以上の変換に対応し、TVは変換された値である。変換された値TV1およびTV2は次に、それらが等しいか、または何らかの共有特性を共有しているかを判定するために比較される。もしそうであれば、C1とC2の両方が、その平文を明らかにしたり公開したりすることなく、同じ暗号文に対応していると判定される。
【0032】
共通の性質または特性は、仮名トークンの集合が派生または生成される平文(P)または暗号文H(P)に、1つまたは複数の仮名トークン103(C1、C2、C3...Cn)のそれぞれをリンクさせまたは対応させる特定の特性に対応し得る。例えば、特定の暗号文H(P)について、変換値TVは、その特定の暗号文H(P)に対応する1つまたは複数の仮名トークンのそれぞれに含めることができるバイトシーケンスまたは一意の数のセットを含むことができる。そのような変換値は、そのような暗号文が多型対称暗号化アルゴリズムを使用して生成されるとき、特定の仮名トークン(Cn)の最初、最後、または特別な位置に含まれることができる。複数の仮名トークン103(C1、C2、C3...Cn)を平文(P)に対応させる変換値に関連する発明概念は、ここで開示された例に限定されない。当業者は、変換値TVを構成する他の同様の変形を使用して、特定の仮名トークン(Cn)を特定の暗号文H(P)または平文(P)に相関させる所望の結果を達成することができることを理解するであろう。
【0033】
次に
図3を参照すると、鍵(k2)を使用して多型対称暗号化アルゴリズムが実行された後に生成された複数の仮名トークンの例示的な結果300が示されている。例えば、「Orange Clown」、「Jeanne d’Arc」、または年齢「18-34」のような平文(P)は、複数の暗号文H(P)(図示せず)を生成するために暗号化される。結果300に示されるように、同じ平文(P)に対応する暗号文H(P)が多型対称暗号化アルゴリズムを介して反復されるたびに、同じ暗号文H(P)に対する異なる仮名トークンが生成される。例えば、平文「Orange Clown」の暗号文が多型対称暗号化アルゴリズムによって暗号化されるたびに、異なる仮名トークンが生成された。このプロセスは、同じ暗号文H(P)と平文(P)に対して異なる、一意の擬似同義トークンをもたらす。非限定的な例示的実施形態によれば、仮名トークンの長さは、平文(P)のサイズに4バイトを加えたものであってもよい。例えば、16バイトのサイズを有する平文(P)には、追加の4バイトが追加され、暗号文のサイズは20バイトになる。本明細書に開示された発明概念は、特定の暗号文サイズに限定されず、または特定されない。
【0034】
次に、
図4を参照し、特殊なアルゴリズム400は、検索トークン(T)を複数の仮名トークン103(C
1、C
2、C
3...C
n)のそれぞれ1つ以上に対応させる処理を説明するためのフローチャートの形式で描写される。最初の事柄として、
図4のステップ401、402、403で示される情報は上述のように、
図2のステップ201、202、203で示される情報と同じである。
図4は、ステップ404における検索トークン(T)の生成、ステップ405における複数の仮名トークン103(C
1、C
2、C
3...C
n)のうちの1つ以上に対する検索トークン(T)間の一致を検索すること、およびステップ406において一致が見つからないことを決定すること、または検索トークンに一致する仮名トークンを特定することの、いずれかの追加のステップを含む。
【0035】
ステップ404において、異なるアルゴリズム(A3)および鍵(k2)を使用することによって、検索トークン(T)が生成される。検索トークン(T)を生成するために暗号文H(P)を暗号化するために使用されるアルゴリズムは、Song-Wagner Perrig対称暗号アルゴリズムであり得る。以下の式は、検索トークン(T)と暗号文H(P)との間の関係を示す。
【0036】
TK2(H(P)) (2)
【0037】
ここで、TK2は、暗号文H(P)から鍵(k2)を用いて生成される検索トークン(T)を表す。また、式(1)で述べたように、H(P)は、平文(P)の暗号化によって生成された暗号文を指す。当業者であれば、本明細書に開示された発明概念は、特定の検索トークンサイズに限定されず、または特定されないことを理解するのであろう。
【0038】
ステップ405において、検索トークン(T)を、
図2のステップ205で上述したように生成された複数の仮名トークン103(C
1、C
2、C
3...C
n)のうちの1つ以上とマッチングさせることによってマッチング処理が実行される。ステップ405でのマッチングステップを実行するために、専用プロセッサは
図2のステップ206で上述したように、先に記憶されたデータベース104から複数の仮名トークン(C
1、C
2、C
3...C
n)を最初に取り出すことができる。
【0039】
以下の式は、ステップ405でのマッチングステップを示す。
【0040】
Ci?=TK2(H(P)) (3)
【0041】
ここで、式(1)について述べたように、Ciは暗号文H(P)を暗号化した後に得られる1つまたは複数の仮名トークンを指し、式(2)の下では、TK2が暗号文H(P)から鍵(k2)を使用して生成される検索トークン(T)を表す。H(P)は、平文(P)の暗号化によって生成された暗号文を指す。「?=」は、ステップ405で達成される判定、すなわち、検索トークン(T)と複数の仮名トークン103(C1、C2、C3...Cn)の1つ以上とのマッチの有無、を表している。
【0042】
マッチングステップ405の間に、変換値TVSTを特定の基礎となる暗号文H(P)または平文(P)に相関させることができるように、1つまたは複数の変換値TVSTが検索トークン(T)から生成される。このプロセスは、2つの仮名トークンが同じ暗号文H(P)または同じ平文(P)に対応するかどうかを判定するために使用することができる、前述の変換値を生成するためのプロセスに類似している。すなわち、検索トークン(T)は、平文(P)を公開することなく一連の1つまたは複数の変換(T1、T2、...Tn)を通して公開することができる、何らかの一般的な特性または特徴をすべて共有する平文(P)または暗号文H(P)に固有である。例えば、検索トークン(T)および仮名トークン(Cn)が両方とも同じ暗号文(P)から生成される場合、一連の変換を検索トークン(T)および仮名トークン(Cn)に適用して、対応する変換値を生成することができる。
【0043】
Tx(T)=TVST
Tx(Cn)=TVPT
【0044】
ここで、xが1以上の場合、Txは1つ以上の変換に対応し、TVは変換値である。変換値TVSTは、検索トークン(T)を、その検索トークン(T)が派生するかまたは生成された暗号文H(P)または平文(P)にリンクさせるかまたは対応させる、固有の特性またはプロパティに対応し得る。マッチングステップ405の間に、検索トークン(T)のための変換値TVSTは、1回変換されてもよい。変換値TVSTに関する発明概念は、本明細書に開示された例に限定されない。当業者であれば、変換値TVSTを構成する他の同様の変形を使用して、特定の検索トークン(T)を特定の暗号文H(P)または特定の平文(P)に相関させる所望の結果を達成できることを理解するであろう。
【0045】
また、マッチング処理405は、複数の仮名トークン103(C1、C2、C3...Cn)のそれぞれに対応する1つ以上の変換値TVPTを生成する。仮名トークン103(C1、C2、C3...Cn)のそれぞれについて、一組の変換値TVPTを生成するために使用される変換は、検索トークン(T)、TVSTの変換値を生成するために使用される変換と相互的(reciprocal)である。さらに、複数の仮名トークン103(C1、C2、C3...Cn)のそれぞれの仮名トークンについて、変換値TVPTを生成するために使用される変換は、仮名トークンを生成するために使用される多型暗号化(A2)および鍵(k2)とは異なっていることに留意されたい。換言すれば、TVSTを生成するために適用される変換は例えば、基礎となる暗号文の値を公開する復号化アルゴリズムではない。マッチングステップ405の間に、複数の仮名トークン103の各々についての変換値TVPTは、少なくとも1回変換され得る。
【0046】
その後、マッチング処理405は検索トークン(T)、TVSTに対応する変換値と、仮名トークン103(C1、C2、C3...Cn)、TVPTそれぞれに対応する変換値とを比較し、検索トークン(T)と複数の仮名トークン103(C1、C2、C3...Cn)のうちの1つ以上との間にマッチがあるかどうかを判定する。すなわち、変換された値TVSTおよびTVPTが比較され、それらが等しいか、または何らかの共有特性を共有しているかどうかが判定される。この比較は、変換値TVSTとTVPTとの間の厳密な一致、数値一致、または文字列一致である必要はないことに留意されたい。比較は、変換された価値TVSTおよびTVPTの1つまたは複数のプロパティまたは属性を比較して、それらが共有プロパティを共有するかどうかを判定することもできる。
【0047】
ステップ405で一致が見つかった場合、ステップ407で、検索トークン(T)に一致した仮名トークン103が特定され、例えば、クエリに応答して、またはクエリの実行の一部として返すことができる。そうではなく、一致がない場合、ステップ406で、例えば、クエリに応答して、またはクエリの実行の一部として、一致する仮名トークンがないという判定が識別される。検索トークン(T)と仮名トークン(Cn)との一致は両方とも同じ暗号文H(P)に対応し、平文(P)を明らかにしたり公開したりしない。上述のように、ここで開示された方法は検索トークン(T)または明らかな仮名トークン103(C1、C2、C3...Cn)のいずれかの復号化も必要とせずに、その検索トークン(T)に対応する複数の明らかな仮名トークン103(C1、C2、C3...Cn)に検索トークン(T)をマッチングさせた結果を達成する。したがって、検索トークン(T)の基礎となる暗号文値H(P)および仮名トークン103(C1、C2、C3...Cn)は、検索処理のどの部分においても公開されない。
【0048】
したがって、病院および/または銀行などのベンダが例えば、GDPR規則および規制の遵守を維持しながら、機密情報を含む「生」データ(すなわち、元のデータまたは平文(P)データ)にアクセスすることなくデータ分析を実行したい場合、ベンダは、上述の方法、プロセス、およびシステムを使用して、そのようにすることができる。このような方法、プロセスおよびシステムは、病院および銀行が例えば、データがもはや特定のデータ主体に帰することができないような方法で、個人データを処理することを可能にする。それによって、データ主体の機密情報またはデータを洩らすことなく、および/またはGDPRの規則および規則に違反することなく、データ分析の所望の目標を達成する。
【0049】
図5A~5Cは、例示的な実施形態による、開示されたデータ構造および方法を使用して実行され得る検索プロセスの例を示す。
【0050】
図5Aは、データベース内のサンプルデータテーブル500を示す。テーブル500は、列500A、500B、500Cおよび500Dを含む。
図5Aに示すように、列500Aは、仮名トークンとして暗号化された形で記憶される社会保障番号(SSN)に対応する。残りの列はこの例では平文として格納されているが、もちろん、他の列のうちの1つまたは複数も暗号化された形式で格納することができる。
【0051】
図5Bは、平文501から暗号テキスト502へ、続いて検索トークン503への変換のプロセスを示す。
図5Bに示す検索トークン値503はデータベースを検索するために使用される検索トークンに対応することができ、前述の手法のいずれかを使用して生成することができる。
【0052】
例えば、研究機関は、メインデータベースとは別の安全な遠隔地(リモート位置)に平文情報を格納することができる。関連する平文501の値は、暗号文を生成するために、リモート位置のデータ主体によって提供される暗号鍵を使用して、暗号化され得る。あるいは、リモート位置が、データ主体によって提供された暗号文のみを格納することができ、平文にアクセスできないようにしても良い。
【0053】
検索トークンを生成するために使用される暗号化がメインデータベースで実行される場合、暗号文はデータベース内の対応するデータを検索または更新するために、テーブル500を格納するメインデータベースへのクエリで送信され得る。この場合、クエリはメインデータベース、またはメインデータベースで実行されるエージェントに、クエリを実行するときに必要な暗号化を実行するように指示するコマンドを含むことができる。あるいは、暗号化がリモート位置で実行される場合、暗号文はリモート位置で暗号化されて、検索トークンを生成することができ、検索トークンは関連情報を検索するために、クエリの一部としてメインデータベースに送信されることができる。
【0054】
クエリ(照会)は、リレーショナルデータベースSQL選択または更新照会など、任意のタイプのクエリとすることができる。例えば、テーブル500が「所得格差(IncomeDisparity)」と呼ばれ、検索トークンを生成するために使用される暗号化がクエリをメインデータベースに送信する前にリモート位置で実行されると仮定すると、クエリは、以下のようになり得る。
【0055】
SELECT* from IncomeDisparity
WHERE(Tx1(search token)=Tx2(SSN))
このケースではクエリが検索トークンおよびTx2に適用される1つ以上の第1の変換を参照し、ここで、Tx2はSSN列内の仮名トークンに適用される1つ以上の第2の変換を参照する。第1の変換Tx1は例えば、メインデータベース、リモート位置、またはリモート位置とメインデータベースとの間のデータベースネットワークルータなどの中間ノードで適用することができる。例えば、クエリは1つまたは複数のコマンド(変換を適用するためのコマンドなど)を含むことができ、これらのコマンドはメインデータベースのエージェントによって解釈され、次いで、クエリ内の条件を評価する前に、対応する変換をルックアップし適用するために使用される。
【0056】
図5Cは、検索トークン503を1つまたは複数の仮名トークン500Aに一致させるために使用されるプロセスを示す。段階505において、変換(T
2(X))が検索トークン503に適用され、変換された検索トークン507を生成する。同様に、段階504において、変換(T
1(X))が列500A内の仮名トークンの各々に適用され、変換された列値506を生成する。列500Aは例えば、クエリで指定されたドメインに基づいて選択され得る。ステップ508では変換された列値506と変換された検索トークン507とが、マッチング関数を使用して比較される。マッチング関数は例えば、イコールマッチ、数値マッチ、またはストリング(文字列)マッチを使用することができる。マッチング関数は、変換された列値と変換された検索トークンのプロパティを比較することもできる。マッチング関数は、変換された検索トークン507に一致する変換された列値506を有する任意の行を識別する。ステップ509では、変換された検索トークンに一致する変換された列値を有する行が返される。
【0057】
ここで
図6Aを参照する。非限定的な例示的実施形態によれば、
図6Aは、Song-Wagner Perrig(SWP)アルゴリズムのような(ただしこれに限定されない)多型対称暗号化アルゴリズムの標準的な使用を示す。標準モデルでは、平文データ要素P600A-1は鍵(k)で暗号化される。平文データ要素Pの暗号化プロセスの一部として、擬似ランダム置換(PRP)シードR600A-3が600A-2によって示されるように、平文データ要素Pに注入される。このような注入処理により、多型暗号文データエレメントC
K(P)600A-4が得られる。
【0058】
その後、多型暗号文データ要素C
K(P)600A-4が鍵(k)で復号化される場合、PRPシードR600A-3は、鍵(k)と共に復号化処理に注入されなければならない。このような演算は、平文データ要素P600A-1を復元することになる。当業者は、PRPシードR600A-3の存在がマッチング動作中に必要でない場合があることを理解するであろう。
図6Aに示すこの図では、暗号化プロセス中に注入されたPRPシードR600A-3が後に暗号解読動作を実行するために、データベースのどこかに保存されなければならない。復号化プロセスにおいて後で使用するためにPRPシードR600A-3をこのように記憶しておくことは、メタデータ管理の増加、複雑さ、およびシステム全体の信頼性の低下をもたらす。
【0059】
ここで
図6B~Cを参照する。
図6Bは
図6Aに開示された従来の方法に対する改良を表し、
図6Cは、
図6Bで行われたアルゴリズムをフローチャートで示す。
図6Bに示すように、平文データ要素P600B-1は、鍵(k)で暗号化され、擬似ランダム置換(PRP)シードR600B-2によって増補される。PRPシードR606B-2は、暗号化動作のプロセスにおいて注入される。この暗号化演算により、多型暗号文データエレメントC
K(P)600B-3が生成される。PRPシードR600B-2は、暗号文データ要素C
K(P)600B-3に付加され、鍵(k)を用いたストリーム動作方式でストリーム暗号またはブロック暗号で暗号化され、拡張暗号文600B-4を形成または生成する。PRPシードR600B-2のサイズは一定であるため、拡張暗号文600B-4における要素の位置は一意に決まる。
【0060】
ここで、
図6Bに示されるフローチャートの実装を表す
図6Cを参照すると、増補された暗号テキストが示される専用アルゴリズム(600)が示される。最初の事柄として、ステップ601、602、および603によって示される情報は上述したように、
図2のステップ201、202、および203によって示される情報と同じである。
図1に示す1つまたは複数のサーバ102の専用プロセッサは、暗号文H(P)を受信した後、ステップ604で、擬似ランダム置換(PRP)シードを生成する。ステップ605で、1つまたは複数のサーバ102は、異なるアルゴリズム(A2)および鍵(k2)を使用して暗号文C1を暗号化し、異なる第2の暗号文を生成する。当業者は、暗号化アルゴリズムが例えば、Song-Wagner-Perrig対称暗号アルゴリズムであり得ることを理解するであろう。次に、ステップ606で、サーバは、暗号アルゴリズム(A3)、鍵(k2)および初期化ベクトル(IV)のソースとしての第2の暗号文を使用して、前記PRPシードを暗号化する。PRPシードは、出力フィードバックモード(OFB)、カウンタモード(CTR)、またはガロアカウンタモード(GCM)などのストリーム暗号動作モードにおいて、RC4暗号、タリング暗号、またはブロック暗号アルゴリズムなどのストリーム暗号を使用して暗号化できることを当業者は理解するであろう。当業者は、初期化ベクトル(IV)がSHA-256、SHA-3などの暗号的に安全なハッシュアルゴリズムを使用して生成され得ることを理解するであろう。PRPシードのサイズは、アルゴリズム(A2)の要求を満たすように選択される。
【0061】
次に、ステップ607で、暗号化されたPRPシードを暗号文に追加して、増補暗号文を生成することができる。すなわち、PRPシードは増補暗号文を形成するために、第2の暗号文の先頭または第2の暗号文の末尾に追加することができる。本質的に、増補された暗号文は、第2の暗号文と暗号化されたPRPシードとの組み合わせである。
【0062】
当業者は、PRPシードR600B-2がAES暗号の手段によって暗号化されることがストリームモード業務であることを理解するであろう。暗号化演算のための適切なIVは暗号文データ要素C
K(P)600B-3のSHA-256暗号ハッシュ値を計算し、前記計算されたハッシュ値の左端の16バイトをとることによって導出される。さらに、SEALまたはTDEAのような他の暗号化アルゴリズムが暗号文データ要素C
K(P)600B-3を暗号化するために使用され得、MD5またはSHA-3ファミリーのような他のハッシュアルゴリズムが好適なIVを生成するために使用され得ることが、当業者によって理解される。また、RC4+またはSpritzなどのIVを必要としない暗号化アルゴリズムを暗号化に使用できることも理解されたい。また、IVは、固定値を使用するなど、異なるアプローチを使用して導出することができることも理解されたい
さらに
図6Cを参照して、解読プロセスをステップ608、609および610に関して説明する。増補された暗号文から平文(P)に戻るために、
図1に示すように、1つまたは複数のサーバ102の専用プロセッサはステップ608に示すように、増補された暗号文から暗号化されたPRPシードを除去する。上述したように、暗号化されたPRPシードは、暗号化プロセス中に暗号文に付加される。復号化のために、暗号化されたPRPシードは暗号文から分離され、アルゴリズム(A3)および鍵(k2)を使用して復号化される。次に、ステップ609に示すように、アルゴリズム(A2)および鍵(k2)を使用して、結果として得られる暗号文を復号化する。その後、ステップ610に示すように、元の暗号文H(P)が得られる。
【0063】
本明細書で開示される非限定的な例示的な実施形態によれば、本発明の概念は、多型的に暗号化されたデータを検索するために1つまたは複数のコンピューティングデバイスによって実行される少なくとも1つの方法を対象とする。本方法は1つまたは複数のコンピューティングデバイスのうちの少なくとも1つによって、第1のアルゴリズムおよび暗号化鍵を使用して暗号文を暗号化することによって1つまたは複数の仮名トークンを生成することを含み、第1のアルゴリズムは同じ暗号文への多型アルゴリズムの各アプリケーションについて区別可能の仮名トークンを生成するように構成された多型アルゴリズムを含み、1つまたは複数のコンピューティングデバイスのうちの少なくとも1つによって、1つまたは複数の仮名トークンをデータストアに格納することと、第2のアルゴリズムおよび暗号化鍵を使用して暗号文を暗号化することによって生成された検索トークンを使用してデータベースに照会することによって、1つまたは複数のコンピューティングデバイスのうちの少なくとも1つによって、暗号文に対応するデータをデータストア内で識別することとを含む。検索トークンは、1つまたは複数の仮名トークンとは区別可能である。第2のアルゴリズムは、第1のアルゴリズムと異なる。
【0064】
第2のアルゴリズムおよび暗号化鍵を使用して暗号文を暗号化することによって生成された検索トークンを使用してデータベースに照会することによって暗号文に対応するデータストア内のデータを識別することは、1つまたは複数の変換済み列を生成するために1つまたは複数の仮名トークンを含む1つまたは複数の列に1つまたは複数の第1の変換を適用することと、変換済み検索トークンを生成するために1つまたは複数の第2の変換を検索トークンに適用することと、1つまたは複数の変換済み列および変換済み検索トークンに少なくとも部分的に基づいて暗号文に対応する1つまたは複数の行を識別することとを含む。
【0065】
1つまたは複数の変換された列および変換された検索トークンに少なくとも部分的に基づいて暗号文に対応する1つまたは複数の行を識別することは、1つまたは複数の一致する変換された列値を識別するために一致関数を使用して、1つまたは複数の変換された列内の各変換された列値を変換された検索トークンと比較することと、1つまたは複数の一致する変換された列値を含む1つまたは複数の行を暗号文に対応するものとして識別することとを含む。
【0066】
多型的に暗号化されたデータを検索するための方法は、1つまたは複数のコンピューティングデバイスのうちの少なくとも1つによって、検索トークンが複数の仮名トークンのうちの1つまたは複数の仮名トークンと一致する場合、少なくとも1つの仮名トークンのリストを含む第1の結果を表示することと、検索トークンが複数の仮名トークンのうちの1つまたは複数の仮名トークンと一致しない場合、1つまたは複数のコンピューティングデバイスのうちの少なくとも1つによって、異なる第2の結果を表示することとをさらに含む。
【0067】
多型的に暗号化されたデータを検索するための方法は、1つまたは複数のコンピューティングデバイスのうちの少なくとも1つによって、別個の仮名トークン内の1つまたは複数の擬似ランダム置換(PRP)シードのそれぞれ1つを追加することによって、複数の仮名トークンの別個の仮名トークンを修正することをさらに含む。
【0068】
多型的に暗号化されたデータを検索するための方法は1つまたは複数のコンピューティングデバイスのうちの少なくとも1つによって、1つまたは複数のPRPシードのうちのそれぞれ1つを、異なる第3のアルゴリズムおよび暗号化鍵を使用して暗号化することをさらに含み、1つまたは複数のPRPシードのうちのそれぞれ1つを追加することは、別個の仮名トークンの前または後のいずれかで、それぞれのPRPシードを追加することを含む。
【0069】
多型的に暗号化されたデータを検索するための方法は、初期化ベクトルとして、別個の仮名トークンのコンテンツに基づいて、1つまたは複数のコンピューティングデバイスのうちの少なくとも1つによって、1つまたは複数のPRPシードを暗号化することをさらに備える。
【0070】
多型的に暗号化されたデータを検索するための方法はさらに、1つまたは複数のコンピューティングデバイスのうちの少なくとも1つによって、暗号化された1つまたは複数のPRPシードを切り離すことと、1つまたは複数のコンピューティングデバイスのうちの少なくとも1つによって、第3のアルゴリズムおよび暗号化鍵を使用して、暗号化された1つまたは複数のPRPシードを復号することとを含む。
【0071】
多型的に暗号化されたデータを検索するための方法は、1つまたは複数のコンピューティングデバイスのうちの少なくとも1つによって、初期化ベクトルとしての別個の仮名トークンのコンテンツに基づいて1つまたは複数のPRPシードを復号することと、1つまたは複数のコンピューティングデバイスのうちの少なくとも1つによって、それぞれの仮名トークンを、別個の仮名トークンからそれぞれのPRPシードを除去した後に、復号第1アルゴリズムおよび暗号化鍵を使用して復号することとをさらに備える。
【0072】
本明細書で開示される非限定的な例示的実施形態によれば、本発明の概念は、1つまたは複数のプロセッサと、1つまたは複数のプロセッサのうちの少なくとも1つに動作可能に結合され、その上に格納された命令を有する1つまたは複数のメモリとを備える、多型暗号化されたデータを検索するためのシステムを対象とする。命令は1つまたは複数のプロセッサのうちの少なくとも1つによって実行されると、1つまたは複数のプロセッサのうちの少なくとも1つに、第1のアルゴリズムおよび暗号化鍵を使用して暗号文を暗号化することによって1つまたは複数の仮名トークンを生成させる。第1のアルゴリズムは、同じ暗号文への多型アルゴリズムの各アプリケーションについて別個の仮名トークンを生成するように構成された多型アルゴリズムを含む。前記命令は、さらに、1つまたは複数の仮名トークンをデータストアに格納させ、第2のアルゴリズムおよび暗号化鍵を使用して暗号文を暗号化することによって生成された検索トークンを使用してデータベースに照会することによって、暗号文に対応するデータをデータストア内で識別させる。検索トークンは、1つまたは複数の仮名トークンとは区別可能である。
【0073】
前記1つまたは複数のメモリのうちの少なくとも1つは、1つまたは複数のプロセッサのうちの少なくとも1つによって実行されると、1つまたは複数のプロセッサに、1つまたは複数の仮名トークンを含む1つまたは複数の列に1つまたは複数の第1の変換を適用させて1つまたは複数の変換された列を生成させ、1つまたは複数の第2の変換を検索トークンに適用させて変換された検索トークンを生成させ、1つまたは複数の変換された列および変換された検索トークンに少なくとも部分的に基づいて暗号文に対応する1つまたは複数の行を識別させる、命令をさらに格納する。
【0074】
前記1つまたは複数のメモリのうちの少なくとも1つは、1つまたは複数のプロセッサのうちの少なくとも1つによって実行されるときに、1つまたは複数のプロセッサのうちの少なくとも1つに、1つまたは複数の一致する変換された列値を識別するために一致関数を使用して1つまたは複数の変換された列内の各変換された列値を変換された検索トークンと比較させ、1つまたは複数の一致する変換された列値を含む1つまたは複数の行を暗号文に対応するものとして識別させる、1つまたは複数のメモリ上に格納された命令をさらに含む。
【0075】
前記1つまたは複数のメモリのうちの少なくとも1つは、1つまたは複数のプロセッサのうちの少なくとも1つによって実行されるときに、1つまたは複数のプロセッサのうちの少なくとも1つに、別個の仮名トークン内の1つまたは複数の擬似ランダム置換(PRP)シードのそれぞれ1つを追加することによって、複数の仮名トークンの別個の仮名トークンを修正させる、1つまたは複数のメモリ上に格納されたさらなる命令を含む。
【0076】
前記1つまたは複数のメモリのうちの少なくとも1つは、1つまたは複数のプロセッサのうちの少なくとも1つによって実行されるときに、1つまたは複数のプロセッサのうちの少なくとも1つに、異なる第3のアルゴリズムおよび暗号化鍵を使用して1つまたは複数のPRPシードのうちのそれぞれ1つを暗号化させる、1つまたは複数のメモリ上に格納されたさらなる命令を含む。1つまたは複数のPRPシードのうちのそれぞれ1つを追加することは、別個の仮名トークンの前または後のいずれかに、それぞれのPRPシードを追加することを含む。
【0077】
前記1つまたは複数のメモリのうちの少なくとも1つは、1つまたは複数のプロセッサのうちの少なくとも1つによって実行されるときに、1つまたは複数のPRPシードを暗号化するときに初期化ベクトルとして別個の仮名トークンのコンテンツを使用することに基づいて、1つまたは複数のプロセッサのうちの少なくとも1つに、1つまたは複数のPRPシードを暗号化させる、1つまたは複数のメモリ上に格納されたさらなる命令を含む。
【0078】
前記1つまたは複数のメモリのうちの少なくとも1つは、1つまたは複数のプロセッサのうちの少なくとも1つによって実行されると、1つまたは複数のプロセッサのうちの少なくとも1つに、暗号化された1つまたは複数のPRPシードを切り離させ、第3のアルゴリズムおよび暗号化鍵を使用して、暗号化された1つまたは複数のPRPシードを復号させる、1つまたは複数のメモリ上に格納されたさらなる命令を含む。
【0079】
前記1つまたは複数のメモリのうちの少なくとも1つは、1つまたは複数のプロセッサのうちの少なくとも1つによって実行されるときに、1つまたは複数のPRPシードを復号するときに初期化ベクトルとして別個の仮名トークンのコンテンツを使用することに基づいて、1つまたは複数のプロセッサのうちの少なくとも1つに、1つまたは複数のPRPシードを復号させる、1つまたは複数のメモリ上に格納されたさらなる命令を含む。
【0080】
本明細書で開示される非限定的な例示的実施形態によれば、本発明の概念は1つまたは複数のコンピューティングデバイスによって実行されるときに、第1のアルゴリズムおよび暗号化鍵を使用して暗号文を暗号化することによって1つまたは複数の仮名トークンを生成させるコンピュータ可読命令を格納する少なくとも1つの非一時的なコンピュータ可読媒体を対象とする。第1のアルゴリズムは同じ暗号文への多型アルゴリズムの各アプリケーションについて別個の仮名トークンを生成するように構成された多型アルゴリズムを含み、1つまたは複数の仮名トークンをデータストアに格納し、第2のアルゴリズムおよび暗号化鍵を使用して暗号文を暗号化することによって生成された検索トークンを使用してデータベースに照会することによって暗号文に対応するデータをデータストア内で識別する。検索トークンは、1つまたは複数の仮名トークンとは異なる。
【0081】
各コンピュータプログラムは記憶媒体(例えば、CD-ROM、ハードディスク、または磁気ディスケット)またはデバイス(例えば、コンピュータ周辺機器)などの製造品に記憶することができ、記憶媒体またはデバイスはデータフレーマインターフェースの機能を実行するためにコンピュータによって読み取られるときに、コンピュータを構成し、動作させるために、プログラマブルコンピュータによって読み取り可能である。暗号化データを検索するためのシステム、装置、および方法はコンピュータプログラムで構成された機械可読記憶媒体として実装することもでき、実行時に、コンピュータプログラム内の命令は機械に、上述の暗号化データを検索する機能を実行させるように動作させる。
【0082】
本明細書で使用されるように、コンピュータプログラムおよび/またはソフトウェアは、機能を実行する任意のシーケンスまたは人間または機械認識可能なステップを含むことができる。そのようなコンピュータプログラムおよび/またはソフトウエアは例えば、C/C++、C#、Fortran、COBOL、MATLAB(商標)、PASCAL、Python、アセンブリ言語、マークアップ言語(例えば、HTML、SGML、XML、VoXML)など、ならびに、コモンオブジェクトリクエストブローカアーキテクチャ(「CORBA」)、JAVA(登録商標)(J2ME、Java Beansなどを含む)、バイナリランタイム環境(例えば、BREW)などのオブジェクト指向環境を含む、任意のプログラム言語または環境でレンダリングすることができる。
【0083】
本開示の特定の態様は、方法のステップの特定のシーケンスに関して説明されるが、これらの説明は本開示のより広範な方法の例示にすぎず、特定のアプリケーションによって必要とされるように修正され得ることが認識されるであろう。特定のステップは、特定の状況下では不要または任意選択である。さらに、特定のステップまたは機能性を、開示された構成に追加することができ、または2つ以上のステップの実行順序を入れ替えることができる。全てのそのような変形は、本明細書に開示され、特許請求される開示内に包含されると考えられる。
【0084】
上記の詳細な説明は様々な実装形態に適用されるような本開示の新規な特徴を示し、説明し、指摘したが、例示されたデバイスまたはプロセスの形態および詳細における様々な省略、置換、および変更は本開示から逸脱することなく当業者によってなされ得ることが理解されるであろう。前述の説明は、本開示を実施するために現在考えられる最良の形態のものである。この説明は、決して限定することを意味するものではなく、むしろ、本開示の一般的な原理の例示として解釈されるべきである。開示の範囲は、特許請求の範囲を参照して決定されるべきである。
【0085】
本開示は図面および前述の説明において詳細に図示および説明されてきたが、そのような図示および説明は例示的または例示的であり、限定的ではないと見なされるべきである。本開示は、開示される実施形態に限定されない。開示された実施形態に対する変形は図面、開示、および添付の特許請求の範囲の検討から、特許請求された開示を実施する際に当業者によって理解され、実施されることができる。
【0086】
本明細書で開示される方法は1つまたは複数の処理デバイス(たとえば、デジタルプロセッサ、アナログプロセッサ、情報を処理するように設計されたデジタル回路、情報を処理するように設計されたアナログ回路、状態機械、および/または情報を電子的に処理するための、および/またはコンピュータ可読命令として記憶されたコンピュータプログラムモジュールを実行するように構成された他の機構)で実装され得る。1つまたは複数の処理デバイスは、非一時的電子記憶媒体上に電子的に記憶された命令に応答して、方法の動作のいくつかまたはすべてを実行する1つまたは複数のデバイスを含むことができる。1つまたは複数の処理デバイスは、本明細書の方法の1つまたは複数の動作の実行のために特に設計されるようにハードウェア、ファームウェア、および/またはソフトウエアを介して構成された1つまたは複数のデバイスを含むことができる。
【0087】
さらに、サーバは特定のステップを参照して説明されるが、これらのステップは説明の便宜のために定義され、構成要素部品の特定の物理的配置を暗示することを意図しないことを理解されたい。さらに、ステップは、物理的に別個の構成要素に対応する必要はない。ステップは例えば、プロセッサをプログラミングすることによって、または適切な制御回路を提供することによって、様々な動作を実行するように構成することができ、様々なステップは、初期構成がどのように得られるかに応じて、再構成可能であってもなくてもよい。本発明の概念の実施は、回路およびソフトウエアの任意の組合せを使用して実施される電子デバイスを含む様々な装置で実現することができる。
【0088】
本明細書で実施され、開示されるプロセッサおよび/またはコントローラは処理がより高速かつより効率的に行われるように、コントローラによって実行される特殊化されたコンピュータ実装命令とハードコード化ロジックとの両方を備えることができる。これは、プロセッサおよび/またはコントローラによるより速い意思決定をもたらし、それによって、所望の結果をより効率的にかつ迅速に達成する。そのようなプロセッサおよび/またはコントローラは特殊化されたアルゴリズムの実行を介してコンピュータ機能性を改善し、コンピュータ技術に必然的に根ざす問題を解決し、既存の従来技術および/または従来技術を超える改善を提供する専用コンピュータを対象とする。例えば、本明細書で開示されるシステム、方法、および装置は、暗号化されたデータのデータ分析、検索、検索、および更新中にコンピュータセキュリティを改善する。さらに、本明細書で開示される新規なデータ構造はデータの完全な匿名性を維持しながら、ならびにGDRPの厳格な要件に準拠するために「忘れられる権利」を維持しながら、データの検索および分析を可能にする。最後に、本明細書で開示される技法は特定の人物に対応するデータを検索し、削除する必要がないように、「忘れられる権利」を計算効率のよい方法で実装する。必要とされるのは、暗号文を生成するために使用される初期鍵が破棄されることだけである。このような技法は公開鍵を使用する従来の方法よりも高速な処理を可能にし、必要とする追加の記憶装置が大幅に少なく、複数の暗号鍵を必要とする従来の方法よりも誤りの傾向が少ない。
【0089】
本開示の特定の特徴または態様を説明するときの特定の用語の使用は、その用語が関連付けられる本開示の特徴または態様の任意の特定の特性を含むように限定されるように本明細書で用語が再定義されることを暗示すると解釈されるべきではないことに留意されたい。特に添付の特許請求の範囲において、本出願において使用される用語および語句、ならびにそれらの変形は特に明示的に記載されない限り、限定ではなく、オープンエンドとして解釈されるべきである。前述の例として、用語「含む」は「限定されるものではないが」などを意味すると解釈されるべきであり、本明細書で使用される用語「含む」は「含む」、「含む」または「特徴付けられる」と同義であり、包括的または限定されない要素または方法ステップを排除するものではなく、用語「有する」は「少なくとも有する」と解釈されるべきである。用語「そのような」は「限定されるものではないが」として解釈されるべきである。用語「含む」は「含むが限定されるものではない」として解釈されるべきである。用語「例」は論議中のアイテムの例示的な例を提供するために使用され、そのリストを網羅的または限定するものではなく、「例であり、限定されるものではない」」と解釈されるべきである。「既知の」、「通常の」、「標準」および同様の形容詞は、所定の期間または所定の時点で利用可能なアイテムを意味するものとして解釈されるべきではなく、現在または将来の任意のときに利用可能または既知であり得る、既知の、通常の、または標準的な技術を包含するように読み取られるべきである。
【0090】
さらに、「好ましくは」、「好ましい」、「望まれる」、または「望ましい」などの用語、および同様の意味の用語の使用は、特定の特徴が本開示の構造または機能にとって決定的、本質的、または重要でさえあることを暗示するものとして理解されるべきではなく、代わりに、特定の実施形態で利用することができ、または利用することができない代替または追加の特徴を強調することを単に意図するものとして理解されるべきである。同様に、用語「および」にリンクされた項目のグループは、それらの項目のそれぞれおよびすべてがグループ内に存在することを必要とするものとして解釈されるべきではなく、むしろ、特に断りのない限り「および/または」として解釈されるべきである。同様に、用語「または」でリンクされた項目のグループは、そのグループ間で相互排他性を要求するものとして解釈されるべきではなく、むしろ、特に明記しない限り「および/または」として解釈されるべきである。
【0091】
用語「約」または「略」などは同義語であり、この用語によって修飾された値がそれに関連する理解される範囲を有することを示すために使用され、この範囲は、±20%、±15%、±10%、±5%、または±1%であり得る。用語「実質的に」は結果(例えば、測定値)が目標値に近いことを示すために使用され、ここで、近いとは、例えば、結果が値の80%以内、値の90%以内、値の95%以内、または値の99%以内であることを意味し得る。また、本明細書で使用される「定義された」または「決定された」は、「事前に定義された」または「所定の」および/または他の方法で決定された値、条件、閾値、測定値などを含むことができる。