【文献】
宇都宮 秀利 他,ペアリングを用いた大小比較の秘匿計算の一手法,第73回(平成23年)全国大会講演論文集(3) ネットワーク セキュリティ,一般社団法人情報処理学会,2011年 3月 2日,p.3-471〜3-472
【文献】
小池 正修,吉田 琢也,林 良太郎,松下 達之,大小比較機能を持つ準同型暗号に対する一攻撃手法,2012年 暗号と情報セキュリティシンポジウム予稿集,2012年 1月30日,pp.1−8
【文献】
Florian Kerschbaum, Debmalya Biswas and Florian Kerschbaum,Performance Comparison of Secure Comparison Protocols,Database and Expert Systems Application, 2009. DEXA '09. 20th International Workshop on,IEEE,2009年,pp. 133-136
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0023】
以下、各実施形態について図面を用いて説明する。なお、以下の各装置は、それぞれハードウェア構成、又はハードウェア資源とソフトウェアとの組合せ構成のいずれでも実施可能となっている。組合せ構成のソフトウェアとしては、予めネットワーク又はコンピュータ読み取り可能な記憶媒体からコンピュータにインストールされ、対応する装置の機能を当該コンピュータに実現させるためのプログラムが用いられる。
【0024】
(第1の実施形態)
始めに、本実施形態に係る暗号化データ演算システムの構成例について
図1を用いて説明する。暗号化データ演算システムは、鍵生成装置10、暗号化装置20、記憶装置30、演算装置40及び演算支援装置50を備えている。
【0025】
ここで、鍵生成装置10、記憶装置30、演算装置40及び演算支援装置50は、サービスを提供するサービス提供者の有する情報処理装置である。
【0026】
暗号化装置20は、当該サービスの利用者であるユーザの有する情報処理装置である。各装置10,20,30,40,50は通信網を介して通信可能に接続されている。
【0027】
通信網とは、例えば、無線LAN(Local Area Network)、有線LAN、光回線網、電話回線網、イントラネット、イーサネット(登録商標)及びインターネットやこれらの組み合わせである。尚、
図1では、暗号化データ演算システムに接続される各装置は各々1つのみ示されているが、これらは各々複数であっても良い。また、
図1では、各装置が暗号化データ演算システムにそれぞれ独立に接続される例が示されているが、これに限らず、複数の装置が1つの情報処理装置に含まれていても良い。例えば、
図2に示すように、鍵生成装置10及び暗号化装置20が1つのクライアント端末(図示せず)に含まれていてもよい。また例えば、図示しないが、記憶装置30及び演算装置40が1つのサーバ装置に含まれていてもよい。
【0028】
図3は、暗号化データ演算システムの概要を示す模式図である。この暗号化データ演算システムは、ユーザ、サービス提供者A、及びサービス提供者Bからなる。尚、
図3中、鍵生成装置10の図示を省略したが、鍵生成装置10は信頼できる第三者が保持していても良いし、ユーザが保持していても良い。
【0029】
ユーザは、鍵生成装置10において生成された暗号化鍵を用いて、数値m
i(i=1,2,3,…)を暗号化装置20において暗号化する。次に、ユーザは、生成した暗号化データE(m
i)を、サービス提供者Aへ送信する。
【0030】
サービス提供者Aは、受信した暗号化データE(m
i)を記憶装置30に記憶する。サービス提供者Aは、(一次演算処理に必要な)暗号化データE(m
i)を記憶装置30から取得し、一次演算処理を演算装置40において行う。サービス提供者Aは、一次演算処理結果をサービス提供者Bへ送信する。
【0031】
サービス提供者Bには、鍵生成装置10において生成された、二次演算を行うための鍵(以下、二次演算鍵と呼ぶ)が予め渡されている。サービス提供者Bは、受信した一次演算処理結果と、予め渡された二次演算鍵とを用いて、二次演算処理を演算支援装置50において行う。サービス提供者Bは、二次演算処理結果をサービス提供者Aへ送信する。
【0032】
サービス提供者Aには、鍵生成装置10において生成された、三次演算を行うための鍵(以下、三次演算鍵と呼ぶ)が予め渡されている。サービス提供者Aは、受信した二次演算処理結果と、予め渡された三次演算鍵とを用いて、三次演算処理を演算装置40において行う。最後に、サービス提供者Aは、三次演算処理結果をユーザへ送信する。または、サービス提供者Aは、上述の処理を複数回実行して得られる複数の三次演算処理結果に対してさらに演算処理を行った結果をユーザへ送信しても良い。
【0033】
どのエンティティがどの装置を保持するかについては、上述の例に限定されるものではなく、様々なバリエーションが適用可能となっている。
【0034】
続いて、
図4を用いて、鍵生成装置10、暗号化装置20、記憶装置30、演算装置40及び演算支援装置50の構成を具体的に説明する。
【0035】
鍵生成装置10は、鍵生成パラメータ記憶部11、一時データ記憶部12、パラメータ生成部13、鍵生成部14、通信部15及び制御部16を備えている。
【0036】
ここで、鍵生成パラメータ記憶部11は、鍵生成パラメータを記憶する記憶装置である。鍵生成パラメータとしては、例えば、鍵生成に関する合成数N=pqのビット数の下限を定めるためのセキュリティパラメータλが使用可能となっている。
【0037】
一時データ記憶部12は、演算対象の複数の数値、各生成部13,14の処理途中及び処理結果などの一時データを記憶する記憶装置である。
【0038】
パラメータ生成部13は、鍵生成のパラメータを生成する。
【0039】
鍵生成部14は、暗号化鍵(例、a,sv)、二次演算鍵(例、a
-1,s)、及び三次演算鍵(例、v)を生成する。暗号化鍵は、各数値を暗号化するための鍵である。二次演算鍵及び三次演算鍵は、暗号化鍵に対応する復号鍵(例、a
-1,s,v)を構成している。
【0040】
通信部15は、他の装置20〜50と通信するための通信インタフェースであり、例えば、制御部16に制御されて一時データ記憶部12内の二次演算鍵、三次演算鍵を演算支援装置50、演算装置40にそれぞれ送信する機能をもっている。なお、以下の説明では、送受信時の冗長な記載を避ける観点から、送受信の際に、通信部15を介する旨の記載を省略する場合がある。これは他の装置20〜50の通信部25,32,44,55についても同様である。
【0041】
制御部16は、
図5に示す動作を実行するように、各部11〜15を制御する機能をもっている。
【0042】
暗号化装置20は、暗号化パラメータ生成部21、一時データ記憶部22、暗号文生成部23、暗号化鍵記憶部24、通信部25及び制御部26を備えている。
【0043】
ここで、暗号化パラメータ生成部21は、暗号化パラメータを生成する。暗号化パラメータとしては、例えば、0以上N
2未満の整数の集合Z
N2からランダムに選択されるk個の乱数r
1,…,r
kが使用可能となっている。
【0044】
一時データ記憶部22は、各生成部21,23の処理途中及び処理結果などの一時データを記憶する記憶装置である。
【0045】
暗号文生成部23は、各数値を暗号化鍵に基づいて暗号化し、複数の暗号文(複数の暗号化データ)を生成する。
【0046】
暗号化鍵記憶部24は、暗号化鍵を記憶する記憶装置である。
【0047】
通信部25は、他の装置10、30〜50と通信するための通信インタフェースであり、例えば、制御部26に制御されて一時データ記憶部22内の暗号文を記憶装置30に送信する機能をもっている。
【0048】
制御部26は、
図6に示す動作を実行するように、各部21〜25を制御する機能をもっている。
【0049】
記憶装置30は、暗号文記憶部31、通信部32及び制御部33を備えている。
【0050】
ここで、暗号文記憶部31は、暗号文を記憶する記憶装置である。
【0051】
通信部32は、他の装置10、20、40、50と通信するための通信インタフェースであり、例えば、制御部33に制御されて暗号文記憶部31内の暗号文を演算装置40に送信する機能をもっている。
【0052】
制御部33は、各部31、32を制御する機能をもっている。
【0053】
演算装置40は、一時データ記憶部41、計算部42、判定部43、通信部44、制御部45及び三次演算鍵記憶部46を備えている。
【0054】
ここで、一時データ記憶部41は、計算部42,判定部43の処理途中及び処理結果などの一時データを記憶する記憶装置である。
【0055】
計算部42は、一次演算結果及び三次演算結果を計算する。詳しくは、計算部42は、以下の各機能(f42-1)〜(f42-2)をもっている。
【0056】
(f42-1) 各暗号文(各暗号化データ)に基づいて一次演算処理を実行することにより、各数値を加減算した式の演算結果を暗号化したデータに相当する一次演算結果(例、X
1,X
2)を生成する一次演算機能。例えば、各暗号化データC
i(i=1,2,…,k)は、0以上N未満の整数の集合のうちのk個の各数値m
1,m
2,…,m
kが暗号化鍵(例、a,sv)により暗号化されて生成される。
【0057】
(f42-2) 一次演算結果(例、X
1,X
2)をランダム化してなる二次演算結果(例、Y
1,Y
2)が演算支援装置50により生成された場合、二次演算結果及び三次演算鍵(例、v)に基づいて三次演算処理を実行することにより、三次演算結果W(=FR−z)を生成する三次演算機能(例、a
-1 はa mod N
2を満たす値である。Rは集合{1,…,L}からランダムに選択されたβ個の乱数の積である。L
β <N/2の関係がある。zは集合{0,1,…,J}から選択された乱数である。R<Jとなる確率は十分小さい。)。三次演算結果W(=FR−z)は、加減算した式Fの演算結果を乱数(例、R,z)のみで秘匿化したデータに相当する。
【0058】
判定部43は、三次演算結果に基づき、式F(Fについては後述する)の正負判定を行う。具体的には、判定部43は、三次演算結果Wに基づいて、式Fにおける被減数と減数との間の大小関係を判定する。
【0059】
通信部44は、他の装置10〜30、50と通信するための通信インタフェースであり、例えば、制御部45に制御されて一時データ記憶部41内の一次演算結果を演算支援装置50に送信する機能をもっている。
【0060】
制御部45は、
図7及び
図9に示す動作を実行するように、各部41〜44,46を制御する機能をもっている。
【0061】
三次演算鍵記憶部46は、三次演算鍵を記憶する記憶装置である。
【0062】
演算支援装置50は、二次演算処理パラメータ生成部51、一時データ記憶部52、計算部53、二次演算鍵記憶部54、通信部55及び制御部56を備えている。
【0063】
ここで、二次演算処理パラメータ生成部51は、二次演算処理パラメータを生成する。二次演算処理パラメータ生成部51は、例えば、乱数を生成する乱数生成機能をもっている。乱数生成機能は、例えば、乱数R,zを生成する機能である(例、Rは集合{1,…,L}からランダムに選択されたβ個の乱数の積である。L
β <N/2の関係がある。zは集合{0,1,…,J}から選択された乱数である。R<Jとなる確率は十分小さい。)。
【0064】
一時データ記憶部52は、二次演算処理パラメータ生成部51、計算部53の処理途中及び処理結果などの一時データを記憶する記憶装置である。
【0065】
計算部53は、二次演算結果を計算する。具体的には、計算部53は、一次演算結果(例、X
1,X
2)、二次演算鍵(例、a
-1,s)及び乱数(例、R,z)に基づいて二次演算処理を実行することにより、二次演算結果(例、Y
1,Y
2)を生成する。
【0066】
二次演算鍵記憶部54は、二次演算鍵を記憶する記憶装置である。例えば、二次演算鍵記憶部54は、クライアント端末(10,20)が各暗号化データC
i(i=1,2,…,k)を生成した後に、演算装置40が、各暗号化データC
i(i=1,2,…,k)に基づいて一次演算結果(例、X
1,X
2)を生成した場合に、二次演算鍵(例、a
-1,s)を記憶する(例、a
-1 はa mod N
2を満たす値である。)。なお、クライアント端末(10,20)は、0以上N未満の整数の集合のうちのk個の各数値m
1,m
2,…,m
kを暗号化鍵(例、a,sv)により暗号化して各暗号化データC
i(i=1,2,…,k)を生成する。演算装置40は、各暗号化データC
i(i=1,2,…,k)に基づいて、当該各数値を加減算した式Fの演算結果を暗号化したデータに相当する一次演算結果(例、X
1,X
2)を生成する。
【0067】
通信部55は、他の装置10〜40と通信するための通信インタフェースであり、例えば、制御部56に制御されて一時データ記憶部52内の二次演算結果を演算装置40に送信する機能をもっている。
【0068】
制御部56は、
図8に示す動作を実行するように、各部51〜55を制御する機能をもっている。
【0069】
次に、鍵生成処理、暗号化処理、一次演算処理、二次演算処理、及び三次演算処理の各処理について具体的に説明する。
【0070】
[0.鍵生成処理]
鍵生成処理は、鍵生成装置10により、
図5及び以下の各ステップST1〜ST7に示すように実行される。
【0071】
始めに、鍵生成装置10のパラメータ生成部13は、p’=(p−1)/2,q’=(q−1)/2が素数となる素数p,qを生成する、又は外部から入手する(ST1)。ここで、パラメータ生成部13は、予め鍵生成パラメータ記憶部11に記憶したセキュリティパラメータλに基づいて、合成数N=pqのビット数がλ又はλより大きい値となるような素数p,qを生成する、又は外部から入手する。
【0072】
次に、パラメータ生成部13は、パラメータpp’qq’及びNを計算し、パラメータpp’qq’及びNを一時データ記憶部12に書き込む(ST2)。
【0073】
次に、パラメータ生成部13は、位数がpp’qq’である乗法群Gを生成し、Gの元gをGからランダムに選択し、選択した元gを一時データ記憶部12に書き込む(ST3)。位数がpp’qq’である乗法群Gを生成するには、例えば、Z
N2
*の元をZ
N2
*からランダムに選択し、選択した元を二乗して得られた値をgとすれば良い。ここで、Z
N2
*はZ
N2かつN
2と互いに素な整数の集合(=(Z/N
2Z)
*)であり、合成数N
2に対する乗法群Z
N2
*と呼んで良い。Z
N2は0以上N
2未満の整数の集合(=(Z/N
2Z)である。
【数1】
【0074】
次に、鍵生成部14は、一時データ記憶部12に記憶されているパラメータpp’qq’及びNを取得し、各鍵の一部a,s,vを集合{1,…,pp’qq’}からそれぞれランダムに選択する(ST4)。
【0075】
続いて、鍵生成部14は、a・a
−1modN
2=1を満たすa
−1の値と、g
svの値とを計算し、暗号化鍵a,g
sv,g,N、二次演算鍵a
−1,s,N、及び三次演算鍵v,Nを一時データ記憶部12に書き込む。ここで、通信部15は、制御部16に制御されて一時データ記憶部12内の暗号化鍵a,g
sv,g,Nを暗号化装置20に送信する(ST5)。暗号化鍵a,g
sv,g,Nは暗号化装置20の暗号化鍵記憶部24に記憶される。
【0076】
次に、通信部15は、制御部16に制御されて一時データ記憶部12内の二次演算鍵a
−1,s,Nを演算支援装置50に送信する(ST6)。二次演算鍵a
−1,s,Nは演算支援装置50の二次演算鍵記憶部54に記憶される。
【0077】
さらに、通信部15は、制御部16に制御されて一時データ記憶部12内の三次演算鍵v,Nを演算装置40に送信する(ST7)。三次演算鍵v,Nは演算装置40の三次演算鍵記憶部46に記憶される。なお、暗号化鍵は、a,sv,g,Nであっても良いし、a,s,v,g,Nであっても良い。
【0078】
なお、ステップST5、ST6、ST7において、通信部15は、N
2も暗号化装置20、演算支援装置50、演算装置40に送信しても良い。この場合、ステップST2においてパラメータ生成部13は、N
2も一時データ記憶部12に書き込む。また、g,N,N
2は暗号化鍵、二次演算鍵、及び三次演算鍵に含めず、公開パラメータとして各装置に対して公開しておいても良い。まとめると、暗号鍵はa,s,v(又はa,sv)を含む。二次演算鍵はa
−1,sを含む。三次演算鍵はvを含む。
【0079】
これらのことは、後述する他の実施形態においても同様である。
【0080】
以上により、鍵生成処理が完了する。なお、本明細書では、Gを乗法群と想定した記法を採用しているが、これに限らず、Gを加法群と想定した記法で表すことも可能である。
【0081】
[1.暗号化処理]
以下に述べる暗号化処理は、暗号文(暗号化データ)を生成する処理である。
【0082】
暗号化処理は、暗号化装置20により、
図6及び以下の各ステップST11〜ST14に示すように実行される。暗号化装置20がk(kは自然数)個の平文(暗号化対象の数値データ)m
1,…,m
kを暗号化する例を説明する。各平文m
iはZ
Nの元である。Z
Nは0以上N未満の整数の集合(=(Z/NZ)である。
【0083】
始めに、暗号化装置20の暗号化パラメータ生成部21は、k個の乱数r
1,…,r
kをZ
N2
*からランダムにそれぞれ選択する(ST11)。次に、暗号化パラメータ生成部21は、生成した乱数r
1,…,r
kを一時データ記憶部22に書き込む(ST12)。暗号文生成部23は、一時データ記憶部22から取得した乱数r
1,…,r
kと、暗号化鍵記憶部24に記憶されている暗号化鍵a,g
sv,g,Nとを用いて、次式により平文m
1,…,m
kを暗号化する(ST13)。
【数2】
【0084】
暗号文生成部23は、生成した暗号文C
i(i=1,…,k)を一時データ記憶部22に書き込む。通信部25は、制御部26に制御されて一時データ記憶部22内の暗号文C
i(i=1,…,k)を記憶装置30に送信する(ST14)。
【0085】
なお、暗号化鍵aは、前述したように鍵生成装置10が生成しても良く、暗号化装置20が生成しても良い。この場合、ステップST5において、鍵生成装置10は、暗号化鍵g
sv,g,Nを暗号化装置20に送信し、ステップST11において、暗号化装置20の暗号化パラメータ生成部21は、暗号化鍵aを生成し、また、a
−1の値を計算し、二次演算鍵a
−1を演算支援装置50に送信する。なお、暗号化装置20がpp’qq’の値を知らない場合、暗号化鍵aをZ
N2
*の中からランダムに選択すれば良い。
【0087】
[2.一次演算処理]
以下に述べる一次演算処理は、暗号文(暗号化データ)を加減算する処理である。
【0088】
一次演算処理は、演算装置40により、
図7及び以下の各ステップST21〜ST23に示すように実行される。演算装置40が次式Fの正負を(後述する三次演算処理において)判定する例を説明する。
【数3】
【0089】
ここで、n
iは任意の整数である。また、Kは、式Fの計算に必要なインデックスiの集合である。例えば、F=2m
1−m
2の場合、n
1=2,n
2=−1,K={1,2}である。また、加減算の式Fにおける被減数m
aと減数m
bとの間の大小関係を判定したい場合、例えば、F=m
a−m
b=3m
2−4m
3+m
5とし、n
2=3,n
3=−4,n
5=1,K={2,3,5}である。ここで、被減数m
aは3m
2+m
5であり、減数m
bは4m
3である。また、数値a,bの大小関係を判定したい場合、F=m
a−m
b=m
1−m
2とし、n
1=1,n
2=−1,K={1,2}とすればよい。
【0090】
演算装置40の通信部44は、制御部45に制御されて、式Fの計算に必要な暗号文C
i(i∈K)を記憶装置30より取得し、一時データ記憶部41に記憶する(ST21)。次に、計算部42は、一時データ記憶部41から取得した暗号文C
i(i∈K)を用いて、次式により、一次演算結果X
1,X
2を計算する(ST22)。
【数4】
【0091】
計算部42は、生成した一次演算結果X
1,X
2を一時データ記憶部41に書き込む。通信部44は、制御部45に制御されて一時データ記憶部41内の一次演算結果X
1,X
2を演算支援装置50に送信する(ST23)。
【0092】
以上により、一次演算処理が完了する。
【0093】
[3.二次演算処理]
以下に述べる二次演算処理は、加減算された暗号文(暗号化データ)をランダム化する処理である。二次演算処理は、演算支援装置50により、
図8及び以下の各ステップST31〜ST34に示すように実行される。
【0094】
演算支援装置50の二次演算処理パラメータ生成部51は、パラメータL,J,β,Dを生成し、パラメータL,J,β,Dを一時データ記憶部52に書き込む(ST31)。これらのパラメータL,J,β,Dを選択する指標については後述する。なお、パラメータL,J,β,Dは外部から与えられても良い。この場合、ステップST31において、二次演算処理パラメータ生成部51は、外部から取得したパラメータL,J,β,Dを一時データ記憶部52に書き込む。
【0095】
次に、二次演算処理パラメータ生成部51は、β個の乱数r’
i(i=0,…,β−1)を集合{1,…,L}の中からランダムにそれぞれ選択する。ここで、β=1であっても良いし、β≧2であっても良い。これは他の実施形態や変形例においても同様である。また、乱数zを集合{0,1,…,J}の中からランダムに選択する。そして、二次演算処理パラメータ生成部51は、次式に示す乱数Rを計算し、乱数R,zを一時データ記憶部52に書き込む(ST32)。
【数5】
【0096】
次に、計算部53は、二次演算鍵記憶部54に記憶されている二次演算鍵a
−1,s,Nと、一時データ記憶部52から取得した一次演算結果X
1,X
2及び乱数R,zとを用いて、次式により、二次演算結果Y
1,Y
2を計算する(ST33)。
【数6】
【0097】
計算部53は、生成した二次演算結果Y
1,Y
2を一時データ記憶部52に書き込む。通信部55は、制御部56に制御されて一時データ記憶部52内の一次演算結果Y
1,Y
2を演算装置40に送信する(ST34)。
【0098】
ここで、各パラメータを選択する指標について説明する。正負判定可能な絶対値の最大値をDとする。すなわち、0<F<DのときFを正と判定し,−D<F<0のときFを負と判定できるようにしたいとする。このとき、二次演算処理パラメータ生成部51は、次式を満たすように、β個の乱数r’
iを選択する。
【数7】
【0099】
また、二次演算処理パラメータ生成部51は、β個の乱数r’
iの積であるRを上記のように選択したとき,R<Jとなる確率が十分小さくなるようにJを選択する。
【0100】
以上により、二次演算処理が完了する。
【0101】
[4.三次演算処理]
以下に述べる三次演算処理は、ランダム化及び加減算された暗号文(暗号化データ)から加減算の式における被減数と減数との間の大小関係を判定する処理である。
【0102】
三次演算処理は、演算装置40により、
図9及び以下の各ステップST41〜ST42に示すように実行される。
【0103】
演算装置40の計算部42は、三次演算鍵記憶部46に記憶されている三次演算鍵v,Nと、一時データ記憶部41から取得した二次演算結果Y
1,Y
2とを用いて、次式により、W’を計算する。
【数8】
【0104】
W’がNの倍数でない場合、以降の計算を行わず、三次演算処理を終了する。そうでない場合(W’がNの倍数である場合)、計算部42は、次式により、三次演算結果Wを計算する(ST41)。
【数9】
【0105】
次に、判定部43は、W<N/2ならば式Fは正であると判定し、そうでないならば式Fは負(又は0)と判定する(ST42)。
【0106】
F=M
a−M
bの形で表されるとき、Fが正であれば、M
a>M
bと判定できる。Fが負であれば、M
a≦M
bと判定できる。
【0107】
以上により、三次演算処理が完了する。
【0108】
なお、ステップST42において、判定部43は、−J≦W≦0ならばF=0と判定しても良い。この場合、判定部43は、−N/2<W<−JならばFは負であると判定する。これは他の実施形態や変形例においても同様である。
【0109】
ここで、F=3m
2−4m
3+m
5の場合を例に取って、W=FR−zとなることを示す。一次演算結果X
1,X
2、二次演算結果Y
1,Y
2及び三次演算結果Wはそれぞれ以下のように表される。
【数10】
【0110】
三次演算結果Wにおいては、W=FR−zであり、FRからzを引いている。しかしながら、上述したようにRの値を適切に設定すれば、ステップST42において判定部43は、乱数zの値に影響を受けることなく、正しくFの正負判定を行うことができる。
【0111】
上述した例では、F=M
a−M
b=3m
2−4m
3+m
5であるので、例えば、被減数M
a=3m
2+m
5、減数M
b=4m
3とおくことにより、被減数(3m
2+m
5)と減数(4m
3)との間の大小関係を判定できる。また、例えば、被減数M
a=3m
2、減数M
b=4m
3−m
5とみなすことにより、被減数(3m
2)と減数(4m
3−m
5)との間の大小関係を判定することもできる。
【0112】
上述したように本実施形態によれば、演算装置40は、各暗号化データに基づいて、各数値を加減算した式の演算結果を暗号化したデータに相当する一次演算結果を生成する。演算支援装置50は、一次演算結果、二次演算鍵及び乱数に基づいて、一次演算結果をランダム化してなる二次演算結果を生成する。演算装置40は、二次演算結果及び三次演算鍵に基づいて、加減算した式の演算結果を乱数のみで秘匿化したデータに相当する三次演算結果を生成し、三次演算結果に基づいて式における被減数と減数との間の大小関係を判定する。
【0113】
以上のように、各数値を暗号化してなる各暗号化データを用いて当該各数値を加減算でき、当該加減算における被減数と減数との間の大小関係を判定することができる。
【0114】
また、暗号化データE(a),E(b)の復号鍵と、比較鍵(三次演算鍵)とを異ならせることができ、比較鍵を用いても暗号化データE(a),E(b)を復号できない。
【0115】
(変形例1)
本実施形態に係る暗号化データ演算システムにおいて、暗号文C
iを復号する復号装置(図示せず)が存在していても良い。復号装置は、復号鍵sv,a
−1,N(又はs,v,a
−1,N)を記憶した記憶部と、計算を実行する計算部とを備えている。復号装置は、以下の処理により暗号文C
iを復号できる。復号装置の計算部は、記憶部内の復号鍵sv,a
−1,Nと、暗号文C
iとを用いて、次式によりD’を計算する。
【数11】
【0116】
D’がNの倍数でない場合、以降の計算を行わず、復号処理を終了する。そうでない場合(D’がNの倍数である場合)、復号装置の計算部は、次式により、平文を計算する。
【数12】
【0117】
(第2の実施形態)
第1の実施形態においては、二次演算鍵sと三次演算鍵vとがそれぞれ1つ生成される例を説明したが、これに限らず、二次演算鍵と三次演算鍵とがそれぞれ複数生成されても良い。以下、ある期間t1にs
t1,v
t1が用いられ、次の期間t2にs
t2,v
t2が用いられる、といった具合に、複数の二次演算鍵s
t1,s
t2,…と複数の三次演算鍵v
t1,v
t2,…とが生成される例を説明する。
【0118】
以下、本実施形態における鍵生成処理、暗号化処理、一次演算処理、二次演算処理、及び三次演算処理について説明する。但し、第1の実施形態と共通する部分については、同一の符号を用いて説明し、重複した説明を省略する。
【0119】
[0.鍵生成処理]
ステップST1〜ST3の処理は第1の実施形態と同一である。
【0120】
鍵生成部14は、一時データ記憶部12に記憶されているpp’qq’及びNを取得し、a,s
t,v
Tを{1,…,pp’qq’}からそれぞれランダムに選択する(ST4’)。ここで、表記を一般化するために、sの添え字としてtを、vの添え字としてTをそれぞれ用いている。s
tは期間tに用いられるsの値という意味であり、v
Tは期間Tに用いられるvの値という意味である。期間tの値と期間Tの値は異なっていても良いし、t=Tであっても良い。
【0121】
この場合、暗号化鍵はa,g^{s
tv
T},g,Nと表される(但し、^は、ベキ乗を表す記号である。)。二次演算鍵はa
−1,s
t,Nと表される。三次演算鍵はv
T,Nと表される。
【数13】
【0122】
鍵生成部14は、各期間で用いられる暗号化鍵、二次演算鍵、及び三次演算鍵を各期間が来る度に生成しても良いし、予め複数期間分の暗号化鍵、二次演算鍵、及び三次演算鍵を生成し、暗号化装置20、演算支援装置50、及び演算装置40へそれぞれ渡しておいても良い。
【0123】
[1.暗号化処理]
ステップST11、ST12、及びST14の処理は第1の実施形態と同一である。
【0124】
暗号文生成部23は、一時データ記憶部22から取得した乱数r
1,…,r
kと、暗号化鍵記憶部24に記憶されている暗号化鍵a,g^{s
tv
T},g,Nとを用いて、次式により平文m
1,…,m
kを暗号化する(ST13’)。
【数14】
【0125】
[2.一次演算処理]
ステップST21の処理は第1の実施形態と同一である。
【0126】
計算部42は、一時データ記憶部41から取得した暗号文C
i(i∈K)を用いて、各(t,T)について、次式により、一次演算結果{X
1(t,T),X
3,X
4},X
2を計算する(ST22’)。
【数15】
【0127】
ここで、X
1(t,T)は、(C
i,3,C
i,4)が同一である、一つ又は複数のC
iを用いて計算される。例えば、(t,T)=(1,1)のC
iと、(t,T)=(2,1)のC
iが存在する場合、X
1(1,1)とX
1(2,1)とをそれぞれ計算することになる。各(t,T)について計算したX
1(t,T),X
3,X
4の集合を{X
1(t,T),X
3,X
4}と表記する。
【0128】
計算部42は、生成した一次演算結果{X
1(t,T),X
3,X
4},X
2を一時データ記憶部41に書き込む。通信部44は、制御部45に制御されて一時データ記憶部41内の一次演算結果{X
1(t,T),X
3,X
4},X
2を演算支援装置50に送信する(ST23’)。
【0129】
[3.二次演算処理]
ステップST31及びステップST32の処理は第1の実施形態と同一である。
【0130】
計算部53は、二次演算鍵記憶部54に記憶されている二次演算鍵s
t,Nと、一時データ記憶部52から取得した一次演算結果{X
1(t,T)}とを用いて、各(t,T)について、次式により、Y
1(t,T)を計算し、Y
1(t,T)を一時データ記憶部52に書き込む。
【数16】
【0131】
次に、計算部53は、二次演算鍵記憶部54に記憶されている二次演算鍵a
−1,Nと、一時データ記憶部52から取得したY
1(t,T)、一次演算結果X
2、及び乱数R,zとを用いて、各Tについて、次式により、二次演算結果{Y
1(T),Y
3},Y
2を計算する(ST33’)。
【数17】
【0132】
ここで、Y
1(T)は、X
4が同一である、一つ又は複数のX
1(t,T)を用いて計算される。例えば、(t,T)=(1,1)のX
1(t,T)と、(t,T)=(1,2)のX
1(t,T)が存在する場合、Y
1(1)とY
2(2)とをそれぞれ計算することになる。各Tについて計算したY
1(T),Y
3の集合を{Y
1(T),Y
3}と表記する。
【0133】
計算部53は、生成した二次演算結果{Y
1(T),Y
3},Y
2を一時データ記憶部52に書き込む。通信部55は、制御部56に制御されて一時データ記憶部52内の二次演算結果{Y
1(T),Y
3},Y
2を演算装置40に送信する(ST34’)。
【0134】
[4.三次演算処理]
ステップST42の処理は第1の実施形態と同一である。
【0135】
計算部42は、三次演算鍵記憶部46に記憶されている三次演算鍵v
T,Nと、一時データ記憶部41から取得した二次演算結果{Y
1(T),Y
3},Y
2とを用いて、次式により、W’を計算する。
【数18】
【0136】
W’がNの倍数でない場合、以降の計算を行わず、三次演算処理を終了する。そうでない場合(W’がNの倍数である場合)、計算部42は、次式により、三次演算結果Wを計算する(ST41’)。
【数19】
【0137】
第1の実施形態と同様に、F=M
a−M
bの形で式が表されるとき、式Fが正であれば、M
a>M
bと判定できる。式Fが負であれば、M
a≦M
bと判定できる。これにより、三次演算処理が完了する。
【0138】
次に、以上のような一次演算処理、二次演算処理及び三次演算処理について、例を挙げて説明する。具体的には、F=m
1−m
2+m
3+m
4+m
5であり、次式に示す暗号文C
1,C
2,C
3,C
4,C
5が記憶装置30に記憶されている場合を例に挙げて、W=FR−zとなることを示す。
【数20】
【0140】
上述の例においてはF=M
a−M
b=m
1−m
2+m
3+m
4+m
5であるので、例えば、M
a=m
1+m
3+m
4+m
5、M
b=m
2とおくことができ、m
1+m
3+m
4+m
5と、m
2との大小比較を行うことができる。
【0141】
また、例えば、M
a=m
1+m
3+m
4、M
b=m
2−m
5とみなすこともできるので、m
1+m
3+m
4と、m
2−m
5との大小比較を行っているとみなすこともできる。
【0142】
上述したように本実施形態によれば、複数の期間t1,t2に応じて、複数の二次演算鍵s
t1,s
t2と複数の三次演算鍵v
t1,v
t2とをそれぞれ生成する構成により、第1の実施形態の効果に加え、鍵漏洩の被害を抑えつつ,期間t1において生成された暗号文E
(t1)(a)と、期間t2において生成された暗号文E
(t2)(b)とを用い、各数値を暗号化した状態で大小関係を判定することができる。
【0143】
補足すると、一般に、鍵漏洩の被害を抑制する観点から、定期的に比較鍵を更新することが望ましい。しかしながら、従来の大小関係の判定方法では、比較鍵の更新前に生成した暗号化データE
(t1)(a)と、比較鍵の更新後に生成した暗号化データE
(t2)(b)とを用いた場合には、数値a,bの値の大小を判定できない問題がある。
【0144】
これに対し、本実施形態によれば、前述した通り、期間t1において生成された暗号文E
(t1)(a)と、期間t2において生成された暗号文E
(t2)(b)とを用い、各数値を暗号化した状態で大小関係を判定することができる。
【0145】
(変形例2)
本実施形態に係る暗号化データ演算システムにおいて、暗号文C
iを復号する復号装置(図示せず)が存在していても良い。復号装置は、復号鍵s
tv
T,a
−1,N(又はs
t,v
T,a
−1,N)を記憶した記憶部と、計算を実行する計算部とを備えている。復号装置は、以下の処理により暗号文C
iを復号できる。復号装置の計算部は、記憶部内の復号鍵s
tv
T,a
−1,Nと、暗号文C
iとを用いて、次式によりD’を計算する。
【数22】
【0146】
D’がNの倍数でない場合、以降の計算を行わず、復号処理を終了する。そうでない場合(D’がNの倍数である場合)、復号装置の計算部は、次式により、平文を計算する。
【数23】
【0147】
(変形例3)
第2の実施形態においては、ある期間t
iにs
i,v
iが用いられる例を説明したが、これに限らず、ユーザ毎(暗号化装置20毎)に異なるs
i,v
iを用いても良い。この場合、第2の実施形態において、t
iをユーザの識別情報(暗号化装置20の識別情報)とみなせば良い。つまり、鍵生成処理、暗号化処理、一次演算処理、二次演算処理、及び三次演算処理の各処理は同一で、インデックスの意味を変えるだけ(すなわち、「期間」を「ユーザ(暗号化装置20)」に置き換えるだけ)で良い。
【0148】
(変形例4)
二次演算鍵s
iは1つのみで、三次演算鍵v
iが複数であっても良い。この場合、第2の実施形態においてs
1=s
2=…=sと置き換えれば良い。また、二次演算鍵s
iは複数で、三次演算鍵v
iが1つのみであっても良い。この場合、第2の実施形態においてv
1=v
2=…=vと置き換えれば良い。
【0149】
以上説明した少なくとも一つの実施形態によれば、演算装置40は、各暗号化データに基づいて、各数値を加減算した式の演算結果を暗号化したデータに相当する一次演算結果を生成する。演算支援装置50は、一次演算結果、二次演算鍵及び乱数に基づいて、一次演算結果をランダム化してなる二次演算結果を生成する。演算装置40は、二次演算結果及び三次演算鍵に基づいて、加減算した式の演算結果を乱数のみで秘匿化したデータに相当する三次演算結果を生成し、三次演算結果に基づいて式における被減数と減数との間の大小関係を判定する。
【0150】
以上のように、各数値を暗号化してなる各暗号化データを用いて当該各数値を加減算でき、当該加減算における被減数と減数との間の大小関係を判定することができる。
【0151】
なお、上記の各実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク(フロッピー(登録商標)ディスク、ハードディスクなど)、光ディスク(CD−ROM、DVDなど)、光磁気ディスク(MO)、半導体メモリなどの記憶媒体に格納して頒布することもできる。
【0152】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
【0153】
そして、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているOS(オペレーティングシステム)や、データベース管理ソフト、ネットワークソフト等のMW(ミドルウェア)等が上記実施形態を実現するための各処理の一部を実行しても良い。
【0154】
さらに、各実施形態における記憶媒体は、コンピュータと独立した媒体に限らず、LANやインターネット等により伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
【0155】
また、記憶媒体は1つに限らず、複数の媒体から上記の各実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
【0156】
なお、各実施形態におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、上記の各実施形態における各処理を実行するものであって、パソコン等の1つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
【0157】
また、各実施形態におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【0158】
なお、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。