【国等の委託研究の成果に係る記載事項】(出願人による申告)平成23年度 総務省「クラウド対応型セキュリティ技術の研究開発」委託研究、産業技術力強化法第19条の適用を受ける特許出願
【文献】
佐久間淳,小林重信,プライバシ保護データマイニング,人工知能学会誌,2009年 3月 1日,第24巻 第2号,p.283-294
(58)【調査した分野】(Int.Cl.,DB名)
プロキシ鍵生成手段は、各サービス提供装置がそれぞれの秘密鍵を入力とし、前記各サービス提供装置と互いに通信を行うことによって、前記各サービス提供装置の秘密鍵に対応するプロキシ鍵を生成する
請求項1記載の暗号化統計処理システム。
サービス提供装置は、統合データ記憶装置に記憶された暗号化統計データと、各サービス提供装置の秘密鍵とを入力として、前記各サービス提供装置と互いに通信を行うことによって、前記暗号化統計データの復号を行い、統計情報を生成する統計情報生成手段を含む
請求項2記載の暗号化統計処理システム。
暗号データ生成手段は、メッセージをM、1以上q未満の乱数をrとしたとき、サービスiに対応する暗号データとして、(y_i^r,M・Z^r)を含む暗号データを生成し、
暗号化統計データ生成手段は、統計情報を計算する対象となる暗号データを生成するために使用された乱数の総和をRとし、gpk=g^{a_1a_2…a_N}、統計情報をSとしたとき、(e(gpk,g)^R,S・Z^R)を含む暗号化統計データを生成する
請求項4記載の暗号化統計処理システム。
【発明を実施するための形態】
【0018】
以下、本発明の実施形態について図面を参照して説明する。
図1は、本発明による暗号化統計処理システムの構成の一例を示すブロック図である。
図1に示すように、暗号化統計処理システムは、暗号データを登録するデータ登録装置10と、暗号データを記憶する1つ以上のデータベース20-1,20-2,…,20-Nと、1つ以上のサービス提供装置60-iと、1つ以上のプロキシ装置30-iと、統合データ生成装置40と、統合データ記憶装置50とを含む。また、各装置は、LANやインターネット等の通信ネットワークを介して相互に接続されている。
【0019】
データベース20-1,20-2,…,20-Nは、光ディスク装置や磁気ディスク装置等の記憶装置(図示せず)に記憶されている。なお、データベースごとに異なる記憶装置に記憶させるようにしてもよいし、複数のデータベースを1つの記憶装置に記憶させるようにしてもよい。以下、データがデータベースに記憶されているとの表現を用いるが、具体的には、記憶装置が記憶しているデータベースに含まれていることを意味する。
【0020】
サービス提供装置60-iは、暗号データを生成するための公開鍵pk_iと、公開鍵pk_iに対応する秘密鍵sk_iとを生成する。また、サービス提供装置60-iは、データベース20-iに記憶されている暗号データから暗号化部分統計データを生成するためのプロキシ鍵を生成する。また、サービス提供装置60-iは、暗号化統計データを復号し、統計データを生成する。
【0021】
ここで、プロキシ鍵とは、所定の公開鍵を用いて暗号化された暗号データを、その公開鍵とは異なる公開鍵に対応する秘密鍵を用いて復号できる暗号データに変換するための鍵である。
【0022】
また、暗号化部分統計データとは、所定の公開鍵を用いて生成された暗号データの集合に対して、対応する平文の集合より導かれる統計データを、所定の公開鍵を用いて暗号化したデータである。
【0023】
本実施形態では、複数のデータベースが存在していることを想定している。また、簡略化のために、データベースごとにそれぞれ異なる公開鍵を1つだけ用いて、データの暗号化を行っているものとしている。すなわち、データベース1には公開鍵1、データベース2には公開鍵2を用いて暗号化されたデータを記憶させている。
【0024】
後述する例では、データベース1には、E(pk_1,M_1)からE(pk_1,M_n)が記憶されている。また、データベース2には、E(pk_2,M'_1)からE(pk_2,M'_n')が記憶されている。ここで、MをM_1,…,M_nから求められる統計データとする。例えば、M=(M_1+…+M_n)とすれば、MはM_1,…,M_nの総和である。そして、本実施形態で利用している準同型暗号をEとして用いると、暗号化したまま、E(pk_1,M)を計算することができる。本実施形態では、このE(pk_1,M)をデータベース1の暗号化部分統計データと呼ぶ。
【0025】
プロキシ装置30-iは、データベース20-iに記憶されている暗号データとプロキシ鍵とを入力として、暗号化部分統計データを生成する。
【0026】
統合データ生成装置40は、1つ以上の暗号化部分統計データを入力として、暗号化統計データを生成する。統合データ記憶装置50は、暗号化統計データを記憶する。暗号化統計データとは、暗号化部分統計データに基づいて統計処理を行った結果の暗号データである。
【0027】
データ登録装置10は、具体的には、プログラムに従って動作するパーソナルコンピュータ等の情報処理装置によって実現される。
図2は、データ登録装置の構成例を示すブロック図である。
図2に示すように、データ登録装置10は、暗号データ生成部10-1と、暗号データ登録要求部10-2とを含む。
【0028】
暗号データ生成部10-1は、サービス提供装置60-iによって生成された公開鍵pk_iおよび登録したいデータMを入力とし、公開鍵pk_iを用いてMの暗号データを生成する機能を備えている。暗号データ生成部10-1は、具体的には、プログラムに従って処理を実行する情報処理装置のCPUによって実現される。
【0029】
暗号データ登録要求部10-2は、生成した暗号データをデータベース20-iに登録することを要求する機能を備えている。暗号データ生成部10-1は、具体的には、プログラムに従って処理を実行する情報処理装置のCPUおよびネットワークインタフェース部によって実現される。
【0030】
サービス提供装置60-iは、具体的には、プログラムに従って動作するパーソナルコンピュータ等の情報処理装置によって実現される。
図3は、サービス提供装置の構成例を示すブロック図である。
図3に示すように、サービス提供装置60-iは、鍵生成部60-i-1と、統合用鍵生成部60-i-2と、プロキシ鍵生成部60-i-3と、部分復号部60-i-4とを含む。
【0031】
鍵生成部60-i-1は、公開鍵pk_iおよびそれに対応する秘密鍵sk_iを生成する機能を備えている。鍵生成部60-i-1は、具体的には、プログラムに従って処理を実行する情報処理装置のCPUによって実現される。
【0032】
統合用鍵生成部60-i-2は、秘密鍵sk_iを入力として、他の1つ以上のサービス提供装置60-jと対話する(具体的には、相互に通信を行い処理を実行する。詳細については後述する)ことにより、プロキシ鍵rk_iを生成するための全体公開鍵gpkを生成する機能を備えている。統合用鍵生成部60-i-2は、具体的には、プログラムに従って処理を実行する情報処理装置のCPUによって実現される。
【0033】
プロキシ鍵生成部60-i-3は、全体公開鍵gpkおよび秘密鍵sk_iを入力として、公開鍵pk_iで暗号化された暗号データを暗号化部分統計データに変換するためのプロキシ鍵rk_iを生成する機能を備えている。プロキシ鍵生成部60-i-3は、具体的には、プログラムに従って処理を実行する情報処理装置のCPUによって実現される。
【0034】
部分復号部60-i-4は、暗号化統計データを部分的に復号する機能を備えている。部分復号部60-i-4は、具体的には、プログラムに従って処理を実行する情報処理装置のCPUによって実現される。
【0035】
プロキシ装置30-iは、具体的には、プログラムに従って動作するパーソナルコンピュータ等の情報処理装置によって実現される。
図4は、プロキシ装置の構成例を示すブロック図である。
図4に示すように、プロキシ装置30-iは、プロキシ鍵rk_iと公開鍵pk_iで暗号化された暗号データとを受け取り、暗号化部分統計データを生成する暗号化データ変換部30-i-1を含む。暗号化データ変換部30-i-1は、具体的には、プログラムに従って処理を実行する情報処理装置のCPUによって実現される。
【0036】
統合データ生成装置40は、具体的には、プログラムに従って動作するパーソナルコンピュータ等の情報処理装置によって実現される。
図5は、統合データ生成装置の構成例を示すブロック図である。
図5に示すように、統合データ生成装置40は、プロキシ装置30-1〜プロキシ装置30-Nより暗号化部分統計データをそれぞれ受け取り、暗号化統計データを生成する統計処理部40-1を含む。統計処理部40-1は、具体的には、プログラムに従って処理を実行する情報処理装置のCPUによって実現される。
【0037】
本実施形態では、暗号化統計処理システムは、複数の装置によって構成されているが、これに限らず、各装置の機能を備えた1台の情報処理装置によって実現されていてもよい。なお、1台の情報処理装置によって実現される場合にも、公開鍵が異なるサービスが提供されているものとする。
【0038】
本実施形態の暗号化統計処理システムは、サービス提供者鍵生成処理、データ登録処理、プロキシ鍵生成処理、統計情報計算処理および復号処理を実行する。以下、各処理の流れについて説明する。
【0039】
サービス提供者鍵生成処理について説明する。
図6は、サービス提供者鍵生成処理の一例を示す流れ図である。
【0040】
図6に示すように、サービス提供装置60-i(例えば、鍵生成部60-i-1)は、システムパラメータを入力として、公開鍵pk_iおよび秘密鍵sk_iを生成する(
図6のステップKEYGEN1)。
【0041】
次いで、サービス提供装置60-i(例えば、鍵生成部60-i-1)は、公開鍵pk_iを公開し、秘密鍵sk_iを保管する(
図6のステップKEYGEN2)。なお、保管するとは、具体的には、記憶部に記憶することを意味する。
【0042】
次に、データ登録処理について説明する。
図7は、データ登録処理の一例を示す流れ図である。
【0043】
図7に示すように、データ登録装置10(例えば、暗号データ生成部10-1)は、公開鍵pk_iおよび登録したいデータMを入力として、暗号文E(pk_i,M)を生成する(
図7のステップDREG1)。
【0044】
次いで、データ登録装置10(例えば、暗号データ登録要求部10-2)は、暗号文E(pk_i,M)をデータベース20-iに送信し、記憶させる(
図7のステップDREG2)。
【0045】
次に、プロキシ鍵生成処理について説明する。
図8は、プロキシ鍵生成処理の一例を示す流れ図である。
【0046】
図8に示すように、サービス提供装置60-1〜60-N(例えば、統合用鍵生成部60-i-2)は、それぞれ公開鍵pk_1〜pk_N、秘密鍵sk_1〜sk_Nを入力として、対話的に全体公開鍵gpkを生成する(
図8のステップRKGEN1)。
【0047】
次いで、全体公開鍵gpkおよび秘密鍵pk_iを入力としたサービス提供装置60-i(例えば、プロキシ鍵生成部60-i-3)は、プロキシ鍵rk_iを生成し、プロキシ装置30-iに送信する(
図8のステップRKGEN2)。
【0048】
次に、統計情報計算処理について説明する。
図9は、統計情報計算処理の一例を示す流れ図である。
【0049】
図9に示すように、プロキシ装置30-iは、プロキシ鍵rk_iと、データベースiに記憶された暗号文の集合{E(pk_1,M)}とを入力として受け取る(
図9のステップS101)。
【0050】
次いで、プロキシ装置30-i(例えば、暗号データ変換部30-i-1)は、プロキシ鍵rk_iと暗号文の集合{E(pk_1,M)}とから、暗号化部分統計データE(gpk,M_i)を生成し、統合データ生成装置40に送信する(
図9のステップS102)。
【0051】
ここでM_iは、データベースiに記憶された暗号文の集合{E(pk_1,M)}の全平文に対して、統計処理を施した結果を意味する変数とする。
【0052】
プロキシ装置30-1〜30-Nから、暗号化部分統計データE(gpk,M_1)〜E(gpk,M_N)を受信した統合データ生成装置40(例えば、統合データ生成部40-1)は、暗号化統計データE(gpk,si)を生成する(
図9のステップS103)。ここでsiは、M_1〜M_Nに対して統計処理を施した結果を意味する。
【0053】
次に、復号処理について説明する。
図10は、復号処理の一例を示す流れ図である。
【0054】
図10に示すように、サービス提供装置60-1〜60-Nは、それぞれ秘密鍵sk_1および暗号化統計データE(gpk,si)を入力として受け取る(
図10のステップS201)。
【0055】
次いで、サービス提供装置60-1〜60-N(例えば、部分復号部60-i-4)は、秘密鍵sk_Nおよび暗号化統計データE(gpk,si)から、対話的に復号結果siを生成する(
図10のステップS202)。
【0056】
次に、具体的な例を用いて本実施形態の動作を説明する。以降、a^{b}と記載することでaのb乗を表す。また、a_iと記載することでaに下添え字iを付けた記号を意味する。
【0057】
まず、ペアリング関数について説明する。G,G_Tを位数qを持つ巡回群とし、g_1,g_2をそれぞれGの生成元としたとき、ペアリング関数e:G×G→G_Tとは、任意のZ_qの元a,bに対して以下の性質を満たす2入力1出力の関数である。
【0058】
・e(g_1^a,g_2^b)=e(g_1,g_2)^{ab}
・e(g_1,g_2)≠1
【0059】
次に参考文献A(G. Ateniese, K. Fu, M. Green, and S. Hohenberger, "Improved Proxy Re-Encryption Schemes with Applications to Secure Distributed Storage", ACM Transactions on Information and System Security (TISSEC), 2006.)に記載されたプロキシ再暗号化方式について説明する。
【0060】
プロキシ再暗号化方式とは、公開鍵pk_Aで暗号化された暗号文を、プロキシ鍵rk_{A→B}と呼ばれる鍵を用いて、秘密鍵sk_Bで復号できる暗号文にsk_Aを用いずに変換する方法である。
【0061】
プロキシ再暗号化方式は、鍵生成、プロキシ鍵生成、暗号化、再暗号化および復号の5つのアルゴリズムからなる。以下、各アルゴリズムについて説明する。
【0062】
(鍵生成)
システムパラメータq,e,Gの生成元g,Z=e(g,g)を入力として受け取る。ユーザAの秘密鍵sk_a=aをZ_{q}からランダムに選択する。Z_{q}とは、位数qの巡回群を意味する。
【0063】
次に、ユーザAの公開鍵pk_a=y_a=g^{a}を計算する。以下、同様にして、ユーザBが公開鍵pk_b=y_b=g^bを計算し、公開しているものとする。
【0064】
(プロキシ鍵生成)
ユーザAの公開鍵pk_Aを用いて暗号化された暗号データを、ユーザBの秘密鍵sk_Bを用いて復号できる暗号データに変換するための鍵を生成するときの、動作の流れを説明する。
【0065】
入力として、ユーザBの公開鍵pk_Bと、ユーザAの秘密鍵sk_Aとを受け取る。
【0066】
次に、プロキシ鍵rk_{A→B}=y_b^{1/a}=g^{b/a}を計算する。
【0067】
(暗号化)
ユーザAの公開鍵pk_Aを用いて、メッセージMを暗号化するときの、動作の流れを説明する。
【0069】
次に、(C_1,C_2)=(y_a^{r},Z^{M}・Z^{r})を計算する。
【0070】
(再暗号化)
ユーザAの公開鍵pk_Aを用いて生成された暗号データ(C_1,C_2)を変換して、ユーザBの秘密鍵sk_Bを用いて復号できる暗号データ(C'_1,C'_2)を生成するときの、動作の流れを説明する。
【0071】
入力として、ユーザAの公開鍵pk_Aを用いて生成された暗号データ(C_1,C_2)と、プロキシ鍵rk_{A→B}とを受け取る。
【0072】
次に、(C'_1,C'_2)=(e(C_1,rk_{A→B}),C_2)=(e(g^{ar},g^{b/a}),Z^{M}・Z^{r})=(e(g,g)^{br},Z^{M}・Z^{r})=(Z^{br},Z^{M}・Z^{r})を計算する。
【0073】
(復号)
上記の(再暗号化)で生成された(C'_1,C'_2)をユーザBの秘密鍵sk_Bを用いて復号する際の動作の流れを説明する。
【0074】
まず、C'_1^{1/b}=Z^{r}を計算する。
【0075】
次に、C'_2/Z^{r}=Z^{M}を計算する。
【0077】
上記参考文献Aに記載されたプロキシ再暗号化方式は、暗号化の結果の暗号文(C_1,C_2)に対しても、再暗号化の結果の暗号文(C'_1,C'_2)に対しても、暗号化したまま平文に対して加算を行うことが可能である。
【0078】
今、(C_1,C_2)=(y_a^{r_1},Z^{M_1}・Z^{r_1}),(C_3,C_4)=(y_a^{r_2},Z^{M_2}・Z^{r_2})とする。
【0079】
このとき、(C_5,C_6)=(C_1・C_3,C_2・C_4)=(y_a^{r_1+r_2},Z^{M_1+M_2}・Z^{r_1+r_2})となり、(C_5,C_6)は、M_1+M_2の暗号文となる。この暗号文はユーザAの秘密鍵sk_Aを用いて復号可能である。
【0080】
また、(C'_1,C'_2)=(Z^{b・r_1},Z^{M_1}・Z^{r_1}),(C'_3,C'_4)=(Z^{b・r_2},Z^{M_2}・Z^{r_2})とする。
【0081】
このとき、(C'_5,C'_6)=(C'_1・C'_3,C'_2・C'_4)=(Z^{b(r_1+r_2)},Z^{M_1+M_2}・Z^{r_1+r_2})となり、(C'_5,C'_6)は、M_1+M_2の暗号文となる。この暗号文はユーザBの秘密鍵sk_Bを用いて復号可能である。
【0082】
次に、本実施形態における暗号化統計処理システムの具体的な処理の流れについて説明する。本実施形態の暗号化統計処理システムは、サービス提供者鍵生成処理、データ登録処理、プロキシ鍵生成処理、統計情報計算処理および復号処理を実行する。
【0083】
本例では、統計情報計算処理として、暗号化したままデータの総和を計算する方法を示すが、同様の流れで総積、平均値、分散値の計算が可能である。また、サービス提供装置は1以上の任意の整数N個存在しても構わないが、説明を簡略化するため、3個のときを例として説明する。以下、各処理の流れを説明する。
【0084】
まず、サービス提供者鍵生成処理について説明する。
図11は、サービス提供者鍵生成処理の一例を示す流れ図である。
【0085】
図11に示すように、サービス提供装置60-iは、システムパラメータ(q,e,g,Z)を入力として、公開鍵pk_i=y_i=g^{x_i}と、秘密鍵sk_i=x_iとを生成する(
図11のステップKEYGEN1)。
【0086】
次いで、サービス提供装置60-iは、公開鍵pk_iを公開し、秘密鍵sk_iを保管する(
図11のステップKEYGEN2)。
【0087】
なお、ステップKEYGEN1およびKEYGEN2の動作は、サービス提供装置60-1,60-2,60-3によって、それぞれ独立して実行される。
【0088】
次に、データ登録処理について説明する。
図12は、データ登録処理の一例を示す流れ図である。
【0089】
図12に示すように、データ登録装置10は、公開鍵pk_iおよび登録したいデータMを入力として、上記参考文献Aに記載された方式で暗号化処理を行い、暗号文E(pk_i,M)=(y_i^{r},Z^M・Z^{r})を生成する(ステップDREG1)。
【0090】
次に、データ登録装置10は、暗号文E(pk_i,M)をデータベース20-iに送信し、記憶させる(ステップDREG2)。以降データベース20-1,20-2,20-3には、それぞれ公開鍵pk_1,pk_2,pk_3を用いて暗号化されたデータが1つ以上記憶されているものとする。
【0091】
次に、プロキシ鍵生成処理について説明する。
図13は、プロキシ鍵生成処理の一例を示す流れ図である。
【0092】
図13に示すように、サービス提供装置60-1〜60-3は、それぞれ公開鍵pk_1〜pk_3、秘密鍵sk_1〜sk_3を入力として、対話的に全体公開鍵gpk=g^{x_1・x_2・x_3}を生成する(ステップRKGEN1)。ここで、対話的にとは、サービス提供装置60-1から順番に、以下の処理を実行することである。
【0093】
サービス提供装置60-1は、gpk=g^{x_1}を計算し、サービス提供装置60-2に送信する。
【0094】
次に、サービス提供装置60-2は、gpk=gpk^{x_2}=g^{x_1・x_2}を計算し、サービス提供装置60-3に送信する。
【0095】
次に、サービス提供装置60-3は、gpk=gpk^{x_3}=g^{x_1・x_2・x_3}を計算し、gpkを公開する。
【0096】
なお、より安全性を高めるために、以下のように処理を実行するようにしてもよい。
【0097】
サービス提供装置60-1は、gpk=g^{r_1x_1}を計算し、サービス提供装置60-2に送信する。
【0098】
次に、サービス提供装置60-2は、gpk=gpk^{r_2x_2}=g^{r_1x_1・r_2x_2}を計算し、サービス提供装置60-3に送信する。
【0099】
次に、サービス提供装置60-3は、gpk=gpk^{r_3x_3}=g^{r_1x_1・r_2x_2・r_3x_3}を計算し、サービス提供装置60-1に送信する。
【0100】
次に、サービス提供装置60-1は、gpk=gpk^{1/r_1}=g^{x_1・r_2x_2・r_3x_3}を計算し、サービス提供装置60-2に送信する。
【0101】
次に、サービス提供装置60-2は、gpk=gpk^{1/r_2}=g^{x_1・x_2・r_3x_3}を計算し、サービス提供装置60-3に送信する。
【0102】
次に、サービス提供装置60-3は、gpk=gpk^{1/r_3}=g^{x_1・x_2・x_3}を計算し、gpkを公開する。
【0103】
次いで、全体公開鍵gpkを生成すると、サービス提供装置60-iは、gpkと秘密鍵sk_iとを入力として、rk_{i}=gpk^{1/x_i}を計算し、プロキシ鍵を生成する。すなわち、rk_{1}=g^{x_2・x_3},rk_{2}=g^{x_1・x_3},rk_{3}=g^{x_1・x_2}をそれぞれ計算する。そして、サービス提供装置60-iは、プロキシ鍵rk_iをプロキシ装置30-iに送信する(ステップRKGEN2)。
【0104】
次に、統計情報計算処理について説明する。
図14は、統計情報計算処理の一例を示す流れ図である。
【0105】
図14に示すように、プロキシ装置30-iは、プロキシ鍵rk_iと、データベースiに記憶された暗号文の集合{E(pk_i,M)}とを入力として受け取る(ステップS301)。
【0106】
ここでM_iは、データベースiに記憶された暗号文の集合{E(pk_1,M)}の全平文に対して、総和を計算した結果を意味する記号とする。また、R_iは、データベースiに記憶された暗号文の集合{E(pk_1,M)}を生成する際に使用された乱数の総和を計算した結果を意味する記号とする。
【0107】
まずプロキシ装置30-iは、データベースiに記憶された暗号文の集合{E(pk_i,M)}を入力として、暗号化したまま平文の総和を計算する。
【0108】
すなわち、{E(pk_i,M)}={(C_1,C_2),(C_3,C_4)}、(C_1,C_2)=(y_i^{r_1},Z^{M_1}・Z^{r_1}),(C_3,C_4)=(y_i^{r_2},Z^{M_2}・Z^{r_2})としたとき、(C_5,C_6)=(C_1・C_3,C_2・C_4)=(y_i^{r_1+r_2},Z^{M_1+M_2}・Z^{r_1+r_2})を計算する。
【0109】
次に、プロキシ装置30-iは、(C_5,C_6)とプロキシ鍵rk_iとを入力として、上記参考文献Aに記載された方式での再暗号化を行う。すなわち、(C'_5,C'_6)=(e(C_5,rk_i),C_6)=(Z^{x_1x_2x_3・R_i},Z^{M_i}・Z^{R_i}を計算する。そして、プロキシ装置30-iは、計算結果(すなわち、暗号化部分統計データ)を統合データ生成装置40に送信する(ステップS302)。
【0110】
次に、統合データ生成装置40は、プロキシ装置30-1〜30-3から、暗号化部分統計データE(gpk,M_1)〜E(gpk,M_3)を受信する。ここで説明のために、E(gpk,M_1)=(c_1,c_2),E(gpk,M_2)=(c_3,c_4),E(gpk,M_3)=(c_5,c_6)とする。
【0111】
統合データ生成装置40は、E(gpk,si)=(c_1・c_3・c_5,c_2・c_4・c_6)=(Z^{x_1x_2x_3(R_1+R_2+R_3)},Z^{M_1+M_2+M_3}・Z^{R_1+R_2+R_3})を計算する(ステップS303)。ここでsiは、M_1からM_3の総和を意味する記号とする。その後、統合データ生成装置40は、統合データ記憶装置50にE(gpk,si)を送信する。
【0112】
次に、復号処理について説明する。
図15は、復号処理の一例を示す流れ図である。
【0113】
図15に示すように、サービス提供装置60-1〜60-3は、それぞれ秘密鍵sk_1および暗号化統計データE(gpk,si),秘密鍵sk_2および暗号化統計データE(gpk,si)=(C_1,C_2),秘密鍵sk_3および暗号化統計データE(gpk,si)を受信する(ステップS401)。
【0114】
次いで、サービス提供装置60-1から順に以下の処理を行う(ステップS402)。
【0115】
サービス提供装置60-1は、(C'_1,C'_2)=(C_1^{1/x_1}=Z^{x_2x_3(R_1+R_2+R_3)},C_2)を計算し、サービス提供装置60-2に送信する。
【0116】
次に、サービス提供装置60-2は、(C''_1,C''_2)=(C'_1^{1/x_2}=Z^{x_3(R_1+R_2+R_3)},C'_2)を計算し、サービス提供装置60-3に送信する。
【0117】
次に、サービス提供装置60-3は、(C'''_1,C'''_2)=(C''_1^{1/x_3}=Z^{(R_1+R_2+R_3)},C''_2)を計算する。
【0118】
次いで、サービス提供装置60-iは、C'''_2/C'''_1=Z^{M_1+M_2+M_3}を計算する。その後、サービス提供装置60-iは、Z^{M_1+M_2+M_3}よりM_1+M_2+M_3(すなわち、復号結果)を探索する。
【0119】
以上のように、本実施形態では、複数のサーバの公開鍵および秘密鍵を用いて対話的に全体公開鍵を生成し、生成した全体公開鍵と秘密鍵とに基づいて個々のプロキシ鍵を生成する。そして、プロキシ鍵と公開鍵で暗号化されたデータとから、暗号化統計データを生成する。従って、異なる公開鍵を用いて暗号化された暗号データに対して、暗号化したまま統計処理を行うことができる。
【0120】
なお、本実施形態では、プロキシ装置30-iが、データベースiに記憶された暗号文の集合{E(pk_i,M)}を入力として、暗号化したまま平文の総和を計算しているが、この処理は他の装置で行われることとしてもよく、あらかじめこの処理の結果の暗号文がデータベースiに含まれるようにしてもよい。
【0121】
例えば、データ登録装置によってデータベースに暗号データが登録されるたびに、データベースにおいて暗号化したまま平文の和を計算する処理を行うことも可能である。また、本実施形態では、例として、参考文献Aに記載されたプロキシ再暗号化方式を用いているが、そのほかのプロキシ再暗号化方式を用いてもよい。例えば、エルガマル暗号や楕円エルガマル暗号を用いてもよい。
【0122】
また、データベースiに記憶された暗号文の集合{E(pk_i,M)}を入力として、暗号化したまま平文の総和を計算せずに、すべての暗号データを再暗号化し、再暗号化後に統合データ生成装置40において暗号化したまま平文の総和を計算するようにしてもよい。
【0123】
また、本実施形態では、各データベースには1つの公開鍵で暗号化された暗号データの集合が記憶されていることとしたが、例えばデータベースが1つで、異なる公開鍵で暗号化された暗号データが記憶されていることとしてもよい。
【0124】
また、本実施形態では、gpkの計算、暗号化統計データの復号処理に、複数のサービス提供装置が通信を行いながら処理する方法を記載したが、他のマルチパーティ計算方法を利用しても構わない。
【0125】
本実施形態では、プロキシ装置30-1はプロキシ鍵rk_1=g^{x_2・x3}を保持するが、これに加えてx_1,x_2が分かったとしても、x_3を求められないことが数学的に証明可能である。また、暗号化統計データを復号するためには、x_1,x_2,x_3のすべての鍵が必要である。したがって、プロキシ装置の管理者が悪意を持ち、かつ、N人中N-1人のサービス提供者と結託した場合であっても、残る1人のサービス提供者の秘密鍵が漏れないかぎり、復号を行うことができない。
【0126】
以上のように、本発明は、複数サーバに対応可能な暗号化統計処理システムに関する。特に、異なる公開鍵を用いて暗号化された暗号データに対して、暗号化したまま統計処理を行う暗号化統計処理システムに関する。また、本発明は、上記に示した実施例に限定されるものではなく、本発明の技術思想の範囲内において、実施例を適宜変更して実施可能である。
【0127】
次に、本発明による暗号化統計処理システムの最小構成について説明する。
図16は、暗号化統計処理システムの最小の構成例を示すブロック図である。
図16に示すように、暗号化統計処理システムは、最小の構成要素として、複数のサービス提供装置60と、データ登録装置10と、データベース20と、複数のプロキシ装置30と、統合データ生成装置40と、統合データ記憶装置50とを備えている。
【0128】
また、サービス提供装置60は、データを暗号化するためのサービスの公開鍵および公開鍵に対応した秘密鍵を生成する鍵生成手段61と、プロキシ鍵生成手段62とを含む。データ登録装置10は、サービスの公開鍵および所定のデータを入力として、暗号データを生成しデータベースに記憶させる暗号データ生成手段11を含む。プロキシ装置30は、暗号化部分統計データ生成手段31を含む。統合データ生成装置40は、暗号化統計データ生成手段41を含む。
【0129】
図16に示す最小構成の暗号化統計処理システムでは、プロキシ鍵生成手段62は、サービスの公開鍵および秘密鍵を入力として、プロキシ鍵を生成する。次いで、暗号化部分統計データ生成手段31は、データベース20に記憶された暗号データに対して、プロキシ鍵生成手段62によって生成されたプロキシ鍵を入力として、暗号化部分統計データを生成する。次いで、暗号化統計データ生成手段41は、暗号化部分統計データを各プロキシ装置30から入力し、暗号化統計データを生成する。
【0130】
従って、最小構成の暗号化統計処理システムによれば、異なる公開鍵を用いて暗号化された暗号データに対して、暗号化したまま統計処理を行うことができる。
【0131】
なお、本実施形態では、以下の(1)〜(5)に示すような暗号化統計処理システムの特徴的構成が示されている。
【0132】
(1)暗号化統計処理システムは、複数のサービス提供装置(例えば、サービス提供装置60-1)と、データ登録装置(例えば、データ登録装置10)と、データベース(例えば、データベース20)と、複数のプロキシ装置(例えば、プロキシ装置30-1)と、統合データ生成装置(例えば、統合データ生成装置40)と、統合データ記憶装置(例えば、統合データ記憶装置50)とを備え、サービス提供装置は、データを暗号化するためのサービスの公開鍵および公開鍵に対応した秘密鍵を生成する鍵生成手段(例えば、鍵生成部60-i-1)と、サービスの公開鍵および秘密鍵を入力として、プロキシ鍵を生成するプロキシ鍵生成手段(プロキシ鍵生成部60-i-3)とを含み、データ登録装置は、サービスの公開鍵および所定のデータを入力として、暗号データを生成する暗号データ生成手段(例えば、暗号データ生成部10-1によって実現される)を含み、データベースは、暗号データを記憶し、プロキシ装置は、データベースに記憶された暗号データに対して、プロキシ鍵生成手段によって生成されたプロキシ鍵を入力として、暗号化部分統計データを生成する暗号化部分統計データ生成手段(例えば、暗号データ変換部30-i-1によって実現される)を含み、統合データ生成装置は、暗号化部分統計データを各プロキシ装置から入力し、暗号化統計データを生成する暗号化統計データ生成手段(例えば、統合データ生成部40-1によって実現される)を含み、統合データ記憶装置は、暗号化統計データを記憶することを特徴とする。
【0133】
(2)暗号化統計処理システムにおいて、プロキシ鍵生成手段は、各サービス提供装置がそれぞれの秘密鍵を入力とし、各サービス提供装置と互いに通信を行うことによって、各サービス提供装置の秘密鍵に対応するプロキシ鍵を生成するように構成されていてもよい。
【0134】
(3)暗号化統計処理システムにおいて、サービス提供装置は、統合データ記憶装置に記憶された暗号化統計データと、各サービス提供装置の秘密鍵とを入力として、各サービス提供装置と互いに通信を行うことによって、暗号化統計データの復号を行い、統計情報を生成する統計情報生成手段(例えば、部分復号部60-i-4によって実現される)を含むように構成されていてもよい。
【0135】
(4)暗号化統計処理システムにおいて、プロキシ鍵生成手段は、素数位数qを持つ群G,G_T、e()をGの元2つを入力としてG_Tの群への写像であるペアリング関数、gを群Gの生成元、q,e,gおよびZ=e(g,g)をシステムパラメータとし、暗号データを記憶するデータベースの数を1以上の整数N、a_iをサービスiの秘密鍵、y_i=g^{a_i}を公開鍵としたとき、サービスiに対応するプロキシ鍵rk_iとして、g^{a_1a_2…a_N/a_i}を含むプロキシ鍵を生成するように構成されていてもよい。
【0136】
(5)暗号化統計処理システムにおいて、暗号データ生成手段は、メッセージをM、1以上q未満の乱数をrとしたとき、サービスiに対応する暗号データとして、(y_i^r,M・Z^r)を含む暗号データを生成し、暗号化統計データ生成手段は、統計情報を計算する対象となる暗号データを生成するために使用された乱数の総和をRとし、gpk=g^{a_1a_2…a_N}、統計情報をSとしたとき、(e(gpk,g)^R,S・Z^R)を含む暗号化統計データを生成するように構成されていてもよい。
【0137】
以上、実施形態及び実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【0138】
この出願は、2011年6月10日に出願された日本特許出願2011−130489を基礎とする優先権を主張し、その開示の全てをここに取り込む。