(57)【特許請求の範囲】
【請求項１】
少なくとも３台の演算装置を含む秘匿計算システムであって、
M,mは1以上の整数であり、iは0以上の整数であり、0≦m<Mであり、μはチェックサムCに含まれるランダム化分散値の数であり、0≦i<μであり、Rは環であり、AはR上結合多元環であり、
前記演算装置は、
乱数r∈Aを秘密分散した分散値[r]を求める乱数生成部と、
値a0,…,aM-1∈Rを秘密分散した分散値[a0],…,[aM-1]と前記分散値[r]とを用いて、値a0,…,aM-1と乱数rの積算値a0r,…,aM-1rの分散値[a0r],…,[aM-1r]を計算し、前記分散値[a0],…,[aM-1]と前記分散値[a0r],…,[aM-1r]とを組としたランダム化分散値<a0>,…,<aM-1>を生成するランダム化部と、
秘匿演算の内容に応じて演算対象および演算結果のランダム化分散値<fi>をチェックサムC:=<f0>,…,<fμ-1>へ含めながら少なくとも１つの秘匿演算を含む関数Fを実行して秘匿された関数値[F([a0],…,[aM-1])]を求める秘匿計算部と、
前記チェックサムCに含まれる分散値[fi]の総和に前記分散値[r]を乗じた分散値[φ]と前記チェックサムCに含まれる分散値[fir]の総和である分散値[ψ]とに基づいて前記関数値[F([a0],…,[aM-1])]の正当性を検証する正当性証明部と、
を含む秘匿計算システム。
【請求項２】
請求項１に記載の秘匿計算システムであって、
前記秘匿計算部は、
<a>:=([a],[ar]),<b>:=([b],[br])をそれぞれ前記ランダム化分散値<a0>,…,<aM-1>のいずれかとし、γを定数として、ランダム化分散値<γa+b>:=(γ[a]+[b],γ[ar]+[br])を計算し、前記ランダム化分散値<γa+b>を前記チェックサムCに含める加算定数倍部、
を含む秘匿計算システム。
【請求項３】
請求項１に記載の秘匿計算システムであって、
前記秘匿計算部は、
<a>:=([a],[ar]),<b>:=([b],[br])をそれぞれ前記ランダム化分散値<a0>,…,<aM-1>のいずれかとして、<a>,<b>を前記チェックサムCへ含め、ランダム化分散値<ab>:=([a][b],[a][br])を計算し、前記ランダム化分散値<ab>を前記チェックサムCに含める乗算部、
を含む秘匿計算システム。
【請求項４】
請求項１に記載の秘匿計算システムであって、
前記秘匿計算部は、
Lを2以上M以下の整数とし、<α0>:=([α0],[α0r]),…,<αL-1>:=([αL-1],[αL-1r]),<β0>:=([β0],[β0r]),…,<βL-1>:=([βL-1],[βL-1r])をそれぞれ前記ランダム化分散値<a0>,…,<aM-1>のいずれかとして、<α0>,…,<αL-1>,<β0>,…,<βL-1>を前記チェックサムCへ含め、ランダム化分散値<Σi<Lαiβi>:=(Σi<L[αi][βi],Σi<L[αi][βir])を計算し、前記ランダム化分散値<Σi<Lαiβi>を前記チェックサムCに含める積和部、
を含む秘匿計算システム。
【請求項５】
請求項１に記載の秘匿計算システムであって、
前記秘匿計算部は、
Lを2以上M以下の整数とし、<α0>:=([α0],[α0r]),…,<αL-1>:=([αL-1],[αL-1r])をそれぞれ前記ランダム化分散値<a0>,…,<aM-1>のいずれかとし、πを0以上L未満の整数の集合への写像として、<α0>,…,<αL-1>を前記チェックサムCへ含め、ランダム化分散値<απ(i)>:=([απ(i)],[απ(i)r])を計算し、前記ランダム化分散値<απ(i)>を前記チェックサムCに含めるランダム置換部、
を含む秘匿計算システム。
【請求項６】
M,mは1以上の整数であり、iは0以上の整数であり、0≦m<Mであり、μはチェックサムCに含まれる要素の数であり、0≦i<μであり、Rは環であり、AはR上結合多元環であり、
乱数r∈Aを秘密分散した分散値[r]を求める乱数生成部と、
値a0,…,aM-1∈Rを秘密分散した分散値[a0],…,[aM-1]と前記分散値[r]とを用いて、値a0,…,aM-1と乱数rの積算値a0r,…,aM-1rの分散値[a0r],…,[aM-1r]を計算し、前記分散値[a0],…,[aM-1]と前記分散値[a0r],…,[aM-1r]を組としたランダム化分散値<a0>,…,<aM-1>を生成するランダム化部と、
秘匿演算の内容に応じて演算対象および演算結果のランダム化分散値<fi>をチェックサムC:=<f0>,…,<fμ-1>へ含めながら少なくとも１つの秘匿演算を含む関数Fを実行して秘匿された関数値[F([a0],…,[aM-1])]を求める秘匿計算部と、
前記チェックサムCに含まれる分散値[fi]の総和に前記分散値[r]を乗じた分散値[φ]と前記チェックサムCに含まれる分散値[fir]の総和である分散値[ψ]とに基づいて前記関数値[F([a0],…,[aM-1])]の正当性を検証する正当性証明部と、
を含む演算装置。
【請求項７】
M,mは1以上の整数であり、iは0以上の整数であり、0≦m<Mであり、μはチェックサムCに含まれる要素の数であり、0≦i<μであり、Rは環であり、AはR上結合多元環であり、
乱数生成部が、乱数r∈Aを秘密分散した分散値[r]を求める乱数生成ステップと、
ランダム化部が、値a0,…,aM-1∈Rを秘密分散した分散値[a0],…,[aM-1]と前記分散値[r]とを用いて、値a0,…,aM-1と乱数rの積算値a0r,…,aM-1rの分散値[a0r],…,[aM-1r]を計算し、前記分散値[a0],…,[aM-1]と前記分散値[a0r],…,[aM-1r]を組としたランダム化分散値<a0>,…,<aM-1>を生成するランダム化ステップと、
秘匿計算部が、秘匿演算の内容に応じて演算対象および演算結果のランダム化分散値<fi>をチェックサムC:=<f0>,…,<fμ-1>へ含めながら少なくとも１つの秘匿演算を含む関数Fを実行して秘匿された関数値[F([a0],…,[aM-1])]を求める秘匿計算ステップと、
正当性証明部が、前記チェックサムCに含まれる分散値[fi]の総和に前記分散値[r]を乗じた分散値[φ]と前記チェックサムCに含まれる分散値[fir]の総和である分散値[ψ]とに基づいて前記関数値[F([a0],…,[aM-1])]の正当性を検証する正当性証明ステップと、
を含む秘匿計算方法。
【請求項８】
請求項６に記載の演算装置としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、秘匿計算技術に関し、特にデータを秘匿しながら計算を行い計算結果の正当性を保証する技術に関する。
【背景技術】
【０００２】
従来、データを秘匿した状態で、計算結果の正当性を保証しつつ乗算及び加算を含む計算を行う技術として、非特許文献１の３パーティ秘匿関数計算がある。これは、分散された入力値を復元することなく、３パーティ（３計算主体）の協調計算によって算術／論理演算の結果を導くプロトコルである。３パーティ秘匿関数計算プロトコルでは、データをある定められた素数p未満の自然数として扱う。データを秘匿するときは、そのデータをaとすれば、aを以下の条件を満たすよう３つに分散する。【０００３】
a=a0+a1+a2mod p
実際には乱数a1,a2を生成し、a0=a-a1-a2とする。そして３パーティＸ、Ｙ、Ｚに対して、Ｘに(a0,a1)、Ｙに(a1,a2)、Ｚに(a2,a0)を送信する。すると、a1,a2が乱数であるため、Ｘ、Ｙ、Ｚのいずれのパーティもaの情報を持たないが、いずれか２パーティが集まればaを復元することができる。【０００４】
秘匿が加法的な分散であるため、その可換性から、分散値を加算してから復元しても、復元してから加算しても結果は等しい。すなわち、加算と定数倍は分散したまま通信なしで行うことが可能である。また、乗算も通信及び乱数生成が必要となるが可能である。そのため、論理回路を構成でき、いかなる計算を実行することも可能である。以下、３パーティ秘匿関数計算の具体例を示す。なお、３パーティ秘匿関数計算プロトコルにおいて、計算結果はpで除した余りであるが、記載を簡略化するため、以下では、"mod p"の記載を省略する。
(1) Ｘ、Ｙ、Ｚに分散された秘匿データaの復元
Ｘは、Ｙにa0を送信し、Ｚにa1を送信する。Ｙは、Ｚにa1を送信し、Ｘにa2を送信する。Ｚは、Ｘにa2を送信し、Ｙにa0を送信する。【０００５】
Ｘは、Ｙから受信したa2とＺから受信したa2とが一致していれば、a0+a1+a2を計算してaを復元する。Ｙは、Ｘから受信したa0とＺから受信したa0とが一致していれば、a0+a1+a2を計算してaを復元する。Ｚは、Ｘから受信したa1とＹから受信したa1とが一致していれば、a0+a1+a2を計算してaを復元する。
(2) c=a+bの秘密計算
データbもデータaと同様な方法により、Ｘに(b0,b1)が、Ｙに(b1,b2)が、Ｚに(b2,b0)が、それぞれ分散されて秘匿されているとする。【０００６】
このとき、Ｘは(c0,c1)=(a0+b0,a1+b1)を計算して記録し、Ｙは(c1,c2)=(a1+b1,a2+b2)を計算して記録し、Ｚは(c2,c0)=(a2+b2,a0+b0)を計算して記録する。
(3) c=a+αの秘密計算（αは既知の定数）
Ｘは、(c0,c1)=(a0+α,a1)を計算して記録し、Ｚは、(c2,c0)=(a2,a0+α)を計算して記録する。Ｙの処理は無い。
(4) c=a*αの秘密計算
Ｘは、(c0,c1)=(a0*α,a1*α)を計算して記録し、Ｙは、(c1,c2)=(a1*α,a2*α)を計算して記録し、Ｚは、(c2,c0)=(a2*α,a0*α)を計算して記録する。
(5) c=a*bの秘密計算（不正検知なし乗算）
まず、Ｘは、乱数r1,r2,c0を生成し、c1=(a0+a1)(b0+b1)-r1-r2-c0を計算し、Ｙに(r1,c1)を、Ｚに(r2,c0)を送信する。【０００７】
続いて、Ｙは、y=a1*b2+b1*a2+r1を計算し、Ｚにyを送信する。また、Ｚは、z=a2*b0+b0*a2+r2を計算し、Ｙにzを送信する。【０００８】
続いて、ＹとＺはそれぞれ、c2=y+z+a2*b2を計算する。【０００９】
そして、Ｘは(c0,c1)を記録し、Ｙは(c1,c2)を記録し、Ｚは(c2,c0)を記録する。
(6) c=a*bの秘密計算（不正検知付き乗算）
上記(5)の方法によりc=a*bの乗算を行った上で、Ｘ、Ｙ、Ｚのそれぞれに対して以下の処理を行う。なお、以下の処理においてＰはＸ、Ｙ、Ｚのそれぞれを意味し、ＰがＸである場合は、Ｐ-はＺ、Ｐ+はＹを意味し、ＰがＹである場合は、Ｐ-はＸ、Ｐ+はＺを意味し、ＰがＺである場合は、Ｐ-はＹ、Ｐ+はＸを意味する。【００１０】
まず、Ｐ-、Ｐ+だけで乱数rを生成して共有し、Ｐ-、Ｐ+はr*a0、r*a1、r*a2をr*aの秘匿値として各パーティに分散する。続いて、上記(5)の方法によりc’=(r*a)*bを計算する。そして、r*c-c’が0であるか否かを確認し、0でないことをもって不正を検知する。
【先行技術文献】
【非特許文献】
【００１１】
【非特許文献１】千田浩司、濱田浩気、五十嵐大、高橋克己、「軽量検証可能３パーティ秘匿関数計算の再考」、ＣＳＳ２０１０、２０１０年
【発明の概要】
【発明が解決しようとする課題】
【００１２】
従来の計算結果の正当性を保証する秘匿計算技術では、セキュリティパラメータを選択することができないという問題があった。上記の従来技術では、計算を行う対象の単位データを環Rと定めるが、環Rによってセキュリティパラメータが一意に定まってしまう。例えば、論理回路を計算するためにR={0,1}と定めると、セキュリティパラメータは2となる。この場合、計算結果の正当性は1/2の確率でしか保証できないことを意味している。【００１３】
この発明の目的は、セキュリティパラメータを任意に設定することができ、改ざん成功確率を低くすることができる秘匿計算技術を提供することである。
【課題を解決するための手段】
【００１４】
上記の課題を解決するために、この発明の秘匿計算システムは、少なくとも３台の演算装置を含む。この発明では、M,m,iは1以上の整数であり、0≦m<Mであり、μはチェックサムCに含まれるランダム化分散値の数であり、0≦i<μである。【００１５】
演算装置は、乱数rを秘密分散した分散値[r]を求める乱数生成部と、値a0,…,aM-1を秘密分散した分散値[a0],…,[aM-1]と分散値[r]とを用いて、値a0,…,aM-1と乱数rの積算値a0r,…,aM-1rの分散値[a0r],…,[aM-1r]を計算し、分散値[a0],…,[aM-1]と分散値[a0r],…,[aM-1r]とを組としたランダム化分散値<a0>,…,<aM-1>を生成するランダム化部と、秘匿演算の内容に応じて演算対象および演算結果のランダム化分散値<fi>をチェックサムC:=<f0>,…,<fμ-1>へ含めながら、少なくとも１つの秘匿演算を含む関数Fを実行して秘匿された関数値[F([a0],…,[aM-1])]を求める秘匿計算部と、チェックサムCに含まれる分散値[fi]の総和に分散値[r]を乗じた分散値[φ]とチェックサムCに含まれる分散値[fir]の総和である分散値[ψ]とに基づいて関数値[F([a0],…,[aM-1])]の正当性を検証する正当性証明部とを含む。
【発明の効果】
【００１６】
この発明の秘匿計算技術によれば、従来よりも低い改ざん成功確率のもとで、秘匿計算を行うことができる。また、正当性証明が従来よりも効率化されており、高速に改ざん検知ができる。
【図面の簡単な説明】
【００１７】
【図１】秘匿計算システムの機能構成を例示する図。
【図２】演算装置の機能構成を例示する図。
【図３】秘匿計算部の機能構成を例示する図。
【図４】秘匿計算方法の処理フローを例示する図。
【発明を実施するための形態】
【００１８】
実施形態の説明に先立ち、この明細書における表記方法およびこの発明の基本的な考え方について説明する。
＜表記方法＞
この発明で扱う値は、特に断りのない限りR上の値とする。Rは環である。AはR上結合多元環である。結合多元環とは、結合的な環であって、かつそれと両立するような、何らかの体上の線型空間の構造を備えたものである。結合多元環は、ベクトル空間で扱う値が体ではなく環でよくなったものと言える。
【００１９】
ベクトルXの第i要素をXi（下付き添字）で参照する。
【００２０】
[x]は値x∈Rの秘匿文である。秘匿文は値を暗号化や秘密分散などの手段で秘匿化した値である。Xが集合である場合には、[X]は集合Xの各要素を秘匿化した集合である。
【００２１】
|X|は集合Xの要素数である。
【００２２】
<x>は値x∈Rのランダム化分散値である。ランダム化分散値とは、分散値[x]と、値xと乱数ｒ∈Aとの積算値xrの分散値[xr]との組である。したがって、ランダム化分散値は以下の式(1)のように定義できる。
【００２３】
【数１】
0006016948.tif 000002
【００２４】
ランダム化分散値の第0成分（式(1)における[x]）はR成分、第1成分（式(1)における[xr]）はA成分ともいう。
【００２５】
乱数r∈Aをパラメータとするランダム化分散値の空間を<Rr>とする。
＜安全性＞
暗号理論の技術分野ではプロトコルの安全性を証明するために利用者・参加者や攻撃者をモデル化する。このようなモデルとして、maliciousモデルやsemi-honestモデルが用いられている。maliciousモデルは攻撃者が任意の不正な動作を行う。semi-honestモデルは攻撃者の行う処理は正しく、その範疇でデータを盗み見ようとする。したがって、maliciousモデルにおいて安全性が証明されたプロトコルの方がより安全性が高いと評価できる。
【００２６】
非特許文献１に記載された従来の秘匿計算技術はsemi-honestモデルにおいて安全であるが、maliciousモデルでは計算結果の正当性を保証するが秘匿性は保証されていなかった。この発明は、semi-honestモデルにおいて安全な秘匿計算を用いて、より強力な安全性をもつmaliciousモデルにおいて安全な秘匿計算を実現する。
【００２７】
＜発明のポイント＞
従来の秘匿計算技術では、環R上の演算を４系統で行うことにより正当性の証明を行なっていた。この発明では、環R上の演算と、結合多元環A上の演算との２系統で行うことで正当性の証明を行う。
【００２８】
従来の秘匿計算では同じ環R上でしか効率的に処理をすることができなかった。しかし、結合多元環A上の演算であれば環R上の演算と同等の効率で、環Rの元と上位互換性をもって処理できる。なお、結合多元環に属する代数構造である拡大体は、乱数との乗算結果が一様分布となり安全性の観点から理想的な代数構造である。
【００２９】
この発明は、環R上の分散値を結合多元体A上の乱数を用いてランダム化分散値とし、環R上と結合多元環A上との２系統で正当性の証明を行うため、結合多元体Aを適切な空間に設定することでセキュリティパラメータが任意に設定できる。したがって、従来よりも低い改ざん成功確率のもとで秘匿計算を行うことができる。
［実施形態］
以下、この発明の実施の形態について詳細に説明する。なお、図面中において同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
＜構成＞
図１を参照して、この実施形態の秘匿計算システム１の構成例を説明する。秘匿計算システム１は、N（N≧3）台の演算装置２1,…,２Nを含む。N台の演算装置２1,…,２Nはそれぞれネットワーク９に接続される。ネットワーク９は、接続される各装置が相互に通信可能なように構成されていればよく、例えばインターネットやＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）などで構成することができる。なお、各装置は必ずしもネットワークを介してオンラインで通信可能である必要はない。例えば、演算装置２1,…,２Nへ入力する情報を磁気テープやＵＳＢメモリなどの可搬型記録媒体に記憶し、その可搬型記録媒体から演算装置２1,…,２Nへオフラインで入力するように構成してもよい。
【００３０】
図２を参照して、秘匿計算システム１に含まれる演算装置２n（1≦n≦N）の構成例を説明する。演算装置２nは、制御部１０１、メモリ１０２、入力部１１、乱数生成部１２、ランダム化部１３、秘匿計算部１４、正当性証明部１５、出力部１６を含む。演算装置２nは、例えば、ＣＰＵ（Central Processing Unit）、ＲＡＭ（Random Access Memory）等を有する公知又は専用のコンピュータに特別なプログラムが読み込まれて構成された特別な装置である。演算装置２nは制御部１０１の制御のもとで各処理を実行する。演算装置２nに入力されたデータや各処理で得られたデータはメモリ１０２に格納され、メモリ１０２に格納されたデータは必要に応じて読み出されて他の処理に利用される。
【００３１】
図３を参照して、演算装置２nに含まれる秘匿計算部１４の構成例を説明する。秘匿計算部１４は、加算定数倍部１４１、乗算部１４２、積和部１４３、ランダム置換部１４４を含む。秘匿計算部１４は、各構成部を制御して所望の計算を実行する。
【００３２】
＜秘匿計算処理＞
図４を参照して、この実施形態の秘匿計算システム１の動作例について手続きの順に従って詳細に説明する。
【００３３】
演算装置２n（1≦n≦N）の備える入力部１１へ少なくとも１つの分散値[a0],…,[aM-1]（M≧1）が入力される（ステップＳ１１）。入力された分散値[a0],…,[aM-1]はランダム化部１３へ出力される。分散値[am]（0≦m<M）は、値amを秘密分散した分散値である。秘密分散の方法は、秘匿計算上で加算・乗算・積和・ランダム置換の各演算が可能である秘密分散方式である必要があるが、これらの演算が可能であればどのような秘密分散方式であってもよい。適用可能な秘密分散方法についての詳細は非特許文献１を参照されたい。入力される分散値[a0],…,[aM-1]の個数Mは、秘匿計算部１４で行われる秘匿計算の内容により適宜決定される。
【００３４】
乱数生成部１２は、結合多元環Aから選択した乱数r∈Aの分散値[r]を生成する（ステップＳ１２）。生成した分散値[r]はランダム化部１３に出力される。分散値[r]の生成は、いずれの演算装置２1,…,２Nからも乱数rが秘匿された状態で行われなければならない。
【００３５】
例えば、秘匿計算システム１を構成する演算装置２1,…,２Nが協調して乱数rの分散値[r]を生成することができる。具体的には、まず、演算装置２nはそれぞれが乱数rnを生成する。次に、非特許文献１に記載された秘匿方法により乱数rnの分散値[rn]を生成する。そして、演算装置２nはそれぞれ[r]=Σn<N[rn]を計算し、乱数rの分散値[r]を得る。このように構成すれば、いずれの演算装置２1,…,２Nも乱数rを知ることなく、乱数rの分散値[r]を得ることができる。
【００３６】
また、事前の乱数共有や疑似乱数の利用を許すことが可能であれば、複製型秘密分散（replicated secret sharing）を利用して乱数rの分散値[r]を生成することができる。複製型秘密分散を利用すれば演算装置２1,…,２N間での通信なしに乱数rの分散値[r]を生成することができる。複製型秘密分散の詳細については「R. Cramer, I. Damgard, and Y. Ishai, “Share conversion, pseudorandom secret-sharing and applications to secure computation”, TCC, Vol. 3378 of Lecture Notes in Computer Science, pp. 342-362, Springer, 2005.（参考文献１）」を参照されたい。
【００３７】
ランダム化部１３は、分散値[a0],…,[aM-1]と分散値[r]を用いて、ランダム化分散値<a0>,…,<aM-1>を生成する（ステップＳ１３）。生成したランダム化分散値<a0>,…,<aM-1>は秘匿計算部１４へ出力される。
【００３８】
具体的には、ランダム化部１３は、m=0,…,M-1について、分散値[am]と分散値[r]を用いて、[amr]=[am]×[r]を非特許文献１に記載された秘匿計算方法により求め、分散値[am]と分散値[amr]を組としてランダム化分散値<am>=([am],[amr])を生成する。
【００３９】
秘匿計算部１４は、ランダム化分散値<a0>,…,<aM-1>に対して、少なくとも１つの秘匿演算を含む関数Fを実行して秘匿された関数値[F([a0],…,[aM-1])]を求める（ステップＳ１４）。この際、秘匿演算の内容に応じて演算対象および演算結果となるランダム化分散値<fi>をチェックサムC:=<f0>,…,<fμ-1>へ含める。ここで、μはチェックサムCに含まれるランダム化分散値の数である。μの値はチェックサムCを更新するたびに加算される。求めた関数値[F([a0],…,[aM-1])]とチェックサムCは正当性証明部１５へ出力される。
【００４０】
関数Fにおいて加算・定数倍の秘匿計算を行う場合には、秘匿計算部１４は加算定数倍部１４１により秘匿計算を行う。ランダム化分散値は加法準同型性をもつため、加算・定数倍の秘匿計算は、環R上の分散値に対する加算と同様に、他の演算装置２nと通信することなく実行することができる。
【００４１】
具体的には、ランダム化分散値<a>および<b>をそれぞれランダム化分散値<a0>,…,<aM-1>のいずれかもしくは秘匿計算部１４に含まれる各構成部の出力するランダム化分散値であるとし、γを任意の定数として、以下の式(2)によりランダム化分散値<γa+b>を計算し、計算結果のランダム化分散値<γa+b>のR成分[γa+b]が関数値[F([a0],…,[aM-1])]に含まれる場合には、ランダム化分散値<γa+b>を式(3)によりチェックサムCに含める。加算・定数倍の秘匿計算では、演算装置内部での演算で実現できるため、演算前のランダム化分散値によるチェックサムCの更新は行わない。
【００４２】
【数２】
0006016948.tif 000003
【００４３】
関数Fにおいて乗算の秘匿計算を行う場合には、秘匿計算部１４は乗算部１４２により秘匿計算を行う。乗算の秘匿計算は環R上乗算とスカラー乗算とで実現される。
【００４４】
具体的には、ランダム化分散値<a>および<b>をそれぞれランダム化分散値<a0>,…,<aM-1>のいずれかもしくは秘匿計算部１４に含まれる各構成部の出力するランダム化分散値であるとして、以下の式(4)によりチェックサムCを更新し、式(5)によりランダム化分散値<ab>を計算し、計算結果のランダム化分散値<ab>のR成分[ab]が関数値[F([a0],…,[aM-1])]に含まれる場合には、ランダム化分散値<ab>を式(6)によりチェックサムCに含める。
【００４５】
【数３】
0006016948.tif 000004
【００４６】
乗算の秘匿計算では、ランダム化分散値<a>に関しては、A成分である[ar]は使用しない。[ar][br]を計算すると[abr2]となり乱数rの次数が変化してしまう。これを避けるために、A成分では[a][br]=[abr]を計算する。
【００４７】
環R上乗算は、「R. Gennaro, M. O. Rabin, and T. Rabin, “Simplied VSS and fast-track multiparty computations with applications to threshold cryptography”, PODC, pp. 101-111, ACM, 1998.（参考文献２）」や「I. Damgard and J. B. Nielsen, “Scalable and unconditionally secure multiparty computation”, CRYPTO, Vol. 4622 of Lecture Notes in Computer Science, pp. 572-590, Springer, 2007.（参考文献３）」に記載の方法を適用することができる。演算装置２nの総数をn、復元に必要な演算装置２nの数をkとして、参考文献２に記載の方法では通信量O(n2)を1ラウンド行うのに対して、参考文献３に記載の方法では通信量O(n)を3ラウンド行うため、参考文献２に記載の方法の方が通信量の観点においては優れている。ただし、より正確には参考文献２に記載の方法は通信量がn(n-1)であり、参考文献３に記載の方法は通信量がn(n-1)/k+6(n-1)であり、nが小さい場合には参考文献２に記載の方法の方が効率的な場合もある。
【００４８】
結合多元環A上の乗算は、複製型秘密分散を用いる場合であれば、Aは環であるので問題なくsemi-honest乗算を行える。また、Aが体ならばShamir秘密分散を用いても特に問題はない。Shamir秘密分散を用いる場合でAが体でないときは自明ではないが、Aが単にRqの場合などは成分ごとにR上乗算を行えばよい。
【００４９】
スカラー乗算は[a]∈[R],[b]∈[A]から[ab]∈[A]を計算する演算である。AがRの環の準同型R'に対してR'のq次元ベクトルとして表現されていれば、スカラー乗算は容易である。R→R'の準同型写像をhとおいて、[b]=([b0],…,[bq-1])とおく。[a]の各パーティのシェアに対してhを作用させたものを[h(a)]とすると、準同型性から[h(a)]は[R']に属する。すなわち、[ab]:=([h(a)][b0],…,[h(a)][bq-1])である。hはローカル計算であるから、通信量はR'上乗算q回分（もしくはA上乗算1回分）、ラウンド数は1である。Aが拡大体である場合がこの条件を満たす最も簡単な場合である。この場合、hを恒等写像とすることができ、[ab]:=([a][b0],…,[a][bq-1])である。
【００５０】
関数Fにおいて積和の秘匿計算を行う場合には、秘匿計算部１４は積和部１４３により秘匿計算を行う。積和の秘匿計算は環R上積和とスカラー積和とで実現される。
【００５１】
具体的には、Lを2以上M以下の整数とし、ランダム化分散値<α0>,…,<αL-1>,<β0>,…,<βL-1>をそれぞれランダム化分散値<a0>,…,<aM-1>のいずれかもしくは秘匿計算部１４に含まれる各構成部の出力するランダム化分散値であるとして、以下の式(7)によりチェックサムCを更新し、式(8)によりランダム化分散値<Σi<Lαiβi>を計算し、計算結果のランダム化分散値<Σi<Lαiβi>のR成分[Σi<Lαiβi]が関数値[F([a0],…,[aM-1])]に含まれる場合には、ランダム化分散値<Σi<Lαiβi>を式(9)によりチェックサムCに含める。
【００５２】
【数４】
0006016948.tif 000005
【００５３】
環R上積和は環R上乗算を用いて実現できる。環R上積和の通信量は環R上乗算1回分の通信量と同じである。スカラー積和はスカラー乗算を用いて実現できる。スカラー積和の通信量はスカラー乗算1回分の通信量と同じである。ランダム化分散値<αi>に関して、A成分である[αir]を使用しないのは、乗算部１４２と同様の理由により、乱数rの次数変化を避けるためである。
【００５４】
関数Fにおいてランダム置換の秘匿計算を行う場合には、秘匿計算部１４はランダム置換部１４４により秘匿計算を行う。ランダム化分散値に対するランダム置換は、ランダム化分散値のR成分およびA成分に対して同じランダム置換を行う。
【００５５】
具体的には、Lを2以上M以下の整数とし、<α0>,…,<αL-1>をそれぞれランダム化分散値<a0>,…,<aM-1>のいずれかもしくは秘匿計算部１４に含まれる各構成部の出力するランダム化分散値とし、πを0以上L未満の整数の集合への写像として、以下の式(10)によりチェックサムCを更新し、式(11)(12)によりランダム化分散値<απ(i)>を計算し、計算結果のランダム化分散値<απ(i)>のR成分[απ(i)]が関数値[F([a0],…,[aM-1])]に含まれる場合には、ランダム化分散値<απ(i)>を式(13)によりチェックサムCに含める。
【００５６】
【数５】
0006016948.tif 000006
【００５７】
ランダム置換の秘匿計算は、「濱田浩気, 五十嵐大, 千田浩司, 高橋克巳, “3パーティ秘匿関数計算のランダム置換プロトコル”, CSS2010, 2010.（参考文献４）」に記載の方法を適用することができる。
【００５８】
正当性証明部１５は、分散値[r]を用いてチェックサムCを検証することで、関数値[F([a0],…,[aM-1])]の正当性を証明する（ステップＳ１５）。チェックサムCを検証した結果、改ざんがないと判断した場合は関数値[F([a0],…,[aM-1])]を出力部１６へ出力する。改ざんがあったと判断した場合はその旨を示す情報（例えば、「⊥」など）を出力部１６へ出力する。チェックサムCの検証は、チェックサムCに含まれる分散値[f0],…,[fμ-1]の総和に分散値[r]を乗じた分散値[φ]と、チェックサムCに含まれる分散値[f0r],…,[fμ-1r]の総和である分散値[ψ]とに基づいて行われる。
【００５９】
具体的には、正当性証明部１５は、例えば以下のようにチェックサムCを検証する。まず、結合多元環A上のμ個の乱数ρ0,…,ρμ-1の分散値[ρ0],…,[ρμ-1]を生成する。分散値[ρ0],…,[ρμ-1]の生成はいずれの演算装置２nからも乱数ρ0,…,ρμ-1が秘匿された状態で行われなければならない。分散値[ρ0],…,[ρμ-1]の生成は、乱数生成部１２と同様の方法により行えばよい。
【００６０】
次に、チェックサムCに含まれる分散値[f0],…,[fμ-1]と分散値[ρ0],…,[ρμ-1]と分散値[r]を用いて、以下の式(14)により分散値[φ]を求める。
【００６１】
【数６】
0006016948.tif 000007
【００６２】
また、チェックサムCに含まれる分散値[f0r],…,[fμ-1r]と分散値[ρ0],…,[ρμ-1]を用いて、以下の式(15)により分散値[ψ]を求める。
【００６３】
【数７】
0006016948.tif 000008
【００６４】
そして、分散値[φ]から分散値[ψ]を減算した分散値[δ]=[φ]-[ψ]を復元する。復元の方法は、各分散値に対応する秘密分散方式の復元操作で行えばよいが、この際、maliciousモデルで正当性を保証する。具体的にはすべての演算装置２1,…,２Nが互いに分散値[δ]を他の演算装置へ送信し、分散値の一貫性を確認することで完全な正当性を保証する。この場合、演算装置２nの総数をn、復元に必要な演算装置２nの数をkとして、総通信量はn(n-1)である。この際、確率的な方法を用いれば分散値のデータ量が大きいとき総通信量をn(k-1)とすることができる。なお、上記の参考文献３に記載の秘匿計算のように、正当性を保証しない復元を含むsemi-honest演算もあるが、秘匿計算の構成要素として正当性を保証しない復元が含まれていても、秘匿計算全体の安全性には影響しない。
【００６５】
すべての演算装置２1,…,２Nにおいて復元した値δが0であれば、秘匿計算全体を通して改ざんがなかったものと判断する。いずれかの演算装置２1,…,２Nにおいて復元した値δが0以外であれば、秘匿計算において改ざんがあったものと判断する。
【００６６】
正当性証明の基本的な考え方を説明する。チェックサムの検証は、ランダム化分散値それぞれに着目すると、[fi][r]-[fir]=0であるかを検証することである。ここで、分散値[fi]と分散値[fir]がいずれも改ざんされ、[fi+x]と[fir+y]とされた場合を考えると、検証により得られる値は式(16)となる。
【００６７】
【数８】
0006016948.tif 000009
【００６８】
攻撃者はこのxr-yの値を0となるように辻褄を合わせて[fi]と[fir]を操作しなければならないが、攻撃者は乱数r∈Aを知らないため、これを満たすようにすることができる確率は、1/|A|となる。ただし、この実施形態では乱数ρ0,…,ρμ-1を乗じているため全体の改ざん成功確率は高々2/|A|となる。
【００６９】
秘匿計算部１４は、必ずしも、加算定数倍部１４１、乗算部１４２、積和部１４３、ランダム置換部１４４のすべてを含んでいなくともよく、実行する関数Fに含まれる演算に対応する各構成部が不足なく含まれていればよい。例えば、関数Fが定数倍と乗算の演算のみを計算するものであれば、秘匿計算部１４は、加算定数倍部１４１及び乗算部１４２のみを含んでいればよい。
【００７０】
［変形例］
Zを整数環、pを素数として、環Rと結合多元環AとをZ/pZとすることができる。このように構成することで、改ざん成功確率は約2/pとすることができる。また、秘匿演算において演算装置同士で通信するデータ量を少なくすることができる。
【００７１】
Zを整数環、pを素数、qを1以上の整数として、環RをZ/pZとし、結合多元環Aを環Rのq次拡大体とすることができる。このように構成することで、改ざん成功確率を約2/pqとすることができる。R={0,1}とした場合など、pが小さい場合には特に有効である。
【００７２】
Zを整数環、pを素数、n,mを整数として、環RをZ/pnZとし、結合多元環AをZ/pmZとすることができる。このように構成することで、改ざん成功確率を約2/pqとすることができる。
【００７３】
［プログラム、記録媒体］
この発明は上述の実施形態に限定されるものではなく、この発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。上記実施例において説明した各種の処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
【００７４】
また、上記実施形態で説明した各装置における各種の処理機能をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
【００７５】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【００７６】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【００７７】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００７８】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【図１】
0006016948.tif 000010
【図２】
0006016948.tif 000011
【図３】
0006016948.tif 000012
【図４】
0006016948.tif 000013