(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6016948
(24)【登録日】2016年10月7日
(45)【発行日】2016年10月26日
(54)【発明の名称】秘匿計算システム、演算装置、秘匿計算方法、およびプログラム
(51)【国際特許分類】
G09C 1/00 20060101AFI20161013BHJP
【FI】
G09C1/00 650Z
G09C1/00 640D
【請求項の数】8
【全頁数】14
(21)【出願番号】特願2014-557490(P2014-557490)
(86)(22)【出願日】2014年1月16日
(86)【国際出願番号】JP2014050647
(87)【国際公開番号】WO2014112548
(87)【国際公開日】20140724
【審査請求日】2015年7月3日
(31)【優先権主張番号】特願2013-6690(P2013-6690)
(32)【優先日】2013年1月17日
(33)【優先権主張国】JP
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】100121706
【弁理士】
【氏名又は名称】中尾 直樹
(74)【代理人】
【識別番号】100128705
【弁理士】
【氏名又は名称】中村 幸雄
(74)【代理人】
【識別番号】100147773
【弁理士】
【氏名又は名称】義村 宗洋
(72)【発明者】
【氏名】五十嵐 大
(72)【発明者】
【氏名】菊池 亮
(72)【発明者】
【氏名】濱田 浩気
(72)【発明者】
【氏名】千田 浩司
【審査官】
青木 重徳
(56)【参考文献】
【文献】
特開2012−078446(JP,A)
【文献】
米国特許出願公開第2008/0208560(US,A1)
【文献】
国際公開第2012/121333(WO,A1)
【文献】
Satoshi Obana et al,Almost Optimum Secret Sharing Schemes Secure Against Cheating for Arbitrary Secret Distribution,ASIACRYPT 2006,IACR [online],2006年,[平成26年2月7日検索],インターネット<URL:https://www.iacr.org/archive/asiacrypt2006/asiacrypt20
【文献】
五十嵐 大 他,軽量検証可能3 パーティ秘匿関数計算の効率化及びこれを用いたセキュアなデータベース処理,2011年暗号と情報セキュリティシンポジウム概要集 CD−ROM,2011 年暗号と情報セキュリティシンポジウム実行委員,2011年 1月25日,2C3-6,p.1−8
【文献】
五十嵐 大 他,非常に高効率なn>=2k-1のmaliciousモデル上秘密分散ベース秘密計算,2013 年 暗号と情報セキュリティシンポジウム概要集 CD−ROM,編集 2013 年 暗号と情報セキュリティシンポジウム実,2013年 1月22日,3C3-2,p.1−8
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
少なくとも3台の演算装置を含む秘匿計算システムであって、
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>へ含めながら少なくとも1つの秘匿演算を含む関数Fを実行して秘匿された関数値[F([a0],…,[aM-1])]を求める秘匿計算部と、
前記チェックサムCに含まれる分散値[fi]の総和に前記分散値[r]を乗じた分散値[φ]と前記チェックサムCに含まれる分散値[fir]の総和である分散値[ψ]とに基づいて前記関数値[F([a0],…,[aM-1])]の正当性を検証する正当性証明部と、
を含む秘匿計算システム。
【請求項2】
請求項1に記載の秘匿計算システムであって、
前記秘匿計算部は、
<a>:=([a],[ar]),<b>:=([b],[br])をそれぞれ前記ランダム化分散値<a0>,…,<aM-1>のいずれかとし、γを定数として、ランダム化分散値<γa+b>:=(γ[a]+[b],γ[ar]+[br])を計算し、前記ランダム化分散値<γa+b>を前記チェックサムCに含める加算定数倍部、
を含む秘匿計算システム。
【請求項3】
請求項1に記載の秘匿計算システムであって、
前記秘匿計算部は、
<a>:=([a],[ar]),<b>:=([b],[br])をそれぞれ前記ランダム化分散値<a0>,…,<aM-1>のいずれかとして、<a>,<b>を前記チェックサムCへ含め、ランダム化分散値<ab>:=([a][b],[a][br])を計算し、前記ランダム化分散値<ab>を前記チェックサムCに含める乗算部、
を含む秘匿計算システム。
【請求項4】
請求項1に記載の秘匿計算システムであって、
前記秘匿計算部は、
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に含める積和部、
を含む秘匿計算システム。
【請求項5】
請求項1に記載の秘匿計算システムであって、
前記秘匿計算部は、
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に含めるランダム置換部、
を含む秘匿計算システム。
【請求項6】
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>へ含めながら少なくとも1つの秘匿演算を含む関数Fを実行して秘匿された関数値[F([a0],…,[aM-1])]を求める秘匿計算部と、
前記チェックサムCに含まれる分散値[fi]の総和に前記分散値[r]を乗じた分散値[φ]と前記チェックサムCに含まれる分散値[fir]の総和である分散値[ψ]とに基づいて前記関数値[F([a0],…,[aM-1])]の正当性を検証する正当性証明部と、
を含む演算装置。
【請求項7】
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>へ含めながら少なくとも1つの秘匿演算を含む関数Fを実行して秘匿された関数値[F([a0],…,[aM-1])]を求める秘匿計算ステップと、
正当性証明部が、前記チェックサムCに含まれる分散値[fi]の総和に前記分散値[r]を乗じた分散値[φ]と前記チェックサムCに含まれる分散値[fir]の総和である分散値[ψ]とに基づいて前記関数値[F([a0],…,[aM-1])]の正当性を検証する正当性証明ステップと、
を含む秘匿計算方法。
【請求項8】
請求項6に記載の演算装置としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、秘匿計算技術に関し、特にデータを秘匿しながら計算を行い計算結果の正当性を保証する技術に関する。
【背景技術】
【0002】
従来、データを秘匿した状態で、計算結果の正当性を保証しつつ乗算及び加算を含む計算を行う技術として、非特許文献1の3パーティ秘匿関数計算がある。これは、分散された入力値を復元することなく、3パーティ(3計算主体)の協調計算によって算術/論理演算の結果を導くプロトコルである。3パーティ秘匿関数計算プロトコルでは、データをある定められた素数p未満の自然数として扱う。データを秘匿するときは、そのデータをaとすれば、aを以下の条件を満たすよう3つに分散する。
【0003】
a=a
0+a
1+a
2mod p
実際には乱数a
1,a
2を生成し、a
0=a-a
1-a
2とする。そして3パーティX、Y、Zに対して、Xに(a
0,a
1)、Yに(a
1,a
2)、Zに(a
2,a
0)を送信する。すると、a
1,a
2が乱数であるため、X、Y、Zのいずれのパーティもaの情報を持たないが、いずれか2パーティが集まればaを復元することができる。
【0004】
秘匿が加法的な分散であるため、その可換性から、分散値を加算してから復元しても、復元してから加算しても結果は等しい。すなわち、加算と定数倍は分散したまま通信なしで行うことが可能である。また、乗算も通信及び乱数生成が必要となるが可能である。そのため、論理回路を構成でき、いかなる計算を実行することも可能である。以下、3パーティ秘匿関数計算の具体例を示す。なお、3パーティ秘匿関数計算プロトコルにおいて、計算結果はpで除した余りであるが、記載を簡略化するため、以下では、"mod p"の記載を省略する。
(1) X、Y、Zに分散された秘匿データaの復元
Xは、Yにa
0を送信し、Zにa
1を送信する。Yは、Zにa
1を送信し、Xにa
2を送信する。Zは、Xにa
2を送信し、Yにa
0を送信する。
【0005】
Xは、Yから受信したa
2とZから受信したa
2とが一致していれば、a
0+a
1+a
2を計算してaを復元する。Yは、Xから受信したa
0とZから受信したa
0とが一致していれば、a
0+a
1+a
2を計算してaを復元する。Zは、Xから受信したa
1とYから受信したa
1とが一致していれば、a
0+a
1+a
2を計算してaを復元する。
(2) c=a+bの秘密計算
データbもデータaと同様な方法により、Xに(b
0,b
1)が、Yに(b
1,b
2)が、Zに(b
2,b
0)が、それぞれ分散されて秘匿されているとする。
【0006】
このとき、Xは(c
0,c
1)=(a
0+b
0,a
1+b
1)を計算して記録し、Yは(c
1,c
2)=(a
1+b
1,a
2+b
2)を計算して記録し、Zは(c
2,c
0)=(a
2+b
2,a
0+b
0)を計算して記録する。
(3) c=a+αの秘密計算(αは既知の定数)
Xは、(c
0,c
1)=(a
0+α,a
1)を計算して記録し、Zは、(c
2,c
0)=(a
2,a
0+α)を計算して記録する。Yの処理は無い。
(4) c=a*αの秘密計算
Xは、(c
0,c
1)=(a
0*α,a
1*α)を計算して記録し、Yは、(c
1,c
2)=(a
1*α,a
2*α)を計算して記録し、Zは、(c
2,c
0)=(a
2*α,a
0*α)を計算して記録する。
(5) c=a*bの秘密計算(不正検知なし乗算)
まず、Xは、乱数r
1,r
2,c
0を生成し、c
1=(a
0+a
1)(b
0+b
1)-r
1-r
2-c
0を計算し、Yに(r
1,c
1)を、Zに(r
2,c
0)を送信する。
【0007】
続いて、Yは、y=a
1*b
2+b
1*a
2+r
1を計算し、Zにyを送信する。また、Zは、z=a
2*b
0+b
0*a
2+r
2を計算し、Yにzを送信する。
【0008】
続いて、YとZはそれぞれ、c
2=y+z+a
2*b
2を計算する。
【0009】
そして、Xは(c
0,c
1)を記録し、Yは(c
1,c
2)を記録し、Zは(c
2,c
0)を記録する。
(6) c=a*bの秘密計算(不正検知付き乗算)
上記(5)の方法によりc=a*bの乗算を行った上で、X、Y、Zのそれぞれに対して以下の処理を行う。なお、以下の処理においてPはX、Y、Zのそれぞれを意味し、PがXである場合は、P
-はZ、P
+はYを意味し、PがYである場合は、P
-はX、P
+はZを意味し、PがZである場合は、P
-はY、P
+はXを意味する。
【0010】
まず、P
-、P
+だけで乱数rを生成して共有し、P
-、P
+はr*a
0、r*a
1、r*a
2をr*aの秘匿値として各パーティに分散する。続いて、上記(5)の方法によりc’=(r*a)*bを計算する。そして、r*c-c’が0であるか否かを確認し、0でないことをもって不正を検知する。
【先行技術文献】
【非特許文献】
【0011】
【非特許文献1】千田浩司、濱田浩気、五十嵐大、高橋克己、「軽量検証可能3パーティ秘匿関数計算の再考」、CSS2010、2010年
【発明の概要】
【発明が解決しようとする課題】
【0012】
従来の計算結果の正当性を保証する秘匿計算技術では、セキュリティパラメータを選択することができないという問題があった。上記の従来技術では、計算を行う対象の単位データを環Rと定めるが、環Rによってセキュリティパラメータが一意に定まってしまう。例えば、論理回路を計算するためにR={0,1}と定めると、セキュリティパラメータは2となる。この場合、計算結果の正当性は1/2の確率でしか保証できないことを意味している。
【0013】
この発明の目的は、セキュリティパラメータを任意に設定することができ、改ざん成功確率を低くすることができる秘匿計算技術を提供することである。
【課題を解決するための手段】
【0014】
上記の課題を解決するために、この発明の秘匿計算システムは、少なくとも3台の演算装置を含む。この発明では、M,m,iは1以上の整数であり、0≦m<Mであり、μはチェックサムCに含まれるランダム化分散値の数であり、0≦i<μである。
【0015】
演算装置は、乱数rを秘密分散した分散値[r]を求める乱数生成部と、値a
0,…,a
M-1を秘密分散した分散値[a
0],…,[a
M-1]と分散値[r]とを用いて、値a
0,…,a
M-1と乱数rの積算値a
0r,…,a
M-1rの分散値[a
0r],…,[a
M-1r]を計算し、分散値[a
0],…,[a
M-1]と分散値[a
0r],…,[a
M-1r]とを組としたランダム化分散値<a
0>,…,<a
M-1>を生成するランダム化部と、秘匿演算の内容に応じて演算対象および演算結果のランダム化分散値<f
i>をチェックサムC:=<f
0>,…,<f
μ-1>へ含めながら、少なくとも1つの秘匿演算を含む関数Fを実行して秘匿された関数値[F([a
0],…,[a
M-1])]を求める秘匿計算部と、チェックサムCに含まれる分散値[f
i]の総和に分散値[r]を乗じた分散値[φ]とチェックサムCに含まれる分散値[f
ir]の総和である分散値[ψ]とに基づいて関数値[F([a
0],…,[a
M-1])]の正当性を検証する正当性証明部とを含む。
【発明の効果】
【0016】
この発明の秘匿計算技術によれば、従来よりも低い改ざん成功確率のもとで、秘匿計算を行うことができる。また、正当性証明が従来よりも効率化されており、高速に改ざん検知ができる。
【発明を実施するための形態】
【0018】
実施形態の説明に先立ち、この明細書における表記方法およびこの発明の基本的な考え方について説明する。
<表記方法>
この発明で扱う値は、特に断りのない限りR上の値とする。Rは環である。AはR上結合多元環である。結合多元環とは、結合的な環であって、かつそれと両立するような、何らかの体上の線型空間の構造を備えたものである。結合多元環は、ベクトル空間で扱う値が体ではなく環でよくなったものと言える。
【0019】
ベクトルXの第i要素をX
i(下付き添字)で参照する。
【0020】
[x]は値x∈Rの秘匿文である。秘匿文は値を暗号化や秘密分散などの手段で秘匿化した値である。Xが集合である場合には、[X]は集合Xの各要素を秘匿化した集合である。
【0022】
<x>は値x∈Rのランダム化分散値である。ランダム化分散値とは、分散値[x]と、値xと乱数r∈Aとの積算値xrの分散値[xr]との組である。したがって、ランダム化分散値は以下の式(1)のように定義できる。
【0024】
ランダム化分散値の第0成分(式(1)における[x])はR成分、第1成分(式(1)における[xr])はA成分ともいう。
【0025】
乱数r∈Aをパラメータとするランダム化分散値の空間を<Rr>とする。
<安全性>
暗号理論の技術分野ではプロトコルの安全性を証明するために利用者・参加者や攻撃者をモデル化する。このようなモデルとして、maliciousモデルやsemi-honestモデルが用いられている。maliciousモデルは攻撃者が任意の不正な動作を行う。semi-honestモデルは攻撃者の行う処理は正しく、その範疇でデータを盗み見ようとする。したがって、maliciousモデルにおいて安全性が証明されたプロトコルの方がより安全性が高いと評価できる。
【0026】
非特許文献1に記載された従来の秘匿計算技術はsemi-honestモデルにおいて安全であるが、maliciousモデルでは計算結果の正当性を保証するが秘匿性は保証されていなかった。この発明は、semi-honestモデルにおいて安全な秘匿計算を用いて、より強力な安全性をもつmaliciousモデルにおいて安全な秘匿計算を実現する。
【0027】
<発明のポイント>
従来の秘匿計算技術では、環R上の演算を4系統で行うことにより正当性の証明を行なっていた。この発明では、環R上の演算と、結合多元環A上の演算との2系統で行うことで正当性の証明を行う。
【0028】
従来の秘匿計算では同じ環R上でしか効率的に処理をすることができなかった。しかし、結合多元環A上の演算であれば環R上の演算と同等の効率で、環Rの元と上位互換性をもって処理できる。なお、結合多元環に属する代数構造である拡大体は、乱数との乗算結果が一様分布となり安全性の観点から理想的な代数構造である。
【0029】
この発明は、環R上の分散値を結合多元体A上の乱数を用いてランダム化分散値とし、環R上と結合多元環A上との2系統で正当性の証明を行うため、結合多元体Aを適切な空間に設定することでセキュリティパラメータが任意に設定できる。したがって、従来よりも低い改ざん成功確率のもとで秘匿計算を行うことができる。
[実施形態]
以下、この発明の実施の形態について詳細に説明する。なお、図面中において同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
<構成>
図1を参照して、この実施形態の秘匿計算システム1の構成例を説明する。秘匿計算システム1は、N(N≧3)台の演算装置2
1,…,2
Nを含む。N台の演算装置2
1,…,2
Nはそれぞれネットワーク9に接続される。ネットワーク9は、接続される各装置が相互に通信可能なように構成されていればよく、例えばインターネットやLAN(Local Area Network)、WAN(Wide Area Network)などで構成することができる。なお、各装置は必ずしもネットワークを介してオンラインで通信可能である必要はない。例えば、演算装置2
1,…,2
Nへ入力する情報を磁気テープやUSBメモリなどの可搬型記録媒体に記憶し、その可搬型記録媒体から演算装置2
1,…,2
Nへオフラインで入力するように構成してもよい。
【0030】
図2を参照して、秘匿計算システム1に含まれる演算装置2
n(1≦n≦N)の構成例を説明する。演算装置2
nは、制御部101、メモリ102、入力部11、乱数生成部12、ランダム化部13、秘匿計算部14、正当性証明部15、出力部16を含む。演算装置2
nは、例えば、CPU(Central Processing Unit)、RAM(Random Access Memory)等を有する公知又は専用のコンピュータに特別なプログラムが読み込まれて構成された特別な装置である。演算装置2
nは制御部101の制御のもとで各処理を実行する。演算装置2
nに入力されたデータや各処理で得られたデータはメモリ102に格納され、メモリ102に格納されたデータは必要に応じて読み出されて他の処理に利用される。
【0031】
図3を参照して、演算装置2
nに含まれる秘匿計算部14の構成例を説明する。秘匿計算部14は、加算定数倍部141、乗算部142、積和部143、ランダム置換部144を含む。秘匿計算部14は、各構成部を制御して所望の計算を実行する。
【0032】
<秘匿計算処理>
図4を参照して、この実施形態の秘匿計算システム1の動作例について手続きの順に従って詳細に説明する。
【0033】
演算装置2
n(1≦n≦N)の備える入力部11へ少なくとも1つの分散値[a
0],…,[a
M-1](M≧1)が入力される(ステップS11)。入力された分散値[a
0],…,[a
M-1]はランダム化部13へ出力される。分散値[a
m](0≦m<M)は、値a
mを秘密分散した分散値である。秘密分散の方法は、秘匿計算上で加算・乗算・積和・ランダム置換の各演算が可能である秘密分散方式である必要があるが、これらの演算が可能であればどのような秘密分散方式であってもよい。適用可能な秘密分散方法についての詳細は非特許文献1を参照されたい。入力される分散値[a
0],…,[a
M-1]の個数Mは、秘匿計算部14で行われる秘匿計算の内容により適宜決定される。
【0034】
乱数生成部12は、結合多元環Aから選択した乱数r∈Aの分散値[r]を生成する(ステップS12)。生成した分散値[r]はランダム化部13に出力される。分散値[r]の生成は、いずれの演算装置2
1,…,2
Nからも乱数rが秘匿された状態で行われなければならない。
【0035】
例えば、秘匿計算システム1を構成する演算装置2
1,…,2
Nが協調して乱数rの分散値[r]を生成することができる。具体的には、まず、演算装置2
nはそれぞれが乱数r
nを生成する。次に、非特許文献1に記載された秘匿方法により乱数r
nの分散値[r
n]を生成する。そして、演算装置2
nはそれぞれ[r]=Σ
n<N[r
n]を計算し、乱数rの分散値[r]を得る。このように構成すれば、いずれの演算装置2
1,…,2
Nも乱数rを知ることなく、乱数rの分散値[r]を得ることができる。
【0036】
また、事前の乱数共有や疑似乱数の利用を許すことが可能であれば、複製型秘密分散(replicated secret sharing)を利用して乱数rの分散値[r]を生成することができる。複製型秘密分散を利用すれば演算装置2
1,…,2
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.(参考文献1)」を参照されたい。
【0037】
ランダム化部13は、分散値[a
0],…,[a
M-1]と分散値[r]を用いて、ランダム化分散値<a
0>,…,<a
M-1>を生成する(ステップS13)。生成したランダム化分散値<a
0>,…,<a
M-1>は秘匿計算部14へ出力される。
【0038】
具体的には、ランダム化部13は、m=0,…,M-1について、分散値[a
m]と分散値[r]を用いて、[a
mr]=[a
m]×[r]を非特許文献1に記載された秘匿計算方法により求め、分散値[a
m]と分散値[a
mr]を組としてランダム化分散値<a
m>=([a
m],[a
mr])を生成する。
【0039】
秘匿計算部14は、ランダム化分散値<a
0>,…,<a
M-1>に対して、少なくとも1つの秘匿演算を含む関数Fを実行して秘匿された関数値[F([a
0],…,[a
M-1])]を求める(ステップS14)。この際、秘匿演算の内容に応じて演算対象および演算結果となるランダム化分散値<f
i>をチェックサムC:=<f
0>,…,<f
μ-1>へ含める。ここで、μはチェックサムCに含まれるランダム化分散値の数である。μの値はチェックサムCを更新するたびに加算される。求めた関数値[F([a
0],…,[a
M-1])]とチェックサムCは正当性証明部15へ出力される。
【0040】
関数Fにおいて加算・定数倍の秘匿計算を行う場合には、秘匿計算部14は加算定数倍部141により秘匿計算を行う。ランダム化分散値は加法準同型性をもつため、加算・定数倍の秘匿計算は、環R上の分散値に対する加算と同様に、他の演算装置2
nと通信することなく実行することができる。
【0041】
具体的には、ランダム化分散値<a>および<b>をそれぞれランダム化分散値<a
0>,…,<a
M-1>のいずれかもしくは秘匿計算部14に含まれる各構成部の出力するランダム化分散値であるとし、γを任意の定数として、以下の式(2)によりランダム化分散値<γa+b>を計算し、計算結果のランダム化分散値<γa+b>のR成分[γa+b]が関数値[F([a
0],…,[a
M-1])]に含まれる場合には、ランダム化分散値<γa+b>を式(3)によりチェックサムCに含める。加算・定数倍の秘匿計算では、演算装置内部での演算で実現できるため、演算前のランダム化分散値によるチェックサムCの更新は行わない。
【0043】
関数Fにおいて乗算の秘匿計算を行う場合には、秘匿計算部14は乗算部142により秘匿計算を行う。乗算の秘匿計算は環R上乗算とスカラー乗算とで実現される。
【0044】
具体的には、ランダム化分散値<a>および<b>をそれぞれランダム化分散値<a
0>,…,<a
M-1>のいずれかもしくは秘匿計算部14に含まれる各構成部の出力するランダム化分散値であるとして、以下の式(4)によりチェックサムCを更新し、式(5)によりランダム化分散値<ab>を計算し、計算結果のランダム化分散値<ab>のR成分[ab]が関数値[F([a
0],…,[a
M-1])]に含まれる場合には、ランダム化分散値<ab>を式(6)によりチェックサムCに含める。
【0046】
乗算の秘匿計算では、ランダム化分散値<a>に関しては、A成分である[ar]は使用しない。[ar][br]を計算すると[abr
2]となり乱数rの次数が変化してしまう。これを避けるために、A成分では[a][br]=[abr]を計算する。
【0047】
環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.(参考文献2)」や「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.(参考文献3)」に記載の方法を適用することができる。演算装置2
nの総数をn、復元に必要な演算装置2
nの数をkとして、参考文献2に記載の方法では通信量O(n
2)を1ラウンド行うのに対して、参考文献3に記載の方法では通信量O(n)を3ラウンド行うため、参考文献2に記載の方法の方が通信量の観点においては優れている。ただし、より正確には参考文献2に記載の方法は通信量がn(n-1)であり、参考文献3に記載の方法は通信量がn(n-1)/k+6(n-1)であり、nが小さい場合には参考文献2に記載の方法の方が効率的な場合もある。
【0048】
結合多元環A上の乗算は、複製型秘密分散を用いる場合であれば、Aは環であるので問題なくsemi-honest乗算を行える。また、Aが体ならばShamir秘密分散を用いても特に問題はない。Shamir秘密分散を用いる場合でAが体でないときは自明ではないが、Aが単にR
qの場合などは成分ごとにR上乗算を行えばよい。
【0049】
スカラー乗算は[a]∈[R],[b]∈[A]から[ab]∈[A]を計算する演算である。AがRの環の準同型R'に対してR'のq次元ベクトルとして表現されていれば、スカラー乗算は容易である。R→R'の準同型写像をhとおいて、[b]=([b
0],…,[b
q-1])とおく。[a]の各パーティのシェアに対してhを作用させたものを[h(a)]とすると、準同型性から[h(a)]は[R']に属する。すなわち、[ab]:=([h(a)][b
0],…,[h(a)][b
q-1])である。hはローカル計算であるから、通信量はR'上乗算q回分(もしくはA上乗算1回分)、ラウンド数は1である。Aが拡大体である場合がこの条件を満たす最も簡単な場合である。この場合、hを恒等写像とすることができ、[ab]:=([a][b
0],…,[a][b
q-1])である。
【0050】
関数Fにおいて積和の秘匿計算を行う場合には、秘匿計算部14は積和部143により秘匿計算を行う。積和の秘匿計算は環R上積和とスカラー積和とで実現される。
【0051】
具体的には、Lを2以上M以下の整数とし、ランダム化分散値<α
0>,…,<α
L-1>,<β
0>,…,<β
L-1>をそれぞれランダム化分散値<a
0>,…,<a
M-1>のいずれかもしくは秘匿計算部14に含まれる各構成部の出力するランダム化分散値であるとして、以下の式(7)によりチェックサムCを更新し、式(8)によりランダム化分散値<Σ
i<Lα
iβ
i>を計算し、計算結果のランダム化分散値<Σ
i<Lα
iβ
i>のR成分[Σ
i<Lα
iβ
i]が関数値[F([a
0],…,[a
M-1])]に含まれる場合には、ランダム化分散値<Σ
i<Lα
iβ
i>を式(9)によりチェックサムCに含める。
【0053】
環R上積和は環R上乗算を用いて実現できる。環R上積和の通信量は環R上乗算1回分の通信量と同じである。スカラー積和はスカラー乗算を用いて実現できる。スカラー積和の通信量はスカラー乗算1回分の通信量と同じである。ランダム化分散値<α
i>に関して、A成分である[α
ir]を使用しないのは、乗算部142と同様の理由により、乱数rの次数変化を避けるためである。
【0054】
関数Fにおいてランダム置換の秘匿計算を行う場合には、秘匿計算部14はランダム置換部144により秘匿計算を行う。ランダム化分散値に対するランダム置換は、ランダム化分散値のR成分およびA成分に対して同じランダム置換を行う。
【0055】
具体的には、Lを2以上M以下の整数とし、<α
0>,…,<α
L-1>をそれぞれランダム化分散値<a
0>,…,<a
M-1>のいずれかもしくは秘匿計算部14に含まれる各構成部の出力するランダム化分散値とし、πを0以上L未満の整数の集合への写像として、以下の式(10)によりチェックサムCを更新し、式(11)(12)によりランダム化分散値<α
π(i)>を計算し、計算結果のランダム化分散値<α
π(i)>のR成分[α
π(i)]が関数値[F([a
0],…,[a
M-1])]に含まれる場合には、ランダム化分散値<α
π(i)>を式(13)によりチェックサムCに含める。
【0057】
ランダム置換の秘匿計算は、「濱田浩気, 五十嵐大, 千田浩司, 高橋克巳, “3パーティ秘匿関数計算のランダム置換プロトコル”, CSS2010, 2010.(参考文献4)」に記載の方法を適用することができる。
【0058】
正当性証明部15は、分散値[r]を用いてチェックサムCを検証することで、関数値[F([a
0],…,[a
M-1])]の正当性を証明する(ステップS15)。チェックサムCを検証した結果、改ざんがないと判断した場合は関数値[F([a
0],…,[a
M-1])]を出力部16へ出力する。改ざんがあったと判断した場合はその旨を示す情報(例えば、「⊥」など)を出力部16へ出力する。チェックサムCの検証は、チェックサムCに含まれる分散値[f
0],…,[f
μ-1]の総和に分散値[r]を乗じた分散値[φ]と、チェックサムCに含まれる分散値[f
0r],…,[f
μ-1r]の総和である分散値[ψ]とに基づいて行われる。
【0059】
具体的には、正当性証明部15は、例えば以下のようにチェックサムCを検証する。まず、結合多元環A上のμ個の乱数ρ
0,…,ρ
μ-1の分散値[ρ
0],…,[ρ
μ-1]を生成する。分散値[ρ
0],…,[ρ
μ-1]の生成はいずれの演算装置2
nからも乱数ρ
0,…,ρ
μ-1が秘匿された状態で行われなければならない。分散値[ρ
0],…,[ρ
μ-1]の生成は、乱数生成部12と同様の方法により行えばよい。
【0060】
次に、チェックサムCに含まれる分散値[f
0],…,[f
μ-1]と分散値[ρ
0],…,[ρ
μ-1]と分散値[r]を用いて、以下の式(14)により分散値[φ]を求める。
【0062】
また、チェックサムCに含まれる分散値[f
0r],…,[f
μ-1r]と分散値[ρ
0],…,[ρ
μ-1]を用いて、以下の式(15)により分散値[ψ]を求める。
【0064】
そして、分散値[φ]
から分散値[ψ]を減算した分散値[δ]=[φ]-[ψ]を復元する。復元の方法は、各分散値に対応する秘密分散方式の復元操作で行えばよいが、この際、maliciousモデルで正当性を保証する。具体的にはすべての演算装置2
1,…,2
Nが互いに分散値[δ]を他の演算装置へ送信し、分散値の一貫性を確認することで完全な正当性を保証する。この場合、演算装置2
nの総数をn、復元に必要な演算装置2
nの数をkとして、総通信量はn(n-1)である。この際、確率的な方法を用いれば分散値のデータ量が大きいとき総通信量をn(k-1)とすることができる。なお、上記の参考文献3に記載の秘匿計算のように、正当性を保証しない復元を含むsemi-honest演算もあるが、秘匿計算の構成要素として正当性を保証しない復元が含まれていても、秘匿計算全体の安全性には影響しない。
【0065】
すべての演算装置2
1,…,2
Nにおいて復元した値δが0であれば、秘匿計算全体を通して改ざんがなかったものと判断する。いずれかの演算装置2
1,…,2
Nにおいて復元した値δが0以外であれば、秘匿計算において改ざんがあったものと判断する。
【0066】
正当性証明の基本的な考え方を説明する。チェックサムの検証は、ランダム化分散値それぞれに着目すると、[f
i][r]-[f
ir]=0であるかを検証することである。ここで、分散値[f
i]と分散値[f
ir]がいずれも改ざんされ、[f
i+x]と[f
ir+y]とされた場合を考えると、検証により得られる値は式(16)となる。
【0068】
攻撃者はこのxr-yの値を0となるように辻褄を合わせて[f
i]と[f
ir]を操作しなければならないが、攻撃者は乱数r∈Aを知らないため、これを満たすようにすることができる確率は、1/|A|となる。ただし、この実施形態では乱数ρ
0,…,ρ
μ-1を乗じているため全体の改ざん成功確率は高々2/|A|となる。
【0069】
秘匿計算部14は、必ずしも、加算定数倍部141、乗算部142、積和部143、ランダム置換部144のすべてを含んでいなくともよく、実行する関数Fに含まれる演算に対応する各構成部が不足なく含まれていればよい。例えば、関数Fが定数倍と乗算の演算のみを計算するものであれば、秘匿計算部14は、加算定数倍部141及び乗算部142のみを含んでいればよい。
【0070】
[変形例]
Zを整数環、pを素数として、環Rと結合多元環AとをZ/pZとすることができる。このように構成することで、改ざん成功確率は約2/pとすることができる。また、秘匿演算において演算装置同士で通信するデータ量を少なくすることができる。
【0071】
Zを整数環、pを素数、qを1以上の整数として、環RをZ/pZとし、結合多元環Aを環Rのq次拡大体とすることができる。このように構成することで、改ざん成功確率を約2/p
qとすることができる。R={0,1}とした場合など、pが小さい場合には特に有効である。
【0072】
Zを整数環、pを素数、n,mを整数として、環RをZ/p
nZとし、結合多元環AをZ/p
mZとすることができる。このように構成することで、改ざん成功確率を約2/p
qとすることができる。
【0073】
[プログラム、記録媒体]
この発明は上述の実施形態に限定されるものではなく、この発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。上記実施例において説明した各種の処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
【0074】
また、上記実施形態で説明した各装置における各種の処理機能をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
【0075】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【0076】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0077】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
【0078】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。