説明

セキュア集合関数システム、秘密集合関数装置、セキュア集合関数処理方法、セキュア集合関数プログラム

【課題】情報を秘匿しながら、計算量がデータ数のみに比例する集合関数演算を可能にする。
【解決手段】本発明のセキュア集合関数システムは、N個の秘密集合関数装置で構成され、キーkと属性値vを含むM個の情報(k,v),…,(k,v)が秘密分散された情報([k],[v]),…,([k],[v])から、秘密分散された集計結果を求める。セキュア集合関数システムは、初期化手段と結合演算手段とを備える。初期化手段は、M個のデータz,…,zを、z=vのように設定し、情報([k],[z]),…,([k],[z])を生成する。結合演算手段は、キーkとキーkとが等しいときにはz=z(+)z,z=(0)とし、等しくないときにはz=z,z=zとする結合処理を、すべての等しいキーを持つ情報に対して秘密計算で実行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はデータを秘匿しつつ集計等の集合関数と呼ばれる処理を、グループ化を伴って行うセキュア集合関数システム、秘密集合関数装置、セキュア集合関数処理方法、セキュア集合関数プログラムに関する。
【背景技術】
【0002】
集合関数とは、単位元が存在し結合律と可換律の成り立つ演算(可換モノイド)をデータ群全体に行うことである。集合関数におけるグループ化とは、データ群を、キーとなる属性が等しいデータ群に分類し、分類した各データ群に対して集合関数を施すことである。
【0003】
暗号化された数値を復元すること無く特定の演算結果を得る方法として、例えば非特許文献1の秘密計算と呼ばれる方法がある。非特許文献1の方法では、3つの秘密計算装置に数値の断片を分散させるという暗号化を行い、数値を復元すること無く、加減算、定数和、乗算、定数倍、論理演算(否定,論理積,論理和,排他的論理和)、データ形式変換(整数,二進数)の結果を3つの秘密計算装置に分散された状態、すなわち暗号化されたまま保持させることができる。また、非特許文献2では、ソートの前後の値の対応を誰にも知られないように計算することを特徴とし、暗号化された複数のデータに対し、平文から計算される値でソートを行った結果の暗号文を計算する秘密ソート方法が提案されている。このような秘密計算を用いれば、集合関数演算も可能である。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】千田浩司, 濱田浩気, 五十嵐大, 高橋克巳, “軽量検証可能3パーティ秘匿関数計算の再考”, In CSS, 2010.
【非特許文献2】濱田浩気, 五十嵐大, 千田浩司, 高橋克巳, “3パーティ秘匿関数計算上のランダム置換プロトコル”, In CSS, 2010.
【発明の概要】
【発明が解決しようとする課題】
【0005】
例えば、従来の秘密計算を用いた以下の処理で、グループ化して集合関数演算を行うことが可能と考える。なお、集合関数演算を行う対象を、キーkと属性値vを含む情報(k,v)とする。
全てのキー属性値に対して以下を繰り返す。
1. i番目のキー属性値kに対して、z=(0)とする。
2. 全データに対して以下を繰り返す。
j番目のデータのキー属性がkならば、z=z(+)v
キー属性がkでなければz=z
ただし、(0)は単位元、(+)は当該集合関数の可換モノイド演算である。
【0006】
しかしながら、上記の方法では、計算量が「キー属性値の数×データ数」に比例し、効率が悪い。
【0007】
本発明は、情報を秘匿しながら、計算量がデータ数のみに比例し、キー属性値の数に依存しない集合関数演算を可能にする技術の提供を目的とする。
【課題を解決するための手段】
【0008】
本発明のセキュア集合関数システムは、N個の秘密集合関数装置R,…,Rで構成され、キーkと属性値vを含むM個の情報(k,v),…,(k,v)がそれぞれ秘密分散された情報([k],[v]),…,([k],[v])から、秘密分散された集計結果を求める。ここで、Mは2以上の整数、Nは3以上の整数、m,i,jは1以上M以下の整数、[]はカッコ内の情報が要素ごとに秘密分散された情報を示す記号、(+)は単位元が存在し結合律と可換律が成り立つ前記集計結果を求めるための演算を示す記号、(0)は演算(+)の単位元を示す記号とする。
【0009】
セキュア集合関数システムは、初期化手段と結合演算手段とを備える。初期化手段は、M個のデータz,…,zを、z=vのように設定し、情報([k],[z]),…,([k],[z])を生成する。結合演算手段は、キーkとキーkとが等しいときには
=z(+)z,z=(0)
とし、等しくないときには
=z,z=z
とする結合処理を、すべての等しいキーを持つ情報に対して秘密計算で実行する。
【発明の効果】
【0010】
本発明のセキュア集合関数システムによれば、情報を秘匿しながら、計算量がデータ数のみに比例し、キー属性値の数に依存しない集合関数演算を実行できる。
【図面の簡単な説明】
【0011】
【図1】実施例1と実施例2のセキュア集合関数システムの構成例を示す図。
【図2】実施例1のセキュア集合関数システムの処理フローを示す図。
【図3】実施例2のセキュア集合関数システムの処理フローを示す図。
【図4】実施例3のセキュア集合関数システムの構成例を示す図。
【図5】実施例3のセキュア集合関数システムの処理フローを示す図。
【図6】本発明に利用できる秘密分散装置100の機能構成例を詳しく示したセキュア集合関数システムを示す図。
【図7】ランダム置換の1つ目の処理フロー例を示す図。
【図8】ランダム置換の2つ目の処理フロー例を示す図。
【発明を実施するための形態】
【0012】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【実施例1】
【0013】
図1に実施例1のセキュア集合関数システムの構成例を示す。また、図2に実施例1のセキュア集合関数システムの処理フローを示す。実施例1のセキュア集合関数システムは、N個の秘密集合関数装置10,…,10で構成され、キーkと属性値vを含むM個の情報(k,v),…,(k,v)がそれぞれ秘密分散された情報([k],[v]),…,([k],[v])から、秘密分散された集計結果を求める。ここで、Mは2以上の整数、Nは3以上の整数、m,i,jは1以上M以下の整数、[]はカッコ内の情報が要素ごとに秘密分散された情報を示す記号、(+)は単位元が存在し結合律と可換律が成り立つような集計結果を求めるための演算を示す記号、(0)は演算(+)の単位元を示す記号とする。(+)の具体例としては、和(総和)、最小値、最大値などがある。
【0014】
秘密集合関数装置10は、集合関数制御部300、秘密分散装置100、記録部190を備える。秘密分散装置100は、集合関数制御部300の指示にしたがって実施例1の処理に必要な個々の秘密計算を行う。本発明の処理に必要な個々の秘密計算としては、秘密分散、復号、四則演算などがある。ただし、本発明は、これらの秘密計算を利用して効率よく集合関数演算を行うものであり、秘密計算自体に特徴がある発明ではない。そこで、秘密計算については、例を後述することとし、本発明のポイントを理解しやすくするためにここでの説明は省略する。なお、後述する秘密計算の方法は、1つの例であり、実施例1が利用できる秘密計算を限定するものではない。記録部190は、秘密集合関数装置10の処理に必要な情報を記録する構成部である。図1に示した選択手段105は後述する秘密計算では利用するが、利用する秘密計算によっては備えなくてもよい。
【0015】
各秘密集合関数装置10の集合関数制御部300は、初期化部320、結合演算部330、削除部340を備える。そして、セキュア集合関数システムの初期化手段320(図示していない)は初期化部320,…,320で構成され、結合演算手段330(図示していない)は結合演算部330,…,330で構成され、削除手段340(図示していない)は削除部340,…,340で構成される。
【0016】
初期化手段320は、M個のデータz,…,zを、z=vのように設定し、情報([k],[z]),…,([k],[z])を生成する(S340)。より具体的には、初期化部320,…,320(初期化手段320)は、秘密分散装置100,…,100に属性値vの断片と同じ断片を持つデータvの断片を作らせ、各断片を秘密分散させることで情報([k],[z]),…,([k],[z])を生成させる。
【0017】
結合演算手段330は、キーkとキーkとが等しいときには
=z(+)z,z=(0)
とし、等しくないときには
=z,z=z
とする結合処理が、すべての等しいキーを持つ情報に対して実行されるまで、秘密計算で実行する(S330)。例えば、キーkとキーkとが等しいことを確認する論理回路は、従来技術として蓄積された論理回路の技術を用いれば、実現できる。キーkとキーkの2ビット展開した各ビットの排他的論理和の論理和の否定によって次のように確認してもよい。
【0018】
C=1−{(kiB[∨]kjB)∨・・・∨(ki1[∨]kj1)} (1)
ただし、[∨]は排他的論理和(XOR)を示す記号、∨は論理和(OR)を示す記号、kibは2ビット展開したときのキーkの下からbビット目の値、Bは2ビット展開したときのキーkの桁数とする。式(1)では、C=1ならばキーkとキーkとが等しく(真)、C=0ならばキーkとキーkとが異なる(偽)。また、式(1)の個々の演算は後述の秘密計算の例に示されているので、式(1)の演算は秘密計算で実行でき、秘密分散された[C]が求められる。したがって、確認後の分岐も秘密にするのであれば、[C]を用いた秘密計算をさらに組合せればよい。なお、後述する秘密計算は、数値の秘密分散、秘密分散された断片の復号、秘密分散された数値の四則計算、秘密分散されたビットごとの論理演算の基本的な計算方法を網羅して示している。したがって、従来技術として蓄積された論理回路の技術を用いれば、上述の等しいことを確認する方法のように、大小比較を比較する演算などの所望の演算を、後述する秘密計算の方法の組合せで実行できる。
【0019】
さらに、情報([k],[z]),…,([k],[z])がランダムに並んだ情報の場合は、i,jのすべての組合せに対して結合演算手段330の処理を行う必要がある。一方、情報([k],[z]),…,([k],[z])が何らかの規則に従って並んでいれば、i,jのすべての組合せまで実行する必要はない。例えば、情報([k],[z]),…,([k],[z])がキーkに基づいてソートされている場合であれば、iを1からM−1まで順番に値を大きくしながら、j=i+1に対して、キーkとキーkとが等しいときには
=z(+)z,z=(0)
とし、等しくないときには
=z,z=z
とすればよい。もしくは、iをMから2まで順番に値を小さくしながら、j=i−1に対して、キーkとキーkとが等しいときには
=z(+)z,z=(0)
とし、等しくないときには
=z,z=z
とすればよい。このようにソート済みの情報であれば、隣り合う情報同士の比較を順番に行うだけで、同じ値のキーを持つすべての情報に対する集合関数演算を実行し、最後に結合したzに集合関数演算の結果をまとめることができる。したがって、O(M)の計算量で処理ができる。
【0020】
削除手段340は、結合演算手段330の処理後に、M個の情報([k],[z])を秘密計算でランダム置換し、ランダム置換後のzが(0)かを秘密計算で確認し、確認結果を復元する。つまり、式(1)でzと(0)に対する[C]を求め、[C]を復元してCを求める。そして、z=(0)の場合(式(1)であればC=1の場合)には情報([k],[z])を削除する(S340)。ステップS340の削除は、残りの情報の数が、情報([k],[z])の数とキーの値の数の少ない方になるまで削除すればよい。なお、情報([k],[z]),…,([k],[z])がもともとランダムに並んでいる場合は、ランダム置換は必要ないので削除手段340を省略してもよい。情報([k],[z]),…,([k],[z])がキーkに基づいてソートされている場合は、z=(0)の確認結果を復元すると、キーの値が同じ情報が何個あるのか、何番目に境界があるのかなどのキーに関する情報が漏れてしまう。したがって、ランダム置換が必要となる。
【実施例2】
【0021】
図1に実施例2のセキュア集合関数システムの構成例を示す。また、図3に実施例2のセキュア集合関数システムの処理フローを示す。実施例2のセキュア集合関数システムも、N個の秘密集合関数装置10,…,10で構成され、キーkと属性値vを含むM個の情報(k,v),…,(k,v)がそれぞれ秘密分散された情報([k],[v]),…,([k],[v])から、秘密分散された集計結果を求める。ここで、Mは2以上の整数、Nは3以上の整数、m,i,jは1以上M以下の整数、[]はカッコ内の情報が要素ごとに秘密分散された情報を示す記号、(+)は単位元が存在し結合律と可換律が成り立つような集計結果を求めるための演算を示す記号、(0)は演算(+)の単位元を示す記号、Tは(logM)−1以上の最小の整数、tは0以上T以下の整数、^はべき乗を示す記号とする。また、実施例2では、情報([k],[v]),…,([k],[v])はキーkに基づいてソートされた情報とする。
【0022】
秘密集合関数装置10は、集合関数制御部300、秘密分散装置100、記録部190を備え、秘密分散装置100、記録部190、集合関数制御部300の初期化部320、削除部340は実施例1と同じである。異なるのは、結合演算部330である。つまり、初期化手段320と削除手段340は実施例1と同じであり、結合演算手段330が異なる。
【0023】
実施例2の結合演算部330は、第1結合部331、第2結合部332、第3結合部333を備える。そして、第1結合手段331(図示していない)は第1結合部331,…,331で構成され、第2結合手段332(図示していない)は第2結合部332,…,332で構成され、第3結合手段333(図示していない)は第3結合部333,…,333で構成される。また、結合演算手段330は、第1結合手段331、第2結合手段332、第3結合手段333を有する。
【0024】
結合演算手段330は、tに0を代入する(S336)。第1結合手段331は、i=1,2,…,M−2^tについて、kとki+2^tが等しいときには
i+2^t’=z(+)zi+2^t
とし、等しくないときには
i+2^t’=zi+2^t
とする(S331)。より具体的には、第1結合部331,…,331(第1結合手段331)は、秘密分散装置100,…,100に、i=1,2,…,M−2^tについて、kとki+2^tが等しいかを、例えば式(1)の秘密計算で確認させる。そして、その結果に基づいて、zi+2^t’=z(+)zi+2^tまたはzi+2^t’=zi+2^tの秘密計算を実行させる。なお、ステップS331のi=1,2,…,M−2^tについての処理は、互いに影響しないため並列に処理できる。
【0025】
第2結合手段332は、i=1,2,…,Mについて
=z
とする(S332)。なお、ステップS332もi=1,2,…,Mについての処理は互いに影響しないため、並列に処理できる。そして、結合演算手段330は、t=Tかを確認し(S337)、Yesの場合にはステップS333に進み、Noの場合にはtにt+1を代入し(S338)、ステップS331に戻る。
【0026】
ステップS333では、第3結合手段が、i=1,2,…,M−1について、kとki+1が等しいときには
=z
とし、等しくないときには
=(0)
とする(S333)。
【0027】
なお、ステップS320とS340の処理は実施例1と同じである。
【0028】
このように、結合演算手段330は、t=0,1,2,…,Tについて、第1結合手段331と第2結合手段332の処理(S331,S332)を繰返した後に第3結合手段333の処理(S333)を行う。また、ステップS331、S332は並列処理が可能なので、演算回数が多くなったとしても、繰返しの演算を順番に実行せざるを得ない実施例1の方法よりも高速の演算が可能である。より具体的に説明すると、実施例2のセキュア集合関数システムの計算量は、データ数Mに対しO(M log M)となる。したがって、実施例1のO(M)よりも増加する。一方、実施例1は順番に処理する必要があるので、段数(直列に処理せざるを得ない計算数)もO(M)である。しかし、実施例2では大幅に並列度が上昇するので、段数はO(log M)に減少する。
【実施例3】
【0029】
図4に実施例3のセキュア集合関数システムの構成例を示す。また、図5に実施例3のセキュア集合関数システムの処理フローを示す。実施例3のセキュア集合関数システムも、N個の秘密集合関数装置10,…,10で構成され、キーkと属性値vを含むM個の情報(k,v),…,(k,v)がそれぞれ秘密分散された情報([k],[v]),…,([k],[v])から、秘密分散された集計結果を求める。ここで、Mは2以上の整数、Nは3以上の整数、m,i,jは1以上M以下の整数、[]はカッコ内の情報が要素ごとに秘密分散された情報を示す記号、(+)は単位元が存在し結合律と可換律が成り立つような集計結果を求めるための演算を示す記号、(0)は演算(+)の単位元を示す記号、sはあらかじめ定めたM以下の整数、Kはキーkの取り得る値の数とする。また、実施例3では、情報([k],[v]),…,([k],[v])はキーkに基づいてソートされた情報とする。
【0030】
秘密集合関数装置10は、集合関数制御部300、秘密分散装置100、記録部190を備え、秘密分散装置100、記録部190、集合関数制御部300の初期化部320、結合演算手段330、削除部340は実施例1または実施例2と同じである。異なるのは、事前処理部310である。つまり、初期化手段320と結合演算手段330と削除手段340は、実施例1または実施例2と同じである。
【0031】
事前処理部310は、第1事前初期化部311、第2事前初期化部312、事前結合部313、保存部314、第2事前繰返部315、事前削除部316、第1事前繰返部317を有する。そして、第1事前初期化手段311(図示していない)は第1事前初期化部311,…,311で構成され、第2事前初期化手段312(図示していない)は第2事前初期化部312,…,312で構成され、事前結合手段313(図示していない)は事前結合部313,…,313で構成され、保存手段314(図示していない)は保存部314,…,314で構成され、第2事前繰返手段315(図示していない)は第2事前繰返部315,…,315で構成され、事前削除手段316(図示していない)は事前削除部316,…,316で構成され、第1事前繰返手段317(図示していない)は第1事前繰返部317,…,317で構成される。また、事前処理手段310は、第1事前初期化手段311、第2事前初期化手段312、事前結合手段313、保存手段314、第2事前繰返手段315、事前削除手段316、第1事前繰返手段317を有する。
【0032】
第1事前初期化手段311は、M’=Mとする(S311)。第2事前初期化手段312は、t=0、M”=M’とする(S312)。事前結合手段313は、tにt+1を代入し、1からM”/2以下の最大の整数までのiについて、k2i−1とk2iが等しいときには
2i=z2i−1(+)z2i,z2i−1=(0)
とし、等しくないときには
2i=z2i 2i−1=z2i−1
とする(S313)。なお、k2i−1とk2iとの比較は、事前結合部313,…,313(事前結合手段313)が、秘密分散装置100,…,100に、例えば式(1)の論理式を用いた秘密計算を実行させればよい。また、異なるiに対する演算同士は互いに影響を与えないので、異なるiに対する演算は並列で行うことができる。
【0033】
保存手段314は、奇数番目の情報([km’],[zm’])を抜き取って保存し、残った情報を新しい情報([k],[z])とし、新しい情報([k],[z])の数を新しいM”とする(S314)。第2事前繰返手段315は、M”が2K以下か(第2事前繰返条件)を確認し、第2事前繰返条件を満たすまで事前結合手段313の処理(S313)と保存手段314の処理(S314)を繰り返す(S315)。
【0034】
事前削除手段S316は、保存手段314が保存したすべての情報([km’],[zm’])と残った情報([k],[z])とを一緒にした上で、秘密計算でランダム置換し、ランダム置換後のzが(0)かを秘密計算で確認し、z=(0)の場合には情報([k],[z])を削除し、残った情報を新しい情報([k],[z])とし、新しい情報([k],[z])の数をM’とする(S316)。なお、新しい情報(残りの情報)の数M’が
tK+(最後のステップS315で残った情報の数)
になるまでステップS316で情報を削除できる。
【0035】
第1事前繰返手段S317は、M’がsより小さいか(第1事前繰返条件)を確認し、第1事前繰返条件を満たすまで第2事前初期化手段312の処理(S312)、事前結合手段313の処理(S313)、保存手段314の処理(S314)、第2事前繰返手段315(S315)、事前削除手段316(S316)を繰り返す(S317)。
【0036】
そして、セキュア集合関数システムは、Mを、事前処理手段310の処理(S310)後の情報([k],[z])の数に変更し、事前処理手段310の処理(S310)後の情報([k],[z])に対して、実施例1または実施例2に示した初期化手段320の処理(S320)、結合演算手段330の処理(S330)、を実行する。
【0037】
実施例3の事前処理手段310の処理は、情報の数Mがキーの取り得る値の数Kに比べて非常に大きい場合に演算量を減らす効果がある。一方、MとKの値が近くなると実施例1や実施例2の結合演算手段330の処理(S330)の方が演算量を少なくできる。したがって、MがKに比べて非常に大きいときに、事前処理手段310を用いて情報の数Mを少なくし、MがKに近づいたところで実施例1や実施例2の結合演算手段330に切り替えて処理すれば効率的である。より具体的には、実施例3のセキュア集合関数システムの計算量はO(M+ K log M)であり、段数はO(log M)である。あらかじめ定めるsは、どの程度MがKに近づいたところで切り替えるのかを定める値であり、全体の演算量が少なくなるように適宜決めればよい。このように、実施例3のセキュア集合関数システムによれば、情報の数Mがキーの取り得る値の数Kに比べて非常に大きい場合に演算量を減らすことができる。
【0038】
[演算量の具体例]
情報の数M=1000、キーの取り得る値の数K=10とする。実施例3のステップS314の1回目でM”=500、2回目でM”=250となり、6回目でM”=16となる。そして、ここまでの結合演算の回数は985回であり、残りの情報の数は次のようになる。
【0039】
tK+(最後のステップS315で残った情報の数)=6×10+16=76
これをもう一度繰り返すと、t=2でM”=19、結合演算の回数は57回増えて1042回、残りの情報の数の最大値(実際にはこの数以下となる数)は2×10+19=39となる。例えばsを40に設定していれば、ステップS317は終了し、ステップS320に進む。ステップS320,S330,S340を実施例1の方法で実行すれば、結合演算の回数は1080回、段数は46段である。ステップS320,S330,S340を実施例2の方法で実行すれば、結合演算の回数は1213回、段数は14段である。比較として、最初から実施例1の方法にした場合は、結合演算の回数は999回、段数は999段、実施例2の方法の場合の結合演算の回数は8977回、段数は10段となり、情報の数Mがキーの取り得る値の数Kよりかなり大きい場合、実施例3の方法は計算量と段数のバランスに優れることが分かる。なお、従来の方法の場合、結合演算の回数は9990回、段数は10段である。
【0040】
[秘密計算]
上述の説明では、秘密計算については1つの方法に限定しないことを前提としており、具体例は示さなかった。以下の説明では、秘密集合関数装置10,…,10が実行するランダム置換とその他の秘密計算について説明する。なお、以下の秘密計算に関する説明は、1つの例でありこれに限定されるものではない。本発明のセキュア集合関数システムでは他の秘密計算を用いてもよい。
【0041】
ランダム置換1
図6に本発明に利用できる秘密分散装置100の機能構成例を詳しく示したセキュア集合関数システムを示す。図7にランダム置換の1つ目の処理フロー例を示す。この例では、セキュア集合関数システムは選択手段105も備える。ここで、A,…,Aを各秘密集合関数装置10が断片を分散して記録するK個の数値(Kは2以上の整数)、数値Aをk番目の数値(kは1以上K以下の整数)、aknを秘密集合関数装置10が記録するk番目の断片とする。なお、数値A,…,Aが、秘匿化したい数値群であって、例えば、ソートの対象となる数値群である。ソートの対象となる数値群としては、例えば、数値Aが各々の人の年収を示すような数値群が考えられる。選択手段105は、いずれかの秘密集合関数装置の内部に配置されてもよいし、単独の装置であってもよい。
【0042】
セキュア集合関数システムは、選択手段と断片置換手段と再分散手段を備える。また、秘密分散装置100は、少なくとも断片置換部110と再分散部120と記録部190を備える。記録部190は断片a1n,…,aKnなどを記録する。また、記録部190は、自身が記録している断片aknが数値Aの何番目の断片なのかに関する情報も記録する。
【0043】
選択手段105は、N未満の数の秘密集合関数装置10を選択する(S105)。例えば、N個の断片のうちN’個を集めれば数値を復元できる秘密分散であれば、断片置換手段がN’個以上N未満の秘密集合関数装置を選べばよい。
【0044】
断片置換手段は、少なくとも断片置換部110,…,110を含んで構成される。そして、選択手段105に選択された秘密集合関数装置10(ただし、iは選択された秘密集合関数装置を示す番号)の断片置換部110間で{1,…,K}→{1,…,K}の全単射πを作成し、選択された秘密集合関数装置10の記録部190が記録する断片aπ(k)iをk番目の断片にする(S110)。全単射πは、1〜Kを単にランダムに並べ替えたものであってもよい。なお、全単射πは、望ましくは一様にランダムに並び替えられたものであり、例えばFisher-Yates shuffle(参考文献1:Richard Durstenfeld, “Algorithm 235: Random permutation”, Communications of the ACM archive, Volume 7, Issue 7, 1964.)などを用いて作成すればよい。また、全単射πは選択された秘密集合関数装置10間で生成してもよいし、選択された秘密集合関数装置10のうちの1つの秘密集合関数装置が生成して、選択された秘密集合関数装置10間で共有してもよい。
【0045】
再分散手段は、少なくとも再分散部120,…,120を含んで構成される。再分散手段は、断片置換手段によって置換された数値Aπ(k)に対応する断片aπ(k)i(k番目に置換されている)を用いて再分散化して新しい断片bk1,…,bkNを求め、数値Bの断片とする(S120)。つまり、Aπ(k)=Bの関係が成り立つが、選ばれなかった秘密集合関数装置は全単射πを知らないので、Aπ(k)=Bであることを知らない。なお、各秘密集合関数装置10の記録部190は、断片bknを記録するだけでなく、自身が記録しているk番目の断片である断片bknが数値Bの断片であるという情報も記録する。また、数値B,…,Bを新しい数値A,…,Aとし、選択手段で選択する秘密集合関数装置の組み合わせを変更すれば、この処理を繰り返すことができる(S111,S112)。
【0046】
本発明のセキュア集合関数システムによれば、限定された秘密集合関数装置間で断片をシャッフルする。したがって、選ばれなかった秘密集合関数装置は、全単射πを知らないので、数値A,…,Aと数値B,…,Bとの対応が分からない。つまり、特定の秘密集合関数装置からは数値A,…,Aと数値B,…,Bとの対応が分からない状態にしたいのであれば、その秘密集合関数装置を選択手段105で選ばないように、選択する秘密集合関数装置をあらかじめ定めればよい。また、選択手段105が選ぶ秘密集合関数装置を変更しながらこの処理を繰り返し、全ての秘密集合関数装置が選ばれなかったことがある状態にすれば、全ての秘密集合関数装置が数値A,…,Aと対応つけることができない数値B,…,Bを得ることができる。
【0047】
ランダム置換2
次のランダム置換のためのセキュア集合関数システムの秘密分散装置100を詳細に示した機能構成例も図6に示す。図8にランダム置換の2つ目の処理フロー例を示す。この例でも、セキュア集合関数システムは選択手段105も備える。ここで、A,…,Aを各秘密集合関数装置10が断片を分散して記録するK個の数値(Kは2以上の整数)、数値Aをk番目の数値(kは1以上K以下の整数)、aknを秘密集合関数装置10が記録する数値Aの断片とする。
【0048】
本発明のセキュア集合関数システムは、選択手段105、初期情報分散手段、初期乗算手段、断片置換手段、再分散手段、確認分散手段、確認乗算手段、改ざん検出手段を備える。また、秘密分散装置100は、初期情報分散部130、初期乗算部140、断片置換部110、再分散部120、確認分散部150、確認乗算部160、改ざん検出部170を備える。記録部190は断片a1n,…,aKnなどを記録する。また、記録部190は、自身が記録している断片aknが数値Aの何番目の断片なのかに関する情報も記録する。
【0049】
選択手段105はランダム置換1と同じである。初期情報分散手段は、初期情報分散部130,…,130で構成される。そして、選択手段105に選択された秘密集合関数装置10の初期情報分散部130は、秘密集合関数装置10,…,10のどれも知らないK個の数値P,…,Pそれぞれの断片p1n,…,pKnを秘密計算によって求め、記録部190に記録する(S130)。具体的には、選択手段105に選択された秘密集合関数装置から、2つ以上の秘密集合関数装置を選定する。そして、選定された秘密集合関数装置が作った値に基づいて、どの装置も知らない値の断片を作ればよい。例えば、2つの秘密集合関数装置10,10を選定し(ただし、i≠j)、秘密集合関数装置10が生成した数値の断片と、秘密集合関数装置10が生成した数値の断片を分散して記録する。そして、その2つの数値の和を秘密計算によって求め、結果が分からないように断片を分散して記録すれば、全ての秘密集合関数装置が知らない数値の断片を分散して記録できる。この例では、選定した秘密集合関数装置を2つとしたが、2つ以上でもかまわない。
【0050】
初期乗算手段は、初期乗算部140,…,140で構成される。初期乗算部140,…,140は、S=P×Aである数値Sの断片sk1,…,skNを秘密計算によって求め、記録部190,…,190に分散して記録する(S140)。
【0051】
断片置換手段と再分散手段は、ランダム置換1と同じである。確認分散手段は、確認分散部150,…,150で構成される。確認分散部150,…,150は、k=1〜Kについて、Q=Pπ(k)である数値Qの断片qk1,…,qkNを秘密計算によって生成し、記録部190,…,190に分散して記録する(S150)。具体的には、ステップS130で選定された秘密集合関数装置が作った値に基づいて、どの装置も知らない値の別の断片を作ればよい。例えば、ステップS130で選定された秘密集合関数装置10が数値Pπ(k)用に生成した数値の別の断片(新しい断片)と、ステップS130で選定された秘密集合関数装置10が数値Pπ(k)用に生成した数値の別の断片(新しい断片)を分散して記録する。そして、その2つの数値の和を秘密計算によって求め、結果が分からないように断片を分散して記録すれば、Q=Pπ(k)であり、かつ、全ての秘密集合関数装置が知らない数値の断片を分散して記録できる。この例では、選定した秘密集合関数装置を2つとしたが、ステップS130と同じように2つ以上でもかまわない。
【0052】
確認乗算手段は、確認乗算部160,…,160で構成される。確認乗算部160,…,160は、T=Q×Bである数値Tの断片tk1,…,tkNを秘密計算によって求め、記録部190,…,190に分散して記録する(S160)。
【0053】
改ざん検出手段は、改ざん検出部170,…,170で構成される。改ざん検出部170,…,170は、k=1〜Kについて、T=Sπ(k)であることを確認する(S170)。tkn≠sπ(k)nの場合には、改ざんがあったとして異常終了する。また、数値B,…,Bを新しい数値A,…,Aとし、選択手段で選択する秘密集合関数装置の組み合わせを変更すれば、この処理を繰り返すことができる(S111,S112)。
【0054】
[その他の秘密計算]
ここでは、セキュア集合関数システムが3個の秘密集合関数装置で構成された場合の秘密計算の例を示す。また、秘密集合関数装置10,10,10の番号を固定する必要はないので、秘密集合関数装置10α,10β,10γと表現することにする。つまり、(α,β,γ)は、(1,2,3)、(2,3,1)、(3,1,2)のいずれかである。
【0055】
以下の秘密計算では、秘密集合関数装置10α,10β,10γが分散して記録する数値Aの断片を(aγα,aαβ)、(aαβ,aβγ)、(aβγ,aγα)、数値Bの断片を(bγα,bαβ)、(bαβ,bβγ)、(bβγ,bγα)、数値Cの断片を(cγα,cαβ)、(cαβ,cβγ)、(cβγ,cγα)とする。なお、以下の説明では、Wを2以上のあらかじめ定めた整数とし、計算結果はWで除した余りである。言い換えると、以下の説明の計算式では“mod W”を省略している。
【0056】
数値Aの秘密分散
(1)乱数aαβ,aβγを生成する。
(2)aγα=A−aαβ−aβγを計算し、断片を(aγα,aαβ)、(aαβ,aβγ)、(aβγ,aγα)とし、秘密集合関数装置10α,10β,10γに分散して記録する。
【0057】
数値Aの復元
(1)秘密集合関数装置10αは秘密集合関数装置10βにaγαを送信し、秘密集合関数装置10γにaαβを送信する。秘密集合関数装置10βは秘密集合関数装置10γにaαβを送信し、秘密集合関数装置10αにaβγを送信する。秘密集合関数装置10γは秘密集合関数装置10αにaβγを送信し、秘密集合関数装置10βにaγαを送信する。
(2)秘密集合関数装置10αは秘密集合関数装置10βから受信したaβγと秘密集合関数装置10γから受信したaβγとが一致していれば、aαβ+aβγ+aγαを計算して数値Aを復元する。秘密集合関数装置10βは秘密集合関数装置10γから受信したaγαと秘密集合関数装置10αから受信したaγαとが一致していれば、aαβ+aβγ+aγαを計算して数値Aを復元する。秘密集合関数装置10γは秘密集合関数装置10αから受信したaαβと秘密集合関数装置10βから受信したaαβとが一致していれば、aαβ+aβγ+aγαを計算して数値Aを復元する。
【0058】
C=A+Bの秘密計算
(1)秘密集合関数装置10αは(cγα,cαβ)=(aγα+bγα,aαβ+bαβ)を計算して記録し、秘密集合関数装置10βは(cαβ,cβγ)=(aαβ+bαβ,aβγ+bβγ)を計算して記録し、秘密集合関数装置10γは(cβγ,cγα)=(aβγ+bβγ,aγα+bγα)を計算して記録する。
【0059】
C=A−Bの秘密計算
(1)秘密集合関数装置10αは(cγα,cαβ)=(aγα−bγα,aαβ−bαβ)を計算して記録し、秘密集合関数装置10βは(cαβ,cβγ)=(aαβ−bαβ,aβγ−bβγ)を計算して記録し、秘密集合関数装置10γは(cβγ,cγα)=(aβγ−bβγ,aγα−bγα)を計算して記録する。
【0060】
C=A+Sの秘密計算(ただし、Sは既知の定数)
(1)秘密集合関数装置10αは(cγα,cαβ)=(aγα+S,aαβ)を計算して記録し、秘密集合関数装置10γは(cβγ,cγα)=(aβγ,aγα+S)を計算して記録する。秘密集合関数装置10βの処理はない。
【0061】
C=ASの秘密計算(ただし、Sは既知の定数)
(1)秘密集合関数装置10αは(cγα,cαβ)=(aγαS,aαβS)を計算して記録し、秘密集合関数装置10βは(cαβ,cβγ)=(aαβS,aβγS)を計算して記録し、秘密集合関数装置10γは(cβγ,cγα)=(aβγS,aγαS)を計算して記録する。
【0062】
C=ABの秘密計算
(1)秘密集合関数装置10αは、乱数r,r,cγαを生成し、cαβ=(aγα+aαβ)(bγα+bαβ)−r−r−cγαを計算する。そして、秘密集合関数装置10αは、秘密集合関数装置10βに(r,cαβ)を、秘密集合関数装置10γに(r,cγα)を送信する。
(2)秘密集合関数装置10βは、y=aαββγ+aβγαβ+rを計算し、秘密集合関数装置10γに送信する。
(3)秘密集合関数装置10γは、z=aβγγα+aγαβγ+rを計算し、秘密集合関数装置10αに送信する。
(4)秘密集合関数装置10βと秘密集合関数装置10γは、それぞれcβγ=y+z+aβγβγを計算する。
(5)秘密集合関数装置10αは(cγα,cαβ)を記録し、秘密集合関数装置10βは(cαβ,cβγ)を記録し、秘密集合関数装置10γは(cβγ,cγα)を記録する。
【0063】
ビットAの否定(C=1−A)の秘密計算
秘密集合関数装置10α
(cγα,cαβ)=(1−aγα,−aαβ mod W)
を計算して記録し、秘密集合関数装置10β
(cαβ,cβγ)=(−aαβ mod W,−aβγ mod W)
を計算して記録し、秘密集合関数装置10γ
(cβγ,cγα)=(−aβγ mod W,1−aγα
を計算して記録する。
【0064】
ビットの論理積(C=A∧B=AB)の秘密計算
秘密集合関数装置10α,10β,10γは、整数の乗算(C=AB mod W)の秘密計算と同じ処理を行う。
【0065】
ビットの論理和(C=A∨B=A+B−AB)の秘密計算
(1)秘密集合関数装置10α,10β,10γは、整数の加算(C=A+B mod W)の秘密計算と同じ処理を行い、C’=A+Bの結果として、秘密集合関数装置10αが断片(cγα’,cαβ’)を、秘密集合関数装置10βが断片(cαβ’,cβγ’)を、秘密集合関数装置10γが断片(cβγ’,cγα’)を記録する。また、秘密集合関数装置10α,10β,10γは、整数の乗算(C=AB mod W)の秘密計算と同じ処理を行い、C”=ABの結果として、秘密集合関数装置10αが断片(cγα”,cαβ”)を、秘密集合関数装置10βが断片(cαβ”,cβγ”)を、秘密集合関数装置10γが断片(cβγ”,cγα”)を記録する。
(2)秘密集合関数装置10α,10β,10γは、S=−1として整数の乗算(C=AS mod W)の秘密計算(ただし、Sは既知の定数)と同じ処理を行い、C’’’=−C”の結果として、秘密集合関数装置10αが断片(cγα’’’,cαβ’’’)を、秘密集合関数装置10βが断片(cαβ’’’,cβγ’’’)を、秘密集合関数装置10γが断片(cβγ’’’,cγα’’’)を記録する。
(3)秘密集合関数装置10α,10β,10γは、整数の加算(C=A+B mod W)の秘密計算と同じ処理を行い、C=C’+C’’’の結果として、秘密集合関数装置10αが断片(cγα,cαβ)を、秘密集合関数装置10βが断片(cαβ,cβγ)を、秘密集合関数装置10γが断片(cβγ,cγα)を記録する。
【0066】
ビットの排他的論理和(C=A[∨]B=A+B−2AB)の秘密計算
(1)秘密集合関数装置10α,10β,10γは、整数の加算(C=A+B mod W)の秘密計算と同じ処理を行い、C’=A+Bの結果として、秘密集合関数装置10αが断片(cγα’,cαβ’)を、秘密集合関数装置10βが断片(cαβ’,cβγ’)を、秘密集合関数装置10γが断片(cβγ’,cγα’)を記録する。また、秘密集合関数装置10α,10β,10γは、整数の乗算(C=AB mod W)の秘密計算と同じ処理を行い、C”=ABの結果として、秘密集合関数装置10αが断片(cγα”,cαβ”)を、秘密集合関数装置10βが断片(cαβ”,cβγ”)を、秘密集合関数装置10γが断片(cβγ”,cγα”)を記録する。
(2)秘密集合関数装置10α,10β,10γは、S=−2として整数の乗算(C=AS mod W)の秘密計算(ただし、Sは既知の定数)の秘密計算と同じ処理を行い、C’’’=−2C”の結果として、秘密集合関数装置10αが断片(cγα’’’,cαβ’’’)を、秘密集合関数装置10βが断片(cαβ’’’,cβγ’’’)を、秘密集合関数装置10γが断片(cβγ’’’,cγα’’’)を記録する。
(3)秘密集合関数装置10α,10β,10γは、整数の加算(C=A+B mod W)の秘密計算と同じ処理を行い、C=C’+C’’’の結果として、秘密集合関数装置10αが断片(cγα,cαβ)を、秘密集合関数装置10βが断片(cαβ,cβγ)を、秘密集合関数装置10γが断片(cβγ,cγα)を記録する。
【0067】
ビットA(n),n=0,…,N−1の整数変換の秘密計算
ビットA(n)の整数変換とは、
【0068】
【数1】

【0069】
を求めることである。また、秘密集合関数装置10α,10β,10γが分散して記録するビットA(n)の断片を(a(n)γα,a(n)αβ)、(a(n)αβ,a(n)βγ)、(a(n)βγ,a(n)γα)とする。秘密集合関数装置10αは、
【0070】
【数2】

【0071】
を計算して記録し、秘密集合関数装置10β
【0072】
【数3】

【0073】
を計算して記録し、秘密集合関数装置10γ
【0074】
【数4】

【0075】
を計算して記録する。
【0076】
Nビットの整数Aの二進数変換の秘密計算
x(n)は、xの下位n+1番目のビットを示すものとする。
(1)n=0からN−1について、秘密集合関数装置10βが(aαβ+aβγ mod W)(n)を秘密分散し、秘密集合関数装置10α,10β,10γが(aαβ+aβγ mod W)(n)の断片(b(n)γα,b(n)αβ)、(b(n)αβ,b(n)βγ)、(b(n)βγ,b(n)γα)を分散して記録する。n=0からN−1について、秘密集合関数装置10γが(aγα)(n)を秘密分散し、秘密集合関数装置10α,10β,10γが(aγα)(n)の断片((aγα)(n)γα,(aγα)(n)αβ)、((aγα)(n)αβ,(aγα)(n)βγ)、((aγα)(n)βγ,(aγα)(n)γα)を分散して記録する。
(2)cγα=0とし、n=0からN−1について(2−1)から(2−3)の処理を繰返し実行する。
(2−1)d=b(n)+(aγα)(n)−2b(n)(aγα)(n)
の秘密計算を実行し、dの断片を分散して記録する。
(2−2)a(n)=d+c−2d
の秘密計算を実行し、a(n)の断片を分散して記録する。
(2−3)n<N−1であれば、
n+1=b(n)(aγα)(n)+d−b(n)(aγα)(n)d
の秘密計算を実行し、cn+1の断片を分散して記録する。
【0077】
[プログラム、記録媒体]
上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【0078】
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
【0079】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【0080】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0081】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
【0082】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【符号の説明】
【0083】
10,…,10 秘密集合関数装置 100,…,100 秘密分散装置
105 選択手段 110,…,110 断片置換部
120,…,120 再分散部 130,…,130 初期情報分散部
140,…,140 初期乗算部 150,…,150 確認分散部
160,…,160 確認乗算部 170,…,170 改ざん検出部
190,…,190 記録部 300,…,300 集合関数制御部
310 事前処理手段 310,…,310 事前処理部
311 第1事前初期化手段 311,…,311 第1事前初期化部
312 第2事前初期化手段 312,…,312 第2事前初期化部
313 事前結合手段 313,…,313 事前結合部
314 保存手段 314,…,314 保存部
315 第2事前繰返手段 315,…,315 第2事前繰返部
316 事前削除手段 316,…,316 事前削除部
317 第1事前繰返手段 317,…,317 第1事前繰返部
320 初期化手段 320,…,320 初期化部
330 結合演算手段 330,…,330 結合演算部
331 第1結合手段 331,…,331 第1結合部
332 第2結合手段 332,…,332 第2結合部
333 第3結合手段 333,…,333 第3結合部
340 削除手段 340,…,340 削除部
1000 ネットワーク


【特許請求の範囲】
【請求項1】
N個の秘密集合関数装置R,…,Rで構成され、キーkと属性値vを含むM個の情報(k,v),…,(k,v)がそれぞれ秘密分散された情報([k],[v]),…,([k],[v])から、秘密分散された集計結果を求めるセキュア集合関数システムであって、
Mは2以上の整数、Nは3以上の整数、m,i,jは1以上M以下の整数、[]はカッコ内の情報が要素ごとに秘密分散された情報を示す記号、(+)は単位元が存在し結合律と可換律が成り立つ前記集計結果を求めるための演算を示す記号、(0)は演算(+)の単位元を示す記号とし、
M個のデータz,…,zを、z=vのように設定し、情報([k],[z]),…,([k],[z])を生成する初期化手段と、
キーkとキーk(ただし、i≠j)とが等しいときには
=z(+)z,z=(0)
とし、等しくないときには
=z,z=z
とする結合処理を、すべての等しいキーを持つ情報に対して秘密計算で実行する結合演算手段と、
を備えるセキュア集合関数システム。
【請求項2】
請求項1記載のセキュア集合関数システムであって、
情報([k],[v]),…,([k],[v])はキーkに基づいてソートされた情報とし、
前記結合演算手段の処理後に、M個の情報([k],[z])を秘密計算でランダム置換し、ランダム置換後のzが(0)かを確認し、z=(0)の場合には情報([k],[z])を削除する削除手段
も備え、
前記結合演算手段は、
iを1からM−1まで順番に値を大きくしながら、j=i+1に対して前記結合処理を行う、または、iをMから2まで順番に値を小さくしながら、j=i−1に対して前記結合処理を行う
ことを特徴とするセキュア集合関数システム。
【請求項3】
請求項1記載のセキュア集合関数システムであって、
Tは(logM)−1以上の最小の整数、tは0以上T以下の整数、^はべき乗を示す記号、情報([k],[v]),…,([k],[v])はキーkに基づいてソートされた情報とし、
前記結合演算手段の処理後に、M個の情報([k],[z])を秘密計算でランダム置換し、ランダム置換後のzが(0)かを確認し、z=(0)の場合には情報([k],[z])を削除する削除手段
も備え、
前記結合演算手段は、
i=1,2,…,M−2^tについて
とki+2^tが等しいときには
i+2^t’=z(+)zi+2^t
とし、等しくないときには
i+2^t’=zi+2^t
とする第1結合手段と、
i=1,2,…,Mについて
=z
とする第2結合手段と、
i=1,2,…,M−1について、kとki+1が等しいときには
=z
とし、等しくないときには
=(0)
とする
とする第3結合手段と、
を有し、t=0,1,2,…,Tについて、前記第1結合手段と前記第2結合手段の処理を繰返した後に前記第3結合手段の処理を行う
ことを特徴とするセキュア集合関数システム。
【請求項4】
請求項2または3記載のセキュア集合関数システムであって、
sをあらかじめ定めたM以下の整数、Kはキーkの取り得る値の数とし、
M’=Mとする第1事前初期化手段と、
t=0、M”=M’とする第2事前初期化手段と、
tにt+1を代入し、
1からM”/2以下の最大の整数までのiについて、k2i−1とk2iが等しいときには
2i=z2i−1(+)z2i,z2i−1=(0)
とし、等しくないときには
2i=z2i 2i−1=z2i−1
とする事前結合手段と、
奇数番目の情報([km’],[zm’])を抜き取って保存し、残った情報を新しい情報([k],[z])とし、新しい情報([k],[z])の数を新しいM”とする保存手段と、
前記事前結合手段と前記保存手段の処理を、M”が2K以下になるまで繰り返す第2事前繰返手段と、
前記保存手段が保存したすべての情報([km’],[zm’])と残った情報([k],[z])とを一緒にした上で、秘密計算でランダム置換し、ランダム置換後のzが(0)かを確認し、z=(0)の場合には情報([k],[z])を削除し、残った情報を新しい情報([k],[z])とし、新しい情報([k],[z])の数をM’とする事前削除手段と、
前記第2事前初期化手段、前記事前結合手段、前記保存手段、前記第2事前繰返手段、前記事前削除手段の処理をM’がsより小さくなるまで繰り返す第1事前繰返手段と
を有する事前処理手段も備え、
Mを、前記事前処理手段の処理後の情報([k],[z])の数に変更し、前記事前処理手段の処理後の情報([k],[z])に対して、前記初期化手段の処理を実行する
ことを特徴とするセキュア集合関数システム。
【請求項5】
キーkと属性値vを含むM個の情報(k,v),…,(k,v)がそれぞれ秘密分散された情報([k],[v]),…,([k],[v])から、秘密分散された集計結果を求めるセキュア集合関数システムを構成するN個の秘密集合関数装置の中の秘密集合関数装置であって、
Mは2以上の整数、Nは3以上の整数、m,i,jは1以上M以下の整数、[]はカッコ内の情報が要素ごとに秘密分散された情報を示す記号、(+)は単位元が存在し結合律と可換律が成り立つ前記集計結果を求めるための演算を示す記号、(0)は演算(+)の単位元を示す記号とし、
M個のデータz,…,zを、z=vのように設定し、情報([k],[z]),…,([k],[z])を生成するための初期化部と、
キーkとキーk(ただし、i≠j)とが等しいときには
=z(+)z,z=(0)
とし、等しくないときには
=z,z=z
とする結合処理を、すべての等しいキーを持つ情報に対して秘密計算で実行するための結合演算部と、
を備える秘密集合関数装置。
【請求項6】
N個の秘密集合関数装置R,…,Rを用いて、キーkと属性値vを含むM個の情報(k,v),…,(k,v)がそれぞれ秘密分散された情報([k],[v]),…,([k],[v])から、秘密分散された集計結果を求めるセキュア集合関数処理方法であって、
Mは2以上の整数、Nは3以上の整数、m,i,jは1以上M以下の整数、[]はカッコ内の情報が要素ごとに秘密分散された情報を示す記号、(+)は単位元が存在し結合律と可換律が成り立つ前記集計結果を求めるための演算を示す記号、(0)は演算(+)の単位元を示す記号とし、
M個のデータz,…,zを、z=vのように設定し、情報([k],[z]),…,([k],[z])を生成する初期化ステップと、
キーkとキーk(ただし、i≠j)とが等しいときには
=z(+)z,z=(0)
とし、等しくないときには
=z,z=z
とする結合処理を、すべての等しいキーを持つ情報に対して秘密計算で実行する結合演算ステップと、
を有するセキュア集合関数処理方法。
【請求項7】
請求項6記載のセキュア集合関数処理方法であって、
情報([k],[v]),…,([k],[v])はキーkに基づいてソートされた情報とし、
前記結合演算ステップ後に、M個の情報([k],[z])を秘密計算でランダム置換し、ランダム置換後のzが(0)かを確認し、z=(0)の場合には情報([k],[z])を削除する削除ステップ
も有し、
前記結合演算ステップは、
iを1からM−1まで順番に値を大きくしながら、j=i+1に対して前記結合処理を行う、または、iをMから2まで順番に値を小さくしながら、j=i−1に対して前記結合処理を行う
ことを特徴とするセキュア集合関数処理方法。
【請求項8】
請求項6記載のセキュア集合関数処理方法であって、
Tは(logM)−1以上の最小の整数、tは0以上T以下の整数、^はべき乗を示す記号、情報([k],[v]),…,([k],[v])はキーkに基づいてソートされた情報とし、
前記結合演算ステップ後に、M個の情報([k],[z])を秘密計算でランダム置換し、ランダム置換後のzが(0)かを確認し、z=(0)の場合には情報([k],[z])を削除する削除ステップ
も有し、
前記結合演算ステップは、
i=1,2,…,M−2^tについて
とki+2^tが等しいときには
i+2^t’=z(+)zi+2^t
とし、等しくないときには
i+2^t’=zi+2^t
とする第1結合サブステップと、
i=1,2,…,Mについて
=z
とする第2結合サブステップと、
i=1,2,…,M−1について、kとki+1が等しいときには
=z
とし、等しくないときには
=(0)
とする
とする第3結合サブステップと、
を有し、t=0,1,2,…,Tについて、前記第1結合サブステップと前記第2結合サブステップを繰返した後に前記第3結合サブステップを行う
ことを特徴とするセキュア集合関数処理方法。
【請求項9】
請求項7または8記載のセキュア集合関数処理方法であって、
sをあらかじめ定めたM以下の整数、Kはキーkの取り得る値の数とし、
M’=Mとする第1事前初期化サブステップと、
t=0、M”=M’とする第2事前初期化サブステップと、
tにt+1を代入し、
1からM”/2以下の最大の整数までのiについて、k2i−1とk2iが等しいときには
2i=z2i−1(+)z2i,z2i−1=(0)
とし、等しくないときには
2i=z2i 2i−1=z2i−1
とする事前結合サブステップと、
奇数番目の情報([km’],[zm’])を抜き取って保存し、残った情報を新しい情報([k],[z])とし、新しい情報([k],[z])の数を新しいM”とする保存サブステップと、
前記事前結合サブステップと前記保存サブステップを、M”が2K以下になるまで繰り返す第2事前繰返サブステップと、
前記保存サブステップが保存したすべての情報([km’],[zm’])と残った情報([k],[z])とを一緒にした上で、秘密計算でランダム置換し、ランダム置換後のzが(0)かを確認し、z=(0)の場合には情報([k],[z])を削除し、残った情報を新しい情報([k],[z])とし、新しい情報([k],[z])の数をM’とする事前削除サブステップと、
前記第2事前初期化サブステップ、前記事前結合サブステップ、前記保存サブステップ、前記第2事前繰返サブステップ、前記事前削除サブステップをM’がsより小さくなるまで繰り返す第1事前繰返サブステップと
を有する事前処理ステップも有し、
Mを、前記事前処理ステップ後の情報([k],[z])の数に変更し、前記事前処理ステップ後の情報([k],[z])に対して、前記初期化ステップの処理を実行する
ことを特徴とするセキュア集合関数処理方法。
【請求項10】
請求項1から4のいずれかに記載のセキュア集合関数システムの各秘密集合関数装置としてコンピュータを機能させるためのセキュア集合関数プログラム。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2012−154968(P2012−154968A)
【公開日】平成24年8月16日(2012.8.16)
【国際特許分類】
【出願番号】特願2011−11233(P2011−11233)
【出願日】平成23年1月21日(2011.1.21)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】