(57)【特許請求の範囲】
【請求項１】
それぞれが少なくとも第１要素及び第２要素を含む第１入力と第２入力とに対する計算を行なう秘密計算装置であって、
前記秘密計算装置は、
第１入力第１要素と第２入力第１要素との論理積である第１論理積を求める手段と、
第１入力第２要素と第２入力第２要素との論理積である第２論理積を求める手段と、
前記第１論理積と前記第２論理積との排他的論理和を第１の局所積要素として求める手段と、
を含む局所論理積装置と、
マスクと、前記第１の局所積要素とＰ（Ｐは０以上の整数）個のビットとの排他的論理和を計算して得られる第２の局所積要素との排他的論理和である第１論理和を求める手段と、
前記第１論理和を第１の他の秘密計算装置へ送信するとともに、第２の他の秘密計算装置から受信第１論理和を受信する手段と、
前記第１論理和を出力第１要素として出力する手段と、
前記第１論理和と前記受信第１論理和との排他的論理和を出力第２要素として出力する手段と、
を含む論理積再分配装置と、
を備える秘密計算装置。
【請求項２】
他の秘密計算装置のマスク生成装置と通信し、鍵を使用して乱数を生成するマスク生成装置を更に備え、
前記マスク生成装置は、
自身が保持している鍵を入力として第１疑似乱数を生成する手段と、
前記自身が保持している鍵を前記他の秘密計算装置のマスク生成装置へ送信し、かつ、前記他の秘密計算装置のマスク生成装置から受信鍵を受信する手段と、
前記受信鍵を入力として第２擬似乱数を生成する手段と、
前記第１疑似乱数と前記第２擬似乱数とのビット毎の排他的論理和を前記乱数として出力する手段と、
を含み、
前記乱数から選ばれた１ビットを前記マスクとして前記論理積再分配装置へ供給する、請求項１に記載の秘密計算装置。
【請求項３】
請求項１に記載の局所論理積装置および論理積再分配装置を、それぞれ、第１乃至第３の局所論理積装置および第１乃至第３の論理積再分配装置として含む、第１乃至第３の秘密計算装置を有する秘密計算システムであって、
前記第１の秘密計算装置の前記第１の論理積再分配装置は、前記第１論理和を前記第３の秘密計算装置の前記第Ｎの論理積再分配装置へ送り、
第ｎ（２≦ｎ≦３）の秘密計算装置の第ｎの論理積再分配装置は、前記第１論理和を第（ｎ−１）の秘密計算装置の第（ｎ−１）の論理積再分配装置へ送る、
ことを特徴とする秘密計算システム。
【請求項４】
請求項２に記載の局所論理積装置、論理積再分配装置、およびマスク生成装置を、それぞれ、第１乃至第３の局所論理積装置、第１乃至第３の論理積再分配装置、および第１乃至第３のマスク生成装置として含む、第１乃至第３の秘密計算装置を有する秘密計算システムであって、
前記第１の秘密計算装置の前記第１の論理積再分配装置は、前記第１論理和を前記第３の秘密計算装置の前記第３の論理積再分配装置へ送り、
第ｎ（２≦ｎ≦３）の秘密計算装置の第ｎの論理積再分配装置は、前記第１論理和を第（ｎ−１）の秘密計算装置の第（ｎ−１）の論理積再分配装置へ送り、
前記第１の秘密計算装置の前記第１のマスク生成装置は、前記自身が保持している鍵を前記第３の秘密計算装置の前記第３のマスク生成装置へ送り、
前記第ｎの秘密計算装置の第ｎのマスク生成装置は、前記自身が保持している鍵を前記第（ｎ−１）の秘密計算装置の第（ｎ−１）のマスク生成装置へ送る、
ことを特徴とする秘密計算システム。
【請求項５】
それぞれが少なくとも第１要素及び第２要素を含む第１入力と第２入力とに対する計算を行なう秘密計算方法であって、
局所論理積装置が、
第１入力第１要素と第２入力第１要素との論理積である第１論理積を求め、
第１入力第２要素と第２入力第２要素との論理積である第２論理積を求め、
前記第１論理積と前記第２論理積との排他的論理和を第１の局所積要素として求め、
論理積再分配装置が、
マスクと、前記第１の局所積要素とＰ（Ｐは０以上の整数）個のビットとの排他的論理和を計算して得られる第２の局所積要素との排他的論理和である第１論理和を求め、
前記第１論理和を第１の他の秘密計算装置へ送信するとともに、第２の他の秘密計算装置から受信第１論理和を受信し、
前記第１論理和を出力第１要素として出力し、
前記第１論理和と前記受信第１論理和との排他的論理和を出力第２要素として出力する、
秘密計算方法。
【請求項６】
マスク生成装置が、前記他の秘密計算装置のマスク生成装置と通信して、鍵を使用して乱数を生成し、
前記マスク生成装置は、
自身が保持している鍵を入力として第１疑似乱数を生成し、
前記自身が保持している鍵を前記他の秘密計算装置のマスク生成装置へ送信し、かつ、前記他の秘密計算装置のマスク生成装置から受信鍵を受信し、
前記受信鍵を入力として第２擬似乱数を生成し、
前記第１疑似乱数と前記第２擬似乱数とのビット毎の排他的論理和を前記乱数として出力し、
前記マスク生成装置が、前記乱数から選ばれた１ビットを前記マスクとして前記論理積再分配装置へ供給する、
請求項５に記載の秘密計算方法。
【請求項７】
請求項１に記載の局所論理積装置および論理積再分配装置を、それぞれ、第１乃至第３の局所論理積装置および第１乃至第３の論理積再分配装置として含む、第１乃至第３の秘密計算装置を有する秘密計算システムにおける秘密計算方法であって、
前記第１の秘密計算装置の前記第１の論理積再分配装置が、前記第１論理和を前記第３の秘密計算装置の前記第３の論理積再分配装置へ送るステップと、
第ｎ（２≦ｎ≦３）の秘密計算装置の第ｎの論理積再分配装置が、前記第１論理和を第（ｎ−１）の秘密計算装置の第（ｎ−１）の論理積再分配装置へ送るステップと、
を含む秘密計算方法。
【請求項８】
請求項２に記載の局所論理積装置、論理積再分配装置、およびマスク生成装置を、それぞれ、第１乃至第３の局所論理積装置、第１乃至第３の論理積再分配装置、および第１乃至第３のマスク生成装置として含む、第１乃至第３の秘密計算装置を有する秘密計算システムにおける秘密計算方法であって、
前記第１の秘密計算装置の前記第１の論理積再分配装置が、前記第１論理和を前記第３の秘密計算装置の前記第３の論理積再分配装置へ送るステップと、
第ｎ（２≦ｎ≦３）の秘密計算装置の第ｎの論理積再分配装置が、前記第１論理和を第（ｎ−１）の秘密計算装置の第（ｎ−１）の論理積再分配装置へ送るステップと、
前記第１の秘密計算装置の前記第１のマスク生成装置が、前記自身が保持している鍵を前記第３の秘密計算装置の前記第３のマスク生成装置へ送るステップと、
前記第ｎの秘密計算装置の第ｎのマスク生成装置が、前記自身が保持している鍵を前記第（ｎ−１）の秘密計算装置の第（ｎ−１）のマスク生成装置へ送るステップと、
を含む秘密計算方法。
【請求項９】
コンピュータに、それぞれが少なくとも第１要素及び第２要素を含む第１入力と第２入力とに対する計算を行なわせる秘密計算プログラムであって、
第１入力第１要素と第２入力第１要素との論理積である第１論理積を求める機能と、
第１入力第２要素と第２入力第２要素との論理積である第２論理積を求める機能と、
前記第１論理積と前記第２論理積との排他的論理和を第１の局所積要素として求める機能と、
を含む局所論理積機能と、
マスクと、前記第１の局所積要素とＰ（Ｐは０以上の整数）個のビットとの排他的論理和を計算して得られる第２の局所積要素との排他的論理和である第１論理和を求める機能と、
前記第１論理和を第１の他の秘密計算装置へ送信するとともに、第２の他の秘密計算装置から受信第１論理和を受信する機能と、
前記第１論理和を出力第１要素として出力する機能と、
前記第１論理和と前記受信第１論理和との排他的論理和を出力第２要素として出力する機能と、
を含む論理積再分配機能と、
を実現させるための秘密計算プログラム。
【請求項１０】
前記コンピュータに、
前記他の秘密計算装置のマスク生成装置と通信して、鍵を使用して乱数を生成するマスク生成機能であって、
前記マスク生成機能は、
自身が保持している鍵を入力として第１疑似乱数を生成する機能と、
前記自身が保持している鍵を前記他の秘密計算装置のマスク生成装置へ送信し、かつ、前記他の秘密計算装置のマスク生成装置から受信鍵を受信する機能と、
前記受信鍵を入力として第２擬似乱数を生成する機能と、
前記第１疑似乱数と前記第２擬似乱数とのビット毎の排他的論理和を前記乱数として出力する機能と、
を含み、
前記乱数から選ばれた１ビットを前記マスクとして前記論理積再分配機能へ供給する機能と、
を更に実現させるための、請求項９に記載の秘密計算プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、秘密計算装置、方法、記録媒体、および秘密計算システムに関する。
【背景技術】
【０００２】
秘密計算方法とは、複数の秘密計算装置が互いに通信を介しながら計算することで、与えられた関数を計算する方法である。そして、秘密計算方法は、これらのいずれの秘密計算装置も十分な数の多装置間で互いに扱うデータを共有しない限り、関数への入力や出力に関する情報を得ることができない特徴を持つ。【０００３】
公知の秘密計算方法として、非特許文献１に挙げられる方法が知られている。【０００４】
非特許文献１に記載の方法では、ある体上の値である秘密Sを、この体上の多項式FでF(０)=Sとなるものを使って複数の装置に分散する。装置の数をN、秘密の個数がK未満であれば、関数の入力や出力に関する情報を得ることができないとする。装置毎に異なるこの体上の値が割り当てられているとし、i番目の装置に割り当てられている体の値をX[i]とする。ここで、１≦i≦Nである。【０００５】
秘密Aをこれら複数の装置に分散する時、各i番目の装置にはF(0)=Aなるランダムに選ばれた（K-1）次多項式Fに関する、F[i]:=F(X[i])を配る。【０００６】
秘密Bに関しても同様に、G(0)=Bなる（K-1）次多項式Gに関する、G[i]:=G(X[i])を各i番目の装置に配る。【０００７】
秘密は、K個以上の装置が集まれば（K-1）次多項式を解くことが可能で、FやGの係数を求めることができ、F(0)やG(0)を計算することが可能になる。【０００８】
A+Bを分散した値を計算するには、各i番目の装置は H[i]=F[i]+G[i]を計算する。この値はFとGのそれぞれ対応する係数を足したものを係数とする多項式Hに、X[i]を代入して得られたものH(X[i])であるので、秘密Aや秘密Bと同様にA+Bを複数の装置で分散したものとなる。【０００９】
秘密Aや秘密Bの場合と同様に、K個以上の装置が集まれば（K-1）次多項式を解くことが可能で、Hの係数を求めることができ、H(0)を計算することが可能になる。【００１０】
K*2 ≦N+1 の場合は、A*Bを分散した値を計算するには、各i番目の装置は H[i]=F[i]*G[i]を計算する。この値は2K次多項式H(X)=F(X)*G(X)、X[i]を代入して得られたものH(X[i])であるので、秘密Aや秘密Bと同様にA*Bを複数の装置で分散したものとなる。ただし、秘密Aや秘密Bの場合とは異なりHの次数は２Kとなるので、２K個以上の装置が集まれば２K次多項式を解くことが可能で、Hの係数を求めることができ、H(0)を計算することが可能になる。【００１１】
A*Bの分散方法は、秘密Aや秘密Bとは分散のされ方が異なる。これを同様に（K-1）次多項式を用いた形で分散するには、それぞれi番目の装置がH[i]からK-1次多項式Gを生成して、他のそれぞれj番目の装置にG(X[j])を配ることでなされる。このようにして、非特許文献１記載の方法では、加算と乗算からなる全ての関数を計算することができる。【００１２】
この非特許文献１に記載の方法は、体上の乗算と加算が容易に行われるが、条件として2K≦N+１がある。Kは2以上でなければ装置単独で秘密を求めることができるため、Nは３以上である。【００１３】
異なるiに関するX[i]は異ならなければならないので、非特許文献１記載の方法では、利用できる体にガロア体GF(2)は含まれない。ガロア体GF(2)が含まれないため、非特許文献１記載の方法では、加算を用いて排他的論理和とすることはできない。【００１４】
その他の公知の秘密計算方法として、非特許文献２に挙げられる方法が知られている。【００１５】
非特許文献２には、装置の数が二つの場合の方法に関する記述がある。この方法では、二つの装置がビット、すなわちガロア体GF(2)上のある要素bを分散して保持する場合は、 b+c=b mod 2 となるbとcを、それぞれの装置で分けて保持する。【００１６】
この様な方法を使うと、あるビットAとあるビットBを装置１と装置２で分散する場合、A=C+D mod 2, B=E+F mod 2として、装置１はCとEを、装置２はDとFを保持する。この時、ビットAとビットBの排他的論理和Gは G=A+B mod 2となり、これらの装置１と装置２との分散は、それぞれ、H=C+E mod 2とJ=D+F mod 2 とすることができる。【００１７】
それぞれの装置は、他の装置と通信することなく、軽い計算で分散された二つの値の排他的論理和の分散が計算できたことになる。【００１８】
同様に、ビットAとビットBが分散されて保持されているとき、この二つのビットの論理積 K=A・Bのそれぞれの分散、すなわち L+M=K mod 2なるLとMを、装置１がLを装置２がMを得るように計算を行うには、次のようにする。【００１９】
装置１はLをランダムに生成する。この時、M＝(C+D)・(E+F)=L mod 2 であるので、装置２が持つ値DとFに応じて、装置１がMの値を知らずに装置２に次の値を返す。(D,F)=(0,0)ならM=(C+0)・(E+0)+L mod 2を返す。(D,F)=(0,1)ならM=(C+0)・(1+E)+L mod 2 を返す。(D,F)=(1,0)ならM=(1+C)・(E+0)+L mod 2 を返す。(D,F)=(1,1)ならM=(1+C)・(1+E)+L mod 2 を返す。【００２０】
装置２の入力に依存する値を装置１が装置２に送付する。装置１が装置２の入力を知ることができない方法は、装置１と装置２との間の oblivious transfer と呼ばれる技術で実現される。しかしながら、この技術では、一般に両者に多くの計算と通信を要求する。
【先行技術文献】
【非特許文献】
【００２１】
【非特許文献１】Tal Rabin, Michael Ben-Or: Verifiable Secret Sharing and Multiparty Protocols with Honest Majority (Extended Abstract). STOC 1989: 73-85
【非特許文献２】Oded Goldreich, Ronen Vainish: How to Solve any Protocol Problem - An Efficiency Improvement. CRYPTO 1987: 73-86
【発明の概要】
【発明が解決しようとする課題】
【００２２】
非特許文献１に記述される方法は、通信を必要とするものの少ない通信量で論理積を分散して計算することが可能になる。また、非特許文献１に記述される方法は、必要な計算も少ない。一方、非特許文献１に記述される方法は、排他的論理和を分散して計算するために、論理積の計算と同様に通信と若干の計算を必要とする。【００２３】
非特許文献２に記述される方法は、排他的論理和を分散して計算することに通信を伴わない利点がある。一方、非特許文献２に記述される方法は、論理積演算に通信も計算も必要とする。【００２４】
本発明の目的は、上記先行技術の問題を踏まえ、ビット、すなわちガロア体GF(2) の元の排他的論理和を、複数の秘密計算装置で分散したまま計算しつつ、これらの秘密計算装置間に通信が発生せず、ビットの論理積も、少ない通信量と計算で分散したまま、計算することを実現する秘密計算装置、方法、記録媒体、および秘密計算システムを提供することにある。
【課題を解決するための手段】
【００２５】
本発明の秘密計算装置は、少なくとも２つの１ビットの入力要素を受け、第１の局所積要素を出力する局所論理積装置と；１ビットのマスクと、前記第１の局所積要素とＰ（Ｐは０以上の整数）個のビットとの排他的論理和を計算して得られる第２の局所積要素とを受け、第１論理和を計算し、他の秘密計算装置の論理積再分配装置と通信して、少なくとも１つの１ビットの出力要素を出力する論理積再分配装置と；を備える。【００２６】
本発明の秘密計算方法は、少なくとも２つの１ビットの入力要素を受けて、第１の局所積要素を出力するステップと；１ビットのマスクと、前記第１の局所積要素とＰ（Ｐは０以上の整数）個のビットとの排他的論理和を計算して得られる第２の局所積要素とを受けて、第１論理和を計算し、他の秘密計算装置の論理積再分配装置と通信して、少なくとも１つの１ビットの出力要素を出力するステップと；を含む。【００２７】
本発明のコンピュータ読み取り可能な記録媒体に記録された秘密計算プログラムは、コンピュータに、少なくとも２つの１ビットの入力要素を受けて、第１の局所積要素を出力する機能と；１ビットのマスクと、前記第１の局所積要素とＰ（Ｐは０以上の整数）個のビットとの排他的論理和を計算して得られる第２の局所積要素とを受けて、第１論理和を計算し、他の秘密計算装置の論理積再分配装置と通信して、少なくとも１つの１ビットの出力要素を出力する機能と；を実現させる。
【発明の効果】
【００２８】
本発明によれば、ビット、すなわちガロア体GF(2) の元の排他的論理和を、複数の秘密計算装置で分散したまま計算しつつ、これらの秘密計算装置間に通信が発生せず、ビットの論理積も、少ない通信量と計算で分散したまま、計算することを実現する秘密計算装置、方法、記録媒体、および秘密計算システムを提供できる。
【図面の簡単な説明】
【００２９】
【図１】本発明の第１の実施形態に係る秘密計算装置の構成を示すブロック図である。
【図２】本発明の第１の実施形態に係る秘密計算システムの一構成例を示すブロック図である。
【図３】本発明の第２の実施形態に係る秘密計算装置の構成を示すブロック図である。
【図４】本発明の第２の実施形態に係る秘密計算システムの一構成例を示すブロック図である。
【図５】本発明の実施例に係る秘密計算装置に使用される、局所論理積装置の構成を示すブロック図である。
【図６】本発明の実施例に係る秘密計算装置に使用される、論理積再分配装置の構成を示すブロック図である。
【図７】本発明の実施例に係る秘密計算装置に使用される、マスク生成装置の構成を示すブロック図である。
【図８】３台の秘密計算装置のうち２台が協力するとビットＷを復元できる、実施例に係る秘密計算システムの構成を示すブロック図である。
【図９】ビットＷとビットＷ’とがそれぞれ分散されている時に、分散されたままでこれらの排他的論理和を計算する、実施例に係る秘密計算システムの構成を示すブロック図である。
【図１０】ビットＷが分散されている時に、分散されたままでこれらの否定を計算する、実施例に係る秘密計算システムの構成を示すブロック図である。
【図１１】ビットＷとビットＷ’とがそれぞれ分散されている時に、分散されたままでこれらの論理積を計算する、実施例に係る秘密計算システムの構成を示すブロック図である。
【図１２】図１１に示す秘密計算システムに対して、大量の論理積を計算するように変更された、秘密計算システムの構成を示すブロック図である。
【発明を実施するための形態】
【００３０】
［実施形態１］
最初に、図１を参照して、本発明の第１の実施形態に係る秘密計算装置１について説明する。
【００３１】
図１は秘密計算装置１の構成を示すブロック図である。秘密計算装置１は、局所論理積装置１００と、論理積再分配装置２００と、排他的論理和回路３００と、を備える。
【００３２】
局所論理積装置１００は、少なくとも２つの１ビットの入力要素を受け、第１の局所積要素を出力する。排他的論理和回路３００は、第１の局所積要素とＰ（Ｐは０以上の整数）個のビットとの排他的論理和を計算して、第２の局所積要素を出力する。論理積再分配装置２００は、１ビットのマスクと、第２の局所積要素とを受け、第１論理和（排他的論理和）を計算し、他の秘密計算装置の論理積再分配装置と通信して、少なくとも１つの１ビットの出力要素を出力する。
【００３３】
尚、第１の局所積要素をそのまま第２の局所積要素として使用してもよい。この場合、すなわちＰ＝０個の場合、排他的論理和回路３００を省略することができる。
【００３４】
図２を参照すると、本発明の第１の実施形態による秘密計算システムは、図１に示す秘密計算装置１をＮ（Ｎは３以上の整数）台備えている。ここでは、Ｎ台の秘密計算装置を、それぞれ、第１乃至第Ｎの秘密計算装置１−１、１−２、・・・、１−Ｎと記す。
【００３５】
したがって、図示はしないが、第１乃至第Ｎの秘密計算装置１−１〜１−Ｎは、それぞれ、第１乃至第Ｎの局所論理積装置と、第１乃至第Ｎの論理積再分配装置とを含んでいる。
【００３６】
この場合、第１の秘密計算装置１−１の第１の論理積再分配装置は、上記第１論理和を第Ｎの秘密計算装置１−Ｎの第Ｎの論理積再分配装置へ送る。また、第Ｎの秘密計算装置１−Ｎの第Ｎの論理積再分配装置は、第１の秘密計算装置１−１から上記第１論理和を受け付ける。同様に、各々の第ｎ（２≦ｎ≦Ｎ）の秘密計算装置１−ｎの第ｎの論理積再分配装置は、上記第１論理和を第（ｎ−１）の秘密計算装置１−（ｎ−１）の第（ｎ−１）の論理積再分配装置へ送る。また、第（ｎ−１）の秘密計算装置１−（ｎ−１）の第（ｎ−１）の論理積再分配装置は、第ｎの秘密計算装置１−ｎの第ｎの論理積再分配装置からそれぞれ送られてきた上記第１論理和を受け付ける。
【００３７】
図２に示した秘密計算システムでは、第１乃至第Ｎの秘密計算装置１−１〜１−Ｎのすべてが互いに第１論理和を送受信している。しかしながら、すべての秘密計算装置が第１論理和を互いに送受信する必要はない。すなわち、第１乃至第Ｎの秘密計算装置１−１〜１−Ｎの内、いずれか１つが第１論理和を送信のみをし、他の１つが第１論理和を受信のみをしてもよい。
【００３８】
このような構成の秘密計算システムでは、ビットの排他的論理和を、複数の秘密計算装置１−１〜１−Ｎで分散したまま計算しつつ、これらの秘密計算装置１−１〜１−Ｎ間に通信が発生しない。また、このような構成の秘密計算システムによれば、ビットの論理積も、少ない通信量と計算で分散したまま計算することができる。
【００３９】
したがって、第１の実施形態による秘密計算システムによれば、任意の関数を、複数の秘密計算装置１−１〜１−Ｎで分散したまま、かつデータをどの秘密計算装置１−１〜１−Ｎも知ることなく、高速に計算することが可能となる。
【００４０】
［実施形態２］
次に、図３を参照して、本発明の第２の実施形態に係る秘密計算装置１’について説明する。
【００４１】
図３は秘密計算装置１’の構成を示すブロック図である。図示の秘密計算装置１’は、マスク生成装置４００を更に備えている点を除いて、図１に示した秘密計算装置１と同様の構成を有し動作をする。したがって、図１の構成要素と同一の機能を有するものには同一の参照符号を付し、説明の簡略化のために、それらの説明については省略する。
【００４２】
マスク生成装置４００は、他の秘密計算装置のマスク生成装置と通信し、鍵を使用して乱数を生成する。この乱数から選ばれた１ビットが上記マスクとして論理積再分配装置２００へ供給される。鍵は、自マスク生成装置４００で生成したものを使用しても良いし、他のマスク生成装置で生成された鍵を受信したものを使用しても良い。
【００４３】
図４を参照すると、本発明の第２の実施形態による秘密計算システムは、図３に示す秘密計算装置１’をＮ台備えている。ここでは、Ｎ台の秘密計算装置を、それぞれ、第１乃至第Ｎの秘密計算装置１’−１、１’−２、・・・、１’−Ｎと記す。
【００４４】
したがって、図示はしないが、第１乃至第Ｎの秘密計算装置１’−１〜１’−Ｎは、それぞれ、第１乃至第Ｎの局所論理積装置と、第１乃至第Ｎの論理積再分配装置と、第１乃至第Ｎのマスク生成装置とを含んでいる。
【００４５】
この場合、第１の秘密計算装置１’−１の第１の論理積再分配装置は、上記第１論理和を第Ｎの秘密計算装置１’−Ｎの第Ｎの論理積再分配装置へ送る。そして、第ｎ（２≦ｎ≦Ｎ）の秘密計算装置１’−ｎの第ｎの論理積再分配装置は、上記第１論理和を第（ｎ−１）の秘密計算装置１’−（ｎ−１）の第（ｎ−１）の論理積再分配装置へ送る。
【００４６】
一方、第１の秘密計算装置１’−１の第１のマスク生成装置は、上記鍵を第Ｎの秘密計算装置１’−Ｎの第Ｎのマスク生成装置へ送る。そして、第ｎの秘密計算装置１’−ｎの第ｎのマスク生成装置は、上記鍵を第（ｎ−１）の秘密計算装置１’−（ｎ−１）の第（ｎ−１）のマスク生成装置へ送る。
【００４７】
第１乃至第Ｎの秘密計算装置１’−１〜１’−Ｎの第１乃至第Ｎのマスク生成装置は、それぞれ、送られてきた上記鍵を受け付ける。
【００４８】
図４に示した秘密計算システムでは、第１乃至第Ｎの秘密計算装置１’−１〜１’−Ｎのすべてが互いに第１論理和および鍵を送受信している。しかしながら、すべての秘密計算装置が第１論理和および鍵を互いに送受信する必要はない。すなわち、第１乃至第Ｎの秘密計算装置１’−１〜１’−Ｎの内、いずれか１つが第１論理和を送信のみをし、他の１つが第１論理和を受信のみをしてもよい。そして、第１乃至第Ｎの秘密計算装置１’−１〜１’−Ｎの内、いずれか１つが鍵を送信のみをし、他の１つが鍵を受信のみをしてもよい。
【００４９】
このような構成の秘密計算システムでは、ビットの排他的論理和を、複数の秘密計算装置１’−１〜１’−Ｎで分散したまま計算しつつ、これらの秘密計算装置１’−１〜１’−Ｎ間に通信が発生しない。また、このような構成の秘密計算システムによれば、ビットの論理積も、少ない通信量と計算で分散したまま計算することができる。
【００５０】
したがって、第２の実施形態による秘密計算システムによれば、任意の関数を、複数の秘密計算装置１’−１〜１’−Ｎで分散したまま、かつデータをどの秘密計算装置１’−１〜１’−Ｎも知ることなく、高速に計算することが可能となる。
【実施例】
【００５１】
次に、本発明の実施例について説明する。なおビットＲとビットＲ’の排他的論理和は、Ｒ+Ｒ’ mod 2 と表現される。【００５２】
図５は、図１に示した秘密計算装置１又は図３に示した秘密計算装置１’に使用される、本発明の実施例に係る局所論理積装置１００を示すブロックである。【００５３】
局所論理積装置１００には、１ビットの第１入力第１要素１０１と、１ビットの第１入力第２要素１０３と、１ビットの第２入力第１要素１０２と、１ビットの第２入力第２要素１０４とが入力される。【００５４】
局所論理積装置１００は、第１の論理積回路１０５と、第２の論理積回路１０６と、排他的論理和回路１０７と、から成る。【００５５】
第１の論理積回路１０５は、第１入力第１要素１０１と第２入力第１要素１０２との論理積をとり、その論理積結果を第１論理積１０８として出力する。第２の論理積回路１０６は、第１入力第２要素１０３と第２入力第２要素１０４との論理積をとり、その論理積結果を第２論理積１０９として出力する。排他的論理和回路１０７は、第１論理積１０８と第２論理積１０９との排他的論理和をとり、その排他的論理和結果を局所積要素（第１の局所積要素）１１０として出力する。【００５６】
図６は、図１に示した秘密計算装置１又は図３に示した秘密計算装置１’に使用される、本発明の実施例に係る論理積再分配装置２００を示すブロック図である。【００５７】
論理積再分配装置２００には、１ビットのマスク２０１と１ビットの局所積要素（第２の局所積要素）２０２とが入力される。【００５８】
論理積再分配装置２００は、第１の排他的論理和回路２０３と、通信装置２０４と、第２の排他的論理和回路２０６と、から成る。【００５９】
第１の排他的論理和回路２０３は、マスク２０１と局所積要素２０２との排他的論理和をとり、その排他的論理和を第１論理和２０５として出力する。通信装置２０４は、第１論理和２０５を第１の他の秘密計算装置の論理積再分配装置へ送信する。また、通信装置２０４は、第２の他の秘密計算装置の論理積再分配装置より、その第２の他の秘密計算装置の論理積再分配装置で同様に生成された第１論理和を受信第１論理和２０７として受信する。【００６０】
また、第１の排他的論理和回路２０３は、第１論理和２０５を、信号線２１０を介して出力第１要素２０８として出力する。したがって、信号線２１０は、第１論理和２０５を出力第１要素２０８として出力する手段として働く。【００６１】
第２の排他的論理和回路２０６は、第１論理和２０５と受信第１論理和２０７との排他的論理和をとり、その排他的論理和結果を出力第２要素２０９として出力する。【００６２】
論理積再分配装置２００は、後述する図７に示すマスク生成装置４００が出力する乱数４０７から選ばれた１ビットを、マスク２０１として利用しても良い。【００６３】
図７は、図３に示した秘密計算装置１’に使用される、本発明の実施例に係るマスク生成装置４００を示すブロック図である。マスク生成装置４００は、乱数生成装置とも呼ばれる。【００６４】
マスク生成装置４００には、鍵４０１が入力される。【００６５】
マスク生成装置４００は、第１の疑似乱数生成器４０２と、通信装置４０３と、第２の疑似乱数生成器４０４と、排他的論理和回路４０９と、から成る。【００６６】
第１の疑似乱数生成器４０２は、鍵４０１を入力して第１疑似乱数４０５を生成する。通信装置４０３は、鍵４０１を第１の他の秘密計算装置のマスク生成装置へ送信する。また、通信装置４０３は、第２の他の秘密計算装置のマスク生成装置より鍵を受信鍵４１０として受信する。第２の疑似乱数生成器４０４は、受信鍵４１０を入力して第２疑似乱数４０６を生成する。排他的論理和回路４０９は、第１疑似乱数４０５と第２疑似乱数４０９とのビット毎の排他的論理和をとり、その排他的論理和結果を乱数４０７として出力する。【００６７】
図８に示されるように、本発明の実施例に係る秘密計算システムは、図１又は図３に示した秘密計算装置１又は１’を３台備えている。ここでは、３台の秘密計算装置を、それぞれ第１の秘密計算装置１Ａ、第２の秘密計算装置２Ａ、および第３の秘密計算装置３Ａとする。【００６８】
ビットWが３台の秘密計算装置１Ａ，２Ａ，３Ａに分散されている。この時、R[1]+R[2]+R[3]＝0 mod 2 なる三つのランダムに選ばれたビットR[1]、R[2]、R[3]をもちいる。第１の秘密計算装置１Ａには（R[1],W+R[2] mod 2）が格納されている。第２の秘密計算装置２Ａには(R[2],W+R[3] mod 2)が格納されている。第３の秘密計算装置３Ａには(R[3],W+R[1] mod 2)が格納されている。【００６９】
３台の秘密計算装置１Ａ，２Ａ，３Ａのうち２台の秘密計算装置が協力すると、ビットWを復元することができる。これは、一般性を失わずに、第１の秘密計算装置１Ａと第２の秘密計算装置２Ａが協力する場合に、この復元方法を説明できる。例えば、第１の秘密計算装置１ＡからのW+R[2] mod 2と、第２の秘密計算装置２ＡからのR[2]とを用いて、W＝W+R[2]+R[2] mod 2 と計算することができる。【００７０】
（排他的論理和の通信を伴わない計算）
図９に示されるように、本発明の実施例に係る秘密計算システムは、図１又は図３に示した秘密計算装置１又は１’を３台備えている。ここでは、３台の秘密計算装置を、それぞれ第１の秘密計算装置１Ｂ、第２の秘密計算装置２Ｂ、および第３の秘密計算装置３Ｂとする。【００７１】
ビットWとビットW’とがそれぞれ分散されている時に、分散されたままでこれらの排他的論理和を計算するには、次のようにする。【００７２】
ビットWは、R[1]+R[2]+R[3]＝0 mod 2 なる三つのランダムに選ばれたビットR[1]、R[2]、R[3]をもちいる。そのとき、第１の秘密計算装置１Ｂには(S[1],T[1])＝（R[1],W+R[2] mod 2）が格納される。第２の秘密計算装置２Ｂには(S[2],T[2])＝(R[2],W+R[3] mod 2)が格納される。第３の秘密計算装置３Ｂには(S[3],T[3])＝(R[3],W+R[1] mod 2) が格納される。【００７３】
ビットW’は、R’[1]+R’[2]+R’[3]=0 mod 2 なる三つのランダムに選ばれたビットをもちいる。このとき、第１の秘密計算装置１Ｂには(S’[1],T’[1])＝（R’[1],W’+R’[2] mod 2）が格納される。第２の秘密計算装置２Ｂには(S’[2],T’[2])＝(R’[2],W’+R’[3]mod 2)が格納される。第３の秘密計算装置３Ｂには(S’[3],T’[3])＝(R’[3],W’+R’[1] mod 2) が格納される。【００７４】
このとき、第１の秘密計算装置１Ｂは、(S”[1],T”[1])＝(S[1]+S’[1] mod 2, T[1]+T’[1] mod 2)を計算する。第２の秘密計算装置２Ｂは、(S”[2],T”[2])＝(S[2]+S’[2] mod 2, T[2]+T’[2] mod 2)を計算する。第３の秘密計算装置３Ｂは、(S”[3],T”[3])＝(S[3]+S’[3] mod 2, T[3]+T’[3] mod 2)を計算する。【００７５】
第１の秘密計算装置１Ｂ、第２の秘密計算装置２Ｂ、第３の秘密計算装置３Ｂは、それぞれの計算結果をもってW”＝W+W’ mod 2を分散して保持したとする。これらの結果から、もとのビットWあるいはビットW’と同様に、W”を復元することができる。【００７６】
（否定の計算）
図１０に示されるように、本発明の実施例に係る秘密計算システムは、図１又は図３に示した秘密計算装置１又は１’を３台備えている。ここでは、３台の秘密計算装置を、それぞれ第１の秘密計算装置１Ｃ、第２の秘密計算装置２Ｃ、第３の秘密計算装置３Ｃとする。【００７７】
ビットWが分散されている時に、分散されたままでこれらの否定を計算するには次のようにする。【００７８】
ビットWは、R[1]+R[2]+R[3]＝0 mod 2 なる三つのランダムに選ばれたビットR[1]、R[2]、R[3]をもちいる。第１の秘密計算装置１Ｃには(S[1],T[1])＝（R[1],W+R[2] mod 2）が格納されている。第２の秘密計算装置２Ｃには(S[2],T[2])＝(R[2],W+R[3] mod 2)が格納されている。第３の秘密計算装置３Ｃには(S[3],T[3])＝(R[3],W+R[1] mod 2)が格納されている。【００７９】
第１の秘密計算装置１Ｃは、(S’[1],T’[1])＝(S[1],T[1]+1 mod 2)を計算する。第２の秘密計算装置２Ｃは、(S’[2],T’[2])＝(S[2],T[2]+1 mod 2)を計算する。第３の秘密計算装置３Ｃは、(S’[3],T’[3])＝(S[3], T[3]+1 mod 2)を計算する。【００８０】
第１の秘密計算装置１Ｃ、第２の秘密計算装置２Ｃ、第３の秘密計算装置３Ｃは、それぞれの計算結果をもってW’＝W+1 mod 2を分散して保持したとする。これらの結果から、もとのビットWと同様に、W’を復元することができる。【００８１】
（論理積の計算）
図１１に示されるように、本発明の実施例に係る秘密計算システムは、図１に示した秘密計算装置１を３台備えている。ここでは、３台の秘密計算装置を、それぞれ第１の秘密計算装置１Ｄ、第２の秘密計算装置２Ｄ、第３の秘密計算装置３Ｄとする。ビットWとビットW’とがそれぞれ分散されている時に、分散されたままでこれらの論理積を計算するには次のようにする。【００８２】
ビットWは、R[1]+R[2]+R[3]＝0 mod 2 なる三つのランダムに選ばれたビットR[1]、R[2]、R[3]をもちいる。第１の秘密計算装置１Ｄには(S[1],T[1])＝（R[1],W+R[2] mod 2）が格納されている。第２の秘密計算装置２Ｄには(S[2],T[2])＝(R[2],W+R[3] mod 2)が格納されている。第３の秘密計算装置３Ｄには(S[3],T[3])＝(R[3],W+R[1] mod 2) が格納されている。【００８３】
ビットW’は、R’[1]+R’[2]+R’[3]＝0 mod 2 なる三つのランダムに選ばれたビットR’[1]、R’[2]、R’[3]をもちいる。第１の秘密計算装置１Ｄには(S’[1],T’[1])＝（R’[1],W’+R’[2] mod 2）が格納されている。第２の秘密計算装置２Ｄには(S’[2],T’[2])＝(R’[2],W’+R’[3] mod 2)が格納されている。第３の秘密計算装置３Ｄには(S’[3],T’[3])＝(R’[3],W’+R’[1] mod 2) が格納されている。【００８４】
第１乃至第３の秘密計算装置１Ｄ、２Ｄ、３Ｄは、図５に示した局所論理積装置１００を、それぞれ、第１乃至第３の局所論理積装置１００−１、１００−２、１００−３として備える。【００８５】
第１の局所論理装置１Ｄは、第１の局所論理積装置１００−１に、その第１入力第１要素１０１としてS[1]を、第１入力第２要素１０３としてT[1]を、第２入力第１要素１０２としてS’[1]を、第２入力第２要素１０４としてT’[1]を与える。これにより、第１の局所論理積装置１００−１は、局所積要素（第１の局所積要素）１１０として、U[1]=S[1]・S’[1] + T[1]・T’[1] mod 2を得る。【００８６】
第２の秘密計算装置２Ｄも、同様に、第２の局所論理積装置１００−２を用いて、局所積要素（第１の局所積要素）１１０として、U[2]＝S[2]・S’[2]+T[2]・T’[2] mod 2を得る。第３の秘密計算装置３Ｄも、同様に、第３の局所論理積装置１００−３を用いて、局所積要素（第１の局所積要素）１１０として、U[3]＝S[3]・S’[3] + T[3]・T’[3] mod 2を同様に得る。【００８７】
第１乃至第３の秘密計算装置１Ｄ、２Ｄ、３Ｄは、それぞれの計算結果をもってW”=W・W’ mod 2を分散して保持したとする。【００８８】
ただし、この結果からは、もとのビットWあるいはビットW’と同様に、W”を復元することができない。【００８９】
この結果から直接W”を復元するには、W”=U[1]+U[2]+U[3] mod 2 と計算すれば良い。この復元ができることは、次の式から分かる。【００９０】
U[1]+U[2]+U[3]
＝ (S[1]・S’[1] + T[1]・T’[1])+(S[2]・S’[2]+T[2]・T’[2])+(S[3]・S’[3] + T[3]・T’[3]) mod 2
＝3W・W’+(W・(R’[2]+R’[3]+R’[1]))+(W’・(R[2]+R[3]+R[1]) +(R[1]・R’[1]+R[2]・R’[2]+R[3]・R’[3]) +(R[2]・R’[2]+R[3]・R’[3]+R[1]・R’[1]) mod 2
＝W・W’ mod 2 
(U[1],U[2],U[3])はW・W’を三つの値に分散したものである。【００９１】
同様に、(U’[1],U’[2],U’[3])がZ＝U’[1]+U’[2]+U’[3] mod 2なるZ を三つの値に分散したものであるとき、W・W’+Z mod 2 は、（U[1]+U’[1] mod 2, U[2]+U’[2] mod 2, U[3]+U’[3] mod 2）の三つの値に分散される。【００９２】
U[1]とU’[1]とを第１の秘密計算装置１Ｄが保持し、U[2]とU’[2]とを第２の秘密計算装置２Ｄが保持し、U[3]とU’[3]とを第３の秘密計算装置３Ｄが保持しているとする。この場合、あらたな分散された値は、それぞれの秘密計算装置が他と通信することなく計算できる。【００９３】
すなわち、ある関数が排他的論理和と論理積のゲートで構成されている場合、論理積ゲートの計算結果は、次の論理積ゲートの入力となるまでの間、何度でも互いに通信することなく、排他的論理和ゲートの計算を実行することができる。【００９４】
論理積を計算した結果を用いた論理積を計算する場合は、次の処理を実施すればよい。【００９５】
W”をビットWやビットW’と同様の形で、３台の秘密計算装置に分散するとする。この場合、第１乃至第３の秘密計算装置１Ｄ、２Ｄ、３Ｄは、図６に示す論理積再分配装置２００を、それぞれ、第１乃至第３の論理積再分配装置２００−１、２００−２、２００−３として備える。【００９６】
V[1]+V[2]+V[3]=0 mod 2 となるランダムに選ばれたビットであるマスク２０１としてV[1],V[2],V[3]があるとする。そして、第１の秘密計算装置１Ｄには、マスク２０１としてV[1]が、予め渡されているとする。第２の秘密計算装置２Ｄには、マスク２０１としてV[2]が、予め渡されているとする。第３の秘密計算装置３Ｄには、マスク２０１としてV[3]が、予め渡されているとする。第１乃至第３の秘密計算装置１Ｄ、２Ｄ、３Ｄは、渡されているマスク２０１を、それぞれ、第１乃至第３の論理積再分配装置２００−１、２００−２、２００−３に入力する。【００９７】
第３の秘密計算装置３Ｄは、X[3]=U[3]+V[3] mod 2のように、第１の排他的論理和回路２０３で局所積要素２０２とマスク２０１との排他的論理和をとる。そして、第３の秘密計算装置３Ｄは、その第１の排他的論理和結果X[3]を第１論理和２０５として、通信装置２０４から第２の秘密計算装置２Ｃに送る。【００９８】
第２の秘密計算装置２Ｄも同様に、第１論理和２０５として、X[2]＝U[2]+V[2] mod 2を生成して、第１の秘密計算装置１Ｄに送る。第１の秘密計算装置１Ｄも同様に、第１論理和２０５として、 X[1]=U[1]+V[1] mod 2を生成して、第３の秘密計算装置３Ｄに送る。【００９９】
第１乃至第３の秘密計算装置１Ｄ，２Ｄ，３Ｄは、第１乃至第３の論理積再分配装置２００−１、２００−２、２００−３のそれぞれの通信装置２０４から、第１論理和X[2],X[3],X[1]を受信第１論理和２０７として受け取る。【０１００】
第１乃至第３の論理積再分配装置２００−１、２００−２、２００−３は、それぞれ第２の排他的論理和回路２０６で、受信第１論理和２０７と第１論理和２０５との排他的論理和をとり、出力第２要素２０９を生成する。また、第１論理和２０５は、信号線２１０を介して、出力第１要素２０８として出力される。【０１０１】
これにより、第１の秘密計算装置１Ｄは、出力第２要素２０９および出力第１要素２０８として、それぞれ、(T”[1],S”[1])＝(X[1]+X[2] mod 2,X[1])を生成する。第２の秘密計算装置２Ｄは、出力第２要素２０９および出力第１要素２０８として、それぞれ、(T”[2],S”[2])＝(X[2]+X[3] mod 2,X[2])を生成する。第３の秘密計算装置３Ｄは、出力第２要素２０９および出力第１要素２０８として、それぞれ、(T”[3],S”[3])＝(X[3]+X[1] mod 2,X[3])を生成する。【０１０２】
WとW’と同様にW”が2台の秘密計算装置から復元できることは、一般性を失わずに、第１の秘密計算装置１Ｄと第２の秘密計算装置２Ｄとが協力する場合の復元方法から説明できる。【０１０３】
第１の秘密計算装置１ＤからのS”[1]と、第２の秘密計算装置２ＤからのT”[2]とを用いて、次のように計算することができる。【０１０４】
W・W’＝S”[1]+T”[2]mod2
＝U[1]+V[1]+U[2]+V[2]+U[3]+V[3]mod2
＝U[1]+U[2]+U[3] mod 2
＝W”
また、
T”[1]+T”[2]+T”[3] mod 2 
＝2・(U[1]+U[2]+U[3]+V[1]+V[2]+V[3])
＝0 mod 2
となり、WやW’と同様にW” が分散されていることが分かる。【０１０５】
（乱数の計算）
図１１では、第１乃至第３の秘密計算装置１Ｄ,２Ｄ,３ＤがそれぞれランダムなビットV[1], V[2], V[3]を保持し、V[1]+V[2]+V[3]=0 mod 2 を満たしているとした。この様なランダムなビットは、論理積を一つ計算するたびに一揃い必要になる。【０１０６】
次に図１２を参照して、大量の論理積を計算する場合、次の様にマスク生成装置４００を用いて、V[i,1]+V[i,2]+V[i,3]=0 mod 2 なるV[i,1],V[i,2],V[i,3]を多くのi=1,…,Nに関して生成する方法について説明する。【０１０７】
図１２に示されるように、本発明の実施例に係る秘密計算システムは、図３に示した秘密計算装置１’を３台備えている。ここでは、３台の秘密計算装置を、それぞれ第１の秘密計算装置１Ｅ、第２の秘密計算装置２Ｅ、第３の秘密計算装置３Ｅとする。【０１０８】
第１乃至第３の秘密計算装置１Ｅ，２Ｅ，３Ｅは、それぞれ、図１１に示した第１乃至第３の秘密計算装置１Ｄ,２Ｄ,３Ｄの構成要素を含んでいるが、以下の説明では不要なので、図示を省略している。第１乃至第３の秘密計算装置１Ｅ，２Ｅ，３Ｅは、図７に示したマスク生成装置４００を、それぞれ、第１乃至第３のマスク生成装置４００−１、４００−２、４００−３として備える。【０１０９】
Kを安全変数とする。第１乃至第３の秘密計算装置１Ｅ，２Ｅ，３Ｅは、鍵４０１として、それぞれKビットの鍵 L[1],L[2],L[3]を生成する。第１の秘密計算装置１Ｅは鍵L[1]を第３の秘密計算装置３Ｅへ送り、第２の秘密計算装置２Ｅは鍵L[2]を第１の秘密計算装置１Ｅへ送り、第３の秘密計算装置３Ｅは鍵L[3]を第２の秘密計算装置２Ｅへ送る。従って、第１の秘密計算装置１Ｅ，第２の秘密計算装置２Ｅ，第３の秘密計算装置３Ｅは、それぞれ、鍵L[2], L[3],L[1]を、第２の秘密計算装置２Ｅ，第３の秘密計算装置３Ｅ，第１の秘密計算装置１Ｅから受け取る。【０１１０】
第１乃至第３の秘密計算装置１Ｅ，２Ｅ，３Ｅでは、第１乃至第３のマスク生成装置４００−１、４００−２、４００−３が、この受け取った鍵L[2], L[3],L[1]を受信鍵４１０として受信する。【０１１１】
PRGをKビットの文字列からNビットの文字列を出力する疑似乱数生成器とする。【０１１２】
第１の秘密計算装置１Ｅでは、第１のマスク生成装置２００−１において、第１の疑似乱数生成器４０２が、鍵４０１から第１疑似乱数４０５をPRG(L[1])として生成する。また、第２の疑似乱数生成器４０４が、受信鍵４１０から第２疑似乱数４０６をPRG(L[2])として生成する。そして、排他的論理和回路４０９が、PRG(L[1])とPRG(L[2])とのビット毎の排他的論理和を取り、Nビットの乱数４０７を作る。この乱数４０７の最初からi番目のビットをV[i.1]とする。【０１１３】
第２の秘密計算装置２Ｅは、同様に、第１疑似乱数PRG(L[2])と第２擬似乱数PRG(L[3])とのビット毎の排他的論理和を取り、Nビットの文字列（乱数）４０７を作る。この文字列４０７の最初からi番目のビットをV[i.2]とする。【０１１４】
第３の秘密計算装置３Ｅは、同様に、第１疑似乱数PRG(L[3])と第２擬似乱数PRG(L[1])とのビット毎の排他的論理和を取り、Nビットの文字列（乱数）４０７を作る。この文字列４０７の最初からi番目のビットをV[i.3]とする。【０１１５】
（任意の関数に対する適用方法）
ビット列が入力されてビット列を出力する全ての関数は、定数の入力を含めてビット毎の論理和と論理積から構成が可能であることが知られている。ゆえに、上記論理和と論理積の計算方法を用いれば、このような関数は全てデータを分散したまま計算することができる。【０１１６】
次に、本発明の実施例の効果について説明する。【０１１７】
本秘密計算方法を用いれば、３台の秘密計算装置に分散されて保持された二つのビットの論理和を、これら秘密計算装置が互いに通信することなく計算することで、３台の秘密計算装置に分散された形で保持することができる。この結果のビットを保持する方法は、最初に二つのそれぞれのビットを保持していた時の方法と同一である。【０１１８】
さらに、３台の秘密計算装置に分散されて保持された二つのビットの論理積を、これら秘密計算装置が互いに通信しながら計算することで、３台の秘密計算装置に分散された形で保持することができる。この時に発生する通信は、全体で３ビットとランダムなビットV[1],V[2],V[3]を生成するのに必要な通信のみであり、非特許文献２に記載の２者間の秘密計算で必要なそれと比べると大変少ない。この結果のビットを保持する方法は、最初に二つのそれぞれのビットを保持していた時の方法と同一である。【０１１９】
この様に論理積と論理和との両方において、計算の結果が、計算の前の各ビットの保持方法と同じ方法で保持されていることから、結果に対してさらに論理積や論理和の演算を続けることができる。すなわち、論理和と論理積で記述できる任意の関数を、データを分散したまま３台の秘密計算装置で少ない通信量で計算する事ができる。これは、各論理積や論理和に必要な計算量の、単純な論理積や論理和の計算に必要な計算量の６倍や３倍である。この様な秘密計算方法は、データを各秘密計算装置に対して開示せずに計算を行いたい時に有効である。【０１２０】
以上説明した様に、本発明を用いれば、複数の秘密計算装置にデータを分散して各秘密計算装置にデータを隠ぺいしたまま任意の関数を計算することが可能になる。また、この計算に必要な通信量と計算量は小さい。これはある秘密計算装置で秘密のデータを扱ってなんらかのサービスを提供する時に、秘密計算装置の管理者がデータを盗む出すことを防止する。なぜなら、複数の秘密計算装置に異なる管理者を割り当てれば、一人で全ての秘密計算装置中のデータを見ることのできる管理者がいなくなるからである。このように、本発明は、このような管理者を通じたデータの盗み出しを防止することに貢献する。【０１２１】
なお、本発明は、上記実施形態や上記実施例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、上記実施例では、秘密計算装置が３台ある場合についてのみ説明している。しかしながら、本発明は、一般的に、図２や図４に示すように、秘密計算装置がＮ台（Ｎは３以上の整数）ある場合にも同様に適用できるのは言うまでもない。【０１２２】
すなわち、本発明によれば、任意の関数を、複数の秘密計算装置で分散したまま、かつデータをどの秘密計算装置も知ることなく、高速に計算することが可能となる。【０１２３】
なお、本発明に記載した方法は、コンピュータに実行させることができる。この方法を実行させるプログラムは、フロッピー（登録商標）ディスク、ハードディスクなどの磁気ディスク、ＣＤ-ＲＯＭ（Compact Disc- Read Only Memory）、ＤＶＤ（digital versatile disc）などの光ディスク、光磁気ディスク（ＭＯ）、半導体メモリなどの記録媒体に格納して頒布することもできる。【０１２４】
また、この記録媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記録媒体であれば、その記憶形式は何れの形態であってもよい。【０１２５】
また、記録媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているオペレーティングシステムや、データベース管理ソフト、ネットワークソフト等のミドルウェアなどが各処理の一部を実行してもよい。【０１２６】
さらに、本発明における記録媒体は、コンピュータと独立した媒体に限らず、ＬＡＮ（Local Area Network）やインターネットなどにより伝送されたプログラムをダウンロードして記憶または一時記憶した記録媒体も含まれる。【０１２７】
また、記録媒体は１つに限らず、複数の媒体から上記実施形態における処理が実行される場合も本発明における記録媒体に含まれ、媒体構成は何れの構成であってもよい。【０１２８】
本発明におけるコンピュータは、記録媒体に記憶されたプログラムに基づき各処理を実行するものであって、パソコンなどからなる装置、複数の装置がネットワーク接続されたシステムなどの何れの構成であってもよい。【０１２９】
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置を含み、プログラムによって本発明の機能を実現することが可能な機器、装置である。【０１３０】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。【０１３１】
（付記１）  少なくとも２つの１ビットの入力要素を受け、第１の局所積要素を出力する局所論理積装置と、
１ビットのマスクと、前記第１の局所積要素とＰ（Ｐは０以上の整数）個のビットとの排他的論理和を計算して得られる第２の局所積要素とを受け、第１論理和を計算し、他の秘密計算装置の論理積再分配装置と通信して、少なくとも１つの１ビットの出力要素を出力する論理積再分配装置と、
を備える秘密計算装置。【０１３２】
（付記２）  他の秘密計算装置のマスク生成装置と通信し、鍵を使用して乱数を生成するマスク生成装置を更に備え、
前記乱数から選ばれた１ビットが前記マスクとして前記論理積再分配装置へ供給される、付記１に記載の秘密計算装置。【０１３３】
（付記３）  前記局所論理積装置は、１ビットの第１入力第１要素と、１ビットの第１入力第２要素と、１ビットの第２入力第１要素と、１ビットの第２入力第２要素とを受け、
前記局所論理積装置は、
前記第１入力第１要素と前記第２入力第１要素との論理積をとり、その論理積結果を第１論理積として出力する第１の論理積回路と、
前記第１入力第２要素と前記第２入力第２要素との論理積をとり、その論理積結果を第２論理積として出力する第２の論理積回路と、
前記第１論理積と前記第２論理積との排他的論理和をとり、その排他的論理和結果を前記第１の局所積要素として出力する第１の排他的論理和回路と、
を備える、付記１又は２に記載の秘密計算装置。【０１３４】
（付記４）  前記論理積再分配装置は、
前記マスクと前記第２の局所積要素との排他的論理和をとり、その排他的論理和結果を前記第１論理和として出力する第１の排他的論理和回路と、
前記第１論理和を第１の他の秘密計算装置の論理積再分配装置へ送信すると共に、第２の他の秘密計算装置の論理積再分配装置より、該第２の他の秘密計算装置の論理積再分配装置で生成された第１論理和を受信第１論理和として受信する通信装置と、
前記第１論理和を出力第１要素として出力する手段と、
前記第１論理和と前記受信第１論理和との排他的論理和をとり、その排他的論理和結果を出力第２要素として出力する第２の排他的論理和回路と、
を備える、付記１又は２に記載の秘密計算装置。【０１３５】
（付記５）  前記マスク生成装置は、
前記鍵から第１疑似乱数を生成する第１の疑似乱数生成器と、
前記鍵を第１の他の秘密計算装置のマスク生成装置へ送信すると共に、第２の他の秘密計算装置のマスク生成装置より鍵を受信鍵として受信する通信装置と、
前記受信鍵から第２疑似乱数を生成する第２の疑似乱数生成器と、
前記第１疑似乱数と前記第２疑似乱数とのビット毎の排他的論理和をとって、その排他的論理和結果を前記乱数として出力する排他的論理和回路と、
を備える、付記２に記載の秘密計算装置。【０１３６】
（付記６）  付記１に記載の局所論理積装置および論理積再分配装置を、それぞれ、第１乃至第Ｎ（Ｎは３以上の整数）の局所論理積装置および第１乃至第Ｎの論理積再分配装置として含む、第１乃至第Ｎの秘密計算装置を有する秘密計算システムであって、
前記第１の秘密計算装置の前記第１の論理積再分配装置は、前記第１論理和を前記第Ｎの秘密計算装置の前記第Ｎの論理積再分配装置へ送り、
第ｎ（２≦ｎ≦Ｎ）の秘密計算装置の第ｎの論理積再分配装置は、前記第１論理和を第（ｎ−１）の秘密計算装置の第（ｎ−１）の論理積再分配装置へ送る、
ことを特徴とする秘密計算システム。【０１３７】
（付記７）  付記２に記載の局所論理積装置、論理積再分配装置、およびマスク生成装置を、それぞれ、第１乃至第Ｎ（Ｎは３以上の整数）の局所論理積装置、第１乃至第Ｎの論理積再分配装置、および第１乃至第Ｎのマスク生成装置として含む、第１乃至第Ｎの秘密計算装置を有する秘密計算システムであって、
前記第１の秘密計算装置の前記第１の論理積再分配装置は、前記第１論理和を前記第Ｎの秘密計算装置の前記第Ｎの論理積再分配装置へ送り、
第ｎ（２≦ｎ≦Ｎ）の秘密計算装置の第ｎの論理積再分配装置は、前記第１論理和を第（ｎ−１）の秘密計算装置の第（ｎ−１）の論理積再分配装置へ送り、
前記第１の秘密計算装置の前記第１のマスク生成装置は、前記鍵を前記第Ｎの秘密計算装置の前記第Ｎのマスク生成装置へ送り、
前記第ｎの秘密計算装置の第ｎのマスク生成装置は、前記鍵を前記第（ｎ−１）の秘密計算装置の第（ｎ−１）のマスク生成装置へ送る、
ことを特徴とする秘密計算システム。【０１３８】
（付記８）  少なくとも２つの１ビットの入力要素を受けて、第１の局所積要素を出力するステップと、
１ビットのマスクと、前記第１の局所積要素とＰ（Ｐは０以上の整数）個のビットとの排他的論理和を計算して得られる第２の局所積要素とを受けて、第１論理和を計算し、他の秘密計算装置の論理積再分配装置と通信して、少なくとも１つの１ビットの出力要素を出力するステップと、
を含む秘密計算方法。【０１３９】
（付記９）  前記他の秘密計算装置のマスク生成装置と通信して、鍵を使用して乱数を生成するステップと、
前記乱数から選ばれた１ビットを前記マスクとして供給するステップと、
を更に含む、付記８に記載の秘密計算方法。【０１４０】
（付記１０）  付記１に記載の局所論理積装置および論理積再分配装置を、それぞれ、第１乃至第Ｎ（Ｎは３以上の整数）の局所論理積装置および第１乃至第Ｎの論理積再分配装置として含む、第１乃至第Ｎの秘密計算装置を有する秘密計算システムにおける秘密計算方法であって、
前記第１の秘密計算装置の前記第１の論理積再分配装置が、前記第１論理和を前記第Ｎの秘密計算装置の前記第Ｎの論理積再分配装置へ送るステップと、
第ｎ（２≦ｎ≦Ｎ）の秘密計算装置の第ｎの論理積再分配装置が、前記第１論理和を第（ｎ−１）の秘密計算装置の第（ｎ−１）の論理積再分配装置へ送るステップと、
を含む秘密計算方法。【０１４１】
（付記１１）  付記２に記載の局所論理積装置、論理積再分配装置、およびマスク生成装置を、それぞれ、第１乃至第Ｎ（Ｎは３以上の整数）の局所論理積装置、第１乃至第Ｎの論理積再分配装置、および第１乃至第Ｎのマスク生成装置として含む、第１乃至第Ｎの秘密計算装置を有する秘密計算システムにおける秘密計算方法であって、
前記第１の秘密計算装置の前記第１の論理積再分配装置が、前記第１論理和を前記第Ｎの秘密計算装置の前記第Ｎの論理積再分配装置へ送るステップと、
第ｎ（２≦ｎ≦Ｎ）の秘密計算装置の第ｎの論理積再分配装置が、前記第１論理和を第（ｎ−１）の秘密計算装置の第（ｎ−１）の論理積再分配装置へ送るステップと、
前記第１の秘密計算装置の前記第１のマスク生成装置が、前記鍵を前記第Ｎの秘密計算装置の前記第Ｎのマスク生成装置へ送るステップと、
前記第ｎの秘密計算装置の第ｎのマスク生成装置が、前記鍵を前記第（ｎ−１）の秘密計算装置の第（ｎ−１）のマスク生成装置へ送るステップと、
を含む秘密計算方法。【０１４２】
（付記１２）  秘密計算プログラムを記録したコンピュータ読み取り可能な記録媒体であって、前記秘密計算プログラムは、コンピュータに、
少なくとも２つの１ビットの入力要素を受けて、第１の局所積要素を出力する機能と、
１ビットのマスクと、前記第１の局所積要素とＰ（Ｐは０以上の整数）個のビットとの排他的論理和を計算して得られる第２の局所積要素とを受けて、第１論理和を計算し、他の秘密計算装置の論理積再分配装置と通信して、少なくとも１つの１ビットの出力要素を出力する機能と、
を実現させるコンピュータ読み取り可能な記録媒体。【０１４３】
（付記１３）  前記秘密計算プログラムは、前記コンピュータに、
前記他の秘密計算装置のマスク生成装置と通信して、鍵を使用して乱数を生成する機能と、
前記乱数から選ばれた１ビットを前記マスクとして供給する機能と、
を更に実現させる、付記１２に記載のコンピュータ読み取り可能な記録媒体。【０１４４】
この出願は、２０１４年９月１９日に出願された日本出願特願２０１４−１９１１５１を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０１４５】
１，１’    秘密計算装置
１−１，１’−１，１Ａ〜１Ｅ    第１の秘密計算装置
１−２，１’−２，２Ａ〜２Ｅ    第２の秘密計算装置
３Ａ〜３Ｅ    第３の秘密計算装置
１−Ｎ，１’−Ｎ    第Ｎの秘密計算装置
１００    局所論理積装置
１００−１    第１の局所論理積装置
１００−２    第２の局所論理積装置
１００−３    第３の局所論理積装置
１０１    第１入力第１要素
１０２    第２入力第１要素
１０３    第１入力第２要素
１０４    第２入力第２要素
１０５    第１の論理積回路
１０６    第２の論理積回路
１０７    排他的論理和回路
１０８    第１論理積
１０９    第２論理積
１１０    局所積要素（第１の局所積要素）
２００    論理積再分配装置
２００−１    第１の論理積再分配装置
２００−２    第２の論理積再分配装置
２００−３    第３の論理積再分配装置
２０１    マスク
２０２    局所積要素（第２の局所積要素）
２０３    第１の排他的論理和回路
２０４    通信装置
２０５    第１論理和
２０６    第２の排他的論理和回路
２０７    受信第１論理和
２０８    出力第１要素
２０９    出力第２要素
２１０    信号線
３００    排他的論理和回路
４００    マスク生成装置
４００−１    第１のマスク生成装置
４００−２    第２のマスク生成装置
４００−３    第３のマスク生成装置
４０１    鍵
４０２    第１の疑似乱数生成器
４０３    通信装置
４０４    第２の疑似乱数生成器
４０５    第１疑似乱数
４０６    第２擬似乱数
４０７    乱数
４０９    排他的論理和回路
４１０    受信鍵
【図１】
0006493697.tif 000002
【図２】
0006493697.tif 000003
【図３】
0006493697.tif 000004
【図４】
0006493697.tif 000005
【図５】
0006493697.tif 000006
【図６】
0006493697.tif 000007
【図７】
0006493697.tif 000008
【図８】
0006493697.tif 000009
【図９】
0006493697.tif 000010
【図１０】
0006493697.tif 000011
【図１１】
0006493697.tif 000012
【図１２】
0006493697.tif 000013