セキュア集合関数システム、秘密集合関数装置、セキュア集合関数処理方法、セキュア集合関数プログラム
【課題】情報を秘匿しながら、計算量がデータ数のみに比例する集合関数演算を可能にする。
【解決手段】本発明のセキュア集合関数システムは、N個の秘密集合関数装置で構成され、キーkmと属性値vmを含むM個の情報(k1,v1),…,(kM,vM)が秘密分散された情報([k1],[v1]),…,([kM],[vM])から、秘密分散された集計結果を求める。セキュア集合関数システムは、初期化手段と結合演算手段とを備える。初期化手段は、M個のデータz1,…,zMを、zm=vmのように設定し、情報([k1],[z1]),…,([kM],[zM])を生成する。結合演算手段は、キーkiとキーkjとが等しいときにはzj=zi(+)zj,zi=(0)とし、等しくないときにはzj=zj,zi=ziとする結合処理を、すべての等しいキーを持つ情報に対して秘密計算で実行する。
【解決手段】本発明のセキュア集合関数システムは、N個の秘密集合関数装置で構成され、キーkmと属性値vmを含むM個の情報(k1,v1),…,(kM,vM)が秘密分散された情報([k1],[v1]),…,([kM],[vM])から、秘密分散された集計結果を求める。セキュア集合関数システムは、初期化手段と結合演算手段とを備える。初期化手段は、M個のデータz1,…,zMを、zm=vmのように設定し、情報([k1],[z1]),…,([kM],[zM])を生成する。結合演算手段は、キーkiとキーkjとが等しいときにはzj=zi(+)zj,zi=(0)とし、等しくないときにはzj=zj,zi=ziとする結合処理を、すべての等しいキーを持つ情報に対して秘密計算で実行する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はデータを秘匿しつつ集計等の集合関数と呼ばれる処理を、グループ化を伴って行うセキュア集合関数システム、秘密集合関数装置、セキュア集合関数処理方法、セキュア集合関数プログラムに関する。
【背景技術】
【0002】
集合関数とは、単位元が存在し結合律と可換律の成り立つ演算(可換モノイド)をデータ群全体に行うことである。集合関数におけるグループ化とは、データ群を、キーとなる属性が等しいデータ群に分類し、分類した各データ群に対して集合関数を施すことである。
【0003】
暗号化された数値を復元すること無く特定の演算結果を得る方法として、例えば非特許文献1の秘密計算と呼ばれる方法がある。非特許文献1の方法では、3つの秘密計算装置に数値の断片を分散させるという暗号化を行い、数値を復元すること無く、加減算、定数和、乗算、定数倍、論理演算(否定,論理積,論理和,排他的論理和)、データ形式変換(整数,二進数)の結果を3つの秘密計算装置に分散された状態、すなわち暗号化されたまま保持させることができる。また、非特許文献2では、ソートの前後の値の対応を誰にも知られないように計算することを特徴とし、暗号化された複数のデータに対し、平文から計算される値でソートを行った結果の暗号文を計算する秘密ソート方法が提案されている。このような秘密計算を用いれば、集合関数演算も可能である。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】千田浩司, 濱田浩気, 五十嵐大, 高橋克巳, “軽量検証可能3パーティ秘匿関数計算の再考”, In CSS, 2010.
【非特許文献2】濱田浩気, 五十嵐大, 千田浩司, 高橋克巳, “3パーティ秘匿関数計算上のランダム置換プロトコル”, In CSS, 2010.
【発明の概要】
【発明が解決しようとする課題】
【0005】
例えば、従来の秘密計算を用いた以下の処理で、グループ化して集合関数演算を行うことが可能と考える。なお、集合関数演算を行う対象を、キーkiと属性値viを含む情報(ki,vi)とする。
全てのキー属性値に対して以下を繰り返す。
1. i番目のキー属性値kiに対して、zi=(0)とする。
2. 全データに対して以下を繰り返す。
j番目のデータのキー属性がkiならば、zi=zi(+)vj
キー属性がkiでなければzi=zi
ただし、(0)は単位元、(+)は当該集合関数の可換モノイド演算である。
【0006】
しかしながら、上記の方法では、計算量が「キー属性値の数×データ数」に比例し、効率が悪い。
【0007】
本発明は、情報を秘匿しながら、計算量がデータ数のみに比例し、キー属性値の数に依存しない集合関数演算を可能にする技術の提供を目的とする。
【課題を解決するための手段】
【0008】
本発明のセキュア集合関数システムは、N個の秘密集合関数装置R1,…,RNで構成され、キーkmと属性値vmを含むM個の情報(k1,v1),…,(kM,vM)がそれぞれ秘密分散された情報([k1],[v1]),…,([kM],[vM])から、秘密分散された集計結果を求める。ここで、Mは2以上の整数、Nは3以上の整数、m,i,jは1以上M以下の整数、[]はカッコ内の情報が要素ごとに秘密分散された情報を示す記号、(+)は単位元が存在し結合律と可換律が成り立つ前記集計結果を求めるための演算を示す記号、(0)は演算(+)の単位元を示す記号とする。
【0009】
セキュア集合関数システムは、初期化手段と結合演算手段とを備える。初期化手段は、M個のデータz1,…,zMを、zm=vmのように設定し、情報([k1],[z1]),…,([kM],[zM])を生成する。結合演算手段は、キーkiとキーkjとが等しいときには
zj=zi(+)zj,zi=(0)
とし、等しくないときには
zj=zj,zi=zi
とする結合処理を、すべての等しいキーを持つ情報に対して秘密計算で実行する。
【発明の効果】
【0010】
本発明のセキュア集合関数システムによれば、情報を秘匿しながら、計算量がデータ数のみに比例し、キー属性値の数に依存しない集合関数演算を実行できる。
【図面の簡単な説明】
【0011】
【図1】実施例1と実施例2のセキュア集合関数システムの構成例を示す図。
【図2】実施例1のセキュア集合関数システムの処理フローを示す図。
【図3】実施例2のセキュア集合関数システムの処理フローを示す図。
【図4】実施例3のセキュア集合関数システムの構成例を示す図。
【図5】実施例3のセキュア集合関数システムの処理フローを示す図。
【図6】本発明に利用できる秘密分散装置100nの機能構成例を詳しく示したセキュア集合関数システムを示す図。
【図7】ランダム置換の1つ目の処理フロー例を示す図。
【図8】ランダム置換の2つ目の処理フロー例を示す図。
【発明を実施するための形態】
【0012】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【実施例1】
【0013】
図1に実施例1のセキュア集合関数システムの構成例を示す。また、図2に実施例1のセキュア集合関数システムの処理フローを示す。実施例1のセキュア集合関数システムは、N個の秘密集合関数装置101,…,10Nで構成され、キーkmと属性値vmを含むM個の情報(k1,v1),…,(kM,vM)がそれぞれ秘密分散された情報([k1],[v1]),…,([kM],[vM])から、秘密分散された集計結果を求める。ここで、Mは2以上の整数、Nは3以上の整数、m,i,jは1以上M以下の整数、[]はカッコ内の情報が要素ごとに秘密分散された情報を示す記号、(+)は単位元が存在し結合律と可換律が成り立つような集計結果を求めるための演算を示す記号、(0)は演算(+)の単位元を示す記号とする。(+)の具体例としては、和(総和)、最小値、最大値などがある。
【0014】
秘密集合関数装置10nは、集合関数制御部300n、秘密分散装置100n、記録部190nを備える。秘密分散装置100nは、集合関数制御部300nの指示にしたがって実施例1の処理に必要な個々の秘密計算を行う。本発明の処理に必要な個々の秘密計算としては、秘密分散、復号、四則演算などがある。ただし、本発明は、これらの秘密計算を利用して効率よく集合関数演算を行うものであり、秘密計算自体に特徴がある発明ではない。そこで、秘密計算については、例を後述することとし、本発明のポイントを理解しやすくするためにここでの説明は省略する。なお、後述する秘密計算の方法は、1つの例であり、実施例1が利用できる秘密計算を限定するものではない。記録部190nは、秘密集合関数装置10nの処理に必要な情報を記録する構成部である。図1に示した選択手段105は後述する秘密計算では利用するが、利用する秘密計算によっては備えなくてもよい。
【0015】
各秘密集合関数装置10nの集合関数制御部300nは、初期化部320n、結合演算部330n、削除部340nを備える。そして、セキュア集合関数システムの初期化手段320(図示していない)は初期化部3201,…,320Nで構成され、結合演算手段330(図示していない)は結合演算部3301,…,330Nで構成され、削除手段340(図示していない)は削除部3401,…,340Nで構成される。
【0016】
初期化手段320は、M個のデータz1,…,zMを、zm=vmのように設定し、情報([k1],[z1]),…,([kM],[zM])を生成する(S340)。より具体的には、初期化部3201,…,320N(初期化手段320)は、秘密分散装置1001,…,100Nに属性値vmの断片と同じ断片を持つデータvmの断片を作らせ、各断片を秘密分散させることで情報([k1],[z1]),…,([kM],[zM])を生成させる。
【0017】
結合演算手段330は、キーkiとキーkjとが等しいときには
zj=zi(+)zj,zi=(0)
とし、等しくないときには
zj=zj,zi=zi
とする結合処理が、すべての等しいキーを持つ情報に対して実行されるまで、秘密計算で実行する(S330)。例えば、キーkiとキーkjとが等しいことを確認する論理回路は、従来技術として蓄積された論理回路の技術を用いれば、実現できる。キーkiとキーkjの2ビット展開した各ビットの排他的論理和の論理和の否定によって次のように確認してもよい。
【0018】
C=1−{(kiB[∨]kjB)∨・・・∨(ki1[∨]kj1)} (1)
ただし、[∨]は排他的論理和(XOR)を示す記号、∨は論理和(OR)を示す記号、kibは2ビット展開したときのキーkiの下からbビット目の値、Bは2ビット展開したときのキーkiの桁数とする。式(1)では、C=1ならばキーkiとキーkjとが等しく(真)、C=0ならばキーkiとキーkjとが異なる(偽)。また、式(1)の個々の演算は後述の秘密計算の例に示されているので、式(1)の演算は秘密計算で実行でき、秘密分散された[C]が求められる。したがって、確認後の分岐も秘密にするのであれば、[C]を用いた秘密計算をさらに組合せればよい。なお、後述する秘密計算は、数値の秘密分散、秘密分散された断片の復号、秘密分散された数値の四則計算、秘密分散されたビットごとの論理演算の基本的な計算方法を網羅して示している。したがって、従来技術として蓄積された論理回路の技術を用いれば、上述の等しいことを確認する方法のように、大小比較を比較する演算などの所望の演算を、後述する秘密計算の方法の組合せで実行できる。
【0019】
さらに、情報([k1],[z1]),…,([kM],[zM])がランダムに並んだ情報の場合は、i,jのすべての組合せに対して結合演算手段330の処理を行う必要がある。一方、情報([k1],[z1]),…,([kM],[zM])が何らかの規則に従って並んでいれば、i,jのすべての組合せまで実行する必要はない。例えば、情報([k1],[z1]),…,([kM],[zM])がキーkmに基づいてソートされている場合であれば、iを1からM−1まで順番に値を大きくしながら、j=i+1に対して、キーkiとキーkjとが等しいときには
zj=zi(+)zj,zi=(0)
とし、等しくないときには
zj=zj,zi=zi
とすればよい。もしくは、iをMから2まで順番に値を小さくしながら、j=i−1に対して、キーkiとキーkjとが等しいときには
zj=zi(+)zj,zi=(0)
とし、等しくないときには
zj=zj,zi=zi
とすればよい。このようにソート済みの情報であれば、隣り合う情報同士の比較を順番に行うだけで、同じ値のキーを持つすべての情報に対する集合関数演算を実行し、最後に結合したzjに集合関数演算の結果をまとめることができる。したがって、O(M)の計算量で処理ができる。
【0020】
削除手段340は、結合演算手段330の処理後に、M個の情報([km],[zm])を秘密計算でランダム置換し、ランダム置換後のzmが(0)かを秘密計算で確認し、確認結果を復元する。つまり、式(1)でzmと(0)に対する[C]を求め、[C]を復元してCを求める。そして、zm=(0)の場合(式(1)であればC=1の場合)には情報([km],[zm])を削除する(S340)。ステップS340の削除は、残りの情報の数が、情報([km],[zm])の数とキーの値の数の少ない方になるまで削除すればよい。なお、情報([k1],[z1]),…,([kM],[zM])がもともとランダムに並んでいる場合は、ランダム置換は必要ないので削除手段340を省略してもよい。情報([k1],[z1]),…,([kM],[zM])がキーkmに基づいてソートされている場合は、zm=(0)の確認結果を復元すると、キーの値が同じ情報が何個あるのか、何番目に境界があるのかなどのキーに関する情報が漏れてしまう。したがって、ランダム置換が必要となる。
【実施例2】
【0021】
図1に実施例2のセキュア集合関数システムの構成例を示す。また、図3に実施例2のセキュア集合関数システムの処理フローを示す。実施例2のセキュア集合関数システムも、N個の秘密集合関数装置101,…,10Nで構成され、キーkmと属性値vmを含むM個の情報(k1,v1),…,(kM,vM)がそれぞれ秘密分散された情報([k1],[v1]),…,([kM],[vM])から、秘密分散された集計結果を求める。ここで、Mは2以上の整数、Nは3以上の整数、m,i,jは1以上M以下の整数、[]はカッコ内の情報が要素ごとに秘密分散された情報を示す記号、(+)は単位元が存在し結合律と可換律が成り立つような集計結果を求めるための演算を示す記号、(0)は演算(+)の単位元を示す記号、Tは(log2M)−1以上の最小の整数、tは0以上T以下の整数、^はべき乗を示す記号とする。また、実施例2では、情報([k1],[v1]),…,([kM],[vM])はキーkmに基づいてソートされた情報とする。
【0022】
秘密集合関数装置10nは、集合関数制御部300n、秘密分散装置100n、記録部190nを備え、秘密分散装置100n、記録部190n、集合関数制御部300nの初期化部320n、削除部340nは実施例1と同じである。異なるのは、結合演算部330nである。つまり、初期化手段320と削除手段340は実施例1と同じであり、結合演算手段330が異なる。
【0023】
実施例2の結合演算部330nは、第1結合部331n、第2結合部332n、第3結合部333nを備える。そして、第1結合手段331(図示していない)は第1結合部3311,…,331Nで構成され、第2結合手段332(図示していない)は第2結合部3321,…,332Nで構成され、第3結合手段333(図示していない)は第3結合部3331,…,333Nで構成される。また、結合演算手段330は、第1結合手段331、第2結合手段332、第3結合手段333を有する。
【0024】
結合演算手段330は、tに0を代入する(S336)。第1結合手段331は、i=1,2,…,M−2^tについて、kiとki+2^tが等しいときには
zi+2^t’=zi(+)zi+2^t
とし、等しくないときには
zi+2^t’=zi+2^t
とする(S331)。より具体的には、第1結合部3311,…,331N(第1結合手段331)は、秘密分散装置1001,…,100Nに、i=1,2,…,M−2^tについて、kiとki+2^tが等しいかを、例えば式(1)の秘密計算で確認させる。そして、その結果に基づいて、zi+2^t’=zi(+)zi+2^tまたはzi+2^t’=zi+2^tの秘密計算を実行させる。なお、ステップS331のi=1,2,…,M−2^tについての処理は、互いに影響しないため並列に処理できる。
【0025】
第2結合手段332は、i=1,2,…,Mについて
zi=zi’
とする(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について、kiとki+1が等しいときには
zi=zi
とし、等しくないときには
zi=(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個の秘密集合関数装置101,…,10Nで構成され、キーkmと属性値vmを含むM個の情報(k1,v1),…,(kM,vM)がそれぞれ秘密分散された情報([k1],[v1]),…,([kM],[vM])から、秘密分散された集計結果を求める。ここで、Mは2以上の整数、Nは3以上の整数、m,i,jは1以上M以下の整数、[]はカッコ内の情報が要素ごとに秘密分散された情報を示す記号、(+)は単位元が存在し結合律と可換律が成り立つような集計結果を求めるための演算を示す記号、(0)は演算(+)の単位元を示す記号、sはあらかじめ定めたM以下の整数、Kはキーkmの取り得る値の数とする。また、実施例3では、情報([k1],[v1]),…,([kM],[vM])はキーkmに基づいてソートされた情報とする。
【0030】
秘密集合関数装置10nは、集合関数制御部300n、秘密分散装置100n、記録部190nを備え、秘密分散装置100n、記録部190n、集合関数制御部300nの初期化部320n、結合演算手段330、削除部340nは実施例1または実施例2と同じである。異なるのは、事前処理部310nである。つまり、初期化手段320と結合演算手段330と削除手段340は、実施例1または実施例2と同じである。
【0031】
事前処理部310nは、第1事前初期化部311n、第2事前初期化部312n、事前結合部313n、保存部314n、第2事前繰返部315n、事前削除部316n、第1事前繰返部317nを有する。そして、第1事前初期化手段311(図示していない)は第1事前初期化部3111,…,311Nで構成され、第2事前初期化手段312(図示していない)は第2事前初期化部3121,…,312Nで構成され、事前結合手段313(図示していない)は事前結合部3131,…,313Nで構成され、保存手段314(図示していない)は保存部3141,…,314Nで構成され、第2事前繰返手段315(図示していない)は第2事前繰返部3151,…,315Nで構成され、事前削除手段316(図示していない)は事前削除部3161,…,316Nで構成され、第1事前繰返手段317(図示していない)は第1事前繰返部3171,…,317Nで構成される。また、事前処理手段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が等しいときには
z2i=z2i−1(+)z2i,z2i−1=(0)
とし、等しくないときには
z2i=z2i, z2i−1=z2i−1
とする(S313)。なお、k2i−1とk2iとの比較は、事前結合部3131,…,313N(事前結合手段313)が、秘密分散装置1001,…,100Nに、例えば式(1)の論理式を用いた秘密計算を実行させればよい。また、異なるiに対する演算同士は互いに影響を与えないので、異なるiに対する演算は並列で行うことができる。
【0033】
保存手段314は、奇数番目の情報([km’],[zm’])を抜き取って保存し、残った情報を新しい情報([km],[zm])とし、新しい情報([km],[zm])の数を新しいM”とする(S314)。第2事前繰返手段315は、M”が2K以下か(第2事前繰返条件)を確認し、第2事前繰返条件を満たすまで事前結合手段313の処理(S313)と保存手段314の処理(S314)を繰り返す(S315)。
【0034】
事前削除手段S316は、保存手段314が保存したすべての情報([km’],[zm’])と残った情報([km],[zm])とを一緒にした上で、秘密計算でランダム置換し、ランダム置換後のzmが(0)かを秘密計算で確認し、zm=(0)の場合には情報([km],[zm])を削除し、残った情報を新しい情報([km],[zm])とし、新しい情報([km],[zm])の数を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)後の情報([km],[zm])の数に変更し、事前処理手段310の処理(S310)後の情報([km],[zm])に対して、実施例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つの方法に限定しないことを前提としており、具体例は示さなかった。以下の説明では、秘密集合関数装置101,…,10Nが実行するランダム置換とその他の秘密計算について説明する。なお、以下の秘密計算に関する説明は、1つの例でありこれに限定されるものではない。本発明のセキュア集合関数システムでは他の秘密計算を用いてもよい。
【0041】
ランダム置換1
図6に本発明に利用できる秘密分散装置100nの機能構成例を詳しく示したセキュア集合関数システムを示す。図7にランダム置換の1つ目の処理フロー例を示す。この例では、セキュア集合関数システムは選択手段105も備える。ここで、A1,…,AKを各秘密集合関数装置10nが断片を分散して記録するK個の数値(Kは2以上の整数)、数値Akをk番目の数値(kは1以上K以下の整数)、aknを秘密集合関数装置10nが記録するk番目の断片とする。なお、数値A1,…,AKが、秘匿化したい数値群であって、例えば、ソートの対象となる数値群である。ソートの対象となる数値群としては、例えば、数値Akが各々の人の年収を示すような数値群が考えられる。選択手段105は、いずれかの秘密集合関数装置の内部に配置されてもよいし、単独の装置であってもよい。
【0042】
セキュア集合関数システムは、選択手段と断片置換手段と再分散手段を備える。また、秘密分散装置100nは、少なくとも断片置換部110nと再分散部120nと記録部190nを備える。記録部190nは断片a1n,…,aKnなどを記録する。また、記録部190nは、自身が記録している断片aknが数値Akの何番目の断片なのかに関する情報も記録する。
【0043】
選択手段105は、N未満の数の秘密集合関数装置10nを選択する(S105)。例えば、N個の断片のうちN’個を集めれば数値を復元できる秘密分散であれば、断片置換手段がN’個以上N未満の秘密集合関数装置を選べばよい。
【0044】
断片置換手段は、少なくとも断片置換部1101,…,110Nを含んで構成される。そして、選択手段105に選択された秘密集合関数装置10i(ただし、iは選択された秘密集合関数装置を示す番号)の断片置換部110i間で{1,…,K}→{1,…,K}の全単射πを作成し、選択された秘密集合関数装置10iの記録部190iが記録する断片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.)などを用いて作成すればよい。また、全単射πは選択された秘密集合関数装置10i間で生成してもよいし、選択された秘密集合関数装置10iのうちの1つの秘密集合関数装置が生成して、選択された秘密集合関数装置10i間で共有してもよい。
【0045】
再分散手段は、少なくとも再分散部1201,…,120Nを含んで構成される。再分散手段は、断片置換手段によって置換された数値Aπ(k)に対応する断片aπ(k)i(k番目に置換されている)を用いて再分散化して新しい断片bk1,…,bkNを求め、数値Bkの断片とする(S120)。つまり、Aπ(k)=Bkの関係が成り立つが、選ばれなかった秘密集合関数装置は全単射πを知らないので、Aπ(k)=Bkであることを知らない。なお、各秘密集合関数装置10nの記録部190nは、断片bknを記録するだけでなく、自身が記録しているk番目の断片である断片bknが数値Bkの断片であるという情報も記録する。また、数値B1,…,BKを新しい数値A1,…,AKとし、選択手段で選択する秘密集合関数装置の組み合わせを変更すれば、この処理を繰り返すことができる(S111,S112)。
【0046】
本発明のセキュア集合関数システムによれば、限定された秘密集合関数装置間で断片をシャッフルする。したがって、選ばれなかった秘密集合関数装置は、全単射πを知らないので、数値A1,…,AKと数値B1,…,BKとの対応が分からない。つまり、特定の秘密集合関数装置からは数値A1,…,AKと数値B1,…,BKとの対応が分からない状態にしたいのであれば、その秘密集合関数装置を選択手段105で選ばないように、選択する秘密集合関数装置をあらかじめ定めればよい。また、選択手段105が選ぶ秘密集合関数装置を変更しながらこの処理を繰り返し、全ての秘密集合関数装置が選ばれなかったことがある状態にすれば、全ての秘密集合関数装置が数値A1,…,AKと対応つけることができない数値B1,…,BKを得ることができる。
【0047】
ランダム置換2
次のランダム置換のためのセキュア集合関数システムの秘密分散装置100nを詳細に示した機能構成例も図6に示す。図8にランダム置換の2つ目の処理フロー例を示す。この例でも、セキュア集合関数システムは選択手段105も備える。ここで、A1,…,AKを各秘密集合関数装置10nが断片を分散して記録するK個の数値(Kは2以上の整数)、数値Akをk番目の数値(kは1以上K以下の整数)、aknを秘密集合関数装置10nが記録する数値Akの断片とする。
【0048】
本発明のセキュア集合関数システムは、選択手段105、初期情報分散手段、初期乗算手段、断片置換手段、再分散手段、確認分散手段、確認乗算手段、改ざん検出手段を備える。また、秘密分散装置100nは、初期情報分散部130n、初期乗算部140n、断片置換部110n、再分散部120n、確認分散部150n、確認乗算部160n、改ざん検出部170nを備える。記録部190nは断片a1n,…,aKnなどを記録する。また、記録部190nは、自身が記録している断片aknが数値Akの何番目の断片なのかに関する情報も記録する。
【0049】
選択手段105はランダム置換1と同じである。初期情報分散手段は、初期情報分散部1301,…,130Nで構成される。そして、選択手段105に選択された秘密集合関数装置10iの初期情報分散部130iは、秘密集合関数装置101,…,10Nのどれも知らないK個の数値P1,…,PKそれぞれの断片p1n,…,pKnを秘密計算によって求め、記録部190nに記録する(S130)。具体的には、選択手段105に選択された秘密集合関数装置から、2つ以上の秘密集合関数装置を選定する。そして、選定された秘密集合関数装置が作った値に基づいて、どの装置も知らない値の断片を作ればよい。例えば、2つの秘密集合関数装置10i,10jを選定し(ただし、i≠j)、秘密集合関数装置10iが生成した数値の断片と、秘密集合関数装置10jが生成した数値の断片を分散して記録する。そして、その2つの数値の和を秘密計算によって求め、結果が分からないように断片を分散して記録すれば、全ての秘密集合関数装置が知らない数値の断片を分散して記録できる。この例では、選定した秘密集合関数装置を2つとしたが、2つ以上でもかまわない。
【0050】
初期乗算手段は、初期乗算部1401,…,140Nで構成される。初期乗算部1401,…,140Nは、Sk=Pk×Akである数値Skの断片sk1,…,skNを秘密計算によって求め、記録部1901,…,190Nに分散して記録する(S140)。
【0051】
断片置換手段と再分散手段は、ランダム置換1と同じである。確認分散手段は、確認分散部1501,…,150Nで構成される。確認分散部1501,…,150Nは、k=1〜Kについて、Qk=Pπ(k)である数値Qkの断片qk1,…,qkNを秘密計算によって生成し、記録部1901,…,190Nに分散して記録する(S150)。具体的には、ステップS130で選定された秘密集合関数装置が作った値に基づいて、どの装置も知らない値の別の断片を作ればよい。例えば、ステップS130で選定された秘密集合関数装置10iが数値Pπ(k)用に生成した数値の別の断片(新しい断片)と、ステップS130で選定された秘密集合関数装置10jが数値Pπ(k)用に生成した数値の別の断片(新しい断片)を分散して記録する。そして、その2つの数値の和を秘密計算によって求め、結果が分からないように断片を分散して記録すれば、Qk=Pπ(k)であり、かつ、全ての秘密集合関数装置が知らない数値の断片を分散して記録できる。この例では、選定した秘密集合関数装置を2つとしたが、ステップS130と同じように2つ以上でもかまわない。
【0052】
確認乗算手段は、確認乗算部1601,…,160Nで構成される。確認乗算部1601,…,160Nは、Tk=Qk×Bkである数値Tkの断片tk1,…,tkNを秘密計算によって求め、記録部1901,…,190Nに分散して記録する(S160)。
【0053】
改ざん検出手段は、改ざん検出部1701,…,170Nで構成される。改ざん検出部1701,…,170Nは、k=1〜Kについて、Tk=Sπ(k)であることを確認する(S170)。tkn≠sπ(k)nの場合には、改ざんがあったとして異常終了する。また、数値B1,…,BKを新しい数値A1,…,AKとし、選択手段で選択する秘密集合関数装置の組み合わせを変更すれば、この処理を繰り返すことができる(S111,S112)。
【0054】
[その他の秘密計算]
ここでは、セキュア集合関数システムが3個の秘密集合関数装置で構成された場合の秘密計算の例を示す。また、秘密集合関数装置101,102,103の番号を固定する必要はないので、秘密集合関数装置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αは、乱数r1,r2,cγαを生成し、cαβ=(aγα+aαβ)(bγα+bαβ)−r1−r2−cγαを計算する。そして、秘密集合関数装置10αは、秘密集合関数装置10βに(r1,cαβ)を、秘密集合関数装置10γに(r2,cγα)を送信する。
(2)秘密集合関数装置10βは、y=aαβbβγ+aβγbαβ+r1を計算し、秘密集合関数装置10γに送信する。
(3)秘密集合関数装置10γは、z=aβγbγα+aγαbβγ+r2を計算し、秘密集合関数装置10αに送信する。
(4)秘密集合関数装置10βと秘密集合関数装置10γは、それぞれcβγ=y+z+aβγbβγを計算する。
(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)dn=b(n)+(aγα)(n)−2b(n)(aγα)(n)
の秘密計算を実行し、dnの断片を分散して記録する。
(2−2)a(n)=dn+cn−2dncn
の秘密計算を実行し、a(n)の断片を分散して記録する。
(2−3)n<N−1であれば、
cn+1=b(n)(aγα)(n)+dncn−b(n)(aγα)(n)dncn
の秘密計算を実行し、cn+1の断片を分散して記録する。
【0077】
[プログラム、記録媒体]
上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【0078】
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
【0079】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【0080】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0081】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
【0082】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【符号の説明】
【0083】
101,…,10N 秘密集合関数装置 1001,…,100N 秘密分散装置
105 選択手段 1101,…,110N 断片置換部
1201,…,120N 再分散部 1301,…,130N 初期情報分散部
1401,…,140N 初期乗算部 1501,…,150N 確認分散部
1601,…,160N 確認乗算部 1701,…,170N 改ざん検出部
1901,…,190N 記録部 3001,…,300N 集合関数制御部
310 事前処理手段 3101,…,310N 事前処理部
311 第1事前初期化手段 3111,…,311N 第1事前初期化部
312 第2事前初期化手段 3121,…,312N 第2事前初期化部
313 事前結合手段 3131,…,313N 事前結合部
314 保存手段 3141,…,314N 保存部
315 第2事前繰返手段 3151,…,315N 第2事前繰返部
316 事前削除手段 3161,…,316N 事前削除部
317 第1事前繰返手段 3171,…,317N 第1事前繰返部
320 初期化手段 3201,…,320N 初期化部
330 結合演算手段 3301,…,330N 結合演算部
331 第1結合手段 3311,…,331N 第1結合部
332 第2結合手段 3321,…,332N 第2結合部
333 第3結合手段 3331,…,333N 第3結合部
340 削除手段 3401,…,340N 削除部
1000 ネットワーク
【技術分野】
【0001】
本発明はデータを秘匿しつつ集計等の集合関数と呼ばれる処理を、グループ化を伴って行うセキュア集合関数システム、秘密集合関数装置、セキュア集合関数処理方法、セキュア集合関数プログラムに関する。
【背景技術】
【0002】
集合関数とは、単位元が存在し結合律と可換律の成り立つ演算(可換モノイド)をデータ群全体に行うことである。集合関数におけるグループ化とは、データ群を、キーとなる属性が等しいデータ群に分類し、分類した各データ群に対して集合関数を施すことである。
【0003】
暗号化された数値を復元すること無く特定の演算結果を得る方法として、例えば非特許文献1の秘密計算と呼ばれる方法がある。非特許文献1の方法では、3つの秘密計算装置に数値の断片を分散させるという暗号化を行い、数値を復元すること無く、加減算、定数和、乗算、定数倍、論理演算(否定,論理積,論理和,排他的論理和)、データ形式変換(整数,二進数)の結果を3つの秘密計算装置に分散された状態、すなわち暗号化されたまま保持させることができる。また、非特許文献2では、ソートの前後の値の対応を誰にも知られないように計算することを特徴とし、暗号化された複数のデータに対し、平文から計算される値でソートを行った結果の暗号文を計算する秘密ソート方法が提案されている。このような秘密計算を用いれば、集合関数演算も可能である。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】千田浩司, 濱田浩気, 五十嵐大, 高橋克巳, “軽量検証可能3パーティ秘匿関数計算の再考”, In CSS, 2010.
【非特許文献2】濱田浩気, 五十嵐大, 千田浩司, 高橋克巳, “3パーティ秘匿関数計算上のランダム置換プロトコル”, In CSS, 2010.
【発明の概要】
【発明が解決しようとする課題】
【0005】
例えば、従来の秘密計算を用いた以下の処理で、グループ化して集合関数演算を行うことが可能と考える。なお、集合関数演算を行う対象を、キーkiと属性値viを含む情報(ki,vi)とする。
全てのキー属性値に対して以下を繰り返す。
1. i番目のキー属性値kiに対して、zi=(0)とする。
2. 全データに対して以下を繰り返す。
j番目のデータのキー属性がkiならば、zi=zi(+)vj
キー属性がkiでなければzi=zi
ただし、(0)は単位元、(+)は当該集合関数の可換モノイド演算である。
【0006】
しかしながら、上記の方法では、計算量が「キー属性値の数×データ数」に比例し、効率が悪い。
【0007】
本発明は、情報を秘匿しながら、計算量がデータ数のみに比例し、キー属性値の数に依存しない集合関数演算を可能にする技術の提供を目的とする。
【課題を解決するための手段】
【0008】
本発明のセキュア集合関数システムは、N個の秘密集合関数装置R1,…,RNで構成され、キーkmと属性値vmを含むM個の情報(k1,v1),…,(kM,vM)がそれぞれ秘密分散された情報([k1],[v1]),…,([kM],[vM])から、秘密分散された集計結果を求める。ここで、Mは2以上の整数、Nは3以上の整数、m,i,jは1以上M以下の整数、[]はカッコ内の情報が要素ごとに秘密分散された情報を示す記号、(+)は単位元が存在し結合律と可換律が成り立つ前記集計結果を求めるための演算を示す記号、(0)は演算(+)の単位元を示す記号とする。
【0009】
セキュア集合関数システムは、初期化手段と結合演算手段とを備える。初期化手段は、M個のデータz1,…,zMを、zm=vmのように設定し、情報([k1],[z1]),…,([kM],[zM])を生成する。結合演算手段は、キーkiとキーkjとが等しいときには
zj=zi(+)zj,zi=(0)
とし、等しくないときには
zj=zj,zi=zi
とする結合処理を、すべての等しいキーを持つ情報に対して秘密計算で実行する。
【発明の効果】
【0010】
本発明のセキュア集合関数システムによれば、情報を秘匿しながら、計算量がデータ数のみに比例し、キー属性値の数に依存しない集合関数演算を実行できる。
【図面の簡単な説明】
【0011】
【図1】実施例1と実施例2のセキュア集合関数システムの構成例を示す図。
【図2】実施例1のセキュア集合関数システムの処理フローを示す図。
【図3】実施例2のセキュア集合関数システムの処理フローを示す図。
【図4】実施例3のセキュア集合関数システムの構成例を示す図。
【図5】実施例3のセキュア集合関数システムの処理フローを示す図。
【図6】本発明に利用できる秘密分散装置100nの機能構成例を詳しく示したセキュア集合関数システムを示す図。
【図7】ランダム置換の1つ目の処理フロー例を示す図。
【図8】ランダム置換の2つ目の処理フロー例を示す図。
【発明を実施するための形態】
【0012】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【実施例1】
【0013】
図1に実施例1のセキュア集合関数システムの構成例を示す。また、図2に実施例1のセキュア集合関数システムの処理フローを示す。実施例1のセキュア集合関数システムは、N個の秘密集合関数装置101,…,10Nで構成され、キーkmと属性値vmを含むM個の情報(k1,v1),…,(kM,vM)がそれぞれ秘密分散された情報([k1],[v1]),…,([kM],[vM])から、秘密分散された集計結果を求める。ここで、Mは2以上の整数、Nは3以上の整数、m,i,jは1以上M以下の整数、[]はカッコ内の情報が要素ごとに秘密分散された情報を示す記号、(+)は単位元が存在し結合律と可換律が成り立つような集計結果を求めるための演算を示す記号、(0)は演算(+)の単位元を示す記号とする。(+)の具体例としては、和(総和)、最小値、最大値などがある。
【0014】
秘密集合関数装置10nは、集合関数制御部300n、秘密分散装置100n、記録部190nを備える。秘密分散装置100nは、集合関数制御部300nの指示にしたがって実施例1の処理に必要な個々の秘密計算を行う。本発明の処理に必要な個々の秘密計算としては、秘密分散、復号、四則演算などがある。ただし、本発明は、これらの秘密計算を利用して効率よく集合関数演算を行うものであり、秘密計算自体に特徴がある発明ではない。そこで、秘密計算については、例を後述することとし、本発明のポイントを理解しやすくするためにここでの説明は省略する。なお、後述する秘密計算の方法は、1つの例であり、実施例1が利用できる秘密計算を限定するものではない。記録部190nは、秘密集合関数装置10nの処理に必要な情報を記録する構成部である。図1に示した選択手段105は後述する秘密計算では利用するが、利用する秘密計算によっては備えなくてもよい。
【0015】
各秘密集合関数装置10nの集合関数制御部300nは、初期化部320n、結合演算部330n、削除部340nを備える。そして、セキュア集合関数システムの初期化手段320(図示していない)は初期化部3201,…,320Nで構成され、結合演算手段330(図示していない)は結合演算部3301,…,330Nで構成され、削除手段340(図示していない)は削除部3401,…,340Nで構成される。
【0016】
初期化手段320は、M個のデータz1,…,zMを、zm=vmのように設定し、情報([k1],[z1]),…,([kM],[zM])を生成する(S340)。より具体的には、初期化部3201,…,320N(初期化手段320)は、秘密分散装置1001,…,100Nに属性値vmの断片と同じ断片を持つデータvmの断片を作らせ、各断片を秘密分散させることで情報([k1],[z1]),…,([kM],[zM])を生成させる。
【0017】
結合演算手段330は、キーkiとキーkjとが等しいときには
zj=zi(+)zj,zi=(0)
とし、等しくないときには
zj=zj,zi=zi
とする結合処理が、すべての等しいキーを持つ情報に対して実行されるまで、秘密計算で実行する(S330)。例えば、キーkiとキーkjとが等しいことを確認する論理回路は、従来技術として蓄積された論理回路の技術を用いれば、実現できる。キーkiとキーkjの2ビット展開した各ビットの排他的論理和の論理和の否定によって次のように確認してもよい。
【0018】
C=1−{(kiB[∨]kjB)∨・・・∨(ki1[∨]kj1)} (1)
ただし、[∨]は排他的論理和(XOR)を示す記号、∨は論理和(OR)を示す記号、kibは2ビット展開したときのキーkiの下からbビット目の値、Bは2ビット展開したときのキーkiの桁数とする。式(1)では、C=1ならばキーkiとキーkjとが等しく(真)、C=0ならばキーkiとキーkjとが異なる(偽)。また、式(1)の個々の演算は後述の秘密計算の例に示されているので、式(1)の演算は秘密計算で実行でき、秘密分散された[C]が求められる。したがって、確認後の分岐も秘密にするのであれば、[C]を用いた秘密計算をさらに組合せればよい。なお、後述する秘密計算は、数値の秘密分散、秘密分散された断片の復号、秘密分散された数値の四則計算、秘密分散されたビットごとの論理演算の基本的な計算方法を網羅して示している。したがって、従来技術として蓄積された論理回路の技術を用いれば、上述の等しいことを確認する方法のように、大小比較を比較する演算などの所望の演算を、後述する秘密計算の方法の組合せで実行できる。
【0019】
さらに、情報([k1],[z1]),…,([kM],[zM])がランダムに並んだ情報の場合は、i,jのすべての組合せに対して結合演算手段330の処理を行う必要がある。一方、情報([k1],[z1]),…,([kM],[zM])が何らかの規則に従って並んでいれば、i,jのすべての組合せまで実行する必要はない。例えば、情報([k1],[z1]),…,([kM],[zM])がキーkmに基づいてソートされている場合であれば、iを1からM−1まで順番に値を大きくしながら、j=i+1に対して、キーkiとキーkjとが等しいときには
zj=zi(+)zj,zi=(0)
とし、等しくないときには
zj=zj,zi=zi
とすればよい。もしくは、iをMから2まで順番に値を小さくしながら、j=i−1に対して、キーkiとキーkjとが等しいときには
zj=zi(+)zj,zi=(0)
とし、等しくないときには
zj=zj,zi=zi
とすればよい。このようにソート済みの情報であれば、隣り合う情報同士の比較を順番に行うだけで、同じ値のキーを持つすべての情報に対する集合関数演算を実行し、最後に結合したzjに集合関数演算の結果をまとめることができる。したがって、O(M)の計算量で処理ができる。
【0020】
削除手段340は、結合演算手段330の処理後に、M個の情報([km],[zm])を秘密計算でランダム置換し、ランダム置換後のzmが(0)かを秘密計算で確認し、確認結果を復元する。つまり、式(1)でzmと(0)に対する[C]を求め、[C]を復元してCを求める。そして、zm=(0)の場合(式(1)であればC=1の場合)には情報([km],[zm])を削除する(S340)。ステップS340の削除は、残りの情報の数が、情報([km],[zm])の数とキーの値の数の少ない方になるまで削除すればよい。なお、情報([k1],[z1]),…,([kM],[zM])がもともとランダムに並んでいる場合は、ランダム置換は必要ないので削除手段340を省略してもよい。情報([k1],[z1]),…,([kM],[zM])がキーkmに基づいてソートされている場合は、zm=(0)の確認結果を復元すると、キーの値が同じ情報が何個あるのか、何番目に境界があるのかなどのキーに関する情報が漏れてしまう。したがって、ランダム置換が必要となる。
【実施例2】
【0021】
図1に実施例2のセキュア集合関数システムの構成例を示す。また、図3に実施例2のセキュア集合関数システムの処理フローを示す。実施例2のセキュア集合関数システムも、N個の秘密集合関数装置101,…,10Nで構成され、キーkmと属性値vmを含むM個の情報(k1,v1),…,(kM,vM)がそれぞれ秘密分散された情報([k1],[v1]),…,([kM],[vM])から、秘密分散された集計結果を求める。ここで、Mは2以上の整数、Nは3以上の整数、m,i,jは1以上M以下の整数、[]はカッコ内の情報が要素ごとに秘密分散された情報を示す記号、(+)は単位元が存在し結合律と可換律が成り立つような集計結果を求めるための演算を示す記号、(0)は演算(+)の単位元を示す記号、Tは(log2M)−1以上の最小の整数、tは0以上T以下の整数、^はべき乗を示す記号とする。また、実施例2では、情報([k1],[v1]),…,([kM],[vM])はキーkmに基づいてソートされた情報とする。
【0022】
秘密集合関数装置10nは、集合関数制御部300n、秘密分散装置100n、記録部190nを備え、秘密分散装置100n、記録部190n、集合関数制御部300nの初期化部320n、削除部340nは実施例1と同じである。異なるのは、結合演算部330nである。つまり、初期化手段320と削除手段340は実施例1と同じであり、結合演算手段330が異なる。
【0023】
実施例2の結合演算部330nは、第1結合部331n、第2結合部332n、第3結合部333nを備える。そして、第1結合手段331(図示していない)は第1結合部3311,…,331Nで構成され、第2結合手段332(図示していない)は第2結合部3321,…,332Nで構成され、第3結合手段333(図示していない)は第3結合部3331,…,333Nで構成される。また、結合演算手段330は、第1結合手段331、第2結合手段332、第3結合手段333を有する。
【0024】
結合演算手段330は、tに0を代入する(S336)。第1結合手段331は、i=1,2,…,M−2^tについて、kiとki+2^tが等しいときには
zi+2^t’=zi(+)zi+2^t
とし、等しくないときには
zi+2^t’=zi+2^t
とする(S331)。より具体的には、第1結合部3311,…,331N(第1結合手段331)は、秘密分散装置1001,…,100Nに、i=1,2,…,M−2^tについて、kiとki+2^tが等しいかを、例えば式(1)の秘密計算で確認させる。そして、その結果に基づいて、zi+2^t’=zi(+)zi+2^tまたはzi+2^t’=zi+2^tの秘密計算を実行させる。なお、ステップS331のi=1,2,…,M−2^tについての処理は、互いに影響しないため並列に処理できる。
【0025】
第2結合手段332は、i=1,2,…,Mについて
zi=zi’
とする(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について、kiとki+1が等しいときには
zi=zi
とし、等しくないときには
zi=(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個の秘密集合関数装置101,…,10Nで構成され、キーkmと属性値vmを含むM個の情報(k1,v1),…,(kM,vM)がそれぞれ秘密分散された情報([k1],[v1]),…,([kM],[vM])から、秘密分散された集計結果を求める。ここで、Mは2以上の整数、Nは3以上の整数、m,i,jは1以上M以下の整数、[]はカッコ内の情報が要素ごとに秘密分散された情報を示す記号、(+)は単位元が存在し結合律と可換律が成り立つような集計結果を求めるための演算を示す記号、(0)は演算(+)の単位元を示す記号、sはあらかじめ定めたM以下の整数、Kはキーkmの取り得る値の数とする。また、実施例3では、情報([k1],[v1]),…,([kM],[vM])はキーkmに基づいてソートされた情報とする。
【0030】
秘密集合関数装置10nは、集合関数制御部300n、秘密分散装置100n、記録部190nを備え、秘密分散装置100n、記録部190n、集合関数制御部300nの初期化部320n、結合演算手段330、削除部340nは実施例1または実施例2と同じである。異なるのは、事前処理部310nである。つまり、初期化手段320と結合演算手段330と削除手段340は、実施例1または実施例2と同じである。
【0031】
事前処理部310nは、第1事前初期化部311n、第2事前初期化部312n、事前結合部313n、保存部314n、第2事前繰返部315n、事前削除部316n、第1事前繰返部317nを有する。そして、第1事前初期化手段311(図示していない)は第1事前初期化部3111,…,311Nで構成され、第2事前初期化手段312(図示していない)は第2事前初期化部3121,…,312Nで構成され、事前結合手段313(図示していない)は事前結合部3131,…,313Nで構成され、保存手段314(図示していない)は保存部3141,…,314Nで構成され、第2事前繰返手段315(図示していない)は第2事前繰返部3151,…,315Nで構成され、事前削除手段316(図示していない)は事前削除部3161,…,316Nで構成され、第1事前繰返手段317(図示していない)は第1事前繰返部3171,…,317Nで構成される。また、事前処理手段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が等しいときには
z2i=z2i−1(+)z2i,z2i−1=(0)
とし、等しくないときには
z2i=z2i, z2i−1=z2i−1
とする(S313)。なお、k2i−1とk2iとの比較は、事前結合部3131,…,313N(事前結合手段313)が、秘密分散装置1001,…,100Nに、例えば式(1)の論理式を用いた秘密計算を実行させればよい。また、異なるiに対する演算同士は互いに影響を与えないので、異なるiに対する演算は並列で行うことができる。
【0033】
保存手段314は、奇数番目の情報([km’],[zm’])を抜き取って保存し、残った情報を新しい情報([km],[zm])とし、新しい情報([km],[zm])の数を新しいM”とする(S314)。第2事前繰返手段315は、M”が2K以下か(第2事前繰返条件)を確認し、第2事前繰返条件を満たすまで事前結合手段313の処理(S313)と保存手段314の処理(S314)を繰り返す(S315)。
【0034】
事前削除手段S316は、保存手段314が保存したすべての情報([km’],[zm’])と残った情報([km],[zm])とを一緒にした上で、秘密計算でランダム置換し、ランダム置換後のzmが(0)かを秘密計算で確認し、zm=(0)の場合には情報([km],[zm])を削除し、残った情報を新しい情報([km],[zm])とし、新しい情報([km],[zm])の数を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)後の情報([km],[zm])の数に変更し、事前処理手段310の処理(S310)後の情報([km],[zm])に対して、実施例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つの方法に限定しないことを前提としており、具体例は示さなかった。以下の説明では、秘密集合関数装置101,…,10Nが実行するランダム置換とその他の秘密計算について説明する。なお、以下の秘密計算に関する説明は、1つの例でありこれに限定されるものではない。本発明のセキュア集合関数システムでは他の秘密計算を用いてもよい。
【0041】
ランダム置換1
図6に本発明に利用できる秘密分散装置100nの機能構成例を詳しく示したセキュア集合関数システムを示す。図7にランダム置換の1つ目の処理フロー例を示す。この例では、セキュア集合関数システムは選択手段105も備える。ここで、A1,…,AKを各秘密集合関数装置10nが断片を分散して記録するK個の数値(Kは2以上の整数)、数値Akをk番目の数値(kは1以上K以下の整数)、aknを秘密集合関数装置10nが記録するk番目の断片とする。なお、数値A1,…,AKが、秘匿化したい数値群であって、例えば、ソートの対象となる数値群である。ソートの対象となる数値群としては、例えば、数値Akが各々の人の年収を示すような数値群が考えられる。選択手段105は、いずれかの秘密集合関数装置の内部に配置されてもよいし、単独の装置であってもよい。
【0042】
セキュア集合関数システムは、選択手段と断片置換手段と再分散手段を備える。また、秘密分散装置100nは、少なくとも断片置換部110nと再分散部120nと記録部190nを備える。記録部190nは断片a1n,…,aKnなどを記録する。また、記録部190nは、自身が記録している断片aknが数値Akの何番目の断片なのかに関する情報も記録する。
【0043】
選択手段105は、N未満の数の秘密集合関数装置10nを選択する(S105)。例えば、N個の断片のうちN’個を集めれば数値を復元できる秘密分散であれば、断片置換手段がN’個以上N未満の秘密集合関数装置を選べばよい。
【0044】
断片置換手段は、少なくとも断片置換部1101,…,110Nを含んで構成される。そして、選択手段105に選択された秘密集合関数装置10i(ただし、iは選択された秘密集合関数装置を示す番号)の断片置換部110i間で{1,…,K}→{1,…,K}の全単射πを作成し、選択された秘密集合関数装置10iの記録部190iが記録する断片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.)などを用いて作成すればよい。また、全単射πは選択された秘密集合関数装置10i間で生成してもよいし、選択された秘密集合関数装置10iのうちの1つの秘密集合関数装置が生成して、選択された秘密集合関数装置10i間で共有してもよい。
【0045】
再分散手段は、少なくとも再分散部1201,…,120Nを含んで構成される。再分散手段は、断片置換手段によって置換された数値Aπ(k)に対応する断片aπ(k)i(k番目に置換されている)を用いて再分散化して新しい断片bk1,…,bkNを求め、数値Bkの断片とする(S120)。つまり、Aπ(k)=Bkの関係が成り立つが、選ばれなかった秘密集合関数装置は全単射πを知らないので、Aπ(k)=Bkであることを知らない。なお、各秘密集合関数装置10nの記録部190nは、断片bknを記録するだけでなく、自身が記録しているk番目の断片である断片bknが数値Bkの断片であるという情報も記録する。また、数値B1,…,BKを新しい数値A1,…,AKとし、選択手段で選択する秘密集合関数装置の組み合わせを変更すれば、この処理を繰り返すことができる(S111,S112)。
【0046】
本発明のセキュア集合関数システムによれば、限定された秘密集合関数装置間で断片をシャッフルする。したがって、選ばれなかった秘密集合関数装置は、全単射πを知らないので、数値A1,…,AKと数値B1,…,BKとの対応が分からない。つまり、特定の秘密集合関数装置からは数値A1,…,AKと数値B1,…,BKとの対応が分からない状態にしたいのであれば、その秘密集合関数装置を選択手段105で選ばないように、選択する秘密集合関数装置をあらかじめ定めればよい。また、選択手段105が選ぶ秘密集合関数装置を変更しながらこの処理を繰り返し、全ての秘密集合関数装置が選ばれなかったことがある状態にすれば、全ての秘密集合関数装置が数値A1,…,AKと対応つけることができない数値B1,…,BKを得ることができる。
【0047】
ランダム置換2
次のランダム置換のためのセキュア集合関数システムの秘密分散装置100nを詳細に示した機能構成例も図6に示す。図8にランダム置換の2つ目の処理フロー例を示す。この例でも、セキュア集合関数システムは選択手段105も備える。ここで、A1,…,AKを各秘密集合関数装置10nが断片を分散して記録するK個の数値(Kは2以上の整数)、数値Akをk番目の数値(kは1以上K以下の整数)、aknを秘密集合関数装置10nが記録する数値Akの断片とする。
【0048】
本発明のセキュア集合関数システムは、選択手段105、初期情報分散手段、初期乗算手段、断片置換手段、再分散手段、確認分散手段、確認乗算手段、改ざん検出手段を備える。また、秘密分散装置100nは、初期情報分散部130n、初期乗算部140n、断片置換部110n、再分散部120n、確認分散部150n、確認乗算部160n、改ざん検出部170nを備える。記録部190nは断片a1n,…,aKnなどを記録する。また、記録部190nは、自身が記録している断片aknが数値Akの何番目の断片なのかに関する情報も記録する。
【0049】
選択手段105はランダム置換1と同じである。初期情報分散手段は、初期情報分散部1301,…,130Nで構成される。そして、選択手段105に選択された秘密集合関数装置10iの初期情報分散部130iは、秘密集合関数装置101,…,10Nのどれも知らないK個の数値P1,…,PKそれぞれの断片p1n,…,pKnを秘密計算によって求め、記録部190nに記録する(S130)。具体的には、選択手段105に選択された秘密集合関数装置から、2つ以上の秘密集合関数装置を選定する。そして、選定された秘密集合関数装置が作った値に基づいて、どの装置も知らない値の断片を作ればよい。例えば、2つの秘密集合関数装置10i,10jを選定し(ただし、i≠j)、秘密集合関数装置10iが生成した数値の断片と、秘密集合関数装置10jが生成した数値の断片を分散して記録する。そして、その2つの数値の和を秘密計算によって求め、結果が分からないように断片を分散して記録すれば、全ての秘密集合関数装置が知らない数値の断片を分散して記録できる。この例では、選定した秘密集合関数装置を2つとしたが、2つ以上でもかまわない。
【0050】
初期乗算手段は、初期乗算部1401,…,140Nで構成される。初期乗算部1401,…,140Nは、Sk=Pk×Akである数値Skの断片sk1,…,skNを秘密計算によって求め、記録部1901,…,190Nに分散して記録する(S140)。
【0051】
断片置換手段と再分散手段は、ランダム置換1と同じである。確認分散手段は、確認分散部1501,…,150Nで構成される。確認分散部1501,…,150Nは、k=1〜Kについて、Qk=Pπ(k)である数値Qkの断片qk1,…,qkNを秘密計算によって生成し、記録部1901,…,190Nに分散して記録する(S150)。具体的には、ステップS130で選定された秘密集合関数装置が作った値に基づいて、どの装置も知らない値の別の断片を作ればよい。例えば、ステップS130で選定された秘密集合関数装置10iが数値Pπ(k)用に生成した数値の別の断片(新しい断片)と、ステップS130で選定された秘密集合関数装置10jが数値Pπ(k)用に生成した数値の別の断片(新しい断片)を分散して記録する。そして、その2つの数値の和を秘密計算によって求め、結果が分からないように断片を分散して記録すれば、Qk=Pπ(k)であり、かつ、全ての秘密集合関数装置が知らない数値の断片を分散して記録できる。この例では、選定した秘密集合関数装置を2つとしたが、ステップS130と同じように2つ以上でもかまわない。
【0052】
確認乗算手段は、確認乗算部1601,…,160Nで構成される。確認乗算部1601,…,160Nは、Tk=Qk×Bkである数値Tkの断片tk1,…,tkNを秘密計算によって求め、記録部1901,…,190Nに分散して記録する(S160)。
【0053】
改ざん検出手段は、改ざん検出部1701,…,170Nで構成される。改ざん検出部1701,…,170Nは、k=1〜Kについて、Tk=Sπ(k)であることを確認する(S170)。tkn≠sπ(k)nの場合には、改ざんがあったとして異常終了する。また、数値B1,…,BKを新しい数値A1,…,AKとし、選択手段で選択する秘密集合関数装置の組み合わせを変更すれば、この処理を繰り返すことができる(S111,S112)。
【0054】
[その他の秘密計算]
ここでは、セキュア集合関数システムが3個の秘密集合関数装置で構成された場合の秘密計算の例を示す。また、秘密集合関数装置101,102,103の番号を固定する必要はないので、秘密集合関数装置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αは、乱数r1,r2,cγαを生成し、cαβ=(aγα+aαβ)(bγα+bαβ)−r1−r2−cγαを計算する。そして、秘密集合関数装置10αは、秘密集合関数装置10βに(r1,cαβ)を、秘密集合関数装置10γに(r2,cγα)を送信する。
(2)秘密集合関数装置10βは、y=aαβbβγ+aβγbαβ+r1を計算し、秘密集合関数装置10γに送信する。
(3)秘密集合関数装置10γは、z=aβγbγα+aγαbβγ+r2を計算し、秘密集合関数装置10αに送信する。
(4)秘密集合関数装置10βと秘密集合関数装置10γは、それぞれcβγ=y+z+aβγbβγを計算する。
(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)dn=b(n)+(aγα)(n)−2b(n)(aγα)(n)
の秘密計算を実行し、dnの断片を分散して記録する。
(2−2)a(n)=dn+cn−2dncn
の秘密計算を実行し、a(n)の断片を分散して記録する。
(2−3)n<N−1であれば、
cn+1=b(n)(aγα)(n)+dncn−b(n)(aγα)(n)dncn
の秘密計算を実行し、cn+1の断片を分散して記録する。
【0077】
[プログラム、記録媒体]
上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【0078】
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
【0079】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【0080】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0081】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
【0082】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【符号の説明】
【0083】
101,…,10N 秘密集合関数装置 1001,…,100N 秘密分散装置
105 選択手段 1101,…,110N 断片置換部
1201,…,120N 再分散部 1301,…,130N 初期情報分散部
1401,…,140N 初期乗算部 1501,…,150N 確認分散部
1601,…,160N 確認乗算部 1701,…,170N 改ざん検出部
1901,…,190N 記録部 3001,…,300N 集合関数制御部
310 事前処理手段 3101,…,310N 事前処理部
311 第1事前初期化手段 3111,…,311N 第1事前初期化部
312 第2事前初期化手段 3121,…,312N 第2事前初期化部
313 事前結合手段 3131,…,313N 事前結合部
314 保存手段 3141,…,314N 保存部
315 第2事前繰返手段 3151,…,315N 第2事前繰返部
316 事前削除手段 3161,…,316N 事前削除部
317 第1事前繰返手段 3171,…,317N 第1事前繰返部
320 初期化手段 3201,…,320N 初期化部
330 結合演算手段 3301,…,330N 結合演算部
331 第1結合手段 3311,…,331N 第1結合部
332 第2結合手段 3321,…,332N 第2結合部
333 第3結合手段 3331,…,333N 第3結合部
340 削除手段 3401,…,340N 削除部
1000 ネットワーク
【特許請求の範囲】
【請求項1】
N個の秘密集合関数装置R1,…,RNで構成され、キーkmと属性値vmを含むM個の情報(k1,v1),…,(kM,vM)がそれぞれ秘密分散された情報([k1],[v1]),…,([kM],[vM])から、秘密分散された集計結果を求めるセキュア集合関数システムであって、
Mは2以上の整数、Nは3以上の整数、m,i,jは1以上M以下の整数、[]はカッコ内の情報が要素ごとに秘密分散された情報を示す記号、(+)は単位元が存在し結合律と可換律が成り立つ前記集計結果を求めるための演算を示す記号、(0)は演算(+)の単位元を示す記号とし、
M個のデータz1,…,zMを、zm=vmのように設定し、情報([k1],[z1]),…,([kM],[zM])を生成する初期化手段と、
キーkiとキーkj(ただし、i≠j)とが等しいときには
zj=zi(+)zj,zi=(0)
とし、等しくないときには
zj=zj,zi=zi
とする結合処理を、すべての等しいキーを持つ情報に対して秘密計算で実行する結合演算手段と、
を備えるセキュア集合関数システム。
【請求項2】
請求項1記載のセキュア集合関数システムであって、
情報([k1],[v1]),…,([kM],[vM])はキーkmに基づいてソートされた情報とし、
前記結合演算手段の処理後に、M個の情報([km],[zm])を秘密計算でランダム置換し、ランダム置換後のzmが(0)かを確認し、zm=(0)の場合には情報([km],[zm])を削除する削除手段
も備え、
前記結合演算手段は、
iを1からM−1まで順番に値を大きくしながら、j=i+1に対して前記結合処理を行う、または、iをMから2まで順番に値を小さくしながら、j=i−1に対して前記結合処理を行う
ことを特徴とするセキュア集合関数システム。
【請求項3】
請求項1記載のセキュア集合関数システムであって、
Tは(log2M)−1以上の最小の整数、tは0以上T以下の整数、^はべき乗を示す記号、情報([k1],[v1]),…,([kM],[vM])はキーkmに基づいてソートされた情報とし、
前記結合演算手段の処理後に、M個の情報([km],[zm])を秘密計算でランダム置換し、ランダム置換後のzmが(0)かを確認し、zm=(0)の場合には情報([km],[zm])を削除する削除手段
も備え、
前記結合演算手段は、
i=1,2,…,M−2^tについて
kiとki+2^tが等しいときには
zi+2^t’=zi(+)zi+2^t
とし、等しくないときには
zi+2^t’=zi+2^t
とする第1結合手段と、
i=1,2,…,Mについて
zi=zi’
とする第2結合手段と、
i=1,2,…,M−1について、kiとki+1が等しいときには
zi=zi
とし、等しくないときには
zi=(0)
とする
とする第3結合手段と、
を有し、t=0,1,2,…,Tについて、前記第1結合手段と前記第2結合手段の処理を繰返した後に前記第3結合手段の処理を行う
ことを特徴とするセキュア集合関数システム。
【請求項4】
請求項2または3記載のセキュア集合関数システムであって、
sをあらかじめ定めたM以下の整数、Kはキーkmの取り得る値の数とし、
M’=Mとする第1事前初期化手段と、
t=0、M”=M’とする第2事前初期化手段と、
tにt+1を代入し、
1からM”/2以下の最大の整数までのiについて、k2i−1とk2iが等しいときには
z2i=z2i−1(+)z2i,z2i−1=(0)
とし、等しくないときには
z2i=z2i, z2i−1=z2i−1
とする事前結合手段と、
奇数番目の情報([km’],[zm’])を抜き取って保存し、残った情報を新しい情報([km],[zm])とし、新しい情報([km],[zm])の数を新しいM”とする保存手段と、
前記事前結合手段と前記保存手段の処理を、M”が2K以下になるまで繰り返す第2事前繰返手段と、
前記保存手段が保存したすべての情報([km’],[zm’])と残った情報([km],[zm])とを一緒にした上で、秘密計算でランダム置換し、ランダム置換後のzmが(0)かを確認し、zm=(0)の場合には情報([km],[zm])を削除し、残った情報を新しい情報([km],[zm])とし、新しい情報([km],[zm])の数をM’とする事前削除手段と、
前記第2事前初期化手段、前記事前結合手段、前記保存手段、前記第2事前繰返手段、前記事前削除手段の処理をM’がsより小さくなるまで繰り返す第1事前繰返手段と
を有する事前処理手段も備え、
Mを、前記事前処理手段の処理後の情報([km],[zm])の数に変更し、前記事前処理手段の処理後の情報([km],[zm])に対して、前記初期化手段の処理を実行する
ことを特徴とするセキュア集合関数システム。
【請求項5】
キーkmと属性値vmを含むM個の情報(k1,v1),…,(kM,vM)がそれぞれ秘密分散された情報([k1],[v1]),…,([kM],[vM])から、秘密分散された集計結果を求めるセキュア集合関数システムを構成するN個の秘密集合関数装置の中の秘密集合関数装置であって、
Mは2以上の整数、Nは3以上の整数、m,i,jは1以上M以下の整数、[]はカッコ内の情報が要素ごとに秘密分散された情報を示す記号、(+)は単位元が存在し結合律と可換律が成り立つ前記集計結果を求めるための演算を示す記号、(0)は演算(+)の単位元を示す記号とし、
M個のデータz1,…,zMを、zm=vmのように設定し、情報([k1],[z1]),…,([kM],[zM])を生成するための初期化部と、
キーkiとキーkj(ただし、i≠j)とが等しいときには
zj=zi(+)zj,zi=(0)
とし、等しくないときには
zj=zj,zi=zi
とする結合処理を、すべての等しいキーを持つ情報に対して秘密計算で実行するための結合演算部と、
を備える秘密集合関数装置。
【請求項6】
N個の秘密集合関数装置R1,…,RNを用いて、キーkmと属性値vmを含むM個の情報(k1,v1),…,(kM,vM)がそれぞれ秘密分散された情報([k1],[v1]),…,([kM],[vM])から、秘密分散された集計結果を求めるセキュア集合関数処理方法であって、
Mは2以上の整数、Nは3以上の整数、m,i,jは1以上M以下の整数、[]はカッコ内の情報が要素ごとに秘密分散された情報を示す記号、(+)は単位元が存在し結合律と可換律が成り立つ前記集計結果を求めるための演算を示す記号、(0)は演算(+)の単位元を示す記号とし、
M個のデータz1,…,zMを、zm=vmのように設定し、情報([k1],[z1]),…,([kM],[zM])を生成する初期化ステップと、
キーkiとキーkj(ただし、i≠j)とが等しいときには
zj=zi(+)zj,zi=(0)
とし、等しくないときには
zj=zj,zi=zi
とする結合処理を、すべての等しいキーを持つ情報に対して秘密計算で実行する結合演算ステップと、
を有するセキュア集合関数処理方法。
【請求項7】
請求項6記載のセキュア集合関数処理方法であって、
情報([k1],[v1]),…,([kM],[vM])はキーkmに基づいてソートされた情報とし、
前記結合演算ステップ後に、M個の情報([km],[zm])を秘密計算でランダム置換し、ランダム置換後のzmが(0)かを確認し、zm=(0)の場合には情報([km],[zm])を削除する削除ステップ
も有し、
前記結合演算ステップは、
iを1からM−1まで順番に値を大きくしながら、j=i+1に対して前記結合処理を行う、または、iをMから2まで順番に値を小さくしながら、j=i−1に対して前記結合処理を行う
ことを特徴とするセキュア集合関数処理方法。
【請求項8】
請求項6記載のセキュア集合関数処理方法であって、
Tは(log2M)−1以上の最小の整数、tは0以上T以下の整数、^はべき乗を示す記号、情報([k1],[v1]),…,([kM],[vM])はキーkmに基づいてソートされた情報とし、
前記結合演算ステップ後に、M個の情報([km],[zm])を秘密計算でランダム置換し、ランダム置換後のzmが(0)かを確認し、zm=(0)の場合には情報([km],[zm])を削除する削除ステップ
も有し、
前記結合演算ステップは、
i=1,2,…,M−2^tについて
kiとki+2^tが等しいときには
zi+2^t’=zi(+)zi+2^t
とし、等しくないときには
zi+2^t’=zi+2^t
とする第1結合サブステップと、
i=1,2,…,Mについて
zi=zi’
とする第2結合サブステップと、
i=1,2,…,M−1について、kiとki+1が等しいときには
zi=zi
とし、等しくないときには
zi=(0)
とする
とする第3結合サブステップと、
を有し、t=0,1,2,…,Tについて、前記第1結合サブステップと前記第2結合サブステップを繰返した後に前記第3結合サブステップを行う
ことを特徴とするセキュア集合関数処理方法。
【請求項9】
請求項7または8記載のセキュア集合関数処理方法であって、
sをあらかじめ定めたM以下の整数、Kはキーkmの取り得る値の数とし、
M’=Mとする第1事前初期化サブステップと、
t=0、M”=M’とする第2事前初期化サブステップと、
tにt+1を代入し、
1からM”/2以下の最大の整数までのiについて、k2i−1とk2iが等しいときには
z2i=z2i−1(+)z2i,z2i−1=(0)
とし、等しくないときには
z2i=z2i, z2i−1=z2i−1
とする事前結合サブステップと、
奇数番目の情報([km’],[zm’])を抜き取って保存し、残った情報を新しい情報([km],[zm])とし、新しい情報([km],[zm])の数を新しいM”とする保存サブステップと、
前記事前結合サブステップと前記保存サブステップを、M”が2K以下になるまで繰り返す第2事前繰返サブステップと、
前記保存サブステップが保存したすべての情報([km’],[zm’])と残った情報([km],[zm])とを一緒にした上で、秘密計算でランダム置換し、ランダム置換後のzmが(0)かを確認し、zm=(0)の場合には情報([km],[zm])を削除し、残った情報を新しい情報([km],[zm])とし、新しい情報([km],[zm])の数をM’とする事前削除サブステップと、
前記第2事前初期化サブステップ、前記事前結合サブステップ、前記保存サブステップ、前記第2事前繰返サブステップ、前記事前削除サブステップをM’がsより小さくなるまで繰り返す第1事前繰返サブステップと
を有する事前処理ステップも有し、
Mを、前記事前処理ステップ後の情報([km],[zm])の数に変更し、前記事前処理ステップ後の情報([km],[zm])に対して、前記初期化ステップの処理を実行する
ことを特徴とするセキュア集合関数処理方法。
【請求項10】
請求項1から4のいずれかに記載のセキュア集合関数システムの各秘密集合関数装置としてコンピュータを機能させるためのセキュア集合関数プログラム。
【請求項1】
N個の秘密集合関数装置R1,…,RNで構成され、キーkmと属性値vmを含むM個の情報(k1,v1),…,(kM,vM)がそれぞれ秘密分散された情報([k1],[v1]),…,([kM],[vM])から、秘密分散された集計結果を求めるセキュア集合関数システムであって、
Mは2以上の整数、Nは3以上の整数、m,i,jは1以上M以下の整数、[]はカッコ内の情報が要素ごとに秘密分散された情報を示す記号、(+)は単位元が存在し結合律と可換律が成り立つ前記集計結果を求めるための演算を示す記号、(0)は演算(+)の単位元を示す記号とし、
M個のデータz1,…,zMを、zm=vmのように設定し、情報([k1],[z1]),…,([kM],[zM])を生成する初期化手段と、
キーkiとキーkj(ただし、i≠j)とが等しいときには
zj=zi(+)zj,zi=(0)
とし、等しくないときには
zj=zj,zi=zi
とする結合処理を、すべての等しいキーを持つ情報に対して秘密計算で実行する結合演算手段と、
を備えるセキュア集合関数システム。
【請求項2】
請求項1記載のセキュア集合関数システムであって、
情報([k1],[v1]),…,([kM],[vM])はキーkmに基づいてソートされた情報とし、
前記結合演算手段の処理後に、M個の情報([km],[zm])を秘密計算でランダム置換し、ランダム置換後のzmが(0)かを確認し、zm=(0)の場合には情報([km],[zm])を削除する削除手段
も備え、
前記結合演算手段は、
iを1からM−1まで順番に値を大きくしながら、j=i+1に対して前記結合処理を行う、または、iをMから2まで順番に値を小さくしながら、j=i−1に対して前記結合処理を行う
ことを特徴とするセキュア集合関数システム。
【請求項3】
請求項1記載のセキュア集合関数システムであって、
Tは(log2M)−1以上の最小の整数、tは0以上T以下の整数、^はべき乗を示す記号、情報([k1],[v1]),…,([kM],[vM])はキーkmに基づいてソートされた情報とし、
前記結合演算手段の処理後に、M個の情報([km],[zm])を秘密計算でランダム置換し、ランダム置換後のzmが(0)かを確認し、zm=(0)の場合には情報([km],[zm])を削除する削除手段
も備え、
前記結合演算手段は、
i=1,2,…,M−2^tについて
kiとki+2^tが等しいときには
zi+2^t’=zi(+)zi+2^t
とし、等しくないときには
zi+2^t’=zi+2^t
とする第1結合手段と、
i=1,2,…,Mについて
zi=zi’
とする第2結合手段と、
i=1,2,…,M−1について、kiとki+1が等しいときには
zi=zi
とし、等しくないときには
zi=(0)
とする
とする第3結合手段と、
を有し、t=0,1,2,…,Tについて、前記第1結合手段と前記第2結合手段の処理を繰返した後に前記第3結合手段の処理を行う
ことを特徴とするセキュア集合関数システム。
【請求項4】
請求項2または3記載のセキュア集合関数システムであって、
sをあらかじめ定めたM以下の整数、Kはキーkmの取り得る値の数とし、
M’=Mとする第1事前初期化手段と、
t=0、M”=M’とする第2事前初期化手段と、
tにt+1を代入し、
1からM”/2以下の最大の整数までのiについて、k2i−1とk2iが等しいときには
z2i=z2i−1(+)z2i,z2i−1=(0)
とし、等しくないときには
z2i=z2i, z2i−1=z2i−1
とする事前結合手段と、
奇数番目の情報([km’],[zm’])を抜き取って保存し、残った情報を新しい情報([km],[zm])とし、新しい情報([km],[zm])の数を新しいM”とする保存手段と、
前記事前結合手段と前記保存手段の処理を、M”が2K以下になるまで繰り返す第2事前繰返手段と、
前記保存手段が保存したすべての情報([km’],[zm’])と残った情報([km],[zm])とを一緒にした上で、秘密計算でランダム置換し、ランダム置換後のzmが(0)かを確認し、zm=(0)の場合には情報([km],[zm])を削除し、残った情報を新しい情報([km],[zm])とし、新しい情報([km],[zm])の数をM’とする事前削除手段と、
前記第2事前初期化手段、前記事前結合手段、前記保存手段、前記第2事前繰返手段、前記事前削除手段の処理をM’がsより小さくなるまで繰り返す第1事前繰返手段と
を有する事前処理手段も備え、
Mを、前記事前処理手段の処理後の情報([km],[zm])の数に変更し、前記事前処理手段の処理後の情報([km],[zm])に対して、前記初期化手段の処理を実行する
ことを特徴とするセキュア集合関数システム。
【請求項5】
キーkmと属性値vmを含むM個の情報(k1,v1),…,(kM,vM)がそれぞれ秘密分散された情報([k1],[v1]),…,([kM],[vM])から、秘密分散された集計結果を求めるセキュア集合関数システムを構成するN個の秘密集合関数装置の中の秘密集合関数装置であって、
Mは2以上の整数、Nは3以上の整数、m,i,jは1以上M以下の整数、[]はカッコ内の情報が要素ごとに秘密分散された情報を示す記号、(+)は単位元が存在し結合律と可換律が成り立つ前記集計結果を求めるための演算を示す記号、(0)は演算(+)の単位元を示す記号とし、
M個のデータz1,…,zMを、zm=vmのように設定し、情報([k1],[z1]),…,([kM],[zM])を生成するための初期化部と、
キーkiとキーkj(ただし、i≠j)とが等しいときには
zj=zi(+)zj,zi=(0)
とし、等しくないときには
zj=zj,zi=zi
とする結合処理を、すべての等しいキーを持つ情報に対して秘密計算で実行するための結合演算部と、
を備える秘密集合関数装置。
【請求項6】
N個の秘密集合関数装置R1,…,RNを用いて、キーkmと属性値vmを含むM個の情報(k1,v1),…,(kM,vM)がそれぞれ秘密分散された情報([k1],[v1]),…,([kM],[vM])から、秘密分散された集計結果を求めるセキュア集合関数処理方法であって、
Mは2以上の整数、Nは3以上の整数、m,i,jは1以上M以下の整数、[]はカッコ内の情報が要素ごとに秘密分散された情報を示す記号、(+)は単位元が存在し結合律と可換律が成り立つ前記集計結果を求めるための演算を示す記号、(0)は演算(+)の単位元を示す記号とし、
M個のデータz1,…,zMを、zm=vmのように設定し、情報([k1],[z1]),…,([kM],[zM])を生成する初期化ステップと、
キーkiとキーkj(ただし、i≠j)とが等しいときには
zj=zi(+)zj,zi=(0)
とし、等しくないときには
zj=zj,zi=zi
とする結合処理を、すべての等しいキーを持つ情報に対して秘密計算で実行する結合演算ステップと、
を有するセキュア集合関数処理方法。
【請求項7】
請求項6記載のセキュア集合関数処理方法であって、
情報([k1],[v1]),…,([kM],[vM])はキーkmに基づいてソートされた情報とし、
前記結合演算ステップ後に、M個の情報([km],[zm])を秘密計算でランダム置換し、ランダム置換後のzmが(0)かを確認し、zm=(0)の場合には情報([km],[zm])を削除する削除ステップ
も有し、
前記結合演算ステップは、
iを1からM−1まで順番に値を大きくしながら、j=i+1に対して前記結合処理を行う、または、iをMから2まで順番に値を小さくしながら、j=i−1に対して前記結合処理を行う
ことを特徴とするセキュア集合関数処理方法。
【請求項8】
請求項6記載のセキュア集合関数処理方法であって、
Tは(log2M)−1以上の最小の整数、tは0以上T以下の整数、^はべき乗を示す記号、情報([k1],[v1]),…,([kM],[vM])はキーkmに基づいてソートされた情報とし、
前記結合演算ステップ後に、M個の情報([km],[zm])を秘密計算でランダム置換し、ランダム置換後のzmが(0)かを確認し、zm=(0)の場合には情報([km],[zm])を削除する削除ステップ
も有し、
前記結合演算ステップは、
i=1,2,…,M−2^tについて
kiとki+2^tが等しいときには
zi+2^t’=zi(+)zi+2^t
とし、等しくないときには
zi+2^t’=zi+2^t
とする第1結合サブステップと、
i=1,2,…,Mについて
zi=zi’
とする第2結合サブステップと、
i=1,2,…,M−1について、kiとki+1が等しいときには
zi=zi
とし、等しくないときには
zi=(0)
とする
とする第3結合サブステップと、
を有し、t=0,1,2,…,Tについて、前記第1結合サブステップと前記第2結合サブステップを繰返した後に前記第3結合サブステップを行う
ことを特徴とするセキュア集合関数処理方法。
【請求項9】
請求項7または8記載のセキュア集合関数処理方法であって、
sをあらかじめ定めたM以下の整数、Kはキーkmの取り得る値の数とし、
M’=Mとする第1事前初期化サブステップと、
t=0、M”=M’とする第2事前初期化サブステップと、
tにt+1を代入し、
1からM”/2以下の最大の整数までのiについて、k2i−1とk2iが等しいときには
z2i=z2i−1(+)z2i,z2i−1=(0)
とし、等しくないときには
z2i=z2i, z2i−1=z2i−1
とする事前結合サブステップと、
奇数番目の情報([km’],[zm’])を抜き取って保存し、残った情報を新しい情報([km],[zm])とし、新しい情報([km],[zm])の数を新しいM”とする保存サブステップと、
前記事前結合サブステップと前記保存サブステップを、M”が2K以下になるまで繰り返す第2事前繰返サブステップと、
前記保存サブステップが保存したすべての情報([km’],[zm’])と残った情報([km],[zm])とを一緒にした上で、秘密計算でランダム置換し、ランダム置換後のzmが(0)かを確認し、zm=(0)の場合には情報([km],[zm])を削除し、残った情報を新しい情報([km],[zm])とし、新しい情報([km],[zm])の数をM’とする事前削除サブステップと、
前記第2事前初期化サブステップ、前記事前結合サブステップ、前記保存サブステップ、前記第2事前繰返サブステップ、前記事前削除サブステップをM’がsより小さくなるまで繰り返す第1事前繰返サブステップと
を有する事前処理ステップも有し、
Mを、前記事前処理ステップ後の情報([km],[zm])の数に変更し、前記事前処理ステップ後の情報([km],[zm])に対して、前記初期化ステップの処理を実行する
ことを特徴とするセキュア集合関数処理方法。
【請求項10】
請求項1から4のいずれかに記載のセキュア集合関数システムの各秘密集合関数装置としてコンピュータを機能させるためのセキュア集合関数プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【公開番号】特開2012−154968(P2012−154968A)
【公開日】平成24年8月16日(2012.8.16)
【国際特許分類】
【出願番号】特願2011−11233(P2011−11233)
【出願日】平成23年1月21日(2011.1.21)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】
【公開日】平成24年8月16日(2012.8.16)
【国際特許分類】
【出願日】平成23年1月21日(2011.1.21)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】
[ Back to top ]