説明

秘密計算システム、秘密計算方法、秘密計算プログラム

【課題】従来の秘匿回路計算の実行回数を削減すること。
【解決手段】本発明は、ビットbi(i=1,2,・・・,n)を秘匿化したデータ[bi]を入力として、biを復元することなくbiの論理演算を行い、論理演算結果を出力する秘密計算システムに適用される。本発明の秘密計算システムは、AND演算を行う場合、まず、[bi]及びnを基に、[n−Σbi]を計算する。次に、当該計算結果を二進数表記した[wj](j=t,t−1,・・・,1、tはnのビット長)を求め、[wj]が全て0であれば[1]を、そうでなければ[0]を論理演算結果として出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号応用技術に関し、特に、入出力を明かすことなく論理演算を行う技術に関する。
【背景技術】
【0002】
非特許文献1では、任意の論理演算において、ビット毎に秘匿化(暗号化)された入力を復元することなく論理演算を行って、論理演算結果の暗号文を出力する方法が提案されている。このように入出力を秘密にした論理演算は、秘匿回路計算と称されている。
【0003】
なお、秘匿回路計算の入力としては、例えば、Paillier暗号によって秘匿化された数値に対して、当該数値を明かすことなく、当該数値を二進数表記とした桁ごとに暗号化した暗号文(非特許文献2)が挙げられる。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】G. Yamamoto, K. Chida, A. Nasciment, K. Suzuki, and S. Uchiyama, Efficient, non-optimistic secure circuit evaluation based on the ElGamal encryption, WISA 2005, Lecture Notes in Computer Science, pp. 328-343, Springer-Verlag, 2005.
【非特許文献2】B. Schoenmakers and P. Tuyls, Efficient binary conversion for Paillier encrypted values, Advances in Cryptology − EUROCRYPT 2006, Lecture Notes in Computer Science 4004, pp. 522-537, Springer-Verlag, 2006.
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、非特許文献1に開示された方法では、ビットbi(i=1,2,・・・,n)を秘匿化したデータ[bi]が与えられた場合に、データ[bi]を復号化することなく、例えば、
【0006】
【数1】

【0007】
を求めるためには、n−1回のAND演算に対する秘匿回路計算が必要になる。
【0008】
そこで、本発明の目的は、従来の秘匿回路計算の実行回数を削減することができる秘密計算システム、秘密計算方法、秘密計算プログラムを提供することである。
【課題を解決するための手段】
【0009】
本発明の秘密計算システムは、
ビットbi(i=1,2,・・・,n)を秘匿化したデータ[bi]を入力として、biを復元することなくbiの論理演算を行い、論理演算結果を出力する秘密計算システムであって、
AND演算を行う場合、
[bi]及びnを基に、
【0010】
【数2】

【0011】
を計算し、
当該計算結果を二進数表記した[wj](j=t,t−1,・・・,1、tはnのビット長)を求め、
[wj]が全て0であれば、
【0012】
【数3】

【0013】
を、そうでなければ、
【0014】
【数4】

【0015】
を論理演算結果として出力する。
【発明の効果】
【0016】
秘匿回路計算において、ビットbi(i=1,2,・・・,n)のAND演算を行う場合、従来では、n−1回のAND演算に対する秘匿回路計算の実行を必要としていた。
【0017】
これに対し、本発明では、[wj](j=t,t−1,・・・,1)が全て0であるか否かを判断するために、t−1回のOR演算及び1回のNOT演算に対する秘匿回路計算を実行するだけで済む。いま、
【0018】
【数5】

【0019】
であるから、本発明は、従来に比べ秘匿回路計算の実行回数を削減することができるという効果が得られる。
【図面の簡単な説明】
【0020】
【図1】本発明の実施例1,2の秘密計算システムの構成を示す図である。
【図2】本発明の実施例1の秘密計算システムによる秘密計算方法を説明するフローチャートである。
【図3】本発明の実施例2の秘密計算システムによる秘密計算方法を説明するフローチャートである。
【発明を実施するための形態】
【実施例1】
【0021】
本実施例では、ビットbi(i=1,2,・・・,n)を秘匿化したデータ[bi]が与えられ、
【0022】
【数6】

