説明

秘密計算システム、秘密計算方法、計算装置

【課題】計算効率と通信効率が従来方法よりも優れた秘密計算方法を提供する。
【解決手段】本発明の秘密計算システムは、3つの計算装置から構成され、数値Aの第1断片a,第2断片a,第3断片aは、a=a22+a23,a=(a21,a22),a=(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断片a,第2断片a,第3断片aと、数値Bの第1断片b,第2断片b,第3断片bは、
=a22+a23
=(a21,a22
=(a21,a23
=b22+b23
=(b21,b22
=(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断片cを、
=a+b
のように求める第1加算部を有し、計算装置Yが、A+Bの結果である数値Cの第2断片cを、
=(c21,c22)=(a21+b21,a22+b22
のように求める第2加算部を有し、計算装置Zが、A+Bの結果である数値Cの第3断片cを、
=(c21,c23)=(a21+b21,a23+b23
のように求める第3加算部を有す。
【0008】
本発明の秘密計算システムの秘密減算手段は、計算装置Xが、A−Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片cを、
=a−b
のように求める第1減算部を有し、計算装置Yが、A−Bの結果である数値Cの第2断片cを、
=(c21,c22)=(a21−b21,a22−b22
のように求める第2減算部を有し、計算装置Zが、A−Bの結果である数値Cの第3断片cを、
=(c21,c23)=(a21−b21,a23−b23
のように求める第3減算部を有す。
【0009】
本発明の秘密計算システムの秘密定数倍手段は、計算装置Xが、Aを数値B倍した結果である数値C(ただし、C=c21+c22+c23)の第1断片cを、
=Ba
のように求める第1定数倍計算部を有し、計算装置Yが、Aを数値B倍した結果である数値Cの第2断片cを、
=(c21,c22)=(Ba21,Ba22
のように求める第2定数倍計算部を有し、計算装置Zが、Aを数値B倍した結果である数値Cの第3断片cを、
=(c21,c23)=(Ba21,Ba23
のように求める第3定数倍計算部を有す。
【0010】
本発明の秘密計算システムの秘密乗算手段は、計算装置Xが、乗算乱数生成部と第1乗算部と第1乗算送信部を有し、計算装置Yが、第2乗算乱数受信部と第2乗算中間値計算部と第2乗算送信部と第2乗算中間値受信部と第2乗算部を有し、計算装置Zが、第3乗算乱数受信部と第3乗算中間値計算部と第3乗算送信部と第3乗算中間値受信部と第3乗算部を有す。乗算乱数生成部は、乱数r,r,r,r,rを生成する。第1乗算部は、A×Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c、第2要素c22、第3要素c23
=a−r−r
22=r
23=c−c22
のように求める。第1乗算送信部は、計算装置Yに(r,r,r,c22)を、計算装置Zに(a−r,b−r,r,c23)を送信する。第2乗算乱数受信部は、計算装置Xから(r,r,r,c22)を受信する。第2乗算中間値計算部は、数値yを
y=a2121+a21+r21+r
のように求める。第2乗算送信部は、計算装置Zに数値yを送信する。第2乗算中間値受信部は、計算装置Zから数値zを受信する。第2乗算部は、A×Bの結果である数値Cの第2断片cを、
=(c21,c22)=(y+z,c22
のように求める。第3乗算乱数受信部は、計算装置Xから(a−r,b−r,r,c23)を受信する。第3乗算中間値計算部は、数値zを
z=a21(b−r)+(a−r)b21+r
のように求める。第3乗算送信部は、計算装置Yに数値zを送信する。第3乗算中間値受信部は、計算装置Yから数値yを受信する。第3乗算部は、A×Bの結果である数値Cの第3断片cを、
=(c21,c23)=(y+z,c23
のように求める。
【0011】
本発明の秘密計算システムの秘密否定手段では、計算装置Xが、1−Aの結果である数値C(ただし、C=c21+c22+c23)の第1断片cを、
=−a
のように求める第1否定部を有し、計算装置Yが、1−Aの結果である数値Cの第2断片cを、
=(c21,c22)=(1−a21,−a22
のように求める第2否定部を有し、計算装置Zが、1−Aの結果である数値Cの第3断片cを、
=(c21,c23)=(1−a21,−a23
のように求める第3否定部を有す。
【0012】
本発明の秘密計算システムの秘匿処理手段は、自己が保持する数値Sから
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23
=s22+s23
=(s21,s22
=(s21,s23
の関係を有する第1断片s,第2断片s,第3断片sを求める断片生成部と、計算装置Xとして機能する計算装置が第1断片sを、計算装置Yとして機能する計算装置が第2断片sを、計算装置Zとして機能する計算装置が第3断片sを記録した状態にする断片分配部とを備える。
【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に示した計算装置100,100,100のいずれの計算装置としても機能できる計算装置100(100,100)の機能構成例を示す図。
【図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つの計算装置100、100、100で構成される。計算装置Xとして機能する計算装置100は、第1加算部110、第1減算部120、第1定数倍計算部130、乗算乱数生成部141、第1乗算部142、第1乗算送信部143、第1否定部150、第1記録部190を備える。計算装置Yとして機能する計算装置100は、第2加算部110、第2減算部120、第2定数倍計算部130、第2乗算乱数受信部144、第2乗算中間値計算部145、第2乗算送信部146、第2乗算中間値受信部147、第2乗算部148、第2否定部150、第2記録部190を備える。計算装置Zとして機能する計算装置100は、第3加算部110、第3減算部120、第3定数倍計算部130、第3乗算乱数受信部144、第3乗算中間値計算部145、第3乗算送信部146、第3乗算中間値受信部147、第3乗算部148、第3否定部150、第3記録部190を備える。なお、実際の秘密計算システムでは、そのシステムで実行する計算に対応した構成を、これらの中から選んで備えればよい。例えば、秘密加算のみを行うのであれば、計算装置100は、第1加算部110と第1記録部190を備え、計算装置100は、第2加算部110と第2記録部190を備え、計算装置100は、第3加算部110と第3記録部190を備えればよい。
【0019】
各演算の入力である数値Aと数値Bは、3つの断片に分けられ、3つの計算装置に分配された状態となっている。具体的には、数値Aの第1断片a,第2断片a,第3断片aと、数値Bの第1断片b,第2断片b,第3断片bは、
=a22+a23
=(a21,a22
=(a21,a23
=b22+b23
=(b21,b22
=(b21,b23
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ、第1要素b21,第2要素b22,第3要素b23はB=b21+b22+b23を満たす任意の数値の組合せ
の関係を持つ。そして、計算装置100の第1記録部190が第1断片を記録し、計算装置100の第2記録部190が第2断片を記録し、計算装置100の第3記録部190が第3断片を記録する。
【0020】
<秘密加算手段(図2,7参照)>
実施例1の秘密計算システムの秘密加算手段10は、計算装置100が第1加算部110を有し、計算装置100が第2加算部110を有し、計算装置100が第3加算部110を有す。そして、秘密加算過程S10は以下の処理で構成されている。第1加算部110が、A+Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片cを、
=a+b
のように求める(S110)。第2加算部110が、A+Bの結果である数値Cの第2断片cを、
=(c21,c22)=(a21+b21,a22+b22
のように求める(S110)。第3加算部110が、A+Bの結果である数値Cの第3断片cを、
=(c21,c23)=(a21+b21,a23+b23
のように求める(S110)。
【0021】
このような処理を行えば、加算の結果Cの第1断片cを第1記録部190が記録し、第2断片cを第2記録部190が記録し、第3断片cを第3記録部190が記録した状態となる。また、互いのデータの授受がないため、いずれの計算装置も入力の数値A,Bも計算結果である数値Cも、単独では知ることができない。
【0022】
<秘密減算手段(図3,8参照)>
実施例1の秘密計算システムの秘密減算手段20は、計算装置100が第1減算部120を有し、計算装置100が第2減算部120を有し、計算装置100が第3減算部120を有す。そして、秘密減算過程S20は以下の処理で構成されている。第1減算部120が、A−Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片cを、
=a−b
のように求める(S120)。第2減算部120が、A−Bの結果である数値Cの第2断片cを、
=(c21,c22)=(a21−b21,a22−b22
のように求める(S120)。第3減算部120が、A−Bの結果である数値Cの第3断片cを、
=(c21,c23)=(a21−b21,a23−b23
のように求める(S120)。
【0023】
このような処理を行えば、減算の結果Cの第1断片cを第1記録部190が記録し、第2断片cを第2記録部190が記録し、第3断片cを第3記録部190が記録した状態となる。また、互いのデータの授受がないため、いずれの計算装置も入力の数値A,Bも計算結果である数値Cも、単独では知ることができない。
【0024】
<秘密定数倍手段(図4,9参照)>
実施例1の秘密計算システムの秘密定数倍手段30は、計算装置100が第1定数倍計算部130を有し、計算装置100が第2定数倍計算部130を有し、計算装置100が第3定数倍計算部130を有す。そして、秘密定数倍過程S30は以下の処理で構成されている。第1定数倍計算部130が、Aを数値B倍した結果である数値C(ただし、C=c21+c22+c23)の第1断片cを、
=Ba
のように求める(S130)。第2定数倍計算部130が、Aを数値B倍した結果である数値Cの第2断片cを、
=(c21,c22)=(Ba21,Ba22
のように求める(S130)。第3定数倍計算部130が、Aを数値B倍した結果である数値Cの第3断片cを、
=(c21,c23)=(Ba21,Ba23
のように求める(S130)。
【0025】
このような処理を行えば、定数倍計算の結果Cの第1断片cを第1記録部190が記録し、第2断片cを第2記録部190が記録し、第3断片cを第3記録部190が記録した状態となる。また、互いのデータの授受がないため、いずれの計算装置も入力の数値Aも計算結果である数値Cも、単独では知ることができない。
【0026】
<秘密乗算手段(図5,10参照)>
実施例1の秘密計算システムの秘密乗算手段40は、計算装置100が、乗算乱数生成部141、第1乗算部142、第1乗算送信部143を有し、計算装置100が、第2乗算乱数受信部144、第2乗算中間値計算部145、第2乗算送信部146、第2乗算中間値受信部147、第2乗算部148を有し、計算装置100が、第3乗算乱数受信部144、第3乗算中間値計算部145、第3乗算送信部146、第3乗算中間値受信部147、第3乗算部148を有す。そして、秘密乗算過程S40は以下の処理で構成されている。
【0027】
乗算乱数生成部141は、乱数r,r,r,r,rを生成する(S141)。第1乗算部142は、A×Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c、第2要素c22、第3要素c23
=a−r−r
22=r
23=c−c22
のように求める(S142)。第1乗算送信部143は、計算装置100に(r,r,r,c22)を、計算装置100に(a−r,b−r,r,c23)を送信する(S143)。
【0028】
第2乗算乱数受信部144は、計算装置100から(r,r,r,c22)を受信する(S144)。第3乗算乱数受信部144は、計算装置100から(a−r,b−r,r,c23)を受信する(S144)。第2乗算中間値計算部145は、数値yを
y=a2121+a21+r21+r
のように求める(S145)。第3乗算中間値計算部145は、数値zを
z=a21(b−r)+(a−r)b21+r
のように求める(S145)。第2乗算送信部146は、計算装置100に数値yを送信する(S146)。第3乗算送信部146は、計算装置100に数値zを送信する(S146)。第2乗算中間値受信部147は、計算装置100から数値zを受信する(S147)。第3乗算中間値受信部147は、計算装置100から数値yを受信する(S147)。第2乗算部148は、A×Bの結果である数値Cの第2断片cを、
=(c21,c22)=(y+z,c22
のように求める(S148)。第3乗算部148は、A×Bの結果である数値Cの第3断片cを、
=(c21,c23)=(y+z,c23
のように求める(S148)。
【0029】
このような処理を行えば、乗算の結果Cの第1断片cを第1記録部190が記録し、第2断片cを第2記録部190が記録し、第3断片cを第3記録部190が記録した状態となる。また、計算装置100は、他の計算装置からデータを受け取らないので、入力の数値A,Bも計算結果である数値Cも、単独では知ることができない。計算装置100は、r,r,r,c22,zを受信するが、これらの数値は数値A,Bとは独立の乱数とみなせるため、数値A,B,Cを単独で復元することはできない。計算装置100は、a−r,b−r,r,c23,yを受信するが、これらの数値は数値A,Bとは独立の乱数とみなせるため、数値A,B,Cを単独で復元することはできない。
【0030】
<秘密否定手段(図6,11参照)>
これまでの説明は、算術演算についてであったが、論理演算も可能である。まず、否定を行う手段について説明する。実施例1の秘密計算システムの秘密否定手段50は、計算装置100が第1否定部150を有し、計算装置100が第2否定部150を有し、計算装置100が第3否定部150を有す。そして、秘密否定過程S50は以下の処理で構成されている。第1否定部150が、1−Aの結果である数値C(ただし、C=c21+c22+c23)の第1断片cを、
=−a
のように求める(S150)。第2否定部150が、1−Aの結果である数値Cの第2断片cを、
=(c21,c22)=(1−a21,−a22
のように求める(S150)。第3否定部150が、1−Aの結果である数値Cの第3断片cを、
=(c21,c23)=(1−a21,−a23
のように求める(S150)。
【0031】
このような処理を行えば、否定の結果Cの第1断片cを第1記録部190が記録し、第2断片cを第2記録部190が記録し、第3断片cを第3記録部190が記録した状態となる。また、互いのデータの授受がないため、いずれの計算装置も数値Aも計算結果である数値Cも、単独では知ることができない。
【0032】
<秘密論理積手段>
次に、論理積を行う方法について説明する。AとBとの論理積(C=A∧B)は、乗算と同じなので、秘密乗算過程S40を実行すればよい。
【0033】
<秘密論理和手段>
AとBの論理和(C=A∨B)は、
C=A∨B=A+B−AB
の演算を行えばよい。したがって、例えば、以下の処理を行えばよい。
(1)秘密加算過程S10によってD=A+Bを求める。
(2)秘密乗算過程S40によってD=ABを求める。
(3)秘密減算過程S20によってC=D−Dを求める。
【0034】
このような処理を行えば、論理和の結果Cの第1断片cを計算装置100の第1記録部190が記録し、第2断片cを計算装置100の第2記録部190が記録し、第3断片cを計算装置100の第3記録部190が記録した状態となる。また、秘密加算過程S10、秘密乗算過程S40、秘密減算過程S20は、上述のようにデータを秘匿した状態を維持しながら計算結果の断片を求めることができる。したがって、いずれの計算装置も、元の数値A,Bも計算結果である数値Cも、単独では知ることができない。
【0035】
<秘密排他的論理和手段>
AとBの排他的論理和は、
【0036】
【数1】

【0037】
の演算を行えばよい。したがって、例えば、以下の処理を行えばよい。
(1)秘密加算過程S10によってD=A+Bを求める。
(2)秘密乗算過程S40によってD=ABを求める。
(3)秘密定数倍過程S30によって、D=2D
(4)秘密減算過程S20によってC=D−Dを求める。
【0038】
このような処理を行えば、排他的論理和の結果Cの第1断片cを計算装置100の第1記録部190が記録し、第2断片cを計算装置100の第2記録部190が記録し、第3断片cを計算装置100の第3記録部190が記録した状態となる。また、秘密加算過程S10、秘密乗算過程S40、秘密定数倍過程S30、秘密減算過程S20は、上述のようにデータを秘匿した状態を維持しながら計算結果の断片を求めることができる。したがって、いずれの計算装置も、元の数値A,Bも計算結果である数値Cも、単独では知ることができない。
【0039】
<秘匿処理手段>
次に、いずれかの計算装置が保有している数値の3つの断片を生成し、断片を3つの計算装置で共有する処理について説明する。図12は実施例1の秘匿処理手段の構成例を示す図、図13は秘匿処理のフローを示す図である。図13(A)は計算装置100として機能する計算装置が保有する数値を秘匿処理する過程(秘匿処理X過程)を示す図であり、図13(B)は計算装置100として機能する計算装置が保有する数値を秘匿処理する過程(秘匿処理Y過程)を示す図であり、図13(C)は計算装置100として機能する計算装置が保有する数値を秘匿処理する過程(秘匿処理Z過程)を示す図である。
【0040】
計算装置100として機能する計算装置が保有する数値を秘匿処理するために、計算装置100は、断片生成部161と断片分配部162を備える。計算装置100として機能する計算装置が保有する数値を秘匿処理するために、計算装置100は、断片生成部161と断片分配部162を備える。計算装置100として機能する計算装置が保有する数値を秘匿処理するために、計算装置100は、断片生成部161と断片分配部162を備える。
【0041】
数値Sをいずれかの計算装置が保有しているとする。断片生成部161、161、161は、自己が保持する数値Sから
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23
=s22+s23
=(s21,s22
=(s21,s23
の関係を有する第1断片s,第2断片s,第3断片sを求める(S161、S161、S161)。断片分配部162、162、162は、計算装置Xとして機能する計算装置100が第1断片sを、計算装置Yとして機能する計算装置100が第2断片sを、計算装置Zとして機能する計算装置100が第3断片sを記録した状態にする(S162、S162、S162)。なお、秘匿処理手段は、秘匿処理したい数値を保有する計算装置に備えればよく、秘匿処理したい数値を保有しない計算装置には具備しなくてもよい。
【0042】
このような処理を行えば、演算の対象となる数値の第1断片sを第1記録部190が記録し、第2断片sを第2記録部190が記録し、第3断片sを第3記録部190が記録した状態となる。
【0043】
<秘密2進変換手段>
第1の秘密2進変換手段
図14は、図1の秘密計算システムに秘匿手段を付加した秘密計算システムの機能構成例である。図15は、図14に示した秘密計算システムを用いた秘密2進変換過程のフローの第1の例を示す図である。なお、図15のフローでは、計算装置100が保有する数値(第1断片a)と計算装置100が保有する数値(第1要素a21)を秘匿処理することで、2進表現された数値Aの各ビットA[1],…,A[N]を秘匿処理する例を示している。この例の場合、断片生成部161と断片分配部162は不要である。なお、数値Aと断片aと第1要素a21は高々Nビットであるとし、A[n]は数値Aの下位n番目のビットを、a[n]は第1断片aの下位n番目のビットを、a21[n]は第1要素a21の下位n番目のビットをあらわす。
【0044】
次に、数値Aを2進表現した時の各ビットA[1],…,A[N]の断片を3つの計算装置で分散して記録するフローを説明する。
(1−1)計算装置100の秘匿処理X手段60によって、第1断片a[1],…,a[N]を秘匿処理する(S311)。
(1−2)計算装置100の秘匿処理Y手段60によって、第1要素a21[1],…,a21[N]を秘匿処理する(S312)。
(2−1)秘密計算システムは、c=0、n=1のように初期設定を行う(S321)。具体的には、いずれかの計算装置100でS321を行えばよい。
(2−2)秘密加算過程S10、秘密乗算過程S40、秘密定数倍過程S30、秘密減算過程S20によって、
=a[n]+a21[n]−2a[n]a21[n]
を行う(S330)。これは、第1断片aの下位n番目a[n]と第1要素a21の下位n番目a21[n]の排他的論理和に相当する計算である。排他的論理和の処理の詳細は、上述の秘密排他的論理和手段に示されている。
(2−3)秘密加算過程S10、秘密乗算過程S40、秘密定数倍過程S30、秘密減算過程S20によって、
A[n]=d+c−2d
を行う(S340)。これは、dとcの排他的論理和に相当する計算である。ステップS330とS340の処理によって、
【0045】
【数2】

【0046】
の計算結果の断片が3つの計算装置で分散されて記録された状態となる。
(2−4)次に、ステップS321を行った計算装置100が、n=Nかを確認する(S322)。ステップS322がYesの場合には処理を終了し、Noの場合には次の処理に進む。
(2−5)ステップS322がNoの場合には、秘密加算過程S10、秘密乗算過程S40、秘密減算過程S20によって、
n+1=a[n]a21[n]+d−a[n]a21[n]d
を行う(S350)。これは、a[n]a21[n]とdとの論理和に相当する計算である。
(2−6)ステップS321を行った計算装置100が、nにn+1を代入し(S323)、ステップS330に戻る。
【0047】
このような処理を行えば、数値Aの下位n番目のビットA[n]の第1断片a[n]を計算装置100の第1記録部190が記録し、第2断片a[n]を計算装置100の第2記録部190が記録し、第3断片a[n]を計算装置100の第3記録部190が記録した状態となる。また、秘匿処理X過程S60と秘匿処理Y過程S60は、第1断片a[1],…,a[N]と第1要素a21[1],…,a[N]を秘匿処理している。この処理では、いずれの計算装置も、数値Aを単独では知ることができない。秘密加算過程S10、秘密乗算過程S40、秘密定数倍過程S30、秘密減算過程S20は、上述のようにデータを秘匿した状態を維持しながら計算結果の断片を求めることができる。したがって、いずれの計算装置も、元の数値Aも、数値Aを2進表現した各ビットA[1],…,A[N]も、単独では知ることができない。
【0048】
第2の秘密2進変換手段
図16は、図14に示した秘密計算システムを用いた秘密2進変換過程のフローの第2の例を示す図である。なお、図16のフローでも、計算装置100が保有する数値(第1断片a)と計算装置100が保有する数値(第1要素a21)を秘匿処理することで、2進表現された数値Aの各ビットA[1],…,A[N]を秘匿処理する例を示している。この例の場合、断片生成部161と断片分配部162は不要である。なお、数値Aと断片aと第1要素a21は高々Nビットであるとし、A[n]は数値Aの下位n番目のビットを、a[n]は第1断片aの下位n番目のビットを、a21[n]は第1要素a21の下位n番目のビットをあらわす。
【0049】
次に、数値Aを2進表現した時の各ビットA[1],…,A[N]の断片を3つの計算装置で分散して記録するフローを説明する。
(1−1)計算装置100の秘匿処理X手段60によって、第1断片a[1],…,a[N]を秘匿処理する(S311)。
(1−2)計算装置100の秘匿処理Y手段60によって、第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)の断片b(n),b(n),b(n)を分散して記録した状態となる。
(3−3)計算装置100の秘匿処理X手段60によって、B(n)の第1断片b(n)を秘匿処理する。また、計算装置100の秘匿処理Y手段60によって、B(n)の第1要素b21(n)を秘匿処理する(S332)。
(3−4)秘密計算システムは、秘密加算過程S10、秘密乗算過程S40、秘密定数倍過程S30、秘密減算過程S20によって、
【0054】
【数5】

【0055】
を行い、D(n)の断片d(n),d(n),d(n)を分散して記録した状態にする(S333)。
(4−1)各計算装置100は、それぞれc(n)=0、i=1のように初期設定を行う(S341)。
(4−2)計算装置Xとして機能する計算装置100は、
【0056】
【数6】

【0057】
を計算する。計算装置Yとして機能する計算装置100と、計算装置Zとして機能する計算装置100は、
【0058】
【数7】

【0059】
を計算する(S342)。
(4−3)各計算装置100は、それぞれ
i+1(n)=c(n)(n)[i]∨c(n)21(n)[i]∨b(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)秘密計算システムは、c(n)=0ならば各計算装置が分散して記録しているD(n)の断片を、各計算装置が分散して記録するA[n]の断片とする。また、c(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)=b(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断片a[n]を計算装置100の第1記録部190が記録し、第2断片a[n]を計算装置100の第2記録部190が記録し、第3断片a[n]を計算装置100の第3記録部190が記録した状態となる。また、秘匿処理X過程S60と秘匿処理Y過程S60は、第1断片a[1],…,a[N]と第1要素a21[1],…,a[N]を秘匿処理している。この処理では、いずれの計算装置も、数値Aを単独では知ることができない。秘密加算過程S10、秘密乗算過程S40、秘密定数倍過程S30、秘密減算過程S20は、上述のようにデータを秘匿した状態を維持しながら計算結果の断片を求めることができる。したがって、いずれの計算装置も、元の数値Aも、数値Aを2進表現した各ビットA[1],…,A[N]も、単独では知ることができない。
【0066】
さらに、第1の秘密2進変換手段では、秘密乗算過程S40[n]a21[n]、d、a[n]a21[n]dの3回実行し、これをn=1からNまでN回繰り返す必要がある。ただし、c=0であり、n=Nのときはa[n]a21[n]dの計算は不要なため、合計で3N−3回の秘密乗算過程S40を実行する。一方、第2の秘密2進変換手段では、a[n]a21[n]および、n=2からNまでのb(n)[n]b21(n)[n]の合計N回の秘密乗算過程S40の実行で済む。したがって、計算効率が高くなると共に、計算装置間の通信量も低減できる。
【0067】
<秘密整数変換手段>
ここでは、2進表現された数値Aの各ビットA[1],…,A[N]の断片が3つの計算装置で分散して記録された状態から、整数表現の数値Aの断片A,A,Aが3つの計算装置に分散して記録された状態にするための手段について説明する。整数表現された数値Aは、2進表現された数値Aの各ビットA[1],…,A[N]を用いて
【0068】
【数10】

【0069】
のように求めることができる。したがって、秘密定数倍過程S30の処理と秘密加算過程S10の処理を繰り返すことで、数値Aの第1断片A[n]を計算装置100の第1記録部190が記録し、第2断片Aを計算装置100の第2記録部190が記録し、第3断片Aを計算装置100の第3記録部190が記録した状態となる。
【0070】
また、秘密定数倍過程S30、秘密加算過程S10は、上述のようにデータを秘匿した状態を維持しながら計算結果の断片を求めることができる。したがって、いずれの計算装置も、数値Aを2進表現した各ビットA[1],…,A[N]も、整数表現ざれた数値Aも、単独では知ることができない。
【0071】
実施例1の秘密計算装置によれば、上述の秘密2進変換手段によって2進表現された数値に対して、上述の論理演算(秘密否定手段、秘密論理積手段、秘密論理和手段、秘密排他的論理和手段の処理)を行い、その結果を整数表現された数値に戻すことも可能である。しかも、これらの処理の途中の数値も、処理の結果の数値も、いずれの計算装置も単独では知ることができない。
【0072】
<復元手段>
分散して記録された状態の断片から数値を復元する手段について説明する。図17に実施例1の復元手段を計算装置に配置した構成例を示す。また、図18に実施例1の復元手段の処理フローを示す。図18(A)の実線は、計算装置Xとして機能する計算装置100が、計算装置Yとして機能する計算装置100に第1断片を送り、計算装置100が数値を復元する処理フロー(復元XY過程S7012)を示している。図18(A)の点線は、計算装置100が、計算装置Zとして機能する計算装置100に第1断片を送り、計算装置100が数値を復元する処理フロー(復元XZ過程S7013)を示している。図18(B)の実線は、計算装置100が計算装置100に第2断片を送り、計算装置100が数値を復元する処理フロー(復元YX過程S7021)を示している。図18(B)の点線は、計算装置100が計算装置100に第2断片を送り、計算装置100が数値を復元する処理フロー(復元YZ過程S7023)を示している。図18(C)の実線は、計算装置100が計算装置100に第3断片を送り、計算装置100が数値を復元する処理フロー(復元ZX過程S7031)を示している。図18(C)の点線は、計算装置100が計算装置100に第3断片を送り、計算装置100が数値を復元する処理フロー(復元ZY過程S7032)を示している。秘密計算システムが、上記の復元処理のすべてを実行できるようにするためには、計算装置100が、第1断片送信部171、第1断片受信部172、第1復元部173を有し、計算装置100が、第2断片送信部171、第2断片受信部172、第2復元部173を有し、計算装置100が、第3断片送信部171、第3断片受信部172、第3復元部173を有する必要がある。なお、システムの設計上必要のない構成部は適宜省略してもよい。
【0073】
次に、数値Aの第1断片,第2断片,第3断片をa,a,aとし、第1要素,第2要素,第3要素をa21,a22,a23として、復元の処理フローについて説明する。なお、これまでの説明で何度も説明しているが、実施例1の秘密計算システムでは、分散して記録された断片は、
=a22+a23
=(a21,a22
=(a21,a23
A=a21+a22+a23
の関係を有していることに注意されたい。
【0074】
復元XY過程S7012(図18(A)実線)
第1断片送信部171は、計算装置100に第1断片aを送信する(S17112)。第2断片受信部172は、計算装置100から第1断片aを受信する(S17212)。第2復元部173は、次式のように第2断片受信部172が受信した第1断片aと当該第1断片aに対応する第1要素a21とを加算することで数値Aを復元する(S17213)。
+a21=a22+a23+a21=A
【0075】
復元XZ過程S7013(図18(A)点線)
第1断片送信部171は、計算装置100に第1断片aを送信する(S17112)。第3断片受信部172は、計算装置100から第1断片aを受信する(S17212)。第3復元部173は、次式のように第3断片受信部172が受信した第1断片aと当該第1断片aに対応する第1要素a21とを加算することで数値を復元する(S17312)。
+a21=a22+a23+a21=A
【0076】
復元YX過程S7021(図18(B)実線)
第2断片送信部171は、計算装置100に第1要素a21を送信する(S17121)。第1断片受信部172は、計算装置100から第1要素a21を受信する(S17221)。第1復元部173は、次式のように第1断片受信部172が受信した第1要素a21と当該第1要素a21に対応する第1断片aとを加算することで数値を復元する(S17321)。
21+a=a21+a22+a23=A
【0077】
復元YZ過程S7023(図18(B)点線)
第2断片送信部171は、計算装置100に第2要素a22を送信する(S17123)。第3断片受信部172は、計算装置100から第2要素a21を受信する(S17223)。第3復元部173は、次式のように第3断片受信部172が受信した第2要素a22と当該第2要素a22に対応する第1要素a21と第3要素a23とを加算することで数値を復元する(S17323)。
22+a21+a23=A
【0078】
復元ZX過程S7031(図18(C)実線)
第3断片送信部171は、計算装置100に第1要素a21を送信する(S17131)。第1断片受信部172は、計算装置100から第1要素a21を受信する(S17231)。第1復元部173は、次式のように第1断片受信部172が受信した第1要素a21と当該第1要素a21に対応する第1断片aとを加算することで数値を復元する(S17331)。
21+a=a21+a22+a23=A
【0079】
復元ZY過程S7032(図18(C)点線)
第3断片送信部171は、計算装置100に第3要素a23を送信する(S17132)。第2断片受信部172は、計算装置100から第3要素a23を受信する(S17232)。第2復元部173は、次式のように第2断片受信部172が受信した第3要素a23と当該第3要素a23に対応する第1要素a21と第2要素a22とを加算することで数値Aを復元する(S17332)。
23+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に示した計算装置100,100,100のいずれの計算装置としても機能できる計算装置100(100,100)の機能構成例を示す。基本処理部101(101,101)は、図1と図12と図17に示した構成部をすべで備えている。このように1つの計算装置が、計算装置X,計算装置Y,計算装置Zのいずれの計算装置としても機能できるようにしてもよい。この場合は、記録しているデータが第1断片から第3断片のいずれの断片かによって、その計算装置が、計算装置Xとして機能するか、計算装置Yとして機能するか、計算装置Zとして機能するかが決まる。もしくは、どの計算装置として機能させるかによって、秘匿処理などで渡す断片を決めればよい。このように、データごとに計算装置が発揮する機能が異なるようにすることで、より自由度の高い秘密計算システムを構築できる。
【0082】
<不正検出>
次に、1つの計算装置が、計算装置X,計算装置Y,計算装置Zのいずれの計算装置としても機能できるようにしたときの例として、入力された断片のデータが正しいかを確認する方法と、計算結果である断片のデータ(出力)が正しいかを確認する方法を示す。図20は、入力と出力の不正を検出するための計算装置の機能構成例を示す図である。
【0083】
計算装置200は、基本処理部101の他に、入力の不正を検出するために、第1乱数rxy共有部241、第1Z送信部242、第1乱数rxz共有部231、第1Y送信部232、第1受信部223、第1断片確認部224、第1確認乱数生成部251、Y要素送信部211、Y要素受信部212、Y要素確認部213、第2乱数rxy共有部241、第2Z送信部242、第2乱数ryz共有部221、第2X送信部222、第2受信部233、第2断片確認部234、第2確認乱数生成部251、Z要素送信部211、Z要素受信部212、Z要素確認部213、第3乱数rxz共有部231、第3Y送信部232、第3乱数ryz共有部221、第3X送信部222、第3受信部243、第3断片確認部244、第3確認乱数生成部251、復元入力確認部254を備える。また、計算装置200は、基本処理部101の他に、出力の不正を検出するために、第1確認乱数生成部251、第2確認乱数生成部251、第3確認乱数生成部251、復元出力確認部255を備える。したがって、入力の不正のみを検出すればよいのであれば、復元出力確認部255は不要であり、基本処理部101中では秘匿手段と復元手段を具備していればよい。また、出力の不正のみを検出すればよいのであれば、第1確認乱数生成部251、第2確認乱数生成部251、第3確認乱数生成部251、復元出力確認部255と、基本処理部101中の秘匿手段と復元手段と計算に必要な手段のみを備えればよい。なお、各構成部の詳細な処理については後述する。
【0084】
このときの秘密計算システムは、図20に示された計算装置200,200,200の3つの計算装置で構成される。そして、同一の入力(数値A)に対して3種類の断片を用意し、各計算装置が計算装置X,計算装置Y,計算装置Zのいずれの計算装置として機能するかを変更して断片を分散して記録する。また、元の数値は同じだが断片は異なる3つの入力から、各計算装置が計算装置X,計算装置Y,計算装置Zのいずれの計算装置として機能するかを変更して同一の計算を3回行い、計算結果である断片を分散して記録する。この説明では、j(1以上3以下の整数)を計算が何回目かを示す値とし、a(j),a(j),a(j)を入力である数値Aに対するj番目の第1断片,第2断片,第3断片、a21(j)をj番目の第1要素、c(j),c(j),c(j)を計算結果である数値Cに対するj番目の第1断片,第2断片,第3断片、c21(j),c22(j),c23(j)をj番目の第1要素,第2要素,第3要素、計算装置200(j),計算装置200(j),計算装置200(j)をj番目の計算装置X,計算装置Y,計算装置Zとして機能する計算装置とする。なお、それぞれの回で数値の断片や計算装置の役割が異なるので、
(a(1),a(1),a(1))、(a(2),a(2),a(2))、(a(3),a(3),a(3))は互いに異なり、
(c(1),c(1),c(1))、(c(2),c(2),c(2))、(c(3),c(3),c(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要素の不正を検出する処理フローを示す図である。いずれかの計算装置200が、j=1とする(S201)。そして、第1要素不正検出過程S21、第1断片不正検出過程S22、第2要素不正検出過程S23、第3要素不正検出過程S24を実行する。
【0086】
第1要素不正検出過程S21(図22参照)では、計算装置200(j)が保有する第1要素a21y(j)と計算装置200(j)が保有する第1要素a21z(j)とが等しいことを確認する。具体的には、計算装置200(j)のY要素送信部211は、計算装置200(j)に自己が保有する第1要素a21y(j)を送信する(S211)。計算装置200(j)のZ要素受信部212は、計算装置200(j)から第1要素a21y(j)を受信する(S212)。計算装置200(j)のZ要素確認部213は、自己が保有する第1要素a21z(j)と計算装置200(j)から受信した第1要素a21y(j)とが等しいことを確認する(S213)。計算装置200(j)のZ要素送信部211は、計算装置200(j)に自己が保有する第1要素a21z(j)を送信する(S211)。計算装置200(j)のY要素受信部212は、計算装置200(j)から第1要素a21z(j)を受信する(S212)。計算装置200(j)のY要素確認部213は、自己が保有する第1要素a21y(j)と計算装置200(j)から受信した第1要素a21z(j)とが等しいことを確認する(S213)。ステップS212とS213とで等しいと確認できた場合には、計算装置200(j)が保有する第1要素a21y(j)と計算装置200(j)が保有する第1要素a21z(j)とが等しいと確認できる。一方、ステップS212とS213のいずれかで等しくないと判断された場合には、入力に不正があったと判断される。
【0087】
第1断片不正検出過程S22(図23参照)では、第1断片a(j)が第2要素a22(j)と第3要素a23(j)の和であることを確認する。具体的には、計算装置200(j)の第2乱数ryz共有部221と計算装置200(j)の第3乱数ryz共有部221との間で乱数ryzを共有する(221,221)。なお、乱数ryzはどちらの計算装置が生成してもよい。計算装置200(j)の第2X送信部222は、計算装置200(j)にu(=a22(j)+ryz)を送信する(S222)。計算装置200(j)の第3X送信部222は、計算装置200(j)にu(=a23(j)−ryz)を送信する(S222)。計算装置200(j)の第1受信部223は、計算装置200(j)からuを、計算装置200(j)からuを受信する(S223)。計算装置200(j)の第1断片確認部224は、a(j)=u+uであることを確認する(S224)。ステップS224で等しいと確認できた場合には、第1断片a(j)が第2要素a22(j)と第3要素a23(j)の和であることが確認できる。一方、ステップS224で等しくないと判断された場合には、入力に不正があったと判断される。
【0088】
第2要素不正検出過程S23(図24参照)では、第2要素a22(j)が第1断片a(j)と第3要素a23(j)の差であることを確認する。具体的には、計算装置200(j)の第1乱数rxz共有部231と計算装置200(j)の第3乱数rxz共有部231との間で、乱数rxzを共有する(S231、S231)。なお、乱数rxzはどちらの計算装置が生成してもよい。計算装置200(j)の第1Y送信部232は、計算装置200(j)にu(=a(j)+rxz)を送信する(S232)。計算装置200(j)の第3Y送信部232は、計算装置200(j)にu(=a23(j)+rxz)を送信する(S232)。計算装置200(j)の第2受信部233は、計算装置200(j)からuを、計算装置200(j)からuを受信する(S233)。計算装置200(j)の第2断片確認部234は、a22(j)=u−uであることを確認する(S234)。ステップS234で等しいと確認できた場合には、第2要素a22(j)が第1断片a(j)と第3要素a23(j)の差であることが確認できる。一方、ステップS234で等しくないと判断された場合には、入力に不正があったと判断される。
【0089】
第3要素不正検出過程S24(図25参照)では、第3要素a23(j)が第1断片a(j)と第2要素a22(j)の差であることを確認する。具体的には、計算装置200(j)の第1乱数rxy共有部241と計算装置200(j)の第2乱数rxy共有部241との間で乱数rxyを共有する(S241,S241)。なお、乱数rxyはどちらの計算装置が生成してもよい。計算装置200(j)の第1Z送信部242は、計算装置200(j)にu(=a(j)+rxy)を送信する(S242)。計算装置200(j)の第2Z送信部242は、計算装置200(j)にu(=a22(j)+rxy)を送信する(S242)。計算装置200(j)の第3受信部243は、計算装置200(j)からuを、計算装置200(j)からuを受信する(S243)。計算装置200(j)の第3断片確認部244は、a23(j)=u−uであることを確認する(S244)。ステップS244で等しいと確認できた場合には、第3要素a23(j)が第1断片a(j)と第2要素a22(j)の差であることが確認できる。一方、ステップS244で等しくないと判断された場合には、入力に不正があったと判断される。
【0090】
計算装置200(j)の第1確認乱数生成部251は、乱数rを生成する(S251)。計算装置200(j)の秘匿処理手段60は、第1断片a(j),乱数rの断片を、3つの計算装置で分散して記録した状態にする(S260)。
【0091】
計算装置200(j)の第2確認乱数生成部251は、乱数rを生成する(S251)。計算装置200(j)の秘匿処理手段60は、第1要素a21(j),乱数rの断片を、3つの計算装置で分散して記録した状態にする(S260)。
【0092】
計算装置200(j)の第3確認乱数生成部251は、乱数rを生成する(S251)。計算装置200(j)の秘匿処理手段60は、乱数rの断片を、3つの計算装置で分散して記録した状態にする(S260)。
【0093】
秘密加算手段10は、
(j)+a21(j)+r
ただし、r=r+r+r
の計算結果の断片を、3つの計算装置で分散して記録した状態にする(S210)。いずれかの計算装置200の復元手段70は、他の計算装置200または計算装置200から必要な情報を受け取り、
(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つの復元結果a(1)+a21(1)+r,a(2)+a21(2)+r,a(3)+a21(3)+rを取得できるいずれかの計算装置(つまり、S270を3回行った計算装置)が、復元入力確認部254で、3つの結果が等しいことを確認する(S254)。
【0094】
計算結果である断片のデータが正しいかを確認する方法
図26に出力の不正を検出する処理フローを示す。いずれかの計算装置200が、j=1とする(S281)。次に、所定の計算を行う(S285)。所定の計算とは、この秘密計算システムを用いて行う計算と同じにすればよく、加算、乗算、論理演算などのいずれかでも、いくつかの組合せでもかまわない。
【0095】
計算装置200(j)の第1確認乱数生成部251は、乱数rを生成する(S251)。計算装置200(j)の秘匿処理手段60は、第1断片c(j),乱数rの断片を、3つの計算装置で分散して記録した状態にする(S265)。
【0096】
計算装置200(j)の第2確認乱数生成部251は、乱数rを生成する(S251)。計算装置200(j)の秘匿処理手段60は、第1要素c21(j),乱数rの断片を、3つの計算装置で分散して記録した状態にする(S265)。
【0097】
計算装置200(j)の第3確認乱数生成部251は、乱数rを生成する(S251)。計算装置200(j)の秘匿処理手段60は、乱数rの断片を3つの計算装置で分散して記録した状態にする(S265)。
【0098】
秘密加算手段は
(j)+c22(j)+r
ただし、r=r+r+r
の計算結果の断片を、3つの計算装置で分散して記録した状態にする(S215)。計算装置200(j)と計算装置200(j)の一方は、他方から必要な情報を受け取り、c(j)+c22(j)+r=CXY(j)を復元して記録しておく(S271)。計算装置200(j)と計算装置200(j)の一方は、他方から必要な情報を受け取り、c(j)+c22(j)+r=CYZ(j)を復元して記録しておく(S272)。計算装置200(j)と計算装置200(j)の一方は、他方から必要な情報を受け取り、c(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にそれぞれ(r,r,r,c22),(a−r,b−r,r,c23)を送信する。r,r,r,c22は乱数だから、a−r,b−r,r,c23をそれぞれa、b、c23に置き換えたとき、計算装置Zが得る乗算結果の分散データはc=(c21,c23)=(y+a21+a21+r,c23)となる。すなわち、(c21−c21,c23−c23)=(a21(b−r−b)+(a−r−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つの計算装置500,500,500と、これらの計算装置をつなぐネットワーク100から構成される。この実施例では、Nを2以上の整数、nを1以上N以下の整数、a1[n]を第1断片aを2進表現したときの下位n桁目の値とする。
【0106】
計算装置500は、乱数生成部511、第1演算送信部521、第1演算受信部531、第1演算復号部541、第1記録部591を有し、計算装置500は、第2置換乱数受信部512、要素生成部522、garbled circuit生成部532、第2演算送信部542、第2演算復号部562、第2記録部592を有し、計算装置500は、第3演算受信部513、演算実行部523、第3演算送信部533、第3演算復号部543、第3記録部593を有す。
【0107】
実施例2の秘密計算システムでも、入力である数値Aは3つの断片に分けられ、3つの計算装置に分配された状態となっている。具体的には、数値Aの第1断片a,第2断片a,第3断片aは、
=a22+a23
=(a21,a22
=(a21,a23
ただし、第1要素a21,第2要素a22,第3要素a23はA=a21+a22+a23を満たす任意の数値の組合せ
の関係を持つ。そして、計算装置500の第1記録部591が第1断片を記録し、計算装置500の第2記録部592が第2断片を記録し、計算装置500の第3記録部593が第3断片を記録する。
【0108】
計算装置500の乱数生成部511は、2N個の乱数(r0,1,r1,1),…,(r0,N,r1,N)を生成する(S511)。第1演算送信部521は、乱数(r0,1,r1,1),…,(r0,N,r1,N)を計算装置500に送信し、ra1[1],1,…,ra1[N],Nを計算装置500に送信する(S521)。計算装置500の第2置換乱数受信部512は、計算装置500から乱数(r0,1,r1,1),…,(r0,N,r1,N)を受信する(S512)。要素生成部522は、Nビットの乱数e21,e22を生成し、第1要素e21,第2要素e22とする(S522)。
【0109】
計算装置500のgarbled circuit生成部532は、第1断片aが入力された場合に第1断片eと第3要素e23を出力する論理回路C”の入出力を乱数に置き換えたgarbled circuit GC”(ただし、入力である第1断片aは乱数(r0,1,r1,1),…,(r0,N,r1,N)に置き換えられる)と、garbled circuit GC”の出力である第1乱数断片e’,第3乱数要素e’23それぞれを、第1断片e,第3要素e23に変換する第1断片関数t,第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断片関数tを計算装置500に送信し、garbled circuit GC”と第3要素関数t23と第1要素e21を計算装置500に送信する(S542)。
【0110】
計算装置500の第3演算受信部513は、計算装置500からra1[1],1,…,ra1[N],Nを受信し、計算装置500からgarbled circuit GC”と第3要素関数t23と第1要素e21を受信する(S513)。演算実行部523は、ra1[1],1,…,ra1[N],Nとgarbled circuit GC”とを用いて、第1乱数断片e’,第3乱数要素e’23を求める(S523)。第3演算送信部533は、第1乱数断片e’を計算装置500に送信する(S533)。
【0111】
計算装置500の第1演算受信部531は、計算装置500から第1断片関数tを受信し、計算装置500から第1乱数断片e’を受信する(S531)。第1演算復号部541は、第1断片eをe=t(e’)のように求め、第1記録部591に記録する(S541)。計算装置500の第2演算復号部562は、第2断片eをe=(e21,e22)とし、第2記録部592に記録する(S562)。計算装置500の第3演算復号部543は、第3要素e23をe23=t23(e’23)のように求め、第3断片eをe=(e21,e23)とし、第3記録部593に記録する(S543)。
【0112】
実施例2の秘密計算システムはこのような構成なので、任意の論理回路Cの結果Eの第1断片eを第1記録部590が記録し、第2断片eを第2記録部590が記録し、第3断片eを第3記録部590が記録した状態となる。また、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つの計算装置700,700,700と、これらの計算装置をつなぐネットワーク100から構成される。この実施例では、Nを2以上の整数、nを1以上N以下の整数、a,a,aをNビット以下の数値Aの第1断片,第2断片,第3断片、e,e,eを数値Aを論理回路Cに入力したときの出力E=C(A)の第1断片,第2断片,第3断片、a1[n]を第1断片aを2進表現したときの下位n桁目の値とする。また、fを任意の数値から第1断片を求める関数、fを任意の数値から第2断片を求める関数、fを任意の数値から第3断片を求める関数、g12を第1断片と第2断片から元の数値を復元する関数、g23を第2断片と第3断片から元の数値を復元する関数、g13を第1断片と第3断片から元の数値を復元する関数とする。
【0114】
計算装置700は、乱数生成部511、第1演算送信部521、第1演算受信部531、第1演算復号部541、第1記録部591を有し、計算装置Yは、第2置換乱数受信部512、garbled circuit生成部732、第2演算送信部742、第2乱数断片受信部752、第2演算復号部762、第2記録部792を有し、計算装置700は、第3演算受信部713、演算実行部723、第3演算送信部733、第3演算復号部743、第3記録部793を有す。
【0115】
実施例3の秘密計算システムでは、入力である数値Aは3つの断片に分けられ、3つの計算装置に分配された状態となっている。具体的には、数値Aの第1断片a,第2断片a,第3断片aは、
=f(A)
=f(A)
=f(A)
A=g12(a,a)=g23(a,a)=g13(a,a
の関係を持つ。そして、計算装置700の第1記録部591が第1断片を記録し、計算装置700の第2記録部792が第2断片を記録し、計算装置700の第3記録部793が第3断片を記録する。
【0116】
計算装置700の乱数生成部511は、2N個の乱数(r0,1,r1,1),…,(r0,N,r1,N)を生成する(S511)。第1演算送信部521は、乱数(r0,1,r1,1),…,(r0,N,r1,N)を計算装置700に送信し、ra1[1],1,…,ra1[N],Nを計算装置700に送信する(S521)。
【0117】
計算装置700の第2置換乱数受信部512は、計算装置700から乱数(r0,1,r1,1),…,(r0,N,r1,N)を受信する(S512)。garbled circuit生成部732は、第1断片aが入力された場合に第1断片e,第2断片e,第3断片eを出力する論理回路C’の入出力を乱数に置き換えたgarbled circuit GC’(ただし、入力である第1断片aは乱数(r0,1,r1,1),…,(r0,N,r1,N)に置き換えられる)と、前記garbled circuit GC’の出力である第1乱数断片e’,第2乱数断片e’,第3乱数断片e’それぞれを、第1断片e,第2断片e,第3断片eに変換する第1断片関数t,第2断片関数t,第3断片関数tを生成する(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断片関数tを計算装置700に送信し、garbled circuit GC’と第3断片関数tを計算装置700に送信する(S742)。
【0118】
計算装置700の第3演算受信部713は、計算装置700からra1[1],1,…,ra1[N],Nを受信し、計算装置700からgarbled circuit GC’と第3断片関数tを受信する(S713)。演算実行部723は、ra1[1],1,…,ra1[N],Nとgarbled circuit GC’とを用いて、第1乱数断片e’,第2乱数断片e’,第3乱数断片e’を求める(S723)。第3演算送信部733は、第1乱数断片e’を計算装置700に送信し、第2乱数断片e’を計算装置700に送信する(S733)。
【0119】
計算装置700の第1演算受信部531は、計算装置700から第1断片関数tを受信し、計算装置700から第1乱数断片e’を受信する(S531)。第1演算復号部541は、第1断片eをe=t(e’)のように求め、第1記録部591に記録する(S541)。計算装置700の第2乱数断片受信部752は、計算装置700から第2乱数断片e’を受信する(S752)。第2演算復号部762は、第2断片eをe=t(e’)のように求め、第2記録部792に記録する(S762)。計算装置700の第3演算復号部743は、第3断片eをe=t(e’)のように求め、第3記録部793に記録する(S743)。
【0120】
実施例3の秘密計算システムはこのような構成なので、任意の論理回路Cの結果Eの第1断片eを第1記録部590が記録し、第2断片eを第2記録部790が記録し、第3断片eを第3記録部790が記録した状態となる。また、garbled circuitを用いているので、いずれの計算装置も入力の数値Aも結果である数値Cも、単独では知ることができない。つまり、実施例3によれば、容易に任意の論理回路Cについての秘密計算システムを構築できる。このように、実施例3の秘密計算システムも実施例2と同様の効果が得られる。
【産業上の利用可能性】
【0121】
本発明は、プライバシー保護データマイニングなど、情報を秘密性を維持しながら情報を利用するようなシステムに利用することができる。
【符号の説明】
【0122】
100、200、500、700 計算装置
110 第1加算部 120 第1減算部
130 第1定数倍計算部 141 乗算乱数生成部
142 第1乗算部 143 第1乗算送信部
150 第1否定部 190、591 第1記録部
110 第2加算部 120 第2減算部
130 第2定数倍計算部 144 第2乗算乱数受信部
145 第2乗算中間値計算部 146 第2乗算送信部
147 第2乗算中間値受信部 148 第2乗算部
150 第2否定部 190、592、792 第2記録部
110 第3加算部 120 第3減算部
130 第3定数倍計算部 144 第3乗算乱数受信部
145 第3乗算中間値計算部 146 第3乗算送信部
147 第3乗算中間値受信部 148 第3乗算部
150 第3否定部 190、593、793 第3記録部
161、161、161 断片生成部
162、162、162 断片分配部
171 第1断片送信部 172 第1断片受信部
173 第1復元部 171 第2断片送信部
172 第2断片受信部 173 第2復元部
171 第3断片送信部 172 第3断片受信部
173 第3復元部 101、101、101 基本処理部
241 第1乱数rxy共有部 242 第1Z送信部
231 第1乱数rxz共有部 232 第1Y送信部
223 第1受信部 224 第1断片確認部
251 第1確認乱数生成部 211 要素送信部
212 Y要素受信部 213 Y要素確認部
241 第2乱数rxy共有部 242 第2Z送信部
221 第2乱数ryz共有部 222 第2X送信部
233 第2受信部 234 第2断片確認部
251 第2確認乱数生成部 211 Z要素送信部
212 Z要素受信部 213 Z要素確認部
231 第3乱数rxz共有部 232 第3Y送信部
221 第3乱数ryz共有部 222 第3X送信部
243 第3受信部 244 第3断片確認部
251 第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断片a,第2断片a,第3断片aと、数値Bの第1断片b,第2断片b,第3断片bは、
=a22+a23
=(a21,a22
=(a21,a23
=b22+b23
=(b21,b22
=(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断片cを、
=a+b
のように求める第1加算部
を有し、
前記計算装置Yが、
A+Bの結果である数値Cの第2断片cを、
=(c21,c22)=(a21+b21,a22+b22
のように求める第2加算部
を有し、
前記計算装置Zが、
A+Bの結果である数値Cの第3断片cを、
=(c21,c23)=(a21+b21,a23+b23
のように求める第3加算部
を有す
ことを特徴とする秘密計算システム。
【請求項2】
3つの計算装置から構成される秘密計算システムであって、
数値Aの第1断片a,第2断片a,第3断片aと、数値Bの第1断片b,第2断片b,第3断片bは、
=a22+a23
=(a21,a22
=(a21,a23
=b22+b23
=(b21,b22
=(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断片cを、
=a−b
のように求める第1減算部
を有し、
前記計算装置Yは、
A−Bの結果である数値Cの第2断片cを、
=(c21,c22)=(a21−b21,a22−b22
のように求める第2減算部
を有し、
前記計算装置Zは、
A−Bの結果である数値Cの第3断片cを、
=(c21,c23)=(a21−b21,a23−b23
のように求める第3減算部
を有す
ことを特徴とする秘密計算システム。
【請求項3】
3つの計算装置から構成される秘密計算システムであって、
数値Aの第1断片a,第2断片a,第3断片aは、
=a22+a23
=(a21,a22
=(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断片cを、
=Ba
のように求める第1定数倍計算部
を有し、
前記計算装置Yは、
Aを数値B倍した結果である数値Cの第2断片cを、
=(c21,c22)=(Ba21,Ba22
のように求める第2定数倍計算部
を有し、
前記計算装置Zは、
Aを数値B倍した結果である数値Cの第3断片cを、
=(c21,c23)=(Ba21,Ba23
のように求める第3定数倍計算部
を有す
ことを特徴とする秘密計算システム。
【請求項4】
3つの計算装置から構成される秘密計算システムであって、
数値Aの第1断片a,第2断片a,第3断片aと、数値Bの第1断片b,第2断片b,第3断片bは、
=a22+a23
=(a21,a22
=(a21,a23
=b22+b23
=(b21,b22
=(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は、
乱数r,r,r,r,rを生成する乗算乱数生成部と、
A×Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c、第2要素c22、第3要素c23
=a−r−r
22=r
23=c−c22
のように求める第1乗算部と、
前記計算装置Yに(r,r,r,c22)を、前記計算装置Zに(a−r,b−r,r,c23)を送信する第1乗算送信部と
を有し、
前記計算装置Yは、
前記計算装置Xから(r,r,r,c22)を受信する第2乗算乱数受信部と、
数値yを
y=a2121+a21+r21+r
のように求める第2乗算中間値計算部と、
前記計算装置Zに数値yを送信する第2乗算送信部と、
前記計算装置Zから数値zを受信する第2乗算中間値受信部と、
A×Bの結果である数値Cの第2断片cを、
=(c21,c22)=(y+z,c22
のように求める第2乗算部
を有し、
前記計算装置Zは、
前記計算装置Xから(a−r,b−r,r,c23)を受信する第3乗算乱数受信部と、
数値zを
z=a21(b−r)+(a−r)b21+r
のように求める第3乗算中間値計算部と、
前記計算装置Yに数値zを送信する第3乗算送信部と、
前記計算装置Yから数値yを受信する第3乗算中間値受信部と、
A×Bの結果である数値Cの第3断片cを、
=(c21,c23)=(y+z,c23
のように求める第3乗算部
を有す
ことを特徴とする秘密計算システム。
【請求項5】
3つの計算装置から構成される秘密計算システムであって、
数値Aの第1断片a,第2断片a,第3断片aは、
=a22+a23
=(a21,a22
=(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断片cを、
=−a
のように求める第1否定部
を有し、
前記計算装置Yは、
1−Aの結果である数値Cの第2断片cを、
=(c21,c22)=(1−a21,−a22
のように求める第2否定部
を有し、
前記計算装置Zは、
1−Aの結果である数値Cの第3断片cを、
=(c21,c23)=(1−a21,−a23
のように求める第3否定部
を有す
ことを特徴とする秘密計算システム。
【請求項6】
請求項1から5のいずれかに記載の秘密計算システムであって、
いずれかの計算装置が、
自己が保持する数値Sから
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23
=s22+s23
=(s21,s22
=(s21,s23
の関係を有する第1断片s,第2断片s,第3断片sを求める断片生成部と、
計算装置Xとして機能する計算装置が第1断片sを、計算装置Yとして機能する計算装置が第2断片sを、計算装置Zとして機能する計算装置が第3断片sを記録した状態にする断片分配部と
を備えることを特徴とする秘密計算システム。
【請求項7】
請求項1記載の秘密計算システムであって、
jを1以上3以下の整数、a(j),a(j),a(j)を数値Aに対するj番目の第1断片,第2断片,第3断片、a21(j)をj番目の第1要素、計算装置X(j),計算装置Y(j),計算装置Z(j)をj番目の第1断片a(j),第2断片a(j),第3断片a(j)に対して計算装置X,計算装置Y,計算装置Zとして機能する計算装置、乱数rを乱数r,r,rの和とし、
前記3つの計算装置は、どの計算装置も、計算装置X,計算装置Y,計算装置Zのいずれとしても機能でき、
(X(1),Y(1),Z(1))、(X(2),Y(2),Z(2))、(X(3),Y(3),Z(3))はそれぞれ異なり、
(a(1),a(1),a(1))、(a(2),a(2),a(2))、(a(3),a(3),a(3))はそれぞれ異なり、
秘匿処理手段は、任意の数値Sに対して、
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23
=s22+s23
=(s21,s22
=(s21,s23
の関係を有する第1断片s,第2断片s,第3断片sを求める断片生成部と、
前記計算装置Xが第1断片sを、前記計算装置Yが第2断片sを、前記計算装置Zが第3断片sを記録した状態にする断片分配部と
を有する手段であり、
復元手段は、
前記計算装置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)にu(=a(j)+rxy)を送信する第1Z送信部と、
計算装置Z(j)との間で乱数rxzを共有するための第1乱数rxz共有部と、
計算装置Y(j)にu(=a(j)+rxz)を送信する第1Y送信部と、
計算装置Y(j)からuを、計算装置Z(j)からuを受信する第1受信部と、
(j)=u+uであることを確認する第1断片確認部と、
乱数rを生成する第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)にu(=a22(j)+rxy)を送信する第2Z送信部と、
計算装置Z(j)との間で乱数ryzを共有するための第2乱数ryz共有部と、
計算装置X(j)にu(=a22(j)+ryz)を送信する第2X送信部と、
計算装置X(j)からuを、計算装置Z(j)からuを受信する第2受信部と、
22(j)=u−uであることを確認する第2断片確認部と、
乱数rを生成する第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)にu(=a23(j)+rxz)を送信する第3Y送信部と、
計算装置Y(j)との間で乱数ryzを共有するための第3乱数ryz共有部と、
計算装置X(j)にu(=a23(j)−ryz)を送信する第3X送信部と、
計算装置X(j)からuを、計算装置Y(j)からuを受信する第3受信部と、
23(j)=u−uであることを確認する第3断片確認部と、
乱数rを生成する第3確認乱数生成部と
を有し、
前記秘匿手段は、
計算装置X(j)として機能するときは、第1断片a(j),乱数rの断片を分散した状態とし、
計算装置Y(j)として機能するときは、第1要素a21(j),乱数rの断片を分散した状態とし、
計算装置Z(j)として機能するときは、乱数rの断片を分散した状態とする
手段であり、
前記秘密加算手段は
(j)+a21(j)+r
の断片を求める手段であり、
前記復元手段は
(1)+a21(1)+r,a(2)+a21(2)+r,a(3)+a21(3)+r
を復元する手段であり、
3つの復元結果を取得できるいずれかの計算装置が、3つの結果が等しいことを確認する復元入力確認部を備える
ことを特徴とする秘密計算システム。
【請求項8】
同一の数値に対する異なる3種類の断片の組合せを入力とし、それぞれの断片の組合せに対して計算を行う請求項1記載の秘密計算システムであって、
jを1以上3以下の整数、c(j),c(j),c(j)を計算結果である数値Cに対するj番目の第1断片,第2断片,第3断片、c21(j),c22(j),c23(j)をj番目の第1要素,第2要素,第3要素、計算装置X(j),計算装置Y(j),計算装置Z(j)をj番目の第1断片c(j),第2断片c(j),第3断片c(j)を求めたときに計算装置X,計算装置Y,計算装置Zとして機能した計算装置、乱数rを乱数r,r,rの和とし、
前記3つの計算装置は、どの計算装置も、計算装置X,計算装置Y,計算装置Zのいずれとしても機能でき、
(X(1),Y(1),Z(1))、(X(2),Y(2),Z(2))、(X(3),Y(3),Z(3))はそれぞれ異なり、
(c(1),c(1),c(1))、(c(2),c(2),c(2))、(c(3),c(3),c(3))はそれぞれ異なり、
秘匿処理手段は、任意の数値Sに対して、
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23
=s22+s23
=(s21,s22
=(s21,s23
の関係を有する第1断片s,第2断片s,第3断片sを求める断片生成部と、
前記計算装置Xが第1断片sを、前記計算装置Yが第2断片sを、前記計算装置Zが第3断片sを記録した状態にする断片分配部と
を有する手段であり、
復元手段は、
前記計算装置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)として機能するために、乱数rを生成する第1確認乱数生成部を有し、
計算装置Y(j)として機能するために、乱数rを生成する第2確認乱数生成部を有し、
計算装置Z(j)として機能するために、乱数rを生成する第3確認乱数生成部を有し、
前記秘匿手段は、
計算装置X(j)として機能するときは、第1断片c(j),乱数rの断片を分散した状態とし、
計算装置Y(j)として機能するときは、第1要素c21(j),乱数rの断片を分散した状態とし、
計算装置Z(j)として機能するときは、乱数rの断片を分散した状態とする
手段であり、
前記秘密加算手段は
(j)+c22(j)+r
の断片を求める手段でもあり、
前記復元手段は
j=1,2,3に対して、
(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以下の整数、c(j),c(j),c(j)を計算結果である数値Cに対するj番目の第1断片,第2断片,第3断片、c21(j),c22(j),c23(j)をj番目の第1要素,第2要素,第3要素、計算装置X(j),計算装置Y(j),計算装置Z(j)をj番目の第1断片c(j),第2断片c(j),第3断片c(j)を求めたときに計算装置X,計算装置Y,計算装置Zとして機能した計算装置、乱数rを乱数r,r,rの和とし、
前記3つの計算装置は、どの計算装置も、計算装置X,計算装置Y,計算装置Zのいずれとしても機能でき、
(X(1),Y(1),Z(1))、(X(2),Y(2),Z(2))、(X(3),Y(3),Z(3))はそれぞれ異なり、
(c(1),c(1),c(1))、(c(2),c(2),c(2))、(c(3),c(3),c(3))はそれぞれ異なり、
秘匿処理手段は、任意の数値Sに対して、
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23
=s22+s23
=(s21,s22
=(s21,s23
の関係を有する第1断片s,第2断片s,第3断片sを求める断片生成部と、
前記計算装置Xが第1断片sを、前記計算装置Yが第2断片sを、前記計算装置Zが第3断片sを記録した状態にする断片分配部と
を有する手段であり、
秘密加算手段は、
前記計算装置Xが、
A+Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片cを、
=a+b
のように求める第1加算部
を有し、
前記計算装置Yが、
A+Bの結果である数値Cの第2断片cを、
=(c21,c22)=(a21+b21,a22+b22
のように求める第2加算部
を有し、
前記計算装置Zが、
A+Bの結果である数値Cの第3断片cを、
=(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)として機能するために、乱数rを生成する第1確認乱数生成部を有し、
計算装置Y(j)として機能するために、乱数rを生成する第2確認乱数生成部を有し、
計算装置Z(j)として機能するために、乱数rを生成する第3確認乱数生成部を有し、
前記秘匿手段は、
計算装置X(j)として機能するときは、第1断片c(j),乱数rの断片を分散した状態とし、
計算装置Y(j)として機能するときは、第1要素c21(j),乱数rの断片を分散した状態とし、
計算装置Z(j)として機能するときは、乱数rの断片を分散した状態とする
手段であり、
前記秘密加算手段は
(j)+c22(j)+r
の断片を求める手段であり、
前記復元手段は
j=1,2,3に対して、
(j)+c22(j)+r
の計算結果を、計算装置X(j)と計算装置Y(j)による復元と、計算装置Y(j)と計算装置Z(j)による復元と、計算装置X(j)と計算装置Z(j)による復元とを行う手段であり、
9つの復元結果を取得できるいずれかの計算装置が、9つの結果が等しいことを確認する復元出力確認部を備える
ことを特徴とする秘密計算システム。
【請求項10】
3つの計算装置から構成される秘密計算システムであって、
数値Aの第1断片a,第2断片a,第3断片aは、
=a22+a23
=(a21,a22
=(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断片aを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断片関数tを受信し、前記計算装置Zから第1乱数断片e’を受信する第1演算受信部と、
第1断片eをe=t(e’)のように求める第1演算復号部と
を有し、
前記計算装置Yは、
前記計算装置Xから乱数(r0,1,r1,1),…,(r0,N,r1,N)を受信する第2置換乱数受信部と、
Nビットの乱数e21,e22を生成し、第1要素e21,第2要素e22とする要素生成部と、
第1断片aが入力された場合に第1断片eと第3要素e23を出力する論理回路C”の入出力を乱数に置き換えたgarbled circuit GC”(ただし、入力である第1断片aは乱数(r0,1,r1,1),…,(r0,N,r1,N)に置き換えられる)と、前記garbled circuit GC”の出力である第1乱数断片e’,第3乱数要素e’23それぞれを、第1断片e,第3要素e23に変換する第1断片関数t,第3要素関数t23を生成するgarbled circuit生成部と、
第1断片関数tを前記計算装置Xに送信し、garbled circuit GC”と第3要素関数t23と第1要素e21を前記計算装置Zに送信する第2演算送信部と、
第2断片eをe=(e21,e22)とする第2演算復号部と
を有し、
前記計算装置Zは、
前記計算装置Xからra1[1],1,…,ra1[N],Nを受信し、前記計算装置Yからgarbled circuit GC”と第3要素関数t23と第1要素e21を受信する第3演算受信部と、
a1[1],1,…,ra1[N],Nとgarbled circuit GC”とを用いて、第1乱数断片e’,第3乱数要素e’23を求める演算実行部と、
第1乱数断片e’を前記計算装置Xに送信する第3演算送信部と、
第3要素e23をe23=t23(e’23)のように求め、第3断片eをe=(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以下の整数、a,a,aをNビット以下の数値Aの第1断片,第2断片,第3断片、e,e,eを数値Aを論理回路Cに入力したときの出力E=C(A)の第1断片,第2断片,第3断片、a1[n]を第1断片aを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断片関数tを受信し、前記計算装置Zから第1乱数断片e’を受信する第1演算受信部と、
第1断片eをe=t(e’)のように求める第1演算復号部と
を有し、
前記計算装置Yは、
前記計算装置Xから乱数(r0,1,r1,1),…,(r0,N,r1,N)を受信する第2置換乱数受信部と、
第1断片aが入力された場合に第1断片e,第2断片e,第3断片eを出力する論理回路C’の入出力を乱数に置き換えたgarbled circuit GC’(ただし、入力である第1断片aは乱数(r0,1,r1,1),…,(r0,N,r1,N)に置き換えられる)と、前記garbled circuit GC’の出力である第1乱数断片e’,第2乱数断片e’,第3乱数断片e’それぞれを、第1断片e,第2断片e,第3断片eに変換する第1断片関数t,第2断片関数t,第3断片関数tを生成するgarbled circuit生成部と、
第1断片関数tを前記計算装置Xに送信し、garbled circuit GC’と第3断片関数tを前記計算装置Zに送信する第2演算送信部と、
前記計算装置Zから第2乱数断片e’を受信する第2乱数断片受信部と、
第2断片eをe=t(e’)のように求める第2演算復号部と
を有し、
前記計算装置Zは、
前記計算装置Xからra1[1],1,…,ra1[N],Nを受信し、前記計算装置Yからgarbled circuit GC’と第3断片関数tを受信する第3演算受信部と、
a1[1],1,…,ra1[N],Nとgarbled circuit GC’とを用いて、第1乱数断片e’,第2乱数断片e’,第3乱数断片e’を求める演算実行部と、
第1乱数断片e’を前記計算装置Xに送信し、第2乱数断片e’を前記計算装置Yに送信する第3演算送信部と、
第3断片eをe=t(e’)のように求める第3演算復号部と
を有す
ことを特徴とする秘密計算システム。
【請求項13】
3つの計算装置から構成される秘密計算システムを用いた秘密計算方法であって、
数値Aの第1断片a,第2断片a,第3断片aと、数値Bの第1断片b,第2断片b,第3断片bは、
=a22+a23
=(a21,a22
=(a21,a23
=b22+b23
=(b21,b22
=(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断片cを、
=a+b
のように求める第1加算ステップと、
前記計算装置Yが、A+Bの結果である数値Cの第2断片cを、
=(c21,c22)=(a21+b21,a22+b22
のように求める第2加算ステップと、
前記計算装置Zが、A+Bの結果である数値Cの第3断片cを、
=(c21,c23)=(a21+b21,a23+b23
のように求める第3加算ステップと
を有す
ことを特徴とする秘密計算方法。
【請求項14】
3つの計算装置から構成される秘密計算システムを用いた秘密計算方法であって、
数値Aの第1断片a,第2断片a,第3断片aと、数値Bの第1断片b,第2断片b,第3断片bは、
=a22+a23
=(a21,a22
=(a21,a23
=b22+b23
=(b21,b22
=(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断片cを、
=a−b
のように求める第1減算ステップと、
前記計算装置Yが、A−Bの結果である数値Cの第2断片cを、
=(c21,c22)=(a21−b21,a22−b22
のように求める第2減算ステップと、
前記計算装置Zが、A−Bの結果である数値Cの第3断片cを、
=(c21,c23)=(a21−b21,a23−b23
のように求める第3減算ステップと
を有す
ことを特徴とする秘密計算方法。
【請求項15】
3つの計算装置から構成される秘密計算システムを用いた秘密計算方法であって、
数値Aの第1断片a,第2断片a,第3断片aは、
=a22+a23
=(a21,a22
=(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断片cを、
=Ba
のように求める第1定数倍計算ステップと、
前記計算装置Yが、Aを数値B倍した結果である数値Cの第2断片cを、
=(c21,c22)=(Ba21,Ba22
のように求める第2定数倍計算ステップと、
前記計算装置Zが、Aを数値B倍した結果である数値Cの第3断片cを、
=(c21,c23)=(Ba21,Ba23
のように求める第3定数倍計算ステップと
を有す
ことを特徴とする秘密計算方法。
【請求項16】
3つの計算装置から構成される秘密計算システムを用いた秘密計算方法であって、
数値Aの第1断片a,第2断片a,第3断片aと、数値Bの第1断片b,第2断片b,第3断片bは、
=a22+a23
=(a21,a22
=(a21,a23
=b22+b23
=(b21,b22
=(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が、乱数r,r,r,r,rを生成する乗算乱数生成ステップと、
前記計算装置Xが、A×Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c、第2要素c22、第3要素c23
=a−r−r
22=r
23=c−c22
のように求める第1乗算ステップと、
前記計算装置Xが、前記計算装置Yに(r,r,r,c22)を、前記計算装置Zに(a−r,b−r,r,c23)を送信する第1乗算送信ステップと、
前記計算装置Yが、前記計算装置Xから(r,r,r,c22)を受信する第2乗算乱数受信ステップと、
前記計算装置Zが、前記計算装置Xから(a−r,b−r,r,c23)を受信する第3乗算乱数受信ステップと、
前記計算装置Yが、数値yを
y=a2121+a21+r21+r
のように求める第2乗算中間値計算ステップと、
前記計算装置Zが、数値zを
z=a21(b−r)+(a−r)b21+r
のように求める第3乗算中間値計算ステップと、
前記計算装置Yが、前記計算装置Zに数値yを送信する第2乗算送信ステップと、
前記計算装置Zが、前記計算装置Yに数値zを送信する第3乗算送信ステップと、
前記計算装置Yが、前記計算装置Zから数値zを受信する第2乗算中間値受信ステップと、
前記計算装置Zが、前記計算装置Yから数値yを受信する第3乗算中間値受信ステップと、
前記計算装置Yが、A×Bの結果である数値Cの第2断片cを、
=(c21,c22)=(y+z,c22
のように求める第2乗算ステップと、
前記計算装置Zが、A×Bの結果である数値Cの第3断片cを、
=(c21,c23)=(y+z,c23
のように求める第3乗算ステップと
を有す
ことを特徴とする秘密計算方法。
【請求項17】
3つの計算装置から構成される秘密計算システムを用いた秘密計算方法であって、
数値Aの第1断片a,第2断片a,第3断片aは、
=a22+a23
=(a21,a22
=(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断片cを、
=−a
のように求める第1否定ステップと、
前記計算装置Yが、1−Aの結果である数値Cの第2断片cを、
=(c21,c22)=(1−a21,−a22
のように求める第2否定ステップと、
前記計算装置Zが、1−Aの結果である数値Cの第3断片cを、
=(c21,c23)=(1−a21,−a23
のように求める第3否定ステップと
を有す
ことを特徴とする秘密計算方法。
【請求項18】
請求項13から17のいずれかに記載の秘密計算方法であって、
いずれかの計算装置が、
秘匿処理過程として、
自己が保持する数値Sから
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23
=s22+s23
=(s21,s22
=(s21,s23
の関係を有する第1断片s,第2断片s,第3断片sを求める断片生成ステップと、
計算装置Xとして機能する計算装置が第1断片sを、計算装置Yとして機能する計算装置が第2断片sを、計算装置Zとして機能する計算装置が第3断片sを記録した状態にする断片分配ステップと
を有す
ことを特徴とする秘密計算方法。
【請求項19】
請求項13記載の秘密計算方法であって、
jを1以上3以下の整数、a(j),a(j),a(j)を数値Aに対するj番目の第1断片,第2断片,第3断片、a21(j)をj番目の第1要素、計算装置X(j),計算装置Y(j),計算装置Z(j)をj番目の第1断片a(j),第2断片a(j),第3断片a(j)に対して計算装置X,計算装置Y,計算装置Zとして機能する計算装置、乱数rを乱数r,r,rの和とし、
前記3つの計算装置は、どの計算装置も、計算装置X,計算装置Y,計算装置Zのいずれとしても機能でき、
(X(1),Y(1),Z(1))、(X(2),Y(2),Z(2))、(X(3),Y(3),Z(3))はそれぞれ異なり、
(a(1),a(1),a(1))、(a(2),a(2),a(2))、(a(3),a(3),a(3))はそれぞれ異なり、
秘匿処理過程は、
自己が保持する数値Sから
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23
=s22+s23
=(s21,s22
=(s21,s23
の関係を有する第1断片s,第2断片s,第3断片sを求める断片生成ステップと、
計算装置Xとして機能する計算装置が第1断片sを、計算装置Yとして機能する計算装置が第2断片sを、計算装置Zとして機能する計算装置が第3断片sを記録した状態にする断片分配ステップと
を有する過程であり、
復元過程は、
計算装置Xが、計算装置Yに第1断片aを送信する第1断片Y送信サブステップと、
計算装置Yが、計算装置Xから第1断片aを受信する第2断片X受信サブステップと、
計算装置Yが、受信した第1断片aと当該第1断片aに対応する第1要素a21とを加算することで数値Aを復元する第2X復元サブステップ
からなる復元XYステップ、
計算装置Xが、計算装置100に第1断片aを送信する第1断片Z送信サブステップと、
計算装置Zが、計算装置Xから第1断片aを受信する第3断片X受信サブステップと、
計算装置Zが、受信した第1断片aと当該第1断片aに対応する第1要素a21とを加算することで数値を復元する第3X復元サブステップと
からなる復元XZステップ、
計算装置Yが、計算装置Xに第1要素a21を送信する第2断片X送信サブステップと、
計算装置Xが、計算装置Yから第1要素a21を受信する第1断片Y受信サブステップと、
計算装置Xが、受信した第1要素a21と当該第1要素a21に対応する第1断片aとを加算することで数値を復元する第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断片aとを加算することで数値を復元する第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断片a(j)が第2要素a22(j)と第3要素a23(j)の和であることを確認する第1断片不正検出ステップと、
第2要素a22(j)が第1断片a(j)と第3要素a23(j)の差であることを確認する第2要素不正検出ステップと、
第3要素a23(j)が第1断片a(j)と第2要素a22(j)の差であることを確認する第3要素不正検出ステップと、
計算装置X(j)が、乱数rを生成する第1確認乱数生成ステップと、
計算装置X(j)が、前記秘匿処理過程によって第1断片a(j),乱数rの断片を、3つの計算装置で分散して記録した状態にする秘匿Xステップと、
計算装置Y(j)が、乱数rを生成する第2確認乱数生成ステップと、
計算装置Y(j)が、前記秘匿処理過程によって第1要素a21(j),乱数rの断片を、3つの計算装置で分散して記録した状態にする秘匿Yステップと、
計算装置Z(j)が、乱数rを生成する第3確認乱数生成ステップと、
計算装置200(j)が、前記秘匿処理過程によって乱数rの断片を、3つの計算装置で分散して記録した状態にする秘匿Zステップと、
前記秘密加算過程によって、
(j)+a21(j)+r
ただし、r=r+r+r
の計算結果の断片を、3つの計算装置で分散して記録した状態にする秘密加算ステップと、
前記復元過程によって、
(j)+a21(j)+r
を復元し、いずれかの計算装置に記録しておく入力復元ステップと、
いずれかの計算装置が、j=3かを確認する条件確認ステップと、
j≠3のときにはjにj+1を代入し、前記第1要素不正検出ステップに戻る繰返ステップと、
j=3のときには、いずれかの計算装置が、3つの復元結果a(1)+a21(1)+r,a(2)+a21(2)+r,a(3)+a21(3)+rが等しいことを確認する結果確認ステップと
を有すことを特徴とする秘密計算方法。
【請求項20】
同一の数値に対する異なる3種類の断片の組合せを入力とし、それぞれの断片の組合せに対して計算を行う請求項13記載の秘密計算方法であって、
jを1以上3以下の整数、c(j),c(j),c(j)を計算結果である数値Cに対するj番目の第1断片,第2断片,第3断片、c21(j),c22(j),c23(j)をj番目の第1要素,第2要素,第3要素、計算装置X(j),計算装置Y(j),計算装置Z(j)をj番目の第1断片c(j),第2断片c(j),第3断片c(j)を求めたときに計算装置X,計算装置Y,計算装置Zとして機能した計算装置、乱数rを乱数r,r,rの和とし、
前記3つの計算装置は、どの計算装置も、計算装置X,計算装置Y,計算装置Zのいずれとしても機能でき、
(X(1),Y(1),Z(1))、(X(2),Y(2),Z(2))、(X(3),Y(3),Z(3))はそれぞれ異なり、
(c(1),c(1),c(1))、(c(2),c(2),c(2))、(c(3),c(3),c(3))はそれぞれ異なり、
秘匿処理過程は、
自己が保持する数値Sから
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23
=s22+s23
=(s21,s22
=(s21,s23
の関係を有する第1断片s,第2断片s,第3断片sを求める断片生成ステップと、
計算装置Xとして機能する計算装置が第1断片sを、計算装置Yとして機能する計算装置が第2断片sを、計算装置Zとして機能する計算装置が第3断片sを記録した状態にする断片分配ステップと
を有する過程であり、
復元過程は、
計算装置Xが、計算装置Yに第1断片aを送信する第1断片Y送信サブステップと、
計算装置Yが、計算装置Xから第1断片aを受信する第2断片X受信サブステップと、
計算装置Yが、受信した第1断片aと当該第1断片aに対応する第1要素a21とを加算することで数値Aを復元する第2X復元サブステップ
からなる復元XYステップ、
計算装置Xが、計算装置100に第1断片aを送信する第1断片Z送信サブステップと、
計算装置Zが、計算装置Xから第1断片aを受信する第3断片X受信サブステップと、
計算装置Zが、受信した第1断片aと当該第1断片aに対応する第1要素a21とを加算することで数値を復元する第3X復元サブステップと
からなる復元XZステップ、
計算装置Yが、計算装置Xに第1要素a21を送信する第2断片X送信サブステップと、
計算装置Xが、計算装置Yから第1要素a21を受信する第1断片Y受信サブステップと、
計算装置Xが、受信した第1要素a21と当該第1要素a21に対応する第1断片aとを加算することで数値を復元する第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断片aとを加算することで数値を復元する第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)が、乱数rを生成する第1確認乱数生成ステップと、
計算装置X(j)が、前記秘匿処理過程によって第1断片c(j),乱数rの断片を、3つの計算装置で分散して記録した状態にする秘匿Xステップと、
計算装置Y(j)が、乱数rを生成する第2確認乱数生成ステップと、
計算装置Y(j)が、前記秘匿処理過程によって第1要素c21(j),乱数rの断片を、3つの計算装置で分散して記録した状態にする秘匿Yステップと、
計算装置Z(j)が、乱数rを生成する第3確認乱数生成ステップと、
計算装置Z(j)が、前記秘匿処理過程によって乱数rの断片を3つの計算装置で分散して記録した状態にする秘匿Zステップと、
前記秘密加算過程によって、
(j)+c22(j)+r
ただし、r=r+r+r
の計算結果の断片を、3つの計算装置で分散して記録した状態にする秘密加算ステップと、
前記復元XYステップまたは復元YXステップからなる前記復元過程によって、
(j)+c22(j)+r=CXY(j)を復元して記録しておき、
前記復元YZステップまたは復元ZYステップからなる前記復元過程によって、
(j)+c22(j)+r=CYZ(j)を復元して記録しておき、
前記復元XZステップまたは復元ZXステップからなる前記復元過程によって、
(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以下の整数、c(j),c(j),c(j)を計算結果である数値Cに対するj番目の第1断片,第2断片,第3断片、c21(j),c22(j),c23(j)をj番目の第1要素,第2要素,第3要素、計算装置X(j),計算装置Y(j),計算装置Z(j)をj番目の第1断片c(j),第2断片c(j),第3断片c(j)を求めたときに計算装置X,計算装置Y,計算装置Zとして機能した計算装置、乱数rを乱数r,r,rの和とし、
前記3つの計算装置は、どの計算装置も、計算装置X,計算装置Y,計算装置Zのいずれとしても機能でき、
(X(1),Y(1),Z(1))、(X(2),Y(2),Z(2))、(X(3),Y(3),Z(3))はそれぞれ異なり、
(c(1),c(1),c(1))、(c(2),c(2),c(2))、(c(3),c(3),c(3))はそれぞれ異なり、
秘匿処理過程は、
自己が保持する数値Sから
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23
=s22+s23
=(s21,s22
=(s21,s23
の関係を有する第1断片s,第2断片s,第3断片sを求める断片生成ステップと、
計算装置Xとして機能する計算装置が第1断片sを、計算装置Yとして機能する計算装置が第2断片sを、計算装置Zとして機能する計算装置が第3断片sを記録した状態にする断片分配ステップと
を有する過程であり、
秘密加算過程は、
前記計算装置Xが、A+Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片cを、
=a+b
のように求める第1加算ステップと、
前記計算装置Yが、A+Bの結果である数値Cの第2断片cを、
=(c21,c22)=(a21+b21,a22+b22
のように求める第2加算ステップと、
前記計算装置Zが、A+Bの結果である数値Cの第3断片cを、
=(c21,c23)=(a21+b21,a23+b23
のように求める第3加算ステップと
を有する過程であり、
復元過程は、
計算装置Xが、計算装置Yに第1断片aを送信する第1断片Y送信サブステップと、
計算装置Yが、計算装置Xから第1断片aを受信する第2断片X受信サブステップと、
計算装置Yが、受信した第1断片aと当該第1断片aに対応する第1要素a21とを加算することで数値Aを復元する第2X復元サブステップ
からなる復元XYステップ、
計算装置Xが、計算装置100に第1断片aを送信する第1断片Z送信サブステップと、
計算装置Zが、計算装置Xから第1断片aを受信する第3断片X受信サブステップと、
計算装置Zが、受信した第1断片aと当該第1断片aに対応する第1要素a21とを加算することで数値を復元する第3X復元サブステップと
からなる復元XZステップ、
計算装置Yが、計算装置Xに第1要素a21を送信する第2断片X送信サブステップと、
計算装置Xが、計算装置Yから第1要素a21を受信する第1断片Y受信サブステップと、
計算装置Xが、受信した第1要素a21と当該第1要素a21に対応する第1断片aとを加算することで数値を復元する第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断片aとを加算することで数値を復元する第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)が、乱数rを生成する第1確認乱数生成ステップと、
計算装置X(j)が、前記秘匿処理過程によって第1断片c(j),乱数rの断片を、3つの計算装置で分散して記録した状態にする秘匿Xステップと、
計算装置Y(j)が、乱数rを生成する第2確認乱数生成ステップと、
計算装置Y(j)が、前記秘匿処理過程によって第1要素c21(j),乱数rの断片を、3つの計算装置で分散して記録した状態にする秘匿Yステップと、
計算装置Z(j)が、乱数rを生成する第3確認乱数生成ステップと、
計算装置Z(j)が、前記秘匿処理過程によって乱数rの断片を3つの計算装置で分散して記録した状態にする秘匿Zステップと、
前記秘密加算過程によって、
(j)+c22(j)+r
ただし、r=r+r+r
の計算結果の断片を、3つの計算装置で分散して記録した状態にする秘密加算ステップと、
前記復元XYステップまたは復元YXステップからなる前記復元過程によって、
(j)+c22(j)+r=CXY(j)を復元して記録しておき、
前記復元YZステップまたは復元ZYステップからなる前記復元過程によって、
(j)+c22(j)+r=CYZ(j)を復元して記録しておき、
前記復元XZステップまたは復元ZXステップからなる前記復元過程によって、
(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断片a,第2断片a,第3断片aは、
=a22+a23
=(a21,a22
=(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断片aを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断片aが入力された場合に第1断片eと第3要素e23を出力する論理回路C”の入出力を乱数に置き換えたgarbled circuit GC”(ただし、入力である第1断片aは乱数(r0,1,r1,1),…,(r0,N,r1,N)に置き換えられる)と、garbled circuit GC”の出力である第1乱数断片e’,第3乱数要素e’23それぞれを、第1断片e,第3要素e23に変換する第1断片関数t,第3要素関数t23を生成するgarbled circuit生成ステップと、
計算装置Yが、第1断片関数tを計算装置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’,第3乱数要素e’23を求める演算実行ステップと、
計算装置Zが、第1乱数断片e’を計算装置Xに送信する第3演算送信ステップと、
計算装置Xが、計算装置Yから第1断片関数tを受信し、計算装置Zから第1乱数断片e’を受信する第1演算受信ステップと、
計算装置Xが、第1断片eをe=t(e’)のように求める第1演算復号ステップと、
計算装置Yが、第2断片eをe=(e21,e22)とする第2演算復号ステップと、
計算装置Zが、第3要素e23をe23=t23(e’23)のように求め、第3断片eをe=(e21,e23)とする第3演算復号ステップと
を有することを特徴とする秘密計算方法。
【請求項23】
請求項13から18、もしくは22のいずれかに記載の秘密計算方法であって、
計算装置Xが、計算装置Yに第1断片aを送信する第1断片Y送信ステップと、
計算装置Yが、計算装置Xから第1断片aを受信する第2断片X受信ステップと、
計算装置Yが、受信した第1断片aと当該第1断片aに対応する第1要素a21とを加算することで数値Aを復元する第2X復元ステップ
からなる復元XY過程、
計算装置Xが、計算装置100に第1断片aを送信する第1断片Z送信ステップと、
計算装置Zが、計算装置Xから第1断片aを受信する第3断片X受信ステップと、
計算装置Zが、受信した第1断片aと当該第1断片aに対応する第1要素a21とを加算することで数値を復元する第3X復元ステップと
からなる復元XZ過程、
計算装置Yが、計算装置Xに第1要素a21を送信する第2断片X送信ステップと、
計算装置Xが、計算装置Yから第1要素a21を受信する第1断片Y受信ステップと、
計算装置Xが、受信した第1要素a21と当該第1要素a21に対応する第1断片aとを加算することで数値を復元する第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断片aとを加算することで数値を復元する第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以下の整数、a,a,aをNビット以下の数値Aの第1断片,第2断片,第3断片、e,e,eを数値Aを論理回路Cに入力したときの出力E=C(A)の第1断片,第2断片,第3断片、a1[n]を第1断片aを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断片aが入力された場合に第1断片e,第2断片e,第3断片eを出力する論理回路C’の入出力を乱数に置き換えたgarbled circuit GC’(ただし、入力である第1断片aは乱数(r0,1,r1,1),…,(r0,N,r1,N)に置き換えられる)と、前記garbled circuit GC’の出力である第1乱数断片e’,第2乱数断片e’,第3乱数断片e’それぞれを、第1断片e,第2断片e,第3断片eに変換する第1断片関数t,第2断片関数t,第3断片関数tを生成するgarbled circuit生成ステップと、
計算装置Yが、第1断片関数tを計算装置Xに送信し、garbled circuit GC’と第3断片関数tを計算装置Zに送信する第2演算送信ステップと、
計算装置Zが、計算装置Xからra1[1],1,…,ra1[N],Nを受信し、計算装置Yからgarbled circuit GC’と第3断片関数tを受信する第3演算受信ステップと、
計算装置Zが、ra1[1],1,…,ra1[N],Nとgarbled circuit GC’とを用いて、第1乱数断片e’,第2乱数断片e’,第3乱数断片e’を求める演算実行ステップと、
計算装置Zが、第1乱数断片e’を計算装置Xに送信し、第2乱数断片e’を計算装置Yに送信する第3演算送信ステップと、
計算装置Xが、計算装置Yから第1断片関数tを受信し、計算装置Zから第1乱数断片e’を受信する第1演算受信ステップと、
計算装置Xが、第1断片eをe=t(e’)のように求める第1演算復号ステップと、
計算装置Yが、計算装置Zから第2乱数断片e’を受信する第2乱数断片受信ステップと、
計算装置Yが、第2断片eをe=t(e’)のように求める第2演算復号ステップと、
計算装置Zが、第3断片eをe=t(e’)のように求める第3演算復号ステップと
を有することを特徴とする秘密計算方法。
【請求項25】
数値Aの第1断片a,第2断片a,第3断片aと、数値Bの第1断片b,第2断片b,第3断片bは、
=a22+a23
=(a21,a22
=(a21,a23
=b22+b23
=(b21,b22
=(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断片cを、
=a+b
のように求める第1加算部と、
A−Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片cを、
=a−b
のように求める第1減算部と、
Aを数値B倍した結果である数値C(ただし、C=c21+c22+c23)の第1断片cを、
=Ba
のように求める第1定数倍計算部と、
乱数r,r,r,r,rを生成する乗算乱数生成部と、
A×Bの結果である数値C(ただし、C=c21+c22+c23)の第1断片c、第2要素c22、第3要素c23
=a−r−r
22=r
23=c−c22
のように求める第1乗算部と、
前記計算装置Yに(r,r,r,c22)を、前記計算装置Zに(a−r,b−r,r,c23)を送信する第1乗算送信部と、
1−Aの結果である数値C(ただし、C=c21+c22+c23)の第1断片cを、
=−a
のように求める第1否定部と、
自己が保持する数値Sから
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23
=s22+s23
=(s21,s22
=(s21,s23
の関係を有する第1断片s,第2断片s,第3断片sを求める断片生成部と、
計算装置Yとして機能する計算装置が第2断片sを、計算装置Zとして機能する計算装置が第3断片sを記録した状態にする断片分配部と、
を備える計算装置。
【請求項26】
数値Aの第1断片a,第2断片a,第3断片aと、数値Bの第1断片b,第2断片b,第3断片bは、
=a22+a23
=(a21,a22
=(a21,a23
=b22+b23
=(b21,b22
=(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断片cを、
=(c21,c22)=(a21+b21,a22+b22
のように求める第2加算部と、
A−Bの結果である数値Cの第2断片cを、
=(c21,c22)=(a21−b21,a22−b22
のように求める第2減算部と、
Aを数値B倍した結果である数値Cの第2断片cを、
=(c21,c22)=(Ba21,Ba22
のように求める第2定数倍計算部と、
前記計算装置Xから(r,r,r,c22)を受信する第2乗算乱数受信部と、
数値yを
y=a2121+a21+r21+r
のように求める第2乗算中間値計算部と、
前記計算装置Zに数値yを送信する第2乗算送信部と、
前記計算装置Zから数値zを受信する第2乗算中間値受信部と、
A×Bの結果である数値Cの第2断片cを、
=(c21,c22)=(y+z,c22
のように求める第2乗算部と、
1−Aの結果である数値Cの第2断片cを、
=(c21,c22)=(1−a21,−a22
のように求める第2否定部と、
自己が保持する数値Sから
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23
=s22+s23
=(s21,s22
=(s21,s23
の関係を有する第1断片s,第2断片s,第3断片sを求める断片生成部と、
計算装置Xとして機能する計算装置が第1断片sを、計算装置Zとして機能する計算装置が第3断片sを記録した状態にする断片分配部と
を備える計算装置。
【請求項27】
数値Aの第1断片a,第2断片a,第3断片aと、数値Bの第1断片b,第2断片b,第3断片bは、
=a22+a23
=(a21,a22
=(a21,a23
=b22+b23
=(b21,b22
=(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断片cを、
=(c21,c23)=(a21+b21,a23+b23
のように求める第3加算部と、
A−Bの結果である数値Cの第3断片cを、
=(c21,c23)=(a21−b21,a23−b23
のように求める第3減算部と、
Aを数値B倍した結果である数値Cの第3断片cを、
=(c21,c23)=(Ba21,Ba23
のように求める第3定数倍計算部と、
前記計算装置Xから(a−r,b−r,r,c23)を受信する第3乗算乱数受信部と、
数値zを
z=a21(b−r)+(a−r)b21+r
のように求める第3乗算中間値計算部と、
前記計算装置Yに数値zを送信する第3乗算送信部と、
前記計算装置Yから数値yを受信する第3乗算中間値受信部と、
A×Bの結果である数値Cの第3断片cを、
=(c21,c23)=(y+z,c23
のように求める第3乗算部と、
1−Aの結果である数値Cの第3断片cを、
=(c21,c23)=(1−a21,−a23
のように求める第3否定部と、
自己が保持する数値Sから
S=s21+s22+s23
を満たすランダムな組合せである第1要素s21,第2要素s22,第3要素s23
=s22+s23
=(s21,s22
=(s21,s23
の関係を有する第1断片s,第2断片s,第3断片sを求める断片生成部と、
計算装置Xとして機能する計算装置が第1断片sを、計算装置Yとして機能する計算装置が第2断片sを、計算装置Zとして機能する計算装置が第3断片sを記録した状態にする断片分配部と
を備える計算装置。
【請求項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断片a[1],…,a[N]と、第1要素a21[1],…,a21[N]を秘匿処理し、
(2)前記秘密加算手段、前記秘密乗算手段、前記秘密定数倍手段、前記秘密減算手段を用いて、
【数11】


を行って、各前記計算装置が、A[1]の断片を分散して記録した状態とし、
(3−1)n=2のように初期設定を行い、
(3−2)前記秘密定数倍手段、前記秘密加算手段、前記秘密減算手段によって、
【数12】


を行って、各前記計算装置が、B(n)の断片b(n),b(n),b(n)を分散して記録した状態とし、
(3−3)前記秘匿処理手段によって、B(n)の第1断片b(n)とB(n)の第1要素b21(n)を秘匿処理し、
(3−4)前記秘密加算手段、前記秘密乗算手段、前記秘密定数倍手段、前記秘密減算手段によって、
【数13】


を行って、D(n)の断片d(n),d(n),d(n)を分散して記録した状態にし、
(4−1)前記計算装置は、それぞれc(n)=0、i=1のように初期設定を行い、
(4−2)前記計算装置Xは、
【数14】


を計算し、前記計算装置Yと前記計算装置Zは、
【数15】


を計算し、
(4−3)前記計算装置100は、それぞれ
i+1(n)=c(n)(n)[i]∨c(n)21(n)[i]∨b(n)[i]b21(n)[i]
を計算し、
(4−4)前記計算装置は、i=1からn−1まで上記の(4−2)と(4−3)を繰返し、
(5−1)c(n)=0ならば、各計算装置は、分散して記録しているD(n)の断片を、各計算装置が分散して記録するA[n]の断片とし、c(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断片a[1],…,a[N]と、第1要素a21[1],…,a21[N]を秘匿処理するステップと、
(2)前記秘密加算過程、前記秘密乗算過程、前記秘密定数倍過程、前記秘密減算過程を用いて、
【数16】


を行って、各前記計算装置が、A[1]の断片を分散して記録した状態とするステップと、
(3−1)n=2のように初期設定を行うステップと、
(3−2)前記秘密定数倍過程、前記秘密加算過程、前記秘密減算過程を用いて、
【数17】


を行って、各前記計算装置が、B(n)の断片b(n),b(n),b(n)を分散して記録した状態とするステップと、
(3−3)前記秘匿処理過程を用いて、B(n)の第1断片b(n)とB(n)の第1要素b21(n)を秘匿処理するステップと、
(3−4)前記秘密加算過程、前記秘密乗算過程、前記秘密定数倍過程、前記秘密減算過程を用いて、
【数18】


を行って、D(n)の断片d(n),d(n),d(n)を分散して記録した状態にするステップと、
(4−1)前記計算装置が、それぞれc(n)=0、i=1のように初期設定を行うステップと、
(4−2)前記計算装置Xが、
【数19】


を計算し、前記計算装置Yと前記計算装置Zが、
【数20】


を計算するステップと、
(4−3)前記計算装置100が、それぞれ
i+1(n)=c(n)(n)[i]∨c(n)21(n)[i]∨b(n)[i]b21(n)[i]
を計算するステップと、
(4−4)前記計算装置が、i=1からn−1まで上記の(4−2)と(4−3)を繰返し、
(5−1)c(n)=0ならば、各計算装置が、分散して記録しているD(n)の断片を、各計算装置が分散して記録するA[n]の断片とし、c(n)=1ならば各計算装置が断片を分散して記録しているD(n)の否定を前記秘密否定過程で計算し、D(n)の否定の断片を、各計算装置が記録するA[n]の断片とするステップと、
(5−2)n=Nかを確認し、Noの場合には、nにn+1を代入して上記(3−2)に戻り、Yesの場合には処理を終了するステップと
を有することを特徴とする秘密計算方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate