(57)【要約】      （修正有）【課題】暗号化データベースを生成する方法及びシステムを提供する。【解決手段】方法は、平文データエントリを有する平文データベースを受信することと、平文データベースを使用して暗号化データベースを生成することと、を含む。暗号化データベースは、暗号化データエントリを含み、少なくとも１つの形式の条件付きクエリが、その復号なしで暗号化データエントリについてクエリが計算されたときに正しい暗号化結果を返すように、少なくとも１つの形式の条件付きクエリをサポートする。【選択図】図１
2019035948.tif 000002
【特許請求の範囲】
【請求項１】
暗号化データベースを生成する方法であって、前記方法は、
（ａ）平文データエントリを有する平文データベースを受信することと、
（ｂ）前記平文データベースを使用して暗号化データベースを生成することであって、前記暗号化データベースが暗号化データエントリを含む、生成することと
を備え、
前記暗号化データベースが、少なくとも１つの形式の条件付きクエリがその復号なしで前記暗号化データエントリについて前記クエリが計算されたときに正しい暗号化結果を返すように、前記少なくとも１つの形式の条件付きクエリをサポートするように構成されている、方法。
【請求項２】
前記暗号化データが、意味的にセキュアな暗号化によって暗号化される、請求項１に記載の方法。
【請求項３】
前記少なくとも１つの形式の条件付きクエリが、ＷＨＥＲＥクエリまたはＧＲＯＵＰＢＹクエリのうちの１つである、請求項１に記載の方法。
【請求項４】
（ｃ）公開−秘密鍵のペアを確立することであって、前記暗号化データベースを暗号化するために前記ペアの公開鍵が使用され、クエリの返された結果を復号するために前記ペアの秘密鍵が提供される、確立すること
をさらに備える、請求項１に記載の方法。
【請求項５】
前記秘密鍵が、前記暗号化データベースが保持されるデータベース管理システムまたは前記暗号化データベース上で実行されるクエリを計算するサーバで利用可能とされない、請求項１に記載の方法。
【請求項６】
暗号化データベースを管理するシステムであって、前記システムは、
１つ以上実装された抽出、転送および書き込み（ＥＴＬ）サーバであって、前記ＥＴＬサーバは、（ｉ）暗号化されていないデータを有する平文データベースを入力として受信し、（ｉｉ）前記入力された平文データベースに基づいて、暗号化データを有する対応する暗号化データベースを出力するように動作する、ＥＴＬサーバと、
１つ以上実装されたデータベース（ＤＢ）サーバであって、前記ＤＢサーバは、（ｉ）前記ＥＴＬサーバから前記暗号化データベースを受信して保持し、（ｉｉ）前記ＤＢサーバに提出されたクエリに応答して暗号化データを返すように動作する、ＤＢサーバと、
１つ以上実装された計算サーバであって、（ｉ）クエリを前記ＤＢサーバに提出し、（ｉｉ）前記ＤＢサーバから返された暗号化データに関する計算を実行するように動作する、計算サーバと
を備え、
前記計算が、前記暗号化データの復号なしに前記暗号化データベースからの前記暗号化データに対して実行され、前記計算から得られた結果が暗号化され、前記暗号化データベースが、前記暗号化データの基礎となる前記暗号化されていないデータのサンプルを明らかにすることなく、少なくとも１つの形式の条件付きクエリに応答して正しい暗号化結果を得ることをサポートするように構成されている、
システム。
【請求項７】
前記暗号化データが、意味的にセキュアな暗号化によって暗号化される、請求項６に記載のシステム。
【請求項８】
前記暗号化データが、準同型暗号システムを使用して暗号化される、請求項７に記載のシステム。
【請求項９】
前記準同型暗号システムが、相加的準同型暗号システムである、請求項８に記載のシステム。
【請求項１０】
前記準同型暗号システムが、２−ＤＮＦ（論理和標準形）演算をサポートする、請求項８に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書の主題は、一般に、データセキュリティの技術に関する。本明細書に開示された例示的な実施形態は、構造化照会言語（ＳＱＬ）データベース（ＤＢ）および／またはデータベース管理システム（ＤＢＭＳ）（例えば、ＭｙＳＱＬなど）と共に特定のアプリケーションを見出し、それらは、ここでは特に参照しながら記載される。しかしながら、本明細書に開示されるものなどの様々な例示的実施形態はまた、他の種類のリレーショナルデータベースならびにグラフィックおよび／または他の種類のデータベースを含む他の同様のアプリケーションにも適用可能であることを理解されたい。
【背景技術】
【０００２】
データセキュリティの分野では、特定の種類の暗号化データベースは不明ではない。しかしながら、従来は、データ解析における設計によって十分なプライバシーを組み込んだ適切なアーキテクチャについての強力なコンセンサスはなかった。例えば、従来のデータベースクエリに適用可能なままであるように暗号化データをどのように配置または記憶されるべきか、どのようにキー管理が実行されるべきか、および／または秘密解析を効率的に実行するためにどのような対策を講じなければならないかなどについての強力なコンセンサスはなかった。
【０００３】
１つの提案されたアーキテクチャは、「ＣｒｙｐｔＤＢ」として知られている。一般に、異なる暗号化がデータに連続的に適用される「暗号化の玉ねぎ（ｏｎｉｏｎｓ  ｏｆ  ｅｎｃｒｙｐｔｉｏｎ）」を使用して暗号化フォーマットでデータを記憶する必要がある。したがって、クエリに応じて、適切な暗号化フォーマットでデータにアクセスし、クエリに応答するために十分な計算を実行することができるまで、暗号化のレイヤは削除される（玉ねぎをはがすなど）ことができる。このアプローチは、ＳＱＬクエリのサブセットをサポートするように示されているが、これは、平文データベースの解析に既に熟練しているデータサイエンティストにとっては有益であるが、いくつかの潜在的な欠点がある。
【０００４】
上述したアプローチの潜在的な欠点の１つは、ＣｒｙｐｔＤＢにおいて使用される全ての暗号システムが十分に強力なセキュリティ特性を有するとは限らないということである。例えば、決定論的暗号化および順序保持暗号化は、特定のクエリに応答するのに十分な情報よりも多くの情報を漏洩することがある。特に、ＳＱＬ  ＷＨＥＲＥクエリを実行するために、ＣｒｙｐｔＤＢは、決定論的暗号化レイヤにアクセスする必要があり、データの分布および濃度を知っている人に追加情報を漏洩することがある。
【発明の概要】
【０００５】
この簡単な説明は、本明細書に関連する概念を紹介するために提供される。それは、特許請求された主題の本質的な特徴を特定することを意図するものでもなく、特許請求された主題の範囲を決定または限定する際の使用を意図するものでもない。以下に記載される例示的な実施形態は、網羅的であることをまたは以下の詳細な説明に開示された厳密な形態に特許請求の範囲を限定することを意図するものではない。むしろ、実施形態は、当業者が本明細書に提示される主題の原理および実践を評価して理解することができるように選択されて以下に記載される。
【課題を解決するための手段】
【０００６】
例示的な１つの実施形態によれば、暗号化データベースを生成する方法が提供される。本方法は、平文データエントリを有する平文データベースを受信することと、平文データベースを使用して暗号化データベースを生成することであって、暗号化データベースが暗号化データエントリを含む、生成することとを含む。暗号化データベースは、少なくとも１つの形式の条件付きクエリが、その復号なしで暗号化データエントリについてクエリが計算されたときに正しい暗号化結果を返すように、少なくとも１つの形式の条件付きクエリをサポートするように構成されている。
【０００７】
別の例示的な実施形態によれば、暗号化データベースを管理するシステムが提供される。システムは、１つ以上のコンピュータに実装された抽出、転送、および書き込み（ＥＴＬ）であって、ＥＴＬサーバは、（ｉ）暗号化されていないデータを有する平文データベースを入力として受信し、（ｉｉ）入力された平文データベースに基づいて、暗号化データを有する対応する暗号化データベースを出力するように動作する前記ＥＴＬサーバと、１つ以上のコンピュータに実装されたデータベース（ＤＢ）であって、（ｉ）ＥＴＬサーバから暗号化データベースを受信して保持し、（ｉｉ）ＤＢサーバに提出されたクエリに応答して暗号化データを返すように動作する前記ＤＢと、１つ以上のコンピュータに実装された計算であって、（ｉ）クエリをＤＢサーバに提出し、（ｉｉ）ＤＢサーバから返された暗号化データに関する計算を実行するように動作する前記計算サーバとを含む。適切には、計算は、暗号化データの復号なしに暗号化データベースからの暗号化データに対して実行され、前記計算から得られた結果は暗号化される。暗号化データベースは、暗号化データの基礎となる暗号化されていないデータのサンプルを明らかにすることなく、少なくとも１つの形式の条件付きクエリに応答して正しい暗号化結果を得ることをサポートするように構成されている。
【０００８】
以下の詳細な説明は、添付図面における図面を参照する。しかしながら、本明細書に開示された本発明の主題は、様々な構成要素および構成要素の配置の、ならびに様々なステップおよびステップの配置の形態をとることができる。図面は、例示的なおよび／または好ましい実施形態を説明するためのものにすぎず、限定するものとして解釈されるべきではない。さらに、図面は縮尺通りではないことがあることを理解されたい。
【図面の簡単な説明】
【０００９】
【図１】図１は、本発明の主題の態様にかかる例示的なシステムおよび／またはアーキテクチャを示す概略図である。
【図２】図２は、本発明の主題の態様にかかるデータベースを前処理して暗号化する例示的なプロセスおよび／または方法を示すフローチャートである。
【発明を実施するための形態】
【００１０】
明瞭且つ簡潔にするために、本明細書は、本明細書に提示された好ましいおよび／または他の実施形態にしたがっておよび／またはそれらに適合して修正または変更された範囲を除き、それらの構成または動作に関するさらなる詳細な説明なしに当該技術分野において一般に知られている構造的および／または機能的要素、関連する標準、アルゴリズムおよび／またはプロトコル、および他の構成要素、方法および／またはプロセスを指すものとする。さらに、本明細書に開示された装置および方法は、例を介しておよび図面を参照して詳細に説明される。別段の指定がない限り、図中の同様の符号は、図面全体にわたって同一、類似または対応する要素の参照を示す。開示されて記載された例、配置、構成、構成要素、要素、装置、方法、材料などに対する変更が行われることができ、特定の用途のために所望されることができることが理解される。この開示において、特定の材料、技術、配置などのいかなる特定も、提示された特定の例に関連するか、またはそのような材料、技術、配置などの一般的な説明にすぎない。具体的な詳細または例の特定は、そのように具体的に指定されていない限り、義務的または限定的であると解釈されるように意図されておらず、そうであるべきではない。装置および方法の選択された例は、図面を参照して以下に詳細に開示されて記載される。
【００１１】
本発明の主題の態様によれば、相加的準同型暗号システムによって保護されたＤＢに対して実行可能な計算のセットが拡張される。１つの例示的な実施形態は、ＳＱＬのような言語を使用して照会されることができるリレーショナルＤＢに関する。例えば、学校のＤＢにおける子供の数を合計する以下のＳＱＬクエリを考える：
ＳＥＬＥＣＴ  ＡＶＧ（年齢）ＦＲＯＭ  ｈｏｇｗａｒｔｓ
【００１２】
各世帯における子供の数が、意味的にセキュアな相加的準同型暗号システムを使用して暗号化されている場合、このクエリは、暗号化されたドメインで処理され、暗号化された結果を返す。そして、この結果は、アナリストまたは適切な特権を有する他のユーザによって復号される。
【００１３】
僅かにより複雑なクエリを考える：
ＳＥＬＥＣＴ  ＡＶＧ（年齢）ＦＲＯＭ  ｈｏｇｗａｒｔｓ
ＷＨＥＲＥ  ｇｅｎｄｅｒ＝“女性”；
【００１４】
このクエリにおいて、暗号化されたドメインの合計は、指定された条件、すなわち、性別属性が「女性」を満たすテーブルにおける特定の行にわたってのみ実行される。この小さな追加であっても、クエリの実行は、もはや簡単ではない。その理由は、意味的にセキュアな暗号化では、テーブルの暗号化された「性別」列における暗号文を調べることだけで、どの行が女性の子供に対応するのかを容易に実現可能に判断することができないからである。
【００１５】
代わりに、性別列のために決定論的暗号化を使用することもできる。しかしながら、これは、男性用および女性用の２種類の暗号文のみをもたらす。これは、意味的にセキュアな相加的準同型暗号システムを使用して暗号化された各生徒の年齢をなおも保持したまま、女性および男性の子供に対応する行を特定することを容易とする。上述した決定論的暗号化アプローチの問題点は、ＤＢサーバのみならず、暗号化されたドメインにおけるクエリを処理している任意の計算ノードにも情報を漏洩する可能性があるということである。実際には、記憶および計算は、クラウドまたはその他のものに基づくことができ、それゆえに、信頼できない当事者によって処理されることがある。例えば、そのようなＤＢにおける選択された平文攻撃（ＣＰＡ）は、データベースにおけるどのエントリが少女に対応し且つ少年に対応するのかを明白に明らかにする。本発明の主題の態様によれば、そのようなプライバシー漏洩を回避するためのシステムおよび／または方法が提案される。より具体的には、上記のような条件付きクエリをセマンティックセキュリティによって処理することができるシステムおよび／または方法が記載される。
【００１６】
本明細書は、プライバシーに敏感なデータに対して解析を実行するためのアーキテクチャを記載する。適切には、アーキテクチャは、ＤＢサーバ、例えば信頼できないＤＢサーバを含む。実際には、ＤＢサーバは、暗号化データを記憶し、ＭｙＳＱＬなどのリレーショナルデータベース管理システムによってバックアップされる。このアーキテクチャはまた、暗号化されたドメインで計算を実行する計算サーバ（例えば、信頼できない計算サーバ）と、ＤＢに問い合わせるウェブサーバまたはウェブサービスとを含む。適切には、計算サーバは、ウェブサーバ／サービスによって提出された全てのクエリについて暗号化結果を返す。実際には、許可されたユーザのみが返された結果を復号することができる。例示的な実施形態において、基礎データのサンプルを発見することなく、集計関数（例えば、総和、線形結合、基本分類器、カウントクエリおよびヒストグラムを含む）が計算される。適切には、本発明の主題の目的（例えば、ＳＱＬクエリのサブセットをサポートする一方で、改善されたプライバシー保証を提供する）は、記載されたシステムおよび／またはアーキテクチャ内で意味的にセキュアな準同型暗号化技術を使用して達成される。
【００１７】
一般に、本明細書において記載されるシステムおよび／またはアーキテクチャは、プライバシー保護データ解析を可能にし、それにより、データセットの所有者またはキュレータは、データセットの暗号化バージョンに対してクエリを実行する能力をユーザ（例えば、アナリストまたはデータサイエンティストなど）を与える。より正確には、開示されたシステムおよび／またはアーキテクチャは、データセットの所有者およびアナリストに以下の機能を適切に提供する：
データセット所有者には、暗号鍵の生成、データセットの前処理および暗号化の能力が提供される；および
アナリストには、暗号化形式でデータセットに対してクエリを実行し、クエリ結果を復号するためにデータ所有者から必要な鍵を取得する能力が提供される。
【００１８】
適切には、上述した機能を提供するために、システムは、例えば、図１に示されるような３層アーキテクチャによって設計される。より具体的には、実際には、システムは、（ｉ）例えばウェブサービスおよび／またはウェブサーバ１０などを介して実装するいわゆる「フロントエンド」、（ｉｉ）計算サーバ（ＣＳ）２０を含むいわゆる「バックエンド」、および（ｉｉｉ）例えば、ＭｙＳＱＬまたは別のリレーショナルもしくは他の適切な種類のＤＢを介して実装されたＤＢサーバを含むＤＢＭＳ３０を含むことができる。
【００１９】
実際には、基本的な実施形態は、以下の要素を含む：（１）複数の暗号化フォーマットのうちの１つ以上でデータにデータを記憶するＤＢサーバ（例えば、ＤＢサーバは、ＭｙＳＱＬ  ＤＢサーバなど）；（２）（例えば、適切なプライバシー保護プロトコルを介して）ＤＢによってサービスされる暗号化データを使用してユーザ／アナリストによって提供されるクエリを実行するＣＳ；および（３）ＤＢに対して行われたクエリをサポートし、作成されたクエリに対応する暗号化結果を受信するウェブサービス／サーバ。
【００２０】
拡張された実施形態において、鍵管理機能を提供する鍵認証局（ＫＡ）４０が含まれる。特に、ＫＡ４０は、ＤＢサーバに記憶された暗号化ＤＢを生成するための公開暗号鍵を提供する。さらに、ＫＡ４０は、プライバシー保護プロトコルを実行するために公開暗号鍵をＣＳ２０に提供する。最後に、ＫＡ４０は、ＣＳ２０から受信したクエリの暗号化結果をユーザが復号するのを可能にするウェブサービス／サーバの許可されたユーザに復号鍵を提供する。
【００２１】
さらに拡張された実施形態において、暗号化ＤＢ（ここではＤｅとして示される）を準備するために、追加の要素および／または要素が提供される。実際には、Ｄｅの準備は、暗号化されていないＤＢ（ここではＤｐとして示される）を入力として開始する。すなわち、Ｄｐにおけるデータ要素は、暗号化されていない形式でまたは平文として最初に記憶および／または保持される。暗号化の前に、Ｄｐのスキーマは、拡張されたスキーマが所望のＳＱＬクエリのサブセットをサポートするように拡張される。拡張されたＤＢ（ここではＤａとして示される）において、データ要素はまた、暗号化されていない形式でまたは平文として記憶／保持される。（結果のデータによる拡張スキーマを有する）Ｄａは、１つ以上の暗号化フォーマットを使用して暗号化されてＤｅを達成する。最後に、Ｄｅは、ＤＢサーバに送信される。
【００２２】
適切には、フロントエンドは、特定のタスクまたは複数のタスクに関する特定のビューおよび／またはユーザインターフェース（ＵＩ）を提供する。実際には、例えば、暗号化データセット３２ｅに対して構造化照会言語（ＳＱＬ）および／またはＳＱＬ様クエリを書き込んで実行するためにアナリストによって使用されるように、アナリストビュー１２および／または適切なＵＩが第１の場合に提供されるのに対して、第２の場合には、平文データセット３２を前処理および暗号化するためにデータ所有者によって使用されるように、抽出、転送および書き込み（ＥＴＬ）ビュー１４および／または適切なＵＩが提供される。実際には、フロントエンドは、ＣＳ２０、アナリストビュー１２、およびＥＴＬビュー１４のＥＴＬサーバ５０と直接対話することができる。適切な実施形態において、ＥＴＬサーバ５０は、データ所有者の制御下で信頼できる「ヘルパー」であってもよい。対照的に、ＣＳ２０は、別個のエンティティとして機能する信頼できないヘルパーであってもよい。適切には、ＣＳ２０は、受信したアナリストのクエリを処理し、ＤＢＭＳ３０と対話する責を負う。データセット３２ｅは、ＤＢＭＳ３０において暗号化されることから、ＣＳ２０は、暗号化データに対するクエリを実行し、フロントエンドを介してアナリストに（暗号化された）結果を返す。例えば鍵認証局（ＫＡ）４０から必要な復号鍵を予め取得したアナリストは、ＣＳ２０からフロントエンドによって受信したデータを復号することによってクエリの結果を復元することができる。
【００２３】
例示的な１つの実施形態において、ＤＢＭＳ３０は、標準的なＭｙＳＱＬ  ＤＢサーバによって実装されると共に、ＣＳ２０およびＥＴＬサーバ５０は、双方とも、（例えば、同じコードベースを使用する）Ｊａｖａ（登録商標）ベースのプログラムによって実装される。適切には、フロントエンドは、Ｊａｖａ（登録商標）ｓｃｒｉｐｔ、ハイパーテキストマークアップ言語（ＨＴＭＬ）およびカスケードスタイルシート（ＣＳＳ）の組み合わせとして実装されてもよい。これは、実際には、本明細書に記載された機能、目的、動作および／または目的を達成するのに適した上述した構成要素のために他の実装が使用されることができると述べた。
【００２４】
本明細書において記載される例示的な実施形態によれば、回避することが求められる１つの脅威は、システムにインポートされたデータセット３２に関する情報を学習するデータ所有者およびアナリスト以外の当事者である。これは、ＣＳ２０およびＤＢＭＳ３０における偶発的および意図的な漏洩の双方を含み、双方とも信頼できない可能性がある。適切には、インポートされたデータセット３２は、ＤＢＭＳ３０およびＣＳ２０のいずれにもアクセスできない鍵のもとで暗号化されることから、そのような漏洩は、設計によって防止される。さらに、コンテキストに応じて、システムのアーキテクチャは、例えば以下のようなさらなる脅威に対する保護を提供することができる。
（１）インポートされたデータセット３２にレコードが含まれている個人に関する機密情報を学習するアナリスト；および／または、
（２）アナリストのクエリに関して学習するＣＳ２０、ＤＢＭＳ３０および／またはデータ所有者。
【００２５】
例えば、上記項目（１）に対するガードは、個人のプライバシーを保持することと称され、差分プライバシーなどの技術を使用して達成されることができ、上記項目（２）に対するガードは、クエリプライバシーを保持することと称され、「現実の」クエリを難読化する「特別な」クエリを使用して達成されることができる。
【００２６】
ここで図２をさらに参照すると、例えばＥＴＬサーバ５０を介して平文ＤＢ  Ｄｐが前処理されて暗号化されるプロセスおよび／または方法１００が示されている。実際には、ＤＢ所有者などは、ＥＴＬサーバ５０にアクセスして平文データセット３２を前処理および暗号化するためにＥＴＬビュー１４または他の適切なＵＩを使用するフロントエンドウェブサービス／サーバ１０を使用することができる。
【００２７】
適切には、プロセスまたは方法１００は、入力された平文ＤＢ  Ｄｐを、暗号化されたドメインにおいて条件付きクエリをサポートする暗号化ＤＢ  Ｄｅに変換する。もちろん、適切な意味的にセキュアな準同型暗号システムを使用してＤｐの個々の各エントリを単に暗号化するだけで単純にＤｅを構築することができるが、上記説明されたように、このアプローチは、所望なように条件付きクエリを効率的にサポートしない。代わりに、本明細書において記載されるように、Ｄａが最初に構築され、これは、Ｄｐの拡張された平文バージョンであり、次いでＤａは暗号化されてＤｅを得る。
【００２８】
示されるように、ステップ１１０において、Ｄｐ（平文データセット３２を含む）が、例えばＥＴＬプロセスを使用してＥＴＬサーバ５０に入力される。Ｄｐのデータ要素は、適切に暗号化されず、および／または平文形式で表される。適切には、Ｄｐとともに、条件付きクエリなどに関連して使用するために利用可能とされる属性を特定する仕様が入力される。例えば、上記シナリオにおいて、性別属性は、２つの異なる値、すなわち男性または女性をとるような指定された条件付き属性であってもよい。条件付き属性は、暗号化されたドメインにおいて計算された条件付きクエリおよび／または同様のものの実行に利用可能とされるＤＢの属性である（例えば、入力Ｄｐとともに指定および／または特定される）。
【００２９】
ステップ１２０において、入力Ｄｐのスキーマは、例えば、ＤＢが暗号化された後に拡張スキーマが所望のクエリのセットをサポートするように、Ｄａを達成するように拡張される。
【００３０】
より具体的には、Ｄａの拡張および／または生成は、以下のように行われることができる。結果の拡張平文ＤＢ  Ｄａは、入力Ｄｐと比較していくつかの追加の列を含む。追加の列の数は
【００３１】
【数１】
2019035948.tif 000003
【００３２】
であり、Ｍ個の指定された条件付き属性があり、それらの属性のそれぞれがｖｍをとる場合、値ｍを可能とする。ここで、ｍ＝１、２、．．．、Ｍである。実際には、いくつかの属性は、特定のＤＢエントリについて１つの値のみをとることができる。例えば、上述した性別属性は、男性または女性の値をとることができる。他の属性は、特定のデータベースエントリについて複数の値をとることができる。例えば、特定の生徒の趣味属性は、読書、サイクリング、ハーブの研究などの複数の値をとることができる。
【００３３】
１つの適切な実施形態において、ＤｐからＤａを構築するために、以下のサブステップがＭ個の条件付き属性のそれぞれに適用される。以下のサブステップにおいて、ｖｍ個の異なる値をとる条件付き属性Ａｍを考える。ここで、ｍ＝１、２、．．．、Ｍである。そして、各属性Ａｍについて以下とする：
１）Ｄａ＝Ｄｐに設定する。
２）Ｄａにおいてｖｍ個の追加の列を作成する。便宜上、ｖｍ個の追加の列が行列Ｓに属している結果、データベースＤａに追加された追加のｖｍ×ｎ個のエントリを考える。この表記法は、ｉ行目且つｊ列目の追加要素をＳ（ｉ、ｊ）と指すのを可能とする。ここで、１≦ｉ≦ｎおよび１≦ｊ≦ｖｍである。
３）全ての行インデックスｉについて、Ｓ（ｉ、ｊ）をＡｍのｊ番目の可能な値のバイナリインジケータ変数に設定する。それゆえに、特定の行ｉ∈｛１，２、．．．、ｎ｝について、属性値がｂ∈｛１，２、．．．、ｖｍ｝である場合、全てのｊ≠ｂについてＳ（ｉ、ｂ）＝１およびＳ（ｉ、ｊ）＝０である。
【００３４】
拡張された平文ＤＢ  Ｄａを適切に取得した後、ステップ１３０において、例えば、ＫＡ４０から取得した公開鍵（ｐｋ）を使用して、Ｄａが暗号化されてＤｅを取得する。実際には、この暗号化は、付加的な秘密の共有と意味的にセキュアな準同型暗号システムとの組み合わせを使用することによって適切に達成される。特定の環境、計算、記憶および／または他の適用可能な考慮事項に応じて、他の変形例も同様に適切であるおよび／または望ましいかもしれないが、以下は、Ｄｅを構築するために使用される準同型暗号システムの種類に応じて使用されることができる２つの適切な実施形態を記載する。
【００３５】
第１の変形例または実施形態において、暗号化手順は、単一の乗算の後に無制限数の加算が続く暗号化されたドメイン計算をサポートする例えばＢＧＮ（Ｂｏｎｅｈ、ＧｏｈおよびＮｉｓｓｉｍ）暗号システムなどの２−ＤＮＦ（論理和標準形）演算をサポートする暗号システムを使用する。ＢＧＮ暗号システムでは、照会された属性毎に単一の暗号化された列を追加して（例えば、上記取得したような）データベースＤａが暗号化される。ＢＧＮ変形例の使用は、特に、暗号化結果を復号するために利用可能な計算能力は比較的高いが、ＤＢサーバにおいて利用可能な記憶能力が比較的低い場合に適用可能である。
【００３６】
第２の変形例または実施形態において、暗号化手順は、暗号化されたドメインの加算のみをサポートする例えばＰａｉｌｌｉｅｒ暗号システムなどの相加的準同型暗号システムを使用する。２つの変形例は、暗号システムの能力とＤｅの記憶オーバーヘッドとのトレードオフに対処する。Ｐａｉｌｌｉｅｒ暗号システムでは、（照会された属性、条件付き属性）のペア毎に単一の暗号化された列を追加して（例えば、上記取得したような）データベースＤａが暗号化される。Ｐａｉｌｌｉｅｒバリアントの使用は、特に、暗号化結果を復号するために利用可能な計算能力は比較的低いが、ＤＢサーバにおいて利用可能な記憶能力は比較的高くすることができる場合に適用可能である。
【００３７】
ここで、上述した第１の変形例を参照すると、暗号化プロセスまたはステップ１３０への入力は、（１）
【００３８】
【数２】
2019035948.tif 000004
【００３９】
の追加の列を含む拡張平文データベースＤａ、および（２）２−ＤＮＦ準同型暗号システムの公開鍵ｐｋを含む。結果の出力は、暗号化データベースＤｅであり、
【００４０】
【数３】
2019035948.tif 000005
【００４１】
の追加の列のエントリは、２−ＤＮＦ準同型暗号システムを使用して暗号化され、照会されるべき属性は、追加的にブラインドされる。
【００４２】
（以下のサブステップの適用を含む）暗号化プロトコルを説明するために、ここでは、条件付き属性、すなわちＷＨＥＲＥ句に続く属性と、クエリ属性、すなわちＳＥＬＥＣＴ文に続く属性とに別個に焦点をあてる。
１）上記のように、条件付き属性をＡｍとする。ここで、ｖｍ個の異なる値をとるｍ＝１，２、．．．、Ｍである。変数ｊ＝１，２、．．．、ｖｍを使用してこれらの値をインデキシングする。そして、各属性Ａｍについて、ｉ行目におけるＡｍのｊ番目の可能な値についてのバイナリインジケータ変数Ｓ（ｉ、ｊ）が構成される。ここで、ｉ∈｛１，２、．．．、ｎ｝である。Ｓ（ｉ、ｊ）は、意味的にセキュアな２−ＤＮＦ準同型暗号システムを使用して暗号化され、Ｅ（ｐｋ、Ｓ（ｉ、ｊ））を取得する。
２）照会された属性をＱｋ、ｋ＝１，２、．．．、Ｌとする。そして、行ｉ∈｛１，２、．．．、ｎ｝における属性Ｑｋの各平文値Ｑｋ（ｉ）の代わりに、データ所有者の公開鍵ｐｋの下でのクエリ属性値の２−ＤＮＦ準同型暗号化であるＥ（ｐｋ、Ｑｋ（ｉ））を記憶する。
【００４３】
ＤａにおけるＭ個の条件付き属性および照会済み属性のそれぞれの値に上記ステップを適用した結果、暗号化データベースＤｅが得られる。
【００４４】
ここで、上述した第２の変形例を参照すると、暗号化プロセスまたはステップ１３０への入力は、（１）
【００４５】
【数４】
2019035948.tif 000006
【００４６】
の追加の列を含む拡張平文データベースＤａ、および（２）相加的準同型暗号システムの公開鍵ｐｋを含む。結果の出力は、暗号化データベースＤｅであり、
【００４７】
【数５】
2019035948.tif 000007
【００４８】
の追加の列のエントリは、相加的準同型暗号システムを使用して暗号化され、照会されるべき属性は、追加的にブラインドされる。
【００４９】
（以下のサブステップの適用を含む）暗号化プロトコルを説明するために、ここでは再度、条件付き属性、すなわちＷＨＥＲＥ句に続く属性と、クエリ属性、すなわちＳＥＬＥＣＴ文に続く属性とに別個に焦点をあてる。
１）上記のように、条件付き属性をＡｍとする。ここで、ｖｍ個の異なる値をとるｍ＝１，２、．．．、Ｍである。上記のように、変数ｊ＝１，２、．．．、ｖｍを使用してこれらの値をインデキシングする。そして、各属性Ａｍについて、ｉ行目におけるＡｍのｊ番目の可能な値についてのバイナリインジケータ変数Ｓ（ｉ、ｊ）が構成される。ここで、ｉ∈｛１，２、．．．、ｎ｝である。Ｓ（ｉ、ｊ）は、意味的にセキュアな相加的準同型暗号システムを使用して暗号化され、Ｅ（ｐｋ、Ｓ（ｉ、ｊ））を取得する。
２）照会された属性をＱｋ、ｋ＝１，２、．．．、Ｌとする。そして、行ｉ∈｛１，２、．．．、ｎ｝における属性Ｑｋの値Ｑｋ（ｉ）について、間隔∈［−Ｒｋ、Ｒｋ］から無作為に均一に整数ｒｋ（ｉ）を選択する。Ｒｋは正の整数であり、λ（Ｒｋ）によって示されるＲｋにおけるビット数はセキュリティパラメータである。平文属性値Ｑｋ（ｉ）の代わりに、加法的にブラインドされた値
【００５０】
【数６】
2019035948.tif 000008
【００５１】
を記憶する。これらのブラインドされた値を含む列を新たな属性
【００５２】
【数７】
2019035948.tif 000009
【００５３】
とみなす。
３）照会された各属性Ｑｋ、および条件付き属性Ａｍのｖｍ個の可能な値のそれぞれについて、Ｒｋ，ｍによって示される追加の列が導入される。この新たな列のｉ行目のエントリは、ｊ＝１，２、．．．、ｖｍについて、Ｒｋ，ｊ（ｉ）＝Ｅ（ｐｋ，ｒｋ（ｉ）．．．Ｓ（ｉ、ｊ））によって与えられる。
【００５４】
ＤａにおけるＭ個の条件付き属性およびＬ個の照会された属性のそれぞれの値に上記ステップを適用した結果、暗号化データベースＤｅを得る。上記検討した２−ＤＮＦ準同型の場合とは異なり、上記サブステップ３の結果として追加された列の総数は、
【００５５】
【数８】
2019035948.tif 000010
【００５６】
であり、このアプローチでは記憶効率が低下させる。
【００５７】
いずれの場合にも、このようにして暗号化ＤＢ  Ｄｅを取得した後、ステップ１４０において、暗号化ＤＢ  Ｄｅは、送信され、ロードされ、および／またはＤＢＭＳ３０に送られる。実際には、ＤＢＭＳ３０において、全てのテーブル名は平文で利用可能であり、全ての列属性名は平文で利用可能であるが、テーブルにおけるエントリは、上記説明されたように暗号化される。すなわち、ＤＢサーバにおいて平文で利用可能な項目は、属性名のみである。例えば、リレーショナルＤＢにおいて、テーブルおよび列の名称は既知であるが、それらの列におけるデータエントリは暗号化される。
【００５８】
このようにして暗号化ＤＢ  ＤｅをＤＢＭＳ３０にロードすると、それは、例えばアナリストビュー１２を使用してフロントエンドウェブサービス／サーバ１０を介してユーザ／アナリストによって提出されたクエリに応答してＣＳ２０によってアクセスされることができる。適切には、クエリは、平文形式で提出されることができる。ＤＢＭＳ３０のＤＢサーバは、順次、ＣＳ２０にデータを提供し、ＣＳ２０によって実行される計算は、暗号化されたドメインにおいて適切に実行される。提出されたクエリに応答して、ＣＳ２０によって実行された計算の結果は、暗号化された形式で返される。例えば、ＫＡ４０から利用可能にされたまたは取得された対応する復号鍵または秘密鍵（暗号化を実行するために使用される公開鍵に対応する）を使用して、アナリストは、受信した暗号化結果を復号し、それらを平文でみることができる。実際には、そのような復号／秘密鍵は、情報またはデータ漏洩の脅威の可能性を制限するように、ＣＳ２０またはＤＢＭＳ３０から利用可能とされずおよび／または保持されない。
【００５９】
上記方法、システム、プラットフォーム、モジュール、プロセス、アルゴリズムおよび／または装置は、特定の実施形態に関して記載された。しかしながら、特定の修正および／または変更もまた想定されることを理解されたい。
【００６０】
本明細書に提示される特定の例示的な実施形態に関連して、特定の構造的および／または機能的特徴は、定義された要素および／または構成要素に組み込まれるものとして記載されることが理解されたい。しかしながら、これらの特徴はまた、同一または同様の利益のために、必要に応じて同様に他の要素および／または構成要素に組み込まれてもよいことが想定される。例示的な実施形態の異なる態様は、所望の用途に適した他の代替実施形態を達成するために必要に応じて選択的に使用されてもよく、それにより、他の代替実施形態は、それに組み込まれる態様の各利点を実現することも理解されたい。
【００６１】
本明細書において記載された特定のタスク、ステップ、プロセス、方法、機能、要素および／または構成要素のうちの任意の１つ以上は、ハードウェア、ソフトウェア、ファームウェアまたはそれらの組み合わせによって適切に実装されることができることも理解されたい。特に、様々なモジュール、構成要素および／または要素は、本明細書に記載されたタスク、ステップ、プロセス、方法および／または機能のうちの１つ以上を実行するように構成および／またはセットアップされたプロセッサ、電気回路、コンピュータおよび／または他の電子データ処理装置によって具現化されることができる。例えば、特定の要素を具現化するプロセッサ、コンピュータまたは他の電子データ処理装置は、コンピュータまたは他の電子データ処理装置によって実施および／または実行されたときに、本明細書に記載されたタスク、ステップ、プロセス、方法および／または機能のうちの１つ以上が完了または実行されるように、（例えば、ソースコード、解釈コード、オブジェクトコード、直接実行可能コードなどの）コードの適切なリストもしくは他の同様の命令またはソフトウェアもしくはファームウェアによって提供され、供給されおよび／またはプログラミングされることができる。適切には、コードもしくは他の同様の命令またはソフトウェアもしくはファームウェアのリストは、コンピュータまたは他の電子データ処理装置によって提供可能および／または実行可能であるように、持続性コンピュータおよび／または機械可読記憶媒体または媒体として実装され、および／またはその内部におよび／またはその上に記録、記憶、包含、または含有される。例えば、適切な記憶媒体および／または媒体は、限定されるものではないが、フロッピーディスク、フレキシブルディスク、ハードディスク、磁気テープ、もしくは任意の他の磁気記憶媒体または媒体、ＣＤ−ＲＯＭ、ＤＶＤ、光ディスク、もしくは任意の他の光媒体または媒体、ＲＡＭ、ＲＯＭ、ＰＲＯＭ、ＥＰＲＯＭ、フラッシュＥＰＲＯＭ、もしくは他のメモリもしくはチップもしくはカートリッジ、またはコンピュータもしくは機械もしくは電子データ処理装置が読み出して使用することができる任意の他の有形媒体または媒体を含むことができる。本質的に、本明細書において使用される場合、持続性コンピュータ可読媒体および／または機械可読媒体および／または媒体は、一時的な伝搬信号を除き、全てのコンピュータ可読媒体および／または機械可読媒体および／または媒体を含む。
【００６２】
必要に応じて、本明細書において記載された特定のタスク、ステップ、プロセス、方法、機能、要素および／または構成要素のうちの任意の１つ以上は、１つ以上の汎用コンピュータ、専用コンピュータ、プログラミングされたマイクロプロセッサもしくはマイクロコントローラおよび周辺集積回路要素、ＡＳＩＣもしくは他の集積回路、デジタル信号プロセッサ、ディスクリート素子回路などのハードワイヤード電子回路もしくは論理回路、ＰＬＤ、ＰＬＡ、ＦＰＧＡ、グラフィックカードＣＰＵ（ＧＰＵ）、もしくはＰＡＬなどのプログラマブル論理素子に実装および／または具現化されることができる。一般に、本明細書に記載された各タスク、ステップ、プロセス、方法および／または機能を順次実装することができる有限状態機械を実装することができる任意の装置が使用可能である。
【００６３】
さらに、本明細書に記載されている特定の要素は、適切な状況下で、独立した要素であってもよくまたは別の方法で分割されてもよいことを理解されたい。同様に、１つの特定の要素によって実行されるように記載された複数の特定の機能は、個々の機能を実行するために独立して動作する複数の別個の要素によって実行されてもよく、または、特定の個々の機能は、協調して動作する複数の別個の要素によって実行されてもよい。あるいは、互いに区別されて本明細書に記載および／または示されたいくつかの要素または構成要素は、必要に応じて物理的にまたは機能的に組み合わされてもよい。
【００６４】
要するに、本明細書は、好ましい実施形態を参照して記載されている。明らかに、本明細書を読んで理解すると、修正および変更が他人に生じるであろう。本発明の主題は、添付の特許請求の範囲またはその均等物の範囲内に含まれる限りにおいて、そのような全ての修正および変更を含むと解釈されることが意図される。
【図１】
2019035948.tif 000011
【図２】
2019035948.tif 000012