(57)【特許請求の範囲】
【請求項１】
集計装置と、１個以上の集計結果復号装置とを備えた秘匿計算システムであって、
前記集計装置は、
前記各集計結果復号装置により個別に生成された乱数に基づいて複数個の集計対象データが個別に暗号化されてなる複数個の秘匿データを受信する秘匿データ受信手段と、
前記受信された各秘匿データを記憶する秘匿データ記憶手段と、
前記秘匿データ記憶手段内の各秘匿データを集計処理して秘匿集計結果を作成する集計手段と、
前記秘匿集計結果を前記各集計結果復号装置に送信する秘匿集計結果送信手段と、
前記集計処理に用いた集計方法を示す集計方法名を前記各集計結果復号装置に送信する集計方法名送信手段と
を備え、
前記各集計結果復号装置は、
前記乱数を生成する乱数生成手段と、
前記生成された乱数を用いて前記集計対象データを暗号化することにより、前記秘匿データを得る暗号化手段と、
前記得られた秘匿データを前記集計装置に送信する秘匿データ送信手段と、
予め複数の集計方法を個別に示す複数の集計方法名と、当該各集計方法名が示す集計方法に個別に応じた複数の復号方法とを個別に関連付けて記憶した復号方法記憶手段と、
前記送信された秘匿集計結果を受信する秘匿集計結果受信手段と、
前記送信された集計方法名を受信する集計方法名受信手段と、
前記受信した集計方法名に基づいて、前記復号方法記憶手段から復号方法を選択する復号方法選択手段と、
前記選択した復号方法を実行して、前記受信した秘匿集計結果を復号することにより、前記集計対象データの集計結果を得る集計結果復号手段と
を備えたことを特徴とする秘匿計算システム。
【請求項２】
１個以上の集計結果復号装置に通信可能な集計装置であって、
前記各集計結果復号装置により個別に生成された乱数に基づいて複数個の集計対象データが個別に暗号化されてなる複数個の秘匿データを受信する秘匿データ受信手段と、
前記受信された各秘匿データを記憶する秘匿データ記憶手段と、
前記秘匿データ記憶手段内の各秘匿データを集計処理して秘匿集計結果を作成する集計手段と、
前記秘匿集計結果を前記各集計結果復号装置に送信する秘匿集計結果送信手段と、
前記集計処理の方法を示す集計方法名を前記各集計結果復号装置に送信する集計方法名送信手段と
を備え、
前記各集計結果復号装置は、
前記乱数を生成し、当該乱数を用いて前記集計対象データを暗号化して前記秘匿データを得ると、当該得られた秘匿データを前記集計装置に送信し、前記集計装置から送信された秘匿集計結果及び集計方法名を受信し、前記受信した集計方法名に基づいて復号方法を選択し、前記選択した復号方法を実行して、前記受信した秘匿集計結果を復号することにより、前記集計対象データの集計結果を得ることを特徴とする集計装置。
【請求項３】
１個以上の集計結果復号装置により個別に生成された乱数に基づいて複数個の集計対象データが個別に暗号化されてなる複数個の秘匿データを前記各集計結果復号装置から受信すると共に、前記各秘匿データを集計処理した結果を示す秘匿集計結果及び前記集計処理に用いた集計方法を示す集計方法名を前記各集計結果復号装置に送信する集計装置に通信可能で復号方法記憶手段を備えた前記各集計結果復号装置に個別に用いられる集計結果復号プログラムであって、
前記集計結果復号装置を、
予め複数の集計方法を個別に示す複数の集計方法名と、当該各集計方法名が示す集計方法に個別に応じた複数の復号方法とを個別に関連付けて前記復号方法記憶手段に書き込む書込手段、
前記送信された秘匿集計結果を受信する秘匿集計結果受信手段、
前記送信された集計方法名を受信する集計方法名受信手段、
前記受信した集計方法名に基づいて、前記復号方法記憶手段から復号方法を選択する復号方法選択手段、
前記選択した復号方法を実行して、前記受信した秘匿集計結果を復号することにより、前記集計対象データの集計結果を得る集計結果復号手段、
として機能させるための集計結果復号プログラム。
【請求項４】
請求項３に記載の集計結果復号プログラムにおいて、
前記集計結果復号装置を、更に
前記１個以上の集計結果復号装置の個数をｎ個としたとき、（ｎ，ｎ）しきい値法により、前記乱数を秘密分散してｎ個の分散値を作成する分散値作成手段、
前記作成した分散値のうち、１個の分散値を保持し、残りのｎ−１個の分散値を他の集計結果復号装置に送信する分散値送信手段、
前記他の集計結果復号装置により個別に作成されたｎ−１個の分散値を当該他の集計結果復号装置から個別に受信する分散値受信手段、
前記保持した１個の分散値と、前記受信したｎ−１個の分散値とを用い、前記選択した復号方法に応じた集計方法に基づいて１個の分散情報を作成する分散情報作成手段、
前記作成した分散情報を他の集計結果復号装置に送信する分散情報送信手段、
前記他の集計結果復号装置により個別に作成されたｎ−１個の分散情報を当該他の集計結果復号装置から個別に受信する分散情報受信手段、
前記作成した１個の分散情報と、前記受信したｎ−１個の分散情報とを用い、前記（ｎ，ｎ）しきい値法による復元処理を実行して、前記秘匿集計結果のうちの乱数の集計結果に相当する乱数集計データを復元する乱数集計データ復元手段
として機能させ、
前記集計結果復号手段は、
前記作成した乱数集計データと、前記受信した秘匿集計結果とを用い、前記選択した復号方法に応じた集計方法に基づいて、前記集計対象データの集計結果を算出する集計結果算出手段と
を含んでいる集計結果復号プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、秘匿計算システム、集計装置及び集計結果復号プログラムに関する。
【背景技術】
【０００２】
近年、巨大なリソースやプラットフォーム、アプリケーションなどをサービスとして提供するビジネス形態が出現してきている。ここでいうリソースとは、ＣＰＵ能力やメモリ、ハードディスクなどの計算機資源を指す。
【０００３】
この種のビジネス形態では、通常、複数のユーザ企業が同一のサービスを共有する。そこで、各ユーザ企業が有する情報を統合し、統計やデータマイニングを施す方法が注目されてきている。ここでデータマイニングとは、種々の統計的な解析手法を用い、大量の情報から有用な情報や、情報間の関連性を見つけ出す手法を指す。
【０００４】
一方、異なるユーザ企業間でサービスを共有することに伴い、自社の情報が他社に漏洩する可能性が指摘されている。例えば、統計やデータマイニングを施す際に、自社の情報をそのまま開示すると、自社の情報が他社に漏洩してしまう。また、統計やデータマイニングを施すサービス提供企業にも自社の情報が開示されるため、サービス提供企業側の過失で自社の情報が漏洩する可能性もある。
【０００５】
また、自社の情報に統計やデータマイニングを施した結果が企業活動を行う上での戦略的価値を持つ場合もあり、これらの情報の漏洩にも注意を払う必要がある。
【０００６】
そこで、自社の情報を秘匿しつつ、統計やデータマイニングを施した結果を得るための技術が提案されている。これらの提案では、秘匿したい数値を暗号化し、暗号化した状態で演算を実行する方法が述べられている。このように、秘匿した状態で演算することを秘匿計算と呼ぶ。
【０００７】
第１の提案方法は、データ集計処理において、各データに乱数を作用させて撹乱し、各々の撹乱データを集計すると撹乱が消去されて、所望の集計結果が得られる方式である。
【０００８】
第２の提案方法は、２次元の表データの集計処理において、各表内の各データに乱数を作用させて撹乱し、各々の撹乱データを集計すると撹乱が消去されて、所望の集計結果が得られる方式である。
【０００９】
第３の提案方法は、完全準同型暗号と呼ばれる方式である。暗号化前のデータ同士に任意の演算を行う場合、暗号化前のデータを暗号化して得られた暗号化データ同士にその演算に対応する演算を行い、演算結果を復号すると所望の結果（暗号化前のデータ同士の演算結果）となっている方式である。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００６−１８０５３号公報
【非特許文献】
【００１１】
【非特許文献１】牛田他、“ゲートウェイによるクラウド間のデータ秘匿集計技術”、SCIS 2011
【非特許文献２】C. Gentry, “Fully homomorphic encryption using ideal lattices”, STOC ’09, ACM, pp.169-178, 2009
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、以上のような提案方法では、以下のような不都合がある。
【００１３】
第１の提案方法は、集計すると撹乱の効果が消去されるため、集計結果が集計装置に秘匿されていない。従って、集計結果も秘匿したい場合には利用できないという不都合がある。
【００１４】
第２の提案方法は、第１の提案方法の不都合と同じ不都合に加え、データを撹乱するための乱数の生成、配布に信頼できる第三者が必要である。この信頼できる第三者はデータの撹乱を消去するための情報を保持しているため、自社の情報や集計結果が第三者に知られてしまうという不都合がある。
【００１５】
第３の提案方法は、完全準同型暗号の処理速度が従来の暗号技術と比較して桁違いに遅く、とても実用に耐えないという不都合がある。
【００１６】
本発明が解決しようとする課題は、完全準同型暗号及び信頼できる第三者を利用せずに、集計対象データ及びその集計結果を秘匿した状態で集計装置に集計処理を実行させることが可能な秘匿計算システム、集計装置及び集計結果復号プログラムを提供することである。
【課題を解決するための手段】
【００１７】
実施形態の秘匿計算システムは、集計装置と、１個以上の集計結果復号装置とを備えている。
【００１８】
前記集計装置は、秘匿データ受信手段、秘匿データ記憶手段、集計手段、秘匿集計結果送信手段及び集計方法名送信手段を備えている。
【００１９】
前記秘匿データ受信手段は、前記各集計結果復号装置により個別に生成された乱数に基づいて複数個の集計対象データが個別に暗号化されてなる複数個の秘匿データを受信する。
【００２０】
前記秘匿データ記憶手段は、前記受信された各秘匿データを記憶する。
【００２１】
前記集計手段は、前記秘匿データ記憶手段内の各秘匿データを集計処理して秘匿集計結果を作成する。
【００２２】
前記秘匿集計結果送信手段は、前記秘匿集計結果を前記各集計結果復号装置に送信する。
【００２３】
前記集計方法名送信手段は、前記集計処理に用いた集計方法を示す集計方法名を前記各集計結果復号装置に送信する。
【００２４】
前記各集計結果復号装置は、乱数生成手段、暗号化手段、秘匿データ送信手段、復号方法記憶手段、秘匿集計結果受信手段、集計方法名受信手段、復号方法選択手段及び集計結果復号手段を備えている。
【００２５】
前記乱数生成手段は、乱数を生成する。
【００２６】
前記暗号化手段は、前記生成された乱数を用いて前記集計対象データを暗号化することにより、前記秘匿データを得る。
【００２７】
前記秘匿データ送信手段は、前記得られた秘匿データを前記集計装置に送信する。
【００２８】
前記復号方法記憶手段は、予め複数の集計方法を個別に示す複数の集計方法名と、当該各集計方法名が示す集計方法に個別に応じた複数の復号方法とを個別に関連付けて記憶している。
【００２９】
前記秘匿集計結果受信手段は、前記送信された秘匿集計結果を受信する。
【００３０】
前記集計方法名受信手段は、前記送信された集計方法名を受信する。
【００３１】
前記復号方法選択手段は、前記受信した集計方法名に基づいて、前記復号方法記憶手段から復号方法を選択する。
【００３２】
前記集計結果復号手段は、前記選択した復号方法を実行して、前記受信した秘匿集計結果を復号することにより、前記集計対象データの集計結果を得る。
【図面の簡単な説明】
【００３３】
【図１】一実施形態に係る秘匿計算システムの構成を示す模式図である。
【図２】同実施形態における集計装置の構成を示す模式図である。
【図３】同実施形態における集計結果復号装置の構成を示す模式図である。
【図４】同実施形態における動作を説明するための模式図である。
【図５】同実施形態における動作を説明するための模式図である。
【図６】同実施形態における復号演算の枠組みを示す模式図である。
【発明を実施するための形態】
【００３４】
以下、一実施形態について図面を用いて説明する。なお、以下の各装置は、それぞれハードウェア構成、又はハードウェア資源とソフトウェアとの組合せ構成のいずれでも実施可能となっている。組合せ構成のソフトウェアとしては、予めネットワーク又は記憶媒体から対応する装置のコンピュータにインストールされ、対応する装置の機能を実現させるためのプログラムが用いられる。
【００３５】
＜一実施形態＞
図１は一実施形態に係る秘匿計算システムの構成を示す模式図である。この秘匿計算システムは、集計装置１００と３個の集計結果復号装置１２０，１３０，１４０とがネットワーク１１０を介して接続されている。なお、集計結果復号装置１２０，１３０，１４０は、３個に限らず、１個以上の任意の個数が使用可能となっている。
【００３６】
ここで集計装置２００は、図２に示すように、データ受信部２０１、集計部２０２、記憶部２０３、集計方法記憶部２０４、集計方法送信部２０５及び集計結果送信部２０６を備えている。
【００３７】
ここで、データ受信部２０１は、各集計結果復号装置１２０，１３０，１４０により個別に生成された乱数(r1, r2, r3)に基づいて複数個の集計対象データ(p1, p2, p3)が個別に暗号化されてなる複数個の秘匿データ(c1, c2, c3)を受信する秘匿データ受信機能をもっている。
【００３８】
集計部２０２は、記憶部２０３内の各秘匿データ(c1, c2, c3)を集計処理（例、総和計算）して秘匿集計結果(d)を作成する集計機能をもっている。
【００３９】
記憶部２０３は、各部２０１，２０２，２０５，２０６から読出／書込可能なメモリであり、例えば、データ受信部２０１により受信された各秘匿データ(c1, c2, c3)を記憶する。
【００４０】
集計方法記憶部２０４は、各部２０１，２０２，２０５，２０６から読出／書込可能なメモリであり、例えば、集計部２０２による集計処理に用いた方法を示す集計方法名を記憶する。ここで、集計方法名としては、例えば、「総和計算」、「積の計算」、「内積計算」、「逆元計算」及び「大小比較」、等といったマルチパーティ計算で実行可能な集計方法名が使用可能となっている。
【００４１】
集計方法送信部２０５は、集計方法記憶部２０４から集計方法名を読み出す機能と、集計部２０２による集計処理に用いた方法を示す集計方法名を各集計結果復号装置１２０，１３０，１４０に送信する集計方法名送信機能をもっている。なお、集計方法送信部２０５は、集計方法記憶部２０４から集計方法名を読み出す機能を省略し、集計部２０２から集計処理に用いた方法を示す集計方法名を受けると、この集計方法名を各集計結果復号装置１２０，１３０，１４０に送信する構成としてもよい。
【００４２】
集計結果送信部２０６は、集計部２０２により作成された秘匿集計結果(d)を各集計結果復号装置１２０，１３０，１４０に送信する秘匿集計結果送信機能をもっている。
【００４３】
続いて、３個の集計結果復号装置１２０，１３０，１４０の構成を説明する。各集計結果復号装置１２０，１３０，１４０は、例えば、集計結果復号装置の機能を実現させるためのプログラム（集計結果復号プログラム）が予め収集装置１００等からユーザのコンピュータに送信され、このユーザのコンピュータにインストールされて実現される。従って、各集計結果復号装置１２０，１３０，１４０が互いに同一構成となるため、ここでは、集計結果復号装置１２０を代表例に挙げて説明する。
【００４４】
集計結果復号装置１２０は、集計方法受信部３０１、集計結果受信部３０２、復号用パラメータ受信部３０３、復号用パラメータ計算部３０４、記憶部３０５、復号方法記憶部３０６、復号部３０７、復号用パラメータ送信部３０８、乱数生成部３０９、暗号化部３１０及び秘匿データ送信部３１１を備えている。
【００４５】
集計方法受信部３０１は、集計装置１００から送信された集計方法名を受信する集計方法名受信機能をもっている。
【００４６】
集計結果受信部３０２は、集計装置１００から送信された秘匿集計結果(d)を受信する秘匿集計結果受信機能をもっている。
【００４７】
復号用パラメータ受信部３０３は、他の集計結果復号装置１３０，１４０により個別に作成されたｎ−１個の分散値(r21, r31)を当該他の集計結果復号装置１３０，１４０から個別に受信する分散値受信機能と、他の集計結果復号装置１３０，１４０により個別に作成されたｎ−１個の分散情報(R2, R3)を当該他の集計結果復号装置１３０，１４０から個別に受信する分散情報受信機能とをもっている。
【００４８】
復号用パラメータ計算部３０４は、集計方法受信部３０１により受信した集計方法名に基づいて、復号方法記憶部３０６から復号方法を選択する復号方法選択機能と、
１個以上の集計結果復号装置の個数をｎ個としたとき、（ｎ，ｎ）しきい値法により、乱数(r1)を秘密分散してｎ個の分散値(r11, r12, r13)を作成する分散値作成機能と、記憶部３０５に保持した１個の分散値(r11)と、復号用パラメータ受信部３０３により受信したｎ−１個の分散値(r21, r31)とを用い、選択した復号方法に応じた集計方法に基づいて１個の分散情報(R1)を作成する分散情報作成機能と、当該作成した１個の分散情報(R1)と、復号用パラメータ受信部３０３により受信したｎ−１個の分散情報(R2, R3)とを用い、（ｎ，ｎ）しきい値法による復元処理を実行して、秘匿集計結果のうちの乱数の集計結果に相当する乱数集計データ(例えば、r1 + r2 + r3)を復元する乱数集計データ復元機能とをもっている。
【００４９】
記憶部３０５は、各部３０２〜３０４，３０７〜３１１から読出／書込可能なメモリであり、例えば、各部３０２〜３０４，３０７〜３１１に対する入出力データや処理途中のデータ等が適宜、記憶される。
【００５０】
復号方法記憶部３０６は、復号用パラメータ計算部３０４及び復号部３０７から読出可能なメモリであり、例えば、予め複数の集計方法を個別に示す複数の集計方法名と、当該各集計方法名が示す集計方法に個別に応じた複数の復号方法とを個別に関連付けて記憶する。ここで、集計方法名としては、例えば、「総和計算」、「積の計算」、「内積計算」、「逆元計算」及び「大小比較」、等といったマルチパーティ計算で実行可能な集計方法名が使用可能となっている。
【００５１】
復号部３０７は、復号用パラメータ計算部３０４により選択した復号方法を実行して、集計結果受信部３０２により受信した秘匿集計結果(d)を復号することにより、集計対象データの集計結果(例えば、p1 + p2 + p3)を得る集計結果復号機能をもっている。ここで、復号部３０７の集計結果復号機能は、復号用パラメータ計算部３０４により作成した乱数集計データ(例えば、r1 + r2 + r3)と、集計結果受信部３０２により受信した秘匿集計結果(d)とを用い、復号用パラメータ計算部３０４により選択した復号方法に応じた集計方法に基づいて、集計対象データの集計結果(例えば、p1 + p2 + p3)を（例えば、d - (r1 + r2 + r3)により）算出する集計結果算出機能を含んでいる（カッコ内の例示については、集計対象データの集計結果はp1 + p2 + p3であるが、それを求める演算式がd - (r1 + r2 + r3)となっている、という意味である）。また、復号とは、秘匿化の状態を解除することを意味する。
【００５２】
復号用パラメータ送信部３０８は、復号用パラメータ計算部３０４により作成した分散値(r11, r12, r13)のうち、１個の分散値(r11)を保持し、残りのｎ−１個の分散値(r12, r13)を他の集計結果復号装置１３０，１４０に送信する分散値送信機能と、復号用パラメータ計算部３０４により作成した分散情報(R1)を他の集計結果復号装置１３０，１４０に送信する分散情報送信機能とをもっている。
【００５３】
乱数生成部３０９は、乱数(r1)を生成する乱数生成機能をもっている。なお、生成された乱数(r1)は、記憶部３０５に書込まれてもよく、暗号化部３１０に送出されてもよい。
【００５４】
暗号化部３１０は、乱数生成部３０９により生成された乱数(r1)を用いて集計対象データ(p1)を暗号化することにより、秘匿データ(c1)を得る暗号化機能をもっている。用いる乱数(r1)は、記憶部３０５から読み出してもよく、乱数生成部３０９から受け取ってもよい。得られた秘匿データ(c1)は、記憶部３０５に書込まれてもよく、秘匿データ送信部３１１に送出されてもよい。
【００５５】
秘匿データ送信部３１１は、暗号化部３１０により得られた秘匿データ(c1)を集計装置１００に送信する秘匿データ送信機能をもっている。送信する秘匿データ(c1)は、記憶部３０５から読み出してもよく、暗号化部３１０から受け取ってもよい。
【００５６】
次に、以上のように構成された秘匿計算システムの動作を図４及び図５を用いて説明する。
【００５７】
図４は集計処理が総和計算の場合の秘匿化方法を示した模式図である。
【００５８】
集計結果復号装置１２０では、乱数生成部３０９で乱数r1を生成し、記憶部３０５に格納する（Ｓ１）。また秘匿したいデータp1に対してc1 = p1 + r1を計算し（Ｓ２）、秘匿データc1を集計装置１００の記憶部２０３に格納する（Ｓ３）。秘匿データc1はp1に乱数が加算されているため、p1を秘匿化したデータとなっている。
【００５９】
集計結果復号装置１３０は、同様に、乱数r2を生成し、集計結果復号装置１３０の記憶部３０５に格納する（Ｓ４）。また秘匿したい集計対象データp2に対してc2 = p2 + r2を計算し（Ｓ５）、秘匿データc2を集計装置１００の記憶部２０３に格納する（Ｓ６）。
【００６０】
集計結果復号装置１４０は、同様に、乱数r3を生成し、集計結果復号装置１４０の記憶部３０５に格納する（Ｓ７）。また秘匿したい集計対象データp3に対してc3 = p3 + r3を計算し（Ｓ８）、秘匿データc3を集計装置１００の記憶部２０３に格納する（Ｓ９）。
【００６１】
集計装置１００は、各集計結果復号装置１２０，１３０，１４０から秘匿データc1, c2, c3をデータ受信部２０１を介して受信し、記憶部２０３に格納する（Ｓ３，Ｓ６，Ｓ９）。集計装置１００は、記憶部２０３に格納されているc1, c2, c3に対して集計部２０２で集計処理を実行する（Ｓ１０）。
【００６２】
ここで、集計処理はデータの総和計算であり、集計方法記憶部２０４から総和計算を行う機能を図示しないメモリにロードして行う。行われる計算はd = c1 + c2 + c3である。秘匿集計結果dは記憶部２０３に格納される。
【００６３】
集計装置１００は、記憶部２０３に格納された秘匿集計結果ｄを集計結果送信部２０６から集計結果復号装置１２０，１３０，１４０に送信するとともに、集計処理における集計方法（ここでは、総和計算）を示す集計方法名を集計方法送信部２０５から集計結果復号装置１２０，１３０，１４０に送信する（Ｓ１１，Ｓ１２，Ｓ１３）。
【００６４】
なお、秘匿集計結果dは、次式に示すように、本来の集計結果p1 + p2 + p3に乱数r1 + r2 + r3を加えた形となっている。
【数１】
0005492241.tif 000002
【００６５】
すなわち、秘匿集計結果ｄは乱数で撹乱されているため、本来の集計結果(p1 + p2 + p3)を秘匿したものになっている。したがって、本来の集計結果は集計装置１００に対して秘匿されている。
【００６６】
各集計結果復号装置１２０，１３０，１４０は、集計結果１００から送信された秘匿集計結果ｄを、集計結果受信部３０２で受信し、記憶部３０５に格納する。また集計結果１００から送信された集計方法を示す集計方法名を、集計方法受信部３０１で受信し、復号用パラメータ計算部３０４に通知する。
【００６７】
各集計結果復号装置１２０，１３０，１４０は集計方法名が総和計算を示すことから、復号方法記憶部３０６から集計方法名が総和計算の場合の復号機能を図示しないメモリにロードして、集計結果dの復号を開始する。なお、復号方法記憶部３０６は、集計方法名と、集計方法名が示す集計方法に応じた復号機能（復号方法）とを関連付けて記憶している。ここで、復号機能及び復号方法は、復号プログラムと読み替えてもよい。
【００６８】
図５は集計方法が総和計算の場合の復号方法のうち、復号用パラメータ計算方法を示した模式図である。
【００６９】
集計結果復号装置１２０は、記憶部３０５に格納している乱数r1、集計結果復号装置１３０が記憶部３０５に格納している乱数r2、集計結果復号装置１４０が記憶部３０５に格納している乱数r3から、それらの和r1 + r2 + r3を求める。
【００７０】
ただし乱数r1の情報は集計結果復号装置１２０以外にはまったく漏れず、乱数r2の情報は集計結果復号装置１３０以外にはまったく漏れず、乱数r3の情報は集計結果復号装置１４０以外にはまったく漏れないように各集計結果復号装置１２０，１３０，１４０により管理されている。
【００７１】
これは例えば乱数r1が漏洩し、集計装置１００に伝わると、集計装置１００は記憶部２０３に格納した秘匿データc1と合わせてc1 - r1を計算することで、集計結果復号装置が秘匿したかった元の集計対象データp1を復元することができるためである。
【００７２】
復号用パラメータ計算のために、シャミア(Shamir)の（3, 3）しきい値法を利用する。
【００７３】
集計結果復号装置１２０は記憶部３０５に格納している乱数r1から、復号用パラメータ計算部３０４において、（３，３）しきい値法の分散処理により３個の分散値r11, r12, r13を生成する（Ｓ１４）。ここで分散値r11, r12, r13の生成は以下のように行う。まず２つの乱数a11、a12を生成し、２次多項式f1(x) = r1 + a11x + a12x^2を構成する。次にr11 = f1(1)、r12 = f1(2)、r13 = f1(3)を計算し、r11, r12, r13を求める。
【００７４】
集計結果復号装置１２０は、１個の分散値r11を記憶部305に格納する（Ｓ１５）。残り２個の分散値r12，r13は復号用パラメータ送信部３０８から、それぞれ集計結果復号装置１３０，１４０に送信される。集計結果復号装置１３０は復号用パラメータ受信部３０３で他の分散値r12を受信し、記憶部３０５に格納する（Ｓ１６）。集計結果復号装置１４０は復号用パラメータ受信部３０３で更に他の分散値r13を受信し、記憶部３０５に格納する（Ｓ１７）。
【００７５】
集計結果復号装置１３０は、記憶部３０５に格納している乱数r2から、復号用パラメータ計算部３０４において、（３，３）しきい値法の分散処理により３個の分散値r21, r22, r23を生成する（Ｓ１８）。生成の仕方は、集計結果復号装置１２０での生成方法と同様である。すなわち、まず２つの乱数a21、a22を生成し、２次多項式f2(x) = r2 + a21x + a22x^2を構成し、次にr21 = f2(1)、r22 = f2(2)、r23 = f2(3)を計算する。集計結果復号装置１３０は、１個の分散値r22を記憶部305に格納する（Ｓ１９）。残り２個の分散値r21,r23は復号用パラメータ送信部３０８から、それぞれ集計結果復号装置１２０，１４０に送信される。
【００７６】
集計結果復号装置１２０は復号用パラメータ受信部３０３で他の分散値r21を受信し、記憶部３０５に格納する（Ｓ２０）。集計結果復号装置１４０は復号用パラメータ受信部３０３で更に他の分散値r23を受信し、記憶部３０５に格納する（Ｓ２１）。
【００７７】
集計結果復号装置１４０は、記憶部３０５に格納している乱数r3から、復号用パラメータ計算部３０４において、（３，３）しきい値法の分散処理により３個の分散値r31, r32, r33を生成する（Ｓ２２）。生成の仕方は、集計結果復号装置１２０での生成方法と同様である。すなわち、まず２つの乱数a31、a32を生成し、２次多項式f3(x) = r3 + a31x + a32x^2を構成し、次にr31 = f3(1)、r32 = f3(2)、r33 = f3(3)を計算する。集計結果復号装置１４０は、１個の分散値r33を記憶部３０５に格納する（Ｓ２３）。残り２個の分散値r31、r32は復号用パラメータ送信部３０８から、それぞれ集計結果復号装置１２０，１３０に送信する。集計結果復号装置１２０は復号用パラメータ受信部３０３で他の分散値r31を受信し、記憶部３０５に格納する（Ｓ２４）。集計結果復号装置１３０は復号用パラメータ受信部３０３で更に他の分散値r32を受信し、記憶部３０５に格納する（Ｓ２５）。
【００７８】
集計結果復号装置１２０は、記憶部３０５から分散値r11、r21、r31を読み出し、復号用パラメータ計算部３０４で分散情報R1 = r11 + r21 + r31を計算する（Ｓ２６）。集計結果復号装置120は、分散情報R1を記憶部３０５に格納する（Ｓ２７）。また、分散情報R1を復号用パラメータ送信部３０８から、集計結果復号装置１３０，１４０に送信する。集計結果復号装置１３０は復号用パラメータ受信部３０３で分散情報R1を受信し、記憶部３０５に格納する（Ｓ２８）。集計結果復号装置１４０は復号用パラメータ受信部３０３で分散情報R1を受信し、記憶部３０５に格納する（Ｓ２９）。
【００７９】
集計結果復号装置１３０は、記憶部３０５から分散値r12、r22、r32を読み出し、復号用パラメータ計算部３０４で分散情報R2 = r12 + r22 + r32を計算する（Ｓ３０）。集計結果復号装置１３０は、分散情報R2を記憶部３０５に格納する（Ｓ３１）。また、分散情報R2を復号用パラメータ送信部３０８から、集計結果復号装置１２０，１４０に送信する。集計結果復号装置１２０は復号用パラメータ受信部３０３で分散情報R2を受信し、記憶部３０５に格納する（Ｓ３２）。集計結果復号装置１４０は復号用パラメータ受信部３０３で分散情報R2を受信し、記憶部３０５に格納する（Ｓ３３）。
【００８０】
集計結果復号装置１４０は、記憶部３０５から分散値r13、r23、r33を読み出し、復号用パラメータ計算部３０４で分散情報R3 = r13 + r23 + r33を計算する（Ｓ３４）。集計結果復号装置１４０は、分散情報R3を記憶部３０５に格納する（Ｓ３５）。また、分散情報R3を復号用パラメータ送信部３０８から、集計結果復号装置１２０，１３０に送信する。集計結果復号装置１２０は復号用パラメータ受信部３０３で分散情報R3を受信し、記憶部３０５に格納する（Ｓ３６）。集計結果復号装置１３０は復号用パラメータ受信部３０３で分散情報R3を受信し、記憶部３０５に格納する（Ｓ３７）。
【００８１】
集計結果復号装置１２０は、記憶部３０５から分散情報R1、R2、R3を読み出し、復号用パラメータ計算部３０４で、（３，３）しきい値法における分散情報R1、R2、R3の復元処理により、乱数集計データ(r1 + r2 + r3)を復元する（Ｓ３８）。ここで（３，３）しきい値法による復元処理はラグランジュの補間公式より、3×R1 - 3×R2 + R3を計算することである。
【００８２】
集計結果復号装置１３０は、記憶部３０５から分散情報R1、R2、R3を読み出し、復号用パラメータ計算部３０４で、（３，３）しきい値法における分散情報R1、R2、R3の復元処理、すなわち3×R1 - 3×R2 + R3を計算することにより、乱数集計データ(r1 + r2 + r3)を復元する（Ｓ３９）。
【００８３】
集計結果復号装置１４０は、記憶部３０５から分散情報R1、R2、R3を読み出し、復号用パラメータ計算部３０４で、（３，３）しきい値法における分散情報R1、R2、R3の復元処理、すなわち3×R1 - 3×R2 + R3を計算することにより、乱数集計データ(r1 + r2 + r3)を復元する（Ｓ４０）。
【００８４】
ここで、3×R1 - 3×R2 + R3 = r1 + r2 + r3であることは、以下のように確かめることができる。生成の仕方から、各々の分散値r11, r12, r13, r21, r22, r23, r31, r32, r33は以下の値となる。
【００８５】
r11 = f1(1) = r1 + a11 + a12
r12 = f1(2) = r1 + 2×a11 + 4×a12
r13 = f1(3) = r1 + 3×a11 + 9×a12
r21 = f2(1) = r2 + a21 + a22
r22 = f2(2) = r2 + 2×a21 + 4×a22
r23 = f2(3) = r2 + 3×a21 + 9×a22
r31 = f3(1) = r3 + a31 + a32
r32 = f3(2) = r3 + 2×a31 + 4×a32
r33 = f3(3) = r3 + 3×a31 + 9×a32
したがって、分散情報R1, R2, R3の値は以下のようになる。
【数２】
0005492241.tif 000003
【００８６】
各集計結果復号装置１２０，１３０，１４０は、それぞれ復号パラメータ計算により求めた乱数集計データ(r1 + r2 + r3)と、記憶部３０５に格納されている集計結果dから、復号部３０７でd - (r1 + r2 + r3)を計算することで、次式に示すように、集計対象データ(p1, p2, p3)の所望の集計結果である総和p1 + p2 + p3を得ることができる。
【００８７】
d - (r1 + r2 + r3)
= (c1 + c2 + c3) - (r1 + r2 + r3)
= ((p1 + r1) + (p2 + r2) + (p3 + r3)) - (r1 + r2 + r3)
= p1 + p2 + p3
上述したように本実施形態によれば、完全準同型暗号及び信頼できる第三者を利用せずに、集計対象データ及びその集計結果を秘匿した状態で集計装置に集計処理（例、データの総和計算）を実行させることができる。また、集計対象データの集計結果は、各集計結果復号装置１２０，１３０，１４０で参照することができる。
【００８８】
なお、本実施形態は、秘匿集計結果dをd = c1 + c2 + c3 = (p1 + p2 + p3) + (r1 + r2 + r3)とし、乱数集計データ(r1 + r2 + r3)を集計結果復号装置１２０，１３０，１４０が協力して求めた総和計算の例について説明したが、総和計算に限らず、例えば、積の計算を実行してもよい。積の計算の場合は、秘匿データc1をc1 = p1・r1等として積でマスクし、集計結果dをd = c1・c2・c3 = (p1・p2・p3)・(r1・r2・r3)とし、乱数集計データ(r1・r2・r3)を集計結果復号装置１２０，１３０，１４０が協力して求めればよい。また、本実施形態は、総和計算や積の計算に限らず、他の種類の計算も同様にして乱数r1, r2, r3についての計算で実現することができる。
【００８９】
補足すると、本実施形態は、図６に枠組みを示すように、目的の演算に応じたマルチパーティ計算（ＭＰＣ）を用いて所望の計算を実行することができる。ここで、マルチパーティ計算のアルゴリズムについては、参考文献（例えば、SecureSCM, “WP9 Cryptographic Aspects, D9.2 Security Analysis”, July 2009, http://pi1.informatik.uni-mannheim.de/filepool/publications/octavian_securescm/SecureSCM-D.9.2.pdf ）に記載されている。例えば、総和計算方法は、参考文献2.4.2節の“Addition of secrets”に記載されている。積の計算方法は、参考文献2.4.2節の“Multiplication of secrets”に記載されている。その他、内積計算は、参考文献2.4.2節の“Inner Product of secrets”に記載されている。逆元計算は、参考文献(p. 32)の“Protocol 3.12”に記載されている。大小比較は、参考文献5.2節に記載されている。また、他の種類の計算でも、マルチパーティ計算のアルゴリズムによって同様に実行可能である。
【００９０】
また、本実施形態は、３個の集計結果復号装置を用いる場合について説明したが、３個に限らず、４個以上の集計結果復号装置を用いる場合にも同様に実施可能である。
【００９１】
具体的には、４個以上の集計結果復号装置を用いる場合には、秘密分散の一般的な復元方法（ラグランジュの補間公式）を適用すれば、実行可能である。例えば、ｎ個の集計結果復号装置（による総和）の場合、以下の［１］〜［３］に示すように実行可能である。
【００９２】
［１］  各々の集計結果復号装置iは、自己が生成した乱数ri を (n, n) しきい値法で分散し、分散値rij＝fi(j)を他の n - 1 個の集計結果復号装置jに送付する。
【数３】
0005492241.tif 000004
【００９３】
すなわち、(R1, … , Rn) は多項式 F(x) により、r1 + r2 + … + rn を (n, n) しきい値法で秘密分散した分散情報になっている。
【００９４】
［３］  n 個の集計結果復号装置が協力して、F(x) に関するラグランジュの補間公式を適用し、r1 + r2 + … + rn を復元する。
【００９５】
なお、上記の各実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フロッピー（登録商標）ディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤなど）、光磁気ディスク（ＭＯ）、半導体メモリなどの記憶媒体に格納して頒布することもできる。
【００９６】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
【００９７】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ（オペレーティングシステム）や、データベース管理ソフト、ネットワークソフト等のＭＷ（ミドルウェア）等が上記実施形態を実現するための各処理の一部を実行しても良い。
【００９８】
さらに、各実施形態における記憶媒体は、コンピュータと独立した媒体に限らず、ＬＡＮやインターネット等により伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
【００９９】
また、記憶媒体は１つに限らず、複数の媒体から上記の各実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
【０１００】
なお、各実施形態におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、上記の各実施形態における各処理を実行するものであって、パソコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
【０１０１】
また、各実施形態におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【０１０２】
なお、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１０３】
１００…集計装置、１１０…ネットワーク、１２０，１３０，１４０…集計結果復号装置、２０１…データ受信部、２０２…集計部、２０３，３０５…記憶部、２０４…集計方法記憶部、２０５…集計方法送信部、２０６…集計結果送信部、３０１…集計方法受信部、３０２…集計結果受信部、３０３…復号用パラメータ受信部、３０４…復号用パラメータ計算部、３０６…復号方法記憶部、３０７…復号部、３０８…復号用パラメータ送信部、３０９…乱数生成部、３１０…暗号化部、３１１…秘匿データ送信部。
【図１】
0005492241.tif 000005
【図２】
0005492241.tif 000006
【図３】
0005492241.tif 000007
【図４】
0005492241.tif 000008
【図５】
0005492241.tif 000009
【図６】
0005492241.tif 000010