説明

秘密分散情報処理システム

【課題】 複数のユーザが各自の秘密の入力を持ち、その入力を秘密にしたまま協調して通信によってある計算を行う秘密分散情報処理システムにおいて、加算と乗算に関しては効率的な方法があったが、大小比較を比較される値を多項式共有によって秘密にしたまま効率的に行う方法がないため、そのための通信方法を提供すること。
【解決手段】 従来の分散計算技術であるBGW方式とその応用であるDFNTプロトコルによる方式を複雑な計算を含まないよう改良し、より効率的な大小比較通信プロトコルを構成し、これによってオークションプロトコルなどのような大小比較演算を含む計算をより効率的に実現する秘密分散情報処理システムを構築する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数ユーザが各自秘密に入力を持ち、その入力を秘密にしたままである決められた関数を通信によって分散計算するMultiparty Computationにおいて効率よく大小比較を秘密に計算する秘密分散情報処理システムに関する。
【背景技術】
【0002】
分散計算技術において複数のユーザ(あるいは人工知能の分野ではエージェントなどとも呼ばれる)が協調して一つの計算を行う研究は昔から行われている。このような分散計算においてプライバシーを確保するために各ユーザの入力情報を秘密にしたままで協調した分散計算を行いたいという要請があり、それらを実現する分散計算技術として暗号分野では代表的な非特許文献1を含めてたくさんの研究が行われてきている。非特許文献1に示された技術(以下、非特許文献1の3名の著者の頭文字を取って「BGW方式」と呼ぶ)はShamirによって提案された秘密の値を有限体上の多項式を用いてユーザ間で共有する技術(非特許文献2、非特許文献6参照)を使い、途中の計算結果を秘密にしながら最終的な計算結果を全員が得ることができる分散計算技術である。形式的に言えばnユーザたちが各自の秘密の入力x_iを持ち関数(y_1,y_2,…,y_n)=f(x_1,x_2,…,x_n)を計算し各ユーザは対応する出力y_iのみを最後に得ることができる。
【0003】
この分散計算技術はオークション理論や最適リソース割り当てのような各自が競争相手であり自分の入力を秘密にしたい環境であっても協調し全体として最適な経済効果を得るための通信プロトコルとして重要となってきている。例えば非特許文献3では安全なダブルオークションを実現するための通信方法として、特定のパラメータ設定を仮定した状況でのBGW方式を基にした大小比較プロトコルをソフトウェアとして実際に実装している。
BGW方式では加算と乗算は効率的に計算できることが示されている。より複雑な計算を効率的に行うにはその他の演算も効率的に計算できることが必要である。大小比較演算は重要な基本演算のひとつであるが秘密の値がビット表現による多項式共有されていなければ効率的に計算できないという問題があった。それではビット表現による多項式共有を用いれば問題が解決するように見えるが、ビット表現による多項式共有では各ビット毎にデータを持つ必要があるため扱うデータ量が増加し、分散計算を行う際にユーザ間で相互にやりとりするデータの通信量が増えるという問題があった。今まではビット表現ではない通常の多項式共有によって入力を秘密にしたまま大小比較計算する効率的な方法が提案されずにいた。
【0004】
しかし非特許文献4で多項式共有された値を秘密に比較するためのより現実的な効率を持った方法が提案された。ここで言う「秘密に比較する」とはnユーザたちがx_1,x_2を(ビット表現でなく通常の)多項式共有している状況で関数fがf(x_1,x_2)∈{0,1}として計算され、(x_1<x_2)であれば1(つまりTRUE)を、x_1≧x_2であれば0(つまりFALSE)を出力することである。ここで出力値の0,1は再度多項式共有によってユーザ間で共有されている。
【0005】
【非特許文献1】 M.Ben−Or,S.Goldwasser,and A.Wigderson,“Completeness Theorem for Non cryptographic Fault−tolerant Distributed Computation”,Proceedings of the 20th Annual ACM Symposium on Theory of Computing,pp.1−10,1988.
【非特許文献2】 Adi Shamir,“How to share a secret”,Communications of ACM,22(11):612−613,1979.
【非特許文献3】 Peter Bogetoft,Ivan Damgard,Thomas Jakobsen,Kurt Nielsen,Jakob Pagter,and Tomas Toft,“Secure computing,economy,and trust:A generic


