説明

暗号化データ・セット保存および論理演算実行システム、暗号化データ保存および論理演算実行方法、暗号化データ保存および演算実行システム、暗号化データ・セット保存および論理演算実行プログラム

【課題】準同型暗号化による暗号化データを管理する。
【解決手段】本発明の暗号化データ・セットを保存し、該暗号化データ・セットに論理演算を実行するシステムは、暗号化データを保存する記憶手段と、プロセッサを有する計算処理手段と、を備える。前記暗号化データは対称準同型暗号化によって暗号化されている。前記計算処理手段は、暗号化結果を生成するために前記記憶手段に保存されている前記暗号化データに少なくとも一つの論理演算を実行するために前記プロセッサを使用し、前記暗号化結果は暗号化データに対応した単一のキーもしくはキー・セットのいずれかによって復号化される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号化データへ演算を行う方法およびシステムに関し、より詳細には、暗号化データへの演算の通信、記憶、検索、計算に関する。
【背景技術】
【0002】
クラウド・コンピューティングを含む処理演算およびデータ・ストレージの様々なトレンドによって、多くの企業がサード・パーティのデータおよびコンピューティング・プロバイダに処理演算ニーズの多くをアウトソースすることを選択するようになってきている。しかしながら、アウトソースされているデータのセキュリティと該データを扱う際の処理演算およびフレキシビリティとの間にはトレードオフがある。したがって、データをまず復号化する必要なく、暗号化されたデータに処理演算を実行することができるように、データを暗号化することが強く所望されている。長年、研究者らはこのような所望を満たす手段を探してきたが、雑多な問題を解決することは困難であった。最近のブレークスルーはこの領域を進展させているが、比較的単純なケースについてさえ、実用的なソリューションを提供するためにはまだ多くの作業がなされなければならない。
【0003】
準同型(Homomorphic)暗号化はこの問題に対抗するために使用されている技術の一つである。ほとんどすべての準同型暗号化技術はそれらのベースとして非対称(すなわち、パブリック・キー)暗号化を使用する。非対称暗号化は、対称暗号化と比較して、暗号化および復号化にかなり時間を必要とし、セキュリティを実現するために暗号化する間にデータを展開する必要がある。非特許文献1は、ワイヤレス・センサ・ネットワークにおけるデータ集合という事例で、対称暗号化にもとづく準同型暗号化について記載している。非特許文献1に記載されているスキームは、パブリック・キー・ベース・スキームを使用する場合と比較して、短い時間でコンパクトな準同型暗号化を提供する。さらに、非特許文献1のスキームは比較的シンプルなので、強い裏付けをセキュリティに提供することができる。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】キャステルシアら(Castelluccia et al.)、「ワイヤレス・センサ・ネットワークにおける暗号化データの効率的かつ実証可能で安全な集合(Efficient and Provably Secure Aggregation of Encrypted Data in Wireless Sensor Networks)」、センサ・ネットワークに関するACM議事録(ACM Transactions on Sensor Networks)、2009年、第5巻、第3号、頁20:1〜20:36
【発明の概要】
【発明が解決しようとする課題】
【0005】
信頼はできるが、好奇心が強いサード・パーティ、例えば、データの収集者、もしくは、サード・パーティ・サービス・プロバイダは、暗号化データを扱うプログラムを実行することについては信頼できるかもしれないが、データ解析について好奇心が強すぎる場合に、当事者が秘密にしておきたいデータから、何かの情報を取得しようとしてしまうかもしれない。
そこで、本発明は、このような場合であっても、より安全性が高い暗号化データを管理する準同型暗号化のためのシステム、方法およびコンピュータプログラムを提供する。
【課題を解決するための手段】
【0006】
実施形態の一つにおいて、本発明の例示的な実施形態のシステムは、サード・パーティが運営するクラウド・サービス・ネットワーク、もしくは、暗号化データを復号化する能力を有さないプライベート・ネットワークのサード・パーティなどが運営するパブリック・ネットワークに暗号化データを送信する。サード・パーティの運営するネットワーク中のサーバーに暗号化されたデータが保存され、および/または、暗号化されたデータに対して計算処理を実行し、次に、暗号化されたデータおよび実行された計算の結果を、ユーザがデータを復号化し、見ることができるパブリック・ネットワークもしくはプライベート・ネットワークに送信することができる。
【0007】
本発明の第1の態様は、暗号化データ・セットを保存し、該暗号化データ・セットに論理演算を実行するシステムであって、暗号化データを保存する記憶手段と、プロセッサを有する計算処理手段と、を備え、前記暗号化データは対称準同型暗号化によって暗号化されており、前記計算処理手段は、暗号化結果を生成するために前記記憶手段に保存されている前記暗号化データに少なくとも一つの論理演算を実行するために前記プロセッサを使用し、前記暗号化結果は前記暗号化データに対応する単一のキーもしくはキー・セットのいずれかによって復号化される。
【0008】
本発明の第2の態様は、第1の態様の暗号化データ・セット保存および論理演算実行システムであって、複数の集合手段をさらに備え、前記複数の集合手段の各々は少なくとも一つのソースから受信したデータ・セットを受信して暗号化し、前記複数の集合手段の各々は、前記記憶手段に暗号化された前記データ・セットを送信する。
【0009】
本発明の第3の態様は、第1の態様の暗号化データ・セット保存および論理演算実行システムであって、前記対称準同型暗号化はワン・タイム・パッド・ベース準同型暗号化を含む。
【0010】
本発明の第4の態様は、第1の態様の暗号化データ・セット保存および論理演算実行システムであって、アーカイブ暗号化手段をさらに備え、前記アーカイブ暗号化エンジンは暗号化を実行し、前記記憶手段に暗号化された前記データ・セットを送信する。
【0011】
本発明の第5の態様は、第2の態様の暗号化データ・セット保存および論理演算実行システムであって、前記複数の集合手段は前記データ・セットを暗号化するためにキーを使用する。
【0012】
本発明の第6の態様は、第5の態様の暗号化データ・セット保存および論理演算実行システムであって、少なくとも2つの異なるキーが前記データ・セットを暗号化するために前記複数の集合手段によって使用される。
【0013】
本発明の第7の態様は、第1の態様の暗号化データ・セット保存および論理演算実行システムであって、暗号化された前記データ・セットは少なくとも2つの異なるキーで暗号化されており、前記少なくとも1つの論理演算が実行された場合、単一のキーによって復号化可能な前記暗号化結果を生成するために、少なくとも1つのパッドを取り消す。
【0014】
本発明の第8の態様は、第1の態様の暗号化データ・セット保存および論理演算実行システムであって、前記暗号化結果は、単一のキーによって復号化可能であり、前記論理演算で使用される前記暗号化データは前記単一のキーによって復号化可能ではない。
【0015】
本発明の第9の態様は、第6の態様の暗号化データ・セット保存および論理演算実行システムであって、前記少なくとも1つの論理演算は、少なくとも2つの暗号化されたデータ・セットの和を求めることを含む。
【0016】
本発明の第10の態様は、第1の態様の暗号化データ・セット保存および論理演算実行システムであって、前記システムはクラウド・サービス・プロバイダである。
【0017】
本発明の第11の態様は、サード・パーティ・システムにおいて暗号化データを保存し、該暗号化データに論理演算を実行する方法であって、暗号化データを受信し、前記暗号化データを前記サード・パーティ・システムの記憶手段に保存し、前記サード・パーティ・システムの計算処理手段のプロセッサを使用して、暗号化結果を生成するために少なくとも1つの論理演算を実行し、前記暗号化データは対称準同型暗号化を使用して暗号化され、前記暗号化結果は前記暗号化に対応する単一のキーもしくはキー・セットのいずれかによって復号化される。
【0018】
本発明の第12の態様は、第11の態様の暗号化データ保存および論理演算実行方法であって、暗号化はアーカイブ暗号化手段によって実行される。
【0019】
本発明の第13の態様は、第11の態様の暗号化データ保存および論理演算実行方法であって、集合手段にデータを集合して暗号化し、前記サード・パーティ・システムに暗号化データを送信する、ことをさらに含む。
【0020】
本発明の第14の態様は、第11の態様の暗号化データ保存および論理演算実行方法であって、前記対称準同型暗号化はワン・タイム・パッド・ベース準同型暗号化を含む。
【0021】
本発明の第15の態様は、第11の態様の暗号化データ保存および論理演算実行方法であって、前記暗号化結果は単一のキーによって復号化可能であり、前記論理演算で使用される暗号化データは前記単一のキーによって復号化可能ではない。
【0022】
本発明の第16の態様は、第11の態様の暗号化データ保存および論理演算実行方法であって、前記暗号化データは複数の暗号化されたデータ・セットを含み、前記暗号化されたデータ・セットの各々はキーによって暗号化され、少なくとも1つの論理演算は、単一のキーによって復号化可能な前記暗号化結果を生成するためにデータ・セットの各々を暗号化する際に使用される少なくとも1つのパッドを取り消す。
【0023】
本発明の第17の態様は、暗号化データを保存し、該暗号化データに演算を実行するシステムであって、データ記憶手段と、計算処理エンジンと、を備え、前記データ記憶手段は準同型暗号化によって暗号化された複数のデータ・セットを受信し、前記計算処理エンジンは受信した指示にもとづいて処理を実行し、前記処理はプロセッサによって実行され、前記処理は、少なくとも2つの暗号化データ・セットを選択し、暗号化結果を生成するために受信した前記指示にもとづいて選択された前記暗号化データ・セットに論理演算を実行し、前記暗号化結果は前記暗号化データに対応する単一のキーもしくはキー・セットのいずれかによって復号化される。
【0024】
本発明の第18の態様は、第17の態様の暗号化データ保存および演算実行システムであって、前記暗号化結果は単一のキーによって復号可能であり、前記論理演算で使用される暗号化データは前記単一のキーによって復号化可能ではない。
【0025】
本発明の第19の態様は、第17の態様の暗号化データ保存および演算実行システムであって、暗号化データ・セットの各々はキーによって暗号化され、前記少なくとも1つの論理演算は、単一のキーによって復号化可能である前記暗号化結果を生成するために、少なくとも1つのワン・パッドを取り消す。
【0026】
本発明の第20の態様は、第17の態様の暗号化データ保存および演算実行システムであって、前記システムはクラウド・サービス・プロバイダである。
【0027】
本発明の第21の態様は、暗号化データ・セットを記憶手段に保存し、暗号化結果を生成するために前記記憶手段に保存されている前記暗号化データに少なくとも一つの論理演算を実行する、ことをコンピュータに実行させるためのプログラムであって、前記暗号化データは対称準同型暗号化によって暗号化されており、前記暗号化結果は前記暗号化データに対応する単一のキーもしくはキー・セットのいずれかによって復号化されることができる。
【0028】
本発明に関連する他の態様の一部が以下において記載され、他の態様の別の一部は以下の記述から明らかであるか、もしくは、本発明の実施によって習得される。本発明の態様は、複数の構成要素および様々な構成要素の組み合わせ、および、以下の詳細な記述において示される特定の態様によっても実現することができる。
【0029】
以上および以下の記載は単なる例示であり、本発明および本発明の適用を制限することを意図していない。
【発明の効果】
【0030】
本発明は、本発明を使用しない場合よりも、データの機密性を高めることができる。
【図面の簡単な説明】
【0031】
【図1】本発明の例示的実施形態の一つによる暗号化データを管理するためのシステム・アーキテクチャのブロック図である。
【図2】本発明の例示的実施形態の一つによるデータ・ソース・ネットワークのブロック図である。
【図3】本発明の例示的実施形態の一つによるクラウド・サービスのブロック図である。
【図4】本発明の例示的実施形態の一つによるクライアント・ネットワークのブロック図である。
【図5】本発明の例示的実施形態の一つによる暗号化データを管理するためのシステム・アーキテクチャである。
【図6】本発明の例示的実施形態の一つによる、クラウド・サービスで暗号化データを保存し、該クラウド・サービスで暗号化データに演算を実行する方法を示すフロー・チャートである。
【図7】本発明のシステムを実装することが可能なコンピュータ・システムのブロック図を例示する。
【発明を実施するための形態】
【0032】
以下の詳細な説明において、図面を参照する。図面は例示のためのものであり、限定を意図していない。特定の実施形態および実装は本発明の原理を説明するためのものである。これらの実装は、当業者が本発明を実施することができる程度に十分に記載されており、他の実装も可能である。また、本発明の範囲および思想から逸脱することなく、構造の変更および/または様々な構成要素の置き替えも可能である。それゆえ、以下の詳細な説明は、限定的な意味で解釈されるべきではない。さらに、上記されたように、本発明の様々な実施形態は、汎用目的コンピュータで稼働するソフトウェアの形態で実装されてもよいし、専用ハードウェアの形態で実装されてもよいし、ソフトウェアおよびハードウェアの組み合わせの形態で実装されてもよい。
【0033】
本発明の実施形態の一つのシステムは、本システムとは別の場所に暗号化されたデータを保存し、別の場所に蓄積されている暗号化されたデータを検索し、別の場所に蓄積されている暗号化されたデータに対して計算処理することを支援するために、非特許文献1に記載されている対称準同型暗号化プロトコルを使用する。すなわち、本発明のこの実施形態のシステムは、蓄積されている暗号化されたデータの任意のサブセットに対する処理拡張するものである。従来の技術は、安全に通信を行う方法の改良であり、狭い帯域制限下にある固定されたデータの集合の処理に限定されていた。具体的には、過去の技術では、データの保存場所については示していない。
【0034】
実施形態の一つでは、本システムは、「高信頼であるが、好奇心が強い」サード・パーティ、すなわち、暗号化データを扱うプログラムを実行させるには信頼できるが、暗号化データからなにかを取得しようとする程度に十分好奇心が強いかもしれないサービス・プロバイダ、による情報アクセスや収集を防ぐことができる。なお、サード・パーティは、暗号化されたデータの主たる利用者であるプライマリ・パーティの少なくとも一つと同じ組織に属する別のグループであってもよいし、サービス・プロバイダなどの外部のエンティティであってもよい。本発明の実施形態の目標の一つは、様々な統計的論理的クエリに対する回答の処理をサードパーティ(サービス・プロバイダ)に支援させながら、データについての何らかの情報を、好奇心が強いサードパーティ(サービス・プロバイダ)に取得させないことである。
【0035】
「擬似ランダム関数」(Pseudo random functions)
擬似ランダム関数ファミリは、セキュリティ・パラメータλによって添字付けされる関数Fλ={f}の集合である。関数fはλビットからλビットへの関数f:{0,1}λ→{0,1}λである。擬似ランダム関数(PRF)の暗号化グレードは、関数の多くの値を多角的に見ることは任意のさらなる値を予測するためには些細な支援としかならない、という特性を有する。実証可能でかつ安全なPRFが存在するが、それらは実用的にはあまりにも処理速度が遅くなる。代わりに、本発明の実施形態は、HMAC(Hash-based Message Authentication Code)などの鍵付きハッシュ関数を使用する。ランダム性およびセキュリティを改善するために、鍵付きハッシュ関数を、たとえば、fのλビット出力を長さμのサブストリングに分割し、合計する、非暗号グレード・ハッシュ関数と組み合わせることができる(h:{0,1}λ→{0,1}μ)。一般に、ハッシュ関数hは一様な出力分布を有するが、衝突耐性(同じハッシュ値を有する異なる2メッセージの生成が十分に困難であること)を有する必要はない。
【0036】
「ワン・タイム・パッド・ベース対称準同型暗号化スキーム」
このセクションは非特許文献1のワン・タイム・パッド(乱数鍵を1回だけ使用する暗号の運用方法)・ベース・スキームについて説明する。このスキームはシンク(受信データ蓄積装置)を有するセンサ・ネットワークのためのものである。
【0037】
「セットアップ」:
M>N*Tを選択する。Nはセンサの数であり、Tは考えられるセンサ値の数である。説明を簡単にするために、すべてのセンサの考えられるセンサ値の数が同一であると仮定する。一様でない場合のスキームへの適応は容易である。メッセージはmビット・ストリングとして符号化される。n=log(N)についてm=log(M)=n+tであり、t=log(T)である。擬似ランダム関数ファミリFλ={f:{0,1}λ→{0,1}λ}が設定され、λ値が所望されるセキュリティ・プリファレンスに応じて選択される。実施形態の一つにおいて、値をλ=80とすることは高いセキュリティを取得するために一般的な選択である。ハッシュ関数h::{0,1}λ→:{0,1}も設定される必要がある。このハッシュ関数は暗号的に安全な関数である必要はない。すなわち、衝突耐性を有する必要はないが、一様な入力に対して一様な出力を有することだけは必要とする。最後に、ノンス・スキームは、ノンス(Number used once一回だけ用いられる番号)が秘密もしくはランダムである必要はないが、循環すべきではない、ことを承認すべきである。ノンスを設定するための一般的な方法はタイム・スタンプとして設定することである。
【0038】
「鍵生成」:
ランダムλビット・ストリングKをシンクのためのキーとして選択することができる。各々のセンサ・ノードi(所望のセンシングを行うための処理装置のうちノードiにあたる装置)はシンクから暗号化キーek=f(i)を受信する。
【0039】
「暗号化」:
メッセージmはc=m+h(feki(r)) mod Mとしてノードiによって暗号化される。h(feki(r))は、パッド(保存されたデータ)として参照される。ノードID iを含むヘッダーが送信され、次に暗号文cが送信される。
【0040】
「集合」:
ノードは、mod Mを求め、加算することにより、暗号文セットを集合化して、集合暗号文cを得る。
【0041】
「復号化」:
1以上の暗号文の集合の復号は3つのステップで行うことができる。ヘッダーから、集合に寄与するノードIDを決定する。これらのすべてのIDのパッドが、h、擬似ランダム関数、ノンスを用いて計算処理される:h(feki(r)) mod M。パッドのすべてを加算し、集合暗号文cから減算すると、対応する平文メッセージmの合計mとなる。
【0042】
このスキームのセキュリティは、擬似ランダム関数ファミリFλのセキュリティに依存する。同様のアプローチを、倍数型準同型スキームを生じるために使用することができる。残念ながら、2つのスキームは同様の暗号化を行わないので、完全な準同型スキームを生じるために該2つのスキームをまとめることはできない。
【0043】
「例示的なシステム・アーキテクチャ」
本発明の実施形態の一つの高レベル・システム・アーキテクチャについて説明する。この実施形態において、システムのある部分はプライベート・ネットワーク上にあり、ある部分はパブリック・インターネット上にあり、ある部分はクラウド・サービスなどのサード・パーティの運営するシステム上にある。
【0044】
図1は、本発明の実施形態の一つによって、暗号化データを保存し、検索し、計算処理するための手段を提供する準同型暗号化システムの基本的なアーキテクチャを例示する。データ・ソース・ネットワーク100のデータ・ソースは、クラウド・サービス101に暗号化されたデータを送信する。クラウド・サービス101は暗号化されたデータを保存し、クライアント102からの要求にもとづいて暗号化されたデータに論理演算を行うことができる。クライアント102およびデータ・ソースの双方に暗号化キーを送出するために、キー・サーバ103を使用してもよい。
【0045】
図2は本発明の実施形態によるデータ・ソース・ネットワークを例示する。データ・ソース・ネットワーク100はパブリックであってもよいし、プライベートであってもよい。未処理データ・ソース200は考えられるメタ・データ(ソースID、タイムスタンプなど)とともに未処理データを集合手段201に送信する。データ・ソース・ネットワーク100における通信は何らかの方法により安全である。たとえば、データ・ソース・ネットワーク100は安全なプライベート・ネットワークの一部であってもよいし、データを搬送するチャネルが物理的に安全であってもよいし(たとえば、物理的に安全な領域内の短距離ワイヤレス信号など)、通信が暗号化されていてもよい。データ・ソース・ネットワーク100における通信チャネルを安全にするいくつかの方法があるが、重要なことは、通信がこのポイントで安全であるか否かだけであり、安全にするための方法ではない。
【0046】
実施形態の一つにおいて、集合手段201は未処理データを受信し、保存を必要とするものだけを送信するように、該未処理データを処理する。たとえば、センサからのビデオ・フィードを処理する集合手段は、未処理ビデオ・ストリームではなく、観察されたふるまい/イベントの記述だけを送信してもよい。集合手段201によるこの処理は、センサの未処理データが意図しない目的のために使用されないようにすることにも有効である。集合手段201がセンサ情報を処理すると、準同型暗号化スキームを用いて処理されたデータを暗号化し、以下で説明するように、クラウド・サービスなどのサード・パーティのシステムに対してヘッダーとともに送信する。
【0047】
図2に示されるように、キー・サーバ103は、データを暗号化および復号化するために使用されるマスター・キーを生成する。実施形態の一つにおいて、キー・サーバ103は暗号化キーekを集合手段201の各々に配布する。さらに、キー・サーバ103は、プライベート・ネットワークの複数の計算処理エンジン400(計算処理手段)にマスター・キーもしくは暗号化キー・セットを配布してもよい(図4)。マスター・キーもしくは暗号化キー・セットから、プライベート・ネットワークの計算処理エンジンは復号化パッドを求めることができる。キー・サーバ103は、さらに、プライベート・ネットワークの外部の任意のクライアントの計算処理手段にマスター・キーもしくは暗号化キー・セットのいずれかを配布する。代替的に、データのすべてを暗号化するアーカイブ暗号化エンジン(アーカイブ暗号化手段)を使用するなどの集中化された手法で、暗号化がなされてもよい。暗号化エンジンは異なるデータに異なるキーを使用してもよい。
【0048】
図3は、本発明の実施形態によるクラウド・サービス101およびクラウド・サービス101に含まれるコンポーネントを例示する。フィード・サーバ300は、データ・ソース・ネットワーク100の集合手段から提供される暗号化データおよびクライアント102からのクエリなどのデータ・フィードを受信する。フィード・サーバ300は、暗号化データ記憶手段301などのデータ・ストレージ・ユニットに集合手段から提供される暗号化データを送信する。フィード・サーバ300はクライアント102から計算処理エンジン302へクエリを送信してもよい。
【0049】
暗号化データ記憶手段301は、暗号化データと該暗号化データのメタデータを保存する。計算処理エンジンによって実行された計算処理の結果を、暗号化データ記憶手段301に保存してもよい。クラウドの計算処理エンジン302は暗号化データへの処理を実行し、クライアント102に送信されるべき結果をフィード・サーバ300に戻す。計算処理エンジン302は、クエリに応答するために実行される必要がある処理のどの部分を暗号データに行うことができるのか、どの部分をクライアントによる復号化の後に実行する必要があるか、を決定してもよい。クラウド・サービスはキー・サーバ103からキーを受信せず、したがって、暗号化データを復号化することができないので、この決定は必須である。代替的に、この決定はクライアントによって行われてもよい。計算処理エンジン302は、暗号化データへ行われた処理の結果を保存するキャッシング・ストラテジー(caching strategy)を実行することに関与してもよい。
【0050】
図4は本発明の実施形態のクライアント・ネットワーク102を例示する。クライアント・ネットワーク102はパブリックであってもよいし、プライベートであってもよい。クライアント・ネットワーク102がプライベートならば、プライベート・ネットワーク・レベル計算処理エンジン400はクラウド・サービスの計算処理エンジン302から提供される暗号化された処理結果を受信してもよい。該処理結果は、フィード・サーバ300を介してプライベート・クライアント・ネットワーク102へ渡される。プライベート・ネットワーク・レベル計算処理エンジン400は処理結果を暗号化し、実施形態の一つにおいては、該処理結果に他の計算処理を実行してもよい。処理結果は、次に、少なくとも一のユーザに提示するために、クライアント・インタフェース401に渡される。実施形態の一つにおいて、複数のプライベート・ネットワークがあるならば、複数の計算処理エンジンがあってよい。クライアント・インタフェース401は、クラウド・サービス101もしくはクライアント・ネットワーク102へ、データに関連するクエリをユーザに入力させることができる。クライアント・インタフェース401は、さらに、少なくとも一のユーザにクライアント計算処理手段402から受信した情報を提示する。実施形態の一つにおいて、クライアント計算処理手段402が備えられていてもよい。クライアント計算処理手段402はクエリのソースとして動作してもよいし、クラウド・サービスの計算処理エンジン302が当該決定をしていない場合、クエリに回答するために必要とされる計算処理のどの部分が暗号化データに実行されることができるか、を判断してもよい。
【0051】
他の実施形態においては、システム・アーキテクチャはよりシンプルであってよく、複数のコンポーネントが一つのネットワークもしくは一つのエレメントの中にあってもよい。たとえば、同一のネットワークの内部であるだけでなく、同一のネットワーク・エレメントの内部に未処理データ・ソース、集合手段、およびクライアント・インタフェースが配置されていてもよい。
【0052】
図5は本発明の実施形態の一つのシステム・アーキテクチャを例示している。詳細には、データ・ソース・ネットワークは、プライベート高信頼データ・ソース・ネットワーク100Aであってもよいし、パブリック・データ・ソース・ネットワーク100Bであってもよい。これらのデータ・ソース・ネットワークのどちらかが、対称準同型暗号化プロトコルを用いて未処理データを暗号化するために集合手段201を使用する。サード・パーティ・クラウド・サービス・ネットワーク101は、フィード・サーバ300で暗号化データを受信する。上記したように、フィード・サーバ300は暗号化データを暗号化データ記憶手段301に保存する。図5に例示されている実施形態は、クライアント・ネットワークが、どのようなプライベート高信頼クライアント・ネットワーク102Aであり、どのようなパブリック・クライアント・ネットワーク102Bであるか、を示している。さらに、キー・サーバ103は、プライベート高信頼ネットワーク100A、102Aおよびパブリック・ネットワーク100B、102Bにキーを提供する別個の高信頼ネットワークの中に示されている。しかしながら、キーはサード・パーティ・クラウド・サービス・ネットワーク101に提供されない。
【0053】
図6は、本発明の実施形態の一つの暗号化データに論理演算を行う方法を例示するフロー・チャートである。まず、システムは準同型暗号化によって暗号化された複数のデータを受信する(600)。次に、システムは、データ・ストレージ・システム(記憶手段)に複数の暗号化データを送出する(601)。計算処理を実行するためにクライアントから指示を受信し、該指示を処理すると(602)、システムは暗号化データの選択されたセットに論理演算を行う(603)。生成された結果は、次に、クライアントに送信される。
【0054】
図7は、コンピュータ/サーバ・システム700を例示しており、コンピュータ/サーバ・システム700に本発明の実施形態を実装することができる。システム700は、プロセッサ702およびメモリ703を含む、コンピュータ/サーバ・プラットフォーム701を含み、コンピュータ/サーバ・プラットフォーム701は、指示を実行するために動作する。ここで使用される用語「コンピュータ可読媒体」は、実行のためにプロセッサ702に指示を提供することに関与する任意の媒体を示す。さらに、コンピュータ・プラットフォーム701は複数の入力手段704(キーボード、マウス、タッチ・デバイス、言葉による指示を入力する装置、など)から提供される入力を受信する。コンピュータ・プラットフォーム701は、脱着可能な記憶手段705(ポータブル・ハード・ディスク・ドライブ、光媒体(CDもしくはDVD)、ディスク媒体、コンピュータが実行可能なコードを読み込むことができるその他の媒体、など)にさらに接続されていてもよい。コンピュータ・プラットフォーム701は、さらに、ネットワーク・リソース706に接続されていてもよく、ネットワーク・リソース706は、インターネット、もしくは、ローカル・パブリック・ネットワークまたはプライベート・ネットワークのその他のコンポーネントに接続されていてもよい。ネットワーク・リソース706は、ネットワーク707上のコンピュータ・プラットフォーム701と離れた位置からコンピュータ・プラットフォーム701に命令およびデータを提供してもよい。ネットワーク・リソース706への接続は、802.11規格、ブルートゥース、もしくはセルラ・プロトコル(cellular protocols)などのワイヤレス・プロトコルを介していてもよいし、ケーブルまたはファイバー・オプティクスなどの物理的伝送を介していてもよい。ネットワーク・リソース706は、コンピュータ・プラットフォーム701とは分離した位置にデータおよび実行可能な指示を記憶するための記憶手段を含んでいてもよい。コンピュータは、データおよびその他の情報をユーザに対して出力(表示)し、ユーザに追加情報を要求し、ユーザが何らかの情報を入力することができるようにするために、表示手段708とインタラクションを行う。表示手段708は、ユーザとインタラクションを行うために、入力手段704として動作してもよい。
【0055】
「システム・エレメント間のインタラクション」
上記された本発明のセンサ・ネットワークの実施形態において、興味深いシステムの要素は、集合手段、計算処理エンジン、および、クライアントの間の(間接的)インタラクションである。
【0056】
実施形態の一つは、非特許文献1のワン・タイム・パッド・ベース対称準同型暗号化スキームにもとづいている。1つより多くのエンティティが復号化パワーを有し、暗号化値を記憶し、様々なクエリによって問い合わせをし、暗号化値について回答する、という点で、この実施形態で使用されているスキームは、非特許文献1のスキームとは異なる。さらに、キー構造がアクセス制限を実施するために使用される。
【0057】
この実施形態において、キー・サーバ103は一般復号化キーKをランダムに選択し、集合手段が関与する(図示されない)各センサのキーekを各集合手段201に送信する。代替的な実施形態では、各集合手段201が多くのセンサに関与する場合、各集合手段201は単一の暗号化キーekを与えられ、センサIDがノンスに含まれてもよい。プライベート・ネットワークの外部のクライアントのいくつかは、一般復号化キーKを与えられ、その他のクライアントは該クライアントがアクセス権を有するセンサに対応するキーだけを与えられてもよい。同様に、各プライベート・ネットワークの計算処理エンジンは一般キーもしくはキー・サーバ103から提供される暗号化キー・セットのいずれかを受信する。
【0058】
集合手段201はセンサ・データを暗号化するためにキーを使用する。より効率的でよりパワフルな暗号化データへの処理が可能となるように、データは複数の形態で暗号化されることがある。たとえば、暗号化値の加算を促進するために加算指向(additive)対称準同型暗号化を用いてデータを暗号化してもよいし、暗号化値の乗算を促進するために乗算指向(multiplicative)対称準同型暗号化を用いてデータを暗号化してもよい。その他の例として、データ値の二乗が分散計算をサポートするために暗号化されてもよい。集合手段201はフィード・サーバ300に暗号化センサ・データを送信し、フィード・サーバ300は記憶手段に暗号化値を保存する。
【0059】
実施形態の一つにおいて、クラウド計算処理エンジン302は現在行われているスタンダード・クエリを記憶し、積極的に計算し、効率的な集合データを送信する。集合データはクエリに回答するために計算処理エンジンによって使用される。クライアント102は、場合によっては、プライベート・ネットワーク計算処理エンジン402による処理の後、クエリを生成してもよい。クエリは、クラウドの計算処理エンジン302にフィード・サーバ300によって送信される。クラウドの計算処理エンジン302は暗号化データを使用して可能な限り多くのクエリを処理し、プライベート・ネットワーク計算処理エンジン302に計算結果を戻す。プライベート・ネットワーク計算処理エンジン302は、提供されたキーを用いて、クライアント・クエリについての完全な回答を取得するためにデータを復号化し、暗号化されていないデータをさらに処理する。
【0060】
暗号化データを用いて計算することができる量を示す上記実施形態による例を以下に示す。
【0061】
「暗号化データへの計算処理」
以下に記載されるように、上記システムは計算処理されるデータを合計することができる。上記センサ・ネットワークの実施形態において、センサ・データは加算指向準同型スキームによって暗号化されていなければならない。クライアント102は、クライアント102が合計を所望するデータのサブセットを示す式(expression)をクラウド・サービス101に送信する。クラウド・サービス101は、暗号化されたデータ・エントリの合計を計算し、合計を暗号化してクライアント102に戻す。一方、クライアント102は、関心を有するデータ・ポイントに対応するパッドの合計を計算し、クラウド・サービス101から暗号化された合計を受信すると、暗号化された合計から計算されたパッドの合計を減算する。同様に、クラウド・サービス101は、暗号化された値の加重平均を計算することができ、パッドの加重平均を減算することにより、クライアント102は復号化された加重平均を復元することができる。このシステムはクライアント・マシンが実行しなければならない計算量を低減しないかもしれない。しかしながら、暗号化の観点で、高信頼であるが、好奇心の強いサード・パーティから安全などこかに大量のデータを蓄積することができる。このシステムは、計算処理されるべきデータ全体で統計の暗号化を可能にする。
【0062】
データのサブセットの合計を取得するための機能が、関連する量の計算処理を即時にサポートする。すなわち、1)データのサブセットの合計を計算する、2)データのサブセットで「論理和」を求める、3)データのサブセットの平均を計算する、4)データの加重平均を計算する。
【0063】
たとえば、センサ・データのサブセットで「論理和」を求める場合、特定のセンサ読み込みセットのいずれかが、異常を示すことができる非ゼロであるか否かを知ることが所望されるかもしれない。クライアントがキーの合計を減算することによってデータを復号化した後、合計が非ゼロであれば異常があり、さらなる調査が必要である。ゼロ値合計はすべてが良好であることを示す。
【0064】
データのサブセットの平均を計算する場合、クライアントがサブセットの値の数Nを知っていれば、クライアントはNによって合計を除算することによって平均を計算することができる。エントリNの合計数はクライアントによって既に知られていてもよいし、クラウドによってクライアントに送信されてもよい。
【0065】
データの加重平均を計算する際に、加重平均に寄与する様々なデータ・ポイントの重みから、クライアントはパッドの加重平均を計算することができ、次に、暗号化されていない加重平均を取得するために、クラウド・サービスによって戻される値からパッドの加重平均を減算することができる。
【0066】
パッドを加える代わりに、パッドを乗じることによって暗号化することは、暗号化値の乗算および幾何学的合計などのエンティティの計算をサポートする乗算指向準同型暗号化スキームを生成する。
【0067】
「他の計算処理」
加算および乗算の組み合わせは、複数のクエリおよびクライアントの部分のいくつかの計算処理を用いることによって取得されることができる。クエリの数および計算処理の量は式による。加算および乗算の組み合わせを含めることは通信および計算処理費用の観点からは効率的でないかもしれない。いくつかの実施形態において、加算情報はそのような計算処理を可能にするために暗号化される。多くの有用なクエリを、簡易に、かつ、効率的に、求めることができる。たとえば、分散および標準偏差は、センサが値mとともに、値mの二乗を計算し、暗号化し、送信するならば、暗号化データによって効率的に計算することができる。Var=Σm/n−Ave。これらの暗号化値は、記憶手段の要求に加えて、クラウド・サービスでも保存されていなければならない。システムは、同時に、加算指向準同型および乗算指向準同型の双方ではないため、これらの値を分離して記憶することが必要とされる。他の実施形態では、その他のモーメントが類似した方法で他の暗号化データから求められる。さらに、多くの計算が初期ステップとして、値の加算もしくは平均を必要とする。これらの初期の計算は、暗号化データに対してクラウド・サーバによって行われる。次に、クライアントはデータを復号化し、計算処理を終了することができる。クラウド・サービスとクライアントとの間で負荷を分割することは作業の適用をかなり拡張する。
【0068】
「効率的な復号化および複雑なアクセス・コントロール」
すでに記述したように、クライアントがデータのどの部分にアクセスすることができるか、を制御することを、システムはサポートする。しかしながら、より複雑な制御を達成することもできる。たとえば、集合手段の各々に少しだけ作業を増加するように求めることによって、クライアントは、その成分のどれかではなく、合計を復号化することができる。この実施形態はサブデータへのクライアントのアクセスを制限するが、クライアントの復号化処理速度は向上し、擬似ランダム関数への呼び出し回数を低減する。以下は、1つのクライアントとL個の集合手段による上記スキームがどのように作用するかを例示する。集合手段の各々は一つの値vを暗号化する。
【0069】
キー・サーバは、キーkをクライアントに、キーkおよびki−1を集合手段Aに送信する(0 < i < L)。キーkL−1は集合手段Aに送信される。
【0070】
最後の集合手段Aを除いて、集合手段Aの各々は、キーkについてvからh(f(r))を減算し、キーki−1についてh(f(r))を加算することによって値vを暗号化する。最後の集合手段Aはキーk=kL−1について値h(f(r))を加算するだけである。
【0071】
暗号化値セットの全体を合計する場合、キーk=kのh(f(r))を除いて全ての項(term)を消去する。クライアントはキーkを有しているので、合計を復号化することができる。クライアントは他のキーを有していないので、個々の暗号化値vはもちろん、任意の小計を復号化することはできない。すなわち、この復号化を実行するために、クライアントはキーk=kについての一つの項h(f(r))だけを計算する必要がある。したがって、この実施形態において、復号化はより効率的である。
【0072】
同様のアプローチを、その他のより複雑なアクセス・コントロールを取得するために使用することができる。その他の実施形態において、各々が各々の集合手段によって暗号化される4つのセンサ値と3つのクライアントC、C、Cがある。目標は、どのクライアントも個別の値を復号化することができないことを確実にすることである。この実施形態において、クライアントCはすべての値の合計を復号化することができるだけであり、クライアントCは2つの完全な合計および2つの値の2つの小計を復号化することができ、クライアントCは2つの値の小計の1つを復号化することができる。この状況は以下のように取り扱われる。
【0073】
キー・サーバはクライアントCにキーKを送信し、クライアントCにキーKおよびkを送信し、クライアントCにキーkを送信し、キーK、kおよびkを集合手段Aに送信し、キーkを集合手段Aに送信し、キーkおよびkを集合手段Aに送信し、キーkを集合手段Aに送信する。
【0074】
集合手段Aの各々は、列挙された第1キーkについてh(f(r))を加算し、集合手段Aの各々が有する他のキーについてvからh(f(r))を減算することによって、値vを暗号化する。
【0075】
暗号化値セットの全体を合計する場合、キーk=Kについてh(f(r))を除く項のすべてを消去する。クライアントCおよびCは双方ともこの合計を復号化することができる。クライアントCはキーkを有するので、最初の2つのセンサ値の合計を復号化することもできる。クライアントCはキーkを有するので、最後の2つのセンサ値の合計を復号化することができる。
【0076】
これらの実施形態は、集合手段毎に複数のセンサ値があり、小計階層により多くのレベルがあり、センサ値、集合手段、クライアントの数がより多い場合にまで拡張することができる。
【0077】
「適用例」
上記実施形態について多くの可能な適用領域があるが、その内の2つについて以下で例示する。以下の例示は工場センサ・データおよびアウェアネス(awareness)・データに関連する。その他の適用は、会計データ、顧客データ、医療記録、ユーザ学習データを含むが、本発明はこれらのデータに限定されるものではない。これらの例は、本発明の実施形態の一つによるシステムの様々な特性を示すが、これらは例示に過ぎず、様々な他の実施形態がその他の多くの適用を有する。
【0078】
例1:工場監視(ブール・ケース(Boolean case))
目標:何かが間違っていることをセンサ・データが示唆するならば工場管理者の注意を喚起する。詳細には、適正な範囲外のセンサ値が警報のきっかけとなる。
【0079】
製造プロセスにおいてもっとも注意を要する重要なことの一つは、プロセス全体にわたって非常に正確な温度制御を維持することである。さらに、プロセスにおける異なるポイントでの理想温度設定は往々にして秘密に保持されているプロプライエタリな知識である。したがって、温度センサは、温度が適正な範囲内にあることを確認するために常に監視されていなければならない。
【0080】
セットアップ:M個のセンサがあると仮定する。mをM<2である最小の整数とする。
【0081】
センサiの各々は、自身の集合手段に自身の値を送信する。センサ値mはpビットによって所望される精度で示すことができる。
【0082】
集合手段は各センサからの値についての適正な範囲を保存する。適正な範囲は一定であってもよいし、時間に依存してもよいし、特定の時間に実行されているプロセスに依存してもよい(この場合、プロセスIDおよび開始時間を集合手段に伝送しなければならない)。集合手段はキー・サーバから擬似ランダム関数キーekも受信する。集合手段は、センサ値が適正な範囲にある場合、0であるブール値bを生成し、センサ値が適正な範囲にない場合、1であるブール値bを生成する。キー・サーバおよび集合手段のすべては、(出力が一様であればよく、セキュリティ・グレードであることは必要としない)2つのハッシュ関数を承諾する。hb:{0,1}λ→{0,1}、hx:{0,1}λ→{0,1}ビット
【0083】
ノンスr=r(t,a,σ)は、タイム・スタンプt、値のタイプ(ブール値もしくは未処理センサ値)を示す符号aを含み、ノンスが長さλを満たすために付加的なストリングσを必要とするかもしれない。
【0084】
集合手段はブール値bをcb=b+hb(fek(i)(r(t,1,σ))) mod Mとして、未処理センサ値mをcx=x+hx(fek(i)(r(t,0,σ))) mod Pとして暗号化する。P=2である。hb(fek(i)(r(t,1,σ)))およびhx(fek(i)(r(t,0,σ)))は、予め、すなわち、センサ値を受信する前に、計算することができる。
【0085】
集合手段は、フィード・サーバに、ストリング、該ストリングのノードID、暗号化ブール暗号文cb、暗号化センサ値cxの連鎖(concatenation)を送信する。
【0086】
計算処理エンジンは複数の固定クエリ(standing queries)を有する。たとえば、計算処理エンジンは、あるプロセスの暗号化ブール値のすべてのmod Mを求め、加算し、cpとして一時的に保存してもよい。次に、ある工場の暗号化されたプロセスの合計のすべてのmod Mを求め、加算し、cfとして保存してもよい。最後に、これらのすべてのmod Mを求め、加算し、cTとして保存してもよい。次に、これらの和をフィード・サーバに送信する。実施形態の一つでは、これらの和は適切なパーティのモバイル・デバイスにさらに送信される。たとえば、いくつかの工場を管理するチーフ・オペレーティング・オフィッサーは暗号化された最終合計を受信し、次に、暗号化された工場の合計を受信し、さらにその次に、暗号化されたプロセスの合計を受信してもよい。工場の管理者は管理者自身の工場の合計だけを受信し、次に、この工場におけるプロセスのプロセス合計を受信してもよい。プロセス管理者はプロセスの合計だけを受信することができる。
【0087】
実施形態の一つにおいて、監視モードがオンである場合、モバイル・デバイスはモバイル・デバイスの所有者が指定する固定クエリの各々についての次のステップのために2つのワン・タイム・パッドを計算する。hb(fek(i)(r(t,1,σ)))、hx(fek(i)(r(t,0,σ)))モバイル・デバイスは、次に、各クエリについてのパッドのmod Pおよびmod Mを求め、各々合計する。たとえば、工場管理者は工場の各プロセスに対応するパッドのすべてを加算し、該合計をhpとして保存し、該合計をすべて加算し、この合計をhfとして保存してもよい。
【0088】
暗号化センサ値を受信すると、モバイル・デバイスは、cf mod Mからhfを減算することにより、最大レベル・ブール合計、工場管理者の場合における工場合計を復号化する。合計がゼロである場合、すべてのセンサは適正な範囲にあり、モバイル・デバイスはこれ以上何もしない。合計がゼロでない場合、モバイル・デバイスは警報を登録し、どのプロセスが通常範囲を越えるセンサ値を有するのか、を見つけるためにプロセス合計を復号化することによってより多くの情報を集めるプロセスを開始する。モバイル・デバイスは、次に、このプロセスについてセンサ値のすべてを要求するフィード・サーバにクエリを送信し、センサ値を受信すると、ユーザにグラフィックを用いてセンサ値を提示する。モバイル・デバイスもしくはユーザは、以降の時間ステップにおけるこのプロセスについてのより多くの情報を取得するために、固定クエリを変更してもよい。
【0089】
「非準同型暗号化システムとの比較」
本発明の実施形態によるシステムを使用することによって、ブール値はmビット・ストリングとして暗号化される。ブール値の暗号文は非準同型暗号化スキームにおいてはより小さくなるかもしれないが、クライアントは、要約値だけでなくすべてのデータを受信しなければならない。したがって、クライアントは、各期間、各センサについてMビットを受信する。結果的に、クライアントが関心を有する合計毎に、クライアントが受信するmビットよりも受信するデータは大きくなる。クライアントは、予め、パッドの合計を計算することができるので、本発明の実施形態において使用されるシステムの処理はより迅速となり、帯域幅の負荷も低減することができる。暗号化値の合計を計算し、合計を送信するためのサーバの処理時間も値のすべてを送信する時間よりも短縮される可能性がある。工場監視の場合、センサ値が範囲外となり、クライアントが未処理値を要求する事象が増加すると、この実施形態が有するシステムの効果は小さくなる。最終的に、個々の値はこの実施形態では復号化されないので、より安全である。たとえば、工場監視の場合、個々のセンサ値は、問題が検出された場合を除いて、集合手段によって暗号化された後は見られることがない。したがって、この実施形態は、帯域幅、速度、セキュリティについて優位性を有する。
【0090】
「パブリック・キー・ベース準同型システムとの比較」
RSAなどの決定論的パブリック・キー暗号化スキームは意味論的セキュリティ(semantic security)を達成することができない。OAEPを用いたRSAの確率的変動(probabilistic variants)は準同型ではない。もっともよく知られている準同型である確率的パブリック・キー暗号化スキームはエル・ガマルである。したがって、エル・ガマルを比較のために使用する。エル・ガマルは大きな素数Pを選択することを必要とする。必要とされる長さは所望されるセキュリティに依存するが、一般にPは少なくとも1024ビットの長さとされる。暗号文は2つの部分を有し、各々は整数 mod Pである。このように、ブール値についてでさえ、暗号文は少なくとも2048ビットの長さを有する。非常に大量のセンサを使用する場合でなければ、使用される暗号文のサイズはエル・ガマルによって使用される暗号文のサイズより数桁小さい。その他の準同型暗号化スキームはその他の様々な効率のトレードオフを有し、そのすべては比較的長い暗号文を有する。暗号化、復号化、および暗号文の結合のすべての処理は、実質的に本発明の実施形態のスキームより遅い。なぜならば、暗号文がより長く、暗号化および復号化の双方が(計算の負荷が大きい)累乗法を使用するからである。さらに、すべてが一つのパブリック・キーで暗号化されるので、いずれかのデータを復号化することができる個々は、すべてのデータを復号化することができる。反対に、本発明の実施形態は各センサに異なるキーを使用して、個々が復号化することができるデータを限定する手段を提供し、一方で、異なるキーによって暗号化されるデータ全体への計算処理をサポートする。この能力は、プロキシ再暗号化によってパブリック・キー・スキームに付与されることができるが、スキームの複雑さは実質的に増加する。すなわち、本発明の実施形態のシステムは帯域幅について、より効率的であり、より迅速に暗号化、復号化を行うことができ、より柔軟に暗号文結合を行うことができる。スキームをさらに複雑にすることなく、目的に適合したデータへのアクセスもサポートする。
【0091】
例2:工場改善計画
目標:プロセスのどの部分が理想値からのずれがもっとも大きいか、および、どの部分がもっとも大きい分散を有するかを決定する。
【0092】
例1で記載したように、製造プロセスにおいて適正な範囲に温度を維持することは重要である。熱損失がどこで生じるか、もしくは、熱い部分もしくは冷たい部分がいつ、どこに現れるか、を知ることは重要である。これを達成するために、時間に沿って変化を追跡することが必要である。どの部分が理想値からそれ、どの部分が大きい分散を有するかを判断することによって、プロセスの部分を改善し、もしくは置換するために、どの部分に最大の努力を払えばよいかを、工場管理者が決心することが可能となる。
【0093】
プロトコル:統計は最大T個の異なる期間にわたって求められると仮定する。tはT<2となる最小の整数である。
【0094】
センサiの各々は自身の値を自身の集合手段に送信する。センサ値mはpビットの所望される精度で示されることができる。
【0095】
集合手段はキー・サーバから擬似ランダム関数キーekを受信する。
【0096】
ノンスr=r(t,v,σ)はタイム・スタンプt、ノンスが未処理センサ値を暗号化するために使用されるか、未処理センサ値の二乗を暗号化するために使用されるか、を示す符号vを含み、ノンスを長さλとするための付加的なストリングσを必要とするかもしれない。
【0097】
集合手段はmを計算する。
【0098】
集合手段はセンサ値mをcm=m+hm(fek(i)(r(t,0,σ))) mod Nとして、センサ値の二乗mをcv=m+hv(fek(i)(r(t,1,σ))) mod N’として暗号化する。N=PTであり、N’=PTである。hm(fek(i)(r(t,0,σ)))およびhv(fek(i)(r(t,1,σ)))は、センサ値を受信する前に、予め計算することができる。
【0099】
集合手段はストリング、ストリングのノードID i、暗号化ブール暗号文cm、暗号化センサ値cvをフィード・サーバに送信する。
【0100】
フィード・サーバはデータ記憶手段にこれらの値のすべてを保存する。
【0101】
クライアントは、期間τにわたるセンサi各々の統計を要求する。
【0102】
計算処理エンジンは、合計Sを取得するために、期間τにおけるセンサiの暗号化センサ値のすべてを合計する。合計Vを取得するために同一の期間におけるセンサの暗号化されたセンサ値の二乗のすべての合計を計算する。計算処理エンジンはSおよびVの双方をクライアントに送信する。
【0103】
計算処理エンジンはこの計算を実行し、クライアントはこのセンサについての、もしくは、この期間におけるセンサ値の暗号化値のパッドのすべての合計、および、この期間におけるこのセンサの暗号化値の暗号化値のパッドのすべての合計を計算する。計算エンジンは、この期間にいくつの値nが含まれるかを知っている。
【0104】
クライアントが合計SおよびVを受信する場合、暗号化されていない合計sおよびvを取得するために、以前のステップにおいて計算されたSおよびVをパッドの合計から減算することによって復号化する。クライアントは平均値Ave=Σs/nおよび分散Var=Σv/n−Aveを計算することができる。
【0105】
クライアントは、次に、プロセスのどの部分が理想からもっともそれた平均センサ値を有し、どの部分が大きい分散を有し、今後これらの統計を改善するためにどの部分を調整し、もしくは、置換するために努力を払えばよいかを決定するために、これらの値を使用することができる。
【0106】
「非準同型システムとの比較」
例示的な適用1(例1)に示されるように、クライアントが復号化するアプローチは、本発明の実施形態によって使用されるアプローチより帯域幅の効率が低い。統計値が計算される値の数が多くなると、この実施形態のシステムが有する効果はより高くなる。さらに、上記したように、この実施形態のシステムはより迅速であり、より安全である。
【0107】
「パブリック・キー・ベース準同型システムとの比較」
本発明の上記実施形態で使用される暗号文は長さt+pを有する。pは精度であり、t=logTであり、Tは統計値が計算される期間の最大数である。したがって、使用される暗号文はナノ秒毎に百年(millennia)にわたって取得され平均化される倍精度値についてさえ2048ビットより短い。たとえば、一年にわたって毎秒取得される倍精度値および平均化される倍精度値は45ビットより短い長さの暗号文を必要とする。未処理データおよび未処理データの二乗の双方の暗号化されたデータを記憶するためには90ビットを必要とし、これは、上記実施形態におけるシステムが記憶手段の使用において桁違いに効率的であることを意味する。例1に関して記述されたように、本発明の実施形態によるシステムはパブリック・キー・スキームに比べ、より迅速な暗号化、復号化、および暗号文のより柔軟な結合を実行し、データへのきめ細かいアクセス制限をサポートする。
【0108】
他の例において、例2のより効率的でない暗号化スキームと例1の未処理値の暗号化データを置き換えることにより、例1および例2を組み合わせてもよい。すなわち、例1のブール暗号化の部分によって例2を拡張することができる。
【0109】
「アウェアネス・データ例」
本発明の実施形態は既存のアウェアネス集合システムに直接適用することができる。ユーザふるまいおよび動作についての検知センサ・ベース情報は、中央データ記憶手段に送信される前に安全に暗号化することができる。情報のセキュリティは企業レベルおよび個人レベルの双方において重要である。企業は、競争者の詮索好きな目から、もしくは、協力者の目からさえも、従業者のアクティビティについての情報を保護することを望むかもしれない。個人のプライバシーは従業者にとって重要かもしれない。一箇所に暗号化データだけを集中的に保存することによって、信頼されないサード・バーティが非常にセンシティブなふるまいについての情報にアクセスを行うことができないことを確実にする。さらに、クラウド・サービス・レベルにおいてデータの部分的要約および統合のみをサポートすることによって、低信頼の一般的なクラウド・サービスにサービスを移動することを可能にする。
【0110】
例3:アウェアネス・データの位置統計値
プロトコル:Nは追跡されている人数であり、Mはセンサの数であり、pはセンサ値の精度である。Tは統計値が計算される期間の最大数であり、Wは任意の加重平均で使用される最大重みである。
【0111】
各センサについて、集合手段は一連のブール値を含む列を生成する。該列は、センサが追跡する人物の各々について、該人物が検出されたか否かを示す。ある場合、このブール値はセンサからの未処理値である。カメラからの画像検出などのその他の場合、集合手段はこの値を取得するために多くの処理を実行してもよい。コンピュータ・アクティビティの検出、ある人物のオフィスにおける動きのカメラ検出などの場合において、一連のセンサ値は一つのブール値を含むだけであってよく、その値は(適正であろうとなかろうと)一般にコンピュータもしくはオフィスを使用する人物と関連する。ブルートゥース・センサもしくはRFIDリーダなどのその他の場合、多くの人物のブール値が戻される。集合手段は、ブール値の列をrビット・ストリングとして暗号化し、フィード・サーバに送信する。ここで、r=m+p+t+wである。フィード・サーバは記憶手段に暗号化されたデータを送信し、計算処理エンジンによって処理する。
【0112】
計算処理エンジンは各クライアントの固定クエリに関する値を各クライアントに送信する。たとえば、クライアントは、クライアントのワーク・グループにおける人々の状態にだけ関心を有するかもしれない。その場合、これらの人々の値だけがクライアントに送信される。これらのクライアントはデータを復号化し、状態を推測することができる。より長い期間の統計値を多様な目的のために計算してもよい。
a.位置予測:
ユーザは、同僚との対面会話を試みるために、将来のある期間に、同僚がいる位置に関心を有するかもしれない。計算処理エンジンは、過去の複数の週における同一の時間における当該人物の考えられる位置の各々についての暗号化値の加重平均を計算することができ、その場合、現在により近い週ほど大きい重みが付与される。クライアントが重みをすでに知っていてもよいし、暗号化加重平均とともに暗号化されていない重みがクライアントに送信されてもよい。クライアントは、パッドの加重平均を計算するために重みを使用し、各位置についての復号化された加重平均を取得するために、クラウド・サービスによって戻される値から加重和を減算する。クライアントは、その時間その位置に該人物がいる相対的な確率をユーザに提示することができる。クエリが一般的なものである場合、計算処理エンジンは加重平均を計算し、保存してもよい。
b.位置使用統計値:
計算処理エンジンは、ある位置に対応するすべての人物についての暗号化値のすべての和を計算し、この和を検出するために、データを復号化することができるクライアントにこの和を送信する。この場合、クライアントはスペースを使用している人物についてなんら知ることなく、スペースの合計使用量を知ることができる。
c.ワークグループ位置:
ワーク・グループにおけるすべての人物についての位置の暗号化値を加算することによって、ワーク・グループの特定のメンバの位置についての情報をなんら明らかにすることなく、ワーク・グループの人々の位置についての統計値をクライアントに付与することができる。
【符号の説明】
【0113】
101 クラウド・サービス
102 クライアント
301 暗号化データ記憶手段
302 計算処理エンジン
400 計算処理エンジン
402 クライアント計算処理手段

