(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0004】
位置情報を秘匿した上で2点間の距離を求める際には、前述の準同型暗号を利用できる。しかしながら、準同型暗号による演算は処理負荷が大きいため、大規模なデータセットを対象にした場合、処理時間が膨大となっていた。
【0005】
本発明は、秘匿した2値の加減算を高速に行える演算システム、演算方法及び演算プログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明に係る演算システムは、第1の値を保持する第1ノードと、第2の値を保持する第2ノードと、前記第1の値及び前記第2の値の演算を行う第3ノードとを備え、前記第1ノードは、前記第1の値に対してパラメータ群を用いた演算値を要素とする少なくとも1つの行列を生成し、前記第2ノードは、前記第2の値に対して、前記パラメータ群との積が定数になるパラメータ群を用いた演算値を要素とする少なくとも1つの行列を生成し、前記第3ノードは、前記第1ノード及び前記第2ノードのそれぞれが生成した行列を掛け合わせて得られた結果の一部の要素に基づいて、前記第1の値及び前記第2の値の和又は差を含む演算式の値を出力する。
【0007】
前記第3ノードは、前記第1の値及び前記第2の値の和又は差の2乗と前記定数との積を出力してもよい。
【0008】
前記第1ノードは、第1のパラメータ群及び第2のパラメータ群を用いた演算値を要素とする第1の行列及び第2の行列を生成し、前記第2ノードは、前記第1のパラメータ群との積が第1の定数になる第3のパラメータ群、及び前記第2のパラメータ群との積が第2の定数になる第4のパラメータ群を用いた演算値を要素とする第3の行列及び第4の行列を生成し、前記第3ノードは、前記第1の行列と前記第3の行列とを掛け合わせて得られる行列の一部の要素に基づいて、前記第1の値及び前記第2の値の和又は差を含む2つの演算式のそれぞれ一部を合計した値を出力した後、前記第2の行列と前記第4の行列とを掛け合わせて得られる行列の一部の要素に基づいて、前記2つの演算式のうち、残りの部分を合計した値を出力してもよい。
【0009】
前記第1ノードは、第1のパラメータ群及び第2のパラメータ群を用いた演算値を要素とする第1の行列及び第2の行列を生成し、前記第2ノードは、前記第1のパラメータ群との積が第1の定数になる第3のパラメータ群、及び前記第2のパラメータ群との積が第2の定数になる第4のパラメータ群を用いた演算値を要素とする第3の行列及び第4の行列を生成し、前記第3ノードは、前記第1の行列と前記第3の行列とを掛け合わせて得られる行列の一部の要素に基づいて、前記第1の値及び前記第2の値の和又は差を含む2つの演算式のそれぞれ一部を合計した値を出力するノードと、前記第2の行列と前記第4の行列とを掛け合わせて得られる行列の一部の要素に基づいて、前記2つの演算式のうち、残りの部分を合計した値を出力するノードと、に分離されていてもよい。
【0010】
前記第1ノードは、生成した行列とランダム行列とを乗じて前記第3ノードに提供し、前記第2ノードは、前記ランダム行列の逆行列と生成した行列とを乗じて前記第3ノードに提供してもよい。
【0011】
本発明に係る演算方法は、第1の値を保持する第1ノードと、第2の値を保持する第2ノードと、前記第1の値及び前記第2の値の演算を行う第3ノードとを備えた演算システムにおいて、前記第1ノードが、前記第1の値に対してパラメータ群を用いた演算値を要素とする少なくとも1つの行列を生成し、前記第2ノードが、前記第2の値に対して、前記パラメータ群との積が定数になるパラメータ群を用いた演算値を要素とする少なくとも1つの行列を生成し、前記第3ノードが、前記第1ノード及び前記第2ノードのそれぞれが生成した行列を掛け合わせて得られた結果の一部の要素に基づいて、前記第1の値及び前記第2の値の和又は差を含む演算式の値を出力する。
【0012】
本発明に係る演算プログラムは、コンピュータを、前記第1ノード、前記第2ノード又は前記第3ノードとして機能させる。
【発明の効果】
【0013】
本発明によれば、秘匿した2値の加減算を高速に行える。
【発明を実施するための形態】
【0015】
[第1実施形態]
以下、本発明の第1実施形態について説明する。
図1は、本実施形態に係る演算システム1の構成を示す図である。
【0016】
演算システム1は、演算対象である第1の値p及び第2の値qの一方をそれぞれ保持するノードX(第1ノード)及びノードY(第2ノード)と、2値の演算を行うノードZ(第3ノード)とを備える。
ノードX及びノードYは、値p及びqを定数rに基づくパラメータで秘匿化した行列を、ノードZに提供する。
ノードZは、演算結果をノードX又はノードY、あるいは他のノードへ提供し、演算結果を受信したノードは、与えられた情報(定数r)に基づいて、2値の和又は差を算出する。
【0017】
ここで、各ノードX、Y及びZは、サーバ又はPCなどの情報処理装置(コンピュータ)により構成され、各ノードの記憶部に格納された所定のプログラム(演算プログラム)を各ノードの制御部が実行することにより、本実施形態の機能を実現する。
【0018】
図2は、本実施形態に係る演算方法を示すフローチャートである。
ここでは、ノードXが保持する数値pと、ノードYが保持する数値qとの和又は差を、ノードZの演算結果を用いてノードXが取得する。
【0019】
ステップS1において、ノードXとノードYとの間で、次式を満たすランダムな定数r及びパラメータ群a
1,a
2,b
1,b
2,c
1,c
2,d
1,d
2、並びにランダムな2×2の行列Rを取り決める。
a
1a
2=b
1c
2=c
1b
2=d
1d
2=r
【0020】
ステップS2において、ノードXは、数値pに対してパラメータ群を用いた演算値を要素とする行列Aを生成し、ランダム行列Rとの積ARを保持する。行列Aは、例えば次式のように生成される。
【数1】
【0021】
ステップS3において、ノードYは、数値qに対してパラメータ群を用いた演算値を要素とする行列Bを生成し、ランダム行列Rの逆行列R
−1との積R
−1Bを保持する。行列Bは、例えば次式のように生成される。
【数2】
【0022】
ステップS4において、ノードXは、行列ARをノードZへ送信する。
ステップS5において、ノードYは、行列R
−1BをノードZへ送信する。
ステップS6において、ノードZは、ノードX及びノードYから受信した行列を掛け合わせ、行列ARR
−1B=ABを生成する。
【数3】
続いて、ノードZは、行列ABの要素のうち、1行1列及び2行2列の値を足す。
a
1a
2p
2+b
1c
2q
2±2c
1b
2pq=r(p±q)
2
ステップS7において、ノードZは、計算結果r(p±q)
2を、ノードXへ送信する。
【0023】
ステップS8において、ノードXは、受信した計算結果r(p±q)
2を定数rで割り2値の和又は差の2乗を、あるいは、さらに平方根を求めて2値の和又は差を算出する。
なお、計算結果をノードX又はノードYとは異なる別のノードに提供する場合、このノードへは、定数rも提供される。
【0024】
また、行列A、Bの各要素は、前述の例には限られない。例えば、
【数4】
とし、積ABの1行1列及び2行2列の値を足すと、前述と同様にr(p±q)
2が得られる。
また、例えば、
【数5】
とし、積ABの1行2列及び2行1列の値を足すと、前述と同様にr(p±q)
2が得られる。
このように、積ABの要素のいずれかを組み合わせることにより、例えば(p±q)
2の展開式と定数rとの積が構成されるように、行列A及びBが設定されればよい。
【0025】
本実施形態によれば、演算システム1は、値p及びqをランダムなパラメータを用いて演算し、行列によって秘匿した状態で保持する。そして、演算システム1は、行列演算の結果の一部から、値pとqとの和又は差がパラメータにより秘匿された計算結果を出力する。したがって、演算システム1は、簡便な行列の乗算及び数値計算のみにより加減算を実施できるので、データが多量であっても、秘匿した2値の加減算を高速に行える。
【0026】
また、演算システム1は、行列の一部の要素から値pとqとの和又は差の2乗と定数rとの積を抽出する。これにより、演算システム1は、例えば2点間のユークリッド距離など、差の2乗を用いた計算を効率的に行える。
【0027】
また、演算システム1は、値p及びqから生成した行列に対して、ランダム行列を乗じて保持するので、行列及びパラメータの漏洩に対して安全性が向上する。
【0028】
[第2実施形態]
以下、本発明の第2実施形態について説明する。
本実施形態では、ノードX及びノードYは、値p及びqを、第1の定数r及び第2の定数r’に基づく2セットのパラメータ群で秘匿化した2つの行列を、それぞれノードZに提供する。
ノードZは、演算結果をノードX又はノードY、あるいは他のノードへ提供し、演算結果を受信したノードは、与えられた情報(r+r’)に基づいて、2値の和又は差を算出する。
【0029】
図3は、本実施形態に係る演算方法を示すフローチャートである。
ここでは、ノードXが保持する数値pと、ノードYが保持する数値qとの和又は差を、ノードZの演算結果を用いてノードXが取得する。
【0030】
ステップS11において、ノードXとノードYとの間で、ランダムな定数rに対応して、第1のパラメータ群a
1,b
1,c
1,d
1と第3のパラメータ群a
2,b
2,c
2,d
2とを、また、ランダムな定数r’に対応して、第2のパラメータ群a’
1,b’
1,c’
1,d’
1と第4のパラメータ群a’
2,b’
2,c’
2,d’
2とを、次式を満たすように取り決める。また、ランダムな2×2の行列R及びR’がノードXとノードYとの間で取り決められる。
a
1a
2=b
1c
2=c
1b
2=d
1d
2=r
a’
1a’
2=b’
1c’
2=c’
1b’
2=d’
1d’
2=r’
【0031】
ステップS12において、ノードXは、数値pに対して第1のパラメータ群及び第2のパラメータ群を用いた演算値を要素とする第1の行列A及び第2の行列A’を生成し、それぞれランダム行列R及びR’を乗じてAR及びA’R’を保持する。行列A及びA’は、例えば次式のように生成される。
【数6】
【0032】
ステップS13において、ノードYは、数値qに対して第3のパラメータ群及び第4のパラメータ群を用いた演算値を要素とする第3の行列B及び第4の行列B’を生成し、それぞれランダム行列Rの逆行列R
−1及びR’の逆行列R’
−1を乗じてR
−1B及びR’
−1B’を保持する。行列B及びB’は、例えば次式のように生成される。
【数7】
【0033】
ステップS14において、ノードXは、行列ARをノードZへ送信する。
ステップS15において、ノードYは、行列R
−1BをノードZへ送信する。
ステップS16において、ノードZは、ノードX及びノードYから受信した行列を掛け合わせ、行列ARR
−1B=ABを生成する。
【数8】
続いて、ノードZは、行列ABの要素のうち、1行1列及び2行2列の値を足す。
a
1a
2p
2+b
1c
2q
2±2c’
1b’
2pq=r(p
2+q
2)±2r’pq
ステップS17において、ノードZは、計算結果を、ノードXへ送信する。
ステップS18において、ノードZは、受信データ及び計算結果を削除する。
【0034】
ステップS19において、ノードXは、行列A’R’をノードZへ送信する。
ステップS20において、ノードYは、行列R’
−1B’をノードZへ送信する。
ステップS21において、ノードZは、ノードX及びノードYから受信した行列を掛け合わせ、行列A’R’R’
−1B’=A’B’を生成する。
【数9】
続いて、ノードZは、行列ABの要素のうち、1行1列及び2行2列の値を足す。
a’
1a’
2p
2+b’
1c’
2q
2±2c
1b
2pq
=r’(p
2+q
2)±2rpq
ステップS22において、ノードZは、計算結果を、ノードXへ送信する。
ステップS23において、ノードZは、受信データ及び計算結果を削除する。
【0035】
ステップS24において、ノードXは、受信した計算結果r(p
2+q
2)±2r’pqとr’(p
2+q
2)±2rpqとを足し、定数(r+r’)で割って2値の和又は差の2乗を、あるいは、さらに平方根を求めて2値の和又は差を算出する。
なお、計算結果をノードX又はノードYとは異なる別のノードに提供する場合、このノードへは、定数(r+r’)も提供される。
【0036】
本実施形態によれば、演算システム1は、行列AとBとの組による計算結果、及び行列A’とB’との組による計算結果の両方を用いて値p及びqの加減算を行う。したがって、演算システム1は、より秘匿性を高めて、各行列の要素又はパラメータなどの漏洩に対して安全性を向上できる。
また、ノードZにおいて、計算結果を送信したあとにデータを削除することにより、複数のデータを組み合わせて値p又はqが求められるリスクが低減される。
【0037】
なお、本実施形態における前述の行列A,A’,B,B’の要素は一例であり、積ABのいずれかの要素、及び積A’B’のいずれかの要素を組み合わせることにより、例えば(p±q)
2の展開式と定数(r+r’)との積が構成されるように設定されればよい。
【0038】
[第3実施形態]
以下、本発明の第3実施形態について説明する。
本実施形態では、ノードX及びノードYは、値p及びqを、第1の定数r及び第2の定数r’に基づく2セットのパラメータ群で秘匿化した2つの行列を、ノードZ
1及びノードZ
2に提供する。
ノードZ
1及びノードZ
2は、演算結果をノードX又はノードY、あるいは他のノードへ提供し、演算結果を受信したノードは、与えられた情報(r+r’)に基づいて、2値の和又は差を算出する。
【0039】
図4は、本実施形態に係る演算方法を示すフローチャートである。
ここでは、ノードXが保持する数値pと、ノードYが保持する数値qとの和又は差を、ノードZ
1及びノードZ
2の演算結果を用いてノードXが取得する。
【0040】
ステップS31〜S33は、第2実施形態(
図3)のステップS11〜S13と共通である。
ステップS34〜S41では、第2実施形態(
図3)のステップS14〜S18と、ステップS19〜S23とが、それぞれノードZ
1及びノードZ
2で並列に処理される。
ステップS42は、第2実施形態(
図3)のステップS24と共通である。
【0041】
本実施形態によれば、演算システム1は、行列AとBとの組による計算結果、及び行列A’とB’との組による計算結果の両方を用いて値p及びqの加減算を行う。さらに、ノードZが2つに分離され、それぞれで行列計算を分担するので、ノードZ
1及びノードZ
2のそれぞれが取得できるデータが制限され、安全性が向上する。
また、ノードZ
1及びノードZ
2で並列処理されることにより、処理が高速化される。
【0042】
[応用例1]
前述のいずれかの実施形態により、n次元のユークリッド距離を計算する応用例1を説明する。
【0043】
n次元のユークリッド距離の計算では、直交座標系における点P(p
1,p
2,・・・,P
n)及び点Q(q
1,q
2,・・・,q
n)に対して、それぞれの成分を、
【数10】
と行列に変換する。
【0044】
これらの行列の積は、
【数11】
となるので、1行1列及び2行2列の値を足すと、(p
k−q
k)
2が求まる。
したがって、各次元(k)の成分を加算して、平方根を求めることにより、n次元のユークリッド距離d(P,Q)が算出される。
【数12】
【0045】
[応用例2]
前述のいずれかの実施形態により、緯度経度情報から距離を計算する応用例2を説明する。
【0046】
ヒュベニの公式によれば、緯度p
1で経度p
2の地点と、緯度q
1で経度q
2の地点との距離dは、
【数13】
で与えられる。ただし、a及びbは、それぞれ赤道半径及び極半径である。
したがって、前述の実施形態により(p
1−q
1)
2、(p
2−q
2)
2、p
1+q
1を求め、この式に代入することで、地点間の距離が算出される。
【0047】
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、本実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本実施形態に記載されたものに限定されるものではない。
【0048】
演算システム1による演算方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、情報処理装置(コンピュータ)にインストールされる。また、これらのプログラムは、CD−ROMのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。さらに、これらのプログラムは、ダウンロードされることなくネットワークを介したWebサービスとしてユーザのコンピュータに提供されてもよい。