【0023】
を求めるAND演算を例に挙げて説明する。
【0024】
先ず、本実施例では、上述の非特許文献2で提案されている技術またはそれに類する技術を利用することを前提とする。
【0025】
非特許文献2では、Paillier暗号によって暗号化された数値に対して、当該数値を明かすことなく、当該数値を二進数表記とした桁ごとに暗号化した暗号文を生成する方法が提案されている。
【0026】
このように、数値zを秘匿化(暗号化)したデータ[z]を入力とし、zを二進数表記したときの各桁zi(zの下位i桁目のビット)を秘匿化したデータ[zi]を出力する装置を秘匿化数値二進変換装置と呼ぶことにする。
【0027】
また、ビットbi(i=1,2,・・・,m)を秘匿化したデータ[bi]及びある論理関数fを入力として、[f(b1,・・・,bm)]を出力するような、非特許文献1に開示された方法またはそれに類する方法を実装した装置を秘匿回路計算装置と呼ぶことにする。
【0028】
本発明では、数値を秘匿化したデータ[z],[z′]及び秘匿化していない数値cについて、[z+z′],[z−z′],[cz]を計算する機能が必要となるが、非特許文献2の方法では当該機能を満たしている。
【0029】
以上の準備の下、本実施例の秘密計算システム10は、図1に示すように、上述の秘匿化数値二進変換装置12及び秘匿回路計算装置13を有する他、ビット毎に秘匿化されたデータ[bi](i=1,2,・・・,n)及び論理関数fを入力として、[f(b1,・・・,bn)]を出力する秘密計算装置11を有している。
【0030】
なお、図1においては、説明の簡略化のため、秘匿化数値二進変換装置12及び秘匿回路計算装置13をそれぞれ単一の装置としているが、それぞれ複数台の装置で構成しても良い。
【0031】
秘密計算装置11は、秘匿化数値二進変換装置12及び秘匿回路計算装置13とネットワークで接続されていて、秘匿化数値二進変換装置12及び秘匿回路計算装置13とネットワークを介してデータの送受信が可能であるものとする。
【0032】
なお、秘密計算装置11において、[bi](i=1,2,・・・,n)及び論理関数fを入力として、[f(b1,・・・,bn)]を出力することは、秘匿回路計算装置13の機能そのものであるが、本実施例では、秘密計算装置11の機能を用いることにより、単純に秘匿回路計算装置13の機能のみを用いるよりも高速に論理演算を可能とすることが目的である。
【0033】
次に、本実施例の秘密計算システム10の動作について図2を用いて説明する。
【0034】
秘密計算装置11は、ステップA1において、ビットbi(i=1,2,・・・,n)を秘匿化したデータ[bi]が入力されると、
【0035】
【数7】

【0036】
を出力するために、先ず、ステップA2において、[bi]及びnから
【0037】
【数8】

【0038】
を計算し、計算結果を秘匿化数値二進変換装置12に送信する。
【0039】
その応答として、秘匿化数値二進変換装置12は、ステップA3において、[wj](j=t,t−1,・・・,1)を求め、[wj]を秘密計算装置11に送信する。
【0040】
ここで、wjは、
【0041】
【数9】

【0042】
を二進数表記したときの下位j桁目のビットを表し、tはnのビット長を表すものとする。すると、
【0043】
【数10】

【0044】
であり、
【0045】
【数11】

【0046】
が成り立つことから、
【0047】
【数12】

【0048】
となり、秘密計算装置11は、[wj]を秘匿回路計算装置13に送信する。
【0049】
その応答として、秘匿回路計算装置13は、ステップA4において、
【0050】
【数13】

【0051】
を計算し、計算結果を秘密計算装置11に送信する。その計算結果は、論理演算結果の暗号文として秘密計算装置11から出力される。
【0052】
以上、AND演算を例に説明したが、XOR演算やOR演算であっても同様に処理可能である。
【0053】
例えば、XOR演算であれば、
【0054】
【数14】

【0055】
とすれば良く、秘匿回路計算装置13は不要である。
【0056】
また、OR演算であれば、
【0057】
【数15】

【0058】
の代わりに、
【0059】
【数16】

【0060】
とし、
【0061】
【数17】

【0062】
と置き換えて考えれば良い。
【0063】
本実施例の期待する効果は、秘匿回路計算装置13の負荷軽減である。
【0064】
従来のように、単純に秘匿回路計算装置13の機能のみを用いて実行する場合は、n−1回のAND演算に対する秘匿回路計算が必要となる。
【0065】
これに対して、本実施例では、[wj](j=t,t−1,・・・,1)が全て0であるか否かを判断するために、t−1回のOR演算及び1回のNOT演算に対する秘匿回路計算を実行するだけで済むため、従来の秘匿回路計算の実行回数を削減することができ、秘匿回路計算装置13の負荷軽減を図ることができる。
【0066】
いま、
【0067】
【数18】

【0068】
であるから、nが大きくなるにつれて秘匿回路計算装置13の負荷軽減の効果がより大きくなる。
【実施例2】
【0069】
本実施例の秘密計算システム10は、実施例1と比べて、構成自体は同様であるが、秘匿化数値二進変換装置12を繰り返し利用することで、秘匿回路計算装置13の負荷を更に軽減する点が異なる。
【0070】
次に、本実施例の秘密計算システム10の動作について図3を用いて説明する。ここでは、ビットbi(i=1,2,・・・,n)を秘匿化したデータ[bi]が与えられ、
【0071】
【数19】

【0072】
を求めるOR演算を例に挙げて説明する。
【0073】
秘密計算装置11は、ステップB1において、ビットbi(i=1,2,・・・,n)を秘匿化したデータ[bi]が入力されると、
【0074】
【数20】

【0075】
を出力するために、先ず、ステップB2において、[bi]及びnから
【0076】
【数21】

【0077】
を計算し、計算結果を秘匿化数値二進変換装置12に送信する。
【0078】
その応答として、秘匿化数値二進変換装置12は、ステップB3において、[wj](j=t,t−1,・・・,1)を求め、[wj]を秘密計算装置11に送信する。
【0079】
ここで、wjは、
【0080】
【数22】

【0081】
を二進数表記したときの下位j桁目のビットを表し、tはnのビット長を表すものとする。このとき、
【0082】
【数23】

【0083】
であるから、
【0084】
【数24】

【0085】
が成り立つ。
【0086】
これを踏まえ、秘密計算装置11は、ステップB4において、[wj]及びtから
【0087】
【数25】

【0088】
を計算し、計算結果を秘匿化数値二進変換装置12に送信する。
【0089】
その応答として、秘匿化数値二進変換装置12は、ステップB5において、[ek](k=p,p−1,・・・,1)を求め、[ek]を秘密計算装置11に送信する。
【0090】
ここで、ekは、
【0091】
【数26】

【0092】
を二進数表記したときの下位k桁目のビットを表し、pはtのビット長を表すものとする。このとき、
【0093】
【数27】

【0094】
となり、
【0095】
【数28】

【0096】
が成り立つことから、
【0097】
【数29】

【0098】
となり、秘密計算装置11は、[ek]を秘匿回路計算装置13に送信する。
【0099】
その応答として、秘匿回路計算装置13は、ステップB6において、
【0100】
【数30】

【0101】
を計算し、計算結果を秘密計算装置11に送信する。その計算結果は、論理演算結果の暗号文として秘密計算装置11から出力される。
【0102】
本実施例では、[ek](k=p,p−1,・・・,1)が全て0であるか否かを判断するために、
【0103】
【数31】

【0104】
回の秘匿回路計算を実行するだけで済むため、実施例1よりも更に秘匿回路計算装置13の負荷軽減が見込める。
【0105】
以上、OR演算を例に説明したが、AND演算やXOR演算であっても同様に処理可能である。
【0106】
例えば、AND演算であれば、
【0107】
【数32】

【0108】
の代わりに、
【0109】
【数33】

【0110】
とし、
【0111】
【数34】

【0112】
と置き換えて考えれば良い。
【0113】
以上、本発明を実施例を参照して説明したが、本発明は上記実施例に限定されものではない。本発明の構成や詳細には、本発明の範囲内で当業者が理解し得る様々な変更をすることができる。
【0114】
例えば、実施例2では、秘匿化数値二進変換装置12を二度利用したが、三度以上利用する方法やその効果は明らかである。
【0115】
また、実施例1,2では、秘密計算装置11と秘匿化数値二進変換装置12及び秘匿回路計算装置13とを分離して構成したが、秘密計算装置11の内部に秘匿化数値二進変換装置12及び秘匿回路計算装置13の機能を設けた構成としても良い。更に、この場合、その秘密計算装置11にて行われる秘密計算方法を、コンピュータに実行させるためのプログラムに適用しても良い。また、そのプログラムを記憶媒体に格納することも可能であり、ネットワークを介して外部に提供することも可能である。
【符号の説明】
【0116】
10 秘密計算システム
11 秘密計算装置
12 秘匿化数値二進変換装置
13 秘匿回路計算装置

【特許請求の範囲】
【請求項1】
ビットbi(i=1,2,・・・,n)を秘匿化したデータ[bi]を入力として、biを復元することなくbiの論理演算を行い、論理演算結果を出力する秘密計算システムであって、
AND演算を行う場合、
[bi]及びnを基に、
【数1】

を計算し、
当該計算結果を二進数表記した[wj](j=t,t−1,・・・,1、tはnのビット長)を求め、
[wj]が全て0であれば、
【数2】

を、そうでなければ、
【数3】

を論理演算結果として出力する、秘密計算システム。
【請求項2】
XOR演算を行う場合、
[bi]及びnを基に、
【数4】

を計算し、
当該計算結果を二進数表記した[wj](j=t,t−1,・・・,1、tはnのビット長)を求め、
1を論理演算結果として出力する、請求項1に記載の秘密計算システム。
【請求項3】
OR演算を行う場合、
[bi]及びnを基に、
【数5】

を計算し、
当該計算結果を二進数表記した[wj](j=t,t−1,・・・,1、tはnのビット長)を求め、
[wj]が全て0であれば、
【数6】

を、そうでなければ、
【数7】

を論理演算結果として出力する、請求項1または2に秘密計算システム。
【請求項4】
ビットbi(i=1,2,・・・,n)を秘匿化したデータ[bi]を入力として、biを復元することなくbiの論理演算を行い、論理演算結果を出力する秘密計算システムであって、
AND演算を行う場合、
[bi]及びnを基に、
【数8】

を計算し、
当該計算結果を二進数表記した[wj](j=t,t−1,・・・,1、tはnのビット長)を求め、
[wj]及びtを基に、
【数9】

を計算し、
当該計算結果を二進数表記した[ek](k=p,p−1,・・・,1、pはtのビット長)を求め、
[ek]が全て0であれば、
【数10】

を、そうでなければ、
【数11】

を論理演算結果として出力する、秘密計算システム。
【請求項5】
OR演算を行う場合、
[bi]及びnを基に、
【数12】

を計算し、
当該計算結果を二進数表記した[wj](j=t,t−1,・・・,1、tはnのビット長)を求め、
[wj]及びtを基に、
【数13】

を計算し、
当該計算結果を二進数表記した[ek](k=p,p−1,・・・,1、pはtのビット長)を求め、
[ek]が全て0であれば、
【数14】

を、そうでなければ、
【数15】

を論理演算結果として出力する、請求項4に記載の秘密計算システム。
【請求項6】
ビットbi(i=1,2,・・・,n)を秘匿化したデータ[bi]を入力として、biを復元することなくbiの論理演算を行い、論理演算結果を出力する秘密計算装置による秘密計算方法であって、
AND演算を行う場合、
[bi]及びnを基に、
【数16】

を計算するステップと、
当該計算結果を二進数表記した[wj](j=t,t−1,・・・,1、tはnのビット長)を求めるステップと、
[wj]が全て0であれば、
【数17】

を、そうでなければ、
【数18】

を論理演算結果として出力するステップと、を有する秘密計算方法。
【請求項7】
XOR演算を行う場合、
[bi]及びnを基に、
【数19】

を計算するステップと、
当該計算結果を二進数表記した[wj](j=t,t−1,・・・,1、tはnのビット長)を求めるステップと、
1を論理演算結果として出力するステップと、を有する請求項6に記載の秘密計算方法。
【請求項8】
OR演算を行う場合、
[bi]及びnを基に、
【数20】

を計算するステップと、
当該計算結果を二進数表記した[wj](j=t,t−1,・・・,1、tはnのビット長)を求めるステップと、
[wj]が全て0であれば、
【数21】

を、そうでなければ、
【数22】

を論理演算結果として出力するステップと、を有する請求項6または7に秘密計算方法。
【請求項9】
ビットbi(i=1,2,・・・,n)を秘匿化したデータ[bi]を入力として、biを復元することなくbiの論理演算を行い、論理演算結果を出力する秘密計算装置による秘密計算方法であって、
AND演算を行う場合、
[bi]及びnを基に、
【数23】

を計算するステップと、
当該計算結果を二進数表記した[wj](j=t,t−1,・・・,1、tはnのビット長)を求めるステップと、
[wj]及びtを基に、
【数24】

を計算するステップと、
当該計算結果を二進数表記した[ek](k=p,p−1,・・・,1、pはtのビット長)を求めるステップと、
[ek]が全て0であれば、
【数25】

を、そうでなければ、
【数26】

を論理演算結果として出力するステップと、を有する秘密計算方法。
【請求項10】
OR演算を行う場合、
[bi]及びnを基に、
【数27】

を計算するステップと、
当該計算結果を二進数表記した[wj](j=t,t−1,・・・,1、tはnのビット長)を求めるステップと、
[wj]及びtを基に、
【数28】

を計算するステップと、
当該計算結果を二進数表記した[ek](k=p,p−1,・・・,1、pはtのビット長)を求めるステップと、
[ek]が全て0であれば、
【数29】

を、そうでなければ、
【数30】

を論理演算結果として出力するステップと、を有する請求項9に秘密計算方法。
【請求項11】
請求項6から10のいずれか1項に記載の秘密計算方法をコンピュータに実行させるための秘密計算プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate


【公開番号】特開2010−164899(P2010−164899A)
【公開日】平成22年7月29日(2010.7.29)
【国際特許分類】
【出願番号】特願2009−8998(P2009−8998)
【出願日】平成21年1月19日(2009.1.19)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】