【特許請求の範囲】
【請求項1】
暗号化データ・セットを保存し、該暗号化データ・セットに論理演算を実行するシステムであって、
暗号化データを保存する記憶手段と、
プロセッサを有する計算処理手段と、
を備え、
前記暗号化データは対称準同型暗号化によって暗号化されており、
前記計算処理手段は、暗号化結果を生成するために前記記憶手段に保存されている前記暗号化データに少なくとも一つの論理演算を実行するために前記プロセッサを使用し、
前記暗号化結果は前記暗号化データに対応する単一のキーもしくはキー・セットのいずれかによって復号化される、
暗号化データ・セット保存および論理演算実行システム。
【請求項2】
複数の集合手段をさらに備え、
前記複数の集合手段の各々は少なくとも一つのソースから受信したデータ・セットを受信して暗号化し、
前記複数の集合手段の各々は、前記記憶手段に暗号化された前記データ・セットを送信する、
請求項1に記載の暗号化データ・セット保存および論理演算実行システム。
【請求項3】
前記対称準同型暗号化はワン・タイム・パッド・ベース準同型暗号化を含む、
請求項1に記載の暗号化データ・セット保存および論理演算実行システム。
【請求項4】
アーカイブ暗号化手段をさらに備え、
前記アーカイブ暗号化エンジンは暗号化を実行し、前記記憶手段に暗号化された前記データ・セットを送信する、
請求項1に記載の暗号化データ・セット保存および論理演算実行システム。
【請求項5】
前記複数の集合手段は前記データ・セットを暗号化するためにキーを使用する、請求項2に記載の暗号化データ・セット保存および論理演算実行システム。
【請求項6】
少なくとも2つの異なるキーが前記データ・セットを暗号化するために前記複数の集合手段によって使用される、請求項5に記載の暗号化データ・セット保存および論理演算実行システム。
【請求項7】
暗号化された前記データ・セットは少なくとも2つの異なるキーで暗号化されており、
前記少なくとも1つの論理演算が実行された場合、単一のキーによって復号化可能な前記暗号化結果を生成するために、少なくとも1つのパッドを取り消す、
請求項1に記載の暗号化データ・セット保存および論理演算実行システム。
【請求項8】
前記暗号化結果は、単一のキーによって復号化可能であり、
前記論理演算で使用される前記暗号化データは前記単一のキーによって復号化可能ではない、
請求項1に記載の暗号化データ・セット保存および論理演算実行システム。
【請求項9】
前記少なくとも1つの論理演算は、少なくとも2つの暗号化されたデータ・セットの和を求めることを含む、請求項6に記載の暗号化データ・セット保存および論理演算実行システム。
【請求項10】
前記システムはクラウド・サービス・プロバイダである、請求項1に記載の暗号化データ・セット保存および論理演算実行システム。
【請求項11】
サード・パーティ・システムにおいて暗号化データを保存し、該暗号化データに論理演算を実行する方法であって、
暗号化データを受信し、
前記暗号化データを前記サード・パーティ・システムの記憶手段に保存し、
前記サード・パーティ・システムの計算処理手段のプロセッサを使用して、暗号化結果を生成するために少なくとも1つの論理演算を実行し、
前記暗号化データは対称準同型暗号化を使用して暗号化され、
前記暗号化結果は前記暗号化に対応する単一のキーもしくはキー・セットのいずれかによって復号化される、
暗号化データ保存および論理演算実行方法。
【請求項12】
暗号化はアーカイブ暗号化手段によって実行される、請求項11に記載の暗号化データ保存および論理演算実行方法。
【請求項13】
集合手段にデータを集合して暗号化し、
前記サード・パーティ・システムに暗号化データを送信する、
ことをさらに含む、
請求項11に記載の暗号化データ保存および論理演算実行方法。
【請求項14】
前記対称準同型暗号化はワン・タイム・パッド・ベース準同型暗号化を含む、請求項11に記載の暗号化データ保存および論理演算実行方法。
【請求項15】
前記暗号化結果は単一のキーによって復号化可能であり、
前記論理演算で使用される暗号化データは前記単一のキーによって復号化可能ではない、
請求項11に記載の暗号化データ保存および論理演算実行方法。
【請求項16】
前記暗号化データは複数の暗号化されたデータ・セットを含み、
前記暗号化されたデータ・セットの各々はキーによって暗号化され、
少なくとも1つの論理演算は、単一のキーによって復号化可能な前記暗号化結果を生成するためにデータ・セットの各々を暗号化する際に使用される少なくとも1つのパッドを取り消す、
請求項11に記載の暗号化データ保存および論理演算実行方法。
【請求項17】
暗号化データを保存し、該暗号化データに演算を実行するシステムであって、
データ記憶手段と、
計算処理手段と、
を備え、
前記データ記憶手段は準同型暗号化によって暗号化された複数のデータ・セットを受信し、
前記計算処理手段は受信した指示にもとづいて処理を実行し、
前記処理はプロセッサによって実行され、
前記処理は、
少なくとも2つの暗号化データ・セットを選択し、
暗号化結果を生成するために受信した前記指示にもとづいて選択された前記暗号化データ・セットに論理演算を実行し、
前記暗号化結果は前記暗号化データに対応する単一のキーもしくはキー・セットのいずれかによって復号化される、
暗号化データ保存および演算実行システム。
【請求項18】
前記暗号化結果は単一のキーによって復号可能であり、
前記論理演算で使用される暗号化データは前記単一のキーによって復号化可能ではない、
請求項17に記載の暗号化データ保存および演算実行システム。
【請求項19】
暗号化データ・セットの各々はキーによって暗号化され、
前記少なくとも1つの論理演算は、単一のキーによって復号化可能である前記暗号化結果を生成するために、少なくとも1つのワン・パッドを取り消す、
請求項17に記載の暗号化データ保存および演算実行システム。
【請求項20】
前記システムはクラウド・サービス・プロバイダである、請求項17に記載の暗号化データ保存および演算実行システム。
【請求項21】
暗号化データ・セットを記憶手段に保存し、
暗号化結果を生成するために前記記憶手段に保存されている前記暗号化データに少なくとも一つの論理演算を実行する、
ことをコンピュータに実行させるためのプログラムであって、
前記暗号化データは対称準同型暗号化によって暗号化されており、
前記暗号化結果は前記暗号化データに対応する単一のキーもしくはキー・セットのいずれかによって復号される、
暗号化データ・セット保存および論理演算実行プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2011−232727(P2011−232727A)
【公開日】平成23年11月17日(2011.11.17)
【国際特許分類】
【出願番号】特願2010−208994(P2010−208994)
【出願日】平成22年9月17日(2010.9.17)
【出願人】(000005496)富士ゼロックス株式会社 (21,908)
【Fターム(参考)】