RS−05−18,2005.
【非特許文献4】 Ivan Damgard,Matthias Fitzi,Jesper Buus Nielsen,and Tomas Toft,“How to Split a Shared Secret into Shared Bits in Constant−Round”,CryptologyePrint Archive 2005/140,June23,2005.
【非特許文献5】 Rosario Gennaro,Michael O.Rabin,and Tal Rabin,“Simplified VSS and fast−track multiparty computations with applications to threshold cryptography”,In Proc.17th ACM Symposium on Principles of Distributed Computing,pp.101−110,1998.
【非特許文献6】 Douglas R.Stinson著、櫻井幸一監訳「暗号理論の基礎」共立出版株式会社、1996年11月1日、p.349−355
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、上記非特許文献4に記載の通信プロトコル(以下、非特許文献4の4名の著者の頭文字を取って「DFNTプロトコル」と呼ぶ)は、大小比較に必要な計算以上のことを行っており通信オーバヘッドはまだ大きく改良の余地がある。
本発明の目的は、DFNTプロトコルの通信回数と通信量を減らし、より効率のよい大小比較プロトコルを実現する情報処理システムを構築することである。
【課題を解決するための手段】
【0007】
上記目的を達成するために、本発明の秘密分散情報処理システムは、
クライアント端末と、n個のサーバ1〜サーバnとがネットワークによって接続され、前記クライアント端末が保持する秘密の数値aに対する多項式f_a(x)が、前記数値aを定数項とする多項式を公開された素数pで除した剰余として定義される場合に、多項式f_a(x)に対するシェアf_a(1)〜f_a(n)が、それぞれ前記サーバ1〜サーバnに対して、前記ネットワークを経由して、前記クライアント端末から他のサーバには秘密に分散して配布される秘密分散情報処理システムであって、
前記クライアント端末が、
秘密の乱数rを発生させて、前記多項式のシェアf_r(1)〜f_r(n)をそれぞれ前記サーバ1〜サーバnに秘密に配布し、
前記各サーバが、
それぞれ自己のサーバに配布されているシェア[a]p及び[r]pの和[c]pを計算して他のサーバ及びクライアント端末に公開し、
前記クライアント端末または各サーバのいずれかが、
公開された前記各サーバのシェア[c]pから元の数値cを復元し、
前記復元された数値cと公開された数値dとの値から(c−r’<?d)≠(c<?d)となるようなr’の範囲{low,…,high}を求め、
前記乱数rが範囲{low,…,high}に含まれるかを(low−1<?r)と(r<?high+1)を判定することで求め、
当該rが範囲{low,…,high}に属するか否かの判定結果から、前記公開された数値dと前記数値aとの大小関係を、数値aを秘密に保持したまま求めることを特徴とする。
【0008】
また、上記目的を達成するために、本発明の秘密分散情報処理システムは、前記特徴に加え、
第二のクライアント端末が更に前記ネットワークによって接続され、
前記第二のクライアント端末が保持する秘密の数値bに対する前記多項式のシェアf_b(1)〜f_b(n)が前記サーバ1〜サーバnに秘密に分散されて保持され、
前記各サーバが、
それぞれ自己のサーバに配布されているシェアから、式[max(a,b)]p=[a<?b]p*[b−a]p+[a]pを計算して他のサーバ及びクライアント端末に公開し、
前記クライアント端末または各サーバのいずれかが、
前記公開された結果から、前記数値aと前記数値bとの大小関係を、秘密に保持したまま求めることを特徴とする。
【発明の効果】
【0009】
本発明によれば、ユーザたちあるいはユーザの代理人としてのエージェントプログラムが入力を秘密にしながら大小比較を含む分散計算を、ビット表現による多項式共有によって引き起こされる通信データ量の増加無しに、効率的に行うことが可能となり、入力の秘匿性を必要とされるオークションなどの大小比較演算を含む演算を効率的に実行できる情報処理システムを構築できる。
実際にDFNTプロトコルでは通信回数と総通信量はパラメータL(多項式共有における素数pのビット長)によって133Rounds/258L+220Llog2(L)と表現されるが、本発明では43Rounds/420L+6となる。パラメータLは実用上、通常L>8と仮定できるため、理論的には、通信によるオーバヘッドを通信回数では約1/3に、また通信量では約1/2に軽減できる。
【発明を実施するための最良の形態】
【0010】
本発明による大小比較のための具体的な情報処理システムを説明する前に、まず基本となるBGWの通信方式について簡単に述べ、いくつかの用語、記号、数式の定義を行う。BGW方式では計算される関数に与えられる引数がShamirの方式によって秘密分散される。Shamirの多項式共有による秘密分散とは次式(1)のようなある有限体上の多項式によって与えられる。

【0011】
ここでpはある公開された奇数の素数であり各a[i]は有限体Zpからランダムに選ばれた値である。例えばあるユーザが秘密の入力aを秘密分散するときは上記f_a()のような定数項にaをもつランダム多項式を生成し(つまり上記の多項式の各係数をランダムに選択する)、他ユーザ1≦i≦に対してf_a(i)(これはシェアと呼ばれる)を秘密通信路を通じて配布する。このようにaが多項式によって秘密分散されている(つまりシェアf_a(i)がユーザiに保持されている状態)ことを以下では[a]pと表記する。多項式f_a(x)はt+1個のシェアを集めることでLagrangeの補間公式と呼ばれる標準的な方法によって復元できる。
【0012】
加算とは、aとbが多項式f_a(x)とf_b(x)で秘密分散されているときa+b mod pのシェアを計算することであるが、これは各ユーザiがf_a(i)+f_b(i)を行うことで計算できる。このときa+bを復元することなしにaもbも秘密のままでa+bのシェアを各ユーザが計算できることがBGW方式の利点である。また非特許文献5の乗算方式を用いることで[a]pと[b]pから[ab mod p]pのシェアも計算できることが知られている。
このようにaとbが多項式共有による秘密分散されている状況から、ユーザたちが加算、乗算のシェアを計算することを以下では[a+b mod p]p=[a]p+[b]p,[ab]p=[a]p*[b]pと表記することにする。
【0013】
図1に、本発明を実施する場合の基本的な秘密分散情報処理システムの構成を表す。本システムは、クライアント101、102等と、n個のサーバ(この図では4個)111、112、113、114及びそれらを接続するネットワーク121から構成される。
クライアント101が秘密に保持する数値aについて、f_a(x)が前述のような多項式で表現され、シェアf_a(1)、f_a(2)、f_a(3)、f_a(4)が、それぞれサーバ111、サーバ112、サーバ113、サーバ114に対して、クライアント101からネットワーク121経由で、互いに他のサーバやクライアントには知られないように、秘密に送付される。同様に、クライアント102が秘密に保持する数値bについても、多項式の各要素であるf_b(1)、f_b(2)、f_b(3)、f_b(4)が、それぞれサーバ111、サーバ112、サーバ113、サーバ114に対して、クライアント102からネットワーク121経由で秘密に送付される。
【0014】
更に、非特許文献4では他の部品となる通信プロトコルが提案されている。本発明の中でも、これらの部品を使うため利用する部品についてのみ述べる。
秘密乱数生成プロトコルであるDFNTプロトコルによって有限体Zpからあるランダムな秘密の値をユーザたちが誰も知ることなく生成できる。これを[r∈Zp]pと表す。このとき秘密乱数rがユーザたちによって秘密分散されている状態を作り出すことができる。ただしどのユーザもrの値は知らないことに注意。
また、DFNTプロトコルによって乱数の中でも特に0,1のどちらかを秘密に生成することができる。これを[b∈{0,1}]pと表す。このとき秘密ビットbがユーザたちによって秘密分散されている状態を作り出すことができる。ただしどのユーザもbが0か1か知らないことに注意。
【0015】
ここで「bitwise秘密分散」についてまず説明する。これは今まで「ビット表現による多項式共有」と呼んでいたものに相当する。いま各a[i]∈{0,1}であるk個の秘密分散[a[k−1]]p,…,[a[0]]pがあり(a[k−1],a[k−2],…,a[0])のビット列によって、a=Σ((2^i)*a[i])(0≦i≦k−1)となるaを表現しているとする。このときaをk個のビットによって「bitwise秘密分散」していると表現し、[a]_Bと表記する。このときaの通常の秘密分散[a]pはBGW方式の加算の性質から、次式(2)によって得ることができる。
[a]p=Σ(2^i)*[a[i]]p …(2)
【0016】
DFNTプロトコルはBitwise Less−Thanプロトコルとしてbitwise秘密分散された[a]_Bと[b]_Bを比較し、a<bであれば[1]p、a!<bつまりa≧bであれば[0]pの秘密分散を結果である0,1を秘密にしたまま作り出すプロトコルである。このプロトコルの計算結果を[a<?Bb]pのように表す。つまりbitwise秘密分散されたaとbを秘密にしたままでその大小比較結果の{0,1}をまた秘密分散できる。これはaとbがbitwise秘密分散されていれば大小比較を効率的に行えるという事実に基づいている。
DFNTプロトコルは秘密bitwise乱数生成プロトコルとして秘密ビット生成プロトコルをパラレルに実行し最初からビット表現で乱数rを生成する。このプロトコルで乱数を生成することを[r∈Zp]_Bのように表す。
【0017】
本発明は上記の部品プロトコルを使いaとbが[a]pと[b]pとして多項式共有による秘密分散(bitwise秘密分散ではない)されているときに、[a<?b]p,where(a<b)=1 ifa<b,となるような計算を行う方法である。
多くの場合、aとbの値は[a]_B,[b]_Bで与えられるよりも、[a]p,[b]pで与えられるため、本発明を用いれば[a]pから[a]_Bへの変換を回避できることに注意。
【0018】
以下に本発明の秘密分散情報処理システムにおける計算方法について述べる。
まずここでは秘密分散された[a]pと有限体の位数pの半分の値との比較を行いその結果の0,1を秘密に判定できると仮定し、その結果の秘密分散を[a<?p/2]pとする。このとき最終目標である[a<?b]pは、図2の真理値表によって、各論理値(a<?p/2)と(b<?p/2)と((a−b mod p)<?p/2)から決定できる。
よってzは、次式(3)の論理式で与えられる。
z=w(1−x)+(1−w)(1−x)(1−y)+wx(1−y) …(3)
ここで、第1項w(1−x)は図2の201から、第2項(1−w)(1−x)(1−y)は202から、第3項wx(1−y)は203から、それぞれ求められる式である。
ユーザたちはw,x,y∈{0,1}のそれぞれの秘密分散を計算できればBGW方式の加算と乗算によってzつまり(a<?b)の秘密分散である[a<?b]pを秘密に計算することができる。
【0019】
次に秘密分散された[a]pから[a<?p/2]pを計算する判定プロトコルについて述べる。
ユーザたちは以下のプロトコルに従って計算する。
1. 秘密bitwise乱数生成プロトコルによって[r∈Zp]_Bを得る。また[r∈Zp]_Bからユーザたちは[r∈Zp]pを式(2)によって容易に計算できる。
2. ユーザたちは[c]p=[a]p+[r]pを実行し、[c]pのシェアを公開することでcを復元しc=a+r mod pを公開する。rが秘密の値であるためa+rを公開してもaに関する情報は秘匿されたままである。
3. ユーザたちは公開したcから論理式が(c−r’mod p<?p/2)≠(c<?p/2)を満たすようなr’の範囲を求める。この範囲を{low,…,high}とする。ここではpが公開されていることに注意。
4. ユーザたちはrが{low,…,high}の範囲に入っているかをBitwise Less−Thanプロトコルを用いて
[r∈?{low,…,high}]p=[low−1 <?B r]p * [r <?B high+1]p …(4)
を計算することで得られる。ここでrは[r]_Bとしてユーザたちに保持されており、lowとhighは公開された値であるため[low]_B,[high]_Bとしてユーザたちに保持されることが可能であることに注意。
5. 最後にユーザたちは値cとp/2の大小関係を用いた場合分けによって以下のように[a<?p/2]pを求める。
[a<?p/2]p=1−[r∈?{low,…,high}]p if (c<?p/2)=1. …(5)
[a<?p/2]p=[r∈?{low,…,high}]p if (c<?p/2)=0. …(6)
【0020】
ここで具体例で上記のプロトコルについて説明する。
p=7,a=4としユーザたちはaを秘密にしたままで[4<?7/2]7を計算しようとしているとする。このときユーザたちは秘密の乱数r=5を生成したとする。すると公開される値はc=4+5mod7=2である。cから上記のr’の範囲を求めると{3,4,5}となる。r=5が{3,4,5}の範囲に含まれていればcとa(=c−r mod p)はp/2=7/2を境としてそれぞれ反対側に存在することになる。rが{3,4,5}に含まれているかは[3−1<?r]p*[r<?5+1]pの結果から計算できる。この計算結果が1であれば(c<?p/2)の論理値が反転するようプロトコルを構成すればよい。
【0021】
上記の[a<p/2]pを判定するプロトコルを応用し、公開された定数であるp/2を他の値にする、あるいは比較演算を逆にすることで次のような判定プロトコルも容易に構成できる。ここでa,b∈{0,1,…,p−1}は多項式共有された体Zpのある値とする。
1. aがゼロか判定するプロトコル。
[a=?0]p=[a<?1]p …(7)
2. aとbが等しいか判定するプロトコル。
[a=?b]p=[a−b<?1]p …(8)
3. aとある定数c1,c2∈Zp(c1<c2とする)との様々な判定プロトコル。
[a<?c1]p …(9)
[c1<?a]p …(10)
[a∈?{c1,…,c2}]p=[c1−1<?a]p*[a <? c2+1]p …(11)
4. aとbから大きい方を選択するプロトコル
[max(a,b)]p=[a<?b]p*[b−a]p+[a]p …(12)
【0022】
次に、本発明を実施する場合の、より具体的な実施形態(以下、「本実施形態」と記載する。)について図3以下を参照して具体的に説明する。ここでは複数サーバによるオークションシステムを考える。このオークションシステム(以下、「本システム」または単に「システム」と記載する。)では入札値の中の最大値とその入札者のみが公表され他の入札値は秘匿することが出来る。
図3は本システム全体の構成図である。システムは、管理サーバ1、3台以上の仲介サーバ2(図3においては仲介サーバ2x、2y、2zの3台のサーバを記載している。以下、特に区分する必要がない場合、「仲介サーバ2」と総称する。)、複数台のクライアント3(図3においてはクライアント3a、3b、3cの3台のクライアントを記載している。以下、特に区分する必要がない場合、「クライアント3」と総称する。)および、ネットワーク(通信回線)4から構成される。図示した構成要素以外にも通信機器(ルータ等)が存在するが、本発明とは特に関係がないので説明を省略する。
管理サーバ1、仲介サーバ2、クライアント3はいずれもPC(パーソナル・コンピュータ)等によって実現できる。また、通信回線4は、管理サーバ1、仲介サーバ2、クライアント3を相互に通信可能に接続することができれば、有線、無線を問わず、どのような技術によって実装されてもよいが、以降はインターネットを想定して説明する。
【0023】
図4は本実施形態において管理サーバ1、仲介サーバ2およびクライアント3の記録装置に置かれる主な情報資源の一覧である。
管理サーバ1にはオークションの会員管理、出品管理等を行うための管理ソフトがインストールされ、会員が各クライアント3にダウンロードして使用するためのオークション用クライアントソフト、会員情報、出品情報などが記録されている。
すなわち、オークションに出品したり、入札したりすることを希望する者は、例えば、管理サーバが公開するWEBページから会員ID、認証用パスワード、決済用のクレジット番号等を会員情報として登録することで、オークションの会員になることができ、オークションの会員(以下、「会員」と記載する。)になったものは、オークションに出品、入札するために必要なオークション用クライアントソフトを、管理サーバからダウンロードすることができる。会員は、オークション用クライアントソフトを起動させ、図示しないがメニュー画面から出品処理を選択し、出品入力画面から出品品名、落札期日、最低落札価格、出品物についての説明など必要な情報を入力して送信することで、オークションへの出品を行うことができる。会員が入力した情報は、出品会員の会員IDとともに出品IDを付与して、出品情報として管理サーバに記録される。また、出品情報には、落札者が決まった後で、落札者の会員ID、落札価格等が追記される。
【0024】
仲介サーバ2にはオークションの仲介を行うための仲介ソフトがインストールされ、管理サーバ1から送付された、出品ID等の出品情報が記録される。
会員は、オークション用クライアントソフトを起動させ、図示しないがメニュー画面から入札処理を選択することで出品物の一覧や、各出品物についての説明等を参照することができ、気に入ったものがあれば入札することができる。
そして、会員が入札した場合、会員ID等の入札情報は、管理サーバ1ではなく、仲介サーバ2x、2y、2zに送付され、対応する出品情報とともに、経過情報として記録される。後述するように、管理サーバ1には入札完了するまでは入札に関する情報は送付されず、また、入札金額そのものは仲介サーバ2にも送付されない。さらに、入札完了した場合にも、最終的に知られるのは、落札者および、その落札金額のみである。従って、会員は入札価格について、オークションの開催者も含め、誰にも知られることなく入札を行うことができる。
【0025】
クライアント3にはオークションへの出品、入札等を行うためのオークション用クライアントソフトがインストールされ、オークションへの参加情報として、会員登録時に指定した会員ID、入札した出品物の出品ID、入札価格(同じ出品に対して複数回入札した場合には最後の入札価格)および入札日時が記録される。
なお、本システムにおいては、管理サーバ1と仲介サーバ2が物理的に異なった装置として説明を行うが、必ずしもその必要はなく、仲介サーバ2のうちの1台が管理サーバを兼用していても良いし、仲介サーバ2の全てが管理サーバ1としての機能を兼用し、例えば出品物によって負荷分散を行うようにしても良い。
【0026】
図5は本実施形態において、仲介サーバ2に記録される経過情報のデータ構造図である。経過情報には、管理サーバ1から送付された、出品物に関する情報、すなわち出品ID、落札期日、最低落札価格が記録され、この出品物に対してクライアント3から入札が行われた場合には、入札情報すなわち入札者の会員ID毎に入札値が記録される。また入札終了した時点で、各入札者の落札値が記録される。
ここで、入札値、落札値は入札価格、落札価格そのものではない。入札値は入札価格を仲介サーバ2x、2y、2zでシェアした値、すなわち、3台の仲介サーバ2のうちの任意の2台に記録された値によって入札額を求めることが可能な値である。同様に、落札値は落札価格を仲介サーバ2x、2y、2zでシェアした値、すなわち、3台の仲介サーバ2のうちの任意の2台に記録された値によって落札額を求めることが可能な値である。このような値を求める方法は、「課題を解決するための手段」において説明した通りである。
【0027】
図6は本実施形態におけるオークションシステムの動作を示すフローチャートである。フローチャートには出品が行われてから落札者が決まるまでの処理を記載している。オークションにおいては、この前後に出品物を管理サーバ1に登録する処理、落札者に対して入金を求める処理などが必要になるが、これらについては本発明とは特に関係がなく、また既存の各オークションシステムと同様の機能でよいので説明を省略する。
まず、管理サーバ1から仲介サーバ2x、2y、2zに出品情報(出品ID、落札期日、最低落札価格)が送付され、各仲介サーバ2は、送付された情報を経過情報に登録する(S41)。
各仲介サーバ2は、落札期日(落札時刻を含む)になるまで、クライアントからの入札情報を受け入れる(S42)。
【0028】
この間、クライアント3で入札処理が行われると、クライアント3には参加情報として、入札対象とした出品物の出品IDおよび入札価格が記録され、仲介サーバ2x、2y、2zに入札情報(会員ID、入札値)が送付される(S43)。入札価格をaとすると、あるランダム多項式f(x)=a+a[1]x mod pによって定義されるシェア{f(1),f(2),f(3)}(={a1,a2,a3})がそれぞれのサーバに対して送付される(a1が仲介サーバ2xに、a2が仲介サーバ2yに、a3が仲介サーバ2zに送付される)。このようなランダム多項式の定義方法については、既に説明した通りである。
こうすることでユーザの入札値aはオークションサーバの内2台以上が結託しなければ秘密に保たれる。さらに秘密性を高めるためには、通信経路として秘密通信路を使用する、各シェアに電子署名をつけておくなどの方法を取ることもできる。
【0029】
落札期日(落札時刻を含む)に達すると入札は終了し、各仲介サーバ2は落札価格を算出し、管理サーバ1に出品IDとその落札価格、および入札に参加した全ての会員の会員IDを送付する(S44)。
入札終了後、入札に参加した会員がオークション用クライアントソフトを起動すると、例えばオークション用クライアントソフト起動時には会員IDを管理サーバ1に通知するようにしておくことで、管理サーバ1は、送付された会員IDと照合することができる。照合の結果、入札に参加した会員たった場合、管理サーバ1はオークション用クライアントソフトに、出品IDと落札価格を送付する。オークション用クライアントソフトは送付された出品ID、落札価格とクライアント3に記録されている出品ID、落札価格を照合し、一致している場合には、管理サーバ1にその旨の情報および入札日時を通知する。不一致の場合には、クライアント3の画面上に落札できなかったことを表示する(S45)。
【0030】
管理サーバ1は、予め会員に通知していた所定の期間(例えば24時間)を落札申出期限として待ち、その間、上述したようにクライアント3からの落札通知を受付ける(同じ額で落札した会員が複数人いる場合に、最初にその額を入札したものを選ぶためである)。所定の期間が経過すると、クライアント3から落札者として通知された全ての会員について、仲介サーバ2x、2y、2zに出品IDと会員IDを送付し、当該会員の入札額を確認するように要求する。仲介サーバ2は、当該出品物の経過情報から当該会員の入札価格を求め、管理サーバ1に送付する。管理サーバ1は送付された入札価格と落札価格を照合し、一致している場合には、そのうち入札日時が最も古いものについて、クライアント3から送付された会員IDを落札者の会員IDとして出品情報に記録するとともに、当該会員IDのクライアント3に、出品IDと落札した旨の情報を送付する。落札価格が一致しても入札時刻が最も古くない場合には、当該会員IDのクライアント3に、出品IDと落札できなかった旨の情報を送付する。不一致の場合には、当該クライアント3において何らかの不正が行われたことになるので、当該会員IDのクライアント3に、警告メッセージ等を送付する。クライアント3は管理サーバ1から送付された情報により、クライアント3の画面上に落札したことの表示または警告表示を行う(S46)。
【0031】
図7は本実施形態における経過情報の概要説明図である。本図を使用して、S43、S44、S46における仲介サーバ2の処理について説明を補足する。
まず、S43において、クライアント3a、3b、3cにおいて、それぞれの入札価格(a、b、c)をシェアした値、{a1、a2、a3}、{b1、b2、b3}、{c1、c2、c3}が生成され、仲介サーバ2に送付される。この結果、仲介サーバ2x、2y、2zには、入札情報としてそれそれ{a1、b1、c1}、{a2、b2、c2}、{a3、b3、c3}が記録される。
S44において、各仲介サーバ2は入札情報を用いてユーザの入札価格を秘密にしたままトーナメント方式で勝者を決める。ここではaとbのシェアからその勝者max(a,b)に対応するシェアを計算する方式を用いることができる。
S44において、各仲介サーバ2は入札情報を用いてユーザの入札価格を秘密にしたままトーナメント方式で勝者を決める。ここではaとbのシェアから、その勝者max(a,b)に対応するシェアを計算する方式、即ち前述の式(12)を用いることができる([max(a,b)]p=[a<?b]p*[b−a]p+[a]p)。
【0032】
つまり[a<?b]p∈{0,1}を本発明方式によって秘密に計算し、それを秘密にしたままmax(a,b)のシェアを上記の公式によって計算できる。このとき途中計算結果のmax(a,b)も秘密したまま計算が可能である。これを最終的な勝者が決まるまでトーナメントで行い最後の勝者の入札価格のみに対応するシェア{z1、z2、z3}(落札情報)が各仲介サーバ2に記録される。各仲介サーバ2は落札情報を公開しLagrangeの補間公式で勝者の入札価格を求める。
S46において、公開された入札価格に対応するシェアを仲介サーバ2に送信した会員IDが、管理サーバ1から仲介サーバ2に通知されるので、仲介サーバ2は通知された会員から送信されたシェアを公開し、ユーザによる電子署名の正当性とシェアから計算される入札値が公開された最大入札値と一致するか確認する。勝者が複数いた場合は、前述したような早い者勝ちとする方式のほか、くじ引きや勝者のみで更にオークションを続行するなどができる。
【0033】
次に本発明方式を用いた応用例としてMultiparty Computationにおける除算プロトコルとmodular reductionプロトコルの実現例を示す。ここでいう除算とは例えば秘密a,bが秘密分散されて[a]p,[b]pをユーザが持つときにa=kb+a’ where0≦a’<bとなるようなkを求めることである。上記のa’を求めることをbによるaのmodular reductionと呼ぶ。つまりa’はaをbで割ったときの余りとなる。効率的な大小比較プロトコルによって[a]p,[b]pから[k]p,[a’]pを以下のように求めることができる。著者の知る限りでは本発明以外にkやa’を正確に求める実現例は今まで提案されていなかった。
まず前提としてbに関してbは秘密ではあるがそのビット長については分かっているとし、tビット長の秘密であるとする。つまり2^(t−1)<b<2^tとする。
このときp/(2^t)<p/b<p/(2^(t−1))が成立する。pとtは公開された値なのでp/bの範囲が分かる。p/(2^t)の整数部分をsとする。
【0034】
以下、[a]p,[b]pから[a’]pを求めるプロトコルについて示す。
1. ユーザたちはまず以下のプロトコルを実行し[a’1]pを求める。このプロトコルで必要となる比較プロトコルは本発明による方式で効率的に計算できる。
[a’1]p=[sb<?a]p*[a−sb]p+(1−[sb<?a]p)*[a]p
=[a]p−[sb<?a]p*[sb]p …(13)
2. ユーザたちはステップ1のプロトコルを再度実行し[a’2]pを求める。
[a’2]p=[a’1]p−[sb <?a’1]p*[sb]p …(14)
3. この時点でa’2<sbが確実に成立している。a’2より2分探索的にbの倍数を減算し最終結果である[a’]pを求める。今a’2はsbより小さいためa’2がs/2*bより大きいかどうか判定し、a’2がs/2*bより大きければa’2よりs/2*bを減算するという方法を取る。s/2がsが奇数のため割り切れないときは桁上げを行い整数にする。たとえばs=5のときs/2として3を採用する。以下のプロトコルを実行することでa’3はs/2*bより小さいことが成立する。
[a’3]p=[a’2]p−[s/2*b<?a’2]p*[s/2*b]p …(15)
同様にa’4を以下のように求める。
[a’4]p=[a’3]p−[s/4*b<?a’3]p*[s/4*b]p …(16)
これを繰り返すことでsを2で割り算し、1以下となるまで繰り返すことで[a’]pが求まる。このときほぼlog(s)回の比較プロトコルを繰り返すことで[a’]pが求まる。
【0035】
上記のプロトコルの感覚的な実行例としてa=17,b=5とするとa’1=17−5*2=7,a’2=7−5=2,a’3=a’=2−0*5=2として最終的にa’=2が求まる。つまりaよりbの倍数を引き算し、引き算した結果がbより小さくなるまで繰り返す。
[a]pと[b]pからa=kb+a’where 0≦a’<bを満たすような[a’]pが上記の方法で求まれば[kb]p=[a]p−[a’]pによって[kb]pが求まる。[b]pから[b^(−1)]pを求めるプロトコルはDFNTプロトコルで既に提案されているためそのプロトコルを使えば[k]p=[kb]p*[b^(−1)]pによって[k]pが求まり、除算プロトコルを実行できる。
除算プロトコルを用いて例えば次のようなシステムの実現に応用できる。複数のDBの所有者がそれぞれのデータを秘匿し、DB内のプライバシーを保護しながら、全てのDBを統合した結果に対するある統計的な値を計算する、あるいはある規則性を発見する場合である。具体的には複数の病院が患者の症状に関するDBを保持しており、それぞれのDBを他の病院に対しては、患者のプライバシー保護のため秘匿しながら、ある症状に関する統計的な値や規則性を発見することである。これらの計算は一般に複雑で除算を正確に計算できなければ正しい値が求

