秘密計算システム、秘密計算方法、計算装置
【課題】計算効率と通信効率が従来方法よりも優れた秘密計算方法を提供する。
【解決手段】本発明の秘密計算システムは、3つの計算装置から構成され、数値Aの第1断片a1,第2断片a2,第3断片a3は、a1=a22+a23,a2=(a21,a22),a3=(a21,a23)、(ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ)の関係を有し、計算装置Xが第1断片を、計算装置Yが第2断片を、計算装置Zが第3断片を記録する。そして、単純な協調計算によって、算術計算、論理回路演算、それらの演算の組合せも実現できる。
【解決手段】本発明の秘密計算システムは、3つの計算装置から構成され、数値Aの第1断片a1,第2断片a2,第3断片a3は、a1=a22+a23,a2=(a21,a22),a3=(a21,a23)、(ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ)の関係を有し、計算装置Xが第1断片を、計算装置Yが第2断片を、計算装置Zが第3断片を記録する。そして、単純な協調計算によって、算術計算、論理回路演算、それらの演算の組合せも実現できる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は暗号応用技術に関し、ある演算に対して分散された入力データを復元することなく演算結果を得るための秘密計算システム、秘密計算方法、計算装置に関する。
【背景技術】
【0002】
ある演算に対して暗号化された入力データを復元することなく演算結果を得る方法(以降、当該方法を秘密計算方法と呼ぶ)として、例えば非特許文献1に記載された方法がある。当該方法は、暗号化手段として秘密分散法を用いる。すなわち、複数の装置がそれぞれ異なる分散データ(断片)を所持し、当該断片を一定数以上用いることでデータの復元を可能とし、さらにデータを復元することなく当該データを入力とした演算結果の断片を複数の装置が得ることも可能とする。当該方法を用いて実現可能な演算種別は算術演算(加減乗算)や論理(回路)演算である。また、当該方法は、n台の装置がそれぞれ異なる断片を所持するとき、n≧2t−1を満たすt以上の数の断片を用いることでデータの復元を可能とする。
【0003】
一方、当該方法は、整数値の断片から当該整数値を復元することなく論理演算を行い、演算結果の断片を得る方法が自明でなかったが、非特許文献2ではその解決法が提案されている。また、秘密計算方法を論理演算に用いて実行する方法として、例えば非特許文献3の方法が知られている。非特許文献3の方法は、論理回路の入出力ビットを乱数に置き換える操作により、置き換え後の演算の実行者は入出力の値を知ることなく演算結果に対応する乱数を得ることを可能とする。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】Michael Ben-Or, Shafi Goldwasser, and Avi Wigderson, “Completeness Theorems for Non-Cryptographic Fault-Tolerant Distributed Computation (Extended Abstract)”, Proc. of STOC 1988, pp.1-10.
【非特許文献2】Takashi Nishide and Kazuo Ohta, “Multiparty Computation for Interval, Equality, and Comparison Without Bit-Decomposition Protocol”, Proc. of Public Key Cryptography 2007, pp.343-360.
【非特許文献3】Andrew Chi-Chih Yao, “How to Generate and Exchange Secrets (Extended Abstract)”, Proc. of FOCS 1986, pp.162-167.
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、秘密計算方法を用いた演算は、通常の演算よりも効率が悪く、複雑な演算になると実用的ではない処理時間になることがある。そこで、本発明は、計算効率と通信効率が従来方法よりも優れた秘密計算方法を提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の秘密計算システムは、3つの計算装置から構成され、数値Aの第1断片a1,第2断片a2,第3断片a3と、数値Bの第1断片b1,第2断片b2,第3断片b3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
b1=b22+b23
b2=(b21,b22)
b3=(b21,b23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ、第1要素b21,第2要素b22,第3要素b23はB=b21+b22+b23を満たす任意の数値の組合せ
の関係を有し、計算装置Xとして機能する計算装置が第1断片を記録し、計算装置Yとして機能する計算装置が第2断片を記録し、計算装置Zとして機能する計算装置が第3断片を記録する。
【0007】
本発明の秘密計算システムの秘密加算手段は、計算装置Xが、A+Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=a1+b1
のように求める第1加算部を有し、計算装置Yが、A+Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(a21+b21,a22+b22)
のように求める第2加算部を有し、計算装置Zが、A+Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(a21+b21,a23+b23)
のように求める第3加算部を有す。
【0008】
本発明の秘密計算システムの秘密減算手段は、計算装置Xが、A−Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=a1−b1
のように求める第1減算部を有し、計算装置Yが、A−Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(a21−b21,a22−b22)
のように求める第2減算部を有し、計算装置Zが、A−Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(a21−b21,a23−b23)
のように求める第3減算部を有す。
【0009】
本発明の秘密計算システムの秘密定数倍手段は、計算装置Xが、Aを数値B倍した結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=Ba1
のように求める第1定数倍計算部を有し、計算装置Yが、Aを数値B倍した結果である数値Cの第2断片c2を、
c2=(c21,c22)=(Ba21,Ba22)
のように求める第2定数倍計算部を有し、計算装置Zが、Aを数値B倍した結果である数値Cの第3断片c3を、
c3=(c21,c23)=(Ba21,Ba23)
のように求める第3定数倍計算部を有す。
【0010】
本発明の秘密計算システムの秘密乗算手段は、計算装置Xが、乗算乱数生成部と第1乗算部と第1乗算送信部を有し、計算装置Yが、第2乗算乱数受信部と第2乗算中間値計算部と第2乗算送信部と第2乗算中間値受信部と第2乗算部を有し、計算装置Zが、第3乗算乱数受信部と第3乗算中間値計算部と第3乗算送信部と第3乗算中間値受信部と第3乗算部を有す。乗算乱数生成部は、乱数r1,r2,r3,r4,r5を生成する。第1乗算部は、A×Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1、第2要素c22、第3要素c23を
c1=a1b1−r3−r4
c22=r5
c23=c1−c22
のように求める。第1乗算送信部は、計算装置Yに(r1,r2,r3,c22)を、計算装置Zに(a1−r1,b1−r2,r4,c23)を送信する。第2乗算乱数受信部は、計算装置Xから(r1,r2,r3,c22)を受信する。第2乗算中間値計算部は、数値yを
y=a21b21+a21r2+r1b21+r3
のように求める。第2乗算送信部は、計算装置Zに数値yを送信する。第2乗算中間値受信部は、計算装置Zから数値zを受信する。第2乗算部は、A×Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(y+z,c22)
のように求める。第3乗算乱数受信部は、計算装置Xから(a1−r1,b1−r2,r4,c23)を受信する。第3乗算中間値計算部は、数値zを
z=a21(b1−r2)+(a1−r1)b21+r4
のように求める。第3乗算送信部は、計算装置Yに数値zを送信する。第3乗算中間値受信部は、計算装置Yから数値yを受信する。第3乗算部は、A×Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(y+z,c23)
のように求める。
【0011】
本発明の秘密計算システムの秘密否定手段では、計算装置Xが、1−Aの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=−a1
のように求める第1否定部を有し、計算装置Yが、1−Aの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(1−a21,−a22)
のように求める第2否定部を有し、計算装置Zが、1−Aの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(1−a21,−a23)
のように求める第3否定部を有す。
【0012】
本発明の秘密計算システムの秘匿処理手段は、自己が保持する数値Sから
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23と
s1=s22+s23
s2=(s21,s22)
s3=(s21,s23)
の関係を有する第1断片s1,第2断片s2,第3断片s3を求める断片生成部と、計算装置Xとして機能する計算装置が第1断片s1を、計算装置Yとして機能する計算装置が第2断片s2を、計算装置Zとして機能する計算装置が第3断片s3を記録した状態にする断片分配部とを備える。
【0013】
本発明の秘密計算システムの復元手段は、計算装置Xが、第1断片送信部と第1断片受信部と第1復元部を有し、計算装置Yが、第2断片送信部と第2断片受信部と第2復元部
を有し、計算装置Zが、第3断片送信部と第3断片受信部と第3復元部を有す。第1断片送信部は、計算装置Yまたは計算装置Zに第1断片を送信する。第1断片受信部は、計算装置Yまたは計算装置Zから第1要素を受信する。第1復元部は、第1断片受信部が受信した第1要素と当該第1要素に対応する第1断片とを加算することで数値を復元する。第2断片送信部は、計算装置Xに第1要素を送信する、または計算装置Zに第2要素を送信する。第2断片受信部は、計算装置Xから第1断片を受信する、または計算装置Zから第3要素を受信する。第2復元部は、第2断片受信部が受信した第1断片と当該第1断片に対応する第1要素とを加算することで数値を復元する、または第2断片受信部が受信した第3要素と当該第3要素に対応する第1要素と第2要素とを加算することで数値を復元する。第3断片送信部は、計算装置Xに第1要素を送信する、または計算装置Yに第3要素を送信する。第3断片受信部は、計算装置Xから第1断片を受信する、または計算装置Yから第2要素を受信する。第3復元部は、第3断片受信部が受信した第1断片と当該第1断片に対応する第1要素とを加算することで数値を復元する、または第3断片受信部が受信した第2要素と当該第2要素に対応する第1要素と第3要素とを加算することで数値を復元する。
【発明の効果】
【0014】
本発明の秘密計算システムでは、断片を分散して記録した状態からの加減算や定数倍演算は、非特許文献1と同様に、各計算装置が単独で計算できる。乗算や論理回路演算については、非特許文献2と同様に各計算装置の協調計算が必要となる。更に本発明の秘密計算システムは、2進数変換や整数変換についても他の計算の単純な拡張として実現できる。これにより、算術演算および論理回路演算の組合せ計算が可能となる。
【図面の簡単な説明】
【0015】
【図1】実施例1の秘密計算システムの機能構成例を示す図。
【図2】実施例1の秘密加算過程の処理フローを示す図。
【図3】実施例1の秘密減算過程の処理フローを示す図。
【図4】実施例1の秘密定数倍過程の処理フローを示す図。
【図5】実施例1の秘密乗算過程の処理フローを示す図。
【図6】実施例1の秘密否定過程の処理フローを示す図。
【図7】実施例1の秘密加算手段の構成を示す図。
【図8】実施例1の秘密減算手段の構成を示す図。
【図9】実施例1の秘密定数倍手段の構成を示す図。
【図10】実施例1の秘密乗算手段の構成を示す図。
【図11】実施例1の秘密否定手段の構成を示す図。
【図12】実施例1の秘匿処理手段の構成例を示す図。
【図13】実施例1の秘匿処理のフローを示す図。
【図14】図1の秘密計算システムに秘匿手段を付加した秘密計算システムの機能構成例を示す図。
【図15】図14に示した秘密計算システムを用いた秘密2進変換過程のフローの第1の例を示す図。
【図16】図14に示した秘密計算システムを用いた秘密2進変換過程のフローの第2の例を示す図。
【図17】実施例1の復元手段を計算装置に配置した構成例を示す図。
【図18】実施例1の復元手段の処理フローを示す図。
【図19】図1と図12と図17に示した計算装置100X,100Y,100Zのいずれの計算装置としても機能できる計算装置1001(1002,1003)の機能構成例を示す図。
【図20】入力と出力の不正を検出するための計算装置の機能構成例を示す図。
【図21】実施例1の入力の不正を検出する処理フローを示す図。
【図22】第1要素の不正を検出する処理フローを示す図。
【図23】第1断片の不正を検出する処理フローを示す図。
【図24】第2要素の不正を検出する処理フローを示す図。
【図25】第3要素の不正を検出する処理フローを示す図。
【図26】実施例1の出力の不正を検出する処理フローを示す図。
【図27】実施例2の秘密計算システムの機能構成例を示す図。
【図28】実施例2の秘密計算システムの処理フロー例を示す図。
【図29】実施例3の秘密計算システムの機能構成例を示す図。
【図30】実施例3の秘密計算システムの処理フロー例を示す図。
【発明を実施するための形態】
【0016】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【実施例1】
【0017】
図1に実施例1の秘密計算システムの機能構成例を示す。図2は秘密加算過程の処理フローを、図3は秘密減算過程の処理フローを、図4は秘密定数倍過程の処理フローを、図5は秘密乗算過程の処理フローを、図6は秘密否定過程の処理フローを示す図である。また、図1に示した機能構成の中で、図2〜図6に示した各処理フローを実行するために必要な構成のみを表示した図を、図7〜11に示す。図7は秘密加算手段の構成を、図8は秘密減算手段の構成を、図9は秘密定数倍手段の構成を、図10は秘密乗算手段の構成を、図11は秘密否定手段の構成を示す図である。
【0018】
<基本的な算術演算のためのシステム構成>
実施例1の秘密計算システムは、ネットワーク1000で接続された3つの計算装置100X、100Y、100Zで構成される。計算装置Xとして機能する計算装置100Xは、第1加算部1101、第1減算部1201、第1定数倍計算部1301、乗算乱数生成部1411、第1乗算部1421、第1乗算送信部1431、第1否定部1501、第1記録部1901を備える。計算装置Yとして機能する計算装置100Yは、第2加算部1102、第2減算部1202、第2定数倍計算部1302、第2乗算乱数受信部1442、第2乗算中間値計算部1452、第2乗算送信部1462、第2乗算中間値受信部1472、第2乗算部1482、第2否定部1502、第2記録部1902を備える。計算装置Zとして機能する計算装置100Zは、第3加算部1103、第3減算部1203、第3定数倍計算部1303、第3乗算乱数受信部1443、第3乗算中間値計算部1453、第3乗算送信部1463、第3乗算中間値受信部1473、第3乗算部1483、第3否定部1503、第3記録部1903を備える。なお、実際の秘密計算システムでは、そのシステムで実行する計算に対応した構成を、これらの中から選んで備えればよい。例えば、秘密加算のみを行うのであれば、計算装置100Xは、第1加算部1101と第1記録部1901を備え、計算装置100Yは、第2加算部1102と第2記録部1902を備え、計算装置100Zは、第3加算部1103と第3記録部1903を備えればよい。
【0019】
各演算の入力である数値Aと数値Bは、3つの断片に分けられ、3つの計算装置に分配された状態となっている。具体的には、数値Aの第1断片a1,第2断片a2,第3断片a3と、数値Bの第1断片b1,第2断片b2,第3断片b3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
b1=b22+b23
b2=(b21,b22)
b3=(b21,b23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ、第1要素b21,第2要素b22,第3要素b23はB=b21+b22+b23を満たす任意の数値の組合せ
の関係を持つ。そして、計算装置100Xの第1記録部1901が第1断片を記録し、計算装置100Yの第2記録部1902が第2断片を記録し、計算装置100Zの第3記録部1903が第3断片を記録する。
【0020】
<秘密加算手段(図2,7参照)>
実施例1の秘密計算システムの秘密加算手段10は、計算装置100Xが第1加算部1101を有し、計算装置100Yが第2加算部1102を有し、計算装置100Zが第3加算部1103を有す。そして、秘密加算過程S10は以下の処理で構成されている。第1加算部1101が、A+Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=a1+b1
のように求める(S1101)。第2加算部1102が、A+Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(a21+b21,a22+b22)
のように求める(S1102)。第3加算部1103が、A+Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(a21+b21,a23+b23)
のように求める(S1103)。
【0021】
このような処理を行えば、加算の結果Cの第1断片c1を第1記録部1901が記録し、第2断片c2を第2記録部1902が記録し、第3断片c3を第3記録部1903が記録した状態となる。また、互いのデータの授受がないため、いずれの計算装置も入力の数値A,Bも計算結果である数値Cも、単独では知ることができない。
【0022】
<秘密減算手段(図3,8参照)>
実施例1の秘密計算システムの秘密減算手段20は、計算装置100Xが第1減算部1201を有し、計算装置100Yが第2減算部1202を有し、計算装置100Zが第3減算部1203を有す。そして、秘密減算過程S20は以下の処理で構成されている。第1減算部1201が、A−Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=a1−b1
のように求める(S1201)。第2減算部1202が、A−Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(a21−b21,a22−b22)
のように求める(S1202)。第3減算部1203が、A−Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(a21−b21,a23−b23)
のように求める(S1203)。
【0023】
このような処理を行えば、減算の結果Cの第1断片c1を第1記録部1901が記録し、第2断片c2を第2記録部1902が記録し、第3断片c3を第3記録部1903が記録した状態となる。また、互いのデータの授受がないため、いずれの計算装置も入力の数値A,Bも計算結果である数値Cも、単独では知ることができない。
【0024】
<秘密定数倍手段(図4,9参照)>
実施例1の秘密計算システムの秘密定数倍手段30は、計算装置100Xが第1定数倍計算部1301を有し、計算装置100Yが第2定数倍計算部1302を有し、計算装置100Zが第3定数倍計算部1303を有す。そして、秘密定数倍過程S30は以下の処理で構成されている。第1定数倍計算部1301が、Aを数値B倍した結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=Ba1
のように求める(S1301)。第2定数倍計算部1302が、Aを数値B倍した結果である数値Cの第2断片c2を、
c2=(c21,c22)=(Ba21,Ba22)
のように求める(S1302)。第3定数倍計算部1303が、Aを数値B倍した結果である数値Cの第3断片c3を、
c3=(c21,c23)=(Ba21,Ba23)
のように求める(S1303)。
【0025】
このような処理を行えば、定数倍計算の結果Cの第1断片c1を第1記録部1901が記録し、第2断片c2を第2記録部1902が記録し、第3断片c3を第3記録部1903が記録した状態となる。また、互いのデータの授受がないため、いずれの計算装置も入力の数値Aも計算結果である数値Cも、単独では知ることができない。
【0026】
<秘密乗算手段(図5,10参照)>
実施例1の秘密計算システムの秘密乗算手段40は、計算装置100Xが、乗算乱数生成部1411、第1乗算部1421、第1乗算送信部1431を有し、計算装置100Yが、第2乗算乱数受信部1442、第2乗算中間値計算部1452、第2乗算送信部1462、第2乗算中間値受信部1472、第2乗算部1482を有し、計算装置100Zが、第3乗算乱数受信部1443、第3乗算中間値計算部1453、第3乗算送信部1463、第3乗算中間値受信部1473、第3乗算部1483を有す。そして、秘密乗算過程S40は以下の処理で構成されている。
【0027】
乗算乱数生成部1411は、乱数r1,r2,r3,r4,r5を生成する(S1411)。第1乗算部1421は、A×Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1、第2要素c22、第3要素c23を
c1=a1b1−r3−r4
c22=r5
c23=c1−c22
のように求める(S1421)。第1乗算送信部1431は、計算装置100Yに(r1,r2,r3,c22)を、計算装置100Zに(a1−r1,b1−r2,r4,c23)を送信する(S1431)。
【0028】
第2乗算乱数受信部1442は、計算装置100Xから(r1,r2,r3,c22)を受信する(S1442)。第3乗算乱数受信部1443は、計算装置100Xから(a1−r1,b1−r2,r4,c23)を受信する(S1443)。第2乗算中間値計算部1452は、数値yを
y=a21b21+a21r2+r1b21+r3
のように求める(S1452)。第3乗算中間値計算部1453は、数値zを
z=a21(b1−r2)+(a1−r1)b21+r4
のように求める(S1453)。第2乗算送信部1462は、計算装置100Zに数値yを送信する(S1462)。第3乗算送信部1463は、計算装置100Yに数値zを送信する(S1463)。第2乗算中間値受信部1472は、計算装置100Zから数値zを受信する(S1472)。第3乗算中間値受信部1473は、計算装置100Yから数値yを受信する(S1473)。第2乗算部1482は、A×Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(y+z,c22)
のように求める(S1482)。第3乗算部1483は、A×Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(y+z,c23)
のように求める(S1483)。
【0029】
このような処理を行えば、乗算の結果Cの第1断片c1を第1記録部1901が記録し、第2断片c2を第2記録部1902が記録し、第3断片c3を第3記録部1903が記録した状態となる。また、計算装置100Xは、他の計算装置からデータを受け取らないので、入力の数値A,Bも計算結果である数値Cも、単独では知ることができない。計算装置100Yは、r1,r2,r3,c22,zを受信するが、これらの数値は数値A,Bとは独立の乱数とみなせるため、数値A,B,Cを単独で復元することはできない。計算装置100Zは、a1−r1,b1−r2,r4,c23,yを受信するが、これらの数値は数値A,Bとは独立の乱数とみなせるため、数値A,B,Cを単独で復元することはできない。
【0030】
<秘密否定手段(図6,11参照)>
これまでの説明は、算術演算についてであったが、論理演算も可能である。まず、否定を行う手段について説明する。実施例1の秘密計算システムの秘密否定手段50は、計算装置100Xが第1否定部1501を有し、計算装置100Yが第2否定部1502を有し、計算装置100Zが第3否定部1503を有す。そして、秘密否定過程S50は以下の処理で構成されている。第1否定部1501が、1−Aの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=−a1
のように求める(S1501)。第2否定部1502が、1−Aの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(1−a21,−a22)
のように求める(S1502)。第3否定部1503が、1−Aの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(1−a21,−a23)
のように求める(S1503)。
【0031】
このような処理を行えば、否定の結果Cの第1断片c1を第1記録部1901が記録し、第2断片c2を第2記録部1902が記録し、第3断片c3を第3記録部1903が記録した状態となる。また、互いのデータの授受がないため、いずれの計算装置も数値Aも計算結果である数値Cも、単独では知ることができない。
【0032】
<秘密論理積手段>
次に、論理積を行う方法について説明する。AとBとの論理積(C=A∧B)は、乗算と同じなので、秘密乗算過程S40を実行すればよい。
【0033】
<秘密論理和手段>
AとBの論理和(C=A∨B)は、
C=A∨B=A+B−AB
の演算を行えばよい。したがって、例えば、以下の処理を行えばよい。
(1)秘密加算過程S10によってD1=A+Bを求める。
(2)秘密乗算過程S40によってD2=ABを求める。
(3)秘密減算過程S20によってC=D1−D2を求める。
【0034】
このような処理を行えば、論理和の結果Cの第1断片c1を計算装置100Xの第1記録部1901が記録し、第2断片c2を計算装置100Yの第2記録部1902が記録し、第3断片c3を計算装置100Zの第3記録部1903が記録した状態となる。また、秘密加算過程S10、秘密乗算過程S40、秘密減算過程S20は、上述のようにデータを秘匿した状態を維持しながら計算結果の断片を求めることができる。したがって、いずれの計算装置も、元の数値A,Bも計算結果である数値Cも、単独では知ることができない。
【0035】
<秘密排他的論理和手段>
AとBの排他的論理和は、
【0036】
【数1】
【0037】
の演算を行えばよい。したがって、例えば、以下の処理を行えばよい。
(1)秘密加算過程S10によってD1=A+Bを求める。
(2)秘密乗算過程S40によってD2=ABを求める。
(3)秘密定数倍過程S30によって、D3=2D2
(4)秘密減算過程S20によってC=D1−D3を求める。
【0038】
このような処理を行えば、排他的論理和の結果Cの第1断片c1を計算装置100Xの第1記録部1901が記録し、第2断片c2を計算装置100Yの第2記録部1902が記録し、第3断片c3を計算装置100Zの第3記録部1903が記録した状態となる。また、秘密加算過程S10、秘密乗算過程S40、秘密定数倍過程S30、秘密減算過程S20は、上述のようにデータを秘匿した状態を維持しながら計算結果の断片を求めることができる。したがって、いずれの計算装置も、元の数値A,Bも計算結果である数値Cも、単独では知ることができない。
【0039】
<秘匿処理手段>
次に、いずれかの計算装置が保有している数値の3つの断片を生成し、断片を3つの計算装置で共有する処理について説明する。図12は実施例1の秘匿処理手段の構成例を示す図、図13は秘匿処理のフローを示す図である。図13(A)は計算装置100Xとして機能する計算装置が保有する数値を秘匿処理する過程(秘匿処理X過程)を示す図であり、図13(B)は計算装置100Yとして機能する計算装置が保有する数値を秘匿処理する過程(秘匿処理Y過程)を示す図であり、図13(C)は計算装置100Zとして機能する計算装置が保有する数値を秘匿処理する過程(秘匿処理Z過程)を示す図である。
【0040】
計算装置100Xとして機能する計算装置が保有する数値を秘匿処理するために、計算装置100Xは、断片生成部1611と断片分配部1621を備える。計算装置100Yとして機能する計算装置が保有する数値を秘匿処理するために、計算装置100Yは、断片生成部1612と断片分配部1622を備える。計算装置100Zとして機能する計算装置が保有する数値を秘匿処理するために、計算装置100Zは、断片生成部1613と断片分配部1623を備える。
【0041】
数値Sをいずれかの計算装置が保有しているとする。断片生成部1611、1612、1613は、自己が保持する数値Sから
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23と
s1=s22+s23
s2=(s21,s22)
s3=(s21,s23)
の関係を有する第1断片s1,第2断片s2,第3断片s3を求める(S1611、S1612、S1613)。断片分配部1621、1622、1623は、計算装置Xとして機能する計算装置100Xが第1断片s1を、計算装置Yとして機能する計算装置100Yが第2断片s2を、計算装置Zとして機能する計算装置100Zが第3断片s3を記録した状態にする(S1621、S1622、S1623)。なお、秘匿処理手段は、秘匿処理したい数値を保有する計算装置に備えればよく、秘匿処理したい数値を保有しない計算装置には具備しなくてもよい。
【0042】
このような処理を行えば、演算の対象となる数値の第1断片s1を第1記録部1901が記録し、第2断片s2を第2記録部1902が記録し、第3断片s3を第3記録部1903が記録した状態となる。
【0043】
<秘密2進変換手段>
第1の秘密2進変換手段
図14は、図1の秘密計算システムに秘匿手段を付加した秘密計算システムの機能構成例である。図15は、図14に示した秘密計算システムを用いた秘密2進変換過程のフローの第1の例を示す図である。なお、図15のフローでは、計算装置100Xが保有する数値(第1断片a1)と計算装置100Yが保有する数値(第1要素a21)を秘匿処理することで、2進表現された数値Aの各ビットA[1],…,A[N]を秘匿処理する例を示している。この例の場合、断片生成部1613と断片分配部1623は不要である。なお、数値Aと断片a1と第1要素a21は高々Nビットであるとし、A[n]は数値Aの下位n番目のビットを、a1[n]は第1断片a1の下位n番目のビットを、a21[n]は第1要素a21の下位n番目のビットをあらわす。
【0044】
次に、数値Aを2進表現した時の各ビットA[1],…,A[N]の断片を3つの計算装置で分散して記録するフローを説明する。
(1−1)計算装置100Xの秘匿処理X手段601によって、第1断片a1[1],…,a1[N]を秘匿処理する(S311)。
(1−2)計算装置100Yの秘匿処理Y手段602によって、第1要素a21[1],…,a21[N]を秘匿処理する(S312)。
(2−1)秘密計算システムは、c1=0、n=1のように初期設定を行う(S321)。具体的には、いずれかの計算装置100でS321を行えばよい。
(2−2)秘密加算過程S10、秘密乗算過程S40、秘密定数倍過程S30、秘密減算過程S20によって、
dn=a1[n]+a21[n]−2a1[n]a21[n]
を行う(S330)。これは、第1断片a1の下位n番目a1[n]と第1要素a21の下位n番目a21[n]の排他的論理和に相当する計算である。排他的論理和の処理の詳細は、上述の秘密排他的論理和手段に示されている。
(2−3)秘密加算過程S10、秘密乗算過程S40、秘密定数倍過程S30、秘密減算過程S20によって、
A[n]=dn+cn−2dncn
を行う(S340)。これは、dnとcnの排他的論理和に相当する計算である。ステップS330とS340の処理によって、
【0045】
【数2】
【0046】
の計算結果の断片が3つの計算装置で分散されて記録された状態となる。
(2−4)次に、ステップS321を行った計算装置100が、n=Nかを確認する(S322)。ステップS322がYesの場合には処理を終了し、Noの場合には次の処理に進む。
(2−5)ステップS322がNoの場合には、秘密加算過程S10、秘密乗算過程S40、秘密減算過程S20によって、
cn+1=a1[n]a21[n]+dncn−a1[n]a21[n]dncn
を行う(S350)。これは、a1[n]a21[n]とdncnとの論理和に相当する計算である。
(2−6)ステップS321を行った計算装置100が、nにn+1を代入し(S323)、ステップS330に戻る。
【0047】
このような処理を行えば、数値Aの下位n番目のビットA[n]の第1断片a1[n]を計算装置100Xの第1記録部1901が記録し、第2断片a2[n]を計算装置100Yの第2記録部1902が記録し、第3断片a3[n]を計算装置100Zの第3記録部1903が記録した状態となる。また、秘匿処理X過程S601と秘匿処理Y過程S602は、第1断片a1[1],…,a1[N]と第1要素a21[1],…,a1[N]を秘匿処理している。この処理では、いずれの計算装置も、数値Aを単独では知ることができない。秘密加算過程S10、秘密乗算過程S40、秘密定数倍過程S30、秘密減算過程S20は、上述のようにデータを秘匿した状態を維持しながら計算結果の断片を求めることができる。したがって、いずれの計算装置も、元の数値Aも、数値Aを2進表現した各ビットA[1],…,A[N]も、単独では知ることができない。
【0048】
第2の秘密2進変換手段
図16は、図14に示した秘密計算システムを用いた秘密2進変換過程のフローの第2の例を示す図である。なお、図16のフローでも、計算装置100Xが保有する数値(第1断片a1)と計算装置100Yが保有する数値(第1要素a21)を秘匿処理することで、2進表現された数値Aの各ビットA[1],…,A[N]を秘匿処理する例を示している。この例の場合、断片生成部1613と断片分配部1623は不要である。なお、数値Aと断片a1と第1要素a21は高々Nビットであるとし、A[n]は数値Aの下位n番目のビットを、a1[n]は第1断片a1の下位n番目のビットを、a21[n]は第1要素a21の下位n番目のビットをあらわす。
【0049】
次に、数値Aを2進表現した時の各ビットA[1],…,A[N]の断片を3つの計算装置で分散して記録するフローを説明する。
(1−1)計算装置100Xの秘匿処理X手段601によって、第1断片a1[1],…,a1[N]を秘匿処理する(S311)。
(1−2)計算装置100Yの秘匿処理Y手段602によって、第1要素a21[1],…,a21[N]を秘匿処理する(S312)。
(2−1)秘密計算システムは、秘密加算過程S10、秘密乗算過程S40、秘密定数倍過程S30、秘密減算過程S20によって、
【0050】
【数3】
【0051】
を行う(S324)。この処理によって、各計算装置100は、A[1]の断片を分散して記録した状態となる。
(3−1)秘密計算システムは、n=2のように初期設定を行う(S325)。具体的には、いずれかの計算装置100でS325を行えばよい。
(3−2)秘密計算システムは、秘密定数倍過程S30、秘密加算過程S10、秘密減算過程S20によって、
【0052】
【数4】
【0053】
を行う(S331)。この処理によって、各計算装置100は、B(n)の断片b1(n),b2(n),b3(n)を分散して記録した状態となる。
(3−3)計算装置100Xの秘匿処理X手段601によって、B(n)の第1断片b1(n)を秘匿処理する。また、計算装置100Yの秘匿処理Y手段602によって、B(n)の第1要素b21(n)を秘匿処理する(S332)。
(3−4)秘密計算システムは、秘密加算過程S10、秘密乗算過程S40、秘密定数倍過程S30、秘密減算過程S20によって、
【0054】
【数5】
【0055】
を行い、D(n)の断片d1(n),d2(n),d3(n)を分散して記録した状態にする(S333)。
(4−1)各計算装置100は、それぞれc1(n)=0、i=1のように初期設定を行う(S341)。
(4−2)計算装置Xとして機能する計算装置100Xは、
【0056】
【数6】
【0057】
を計算する。計算装置Yとして機能する計算装置100Yと、計算装置Zとして機能する計算装置100Zは、
【0058】
【数7】
【0059】
を計算する(S342)。
(4−3)各計算装置100は、それぞれ
ci+1(n)=ci(n)b1(n)[i]∨ci(n)b21(n)[i]∨b1(n)[i]b21(n)[i]
を計算する(S343)。
(4−4)各計算装置100は、それぞれi=n−1かを確認する(S344)。各計算装置100は、ステップS344がNoの場合には、iにi+1を代入し(S345)、ステップS342に戻る。ステップS344がYesの場合には、ステップS351に進む。
(5−1)秘密計算システムは、cn(n)=0ならば各計算装置が分散して記録しているD(n)の断片を、各計算装置が分散して記録するA[n]の断片とする。また、cn(n)=1ならば各計算装置が断片を分散して記録しているD(n)の否定を秘密否定過程S50で計算し、D(n)の否定の断片を、自己が記録するA[n]の断片とする(S351)。
(5−2)秘密計算システムは、n=Nかを確認する(S326)。秘密計算システムは、ステップS326がNoの場合には、nにn+1を代入し(S327)、ステップS331に戻る。ステップS326がYesの場合には、処理を終了する。
【0060】
なお、ステップS343で計算されるci+1(n)は、B(n)=b1(n)+b21(n)の加算回路における下位i番目のビットの桁上げ(carry)である。B(n)は、その取り方から、
【0061】
【数8】
【0062】
となり、B(n)の最下位ビットから下位n−1ビットまでは0となる。したがって、1≦i≦n−1では
【0063】
【数9】
【0064】
となるので、ステップS342の式が成り立つことが分かる。また、ステップS351の計算結果は明らかにB(n)[n]の断片となっているため、A[n]=B(n)[n]なので、A[n]の断片でもある。
【0065】
このような処理を行えば、数値Aの下位n番目のビットA[n]の第1断片a1[n]を計算装置100Xの第1記録部1901が記録し、第2断片a2[n]を計算装置100Yの第2記録部1902が記録し、第3断片a3[n]を計算装置100Zの第3記録部1903が記録した状態となる。また、秘匿処理X過程S601と秘匿処理Y過程S602は、第1断片a1[1],…,a1[N]と第1要素a21[1],…,a1[N]を秘匿処理している。この処理では、いずれの計算装置も、数値Aを単独では知ることができない。秘密加算過程S10、秘密乗算過程S40、秘密定数倍過程S30、秘密減算過程S20は、上述のようにデータを秘匿した状態を維持しながら計算結果の断片を求めることができる。したがって、いずれの計算装置も、元の数値Aも、数値Aを2進表現した各ビットA[1],…,A[N]も、単独では知ることができない。
【0066】
さらに、第1の秘密2進変換手段では、秘密乗算過程S40をa1[n]a21[n]、dncn、a1[n]a21[n]dncnの3回実行し、これをn=1からNまでN回繰り返す必要がある。ただし、c1=0であり、n=Nのときはa1[n]a21[n]dncnの計算は不要なため、合計で3N−3回の秘密乗算過程S40を実行する。一方、第2の秘密2進変換手段では、a1[n]a21[n]および、n=2からNまでのb1(n)[n]b21(n)[n]の合計N回の秘密乗算過程S40の実行で済む。したがって、計算効率が高くなると共に、計算装置間の通信量も低減できる。
【0067】
<秘密整数変換手段>
ここでは、2進表現された数値Aの各ビットA[1],…,A[N]の断片が3つの計算装置で分散して記録された状態から、整数表現の数値Aの断片A1,A2,A3が3つの計算装置に分散して記録された状態にするための手段について説明する。整数表現された数値Aは、2進表現された数値Aの各ビットA[1],…,A[N]を用いて
【0068】
【数10】
【0069】
のように求めることができる。したがって、秘密定数倍過程S30の処理と秘密加算過程S10の処理を繰り返すことで、数値Aの第1断片A[n]を計算装置100Xの第1記録部1901が記録し、第2断片A2を計算装置100Yの第2記録部1902が記録し、第3断片A3を計算装置100Zの第3記録部1903が記録した状態となる。
【0070】
また、秘密定数倍過程S30、秘密加算過程S10は、上述のようにデータを秘匿した状態を維持しながら計算結果の断片を求めることができる。したがって、いずれの計算装置も、数値Aを2進表現した各ビットA[1],…,A[N]も、整数表現ざれた数値Aも、単独では知ることができない。
【0071】
実施例1の秘密計算装置によれば、上述の秘密2進変換手段によって2進表現された数値に対して、上述の論理演算(秘密否定手段、秘密論理積手段、秘密論理和手段、秘密排他的論理和手段の処理)を行い、その結果を整数表現された数値に戻すことも可能である。しかも、これらの処理の途中の数値も、処理の結果の数値も、いずれの計算装置も単独では知ることができない。
【0072】
<復元手段>
分散して記録された状態の断片から数値を復元する手段について説明する。図17に実施例1の復元手段を計算装置に配置した構成例を示す。また、図18に実施例1の復元手段の処理フローを示す。図18(A)の実線は、計算装置Xとして機能する計算装置100Xが、計算装置Yとして機能する計算装置100Yに第1断片を送り、計算装置100Yが数値を復元する処理フロー(復元XY過程S7012)を示している。図18(A)の点線は、計算装置100Xが、計算装置Zとして機能する計算装置100Zに第1断片を送り、計算装置100Zが数値を復元する処理フロー(復元XZ過程S7013)を示している。図18(B)の実線は、計算装置100Yが計算装置100Xに第2断片を送り、計算装置100Xが数値を復元する処理フロー(復元YX過程S7021)を示している。図18(B)の点線は、計算装置100Yが計算装置100Zに第2断片を送り、計算装置100Zが数値を復元する処理フロー(復元YZ過程S7023)を示している。図18(C)の実線は、計算装置100Zが計算装置100Xに第3断片を送り、計算装置100Xが数値を復元する処理フロー(復元ZX過程S7031)を示している。図18(C)の点線は、計算装置100Zが計算装置100Yに第3断片を送り、計算装置100Yが数値を復元する処理フロー(復元ZY過程S7032)を示している。秘密計算システムが、上記の復元処理のすべてを実行できるようにするためには、計算装置100Xが、第1断片送信部1711、第1断片受信部1721、第1復元部1731を有し、計算装置100Yが、第2断片送信部1712、第2断片受信部1722、第2復元部1732を有し、計算装置100Zが、第3断片送信部1713、第3断片受信部1723、第3復元部1733を有する必要がある。なお、システムの設計上必要のない構成部は適宜省略してもよい。
【0073】
次に、数値Aの第1断片,第2断片,第3断片をa1,a2,a3とし、第1要素,第2要素,第3要素をa21,a22,a23として、復元の処理フローについて説明する。なお、これまでの説明で何度も説明しているが、実施例1の秘密計算システムでは、分散して記録された断片は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
A=a21+a22+a23
の関係を有していることに注意されたい。
【0074】
復元XY過程S7012(図18(A)実線)
第1断片送信部1711は、計算装置100Yに第1断片a1を送信する(S17112)。第2断片受信部1722は、計算装置100Xから第1断片a1を受信する(S17212)。第2復元部1732は、次式のように第2断片受信部1722が受信した第1断片a1と当該第1断片a1に対応する第1要素a21とを加算することで数値Aを復元する(S17213)。
a1+a21=a22+a23+a21=A
【0075】
復元XZ過程S7013(図18(A)点線)
第1断片送信部1711は、計算装置100Zに第1断片a1を送信する(S17112)。第3断片受信部1723は、計算装置100Xから第1断片a1を受信する(S17212)。第3復元部1733は、次式のように第3断片受信部1723が受信した第1断片a1と当該第1断片a1に対応する第1要素a21とを加算することで数値を復元する(S17312)。
a1+a21=a22+a23+a21=A
【0076】
復元YX過程S7021(図18(B)実線)
第2断片送信部1712は、計算装置100Xに第1要素a21を送信する(S17121)。第1断片受信部1721は、計算装置100Yから第1要素a21を受信する(S17221)。第1復元部1731は、次式のように第1断片受信部1721が受信した第1要素a21と当該第1要素a21に対応する第1断片a1とを加算することで数値を復元する(S17321)。
a21+a1=a21+a22+a23=A
【0077】
復元YZ過程S7023(図18(B)点線)
第2断片送信部1712は、計算装置100Zに第2要素a22を送信する(S17123)。第3断片受信部1723は、計算装置100Yから第2要素a21を受信する(S17223)。第3復元部1733は、次式のように第3断片受信部1723が受信した第2要素a22と当該第2要素a22に対応する第1要素a21と第3要素a23とを加算することで数値を復元する(S17323)。
a22+a21+a23=A
【0078】
復元ZX過程S7031(図18(C)実線)
第3断片送信部1713は、計算装置100Xに第1要素a21を送信する(S17131)。第1断片受信部1721は、計算装置100Zから第1要素a21を受信する(S17231)。第1復元部1731は、次式のように第1断片受信部1721が受信した第1要素a21と当該第1要素a21に対応する第1断片a1とを加算することで数値を復元する(S17331)。
a21+a1=a21+a22+a23=A
【0079】
復元ZY過程S7032(図18(C)点線)
第3断片送信部1713は、計算装置100Yに第3要素a23を送信する(S17132)。第2断片受信部1722は、計算装置100Zから第3要素a23を受信する(S17232)。第2復元部1732は、次式のように第2断片受信部1722が受信した第3要素a23と当該第3要素a23に対応する第1要素a21と第2要素a22とを加算することで数値Aを復元する(S17332)。
a23+a21+a22=A
【0080】
上述のように、実施例1の数値を分散して記録する方法では、第1要素a21,第2要素a22,第3要素a23の3つを加算できれば、元の数値Aを復元できる。そして、いずれか2つの断片の情報が分かれば、第1要素a21,第2要素a22,第3要素a23の和を求めることができる。したがって、上述の秘密加算手段、秘密減算手段、秘密定数倍手段、秘密乗算手段、もしくは秘密否定手段の計算結果である数値Cの断片は、いずれか2つの断片が分かれば、数値Cを復元できることが分かる。
【0081】
<基本処理部>
図19に、図1と図12と図17に示した計算装置100X,100Y,100Zのいずれの計算装置としても機能できる計算装置1001(1002,1003)の機能構成例を示す。基本処理部1011(1012,1013)は、図1と図12と図17に示した構成部をすべで備えている。このように1つの計算装置が、計算装置X,計算装置Y,計算装置Zのいずれの計算装置としても機能できるようにしてもよい。この場合は、記録しているデータが第1断片から第3断片のいずれの断片かによって、その計算装置が、計算装置Xとして機能するか、計算装置Yとして機能するか、計算装置Zとして機能するかが決まる。もしくは、どの計算装置として機能させるかによって、秘匿処理などで渡す断片を決めればよい。このように、データごとに計算装置が発揮する機能が異なるようにすることで、より自由度の高い秘密計算システムを構築できる。
【0082】
<不正検出>
次に、1つの計算装置が、計算装置X,計算装置Y,計算装置Zのいずれの計算装置としても機能できるようにしたときの例として、入力された断片のデータが正しいかを確認する方法と、計算結果である断片のデータ(出力)が正しいかを確認する方法を示す。図20は、入力と出力の不正を検出するための計算装置の機能構成例を示す図である。
【0083】
計算装置2001は、基本処理部1011の他に、入力の不正を検出するために、第1乱数rxy共有部2411、第1Z送信部2421、第1乱数rxz共有部2311、第1Y送信部2321、第1受信部2231、第1断片確認部2241、第1確認乱数生成部2511、Y要素送信部2112、Y要素受信部2122、Y要素確認部2132、第2乱数rxy共有部2412、第2Z送信部2422、第2乱数ryz共有部2212、第2X送信部2222、第2受信部2332、第2断片確認部2342、第2確認乱数生成部2512、Z要素送信部2113、Z要素受信部2123、Z要素確認部2133、第3乱数rxz共有部2313、第3Y送信部2323、第3乱数ryz共有部2213、第3X送信部2223、第3受信部2433、第3断片確認部2443、第3確認乱数生成部2513、復元入力確認部254を備える。また、計算装置2001は、基本処理部1011の他に、出力の不正を検出するために、第1確認乱数生成部2511、第2確認乱数生成部2512、第3確認乱数生成部2513、復元出力確認部255を備える。したがって、入力の不正のみを検出すればよいのであれば、復元出力確認部255は不要であり、基本処理部1011中では秘匿手段と復元手段を具備していればよい。また、出力の不正のみを検出すればよいのであれば、第1確認乱数生成部2511、第2確認乱数生成部2512、第3確認乱数生成部2513、復元出力確認部255と、基本処理部1011中の秘匿手段と復元手段と計算に必要な手段のみを備えればよい。なお、各構成部の詳細な処理については後述する。
【0084】
このときの秘密計算システムは、図20に示された計算装置2001,2002,2003の3つの計算装置で構成される。そして、同一の入力(数値A)に対して3種類の断片を用意し、各計算装置が計算装置X,計算装置Y,計算装置Zのいずれの計算装置として機能するかを変更して断片を分散して記録する。また、元の数値は同じだが断片は異なる3つの入力から、各計算装置が計算装置X,計算装置Y,計算装置Zのいずれの計算装置として機能するかを変更して同一の計算を3回行い、計算結果である断片を分散して記録する。この説明では、j(1以上3以下の整数)を計算が何回目かを示す値とし、a1(j),a2(j),a3(j)を入力である数値Aに対するj番目の第1断片,第2断片,第3断片、a21(j)をj番目の第1要素、c1(j),c2(j),c3(j)を計算結果である数値Cに対するj番目の第1断片,第2断片,第3断片、c21(j),c22(j),c23(j)をj番目の第1要素,第2要素,第3要素、計算装置200X(j),計算装置200Y(j),計算装置200Z(j)をj番目の計算装置X,計算装置Y,計算装置Zとして機能する計算装置とする。なお、それぞれの回で数値の断片や計算装置の役割が異なるので、
(a1(1),a2(1),a3(1))、(a1(2),a2(2),a3(2))、(a1(3),a2(3),a3(3))は互いに異なり、
(c1(1),c2(1),c3(1))、(c1(2),c2(2),c3(2))、(c1(3),c2(3),c3(3))は互いに異なり、
(X(1),Y(1),Z(1))、(X(2),Y(2),Z(2))、(X(3),Y(3),Z(3))は互いに異なる。
【0085】
入力された断片のデータが正しいかを確認する方法
図21に入力の不正を検出する処理フローを示す。また、図22は第1要素の不正を検出する処理フローを、図23は第1断片の不正を検出する処理フローを、図24は第2要素の不正を検出する処理フローを、図25は第3要素の不正を検出する処理フローを示す図である。いずれかの計算装置2001が、j=1とする(S201)。そして、第1要素不正検出過程S21、第1断片不正検出過程S22、第2要素不正検出過程S23、第3要素不正検出過程S24を実行する。
【0086】
第1要素不正検出過程S21(図22参照)では、計算装置200Y(j)が保有する第1要素a21y(j)と計算装置200Z(j)が保有する第1要素a21z(j)とが等しいことを確認する。具体的には、計算装置200Y(j)のY要素送信部2112は、計算装置200Z(j)に自己が保有する第1要素a21y(j)を送信する(S2112)。計算装置200Z(j)のZ要素受信部2123は、計算装置200Y(j)から第1要素a21y(j)を受信する(S2123)。計算装置200Z(j)のZ要素確認部2133は、自己が保有する第1要素a21z(j)と計算装置200Y(j)から受信した第1要素a21y(j)とが等しいことを確認する(S2133)。計算装置200Z(j)のZ要素送信部2113は、計算装置200Y(j)に自己が保有する第1要素a21z(j)を送信する(S2113)。計算装置200Y(j)のY要素受信部2122は、計算装置200Z(j)から第1要素a21z(j)を受信する(S2122)。計算装置200Y(j)のY要素確認部2132は、自己が保有する第1要素a21y(j)と計算装置200Z(j)から受信した第1要素a21z(j)とが等しいことを確認する(S2132)。ステップS2123とS2132とで等しいと確認できた場合には、計算装置200Y(j)が保有する第1要素a21y(j)と計算装置200Z(j)が保有する第1要素a21z(j)とが等しいと確認できる。一方、ステップS2123とS2132のいずれかで等しくないと判断された場合には、入力に不正があったと判断される。
【0087】
第1断片不正検出過程S22(図23参照)では、第1断片a1(j)が第2要素a22(j)と第3要素a23(j)の和であることを確認する。具体的には、計算装置200Y(j)の第2乱数ryz共有部2212と計算装置200Z(j)の第3乱数ryz共有部2213との間で乱数ryzを共有する(2212,2213)。なお、乱数ryzはどちらの計算装置が生成してもよい。計算装置200Y(j)の第2X送信部2222は、計算装置200X(j)にuy(=a22(j)+ryz)を送信する(S2222)。計算装置200Z(j)の第3X送信部2223は、計算装置200X(j)にuz(=a23(j)−ryz)を送信する(S2223)。計算装置200X(j)の第1受信部2231は、計算装置200Y(j)からuyを、計算装置200Z(j)からuzを受信する(S2231)。計算装置200X(j)の第1断片確認部2241は、a1(j)=uy+uzであることを確認する(S2241)。ステップS2241で等しいと確認できた場合には、第1断片a1(j)が第2要素a22(j)と第3要素a23(j)の和であることが確認できる。一方、ステップS2241で等しくないと判断された場合には、入力に不正があったと判断される。
【0088】
第2要素不正検出過程S23(図24参照)では、第2要素a22(j)が第1断片a1(j)と第3要素a23(j)の差であることを確認する。具体的には、計算装置200X(j)の第1乱数rxz共有部2311と計算装置200Z(j)の第3乱数rxz共有部2313との間で、乱数rxzを共有する(S2311、S2313)。なお、乱数rxzはどちらの計算装置が生成してもよい。計算装置200X(j)の第1Y送信部2321は、計算装置200Y(j)にux(=a1(j)+rxz)を送信する(S2321)。計算装置200Z(j)の第3Y送信部2323は、計算装置200Y(j)にuz(=a23(j)+rxz)を送信する(S2323)。計算装置200Y(j)の第2受信部2332は、計算装置200X(j)からuxを、計算装置200Z(j)からuzを受信する(S2332)。計算装置200Y(j)の第2断片確認部2342は、a22(j)=ux−uzであることを確認する(S2342)。ステップS2342で等しいと確認できた場合には、第2要素a22(j)が第1断片a1(j)と第3要素a23(j)の差であることが確認できる。一方、ステップS2342で等しくないと判断された場合には、入力に不正があったと判断される。
【0089】
第3要素不正検出過程S24(図25参照)では、第3要素a23(j)が第1断片a1(j)と第2要素a22(j)の差であることを確認する。具体的には、計算装置200X(j)の第1乱数rxy共有部2411と計算装置200Y(j)の第2乱数rxy共有部2412との間で乱数rxyを共有する(S2411,S2412)。なお、乱数rxyはどちらの計算装置が生成してもよい。計算装置200X(j)の第1Z送信部2421は、計算装置200Z(j)にux(=a1(j)+rxy)を送信する(S2421)。計算装置200Y(j)の第2Z送信部2422は、計算装置200Z(j)にuy(=a22(j)+rxy)を送信する(S2422)。計算装置200Z(j)の第3受信部2433は、計算装置200X(j)からuxを、計算装置200Y(j)からuyを受信する(S2433)。計算装置200Z(j)の第3断片確認部2443は、a23(j)=ux−uyであることを確認する(S2443)。ステップS2443で等しいと確認できた場合には、第3要素a23(j)が第1断片a1(j)と第2要素a22(j)の差であることが確認できる。一方、ステップS2443で等しくないと判断された場合には、入力に不正があったと判断される。
【0090】
計算装置200X(j)の第1確認乱数生成部2511は、乱数rxを生成する(S2511)。計算装置200X(j)の秘匿処理手段601は、第1断片a1(j),乱数rxの断片を、3つの計算装置で分散して記録した状態にする(S2601)。
【0091】
計算装置200Y(j)の第2確認乱数生成部2512は、乱数ryを生成する(S2512)。計算装置200Y(j)の秘匿処理手段602は、第1要素a21(j),乱数ryの断片を、3つの計算装置で分散して記録した状態にする(S2602)。
【0092】
計算装置200Z(j)の第3確認乱数生成部2513は、乱数rzを生成する(S2513)。計算装置200Z(j)の秘匿処理手段603は、乱数rzの断片を、3つの計算装置で分散して記録した状態にする(S2603)。
【0093】
秘密加算手段10は、
a1(j)+a21(j)+r
ただし、r=rx+ry+rz
の計算結果の断片を、3つの計算装置で分散して記録した状態にする(S210)。いずれかの計算装置2001の復元手段70は、他の計算装置2002または計算装置2003から必要な情報を受け取り、
a1(j)+a21(j)+r
を復元して記録しておく(S270)。この処理は、jの値を変更しながら3回繰り替えされるが、計算装置X,Y,Zのどの計算装置として機能しているかに関わらず、同じ計算装置がおこなえばよい。なお、この復元を行う計算装置は、ステップS201を行った計算装置(jの値を管理している計算装置)とすればよい。そして、その計算装置が、計算装置X,Y,Zのどの計算装置として機能しているかによって、適宜復元手段を選択すればよい。ステップS201を行った計算装置(jの値を管理している計算装置)は、j=3かを確認し(S202)、Noの場合にはjにj+1を代入し(S203)ステップS21〜S24に戻る。ステップS202がYesの場合には、3つの復元結果a1(1)+a21(1)+r,a1(2)+a21(2)+r,a1(3)+a21(3)+rを取得できるいずれかの計算装置(つまり、S270を3回行った計算装置)が、復元入力確認部254で、3つの結果が等しいことを確認する(S254)。
【0094】
計算結果である断片のデータが正しいかを確認する方法
図26に出力の不正を検出する処理フローを示す。いずれかの計算装置2001が、j=1とする(S281)。次に、所定の計算を行う(S285)。所定の計算とは、この秘密計算システムを用いて行う計算と同じにすればよく、加算、乗算、論理演算などのいずれかでも、いくつかの組合せでもかまわない。
【0095】
計算装置200X(j)の第1確認乱数生成部2511は、乱数rxを生成する(S2511)。計算装置200X(j)の秘匿処理手段601は、第1断片c1(j),乱数rxの断片を、3つの計算装置で分散して記録した状態にする(S2651)。
【0096】
計算装置200Y(j)の第2確認乱数生成部2512は、乱数ryを生成する(S2512)。計算装置200Y(j)の秘匿処理手段602は、第1要素c21(j),乱数ryの断片を、3つの計算装置で分散して記録した状態にする(S2652)。
【0097】
計算装置200Z(j)の第3確認乱数生成部2513は、乱数rzを生成する(S2513)。計算装置200Z(j)の秘匿処理手段603は、乱数rzの断片を3つの計算装置で分散して記録した状態にする(S2653)。
【0098】
秘密加算手段は
c1(j)+c22(j)+r
ただし、r=rx+ry+rz
の計算結果の断片を、3つの計算装置で分散して記録した状態にする(S215)。計算装置200X(j)と計算装置200Y(j)の一方は、他方から必要な情報を受け取り、c1(j)+c22(j)+r=CXY(j)を復元して記録しておく(S271)。計算装置200Y(j)と計算装置200Z(j)の一方は、他方から必要な情報を受け取り、c1(j)+c22(j)+r=CYZ(j)を復元して記録しておく(S272)。計算装置200X(j)と計算装置200Z(j)の一方は、他方から必要な情報を受け取り、c1(j)+c22(j)+r=CXZ(j)を復元して記録しておく(S273)。ステップS281を行った計算装置(jの値を管理している計算装置)は、j=3かを確認し(S282)、Noの場合にはjにj+1を代入し(S283)ステップS285に戻る。ステップS282がYesの場合には、9つの復元結果CXY(1),CYZ(1),CXZ(1),CXY(2),CYZ(2),CXZ(2),CXY(3),CYZ(3),CXZ(3)を取得できるいずれかの計算装置(1つの計算装置では不可能なので、他の計算装置から復元結果を受信できる計算装置)が、復元結果CXY(1),CYZ(1),CXZ(1),CXY(2),CYZ(2),CXZ(2),CXY(3),CYZ(3),CXZ(3)がすべて等しいことを確認する(S255)。なお、すべての計算装置が復元結果を出力し、外部の計算装置で確認してもよい。
【0099】
出力の不正が確認できる理由
計算結果を改ざんする不正は、
A.入力の分散データを不正値とする、
B.乗算または2進変換処理の秘匿処理の手続きで他の計算装置に不正値を送信する、
C.復元処理で不正値を開示する
の何れかに帰着されることに着目する。なお、図21の処理において何れかの計算装置が手続きを偽った場合は、不正Aの検出ができなくなるが、その場合は不正BまたはCの問題に帰着される。
【0100】
次に、不正Bは1/2λ以下の確率を除き図26の処理で不正検出されることを示す。ただし、λは適当な整数である。不正Aは各計算装置が図21の処理を正しく行えば防ぐことができる。不正Cは図26の処理によって防ぐことができる。したがって以下では不正Bについて考える。2進変換処理の秘匿処理で他の計算装置に不正値を送信する場合は、各計算装置が図21の処理を正しく行えば図21の処理で検出され、そうでない場合は、次段以降の乗算または2進変換処理の秘匿処理で他の計算装置に不正値を送信することに帰着される。次段以降に乗算および2進変換処理の秘匿処理が無い場合は不正Cの問題に帰着される。
【0101】
次に、乗算の処理で他の計算装置に不正値を送信する場合を考える。各計算装置は乗算c=abにおいて計算装置Xの処理を行う際、計算装置Y,Zにそれぞれ(r1,r2,r3,c22),(a1−r1,b1−r2,r4,c23)を送信する。r1,r2,r3,c22は乱数だから、a1−r1,b1−r2,r4,c23をそれぞれa〜、b〜、c23〜に置き換えたとき、計算装置Zが得る乗算結果の分散データはc3〜=(c21〜,c23〜)=(y+a21b〜+a〜b21+r4,c23〜)となる。すなわち、(c21−c21〜,c23−c23〜)=(a21(b1−r2−b〜)+(a1−r1−a〜)b21,c23−c23〜)の差分が生じる。しかし計算装置Xはa21,b21,c23を知らないため、この差分をもう2回の乗算c=abの実行時の計算装置Zの分散データに付加することができず、図26の処理で不正検出されない確率は高々1/2λとなる。
【0102】
最後に、実施例1の基本処理部と不正検出について、情報理論的安全性に基づく既存方式との比較を行う。非特許文献1では算術演算および論理回路演算を独立に実行することができ、非特許文献2の2進変換処理によってそれらを組み合わせた計算が可能となる。算術演算および論理回路演算は既存方式も本発明の提案方式もともにO(λ)の計算量となる。乗算のときのみ、O(1)の通信回数とO(λ)の通信量を必要とするが、実施例1の方式は乗算の計算がより単純となる。また、非特許文献1では、不正検出のためにGeneralized Reed-Miller Code に基づくエラー訂正処理が行われている。しかし、4つ以上の計算装置が計算に関与する必要があり、本発明とは計算装置の構成が異なる。
【0103】
実施例1の秘密計算システムでは、断片を分散して記録した状態からの加減算や定数倍演算は、非特許文献1と同様に、各計算装置が単独で計算できる。乗算や論理回路演算については、非特許文献2と同様に各計算装置の協調計算が必要となる。更に本発明の秘密計算システムは、2進数変換や整数変換についても他の計算の単純な拡張として実現できる。これにより、算術演算および論理回路演算の組合せ計算が可能となる。また計算結果を復元する前に不正の有無を検証できるため、単独の計算装置が不正を働いたとしても入力値の秘匿性は保証される。
【0104】
以上のように、実施例1の秘密計算システムは、単純な計算により秘匿関数計算を実現しており、入力や各計算装置の処理の不正を効率良く検出できる特徴を持つ。また算術演算と論理回路演算の組み合わせにも適用できるため、算術演算とともに絶対値や大小比較といった論理回路演算が必要となるマイニングや統計処理に適している。
【実施例2】
【0105】
次に、論理回路Cの演算結果C(A)=Eを求める場合の秘密計算システムについて説明する。図27に、実施例2の秘密計算システムの機能構成例を示す。また、図28に、実施例2の秘密計算システムの処理フロー例を示す。実施例2の秘密計算システムも、3つの計算装置500X,500Y,500Zと、これらの計算装置をつなぐネットワーク100から構成される。この実施例では、Nを2以上の整数、nを1以上N以下の整数、a1[n]を第1断片a1を2進表現したときの下位n桁目の値とする。
【0106】
計算装置500Xは、乱数生成部511、第1演算送信部521、第1演算受信部531、第1演算復号部541、第1記録部591を有し、計算装置500Yは、第2置換乱数受信部512、要素生成部522、garbled circuit生成部532、第2演算送信部542、第2演算復号部562、第2記録部592を有し、計算装置500Zは、第3演算受信部513、演算実行部523、第3演算送信部533、第3演算復号部543、第3記録部593を有す。
【0107】
実施例2の秘密計算システムでも、入力である数値Aは3つの断片に分けられ、3つの計算装置に分配された状態となっている。具体的には、数値Aの第1断片a1,第2断片a2,第3断片a3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ
の関係を持つ。そして、計算装置500Xの第1記録部591が第1断片を記録し、計算装置500Yの第2記録部592が第2断片を記録し、計算装置500Zの第3記録部593が第3断片を記録する。
【0108】
計算装置500Xの乱数生成部511は、2N個の乱数(r0,1,r1,1),…,(r0,N,r1,N)を生成する(S511)。第1演算送信部521は、乱数(r0,1,r1,1),…,(r0,N,r1,N)を計算装置500Yに送信し、ra1[1],1,…,ra1[N],Nを計算装置500Zに送信する(S521)。計算装置500Yの第2置換乱数受信部512は、計算装置500Xから乱数(r0,1,r1,1),…,(r0,N,r1,N)を受信する(S512)。要素生成部522は、Nビットの乱数e21,e22を生成し、第1要素e21,第2要素e22とする(S522)。
【0109】
計算装置500Yのgarbled circuit生成部532は、第1断片a1が入力された場合に第1断片e1と第3要素e23を出力する論理回路C”の入出力を乱数に置き換えたgarbled circuit GC”(ただし、入力である第1断片a1は乱数(r0,1,r1,1),…,(r0,N,r1,N)に置き換えられる)と、garbled circuit GC”の出力である第1乱数断片e’1,第3乱数要素e’23それぞれを、第1断片e1,第3要素e23に変換する第1断片関数t1,第3要素関数t23を生成する(S532)。なお、garbled circuit GC”を生成する方法については、参考許文献1(Koji Chida and Katsumi Takahashi: Privacy Preserving Computations without Public Key Cryptographic Operation, Proc. of IWSEC 2008, pp.184-200.)の3.2 Protocol II、および 2 Previous WorkのYao’s Two Party Secure Function Evaluationに詳しく説明されている。第2演算送信部542は、第1断片関数t1を計算装置500Xに送信し、garbled circuit GC”と第3要素関数t23と第1要素e21を計算装置500Zに送信する(S542)。
【0110】
計算装置500Zの第3演算受信部513は、計算装置500Xからra1[1],1,…,ra1[N],Nを受信し、計算装置500Yからgarbled circuit GC”と第3要素関数t23と第1要素e21を受信する(S513)。演算実行部523は、ra1[1],1,…,ra1[N],Nとgarbled circuit GC”とを用いて、第1乱数断片e’1,第3乱数要素e’23を求める(S523)。第3演算送信部533は、第1乱数断片e’1を計算装置500Xに送信する(S533)。
【0111】
計算装置500Xの第1演算受信部531は、計算装置500Yから第1断片関数t1を受信し、計算装置500Zから第1乱数断片e’1を受信する(S531)。第1演算復号部541は、第1断片e1をe1=t1(e’1)のように求め、第1記録部591に記録する(S541)。計算装置500Yの第2演算復号部562は、第2断片e2をe2=(e21,e22)とし、第2記録部592に記録する(S562)。計算装置500Zの第3演算復号部543は、第3要素e23をe23=t23(e’23)のように求め、第3断片e3をe3=(e21,e23)とし、第3記録部593に記録する(S543)。
【0112】
実施例2の秘密計算システムはこのような構成なので、任意の論理回路Cの結果Eの第1断片e1を第1記録部5901が記録し、第2断片e2を第2記録部5902が記録し、第3断片e3を第3記録部5903が記録した状態となる。また、garbled circuitを用いているので、いずれの計算装置も入力の数値Aも結果である数値Cも、単独では知ることができない。つまり、実施例2によれば、容易に任意の論理回路Cについての秘密計算システムを構築できる。また、数値を分散して記録する方法が実施例1と同じなので、実施例1の秘匿処理手段と復元手段を用いることができる。このように、実施例2の秘密計算システムも実施例1と同様の効果が得られる。
【実施例3】
【0113】
実施例2では、実施例1と同じ方法で数値を分散して記録することを前提に、任意の論理回路Cについての秘密計算システムを構築した。実施例3では、数値を分散して記録する部分を一般化した秘密計算システムについて説明する。実施例3の秘密計算システムも、論理回路Cの演算結果C(A)=Eを求めるシステムである。図29に、実施例3の秘密計算システムの機能構成例を示す。また、図30に、実施例3の秘密計算システムの処理フロー例を示す。実施例3の秘密計算システムも、3つの計算装置700X,700Y,700Zと、これらの計算装置をつなぐネットワーク100から構成される。この実施例では、Nを2以上の整数、nを1以上N以下の整数、a1,a2,a3をNビット以下の数値Aの第1断片,第2断片,第3断片、e1,e2,e3を数値Aを論理回路Cに入力したときの出力E=C(A)の第1断片,第2断片,第3断片、a1[n]を第1断片a1を2進表現したときの下位n桁目の値とする。また、f1を任意の数値から第1断片を求める関数、f2を任意の数値から第2断片を求める関数、f3を任意の数値から第3断片を求める関数、g12を第1断片と第2断片から元の数値を復元する関数、g23を第2断片と第3断片から元の数値を復元する関数、g13を第1断片と第3断片から元の数値を復元する関数とする。
【0114】
計算装置700Xは、乱数生成部511、第1演算送信部521、第1演算受信部531、第1演算復号部541、第1記録部591を有し、計算装置Yは、第2置換乱数受信部512、garbled circuit生成部732、第2演算送信部742、第2乱数断片受信部752、第2演算復号部762、第2記録部792を有し、計算装置700Zは、第3演算受信部713、演算実行部723、第3演算送信部733、第3演算復号部743、第3記録部793を有す。
【0115】
実施例3の秘密計算システムでは、入力である数値Aは3つの断片に分けられ、3つの計算装置に分配された状態となっている。具体的には、数値Aの第1断片a1,第2断片a2,第3断片a3は、
a1=f1(A)
a2=f2(A)
a3=f3(A)
A=g12(a1,a2)=g23(a2,a3)=g13(a1,a3)
の関係を持つ。そして、計算装置700Xの第1記録部591が第1断片を記録し、計算装置700Yの第2記録部792が第2断片を記録し、計算装置700Zの第3記録部793が第3断片を記録する。
【0116】
計算装置700Xの乱数生成部511は、2N個の乱数(r0,1,r1,1),…,(r0,N,r1,N)を生成する(S511)。第1演算送信部521は、乱数(r0,1,r1,1),…,(r0,N,r1,N)を計算装置700Yに送信し、ra1[1],1,…,ra1[N],Nを計算装置700Zに送信する(S521)。
【0117】
計算装置700Yの第2置換乱数受信部512は、計算装置700Xから乱数(r0,1,r1,1),…,(r0,N,r1,N)を受信する(S512)。garbled circuit生成部732は、第1断片a1が入力された場合に第1断片e1,第2断片e2,第3断片e3を出力する論理回路C’の入出力を乱数に置き換えたgarbled circuit GC’(ただし、入力である第1断片a1は乱数(r0,1,r1,1),…,(r0,N,r1,N)に置き換えられる)と、前記garbled circuit GC’の出力である第1乱数断片e’1,第2乱数断片e’2,第3乱数断片e’3それぞれを、第1断片e1,第2断片e2,第3断片e3に変換する第1断片関数t1,第2断片関数t2,第3断片関数t3を生成する(S732)。なお、garbled circuit GC’を生成する方法については、参考許文献1(Koji Chida and Katsumi Takahashi: Privacy Preserving Computations without Public Key Cryptographic Operation, Proc. of IWSEC 2008, pp.184-200.)の3.2 Protocol II、および 2 Previous WorkのYao’s Two Party Secure Function Evaluationに詳しく説明されている。第2演算送信部742は、第1断片関数t1を計算装置700Xに送信し、garbled circuit GC’と第3断片関数t3を計算装置700Zに送信する(S742)。
【0118】
計算装置700Zの第3演算受信部713は、計算装置700Xからra1[1],1,…,ra1[N],Nを受信し、計算装置700Yからgarbled circuit GC’と第3断片関数t3を受信する(S713)。演算実行部723は、ra1[1],1,…,ra1[N],Nとgarbled circuit GC’とを用いて、第1乱数断片e’1,第2乱数断片e’2,第3乱数断片e’3を求める(S723)。第3演算送信部733は、第1乱数断片e’1を計算装置700Xに送信し、第2乱数断片e’2を計算装置700Yに送信する(S733)。
【0119】
計算装置700Xの第1演算受信部531は、計算装置700Yから第1断片関数t1を受信し、計算装置700Zから第1乱数断片e’1を受信する(S531)。第1演算復号部541は、第1断片e1をe1=t1(e’1)のように求め、第1記録部591に記録する(S541)。計算装置700Yの第2乱数断片受信部752は、計算装置700Zから第2乱数断片e’2を受信する(S752)。第2演算復号部762は、第2断片e2をe2=t2(e’2)のように求め、第2記録部792に記録する(S762)。計算装置700Zの第3演算復号部743は、第3断片e3をe3=t3(e’3)のように求め、第3記録部793に記録する(S743)。
【0120】
実施例3の秘密計算システムはこのような構成なので、任意の論理回路Cの結果Eの第1断片e1を第1記録部5901が記録し、第2断片e2を第2記録部7902が記録し、第3断片e3を第3記録部7903が記録した状態となる。また、garbled circuitを用いているので、いずれの計算装置も入力の数値Aも結果である数値Cも、単独では知ることができない。つまり、実施例3によれば、容易に任意の論理回路Cについての秘密計算システムを構築できる。このように、実施例3の秘密計算システムも実施例2と同様の効果が得られる。
【産業上の利用可能性】
【0121】
本発明は、プライバシー保護データマイニングなど、情報を秘密性を維持しながら情報を利用するようなシステムに利用することができる。
【符号の説明】
【0122】
100、200、500、700 計算装置
1101 第1加算部 1201 第1減算部
1301 第1定数倍計算部 1411 乗算乱数生成部
1421 第1乗算部 1431 第1乗算送信部
1501 第1否定部 1901、591 第1記録部
1102 第2加算部 1202 第2減算部
1302 第2定数倍計算部 1442 第2乗算乱数受信部
1452 第2乗算中間値計算部 1462 第2乗算送信部
1472 第2乗算中間値受信部 1482 第2乗算部
1502 第2否定部 1902、592、792 第2記録部
1103 第3加算部 1203 第3減算部
1303 第3定数倍計算部 1443 第3乗算乱数受信部
1453 第3乗算中間値計算部 1463 第3乗算送信部
1473 第3乗算中間値受信部 1483 第3乗算部
1503 第3否定部 1903、593、793 第3記録部
1611、1612、1613 断片生成部
1621、1622、1623 断片分配部
1711 第1断片送信部 1721 第1断片受信部
1731 第1復元部 1712 第2断片送信部
1722 第2断片受信部 1732 第2復元部
1713 第3断片送信部 1723 第3断片受信部
1733 第3復元部 1011、1012、1013 基本処理部
2411 第1乱数rxy共有部 2421 第1Z送信部
2311 第1乱数rxz共有部 2321 第1Y送信部
2231 第1受信部 2241 第1断片確認部
2511 第1確認乱数生成部 2112 要素送信部
2122 Y要素受信部 2132 Y要素確認部
2412 第2乱数rxy共有部 2422 第2Z送信部
2212 第2乱数ryz共有部 2222 第2X送信部
2332 第2受信部 2342 第2断片確認部
2512 第2確認乱数生成部 2113 Z要素送信部
2123 Z要素受信部 2133 Z要素確認部
2313 第3乱数rxz共有部 2323 第3Y送信部
2213 第3乱数ryz共有部 2223 第3X送信部
2433 第3受信部 2443 第3断片確認部
2513 第3確認乱数生成部 254 復元入力確認部
255 復元出力確認部 511 乱数生成部
521 第1演算送信部 531 第1演算受信部
541 第1演算復号部 512 第2置換乱数受信部
522 要素生成部 532、732 garbled circuit生成部
542、742 第2演算送信部 752 第2乱数断片受信部
562、762 第2演算復号部 513、713 第3演算受信部
523、723 演算実行部 533、733 第3演算送信部
543、743 第3演算復号部
【技術分野】
【0001】
本発明は暗号応用技術に関し、ある演算に対して分散された入力データを復元することなく演算結果を得るための秘密計算システム、秘密計算方法、計算装置に関する。
【背景技術】
【0002】
ある演算に対して暗号化された入力データを復元することなく演算結果を得る方法(以降、当該方法を秘密計算方法と呼ぶ)として、例えば非特許文献1に記載された方法がある。当該方法は、暗号化手段として秘密分散法を用いる。すなわち、複数の装置がそれぞれ異なる分散データ(断片)を所持し、当該断片を一定数以上用いることでデータの復元を可能とし、さらにデータを復元することなく当該データを入力とした演算結果の断片を複数の装置が得ることも可能とする。当該方法を用いて実現可能な演算種別は算術演算(加減乗算)や論理(回路)演算である。また、当該方法は、n台の装置がそれぞれ異なる断片を所持するとき、n≧2t−1を満たすt以上の数の断片を用いることでデータの復元を可能とする。
【0003】
一方、当該方法は、整数値の断片から当該整数値を復元することなく論理演算を行い、演算結果の断片を得る方法が自明でなかったが、非特許文献2ではその解決法が提案されている。また、秘密計算方法を論理演算に用いて実行する方法として、例えば非特許文献3の方法が知られている。非特許文献3の方法は、論理回路の入出力ビットを乱数に置き換える操作により、置き換え後の演算の実行者は入出力の値を知ることなく演算結果に対応する乱数を得ることを可能とする。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】Michael Ben-Or, Shafi Goldwasser, and Avi Wigderson, “Completeness Theorems for Non-Cryptographic Fault-Tolerant Distributed Computation (Extended Abstract)”, Proc. of STOC 1988, pp.1-10.
【非特許文献2】Takashi Nishide and Kazuo Ohta, “Multiparty Computation for Interval, Equality, and Comparison Without Bit-Decomposition Protocol”, Proc. of Public Key Cryptography 2007, pp.343-360.
【非特許文献3】Andrew Chi-Chih Yao, “How to Generate and Exchange Secrets (Extended Abstract)”, Proc. of FOCS 1986, pp.162-167.
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、秘密計算方法を用いた演算は、通常の演算よりも効率が悪く、複雑な演算になると実用的ではない処理時間になることがある。そこで、本発明は、計算効率と通信効率が従来方法よりも優れた秘密計算方法を提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の秘密計算システムは、3つの計算装置から構成され、数値Aの第1断片a1,第2断片a2,第3断片a3と、数値Bの第1断片b1,第2断片b2,第3断片b3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
b1=b22+b23
b2=(b21,b22)
b3=(b21,b23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ、第1要素b21,第2要素b22,第3要素b23はB=b21+b22+b23を満たす任意の数値の組合せ
の関係を有し、計算装置Xとして機能する計算装置が第1断片を記録し、計算装置Yとして機能する計算装置が第2断片を記録し、計算装置Zとして機能する計算装置が第3断片を記録する。
【0007】
本発明の秘密計算システムの秘密加算手段は、計算装置Xが、A+Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=a1+b1
のように求める第1加算部を有し、計算装置Yが、A+Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(a21+b21,a22+b22)
のように求める第2加算部を有し、計算装置Zが、A+Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(a21+b21,a23+b23)
のように求める第3加算部を有す。
【0008】
本発明の秘密計算システムの秘密減算手段は、計算装置Xが、A−Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=a1−b1
のように求める第1減算部を有し、計算装置Yが、A−Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(a21−b21,a22−b22)
のように求める第2減算部を有し、計算装置Zが、A−Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(a21−b21,a23−b23)
のように求める第3減算部を有す。
【0009】
本発明の秘密計算システムの秘密定数倍手段は、計算装置Xが、Aを数値B倍した結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=Ba1
のように求める第1定数倍計算部を有し、計算装置Yが、Aを数値B倍した結果である数値Cの第2断片c2を、
c2=(c21,c22)=(Ba21,Ba22)
のように求める第2定数倍計算部を有し、計算装置Zが、Aを数値B倍した結果である数値Cの第3断片c3を、
c3=(c21,c23)=(Ba21,Ba23)
のように求める第3定数倍計算部を有す。
【0010】
本発明の秘密計算システムの秘密乗算手段は、計算装置Xが、乗算乱数生成部と第1乗算部と第1乗算送信部を有し、計算装置Yが、第2乗算乱数受信部と第2乗算中間値計算部と第2乗算送信部と第2乗算中間値受信部と第2乗算部を有し、計算装置Zが、第3乗算乱数受信部と第3乗算中間値計算部と第3乗算送信部と第3乗算中間値受信部と第3乗算部を有す。乗算乱数生成部は、乱数r1,r2,r3,r4,r5を生成する。第1乗算部は、A×Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1、第2要素c22、第3要素c23を
c1=a1b1−r3−r4
c22=r5
c23=c1−c22
のように求める。第1乗算送信部は、計算装置Yに(r1,r2,r3,c22)を、計算装置Zに(a1−r1,b1−r2,r4,c23)を送信する。第2乗算乱数受信部は、計算装置Xから(r1,r2,r3,c22)を受信する。第2乗算中間値計算部は、数値yを
y=a21b21+a21r2+r1b21+r3
のように求める。第2乗算送信部は、計算装置Zに数値yを送信する。第2乗算中間値受信部は、計算装置Zから数値zを受信する。第2乗算部は、A×Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(y+z,c22)
のように求める。第3乗算乱数受信部は、計算装置Xから(a1−r1,b1−r2,r4,c23)を受信する。第3乗算中間値計算部は、数値zを
z=a21(b1−r2)+(a1−r1)b21+r4
のように求める。第3乗算送信部は、計算装置Yに数値zを送信する。第3乗算中間値受信部は、計算装置Yから数値yを受信する。第3乗算部は、A×Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(y+z,c23)
のように求める。
【0011】
本発明の秘密計算システムの秘密否定手段では、計算装置Xが、1−Aの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=−a1
のように求める第1否定部を有し、計算装置Yが、1−Aの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(1−a21,−a22)
のように求める第2否定部を有し、計算装置Zが、1−Aの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(1−a21,−a23)
のように求める第3否定部を有す。
【0012】
本発明の秘密計算システムの秘匿処理手段は、自己が保持する数値Sから
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23と
s1=s22+s23
s2=(s21,s22)
s3=(s21,s23)
の関係を有する第1断片s1,第2断片s2,第3断片s3を求める断片生成部と、計算装置Xとして機能する計算装置が第1断片s1を、計算装置Yとして機能する計算装置が第2断片s2を、計算装置Zとして機能する計算装置が第3断片s3を記録した状態にする断片分配部とを備える。
【0013】
本発明の秘密計算システムの復元手段は、計算装置Xが、第1断片送信部と第1断片受信部と第1復元部を有し、計算装置Yが、第2断片送信部と第2断片受信部と第2復元部
を有し、計算装置Zが、第3断片送信部と第3断片受信部と第3復元部を有す。第1断片送信部は、計算装置Yまたは計算装置Zに第1断片を送信する。第1断片受信部は、計算装置Yまたは計算装置Zから第1要素を受信する。第1復元部は、第1断片受信部が受信した第1要素と当該第1要素に対応する第1断片とを加算することで数値を復元する。第2断片送信部は、計算装置Xに第1要素を送信する、または計算装置Zに第2要素を送信する。第2断片受信部は、計算装置Xから第1断片を受信する、または計算装置Zから第3要素を受信する。第2復元部は、第2断片受信部が受信した第1断片と当該第1断片に対応する第1要素とを加算することで数値を復元する、または第2断片受信部が受信した第3要素と当該第3要素に対応する第1要素と第2要素とを加算することで数値を復元する。第3断片送信部は、計算装置Xに第1要素を送信する、または計算装置Yに第3要素を送信する。第3断片受信部は、計算装置Xから第1断片を受信する、または計算装置Yから第2要素を受信する。第3復元部は、第3断片受信部が受信した第1断片と当該第1断片に対応する第1要素とを加算することで数値を復元する、または第3断片受信部が受信した第2要素と当該第2要素に対応する第1要素と第3要素とを加算することで数値を復元する。
【発明の効果】
【0014】
本発明の秘密計算システムでは、断片を分散して記録した状態からの加減算や定数倍演算は、非特許文献1と同様に、各計算装置が単独で計算できる。乗算や論理回路演算については、非特許文献2と同様に各計算装置の協調計算が必要となる。更に本発明の秘密計算システムは、2進数変換や整数変換についても他の計算の単純な拡張として実現できる。これにより、算術演算および論理回路演算の組合せ計算が可能となる。
【図面の簡単な説明】
【0015】
【図1】実施例1の秘密計算システムの機能構成例を示す図。
【図2】実施例1の秘密加算過程の処理フローを示す図。
【図3】実施例1の秘密減算過程の処理フローを示す図。
【図4】実施例1の秘密定数倍過程の処理フローを示す図。
【図5】実施例1の秘密乗算過程の処理フローを示す図。
【図6】実施例1の秘密否定過程の処理フローを示す図。
【図7】実施例1の秘密加算手段の構成を示す図。
【図8】実施例1の秘密減算手段の構成を示す図。
【図9】実施例1の秘密定数倍手段の構成を示す図。
【図10】実施例1の秘密乗算手段の構成を示す図。
【図11】実施例1の秘密否定手段の構成を示す図。
【図12】実施例1の秘匿処理手段の構成例を示す図。
【図13】実施例1の秘匿処理のフローを示す図。
【図14】図1の秘密計算システムに秘匿手段を付加した秘密計算システムの機能構成例を示す図。
【図15】図14に示した秘密計算システムを用いた秘密2進変換過程のフローの第1の例を示す図。
【図16】図14に示した秘密計算システムを用いた秘密2進変換過程のフローの第2の例を示す図。
【図17】実施例1の復元手段を計算装置に配置した構成例を示す図。
【図18】実施例1の復元手段の処理フローを示す図。
【図19】図1と図12と図17に示した計算装置100X,100Y,100Zのいずれの計算装置としても機能できる計算装置1001(1002,1003)の機能構成例を示す図。
【図20】入力と出力の不正を検出するための計算装置の機能構成例を示す図。
【図21】実施例1の入力の不正を検出する処理フローを示す図。
【図22】第1要素の不正を検出する処理フローを示す図。
【図23】第1断片の不正を検出する処理フローを示す図。
【図24】第2要素の不正を検出する処理フローを示す図。
【図25】第3要素の不正を検出する処理フローを示す図。
【図26】実施例1の出力の不正を検出する処理フローを示す図。
【図27】実施例2の秘密計算システムの機能構成例を示す図。
【図28】実施例2の秘密計算システムの処理フロー例を示す図。
【図29】実施例3の秘密計算システムの機能構成例を示す図。
【図30】実施例3の秘密計算システムの処理フロー例を示す図。
【発明を実施するための形態】
【0016】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【実施例1】
【0017】
図1に実施例1の秘密計算システムの機能構成例を示す。図2は秘密加算過程の処理フローを、図3は秘密減算過程の処理フローを、図4は秘密定数倍過程の処理フローを、図5は秘密乗算過程の処理フローを、図6は秘密否定過程の処理フローを示す図である。また、図1に示した機能構成の中で、図2〜図6に示した各処理フローを実行するために必要な構成のみを表示した図を、図7〜11に示す。図7は秘密加算手段の構成を、図8は秘密減算手段の構成を、図9は秘密定数倍手段の構成を、図10は秘密乗算手段の構成を、図11は秘密否定手段の構成を示す図である。
【0018】
<基本的な算術演算のためのシステム構成>
実施例1の秘密計算システムは、ネットワーク1000で接続された3つの計算装置100X、100Y、100Zで構成される。計算装置Xとして機能する計算装置100Xは、第1加算部1101、第1減算部1201、第1定数倍計算部1301、乗算乱数生成部1411、第1乗算部1421、第1乗算送信部1431、第1否定部1501、第1記録部1901を備える。計算装置Yとして機能する計算装置100Yは、第2加算部1102、第2減算部1202、第2定数倍計算部1302、第2乗算乱数受信部1442、第2乗算中間値計算部1452、第2乗算送信部1462、第2乗算中間値受信部1472、第2乗算部1482、第2否定部1502、第2記録部1902を備える。計算装置Zとして機能する計算装置100Zは、第3加算部1103、第3減算部1203、第3定数倍計算部1303、第3乗算乱数受信部1443、第3乗算中間値計算部1453、第3乗算送信部1463、第3乗算中間値受信部1473、第3乗算部1483、第3否定部1503、第3記録部1903を備える。なお、実際の秘密計算システムでは、そのシステムで実行する計算に対応した構成を、これらの中から選んで備えればよい。例えば、秘密加算のみを行うのであれば、計算装置100Xは、第1加算部1101と第1記録部1901を備え、計算装置100Yは、第2加算部1102と第2記録部1902を備え、計算装置100Zは、第3加算部1103と第3記録部1903を備えればよい。
【0019】
各演算の入力である数値Aと数値Bは、3つの断片に分けられ、3つの計算装置に分配された状態となっている。具体的には、数値Aの第1断片a1,第2断片a2,第3断片a3と、数値Bの第1断片b1,第2断片b2,第3断片b3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
b1=b22+b23
b2=(b21,b22)
b3=(b21,b23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ、第1要素b21,第2要素b22,第3要素b23はB=b21+b22+b23を満たす任意の数値の組合せ
の関係を持つ。そして、計算装置100Xの第1記録部1901が第1断片を記録し、計算装置100Yの第2記録部1902が第2断片を記録し、計算装置100Zの第3記録部1903が第3断片を記録する。
【0020】
<秘密加算手段(図2,7参照)>
実施例1の秘密計算システムの秘密加算手段10は、計算装置100Xが第1加算部1101を有し、計算装置100Yが第2加算部1102を有し、計算装置100Zが第3加算部1103を有す。そして、秘密加算過程S10は以下の処理で構成されている。第1加算部1101が、A+Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=a1+b1
のように求める(S1101)。第2加算部1102が、A+Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(a21+b21,a22+b22)
のように求める(S1102)。第3加算部1103が、A+Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(a21+b21,a23+b23)
のように求める(S1103)。
【0021】
このような処理を行えば、加算の結果Cの第1断片c1を第1記録部1901が記録し、第2断片c2を第2記録部1902が記録し、第3断片c3を第3記録部1903が記録した状態となる。また、互いのデータの授受がないため、いずれの計算装置も入力の数値A,Bも計算結果である数値Cも、単独では知ることができない。
【0022】
<秘密減算手段(図3,8参照)>
実施例1の秘密計算システムの秘密減算手段20は、計算装置100Xが第1減算部1201を有し、計算装置100Yが第2減算部1202を有し、計算装置100Zが第3減算部1203を有す。そして、秘密減算過程S20は以下の処理で構成されている。第1減算部1201が、A−Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=a1−b1
のように求める(S1201)。第2減算部1202が、A−Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(a21−b21,a22−b22)
のように求める(S1202)。第3減算部1203が、A−Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(a21−b21,a23−b23)
のように求める(S1203)。
【0023】
このような処理を行えば、減算の結果Cの第1断片c1を第1記録部1901が記録し、第2断片c2を第2記録部1902が記録し、第3断片c3を第3記録部1903が記録した状態となる。また、互いのデータの授受がないため、いずれの計算装置も入力の数値A,Bも計算結果である数値Cも、単独では知ることができない。
【0024】
<秘密定数倍手段(図4,9参照)>
実施例1の秘密計算システムの秘密定数倍手段30は、計算装置100Xが第1定数倍計算部1301を有し、計算装置100Yが第2定数倍計算部1302を有し、計算装置100Zが第3定数倍計算部1303を有す。そして、秘密定数倍過程S30は以下の処理で構成されている。第1定数倍計算部1301が、Aを数値B倍した結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=Ba1
のように求める(S1301)。第2定数倍計算部1302が、Aを数値B倍した結果である数値Cの第2断片c2を、
c2=(c21,c22)=(Ba21,Ba22)
のように求める(S1302)。第3定数倍計算部1303が、Aを数値B倍した結果である数値Cの第3断片c3を、
c3=(c21,c23)=(Ba21,Ba23)
のように求める(S1303)。
【0025】
このような処理を行えば、定数倍計算の結果Cの第1断片c1を第1記録部1901が記録し、第2断片c2を第2記録部1902が記録し、第3断片c3を第3記録部1903が記録した状態となる。また、互いのデータの授受がないため、いずれの計算装置も入力の数値Aも計算結果である数値Cも、単独では知ることができない。
【0026】
<秘密乗算手段(図5,10参照)>
実施例1の秘密計算システムの秘密乗算手段40は、計算装置100Xが、乗算乱数生成部1411、第1乗算部1421、第1乗算送信部1431を有し、計算装置100Yが、第2乗算乱数受信部1442、第2乗算中間値計算部1452、第2乗算送信部1462、第2乗算中間値受信部1472、第2乗算部1482を有し、計算装置100Zが、第3乗算乱数受信部1443、第3乗算中間値計算部1453、第3乗算送信部1463、第3乗算中間値受信部1473、第3乗算部1483を有す。そして、秘密乗算過程S40は以下の処理で構成されている。
【0027】
乗算乱数生成部1411は、乱数r1,r2,r3,r4,r5を生成する(S1411)。第1乗算部1421は、A×Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1、第2要素c22、第3要素c23を
c1=a1b1−r3−r4
c22=r5
c23=c1−c22
のように求める(S1421)。第1乗算送信部1431は、計算装置100Yに(r1,r2,r3,c22)を、計算装置100Zに(a1−r1,b1−r2,r4,c23)を送信する(S1431)。
【0028】
第2乗算乱数受信部1442は、計算装置100Xから(r1,r2,r3,c22)を受信する(S1442)。第3乗算乱数受信部1443は、計算装置100Xから(a1−r1,b1−r2,r4,c23)を受信する(S1443)。第2乗算中間値計算部1452は、数値yを
y=a21b21+a21r2+r1b21+r3
のように求める(S1452)。第3乗算中間値計算部1453は、数値zを
z=a21(b1−r2)+(a1−r1)b21+r4
のように求める(S1453)。第2乗算送信部1462は、計算装置100Zに数値yを送信する(S1462)。第3乗算送信部1463は、計算装置100Yに数値zを送信する(S1463)。第2乗算中間値受信部1472は、計算装置100Zから数値zを受信する(S1472)。第3乗算中間値受信部1473は、計算装置100Yから数値yを受信する(S1473)。第2乗算部1482は、A×Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(y+z,c22)
のように求める(S1482)。第3乗算部1483は、A×Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(y+z,c23)
のように求める(S1483)。
【0029】
このような処理を行えば、乗算の結果Cの第1断片c1を第1記録部1901が記録し、第2断片c2を第2記録部1902が記録し、第3断片c3を第3記録部1903が記録した状態となる。また、計算装置100Xは、他の計算装置からデータを受け取らないので、入力の数値A,Bも計算結果である数値Cも、単独では知ることができない。計算装置100Yは、r1,r2,r3,c22,zを受信するが、これらの数値は数値A,Bとは独立の乱数とみなせるため、数値A,B,Cを単独で復元することはできない。計算装置100Zは、a1−r1,b1−r2,r4,c23,yを受信するが、これらの数値は数値A,Bとは独立の乱数とみなせるため、数値A,B,Cを単独で復元することはできない。
【0030】
<秘密否定手段(図6,11参照)>
これまでの説明は、算術演算についてであったが、論理演算も可能である。まず、否定を行う手段について説明する。実施例1の秘密計算システムの秘密否定手段50は、計算装置100Xが第1否定部1501を有し、計算装置100Yが第2否定部1502を有し、計算装置100Zが第3否定部1503を有す。そして、秘密否定過程S50は以下の処理で構成されている。第1否定部1501が、1−Aの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=−a1
のように求める(S1501)。第2否定部1502が、1−Aの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(1−a21,−a22)
のように求める(S1502)。第3否定部1503が、1−Aの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(1−a21,−a23)
のように求める(S1503)。
【0031】
このような処理を行えば、否定の結果Cの第1断片c1を第1記録部1901が記録し、第2断片c2を第2記録部1902が記録し、第3断片c3を第3記録部1903が記録した状態となる。また、互いのデータの授受がないため、いずれの計算装置も数値Aも計算結果である数値Cも、単独では知ることができない。
【0032】
<秘密論理積手段>
次に、論理積を行う方法について説明する。AとBとの論理積(C=A∧B)は、乗算と同じなので、秘密乗算過程S40を実行すればよい。
【0033】
<秘密論理和手段>
AとBの論理和(C=A∨B)は、
C=A∨B=A+B−AB
の演算を行えばよい。したがって、例えば、以下の処理を行えばよい。
(1)秘密加算過程S10によってD1=A+Bを求める。
(2)秘密乗算過程S40によってD2=ABを求める。
(3)秘密減算過程S20によってC=D1−D2を求める。
【0034】
このような処理を行えば、論理和の結果Cの第1断片c1を計算装置100Xの第1記録部1901が記録し、第2断片c2を計算装置100Yの第2記録部1902が記録し、第3断片c3を計算装置100Zの第3記録部1903が記録した状態となる。また、秘密加算過程S10、秘密乗算過程S40、秘密減算過程S20は、上述のようにデータを秘匿した状態を維持しながら計算結果の断片を求めることができる。したがって、いずれの計算装置も、元の数値A,Bも計算結果である数値Cも、単独では知ることができない。
【0035】
<秘密排他的論理和手段>
AとBの排他的論理和は、
【0036】
【数1】
【0037】
の演算を行えばよい。したがって、例えば、以下の処理を行えばよい。
(1)秘密加算過程S10によってD1=A+Bを求める。
(2)秘密乗算過程S40によってD2=ABを求める。
(3)秘密定数倍過程S30によって、D3=2D2
(4)秘密減算過程S20によってC=D1−D3を求める。
【0038】
このような処理を行えば、排他的論理和の結果Cの第1断片c1を計算装置100Xの第1記録部1901が記録し、第2断片c2を計算装置100Yの第2記録部1902が記録し、第3断片c3を計算装置100Zの第3記録部1903が記録した状態となる。また、秘密加算過程S10、秘密乗算過程S40、秘密定数倍過程S30、秘密減算過程S20は、上述のようにデータを秘匿した状態を維持しながら計算結果の断片を求めることができる。したがって、いずれの計算装置も、元の数値A,Bも計算結果である数値Cも、単独では知ることができない。
【0039】
<秘匿処理手段>
次に、いずれかの計算装置が保有している数値の3つの断片を生成し、断片を3つの計算装置で共有する処理について説明する。図12は実施例1の秘匿処理手段の構成例を示す図、図13は秘匿処理のフローを示す図である。図13(A)は計算装置100Xとして機能する計算装置が保有する数値を秘匿処理する過程(秘匿処理X過程)を示す図であり、図13(B)は計算装置100Yとして機能する計算装置が保有する数値を秘匿処理する過程(秘匿処理Y過程)を示す図であり、図13(C)は計算装置100Zとして機能する計算装置が保有する数値を秘匿処理する過程(秘匿処理Z過程)を示す図である。
【0040】
計算装置100Xとして機能する計算装置が保有する数値を秘匿処理するために、計算装置100Xは、断片生成部1611と断片分配部1621を備える。計算装置100Yとして機能する計算装置が保有する数値を秘匿処理するために、計算装置100Yは、断片生成部1612と断片分配部1622を備える。計算装置100Zとして機能する計算装置が保有する数値を秘匿処理するために、計算装置100Zは、断片生成部1613と断片分配部1623を備える。
【0041】
数値Sをいずれかの計算装置が保有しているとする。断片生成部1611、1612、1613は、自己が保持する数値Sから
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23と
s1=s22+s23
s2=(s21,s22)
s3=(s21,s23)
の関係を有する第1断片s1,第2断片s2,第3断片s3を求める(S1611、S1612、S1613)。断片分配部1621、1622、1623は、計算装置Xとして機能する計算装置100Xが第1断片s1を、計算装置Yとして機能する計算装置100Yが第2断片s2を、計算装置Zとして機能する計算装置100Zが第3断片s3を記録した状態にする(S1621、S1622、S1623)。なお、秘匿処理手段は、秘匿処理したい数値を保有する計算装置に備えればよく、秘匿処理したい数値を保有しない計算装置には具備しなくてもよい。
【0042】
このような処理を行えば、演算の対象となる数値の第1断片s1を第1記録部1901が記録し、第2断片s2を第2記録部1902が記録し、第3断片s3を第3記録部1903が記録した状態となる。
【0043】
<秘密2進変換手段>
第1の秘密2進変換手段
図14は、図1の秘密計算システムに秘匿手段を付加した秘密計算システムの機能構成例である。図15は、図14に示した秘密計算システムを用いた秘密2進変換過程のフローの第1の例を示す図である。なお、図15のフローでは、計算装置100Xが保有する数値(第1断片a1)と計算装置100Yが保有する数値(第1要素a21)を秘匿処理することで、2進表現された数値Aの各ビットA[1],…,A[N]を秘匿処理する例を示している。この例の場合、断片生成部1613と断片分配部1623は不要である。なお、数値Aと断片a1と第1要素a21は高々Nビットであるとし、A[n]は数値Aの下位n番目のビットを、a1[n]は第1断片a1の下位n番目のビットを、a21[n]は第1要素a21の下位n番目のビットをあらわす。
【0044】
次に、数値Aを2進表現した時の各ビットA[1],…,A[N]の断片を3つの計算装置で分散して記録するフローを説明する。
(1−1)計算装置100Xの秘匿処理X手段601によって、第1断片a1[1],…,a1[N]を秘匿処理する(S311)。
(1−2)計算装置100Yの秘匿処理Y手段602によって、第1要素a21[1],…,a21[N]を秘匿処理する(S312)。
(2−1)秘密計算システムは、c1=0、n=1のように初期設定を行う(S321)。具体的には、いずれかの計算装置100でS321を行えばよい。
(2−2)秘密加算過程S10、秘密乗算過程S40、秘密定数倍過程S30、秘密減算過程S20によって、
dn=a1[n]+a21[n]−2a1[n]a21[n]
を行う(S330)。これは、第1断片a1の下位n番目a1[n]と第1要素a21の下位n番目a21[n]の排他的論理和に相当する計算である。排他的論理和の処理の詳細は、上述の秘密排他的論理和手段に示されている。
(2−3)秘密加算過程S10、秘密乗算過程S40、秘密定数倍過程S30、秘密減算過程S20によって、
A[n]=dn+cn−2dncn
を行う(S340)。これは、dnとcnの排他的論理和に相当する計算である。ステップS330とS340の処理によって、
【0045】
【数2】
【0046】
の計算結果の断片が3つの計算装置で分散されて記録された状態となる。
(2−4)次に、ステップS321を行った計算装置100が、n=Nかを確認する(S322)。ステップS322がYesの場合には処理を終了し、Noの場合には次の処理に進む。
(2−5)ステップS322がNoの場合には、秘密加算過程S10、秘密乗算過程S40、秘密減算過程S20によって、
cn+1=a1[n]a21[n]+dncn−a1[n]a21[n]dncn
を行う(S350)。これは、a1[n]a21[n]とdncnとの論理和に相当する計算である。
(2−6)ステップS321を行った計算装置100が、nにn+1を代入し(S323)、ステップS330に戻る。
【0047】
このような処理を行えば、数値Aの下位n番目のビットA[n]の第1断片a1[n]を計算装置100Xの第1記録部1901が記録し、第2断片a2[n]を計算装置100Yの第2記録部1902が記録し、第3断片a3[n]を計算装置100Zの第3記録部1903が記録した状態となる。また、秘匿処理X過程S601と秘匿処理Y過程S602は、第1断片a1[1],…,a1[N]と第1要素a21[1],…,a1[N]を秘匿処理している。この処理では、いずれの計算装置も、数値Aを単独では知ることができない。秘密加算過程S10、秘密乗算過程S40、秘密定数倍過程S30、秘密減算過程S20は、上述のようにデータを秘匿した状態を維持しながら計算結果の断片を求めることができる。したがって、いずれの計算装置も、元の数値Aも、数値Aを2進表現した各ビットA[1],…,A[N]も、単独では知ることができない。
【0048】
第2の秘密2進変換手段
図16は、図14に示した秘密計算システムを用いた秘密2進変換過程のフローの第2の例を示す図である。なお、図16のフローでも、計算装置100Xが保有する数値(第1断片a1)と計算装置100Yが保有する数値(第1要素a21)を秘匿処理することで、2進表現された数値Aの各ビットA[1],…,A[N]を秘匿処理する例を示している。この例の場合、断片生成部1613と断片分配部1623は不要である。なお、数値Aと断片a1と第1要素a21は高々Nビットであるとし、A[n]は数値Aの下位n番目のビットを、a1[n]は第1断片a1の下位n番目のビットを、a21[n]は第1要素a21の下位n番目のビットをあらわす。
【0049】
次に、数値Aを2進表現した時の各ビットA[1],…,A[N]の断片を3つの計算装置で分散して記録するフローを説明する。
(1−1)計算装置100Xの秘匿処理X手段601によって、第1断片a1[1],…,a1[N]を秘匿処理する(S311)。
(1−2)計算装置100Yの秘匿処理Y手段602によって、第1要素a21[1],…,a21[N]を秘匿処理する(S312)。
(2−1)秘密計算システムは、秘密加算過程S10、秘密乗算過程S40、秘密定数倍過程S30、秘密減算過程S20によって、
【0050】
【数3】
【0051】
を行う(S324)。この処理によって、各計算装置100は、A[1]の断片を分散して記録した状態となる。
(3−1)秘密計算システムは、n=2のように初期設定を行う(S325)。具体的には、いずれかの計算装置100でS325を行えばよい。
(3−2)秘密計算システムは、秘密定数倍過程S30、秘密加算過程S10、秘密減算過程S20によって、
【0052】
【数4】
【0053】
を行う(S331)。この処理によって、各計算装置100は、B(n)の断片b1(n),b2(n),b3(n)を分散して記録した状態となる。
(3−3)計算装置100Xの秘匿処理X手段601によって、B(n)の第1断片b1(n)を秘匿処理する。また、計算装置100Yの秘匿処理Y手段602によって、B(n)の第1要素b21(n)を秘匿処理する(S332)。
(3−4)秘密計算システムは、秘密加算過程S10、秘密乗算過程S40、秘密定数倍過程S30、秘密減算過程S20によって、
【0054】
【数5】
【0055】
を行い、D(n)の断片d1(n),d2(n),d3(n)を分散して記録した状態にする(S333)。
(4−1)各計算装置100は、それぞれc1(n)=0、i=1のように初期設定を行う(S341)。
(4−2)計算装置Xとして機能する計算装置100Xは、
【0056】
【数6】
【0057】
を計算する。計算装置Yとして機能する計算装置100Yと、計算装置Zとして機能する計算装置100Zは、
【0058】
【数7】
【0059】
を計算する(S342)。
(4−3)各計算装置100は、それぞれ
ci+1(n)=ci(n)b1(n)[i]∨ci(n)b21(n)[i]∨b1(n)[i]b21(n)[i]
を計算する(S343)。
(4−4)各計算装置100は、それぞれi=n−1かを確認する(S344)。各計算装置100は、ステップS344がNoの場合には、iにi+1を代入し(S345)、ステップS342に戻る。ステップS344がYesの場合には、ステップS351に進む。
(5−1)秘密計算システムは、cn(n)=0ならば各計算装置が分散して記録しているD(n)の断片を、各計算装置が分散して記録するA[n]の断片とする。また、cn(n)=1ならば各計算装置が断片を分散して記録しているD(n)の否定を秘密否定過程S50で計算し、D(n)の否定の断片を、自己が記録するA[n]の断片とする(S351)。
(5−2)秘密計算システムは、n=Nかを確認する(S326)。秘密計算システムは、ステップS326がNoの場合には、nにn+1を代入し(S327)、ステップS331に戻る。ステップS326がYesの場合には、処理を終了する。
【0060】
なお、ステップS343で計算されるci+1(n)は、B(n)=b1(n)+b21(n)の加算回路における下位i番目のビットの桁上げ(carry)である。B(n)は、その取り方から、
【0061】
【数8】
【0062】
となり、B(n)の最下位ビットから下位n−1ビットまでは0となる。したがって、1≦i≦n−1では
【0063】
【数9】
【0064】
となるので、ステップS342の式が成り立つことが分かる。また、ステップS351の計算結果は明らかにB(n)[n]の断片となっているため、A[n]=B(n)[n]なので、A[n]の断片でもある。
【0065】
このような処理を行えば、数値Aの下位n番目のビットA[n]の第1断片a1[n]を計算装置100Xの第1記録部1901が記録し、第2断片a2[n]を計算装置100Yの第2記録部1902が記録し、第3断片a3[n]を計算装置100Zの第3記録部1903が記録した状態となる。また、秘匿処理X過程S601と秘匿処理Y過程S602は、第1断片a1[1],…,a1[N]と第1要素a21[1],…,a1[N]を秘匿処理している。この処理では、いずれの計算装置も、数値Aを単独では知ることができない。秘密加算過程S10、秘密乗算過程S40、秘密定数倍過程S30、秘密減算過程S20は、上述のようにデータを秘匿した状態を維持しながら計算結果の断片を求めることができる。したがって、いずれの計算装置も、元の数値Aも、数値Aを2進表現した各ビットA[1],…,A[N]も、単独では知ることができない。
【0066】
さらに、第1の秘密2進変換手段では、秘密乗算過程S40をa1[n]a21[n]、dncn、a1[n]a21[n]dncnの3回実行し、これをn=1からNまでN回繰り返す必要がある。ただし、c1=0であり、n=Nのときはa1[n]a21[n]dncnの計算は不要なため、合計で3N−3回の秘密乗算過程S40を実行する。一方、第2の秘密2進変換手段では、a1[n]a21[n]および、n=2からNまでのb1(n)[n]b21(n)[n]の合計N回の秘密乗算過程S40の実行で済む。したがって、計算効率が高くなると共に、計算装置間の通信量も低減できる。
【0067】
<秘密整数変換手段>
ここでは、2進表現された数値Aの各ビットA[1],…,A[N]の断片が3つの計算装置で分散して記録された状態から、整数表現の数値Aの断片A1,A2,A3が3つの計算装置に分散して記録された状態にするための手段について説明する。整数表現された数値Aは、2進表現された数値Aの各ビットA[1],…,A[N]を用いて
【0068】
【数10】
【0069】
のように求めることができる。したがって、秘密定数倍過程S30の処理と秘密加算過程S10の処理を繰り返すことで、数値Aの第1断片A[n]を計算装置100Xの第1記録部1901が記録し、第2断片A2を計算装置100Yの第2記録部1902が記録し、第3断片A3を計算装置100Zの第3記録部1903が記録した状態となる。
【0070】
また、秘密定数倍過程S30、秘密加算過程S10は、上述のようにデータを秘匿した状態を維持しながら計算結果の断片を求めることができる。したがって、いずれの計算装置も、数値Aを2進表現した各ビットA[1],…,A[N]も、整数表現ざれた数値Aも、単独では知ることができない。
【0071】
実施例1の秘密計算装置によれば、上述の秘密2進変換手段によって2進表現された数値に対して、上述の論理演算(秘密否定手段、秘密論理積手段、秘密論理和手段、秘密排他的論理和手段の処理)を行い、その結果を整数表現された数値に戻すことも可能である。しかも、これらの処理の途中の数値も、処理の結果の数値も、いずれの計算装置も単独では知ることができない。
【0072】
<復元手段>
分散して記録された状態の断片から数値を復元する手段について説明する。図17に実施例1の復元手段を計算装置に配置した構成例を示す。また、図18に実施例1の復元手段の処理フローを示す。図18(A)の実線は、計算装置Xとして機能する計算装置100Xが、計算装置Yとして機能する計算装置100Yに第1断片を送り、計算装置100Yが数値を復元する処理フロー(復元XY過程S7012)を示している。図18(A)の点線は、計算装置100Xが、計算装置Zとして機能する計算装置100Zに第1断片を送り、計算装置100Zが数値を復元する処理フロー(復元XZ過程S7013)を示している。図18(B)の実線は、計算装置100Yが計算装置100Xに第2断片を送り、計算装置100Xが数値を復元する処理フロー(復元YX過程S7021)を示している。図18(B)の点線は、計算装置100Yが計算装置100Zに第2断片を送り、計算装置100Zが数値を復元する処理フロー(復元YZ過程S7023)を示している。図18(C)の実線は、計算装置100Zが計算装置100Xに第3断片を送り、計算装置100Xが数値を復元する処理フロー(復元ZX過程S7031)を示している。図18(C)の点線は、計算装置100Zが計算装置100Yに第3断片を送り、計算装置100Yが数値を復元する処理フロー(復元ZY過程S7032)を示している。秘密計算システムが、上記の復元処理のすべてを実行できるようにするためには、計算装置100Xが、第1断片送信部1711、第1断片受信部1721、第1復元部1731を有し、計算装置100Yが、第2断片送信部1712、第2断片受信部1722、第2復元部1732を有し、計算装置100Zが、第3断片送信部1713、第3断片受信部1723、第3復元部1733を有する必要がある。なお、システムの設計上必要のない構成部は適宜省略してもよい。
【0073】
次に、数値Aの第1断片,第2断片,第3断片をa1,a2,a3とし、第1要素,第2要素,第3要素をa21,a22,a23として、復元の処理フローについて説明する。なお、これまでの説明で何度も説明しているが、実施例1の秘密計算システムでは、分散して記録された断片は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
A=a21+a22+a23
の関係を有していることに注意されたい。
【0074】
復元XY過程S7012(図18(A)実線)
第1断片送信部1711は、計算装置100Yに第1断片a1を送信する(S17112)。第2断片受信部1722は、計算装置100Xから第1断片a1を受信する(S17212)。第2復元部1732は、次式のように第2断片受信部1722が受信した第1断片a1と当該第1断片a1に対応する第1要素a21とを加算することで数値Aを復元する(S17213)。
a1+a21=a22+a23+a21=A
【0075】
復元XZ過程S7013(図18(A)点線)
第1断片送信部1711は、計算装置100Zに第1断片a1を送信する(S17112)。第3断片受信部1723は、計算装置100Xから第1断片a1を受信する(S17212)。第3復元部1733は、次式のように第3断片受信部1723が受信した第1断片a1と当該第1断片a1に対応する第1要素a21とを加算することで数値を復元する(S17312)。
a1+a21=a22+a23+a21=A
【0076】
復元YX過程S7021(図18(B)実線)
第2断片送信部1712は、計算装置100Xに第1要素a21を送信する(S17121)。第1断片受信部1721は、計算装置100Yから第1要素a21を受信する(S17221)。第1復元部1731は、次式のように第1断片受信部1721が受信した第1要素a21と当該第1要素a21に対応する第1断片a1とを加算することで数値を復元する(S17321)。
a21+a1=a21+a22+a23=A
【0077】
復元YZ過程S7023(図18(B)点線)
第2断片送信部1712は、計算装置100Zに第2要素a22を送信する(S17123)。第3断片受信部1723は、計算装置100Yから第2要素a21を受信する(S17223)。第3復元部1733は、次式のように第3断片受信部1723が受信した第2要素a22と当該第2要素a22に対応する第1要素a21と第3要素a23とを加算することで数値を復元する(S17323)。
a22+a21+a23=A
【0078】
復元ZX過程S7031(図18(C)実線)
第3断片送信部1713は、計算装置100Xに第1要素a21を送信する(S17131)。第1断片受信部1721は、計算装置100Zから第1要素a21を受信する(S17231)。第1復元部1731は、次式のように第1断片受信部1721が受信した第1要素a21と当該第1要素a21に対応する第1断片a1とを加算することで数値を復元する(S17331)。
a21+a1=a21+a22+a23=A
【0079】
復元ZY過程S7032(図18(C)点線)
第3断片送信部1713は、計算装置100Yに第3要素a23を送信する(S17132)。第2断片受信部1722は、計算装置100Zから第3要素a23を受信する(S17232)。第2復元部1732は、次式のように第2断片受信部1722が受信した第3要素a23と当該第3要素a23に対応する第1要素a21と第2要素a22とを加算することで数値Aを復元する(S17332)。
a23+a21+a22=A
【0080】
上述のように、実施例1の数値を分散して記録する方法では、第1要素a21,第2要素a22,第3要素a23の3つを加算できれば、元の数値Aを復元できる。そして、いずれか2つの断片の情報が分かれば、第1要素a21,第2要素a22,第3要素a23の和を求めることができる。したがって、上述の秘密加算手段、秘密減算手段、秘密定数倍手段、秘密乗算手段、もしくは秘密否定手段の計算結果である数値Cの断片は、いずれか2つの断片が分かれば、数値Cを復元できることが分かる。
【0081】
<基本処理部>
図19に、図1と図12と図17に示した計算装置100X,100Y,100Zのいずれの計算装置としても機能できる計算装置1001(1002,1003)の機能構成例を示す。基本処理部1011(1012,1013)は、図1と図12と図17に示した構成部をすべで備えている。このように1つの計算装置が、計算装置X,計算装置Y,計算装置Zのいずれの計算装置としても機能できるようにしてもよい。この場合は、記録しているデータが第1断片から第3断片のいずれの断片かによって、その計算装置が、計算装置Xとして機能するか、計算装置Yとして機能するか、計算装置Zとして機能するかが決まる。もしくは、どの計算装置として機能させるかによって、秘匿処理などで渡す断片を決めればよい。このように、データごとに計算装置が発揮する機能が異なるようにすることで、より自由度の高い秘密計算システムを構築できる。
【0082】
<不正検出>
次に、1つの計算装置が、計算装置X,計算装置Y,計算装置Zのいずれの計算装置としても機能できるようにしたときの例として、入力された断片のデータが正しいかを確認する方法と、計算結果である断片のデータ(出力)が正しいかを確認する方法を示す。図20は、入力と出力の不正を検出するための計算装置の機能構成例を示す図である。
【0083】
計算装置2001は、基本処理部1011の他に、入力の不正を検出するために、第1乱数rxy共有部2411、第1Z送信部2421、第1乱数rxz共有部2311、第1Y送信部2321、第1受信部2231、第1断片確認部2241、第1確認乱数生成部2511、Y要素送信部2112、Y要素受信部2122、Y要素確認部2132、第2乱数rxy共有部2412、第2Z送信部2422、第2乱数ryz共有部2212、第2X送信部2222、第2受信部2332、第2断片確認部2342、第2確認乱数生成部2512、Z要素送信部2113、Z要素受信部2123、Z要素確認部2133、第3乱数rxz共有部2313、第3Y送信部2323、第3乱数ryz共有部2213、第3X送信部2223、第3受信部2433、第3断片確認部2443、第3確認乱数生成部2513、復元入力確認部254を備える。また、計算装置2001は、基本処理部1011の他に、出力の不正を検出するために、第1確認乱数生成部2511、第2確認乱数生成部2512、第3確認乱数生成部2513、復元出力確認部255を備える。したがって、入力の不正のみを検出すればよいのであれば、復元出力確認部255は不要であり、基本処理部1011中では秘匿手段と復元手段を具備していればよい。また、出力の不正のみを検出すればよいのであれば、第1確認乱数生成部2511、第2確認乱数生成部2512、第3確認乱数生成部2513、復元出力確認部255と、基本処理部1011中の秘匿手段と復元手段と計算に必要な手段のみを備えればよい。なお、各構成部の詳細な処理については後述する。
【0084】
このときの秘密計算システムは、図20に示された計算装置2001,2002,2003の3つの計算装置で構成される。そして、同一の入力(数値A)に対して3種類の断片を用意し、各計算装置が計算装置X,計算装置Y,計算装置Zのいずれの計算装置として機能するかを変更して断片を分散して記録する。また、元の数値は同じだが断片は異なる3つの入力から、各計算装置が計算装置X,計算装置Y,計算装置Zのいずれの計算装置として機能するかを変更して同一の計算を3回行い、計算結果である断片を分散して記録する。この説明では、j(1以上3以下の整数)を計算が何回目かを示す値とし、a1(j),a2(j),a3(j)を入力である数値Aに対するj番目の第1断片,第2断片,第3断片、a21(j)をj番目の第1要素、c1(j),c2(j),c3(j)を計算結果である数値Cに対するj番目の第1断片,第2断片,第3断片、c21(j),c22(j),c23(j)をj番目の第1要素,第2要素,第3要素、計算装置200X(j),計算装置200Y(j),計算装置200Z(j)をj番目の計算装置X,計算装置Y,計算装置Zとして機能する計算装置とする。なお、それぞれの回で数値の断片や計算装置の役割が異なるので、
(a1(1),a2(1),a3(1))、(a1(2),a2(2),a3(2))、(a1(3),a2(3),a3(3))は互いに異なり、
(c1(1),c2(1),c3(1))、(c1(2),c2(2),c3(2))、(c1(3),c2(3),c3(3))は互いに異なり、
(X(1),Y(1),Z(1))、(X(2),Y(2),Z(2))、(X(3),Y(3),Z(3))は互いに異なる。
【0085】
入力された断片のデータが正しいかを確認する方法
図21に入力の不正を検出する処理フローを示す。また、図22は第1要素の不正を検出する処理フローを、図23は第1断片の不正を検出する処理フローを、図24は第2要素の不正を検出する処理フローを、図25は第3要素の不正を検出する処理フローを示す図である。いずれかの計算装置2001が、j=1とする(S201)。そして、第1要素不正検出過程S21、第1断片不正検出過程S22、第2要素不正検出過程S23、第3要素不正検出過程S24を実行する。
【0086】
第1要素不正検出過程S21(図22参照)では、計算装置200Y(j)が保有する第1要素a21y(j)と計算装置200Z(j)が保有する第1要素a21z(j)とが等しいことを確認する。具体的には、計算装置200Y(j)のY要素送信部2112は、計算装置200Z(j)に自己が保有する第1要素a21y(j)を送信する(S2112)。計算装置200Z(j)のZ要素受信部2123は、計算装置200Y(j)から第1要素a21y(j)を受信する(S2123)。計算装置200Z(j)のZ要素確認部2133は、自己が保有する第1要素a21z(j)と計算装置200Y(j)から受信した第1要素a21y(j)とが等しいことを確認する(S2133)。計算装置200Z(j)のZ要素送信部2113は、計算装置200Y(j)に自己が保有する第1要素a21z(j)を送信する(S2113)。計算装置200Y(j)のY要素受信部2122は、計算装置200Z(j)から第1要素a21z(j)を受信する(S2122)。計算装置200Y(j)のY要素確認部2132は、自己が保有する第1要素a21y(j)と計算装置200Z(j)から受信した第1要素a21z(j)とが等しいことを確認する(S2132)。ステップS2123とS2132とで等しいと確認できた場合には、計算装置200Y(j)が保有する第1要素a21y(j)と計算装置200Z(j)が保有する第1要素a21z(j)とが等しいと確認できる。一方、ステップS2123とS2132のいずれかで等しくないと判断された場合には、入力に不正があったと判断される。
【0087】
第1断片不正検出過程S22(図23参照)では、第1断片a1(j)が第2要素a22(j)と第3要素a23(j)の和であることを確認する。具体的には、計算装置200Y(j)の第2乱数ryz共有部2212と計算装置200Z(j)の第3乱数ryz共有部2213との間で乱数ryzを共有する(2212,2213)。なお、乱数ryzはどちらの計算装置が生成してもよい。計算装置200Y(j)の第2X送信部2222は、計算装置200X(j)にuy(=a22(j)+ryz)を送信する(S2222)。計算装置200Z(j)の第3X送信部2223は、計算装置200X(j)にuz(=a23(j)−ryz)を送信する(S2223)。計算装置200X(j)の第1受信部2231は、計算装置200Y(j)からuyを、計算装置200Z(j)からuzを受信する(S2231)。計算装置200X(j)の第1断片確認部2241は、a1(j)=uy+uzであることを確認する(S2241)。ステップS2241で等しいと確認できた場合には、第1断片a1(j)が第2要素a22(j)と第3要素a23(j)の和であることが確認できる。一方、ステップS2241で等しくないと判断された場合には、入力に不正があったと判断される。
【0088】
第2要素不正検出過程S23(図24参照)では、第2要素a22(j)が第1断片a1(j)と第3要素a23(j)の差であることを確認する。具体的には、計算装置200X(j)の第1乱数rxz共有部2311と計算装置200Z(j)の第3乱数rxz共有部2313との間で、乱数rxzを共有する(S2311、S2313)。なお、乱数rxzはどちらの計算装置が生成してもよい。計算装置200X(j)の第1Y送信部2321は、計算装置200Y(j)にux(=a1(j)+rxz)を送信する(S2321)。計算装置200Z(j)の第3Y送信部2323は、計算装置200Y(j)にuz(=a23(j)+rxz)を送信する(S2323)。計算装置200Y(j)の第2受信部2332は、計算装置200X(j)からuxを、計算装置200Z(j)からuzを受信する(S2332)。計算装置200Y(j)の第2断片確認部2342は、a22(j)=ux−uzであることを確認する(S2342)。ステップS2342で等しいと確認できた場合には、第2要素a22(j)が第1断片a1(j)と第3要素a23(j)の差であることが確認できる。一方、ステップS2342で等しくないと判断された場合には、入力に不正があったと判断される。
【0089】
第3要素不正検出過程S24(図25参照)では、第3要素a23(j)が第1断片a1(j)と第2要素a22(j)の差であることを確認する。具体的には、計算装置200X(j)の第1乱数rxy共有部2411と計算装置200Y(j)の第2乱数rxy共有部2412との間で乱数rxyを共有する(S2411,S2412)。なお、乱数rxyはどちらの計算装置が生成してもよい。計算装置200X(j)の第1Z送信部2421は、計算装置200Z(j)にux(=a1(j)+rxy)を送信する(S2421)。計算装置200Y(j)の第2Z送信部2422は、計算装置200Z(j)にuy(=a22(j)+rxy)を送信する(S2422)。計算装置200Z(j)の第3受信部2433は、計算装置200X(j)からuxを、計算装置200Y(j)からuyを受信する(S2433)。計算装置200Z(j)の第3断片確認部2443は、a23(j)=ux−uyであることを確認する(S2443)。ステップS2443で等しいと確認できた場合には、第3要素a23(j)が第1断片a1(j)と第2要素a22(j)の差であることが確認できる。一方、ステップS2443で等しくないと判断された場合には、入力に不正があったと判断される。
【0090】
計算装置200X(j)の第1確認乱数生成部2511は、乱数rxを生成する(S2511)。計算装置200X(j)の秘匿処理手段601は、第1断片a1(j),乱数rxの断片を、3つの計算装置で分散して記録した状態にする(S2601)。
【0091】
計算装置200Y(j)の第2確認乱数生成部2512は、乱数ryを生成する(S2512)。計算装置200Y(j)の秘匿処理手段602は、第1要素a21(j),乱数ryの断片を、3つの計算装置で分散して記録した状態にする(S2602)。
【0092】
計算装置200Z(j)の第3確認乱数生成部2513は、乱数rzを生成する(S2513)。計算装置200Z(j)の秘匿処理手段603は、乱数rzの断片を、3つの計算装置で分散して記録した状態にする(S2603)。
【0093】
秘密加算手段10は、
a1(j)+a21(j)+r
ただし、r=rx+ry+rz
の計算結果の断片を、3つの計算装置で分散して記録した状態にする(S210)。いずれかの計算装置2001の復元手段70は、他の計算装置2002または計算装置2003から必要な情報を受け取り、
a1(j)+a21(j)+r
を復元して記録しておく(S270)。この処理は、jの値を変更しながら3回繰り替えされるが、計算装置X,Y,Zのどの計算装置として機能しているかに関わらず、同じ計算装置がおこなえばよい。なお、この復元を行う計算装置は、ステップS201を行った計算装置(jの値を管理している計算装置)とすればよい。そして、その計算装置が、計算装置X,Y,Zのどの計算装置として機能しているかによって、適宜復元手段を選択すればよい。ステップS201を行った計算装置(jの値を管理している計算装置)は、j=3かを確認し(S202)、Noの場合にはjにj+1を代入し(S203)ステップS21〜S24に戻る。ステップS202がYesの場合には、3つの復元結果a1(1)+a21(1)+r,a1(2)+a21(2)+r,a1(3)+a21(3)+rを取得できるいずれかの計算装置(つまり、S270を3回行った計算装置)が、復元入力確認部254で、3つの結果が等しいことを確認する(S254)。
【0094】
計算結果である断片のデータが正しいかを確認する方法
図26に出力の不正を検出する処理フローを示す。いずれかの計算装置2001が、j=1とする(S281)。次に、所定の計算を行う(S285)。所定の計算とは、この秘密計算システムを用いて行う計算と同じにすればよく、加算、乗算、論理演算などのいずれかでも、いくつかの組合せでもかまわない。
【0095】
計算装置200X(j)の第1確認乱数生成部2511は、乱数rxを生成する(S2511)。計算装置200X(j)の秘匿処理手段601は、第1断片c1(j),乱数rxの断片を、3つの計算装置で分散して記録した状態にする(S2651)。
【0096】
計算装置200Y(j)の第2確認乱数生成部2512は、乱数ryを生成する(S2512)。計算装置200Y(j)の秘匿処理手段602は、第1要素c21(j),乱数ryの断片を、3つの計算装置で分散して記録した状態にする(S2652)。
【0097】
計算装置200Z(j)の第3確認乱数生成部2513は、乱数rzを生成する(S2513)。計算装置200Z(j)の秘匿処理手段603は、乱数rzの断片を3つの計算装置で分散して記録した状態にする(S2653)。
【0098】
秘密加算手段は
c1(j)+c22(j)+r
ただし、r=rx+ry+rz
の計算結果の断片を、3つの計算装置で分散して記録した状態にする(S215)。計算装置200X(j)と計算装置200Y(j)の一方は、他方から必要な情報を受け取り、c1(j)+c22(j)+r=CXY(j)を復元して記録しておく(S271)。計算装置200Y(j)と計算装置200Z(j)の一方は、他方から必要な情報を受け取り、c1(j)+c22(j)+r=CYZ(j)を復元して記録しておく(S272)。計算装置200X(j)と計算装置200Z(j)の一方は、他方から必要な情報を受け取り、c1(j)+c22(j)+r=CXZ(j)を復元して記録しておく(S273)。ステップS281を行った計算装置(jの値を管理している計算装置)は、j=3かを確認し(S282)、Noの場合にはjにj+1を代入し(S283)ステップS285に戻る。ステップS282がYesの場合には、9つの復元結果CXY(1),CYZ(1),CXZ(1),CXY(2),CYZ(2),CXZ(2),CXY(3),CYZ(3),CXZ(3)を取得できるいずれかの計算装置(1つの計算装置では不可能なので、他の計算装置から復元結果を受信できる計算装置)が、復元結果CXY(1),CYZ(1),CXZ(1),CXY(2),CYZ(2),CXZ(2),CXY(3),CYZ(3),CXZ(3)がすべて等しいことを確認する(S255)。なお、すべての計算装置が復元結果を出力し、外部の計算装置で確認してもよい。
【0099】
出力の不正が確認できる理由
計算結果を改ざんする不正は、
A.入力の分散データを不正値とする、
B.乗算または2進変換処理の秘匿処理の手続きで他の計算装置に不正値を送信する、
C.復元処理で不正値を開示する
の何れかに帰着されることに着目する。なお、図21の処理において何れかの計算装置が手続きを偽った場合は、不正Aの検出ができなくなるが、その場合は不正BまたはCの問題に帰着される。
【0100】
次に、不正Bは1/2λ以下の確率を除き図26の処理で不正検出されることを示す。ただし、λは適当な整数である。不正Aは各計算装置が図21の処理を正しく行えば防ぐことができる。不正Cは図26の処理によって防ぐことができる。したがって以下では不正Bについて考える。2進変換処理の秘匿処理で他の計算装置に不正値を送信する場合は、各計算装置が図21の処理を正しく行えば図21の処理で検出され、そうでない場合は、次段以降の乗算または2進変換処理の秘匿処理で他の計算装置に不正値を送信することに帰着される。次段以降に乗算および2進変換処理の秘匿処理が無い場合は不正Cの問題に帰着される。
【0101】
次に、乗算の処理で他の計算装置に不正値を送信する場合を考える。各計算装置は乗算c=abにおいて計算装置Xの処理を行う際、計算装置Y,Zにそれぞれ(r1,r2,r3,c22),(a1−r1,b1−r2,r4,c23)を送信する。r1,r2,r3,c22は乱数だから、a1−r1,b1−r2,r4,c23をそれぞれa〜、b〜、c23〜に置き換えたとき、計算装置Zが得る乗算結果の分散データはc3〜=(c21〜,c23〜)=(y+a21b〜+a〜b21+r4,c23〜)となる。すなわち、(c21−c21〜,c23−c23〜)=(a21(b1−r2−b〜)+(a1−r1−a〜)b21,c23−c23〜)の差分が生じる。しかし計算装置Xはa21,b21,c23を知らないため、この差分をもう2回の乗算c=abの実行時の計算装置Zの分散データに付加することができず、図26の処理で不正検出されない確率は高々1/2λとなる。
【0102】
最後に、実施例1の基本処理部と不正検出について、情報理論的安全性に基づく既存方式との比較を行う。非特許文献1では算術演算および論理回路演算を独立に実行することができ、非特許文献2の2進変換処理によってそれらを組み合わせた計算が可能となる。算術演算および論理回路演算は既存方式も本発明の提案方式もともにO(λ)の計算量となる。乗算のときのみ、O(1)の通信回数とO(λ)の通信量を必要とするが、実施例1の方式は乗算の計算がより単純となる。また、非特許文献1では、不正検出のためにGeneralized Reed-Miller Code に基づくエラー訂正処理が行われている。しかし、4つ以上の計算装置が計算に関与する必要があり、本発明とは計算装置の構成が異なる。
【0103】
実施例1の秘密計算システムでは、断片を分散して記録した状態からの加減算や定数倍演算は、非特許文献1と同様に、各計算装置が単独で計算できる。乗算や論理回路演算については、非特許文献2と同様に各計算装置の協調計算が必要となる。更に本発明の秘密計算システムは、2進数変換や整数変換についても他の計算の単純な拡張として実現できる。これにより、算術演算および論理回路演算の組合せ計算が可能となる。また計算結果を復元する前に不正の有無を検証できるため、単独の計算装置が不正を働いたとしても入力値の秘匿性は保証される。
【0104】
以上のように、実施例1の秘密計算システムは、単純な計算により秘匿関数計算を実現しており、入力や各計算装置の処理の不正を効率良く検出できる特徴を持つ。また算術演算と論理回路演算の組み合わせにも適用できるため、算術演算とともに絶対値や大小比較といった論理回路演算が必要となるマイニングや統計処理に適している。
【実施例2】
【0105】
次に、論理回路Cの演算結果C(A)=Eを求める場合の秘密計算システムについて説明する。図27に、実施例2の秘密計算システムの機能構成例を示す。また、図28に、実施例2の秘密計算システムの処理フロー例を示す。実施例2の秘密計算システムも、3つの計算装置500X,500Y,500Zと、これらの計算装置をつなぐネットワーク100から構成される。この実施例では、Nを2以上の整数、nを1以上N以下の整数、a1[n]を第1断片a1を2進表現したときの下位n桁目の値とする。
【0106】
計算装置500Xは、乱数生成部511、第1演算送信部521、第1演算受信部531、第1演算復号部541、第1記録部591を有し、計算装置500Yは、第2置換乱数受信部512、要素生成部522、garbled circuit生成部532、第2演算送信部542、第2演算復号部562、第2記録部592を有し、計算装置500Zは、第3演算受信部513、演算実行部523、第3演算送信部533、第3演算復号部543、第3記録部593を有す。
【0107】
実施例2の秘密計算システムでも、入力である数値Aは3つの断片に分けられ、3つの計算装置に分配された状態となっている。具体的には、数値Aの第1断片a1,第2断片a2,第3断片a3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ
の関係を持つ。そして、計算装置500Xの第1記録部591が第1断片を記録し、計算装置500Yの第2記録部592が第2断片を記録し、計算装置500Zの第3記録部593が第3断片を記録する。
【0108】
計算装置500Xの乱数生成部511は、2N個の乱数(r0,1,r1,1),…,(r0,N,r1,N)を生成する(S511)。第1演算送信部521は、乱数(r0,1,r1,1),…,(r0,N,r1,N)を計算装置500Yに送信し、ra1[1],1,…,ra1[N],Nを計算装置500Zに送信する(S521)。計算装置500Yの第2置換乱数受信部512は、計算装置500Xから乱数(r0,1,r1,1),…,(r0,N,r1,N)を受信する(S512)。要素生成部522は、Nビットの乱数e21,e22を生成し、第1要素e21,第2要素e22とする(S522)。
【0109】
計算装置500Yのgarbled circuit生成部532は、第1断片a1が入力された場合に第1断片e1と第3要素e23を出力する論理回路C”の入出力を乱数に置き換えたgarbled circuit GC”(ただし、入力である第1断片a1は乱数(r0,1,r1,1),…,(r0,N,r1,N)に置き換えられる)と、garbled circuit GC”の出力である第1乱数断片e’1,第3乱数要素e’23それぞれを、第1断片e1,第3要素e23に変換する第1断片関数t1,第3要素関数t23を生成する(S532)。なお、garbled circuit GC”を生成する方法については、参考許文献1(Koji Chida and Katsumi Takahashi: Privacy Preserving Computations without Public Key Cryptographic Operation, Proc. of IWSEC 2008, pp.184-200.)の3.2 Protocol II、および 2 Previous WorkのYao’s Two Party Secure Function Evaluationに詳しく説明されている。第2演算送信部542は、第1断片関数t1を計算装置500Xに送信し、garbled circuit GC”と第3要素関数t23と第1要素e21を計算装置500Zに送信する(S542)。
【0110】
計算装置500Zの第3演算受信部513は、計算装置500Xからra1[1],1,…,ra1[N],Nを受信し、計算装置500Yからgarbled circuit GC”と第3要素関数t23と第1要素e21を受信する(S513)。演算実行部523は、ra1[1],1,…,ra1[N],Nとgarbled circuit GC”とを用いて、第1乱数断片e’1,第3乱数要素e’23を求める(S523)。第3演算送信部533は、第1乱数断片e’1を計算装置500Xに送信する(S533)。
【0111】
計算装置500Xの第1演算受信部531は、計算装置500Yから第1断片関数t1を受信し、計算装置500Zから第1乱数断片e’1を受信する(S531)。第1演算復号部541は、第1断片e1をe1=t1(e’1)のように求め、第1記録部591に記録する(S541)。計算装置500Yの第2演算復号部562は、第2断片e2をe2=(e21,e22)とし、第2記録部592に記録する(S562)。計算装置500Zの第3演算復号部543は、第3要素e23をe23=t23(e’23)のように求め、第3断片e3をe3=(e21,e23)とし、第3記録部593に記録する(S543)。
【0112】
実施例2の秘密計算システムはこのような構成なので、任意の論理回路Cの結果Eの第1断片e1を第1記録部5901が記録し、第2断片e2を第2記録部5902が記録し、第3断片e3を第3記録部5903が記録した状態となる。また、garbled circuitを用いているので、いずれの計算装置も入力の数値Aも結果である数値Cも、単独では知ることができない。つまり、実施例2によれば、容易に任意の論理回路Cについての秘密計算システムを構築できる。また、数値を分散して記録する方法が実施例1と同じなので、実施例1の秘匿処理手段と復元手段を用いることができる。このように、実施例2の秘密計算システムも実施例1と同様の効果が得られる。
【実施例3】
【0113】
実施例2では、実施例1と同じ方法で数値を分散して記録することを前提に、任意の論理回路Cについての秘密計算システムを構築した。実施例3では、数値を分散して記録する部分を一般化した秘密計算システムについて説明する。実施例3の秘密計算システムも、論理回路Cの演算結果C(A)=Eを求めるシステムである。図29に、実施例3の秘密計算システムの機能構成例を示す。また、図30に、実施例3の秘密計算システムの処理フロー例を示す。実施例3の秘密計算システムも、3つの計算装置700X,700Y,700Zと、これらの計算装置をつなぐネットワーク100から構成される。この実施例では、Nを2以上の整数、nを1以上N以下の整数、a1,a2,a3をNビット以下の数値Aの第1断片,第2断片,第3断片、e1,e2,e3を数値Aを論理回路Cに入力したときの出力E=C(A)の第1断片,第2断片,第3断片、a1[n]を第1断片a1を2進表現したときの下位n桁目の値とする。また、f1を任意の数値から第1断片を求める関数、f2を任意の数値から第2断片を求める関数、f3を任意の数値から第3断片を求める関数、g12を第1断片と第2断片から元の数値を復元する関数、g23を第2断片と第3断片から元の数値を復元する関数、g13を第1断片と第3断片から元の数値を復元する関数とする。
【0114】
計算装置700Xは、乱数生成部511、第1演算送信部521、第1演算受信部531、第1演算復号部541、第1記録部591を有し、計算装置Yは、第2置換乱数受信部512、garbled circuit生成部732、第2演算送信部742、第2乱数断片受信部752、第2演算復号部762、第2記録部792を有し、計算装置700Zは、第3演算受信部713、演算実行部723、第3演算送信部733、第3演算復号部743、第3記録部793を有す。
【0115】
実施例3の秘密計算システムでは、入力である数値Aは3つの断片に分けられ、3つの計算装置に分配された状態となっている。具体的には、数値Aの第1断片a1,第2断片a2,第3断片a3は、
a1=f1(A)
a2=f2(A)
a3=f3(A)
A=g12(a1,a2)=g23(a2,a3)=g13(a1,a3)
の関係を持つ。そして、計算装置700Xの第1記録部591が第1断片を記録し、計算装置700Yの第2記録部792が第2断片を記録し、計算装置700Zの第3記録部793が第3断片を記録する。
【0116】
計算装置700Xの乱数生成部511は、2N個の乱数(r0,1,r1,1),…,(r0,N,r1,N)を生成する(S511)。第1演算送信部521は、乱数(r0,1,r1,1),…,(r0,N,r1,N)を計算装置700Yに送信し、ra1[1],1,…,ra1[N],Nを計算装置700Zに送信する(S521)。
【0117】
計算装置700Yの第2置換乱数受信部512は、計算装置700Xから乱数(r0,1,r1,1),…,(r0,N,r1,N)を受信する(S512)。garbled circuit生成部732は、第1断片a1が入力された場合に第1断片e1,第2断片e2,第3断片e3を出力する論理回路C’の入出力を乱数に置き換えたgarbled circuit GC’(ただし、入力である第1断片a1は乱数(r0,1,r1,1),…,(r0,N,r1,N)に置き換えられる)と、前記garbled circuit GC’の出力である第1乱数断片e’1,第2乱数断片e’2,第3乱数断片e’3それぞれを、第1断片e1,第2断片e2,第3断片e3に変換する第1断片関数t1,第2断片関数t2,第3断片関数t3を生成する(S732)。なお、garbled circuit GC’を生成する方法については、参考許文献1(Koji Chida and Katsumi Takahashi: Privacy Preserving Computations without Public Key Cryptographic Operation, Proc. of IWSEC 2008, pp.184-200.)の3.2 Protocol II、および 2 Previous WorkのYao’s Two Party Secure Function Evaluationに詳しく説明されている。第2演算送信部742は、第1断片関数t1を計算装置700Xに送信し、garbled circuit GC’と第3断片関数t3を計算装置700Zに送信する(S742)。
【0118】
計算装置700Zの第3演算受信部713は、計算装置700Xからra1[1],1,…,ra1[N],Nを受信し、計算装置700Yからgarbled circuit GC’と第3断片関数t3を受信する(S713)。演算実行部723は、ra1[1],1,…,ra1[N],Nとgarbled circuit GC’とを用いて、第1乱数断片e’1,第2乱数断片e’2,第3乱数断片e’3を求める(S723)。第3演算送信部733は、第1乱数断片e’1を計算装置700Xに送信し、第2乱数断片e’2を計算装置700Yに送信する(S733)。
【0119】
計算装置700Xの第1演算受信部531は、計算装置700Yから第1断片関数t1を受信し、計算装置700Zから第1乱数断片e’1を受信する(S531)。第1演算復号部541は、第1断片e1をe1=t1(e’1)のように求め、第1記録部591に記録する(S541)。計算装置700Yの第2乱数断片受信部752は、計算装置700Zから第2乱数断片e’2を受信する(S752)。第2演算復号部762は、第2断片e2をe2=t2(e’2)のように求め、第2記録部792に記録する(S762)。計算装置700Zの第3演算復号部743は、第3断片e3をe3=t3(e’3)のように求め、第3記録部793に記録する(S743)。
【0120】
実施例3の秘密計算システムはこのような構成なので、任意の論理回路Cの結果Eの第1断片e1を第1記録部5901が記録し、第2断片e2を第2記録部7902が記録し、第3断片e3を第3記録部7903が記録した状態となる。また、garbled circuitを用いているので、いずれの計算装置も入力の数値Aも結果である数値Cも、単独では知ることができない。つまり、実施例3によれば、容易に任意の論理回路Cについての秘密計算システムを構築できる。このように、実施例3の秘密計算システムも実施例2と同様の効果が得られる。
【産業上の利用可能性】
【0121】
本発明は、プライバシー保護データマイニングなど、情報を秘密性を維持しながら情報を利用するようなシステムに利用することができる。
【符号の説明】
【0122】
100、200、500、700 計算装置
1101 第1加算部 1201 第1減算部
1301 第1定数倍計算部 1411 乗算乱数生成部
1421 第1乗算部 1431 第1乗算送信部
1501 第1否定部 1901、591 第1記録部
1102 第2加算部 1202 第2減算部
1302 第2定数倍計算部 1442 第2乗算乱数受信部
1452 第2乗算中間値計算部 1462 第2乗算送信部
1472 第2乗算中間値受信部 1482 第2乗算部
1502 第2否定部 1902、592、792 第2記録部
1103 第3加算部 1203 第3減算部
1303 第3定数倍計算部 1443 第3乗算乱数受信部
1453 第3乗算中間値計算部 1463 第3乗算送信部
1473 第3乗算中間値受信部 1483 第3乗算部
1503 第3否定部 1903、593、793 第3記録部
1611、1612、1613 断片生成部
1621、1622、1623 断片分配部
1711 第1断片送信部 1721 第1断片受信部
1731 第1復元部 1712 第2断片送信部
1722 第2断片受信部 1732 第2復元部
1713 第3断片送信部 1723 第3断片受信部
1733 第3復元部 1011、1012、1013 基本処理部
2411 第1乱数rxy共有部 2421 第1Z送信部
2311 第1乱数rxz共有部 2321 第1Y送信部
2231 第1受信部 2241 第1断片確認部
2511 第1確認乱数生成部 2112 要素送信部
2122 Y要素受信部 2132 Y要素確認部
2412 第2乱数rxy共有部 2422 第2Z送信部
2212 第2乱数ryz共有部 2222 第2X送信部
2332 第2受信部 2342 第2断片確認部
2512 第2確認乱数生成部 2113 Z要素送信部
2123 Z要素受信部 2133 Z要素確認部
2313 第3乱数rxz共有部 2323 第3Y送信部
2213 第3乱数ryz共有部 2223 第3X送信部
2433 第3受信部 2443 第3断片確認部
2513 第3確認乱数生成部 254 復元入力確認部
255 復元出力確認部 511 乱数生成部
521 第1演算送信部 531 第1演算受信部
541 第1演算復号部 512 第2置換乱数受信部
522 要素生成部 532、732 garbled circuit生成部
542、742 第2演算送信部 752 第2乱数断片受信部
562、762 第2演算復号部 513、713 第3演算受信部
523、723 演算実行部 533、733 第3演算送信部
543、743 第3演算復号部
【特許請求の範囲】
【請求項1】
3つの計算装置から構成される秘密計算システムであって、
数値Aの第1断片a1,第2断片a2,第3断片a3と、数値Bの第1断片b1,第2断片b2,第3断片b3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
b1=b22+b23
b2=(b21,b22)
b3=(b21,b23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ、第1要素b21,第2要素b22,第3要素b23はB=b21+b22+b23を満たす任意の数値の組合せ
の関係を有し、
計算装置Xとして機能する計算装置が第1断片を記録し、
計算装置Yとして機能する計算装置が第2断片を記録し、
計算装置Zとして機能する計算装置が第3断片を記録し、
秘密加算手段として、
前記計算装置Xが、
A+Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=a1+b1
のように求める第1加算部
を有し、
前記計算装置Yが、
A+Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(a21+b21,a22+b22)
のように求める第2加算部
を有し、
前記計算装置Zが、
A+Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(a21+b21,a23+b23)
のように求める第3加算部
を有す
ことを特徴とする秘密計算システム。
【請求項2】
3つの計算装置から構成される秘密計算システムであって、
数値Aの第1断片a1,第2断片a2,第3断片a3と、数値Bの第1断片b1,第2断片b2,第3断片b3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
b1=b22+b23
b2=(b21,b22)
b3=(b21,b23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ、第1要素b21,第2要素b22,第3要素b23はB=b21+b22+b23を満たす任意の数値の組合せ
の関係を有し、
計算装置Xとして機能する計算装置が第1断片を記録し、
計算装置Yとして機能する計算装置が第2断片を記録し、
計算装置Zとして機能する計算装置が第3断片を記録し、
前記計算装置Xは、
A−Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=a1−b1
のように求める第1減算部
を有し、
前記計算装置Yは、
A−Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(a21−b21,a22−b22)
のように求める第2減算部
を有し、
前記計算装置Zは、
A−Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(a21−b21,a23−b23)
のように求める第3減算部
を有す
ことを特徴とする秘密計算システム。
【請求項3】
3つの計算装置から構成される秘密計算システムであって、
数値Aの第1断片a1,第2断片a2,第3断片a3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ
の関係を有し、
計算装置Xとして機能する計算装置が第1断片を記録し、
計算装置Yとして機能する計算装置が第2断片を記録し、
計算装置Zとして機能する計算装置が第3断片を記録し、
前記計算装置Xは、
Aを数値B倍した結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=Ba1
のように求める第1定数倍計算部
を有し、
前記計算装置Yは、
Aを数値B倍した結果である数値Cの第2断片c2を、
c2=(c21,c22)=(Ba21,Ba22)
のように求める第2定数倍計算部
を有し、
前記計算装置Zは、
Aを数値B倍した結果である数値Cの第3断片c3を、
c3=(c21,c23)=(Ba21,Ba23)
のように求める第3定数倍計算部
を有す
ことを特徴とする秘密計算システム。
【請求項4】
3つの計算装置から構成される秘密計算システムであって、
数値Aの第1断片a1,第2断片a2,第3断片a3と、数値Bの第1断片b1,第2断片b2,第3断片b3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
b1=b22+b23
b2=(b21,b22)
b3=(b21,b23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ、第1要素b21,第2要素b22,第3要素b23はB=b21+b22+b23を満たす任意の数値の組合せ
の関係を有し、
計算装置Xとして機能する計算装置が第1断片を記録し、
計算装置Yとして機能する計算装置が第2断片を記録し、
計算装置Zとして機能する計算装置が第3断片を記録し、
前記計算装置Xは、
乱数r1,r2,r3,r4,r5を生成する乗算乱数生成部と、
A×Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1、第2要素c22、第3要素c23を
c1=a1b1−r3−r4
c22=r5
c23=c1−c22
のように求める第1乗算部と、
前記計算装置Yに(r1,r2,r3,c22)を、前記計算装置Zに(a1−r1,b1−r2,r4,c23)を送信する第1乗算送信部と
を有し、
前記計算装置Yは、
前記計算装置Xから(r1,r2,r3,c22)を受信する第2乗算乱数受信部と、
数値yを
y=a21b21+a21r2+r1b21+r3
のように求める第2乗算中間値計算部と、
前記計算装置Zに数値yを送信する第2乗算送信部と、
前記計算装置Zから数値zを受信する第2乗算中間値受信部と、
A×Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(y+z,c22)
のように求める第2乗算部
を有し、
前記計算装置Zは、
前記計算装置Xから(a1−r1,b1−r2,r4,c23)を受信する第3乗算乱数受信部と、
数値zを
z=a21(b1−r2)+(a1−r1)b21+r4
のように求める第3乗算中間値計算部と、
前記計算装置Yに数値zを送信する第3乗算送信部と、
前記計算装置Yから数値yを受信する第3乗算中間値受信部と、
A×Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(y+z,c23)
のように求める第3乗算部
を有す
ことを特徴とする秘密計算システム。
【請求項5】
3つの計算装置から構成される秘密計算システムであって、
数値Aの第1断片a1,第2断片a2,第3断片a3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ
の関係を有し、
計算装置Xとして機能する計算装置が第1断片を記録し、
計算装置Yとして機能する計算装置が第2断片を記録し、
計算装置Zとして機能する計算装置が第3断片を記録し、
前記計算装置Xは、
1−Aの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=−a1
のように求める第1否定部
を有し、
前記計算装置Yは、
1−Aの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(1−a21,−a22)
のように求める第2否定部
を有し、
前記計算装置Zは、
1−Aの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(1−a21,−a23)
のように求める第3否定部
を有す
ことを特徴とする秘密計算システム。
【請求項6】
請求項1から5のいずれかに記載の秘密計算システムであって、
いずれかの計算装置が、
自己が保持する数値Sから
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23と
s1=s22+s23
s2=(s21,s22)
s3=(s21,s23)
の関係を有する第1断片s1,第2断片s2,第3断片s3を求める断片生成部と、
計算装置Xとして機能する計算装置が第1断片s1を、計算装置Yとして機能する計算装置が第2断片s2を、計算装置Zとして機能する計算装置が第3断片s3を記録した状態にする断片分配部と
を備えることを特徴とする秘密計算システム。
【請求項7】
請求項1記載の秘密計算システムであって、
jを1以上3以下の整数、a1(j),a2(j),a3(j)を数値Aに対するj番目の第1断片,第2断片,第3断片、a21(j)をj番目の第1要素、計算装置X(j),計算装置Y(j),計算装置Z(j)をj番目の第1断片a1(j),第2断片a2(j),第3断片a3(j)に対して計算装置X,計算装置Y,計算装置Zとして機能する計算装置、乱数rを乱数rx,ry,rzの和とし、
前記3つの計算装置は、どの計算装置も、計算装置X,計算装置Y,計算装置Zのいずれとしても機能でき、
(X(1),Y(1),Z(1))、(X(2),Y(2),Z(2))、(X(3),Y(3),Z(3))はそれぞれ異なり、
(a1(1),a2(1),a3(1))、(a1(2),a2(2),a3(2))、(a1(3),a2(3),a3(3))はそれぞれ異なり、
秘匿処理手段は、任意の数値Sに対して、
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23と
s1=s22+s23
s2=(s21,s22)
s3=(s21,s23)
の関係を有する第1断片s1,第2断片s2,第3断片s3を求める断片生成部と、
前記計算装置Xが第1断片s1を、前記計算装置Yが第2断片s2を、前記計算装置Zが第3断片s3を記録した状態にする断片分配部と
を有する手段であり、
復元手段は、
前記計算装置Xが、
前記計算装置Yまたは前記計算装置Zに第1断片を送信する第1断片送信部と、
前記計算装置Yまたは前記計算装置Zから第1要素を受信する第1断片受信部と、
前記第1断片受信部が受信した第1要素と当該第1要素に対応する第1断片とを加算することで数値を復元する第1復元部
も有し、
前記計算装置Yが、
前記計算装置Xに第1要素を送信する、または前記計算装置Zに第2要素を送信する第2断片送信部と、
前記計算装置Xから第1断片を受信する、または前記計算装置Zから第3要素を受信する第2断片受信部と、
前記第2断片受信部が受信した第1断片と当該第1断片に対応する第1要素とを加算することで数値を復元する、または前記第2断片受信部が受信した第3要素と当該第3要素に対応する第1要素と第2要素とを加算することで数値を復元する第2復元部
も有し、
前記計算装置Zが、
前記計算装置Xに第1要素を送信する、または前記計算装置Yに第3要素を送信する第3断片送信部と、
前記計算装置Xから第1断片を受信する、または前記計算装置Yから第2要素を受信する第3断片受信部と、
前記第3断片受信部が受信した第1断片と当該第1断片に対応する第1要素とを加算することで数値を復元する、または前記第3断片受信部が受信した第2要素と当該第2要素に対応する第1要素と第3要素とを加算することで数値を復元する第3復元部
も有する手段であり、
すべての計算装置は、
前記秘匿手段と前記復元手段を有すると共に、
計算装置X(j)として機能するために、
計算装置Y(j)との間で乱数rxyを共有するための第1乱数rxy共有部と、
計算装置Z(j)にux(=a1(j)+rxy)を送信する第1Z送信部と、
計算装置Z(j)との間で乱数rxzを共有するための第1乱数rxz共有部と、
計算装置Y(j)にux(=a1(j)+rxz)を送信する第1Y送信部と、
計算装置Y(j)からuyを、計算装置Z(j)からuzを受信する第1受信部と、
a1(j)=uy+uzであることを確認する第1断片確認部と、
乱数rxを生成する第1確認乱数生成部と、
を有し、
計算装置Y(j)として機能するために、
計算装置Z(j)に自己が保有する第1要素a21y(j)を送信するY要素送信部と、
計算装置Z(j)から第1要素a21z(j)を受信するY要素受信部と、
自己が保有する第1要素a21y(j)と計算装置Z(j)から受信した第1要素a21z(j)とが等しいことを確認するY要素確認部と、
計算装置X(j)との間で乱数rxyを共有するための第2乱数rxy共有部と、
計算装置Z(j)にuy(=a22(j)+rxy)を送信する第2Z送信部と、
計算装置Z(j)との間で乱数ryzを共有するための第2乱数ryz共有部と、
計算装置X(j)にuy(=a22(j)+ryz)を送信する第2X送信部と、
計算装置X(j)からuxを、計算装置Z(j)からuzを受信する第2受信部と、
a22(j)=ux−uzであることを確認する第2断片確認部と、
乱数ryを生成する第2確認乱数生成部と、
を有し、
計算装置Z(j)として機能するために、
計算装置Y(j)に自己が保有する第1要素a21z(j)を送信するZ要素送信部と、
計算装置Y(j)から第1要素a21y(j)を受信するZ要素受信部と、
自己が保有する第1要素a21z(j)と計算装置Y(j)から受信した第1要素a21y(j)とが等しいことを確認するZ要素確認部と、
計算装置X(j)との間で乱数rxzを共有するための第3乱数rxz共有部と、
計算装置Y(j)にuz(=a23(j)+rxz)を送信する第3Y送信部と、
計算装置Y(j)との間で乱数ryzを共有するための第3乱数ryz共有部と、
計算装置X(j)にuz(=a23(j)−ryz)を送信する第3X送信部と、
計算装置X(j)からuxを、計算装置Y(j)からuyを受信する第3受信部と、
a23(j)=ux−uyであることを確認する第3断片確認部と、
乱数rzを生成する第3確認乱数生成部と
を有し、
前記秘匿手段は、
計算装置X(j)として機能するときは、第1断片a1(j),乱数rxの断片を分散した状態とし、
計算装置Y(j)として機能するときは、第1要素a21(j),乱数ryの断片を分散した状態とし、
計算装置Z(j)として機能するときは、乱数rzの断片を分散した状態とする
手段であり、
前記秘密加算手段は
a1(j)+a21(j)+r
の断片を求める手段であり、
前記復元手段は
a1(1)+a21(1)+r,a1(2)+a21(2)+r,a1(3)+a21(3)+r
を復元する手段であり、
3つの復元結果を取得できるいずれかの計算装置が、3つの結果が等しいことを確認する復元入力確認部を備える
ことを特徴とする秘密計算システム。
【請求項8】
同一の数値に対する異なる3種類の断片の組合せを入力とし、それぞれの断片の組合せに対して計算を行う請求項1記載の秘密計算システムであって、
jを1以上3以下の整数、c1(j),c2(j),c3(j)を計算結果である数値Cに対するj番目の第1断片,第2断片,第3断片、c21(j),c22(j),c23(j)をj番目の第1要素,第2要素,第3要素、計算装置X(j),計算装置Y(j),計算装置Z(j)をj番目の第1断片c1(j),第2断片c2(j),第3断片c3(j)を求めたときに計算装置X,計算装置Y,計算装置Zとして機能した計算装置、乱数rを乱数rx,ry,rzの和とし、
前記3つの計算装置は、どの計算装置も、計算装置X,計算装置Y,計算装置Zのいずれとしても機能でき、
(X(1),Y(1),Z(1))、(X(2),Y(2),Z(2))、(X(3),Y(3),Z(3))はそれぞれ異なり、
(c1(1),c2(1),c3(1))、(c1(2),c2(2),c3(2))、(c1(3),c2(3),c3(3))はそれぞれ異なり、
秘匿処理手段は、任意の数値Sに対して、
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23と
s1=s22+s23
s2=(s21,s22)
s3=(s21,s23)
の関係を有する第1断片s1,第2断片s2,第3断片s3を求める断片生成部と、
前記計算装置Xが第1断片s1を、前記計算装置Yが第2断片s2を、前記計算装置Zが第3断片s3を記録した状態にする断片分配部と
を有する手段であり、
復元手段は、
前記計算装置Xが、
前記計算装置Yまたは前記計算装置Zに第1断片を送信する第1断片送信部と、
前記計算装置Yまたは前記計算装置Zから第1要素を受信する第1断片受信部と、
前記第1断片受信部が受信した第1要素と当該第1要素に対応する第1断片とを加算することで数値を復元する第1復元部
も有し、
前記計算装置Yが、
前記計算装置Xに第1要素を送信する、または前記計算装置Zに第2要素を送信する第2断片送信部と、
前記計算装置Xから第1断片を受信する、または前記計算装置Zから第3要素を受信する第2断片受信部と、
前記第2断片受信部が受信した第1断片と当該第1断片に対応する第1要素とを加算することで数値を復元する、または前記第2断片受信部が受信した第3要素と当該第3要素に対応する第1要素と第2要素とを加算することで数値を復元する第2復元部
も有し、
前記計算装置Zが、
前記計算装置Xに第1要素を送信する、または前記計算装置Yに第3要素を送信する第3断片送信部と、
前記計算装置Xから第1断片を受信する、または前記計算装置Yから第2要素を受信する第3断片受信部と、
前記第3断片受信部が受信した第1断片と当該第1断片に対応する第1要素とを加算することで数値を復元する、または前記第3断片受信部が受信した第2要素と当該第2要素に対応する第1要素と第3要素とを加算することで数値を復元する第3復元部
も有する手段であり、
すべての計算装置は、
前記秘匿手段と前記復元手段を有すると共に、
計算装置X(j)として機能するために、乱数rxを生成する第1確認乱数生成部を有し、
計算装置Y(j)として機能するために、乱数ryを生成する第2確認乱数生成部を有し、
計算装置Z(j)として機能するために、乱数rzを生成する第3確認乱数生成部を有し、
前記秘匿手段は、
計算装置X(j)として機能するときは、第1断片c1(j),乱数rxの断片を分散した状態とし、
計算装置Y(j)として機能するときは、第1要素c21(j),乱数ryの断片を分散した状態とし、
計算装置Z(j)として機能するときは、乱数rzの断片を分散した状態とする
手段であり、
前記秘密加算手段は
c1(j)+c22(j)+r
の断片を求める手段でもあり、
前記復元手段は
j=1,2,3に対して、
c1(j)+c22(j)+r
の計算結果を、計算装置X(j)と計算装置Y(j)による復元と、計算装置Y(j)と計算装置Z(j)による復元と、計算装置X(j)と計算装置Z(j)による復元とを行う手段であり、
9つの復元結果を取得できるいずれかの計算装置が、9つの結果が等しいことを確認する復元出力確認部を備える
ことを特徴とする秘密計算システム。
【請求項9】
同一の数値に対する異なる3種類の断片の組合せを入力とし、それぞれの断片の組合せに対して計算を行う請求項2から5のいずれかに記載の秘密計算システムであって、
jを1以上3以下の整数、c1(j),c2(j),c3(j)を計算結果である数値Cに対するj番目の第1断片,第2断片,第3断片、c21(j),c22(j),c23(j)をj番目の第1要素,第2要素,第3要素、計算装置X(j),計算装置Y(j),計算装置Z(j)をj番目の第1断片c1(j),第2断片c2(j),第3断片c3(j)を求めたときに計算装置X,計算装置Y,計算装置Zとして機能した計算装置、乱数rを乱数rx,ry,rzの和とし、
前記3つの計算装置は、どの計算装置も、計算装置X,計算装置Y,計算装置Zのいずれとしても機能でき、
(X(1),Y(1),Z(1))、(X(2),Y(2),Z(2))、(X(3),Y(3),Z(3))はそれぞれ異なり、
(c1(1),c2(1),c3(1))、(c1(2),c2(2),c3(2))、(c1(3),c2(3),c3(3))はそれぞれ異なり、
秘匿処理手段は、任意の数値Sに対して、
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23と
s1=s22+s23
s2=(s21,s22)
s3=(s21,s23)
の関係を有する第1断片s1,第2断片s2,第3断片s3を求める断片生成部と、
前記計算装置Xが第1断片s1を、前記計算装置Yが第2断片s2を、前記計算装置Zが第3断片s3を記録した状態にする断片分配部と
を有する手段であり、
秘密加算手段は、
前記計算装置Xが、
A+Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=a1+b1
のように求める第1加算部
を有し、
前記計算装置Yが、
A+Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(a21+b21,a22+b22)
のように求める第2加算部
を有し、
前記計算装置Zが、
A+Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(a21+b21,a23+b23)
のように求める第3加算部
を有する手段であり、
復元手段は、
前記計算装置Xが、
前記計算装置Yまたは前記計算装置Zに第1断片を送信する第1断片送信部と、
前記計算装置Yまたは前記計算装置Zから第1要素を受信する第1断片受信部と、
前記第1断片受信部が受信した第1要素と当該第1要素に対応する第1断片とを加算することで数値を復元する第1復元部
も有し、
前記計算装置Yが、
前記計算装置Xに第1要素を送信する、または前記計算装置Zに第2要素を送信する第2断片送信部と、
前記計算装置Xから第1断片を受信する、または前記計算装置Zから第3要素を受信する第2断片受信部と、
前記第2断片受信部が受信した第1断片と当該第1断片に対応する第1要素とを加算することで数値を復元する、または前記第2断片受信部が受信した第3要素と当該第3要素に対応する第1要素と第2要素とを加算することで数値を復元する第2復元部
も有し、
前記計算装置Zが、
前記計算装置Xに第1要素を送信する、または前記計算装置Yに第3要素を送信する第3断片送信部と、
前記計算装置Xから第1断片を受信する、または前記計算装置Yから第2要素を受信する第3断片受信部と、
前記第3断片受信部が受信した第1断片と当該第1断片に対応する第1要素とを加算することで数値を復元する、または前記第3断片受信部が受信した第2要素と当該第2要素に対応する第1要素と第3要素とを加算することで数値を復元する第3復元部
も有する手段であり、
すべての計算装置は、
前記秘匿手段と前記秘密加算手段と前記復元手段を有すると共に、
計算装置X(j)として機能するために、乱数rxを生成する第1確認乱数生成部を有し、
計算装置Y(j)として機能するために、乱数ryを生成する第2確認乱数生成部を有し、
計算装置Z(j)として機能するために、乱数rzを生成する第3確認乱数生成部を有し、
前記秘匿手段は、
計算装置X(j)として機能するときは、第1断片c1(j),乱数rxの断片を分散した状態とし、
計算装置Y(j)として機能するときは、第1要素c21(j),乱数ryの断片を分散した状態とし、
計算装置Z(j)として機能するときは、乱数rzの断片を分散した状態とする
手段であり、
前記秘密加算手段は
c1(j)+c22(j)+r
の断片を求める手段であり、
前記復元手段は
j=1,2,3に対して、
c1(j)+c22(j)+r
の計算結果を、計算装置X(j)と計算装置Y(j)による復元と、計算装置Y(j)と計算装置Z(j)による復元と、計算装置X(j)と計算装置Z(j)による復元とを行う手段であり、
9つの復元結果を取得できるいずれかの計算装置が、9つの結果が等しいことを確認する復元出力確認部を備える
ことを特徴とする秘密計算システム。
【請求項10】
3つの計算装置から構成される秘密計算システムであって、
数値Aの第1断片a1,第2断片a2,第3断片a3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ
の関係を有し、
計算装置Xとして機能する計算装置が第1断片を記録し、
計算装置Yとして機能する計算装置が第2断片を記録し、
計算装置Zとして機能する計算装置が第3断片を記録し、
Nを2以上の整数、nを1以上N以下の整数、a1[n]を第1断片a1を2進表現したときの下位n桁目の値とし、
前記計算装置Xは、
2N個の乱数(r0,1,r1,1),…,(r0,N,r1,N)を生成する乱数生成部と、
乱数(r0,1,r1,1),…,(r0,N,r1,N)を前記計算装置Yに送信し、ra1[1],1,…,ra1[N],Nを前記計算装置Zに送信する第1演算送信部と、
前記計算装置Yから第1断片関数t1を受信し、前記計算装置Zから第1乱数断片e’1を受信する第1演算受信部と、
第1断片e1をe1=t1(e’1)のように求める第1演算復号部と
を有し、
前記計算装置Yは、
前記計算装置Xから乱数(r0,1,r1,1),…,(r0,N,r1,N)を受信する第2置換乱数受信部と、
Nビットの乱数e21,e22を生成し、第1要素e21,第2要素e22とする要素生成部と、
第1断片a1が入力された場合に第1断片e1と第3要素e23を出力する論理回路C”の入出力を乱数に置き換えたgarbled circuit GC”(ただし、入力である第1断片a1は乱数(r0,1,r1,1),…,(r0,N,r1,N)に置き換えられる)と、前記garbled circuit GC”の出力である第1乱数断片e’1,第3乱数要素e’23それぞれを、第1断片e1,第3要素e23に変換する第1断片関数t1,第3要素関数t23を生成するgarbled circuit生成部と、
第1断片関数t1を前記計算装置Xに送信し、garbled circuit GC”と第3要素関数t23と第1要素e21を前記計算装置Zに送信する第2演算送信部と、
第2断片e2をe2=(e21,e22)とする第2演算復号部と
を有し、
前記計算装置Zは、
前記計算装置Xからra1[1],1,…,ra1[N],Nを受信し、前記計算装置Yからgarbled circuit GC”と第3要素関数t23と第1要素e21を受信する第3演算受信部と、
ra1[1],1,…,ra1[N],Nとgarbled circuit GC”とを用いて、第1乱数断片e’1,第3乱数要素e’23を求める演算実行部と、
第1乱数断片e’1を前記計算装置Xに送信する第3演算送信部と、
第3要素e23をe23=t23(e’23)のように求め、第3断片e3をe3=(e21,e23)とする第3演算復号部と
を有す
ことを特徴とする秘密計算システム。
【請求項11】
請求項1から6、もしくは10のいずれかに記載の秘密計算システムであって、
さらに、復元手段として、
前記計算装置Xが、
前記計算装置Yまたは前記計算装置Zに第1断片を送信する第1断片送信部と、
前記計算装置Yまたは前記計算装置Zから第1要素を受信する第1断片受信部と、
前記第1断片受信部が受信した第1要素と当該第1要素に対応する第1断片とを加算することで数値を復元する第1復元部
も有し、
前記計算装置Yが、
前記計算装置Xに第1要素を送信する、または前記計算装置Zに第2要素を送信する第2断片送信部と、
前記計算装置Xから第1断片を受信する、または前記計算装置Zから第3要素を受信する第2断片受信部と、
前記第2断片受信部が受信した第1断片と当該第1断片に対応する第1要素とを加算することで数値を復元する、または前記第2断片受信部が受信した第3要素と当該第3要素に対応する第1要素と第2要素とを加算することで数値を復元する第2復元部
も有し、
前記計算装置Zが、
前記計算装置Xに第1要素を送信する、または前記計算装置Yに第3要素を送信する第3断片送信部と、
前記計算装置Xから第1断片を受信する、または前記計算装置Yから第2要素を受信する第3断片受信部と、
前記第3断片受信部が受信した第1断片と当該第1断片に対応する第1要素とを加算することで数値を復元する、または前記第3断片受信部が受信した第2要素と当該第2要素に対応する第1要素と第3要素とを加算することで数値を復元する第3復元部
も有す
ことを特徴とする秘密計算システム。
【請求項12】
第1断片を記録する計算装置Xと、
第2断片を記録する計算装置Yと、
第3断片を記録する計算装置Zから構成される秘密計算システムであって、
前記第1断片,第2断片,第3断片は、これらの中の2つが分かれば元の数値が復元できるものであり、
Nを2以上の整数、nを1以上N以下の整数、a1,a2,a3をNビット以下の数値Aの第1断片,第2断片,第3断片、e1,e2,e3を数値Aを論理回路Cに入力したときの出力E=C(A)の第1断片,第2断片,第3断片、a1[n]を第1断片a1を2進表現したときの下位n桁目の値とし、
前記計算装置Xは、
2N個の乱数(r0,1,r1,1),…,(r0,N,r1,N)を生成する乱数生成部と、
乱数(r0,1,r1,1),…,(r0,N,r1,N)を前記計算装置Yに送信し、ra1[1],1,…,ra1[N],Nを前記計算装置Zに送信する第1演算送信部と、
前記計算装置Yから第1断片関数t1を受信し、前記計算装置Zから第1乱数断片e’1を受信する第1演算受信部と、
第1断片e1をe1=t1(e’1)のように求める第1演算復号部と
を有し、
前記計算装置Yは、
前記計算装置Xから乱数(r0,1,r1,1),…,(r0,N,r1,N)を受信する第2置換乱数受信部と、
第1断片a1が入力された場合に第1断片e1,第2断片e2,第3断片e3を出力する論理回路C’の入出力を乱数に置き換えたgarbled circuit GC’(ただし、入力である第1断片a1は乱数(r0,1,r1,1),…,(r0,N,r1,N)に置き換えられる)と、前記garbled circuit GC’の出力である第1乱数断片e’1,第2乱数断片e’2,第3乱数断片e’3それぞれを、第1断片e1,第2断片e2,第3断片e3に変換する第1断片関数t1,第2断片関数t2,第3断片関数t3を生成するgarbled circuit生成部と、
第1断片関数t1を前記計算装置Xに送信し、garbled circuit GC’と第3断片関数t3を前記計算装置Zに送信する第2演算送信部と、
前記計算装置Zから第2乱数断片e’2を受信する第2乱数断片受信部と、
第2断片e2をe2=t2(e’2)のように求める第2演算復号部と
を有し、
前記計算装置Zは、
前記計算装置Xからra1[1],1,…,ra1[N],Nを受信し、前記計算装置Yからgarbled circuit GC’と第3断片関数t3を受信する第3演算受信部と、
ra1[1],1,…,ra1[N],Nとgarbled circuit GC’とを用いて、第1乱数断片e’1,第2乱数断片e’2,第3乱数断片e’3を求める演算実行部と、
第1乱数断片e’1を前記計算装置Xに送信し、第2乱数断片e’2を前記計算装置Yに送信する第3演算送信部と、
第3断片e3をe3=t3(e’3)のように求める第3演算復号部と
を有す
ことを特徴とする秘密計算システム。
【請求項13】
3つの計算装置から構成される秘密計算システムを用いた秘密計算方法であって、
数値Aの第1断片a1,第2断片a2,第3断片a3と、数値Bの第1断片b1,第2断片b2,第3断片b3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
b1=b22+b23
b2=(b21,b22)
b3=(b21,b23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ、第1要素b21,第2要素b22,第3要素b23はB=b21+b22+b23を満たす任意の数値の組合せ
の関係を有し、
計算装置Xとして機能する計算装置が第1断片を記録し、
計算装置Yとして機能する計算装置が第2断片を記録し、
計算装置Zとして機能する計算装置が第3断片を記録し、
秘密加算過程として、
前記計算装置Xが、A+Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=a1+b1
のように求める第1加算ステップと、
前記計算装置Yが、A+Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(a21+b21,a22+b22)
のように求める第2加算ステップと、
前記計算装置Zが、A+Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(a21+b21,a23+b23)
のように求める第3加算ステップと
を有す
ことを特徴とする秘密計算方法。
【請求項14】
3つの計算装置から構成される秘密計算システムを用いた秘密計算方法であって、
数値Aの第1断片a1,第2断片a2,第3断片a3と、数値Bの第1断片b1,第2断片b2,第3断片b3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
b1=b22+b23
b2=(b21,b22)
b3=(b21,b23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ、第1要素b21,第2要素b22,第3要素b23はB=b21+b22+b23を満たす任意の数値の組合せ
の関係を有し、
計算装置Xとして機能する計算装置が第1断片を記録し、
計算装置Yとして機能する計算装置が第2断片を記録し、
計算装置Zとして機能する計算装置が第3断片を記録し、
秘密減算過程として、
前記計算装置Xが、A−Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=a1−b1
のように求める第1減算ステップと、
前記計算装置Yが、A−Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(a21−b21,a22−b22)
のように求める第2減算ステップと、
前記計算装置Zが、A−Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(a21−b21,a23−b23)
のように求める第3減算ステップと
を有す
ことを特徴とする秘密計算方法。
【請求項15】
3つの計算装置から構成される秘密計算システムを用いた秘密計算方法であって、
数値Aの第1断片a1,第2断片a2,第3断片a3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ
の関係を有し、
計算装置Xとして機能する計算装置が第1断片を記録し、
計算装置Yとして機能する計算装置が第2断片を記録し、
計算装置Zとして機能する計算装置が第3断片を記録し、
秘密定数倍過程として、
前記計算装置Xが、Aを数値B倍した結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=Ba1
のように求める第1定数倍計算ステップと、
前記計算装置Yが、Aを数値B倍した結果である数値Cの第2断片c2を、
c2=(c21,c22)=(Ba21,Ba22)
のように求める第2定数倍計算ステップと、
前記計算装置Zが、Aを数値B倍した結果である数値Cの第3断片c3を、
c3=(c21,c23)=(Ba21,Ba23)
のように求める第3定数倍計算ステップと
を有す
ことを特徴とする秘密計算方法。
【請求項16】
3つの計算装置から構成される秘密計算システムを用いた秘密計算方法であって、
数値Aの第1断片a1,第2断片a2,第3断片a3と、数値Bの第1断片b1,第2断片b2,第3断片b3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
b1=b22+b23
b2=(b21,b22)
b3=(b21,b23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ、第1要素b21,第2要素b22,第3要素b23はB=b21+b22+b23を満たす任意の数値の組合せ
の関係を有し、
計算装置Xとして機能する計算装置が第1断片を記録し、
計算装置Yとして機能する計算装置が第2断片を記録し、
計算装置Zとして機能する計算装置が第3断片を記録し、
秘密乗算過程として、
前記計算装置Xが、乱数r1,r2,r3,r4,r5を生成する乗算乱数生成ステップと、
前記計算装置Xが、A×Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1、第2要素c22、第3要素c23を
c1=a1b1−r3−r4
c22=r5
c23=c1−c22
のように求める第1乗算ステップと、
前記計算装置Xが、前記計算装置Yに(r1,r2,r3,c22)を、前記計算装置Zに(a1−r1,b1−r2,r4,c23)を送信する第1乗算送信ステップと、
前記計算装置Yが、前記計算装置Xから(r1,r2,r3,c22)を受信する第2乗算乱数受信ステップと、
前記計算装置Zが、前記計算装置Xから(a1−r1,b1−r2,r4,c23)を受信する第3乗算乱数受信ステップと、
前記計算装置Yが、数値yを
y=a21b21+a21r2+r1b21+r3
のように求める第2乗算中間値計算ステップと、
前記計算装置Zが、数値zを
z=a21(b1−r2)+(a1−r1)b21+r4
のように求める第3乗算中間値計算ステップと、
前記計算装置Yが、前記計算装置Zに数値yを送信する第2乗算送信ステップと、
前記計算装置Zが、前記計算装置Yに数値zを送信する第3乗算送信ステップと、
前記計算装置Yが、前記計算装置Zから数値zを受信する第2乗算中間値受信ステップと、
前記計算装置Zが、前記計算装置Yから数値yを受信する第3乗算中間値受信ステップと、
前記計算装置Yが、A×Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(y+z,c22)
のように求める第2乗算ステップと、
前記計算装置Zが、A×Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(y+z,c23)
のように求める第3乗算ステップと
を有す
ことを特徴とする秘密計算方法。
【請求項17】
3つの計算装置から構成される秘密計算システムを用いた秘密計算方法であって、
数値Aの第1断片a1,第2断片a2,第3断片a3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ
の関係を有し、
計算装置Xとして機能する計算装置が第1断片を記録し、
計算装置Yとして機能する計算装置が第2断片を記録し、
計算装置Zとして機能する計算装置が第3断片を記録し、
秘密否定過程として、
前記計算装置Xが、1−Aの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=−a1
のように求める第1否定ステップと、
前記計算装置Yが、1−Aの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(1−a21,−a22)
のように求める第2否定ステップと、
前記計算装置Zが、1−Aの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(1−a21,−a23)
のように求める第3否定ステップと
を有す
ことを特徴とする秘密計算方法。
【請求項18】
請求項13から17のいずれかに記載の秘密計算方法であって、
いずれかの計算装置が、
秘匿処理過程として、
自己が保持する数値Sから
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23と
s1=s22+s23
s2=(s21,s22)
s3=(s21,s23)
の関係を有する第1断片s1,第2断片s2,第3断片s3を求める断片生成ステップと、
計算装置Xとして機能する計算装置が第1断片s1を、計算装置Yとして機能する計算装置が第2断片s2を、計算装置Zとして機能する計算装置が第3断片s3を記録した状態にする断片分配ステップと
を有す
ことを特徴とする秘密計算方法。
【請求項19】
請求項13記載の秘密計算方法であって、
jを1以上3以下の整数、a1(j),a2(j),a3(j)を数値Aに対するj番目の第1断片,第2断片,第3断片、a21(j)をj番目の第1要素、計算装置X(j),計算装置Y(j),計算装置Z(j)をj番目の第1断片a1(j),第2断片a2(j),第3断片a3(j)に対して計算装置X,計算装置Y,計算装置Zとして機能する計算装置、乱数rを乱数rx,ry,rzの和とし、
前記3つの計算装置は、どの計算装置も、計算装置X,計算装置Y,計算装置Zのいずれとしても機能でき、
(X(1),Y(1),Z(1))、(X(2),Y(2),Z(2))、(X(3),Y(3),Z(3))はそれぞれ異なり、
(a1(1),a2(1),a3(1))、(a1(2),a2(2),a3(2))、(a1(3),a2(3),a3(3))はそれぞれ異なり、
秘匿処理過程は、
自己が保持する数値Sから
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23と
s1=s22+s23
s2=(s21,s22)
s3=(s21,s23)
の関係を有する第1断片s1,第2断片s2,第3断片s3を求める断片生成ステップと、
計算装置Xとして機能する計算装置が第1断片s1を、計算装置Yとして機能する計算装置が第2断片s2を、計算装置Zとして機能する計算装置が第3断片s3を記録した状態にする断片分配ステップと
を有する過程であり、
復元過程は、
計算装置Xが、計算装置Yに第1断片a1を送信する第1断片Y送信サブステップと、
計算装置Yが、計算装置Xから第1断片a1を受信する第2断片X受信サブステップと、
計算装置Yが、受信した第1断片a1と当該第1断片a1に対応する第1要素a21とを加算することで数値Aを復元する第2X復元サブステップ
からなる復元XYステップ、
計算装置Xが、計算装置100Zに第1断片a1を送信する第1断片Z送信サブステップと、
計算装置Zが、計算装置Xから第1断片a1を受信する第3断片X受信サブステップと、
計算装置Zが、受信した第1断片a1と当該第1断片a1に対応する第1要素a21とを加算することで数値を復元する第3X復元サブステップと
からなる復元XZステップ、
計算装置Yが、計算装置Xに第1要素a21を送信する第2断片X送信サブステップと、
計算装置Xが、計算装置Yから第1要素a21を受信する第1断片Y受信サブステップと、
計算装置Xが、受信した第1要素a21と当該第1要素a21に対応する第1断片a1とを加算することで数値を復元する第1Y復元サブステップと
からなる復元YXステップ、
計算装置Yが、計算装置Zに第2要素a22を送信する第2断片Z送信サブステップと、
計算装置Zが、計算装置Yから第2要素a21を受信する第3断片Y受信サブステップと、
計算装置Zが、受信した第2要素a22と当該第2要素a22に対応する第1要素a21と第3要素a23とを加算することで数値を復元する第3Y復元サブステップと
からなる復元YZステップ、
計算装置Zが、計算装置Xに第1要素a21を送信する第3断片X送信サブステップと、
計算装置Xが、計算装置Zから第1要素a21を受信する第1断片Z受信サブステップと、
計算装置Xが、受信した第1要素a21と当該第1要素a21に対応する第1断片a1とを加算することで数値を復元する第1Z復元サブステップと
からなる復元ZXステップ、
計算装置Zが、計算装置Yに第3要素a23を送信する第3断片送信サブステップと、
計算装置Yが、計算装置Zから第3要素a23を受信する第2断片受信サブステップと、
計算装置Yが、受信した第3要素a23と当該第3要素a23に対応する第1要素a21と第2要素a22とを加算することで数値Aを復元する第2復元サブステップと
からなる復元ZYステップ
の中の少なくともいずれか1つのステップを有する過程であり、
いずれかの計算装置が、j=1とする初期化ステップと、
計算装置Y(j)が保有する第1要素a21y(j)と計算装置Z(j)が保有する第1要素a21z(j)とが等しいことを確認する第1要素不正検出ステップと、
第1断片a1(j)が第2要素a22(j)と第3要素a23(j)の和であることを確認する第1断片不正検出ステップと、
第2要素a22(j)が第1断片a1(j)と第3要素a23(j)の差であることを確認する第2要素不正検出ステップと、
第3要素a23(j)が第1断片a1(j)と第2要素a22(j)の差であることを確認する第3要素不正検出ステップと、
計算装置X(j)が、乱数rxを生成する第1確認乱数生成ステップと、
計算装置X(j)が、前記秘匿処理過程によって第1断片a1(j),乱数rxの断片を、3つの計算装置で分散して記録した状態にする秘匿Xステップと、
計算装置Y(j)が、乱数ryを生成する第2確認乱数生成ステップと、
計算装置Y(j)が、前記秘匿処理過程によって第1要素a21(j),乱数ryの断片を、3つの計算装置で分散して記録した状態にする秘匿Yステップと、
計算装置Z(j)が、乱数rzを生成する第3確認乱数生成ステップと、
計算装置200Z(j)が、前記秘匿処理過程によって乱数rzの断片を、3つの計算装置で分散して記録した状態にする秘匿Zステップと、
前記秘密加算過程によって、
a1(j)+a21(j)+r
ただし、r=rx+ry+rz
の計算結果の断片を、3つの計算装置で分散して記録した状態にする秘密加算ステップと、
前記復元過程によって、
a1(j)+a21(j)+r
を復元し、いずれかの計算装置に記録しておく入力復元ステップと、
いずれかの計算装置が、j=3かを確認する条件確認ステップと、
j≠3のときにはjにj+1を代入し、前記第1要素不正検出ステップに戻る繰返ステップと、
j=3のときには、いずれかの計算装置が、3つの復元結果a1(1)+a21(1)+r,a1(2)+a21(2)+r,a1(3)+a21(3)+rが等しいことを確認する結果確認ステップと
を有すことを特徴とする秘密計算方法。
【請求項20】
同一の数値に対する異なる3種類の断片の組合せを入力とし、それぞれの断片の組合せに対して計算を行う請求項13記載の秘密計算方法であって、
jを1以上3以下の整数、c1(j),c2(j),c3(j)を計算結果である数値Cに対するj番目の第1断片,第2断片,第3断片、c21(j),c22(j),c23(j)をj番目の第1要素,第2要素,第3要素、計算装置X(j),計算装置Y(j),計算装置Z(j)をj番目の第1断片c1(j),第2断片c2(j),第3断片c3(j)を求めたときに計算装置X,計算装置Y,計算装置Zとして機能した計算装置、乱数rを乱数rx,ry,rzの和とし、
前記3つの計算装置は、どの計算装置も、計算装置X,計算装置Y,計算装置Zのいずれとしても機能でき、
(X(1),Y(1),Z(1))、(X(2),Y(2),Z(2))、(X(3),Y(3),Z(3))はそれぞれ異なり、
(c1(1),c2(1),c3(1))、(c1(2),c2(2),c3(2))、(c1(3),c2(3),c3(3))はそれぞれ異なり、
秘匿処理過程は、
自己が保持する数値Sから
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23と
s1=s22+s23
s2=(s21,s22)
s3=(s21,s23)
の関係を有する第1断片s1,第2断片s2,第3断片s3を求める断片生成ステップと、
計算装置Xとして機能する計算装置が第1断片s1を、計算装置Yとして機能する計算装置が第2断片s2を、計算装置Zとして機能する計算装置が第3断片s3を記録した状態にする断片分配ステップと
を有する過程であり、
復元過程は、
計算装置Xが、計算装置Yに第1断片a1を送信する第1断片Y送信サブステップと、
計算装置Yが、計算装置Xから第1断片a1を受信する第2断片X受信サブステップと、
計算装置Yが、受信した第1断片a1と当該第1断片a1に対応する第1要素a21とを加算することで数値Aを復元する第2X復元サブステップ
からなる復元XYステップ、
計算装置Xが、計算装置100Zに第1断片a1を送信する第1断片Z送信サブステップと、
計算装置Zが、計算装置Xから第1断片a1を受信する第3断片X受信サブステップと、
計算装置Zが、受信した第1断片a1と当該第1断片a1に対応する第1要素a21とを加算することで数値を復元する第3X復元サブステップと
からなる復元XZステップ、
計算装置Yが、計算装置Xに第1要素a21を送信する第2断片X送信サブステップと、
計算装置Xが、計算装置Yから第1要素a21を受信する第1断片Y受信サブステップと、
計算装置Xが、受信した第1要素a21と当該第1要素a21に対応する第1断片a1とを加算することで数値を復元する第1Y復元サブステップと
からなる復元YXステップ、
計算装置Yが、計算装置Zに第2要素a22を送信する第2断片Z送信サブステップと、
計算装置Zが、計算装置Yから第2要素a21を受信する第3断片Y受信サブステップと、
計算装置Zが、受信した第2要素a22と当該第2要素a22に対応する第1要素a21と第3要素a23とを加算することで数値を復元する第3Y復元サブステップと
からなる復元YZステップ、
計算装置Zが、計算装置Xに第1要素a21を送信する第3断片X送信サブステップと、
計算装置Xが、計算装置Zから第1要素a21を受信する第1断片Z受信サブステップと、
計算装置Xが、受信した第1要素a21と当該第1要素a21に対応する第1断片a1とを加算することで数値を復元する第1Z復元サブステップと
からなる復元ZXステップ、
計算装置Zが、計算装置Yに第3要素a23を送信する第3断片送信サブステップと、
計算装置Yが、計算装置Zから第3要素a23を受信する第2断片受信サブステップと、
計算装置Yが、受信した第3要素a23と当該第3要素a23に対応する第1要素a21と第2要素a22とを加算することで数値Aを復元する第2復元サブステップと
からなる復元ZYステップ
の中の少なくともいずれか1つのステップを有する過程であり、
いずれかの計算装置が、j=1とする初期化ステップと、
計算装置X(j)が、乱数rxを生成する第1確認乱数生成ステップと、
計算装置X(j)が、前記秘匿処理過程によって第1断片c1(j),乱数rxの断片を、3つの計算装置で分散して記録した状態にする秘匿Xステップと、
計算装置Y(j)が、乱数ryを生成する第2確認乱数生成ステップと、
計算装置Y(j)が、前記秘匿処理過程によって第1要素c21(j),乱数ryの断片を、3つの計算装置で分散して記録した状態にする秘匿Yステップと、
計算装置Z(j)が、乱数rzを生成する第3確認乱数生成ステップと、
計算装置Z(j)が、前記秘匿処理過程によって乱数rzの断片を3つの計算装置で分散して記録した状態にする秘匿Zステップと、
前記秘密加算過程によって、
c1(j)+c22(j)+r
ただし、r=rx+ry+rz
の計算結果の断片を、3つの計算装置で分散して記録した状態にする秘密加算ステップと、
前記復元XYステップまたは復元YXステップからなる前記復元過程によって、
c1(j)+c22(j)+r=CXY(j)を復元して記録しておき、
前記復元YZステップまたは復元ZYステップからなる前記復元過程によって、
c1(j)+c22(j)+r=CYZ(j)を復元して記録しておき、
前記復元XZステップまたは復元ZXステップからなる前記復元過程によって、
c1(j)+c22(j)+r=CXZ(j)を復元して記録しておく結果復元ステップと、
いずれかの計算装置が、j=3かを確認する条件確認ステップと、
j≠3のときにはjにj+1を代入し、前記第1確認乱数生成ステップに戻る繰返ステップと、
j=3のときには、9つの復元結果CXY(1),CYZ(1),CXZ(1),CXY(2),CYZ(2),CXZ(2),CXY(3),CYZ(3),CXZ(3)がすべて等しいことを確認する結果確認ステップと
を有すことを特徴とする秘密計算方法。
【請求項21】
同一の数値に対する異なる3種類の断片の組合せを入力とし、それぞれの断片の組合せに対して計算を行う請求項14から17のいずれかに記載の秘密計算方法であって、
jを1以上3以下の整数、c1(j),c2(j),c3(j)を計算結果である数値Cに対するj番目の第1断片,第2断片,第3断片、c21(j),c22(j),c23(j)をj番目の第1要素,第2要素,第3要素、計算装置X(j),計算装置Y(j),計算装置Z(j)をj番目の第1断片c1(j),第2断片c2(j),第3断片c3(j)を求めたときに計算装置X,計算装置Y,計算装置Zとして機能した計算装置、乱数rを乱数rx,ry,rzの和とし、
前記3つの計算装置は、どの計算装置も、計算装置X,計算装置Y,計算装置Zのいずれとしても機能でき、
(X(1),Y(1),Z(1))、(X(2),Y(2),Z(2))、(X(3),Y(3),Z(3))はそれぞれ異なり、
(c1(1),c2(1),c3(1))、(c1(2),c2(2),c3(2))、(c1(3),c2(3),c3(3))はそれぞれ異なり、
秘匿処理過程は、
自己が保持する数値Sから
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23と
s1=s22+s23
s2=(s21,s22)
s3=(s21,s23)
の関係を有する第1断片s1,第2断片s2,第3断片s3を求める断片生成ステップと、
計算装置Xとして機能する計算装置が第1断片s1を、計算装置Yとして機能する計算装置が第2断片s2を、計算装置Zとして機能する計算装置が第3断片s3を記録した状態にする断片分配ステップと
を有する過程であり、
秘密加算過程は、
前記計算装置Xが、A+Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=a1+b1
のように求める第1加算ステップと、
前記計算装置Yが、A+Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(a21+b21,a22+b22)
のように求める第2加算ステップと、
前記計算装置Zが、A+Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(a21+b21,a23+b23)
のように求める第3加算ステップと
を有する過程であり、
復元過程は、
計算装置Xが、計算装置Yに第1断片a1を送信する第1断片Y送信サブステップと、
計算装置Yが、計算装置Xから第1断片a1を受信する第2断片X受信サブステップと、
計算装置Yが、受信した第1断片a1と当該第1断片a1に対応する第1要素a21とを加算することで数値Aを復元する第2X復元サブステップ
からなる復元XYステップ、
計算装置Xが、計算装置100Zに第1断片a1を送信する第1断片Z送信サブステップと、
計算装置Zが、計算装置Xから第1断片a1を受信する第3断片X受信サブステップと、
計算装置Zが、受信した第1断片a1と当該第1断片a1に対応する第1要素a21とを加算することで数値を復元する第3X復元サブステップと
からなる復元XZステップ、
計算装置Yが、計算装置Xに第1要素a21を送信する第2断片X送信サブステップと、
計算装置Xが、計算装置Yから第1要素a21を受信する第1断片Y受信サブステップと、
計算装置Xが、受信した第1要素a21と当該第1要素a21に対応する第1断片a1とを加算することで数値を復元する第1Y復元サブステップと
からなる復元YXステップ、
計算装置Yが、計算装置Zに第2要素a22を送信する第2断片Z送信サブステップと、
計算装置Zが、計算装置Yから第2要素a21を受信する第3断片Y受信サブステップと、
計算装置Zが、受信した第2要素a22と当該第2要素a22に対応する第1要素a21と第3要素a23とを加算することで数値を復元する第3Y復元サブステップと
からなる復元YZステップ、
計算装置Zが、計算装置Xに第1要素a21を送信する第3断片X送信サブステップと、
計算装置Xが、計算装置Zから第1要素a21を受信する第1断片Z受信サブステップと、
計算装置Xが、受信した第1要素a21と当該第1要素a21に対応する第1断片a1とを加算することで数値を復元する第1Z復元サブステップと
からなる復元ZXステップ、
計算装置Zが、計算装置Yに第3要素a23を送信する第3断片送信サブステップと、
計算装置Yが、計算装置Zから第3要素a23を受信する第2断片受信サブステップと、
計算装置Yが、受信した第3要素a23と当該第3要素a23に対応する第1要素a21と第2要素a22とを加算することで数値Aを復元する第2復元サブステップと
からなる復元ZYステップ
の中の少なくともいずれか1つのステップを有する過程であり、
いずれかの計算装置が、j=1とする初期化ステップと、
計算装置X(j)が、乱数rxを生成する第1確認乱数生成ステップと、
計算装置X(j)が、前記秘匿処理過程によって第1断片c1(j),乱数rxの断片を、3つの計算装置で分散して記録した状態にする秘匿Xステップと、
計算装置Y(j)が、乱数ryを生成する第2確認乱数生成ステップと、
計算装置Y(j)が、前記秘匿処理過程によって第1要素c21(j),乱数ryの断片を、3つの計算装置で分散して記録した状態にする秘匿Yステップと、
計算装置Z(j)が、乱数rzを生成する第3確認乱数生成ステップと、
計算装置Z(j)が、前記秘匿処理過程によって乱数rzの断片を3つの計算装置で分散して記録した状態にする秘匿Zステップと、
前記秘密加算過程によって、
c1(j)+c22(j)+r
ただし、r=rx+ry+rz
の計算結果の断片を、3つの計算装置で分散して記録した状態にする秘密加算ステップと、
前記復元XYステップまたは復元YXステップからなる前記復元過程によって、
c1(j)+c22(j)+r=CXY(j)を復元して記録しておき、
前記復元YZステップまたは復元ZYステップからなる前記復元過程によって、
c1(j)+c22(j)+r=CYZ(j)を復元して記録しておき、
前記復元XZステップまたは復元ZXステップからなる前記復元過程によって、
c1(j)+c22(j)+r=CXZ(j)を復元して記録しておく結果復元ステップと、
いずれかの計算装置が、j=3かを確認する条件確認ステップと、
j≠3のときにはjにj+1を代入し、前記第1確認乱数生成ステップに戻る繰返ステップと、
j=3のときには、9つの復元結果CXY(1),CYZ(1),CXZ(1),CXY(2),CYZ(2),CXZ(2),CXY(3),CYZ(3),CXZ(3)がすべて等しいことを確認する結果確認ステップと
を有すことを特徴とする秘密計算方法。
【請求項22】
3つの計算装置から構成される秘密計算システムを用いた秘密計算方法であって、
数値Aの第1断片a1,第2断片a2,第3断片a3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ
の関係を有し、
計算装置Xとして機能する計算装置が第1断片を記録し、
計算装置Yとして機能する計算装置が第2断片を記録し、
計算装置Zとして機能する計算装置が第3断片を記録し、
Nを2以上の整数、nを1以上N以下の整数、a1[n]を第1断片a1を2進表現したときの下位n桁目の値とし、
計算装置Xが、2N個の乱数(r0,1,r1,1),…,(r0,N,r1,N)を生成する乱数生成ステップと、
計算装置Xが、乱数(r0,1,r1,1),…,(r0,N,r1,N)を計算装置Yに送信し、ra1[1],1,…,ra1[N],Nを計算装置Zに送信する第1演算送信ステップと、
計算装置Yが、計算装置Xから乱数(r0,1,r1,1),…,(r0,N,r1,N)を受信する第2置換乱数受信ステップと、
計算装置Yが、Nビットの乱数e21,e22を生成し、第1要素e21,第2要素e22とする要素生成ステップと、
計算装置Yが、第1断片a1が入力された場合に第1断片e1と第3要素e23を出力する論理回路C”の入出力を乱数に置き換えたgarbled circuit GC”(ただし、入力である第1断片a1は乱数(r0,1,r1,1),…,(r0,N,r1,N)に置き換えられる)と、garbled circuit GC”の出力である第1乱数断片e’1,第3乱数要素e’23それぞれを、第1断片e1,第3要素e23に変換する第1断片関数t1,第3要素関数t23を生成するgarbled circuit生成ステップと、
計算装置Yが、第1断片関数t1を計算装置Xに送信し、garbled circuit GC”と第3要素関数t23と第1要素e21を計算装置Zに送信する第2演算送信ステップと、
計算装置Zが、計算装置Xからra1[1],1,…,ra1[N],Nを受信し、計算装置Yからgarbled circuit GC”と第3要素関数t23と第1要素e21を受信する第3演算受信ステップと、
計算装置Zが、ra1[1],1,…,ra1[N],Nとgarbled circuit GC”とを用いて、第1乱数断片e’1,第3乱数要素e’23を求める演算実行ステップと、
計算装置Zが、第1乱数断片e’1を計算装置Xに送信する第3演算送信ステップと、
計算装置Xが、計算装置Yから第1断片関数t1を受信し、計算装置Zから第1乱数断片e’1を受信する第1演算受信ステップと、
計算装置Xが、第1断片e1をe1=t1(e’1)のように求める第1演算復号ステップと、
計算装置Yが、第2断片e2をe2=(e21,e22)とする第2演算復号ステップと、
計算装置Zが、第3要素e23をe23=t23(e’23)のように求め、第3断片e3をe3=(e21,e23)とする第3演算復号ステップと
を有することを特徴とする秘密計算方法。
【請求項23】
請求項13から18、もしくは22のいずれかに記載の秘密計算方法であって、
計算装置Xが、計算装置Yに第1断片a1を送信する第1断片Y送信ステップと、
計算装置Yが、計算装置Xから第1断片a1を受信する第2断片X受信ステップと、
計算装置Yが、受信した第1断片a1と当該第1断片a1に対応する第1要素a21とを加算することで数値Aを復元する第2X復元ステップ
からなる復元XY過程、
計算装置Xが、計算装置100Zに第1断片a1を送信する第1断片Z送信ステップと、
計算装置Zが、計算装置Xから第1断片a1を受信する第3断片X受信ステップと、
計算装置Zが、受信した第1断片a1と当該第1断片a1に対応する第1要素a21とを加算することで数値を復元する第3X復元ステップと
からなる復元XZ過程、
計算装置Yが、計算装置Xに第1要素a21を送信する第2断片X送信ステップと、
計算装置Xが、計算装置Yから第1要素a21を受信する第1断片Y受信ステップと、
計算装置Xが、受信した第1要素a21と当該第1要素a21に対応する第1断片a1とを加算することで数値を復元する第1Y復元ステップと
からなる復元YX過程、
計算装置Yが、計算装置Zに第2要素a22を送信する第2断片Z送信ステップと、
計算装置Zが、計算装置Yから第2要素a21を受信する第3断片Y受信ステップと、
計算装置Zが、受信した第2要素a22と当該第2要素a22に対応する第1要素a21と第3要素a23とを加算することで数値を復元する第3Y復元ステップと
からなる復元YZ過程、
計算装置Zが、計算装置Xに第1要素a21を送信する第3断片X送信ステップと、
計算装置Xが、計算装置Zから第1要素a21を受信する第1断片Z受信ステップと、
計算装置Xが、受信した第1要素a21と当該第1要素a21に対応する第1断片a1とを加算することで数値を復元する第1Z復元ステップと
からなる復元ZX過程、
計算装置Zが、計算装置Yに第3要素a23を送信する第3断片送信ステップと、
計算装置Yが、計算装置Zから第3要素a23を受信する第2断片受信ステップと、
計算装置Yが、受信した第3要素a23と当該第3要素a23に対応する第1要素a21と第2要素a22とを加算することで数値Aを復元する第2復元ステップと
からなる復元ZY過程
の中の少なくともいずれか1つの過程も有することを特徴とする秘密計算方法。
【請求項24】
第1断片を記録する計算装置Xと、
第2断片を記録する計算装置Yと、
第3断片を記録する計算装置Zから構成される秘密計算システムを用いた秘密計算方法であって、
前記第1断片,第2断片,第3断片は、これらの中の2つが分かれば元の数値が復元できるものであり、
Nを2以上の整数、nを1以上N以下の整数、a1,a2,a3をNビット以下の数値Aの第1断片,第2断片,第3断片、e1,e2,e3を数値Aを論理回路Cに入力したときの出力E=C(A)の第1断片,第2断片,第3断片、a1[n]を第1断片a1を2進表現したときの下位n桁目の値とし、
計算装置Xが、2N個の乱数(r0,1,r1,1),…,(r0,N,r1,N)を生成する乱数生成ステップと、
計算装置Xが、乱数(r0,1,r1,1),…,(r0,N,r1,N)を計算装置Yに送信し、ra1[1],1,…,ra1[N],Nを計算装置Zに送信する第1演算送信ステップと、
計算装置Yが、計算装置Xから乱数(r0,1,r1,1),…,(r0,N,r1,N)を受信する第2置換乱数受信ステップと、
計算装置Yが、第1断片a1が入力された場合に第1断片e1,第2断片e2,第3断片e3を出力する論理回路C’の入出力を乱数に置き換えたgarbled circuit GC’(ただし、入力である第1断片a1は乱数(r0,1,r1,1),…,(r0,N,r1,N)に置き換えられる)と、前記garbled circuit GC’の出力である第1乱数断片e’1,第2乱数断片e’2,第3乱数断片e’3それぞれを、第1断片e1,第2断片e2,第3断片e3に変換する第1断片関数t1,第2断片関数t2,第3断片関数t3を生成するgarbled circuit生成ステップと、
計算装置Yが、第1断片関数t1を計算装置Xに送信し、garbled circuit GC’と第3断片関数t3を計算装置Zに送信する第2演算送信ステップと、
計算装置Zが、計算装置Xからra1[1],1,…,ra1[N],Nを受信し、計算装置Yからgarbled circuit GC’と第3断片関数t3を受信する第3演算受信ステップと、
計算装置Zが、ra1[1],1,…,ra1[N],Nとgarbled circuit GC’とを用いて、第1乱数断片e’1,第2乱数断片e’2,第3乱数断片e’3を求める演算実行ステップと、
計算装置Zが、第1乱数断片e’1を計算装置Xに送信し、第2乱数断片e’2を計算装置Yに送信する第3演算送信ステップと、
計算装置Xが、計算装置Yから第1断片関数t1を受信し、計算装置Zから第1乱数断片e’1を受信する第1演算受信ステップと、
計算装置Xが、第1断片e1をe1=t1(e’1)のように求める第1演算復号ステップと、
計算装置Yが、計算装置Zから第2乱数断片e’2を受信する第2乱数断片受信ステップと、
計算装置Yが、第2断片e2をe2=t2(e’2)のように求める第2演算復号ステップと、
計算装置Zが、第3断片e3をe3=t3(e’3)のように求める第3演算復号ステップと
を有することを特徴とする秘密計算方法。
【請求項25】
数値Aの第1断片a1,第2断片a2,第3断片a3と、数値Bの第1断片b1,第2断片b2,第3断片b3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
b1=b22+b23
b2=(b21,b22)
b3=(b21,b23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ、第1要素b21,第2要素b22,第3要素b23はB=b21+b22+b23を満たす任意の数値の組合せ
の関係を有し、
計算装置Xとして機能する計算装置が第1断片を記録し、
計算装置Yとして機能する計算装置が第2断片を記録し、
計算装置Zとして機能する計算装置が第3断片を記録するときに、
計算装置Xとして機能する計算装置であって、
A+Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=a1+b1
のように求める第1加算部と、
A−Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=a1−b1
のように求める第1減算部と、
Aを数値B倍した結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=Ba1
のように求める第1定数倍計算部と、
乱数r1,r2,r3,r4,r5を生成する乗算乱数生成部と、
A×Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1、第2要素c22、第3要素c23を
c1=a1b1−r3−r4
c22=r5
c23=c1−c22
のように求める第1乗算部と、
前記計算装置Yに(r1,r2,r3,c22)を、前記計算装置Zに(a1−r1,b1−r2,r4,c23)を送信する第1乗算送信部と、
1−Aの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=−a1
のように求める第1否定部と、
自己が保持する数値Sから
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23と
s1=s22+s23
s2=(s21,s22)
s3=(s21,s23)
の関係を有する第1断片s1,第2断片s2,第3断片s3を求める断片生成部と、
計算装置Yとして機能する計算装置が第2断片s2を、計算装置Zとして機能する計算装置が第3断片s3を記録した状態にする断片分配部と、
を備える計算装置。
【請求項26】
数値Aの第1断片a1,第2断片a2,第3断片a3と、数値Bの第1断片b1,第2断片b2,第3断片b3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
b1=b22+b23
b2=(b21,b22)
b3=(b21,b23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ、第1要素b21,第2要素b22,第3要素b23はB=b21+b22+b23を満たす任意の数値の組合せ
の関係を有し、
計算装置Xとして機能する計算装置が第1断片を記録し、
計算装置Yとして機能する計算装置が第2断片を記録し、
計算装置Zとして機能する計算装置が第3断片を記録するときに、
計算装置Yとして機能する計算装置であって、
A+Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(a21+b21,a22+b22)
のように求める第2加算部と、
A−Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(a21−b21,a22−b22)
のように求める第2減算部と、
Aを数値B倍した結果である数値Cの第2断片c2を、
c2=(c21,c22)=(Ba21,Ba22)
のように求める第2定数倍計算部と、
前記計算装置Xから(r1,r2,r3,c22)を受信する第2乗算乱数受信部と、
数値yを
y=a21b21+a21r2+r1b21+r3
のように求める第2乗算中間値計算部と、
前記計算装置Zに数値yを送信する第2乗算送信部と、
前記計算装置Zから数値zを受信する第2乗算中間値受信部と、
A×Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(y+z,c22)
のように求める第2乗算部と、
1−Aの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(1−a21,−a22)
のように求める第2否定部と、
自己が保持する数値Sから
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23と
s1=s22+s23
s2=(s21,s22)
s3=(s21,s23)
の関係を有する第1断片s1,第2断片s2,第3断片s3を求める断片生成部と、
計算装置Xとして機能する計算装置が第1断片s1を、計算装置Zとして機能する計算装置が第3断片s3を記録した状態にする断片分配部と
を備える計算装置。
【請求項27】
数値Aの第1断片a1,第2断片a2,第3断片a3と、数値Bの第1断片b1,第2断片b2,第3断片b3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
b1=b22+b23
b2=(b21,b22)
b3=(b21,b23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ、第1要素b21,第2要素b22,第3要素b23はB=b21+b22+b23を満たす任意の数値の組合せ
の関係を有し、
計算装置Xとして機能する計算装置が第1断片を記録し、
計算装置Yとして機能する計算装置が第2断片を記録し、
計算装置Zとして機能する計算装置が第3断片を記録するときに、
計算装置Zとして機能する計算装置であって、
A+Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(a21+b21,a23+b23)
のように求める第3加算部と、
A−Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(a21−b21,a23−b23)
のように求める第3減算部と、
Aを数値B倍した結果である数値Cの第3断片c3を、
c3=(c21,c23)=(Ba21,Ba23)
のように求める第3定数倍計算部と、
前記計算装置Xから(a1−r1,b1−r2,r4,c23)を受信する第3乗算乱数受信部と、
数値zを
z=a21(b1−r2)+(a1−r1)b21+r4
のように求める第3乗算中間値計算部と、
前記計算装置Yに数値zを送信する第3乗算送信部と、
前記計算装置Yから数値yを受信する第3乗算中間値受信部と、
A×Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(y+z,c23)
のように求める第3乗算部と、
1−Aの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(1−a21,−a23)
のように求める第3否定部と、
自己が保持する数値Sから
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23と
s1=s22+s23
s2=(s21,s22)
s3=(s21,s23)
の関係を有する第1断片s1,第2断片s2,第3断片s3を求める断片生成部と、
計算装置Xとして機能する計算装置が第1断片s1を、計算装置Yとして機能する計算装置が第2断片s2を、計算装置Zとして機能する計算装置が第3断片s3を記録した状態にする断片分配部と
を備える計算装置。
【請求項28】
請求項25記載の計算装置と、
請求項26記載の計算装置と、
請求項27記載の計算装置とを有する秘密計算システムであって、
前記第1加算部、前記第2加算部、前記第3加算部で構成される秘密加算手段と、
前記第1減算部、前記第2減算部、前記第3減算部で構成される秘密減算手段と、
前記第1定数倍計算部、前記第2定数倍計算部、前記第3定数倍計算部で構成される秘密定数倍手段と、
前記乗算乱数生成部、前記第1乗算部、前記第1乗算送信部、前記第2乗算乱数受信部、前記第2乗算中間値計算部、前記第2乗算送信部、前記第2乗算中間値受信部、前記第2乗算部、前記第3乗算乱数受信部、前記第3乗算中間値計算部、前記第3乗算送信部、前記第3乗算中間値受信部、前記第3乗算部で構成される秘密乗算手段と、
前記第1否定部、前記第2否定部、前記第3否定部で構成される秘密否定手段と、
少なくとも前記計算装置Xの断片生成部と断片分配部と、前記計算装置Yの断片生成部と断片分配部とで構成される秘匿処理手段と、
を有し、
さらに、数値Aを2進数に変換するための秘密2進変換手段も有しており、
前記秘密2進変換手段は、
(1)前記秘匿処理手段を用いて、第1断片a1[1],…,a1[N]と、第1要素a21[1],…,a21[N]を秘匿処理し、
(2)前記秘密加算手段、前記秘密乗算手段、前記秘密定数倍手段、前記秘密減算手段を用いて、
【数11】
を行って、各前記計算装置が、A[1]の断片を分散して記録した状態とし、
(3−1)n=2のように初期設定を行い、
(3−2)前記秘密定数倍手段、前記秘密加算手段、前記秘密減算手段によって、
【数12】
を行って、各前記計算装置が、B(n)の断片b1(n),b2(n),b3(n)を分散して記録した状態とし、
(3−3)前記秘匿処理手段によって、B(n)の第1断片b1(n)とB(n)の第1要素b21(n)を秘匿処理し、
(3−4)前記秘密加算手段、前記秘密乗算手段、前記秘密定数倍手段、前記秘密減算手段によって、
【数13】
を行って、D(n)の断片d1(n),d2(n),d3(n)を分散して記録した状態にし、
(4−1)前記計算装置は、それぞれc1(n)=0、i=1のように初期設定を行い、
(4−2)前記計算装置Xは、
【数14】
を計算し、前記計算装置Yと前記計算装置Zは、
【数15】
を計算し、
(4−3)前記計算装置100は、それぞれ
ci+1(n)=ci(n)b1(n)[i]∨ci(n)b21(n)[i]∨b1(n)[i]b21(n)[i]
を計算し、
(4−4)前記計算装置は、i=1からn−1まで上記の(4−2)と(4−3)を繰返し、
(5−1)cn(n)=0ならば、各計算装置は、分散して記録しているD(n)の断片を、各計算装置が分散して記録するA[n]の断片とし、cn(n)=1ならば各計算装置が断片を分散して記録しているD(n)の否定を前記秘密否定手段で計算し、D(n)の否定の断片を、各計算装置が記録するA[n]の断片とし、
(5−2)n=Nかを確認し、Noの場合には、nにn+1を代入して上記(3−2)に戻り、Yesの場合には処理を終了する
ことを特徴とする秘密計算システム。
【請求項29】
請求項25記載の計算装置と、
請求項26記載の計算装置と、
請求項27記載の計算装置とを用いて秘密計算を行う秘密計算方法であって、
前記第1加算部、前記第2加算部、前記第3加算部を用いて秘密加算を行う秘密加算過程と、
前記第1減算部、前記第2減算部、前記第3減算部を用いて秘密減算を行う秘密減算過程と、
前記第1定数倍計算部、前記第2定数倍計算部、前記第3定数倍計算部を用いて秘密定数倍を行う秘密定数倍過程と、
前記乗算乱数生成部、前記第1乗算部、前記第1乗算送信部、前記第2乗算乱数受信部、前記第2乗算中間値計算部、前記第2乗算送信部、前記第2乗算中間値受信部、前記第2乗算部、前記第3乗算乱数受信部、前記第3乗算中間値計算部、前記第3乗算送信部、前記第3乗算中間値受信部、前記第3乗算部を用いて秘密乗算を行う秘密乗算過程と、
前記第1否定部、前記第2否定部、前記第3否定部を用いて秘密否定を行う秘密否定過程と、
少なくとも前記計算装置Xの断片生成部と断片分配部と、前記計算装置Yの断片生成部と断片分配部を用いて秘匿処理を行う秘匿処理過程と、
を有し、
さらに、数値Aを2進数に変換するための秘密2進変換過程も有しており、
前記秘密2進変換過程は、
(1)前記秘匿処理過程を用いて、第1断片a1[1],…,a1[N]と、第1要素a21[1],…,a21[N]を秘匿処理するステップと、
(2)前記秘密加算過程、前記秘密乗算過程、前記秘密定数倍過程、前記秘密減算過程を用いて、
【数16】
を行って、各前記計算装置が、A[1]の断片を分散して記録した状態とするステップと、
(3−1)n=2のように初期設定を行うステップと、
(3−2)前記秘密定数倍過程、前記秘密加算過程、前記秘密減算過程を用いて、
【数17】
を行って、各前記計算装置が、B(n)の断片b1(n),b2(n),b3(n)を分散して記録した状態とするステップと、
(3−3)前記秘匿処理過程を用いて、B(n)の第1断片b1(n)とB(n)の第1要素b21(n)を秘匿処理するステップと、
(3−4)前記秘密加算過程、前記秘密乗算過程、前記秘密定数倍過程、前記秘密減算過程を用いて、
【数18】
を行って、D(n)の断片d1(n),d2(n),d3(n)を分散して記録した状態にするステップと、
(4−1)前記計算装置が、それぞれc1(n)=0、i=1のように初期設定を行うステップと、
(4−2)前記計算装置Xが、
【数19】
を計算し、前記計算装置Yと前記計算装置Zが、
【数20】
を計算するステップと、
(4−3)前記計算装置100が、それぞれ
ci+1(n)=ci(n)b1(n)[i]∨ci(n)b21(n)[i]∨b1(n)[i]b21(n)[i]
を計算するステップと、
(4−4)前記計算装置が、i=1からn−1まで上記の(4−2)と(4−3)を繰返し、
(5−1)cn(n)=0ならば、各計算装置が、分散して記録しているD(n)の断片を、各計算装置が分散して記録するA[n]の断片とし、cn(n)=1ならば各計算装置が断片を分散して記録しているD(n)の否定を前記秘密否定過程で計算し、D(n)の否定の断片を、各計算装置が記録するA[n]の断片とするステップと、
(5−2)n=Nかを確認し、Noの場合には、nにn+1を代入して上記(3−2)に戻り、Yesの場合には処理を終了するステップと
を有することを特徴とする秘密計算方法。
【請求項1】
3つの計算装置から構成される秘密計算システムであって、
数値Aの第1断片a1,第2断片a2,第3断片a3と、数値Bの第1断片b1,第2断片b2,第3断片b3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
b1=b22+b23
b2=(b21,b22)
b3=(b21,b23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ、第1要素b21,第2要素b22,第3要素b23はB=b21+b22+b23を満たす任意の数値の組合せ
の関係を有し、
計算装置Xとして機能する計算装置が第1断片を記録し、
計算装置Yとして機能する計算装置が第2断片を記録し、
計算装置Zとして機能する計算装置が第3断片を記録し、
秘密加算手段として、
前記計算装置Xが、
A+Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=a1+b1
のように求める第1加算部
を有し、
前記計算装置Yが、
A+Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(a21+b21,a22+b22)
のように求める第2加算部
を有し、
前記計算装置Zが、
A+Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(a21+b21,a23+b23)
のように求める第3加算部
を有す
ことを特徴とする秘密計算システム。
【請求項2】
3つの計算装置から構成される秘密計算システムであって、
数値Aの第1断片a1,第2断片a2,第3断片a3と、数値Bの第1断片b1,第2断片b2,第3断片b3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
b1=b22+b23
b2=(b21,b22)
b3=(b21,b23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ、第1要素b21,第2要素b22,第3要素b23はB=b21+b22+b23を満たす任意の数値の組合せ
の関係を有し、
計算装置Xとして機能する計算装置が第1断片を記録し、
計算装置Yとして機能する計算装置が第2断片を記録し、
計算装置Zとして機能する計算装置が第3断片を記録し、
前記計算装置Xは、
A−Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=a1−b1
のように求める第1減算部
を有し、
前記計算装置Yは、
A−Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(a21−b21,a22−b22)
のように求める第2減算部
を有し、
前記計算装置Zは、
A−Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(a21−b21,a23−b23)
のように求める第3減算部
を有す
ことを特徴とする秘密計算システム。
【請求項3】
3つの計算装置から構成される秘密計算システムであって、
数値Aの第1断片a1,第2断片a2,第3断片a3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ
の関係を有し、
計算装置Xとして機能する計算装置が第1断片を記録し、
計算装置Yとして機能する計算装置が第2断片を記録し、
計算装置Zとして機能する計算装置が第3断片を記録し、
前記計算装置Xは、
Aを数値B倍した結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=Ba1
のように求める第1定数倍計算部
を有し、
前記計算装置Yは、
Aを数値B倍した結果である数値Cの第2断片c2を、
c2=(c21,c22)=(Ba21,Ba22)
のように求める第2定数倍計算部
を有し、
前記計算装置Zは、
Aを数値B倍した結果である数値Cの第3断片c3を、
c3=(c21,c23)=(Ba21,Ba23)
のように求める第3定数倍計算部
を有す
ことを特徴とする秘密計算システム。
【請求項4】
3つの計算装置から構成される秘密計算システムであって、
数値Aの第1断片a1,第2断片a2,第3断片a3と、数値Bの第1断片b1,第2断片b2,第3断片b3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
b1=b22+b23
b2=(b21,b22)
b3=(b21,b23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ、第1要素b21,第2要素b22,第3要素b23はB=b21+b22+b23を満たす任意の数値の組合せ
の関係を有し、
計算装置Xとして機能する計算装置が第1断片を記録し、
計算装置Yとして機能する計算装置が第2断片を記録し、
計算装置Zとして機能する計算装置が第3断片を記録し、
前記計算装置Xは、
乱数r1,r2,r3,r4,r5を生成する乗算乱数生成部と、
A×Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1、第2要素c22、第3要素c23を
c1=a1b1−r3−r4
c22=r5
c23=c1−c22
のように求める第1乗算部と、
前記計算装置Yに(r1,r2,r3,c22)を、前記計算装置Zに(a1−r1,b1−r2,r4,c23)を送信する第1乗算送信部と
を有し、
前記計算装置Yは、
前記計算装置Xから(r1,r2,r3,c22)を受信する第2乗算乱数受信部と、
数値yを
y=a21b21+a21r2+r1b21+r3
のように求める第2乗算中間値計算部と、
前記計算装置Zに数値yを送信する第2乗算送信部と、
前記計算装置Zから数値zを受信する第2乗算中間値受信部と、
A×Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(y+z,c22)
のように求める第2乗算部
を有し、
前記計算装置Zは、
前記計算装置Xから(a1−r1,b1−r2,r4,c23)を受信する第3乗算乱数受信部と、
数値zを
z=a21(b1−r2)+(a1−r1)b21+r4
のように求める第3乗算中間値計算部と、
前記計算装置Yに数値zを送信する第3乗算送信部と、
前記計算装置Yから数値yを受信する第3乗算中間値受信部と、
A×Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(y+z,c23)
のように求める第3乗算部
を有す
ことを特徴とする秘密計算システム。
【請求項5】
3つの計算装置から構成される秘密計算システムであって、
数値Aの第1断片a1,第2断片a2,第3断片a3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ
の関係を有し、
計算装置Xとして機能する計算装置が第1断片を記録し、
計算装置Yとして機能する計算装置が第2断片を記録し、
計算装置Zとして機能する計算装置が第3断片を記録し、
前記計算装置Xは、
1−Aの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=−a1
のように求める第1否定部
を有し、
前記計算装置Yは、
1−Aの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(1−a21,−a22)
のように求める第2否定部
を有し、
前記計算装置Zは、
1−Aの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(1−a21,−a23)
のように求める第3否定部
を有す
ことを特徴とする秘密計算システム。
【請求項6】
請求項1から5のいずれかに記載の秘密計算システムであって、
いずれかの計算装置が、
自己が保持する数値Sから
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23と
s1=s22+s23
s2=(s21,s22)
s3=(s21,s23)
の関係を有する第1断片s1,第2断片s2,第3断片s3を求める断片生成部と、
計算装置Xとして機能する計算装置が第1断片s1を、計算装置Yとして機能する計算装置が第2断片s2を、計算装置Zとして機能する計算装置が第3断片s3を記録した状態にする断片分配部と
を備えることを特徴とする秘密計算システム。
【請求項7】
請求項1記載の秘密計算システムであって、
jを1以上3以下の整数、a1(j),a2(j),a3(j)を数値Aに対するj番目の第1断片,第2断片,第3断片、a21(j)をj番目の第1要素、計算装置X(j),計算装置Y(j),計算装置Z(j)をj番目の第1断片a1(j),第2断片a2(j),第3断片a3(j)に対して計算装置X,計算装置Y,計算装置Zとして機能する計算装置、乱数rを乱数rx,ry,rzの和とし、
前記3つの計算装置は、どの計算装置も、計算装置X,計算装置Y,計算装置Zのいずれとしても機能でき、
(X(1),Y(1),Z(1))、(X(2),Y(2),Z(2))、(X(3),Y(3),Z(3))はそれぞれ異なり、
(a1(1),a2(1),a3(1))、(a1(2),a2(2),a3(2))、(a1(3),a2(3),a3(3))はそれぞれ異なり、
秘匿処理手段は、任意の数値Sに対して、
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23と
s1=s22+s23
s2=(s21,s22)
s3=(s21,s23)
の関係を有する第1断片s1,第2断片s2,第3断片s3を求める断片生成部と、
前記計算装置Xが第1断片s1を、前記計算装置Yが第2断片s2を、前記計算装置Zが第3断片s3を記録した状態にする断片分配部と
を有する手段であり、
復元手段は、
前記計算装置Xが、
前記計算装置Yまたは前記計算装置Zに第1断片を送信する第1断片送信部と、
前記計算装置Yまたは前記計算装置Zから第1要素を受信する第1断片受信部と、
前記第1断片受信部が受信した第1要素と当該第1要素に対応する第1断片とを加算することで数値を復元する第1復元部
も有し、
前記計算装置Yが、
前記計算装置Xに第1要素を送信する、または前記計算装置Zに第2要素を送信する第2断片送信部と、
前記計算装置Xから第1断片を受信する、または前記計算装置Zから第3要素を受信する第2断片受信部と、
前記第2断片受信部が受信した第1断片と当該第1断片に対応する第1要素とを加算することで数値を復元する、または前記第2断片受信部が受信した第3要素と当該第3要素に対応する第1要素と第2要素とを加算することで数値を復元する第2復元部
も有し、
前記計算装置Zが、
前記計算装置Xに第1要素を送信する、または前記計算装置Yに第3要素を送信する第3断片送信部と、
前記計算装置Xから第1断片を受信する、または前記計算装置Yから第2要素を受信する第3断片受信部と、
前記第3断片受信部が受信した第1断片と当該第1断片に対応する第1要素とを加算することで数値を復元する、または前記第3断片受信部が受信した第2要素と当該第2要素に対応する第1要素と第3要素とを加算することで数値を復元する第3復元部
も有する手段であり、
すべての計算装置は、
前記秘匿手段と前記復元手段を有すると共に、
計算装置X(j)として機能するために、
計算装置Y(j)との間で乱数rxyを共有するための第1乱数rxy共有部と、
計算装置Z(j)にux(=a1(j)+rxy)を送信する第1Z送信部と、
計算装置Z(j)との間で乱数rxzを共有するための第1乱数rxz共有部と、
計算装置Y(j)にux(=a1(j)+rxz)を送信する第1Y送信部と、
計算装置Y(j)からuyを、計算装置Z(j)からuzを受信する第1受信部と、
a1(j)=uy+uzであることを確認する第1断片確認部と、
乱数rxを生成する第1確認乱数生成部と、
を有し、
計算装置Y(j)として機能するために、
計算装置Z(j)に自己が保有する第1要素a21y(j)を送信するY要素送信部と、
計算装置Z(j)から第1要素a21z(j)を受信するY要素受信部と、
自己が保有する第1要素a21y(j)と計算装置Z(j)から受信した第1要素a21z(j)とが等しいことを確認するY要素確認部と、
計算装置X(j)との間で乱数rxyを共有するための第2乱数rxy共有部と、
計算装置Z(j)にuy(=a22(j)+rxy)を送信する第2Z送信部と、
計算装置Z(j)との間で乱数ryzを共有するための第2乱数ryz共有部と、
計算装置X(j)にuy(=a22(j)+ryz)を送信する第2X送信部と、
計算装置X(j)からuxを、計算装置Z(j)からuzを受信する第2受信部と、
a22(j)=ux−uzであることを確認する第2断片確認部と、
乱数ryを生成する第2確認乱数生成部と、
を有し、
計算装置Z(j)として機能するために、
計算装置Y(j)に自己が保有する第1要素a21z(j)を送信するZ要素送信部と、
計算装置Y(j)から第1要素a21y(j)を受信するZ要素受信部と、
自己が保有する第1要素a21z(j)と計算装置Y(j)から受信した第1要素a21y(j)とが等しいことを確認するZ要素確認部と、
計算装置X(j)との間で乱数rxzを共有するための第3乱数rxz共有部と、
計算装置Y(j)にuz(=a23(j)+rxz)を送信する第3Y送信部と、
計算装置Y(j)との間で乱数ryzを共有するための第3乱数ryz共有部と、
計算装置X(j)にuz(=a23(j)−ryz)を送信する第3X送信部と、
計算装置X(j)からuxを、計算装置Y(j)からuyを受信する第3受信部と、
a23(j)=ux−uyであることを確認する第3断片確認部と、
乱数rzを生成する第3確認乱数生成部と
を有し、
前記秘匿手段は、
計算装置X(j)として機能するときは、第1断片a1(j),乱数rxの断片を分散した状態とし、
計算装置Y(j)として機能するときは、第1要素a21(j),乱数ryの断片を分散した状態とし、
計算装置Z(j)として機能するときは、乱数rzの断片を分散した状態とする
手段であり、
前記秘密加算手段は
a1(j)+a21(j)+r
の断片を求める手段であり、
前記復元手段は
a1(1)+a21(1)+r,a1(2)+a21(2)+r,a1(3)+a21(3)+r
を復元する手段であり、
3つの復元結果を取得できるいずれかの計算装置が、3つの結果が等しいことを確認する復元入力確認部を備える
ことを特徴とする秘密計算システム。
【請求項8】
同一の数値に対する異なる3種類の断片の組合せを入力とし、それぞれの断片の組合せに対して計算を行う請求項1記載の秘密計算システムであって、
jを1以上3以下の整数、c1(j),c2(j),c3(j)を計算結果である数値Cに対するj番目の第1断片,第2断片,第3断片、c21(j),c22(j),c23(j)をj番目の第1要素,第2要素,第3要素、計算装置X(j),計算装置Y(j),計算装置Z(j)をj番目の第1断片c1(j),第2断片c2(j),第3断片c3(j)を求めたときに計算装置X,計算装置Y,計算装置Zとして機能した計算装置、乱数rを乱数rx,ry,rzの和とし、
前記3つの計算装置は、どの計算装置も、計算装置X,計算装置Y,計算装置Zのいずれとしても機能でき、
(X(1),Y(1),Z(1))、(X(2),Y(2),Z(2))、(X(3),Y(3),Z(3))はそれぞれ異なり、
(c1(1),c2(1),c3(1))、(c1(2),c2(2),c3(2))、(c1(3),c2(3),c3(3))はそれぞれ異なり、
秘匿処理手段は、任意の数値Sに対して、
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23と
s1=s22+s23
s2=(s21,s22)
s3=(s21,s23)
の関係を有する第1断片s1,第2断片s2,第3断片s3を求める断片生成部と、
前記計算装置Xが第1断片s1を、前記計算装置Yが第2断片s2を、前記計算装置Zが第3断片s3を記録した状態にする断片分配部と
を有する手段であり、
復元手段は、
前記計算装置Xが、
前記計算装置Yまたは前記計算装置Zに第1断片を送信する第1断片送信部と、
前記計算装置Yまたは前記計算装置Zから第1要素を受信する第1断片受信部と、
前記第1断片受信部が受信した第1要素と当該第1要素に対応する第1断片とを加算することで数値を復元する第1復元部
も有し、
前記計算装置Yが、
前記計算装置Xに第1要素を送信する、または前記計算装置Zに第2要素を送信する第2断片送信部と、
前記計算装置Xから第1断片を受信する、または前記計算装置Zから第3要素を受信する第2断片受信部と、
前記第2断片受信部が受信した第1断片と当該第1断片に対応する第1要素とを加算することで数値を復元する、または前記第2断片受信部が受信した第3要素と当該第3要素に対応する第1要素と第2要素とを加算することで数値を復元する第2復元部
も有し、
前記計算装置Zが、
前記計算装置Xに第1要素を送信する、または前記計算装置Yに第3要素を送信する第3断片送信部と、
前記計算装置Xから第1断片を受信する、または前記計算装置Yから第2要素を受信する第3断片受信部と、
前記第3断片受信部が受信した第1断片と当該第1断片に対応する第1要素とを加算することで数値を復元する、または前記第3断片受信部が受信した第2要素と当該第2要素に対応する第1要素と第3要素とを加算することで数値を復元する第3復元部
も有する手段であり、
すべての計算装置は、
前記秘匿手段と前記復元手段を有すると共に、
計算装置X(j)として機能するために、乱数rxを生成する第1確認乱数生成部を有し、
計算装置Y(j)として機能するために、乱数ryを生成する第2確認乱数生成部を有し、
計算装置Z(j)として機能するために、乱数rzを生成する第3確認乱数生成部を有し、
前記秘匿手段は、
計算装置X(j)として機能するときは、第1断片c1(j),乱数rxの断片を分散した状態とし、
計算装置Y(j)として機能するときは、第1要素c21(j),乱数ryの断片を分散した状態とし、
計算装置Z(j)として機能するときは、乱数rzの断片を分散した状態とする
手段であり、
前記秘密加算手段は
c1(j)+c22(j)+r
の断片を求める手段でもあり、
前記復元手段は
j=1,2,3に対して、
c1(j)+c22(j)+r
の計算結果を、計算装置X(j)と計算装置Y(j)による復元と、計算装置Y(j)と計算装置Z(j)による復元と、計算装置X(j)と計算装置Z(j)による復元とを行う手段であり、
9つの復元結果を取得できるいずれかの計算装置が、9つの結果が等しいことを確認する復元出力確認部を備える
ことを特徴とする秘密計算システム。
【請求項9】
同一の数値に対する異なる3種類の断片の組合せを入力とし、それぞれの断片の組合せに対して計算を行う請求項2から5のいずれかに記載の秘密計算システムであって、
jを1以上3以下の整数、c1(j),c2(j),c3(j)を計算結果である数値Cに対するj番目の第1断片,第2断片,第3断片、c21(j),c22(j),c23(j)をj番目の第1要素,第2要素,第3要素、計算装置X(j),計算装置Y(j),計算装置Z(j)をj番目の第1断片c1(j),第2断片c2(j),第3断片c3(j)を求めたときに計算装置X,計算装置Y,計算装置Zとして機能した計算装置、乱数rを乱数rx,ry,rzの和とし、
前記3つの計算装置は、どの計算装置も、計算装置X,計算装置Y,計算装置Zのいずれとしても機能でき、
(X(1),Y(1),Z(1))、(X(2),Y(2),Z(2))、(X(3),Y(3),Z(3))はそれぞれ異なり、
(c1(1),c2(1),c3(1))、(c1(2),c2(2),c3(2))、(c1(3),c2(3),c3(3))はそれぞれ異なり、
秘匿処理手段は、任意の数値Sに対して、
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23と
s1=s22+s23
s2=(s21,s22)
s3=(s21,s23)
の関係を有する第1断片s1,第2断片s2,第3断片s3を求める断片生成部と、
前記計算装置Xが第1断片s1を、前記計算装置Yが第2断片s2を、前記計算装置Zが第3断片s3を記録した状態にする断片分配部と
を有する手段であり、
秘密加算手段は、
前記計算装置Xが、
A+Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=a1+b1
のように求める第1加算部
を有し、
前記計算装置Yが、
A+Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(a21+b21,a22+b22)
のように求める第2加算部
を有し、
前記計算装置Zが、
A+Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(a21+b21,a23+b23)
のように求める第3加算部
を有する手段であり、
復元手段は、
前記計算装置Xが、
前記計算装置Yまたは前記計算装置Zに第1断片を送信する第1断片送信部と、
前記計算装置Yまたは前記計算装置Zから第1要素を受信する第1断片受信部と、
前記第1断片受信部が受信した第1要素と当該第1要素に対応する第1断片とを加算することで数値を復元する第1復元部
も有し、
前記計算装置Yが、
前記計算装置Xに第1要素を送信する、または前記計算装置Zに第2要素を送信する第2断片送信部と、
前記計算装置Xから第1断片を受信する、または前記計算装置Zから第3要素を受信する第2断片受信部と、
前記第2断片受信部が受信した第1断片と当該第1断片に対応する第1要素とを加算することで数値を復元する、または前記第2断片受信部が受信した第3要素と当該第3要素に対応する第1要素と第2要素とを加算することで数値を復元する第2復元部
も有し、
前記計算装置Zが、
前記計算装置Xに第1要素を送信する、または前記計算装置Yに第3要素を送信する第3断片送信部と、
前記計算装置Xから第1断片を受信する、または前記計算装置Yから第2要素を受信する第3断片受信部と、
前記第3断片受信部が受信した第1断片と当該第1断片に対応する第1要素とを加算することで数値を復元する、または前記第3断片受信部が受信した第2要素と当該第2要素に対応する第1要素と第3要素とを加算することで数値を復元する第3復元部
も有する手段であり、
すべての計算装置は、
前記秘匿手段と前記秘密加算手段と前記復元手段を有すると共に、
計算装置X(j)として機能するために、乱数rxを生成する第1確認乱数生成部を有し、
計算装置Y(j)として機能するために、乱数ryを生成する第2確認乱数生成部を有し、
計算装置Z(j)として機能するために、乱数rzを生成する第3確認乱数生成部を有し、
前記秘匿手段は、
計算装置X(j)として機能するときは、第1断片c1(j),乱数rxの断片を分散した状態とし、
計算装置Y(j)として機能するときは、第1要素c21(j),乱数ryの断片を分散した状態とし、
計算装置Z(j)として機能するときは、乱数rzの断片を分散した状態とする
手段であり、
前記秘密加算手段は
c1(j)+c22(j)+r
の断片を求める手段であり、
前記復元手段は
j=1,2,3に対して、
c1(j)+c22(j)+r
の計算結果を、計算装置X(j)と計算装置Y(j)による復元と、計算装置Y(j)と計算装置Z(j)による復元と、計算装置X(j)と計算装置Z(j)による復元とを行う手段であり、
9つの復元結果を取得できるいずれかの計算装置が、9つの結果が等しいことを確認する復元出力確認部を備える
ことを特徴とする秘密計算システム。
【請求項10】
3つの計算装置から構成される秘密計算システムであって、
数値Aの第1断片a1,第2断片a2,第3断片a3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ
の関係を有し、
計算装置Xとして機能する計算装置が第1断片を記録し、
計算装置Yとして機能する計算装置が第2断片を記録し、
計算装置Zとして機能する計算装置が第3断片を記録し、
Nを2以上の整数、nを1以上N以下の整数、a1[n]を第1断片a1を2進表現したときの下位n桁目の値とし、
前記計算装置Xは、
2N個の乱数(r0,1,r1,1),…,(r0,N,r1,N)を生成する乱数生成部と、
乱数(r0,1,r1,1),…,(r0,N,r1,N)を前記計算装置Yに送信し、ra1[1],1,…,ra1[N],Nを前記計算装置Zに送信する第1演算送信部と、
前記計算装置Yから第1断片関数t1を受信し、前記計算装置Zから第1乱数断片e’1を受信する第1演算受信部と、
第1断片e1をe1=t1(e’1)のように求める第1演算復号部と
を有し、
前記計算装置Yは、
前記計算装置Xから乱数(r0,1,r1,1),…,(r0,N,r1,N)を受信する第2置換乱数受信部と、
Nビットの乱数e21,e22を生成し、第1要素e21,第2要素e22とする要素生成部と、
第1断片a1が入力された場合に第1断片e1と第3要素e23を出力する論理回路C”の入出力を乱数に置き換えたgarbled circuit GC”(ただし、入力である第1断片a1は乱数(r0,1,r1,1),…,(r0,N,r1,N)に置き換えられる)と、前記garbled circuit GC”の出力である第1乱数断片e’1,第3乱数要素e’23それぞれを、第1断片e1,第3要素e23に変換する第1断片関数t1,第3要素関数t23を生成するgarbled circuit生成部と、
第1断片関数t1を前記計算装置Xに送信し、garbled circuit GC”と第3要素関数t23と第1要素e21を前記計算装置Zに送信する第2演算送信部と、
第2断片e2をe2=(e21,e22)とする第2演算復号部と
を有し、
前記計算装置Zは、
前記計算装置Xからra1[1],1,…,ra1[N],Nを受信し、前記計算装置Yからgarbled circuit GC”と第3要素関数t23と第1要素e21を受信する第3演算受信部と、
ra1[1],1,…,ra1[N],Nとgarbled circuit GC”とを用いて、第1乱数断片e’1,第3乱数要素e’23を求める演算実行部と、
第1乱数断片e’1を前記計算装置Xに送信する第3演算送信部と、
第3要素e23をe23=t23(e’23)のように求め、第3断片e3をe3=(e21,e23)とする第3演算復号部と
を有す
ことを特徴とする秘密計算システム。
【請求項11】
請求項1から6、もしくは10のいずれかに記載の秘密計算システムであって、
さらに、復元手段として、
前記計算装置Xが、
前記計算装置Yまたは前記計算装置Zに第1断片を送信する第1断片送信部と、
前記計算装置Yまたは前記計算装置Zから第1要素を受信する第1断片受信部と、
前記第1断片受信部が受信した第1要素と当該第1要素に対応する第1断片とを加算することで数値を復元する第1復元部
も有し、
前記計算装置Yが、
前記計算装置Xに第1要素を送信する、または前記計算装置Zに第2要素を送信する第2断片送信部と、
前記計算装置Xから第1断片を受信する、または前記計算装置Zから第3要素を受信する第2断片受信部と、
前記第2断片受信部が受信した第1断片と当該第1断片に対応する第1要素とを加算することで数値を復元する、または前記第2断片受信部が受信した第3要素と当該第3要素に対応する第1要素と第2要素とを加算することで数値を復元する第2復元部
も有し、
前記計算装置Zが、
前記計算装置Xに第1要素を送信する、または前記計算装置Yに第3要素を送信する第3断片送信部と、
前記計算装置Xから第1断片を受信する、または前記計算装置Yから第2要素を受信する第3断片受信部と、
前記第3断片受信部が受信した第1断片と当該第1断片に対応する第1要素とを加算することで数値を復元する、または前記第3断片受信部が受信した第2要素と当該第2要素に対応する第1要素と第3要素とを加算することで数値を復元する第3復元部
も有す
ことを特徴とする秘密計算システム。
【請求項12】
第1断片を記録する計算装置Xと、
第2断片を記録する計算装置Yと、
第3断片を記録する計算装置Zから構成される秘密計算システムであって、
前記第1断片,第2断片,第3断片は、これらの中の2つが分かれば元の数値が復元できるものであり、
Nを2以上の整数、nを1以上N以下の整数、a1,a2,a3をNビット以下の数値Aの第1断片,第2断片,第3断片、e1,e2,e3を数値Aを論理回路Cに入力したときの出力E=C(A)の第1断片,第2断片,第3断片、a1[n]を第1断片a1を2進表現したときの下位n桁目の値とし、
前記計算装置Xは、
2N個の乱数(r0,1,r1,1),…,(r0,N,r1,N)を生成する乱数生成部と、
乱数(r0,1,r1,1),…,(r0,N,r1,N)を前記計算装置Yに送信し、ra1[1],1,…,ra1[N],Nを前記計算装置Zに送信する第1演算送信部と、
前記計算装置Yから第1断片関数t1を受信し、前記計算装置Zから第1乱数断片e’1を受信する第1演算受信部と、
第1断片e1をe1=t1(e’1)のように求める第1演算復号部と
を有し、
前記計算装置Yは、
前記計算装置Xから乱数(r0,1,r1,1),…,(r0,N,r1,N)を受信する第2置換乱数受信部と、
第1断片a1が入力された場合に第1断片e1,第2断片e2,第3断片e3を出力する論理回路C’の入出力を乱数に置き換えたgarbled circuit GC’(ただし、入力である第1断片a1は乱数(r0,1,r1,1),…,(r0,N,r1,N)に置き換えられる)と、前記garbled circuit GC’の出力である第1乱数断片e’1,第2乱数断片e’2,第3乱数断片e’3それぞれを、第1断片e1,第2断片e2,第3断片e3に変換する第1断片関数t1,第2断片関数t2,第3断片関数t3を生成するgarbled circuit生成部と、
第1断片関数t1を前記計算装置Xに送信し、garbled circuit GC’と第3断片関数t3を前記計算装置Zに送信する第2演算送信部と、
前記計算装置Zから第2乱数断片e’2を受信する第2乱数断片受信部と、
第2断片e2をe2=t2(e’2)のように求める第2演算復号部と
を有し、
前記計算装置Zは、
前記計算装置Xからra1[1],1,…,ra1[N],Nを受信し、前記計算装置Yからgarbled circuit GC’と第3断片関数t3を受信する第3演算受信部と、
ra1[1],1,…,ra1[N],Nとgarbled circuit GC’とを用いて、第1乱数断片e’1,第2乱数断片e’2,第3乱数断片e’3を求める演算実行部と、
第1乱数断片e’1を前記計算装置Xに送信し、第2乱数断片e’2を前記計算装置Yに送信する第3演算送信部と、
第3断片e3をe3=t3(e’3)のように求める第3演算復号部と
を有す
ことを特徴とする秘密計算システム。
【請求項13】
3つの計算装置から構成される秘密計算システムを用いた秘密計算方法であって、
数値Aの第1断片a1,第2断片a2,第3断片a3と、数値Bの第1断片b1,第2断片b2,第3断片b3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
b1=b22+b23
b2=(b21,b22)
b3=(b21,b23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ、第1要素b21,第2要素b22,第3要素b23はB=b21+b22+b23を満たす任意の数値の組合せ
の関係を有し、
計算装置Xとして機能する計算装置が第1断片を記録し、
計算装置Yとして機能する計算装置が第2断片を記録し、
計算装置Zとして機能する計算装置が第3断片を記録し、
秘密加算過程として、
前記計算装置Xが、A+Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=a1+b1
のように求める第1加算ステップと、
前記計算装置Yが、A+Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(a21+b21,a22+b22)
のように求める第2加算ステップと、
前記計算装置Zが、A+Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(a21+b21,a23+b23)
のように求める第3加算ステップと
を有す
ことを特徴とする秘密計算方法。
【請求項14】
3つの計算装置から構成される秘密計算システムを用いた秘密計算方法であって、
数値Aの第1断片a1,第2断片a2,第3断片a3と、数値Bの第1断片b1,第2断片b2,第3断片b3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
b1=b22+b23
b2=(b21,b22)
b3=(b21,b23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ、第1要素b21,第2要素b22,第3要素b23はB=b21+b22+b23を満たす任意の数値の組合せ
の関係を有し、
計算装置Xとして機能する計算装置が第1断片を記録し、
計算装置Yとして機能する計算装置が第2断片を記録し、
計算装置Zとして機能する計算装置が第3断片を記録し、
秘密減算過程として、
前記計算装置Xが、A−Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=a1−b1
のように求める第1減算ステップと、
前記計算装置Yが、A−Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(a21−b21,a22−b22)
のように求める第2減算ステップと、
前記計算装置Zが、A−Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(a21−b21,a23−b23)
のように求める第3減算ステップと
を有す
ことを特徴とする秘密計算方法。
【請求項15】
3つの計算装置から構成される秘密計算システムを用いた秘密計算方法であって、
数値Aの第1断片a1,第2断片a2,第3断片a3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ
の関係を有し、
計算装置Xとして機能する計算装置が第1断片を記録し、
計算装置Yとして機能する計算装置が第2断片を記録し、
計算装置Zとして機能する計算装置が第3断片を記録し、
秘密定数倍過程として、
前記計算装置Xが、Aを数値B倍した結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=Ba1
のように求める第1定数倍計算ステップと、
前記計算装置Yが、Aを数値B倍した結果である数値Cの第2断片c2を、
c2=(c21,c22)=(Ba21,Ba22)
のように求める第2定数倍計算ステップと、
前記計算装置Zが、Aを数値B倍した結果である数値Cの第3断片c3を、
c3=(c21,c23)=(Ba21,Ba23)
のように求める第3定数倍計算ステップと
を有す
ことを特徴とする秘密計算方法。
【請求項16】
3つの計算装置から構成される秘密計算システムを用いた秘密計算方法であって、
数値Aの第1断片a1,第2断片a2,第3断片a3と、数値Bの第1断片b1,第2断片b2,第3断片b3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
b1=b22+b23
b2=(b21,b22)
b3=(b21,b23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ、第1要素b21,第2要素b22,第3要素b23はB=b21+b22+b23を満たす任意の数値の組合せ
の関係を有し、
計算装置Xとして機能する計算装置が第1断片を記録し、
計算装置Yとして機能する計算装置が第2断片を記録し、
計算装置Zとして機能する計算装置が第3断片を記録し、
秘密乗算過程として、
前記計算装置Xが、乱数r1,r2,r3,r4,r5を生成する乗算乱数生成ステップと、
前記計算装置Xが、A×Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1、第2要素c22、第3要素c23を
c1=a1b1−r3−r4
c22=r5
c23=c1−c22
のように求める第1乗算ステップと、
前記計算装置Xが、前記計算装置Yに(r1,r2,r3,c22)を、前記計算装置Zに(a1−r1,b1−r2,r4,c23)を送信する第1乗算送信ステップと、
前記計算装置Yが、前記計算装置Xから(r1,r2,r3,c22)を受信する第2乗算乱数受信ステップと、
前記計算装置Zが、前記計算装置Xから(a1−r1,b1−r2,r4,c23)を受信する第3乗算乱数受信ステップと、
前記計算装置Yが、数値yを
y=a21b21+a21r2+r1b21+r3
のように求める第2乗算中間値計算ステップと、
前記計算装置Zが、数値zを
z=a21(b1−r2)+(a1−r1)b21+r4
のように求める第3乗算中間値計算ステップと、
前記計算装置Yが、前記計算装置Zに数値yを送信する第2乗算送信ステップと、
前記計算装置Zが、前記計算装置Yに数値zを送信する第3乗算送信ステップと、
前記計算装置Yが、前記計算装置Zから数値zを受信する第2乗算中間値受信ステップと、
前記計算装置Zが、前記計算装置Yから数値yを受信する第3乗算中間値受信ステップと、
前記計算装置Yが、A×Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(y+z,c22)
のように求める第2乗算ステップと、
前記計算装置Zが、A×Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(y+z,c23)
のように求める第3乗算ステップと
を有す
ことを特徴とする秘密計算方法。
【請求項17】
3つの計算装置から構成される秘密計算システムを用いた秘密計算方法であって、
数値Aの第1断片a1,第2断片a2,第3断片a3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ
の関係を有し、
計算装置Xとして機能する計算装置が第1断片を記録し、
計算装置Yとして機能する計算装置が第2断片を記録し、
計算装置Zとして機能する計算装置が第3断片を記録し、
秘密否定過程として、
前記計算装置Xが、1−Aの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=−a1
のように求める第1否定ステップと、
前記計算装置Yが、1−Aの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(1−a21,−a22)
のように求める第2否定ステップと、
前記計算装置Zが、1−Aの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(1−a21,−a23)
のように求める第3否定ステップと
を有す
ことを特徴とする秘密計算方法。
【請求項18】
請求項13から17のいずれかに記載の秘密計算方法であって、
いずれかの計算装置が、
秘匿処理過程として、
自己が保持する数値Sから
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23と
s1=s22+s23
s2=(s21,s22)
s3=(s21,s23)
の関係を有する第1断片s1,第2断片s2,第3断片s3を求める断片生成ステップと、
計算装置Xとして機能する計算装置が第1断片s1を、計算装置Yとして機能する計算装置が第2断片s2を、計算装置Zとして機能する計算装置が第3断片s3を記録した状態にする断片分配ステップと
を有す
ことを特徴とする秘密計算方法。
【請求項19】
請求項13記載の秘密計算方法であって、
jを1以上3以下の整数、a1(j),a2(j),a3(j)を数値Aに対するj番目の第1断片,第2断片,第3断片、a21(j)をj番目の第1要素、計算装置X(j),計算装置Y(j),計算装置Z(j)をj番目の第1断片a1(j),第2断片a2(j),第3断片a3(j)に対して計算装置X,計算装置Y,計算装置Zとして機能する計算装置、乱数rを乱数rx,ry,rzの和とし、
前記3つの計算装置は、どの計算装置も、計算装置X,計算装置Y,計算装置Zのいずれとしても機能でき、
(X(1),Y(1),Z(1))、(X(2),Y(2),Z(2))、(X(3),Y(3),Z(3))はそれぞれ異なり、
(a1(1),a2(1),a3(1))、(a1(2),a2(2),a3(2))、(a1(3),a2(3),a3(3))はそれぞれ異なり、
秘匿処理過程は、
自己が保持する数値Sから
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23と
s1=s22+s23
s2=(s21,s22)
s3=(s21,s23)
の関係を有する第1断片s1,第2断片s2,第3断片s3を求める断片生成ステップと、
計算装置Xとして機能する計算装置が第1断片s1を、計算装置Yとして機能する計算装置が第2断片s2を、計算装置Zとして機能する計算装置が第3断片s3を記録した状態にする断片分配ステップと
を有する過程であり、
復元過程は、
計算装置Xが、計算装置Yに第1断片a1を送信する第1断片Y送信サブステップと、
計算装置Yが、計算装置Xから第1断片a1を受信する第2断片X受信サブステップと、
計算装置Yが、受信した第1断片a1と当該第1断片a1に対応する第1要素a21とを加算することで数値Aを復元する第2X復元サブステップ
からなる復元XYステップ、
計算装置Xが、計算装置100Zに第1断片a1を送信する第1断片Z送信サブステップと、
計算装置Zが、計算装置Xから第1断片a1を受信する第3断片X受信サブステップと、
計算装置Zが、受信した第1断片a1と当該第1断片a1に対応する第1要素a21とを加算することで数値を復元する第3X復元サブステップと
からなる復元XZステップ、
計算装置Yが、計算装置Xに第1要素a21を送信する第2断片X送信サブステップと、
計算装置Xが、計算装置Yから第1要素a21を受信する第1断片Y受信サブステップと、
計算装置Xが、受信した第1要素a21と当該第1要素a21に対応する第1断片a1とを加算することで数値を復元する第1Y復元サブステップと
からなる復元YXステップ、
計算装置Yが、計算装置Zに第2要素a22を送信する第2断片Z送信サブステップと、
計算装置Zが、計算装置Yから第2要素a21を受信する第3断片Y受信サブステップと、
計算装置Zが、受信した第2要素a22と当該第2要素a22に対応する第1要素a21と第3要素a23とを加算することで数値を復元する第3Y復元サブステップと
からなる復元YZステップ、
計算装置Zが、計算装置Xに第1要素a21を送信する第3断片X送信サブステップと、
計算装置Xが、計算装置Zから第1要素a21を受信する第1断片Z受信サブステップと、
計算装置Xが、受信した第1要素a21と当該第1要素a21に対応する第1断片a1とを加算することで数値を復元する第1Z復元サブステップと
からなる復元ZXステップ、
計算装置Zが、計算装置Yに第3要素a23を送信する第3断片送信サブステップと、
計算装置Yが、計算装置Zから第3要素a23を受信する第2断片受信サブステップと、
計算装置Yが、受信した第3要素a23と当該第3要素a23に対応する第1要素a21と第2要素a22とを加算することで数値Aを復元する第2復元サブステップと
からなる復元ZYステップ
の中の少なくともいずれか1つのステップを有する過程であり、
いずれかの計算装置が、j=1とする初期化ステップと、
計算装置Y(j)が保有する第1要素a21y(j)と計算装置Z(j)が保有する第1要素a21z(j)とが等しいことを確認する第1要素不正検出ステップと、
第1断片a1(j)が第2要素a22(j)と第3要素a23(j)の和であることを確認する第1断片不正検出ステップと、
第2要素a22(j)が第1断片a1(j)と第3要素a23(j)の差であることを確認する第2要素不正検出ステップと、
第3要素a23(j)が第1断片a1(j)と第2要素a22(j)の差であることを確認する第3要素不正検出ステップと、
計算装置X(j)が、乱数rxを生成する第1確認乱数生成ステップと、
計算装置X(j)が、前記秘匿処理過程によって第1断片a1(j),乱数rxの断片を、3つの計算装置で分散して記録した状態にする秘匿Xステップと、
計算装置Y(j)が、乱数ryを生成する第2確認乱数生成ステップと、
計算装置Y(j)が、前記秘匿処理過程によって第1要素a21(j),乱数ryの断片を、3つの計算装置で分散して記録した状態にする秘匿Yステップと、
計算装置Z(j)が、乱数rzを生成する第3確認乱数生成ステップと、
計算装置200Z(j)が、前記秘匿処理過程によって乱数rzの断片を、3つの計算装置で分散して記録した状態にする秘匿Zステップと、
前記秘密加算過程によって、
a1(j)+a21(j)+r
ただし、r=rx+ry+rz
の計算結果の断片を、3つの計算装置で分散して記録した状態にする秘密加算ステップと、
前記復元過程によって、
a1(j)+a21(j)+r
を復元し、いずれかの計算装置に記録しておく入力復元ステップと、
いずれかの計算装置が、j=3かを確認する条件確認ステップと、
j≠3のときにはjにj+1を代入し、前記第1要素不正検出ステップに戻る繰返ステップと、
j=3のときには、いずれかの計算装置が、3つの復元結果a1(1)+a21(1)+r,a1(2)+a21(2)+r,a1(3)+a21(3)+rが等しいことを確認する結果確認ステップと
を有すことを特徴とする秘密計算方法。
【請求項20】
同一の数値に対する異なる3種類の断片の組合せを入力とし、それぞれの断片の組合せに対して計算を行う請求項13記載の秘密計算方法であって、
jを1以上3以下の整数、c1(j),c2(j),c3(j)を計算結果である数値Cに対するj番目の第1断片,第2断片,第3断片、c21(j),c22(j),c23(j)をj番目の第1要素,第2要素,第3要素、計算装置X(j),計算装置Y(j),計算装置Z(j)をj番目の第1断片c1(j),第2断片c2(j),第3断片c3(j)を求めたときに計算装置X,計算装置Y,計算装置Zとして機能した計算装置、乱数rを乱数rx,ry,rzの和とし、
前記3つの計算装置は、どの計算装置も、計算装置X,計算装置Y,計算装置Zのいずれとしても機能でき、
(X(1),Y(1),Z(1))、(X(2),Y(2),Z(2))、(X(3),Y(3),Z(3))はそれぞれ異なり、
(c1(1),c2(1),c3(1))、(c1(2),c2(2),c3(2))、(c1(3),c2(3),c3(3))はそれぞれ異なり、
秘匿処理過程は、
自己が保持する数値Sから
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23と
s1=s22+s23
s2=(s21,s22)
s3=(s21,s23)
の関係を有する第1断片s1,第2断片s2,第3断片s3を求める断片生成ステップと、
計算装置Xとして機能する計算装置が第1断片s1を、計算装置Yとして機能する計算装置が第2断片s2を、計算装置Zとして機能する計算装置が第3断片s3を記録した状態にする断片分配ステップと
を有する過程であり、
復元過程は、
計算装置Xが、計算装置Yに第1断片a1を送信する第1断片Y送信サブステップと、
計算装置Yが、計算装置Xから第1断片a1を受信する第2断片X受信サブステップと、
計算装置Yが、受信した第1断片a1と当該第1断片a1に対応する第1要素a21とを加算することで数値Aを復元する第2X復元サブステップ
からなる復元XYステップ、
計算装置Xが、計算装置100Zに第1断片a1を送信する第1断片Z送信サブステップと、
計算装置Zが、計算装置Xから第1断片a1を受信する第3断片X受信サブステップと、
計算装置Zが、受信した第1断片a1と当該第1断片a1に対応する第1要素a21とを加算することで数値を復元する第3X復元サブステップと
からなる復元XZステップ、
計算装置Yが、計算装置Xに第1要素a21を送信する第2断片X送信サブステップと、
計算装置Xが、計算装置Yから第1要素a21を受信する第1断片Y受信サブステップと、
計算装置Xが、受信した第1要素a21と当該第1要素a21に対応する第1断片a1とを加算することで数値を復元する第1Y復元サブステップと
からなる復元YXステップ、
計算装置Yが、計算装置Zに第2要素a22を送信する第2断片Z送信サブステップと、
計算装置Zが、計算装置Yから第2要素a21を受信する第3断片Y受信サブステップと、
計算装置Zが、受信した第2要素a22と当該第2要素a22に対応する第1要素a21と第3要素a23とを加算することで数値を復元する第3Y復元サブステップと
からなる復元YZステップ、
計算装置Zが、計算装置Xに第1要素a21を送信する第3断片X送信サブステップと、
計算装置Xが、計算装置Zから第1要素a21を受信する第1断片Z受信サブステップと、
計算装置Xが、受信した第1要素a21と当該第1要素a21に対応する第1断片a1とを加算することで数値を復元する第1Z復元サブステップと
からなる復元ZXステップ、
計算装置Zが、計算装置Yに第3要素a23を送信する第3断片送信サブステップと、
計算装置Yが、計算装置Zから第3要素a23を受信する第2断片受信サブステップと、
計算装置Yが、受信した第3要素a23と当該第3要素a23に対応する第1要素a21と第2要素a22とを加算することで数値Aを復元する第2復元サブステップと
からなる復元ZYステップ
の中の少なくともいずれか1つのステップを有する過程であり、
いずれかの計算装置が、j=1とする初期化ステップと、
計算装置X(j)が、乱数rxを生成する第1確認乱数生成ステップと、
計算装置X(j)が、前記秘匿処理過程によって第1断片c1(j),乱数rxの断片を、3つの計算装置で分散して記録した状態にする秘匿Xステップと、
計算装置Y(j)が、乱数ryを生成する第2確認乱数生成ステップと、
計算装置Y(j)が、前記秘匿処理過程によって第1要素c21(j),乱数ryの断片を、3つの計算装置で分散して記録した状態にする秘匿Yステップと、
計算装置Z(j)が、乱数rzを生成する第3確認乱数生成ステップと、
計算装置Z(j)が、前記秘匿処理過程によって乱数rzの断片を3つの計算装置で分散して記録した状態にする秘匿Zステップと、
前記秘密加算過程によって、
c1(j)+c22(j)+r
ただし、r=rx+ry+rz
の計算結果の断片を、3つの計算装置で分散して記録した状態にする秘密加算ステップと、
前記復元XYステップまたは復元YXステップからなる前記復元過程によって、
c1(j)+c22(j)+r=CXY(j)を復元して記録しておき、
前記復元YZステップまたは復元ZYステップからなる前記復元過程によって、
c1(j)+c22(j)+r=CYZ(j)を復元して記録しておき、
前記復元XZステップまたは復元ZXステップからなる前記復元過程によって、
c1(j)+c22(j)+r=CXZ(j)を復元して記録しておく結果復元ステップと、
いずれかの計算装置が、j=3かを確認する条件確認ステップと、
j≠3のときにはjにj+1を代入し、前記第1確認乱数生成ステップに戻る繰返ステップと、
j=3のときには、9つの復元結果CXY(1),CYZ(1),CXZ(1),CXY(2),CYZ(2),CXZ(2),CXY(3),CYZ(3),CXZ(3)がすべて等しいことを確認する結果確認ステップと
を有すことを特徴とする秘密計算方法。
【請求項21】
同一の数値に対する異なる3種類の断片の組合せを入力とし、それぞれの断片の組合せに対して計算を行う請求項14から17のいずれかに記載の秘密計算方法であって、
jを1以上3以下の整数、c1(j),c2(j),c3(j)を計算結果である数値Cに対するj番目の第1断片,第2断片,第3断片、c21(j),c22(j),c23(j)をj番目の第1要素,第2要素,第3要素、計算装置X(j),計算装置Y(j),計算装置Z(j)をj番目の第1断片c1(j),第2断片c2(j),第3断片c3(j)を求めたときに計算装置X,計算装置Y,計算装置Zとして機能した計算装置、乱数rを乱数rx,ry,rzの和とし、
前記3つの計算装置は、どの計算装置も、計算装置X,計算装置Y,計算装置Zのいずれとしても機能でき、
(X(1),Y(1),Z(1))、(X(2),Y(2),Z(2))、(X(3),Y(3),Z(3))はそれぞれ異なり、
(c1(1),c2(1),c3(1))、(c1(2),c2(2),c3(2))、(c1(3),c2(3),c3(3))はそれぞれ異なり、
秘匿処理過程は、
自己が保持する数値Sから
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23と
s1=s22+s23
s2=(s21,s22)
s3=(s21,s23)
の関係を有する第1断片s1,第2断片s2,第3断片s3を求める断片生成ステップと、
計算装置Xとして機能する計算装置が第1断片s1を、計算装置Yとして機能する計算装置が第2断片s2を、計算装置Zとして機能する計算装置が第3断片s3を記録した状態にする断片分配ステップと
を有する過程であり、
秘密加算過程は、
前記計算装置Xが、A+Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=a1+b1
のように求める第1加算ステップと、
前記計算装置Yが、A+Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(a21+b21,a22+b22)
のように求める第2加算ステップと、
前記計算装置Zが、A+Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(a21+b21,a23+b23)
のように求める第3加算ステップと
を有する過程であり、
復元過程は、
計算装置Xが、計算装置Yに第1断片a1を送信する第1断片Y送信サブステップと、
計算装置Yが、計算装置Xから第1断片a1を受信する第2断片X受信サブステップと、
計算装置Yが、受信した第1断片a1と当該第1断片a1に対応する第1要素a21とを加算することで数値Aを復元する第2X復元サブステップ
からなる復元XYステップ、
計算装置Xが、計算装置100Zに第1断片a1を送信する第1断片Z送信サブステップと、
計算装置Zが、計算装置Xから第1断片a1を受信する第3断片X受信サブステップと、
計算装置Zが、受信した第1断片a1と当該第1断片a1に対応する第1要素a21とを加算することで数値を復元する第3X復元サブステップと
からなる復元XZステップ、
計算装置Yが、計算装置Xに第1要素a21を送信する第2断片X送信サブステップと、
計算装置Xが、計算装置Yから第1要素a21を受信する第1断片Y受信サブステップと、
計算装置Xが、受信した第1要素a21と当該第1要素a21に対応する第1断片a1とを加算することで数値を復元する第1Y復元サブステップと
からなる復元YXステップ、
計算装置Yが、計算装置Zに第2要素a22を送信する第2断片Z送信サブステップと、
計算装置Zが、計算装置Yから第2要素a21を受信する第3断片Y受信サブステップと、
計算装置Zが、受信した第2要素a22と当該第2要素a22に対応する第1要素a21と第3要素a23とを加算することで数値を復元する第3Y復元サブステップと
からなる復元YZステップ、
計算装置Zが、計算装置Xに第1要素a21を送信する第3断片X送信サブステップと、
計算装置Xが、計算装置Zから第1要素a21を受信する第1断片Z受信サブステップと、
計算装置Xが、受信した第1要素a21と当該第1要素a21に対応する第1断片a1とを加算することで数値を復元する第1Z復元サブステップと
からなる復元ZXステップ、
計算装置Zが、計算装置Yに第3要素a23を送信する第3断片送信サブステップと、
計算装置Yが、計算装置Zから第3要素a23を受信する第2断片受信サブステップと、
計算装置Yが、受信した第3要素a23と当該第3要素a23に対応する第1要素a21と第2要素a22とを加算することで数値Aを復元する第2復元サブステップと
からなる復元ZYステップ
の中の少なくともいずれか1つのステップを有する過程であり、
いずれかの計算装置が、j=1とする初期化ステップと、
計算装置X(j)が、乱数rxを生成する第1確認乱数生成ステップと、
計算装置X(j)が、前記秘匿処理過程によって第1断片c1(j),乱数rxの断片を、3つの計算装置で分散して記録した状態にする秘匿Xステップと、
計算装置Y(j)が、乱数ryを生成する第2確認乱数生成ステップと、
計算装置Y(j)が、前記秘匿処理過程によって第1要素c21(j),乱数ryの断片を、3つの計算装置で分散して記録した状態にする秘匿Yステップと、
計算装置Z(j)が、乱数rzを生成する第3確認乱数生成ステップと、
計算装置Z(j)が、前記秘匿処理過程によって乱数rzの断片を3つの計算装置で分散して記録した状態にする秘匿Zステップと、
前記秘密加算過程によって、
c1(j)+c22(j)+r
ただし、r=rx+ry+rz
の計算結果の断片を、3つの計算装置で分散して記録した状態にする秘密加算ステップと、
前記復元XYステップまたは復元YXステップからなる前記復元過程によって、
c1(j)+c22(j)+r=CXY(j)を復元して記録しておき、
前記復元YZステップまたは復元ZYステップからなる前記復元過程によって、
c1(j)+c22(j)+r=CYZ(j)を復元して記録しておき、
前記復元XZステップまたは復元ZXステップからなる前記復元過程によって、
c1(j)+c22(j)+r=CXZ(j)を復元して記録しておく結果復元ステップと、
いずれかの計算装置が、j=3かを確認する条件確認ステップと、
j≠3のときにはjにj+1を代入し、前記第1確認乱数生成ステップに戻る繰返ステップと、
j=3のときには、9つの復元結果CXY(1),CYZ(1),CXZ(1),CXY(2),CYZ(2),CXZ(2),CXY(3),CYZ(3),CXZ(3)がすべて等しいことを確認する結果確認ステップと
を有すことを特徴とする秘密計算方法。
【請求項22】
3つの計算装置から構成される秘密計算システムを用いた秘密計算方法であって、
数値Aの第1断片a1,第2断片a2,第3断片a3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ
の関係を有し、
計算装置Xとして機能する計算装置が第1断片を記録し、
計算装置Yとして機能する計算装置が第2断片を記録し、
計算装置Zとして機能する計算装置が第3断片を記録し、
Nを2以上の整数、nを1以上N以下の整数、a1[n]を第1断片a1を2進表現したときの下位n桁目の値とし、
計算装置Xが、2N個の乱数(r0,1,r1,1),…,(r0,N,r1,N)を生成する乱数生成ステップと、
計算装置Xが、乱数(r0,1,r1,1),…,(r0,N,r1,N)を計算装置Yに送信し、ra1[1],1,…,ra1[N],Nを計算装置Zに送信する第1演算送信ステップと、
計算装置Yが、計算装置Xから乱数(r0,1,r1,1),…,(r0,N,r1,N)を受信する第2置換乱数受信ステップと、
計算装置Yが、Nビットの乱数e21,e22を生成し、第1要素e21,第2要素e22とする要素生成ステップと、
計算装置Yが、第1断片a1が入力された場合に第1断片e1と第3要素e23を出力する論理回路C”の入出力を乱数に置き換えたgarbled circuit GC”(ただし、入力である第1断片a1は乱数(r0,1,r1,1),…,(r0,N,r1,N)に置き換えられる)と、garbled circuit GC”の出力である第1乱数断片e’1,第3乱数要素e’23それぞれを、第1断片e1,第3要素e23に変換する第1断片関数t1,第3要素関数t23を生成するgarbled circuit生成ステップと、
計算装置Yが、第1断片関数t1を計算装置Xに送信し、garbled circuit GC”と第3要素関数t23と第1要素e21を計算装置Zに送信する第2演算送信ステップと、
計算装置Zが、計算装置Xからra1[1],1,…,ra1[N],Nを受信し、計算装置Yからgarbled circuit GC”と第3要素関数t23と第1要素e21を受信する第3演算受信ステップと、
計算装置Zが、ra1[1],1,…,ra1[N],Nとgarbled circuit GC”とを用いて、第1乱数断片e’1,第3乱数要素e’23を求める演算実行ステップと、
計算装置Zが、第1乱数断片e’1を計算装置Xに送信する第3演算送信ステップと、
計算装置Xが、計算装置Yから第1断片関数t1を受信し、計算装置Zから第1乱数断片e’1を受信する第1演算受信ステップと、
計算装置Xが、第1断片e1をe1=t1(e’1)のように求める第1演算復号ステップと、
計算装置Yが、第2断片e2をe2=(e21,e22)とする第2演算復号ステップと、
計算装置Zが、第3要素e23をe23=t23(e’23)のように求め、第3断片e3をe3=(e21,e23)とする第3演算復号ステップと
を有することを特徴とする秘密計算方法。
【請求項23】
請求項13から18、もしくは22のいずれかに記載の秘密計算方法であって、
計算装置Xが、計算装置Yに第1断片a1を送信する第1断片Y送信ステップと、
計算装置Yが、計算装置Xから第1断片a1を受信する第2断片X受信ステップと、
計算装置Yが、受信した第1断片a1と当該第1断片a1に対応する第1要素a21とを加算することで数値Aを復元する第2X復元ステップ
からなる復元XY過程、
計算装置Xが、計算装置100Zに第1断片a1を送信する第1断片Z送信ステップと、
計算装置Zが、計算装置Xから第1断片a1を受信する第3断片X受信ステップと、
計算装置Zが、受信した第1断片a1と当該第1断片a1に対応する第1要素a21とを加算することで数値を復元する第3X復元ステップと
からなる復元XZ過程、
計算装置Yが、計算装置Xに第1要素a21を送信する第2断片X送信ステップと、
計算装置Xが、計算装置Yから第1要素a21を受信する第1断片Y受信ステップと、
計算装置Xが、受信した第1要素a21と当該第1要素a21に対応する第1断片a1とを加算することで数値を復元する第1Y復元ステップと
からなる復元YX過程、
計算装置Yが、計算装置Zに第2要素a22を送信する第2断片Z送信ステップと、
計算装置Zが、計算装置Yから第2要素a21を受信する第3断片Y受信ステップと、
計算装置Zが、受信した第2要素a22と当該第2要素a22に対応する第1要素a21と第3要素a23とを加算することで数値を復元する第3Y復元ステップと
からなる復元YZ過程、
計算装置Zが、計算装置Xに第1要素a21を送信する第3断片X送信ステップと、
計算装置Xが、計算装置Zから第1要素a21を受信する第1断片Z受信ステップと、
計算装置Xが、受信した第1要素a21と当該第1要素a21に対応する第1断片a1とを加算することで数値を復元する第1Z復元ステップと
からなる復元ZX過程、
計算装置Zが、計算装置Yに第3要素a23を送信する第3断片送信ステップと、
計算装置Yが、計算装置Zから第3要素a23を受信する第2断片受信ステップと、
計算装置Yが、受信した第3要素a23と当該第3要素a23に対応する第1要素a21と第2要素a22とを加算することで数値Aを復元する第2復元ステップと
からなる復元ZY過程
の中の少なくともいずれか1つの過程も有することを特徴とする秘密計算方法。
【請求項24】
第1断片を記録する計算装置Xと、
第2断片を記録する計算装置Yと、
第3断片を記録する計算装置Zから構成される秘密計算システムを用いた秘密計算方法であって、
前記第1断片,第2断片,第3断片は、これらの中の2つが分かれば元の数値が復元できるものであり、
Nを2以上の整数、nを1以上N以下の整数、a1,a2,a3をNビット以下の数値Aの第1断片,第2断片,第3断片、e1,e2,e3を数値Aを論理回路Cに入力したときの出力E=C(A)の第1断片,第2断片,第3断片、a1[n]を第1断片a1を2進表現したときの下位n桁目の値とし、
計算装置Xが、2N個の乱数(r0,1,r1,1),…,(r0,N,r1,N)を生成する乱数生成ステップと、
計算装置Xが、乱数(r0,1,r1,1),…,(r0,N,r1,N)を計算装置Yに送信し、ra1[1],1,…,ra1[N],Nを計算装置Zに送信する第1演算送信ステップと、
計算装置Yが、計算装置Xから乱数(r0,1,r1,1),…,(r0,N,r1,N)を受信する第2置換乱数受信ステップと、
計算装置Yが、第1断片a1が入力された場合に第1断片e1,第2断片e2,第3断片e3を出力する論理回路C’の入出力を乱数に置き換えたgarbled circuit GC’(ただし、入力である第1断片a1は乱数(r0,1,r1,1),…,(r0,N,r1,N)に置き換えられる)と、前記garbled circuit GC’の出力である第1乱数断片e’1,第2乱数断片e’2,第3乱数断片e’3それぞれを、第1断片e1,第2断片e2,第3断片e3に変換する第1断片関数t1,第2断片関数t2,第3断片関数t3を生成するgarbled circuit生成ステップと、
計算装置Yが、第1断片関数t1を計算装置Xに送信し、garbled circuit GC’と第3断片関数t3を計算装置Zに送信する第2演算送信ステップと、
計算装置Zが、計算装置Xからra1[1],1,…,ra1[N],Nを受信し、計算装置Yからgarbled circuit GC’と第3断片関数t3を受信する第3演算受信ステップと、
計算装置Zが、ra1[1],1,…,ra1[N],Nとgarbled circuit GC’とを用いて、第1乱数断片e’1,第2乱数断片e’2,第3乱数断片e’3を求める演算実行ステップと、
計算装置Zが、第1乱数断片e’1を計算装置Xに送信し、第2乱数断片e’2を計算装置Yに送信する第3演算送信ステップと、
計算装置Xが、計算装置Yから第1断片関数t1を受信し、計算装置Zから第1乱数断片e’1を受信する第1演算受信ステップと、
計算装置Xが、第1断片e1をe1=t1(e’1)のように求める第1演算復号ステップと、
計算装置Yが、計算装置Zから第2乱数断片e’2を受信する第2乱数断片受信ステップと、
計算装置Yが、第2断片e2をe2=t2(e’2)のように求める第2演算復号ステップと、
計算装置Zが、第3断片e3をe3=t3(e’3)のように求める第3演算復号ステップと
を有することを特徴とする秘密計算方法。
【請求項25】
数値Aの第1断片a1,第2断片a2,第3断片a3と、数値Bの第1断片b1,第2断片b2,第3断片b3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
b1=b22+b23
b2=(b21,b22)
b3=(b21,b23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ、第1要素b21,第2要素b22,第3要素b23はB=b21+b22+b23を満たす任意の数値の組合せ
の関係を有し、
計算装置Xとして機能する計算装置が第1断片を記録し、
計算装置Yとして機能する計算装置が第2断片を記録し、
計算装置Zとして機能する計算装置が第3断片を記録するときに、
計算装置Xとして機能する計算装置であって、
A+Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=a1+b1
のように求める第1加算部と、
A−Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=a1−b1
のように求める第1減算部と、
Aを数値B倍した結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=Ba1
のように求める第1定数倍計算部と、
乱数r1,r2,r3,r4,r5を生成する乗算乱数生成部と、
A×Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1、第2要素c22、第3要素c23を
c1=a1b1−r3−r4
c22=r5
c23=c1−c22
のように求める第1乗算部と、
前記計算装置Yに(r1,r2,r3,c22)を、前記計算装置Zに(a1−r1,b1−r2,r4,c23)を送信する第1乗算送信部と、
1−Aの結果である数値C(ただし、C=c21+c22+c23)の第1断片c1を、
c1=−a1
のように求める第1否定部と、
自己が保持する数値Sから
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23と
s1=s22+s23
s2=(s21,s22)
s3=(s21,s23)
の関係を有する第1断片s1,第2断片s2,第3断片s3を求める断片生成部と、
計算装置Yとして機能する計算装置が第2断片s2を、計算装置Zとして機能する計算装置が第3断片s3を記録した状態にする断片分配部と、
を備える計算装置。
【請求項26】
数値Aの第1断片a1,第2断片a2,第3断片a3と、数値Bの第1断片b1,第2断片b2,第3断片b3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
b1=b22+b23
b2=(b21,b22)
b3=(b21,b23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ、第1要素b21,第2要素b22,第3要素b23はB=b21+b22+b23を満たす任意の数値の組合せ
の関係を有し、
計算装置Xとして機能する計算装置が第1断片を記録し、
計算装置Yとして機能する計算装置が第2断片を記録し、
計算装置Zとして機能する計算装置が第3断片を記録するときに、
計算装置Yとして機能する計算装置であって、
A+Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(a21+b21,a22+b22)
のように求める第2加算部と、
A−Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(a21−b21,a22−b22)
のように求める第2減算部と、
Aを数値B倍した結果である数値Cの第2断片c2を、
c2=(c21,c22)=(Ba21,Ba22)
のように求める第2定数倍計算部と、
前記計算装置Xから(r1,r2,r3,c22)を受信する第2乗算乱数受信部と、
数値yを
y=a21b21+a21r2+r1b21+r3
のように求める第2乗算中間値計算部と、
前記計算装置Zに数値yを送信する第2乗算送信部と、
前記計算装置Zから数値zを受信する第2乗算中間値受信部と、
A×Bの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(y+z,c22)
のように求める第2乗算部と、
1−Aの結果である数値Cの第2断片c2を、
c2=(c21,c22)=(1−a21,−a22)
のように求める第2否定部と、
自己が保持する数値Sから
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23と
s1=s22+s23
s2=(s21,s22)
s3=(s21,s23)
の関係を有する第1断片s1,第2断片s2,第3断片s3を求める断片生成部と、
計算装置Xとして機能する計算装置が第1断片s1を、計算装置Zとして機能する計算装置が第3断片s3を記録した状態にする断片分配部と
を備える計算装置。
【請求項27】
数値Aの第1断片a1,第2断片a2,第3断片a3と、数値Bの第1断片b1,第2断片b2,第3断片b3は、
a1=a22+a23
a2=(a21,a22)
a3=(a21,a23)
b1=b22+b23
b2=(b21,b22)
b3=(b21,b23)
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ、第1要素b21,第2要素b22,第3要素b23はB=b21+b22+b23を満たす任意の数値の組合せ
の関係を有し、
計算装置Xとして機能する計算装置が第1断片を記録し、
計算装置Yとして機能する計算装置が第2断片を記録し、
計算装置Zとして機能する計算装置が第3断片を記録するときに、
計算装置Zとして機能する計算装置であって、
A+Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(a21+b21,a23+b23)
のように求める第3加算部と、
A−Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(a21−b21,a23−b23)
のように求める第3減算部と、
Aを数値B倍した結果である数値Cの第3断片c3を、
c3=(c21,c23)=(Ba21,Ba23)
のように求める第3定数倍計算部と、
前記計算装置Xから(a1−r1,b1−r2,r4,c23)を受信する第3乗算乱数受信部と、
数値zを
z=a21(b1−r2)+(a1−r1)b21+r4
のように求める第3乗算中間値計算部と、
前記計算装置Yに数値zを送信する第3乗算送信部と、
前記計算装置Yから数値yを受信する第3乗算中間値受信部と、
A×Bの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(y+z,c23)
のように求める第3乗算部と、
1−Aの結果である数値Cの第3断片c3を、
c3=(c21,c23)=(1−a21,−a23)
のように求める第3否定部と、
自己が保持する数値Sから
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23と
s1=s22+s23
s2=(s21,s22)
s3=(s21,s23)
の関係を有する第1断片s1,第2断片s2,第3断片s3を求める断片生成部と、
計算装置Xとして機能する計算装置が第1断片s1を、計算装置Yとして機能する計算装置が第2断片s2を、計算装置Zとして機能する計算装置が第3断片s3を記録した状態にする断片分配部と
を備える計算装置。
【請求項28】
請求項25記載の計算装置と、
請求項26記載の計算装置と、
請求項27記載の計算装置とを有する秘密計算システムであって、
前記第1加算部、前記第2加算部、前記第3加算部で構成される秘密加算手段と、
前記第1減算部、前記第2減算部、前記第3減算部で構成される秘密減算手段と、
前記第1定数倍計算部、前記第2定数倍計算部、前記第3定数倍計算部で構成される秘密定数倍手段と、
前記乗算乱数生成部、前記第1乗算部、前記第1乗算送信部、前記第2乗算乱数受信部、前記第2乗算中間値計算部、前記第2乗算送信部、前記第2乗算中間値受信部、前記第2乗算部、前記第3乗算乱数受信部、前記第3乗算中間値計算部、前記第3乗算送信部、前記第3乗算中間値受信部、前記第3乗算部で構成される秘密乗算手段と、
前記第1否定部、前記第2否定部、前記第3否定部で構成される秘密否定手段と、
少なくとも前記計算装置Xの断片生成部と断片分配部と、前記計算装置Yの断片生成部と断片分配部とで構成される秘匿処理手段と、
を有し、
さらに、数値Aを2進数に変換するための秘密2進変換手段も有しており、
前記秘密2進変換手段は、
(1)前記秘匿処理手段を用いて、第1断片a1[1],…,a1[N]と、第1要素a21[1],…,a21[N]を秘匿処理し、
(2)前記秘密加算手段、前記秘密乗算手段、前記秘密定数倍手段、前記秘密減算手段を用いて、
【数11】
を行って、各前記計算装置が、A[1]の断片を分散して記録した状態とし、
(3−1)n=2のように初期設定を行い、
(3−2)前記秘密定数倍手段、前記秘密加算手段、前記秘密減算手段によって、
【数12】
を行って、各前記計算装置が、B(n)の断片b1(n),b2(n),b3(n)を分散して記録した状態とし、
(3−3)前記秘匿処理手段によって、B(n)の第1断片b1(n)とB(n)の第1要素b21(n)を秘匿処理し、
(3−4)前記秘密加算手段、前記秘密乗算手段、前記秘密定数倍手段、前記秘密減算手段によって、
【数13】
を行って、D(n)の断片d1(n),d2(n),d3(n)を分散して記録した状態にし、
(4−1)前記計算装置は、それぞれc1(n)=0、i=1のように初期設定を行い、
(4−2)前記計算装置Xは、
【数14】
を計算し、前記計算装置Yと前記計算装置Zは、
【数15】
を計算し、
(4−3)前記計算装置100は、それぞれ
ci+1(n)=ci(n)b1(n)[i]∨ci(n)b21(n)[i]∨b1(n)[i]b21(n)[i]
を計算し、
(4−4)前記計算装置は、i=1からn−1まで上記の(4−2)と(4−3)を繰返し、
(5−1)cn(n)=0ならば、各計算装置は、分散して記録しているD(n)の断片を、各計算装置が分散して記録するA[n]の断片とし、cn(n)=1ならば各計算装置が断片を分散して記録しているD(n)の否定を前記秘密否定手段で計算し、D(n)の否定の断片を、各計算装置が記録するA[n]の断片とし、
(5−2)n=Nかを確認し、Noの場合には、nにn+1を代入して上記(3−2)に戻り、Yesの場合には処理を終了する
ことを特徴とする秘密計算システム。
【請求項29】
請求項25記載の計算装置と、
請求項26記載の計算装置と、
請求項27記載の計算装置とを用いて秘密計算を行う秘密計算方法であって、
前記第1加算部、前記第2加算部、前記第3加算部を用いて秘密加算を行う秘密加算過程と、
前記第1減算部、前記第2減算部、前記第3減算部を用いて秘密減算を行う秘密減算過程と、
前記第1定数倍計算部、前記第2定数倍計算部、前記第3定数倍計算部を用いて秘密定数倍を行う秘密定数倍過程と、
前記乗算乱数生成部、前記第1乗算部、前記第1乗算送信部、前記第2乗算乱数受信部、前記第2乗算中間値計算部、前記第2乗算送信部、前記第2乗算中間値受信部、前記第2乗算部、前記第3乗算乱数受信部、前記第3乗算中間値計算部、前記第3乗算送信部、前記第3乗算中間値受信部、前記第3乗算部を用いて秘密乗算を行う秘密乗算過程と、
前記第1否定部、前記第2否定部、前記第3否定部を用いて秘密否定を行う秘密否定過程と、
少なくとも前記計算装置Xの断片生成部と断片分配部と、前記計算装置Yの断片生成部と断片分配部を用いて秘匿処理を行う秘匿処理過程と、
を有し、
さらに、数値Aを2進数に変換するための秘密2進変換過程も有しており、
前記秘密2進変換過程は、
(1)前記秘匿処理過程を用いて、第1断片a1[1],…,a1[N]と、第1要素a21[1],…,a21[N]を秘匿処理するステップと、
(2)前記秘密加算過程、前記秘密乗算過程、前記秘密定数倍過程、前記秘密減算過程を用いて、
【数16】
を行って、各前記計算装置が、A[1]の断片を分散して記録した状態とするステップと、
(3−1)n=2のように初期設定を行うステップと、
(3−2)前記秘密定数倍過程、前記秘密加算過程、前記秘密減算過程を用いて、
【数17】
を行って、各前記計算装置が、B(n)の断片b1(n),b2(n),b3(n)を分散して記録した状態とするステップと、
(3−3)前記秘匿処理過程を用いて、B(n)の第1断片b1(n)とB(n)の第1要素b21(n)を秘匿処理するステップと、
(3−4)前記秘密加算過程、前記秘密乗算過程、前記秘密定数倍過程、前記秘密減算過程を用いて、
【数18】
を行って、D(n)の断片d1(n),d2(n),d3(n)を分散して記録した状態にするステップと、
(4−1)前記計算装置が、それぞれc1(n)=0、i=1のように初期設定を行うステップと、
(4−2)前記計算装置Xが、
【数19】
を計算し、前記計算装置Yと前記計算装置Zが、
【数20】
を計算するステップと、
(4−3)前記計算装置100が、それぞれ
ci+1(n)=ci(n)b1(n)[i]∨ci(n)b21(n)[i]∨b1(n)[i]b21(n)[i]
を計算するステップと、
(4−4)前記計算装置が、i=1からn−1まで上記の(4−2)と(4−3)を繰返し、
(5−1)cn(n)=0ならば、各計算装置が、分散して記録しているD(n)の断片を、各計算装置が分散して記録するA[n]の断片とし、cn(n)=1ならば各計算装置が断片を分散して記録しているD(n)の否定を前記秘密否定過程で計算し、D(n)の否定の断片を、各計算装置が記録するA[n]の断片とするステップと、
(5−2)n=Nかを確認し、Noの場合には、nにn+1を代入して上記(3−2)に戻り、Yesの場合には処理を終了するステップと
を有することを特徴とする秘密計算方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【公開番号】特開2011−199821(P2011−199821A)
【公開日】平成23年10月6日(2011.10.6)
【国際特許分類】
【出願番号】特願2010−117721(P2010−117721)
【出願日】平成22年5月21日(2010.5.21)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】
【公開日】平成23年10月6日(2011.10.6)
【国際特許分類】
【出願日】平成22年5月21日(2010.5.21)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】
[ Back to top ]