(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-01-31
(45)【発行日】2023-02-08
(54)【発明の名称】秘匿演算変換システム、秘匿演算変換方法、および、秘匿演算変換プログラム
(51)【国際特許分類】
G09C 1/00 20060101AFI20230201BHJP
【FI】
G09C1/00 650Z
(21)【出願番号】P 2018139191
(22)【出願日】2018-07-25
【審査請求日】2021-01-29
【前置審査】
(73)【特許権者】
【識別番号】510108951
【氏名又は名称】公立大学法人広島市立大学
(74)【代理人】
【識別番号】100163186
【氏名又は名称】松永 裕吉
(72)【発明者】
【氏名】上土井 陽子
(72)【発明者】
【氏名】若林 真一
【審査官】打出 義尚
(56)【参考文献】
【文献】特開2017-129644(JP,A)
【文献】特開2016-109891(JP,A)
【文献】特開2016-027391(JP,A)
【文献】YU Ching-Hua, et al.,Efficient Secure Two-Party Exponentiation,Lecture Notes in Computer Science,2011年,vol 6558,pp. 17-32
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
2以上のデータ処理装置で構成され、前記データ処理装置はそれぞれの秘密データを記憶する秘密データ記憶手段と、それぞれの出力データを記憶する出力データ記憶手段と、前記秘密データを入力として、他の前記データ処理装置と連携して、前記出力データをそれぞれ秘匿に計算する演算処理手段と、を有し、
前記演算処理手段は、前記秘密データと前記他のデータ処理装置が記憶する秘密データを入力として変換前演算型Aの演算を行ったときの結果と、前記出力データと前記他のデータ処理装置の出力データを入力として変換後演算型Bの演算を行ったときの結果が同じであることを保証し、
前記データ処理装置は、前記秘密データ、前記出力データ、前記変換前演算型Aと前記変換後演算型Bの組み合わせを指定する演算変換方式型からなるデータセットをそれぞれの交渉秘密情報として記憶する交渉秘密情報記憶手段をさらに備え、
前記演算処理手段が、新たな秘密データに対して、前記交渉秘密情報記憶手段に記憶されている前記交渉秘密情報を用いてべき乗演算によらず加減乗除演算により、新たな出力データを計算する、
ことを特徴とする秘匿演算変換システム。
【請求項2】
前記交渉秘密情報記憶手段が、前記新たな秘密データと前記交渉秘密情報を用いて得られた前記新たな出力データを新たな交渉秘密情報として記憶する、請求項
1に記載の秘匿演算経変換システム。
【請求項3】
前記演算処理手段は、前記変換前演算型Aが加算であり前記変換後演算型Bが乗算である演算処理と、前記変換前演算型Aが乗算であり前記変換後演算型Bが加算である演算処理とを組み合わせて、底とべき指数の両方を秘密データとし前記変換前演算型Aがべき乗算であり前記変換後演算型Bが乗算または加算である演算変換処理を行う、請求項
1または2に記載の秘匿演算変換システム。
【請求項4】
2以上のデータ処理装置で構成されるシステムにおける前記データ処理装置が、それぞれの秘密データを入力として、他の前記データ処理装置と連携して、それぞれの出力データを秘匿に計算する演算処理ステップを有し、
前記演算処理ステップは、前記秘密データと前記他のデータ処理装置の秘密データを入力として変換前演算型Aの演算を行ったときの結果と前記出力データと前記他のデータ処理装置の出力データを入力として変換後演算型Bの演算を行ったときの結果が同じ値であることを保証し、
前記データ処理装置が、前記秘密データ、前記出力データ、前記変換前演算型Aと前記変換後演算型Bの組み合わせを指定する演算変換方式型からなるデータセットをそれぞれの交渉秘密情報として記憶し、
前記データ処理装置が、新たな秘密データに対して、前記記憶されている前記交渉秘密情報を用いてべき乗演算によらず加減乗除演算により、新たな出力データを計算する、
ことを特徴とする秘匿演算変換方法。
【請求項5】
2以上のデータ処理装置で構成されるシステムにおける前記データ処理装置に、それぞれの秘密データを入力として、他の前記データ処理装置と連携して、それぞれの出力データを秘匿に計算する演算処理ステップを実行させるプログラムであって、
前記演算処理ステップは、前記秘密データと前記他のデータ処理装置の秘密データを入力として変換前演算型Aの演算を行ったときの結果と前記出力データと前記他のデータ処理装置の出力データを入力として変換後演算型Bの演算を行ったときの結果が同じ値であることを保証し、
前記データ処理装置が、前記秘密データ、前記出力データ、前記変換前演算型Aと前記変換後演算型Bの組み合わせを指定する演算変換方式型からなるデータセットをそれぞれの交渉秘密情報として記憶し、
前記データ処理装置が、新たな秘密データに対して、前記記憶されている前記交渉秘密情報を用いてべき乗演算によらず加減乗除演算により、新たな出力データを秘匿に計算するように、前記データ処理装置を動作させる、
ことを特徴とする秘匿演算変換プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は複数の機関がそれぞれ保持している秘密データを入力として演算Aを行ったときの結果と同じ結果を得ることができる別の演算Bに対する複数の入力を秘匿に計算し、各々の機関に秘密出力として返す秘匿演算変換システム、秘匿演算変換方法、および、秘匿演算変換プログラムに関する。
【背景技術】
【0002】
複数の機関がもつデータを入力として入力データの内容を秘匿したまま所定の演算を行い、得られた演算結果を利用する方法が知られている。例えば、2つの機関がもつデータをn個のデータブロックからなるデータベクトルX=(X1,X2,…,Xn)、Y=(Y1,Y2,…,Yn)とし、各ベクトル位置i (1≦i≦n) のベクトル要素どうしを乗算した結果XiYiを全て加算した結果Σ1≦i≦n XiYi(以下、内積値と略記することがある。)を求めることで相関ルールを導出する方法が非特許文献1に示されている。
【0003】
以下、
図26を用いて、非特許文献1に示された、オンラインショップP1(以下、機関P1と略記することがある。)とオンラインショップP2(以下、機関P2と略記することがある。)が顧客の物品購入の相関関係を顧客とのプライバシー同意契約に違反することなく、導出する方法について説明する。
【0004】
最初に機関P1と機関P2は
図2と
図3に示すような「クレジットカード番号表」を用意し、同じクレジット番号の顧客の利用金額を同じ位置に記録する2つのベクトル、「ベクトルX」と「ベクトルY」を用意する。
以降ではベクトルX、Yの長さnをベクトル次数と呼ぶ。
【0005】
上記のベクトルXとベクトルYを入力とした内積値がある閾値より大きい場合には機関P1と機関P2の顧客の購買行動には正の相関関係があると判断することができ、顧客の嗜好性が似ている可能性が高く、共同で商品開発することで、より顧客のニーズにあう商品を開発できる可能性がある。
【0006】
このとき、機関P1と機関P2がそれぞれ、多くの人数の購買情報からなるベクトルX、ベクトルYを作成した上で、ベクトルX、ベクトルYの内容を相互に明らかにせず、各々が内積値のみを計算できれば顧客と機関間にあるプライバシー合意契約に抵触しない。
【0007】
図26において、機関P1と機関P2の双方が共通情報として、n×nの係数行列Cと、ベクトルX及びベクトルYをベクトル次数がnより小さいr個のベクトルに分割する分割個数rを予め知っているとする。機関P1ではベクトルXの各要素Xi(i=1,2,・・・,n)に係数行列Cと機関P1がランダムに定めたn個の乱数Ri(i=1,2,・・・,n)を用いて計算した値を加算することによりベクトルXを秘匿した形に変形したベクトルCA=(CA
1,CA
2,…,CA
n)、CAi=Xi+C
i,1×R
1+C
i,2×R
2+・・・+C
i,n×R
nを機関P2に渡す。機関P2では、Cの転置行列であるC
T を用いて、C
TYなるn次元のベクトルに同じ値がn/r個ずつ連続するn次元のベクトル<R
1’, R
1’,…,R
1’, R
2’,…,R
2’,…,R
r’,…R
r’>を加算して作成したベクトルCB=(CB
1,CB
2,…,CB
n)、CB
i=C
1,i×Y
1+C
2,i×Y
2+…+C
n,i×Y
n+R
1’、・・・、CB
n/r=C
1,n/r×Y
1+C
2,n/r×Y
2+…+C
n,n/r×Y
n+R
1’、 CB
n/r+1=C
1,(n/r+1)×Y
1+C
2,(n/r+1)×Y
2+…+C
n,(n/r+1)×Y
n+R
2’、・・・、CB
2n/r=C
1,2n/r×Y
1+C
2,2n/r×Y
2+…+C
n,2n/r×Y
n+R
2’、・・・, CB
(r-1)n/r+1=C
1,
((r-1)n/r+1)×Y
1+C
2, ((r-1)n/r+1)×Y
2+…+C
n, ((r-1)n/r+1)×Y
n+R
r’、・・・、CB
n=C
1,n×Y
1+C
2,n×Y
2+…+C
n,n×Y
n+R
r’、を求めて、機関P1に送信する。また、機関P2は、ベクトルCAと自身のもつベクトルYの内積CA・Yを計算する。機関P1は自己の乱数ベクトルR=<R
1,R
2,…,R
n>と受信したベクトルCBの内積R・CBを計算し、マイナス1を乗算してΦ=-R・CBを計算する。次に、機関P1は自己の乱数ベクトルRをn/r個ずつ加算し、r次元のベクトルDA=(DA
1、DA
2、・・・、DA
r) 、DA
1=R
1+R
2+・・・+R
n/r、DA
2=R
n/r+1+Rn/r+
2+・・・+R
2n/r、・・・、DA
r=R
(r-1)n/r+1+R
(r-1)n/r+
2+・・・+R
nを計算し、機関P2へ送信する。機関P2は先に計算した内積値CA・Yと自己のもつr次元のベクトルR’=<R
1’,R
2’,…,R
r’>と機関P1より受信したr次元ベクトルDAとの内積の値DA・R’を加算することで値Ψ=CA・Y+DA・R’を計算する。機関P1と機関P2は値ΦとΨを交換してΦ+Ψを求めることで内積値を求めることができる。
【0008】
上記の手法では複数の秘匿データの加算後の結果のみを知らせることで加算前の値を復元できない状態に保ち、各ベクトルの値の安全性を保証できるように見えるが、問題がある。すなわち、機関P1は機関P2より受信した情報を用いて、ベクトルYに関して成り立つ情報を得ることができ、少なくともベクトルYに関して成り立つ半分の情報を明らかにできてしまう。例えば、機関P1は機関P2がCB
1からCB
n/rの情報を作成するのに同じR
1’という乱数を利用していることを知っている。そこで、CB
1-CB
2=(C
1,1-C
2,1)Y
1+(C
1,2-C
2,2)Y
2+・・・+(C
1,n-C
2,n)Y
n の関係式が成り立つことが分かる。このような異なるn個の関係式があれば、機関P1はベクトルYの情報全てを明らかにできてしまう。
図26の方法では、機関P1は少なくとのn/2個の関係式を作成することができる。
また、ベクトルXを機関P1が繰り返し用いた場合、機関P2がベクトルXに関する情報を引き出すことができるという安全上の問題がある。また、n/r回のn次元のベクトルの送受信を必要としており、安全性を向上させようとすると大量の情報を送受信することとなり効率上の問題もある。
【0009】
上記の問題を解決するため、非特許文献2では公開鍵暗号方式を用いた秘匿計算プロトコルが提案されている。この方法では1つの平文を複数の異なる暗号文に暗号化可能な確率暗号で、かつ、暗号文に対し演算を実施することで平文に対する演算も実行できる準同型性をもつ確率公開鍵暗号方式を用いている。
【0010】
ここで、公開鍵暗号方式とは暗号化するときに使う鍵と復号するときに使う鍵が異なるため、暗号化に利用する鍵を公開することで、誰でも暗号文を作成できるが、復号は復号するための鍵(秘密鍵)を知っている人以外には困難となる非対称な鍵を用いる暗号方式である。また、確率暗号とは、同一の平文を同一の鍵で暗号化すると必ず同一の暗号文を生成するRSA暗号方式のような確定暗号とは異なり、暗号化ごとに異なる乱数を利用可能なため、同じ平文であっても鍵の種類と同程度の数の暗号文に変換可能な暗号方式である。上記の性質を満たす公開鍵暗号方式の1つにElGamal暗号方式(以下、ElGamal方式と略記することがある。)がある。確率公開鍵暗号方式を使った秘匿ベクトル内積計算方法では、暗号文に対して、演算を適用することで平文に演算を施せるという準同型性を利用し、かつ、確率的に暗号文を変化させることで、暗号文に対してどのような計算が行われたかを特定することを困難にしながら、平文に対して演算を施して、秘匿ベクトルの内積を計算する。
【0011】
以下、先の例と同じように機関P1と機関P2は
図2、
図3に示すような各顧客の利用金額を秘密データX
i,Y
i(i=1,2,・・・,n)として保持しているとする。
機関P1は自分の公開鍵K=g
S (mod P) (ここで、gは原始元、Pは素数、Sは秘密鍵であり、以降、暗号文の計算では (mod P)を省略することがある。)を公開した上で、各顧客の利用金額X
iの暗号値(2
X
iK
r
i, g
r
i) (ここで、r
iは乱数とする)からなる暗号文ベクトルを作成し、機関P2に送信する。
【0012】
機関P1より暗号文ベクトルを受け取った機関P2は暗号ベクトルの各i番目の暗号文の1項目、2項目ともにベクトル要素Yiを指数乗したのち、各暗号文の1項目の要素をすべて乗算し、2項目の要素同志を全て乗算した1つの暗号文(2X
1
Y
1
+X
2
Y
2
+・・・+X
n
Y
n Kr
1
Y
1
+r
2
Y
2
+・・・+r
N
Y
N, gr
1
Y
1
+r
2
Y
2
+・・・+r
n
Y
n)を作成し、最後に乱数Ψとrで撹乱した暗号文(2X
1
Y
1
+X
2
Y
2
+・・・+X
N
Y
N
+Ψ Kr
1
Y
1
+r
2
Y
2
+・・・+r
N
Y
N
+r, gr
1
Y
1
+r
2
Y
2
+・・・+r
n
Y
n
+r)に変換して、変換後の暗号文を機関P1へ送信する。
暗号文を受け取った機関P1は暗号文2項組を自身の秘密鍵を用いて復号し、得られた平文の2の対数を求めることにより値Φ=Σ1≦i≦n XiYi + Rを得る。値Φと値Ψを機関P1、機関P2で交換することにより、互いに内積値を求めることができる。
【0013】
しかしながら、非特許文献2の方法にも問題がある。機関P1はベクトル情報ごとにデータを暗号化する必要があり、その暗号化は指数乗の計算のような大きな計算コストを必要とする。また、機関P2もベクトル次数個の自己のもつ情報を乗算するために、暗号文を指数乗するという大きな計算コストを費やし、入力ベクトルの値に依存した大きなコストの計算が必要となる。さらに、乗算を指数乗にて計算しているため、値Φの上限はlog2Pとなり、例えば、Pが2048ビットの素数であるとすると値Φの上限は2048ビットとなり、正確な結果を得られる範囲が小さな値域の計算に限られる。
【0014】
近年、非特許文献3の準同型性公開鍵暗号の一種であるPaillier暗号方式(以下、Paillier方式と略記することがある。)を用いて、秘匿計算を行う方法が一般的に用いられている。
Paillier方式では公開鍵を提供する公開者が秘密鍵となる2つの大きな素数p、qを選定し、N=p×qを満たすNと乱数kを選び、g=(1+kN)modN2を満たすgを求めることにより公開鍵Pk=(N,g)を作成する。
平文mを暗号化するには乱数rを用いて、C=gmrNmodNを計算することで暗号文Cを作成する。一方、復号はm=(L(CλmodN2)/L(gλmodN2))modNを計算することで実行される。ここで、関数L(U)はL(U)=(U-1)/Nと定義され、λはp-1とq-1の最小公倍数lcm(p-1、q-1)と等しいとする。λはユークリッドの互除法により効率よく求めることができる。
【0015】
Paillier方式で平文m1を乱数r1、公開鍵Pkにより暗号化し暗号文C1を作成することをC1=EPk(m1、r1)と示すとする。暗号文C1を用いて、C2=C1×gm2 modNを計算するとC2はC2=gm1+m2r1
N modN=EPk(m1+m2、r1)となり、加法準同型性を満たすことにより、暗号文C1を利用してm1にm2を加算した暗号文C2を作成できる。
同様に、暗号文C1を用いて、C3=C1
m2 modNを計算すると、C3はC3=gm1m2(r1
m2)N mod N=EPk(m1m2、r1
m2)を満たし、乗法準同型性を満たすことより、C1を利用してm1にm2を乗算した暗号文C3を作成できる。
【0016】
上記のようにPaillier方式ではElGamal方式と同様に、暗号文に乗算、累乗演算を適用することにより秘匿計算を実行することができる。暗号化においては乱数rを用いた計算rN、復号においてはL(gλ modN2)は平文が決定する以前に計算可能であるため、暗号化、復号ともに平文、暗号文に依存したべき乗計算1回を必要とし、復号では追加で除算を必要とする。指数部に平文mを表現するが、Paillier方式ではElGamal方式とは異なり、mがとり得る値域はNの定数倍と大きな範囲である。
【0017】
しかしながら、非特許文献3の方法にも問題がある。公開鍵暗号方式に基づくこの方法では、乗算を行う場合には入力決定後にべき乗演算を必要とし、さらにビット長の大きな除算を必要とすることより秘匿計算を実現するためには大きな計算コストを必要とする。
【0018】
さらに、非特許文献2、非特許文献3の方法のような公開鍵暗号方式を用いる方法はそれぞれの仮定に基づいた相対的な機密性の保証しか行われていない。すなわち、非特許文献2で提案されている方法に用いられる可能性が高いElGamal方式はDiffie-Hellman問題と呼ばれる難しいと思われている問題が効率良く解けない限り安全だと証明されているが、Diffie-Hellman問題が本当に効率良く解くことができないかは現在までに証明されていない。同様に、非特許文献3で提案されている方法も、合成数剰余問題と呼ばれる難しいと思われている問題が効率良く解けない限り安全だと証明されているが、合成数剰余問題が効率良く解くことができないことは証明されていない。現在の計算機環境で合成数剰余問題の安全性を保証するには4096ビット長の鍵を用意する必要があり、将来的にも必要となる鍵長は指数関数的に大きくなり、計算コストが増大する可能性がある。また、量子コンピュータ等の新世代の計算機が開発された場合には、これらの仮定は維持できなくなると予測されている。
【先行技術文献】
【非特許文献】
【0019】
【文献】Jaideep Vaidya and Chris Clifton, “Privacy preserving association rule mining in vertically partitioned data,” Proceeding of the 8th ACM SIGMOD International Conference on Knowledge Discovery and Data Mining (KDD2002), pp.639-644, 2002.
【文献】Bart Goethals, Sven Laur, Helger Lipman and Taneli Mielikainen, “On privacy scalar product computation for privacy-preserving data mining,” Proceeding of the 7th Annual Information Security and Cryptology (ICISC2004), pp.104-120, 2004.
【文献】Pascal Paillier, “Public-key cryptosystems based on composite degree residuosity classes,” Proceeding of International Conference on the Theory and Applications of Cryptographic Techniques (EURO CRYPT’99), pp.223-238, 1999.
【発明の概要】
【発明が解決しようとする課題】
【0020】
本発明はこれらの背景技術の問題点に鑑みてなされたものであり、従来の準同型性公開鍵暗号を利用した秘匿計算とは機密性の根拠が異なり、ある秘匿演算を別の秘匿演算に変換することにより、双方が同意した意味のある秘密情報(以下、交渉秘密情報と記すことがある。)を公平に得ることを可能とする。さらに、得られた交渉秘密情報の機密性を根拠として、秘密データの機密性を完全に守りながら、交渉秘密情報と秘密データを用いた安価なコストの計算により秘匿計算を行うことができる秘匿演算変換システムおよび秘匿演算変換方法を提供することを目的とする。
【課題を解決するための手段】
【0021】
係る目的を解決するため、本発明の秘匿演算変換システムは、2以上のデータ処理装置で構成され、前記データ処理装置はそれぞれの秘密データを記憶する秘密データ記憶手段と、それぞれの出力データを記憶する出力データ記憶手段と、前記秘密データ、前記出力データ、前記秘密データに対して適用したい変換前演算型Aと前記出力データに対して適用したい変換後演算型Bの組み合わせを指定する演算変換方式型を交渉秘密情報として記憶する交渉秘密情報記憶手段と、前記秘密データを入力として、他の前記データ処理装置と連携して、前記出力データを秘匿に計算する演算処理手段と、を有し、
前記演算処理手段は、前記秘密データと他の前記データ処理装置が記憶する秘密データを入力として前記変換前演算型Aの演算を行ったときの結果と、前記出力データと前記他のデータ処理装置の出力データを入力として前記変換後演算型Bを行ったときの結果が同じであることを保証する、
ことを特徴とする。
【0022】
前記変換前演算型Aは加算であり、前記変換後演算型Bは乗算であるとしてもよい。
【0023】
前記変換前演算型Aは乗算であり、前記変換後演算型Bは加算であるとしてもよい。
【0024】
前記演算処理手段は、実際の演算処理に先だって、一部の演算処理を事前に実施することとしてもよい。
【0025】
前記演算処理手段は、前記秘密データと、当該演算処理に先だってなされた演算処理の結果として前記交渉秘密情報記憶部に記憶されている前記交渉秘密情報を用いて、出力データを計算することとしてもよい。
【0026】
前記交渉秘密情報記憶手段は、前記秘密データと前記交渉秘密情報を用いて得られた出力データを新たな交渉秘密情報として記憶することとしてもよい。
【0027】
前記演算処理手段は、前記変換前演算型Aが加算であり前記変換後演算型Bが乗算である演算処理と、前記変換前演算型Aが乗算であり前記変換後演算型Bが加算である演算処理とを組み合わせて、底とべき指数の両方を秘密データとし、前記変換前演算型Aがべき乗算であり前記変換後演算型Bが乗算または加算である演算変換処理を行うこととしてもよい。
【0028】
係る目的を解決するため、本発明の秘匿演算変換方法は、前記データ処理装置はそれぞれの秘密データを記憶する秘密データ記憶ステップと、それぞれの出力データを記憶する出力データ記憶ステップと、前記交渉秘密情報を記憶する交渉秘密情報記憶ステップと、前記秘密データを入力として、他の前記データ処理装置と連携して、前記演算変換方式型に従って、前記出力データを秘匿に計算する演算処理ステップを有し、
前記演算処理ステップは、前記秘密データと他のデータ処理装置の秘密データを入力として前記変換前演算型Aの演算を行った時の結果と前記出力データと他のデータ処理装置のもつ出力データを入力として前記変換後演算型Bの演算を行った時の結果が同じ値であることを保証する、
ことを特徴とする。
【0029】
前記変換前演算型Aは加算であり、前記変換後演算型Bは乗算であるとしてもよい。
【0030】
前記変換前演算型Aは乗算であり、前記変換後演算型Bは加算であるとしてもよい。
【0031】
前記演算処理ステップは、実際の演算処理に先だって、一部の演算処理を事前に実施することとしてもよい。
【0032】
前記演算処理ステップは、前記秘密データと、当該演算処理に先だってなされた演算処理の結果として前記交渉秘密情報記憶部に記憶されている前記交渉秘密情報を用いて、出力データを計算することとしてもよい。
【0033】
前記交渉秘密情報記憶ステップは、前記秘密データと前記交渉秘密情報を用いて得られた出力データを新たな交渉秘密情報として記憶することとしてもよい。
【0034】
前記演算処理ステップは、前記変換前演算型Aが加算であり前記変換後演算型Bが乗算である演算処理と、前記変換前演算型Aが乗算であり前記変換後演算型Bが加算である演算処理とを組み合わせて、底とべき指数の両方を秘密データとし、前記変換前演算型Aがべき乗算であり前記変換後演算型Bが乗算または加算である演算変換処理を行うこととしてもよい。
【0035】
係る目的を達成するため、本発明の秘匿演算変換プログラムは、他のコンピュータと連携してデータを処理するコンピュータによって使用されるプログラムであって、
前記データ処理装置はそれぞれの秘密データを記憶する秘密データ記憶ステップと、それぞれの出力データを記憶する出力データ記憶ステップと、前記交渉秘密情報を記憶する交渉秘密情報記憶ステップと、前記秘密データを入力として、他の前記データ処理装置と連携して、演算変換方式型に従って、前記出力データを秘匿に計算する演算処理ステップを有し、
前記演算処理ステップは、前記秘密データと他のデータ処理装置の秘密データを入力として前記変換前演算型Aの演算を行った時の結果と前記出力データとたのデータ処理装置のもつ出力データを入力として前記変換後演算型Bの演算を行った時の結果が同じ値であることを保証する、
ことを特徴とする。
【0036】
前記変換前演算型Aは加算であり、前記変換後演算型Bは乗算であるとしてもよい。
【0037】
前記変換前演算型Aは乗算であり、前記変換後演算型Bは加算であるとしてもよい。
【0038】
前記演算処理ステップは、実際の演算処理に先だって、一部の演算処理を事前に実施することとしてもよい。
【0039】
前記演算処理ステップは、前記秘密データと、当該演算処理に先だってなされた演算処理の結果として前記交渉秘密情報記憶部に記憶されている前記交渉秘密情報を用いて、出力データを計算することとしてもよい。
【0040】
前記交渉秘密情報記憶ステップは、前記秘密データと前記交渉秘密情報を用いて得られた出力データを新たな交渉秘密情報として記憶することとしてもよい。
【0041】
前記演算処理ステップは、前記変換前演算型Aが加算であり前記変換後演算型Bが乗算である演算処理と、前記変換前演算型Aが乗算であり前記変換後演算型Bが加算である演算処理とを組み合わせて、底とべき指数の両方を秘密データとし、前記変換前演算型Aがべき乗算であり前記変換後演算型Bが乗算または加算である演算変換処理を行うこととしてもよい。
【発明の効果】
【0042】
本発明によれば、双方が同意した関係を満たす交渉秘密情報を公平に得ることを可能とする。さらに、得られた交渉秘密情報の機密性を根拠として、秘密データの機密性を完全に守りながら、秘密データと交渉秘密情報を用いた加算・乗算等の安価なコストの計算により秘匿計算を行う秘匿演算交換システムを実現することができる。
【図面の簡単な説明】
【0043】
【
図1】本発明の秘匿演算変換システムの構成を示すブロック図である。
【
図2】複数の機関による事前の取り決めに基づいて決定されている顧客のカード番号の順序付けにより、機関P1がもつ顧客ごとの利用金額を列状に並べた表である。
【
図3】複数の機関による事前の取り決めに基づいて決定されている顧客のカード番号の順序付けにより、機関P2がもつ顧客ごとの利用金額を列状に並べた表である。
【
図4】本発明の秘匿演算変換システムの構成要素の機能を示す機能ブロック図である。
【
図5】「演算変換処理(交渉秘密情報無加算乗算変換処理)」の手順の概要を説明するための処理概要図である。
【
図6】ElGamal方式を利用した「演算変換処理(交渉秘密情報無加算乗算変換処理)」の手順の概要を説明する処理概要図である。
【
図7】Paillier方式を利用した「演算変換処理(交渉秘密情報無加算乗算変換処理)」の手順の概要を説明する処理概要図である。
【
図8】「演算変換処理(交渉秘密情報無乗算加算変換処理)」の手順の概要を説明するための処理概要図である。
【
図9】ElGamal方式を利用した「演算変換処理(交渉秘密情報無乗算加算変換処理)」の手順の概要を説明する処理概要図である。
【
図10】Paillier方式を利用した「演算変換処理(交渉秘密情報無乗算加算変換処理)」の手順の概要を説明する処理概要図である。
【
図11】「演算変換処理(交渉秘密情報有変換処理)」の手順の概要を説明するための処理概略図である。
【
図12】「秘匿演算変換処理」の手順を説明するためのフローチャートである。
【
図13】「交渉秘密情報利用指定処理」の手順を説明するためのフローチャートである。
【
図14】「交渉秘密情報有演算変換処理」の手順を説明するためのフローチャートである。
【
図15】「交渉秘密情報有乗算加算変換処理」の手順を説明する処理概要図である。
【
図16】「交渉秘密情報有加算乗算変換処理」の手順を説明する処理概要図である。
【
図17】「交渉秘密情報無演算変換処理」の手順を説明するためのフローチャートである。
【
図18】「交渉秘密情報無乗算加算変換処理」で実施する演算方式の選定手順を説明するためのフローチャートである。
【
図19】「交渉秘密情報無加算乗算変換処理」で実施する演算方式の選定手順を説明するためのフローチャートである。
【
図20】「交渉秘密情報取得処理」の手順を説明するためのフローチャートである。
【
図21】「交渉秘密情報更新処理」の手順を説明するフローチャートである。
【
図22】
図13に示す「交渉秘密情報無演算変換処理」で実行される「二段階交渉秘密情報無加算乗算変換処理」の一例である入力前計算と分割を利用した処理を説明する処理概要図である。
【
図23】
図13に示す「交渉秘密情報無演算変換処理」で実行される「二段階交渉秘密情報無乗算加算変換処理」の一例である入力前計算と分割を利用した処理を説明する処理概要図である。
【
図24】「秘匿べき乗算加算演算変換処理(指数部乗算)」を説明する処理概要図である。
【
図25】「秘匿べき乗算加算演算変換処理(指数部加算)」を説明する処理概要図である。
【
図26】非特許文献1に示された秘匿内積計算方法の手順の概要を説明するための処理概念図である。
【発明を実施するための形態】
【0044】
(本発明の構成)
本発明の秘匿演算変換システムは、機関P1もしくは機関P2のもつ秘密データX、秘密データYについて、第三者の助けなしにある演算Aを秘密データXと秘密データYに対して適用したときと同じ結果を得ることができる別の演算Bに対する入力の組合せOutputX、OutputYを秘匿に計算することで、機関P1、機関P2の双方が同意した意味のある秘匿情報を公平に得るための情報交換システムである。以下、秘匿演算変換システムの基本構成について図面を参照しながら説明する。
【0045】
図1に示すように、本発明の秘匿演算変換システム1は、機関P1と機関P2それぞれに設置された2台のデータ処理装置100と、それらを接続する通信線200とで構成される。2台のデータ処理装置100は通信線200を通じて互いにデータを送受信することで連携して秘匿演算変換処理を実行する。
【0046】
データ処理装置100は、例えばPCサーバやメインフレームなどの中に構築され、制御部110、通信部120、記憶部130、操作部140、インタフェース部150、演算処理部160から構成される。
【0047】
制御部110はCPU(Central Processing Unit) などで構成され、データ処理装置100の各部を制御・統制する。すなわち、操作部140からの「秘匿演算変換処理開始信号」を受けて、前記演算Aと前記演算Bに対応して規定されている演算変換方式型(以下、Typeと略記することがある。)を指定し、記憶部130に予め格納されている演算処理に必要な情報を読み出して演算処理部160での演算処理を実行させ、必要に応じて演算処理部160での演算処理結果を記憶部130に格納する、秘匿演算変換に必要な情報を通信部120を介して相手機関に送出する、演算処理部160での演算結果をI/F部150を介して表示・出力する等の機能を担う。
【0048】
通信部120はLANコネクタや送受信処理用のプロセッサなどから構成され、制御部110からの制御によって、通信線200を通じて相手機関のデータ処理装置100との通信を行う。
【0049】
記憶部130はハードディスクやRAM(Random Access Memory)などの記憶装置から構成され、演算処理部160での演算処理に必要な、自己の秘密データ、演算変換処理方式データ等のデータが予め格納されており、必要に応じて演算処理部160での演算結果等も交渉秘密情報として格納する。
【0050】
ここで「秘密データ」とは「顧客情報」や「秘密ベクトル」などの非公開の情報をいう。また、「顧客情報」とは各機関を利用した顧客の情報であり、「秘密ベクトル」とは、複数の機関が共通して知っているIDによって、顧客情報を並び替え、ある機関が持っている秘密ベクトルの各ベクトル位置の情報を提供顧客と別の機関が持っている秘密ベクトルの同じベクトル位置の情報を提供した顧客が同一となるように、双方の機関で共通した認識を得て整列された情報とする。
【0051】
ここで「演算変換処理方式データ」とは、演算処理部160で実行される各種の秘匿演算処理方式を決定するためのデータであり、演算変換方式型Typeを指定する情報や交渉秘密情報利用有無を指定する情報等がある。
【0052】
また、「交渉秘密情報」とは演算処理部160で演算処理を行うことにより得られた、双方が同意して作成された秘密情報であり、機関P1、機関P2が秘密データX,秘密データYと出力データOutputX、OutputYを含む情報を、機関P1,機関P2双方が同じ索引Idを付けてそれぞれ記憶部130に記憶する秘密データSecretX[Id]、SecretY[Id]をいう。後に説明する「秘匿演算変換処理」では、記憶部130に記憶されている以前に作成された交渉秘密情報を利用して演算変換処理を行う場合もあるが、詳細は後述する。
【0053】
操作部140はデータ処理装置100の外面上に構成されている各種ボタンなどによって構成される。ユーザにより所定のボタンが押されると、制御部110に対し「秘匿演算変換処理開始通知」を送信する。秘匿演算変換処理開始通知は、秘匿演算変換処理を開始するためのトリガーとなる信号である。
【0054】
I/F部150は例えばUSB(Universal Serial Bus)コネクタやビデオ出力端子などから構成され、外部の装置(例えばPCやモニタなど)へ処理結果を送信する。
【0055】
(本発明の実施形態1)
以上、秘匿演算変換システム1の構成と各部の機能について説明したが、次に、
図4を用いて、本発明の実施形態1に係る演算処理部160での「秘匿演算変換処理」と「交渉秘密情報取得処理」の概要について説明する。
なお、簡略化の為、
図4では制御部110を割愛したが、各構成要素間の情報の授受、機関P1、機関P2間の送受信は、制御部110によって制御・統制されていることは勿論である。
【0056】
演算処理部160での「秘匿演算変換処理」は操作部140からの「秘匿演算変換処理開始通知」により開始される。
機関P1及び機関P2の秘匿演算変換処理部161は連携して、自己の秘密データと相手機関の秘密データに演算Aを適用して得られる結果と同じ結果を得られるような演算Bの入力の組OutputX、OutputYをそれぞれ秘匿に計算し、機関P1は自己の秘密出力データOutputXのみを、機関P2は自己の秘密データ出力OutputYのみを取得する。
【0057】
機関P1の交渉秘密情報取得処理部162は、秘匿演算変換処理部161で取得した秘密出力データOutputX、秘密データX,演算変換方式型Typeを明記する情報(例えば、Type=1なら乗算から加算への変換を、Type≠1なら加算から乗算への変換を示す情報)をObjectXとしてまとめる。
同様に、機関P2の交渉秘密情報取得処理部162も秘密出力データOutputY、秘密データY、演算変換方式型TypeをObjectYとしてまとめる。
さらに、機関P1及び機関P2は連携して、ObjectXとObjectYに付ける、両機関で同一の索引Idを決定し、交渉秘密情報SecretX[Id]として、それぞれの記憶部130に格納する。
以下、秘匿演算変換処理部161での演算変換処理に使用された秘密データX、秘密データYと交渉秘密情報取得処理部162で記憶部130に格納された秘密データX、秘密データYを弁別する目的で、交渉秘密情報として記憶部130に格納された秘密データX、秘密データYを、それぞれ、演算変換入力InputX、演算変換入力InputYと記すことがある。
また、機関P1、機関P2で求められた秘密出力データOutputX、秘密出力データOutputYと交渉秘密情報取得処理部162で記憶部130に格納された秘密出力データOutputX、秘密出力データOutputYを弁別する目的で、交渉秘密情報として記憶部130に格納された秘密出力データOutputX、秘密出力データOutputYを、それぞれ演算変換出力OutputX、演算変換出力OutputYと記すことがある。
【0058】
図5は秘匿演算変換処理部161での秘匿演算変換処理と交渉秘密情報取得処理部162での交渉秘密情報取得処理の一例を具体的に示したものであり、機関P1が保有する秘密データX、機関P2が保有する秘密データYについて、X+Yを求めるための演算Aを別の演算Bに変えて実施する手順を示している。
機関P1の秘匿演算変換処理部161は(式1)、(式2)で示される、自己の秘密データXを含んだ値CA
1,CA
2,CA
3,DA
1,DA
2,DA
3を計算して機関P2に送信する。
(CA
1、CA
2、CA
3)=(α
1KA
1、α
3KA
1、g
γ1) (1)
(DA
1、DA
2、DA
3)=(α
2KA
2、α
4KA
2、g
γ2) (2)
ここに、α
1、α
2、α
3、α
4 は秘密データXをX = X
1/X
2 と表した時、X
1=α
1+α
2、X
2 = α
3+α
4の関係を満たす機関P1のみが知る乱数、KA
1,KA
2は機関P1及び機関P2が知る公開鍵Z(=g
x)と原始元g、機関P1のみが知る乱数γ
1、γ
2とを用いて、KA
1=Z
γ1、KA
2=Z
γ2と表せる値、xは機関P1の秘密鍵であり、予め機関P1の記憶部130に格納されている。
機関P2の秘匿演算変換処理部161は、機関P1からのCA
1、CA
2、CA
3、DA
1、DA
2、DA
3を受信して、(式3)、(式4)で示される、予め機関P2の記憶部130に格納されている秘密データY、自己の乱数Ψ、λ
1、λ
2、λ
3、λ
4、λ
5、λ
6、λ
7、λ
8、を含んだ値CB
1、CB
2、CB
3、CB
4、CB
5、CB
6、CB
7、CB
8、DB
1、DB
2、DB
3、DB
4、DB
5、DB
6、DB
7、DB
8を計算して機関P1に送信する。
(CB
1、CB
2、CB
3、CB
4、CB
5、CB
6、CB
7、CB
8)
=(θ
1Z
λ1、θ
2Z
λ2、β
1Z
λ3、θ
3Z
λ4、β
2Z
λ5、β
3Z
λ6、θ
4Z
λ7、β
4Z
λ8) (3)
(DB
1、DB
2、DB
3、DB
4、DB
5、DB
6、DB
7、DB
8)
=(g
λ1DA
3、g
λ2DA
3、g
λ3CA
3、g
λ4DA
3、g
λ5CA
3、g
λ6CA
3、g
λ7DA
3、g
λ8CA
3、)
(4)
ここに、θ
1、θ
2、θ
3、θ
4、β
1、β
2、β
3、β
4は、秘密データYをY = Y
2/Y
1と表した時CA
1Y
1+CA
2Y
2=β
1+β
2+β
3+β
4、DA
1Y
1+DA
2Y
2=θ
1+θ
2+θ
3+θ
4満たす値である。
機関P1では、機関P2からのデータCB
i、DB
iを受信して、(式5)で示される値OutputXを求める。
OutputX = Σ
1≦i≦8 CB
iDB
i
-x/X
2
(=(Σ
1≦i≦4β
iCA
3
-1+Σ
1≦i≦4θ
iDA
3
-1)/X
2))
(=(ΓB
1CA
3
-1+ΓB
2DA
3
-1 )/X
2))
(=((α
1Y1+α
3Y2)+ (α
2Y1+α
4Y2))/X
2))
(=((α
1+α
2) Y1+(α
3+α
4) Y2))/X
2))
≡ (X
1Y
1+X
2Y
2)/X
2 (5)
機関P2では、(式6)で示される値OutputYを求める。
OutputY = 1/Y
1 (6)
(式5)、(式6)から判るように、それぞれの機関で計算したOutputX、OutputYを交換し合うことで、(式7)によって、秘密データXと秘密データYを加算した値X+Yが求まる。
OutputX×OutputY = (X
1Y
1+X
2Y
2)/(X
2Y
1)
(=X
1/X
2+Y
2/Y
1)
= X+Y (7)
(式7)から判るように、
図5に示した演算変換処理では、機関P1、機関P2が保持している秘密データX、秘密データYを入力として演算A(X+Y)を行ったときと同じ結果を得ることができる演算B(OutputX×OutputY)に対する複数の入力OutputX、OutputYを秘匿に計算することができる。
以下、(式1)から(式7)に示した演算変換方式を分割加算乗算演算変換法と略記することがある。
図5は、簡単のため、機関P1の秘密データXおよび機関P2の秘密データYが1次元の場合(XあるいはYのデータ数が1つの場合)を示したが、秘密データ数がnの場合は、CA
1i,CA
2i, CA
3i, DA
1i,DA
2i,DA
3i,CB
1i,CB
2i,CB
3i,CB
4i,CB
5i,CB
6i,CB
7i,CB
8i,
DB
1i,DB
2i,DB
3i,DB
4i,DB
5i,DB
6i,DB
7i,DB
8i(i=1,2,3,・・・n)について同様の計算と情報の交換を行うことでΣ
1≦i≦n( X
i+Y
i)を求めることができる。
機関P1の交渉秘密情報取得処理部162では、演算変換入力InputX、演算変換出力OutputX、Type(
図5では演算Aである加算を演算Bである乗算に変換したという情報)を含むObjectXを求め、交渉秘密情報SecretX[Id]として設定して、記憶部130に格納する。
同様に、機関P2の交渉秘密情報取得処理部162では、演算変換入力InputY、演算変換出力OutputY、演算変換処理の型Type(
図5では演算Aである加算を演算Bである乗算に変換したという情報)を含むObjectYを求め、交渉秘密情報SecretY[Id]として設定して、記憶部130に格納する。
なお、交渉秘密情報SecretX[Id]と交渉秘密情報SecretY[Id]におけるIdは同一の番号としておく。
【0059】
図5では機関P1、機関P2が保持している秘密データX、秘密データYを入力として演算A(X+Y)を行ったときと同じ結果を得ることができる演算B(OutputX×OutputY)に対する複数の入力OutputX、OutputYを秘匿に計算することができることを示した。
同様の演算変換は良く知られた、秘匿性に優れるElGamal方式を利用することでも実現可能であり、
図6を用いて説明する。
図6において、機関P1の秘匿演算変換処理部161は(式8)、(式9)で示される、自己の秘密データXを含んだ値CA
1、CA
2を計算して機関P2に送信する。
CA
1 = 2
XPK
γ1 (8)
CA
2 = g
γ1 (9)
ここに、gは機関P1、機関P2が共有する原始元、PK(=g
SK)は公開鍵、SKは機関P1の秘密鍵、γ1は機関P1のみが知る乱数であり、予め機関P1の記憶部130に格納されている。
機関P2の秘匿演算変換処理部161は機関P1からのCA
1、CA
2を受信して(式10)、(式11)で示される自己の秘密データYを含んだ値CB
1、CB
2を計算して機関P1に送る。
CB
1=(2
YCA
1)
1/ΨPK
γ2 (10)
CB
2 =(CA
2)
1/Ψg
γ2 (11)
ここに、Ψ、γ2は機関P2のみが知る乱数であり、予め、機関P2の記憶部130に格納されている。
機関P1では、機関P2からのデータCB
1、CB
2を受信して、(式12)で示される値OutputXを求める。
OutputX = log
2(CB
1/(CB
2)
SK)
(= log
2(2
(X+Y)/Ψ
)PK
(γ1+γ2)/Ψ/(g
(γ1+γ2)/Ψ)
SK)
(= Log
2(2(
X+Y)/Ψ) )
(=(X+Y)/Ψ)
≡ Φ (12)
機関P2では、(式13)で示される値OutputYを求める。
OutputY=Ψ (13)
(式12)、(式13)から判るように、機関P1で計算したOutputXと機関P2のOutputYを交換し合うことで、(式14)によって、秘密データXと秘密データYを加算した値X+Yが求まる。
OutputX×OutputY = Φ×Ψ
= X+Y (14)
(式14)から判るように、
図6に示した演算変換処理では、機関P1、機関P2が保持している秘密データX、秘密データYを入力として演算A(X+Y)を行ったときと同じ結果を得ることができる演算B(OutputX×OutputY)に対する複数の入力OutputX、OutputYを秘匿に計算することができる。
以下、(式8)から(式14)に示した演算変換方式をElGamal加算乗算演算変換法と略記することがある。
図6は、簡単のため、機関P1の秘密データXおよび機関P2の秘密データYが1次元の場合(XあるいはYのデータ数が1つの場合)を示したが、秘密データ数がnの場合は、CA
1i,CA
2i,CB
1i,CB
2i(i=1,2,3,・・・n)について同様の計算と情報の交換を行うことで
Σ
1≦i≦n( X
i+Y
i)を求めることができる。
機関P1の交渉秘密情報取得処理部162では、演算変換入力InputX、演算変換出力OutputX、Type(
図6では演算Aである加算を演算Bである乗算に変換したという情報)を含むObjectXを求め、交渉秘密情報SecretX[Id]として設定して、記憶部130に格納する。
同様に、機関P2の交渉秘密情報取得処理部162では、演算変換入力InputY、演算変換出力OutputY、Type(
図6では演算Aである加算を演算Bである乗算に変換したという情報)を含むObjectYを求め、交渉秘密情報SecretY[Id]として設定して、記憶部130に格納する。
なお、交渉秘密情報SecretX[Id]と交渉秘密情報SecretY[Id]におけるIdは同一の番号としておく。
【0060】
図6では機関P1、機関P2が保持している秘密データX、秘密データYを入力として演算A(X+Y)を行ったときと同じ結果を得ることができる演算B(OutputX×OutputY)に対する複数の入力OutputX、OutputYを秘匿性に優れるElGamal方式を用いて計算できることを示した。
同様の演算変換は良く知られた、秘匿性に優れるPaillier方式を利用することでも実現可能であり、
図7を用いて説明する。
図7において、機関P1の秘匿演算変換処理部161は(式15)で示される、自己の秘密データXを含んだ値CA
1を計算して機関P2に送信する。
CA
1 = g
Xγ1
NmodN (15)
ここに、γ1は機関P1のみが知る乱数、N、gは、N=p×q、g=(1+kN)modN
2の関係を満たす公開鍵であり、予め、機関P1及び機関P2の記憶部130に格納されている。
なお、p,qは大きな素数であり、秘密鍵として、予め機関P1の記憶部130に格納されており、kは機関P1のみが知る乱数である。
機関P2の秘匿演算変換処理部161は機関P1からのCA
1を受信して(式16)で示される自己の秘密データYを含んだ値CB
1を計算して機関P1に送る。
CB
1 = (g
YCA
1)
1/ΨmodN (16)
ここに、Ψは機関P2のみが知る乱数であり、予め、機関P2の記憶部130に格納されている。
機関P1では、機関P2からのデータCB
1を受信して、(式17)で示される値OutputXを求める。
OutputX = (L(CB
1modN
2/L(g
λmodN
2))modN
(= (X+Y)/Ψ)
≡ Φ (17)
ここに、λは機関P1のみが知る秘密鍵であり、大きな素数p,qについて(p-1)と(q-1)の最小公倍数であり、予め、機関P1の記憶部130に格納されている。
また、L(U)は、L(U)=(U-1)/Nを満たす関数である。
機関P2では、(式18)で示される値OutputYを求める。
OutputY=Ψ (18)
(式17)、(式18)から判るように、機関P1で計算したOutputXと機関P2のOutputYを交換し合うことで、(式19)によって、秘密データXと秘密データYを加算した値X+Yが求まる。
OutputX×OutputY = Φ×Ψ
= X+Y (19)
(式19)から判るように、
図7に示した演算変換処理では、機関P1、機関P2が保持している秘密データX、秘密データYを入力として演算A(X+Y)を行ったときと同じ結果を得ることができる演算B(OutputX×OutputY)に対する複数の入力OutputX、OutputYを秘匿に計算することができる。
以下、(式15)から(式19)に示した演算変換方式をPaillier加算乗算演算変換法と略記することがある。
図7は、簡単のため、機関P1の秘密データXおよび機関P2の秘密データYが1次元の場合(XあるいはYのデータ数が1つの場合)を示したが、秘密データ数がnの場合は、CA
1i、CB
1i(i=1,2,3,・・・n)について同様の計算と情報の交換を行うことでΣ
1≦i≦n( X
i+Y
i)を求めることができる。
機関P1の交渉秘密情報取得処理部162では、演算変換入力InputX、演算変換出力OutputX、Type(
図7では演算Aである加算を演算Bである乗算に変換したという情報)を含むObjectXを求め、交渉秘密情報SecretX[Id]として設定して、記憶部130に格納する。
同様に、機関P2の交渉秘密情報取得処理部162では、演算変換入力InputY、演算変換出力OutputY、Type(
図7では演算Aである加算を演算Bである乗算に変換したという情報)を含むObjectYを求め、交渉秘密情報SecretY[Id]として設定して、記憶部130に格納する。
なお、交渉秘密情報SecretX[Id]と交渉秘密情報SecretY[Id]におけるIdは同一の番号としておく。
【0061】
以上、分割加算乗算演算変換法、ElGamal加算乗算演算変換法、Paillier加算乗算演算変換法による、機関P1、機関P2が保持している秘密データX、秘密データYを入力として演算A(X+Y)を行ったときと同じ結果を得ることができる演算B(OutputX×OutputY)に対する複数の入力OutputX、OutputYを秘匿に計算する方法について説明したが、これらの方式を組み合わせた演算変換の実行も可能であることは勿論である。
すなわち、例えば、秘密データX1と秘密データY1に関する演算時にはPaillier加算乗算演算変換法による演算変換を行い、秘密データX2,X3,X4,・・・と、秘密データY2,Y3,Y4,・・・に関する演算時には、分割加算乗算演算変換法による演算変換を行う等の任意の組み合わせも可能である。
【0062】
図5では機関P1、機関P2が保持している秘密データX、秘密データYを入力として演算A(X+Y)を行ったときと同じ結果を得ることができる演算B(OutputX×OutputY)に対する複数の入力OutputX、OutputYを秘匿に計算することができることを示した。
次に、
図8によって、機関P1、機関P2が保持している秘密データX、秘密データYを入力として演算A(X×Y)を行ったときと同じ結果を得ることができる演算B(OutputX+OutputY)に対する複数の入力OutputX、OutputYを秘匿に計算することができることを示す。
【0063】
機関P1の秘匿演算変換処理部161は(式20)、(式21)で示される、自己の秘密データXを含んだ値CA
1、CA
2、CA
3、DA
1、DA
2、DA
3を計算して機関P2に送信する。
(CA
1、CA
2、CA
3)=(α
1KA
1、α
3KA
1、g
γ1) (20)
(DA
1、DA
2、DA
3)=(α
2KA
2、α
4KA
2、g
γ2) (21)
ここに、α
1、α
2はX=α
1+α
2の関係を満たす機関P1のみが知る乱数、α
3、α
4はα
3+α
4=1の関係を満たす機関P1のみが知る乱数、KA
1,KA
2は機関P1及び機関P2が知る公開鍵Z(=g
x)と原始元g、機関P1のみが知る乱数γ
1、γ
2とを用いて、KA
1=Z
γ1、KA
2=Z
γ2と表せる値、xは機関P1の秘密鍵であり、予め機関P1の記憶部130に格納されている。
機関P2の秘匿演算変換処理部161は、機関P1からのCA
1、CA
2、CA
3、DA
1、DA
2、DA
3を受信して、(式22)、(式23)で示される、予め機関P2の記憶部130に格納されている秘密データY、自己の乱数Ψ、λ
1、λ
2、λ
3、λ
4、λ
5、λ
6、λ
7、λ
8、を含んだ値CB
1,CB
2,CB
3,CB
4,CB
5,CB
6,CB
7,CB
8,DB
1,DB
2,DB
3,DB
4,DB
5,DB
6,DB
7,DB
8を計算して機関P1に送信する。
(CB
1、CB
2、CB
3、CB
4、CB
5、CB
6、CB
7、CB
8)
=(θ
1Z
λ1、θ
2Z
λ2、β
1Z
λ3、θ
3Z
λ4、β
2Z
λ5、β
3Z
λ6、θ
4Z
λ7、β
4Z
λ8) (22)
(DB
1、DB
2、DB
3、DB
4、DB
5、DB
6、DB
7、DB
8)
=(g
λ1DA
3、g
λ2DA
3、g
λ3CA
3、g
λ4DA
3、g
λ5CA
3、g
λ6CA
3、g
λ7DA
3、g
λ8CA
3、)
(23)
ここに、θ
1、θ
2、θ
3、θ
4、β
1、β
2、β
3、β
4は、CA
1Y+CA
2Ψ=β
1+β
2+β
3+β
4、DA
1Y+DA
2Ψ=θ
1+θ
2+θ
3+θ
4満たす値である。
機関P1では、機関P2からのデータCB
i、DB
iを受信して、(式24)で示される値OutputXを求める。
OutputX = Σ
1≦i≦8 CB
iDB
i
-x
(= Σ
1≦i≦8 CB
iDB
i
-x =Σ
1≦i≦4β
iCA
3
-1+Σ
1≦i≦4θ
iDA
3
-1=ΓB
1CA
3
-1+ΓB
2DA
3
-1 =(α
1Y−α
3ψ)+ (α
2Y−α
4ψ)=(α
1+α
2) Y−(α
3+α
4) ψ)
(=X×Y−ψ)
≡ Φ (24)
機関P2では、(式25)で示される値OutputYを求める。
OutputY = Ψ (25)
(式24)、(式25)から判るように、それぞれの機関で計算したOutputX、OutputYを交換し合うことで、(式26)によって、秘密データXと秘密データYを加算した値X+Yが求まる。
OutputX+OutputY = Φ+Ψ
= X×Y (26)
(式26)から判るように、
図8に示した演算変換処理では、機関P1、機関P2が保持している秘密データX、秘密データYを入力として演算A(X×Y)を行ったときと同じ結果を得ることができる演算B(OutputX+OutputY)に対する複数の入力OutputX、OutputYを秘匿に計算することができる。
以下、(式20)から(式26)に示した演算変換方式を分割乗算加算演算変換法と略記することがある。
図8は、簡単のため、機関P1の秘密データXおよび機関P2の秘密データYが1次元の場合(XあるいはYのデータ数が1つの場合)を示したが、秘密データ数がnの場合は、
CA
1i,CA
2i, CA
3i, DA
1i,DA
2i,DA
3i,CB
1i,CB
2i,CB
3i,CB
4i,CB
5i,CB
6i,CB
7i,CB
8i,
DB
1i,DB
2i,DB
3i,DB
4i,DB
5i,DB
6i,DB
7i,DB
8i(i=1,2,3,・・・n)について同様の計算と情報の交換を行うことでΣ
1≦i≦n( X
i×Y
i)を求めることができる。
機関P1の交渉秘密情報取得処理部162では、演算変換入力InputX、演算変換出力OutputX、演算変換処理の型Type(
図8では演算Aである乗算を演算Bである加算に変換したとする情報)を含むObjectXを求め、交渉秘密情報SecretX[Id]として設定して、記憶部130に格納する。
同様に、機関P2の交渉秘密情報取得処理部162では、演算変換入力InputY、演算変換出力OutputY、Type(
図8では演算Aである乗算を演算Bである加算に変換したとする情報)を含むObjectYを求め、交渉秘密情報SecretY[Id]として設定して、記憶部130に格納する。
なお、交渉秘密情報SecretX[Id]と交渉秘密情報SecretY[Id]におけるIdは同一の番号としておく。
【0064】
図8では機関P1、機関P2が保持している秘密データX、秘密データYを入力として演算A(X×Y)を行ったときと同じ結果を得ることができる演算B(OutputX+OutputY)に対する複数の入力OutputX、OutputYを秘匿に計算することができることを示した。
同様の演算変換は良く知られた、秘匿性に優れるElGamal方式を利用することでも実現可能であり、
図9を用いて説明する。
【0065】
図9は秘匿演算変換処理部161での秘匿演算変換処理と交渉秘密情報取得処理部162での交渉秘密情報取得処理の他の一例としてElGamal方式を利用した演算方法を示したものであり、機関P1が保有する秘密データX、機関P2が保有する秘密データYについて、演算A(X×Y)を別の演算B(OutputX+OutputY)に変えて実施する手順を示している。
機関P1の秘匿演算変換処理部161は(式27)、(式28)で示される、自己の秘密データXを含んだ値CA
1,CA
2を計算して機関P2に送信する。
CA
1 = 2
XPK
γ1 (27)
CA
2 = g
γ1 (28)
ここに、gは機関P1、機関P2が共有する原始元、PK(=g
SK)は公開鍵、SKは機関P1の秘密鍵、γ1は機関P1のみが知る乱数であり、予め機関P1の記憶部130に格納されている。
機関P2の秘匿演算変換処理部161は、機関P1からのCA
1、CA
2を受信して(式29)、(式30)で示される自己の秘密データYを含んだ値CB
1,CB
2を計算して機関P1に送信する。
CB
1 = 2
-Ψ(CA
1)
YPK
γ2 (29)
CB
2 = (CA
2)
Yg
γ2 (30)
ここに、Ψ、γ2は機関P2のみが知る乱数であり、予め機関P2の記憶部130に格納されている。
機関P1では、機関P2からのデータCB
1,CB
2を受信して、(式31)で示される値OutputXを求める。
OutputX = log
2(CB
1/(CB
2)
SK)
(= log
2(2
(X×Y-Ψ)PK
(γ1+γ2)Y/(g
(γ1+γ2)Y)
SK))
(= log
2(2
(X×Y-Ψ)) )
= X×Y-Ψ (31)
機関P2では、(式32)で示される値OutputYを求める。
OutputY=Ψ (32)
(式31)、(式32)から判るように、機関P1で計算したOutputXと機関P2で計算したOutputYを交換し合うことで、(式33)によって、秘密データXと秘密データYを乗算した値X×Yが求まる。
OutputX+OutputY = X×Y (33)
(式33)から判るように、
図9に示した演算変換処理では、機関P1、機関P2が保持している秘密データX、秘密データYを入力として演算A(X×Y)を行ったときと同じ結果を得ることができる演算B(OutputX+OutputY)に対する複数の入力OutputX、OutputYを秘匿に計算することができる。
以下、(式27)から(式33)に示した演算変換方式をElGamal乗算加算演算変換法と略記することがある。
図9は、簡単のため、機関P1の秘密データXおよび機関P2の秘密データYが1次元の場合(XあるいはYのデータ数が1つの場合)を示したが、秘密データ数がnの場合は、CA
1i,
CA
2i,CB
1i,CB
2i(i=1,2,3,・・・n)について同様の計算と情報の交換を行うことで
Σ
1≦i≦n X
iY
iを求めることができる。
機関P1の交渉秘密情報取得処理部162では、演算変換入力InputX、演算変換出力OutputX、Type(
図9では演算Aである乗算を演算Bである加算に変換したとする情報)を含むObjectXを求め、交渉秘密情報SecretX[Id]として設定して、記憶部130に格納する。
同様に、機関P2の交渉秘密情報取得処理部162では、演算変換入力InputY、演算変換出力OutputY、演算変換処理の型Type(
図9では演算Aである乗算を演算Bである加算に変換したとする情報)を含むObjectYを求め、交渉秘密情報SecretY[Id]として設定して、記憶部130に格納する。
なお、交渉秘密情報SecretX[Id]と交渉秘密情報SecretY[Id]におけるIdは同一の番号としておく。
【0066】
図9では機関P1、機関P2が保持している秘密データX,Yを入力として演算A(X×Y)を行ったときと同じ結果を得ることができる演算B(OutputX+OutputY)に対する複数の入力OutputX、OutputYを秘匿性に優れるElGamal方式を用いて計算できることを示した。
同様の演算変換は良く知られた、秘匿性に優れるPaillier方式を利用することでも実現可能であり、
図10を用いて説明する。
図10において、機関P1の秘匿演算変換処理部161は(式34)で示される、自己の秘密データXを含んだ値CA
1を計算して機関P2に送信する。
CA
1 = g
Xγ1
NmodN (34)
ここに、N、gは、N=p×q、g=(1+kN)modN
2の関係を満たす公開鍵であり、予め、機関P1及び機関P2の記憶部130に格納されている。
なお、p,qは大きな素数であり、秘密鍵として、予め、機関P1の記憶部130に格納されており、kは機関P1のみが知る乱数である。
機関P2の秘匿演算変換処理部161は機関P1からのCA
1を受信して(式35)で示される自己の秘密データYを含んだ値CB
1を計算して機関P1に送る。
CB
1 = (g
-ΨCA
1)
YmodN (35)
ここに、Ψは機関P2のみが知る乱数であり、予め、機関P2の記憶部130に格納されている。
機関P1では、機関P2からのデータCB
1を受信して、(式36)で示される値OutputXを求める。
OutputX = (L(CB
1modN
2/L(g
λmodN
2))modN
= (X×Y)-Ψ (36)
ここに、λは機関P1のみが知る秘密鍵であり、予め、機関P1の記憶部130に格納されている。
またL(U)は、L(U)=(U-1)/Nを満たす関数である。
機関P2では、(式37)で示される値OutputYを求める。
OutputY=Ψ (37)
(式36)、(式37)から判るよに、機関P1で計算したOutputXと機関P2で計算したOutputYを交換し合うことで、(式38)によって、秘密データXと秘密データYを加算した値X+Yが求まる。
OtputX+OutputY = X×Y (38)
(式38)から判るように、
図10に示した演算変換処理では、機関P1、機関P2が保持している秘密データX、秘密データYを入力として演算A(X×Y)を行ったときと同じ結果を得ることができる演算B(OutputX+OutputY)に対する複数の入力OutputX、OutputYを秘匿に計算することができる。
以下、(式34)から(式38)に示した演算変換方式をPaillier乗算加算演算変換法と略記することがある。
図10は、簡単のため、機関P1の秘密データXおよび機関P2の秘密データYが1次元の場合(XあるいはYのデータ数が1つの場合)を示したが、秘密データ数がnの場合は、CA
1i,CB
1i(i=1,2,3,・・・n)について同様の計算と情報の交換を行うことでΣ
1≦i≦n( X
i×Y
i)を求めることができる。
機関P1の交渉秘密情報取得処理部162では、演算変換入力InputX、演算変換出力OutputX、Type(
図10では演算Aである乗算を演算Bである加算に変換したとする情報)を含むObjectXを求め、交渉秘密情報SecretX[Id]として設定して、記憶部130に格納する。
同様に、機関P2の交渉秘密情報取得処理部162では、演算変換入力InputY、演算変換出力OutputY、演算変換処理の型Type(
図10では演算Aである乗算を演算Bである加算に変換したとする情報)を含むObjectYを求め、交渉秘密情報SecretY[Id]として設定して、記憶部130に格納する。
なお、交渉秘密情報SecretX[Id]と交渉秘密情報SecretY[Id]におけるIdは同一の番号としておく。
【0067】
以上、分割乗算加算演算変換法、ElGamal乗算加算演算変換法、Paillier乗算加算演算変換法による、機関P1、機関P2が保持している秘密データX,Yを入力として演算A(X×Y)を行ったときと同じ結果を得ることができる演算B(OutputX+OutputY)に対する複数の入力OutputX、OutputYを秘匿に計算する方法について説明したが、これらの方式を組み合わせた演算変換の実行も可能であることは勿論である。
すなわち、例えば、秘密データX1と秘密データY1に関する演算時にはPaillier乗算加算演算変換法による演算変換を行い、秘密データX2,X3,X4,・・・と、秘密データY2,Y3,Y4,・・・に関する演算時には、分割乗算加算演算変換法による演算変換を行う等の任意の組み合わせも可能である。
【0068】
以上、実施形態1では、
図5、
図6、
図7、
図8、
図9、
図10で説明した、分割加算乗算演算変換法、ElGamal加算乗算演算変換法、Paillier加算乗算演算変換法、分割乗算加算演算変換法、ElGamal乗算加算演算変換法、Paillier乗算加算演算変換法(以下、これらをプロトコル型PType、あるいはPTypeと略記することがある。)によって、機関P1、機関P2がそれぞれ保持している秘密データX、秘密データYを入力として演算A(X+YあるいはX×Y)を行ったときの結果と同じ結果を得ることができる別の演算B(OutputX×OutputYあるいはOutputX+OutputY)に対する入力OutputX、OutputYを秘匿に計算し、各々の機関に秘密出力として返すことで、秘密データX、秘密データYを秘匿した状態で目的とする演算結果が取得できることが判ったが、一つの問題がある。
すなわち、それぞれの演算変換法では、機関P1、機関P2での秘匿演算変換部161での演算処理において、演算負荷の大きな「べき乗計算」を行っており、演算対象の秘密ベクトルX、秘密ベクトルYの次元nが大きくなると計算負荷の増大を招くことになり、システム全体の動作速度を低下させてしまう。
【0069】
(本発明の実施形態2)
上記の問題点を解消するため、本発明の実施形態2では、
図5、
図6、
図7、
図8、
図9、
図10で説明した、分割加算乗算演算変換法、ElGamal加算乗算演算変換法、Paillier加算乗算演算変換法、分割乗算加算演算変換法、ElGamal乗算加算演算変換法、Paillier乗算加算演算変換法のような、秘匿性に優れるが計算負荷の大きい演算法と、後述する、これらの演算時に記憶部130に格納された秘匿性の高い交渉秘密情報を用いて計算負荷の小さい演算行う演算法を組み合わせて、システム全体としての秘匿性と計算負荷のバランスの取れた秘匿演算変換処理を実行する。
【0070】
図11は実施形態2に係る演算処理部160でのデータ処理手続きの概略を示したものであり、大きく、秘匿演算変換処理部161での秘匿演算変換処理(以下、S1000と略記することがある。)と、それに続く、交渉秘密情報取得処理部162での交渉情報取得処理(以下、S2000と略記することがある。)に分けられる。
【0071】
図12は秘匿演算変換部処理161での処理手続きS1000の概略をフローチャートで示したものであり、秘匿演算変換処理部161は操作部140からの「秘匿演算変換処理開始通知」を受けて、S1100およびS1200で、記憶部130に予め蓄えられている変数Negotiationの値に基づいて、交渉秘密情報を利用した演算処理を行うか否かの判定を行い、後述する交渉秘密情報有演算変換処理(S1300)あるいは後述する交渉秘密情報無演算変換処理(S1400)に振り分ける。
【0072】
図13はS1100での交渉秘密情報使用指定処理の詳細を示したものである。
以下、簡略化の為、機関P1での処理動作についてのみ説明し、機関P2での機関P1と同様の処理動作の説明は割愛することがある。
また、以降の説明では、記憶部130に蓄えられている演算変換入力InputX、演算変換入力InputYを、それぞれ、InputX、InputYと略記することがある。
S1110では、演算の対象となる秘密データX、Type、交渉秘密情報を利用するか否かを示す変数Negotiationの値、PTypeの値(PTypeの値は、予め、分割加算乗算演算変換法あるいは分割乗算加算演算変換法の場合はPType=1、ElGamal加算乗算演算変換法あるいはElGamal乗算加算演算変換法の場合はPType=2、Paillier加算乗算演算変換法あるいはPaillier乗算加算演算変換法の場合はPType=3、と設定されている。)を記憶部130から読み出し、S1120でNegotiationの値が1か否かの判定を行う。Negotiationが1であれば、交渉秘密情報を利用する演算と判断し、交渉秘密情報Idを記憶部130より読み出し、Idを索引としてもつ交渉秘密情報SecretX[Id](=(演算変換入力InputX、演算変換出力OutputX、Type))も読み出し、そのTypeをS_typeとする。S1140でSecretX[Id]中の交渉秘密情報のType(即ち、S_type)と当該演算で利用したい交渉秘密情報の型であるTypeが一致しているか否かの判定を行い、両者が一致している場合には、S1150で第1交渉情報Secret_In_XにInputX、第2交渉情報Secret_Out_XにOutputXを代入する。両者が一致していない場合には、S1160で、第1交渉情報Secret_In_XにOutputXを、第2交渉情報Secret_Out_XにInputXを代入する。
S1120でNegotiationが1でなければ、交渉秘密情報を利用しない演算と判断し、(
図12の)S1200にもどり、S1400で交渉秘密情報無演算変換処理を行う。
【0073】
図14はS1200で変数Negotiationが1であった場合の、S1300での交渉秘密情報有演算変換処理の前処理手順を示したものである。
S1300では秘密データX,第1交渉秘密情報Secret_In_X,第2交渉秘密情報Scret_Out_X,演算変換型Typeを入力として、演算変換結果OutputXを計算するが、S1310で演算変換が乗算から加算への変換か、加算から乗算への変換かを示すType値の判定を行い、Typeの値が1の場合には交渉秘密情報有乗算加算変換処理(S1320)に、そうでない場合には交渉秘密情報有加算乗算変換処理(S1330)に進む。
S1320あるいはS1330での演算処理の後、S1340に進む。
【0074】
図15を用いて、一例として、Type値が1である、演算Aが(X×Y)、演算Bが(OutputX+OutputY)である場合に取得した交渉秘密情報を用いて、それと同じ演算変換方式である演算Aが(X×Y)、演算Bが(OutputX+OutputY)である交渉秘密情報有乗算加算変換処を行うS1320での演算処理の手順を示す。
機関P1の秘匿演算変換部161は、自身の秘密データXと記憶部130に格納されている第1交渉秘密情報Secret_In_Xを用いて、(式39)で示されるCAを作成し、機関P2に送る。
CA = X+Secret_In_X (39)
同様に、機関P2の秘匿演算変換部161は、自身の秘密データYと記憶部130に格納されている第1交渉秘密情報Secret_In_Yを用いて、(式40)で示されるCBを作成し、機関P1に送る。
CB = Y+Secret_In_Y (40)
その後、機関P1、機関P2はそれぞれ、(式41)、(式42)で示される秘密出力OutputX、OutputYを計算する。
OutputX = CB・X+Secret_Out_X
(= (Y+Secret_In_Y)×X+Secret_Out_X)
(= X・Y+X・Secret_In_Y+Secret_Out_X)
≡ Φ (41)
OutputY = -CA×Secret_In_Y+Secret_Out_Y
(=-(X+Secret_In_X)×Secret_In_Y+Secret_Out_Y)
(=-X・Secret_In_Y-Secret_In_X・Secret_In_Y+Secret_Out_Y)
≡ Ψ (42)
(式39)、(式40)、(式41)、(式42)において、Secret_In_X、Secret_Out_Xは機関P1の秘密情報、Secret_In_Y、Secret_Out_Yは機関P2の秘密情報であり、これらには、例えば(式26)から判るように、(式43)の関係が成立している。
Secret_In_X・Secret_In_Y=Secret_Out_X+Secret_Out_Y (43)
(式41)、(式42)、(式43)から判るように、秘密出力OutputX、秘密出力OutputY、秘密データX、秘密データYには(式44)に示される関係が成立しており、乗算から加算への変換が、交渉秘密情報を用いて簡便に実行されていることが判る。
X×Y = OutputX+OutputY (44)
【0075】
図15は、一例として、演算Aが(X×Y)、演算Bが(OutputX+OutputY)である場合に取得した交渉秘密情報を用いて、それと同じ演算変換方式である演算Aが(X×Y)、演算Bが(OutputX+OutputY)である交渉秘密情報有乗算加算変換処理を行う場合について説明したが、Typeの値が≠1である、演算Aが(X+Y)、演算Bが(OutputX×OutputY)である場合に取得した交渉秘密情報を用いて、それとは演算変換方式が異なる演算Aが(X×Y)、演算Bが(OutputX+OutputY)である交渉秘密情報有乗算加算変換処理を行うことも可能である。
この場合は、前述したようにSecret_In_X=OutputX、Secret_Out_X=X、Secret_In_Y=OutputY、Secret_Out_Y=Y、として(式39)から(式42)に相当する演算を行うことで、演算Aが(X+Y)、演算Bが(OutputX×OutputY)である場合にはSecret_In_X+Secret_In_Y=Secret_Out_X×Secret_Out_Y という関係が成り立っていることから、同様に(式44)が得られる。
【0076】
図16を用いて、一例として、Type値が≠1である、演算Aが(X+Y)、演算Bが(OutputX×OutputY)である場合に取得した交渉秘密情報を用いて、それと同じ演算変換方式である演算Aが(X+Y)、演算Bが(OutputX×OutputY)である交渉秘密情報有加算乗算変換処理を行うS1330での演算処理の手順を示す。
機関P1の秘匿演算変換部161は、自身の秘密データXと記憶部130に格納されている第1交渉秘密情報Secret_In_XとSecret_Out_Xを用いて、(式45)で示されるCAを作成し、機関P2に送る。
CA =(X-Secret_In_X )/(Secrt_Out_X) (45)
同様に、機関P2の秘匿演算変換部161は、自身の秘密データYと記憶部130に格納されている第1交渉秘密情報Secret_In_YとSecret_Out_Yを用いて、(式46)で示されるCBを作成し、機関P1に送る。
CB =(Y-Secret_In_Y)/(CA+Secret_Out_Y) (46)
その後、機関P1、機関P2はそれぞれ、(式47)、(式48)で示される秘密出力OutputX、秘密出力OutputYを計算する。
OutputX = CB+Secret_Out_X
(= (Y-Secret_In_Y)/Ψ+Secret_Out_X)
≡ Φ (47)
OutputY = CA+Secret_Out_Y
( =-(X+Secret_In_X)×Secret_In_Y+Secret_Out_Y)
( =(X-Secret_In_X)/Secret_Out_X+Secret_Out_Y)
≡ Ψ (48)
(式45)、(式46)、(式47)、(式48)において、Secret_In_X、Secret_Out_Xは機関P1の秘密情報、Secret_In_Y、Secret_Out_Yは機関P2の秘密情報であり、これらには、例えば(式7)から判るように、(式49)の関係が成立している。
Secret_In_X+Secret_In_Y = Scret_Out_X・Secret_Out_Y (49)
(式47)、(式48)、(式49)から判るように、秘密出力OutputX、OutputY、秘密データX、秘密データYには(式50)に示される関係が成立しており、加算から乗算への変換が、交渉秘密情報を用いて簡便に実行されていることが判る。
X+Y=OutputX×OtputY (50)
【0077】
図16は、一例として、演算Aが(X+Y)、演算Bが(OutputX×OutputY)である場合に取得した交渉秘密情報を用いて、それと同じ演算変換方式である演算Aが(X+Y)、演算Bが(OutputX×OutputY)である演算変換を行う場合について説明したが、Typeの値が1である、演算Aが(X×Y)、演算Bが(OutputX+OutputY)である場合に取得した交渉秘密情報を用いて、それとは演算変換方式が異なる演算Aが(X+Y)、演算Bが(OutputX×OutputY)である交渉秘密情報有加算乗算変換処理を行うことも可能である。
この場合は、前述したようにSecret_In_X=OutputX、Secret_Out_X=X、Secret_In_Y=OutputY、Secret_Out_Y=Y、として(式45)から(式48)に相当する演算を行うことで、演算Aが(X×Y)、演算Bが(OutputX+OutputY)である場合にはSecret_In_X×Secret_In_Y=Secret_Out_X+Secret_Out_Y という関係が成り立っていることから、同様に(式50)が得られる。
【0078】
S1340で、機関P1の秘匿演算変換部161、機関P2の秘匿演算変換部161は、それぞれ、当該演算に使用した秘密データX、秘密データY、S1320あるいはS1330で計算した秘密出力OutputX、秘密出力OutpuYを、それぞれ、演算変換入力InputX、演算変換入力InputY、演算変換出力OutputX、演算変換出力OutputYとして自身の記憶部130に格納して、交渉秘密情報有演算変換処理を完了する。
【0079】
以上の説明から判るように、交渉秘密情報有演算変換処理では、記憶部130に蓄えられている交渉秘密情報を用いることで、べき乗の演算を必要とする計算負荷の大きい分割加算乗算演算変換法、ElGamal加算乗算演算変換法、Paillier加算乗算演算変換法、分割乗算加算演算変換法、ElGamal乗算加算演算変換法、Paillier乗算加算演算変換法に比べて、計算負荷の小さい簡単な加減乗除演算によって、秘密データX、秘密データYに関する演算A(X×Y、X+Y)の結果が得られる。
【0080】
上記の説明より、交渉秘密情報有乗算加算変換処理あるいは交渉秘密情報有加算乗算変換処理に用いられる交渉秘密情報である第1交渉秘密情報Secret_In_X、第1交渉秘密情報 Secret_In_Y、第2交渉秘密情報Secret_Out_X、第2交渉秘密情報 Secret_Out_Yは演算の秘匿性を保つためのダミーデータとも言えるものであり、実際の演算結果には影響を及ぼさない。
したがって、交渉秘密情報有乗算加算変換処理あるいは交渉秘密情報有加算乗算変換処理で用いる交渉秘密情報である第1交渉秘密情報Secret_In_X、第1交渉秘密情報 Secret_In_Y、第2交渉秘密情報Secret_Out_X、第2交渉秘密情報 Secret_Out_Yの取得は、機関P1、機関P2が保有する実際の秘密データX、秘密データYを用いて実施される必要はなく、Secret_Out_X+Secret_Out_Y=Secret_In_X×Secret_In_Y、あるいはSecret_Out_X×Secret_Out_Y=Secret_In_X+Secret_In_Yを満たすように、分割加算乗算演算変換法、ElGamal加算乗算演算変換法、Paillier加算乗算演算変換法、分割乗算加算演算変換法、ElGamal乗算加算演算変換法、Paillier乗算加算演算変換法等によって、実際の演算に先だってダミーデータを用いて取得しておくことも可能である。
【0081】
図17はS1200で変数Negotiationが1でなかった場合の、S1400での交渉秘密情報無演算変換処理の詳細を示したものである。
機関P1、機関P2の秘匿演算変換部161は、それぞれの記憶部130に格納された演算変換型変数Typeの値が1であるなら、S1420に進み交渉秘密情報無乗算加算変換処理を相手機関と協力し実行する。Typeの値が1でなければ、双方の秘匿演算変換部161はS1430に進み交渉秘密情報無加算乗算変換処理に進む。
S1420あるいはS1430での演算処理の後、S1440に進む。
【0082】
図18はS1420での処理手順の概要を示したものであり、交渉秘密情報無乗算加算変換処理を実施する際にどのPTypeを用いるかを決定する手順を示したものである。S1421でPTypeの値を判定し、PType=1であれば分割乗算加算演算変換法を、PType=2であればElGamal乗算加算演算変換法を、、PType=3であればPaillier乗算加算演算変換法を用いる。
機関P1、機関P2は連携して、指定された演算変換法によって、(式51)を満たす秘密出力OutputX、OutputYを求める。
OuputX+OutputY=X×Y (51)
【0083】
図19はS1430での処理手順の概要を示したものであり、交渉秘密情報無加算乗算変換処理を実施する際にどのPTypeを用いるかを決定する手順を示したものである。S1421でPTypeの値を判定し、PType=1であれば分割加算乗算演算変換法を、PType=2であればElGamal加算乗算演算変換法を、PType=3であればPaillier加算乗算演算変換法を用いる。
機関P1、機関P2は連携して、指定された演算変換法によって、(式52)を満たす秘密出力OutputX、OutputYを求める。
OutputX×OutputY=X+Y (52)
【0084】
S1440で、機関P1の秘匿演算変換部161、機関P2の秘匿演算変換部161は、S1420あるいはS1430での演算に用いた秘密データX、秘密データY、S1420あるいはS1430で計算したOutputX、OutoutYを、それぞれ、演算変換入力InputX、演算変換入力InputY、演算変換出力OutputX、演算変換出力OutputYとして自身の記憶部130に格納して、Negotiation値が≠1である、交渉秘密情報無演算変換処理を完了する。
【0085】
ここで、交渉秘密情報有演算変換処理と交渉秘密情報無演算変換処理の2つの種類の処理を用意する理由を述べる。
図15、
図16に示す交渉秘密情報有演算変換プロトコルでは秘匿演算変換処理が加算、乗算、除算の計算コストの小さい演算のみを適用することで秘密出力OupyX、OutputYを計算することができている。交渉秘密情報有演算変換プロトコルの計算の機密性は交渉秘密情報の機密性に依存し、機密性の高い交渉秘密情報を用いることができれば、計算の機密性を保証することができる。
図6、
図7、
図9、
図10に示したElGamal加算乗算演算変換法、Paillier加算乗算演算変換法、ElGamal乗算加算演算変換法、Paillier乗算加算演算変換法等の交渉秘密情報無演算変換プロトコルでは秘匿演算変換処理を公開鍵により行い、かつ、秘密入力を用いたべき乗計算を必要としており、計算コストは大きいが、気密性の高い交渉秘密情報を取得することができる。
したがって、2つの種類の処理を組み合せることにより、すなわち、交渉秘密情報無演算変換により高い機密性をもつ交渉秘密情報を作成し、その情報を利用して交渉秘密情報有演算変換を行うことで、秘密入力を用いた演算変換を高速に、かつ、高機密に行うことが可能となる。
【0086】
次に、
図20によって、交渉秘密情報取得部162での交渉秘密情報の取得と更新の手順であるS2000について詳細に説明する。
秘匿演算変換部161でのS1000の処理が完了すると、交渉秘密情報取得部162はS2000の交渉秘密情報取得処理を開始する。
S2100で、相手機関のデータ処理装置100と連携し、S1000で作成した秘密出力の組(演算変換入力InputX、演算変換出力OutputX、Type)を後に索引により選別し秘密情報として利用するため、共通変数Idに索引を設定する。また、新しい交渉秘密情報を古い交渉秘密情報と組み合わせるか否かを決定し、変数Combineに設定する。
ここで、作成された秘密情報を他の交渉秘密情報と組み合わせる場合にはCombine=1、そうでない場合には、Combine=0とする。
【0087】
次に、S2200で、S1000での秘匿演算変換処理の入力である演算変換入力InputX、出力である演算変換出力OutputX、演算変換の型Typeからなる情報を共通索引Idとして持つ交渉秘密情報SecretX[Id]を記憶部130に格納する。同様に機関P2では秘匿演算変換処理の入力である演算変換入力InputY、出力である演算変換出力OutputY、演算変換の型Typeからなる情報を共通索引Idとして持つ交渉秘密情報SecretY[Id]を記憶部130に格納する。
【0088】
次に、S2300で、変数Combineが0か否かを判定し、0であれば交渉秘密情報取得処理を終了し、Combineが1であれば、S2400に進む。
【0089】
次に、S2400で、機関P2と通信することで、他の情報と組み合わせる索引Id_Oldを決定する。
さらに、S2500で、機関P1の交渉秘密取得部162は索引Id_Oldをもつ古い交渉秘密情報SecretX[Id_Old]を記憶部130より読み出し、機関P2の交渉秘密取得部162は古い交渉秘密情報SecretY[Id_Old]を記憶部130より読み出す。
【0090】
次に、S2600で、SecretX[Id]とSecretX[Id_Old]を入力として新しい交渉秘密情報を作成する。交渉秘密情報更新処理を実行し出力としてInputX、OutputX、Typeを受け取り、S2100へ戻る。
【0091】
図21はS2600の交渉秘密情報交換処理の詳細を示したものである。
S2600では、最初にS2610で秘密情報のTypeが乗算から加算への変換を示す1かどうか判定し、Typeが1であれば、S2620で、機関P1では、InputX、OutputXに、それぞれ、SecretX[Id].InputX、SecretX[Id].OutputXを設定する。そうでなければ、S2630で、InputX、OutputXに、それぞれ、SecretX「Id」.Output、SecretX[Id].InputXを設定する。機関P2の場合も同様にInputY、OutputYを設定する。
【0092】
S2640、S2650、S2660では、S2610、S2620、S2630と同様に、既に存在する交渉秘密情報SecretX[Id_Old]、SecretY[Id_Old]から値を読み出し、O_InputX、O_OutputX、O_InputY、O_OutputYに値を設定する。
機関P2も同様に、O_InputX、O_OutputX、O_InputY、O_OutputYに値を設定する。
【0093】
次に、機関P1の交渉秘密情報取得部162は、S2670で、InputXとO_InputXが等しいかを判定し、等しければCombineXに1を設定し、そうでなければ0を設定する。同様に、機関P2の交渉秘密情報取得部162はInputYとO_InputYが等しいかを判定し、等しければCombineに1を設定し、そうでなければ0を設定する。
【0094】
二つの交渉秘密情報の乗算変換の入力InputXとO_InputXが等しい場合、InputX×InputY=OutputX+OutputY、O_InputX×O_InputY=O_OutputX+O_OutputYの2つ条件が成り立つことより、(式53)が成り立つ。
InputX×(InputY+O_IputY)=OutputX+OutputY+O_OutputX+O_OutputY(53)よって、機関P1ではInputX、OutputX+O_OutputX、Type=1を新しい秘密情報として、機関P2ではInputY+O_InpuY、OutputY+O_OutputY、Type=1を新しい秘密情報として利用することができる。
【0095】
上記のような新しい秘密情報の作成を、S2690のCombineXとCombineYの組合せにより場合分けした上でS2691かS2692のどちらかにより行う。上記の作成例はS2691に対応する。
【0096】
交渉秘密情報更新処理を終えた、交渉秘密情報取得部162は新しい秘密情報を格納するため、交渉秘密情報取得処理のS2100に戻り、秘密情報の交渉秘密情報としての格納、および、さらなる更新処理を実行する。
【0097】
本実施の形態によれば、2種類の演算変換処理を組み合せることにより、対象とする秘密データX、秘密データYについて、四則演算などの安価なコストの演算を適用することで、機密性の高い演算変換を行うことが可能になり、公平に意味のある秘密情報を作成することが可能となる。
【0098】
さらに、乗算から加算、加算から乗算という基本的な演算の変換を行うことにより、得られた秘密情報を加算により組み合せることで、秘匿性に優れる新しい秘密情報を作成することが可能となり、秘密情報の機密性を向上させることも可能となる。
【0099】
このように本実施の形態の方法は、従来の秘匿計算方法とは異なり、双方が合意した意味のある情報を交渉秘密情報として、公平に作成し、かつ、公開鍵暗号方式と同様の機密性を保ちながら、べき乗演算を用いることなく作成する効率的な方法となっている。
【0100】
(本発明の実施形態3)
実施形態1での演算変換法では機関P1、P2での秘匿演算変換部161での演算処理において、演算負荷の大きな「べき乗計算」を行っていた。また、それらのべき乗計算は秘密データX,Yが決定しなければ、実行できないという問題があった。本発明の実施形態3では
図5、
図8の分割加算乗算演算変換法、分割乗算加算演算変換法において、秘密データX、Yが決定されてから実行する全ての演算を、計算負荷の小さい「加減乗除算」とする二段階交渉秘密情報無演算変換処理を実行する。
【0101】
分割加算乗算変換法における二段階交渉秘密情報無演算変換処理の概要を
図22に示す。二段階交渉秘密情報無演算変換処理では、各機関は秘密データX, Yが決定する前に交換できる情報を入力決定前処理として計算、交換し、秘密データX,Yに依存した計算、情報の交換は秘密データX、Y決定後に実施する。上記の二段階の方式を採用することにより、
図5で説明した分割加算乗算演算変換法でのべき乗演算は全て入力前計算として実施でき、入力後計算は加減乗除算の演算のみとなる。入力前計算をオフライン処理とすることで、入力決定後に行うオンライン処理時間を大幅に削減することができる。
【0102】
二段階交渉秘密情報無加算乗算演算変換処理では入力前計算と入力後計算の二段階に分けて演算変換処理を行う。
図22において、機関P1は、秘密データXが決定する以前の前処理として、(式53)、(式54)で示されるCA
1,CA
2,CA
3,DA
3を計算し、機関P2へ送信する。ここで、
図5で説明した分割加算乗算演算変換法とは異なり、この段階ではDA
1,DA
2の送信は行わない。
(CA
1、CA
2、CA
3)=(α
1KA
1、α
3KA
1、g
γ1) (53)
DA
3 = g
γ2 (54)
ここに、α
1、α
3、γ
1、γ
2は機関P1のみが知る乱数、gは機関P1及び機関P2が知る原始元、xは機関P1のみが知る秘密鍵であり、KA
1,KA
2は公開鍵Z(=g
x)と乱数γ
1、γ
2とを用いて、KA
1=Z
γ1、KA
2=Z
γ2と表せる値であり、予め機関P1の記憶部130に格納されている。
CA
1,CA
2,CA
3,DA
3を受信した機関P2はCA
3,DA
3と自身が決定したランダムな2分割(N
1,N
2), 乱数パラメータβ
1,・・・β
(|N1|-1), θ
1,・・・,θ
(|N2|-1),λ
1, ・・・,λnを用いて、(式55)、(式56)で示されるCB
1,…,CB
(n-2)とDB
1,…,DB
nを計算し、機関P1へ送信する。ここで、
図5で説明した分割加算乗算演算変換法とは異なり、この段階ではCB
(n-1), CB
nの送信は行わない。
CBi = β
#1(i) Z
λi (if i∈N
1-{n-1,n})、 θ
#2(i) Z
λi (if i∈N
2) (55)
DBi = Z
λiCA
3 (if i∈N
1)、 Z
λiDA
3 (if i∈N
2) (56)
ここで、#1( i )は番号iが集合N
1の要素を増加順に列挙したときに出現する順番を示し、#2( i )についても集合N
2に関して同様の定義を持つ順番とする。また、パラメータβ
1,・・・β
(|N1|-1), θ
1,・・・,θ
(|N2|-1)は完全に機関P2が独自に選択した乱数で良い。
機関P2より暗号文の列(CB
1,…,CB
(n-2))と(DB
1,…,DB
n)を受信した機関P1は、(式57)、(式58)、(式59)で示される3つのパラメータEA
1,FA
1,FA
2を計算する。
EA
1=Σ
1≦i≦n-2 CBi DBi
-x (57)
FA
1=DB
(n-1)
-x (58)
FA
2=DB
n
-x (59)
上記の機関P1,P2で行われる計算、および、情報交換を入力前計算とする。
【0103】
秘密入力データXが機関P1において決定したら、機関P1はその秘密入力データより決定した乱数X1,X2(ここで、X1/X2=X)、先の入力前計算で利用した乱数パラメータα1, α3を用いて、α2=X1-α1、α4=X2-α2として計算し、DA1=α2KA2, DA2=α4KA2として、暗号文DA1,DA2を計算し、DA1,DA2を機関P2へ送信する。
機関P1より暗号文DA1,DA2を受信し、自身の秘密入力データYが決定した機関P2はYより選択した乱数Y1,Y2(ここで、Y2/Y1=Y)より、ΓB1=CA1Y1+CA2Y2、ΓB2= DA1Y1+DA2Y2という内部計算を行い、パラメータΓB1, ΓB2の値を求める。さらに、ΓB1, ΓB2の値を用いて、β|N1|=ΓB1-Σ1≦i≦|N1|-1βiによりパラメータβ|N1|の値を、θ|N2|=ΓB2-Σ1≦i≦|N2|-1θiによりパラメータθ|N2|の値を計算する。パラメータβ|N1|、θ|N2|より暗号文CBn-1 をCBn-1=β|N1|CB(n-1)’により、暗号文CBnをCBn=θ|N2|CBn’として計算し、(CBn-1,CBn)を機関P2に送信する。
機関P2より(CBn-1,CBn)を受信した機関P1は入力前計算にて得ていた値EA1,FA1,FA2を用いて、秘密出力Φを(式60)によって計算する。
Φ=(EA1+CB(n-1)FA1+CB2FA2)/X2 (60)
機関P2では(式61)で示される秘密出力Ψを計算しており、機関P1、P2が秘密出力Φと秘密出力Ψを交換することで、(式62)から判るように、双方が演算結果(X+Y)を得ることができる。
Ψ=1/Y1 (61)
Φ×Ψ=(X1Y1+X2Y2)/(X2Y1)
= X1/X2 + Y2/Y1
= X + Y (62)
【0104】
分割乗算加算変換法における二段階交渉秘密情報無演算変換処理の概要を
図23に示す。入力前計算は
図22の二段階交渉秘密情報無加算乗算変換処理と同じである。
以下では秘密入力データ決定後の処理について説明する。
【0105】
秘密入力データXが機関P1において決定したら、機関P1はその秘密入力データと先の入力前計算で利用した乱数パラメータα1, α3を用いて、α2=X-α1、α4=−1-α2として計算し、DA1=α2KA2, DA2=α4KA2として、暗号文DA1,DA2を計算し、DA1,DA2を機関P2へ送信する。
機関P1より暗号文DA1,DA2を受信し、自身の秘密入力データYが決定した機関P2は選択した乱数Ψより、ΓB1=CA1Y+CA2Ψ、ΓB2= DA1Y+DA2Ψという内部計算を行い、パラメータΓB1, ΓB2の値を求める。さらに、ΓB1, ΓB2の値を用いて、β|N1|=ΓB1-Σ1≦i≦|N1|-1βiによりパラメータβ|N1|の値を、θ|N2|=ΓB2-Σ1≦i≦|N2|-1θiによりパラメータθ|N2|の値を計算する。パラメータβ|N1|、θ|N2|より暗号文CBn-1 をCBn-1=β|N1|CB(n-1)’により、暗号文CBnをCBn=θ|N2|CBn’として計算し、(CBn-1,CBn)を機関P2に送信する。
機関P2より(CBn-1,CBn)を受信した機関P1は入力前計算にて得ていた値EA1,FA1,FA2を用いて、秘密出力Φを(式63)によって計算する。
Φ=(EA1+CB(n-1)FA1+CB2FA2) (63)
機関P2では秘密出力Ψを乱数として選択しており、機関P1、P2が秘密出力Φと秘密出力Ψを交換することで、(式64)から判るように、双方が演算結果(X×Y)を得ることができる。
Φ+Ψ=(X×Y — 1×Ψ)+ Ψ
= X×Y (64)
【0106】
上記の、機関P1, P2によって秘密入力データX,Yが決定したのちに行う入力後計算は加減乗除算のみであり、べき乗計算を必要としないため、オンラインでの計算を高速に実行することができる。上記の二段階交渉秘密情報無演算変換処理により、べき乗計算を入力決定前に全て終えるという特徴は実施形態1での分割加算乗算演算変換法、分割乗算加算演算変換法以外のElGamal加算乗算演算変換法、Paillier加算乗算演算変換法、ElGamal乗算加算演算変換法、Paillier乗算加算演算変換法では活かすことができない。なぜなら、ElGamal暗号方式、Paillier暗号方式とも秘密入力X,Yを指数とするべき乗計算を必要とするからである。一方、分割による演算変換方法ではべき乗計算の指数部は乱数や秘密鍵など秘密入力に依存しない値であり、このような入力決定前の計算処理が可能となる。
【0107】
ここで、二段階交渉秘密情報無演算変換法の機密性について考える。機関P1の機密性は公開鍵暗号方式でCA3,DA3を公開していない場合、与えられたCA1,CA2,DA1,DA2の暗号文を得ることができるように、任意の秘密入力Xの値に対してKA1,KA2を選択することが可能である。よって、CA1,CA2,DA1,DA2だけであれば、機関P1の秘密入力Xの情報は何も洩れていないので、CA3,DA3によるKA1,KA2に関する情報が機関P2に明かされた機関P1の情報となる。CA3,DA3からKA1,KA2を推測する問題は、離散対数問題よりも簡単と推測されているDiffie-Hellman計算問題が解けないと仮定したときに、解けない。上記の仮定が成り立つなら、X1とX2の比である秘密入力データXの情報の機密性は守られる。
【0108】
一方、機関P2に関してはΓB1,ΓB2が判明すれば連立方程式の解を得ることで機関P1にY1,Y2の値を導出でき、Yも明らかとなってしまう。しかし、分割による方法ではΓB1、ΓB2は|N1|+|N2|個に分割され、かつ、乱数λiによって曖昧化されているので、それぞれの値を正確に推測するには各DBi(1≦i≦n)がCA3,DA3のどちらを用いて作成されたかという2n-1通りの異なる組合せの中から本物の組合せを選ばなければならない。よって、機関P1に機関P2のYの情報を正確に推測できる確率は2-(n+1)か剰余演算に利用している素数pの逆数p-1のどちらか大きな方の値となる。
【0109】
(本発明の実施形態4)
実施形態1,2,3では乗算から加算、加算から乗算に変化させる演算変換について説明した。実施形態4では、乗算から加算、加算から乗算に変化させる演算変換を組み合わせることで、底とべき指数の両方を機関P1,P2双方で変化させる秘密べき乗算演算変換法を実現する。本実施の形態では、機関P1の秘密入力は底に関する秘密入力Xとべき指数に関する秘密入力A、機関P2の秘密入力は底に関する秘密入力Yとべき指数に関する秘密入力Bとするとき、(X+Y)AB、(X+Y)(A+B)、(X×Y)AB、(X×Y)(A+B)の形で表せるべき乗計算と等しい値を求めることができる秘密出力OutputX, OutputYをそれぞれの機関P1,P2の出力として交換することで、秘密べき乗演算変換を実現する。
【0110】
はじめに、(X+Y)
ABの形で表せるべき乗演算を例に、秘密べき乗演算変換法の概要を
図23を用いて説明する。
まず、底を秘匿しながら計算するため、機関P1とP2が協力し、
図5を用いて説明した交渉秘密情報無加算乗算演算変換法、あるいは
図16で説明した交渉秘密情報有加算乗算演算変換法によって加算乗算変換を行い、X+Y=Φ×Ψとなるような中間の秘密出力Φ、Ψを機関P1,P2双方で得る。その後、機関P1、機関P2それぞれで、中間秘密出力Φ、Ψにそれぞれの秘密べき指数A, Bをべき乗し、FA=Φ
A, FB=Ψ
Bなる暗号文FA, FBをそれぞれ得る。次に、機関P1, P2は暗号文FA,FBを交換し、機関P1はFBに秘密べき指数Aを、機関P2はFAに秘密べき指数Bをべき乗して得られた値をそれぞれの秘密入力として、
図8を用いて説明した交渉秘密情報無乗算加算演算変換法、あるいは
図16を用いて説明した交渉秘密情報有乗算加算変換法によって乗算加算変換を行うことで、秘密出力OutputX, OutputYをそれぞれ得る。
機関P1,P2が秘密出OutputX、OutputYを交換することで、(式63)から、(X+Y)
ABを求めることができる。
OutputX+OutputY=FB
A×FA
B=Ψ
BA×Φ
AB=(Ψ×Φ)
AB=(X+Y)
AB (63)
なお、
図23は交渉秘密情報有の場合の(即ち、交渉秘密情報を利用する場合の)プロトコルの概要を示したものである。
【0111】
ElGamal公開鍵暗号方式やPaillier公開鍵暗号方式を用いて秘匿計算を行う場合、平文への加減算は暗号文に関する乗算に、平文への乗算は暗号文に関するべき乗算に対応している。よって、平文のべき乗算は底を秘匿にしたままではべき乗算に変換できないため、暗号文に対する演算では実現できない。よって、秘匿演算中の底を一旦復号する必要がある。このとき、底の(X+Y)をどちらか一方の機関、例えば、公開鍵を提供している機関P1が知ることになれば、機関P1のみが機関P2の底に関する秘密入力データYの値を知ることとなり、機関P1とP2間の機密性を公平に保つことができない。
【0112】
図23に示した例では上記の問題を解決するため、まず、機関P1,P2の秘密の底X、Yについて、分割加算乗算変換を行うことにより、公平な秘密情報Φ、Ψを得、ついで、秘密情報Φ、Ψを機関P1、P2の秘密べき指数A、Bでべき乗した値Φ
A、Ψ
Bを機関P1、P2で交換し、最後に、値Φ
A、Ψ
Bを機関P1,P2でB乗あるいはA乗した値Φ
AB、Ψ
BAについて分割乗算加算変換を行っており、底とべき指数ともに秘匿したまま、機密性の高い秘密べき乗演算が可能となる。
【0113】
(X+Y)
(A+B)の形で表されるべき乗演算については、
図25に示すように第一段階で、(X+Y)について加算乗算演算変換によってΦ×Ψ=X+Yの関係を満たす第一の中間出力Φ、Ψを得、第二段階で(A+B)についての加算乗算演算変換によってφ×ψ=A+Bを満たす第二の中間中間出力φ、ψを得、機関P1,P2で第一および第二の中間出力からΦ
φ、Ψ
ψを作成して交換し、交換したΦ
φ、Ψ
ψを基に機関P1,P2で作成したΨ
ψφ、Φ
φΨから、乗算加算演算変換によって(式64)の関係を満たすOutputX、OutputYを求めることで、(式65)から(X+Y)
(A+B)を求めることができる。
OutputX+OutputY = Ψ
ψφ×Φ
φΨ (64)
OutputX+OutputY = Ψ
ψφ×Φ
φΨ=(Ψ×Φ)
φψ=(X+Y)
(A+B) (65)
ただし、素数pを法とする剰余環上で演算を行う場合、第二段階で行う指数部の秘密入力の交渉情報有加算乗算変換ではp−1を法とする剰余環上で計算しなければならない(フェルマーの小定理よりa
p-1≡1(mod p)のため, ここでaはpの倍数でない整数)。よって、第二段階で用いる交渉秘密情報SecretX[ID2], SecretY[ID2]もp-1を法とする剰余環上で計算された情報でなければならない。このとき、p-1が素数でないため、除算を正確に計算できない場合が存在することに注意する必要がある。
【0114】
(X×Y)ABの形で表されるべき乗演算については、機関P1,P2でXA、YBを作成して交換し、交換したXA、YBを基に機関P1,P2でYBA、XABを作成し、YBA、XABから乗算加算演算変換によって(式66)の関係を満たすOutputX、OutputYを求めることで、(式67)から(X×Y)ABを求めることができる。
OutputX+OutputY = YBA×XAB (66)
OutputX+OutputY = YBA×XAB=(X×Y)AB (67)
【0115】
(X×Y)(A+B)の形で表されるべき乗演算については、第一段階で(A+B)についての加算乗算演算変換によってφ×ψ=A+Bを満たす第二の中間中間出力φ、ψを得、機関P1,P2で自身の秘密入力と第一の中間出力からXφ、Yψを作成して交換し、交換したXφ、Yψを基に機関P1,P2で作成したYψφ、XφΨから乗算加算演算変換によって(式68)の関係を満たすOutputX、OutputYを求めることで、(式69)から(X×Y)(A+B)を求めることができる。
OutputX+OutputY = Xψφ×Yφψ (68)
OutputX+OutputY = Yψφ×Xφψ=(X×Y)ψφ=(X×Y)(A+B) (69)
【0116】
上記ではべき乗算を加算に変換する処理について説明したが、OutputX, OutputYを得るための乗算加算変換処理の入力をそのままOutputX, OutputYとすることでべき乗算を乗算に変換できる。
【0117】
また、ここでは交渉秘密情報を用いる演算変換方法(すなわち、交渉秘密情報有の演算変換方式)について説明したが、
図5から
図10で説明した、べき乗計算を用いて入力情報を秘匿しながら所望の値を得る方式である交渉秘密情報無の演算変換方式が適用可能であることは勿論である。
【産業上の利用可能性】
【0118】
本発明によれば、複数の機関がそれぞれ保持している秘密データを入力として演算Aを行ったときの結果と同じ結果を得ることができる別の演算Bに対する複数の入力を安価な計算コストで秘匿に計算し、各々の機関に秘密出力として返すことで、各々の機関の秘密データを秘匿した状態で、各々の機関が希望する演算結果を得ることができる。
【符号の説明】
【0119】
1 秘匿演算変換システム、100 データ処理装置、110 制御部、120 通信部、
130 記憶部、140 操作部、150 インタフェース部、160 演算処理部、
161 秘匿演算変換処理部、162 交渉秘密情報取得処理部、200 通信線