る。
【0036】
なお、本発明は以上の実施形態に限定されるのではなく、本発明の要旨を変更しない範囲において上記実施の形態を変形あるいは修正してもよいことはいうまでもない。例えば、共有機密データを暗号化しておき、クライアントコンピュータ側でデータを復号し、編集後書き込み前に暗号化し書き込むようにする。
また、共有機密フォルダおよび共有機密データに関するログを取得のも望ましい形態である。
また、機密フォルダ1021は、サーバ内102内に設けたが、外付けの記憶装置であってもよい。
【図面の簡単な説明】
【0037】
【図1】本発明の最も単純な実施例である情報処理システムの構成図
【図2】本発明の論理演算に用いる真理値表
【図3】本発明の一実施例である情報処理システム全体構成図
【図4】本発明の一実施例である情報処理システムにおける主な情報資源の一覧
【図5】本発明の一実施例である情報処理システムにおける経過情報のデータ構造図
【図6】本発明の一実施例である情報処理システムの動作を示すフローチャート
【図7】本発明の一実施例である情報処理システムにおける経過情報の概要説明図
【符号の説明】
【0038】
101、102、3a、3b、3c クライアント端末
111、112、113、114、2x、2y、2z 秘密分散サーバ
1 管理サーバ
121、4 ネットワーク

【特許請求の範囲】
【請求項1】
クライアント端末と、n個のサーバ1〜サーバnとがネットワークによって接続され、前記クライアント端末が保持する秘密の数値aに対する多項式f_a(x)が、前記数値aを定数項とする多項式を公開された素数pで除した剰余として定義される場合に、多項式f_a(x)に対するシェアf_a(1)〜f_a(n)が、それぞれ前記サーバ1〜サーバnに対して、前記ネットワークを経由して、前記クライアント端末から他のサーバには秘密に分散して配布される秘密分散情報処理システムであって、
前記クライアント端末が、
秘密の乱数rを発生させて、前記多項式のシェアf_r(1)〜f_r(n)をそれぞれ前記サーバ1〜サーバnに秘密に配布し、
前記各サーバが、
それぞれ自己のサーバに配布されているシェア[a]p及び[r]pの和[c]pを計算して他のサーバ及びクライアント端末に公開し、
前記クライアント端末または各サーバのいずれかが、
公開された前記各サーバのシェア[c]pから元の数値cを復元し、
前記復元された数値cと公開された数値dとの値から(c−r’<?d)≠(c<?d)となるようなr’の範囲{low,…,high}を求め、
前記乱数rが範囲{low,…,high}に含まれるかを(low−1<?r)と(r<?high+1)を判定することで求め、
当該rが範囲{low,…,high}に属するか否かの判定結果から、前記公開された数値dと前記数値aとの大小関係を、数値aを秘密に保持したまま求めることを特徴とする秘密分散情報処理システム。
【請求項2】
請求項1に記載の秘密分散情報処理システムにおいて、
第二のクライアント端末が更に前記ネットワークによって接続され、
前記第二のクライアント端末が保持する秘密の数値bに対する前記多項式のシェアf_b(1)〜f_b(n)が前記サーバ1〜サーバnに秘密に分散されて保持され、
前記各サーバが、
それぞれ自己のサーバに配布されているシェアから、式[max(a,b)]p=[a<?b]p*[b−a]p+[a]pを計算して他のサーバ及びクライアント端末に公開し、
前記クライアント端末または各サーバのいずれかが、
前記公開された結果から、前記数値aと前記数値bとの大小関係を、秘密に保持したまま求めることを特徴とする秘密分散情報処理システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2008−20871(P2008−20871A)
【公開日】平成20年1月31日(2008.1.31)
【国際特許分類】
【出願番号】特願2006−220613(P2006−220613)
【出願日】平成18年7月14日(2006.7.14)
【新規性喪失の例外の表示】特許法第30条第1項適用申請有り 研究集会名: 2006年暗号と情報セキュリティシンポジウム 主催者名: 電子情報通信学会 情報セキュリティ研究専門委員会 開催日: 平成18年1月17日
【出願人】(000233055)日立ソフトウエアエンジニアリング株式会社 (1,610)
【Fターム(参考)】