JP5873822B2 - 秘匿共通集合演算システム及び秘匿共通集合演算方法 - Google Patents

秘匿共通集合演算システム及び秘匿共通集合演算方法 Download PDF

Info

Publication number
JP5873822B2
JP5873822B2 JP2013028107A JP2013028107A JP5873822B2 JP 5873822 B2 JP5873822 B2 JP 5873822B2 JP 2013028107 A JP2013028107 A JP 2013028107A JP 2013028107 A JP2013028107 A JP 2013028107A JP 5873822 B2 JP5873822 B2 JP 5873822B2
Authority
JP
Japan
Prior art keywords
player
common set
terminals
group
server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2013028107A
Other languages
English (en)
Other versions
JP2014157264A (ja
Inventor
石井 淳
淳 石井
浩之 前大道
浩之 前大道
依田 育生
育生 依田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2013028107A priority Critical patent/JP5873822B2/ja
Publication of JP2014157264A publication Critical patent/JP2014157264A/ja
Application granted granted Critical
Publication of JP5873822B2 publication Critical patent/JP5873822B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、秘匿共通集合演算に関する。
従来、様々なアプリケーションにおいて、データベースに保存された複数の集合に含まれる共通の要素からなる共通集合を導出する共通集合演算が利用されている。例えば、SNS(Social Networking Service)において、ユーザが知り合いを容易に発見できるよう、当該ユーザに対して他のユーザとの間で共通する友人情報を共通集合演算によって導出し、これを表示する機能が活用されている。
全ての集合要素が友人情報のような公開情報に相当するならば、複数の集合に含まれる要素同士を単純に比較することによって、共通集合を導出することができる。しかしながら、一部の要素がプライバシ情報に相当する場合には、共通集合演算を可能な限り秘匿化することが好ましい。具体的には、各ユーザに関連付けられる集合の要素は、共通集合演算を実行するサーバ及び他のユーザに対して基本的に秘匿され、複数の集合間で共通する一部の要素に限ってこれらサーバ及び複数のユーザに対して開示されることが望まれる。しかしながら、共通集合演算を秘匿化するためには、通常よりも複雑なプロトコルが求められる。
具体的には、要素を暗号化またはハッシュ化してから演算を行うことによって、各集合に含まれる要素を秘匿しながら共通集合を導出する秘匿共通集合演算が提案されている(非特許文献1及び非特許文献2)。この秘匿共通集合演算は、共通集合に含まれない要素がプライバシ情報に相当する場合、必要以上の要素が公開されることが好ましくない場合などでの適用が期待されている。例えば、飛行機の乗客リストをテロリストのデータベースと照合する場合、グループ内でメンバのスケジュールを調整する場合などにこの秘匿共通集合演算を適用することによって、一般乗客のプライバシを守りつつテロリストを発見したり、グループの各メンバが他のメンバに全てのスケジュールを開示することなくスケジュールを調整したりすることが可能となる。
しかしながら、この秘匿共通集合演算は、暗号化処理、復号化処理、べき乗計算された数値を用いた演算などを伴う。即ち、この秘匿共通集合演算は、最低でも512ビットから1024ビット程度の桁の大きな数値を取り扱う必要がある。故に、この秘匿共通集合演算は、必要な計算時間及びハードウェアリソースが大きくなりがちである。特に、演算能力の高いサーバではなくユーザの所持するスマートフォン、タブレットなどの情報処理端末が要素を暗号化またはハッシュ化するのであれば、当該情報処理端末に備えられるメモリ及びCPUの性能が概して高くないことを考慮して、暗号化またはハッシュ化される要素数を適切に絞り込むことが好ましい。
また、単純な秘匿共通集合演算は、各集合の全ての要素の取り得る組み合わせを確認するものであるが、これによると集合数が増えるほど計算量は指数関数的に増大する。係る組み合わせ数を削減するために、複数の集合からなるグループをより小さなグループに分割し、秘匿共通集合演算を繰り返し実行する技法も提案されている(非特許文献3)。
更に、秘匿共通集合演算の高速化に関して、非特許文献4に開示されたブルームフィルタ(Bloom filter)を利用した技法が提案されている(非特許文献5)。この技法によれば、プレイヤー1は自己の集合の各要素に対してハッシュ計算を行い、このハッシュ計算の結果に基づいて自己の集合の各要素を要素数の2倍程度のビット長のビット列としてデータ構造化する。そして、プレイヤー2は、自己の集合の各要素をプレイヤー1と同一の方法でビット列としてデータ構造化し、このビット列をプレイヤー1のビット列と照合することによって、プレイヤー1との間で共通の要素が含まれているかどうかを判定する。この技術によれば、集合の各要素は要素数の2倍程度のビット長の短いビット列としてデータ構造化されるので、高速演算が可能であると共に必要なハードウェアリソースも小さい。反面、この技術には、偽陽性の問題が生じる。例えば、プレイヤー2は、プレイヤー1の集合に含まれず、かつ、プレイヤー2の集合に含まれる要素と、共通集合の真の要素とを区別することができない。そして、偽陽性の要素を完全に除去するためには、前述の暗号化またはハッシュ化を用いた秘匿共通集合演算などが必要となる。
Michael J. Freedman, Kobbi Nissim and Benny Pinkas: "Efficient Private Matching and Set Intersection," Advances in Cryptology − EUROCRYPT 2004, Lecture Notes in Computer Science Volume 3027, 2004, pp 1−19. Rakesh Agrawal, Alexandre Evfimievski, and Ramakrishnan Srikant: "Information sharing across private databases," In Proceedings of SIGMOD ’03, ACM, 2003, pp86−97. Jaideep Vaidya, Chris Clifton: "Secure set intersection cardinality with application to association rule mining," Journal of Computer Security, Volume 13, No 4, 2005, pp593−622 Burton H. Bloom: "Space/time trade−offs in hash coding with allowable errors," Commun. ACM, 1970, vol.13, issue.7, pp422−426. Dilip Many, Martin Burkhart, Xenofontas Dimitropoulos, "Fast Private Set Operations with SEPIA," Technical Report, TIK report no. 345, ETH Zurich, March 1, 2012.
本発明は、秘匿共通集合演算の計算量を効果的に削減することを目的とする。
本発明の一態様に係る秘匿共通集合演算システムは、サーバと、3以上の端末とを備える。3以上の端末の各々は、当該端末の保持する集合の要素をデータ構造化することによってビット列を生成し、当該ビット列をサーバへと送信する。サーバは、3以上の端末をグルーピングするための複数の組み合わせのうち最適な組み合わせをビット列に基づいて探索し、探索した最適な組み合わせに応じて3以上の端末の各々に対して当該端末が属するグループを通知する。3以上の端末の各々は、当該端末が属するグループ内で秘匿共通集合演算を行う。
本発明によれば、秘匿共通集合演算の計算量を効果的に削減することが可能である。
第1の実施形態に係る秘匿共通集合演算システムを例示する図。 図1の秘匿共通集合演算システムの動作を例示するフローチャート。 図1の秘匿共通集合演算システムの動作を例示するフローチャート。 図1の秘匿共通集合演算システムの動作を例示するフローチャート。 図1の秘匿共通集合演算システムの動作を例示するシーケンス図。 図1の秘匿共通集合演算システムの動作例の説明図。 図1の秘匿共通集合演算システムの動作例の説明図。 図1の秘匿共通集合演算システムの動作例の説明図。
以下、図面を参照しながら実施形態の説明が述べられる。
(第1の実施形態)
第1の実施形態に係る秘匿共通集合演算システムは、図1に例示されるように、中間処理サーバと、k(kは3以上の整数)人のプレイヤーに関連付けられたk個のプレイヤー端末(例えば、スマートフォン、タブレット、PCなど)とを備える。中間処理サーバ及び各プレイヤー端末は、ネットワークを介してデータをやり取りできる。各プレイヤー端末は、複数の要素からなる集合を記憶部に保持している。例えば、プレイヤーkに関連付けられたプレイヤー端末は、n個の要素k,k,・・・kからなる集合Sを保持している。
尚、中間処理サーバは、プレイヤー端末と別体である必要はない。即ち、いずれかのプレイヤー端末が、当該プレイヤー端末の動作に加えて中間処理サーバの動作を行ってもよい。
中間処理サーバ及びk個のプレイヤー端末は、プロトコル上の手続に従ってk個の集合S,S,・・・,Sに対して秘匿共通集合演算を行うことによって、共通集合(S∩S∩・・・∩S)を導出する。この秘匿共通集合演算において、各プレイヤー端末に保持された集合の要素は秘匿される。例えば、集合Sの要素は、プレイヤーk以外のプレイヤーに関連付けられたプレイヤー端末にも中間処理サーバにも開示されない。
図1の秘匿共通集合演算システムは、図5に例示されるように動作できる。
第1の手順として、各プレイヤー端末は、当該プレイヤー端末が保持する集合の要素数を示す情報を中間処理サーバへと送信する。図5の例によれば、プレイヤー1,2,・・・,kに関連付けられたプレイヤー端末は、集合S,S,・・・,Sの要素数n,n,・・・,nを示す情報を中間処理サーバに対して送信する。
第2の手順として、中間処理サーバは、各集合の要素数を用いて所定の演算を行うことによって後述されるビット列のビット長を導出し、当該ビット長を示す情報を各プレイヤー端末へと送信する。図5の例によれば、中間処理サーバは、要素数n,n,・・・,nの平均値Aveを所定の関数f(x)に代入することによってビット長Lを導出し、当該ビット長Lを示す情報を各プレイヤー端末へと送信する。
所定の関数f(x)は、例えば、変数xを2倍してから整数値に丸めるものであってよい。所定の関数f(x)は、プレイヤー端末間で事前に決定されていてもよい。また、中間処理サーバはビット長Lそのものではなく中間値(例えば、前述の平均値Ave)を導出し、各プレイヤー端末が中間値からビット長Lを導出してもよい。
第3の手順として、各プレイヤー端末は、当該プレイヤー端末が保持する集合の要素を上記ビット長に基づいてデータ構造化することによってビット列を生成し、当該ビット列を中間処理サーバへと送信する。集合の要素は、例えばブルームフィルタを用いてデータ構造化される。この場合に、ビット列は、ブルームフィルタの結果に相当する。図5の例によれば、プレイヤー1,2,・・・,kのプレイヤー端末は、集合S,S,・・・,Sの要素をビット長Lに基づいてデータ構造化することによって、ビット列B,B,・・・,Bを生成し、当該ビット列B,B,・・・,Bを中間処理サーバへと送信する。
具体的には、各プレイヤー端末は、L個のビットからなるビット列を初期化する。ここで、ビット列の初期化とは、ビット列内の全てのビットを0にすることを意味する。それから、各プレイヤー端末は、当該プレイヤー端末が保持する集合の要素の各々に対して好ましくは2種類以上のハッシュ関数を用いてハッシュ計算を行い、導出されたハッシュ値に基づいてビット列を変更する。
ハッシュ関数は、L種類のハッシュ値を生成可能なものであって、好ましくは高い一様性を備える。また、ハッシュ関数は、プレイヤー端末間で事前に決定されてもよい。尚、中間処理サーバはハッシュ関数を使用しないので、ハッシュ関数はプレイヤー端末間に限って事前に決定及び共有されてもよい。中間処理サーバに対してハッシュ関数を秘匿することによって、プレイヤー以外の第三者が中間処理サーバに集約されたビット列から元の要素を復元するという事態をより確実に防止できる。勿論、一般に、ブルームフィルタの結果から元の要素を復元することは困難である。
各プレイヤー端末は、集合の要素の1つに対してハッシュ関数の1つを用いて当該要素のハッシュ値Hを生成してからビット列内のH番目のビットを1に変更する。係るビット列の変更処理は、各プレイヤー端末において、全要素及び全ハッシュ関数の組み合わせについて行われる。例えば、ハッシュ関数が2種類であるならば、プレイヤーkのプレイヤー端末はビット列の変更処理を2n回に亘って行う。
尚、ビット列の変更処理において、ハッシュ値の衝突が生じることがある。即ち、ハッシュ値Hが、既に生成されたハッシュ値と同じであるかもしれない。この場合には、ビット列のH番目のビットは1であるので、プレイヤー端末はビット列を変更しない。ハッシュ値の衝突は、ハッシュ関数の種類が多いほど発生しやすく、ビット長Lが短いほど発生しやすい。ハッシュ値の衝突は頻繁に生じるので、ブルームフィルタによって生成されたビット列から元の要素を推測することは困難である。
ハッシュ関数はL種類のハッシュ値を生成可能なものであると説明したが、ビット長Lを導出するよりも前にハッシュ関数を決定することも可能である。具体的には、プレイヤー端末は、事前に決定されたハッシュ関数を用いてハッシュ値を生成し、当該ハッシュ値をLで除算することによって得られる剰余をHとして扱ってもよい。
第4の手順として、中間処理サーバは、各プレイヤー端末からのビット列の論理積を演算し、演算結果に相当するビット列を各プレイヤー端末へと送信する。図5の例によれば、中間処理サーバは、ビット列B,B,・・・,Bの論理積を演算し、演算結果に相当するビット列Bserverをプレイヤー1,2,・・・,kのプレイヤー端末へと送信する。
ここで、全ての集合に共通する要素があるならば、全てのプレイヤー端末はビット列(即ち、ブルームフィルタの結果)B,B,・・・,Bにおいて当該要素のハッシュ値に対応する場所のビットを1に変更しているので、ビット列Bserverにおいてもこの場所のビットは1である。反対に、あるプレイヤー端末がビット列においてある要素のハッシュ値に対応する場所のビットを1に変更したにも関わらず、ビット列Bserverにおいてこの場所のビットが0であるならば、当該要素は少なくとも1つの他のプレイヤー端末が保持する集合に含まれていないから、共通集合の要素ではない。概括すれば、ビット列Bserverにおいて、共通集合の真の要素及び偽陽性の要素に関する場所のビットのみが1である。
第5の手順として、各プレイヤー端末は、中間処理サーバからのビット列に基づいて、当該プレイヤー端末が保持する集合を絞り込む。図5の例によれば、各プレイヤー端末は、中間処理サーバからのビット列Bserverに基づいて、当該プレイヤー端末が保持する集合S,S,・・・,Sを絞り込む。
具体的には、各プレイヤー端末は、ビット列の変更処理と同じく、集合の要素の1つに対してハッシュ関数の1つを用いて当該要素のハッシュ値Hを生成する。中間処理サーバからのビット列BserverのH番目のビットが0であれば、各プレイヤー端末はこの要素を集合から除外する。換言すれば、各プレイヤー端末は、ビット列Bserverにおいて、ある要素に基づいて生成された全てのハッシュ値に対応する場所のビットが1であるならば当該要素を集合に維持し、そうでなければ当該要素を集合から除外する。各プレイヤー端末は、全ての要素について係る絞り込み処理を行うことによって新たな集合を得る。新たな集合は、絞り込み処理を行う前の集合のサブセットに相当する。新たな集合は、共通集合の真の要素及び偽陽性の要素の一方または両方からなる。
第6の手順として、中間処理サーバは、各プレイヤー端末からのビット列に基づいて最適なグループの組み合わせを探索し、最適なグループを示す情報を各プレイヤー端末に通知する。この第6の手順は、前述の第5の手順と並列に実行することができる。図5の例によれば、中間処理サーバは、ビット列B,B,・・・,Bに基づいて最適なグループの組み合わせを探索し、最適なグループを示す情報を各プレイヤー端末に送信する。各プレイヤー端末は第6の手順において通知された情報に従ってグルーピングされ、各グループ(例えば、ペア)に属するプレイヤー端末同士で秘匿共通集合演算を実行する。具体的には、グループに属する全てのプレイヤー端末が、第5の手順を通じて得られた集合の各要素について暗号化またはハッシュ化を行い、中間処理サーバを介して暗号化またはハッシュ化された要素を互いにやり取りして比較することによって、偽陽性の要素を除外する。
尚、偽陽性の要素が除外されたことによって、あるグループに属するプレイヤー端末の共通集合が空集合になることがある。あるグループに属するプレイヤー端末の共通集合が空集合になることは、全体の共通集合もまた空集合であることを意味するので、これ以上の演算は無駄である。故に、プレイヤー端末は、中間処理サーバに空集合の発生を示す情報を送信する。中間処理サーバは、係る情報を受信すると、全てのプレイヤー端末に対して処理中断を指示する情報を送信して秘匿共通集合演算を打ち切らせる。秘匿共通集合演算の打ち切りによって、中間処理サーバ及びプレイヤー端末における無駄なリソース消費を削減することが可能となる。
ここで、最適なグループの組み合わせとは、秘匿共通集合演算の計算量を最小にする組み合わせを意味する。例えば、中間処理サーバは、任意の組み合わせについて、当該組み合わせに含まれる各グループに属するプレイヤー端末のビット列同士の類似度の総和を当該組み合わせの評価値として算出してもよい。そして、中間処理サーバは、評価値の最も小さい組み合わせを最適なグループの組み合わせとして探索してもよい。係るグループの組み合わせによれば、グループ内の共通集合の真の要素及び偽陽性の要素の数を少なくすることが可能となるので、秘匿共通集合演算において確認する必要のある要素の組み合わせの数も少なくなる。グループに属するプレイヤー端末のビット列同士の類似度は、これらビット列の論理積に含まれる1の総数であってもよい。
中間処理サーバは、最適なグループの組み合わせを探索するために、全ての組み合わせについて評価値を算出してもよい。例えば、プレイヤー端末が4つであって、グループがペアに相当するならば、{(プレイヤー1,プレイヤー2),(プレイヤー3,プレイヤー4)},{(プレイヤー1,プレイヤー3),(プレイヤー2,プレイヤー4)},{(プレイヤー1,プレイヤー4),(プレイヤー2,プレイヤー3)}の合計3通りの組み合わせが可能である。
尚、第5の手順及び第6の手順は必要に応じて繰り返されてもよい。この場合には、各グループを新たなプレイヤー端末と定義し、当該グループに属する全てプレイヤー端末のビット列の論理積を当該新たなプレイヤー端末のビット列と定義すればよい。
以下、図6、図7及び図8を用いて、図1の秘匿共通集合演算システムの動作例が説明される。この動作例によれば、4人のプレイヤー1,2,3及び4に関連付けられたプレイヤー端末が保持する集合S,S,S及びSの共通集合が導出される。
図6、図7及び図8の動作例において、集合S={1,2,3,4}であり、集合S={1,2,3,5}であり、集合S={1,8,9,10}であり、集合S={1,9,10,13}である。
図6に例示されるように、第1の手順に従って、プレイヤー1のプレイヤー端末は集合Sの要素数=4を中間処理サーバに通知し、プレイヤー2のプレイヤー端末は集合Sの要素数=4を中間処理サーバに通知し、プレイヤー3のプレイヤー端末は集合Sの要素数=4を中間処理サーバに通知し、プレイヤー4のプレイヤー端末は集合Sの要素数=4を中間処理サーバに通知する。
第2の手順に従って、中間処理サーバは、通知された要素数を用いて所定の演算を行うことによってビット列のビット長L=4を導出し、これを各プレイヤー端末に通知する。図6の動作例では、所定の演算は平均化である。即ち、中間処理サーバは、(4+4+4+4)/4を演算することによって、L=4を導出する。
第3の手順に従って、各プレイヤー端末は、L=4ビットに基づいて当該プレイヤー端末の保持する集合の要素をデータ構造化することによってビット列を生成し、これを中間処理サーバへと送信する。まず、各プレイヤー端末は、図6に例示されるように、初期化されたビット列「0000」を生成する。それから、各プレイヤー端末は、図7に例示されるように、ハッシュ計算に基づいてビット列を変更する。尚、図7の動作例によれば、1種類のハッシュ関数H(x)が使用され、H(x)=x mod 4である。
プレイヤー1のプレイヤー端末は、集合S={1,2,3,4}の各要素に対してハッシュ計算を行い、H(1)=1、H(2)=2、H(3)=3及びH(4)=0というハッシュ値を生成する。プレイヤー1のプレイヤー端末は、生成したハッシュ値に基づいて、ビット列Bの左から1番目、2番目、3番目及び4番目のビットを1にすることによって、ビット列Bを「1111」に変更する。
プレイヤー2のプレイヤー端末は、集合S={1,2,3,5}の各要素に対してハッシュ計算を行い、H(1)=1、H(2)=2、H(3)=3及びH(5)=1というハッシュ値を生成する。プレイヤー2のプレイヤー端末は、生成したハッシュ値に基づいて、ビット列Bの左から2番目、3番目及び4番目のビットを1にすることによって、ビット列Bを「0111」に変更する。
プレイヤー3のプレイヤー端末は、集合S={1,8,9,10}の各要素に対してハッシュ計算を行い、H(1)=1、H(8)=0、H(9)=1及びH(10)=2というハッシュ値を生成する。プレイヤー3のプレイヤー端末は、生成したハッシュ値に基づいて、ビット列Bの左から1番目、2番目及び3番目のビットを1にすることによって、ビット列Bを「1110」に変更する。
プレイヤー4のプレイヤー端末は、集合S={1,9,10,13}の各要素に対してハッシュ計算を行い、H(1)=1、H(9)=1、H(10)=2及びH(13)=1というハッシュ値を生成する。プレイヤー4のプレイヤー端末は、生成したハッシュ値に基づいて、ビット列Bの左から2番目及び3番目のビットを1にすることによって、ビット列Bを「0110」に変更する。
第4の手順に従って、中間処理サーバは、各プレイヤー端末からのビット列B=「1111」,B=「0111」,B=「1110」及びB=「0110」の論理積を演算し、演算結果に相当するビット列Bserver=「0110」を各プレイヤー端末へと送信する。第4の手順において生成されるビット列Bserver=「0110」は、各プレイヤー端末からのビット列B=「1111」,B=「0111」,B=「1110」及びB=「0110」の各々に比べて疎であるか少なくとも同一である。
第5の手順に従って、各プレイヤー端末は、図8に例示されるように、中間処理サーバからのビット列Bserver=「0110」に基づいて、当該プレイヤー端末が保持する集合を絞り込む。
プレイヤー1のプレイヤー端末は、集合S={1,2,3,4}の各要素に対してハッシュ計算を行い、H(1)=1、H(2)=2、H(3)=3及びH(4)=0というハッシュ値を生成する。ビット列Bserver=「0110」のうち左から1番目のビット及び4番目のビットは0である。故に、プレイヤー1のプレイヤー端末は、ハッシュ値H(4)=0の元となる要素「4」及びハッシュ値H(3)=3の元となる要素「3」を集合Sから除外することによって、新たな集合S’={1,2}を得る。
プレイヤー2のプレイヤー端末は、集合S={1,2,3,5}の各要素に対してハッシュ計算を行い、H(1)=1、H(2)=2、H(3)=3及びH(5)=1というハッシュ値を生成する。ビット列Bserver=「0110」のうち左から1番目のビット及び4番目のビットは0である。故に、プレイヤー2のプレイヤー端末は、ハッシュ値H(3)=3の元となる要素「3」を集合Sから除外することによって、新たな集合S’={1,2,5}を得る。
プレイヤー3のプレイヤー端末は、集合S={1,8,9,10}の各要素に対してハッシュ計算を行い、H(1)=1、H(8)=0、H(9)=1及びH(10)=2というハッシュ値を生成する。ビット列Bserver=「0110」のうち左から1番目のビット及び4番目のビットは0である。故に、プレイヤー3のプレイヤー端末は、ハッシュ値H(8)=0の元となる要素「8」を集合Sから除外することによって、新たな集合S’={1,9,10}を得る。
プレイヤー4のプレイヤー端末は、集合S={1,9,10,13}の各要素に対してハッシュ計算を行い、H(1)=1、H(9)=1、H(10)=2及びH(13)=1というハッシュ値を生成する。ビット列Bserver=「0110」のうち左から1番目のビット及び4番目のビットは0である。故に、プレイヤー4のプレイヤー端末は、集合Sの全ての要素を維持することによって、新たな集合S=S’={1,9,10,13}を得る。
これら新たな集合S’,S’,S’及びS’において、共通集合の真の要素である「1」は失われておらず、適度に偽陽性の要素が残っている。例えば、S’の「13」のように他の集合と全く一致していない要素も偽陽性を示す。
第6の手順に従って、中間処理サーバは、各プレイヤー端末からのビット列B=「1111」,B=「0111」,B=「1110」及びB=「0110」に基づいて最適なグループの組み合わせを探索し、最適なグループを示す情報を各プレイヤー端末に通知する。図8の動作例において、グループはペアに相当する。
中間処理サーバは、{(プレイヤー1,プレイヤー2),(プレイヤー3,プレイヤー4)},{(プレイヤー1,プレイヤー3),(プレイヤー2,プレイヤー4)},{(プレイヤー1,プレイヤー4),(プレイヤー2,プレイヤー3)}の合計3通りの組み合わせについて前述の評価値を算出する。
具体的には、中間処理サーバは、{(プレイヤー1,プレイヤー2),(プレイヤー3,プレイヤー4)}という組み合わせについて、B∩B=「0111」及びB∩B=「0110」に含まれる1の総数である「5(=3+2)」を評価値として算出する。
中間処理サーバは、{(プレイヤー1,プレイヤー3),(プレイヤー2,プレイヤー4)}という組み合わせについて、B∩B=「1110」及びB∩B=「0110」に含まれる1の総数である「5(=3+2)」を評価値として算出する。
中間処理サーバは、{(プレイヤー1,プレイヤー4),(プレイヤー2,プレイヤー3)}という組み合わせについて、B∩B=「0110」及びB∩B=「0110」に含まれる1の総数である「4(=2+2)」を評価値として算出する。
従って、図8の動作例によれば、評価値が最小である{(プレイヤー1,プレイヤー4),(プレイヤー2,プレイヤー3)}という組み合わせを最適なグループの組み合わせとして各プレイヤー端末に通知する。
プレイヤー1のプレイヤー端末及びプレイヤー4のプレイヤー端末は、中間処理サーバを介して秘匿共通集合演算を行う。集合S’の要素数は2であり、集合S’の要素数は4であるので、2×4=8通りの組み合わせについて確認が必要である。秘匿共通集合演算の結果、集合S’に含まれる偽陽性の要素{2,3}が除外され、集合S’に含まれる偽陽性の要素{9,10,13}が除外される。
同様に、プレイヤー2のプレイヤー端末及びプレイヤー3のプレイヤー端末は、中間処理サーバを介して秘匿共通集合演算を行う。集合S’の要素数は3であり、集合S’の要素数は3であるので、3×3=9通りの組み合わせについて確認が必要である。秘匿共通集合演算の結果、集合S’に含まれる偽陽性の要素{2,5}が除外され、集合S’に含まれる偽陽性の要素{9,10}が除外される。
最後に、プレイヤー1及び4のプレイヤー端末ならびにプレイヤー2及び3のプレイヤー端末は、中間処理サーバを介して秘匿共通集合演算を行う。集合S∩Sの要素数は1であり、集合S∩Sの要素数は1であるので、1×1=1通りの組み合わせについて各荷が必要である。秘匿共通集合演算の結果、共通集合として{1}が得られる。
前述の{(プレイヤー1,プレイヤー4),(プレイヤー2,プレイヤー3)}というグルーピングによれば、秘匿共通集合演算の全体で合計18(=8+9+1)通りの組み合わせを確認する必要がある。仮に、グルーピング(即ち、第6の手順)を省略して4つのプレイヤー端末間でまとめて秘匿共通集合演算を行うのであれば、合計72(=2×3×3×4)通りの組み合わせを確認する必要がある。また、ブルームフィルタを利用した集合の絞り込み(即ち、第1乃至第5の手順)を省略して4つのプレイヤー端末間でまとめて秘匿共通集合演算を行うのであれば、合計256(=4×4×4×4)通りの組み合わせを確認する必要がある。これらの数値例から、グルーピングは秘匿共通集合演算における計算量及びリソース消費を効果的に削減することが確認された。
尚、{(プレイヤー1,プレイヤー2),(プレイヤー3,プレイヤー4)}というグルーピングが採用されていたならば、秘匿共通集合演算の全体で合計24(=6+12+6)通りの組み合わせを確認する必要がある。或いは、{(プレイヤー1,プレイヤー3),(プレイヤー2,プレイヤー4)}というグルーピングが採用されていたならば、合計19(=6+12+1)通りの組み合わせを確認する必要がある。これらの数値例から、前述の評価値の最も小さい組み合わせに従ってグルーピングすると、他の組み合わせに従ってグルーピングする場合に比べて、秘匿共通集合演算における計算量及びリソース消費をいっそう効果的に削減できることが確認された。
以下、図2、図3及び図4を用いて、図1の秘匿共通集合演算システムにおける中間処理サーバ及びプレイヤーkのプレイヤー端末の動作例が説明される。尚、以降の説明は、プレイヤーkのプレイヤー端末に限られず他の任意のプレイヤー端末についてもあてはまる。また、図2、図3及び図4の動作例において、2種類のハッシュ関数が用いられているが、1種類または3種類以上のハッシュ関数が用いられてもよい。
最初に中間処理サーバは、プレイヤーkを含む各プレイヤーのプレイヤー端末へ、開始メッセージを送信する(ステップS101)。プレイヤーkのプレイヤー端末は、中間処理サーバから開始メッセージを受信し(ステップS201)、集合Sの要素数nを示す情報を中間処理サーバへと送信する(ステップS202)。
中間処理サーバは、プレイヤーkを含む各プレイヤーのプレイヤー端末から要素数n,n,・・・,nを示す情報を受信し(ステップS102)、要素数n1,n,・・・,nに基づいてビット列のビット長Lを導出する(ステップS103)。
中間処理サーバは、プレイヤーkを含む各プレイヤーのプレイヤー端末へ、ビット長Lを示す情報を送信する(ステップS104)。更に、中間処理サーバは、Lビットのビット列Bserverを生成する(ステップs105)
プレイヤーkのプレイヤー端末は、ビット長Lを示す情報を受信し(ステップS203)、Lビットのビット列Bを生成する(ステップS204)。尚、ステップS204において、ビット列Bのビットは全て0である。プレイヤーkのプレイヤー端末は、ステップS205乃至ステップS210のループを通じて、ビット列Bを変更する。このループは、i=1,2,・・・,mについて繰り返される。
ステップS205において、プレイヤーkのプレイヤー端末は、第1のハッシュ関数H(x)を用いて集合Sの第i番目の要素であるkをハッシュ化することによって、ハッシュ値H(k)を生成する。ビット列BのH(k)番目のビットが1であれば処理はステップS208へと進み、そうでなければ処理はステップS207へと進む(ステップS206)。ステップS207において、プレイヤーkのプレイヤー端末は、ビット列BのH(k)番目のビットを1にする。ステップS207の終了後に、処理はステップS208へと進む。
ステップS208において、プレイヤーkのプレイヤー端末は、第2のハッシュ関数H(x)を用いてkをハッシュ化することによって、ハッシュ値H(k)を生成する。ビット列BのH(k)番目のビットが1であればループの終了判定が行われ、そうでなければ処理はステップS210へと進む(ステップS209)。ステップS210において、プレイヤーkのプレイヤー端末は、ビット列BのH(k)番目のビットを1にする。ステップS210の終了後に、ループの終了判定が行われる。集合Sの全ての要素が処理済みであるならばループは終了し、そうでなければ未処理の要素に関してループが続行する。
ステップS205乃至ステップS210のループ終了後に、プレイヤーkのプレイヤー端末は、ビット列Bを中間処理サーバへと送信する(ステップS211)。中間処理サーバは、プレイヤーkを含む各プレイヤーのプレイヤー端末からビット列B,・・・,Bを受信する(ステップS106)。
中間処理サーバは、ビット列B,・・・,Bの論理積を演算し、演算結果をビット列Bserverに代入する(ステップS107)。中間処理サーバは、プレイヤーkを含む各プレイヤーのプレイヤー端末へ、ビット列Bserverを送信する(ステップS108)。プレイヤーkのプレイヤー端末は、中間処理サーバからビット列Bserverを受信する(ステップS212)。
プレイヤーkのプレイヤー端末は、新たな集合S’を生成し、これを空集合に初期化する(ステップS213)。プレイヤーkのプレイヤー端末は、ステップS214乃至ステップS218のループを通じて、集合Sの要素をビット列Bserverに基づいて絞り込んだ新たな集合S’を得る。このループは、i=1,2,・・・,mについて繰り返される。
ステップS214において、プレイヤーkのプレイヤー端末は、第1のハッシュ関数H(x)を用いて集合Sの第i番目の要素であるkをハッシュ化することによって、ハッシュ値H(k)を生成する。ビット列BserverのH(k)番目のビットが1であれば処理はステップS216に進み、そうでなければループの終了判定が行われる(ステップS215)。
ステップS216において、プレイヤーkのプレイヤー端末は、第2のハッシュ関数H(x)を用いてkをハッシュ化することによって、ハッシュ値H(k)を生成する。ビット列BserverのH(k)番目のビットが1であれば処理はステップS218に進み、そうでなければループの終了判定が行われる(ステップS217)。
ステップS218において、プレイヤーkのプレイヤー端末は、要素kを集合S’に加える。ステップS218の終了後に、ループの終了判定が行われる。集合Sの全ての要素が処理済みであるならばループは終了し、そうでなければ未処理の要素に関してループが続行する。
他方、中間処理サーバは、ステップS109のループを通じて、プレイヤー1,2,・・・kのプレイヤー端末のうち組み合わせることのできる全てのペアについて当該ペアに属するプレイヤー端末のビット列同士の類似度Cを算出する。所与のペアの類似度Cは、当該ペアに属するプレイヤー端末のビット列同士の論理積に含まれる1の総数である。そして、中間処理サーバは、ペアの組み合わせのうち類似度Cの総和が最小の組み合わせG={g,g,・・・,g}を探索する(ステップS110)。
中間処理サーバは、各プレイヤー端末へ、当該プレイヤー端末の属するグループを示す情報を送信する(ステップS111)。具体的には、中間処理サーバは、プレイヤーkのプレイヤー端末が属するグループgを示す情報を当該プレイヤー端末へと送信する。
プレイヤーkのプレイヤー端末は、当該プレイヤー端末が属するグループgを示す情報を受信する(ステップS219)。プレイヤーkのプレイヤー端末は、集合S’に含まれる各要素について、グループg内で秘匿共通集合演算を行う(ステップS220)。プレイヤーkのプレイヤー端末は、秘匿共通集合演算の結果、グループg内の共通集合をS’’として獲得する(ステップS221)。尚、グループg内の共通集合をS’’が空集合であるならば処理はステップS228に進み、そうでなければプレイヤーkのプレイヤー端末は中間処理サーバから新たなグループが通知されるのを待機する(ステップS222)。
他方、中間処理サーバは、更なるグルーピングを行う。具体的には、中間処理サーバは、ステップS112のループを通じて、グループg,・・・,gのうち組み合わせることのできる全てのペアについて当該ペアに属するプレイヤー端末のビット列同士の類似度C’を算出する。所与のペアの類似度C’は、当該ペアに属するプレイヤー端末のビット列同士の論理積に含まれる1の総数である。そして、中間処理サーバは、ペアの組み合わせのうち類似度C’の総和が最小の組み合わせG={g’,g’,・・・,g’}を探索する(ステップS113)。中間処理サーバは、各プレイヤー端末へ、当該プレイヤー端末の属するグループを示す情報を送信する(ステップS114)。具体的には、中間処理サーバは、プレイヤーkのプレイヤー端末が属するグループg’を示す情報を当該プレイヤー端末へと送信する。尚、ステップS113において探索された組み合わせに含まれるグループの総数が1であるならば処理はステップS116に進み、そうでなければ処理がステップS112のループに戻って中間処理サーバは更なるグルーピングを行う(ステップS115)。
プレイヤーkのプレイヤー端末は、当該プレイヤー端末が属するグループg’を示す情報を受信する(ステップS223)。プレイヤーkのプレイヤー端末は、集合S’’に含まれる各要素について、グループg’内で秘匿共通集合演算を行う(ステップS224)。プレイヤーkのプレイヤー端末は、秘匿共通集合演算の結果、グループg’内の共通集合をS’’’として獲得する(ステップS225)。それから、プレイヤーkのプレイヤー端末は、中間処理サーバから新たなグループが通知されるのを待機する。新たなグループが通知されれば処理はステップS223に戻り、そうでなければ処理はステップS227へと進む(ステップS226)。尚、図示されていないが、グループg’内の共通集合をS’’’が空集合であるならば処理はステップS228に進んでもよい。
ステップS116において、中間処理サーバは、プレイヤーkを含む各プレイヤーのプレイヤー端末へ、終了メッセージを送信して動作終了する。ステップS227において、プレイヤーkのプレイヤー端末は終了メッセージを受信して動作終了する。
ステップS228において、プレイヤーkのプレイヤー端末は、空集合の発生を示す情報を中間処理サーバへと送信する。中間処理サーバは、プレイヤーkまたは他のプレイヤーのプレイヤー端末から空集合の発生を示す情報を受信する(ステップS117)。それから、中間処理サーバは、プレイヤーkを含む各プレイヤーのプレイヤー端末へ、処理中断を指示する情報を送信する(ステップS118)。ステップS118の終了後に処理はステップS116へと進む。プレイヤーkのプレイヤー端末は、処理中断を指示する情報を受信する(ステップS229)。ステップS229の終了後に、処理はステップS227へと進む。
以上説明したように、第1の実施形態に係る秘匿共通集合演算システムにおいて、プレイヤー端末は当該プレイヤー端末の保持する集合の要素を例えばブルームフィルタを用いてデータ構造化することによってビット列を生成する。中間処理サーバは、プレイヤー端末をグルーピングするための最適な組み合わせをこれらのビット列に基づいて探索する。そして、プレイヤー端末は、中間処理サーバから通知されたグループ内で秘匿共通集合演算を行う。上記最適な組み合わせに従ってグルーピングを行うことによって、秘匿共通集合演算の対象となる組み合わせの総数は効果的に削減される。従って、この秘匿共通集合演算システムによれば、秘匿共通集合演算における計算量及びリソース消費を効果的に削減することができる。
尚、ブルームフィルタを利用した集合の絞り込み及びグルーピングは、主にハッシュ計算及びビット列の論理積演算によって実現される。従って、これらのオーバーヘッドは通信時間を含めたとしても、秘匿共通集合演算に比べて小さい。
プレイヤー端末は、ブルームフィルタに限られず他のフィルタを用いてデータ構造化を行ってもよい。具体的には、プレイヤー端末は、ブルームフィルタの実装の一種であるCounting filterを用いてデータ構造化を行ってもよい。この場合のデータ構造は整数値の配列となり、類似度として共通の整数値を持つ配列の数やすべての配列の差分の絶対値の和の逆数を定義することが考えられる。
本実施形態に係る秘匿共通集合演算システムは、例えばSNSにおけるユーザの関係抽出に適用されてもよい。この秘匿共通集合演算システムによれば、ユーザの情報(例えば、電話帳、アドレス帳などの個人情報)をサーバ及び他のユーザに開示することなく、当該ユーザについて高速な関係抽出を実現することができる。更に、この秘匿共通集合演算システムは、プライバシ保護協調フィルタリングのような共通集合演算を伴う他の秘匿計算に応用することも可能である。
上記実施形態の処理は、汎用のコンピュータを基本ハードウェアとして用いることで実現可能である。上記実施形態の処理を実現するプログラムは、コンピュータで読み取り可能な記憶媒体に格納して提供されてもよい。プログラムは、インストール可能な形式のファイルまたは実行可能な形式のファイルとして記憶媒体に記憶される。記憶媒体としては、磁気ディスク、光ディスク(CD−ROM、CD−R、DVD等)、光磁気ディスク(MO等)、半導体メモリなどである。記憶媒体は、プログラムを記憶でき、かつ、コンピュータが読み取り可能であれば、何れであってもよい。また、上記実施形態の処理を実現するプログラムを、インターネットなどのネットワークに接続されたコンピュータ(サーバ)上に格納し、ネットワーク経由でコンピュータ(クライアント)にダウンロードさせてもよい。
尚、上記実施形態は、その記載の通りに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して実施形態できる。また、上記実施形態に開示されている複数の構成要素を適宜組み合わせることによって種々の態様を形成できる。また、例えば、実施形態に示される全構成要素からいくつかの構成要素を削除した構成も考えられる。
1,2,3,4,k・・・プレイヤー

Claims (6)

  1. サーバと、それぞれ複数の要素からなる集合を記憶部に保持している3以上の端末とを具備し、
    前記3以上の端末の各々は、ブルームフィルタもしくはCounting filterを用いることによって当該端末の保持する集合の要素から生成しビット列を前記サーバへと送信し、
    前記サーバは、前記3以上の端末をグルーピングするための複数の組み合わせについて、所与の組み合わせに含まれる複数のグループの各々に属する端末から受信した前記ビット列同士の類似度の総和を算出し、前記総和が最小となる組み合わせを最適な組み合わせとして探索し、探索した最適な組み合わせに応じて前記3以上の端末の各々に対して当該端末が属するグループを通知し、
    前記3以上の端末の各々は、前記サーバから通知された当該端末が属するグループ内で秘匿共通集合演算を行う、
    秘匿共通集合演算システム。
  2. 所与のグループの前記類似度は、当該グループに属する端末のビット列同士の論理積に含まれる1の総数である、請求項1に記載の秘匿共通集合演算システム。
  3. 前記サーバは、いずれかのグループ内で行われた前記秘匿共通集合演算によって当該グループ内の共通集合が空集合になると、前記3以上の端末に対して秘匿共通集合演算の終了を指示する、請求項1に記載の秘匿共通集合演算システム。
  4. サーバと、それぞれ複数の要素からなる集合を記憶部に保持している3以上の端末とを具備する秘匿共通集合演算システムが実行する秘匿共通集合演算方法において、
    前記3以上の端末の各々が、ブルームフィルタもしくはCounting filterを用いることによって当該端末の保持する集合の要素から生成しビット列を前記サーバへと送信する手順と、
    前記サーバが、前記3以上の端末をグルーピングするための複数の組み合わせについて、所与の組み合わせに含まれる複数のグループの各々に属する端末から受信した前記ビット列同士の類似度の総和を算出し、前記総和が最小となる組み合わせを最適な組み合わせとして探索し、探索した最適な組み合わせに応じて前記3以上の端末の各々に対して当該端末が属するグループを通知する手順と、
    前記3以上の端末の各々が、前記サーバから通知された当該端末が属するグループ内で秘匿共通集合演算を行う手順
    を具備する、秘匿共通集合演算方法。
  5. 所与のグループの前記類似度は、当該グループに属する端末のビット列同士の論理積に含まれる1の総数である、請求項4に記載の秘匿共通集合演算方法。
  6. 前記サーバが、いずれかのグループ内で行われた前記秘匿共通集合演算によって当該グループ内の共通集合が空集合になると、前記3以上の端末に対して秘匿共通集合演算の終了を指示する手順を更に具備する、請求項4に記載の秘匿共通集合演算方法。
JP2013028107A 2013-02-15 2013-02-15 秘匿共通集合演算システム及び秘匿共通集合演算方法 Expired - Fee Related JP5873822B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013028107A JP5873822B2 (ja) 2013-02-15 2013-02-15 秘匿共通集合演算システム及び秘匿共通集合演算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013028107A JP5873822B2 (ja) 2013-02-15 2013-02-15 秘匿共通集合演算システム及び秘匿共通集合演算方法

Publications (2)

Publication Number Publication Date
JP2014157264A JP2014157264A (ja) 2014-08-28
JP5873822B2 true JP5873822B2 (ja) 2016-03-01

Family

ID=51578161

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013028107A Expired - Fee Related JP5873822B2 (ja) 2013-02-15 2013-02-15 秘匿共通集合演算システム及び秘匿共通集合演算方法

Country Status (1)

Country Link
JP (1) JP5873822B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7458805B2 (ja) * 2020-02-03 2024-04-01 日本放送協会 情報処理装置、情報処理システム、及びプログラム
KR102371528B1 (ko) 2020-02-14 2022-03-07 구글 엘엘씨 다수 당사자 도달 및 빈도 추정 보안화

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1654697A1 (en) * 2003-08-08 2006-05-10 Koninklijke Philips Electronics N.V. System for processing data and method thereof
US20090077081A1 (en) * 2007-09-19 2009-03-19 Joydeep Sen Sarma Attribute-Based Item Similarity Using Collaborative Filtering Techniques
US20120316922A1 (en) * 2011-06-13 2012-12-13 Xerox Corporation Method and system for creating similarity-based overlay network of micro-markets

Also Published As

Publication number Publication date
JP2014157264A (ja) 2014-08-28

Similar Documents

Publication Publication Date Title
Giannotti et al. Privacy-preserving mining of association rules from outsourced transaction databases
JP6612468B2 (ja) 特定の識別情報を開示することなく識別子の間のリンクを確立するためのシステムおよび方法
Wu et al. Image encryption using the two-dimensional logistic chaotic map
WO2012115031A1 (ja) 検索システム、検索システムの検索方法、情報処理装置、検索プログラム、対応キーワード管理装置および対応キーワード管理プログラム
Buyrukbilen et al. Secure similar document detection with simhash
Tang et al. Enabling ciphertext deduplication for secure cloud storage and access control
JP6910477B2 (ja) 登録装置、検索操作装置、データ管理装置、登録プログラム、検索操作プログラムおよびデータ管理プログラム
CN112332979B (zh) 云计算环境中的密文搜索方法及系统、设备
Lopes et al. Processing OLAP queries over an encrypted data warehouse stored in the cloud
Hu et al. How to make private distributed cardinality estimation practical, and get differential privacy for free
Dong et al. Fuzzy keyword search over encrypted data in the public key setting
WO2015052957A1 (ja) 暗号文比較システム
JP2018005220A (ja) 多項式ベースの準同型暗号
Wang et al. Forward/backward and content private dsse for spatial keyword queries
JP5873822B2 (ja) 秘匿共通集合演算システム及び秘匿共通集合演算方法
Wang et al. Fast and secure location-based services in smart cities on outsourced data
Muthumari et al. High Security for De-Duplicated Big Data Using Optimal SIMON Cipher.
Yau et al. Secure pattern-based data sensitivity framework for big data in healthcare
Wang et al. Search ranges efficiently and compatibly as keywords over encrypted data
Santos et al. Performance analysis of data fragmentation techniques on a cloud server
JP6693503B2 (ja) 秘匿検索システム、サーバ装置、秘匿検索方法、検索方法、およびプログラム
Kamble et al. A study on fuzzy keywords search techniques and incorporating certificateless cryptography
KR102123435B1 (ko) 멀티 클라이언트 환경에서 동치 질의를 지원하는 암호화 방법 및 이를 이용한 장치
Nita et al. A hybrid searchable encryption scheme for cloud computing
Loh et al. A multi-client DSSE scheme supporting range queries

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150128

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150909

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151020

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151218

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160112

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160118

R150 Certificate of patent or registration of utility model

Ref document number: 5873822

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees