説明

ベクトル秘匿型内積計算システム、ベクトル秘匿型内積計算方法及び暗号鍵共有システム

【課題】通信コスト及び計算コストを低減することのできるベクトル秘匿型内積計算システム、ベクトル秘匿型内積計算方法、及び暗号鍵共有システムを提供する。
【解決手段】第1計算装置100は、乱数Wiに基づくスカラー値と乱数Rjとに基づいてn次元ベクトルVaをn次元ベクトルに線形変換し、線形変換したn次元ベクトルにおける各要素に対して乱数Miで除算した剰余を算出し、該剰余を各要素とするn次元変換ベクトルXを第2計算装置110に送信する変換部104を有し、第2計算装置110は、受信したn次元変換ベクトルXとn次元ベクトルVbとに基づいて内積値Zを算出し、該内積値Zを第1計算装置100に送信する計算部114を有し、第1計算装置100は、前記スカラー値の逆数と受信した内積値Zとに基づいてスカラー値を算出し、該スカラー値に対して乱数Miで除算した剰余を算出する逆変換部105をさらに有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、2者間で互いにベクトルを秘匿したまま内積を計算可能なベクトル秘匿型内積計算システム、ベクトル秘匿型内積計算方法及び暗号鍵共有システムに関する。
【背景技術】
【0002】
複数のパーティーに分散されたデータを、それぞれのパーティーが秘密にしたまま、協力して様々な計算を行うプロトコル(マルチパーティープロトコル)が盛んに研究されている。マルチパーティープロトコルは、電子投票や電子契約、プライバシーを保護したデータマイニングなど、様々な分野への応用が考えられている。こうした様々な応用プロトコルを実現するための基本的なプロトコルとして、ベクトルの内積計算プロトコルがある。これは、2者(AliceとBob)がそれぞれ秘密のベクトルVa、Vbを保持している状態で、互いに秘密ベクトルを明かすことなく、Aliceが内積値Va・Vbを計算するプロトコルである。
【0003】
内積計算プロトコルの実現方法としては、暗号化関数が準同型性を持つ公開鍵暗号であるPaillier暗号(例えば、非特許文献2参照)を利用する方法が知られている(例えば、非特許文献1参照)。具体的には以下の通りである。
【0004】
まずAliceが秘密鍵と公開鍵のペアを生成し、自分の秘密ベクトルVa=(a1,a2,…,an)の各要素を公開鍵により暗号化して、暗号文 E(a1),E(a2),…,E(an)をBobに送信する(E(・)は暗号化関数とする)。Bobはこれらの暗号文を受信し、自分の秘密ベクトルVb=(b1,b2,…,bn)を用いて、E(・)の準同型性を利用し、以下のように内積値の暗号文を計算する。
(数1)
e=(E(a1b1)×(E(a2b2)×…×(E(anbn) mod M
=E(a1×b1+a2×b2+…+an×bn
=E(Va・Vb)
但し、Mは、例えば2048ビットの整数である。BobはAliceにeを送り返す。Aliceは秘密鍵を用いてeを復号化し、内積値Va・Vbを得る。
【0005】
一方、暗号化通信に不可欠な、暗号鍵の共有方法(鍵共有プロトコル)として、素因数分解問題の困難性に安全性の根拠を置くRSA暗号(例えば、非特許文献3参照)に基づく方式や、離散対数問題に基づくDiffie-Hellman鍵共有の方法(例えば、非特許文献4参照)が知られている。
【非特許文献1】Bart Goethals, Sven Laur, Helger Lipmaa and Taneli Mielika"inen. "On Private Scalar Product Computation for Privacy-Preserving Data Mining", The 7th Annual International Conference in Information Security and Cryptology(ICISC2004), vol. 3506 of Lecture Notes in Computer Science, pages 104-120(2004).
【非特許文献2】Pascal Paillier. "Public-Key Cryptosystems Based on Composite Degree Residuosity Classes", In Jacques Stern, editor, Advances in Cryptology EUROCRYPT '99, volume 1592 of Lecture Notes in Computer Science, pages 223−238, Prague, Czech Republic, 2−6 May 1999. Springer-Verlag.
【非特許文献3】R.L.Rivest, A.Shamir, and L.Adelman, "Method for Obtaining Digital Signature and Public-key Cryptsystems", Communications of the ACM, Vol. 21 (2), pp.120−126. 1978.
【非特許文献4】W. Diffie and M. E. Hellman, "New Directions in Cryptography", IEEE Transactions on Information Theory, vol.IT-22, No.6, pp.644-654, Nov, 1976.
【発明の開示】
【発明が解決しようとする課題】
【0006】
ベクトルの内積計算プロトコルである非特許文献1に記載の方法は、非特許文献2に記載のPaillier暗号を利用している。しかしながら、従来の方法では、通信コストと計算コストが大きいという問題がある。
【0007】
実際、Paillier暗号において推奨されている鍵長では、暗号文のサイズが2048ビットであり、ベクトルがn次元の場合、通信量は 2048×nビット以上となる。また暗号化、復号化の計算では、巨大な整数を法としたべき乗計算をnに比例した回数実行する必要があり、計算コストが大きい。特に、扱うベクトルの次元nが大きい場合や、内積計算処理を頻繁に行うシステム(巨大なDBを対象としたデータマイニングなど)では、通信コスト、計算コストの削減が必要となるという問題点があった。
【0008】
本発明は前記問題点に鑑みてなされたものであり、その目的とするところは、通信コスト及び計算コストを低減することのできるベクトル秘匿型内積計算システム、ベクトル秘匿型内積計算方法及び暗号鍵共有システムを提供することにある。
【課題を解決するための手段】
【0009】
本発明は前記目的を達成するために、各要素が整数である第1のn次元ベクトル(nは正の整数)を秘匿する第1の計算装置と、各要素が整数である第2のn次元ベクトルを秘匿する第2の計算装置とを備えるベクトル秘匿型内積計算システムにおいて、前記第1の計算装置は、前記第2の計算装置との間で情報を送受信可能な第1通信部と、整数である第1、第2及び第3の乱数を生成する第1生成部と、前記第1の乱数に基づくm行m列の正則行列(mは正の整数)と前記第2の乱数とに基づいて前記第1のn次元ベクトルをm行n列の行列に線形変換し、線形変換した該m行n列の行列における各要素に対して前記第3の乱数で除算した剰余を算出し、該剰余を各要素とするm行n列の変換行列を前記第1通信部により送信する変換部とを有し、前記第2の計算装置は、前記第1の計算装置との間で情報を送受信可能な第2通信部と、前記第2通信部により受信した前記m行n列の変換行列と前記第2のn次元ベクトルとに基づいてm次元ベクトルを算出し、該m次元ベクトルを前記第2通信部により送信する計算部とを有し、前記第1の計算装置は、前記m行m列の正則行列の前記第3の乱数を法とした逆行列と前記第1通信部により受信した前記m次元ベクトルとに基づいてm次元ベクトルを算出し、該m次元ベクトルにおける所定の要素に対して前記第3の乱数で除算した剰余を算出する逆変換部をさらに有するベクトル秘匿型内積計算システムを提案する。
【0010】
また、本発明は前記目的を達成するために、各要素が整数である第1のn次元ベクトル(nは正の整数)を秘匿する第1の計算装置と、各要素が整数である第2のn次元ベクトルを秘匿する第2の計算装置とを有するシステムに用いられるベクトル秘匿型内積計算方法であって、前記第1の計算装置は、前記第2の計算装置との間で情報を送受信可能な第1通信部を有し、前記第2の計算装置は、前記第1の計算装置との間で情報を送受信可能な第2通信部を有しており、前記第1の計算装置により、整数である第1、第2及び第3の乱数を生成する第1生成ステップと、前記第1の計算装置により、前記第1の乱数に基づくm行m列の正則行列(mは正の整数)と前記第2の乱数とに基づいて前記第1のn次元ベクトルをm行n列の行列に線形変換し、線形変換した該m行n列の行列における各要素に対して前記第3の乱数で除算した剰余を算出し、該剰余を各要素とするm行n列の変換行列を前記第1通信部により送信する変換ステップと、前記第2の計算装置により、前記第2通信部により受信した前記m行n列の変換行列と前記第2のn次元ベクトルとに基づいてm次元ベクトルを算出し、該m次元ベクトルを前記第2通信部により送信する計算ステップと、前記第1の計算装置により、前記m行m列の正則行列の前記第3の乱数を法とした逆行列と前記第1通信部により受信した前記m次元ベクトルとに基づいてm次元ベクトルを算出し、該m次元ベクトルにおける所定の要素に対して前記第3の乱数で除算した剰余を算出する逆変換ステップとを備えるベクトル秘匿型内積計算方法を提案する。
【0011】
本発明によれば、第1の計算装置によって、第1の乱数に基づくm行m列の正則行列と第2の乱数とに基づいて第1のn次元ベクトルがm行n列の行列に線形変換され、線形変換した当該m行n列の行列における各要素に対して第3の乱数で除算した剰余が算出され、当該剰余を各要素とするm行n列の変換行列が第1通信部により送信される。また、第2の計算装置によって、第2通信部により受信したm行n列の変換行列と第2のn次元ベクトルとに基づいてm次元ベクトルが算出され、当該m次元ベクトルが第2通信部により送信される。さらに、第1の計算装置によって、m行m列の正則行列の第3の乱数を法とした逆行列と第1通信部により受信したm次元ベクトルとに基づいてm次元ベクトルが算出され、当該m次元ベクトルにおける所定の要素に対して第3の乱数で除算した剰余が算出される。これにより、従来と同程度の安全性を確保できるものとして、例えばm=1、第1及び第3の乱数が100ビットの整数である場合、通信量は送受信とも100×nビット程度となり、第1の計算装置における計算は第3の乱数を法とする掛け算であり、第2の計算装置における計算はn回の掛け算と足し算となる。
【発明の効果】
【0012】
本発明によれば、従来と同程度の安全性を確保できるものとして、例えばm=1、第1及び第3の乱数が100ビットの整数である場合、通信量は第1計算装置から第2計算装置への送受信が100×nビットで第2計算装置から第1計算装置への送受信が100ビット程度となり、第1の計算装置における計算は第3の乱数を法とする掛け算であり、第2の計算装置における計算はn回の掛け算と足し算となる。これにより、従来のような送受信とも2048×nビット以上の通信量や2048ビットの数を法とするべき乗計算を必要とせず、従来よりも小さい法を用いることができ、かけ算や足し算はべき乗計算よりも計算コストが数百分の一程度でありことから、従来よりも通信コスト及び計算コストを低減することができる。
【発明を実施するための最良の形態】
【0013】
以下、図面を参照しながら本発明の一実施の形態を詳述する。
【0014】
[第1実施形態]
図1乃至図3は本発明の第1実施形態を示すものである。まず、図1及び図2を用いてベクトル秘匿型内積計算システムの構成を説明する。図1は、ベクトル秘匿型内積計算システムの機能構成を説明する概略構成図である。
【0015】
図1に示すように、ベクトル秘匿型内積計算システム1は、各要素が整数であるn次元ベクトルVa=(A1,A2,…,An)(nは正の整数)を秘匿する第1計算装置100と、各要素が整数であるn次元ベクトルVb=(B1,B2,…,Bn)を秘匿する第2計算装置110とを備え、正の整数である所定数Qが設定される第1計算装置100及び第2計算装置110が互いに自己の有するn次元ベクトルVa,Vbを秘密にしながら通信し、第1計算装置100が以下の式(1)で計算される剰余Cを算出するためのものである。
(数2)
C=Va・Vb mod Q
=A11+A22+…+Ann mod Q …(1)
【0016】
第1計算装置100と第2計算装置110とは、ネットワークN1を介して互いに接続される。第1計算装置100は、入力部101と、乱数生成部102と、一時記憶部103と、変換部104と、逆変換部105と、出力部106とから構成される。
【0017】
入力部101は、前述のn次元ベクトルVaが入力される。乱数生成部102は、後述する、整数の乱数を生成する。一時記憶部103は生成した乱数を一時的に記憶する。変換部104は、生成した乱数を用いてn次元ベクトルVaの各要素値を変換して変換ベクトルXを作成し、第2計算装置110に送信する。逆変換部105は、第2計算装置110から送信される後述の内積値Zを受信し、生成した乱数と受信した内積値Zとから剰余Cを算出する。出力部106は、算出された剰余Cを出力する。
【0018】
第2計算装置110は、入力部111と、乱数生成部112と、拡張部113と、計算部114とから構成される。
【0019】
入力部111は、前述のn次元ベクトルVbが入力される。乱数生成部102は、後述する、整数の乱数を生成する。拡張部113は後述するn次元拡張ベクトルYを作成する。計算部104は、第1計算装置100から送信されるn次元変換ベクトルXを受信し、受信したn次元変換ベクトルXとn次元拡張ベクトルYとの内積値Zを計算して第1計算装置100に送信する。
【0020】
本実施形態では、第1計算装置100の入力部101にn次元ベクトルVaが入力され、第2計算装置110の入力部111にn次元ベクトルVbが入力されるが、これに限定されず、第1計算装置100がn次元ベクトルVaを生成し、第2計算装置110がn次元ベクトルVbを生成するようにしてもよい。
【0021】
図2は、図1に示した第1計算装置及び第2計算装置のハードウェア構成を説明する概略構成図である。
【0022】
図2に示すように、第1計算装置100及び第2計算装置110は、それぞれCPU500と、メモリ501と、HDD502と、入出力装置503と、通信装置504とから構成され、CPU500、メモリ501、HDD502、入出力装置503、及び通信装置504は、内部バス505を介して互いに接続される。
【0023】
CPU500は、第1計算装置100では図1に示した乱数生成部102、変換部104及び逆変換部105に対応し、第2計算装置110では乱数生成部112、拡張部113及び計算部114に対応する。メモリ501又はHDD502は、図1に示した一時記憶部103に対応する。入出力装置503は、第1計算装置100では図1に示した入力部101及び出力部106に対応し、第2計算装置110では入力部111に対応する。通信計算装置504は、第1計算装置100と第2計算装置110との間で情報の送受信を可能にするものであり、第1計算装置100では図1に示した変換部104及び逆変換部105に用いられ、第2計算装置110では計算部114に用いられる。なお、第1計算装置100のメモリ501又はHDD502は、システムパラメータとして前述の所定数Q及びnを記憶し、セキュリティパラメータとして後述する正の整数の所定数R,S,及びpを記憶する。また、第2計算装置110のメモリ501又はHDD502は、システムパラメータとして前述の所定数Q及びnを記憶し、セキュリティパラメータとして後述する正の整数の所定数Sを記憶する。
【0024】
次に、図3を用いてベクトル秘匿型内積計算システムの動作を説明する。図3は、第1実施形態に係るベクトル秘匿型内積計算システムの動作を説明するフローチャートである。
【0025】
図3に示すように、まず、第1計算装置100の入力部101に前述のn次元ベクトルVaが入力される(S200)。
【0026】
次に、乱数生成部102は、システムパラメータとして記憶する所定数Q及びnと、セキュリティパラメータとして記憶する所定数R,S及びpとに対し、以下の式(2)〜(6)を満たすように、乱数Rj(j=1,2,…,n)と、乱数Mi(i=1,2,…,p)と、乱数Wi(i=1,2,…,p)とを生成し、一時記憶部103に記憶する(S201)。
(数3)
1,R2,…,Rn<R …(2)
1>nRSQ2 …(3)
i>nRSQ2i-1(i=2,3,…,p) …(4)
i<Mi …(5)
GCD(Wi,Mi)=1 …(6)
【0027】
ここで、GCD(a,b)は、a,bの最大公約数を表すものであり、式(6)を満たすためには、まず、乱数Mi,Miをランダムに生成し、ユークリッドの互除法を用いてGCD(Mi,Mi)を計算し、これが1でない場合に、乱数Mi,Miを再度生成する。
【0028】
次に、変換部104は、n次元ベクトルVaの各要素Aj(j=1,2,…,n)に対し、以下の式(7)〜(9)を計算してn次元変換ベクトルX=(X1,X2,…,Xn)を算出し、通信装置504により第2計算装置110に送信する(S202)。このように、S201の処理で生成された乱数Rj、Mi及びWiを用い、n次元ベクトルVaの各要素Ajに対し、乱数Rjで拡張(1次元変換)した上で、乱数Wiで線形変換し、乱数Miで剰余を算出するので、第2計算装置110は送信されたn次元変換ベクトルXからn次元ベクトルVaを知ることができず、第2計算装置110に対してn次元ベクトルVaが秘匿される。
(数4)
1,j=Rj・Q+Aj …(7)
i+1,j=Wj・Xi,j mod Mi(i=1,2,…,pについて繰り返す) …(8)
j=Xp+1,j …(9)
【0029】
本実施形態では、n次元変換ベクトルXからn次元ベクトルVaを算出又は予測することを困難にして安全性を高めるために、式(7)によりn次元ベクトルVaの各要素Ajを拡張しているが、これに限定されず、高い安全性が要求されない場合や他の方法によって安全性を高めることができる場合には、n次元ベクトルVaの各要素Ajを拡張しなくてもよい。また、同様の理由で、式(8)により剰余をp回算出しているが、所定数pは1であってもよい。この場合、S201の処理において、乱数生成部102は乱数Rjを生成せずに乱数M及びWのみを生成し、S202の処理において、変換部104は以下の式(8)’を計算してn次元変換ベクトルX=(X1,X2,…,Xn)を算出する。このように、S201の処理で生成された乱数M及びWを用い、n次元ベクトルVaの各要素Ajに対し、乱数Wで線形変換し、乱数Mで剰余を算出するので、各要素Ajを拡張(1次元変換)しなくても、第2計算装置110は送信されたn次元変換ベクトルXからn次元ベクトルVaを知ることができず、第2計算装置110に対してn次元ベクトルVaが秘匿される。
(数5)
j=W・Aj mod M(j=1,2,…,n) …(8)’
【0030】
一方、第2計算装置110の入力部111に前述のn次元ベクトルVbが入力される(S210)。
【0031】
次に、乱数生成部112は、以下の式(10)を満たすように、乱数Sj(j=1,2,…,n)を生成する(S211)。
(数6)
1,S2,…,Sn<S …(10)
【0032】
次に、拡張部113は、n次元ベクトルVbの各要素Bj(j=1,2,…,n)に対し、以下の式(11)を計算してn次元拡張ベクトルY=(Y1,Y2,…,Yn)を算出する(S212)。
(数7)
j=Sj・Q+Bj …(11)
【0033】
なお、S210〜S212の処理は、前述のS200〜S202の処理の前又は後、若しくは並行して行ってもよい。
【0034】
次に、計算部114は、通信装置504により第1計算装置100から変換ベクトルXを受信し、以下の式(12)を計算して内積値Zを通信装置504により第1計算装置100に送信する(S213)。このように、S211の処理で生成された乱数Sjを用い、n次元ベクトルVbの各要素Bjに対し、乱数Sjで拡張(1次元変換)した上で、n次元変換ベクトルXとの内積値Zを算出し、算出された内積値Zはスカラー値(1次元ベクトル)であるので、第1計算装置100は送信された内積値Zからn次元ベクトルVbを知ることができず、第2計算装置110に対してn次元ベクトルVbが秘匿される。
(数8)
Z=X1・B1+X2・B2+…+Xn・Bn …(12)
【0035】
本実施形態では、前述と同様の理由で、式(11)によりn次元ベクトルVbの各要素Bjを拡張しているが、これに限定されず、n次元ベクトルVbの各要素Bjを拡張しなくてもよい。この場合、S211及びS212の処理は行わず、S210の処理の次に、S213の処理において、計算部114は以下の式(12)’を計算して内積値Zを算出する。このように、n次元変換ベクトルXとn次元ベクトルVbとの内積値Zを算出し、算出された内積値Zはスカラー値(1次元ベクトル)であるので、各要素Bjを拡張(1次元変換)しなくても、第1計算装置100は送信された内積値Zからn次元ベクトルVbを知ることができず、第2計算装置110に対してn次元ベクトルVbが秘匿される。
(数9)
Z=X1・B1+X2・B2+…+Xn・Bn …(12)’
【0036】
次に、第1計算装置100の逆変換部105は、通信装置504により第2計算装置110から内積値Zを受信し、一時記憶部103に記憶された前述の乱数Miと乱数Wiとを用いて以下の式(13)〜(15)を計算し、剰余Cを算出する(S203)。これにより、従来と同程度の安全性を確保できるものとして、例えば乱数Wi及びMiが100ビットの整数である場合、通信量は送受信とも100×nビット程度となり、第1計算装置100における計算は乱数Miを法とする掛け算であり、第2計算装置110における計算はn回の掛け算と足し算となる。また、このように、第1計算装置100及び第2計算装置110が互いに自己の有するn次元ベクトルVa,Vbを秘密にしながら、式(2)〜(15)により算出される剰余Cは、式(1)により算出される剰余Cと等しくなる。
(数10)
p+1=Z …(13)
i=Wi-1・Zi+1 mod Mi(i=p,p−1,…,1について繰り返す) …(14)
C=Z1 mod Q …(15)
【0037】
ここで、n次元ベクトルVaの各要素Aj(j=1,2,…,n)とn次元ベクトルVbの各要素Bj(j=1,2,…,n)とにおける最大値Nに対し、以下の式(16)を満たすようにQを設定すると、剰余Cはn次元ベクトルVaとn次元ベクトルVbとの内積値Va・Vbに等しくなる。これにより、第1計算装置100及び第2計算装置110が互いに自己の有するn次元ベクトルVa,Vbを秘密にしながら、正確な内積値Va・Vbを算出することができる。
(数11)
Q>n・N2 …(16)
【0038】
本実施形態では、前述と同様の理由で、式(14)により剰余をp回算出しているが、所定数pは1であってもよい。また、前述と同様の理由で、式(15)により法Qの剰余を算出しているが、これに限定されず、法Qの剰余を算出しなくてもよい。この場合、S203の処理において、逆変換部105は以下の式(14)’を計算して剰余Cを算出する。このように、第1計算装置100及び第2計算装置110が互いに自己の有するn次元ベクトルVa,Vbを秘密にしながら、式(8)’、(12)’、(14)’により算出される剰余Cは、n次元ベクトルVaとn次元ベクトルVbとの内積値Va・Vbに等しくなるので、正確な内積値Va・Vbを算出することができる。
(数12)
C=W-1・Z mod M …(14)’
【0039】
最後に、出力部106は剰余Cを出力する(S204)。
【0040】
このように、本実施形態によれば、第1計算装置100によって、乱数Wi(i=1,2,…,p)に基づくスカラー値(1行1列の正則行列)と乱数Rj(j=1,2,…,n)とに基づいてn次元ベクトルVaがn個のスカラー値(1行n列の行列)に線形変換され、線形変換した当該n個のスカラー値(1行n列の行列)に対して乱数Mi(i=1,2,…,p)で除算した剰余が算出され、当該剰余を各要素とするn次元変換ベクトルX(1行n列の変換行列)が通信装置504により送信される。また、第2計算装置110によって、通信装置504により受信したn次元変換ベクトルX(1行n列の変換行列)とn次元ベクトルVbとに基づいて内積値Z(1次元ベクトル)が算出され、当該内積値Z(1次元ベクトル)が通信装置504により送信される。さらに、第1計算装置100によって、スカラー値(1行1列の正則行列)の乱数Mi(i=1,2,…,p)を法とした逆数(逆行列)と通信装置504によりにより受信した内積値Z(1次元ベクトル)とに基づいてスカラー値(1次元ベクトル)が算出され、当該スカラー値(1次元ベクトル)に対して乱数Mi(i=1,2,…,p)で除算した剰余Cが算出される。これにより、従来と同程度の安全性を確保できるものとして、例えば乱数Wi及びMiが100ビットの整数である場合、通信量は送受信とも100×nビット程度となり、第1計算装置100における計算は乱数Miを法とする掛け算であり、第2計算装置110における計算はn回の掛け算と足し算となる。これにより、従来のような送受信とも2048×nビット以上の通信量や2048ビットの数を法とするべき乗計算を必要とせず、従来よりも小さい乱数Miを法とし、べき乗計算よりも計算速度が数百分の一程度のかけ算や足し算で計算することができることから、従来よりも通信コスト及び計算コストを低減することができる。
【0041】
また、S201の処理で生成された乱数Rj、Mi及びWiを用い、n次元ベクトルVaの各要素Ajに対し、乱数Rjで拡張(1次元変換)した上で、乱数Wiで線形変換し、乱数Miで剰余を算出するので、第2計算装置110は送信されたn次元変換ベクトルXからn次元ベクトルVaを知ることができず、第2計算装置110に対してn次元ベクトルVaが秘匿される。S211の処理で生成された乱数Sjを用い、n次元ベクトルVbの各要素Bjに対し、乱数Sjで拡張(1次元変換)した上で、n次元変換ベクトルXとの内積値Zを算出し、算出された内積値Zはスカラー値(1次元ベクトル)であるので、第1計算装置100は送信された内積値Zからn次元ベクトルVbを知ることができず、第2計算装置110に対してn次元ベクトルVbが秘匿される。これにより、第1計算装置100及び第2計算装置110が互いに自己の有するn次元ベクトルVa,Vbを秘密にしながら、式(2)〜(15)により算出される剰余Cは、式(1)により算出される剰余Cと等しくなる。
【0042】
また、S201の処理で生成された乱数M及びWを用い、n次元ベクトルVaの各要素Ajに対し、乱数Wで線形変換し、乱数Mで剰余を算出するので、各要素Ajを拡張(1次元変換)しなくても、第2計算装置110は送信されたn次元変換ベクトルXからn次元ベクトルVaを知ることができず、第2計算装置110に対してn次元ベクトルVaが秘匿される。n次元変換ベクトルXとn次元ベクトルVbとの内積値Zを算出し、算出された内積値Zはスカラー値(1次元ベクトル)であるので、各要素Bjを拡張(1次元変換)しなくても、第1計算装置100は送信された内積値Zからn次元ベクトルVbを知ることができず、第2計算装置110に対してn次元ベクトルVbが秘匿される。これにより、第1計算装置100及び第2計算装置110が互いに自己の有するn次元ベクトルVa,Vbを秘密にしながら、式(8)’、(12)’、(14)’により算出される剰余Cは、n次元ベクトルVaとn次元ベクトルVbとの内積値Va・Vbに等しくなるので、正確な内積値Va・Vbを算出することができる。
【0043】
さらに、n次元ベクトルVaの各要素Aj(j=1,2,…,n)とn次元ベクトルVbの各要素Bj(j=1,2,…,n)とにおける最大値Nに対し、式(16)を満たすようにQを設定するので、剰余Cはn次元ベクトルVaとn次元ベクトルVbとの内積値Va・Vbに等しくなる。これにより、第1計算装置100及び第2計算装置110が互いに自己の有するn次元ベクトルVa,Vbを秘密にしながら、正確な内積値Va・Vbを算出することができる。
【0044】
[第2実施形態]
図4は本発明の第2実施形態を示すものであり、同図は、第2実施形態に係るベクトル秘匿型内積計算システムの動作を説明するフローチャートである。
【0045】
第2実施形態と第1実施形態との相違点は、n次元ベクトルVaをn次元変換ベクトルXに1次元変換することに代えて、n次元ベクトルVaを2行n列の変換行列に2次元変換するようにしたことである。なお、本実施形態に係るベクトル秘匿型内積計算システムの機能構成及びハードウェア構成は、第1実施形態に示した図1及び図2と同様であるため、図示及びその説明を省略する。
【0046】
まず、第1計算装置100の入力部101に前述のn次元ベクトルVaが入力される(S300)。
【0047】
次に、乱数生成部102は、以下の式(20)〜(24)を満たすように、乱数R1,j(j=1,2,…,n)及びR2,j(j=1,2,…,n)と、乱数Mと、乱数W11,W12,W21,W22とを生成する(S301)。
(数13)
1,j,R1,j,…,R1,n<R …(20)
M>nRSQ2 …(21)
2,j,R2,j,…,R2,n<M …(22)
11,W12,W21,W22<M …(23)
GCD(W11・W22−W12,W21,M)=1 …(24)
【0048】
ここで、式(24)の条件を満たすためには、まずM,W11,W12,W21,W22をランダムに生成し、ユークリッドの互除法を用いてGCD(W11・W22−W12,W21,M)を計算し、これが1でない場合にM及びW11,W12,W21,W22を再度生成する。
【0049】
次に、変換部104は、n次元ベクトルVaの各要素Aj(j=1,2,…,n)に対し、以下の式(25)〜(26)を計算して2行n列の変換行列Xを算出し、通信装置504により第2計算装置110に送信する(S302)。このように、S301の処理で生成された乱数R1,j、R2,j、M及びW11,W12,W21,W22を用い、n次元ベクトルVaの各要素Ajに対し、乱数R1,jで拡張(1次元変換)した上で、乱数R2,jで2次元に拡張し、乱数W11,W12,W21,W22に基づく2行2列の行列で線形変換し、乱数Mで剰余を算出するので、第2計算装置110は送信された2行n列の変換行列Xからn次元ベクトルVaを知ることができず、第2計算装置110に対してn次元ベクトルVaが秘匿される。
(数14)

【0050】
本実施形態では、前述と同様の理由で、式(25)によりn次元ベクトルVaの各要素Ajを拡張しているが、第1実施形態と同様に、n次元ベクトルVaの各要素Ajを拡張しなくてもよい。この場合、S301の処理において、乱数生成部102はR1,jを生成せずに乱数R2,j、M及びW11,W12,W21,W22のみを生成し、S302の処理において、変換部104は以下の式(26)’を計算して2行n列の変換行列Xを算出する。このように、S301の処理で生成された乱数R2,j、M及びW11,W12,W21,W22n次元ベクトルVaの各要素Ajに対し、乱数R2,jで2次元に拡張し、乱数W11,W12,W21,W22に基づく2行2列の行列で線形変換し、乱数Mで剰余を算出するので、各要素Ajを拡張(1次元変換)しなくても、第2計算装置110は送信された2行n列の変換行列Xからn次元ベクトルVaを知ることができず、第2計算装置110に対してn次元ベクトルVaが秘匿される。
(数15)

【0051】
一方、第2計算装置110の入力部111にn次元ベクトルVbが入力される(S310)。
【0052】
次に、乱数生成部112は、前述の式(10)を満たすように、乱数Sj(j=1,2,…,n)を生成する(S311)。
【0053】
次に、拡張部113は、n次元ベクトルVbの各要素Bj(j=1,2,…,n)に対し、前述の式(11)を計算してn次元拡張ベクトルY=(Y1,Y2,…,Yn)を算出する(S312)。
【0054】
なお、S310〜S312の処理は、前述のS300〜S302の処理の前又は後、若しくは並行して行ってもよい。
【0055】
次に、計算部114は、通信装置504により第1計算装置100から2行n列の変換行列Xを受信し、以下の式(27)を計算して2次元ベクトルZ=(Z1,Z2)を通信装置504により第1計算装置100に送信する(S313)。このように、S311の処理で生成された乱数Sjを用い、n次元ベクトルVbの各要素Bjに対し、乱数Sjで拡張(1次元変換)した上で、2行n列の変換行列Xとの積である2次元ベクトルZを算出するので、第1計算装置100は送信された2次元ベクトルZからn次元ベクトルVbを知ることができず、第2計算装置110に対してn次元ベクトルVbが秘匿される。
(数16)

【0056】
本実施形態では、前述と同様の理由で、式(11)によりn次元ベクトルVbの各要素Bjを拡張しているが、第1実施形態と同様に、n次元ベクトルVbの各要素Bjを拡張しなくてもよい。この場合、S311及びS312の処理は行わず、S310の処理の次に、S213の処理において、計算部114は以下の式(27)’を計算して2次元ベクトルZを算出する。このように、2行n列の変換行列Xとn次元ベクトルVbとの積である2次元ベクトルZを算出するので、各要素Bjを拡張(1次元変換)しなくても、第1計算装置100は送信された2次元ベクトルZからn次元ベクトルVbを知ることができず、第2計算装置110に対してn次元ベクトルVbが秘匿される。
(数17)

【0057】
次に、第1計算装置100の逆変換部105は、通信装置504により第2計算装置110から2次元ベクトルZを受信し、一時記憶部103に記憶された前述の乱数Mと乱数W11,W12,W21,W22とを用いて以下の式(28)及び(29)を計算し、剰余Cを算出する(S303)。これにより、従来と同程度の安全性を確保できるものとして、例えば乱数Wi及びMiが100ビットの整数である場合、通信量は送受信とも2×100×nビット程度となり、第1計算装置100及び第2計算装置110における計算はそれぞれn回の掛け算と足し算の数倍程度となる。また、このように、第1計算装置100及び第2計算装置110が互いに自己の有するn次元ベクトルVa,Vbを秘密にしながら、式(20)〜(29)により算出される剰余Cは、式(1)により算出される剰余Cと等しくなる。
(数18)

【0058】
ここで、第1実施形態と同様に、前述の式(16)を満たすようにQを設定すると、剰余Cは内積値Va・Vbに等しくなる。これにより、第1計算装置100及び第2計算装置110が互いに自己の有するn次元ベクトルVa,Vbを秘密にしながら、正確な内積値Va・Vbを算出することができる。
【0059】
本実施形態では、前述と同様の理由で、式(29)により法Qの剰余を算出しているが、第1実施形態と同様に、法Qの剰余を算出しなくてもよい。この場合、S303の処理において、逆変換部105は式(28)及び以下の式(29)’を計算して剰余Cを算出する。このように、第1計算装置100及び第2計算装置110が互いに自己の有するn次元ベクトルVa,Vbを秘密にしながら、式(26)’、(27)’、(28)、(29)’により算出される剰余Cは、n次元ベクトルVaとn次元ベクトルVbとの内積値Va・Vbに等しくなるので、正確な内積値Va・Vbを算出することができる。
(数19)
C=C1 …(29)’
【0060】
最後に、出力部106は剰余Cを出力する(S304)。
【0061】
このように、本実施形態によれば、n次元ベクトルVaを2行n列の変換行列に2次元変換する場合であっても、第1実施形態と同様の効果を得ることができるとともに、多少の計算コストを犠牲にして更に安全性を高めることができる。
【0062】
また、n次元ベクトルVaをm行n列の変換行列(mは3以上の整数)にm次元変換する場合であっても、本実施形態と同様の効果を得ることができる。
【0063】
[第3実施形態]
従来、暗号通信における暗号鍵共有プロトコルである、前述の非特許文献3及び4に記載された方法は、量子計算機によって破られることが判明している。これは、現在のコンピュータでは困難とされている素因数分解問題や離散対数問題が、量子計算機では容易に解けるためである。このため、将来的に量子計算機が実現されたとしても安全性を確保できるように、素因数分解問題や離散対数問題に依存しない新しい暗号鍵共有システムが必要とされる。
【0064】
本発明の第3実施形態に係る暗号鍵共有システムは、前記問題点に鑑みてなされたものであり、その目的とするところは、量子計算機に対しても耐性を有する暗号鍵共有システムを提供することにある。
【0065】
図5は本発明の第3実施形態を示すものであり、同図は、暗号鍵共有システムの機能構成を説明する概略構成図である。なお、鍵共有システムのハードウェア構成は、第1実施形態に示した図2と同様であるため、図示及びその説明を省略する。
【0066】
図5に示すように、暗号鍵共有システム10は、第1鍵共有装置400と、第2鍵共有装置410とを備え、第1鍵共有装置400と第2鍵共有装置410とは、ネットワークN2を介して互いに接続される。
【0067】
第1鍵共有装置400は、内積計算部A401と、ベクトル生成部402と、内積計算部B403と、ハッシュ関数部404と、出力部405とから構成される。内積計算部A401は、第1実施形態又は第2実施形態における第1計算装置100と同一の機能、すなわち、入力部101、乱数生成部102、一時記憶部103、変換部104、逆変換部105及び出力部106を有する。内積計算部B403は、第1実施形態又は第2実施形態における第2計算装置110と同一の機能、すなわち、入力部111、乱数生成部112、拡張部113及び計算部114を有する。ベクトル生成部402は、前述のn次元ベクトルVaを生成する。ハッシュ関数部404は、例えばSHA−1やSHA−256といったアルゴリズムに従い、入力値に対するハッシュ値を計算する。出力部405は、後述する共通鍵を出力する。
【0068】
第2鍵共有装置410は、内積計算部B411と、ベクトル生成部412と、内積計算部A413と、ハッシュ関数部414と、出力部415とから構成される。内積計算部B411は内積計算部B403と同一であり、ベクトル生成部412は前述のn次元ベクトルVbを生成する。内積計算部A413は内積計算部A401と同一であり、ハッシュ関数部414はハッシュ関数部404と同一であり、出力部415は、後述する共通鍵を出力する。
【0069】
次に、暗号鍵共有システム10の動作について説明する。
【0070】
まず、第1鍵共有装置400のベクトル生成部402は、前述のn次元ベクトルVaをランダムに生成し、内積計算部A401及び内積計算部B403に出力する。
【0071】
一方、第2鍵共有装置410のベクトル生成部412は、前述のn次元ベクトルVbをランダムに生成し、内積計算部B411及び内積計算部A413に出力する。
【0072】
第1鍵共有装置400の内積計算部A401と第2鍵共有装置410の内積計算部B411とが通信し、内積計算部A401は内積値C=Va・Vbを算出し、ハッシュ関数部404に出力する。なお、内積値Cの計算方法は、前述の第1実施形態又は第2実施形態と同様とする。これにより、第1鍵共有装置400及び第2鍵共有装置410が互いに自己の有するn次元ベクトルVa,Vbを秘密にしながら、第1鍵共有装置400が内積値Cを算出することができる。
【0073】
同様に、第2鍵共有装置410の内積計算部A413と第1鍵共有装置400の内積計算部B403とが通信し、内積計算部A413は内積値C=Va・Vbを算出し、ハッシュ関数部414に出力する。なお、内積計算の方法は、前述の第1実施形態又は第2実施形態と同様とする。これにより、第1鍵共有装置400及び第2鍵共有装置410が互いに自己の有するn次元ベクトルVa,Vbを秘密にしながら、第2鍵共有装置410が内積値Cを算出することができる。
【0074】
第1鍵共有装置400のハッシュ関数部404は、入力された内積値Cのハッシュ値Kを算出し、出力部405はハッシュ値Kを共通鍵として出力する。これにより、素因数分解問題や離散対数問題の計算量的困難性に依存しない共通鍵(暗号鍵)を生成することができる。
【0075】
同様に、第2鍵共有装置410のハッシュ関数部414は、入力された内積値Cのハッシュ値Kを算出し、出力部415はハッシュ値Kを共通鍵として出力する。これにより、第1鍵共有装置400及び第2鍵共有装置410はハッシュ値Kを共通鍵として共有することができる。
【0076】
本実施形態では、計算した内積値Cのハッシュ値Kを共通鍵としているが、これに限定されず、他の方法で共通鍵を生成するようにしてもよいし、内積値Cそのものを共通鍵としてもよい。
【0077】
このように、この暗号鍵共有システム10によれば、第1鍵共有装置400及び第2鍵共有装置410が互いに自己の有するn次元ベクトルVa,Vbを秘密にしながら、第1鍵共有装置400が内積値Cを算出することができ、第1鍵共有装置400及び第2鍵共有装置410が互いに自己の有するn次元ベクトルVa,Vbを秘密にしながら、第2鍵共有装置410が内積値Cを算出することができるので、第1鍵共有装置400及び第2鍵共有装置410間の通信を全て盗聴されたとしても、n次元ベクトルVa,Vbが秘匿されるから、盗聴者は内積値C及びそのハッシュ値Kを知ることができない。これにより、共通鍵を安全に(盗聴者には計算できないように)共有することができる。また、前述の第1実施形態又は第2実施形態の方法で内積値Cを算出し、当該内積値C又は当該内積値Cのハッシュ値を共通鍵として出力するので、素因数分解問題や離散対数問題の計算量的困難性に依存しない共通鍵(暗号鍵)を生成することができる。これにより、量子計算機に対しても耐性を有する。
【0078】
なお、本発明の構成は、前記実施形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加えてもよい。
【図面の簡単な説明】
【0079】
【図1】ベクトル秘匿型内積計算システムの機能構成を説明する概略構成図である。
【図2】図1に示した第1計算装置及び第2計算装置のハードウェア構成を説明する概略構成図である。
【図3】ベクトル秘匿型内積計算システムの動作を説明するフローチャートである。
【図4】第2実施形態に係るベクトル秘匿型内積計算システムの動作を説明するフローチャートである。
【図5】暗号鍵共有システムの機能構成を説明する概略構成図である。
【符号の説明】
【0080】
1…ベクトル秘匿型内積計算システム、10…暗号鍵共有システム、100…第1計算装置、101…入力部、102…乱数生成部、103…一時記憶部、104…変換部、105…逆変換部、110…第2計算装置、111…入力部、112…乱数生成部、113…拡張部、114…計算部、400…第1鍵共有装置、401…内積計算部A、402…ベクトル生成部、403…内積計算部B、404…ハッシュ関数部、405…出力部、410…第2鍵共有装置、411…内積計算部B、412…ベクトル生成部、413…内積計算部A、414…ハッシュ計算部、415…出力部。

【特許請求の範囲】
【請求項1】
各要素が整数である第1のn次元ベクトル(nは正の整数)を秘匿する第1の計算装置と、各要素が整数である第2のn次元ベクトルを秘匿する第2の計算装置とを備えるベクトル秘匿型内積計算システムにおいて、
前記第1の計算装置は、
前記第2の計算装置との間で情報を送受信可能な第1通信部と、
整数である第1、第2及び第3の乱数を生成する第1生成部と、
前記第1の乱数に基づくm行m列の正則行列(mは正の整数)と前記第2の乱数とに基づいて前記第1のn次元ベクトルをm行n列の行列に線形変換し、線形変換した該m行n列の行列における各要素に対して前記第3の乱数で除算した剰余を算出し、該剰余を各要素とするm行n列の変換行列を前記第1通信部により送信する変換部とを有し、
前記第2の計算装置は、
前記第1の計算装置との間で情報を送受信可能な第2通信部と、
前記第2通信部により受信した前記m行n列の変換行列と前記第2のn次元ベクトルとに基づいてm次元ベクトルを算出し、該m次元ベクトルを前記第2通信部により送信する計算部とを有し、
前記第1の計算装置は、
前記m行m列の正則行列の前記第3の乱数を法とした逆行列と前記第1通信部により受信した前記m次元ベクトルとに基づいてm次元ベクトルを算出し、該m次元ベクトルにおける所定の要素に対して前記第3の乱数で除算した剰余を算出する逆変換部をさらに有する
ことを特徴とするベクトル秘匿型内積計算システム。
【請求項2】
前記第1生成部は、前記第3の乱数としてMと、前記第1の乱数としてWとを生成し、
前記変換部は、前記mとして1を用い、前記第1のn次元ベクトルの各要素Aj(j=1,2,…,n)に対し、
(数1)
j=W・Aj mod M
を計算してn次元変換ベクトルX=(X1,X2,…,Xn)を前記第1通信部により送信し、
前記計算部は、前記第2通信部により前記n次元変換ベクトルXを受信し、前記第1のn次元ベクトルの各要素Bj(j=1,2,…,n)に対し、
(数2)
Z=X1・B1+X2・B2+…+Xn・Bn
を計算して内積値Zを前記第2通信部により送信し、
前記逆変換部は、前記第1通信部により受信した前記内積値Zに対し、
(数3)
C=W-1・Z mod M
を計算してCを算出する
ことを特徴とする請求項1に記載のベクトル秘匿型内積計算システム。
【請求項3】
前記第1生成部は、正の整数である所定数Q、R、S及びpに対し、前記第2の乱数としてRj(j=1,2,…,n 但し、Rj<R)と、前記第3の乱数としてMi(i=1,2,…,p 但し、M1>nRSQ2 かつ Mi>nRSQ2i-1(i=2,3,…,p))と、前記第1の乱数としてWi(i=1,2,…,p 但し、Wi<Mi かつ GCD(Wi,Mi)=1)とを生成し、
前記変換部は、前記mとして1を用い、前記第1のn次元ベクトルの各要素Aj(j=1,2,…,n)に対し、
(数4)
1,j=Rj・Q+Aj
i+1,j=Wj・Xi,j mod Mi(i=1,2,…,pについて繰り返す)
j=Xp+1,j
を計算してn次元変換ベクトルX=(X1,X2,…,Xn)を前記第1通信部により送信し、
前記第2の計算装置は、
前記所定数Sに対し、第4の乱数としてSj(j=1,2,…,n 但し、Sj<S)を生成する第2生成部と、
前記第2のn次元ベクトルの各要素Bj(j=1,2,…,n)に対し、
(数5)
j=Sj・Q+Bj
を計算してn次元拡張ベクトルY=(Y1,Y2,…,Yn)を算出する拡張部とを有し、
前記計算部は、前記第2通信部により前記n次元変換ベクトルXを受信し、
(数6)
Z=X1・Y1+X2・Y2+…+Xn・Yn
を計算して内積値Zを前記第2通信部により送信し、
前記逆変換部は、前記第1通信部により受信した前記内積値Zに対し、
(数7)
p+1=Z
i=Wi-1・Zi+1 mod Mi(i=p,p−1,…,1について繰り返す)
C=Z1 mod Q
を計算してCを算出する
ことを特徴とする請求項1に記載のベクトル秘匿型内積計算システム。
【請求項4】
前記第1のn次元ベクトルの各要素Aj(j=1,2,…,n)と前記第2のn次元ベクトルの各要素Bj(j=1,2,…,n)とにおける最大値Nに対し、
(数8)
Q>n・N2
を満たすように前記所定数Qを設定する
ことを特徴とする請求項3に記載のベクトル秘匿型内積計算システム。
【請求項5】
前記第1生成部は、前記第2の乱数としてR2,j(j=1,2,…,n)と、前記第3の乱数としてMと、前記第1の乱数としてW11,W12,W21,W22(但し、W11・W22−W12・W21≠0)とを生成し、
前記変換部は、前記mとして2を用い、前記第1のn次元ベクトルの各要素Aj(j=1,2,…,n)に対し、
(数9)

を計算して2行n列の変換行列Xを前記第1通信部により送信し、
前記計算部は、前記第2のn次元ベクトルB=(B1,B2,…,Bn)に対し、
(数10)

を計算して2次元ベクトルZ=(Z1,Z2)を前記第2通信部により送信し、
前記逆変換部は、前記第1通信部により受信した前記2次元ベクトルZに対し、
(数11)

を計算してCを算出する
ことを特徴とする請求項1に記載のベクトル秘匿型内積計算システム。
【請求項6】
前記第1生成部は、正の整数である所定数Q、R及びSに対し、前記第2の乱数としてR1,j(j=1,2,…,n 但し、R1,j<R)及びR2,j(j=1,2,…,n 但し、R2,j<M)と、前記第3の乱数として1個のM(M>nSRQ2)と、前記第1の乱数としてW11,W12,W21,W22(但し、W11,W12,W21,W22<M かつ GCD(W11・W22−W12・W21,M)=1)とを生成し、
前記変換部は、前記mとして2を用い、前記第1のn次元ベクトルの各要素Aj(j=1,2,…,n)に対し、
(数12)

を計算して2行n列の変換行列Xを前記第1通信部により送信し、
前記第2の計算装置は、
前記所定数Sに対し、第4の乱数としてSj(j=1,2,…,n 但し、Sj<S)を生成する第2生成部と、
前記第2のn次元ベクトルの各要素Bj(j=1,2,…,n)に対し、
(数13)
j=Sj・Q+Bj
を計算してn次元拡張ベクトルY=(Y1,Y2,…,Yn)を算出する拡張部とを有し、
前記算出部は、
(数14)

を計算して2次元ベクトルZ=(Z1,Z2)を前記第2通信部により送信し、
前記逆変換部は、前記第1通信部により受信した前記2次元ベクトルZに対し、
(数15)

を計算してCを算出する
ことを特徴とする請求項1に記載のベクトル秘匿型内積計算システム。
【請求項7】
前記第1のn次元ベクトルの各要素Aj(j=1,2,…,n)と前記第2のn次元ベクトルの各要素Bj(j=1,2,…,n)とにおける最大値Nに対し、
(数16)
Q>n・N2
を満たすように前記所定数Qを設定する
ことを特徴とする請求項6に記載のベクトル秘匿型内積計算システム。
【請求項8】
各要素が整数である第1のn次元ベクトル(nは正の整数)を秘匿する第1の計算装置と、各要素が整数である第2のn次元ベクトルを秘匿する第2の計算装置とを有するシステムに用いられるベクトル秘匿型内積計算方法であって、
前記第1の計算装置は、前記第2の計算装置との間で情報を送受信可能な第1通信部を有し、前記第2の計算装置は、前記第1の計算装置との間で情報を送受信可能な第2通信部を有しており、
前記第1の計算装置により、整数である第1、第2及び第3の乱数を生成する第1生成ステップと、
前記第1の計算装置により、前記第1の乱数に基づくm行m列の正則行列(mは正の整数)と前記第2の乱数とに基づいて前記第1のn次元ベクトルをm行n列の行列に線形変換し、線形変換した該m行n列の行列における各要素に対して前記第3の乱数で除算した剰余を算出し、該剰余を各要素とするm行n列の変換行列を前記第1通信部により送信する変換ステップと、
前記第2の計算装置により、前記第2通信部により受信した前記m行n列の変換行列と前記第2のn次元ベクトルとに基づいてm次元ベクトルを算出し、該m次元ベクトルを前記第2通信部により送信する計算ステップと、
前記第1の計算装置により、前記m行m列の正則行列の前記第3の乱数を法とした逆行列と前記第1通信部により受信した前記m次元ベクトルとに基づいてm次元ベクトルを算出し、該m次元ベクトルにおける所定の要素に対して前記第3の乱数で除算した剰余を算出する逆変換ステップとを備える
ことを特徴とするベクトル秘匿型内積計算方法。
【請求項9】
前記第1生成ステップは、前記第3の乱数としてMと、前記第1の乱数としてWとを生成し、
前記変換ステップは、前記mとして1を用い、前記第1のn次元ベクトルの各要素Aj(j=1,2,…,n)に対し、
(数17)
j=W・Aj mod M
を計算してn次元変換ベクトルX=(X1,X2,…,Xn)を前記第1通信部により送信し、
前記計算ステップは、前記第2通信部により前記n次元変換ベクトルXを受信し、前記第1のn次元ベクトルの各要素Bj(j=1,2,…,n)に対し、
(数18)
Z=X1・B1+X2・B2+…+Xn・Bn
を計算して内積値Zを前記第2通信部により送信し、
前記逆変換ステップは、前記第1通信部により受信した前記内積値Zに対し、
(数19)
C=W-1・Z mod M
を計算してCを算出する
ことを特徴とする請求項8に記載のベクトル秘匿型内積計算方法。
【請求項10】
前記第1生成ステップは、正の整数である所定数Q、R、S及びpに対し、前記第2の乱数としてRj(j=1,2,…,n 但し、Rj<R)と、前記第3の乱数としてMi(i=1,2,…,p 但し、M1>nRSQ2 かつ Mi>nRSQ2i-1(i=2,3,…,p))と、前記第1の乱数としてWi(i=1,2,…,p 但し、Wi<Mi かつ GCD(Wi,Mi)=1)とを生成し、
前記変換ステップは、前記mとして1を用い、前記第1のn次元ベクトルの各要素Aj(j=1,2,…,n)に対し、
(数20)
1,j=Rj・Q+Aj
i+1,j=Wj・Xi,j mod Mi(i=1,2,…,pについて繰り返す)
j=Xp+1,j
を計算してn次元変換ベクトルX=(X1,X2,…,Xn)を前記第1通信部により送信し、
前記第2の計算装置により、前記所定数Sに対し、第4の乱数としてSj(j=1,2,…,n 但し、Sj<S)を生成する第2生成ステップと、
前記第2の計算装置により、前記第2のn次元ベクトルの各要素Bj(j=1,2,…,n)に対し、
(数21)
j=Sj・Q+Bj
を計算してn次元拡張ベクトルY=(Y1,Y2,…,Yn)を算出する拡張ステップとをさらに含み、
前記計算ステップは、前記第2通信部により前記n次元変換ベクトルXを受信し、
(数22)
Z=X1・Y1+X2・Y2+…+Xn・Yn
を計算して内積値Zを前記第2通信部により送信し、
前記逆変換ステップは、前記第1通信部により受信した前記内積値Zに対し、
(数23)
p+1=Z
i=Wi-1・Zi+1 mod Mi(i=p,p−1,…,1について繰り返す)
C=Z1 mod Q
を計算してCを算出する
ことを特徴とする請求項8に記載のベクトル秘匿型内積計算方法。
【請求項11】
前記第1のn次元ベクトルの各要素Aj(j=1,2,…,n)と前記第2のn次元ベクトルの各要素Bj(j=1,2,…,n)とにおける最大値Nに対し、
(数24)
Q>n・N2
を満たすように前記所定数Qを設定するステップをさらに含む
ことを特徴とする請求項10に記載のベクトル秘匿型内積計算方法。
【請求項12】
前記第1生成ステップは、前記第2の乱数としてR2,j(j=1,2,…,n)と、前記第3の乱数としてMと、前記第1の乱数としてW11,W12,W21,W22(但し、W11・W22−W12・W21≠0)とを生成し、
前記変換ステップは、前記mとして2を用い、前記第1のn次元ベクトルの各要素Aj(j=1,2,…,n)に対し、
(数25)

を計算して2行n列の変換行列Xを前記第1通信部により送信し、
前記計算ステップは、前記第2のn次元ベクトルB=(B1,B2,…,Bn)に対し、
(数26)

を計算して2次元ベクトルZ=(Z1,Z2)を前記第2通信部により送信し、
前記逆変換ステップは、前記第1通信部により受信した前記2次元ベクトルZに対し、
(数27)

を計算してCを算出する
ことを特徴とする請求項8に記載のベクトル秘匿型内積計算方法。
【請求項13】
前記第1生成ステップは、正の整数である所定数Q、R及びSに対し、前記第2の乱数としてR1,j(j=1,2,…,n 但し、R1,j<R)及びR2,j(j=1,2,…,n 但し、R2,j<M)と、前記第3の乱数として1個のM(M>nSRQ2)と、前記第1の乱数としてW11,W12,W21,W22(但し、W11,W12,W21,W22<M かつ GCD(W11・W22−W12・W21,M)=1)とを生成し、
前記変換ステップは、前記mとして2を用い、前記第1のn次元ベクトルの各要素Aj(j=1,2,…,n)に対し、
(数28)

を計算して2行n列の変換行列Xを前記第1通信部により送信し、
前記第2の計算装置により、前記所定数Sに対し、第4の乱数としてSj(j=1,2,…,n 但し、Sj<S)を生成する第2生成ステップと、
前記第2の計算装置により、前記第2のn次元ベクトルの各要素Bj(j=1,2,…,n)に対し、
(数29)
j=Sj・Q+Bj
を計算してn次元拡張ベクトルY=(Y1,Y2,…,Yn)を算出する拡張ステップとをさらに含み、
前記算出ステップは、
(数30)

を計算して2次元ベクトルZ=(Z1,Z2)を前記第2通信部により送信し、
前記逆変換ステップは、前記第1通信部により受信した前記2次元ベクトルZに対し、
(数31)

を計算してCを算出する
ことを特徴とする請求項8に記載のベクトル秘匿型内積計算方法。
【請求項14】
前記第1のn次元ベクトルの各要素Aj(j=1,2,…,n)と前記第2のn次元ベクトルの各要素Bj(j=1,2,…,n)とにおける最大値Nに対し、
(数32)
Q>n・N2
を満たすように前記所定数Qを設定するステップをさらに含む
ことを特徴とする請求項13に記載のベクトル秘匿型内積計算方法。
【請求項15】
各要素が整数である第1のn次元ベクトル(nは正の整数)を秘匿する第1の鍵共有装置と、各要素が整数である第2のn次元ベクトルを秘匿する第2の鍵共有装置とを備える暗号鍵共有システムにおいて、
前記第1の鍵共有装置は、
請求項8乃至14の何れかに記載のベクトル秘匿型内積計算方法を用いて前記第1のn次元ベクトルと前記第2のn次元ベクトルとの第1内積値を算出する第1内積計算部と、
前記第1内積計算部により計算された前記第1内積値に基づいて、第1暗号鍵を生成する第1暗号鍵生成部とを有し、
前記第2の鍵共有装置は、
請求項8乃至14の何れかに記載のベクトル秘匿型内積計算方法を用いて前記第1のn次元ベクトルと前記第2のn次元ベクトルとの第2内積値を算出する第2内積計算部と、
前記第2内積計算部により計算された前記第2内積値に基づいて、第2暗号鍵を生成する第2暗号鍵生成部とを有する
ことを特徴とする暗号鍵共有システム。
【請求項16】
第1暗号鍵生成部は、所定のハッシュ関数を用いて前記第1内積値のハッシュ値を算出し、該ハッシュ値を前記第1暗号鍵とし、
第2暗号鍵生成部は、前記所定のハッシュ関数を用いて前記第2内積値のハッシュ値を算出し、該ハッシュ値を前記第2暗号鍵とする
ことを特徴とする請求項15に記載の暗号鍵共有システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate