不正検知方法、秘密計算システム、計算装置、計算プログラム
【課題】乗算の秘密計算での計算装置の不正処理を検知する。
【解決手段】秘密計算システムは、データ取得手段、乱数共有手段、第1乗算結果分散手段、乗算結果加算手段、第2乗算結果分散手段、乗算確認手段を備える。乱数共有手段は、計算装置P1と計算装置P2に、ランダムに選んだ2以上M以下の整数Sを共有させる。第1乗算結果分散手段は、計算装置P1にSa1を分散させ、計算装置P1または計算装置P2にSa2を分散させ、計算装置P2にSa0を分散させる。乗算結果加算手段は、D=Sa0+Sa1+Sa2 mod Mの秘密計算を行う。第2乗算結果分散手段は、E=DB mod Mの秘密計算を行う。乗算確認手段は、計算装置P1にf=e1+e2−Sc1−Sc2 mod Mを計算させ、計算装置P2にg=e0−Sc0 mod Mを計算させ、計算装置P1または計算装置P2にf+g=0 mod Mかを確認させる。
【解決手段】秘密計算システムは、データ取得手段、乱数共有手段、第1乗算結果分散手段、乗算結果加算手段、第2乗算結果分散手段、乗算確認手段を備える。乱数共有手段は、計算装置P1と計算装置P2に、ランダムに選んだ2以上M以下の整数Sを共有させる。第1乗算結果分散手段は、計算装置P1にSa1を分散させ、計算装置P1または計算装置P2にSa2を分散させ、計算装置P2にSa0を分散させる。乗算結果加算手段は、D=Sa0+Sa1+Sa2 mod Mの秘密計算を行う。第2乗算結果分散手段は、E=DB mod Mの秘密計算を行う。乗算確認手段は、計算装置P1にf=e1+e2−Sc1−Sc2 mod Mを計算させ、計算装置P2にg=e0−Sc0 mod Mを計算させ、計算装置P1または計算装置P2にf+g=0 mod Mかを確認させる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は暗号技術に関し、暗号化された二つの数値を復元すること無く当該数値の乗算結果の暗号文(断片)を得るときの不正検知方法、不正検知機能を有する秘密計算システム、計算装置、および計算プログラムに関する。
【背景技術】
【0002】
暗号化された数値を復元すること無く特定の演算結果を得る方法(以降、このような計算を秘密計算と呼ぶ)として、例えば非特許文献1に記載された方法がある。この方法は、3つの計算装置に1つ以上の数値を分散させて記録する(以降、分散された情報を断片と呼ぶ)。そして、分散された数値を復元すること無く、加減算,定数和,乗算,定数倍,論理演算(否定,論理積,論理和,排他的論理和),データ形式変換(整数, 二進数)の結果を3つの計算装置に分散保持させることができる(なお、定数とは既知の数値を意味している)。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】千田浩司,五十嵐大,高橋克巳,“効率的な3パーティ秘匿関数計算の提案とその運用モデルの考察”,第48回情報処理学会研究報告,CSEC, pp.1-7, 2010,3月.
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来技術は乗算の秘密計算においていずれかの計算装置が不正処理を行った場合にそれを検知できない場合がある。本発明は、乗算の秘密計算での計算装置の不正処理を検知できる秘密計算システムを提供することを目的とする。
【課題を解決するための手段】
【0005】
本発明の秘密計算システムは、数値Xを3つの計算装置α、β、γで分散して記録し、秘密計算を行う。Mを2以上の整数、計算装置P0として動作する計算装置が記録する断片を(x0,x1)、計算装置P1として動作する計算装置が記録する断片を(x1,x2)、計算装置P2として動作する計算装置が記録する断片を(x2,x0)、数値Xと断片とは
X=x0+x1+x2 mod M
の関係を満たすとする。
【0006】
秘密計算システムは、データ取得手段、乱数共有手段、第1乗算結果分散手段、乗算結果加算手段、第2乗算結果分散手段、乗算確認手段を備える。データ取得手段は、数値A,B,Cの断片として、計算装置P0に断片(a0,a1),(b0,b1),(c0,c1)を取得させ、計算装置P1に断片(a1,a2),(b1,b2),(c1,c2)を取得させ、計算装置P2に断片(a2,a0),(b2,b0),(c2,c0)を取得させる。乱数共有手段は、計算装置P1と計算装置P2に、ランダムに選んだ2以上M以下の整数Sを共有させる。第1乗算結果分散手段は、計算装置P1にSa1を分散させ、計算装置P1または計算装置P2にSa2を分散させ、計算装置P2にSa0を分散させて、計算装置P0に断片((Sa0)0,(Sa0)1),((Sa1)0,(Sa1)1),((Sa2)0,(Sa2)1)を取得させ、計算装置P1に断片((Sa0)1,(Sa0)2),((Sa1)1,(Sa1)2),((Sa2)1,(Sa2)2)を取得させ、計算装置P2に断片((Sa0)2,(Sa0)0),((Sa1)2,(Sa1)0),((Sa2)2,(Sa2)0)を取得させる。乗算結果加算手段は、
D=Sa0+Sa1+Sa2 mod M
の秘密計算を行い、計算装置P0に断片(d0,d1)を取得させ、計算装置P1に断片(d1,d2)を取得させ、計算装置P2に断片(d2,d0)を取得させる。第2乗算結果分散手段は、
E=DB mod M
の秘密計算を行い、計算装置P0に断片(e0,e1)を取得させ、計算装置P1に断片(e1,e2)を取得させ、計算装置P2に断片(e2,e0)を取得させる。
【0007】
乗算確認手段は、計算装置P1に
f=e1+e2−Sc1−Sc2 mod M
を計算させ、計算装置P2に
g=e0−Sc0 mod M
を計算させ、計算装置P1または計算装置P2に
f+g=0 mod M
かを確認させる。もしくは、乗算確認手段は、計算装置P1に
f=e1−Sc1 mod M
を計算させ、計算装置P2に
g=e2+e0−Sc2−Sc0 mod M
を計算させ、計算装置P1または計算装置P2に
f+g=0 mod M
かを確認させる。
【発明の効果】
【0008】
本発明の秘密計算システムによれば、乱数Sを用いて2通りの演算を行い乗算の結果が同じになることを確認するので、乗算の秘密計算での計算装置の不正処理を検知できる。
【図面の簡単な説明】
【0009】
【図1】本発明の秘密計算システムの機能構成例を示す図。
【図2】実施例1の秘密計算システムの不正検知の処理フローを示す図。
【図3】実施例2の秘密計算システムの不正検知の処理フローを示す図。
【発明を実施するための形態】
【0010】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【実施例1】
【0011】
図1に実施例1の秘密計算システムの機能構成例を示す。図2に実施例1の秘密計算システムの不正検知の処理フローを示す。実施例1の秘密計算システムは、ネットワーク1000を介して接続された3つの計算装置100α、100β、100γで構成される。計算装置100α、100β、100γは、数値Xの断片(分散された情報)を分散して記録し、秘密計算を行う。各計算装置100y(ただし、yはα、β、もしくはγ)は、データ取得部110y、乱数共有部120y、第1乗算結果分散部130y、乗算結果加算部140y、第2乗算結果分散部150y、乗算確認部160y、記録部190yを備える。記録部190yは、断片のデータなどを記録する。秘密計算システムは、データ取得手段、乱数共有手段、第1乗算結果分散手段、乗算結果加算手段、第2乗算結果分散手段、乗算確認手段を備える。データ取得手段は、データ取得部110α,110β,110γで構成される。乱数共有手段は、乱数共有部120α,120β,120γで構成される。第1乗算結果分散手段は、第1乗算結果分散部130α,130β,130γで構成される。乗算結果加算手段は、乗算結果加算部140α,140β,140γで構成される。第2乗算結果分散手段は、第2乗算結果分散部150α,150β,150γで構成される。乗算確認手段は、乗算確認部160α,160β,160γで構成される。
【0012】
計算装置100α、100β、100γは、まず、計算装置P0として動作するか、計算装置P1として動作するか、計算装置P2として動作するかが決められる。そして、計算装置P0として動作する計算装置が記録する断片を(x0,x1)、計算装置P1として動作する計算装置が記録する断片を(x1,x2)、計算装置P2として動作する計算装置が記録する断片を(x2,x0)と示すことにする。このとき、数値Xと断片とは
X=x0+x1+x2 mod M
ただし、Mは2以上の整数
の関係を満たすとする。なお、計算装置Pn(ただし、nは0,1,2のいずれか)として動作する計算装置の各構成部を、データ取得部110n、乱数共有部120n、第1乗算結果分散部130n、乗算結果加算部140n、第2乗算結果分散部150n、乗算確認部160n、記録部190nと表記する。
【0013】
計算装置P0のデータ取得部1100が、数値A,B,Cの断片として断片(a0,a1),(b0,b1),(c0,c1)を取得し、記録部1900に記録する。計算装置P1のデータ取得部1101が、数値A,B,Cの断片として断片(a1,a2),(b1,b2),(c1,c2)を取得し、記録部1901に記録する。計算装置P2のデータ取得部1102が、数値A,B,Cの断片として断片(a2,a0),(b2,b0),(c2,c0)を取得し、記録部1902に記録する(S110)。なお、数値A,Bは、装置Qと装置Rがそれぞれ保持して分散した数値とする。ここで、装置Qと装置Rとは同一の装置でもよい。また装置Q,Rは、計算装置P0,P1,P2のいずれかであってもよいし、異なる装置でもよい。数値Cは、計算装置P0,P1,P2の間で
C=AB mod M
の秘密計算を実行して、断片を計算装置P0,P1,P2が取得した数値である。
【0014】
計算装置P1の乱数共有部1201と計算装置P2の乱数共有部1202は、ランダムに選んだ2以上M以下の整数Sを共有する(S120)。計算装置P1の第1乗算結果分散部1301はSa1を分散し、計算装置P1の第1乗算結果分散部1301または計算装置P2の第1乗算結果分散部1302はSa2を分散し、計算装置P2の第1乗算結果分散部1302はSa0を分散し、計算装置P0が断片((Sa0)0,(Sa0)1),((Sa1)0,(Sa1)1),((Sa2)0,(Sa2)1)を取得し、計算装置P1が断片((Sa0)1,(Sa0)2),((Sa1)1,(Sa1)2),((Sa2)1,(Sa2)2)を取得し、計算装置P2が断片((Sa0)2,(Sa0)0),((Sa1)2,(Sa1)0),((Sa2)2,(Sa2)0)を取得する(S130)。乗算結果加算部1400、1401、1402は、
D=Sa0+Sa1+Sa2 mod M
の秘密計算を行い、計算装置P0が断片(d0,d1)を取得し、計算装置P1が断片(d1,d2)を取得し、計算装置P2が断片(d2,d0)を取得する(S140)。
【0015】
第2乗算結果分散部1500、1501、1502は、
E=DB mod M
の秘密計算を行い、計算装置P0が断片(e0,e1)を取得し、計算装置P1が断片(e1,e2)を取得し、計算装置P2が断片(e2,e0)を取得する(S150)。なお、数値D,Eは、上述のように、計算装置P0,P1,P2の間で
D=SA mod M
E=DB mod M =SAB mod M
の秘密計算を実行して、断片を計算装置P0,P1,P2が取得した数値である。このように計算を行うので、数値D,Eは、計算装置P0,P1,P2のどの装置も知らない数値である。
【0016】
計算装置P1の乗算確認部1601は、
f=e1+e2−Sc1−Sc2 mod M
を計算し、計算装置P2の乗算確認部1602は、
g=e0−Sc0 mod M
を計算し、計算装置P1の乗算確認部1601または計算装置P2の乗算確認部1602は、
f+g=0 mod M
かを確認する(S160)。この式が成り立つ場合には計算装置P0は不正を行っていないと判断し、成り立たない場合は計算装置P0が不正を行ったと判断する。もしくは、ステップS160として、計算装置P1の乗算確認部1601は、
f=e1−Sc1 mod M
を計算し、計算装置P2の乗算確認部1602は、
g=e2+e0−Sc2−Sc0 mod M
を計算し、計算装置P1の乗算確認部1601または計算装置P2の乗算確認部1602は、
f+g=0 mod M
かを確認する。そして、この式が成り立つ場合には計算装置P0は不正を行っていないと判断し、成り立たない場合は計算装置P0が不正を行ったと判断する。なお、
f+g=0 mod M
の確認を計算装置P1で行う場合は計算装置P1は計算装置P2からgを受信した上で、計算装置P2で行う場合は計算装置P2は計算装置P1からfを受信した上で確認を行う。
【0017】
このように実施例1の秘密計算システムでは、計算装置P0,P1,P2は数値A,Bの断片(分散されたデータ)からC=ABの断片を得る際、計算装置P1,P2は乱数Sを共有し、計算装置P0,P1,P2はC=AB,D=SA,E=DBの断片を得る手続きを行い、計算装置P1,P2はSC=Eとなっているかどうか検証し、なっていれば計算装置P0は正しいと判断し、なっていなければ不正と判断する。つまり、実施例1の秘密計算システムによれば、乱数Sを用いて2通りの演算を行い、乗算の結果が同じになることを確認するので、乗算の秘密計算において計算装置P0の不正処理を検知できる。
[不正が検知できる理由]
次に、上述の乗算の不正検知について補足説明する。
【0018】
f+g=e0+e1+e2−S(c0+c1+c2) mod M
=DB−SC mod M
=SAB−SC mod M
が成り立つから、秘密計算システムが正しく動作すれば
f+g=0 mod M
となる。計算装置P0が不正データを送信した場合、e0,e1,e2,c0,c1,c2が不正データとなり得る。これをe’0,e’1,e’2,c’0,c’1,c’2とおくと、計算装置P0は
f’=e’1+e’2−Sc’1−Sc’2 mod M
g’=e’0−Sc’0 mod M
もしくは、
f’=e’1−Sc’1 mod M
g’=e’2+e’0−Sc’2−Sc’0 mod M
について
f’+g’=0 mod M
となるようにe’0,e’1,e’2,c’0,c’1,c’2を選ぶ必要がある。ここで、本来の値と不正値の差分を
ΔC=C−(c’0+c’1+c’2) mod M
ΔE=SC−(e’0+e’1+e’2) mod M
とおくと、
f’+g’=(SC−ΔE)−S(C−ΔC) mod M
となるから、
f’+g’=0 mod M ⇔ ΔE=SΔC mod M
成り立ち、任意のSについて
f’+g’=0 mod M
が成り立つためには
ΔE=ΔC=0
でなければならないので、不正が成立しない。なお、不正が成立するためには、
ΔE≠0またはΔC≠0として
f’+g’=0 mod M
が成り立つ、すなわちΔE=SΔC mod Mが成り立つ必要がある。しかし、計算装置P0がSを知らない限り、Mが大きく、かつSとMの最大公約数が小さければこれは困難である。
【実施例2】
【0019】
実施例2の秘密計算システムの機能構成も図1に示す。図3に実施例2の秘密計算システムの不正検知の処理フローを示す。実施例1の秘密計算システムとは、各計算装置100y(ただし、yはα、β、もしくはγ)が、減算結果分散部170y、減算確認部180yも備えている点が異なる。また、減算結果分散部170α、170β、170γが減算結果分散手段を構成し、減算確認部180α、180β、180γが減算確認手段を構成する。そして、本実施例では、各計算装置100yを、計算装置P0,計算装置P1,計算装置P2のどれとして動作させるかを変更しながら、不正検知の処理を行う。
【0020】
計算装置100αの記録部190αが記録する断片を(xγα,xαβ)、計算装置100βの記録部190βが記録する断片を(xαβ,xβγ)、計算装置100γの記録部190γが記録する断片を(xβγ,xγα)とする。また、断片(c0,c1),(c1,c2),(c2,c0)は計算装置100αが計算装置P0として、計算装置100βが計算装置P1として、計算装置100γが計算装置P2としてC=ABの秘密計算を行った結果、断片(c’0,c’1),(c’1,c’2),(c’2,c’0)は計算装置100αが計算装置P1として、計算装置100βが計算装置P2として、計算装置100γが計算装置P0としてC=ABの秘密計算を行った結果、断片(c”0,c”1),(c”1,c”2),(c”2,c”0)は計算装置100αが計算装置P2として、計算装置100βが計算装置P0として、計算装置100γが計算装置P1としてC=ABの秘密計算を行った結果とする。
【0021】
本実施例のデータ取得手段では、計算装置100αのデータ取得部110αが断片(a0,a1),(b0,b1),(c0,c1),(c’1,c’2),(c”2,c”0)を取得し、計算装置100βのデータ取得部110βが断片(a1,a2),(b1,b2),(c1,c2)(c’2,c”0),(c”0,c”1)を取得し、計算装置100γのデータ取得部110γが断片(a2,a0),(b2,b0),(c2,c0)(c’0,c’1),(c”1,c”2)を取得する(S110’)。
【0022】
まず、計算装置100αが計算装置P0として、計算装置100βが計算装置P1として、計算装置100γが計算装置P2として動作するように設定する(S101)。そして、断片(a0,a1),(a1,a2),(a2,a0)と断片(b0,b1),(b1,b2),(b2,b0)と断片(c0,c1),(c1,c2),(c2,c0)を用いて、計算装置100αが計算装置P0として、計算装置100βが計算装置P1として、計算装置100γが計算装置P2として、実施例1と同じようにステップS120(乱数共有ステップ)、ステップS130(第1乗算結果分散ステップ)、ステップS140(乗算結果加算ステップ)、ステップS150(第2乗算結果分散ステップ)、ステップS160(乗算確認ステップ)を実行する。このことにより、計算装置P0として動作した計算装置100αが不正をしていないこと(または不正をしたこと)を確認できる。
【0023】
秘密計算システムは、計算装置を所定の組合せだけ設定したかを確認する(S102)。所定の組合せとは、例えば、(1)計算装置100αが計算装置P0として、計算装置100βが計算装置P1として、計算装置100γが計算装置P2として動作する組合せ、(2)計算装置100αが計算装置P1として、計算装置100βが計算装置P2として、計算装置100γが計算装置P0として動作する組合せ、(3)計算装置100αが計算装置P2として、計算装置100βが計算装置P0として、計算装置100γが計算装置P1として動作する組合せとすればよい。このように計算装置P0として動作する計算装置を変更することにより、不正検知の対象となる計算装置を変更できる。また、すべての計算装置が計算装置P0として動作するまで組合せを変更すれば、すべての計算装置を不正検知の対象にできる。
【0024】
所定の組合せ分の処理が終わっていなければ(ステップS102がNoならば)、計算装置の設定を変更する。本実施例では、計算装置100αが計算装置P1として、計算装置100βが計算装置P2として、計算装置100γが計算装置P0として動作するように設定する(S103)。そして、断片(a’0,a’1),(a’1,a’2),(a’2,a’0)と断片(b’0,b’1),(b’1,b’2),(b’2,b’0)と断片(c’0,c’1),(c’1,c’2),(c’2,c’0)を用いて、計算装置100αが計算装置P1として、計算装置100βが計算装置P2として、計算装置100γが計算装置P0として、ステップS120(乱数共有ステップ)、ステップS130(第1乗算結果分散ステップ)、ステップS140(乗算結果加算ステップ)、ステップS150(第2乗算結果分散ステップ)、ステップS160(乗算確認ステップ)を実行する。ただし、a’0=a2,a’1=a0,a’2=a1,b’0=b2,b’1=b0,b’2=b1である。このことにより、計算装置P0として動作した計算装置100γが不正をしていないこと(または不正をしたこと)を確認できる。
【0025】
さらに、本実施例では、計算装置100αが計算装置P2として、計算装置100βが計算装置P0として、計算装置100γが計算装置P1として動作するように設定する(S103)。そして、断片(a”0,a”1),(a”1,a”2),(a”2,a”0)と断片(b”0,b”1),(b”1,b”2),(b”2,b”0)と断片(c”0,c”1),(c”1,c”2),(c”2,c”0)を用いて、計算装置100αが計算装置P2として、計算装置100βが計算装置P0として、計算装置100γが計算装置P1として、ステップS120(乱数共有ステップ)、ステップS130(第1乗算結果分散ステップ)、ステップS140(乗算結果加算ステップ)、ステップS150(第2乗算結果分散ステップ)、ステップS160(乗算確認ステップ)を実行する。ただし、a”0=a1,a”1=a2,a”2=a0,b”0=b1,b”1=b2,b”2=b0である。このことにより、計算装置P0として動作した計算装置100βが不正をしていないこと(または不正をしたこと)を確認できる。
【0026】
次に、秘密計算システムは、計算装置100α、100β、100γが計算装置P0,P1,P2のいずれの計算装置として動作するかを決め、減算結果分散部1700、1701、1702が
U=C−C’ mod M
の秘密計算と、
V=C−C” mod M
の秘密計算とを行い、計算装置P0が断片(u0,u1),(v0,v1)を取得し、計算装置P1が断片(u1,u2),(v1,v2)を取得し、計算装置P2が断片(u2,u0),(v2,v0)を取得する(S170)。
減算確認部1800、1801、1802が、数値UとVを復元し、U=0かつV=0であることを確認する(S180)。
【0027】
本実施例の場合、上述のように計算装置P0として動作する計算装置を変更しながら不正検知の処理を行う。したがって、すべての計算装置が計算装置P0として動作したときに不正を行っていないこと(または不正を行ったこと)を検知できる。また、計算装置P1またはP2として動作するときに不正を行い、
C’≠AB mod M
または
C”≠AB mod M
となった場合、ステップS180で不正が検知できる。したがって、実施例2の秘密計算システムによれば、実施例1と同じ効果が得られるだけでなく、乗算の秘密計算において各計算装置の不正処理を検知できる。
【0028】
[秘密計算]
実施例1、実施例2の説明では、秘密計算については、1つの方法に限定しないことを前提としており、具体例は示さなかった。以下では、本発明の秘密計算システムの各構成部が利用できる基本的な秘密計算の具体例を示す。なお、以下の説明では、計算装置1000,1001,1002が分散して記録する数値Aの断片を(a0,a1),(a1,a2),(a2,a0)、数値Bの断片を(b0,b1),(b1,b2),(b2,b0)、数値Cの断片を(c0,c1),(c1,c2),(c2,c0)とする。また、Mを2以上の整数とする。
【0029】
整数Aの秘密分散
(1)0以上M未満の整数の乱数a0,a1を生成する。
(2)a2=A−a0−a1を計算し、断片を(a0,a1),(a1,a2),(a2,a0)とし、計算装置P0,P1,P2に分散して記録する。
【0030】
整数Aの復元
(1)計算装置P0は計算装置P1にa0を送信し、計算装置P2にa1を送信する。計算装置P1は計算装置P2にa1を送信し、計算装置P0にa2を送信する。計算装置P2は計算装置P0にa2を送信し、計算装置P1にa0を送信する。
(2)計算装置P0は計算装置P1から受信したa2と計算装置P2から受信したa2とが一致していれば、
a0+a1+a2 mod M
を計算して数値Aを復元する。計算装置P1は計算装置P2から受信したa0と計算装置P0から受信したa0とが一致していれば、
a0+a1+a2 mod M
を計算して数値Aを復元する。計算装置P2は計算装置P0から受信したa1と計算装置P1から受信したa1とが一致していれば、
a0+a1+a2 mod M
を計算して数値Aを復元する。
【0031】
整数の加算(C=A+B mod M)の秘密計算
計算装置P0は
(c0,c1)=(a0+b0 mod M,a1+b1 mod M)
を計算して記録し、計算装置P1は
(c1,c2)=(a1+b1 mod M,a2+b2 mod M)
を計算して記録し、計算装置P2は
(c2,c0)=(a2+b2 mod M,a0+b0 mod M)
を計算して記録する。
【0032】
整数の減算(C=A−B mod M)の秘密計算
計算装置P0は
(c0,c1)=(a0−b0 mod M,a1−b1 mod M)
を計算して記録し、計算装置P1は
(c1,c2)=(a1−b1 mod M,a2−b2 mod M)
を計算して記録し、計算装置P2は
(c2,c0)=(a2−b2 mod M,a0−b0 mod M)
を計算して記録する。
【0033】
整数の加算(C=A+S mod M)の秘密計算(ただし、Sは既知の定数)
計算装置P0は
(c0,c1)=(a0+S mod M,a1)
を計算して記録し、計算装置P2は
(c2,c0)=(a2,a0+S mod M)
を計算して記録する。計算装置P1の処理はない。
【0034】
整数の乗算(C=AS mod M)の秘密計算(ただし、Sは既知の定数)
計算装置P0は
(c0,c1)=(a0S mod M,a1S mod M)
を計算して記録し、計算装置P1は
(c1,c2)=(a1S mod M,a2S mod M)
を計算して記録し、計算装置P2は
(c2,c0)=(a2S mod M,a0S mod M)
を計算して記録する。
【0035】
整数の乗算(C=AB mod M)の秘密計算
(1)計算装置P0は、0以上M未満の整数の乱数r1,r2,c0を生成し、
c1=(a0+a1)(b0+b1)−r1−r2−c0 mod M
を計算する。そして、計算装置P0は、計算装置P1に(r1,c1)を、計算装置P2に(r2,c0)を送信する。
(2)計算装置P1は、
y=a1b2+a2b1+r1 mod M
を計算し、計算装置P2に送信する。
(3)計算装置P2は、
z=a2b0+a0b2+r2 mod M
を計算し、計算装置P0に送信する。
(4)計算装置P1と計算装置P2は、それぞれ
c2=y+z+a2b2 mod M
を計算する。
(5)計算装置P0は(c0,c1)を記録し、計算装置P1は(c1,c2)を記録し、計算装置P2は(c2,c0)を記録する。
【0036】
ビットAの否定(C=1−A)の秘密計算
計算装置P0は
(c0,c1)=(1−a0,−a1 mod M)
を計算して記録し、計算装置P1は
(c1,c2)=(−a1 mod M,−a2 mod M)
を計算して記録し、計算装置P2は
(c2,c0)=(−a2 mod M,1−a0)
を計算して記録する。
【0037】
ビットの論理積(C=A∧B=AB)の秘密計算
計算装置P0,P1,P2は、整数の乗算(C=AB mod M)の秘密計算と同じ処理を行う。
【0038】
ビットの論理和(C=A∨B=A+B−AB)の秘密計算
(1)計算装置P0,P1,P2は、整数の加算(C=A+B mod M)の秘密計算と同じ処理を行い、C’=A+Bの結果として、計算装置P0が断片(c0’,c1’)を、計算装置P1が断片(c1’,c2’)を、計算装置P2が断片(c2’,c0’)を記録する。また、計算装置P0,P1,P2は、整数の乗算(C=AB mod M)の秘密計算と同じ処理を行い、C”=ABの結果として、計算装置P0が断片(c0”,c1”)を、計算装置P1が断片(c1”,c2”)を、計算装置P2が断片(c2”,c0”)を記録する。
(2)計算装置P0,P1,P2は、S=−1として整数の乗算(C=AS mod M)の秘密計算(ただし、Sは既知の定数)と同じ処理を行い、C’’’=−C”の結果として、計算装置P0が断片(c0’’’,c1’’’)を、計算装置P1が断片(c1’’’,c2’’’)を、計算装置P2が断片(c2’’’,c0’’’)を記録する。
(3)計算装置P0,P1,P2は、整数の加算(C=A+B mod M)の秘密計算と同じ処理を行い、C=C’+C’’’の結果として、計算装置P0が断片(c0,c1)を、計算装置P1が断片(c1,c2)を、計算装置P2が断片(c2,c0)を記録する。
【0039】
ビットの排他的論理和(C=A∨B=A+B−2AB)の秘密計算
(1)計算装置P0,P1,P2は、整数の加算(C=A+B mod M)の秘密計算と同じ処理を行い、C’=A+Bの結果として、計算装置P0が断片(c0’,c1’)を、計算装置P1が断片(c1’,c2’)を、計算装置P2が断片(c2’,c0’)を記録する。また、計算装置P0,P1,P2は、整数の乗算(C=AB mod M)の秘密計算と同じ処理を行い、C”=ABの結果として、計算装置P0が断片(c0”,c1”)を、計算装置P1が断片(c1”,c2”)を、計算装置P2が断片(c2”,c0”)を記録する。
(2)計算装置P0,P1,P2は、S=−2として整数の乗算(C=AS mod M)の秘密計算(ただし、Sは既知の定数)の秘密計算と同じ処理を行い、C’’’=−2C”の結果として、計算装置P0が断片(c0’’’,c1’’’)を、計算装置P1が断片(c1’’’,c2’’’)を、計算装置P2が断片(c2’’’,c0’’’)を記録する。
(3)計算装置P0,P1,P2は、整数の加算(C=A+B mod M)の秘密計算と同じ処理を行い、C=C’+C’’’の結果として、計算装置P0が断片(c0,c1)を、計算装置P1が断片(c1,c2)を、計算装置P2が断片(c2,c0)を記録する。
【0040】
ビットA(n),n=0,…,N−1の整数変換の秘密計算
ビットA(n)の整数変換とは、
【0041】
【数1】
【0042】
を求めることである。また、計算装置1000,1001,1002が分散して記録するビットA(n)の断片を(a(n)0,a(n)1)、(a(n)1,a(n)2)、(a(n)2,a(n)0)とする。計算装置1000は、
【0043】
【数2】
【0044】
を計算して記録し、計算装置P1は
【0045】
【数3】
【0046】
を計算して記録し、計算装置P2は
【0047】
【数4】
【0048】
を計算して記録する。
【0049】
Nビットの整数Aの二進数変換の秘密計算
x(n)は、xの下位n+1番目のビットを示すものとする。
(1)n=0からN−1について、計算装置1001が(a1+a2 mod M)(n)を秘密分散し、計算装置1000,1001,1002が(a1+a2 mod M)(n)の断片(b(n)0,b(n)1)、(b(n)1,b(n)2)、(b(n)2,b(n)0)を分散して記録する。n=0からN−1について、計算装置1002が(a0)(n)を秘密分散し、計算装置1000,1001,1002が(a0)(n)の断片((a0)(n)0,(a0)(n)1)、((a0)(n)1,(a0)(n)2)、((a0)(n)2,(a0)(n)0)を分散して記録する。
(2)c0=0とし、n=0からN−1について(2−1)から(2−3)の処理を繰返し実行する。
(2−1)dn=b(n)+(a0)(n)−2b(n)(a0)(n)
の秘密計算を実行し、dnの断片を分散して記録する。
(2−2)a(n)=dn+cn−2dncn
の秘密計算を実行し、a(n)の断片を分散して記録する。
(2−3)n<N−1であれば、
cn+1=b(n)(a0)(n)+dncn−b(n)(a0)(n)dncn
の秘密計算を実行し、cn+1の断片を分散して記録する。
【0050】
整数Aの分散データの検証
計算装置P0は、計算装置P1から受信したa1と自身が記録していたa1が等しいこと、計算装置P2から受信したa0と自身が記録していたa0が等しいことを検証する。計算装置P1は、計算装置P2から受信したa2と自身が記録していたa2が等しいこと、計算装置P0から受信したa1と自身が記録していたa1が等しいことを検証する。計算装置P2は、計算装置P0から受信したa0と自身が記録していたa0が等しいこと、計算装置P1から受信したa2と自身が記録していたa2が等しいことを検証する。すべての検証が成功すればtrueを出力し、いずれかの検証が失敗すればfalseを出力する。
【0051】
[プログラム、記録媒体]
上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
【0052】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0053】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【符号の説明】
【0054】
100 計算装置 110 データ取得部
120 乱数共有部 130 第1乗算結果分散部
140 乗算結果加算部 150 第2乗算結果分散部
160 乗算確認部 170 減算結果分散部
180 減算確認部 190 記録部
1000 ネットワーク
【技術分野】
【0001】
本発明は暗号技術に関し、暗号化された二つの数値を復元すること無く当該数値の乗算結果の暗号文(断片)を得るときの不正検知方法、不正検知機能を有する秘密計算システム、計算装置、および計算プログラムに関する。
【背景技術】
【0002】
暗号化された数値を復元すること無く特定の演算結果を得る方法(以降、このような計算を秘密計算と呼ぶ)として、例えば非特許文献1に記載された方法がある。この方法は、3つの計算装置に1つ以上の数値を分散させて記録する(以降、分散された情報を断片と呼ぶ)。そして、分散された数値を復元すること無く、加減算,定数和,乗算,定数倍,論理演算(否定,論理積,論理和,排他的論理和),データ形式変換(整数, 二進数)の結果を3つの計算装置に分散保持させることができる(なお、定数とは既知の数値を意味している)。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】千田浩司,五十嵐大,高橋克巳,“効率的な3パーティ秘匿関数計算の提案とその運用モデルの考察”,第48回情報処理学会研究報告,CSEC, pp.1-7, 2010,3月.
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来技術は乗算の秘密計算においていずれかの計算装置が不正処理を行った場合にそれを検知できない場合がある。本発明は、乗算の秘密計算での計算装置の不正処理を検知できる秘密計算システムを提供することを目的とする。
【課題を解決するための手段】
【0005】
本発明の秘密計算システムは、数値Xを3つの計算装置α、β、γで分散して記録し、秘密計算を行う。Mを2以上の整数、計算装置P0として動作する計算装置が記録する断片を(x0,x1)、計算装置P1として動作する計算装置が記録する断片を(x1,x2)、計算装置P2として動作する計算装置が記録する断片を(x2,x0)、数値Xと断片とは
X=x0+x1+x2 mod M
の関係を満たすとする。
【0006】
秘密計算システムは、データ取得手段、乱数共有手段、第1乗算結果分散手段、乗算結果加算手段、第2乗算結果分散手段、乗算確認手段を備える。データ取得手段は、数値A,B,Cの断片として、計算装置P0に断片(a0,a1),(b0,b1),(c0,c1)を取得させ、計算装置P1に断片(a1,a2),(b1,b2),(c1,c2)を取得させ、計算装置P2に断片(a2,a0),(b2,b0),(c2,c0)を取得させる。乱数共有手段は、計算装置P1と計算装置P2に、ランダムに選んだ2以上M以下の整数Sを共有させる。第1乗算結果分散手段は、計算装置P1にSa1を分散させ、計算装置P1または計算装置P2にSa2を分散させ、計算装置P2にSa0を分散させて、計算装置P0に断片((Sa0)0,(Sa0)1),((Sa1)0,(Sa1)1),((Sa2)0,(Sa2)1)を取得させ、計算装置P1に断片((Sa0)1,(Sa0)2),((Sa1)1,(Sa1)2),((Sa2)1,(Sa2)2)を取得させ、計算装置P2に断片((Sa0)2,(Sa0)0),((Sa1)2,(Sa1)0),((Sa2)2,(Sa2)0)を取得させる。乗算結果加算手段は、
D=Sa0+Sa1+Sa2 mod M
の秘密計算を行い、計算装置P0に断片(d0,d1)を取得させ、計算装置P1に断片(d1,d2)を取得させ、計算装置P2に断片(d2,d0)を取得させる。第2乗算結果分散手段は、
E=DB mod M
の秘密計算を行い、計算装置P0に断片(e0,e1)を取得させ、計算装置P1に断片(e1,e2)を取得させ、計算装置P2に断片(e2,e0)を取得させる。
【0007】
乗算確認手段は、計算装置P1に
f=e1+e2−Sc1−Sc2 mod M
を計算させ、計算装置P2に
g=e0−Sc0 mod M
を計算させ、計算装置P1または計算装置P2に
f+g=0 mod M
かを確認させる。もしくは、乗算確認手段は、計算装置P1に
f=e1−Sc1 mod M
を計算させ、計算装置P2に
g=e2+e0−Sc2−Sc0 mod M
を計算させ、計算装置P1または計算装置P2に
f+g=0 mod M
かを確認させる。
【発明の効果】
【0008】
本発明の秘密計算システムによれば、乱数Sを用いて2通りの演算を行い乗算の結果が同じになることを確認するので、乗算の秘密計算での計算装置の不正処理を検知できる。
【図面の簡単な説明】
【0009】
【図1】本発明の秘密計算システムの機能構成例を示す図。
【図2】実施例1の秘密計算システムの不正検知の処理フローを示す図。
【図3】実施例2の秘密計算システムの不正検知の処理フローを示す図。
【発明を実施するための形態】
【0010】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【実施例1】
【0011】
図1に実施例1の秘密計算システムの機能構成例を示す。図2に実施例1の秘密計算システムの不正検知の処理フローを示す。実施例1の秘密計算システムは、ネットワーク1000を介して接続された3つの計算装置100α、100β、100γで構成される。計算装置100α、100β、100γは、数値Xの断片(分散された情報)を分散して記録し、秘密計算を行う。各計算装置100y(ただし、yはα、β、もしくはγ)は、データ取得部110y、乱数共有部120y、第1乗算結果分散部130y、乗算結果加算部140y、第2乗算結果分散部150y、乗算確認部160y、記録部190yを備える。記録部190yは、断片のデータなどを記録する。秘密計算システムは、データ取得手段、乱数共有手段、第1乗算結果分散手段、乗算結果加算手段、第2乗算結果分散手段、乗算確認手段を備える。データ取得手段は、データ取得部110α,110β,110γで構成される。乱数共有手段は、乱数共有部120α,120β,120γで構成される。第1乗算結果分散手段は、第1乗算結果分散部130α,130β,130γで構成される。乗算結果加算手段は、乗算結果加算部140α,140β,140γで構成される。第2乗算結果分散手段は、第2乗算結果分散部150α,150β,150γで構成される。乗算確認手段は、乗算確認部160α,160β,160γで構成される。
【0012】
計算装置100α、100β、100γは、まず、計算装置P0として動作するか、計算装置P1として動作するか、計算装置P2として動作するかが決められる。そして、計算装置P0として動作する計算装置が記録する断片を(x0,x1)、計算装置P1として動作する計算装置が記録する断片を(x1,x2)、計算装置P2として動作する計算装置が記録する断片を(x2,x0)と示すことにする。このとき、数値Xと断片とは
X=x0+x1+x2 mod M
ただし、Mは2以上の整数
の関係を満たすとする。なお、計算装置Pn(ただし、nは0,1,2のいずれか)として動作する計算装置の各構成部を、データ取得部110n、乱数共有部120n、第1乗算結果分散部130n、乗算結果加算部140n、第2乗算結果分散部150n、乗算確認部160n、記録部190nと表記する。
【0013】
計算装置P0のデータ取得部1100が、数値A,B,Cの断片として断片(a0,a1),(b0,b1),(c0,c1)を取得し、記録部1900に記録する。計算装置P1のデータ取得部1101が、数値A,B,Cの断片として断片(a1,a2),(b1,b2),(c1,c2)を取得し、記録部1901に記録する。計算装置P2のデータ取得部1102が、数値A,B,Cの断片として断片(a2,a0),(b2,b0),(c2,c0)を取得し、記録部1902に記録する(S110)。なお、数値A,Bは、装置Qと装置Rがそれぞれ保持して分散した数値とする。ここで、装置Qと装置Rとは同一の装置でもよい。また装置Q,Rは、計算装置P0,P1,P2のいずれかであってもよいし、異なる装置でもよい。数値Cは、計算装置P0,P1,P2の間で
C=AB mod M
の秘密計算を実行して、断片を計算装置P0,P1,P2が取得した数値である。
【0014】
計算装置P1の乱数共有部1201と計算装置P2の乱数共有部1202は、ランダムに選んだ2以上M以下の整数Sを共有する(S120)。計算装置P1の第1乗算結果分散部1301はSa1を分散し、計算装置P1の第1乗算結果分散部1301または計算装置P2の第1乗算結果分散部1302はSa2を分散し、計算装置P2の第1乗算結果分散部1302はSa0を分散し、計算装置P0が断片((Sa0)0,(Sa0)1),((Sa1)0,(Sa1)1),((Sa2)0,(Sa2)1)を取得し、計算装置P1が断片((Sa0)1,(Sa0)2),((Sa1)1,(Sa1)2),((Sa2)1,(Sa2)2)を取得し、計算装置P2が断片((Sa0)2,(Sa0)0),((Sa1)2,(Sa1)0),((Sa2)2,(Sa2)0)を取得する(S130)。乗算結果加算部1400、1401、1402は、
D=Sa0+Sa1+Sa2 mod M
の秘密計算を行い、計算装置P0が断片(d0,d1)を取得し、計算装置P1が断片(d1,d2)を取得し、計算装置P2が断片(d2,d0)を取得する(S140)。
【0015】
第2乗算結果分散部1500、1501、1502は、
E=DB mod M
の秘密計算を行い、計算装置P0が断片(e0,e1)を取得し、計算装置P1が断片(e1,e2)を取得し、計算装置P2が断片(e2,e0)を取得する(S150)。なお、数値D,Eは、上述のように、計算装置P0,P1,P2の間で
D=SA mod M
E=DB mod M =SAB mod M
の秘密計算を実行して、断片を計算装置P0,P1,P2が取得した数値である。このように計算を行うので、数値D,Eは、計算装置P0,P1,P2のどの装置も知らない数値である。
【0016】
計算装置P1の乗算確認部1601は、
f=e1+e2−Sc1−Sc2 mod M
を計算し、計算装置P2の乗算確認部1602は、
g=e0−Sc0 mod M
を計算し、計算装置P1の乗算確認部1601または計算装置P2の乗算確認部1602は、
f+g=0 mod M
かを確認する(S160)。この式が成り立つ場合には計算装置P0は不正を行っていないと判断し、成り立たない場合は計算装置P0が不正を行ったと判断する。もしくは、ステップS160として、計算装置P1の乗算確認部1601は、
f=e1−Sc1 mod M
を計算し、計算装置P2の乗算確認部1602は、
g=e2+e0−Sc2−Sc0 mod M
を計算し、計算装置P1の乗算確認部1601または計算装置P2の乗算確認部1602は、
f+g=0 mod M
かを確認する。そして、この式が成り立つ場合には計算装置P0は不正を行っていないと判断し、成り立たない場合は計算装置P0が不正を行ったと判断する。なお、
f+g=0 mod M
の確認を計算装置P1で行う場合は計算装置P1は計算装置P2からgを受信した上で、計算装置P2で行う場合は計算装置P2は計算装置P1からfを受信した上で確認を行う。
【0017】
このように実施例1の秘密計算システムでは、計算装置P0,P1,P2は数値A,Bの断片(分散されたデータ)からC=ABの断片を得る際、計算装置P1,P2は乱数Sを共有し、計算装置P0,P1,P2はC=AB,D=SA,E=DBの断片を得る手続きを行い、計算装置P1,P2はSC=Eとなっているかどうか検証し、なっていれば計算装置P0は正しいと判断し、なっていなければ不正と判断する。つまり、実施例1の秘密計算システムによれば、乱数Sを用いて2通りの演算を行い、乗算の結果が同じになることを確認するので、乗算の秘密計算において計算装置P0の不正処理を検知できる。
[不正が検知できる理由]
次に、上述の乗算の不正検知について補足説明する。
【0018】
f+g=e0+e1+e2−S(c0+c1+c2) mod M
=DB−SC mod M
=SAB−SC mod M
が成り立つから、秘密計算システムが正しく動作すれば
f+g=0 mod M
となる。計算装置P0が不正データを送信した場合、e0,e1,e2,c0,c1,c2が不正データとなり得る。これをe’0,e’1,e’2,c’0,c’1,c’2とおくと、計算装置P0は
f’=e’1+e’2−Sc’1−Sc’2 mod M
g’=e’0−Sc’0 mod M
もしくは、
f’=e’1−Sc’1 mod M
g’=e’2+e’0−Sc’2−Sc’0 mod M
について
f’+g’=0 mod M
となるようにe’0,e’1,e’2,c’0,c’1,c’2を選ぶ必要がある。ここで、本来の値と不正値の差分を
ΔC=C−(c’0+c’1+c’2) mod M
ΔE=SC−(e’0+e’1+e’2) mod M
とおくと、
f’+g’=(SC−ΔE)−S(C−ΔC) mod M
となるから、
f’+g’=0 mod M ⇔ ΔE=SΔC mod M
成り立ち、任意のSについて
f’+g’=0 mod M
が成り立つためには
ΔE=ΔC=0
でなければならないので、不正が成立しない。なお、不正が成立するためには、
ΔE≠0またはΔC≠0として
f’+g’=0 mod M
が成り立つ、すなわちΔE=SΔC mod Mが成り立つ必要がある。しかし、計算装置P0がSを知らない限り、Mが大きく、かつSとMの最大公約数が小さければこれは困難である。
【実施例2】
【0019】
実施例2の秘密計算システムの機能構成も図1に示す。図3に実施例2の秘密計算システムの不正検知の処理フローを示す。実施例1の秘密計算システムとは、各計算装置100y(ただし、yはα、β、もしくはγ)が、減算結果分散部170y、減算確認部180yも備えている点が異なる。また、減算結果分散部170α、170β、170γが減算結果分散手段を構成し、減算確認部180α、180β、180γが減算確認手段を構成する。そして、本実施例では、各計算装置100yを、計算装置P0,計算装置P1,計算装置P2のどれとして動作させるかを変更しながら、不正検知の処理を行う。
【0020】
計算装置100αの記録部190αが記録する断片を(xγα,xαβ)、計算装置100βの記録部190βが記録する断片を(xαβ,xβγ)、計算装置100γの記録部190γが記録する断片を(xβγ,xγα)とする。また、断片(c0,c1),(c1,c2),(c2,c0)は計算装置100αが計算装置P0として、計算装置100βが計算装置P1として、計算装置100γが計算装置P2としてC=ABの秘密計算を行った結果、断片(c’0,c’1),(c’1,c’2),(c’2,c’0)は計算装置100αが計算装置P1として、計算装置100βが計算装置P2として、計算装置100γが計算装置P0としてC=ABの秘密計算を行った結果、断片(c”0,c”1),(c”1,c”2),(c”2,c”0)は計算装置100αが計算装置P2として、計算装置100βが計算装置P0として、計算装置100γが計算装置P1としてC=ABの秘密計算を行った結果とする。
【0021】
本実施例のデータ取得手段では、計算装置100αのデータ取得部110αが断片(a0,a1),(b0,b1),(c0,c1),(c’1,c’2),(c”2,c”0)を取得し、計算装置100βのデータ取得部110βが断片(a1,a2),(b1,b2),(c1,c2)(c’2,c”0),(c”0,c”1)を取得し、計算装置100γのデータ取得部110γが断片(a2,a0),(b2,b0),(c2,c0)(c’0,c’1),(c”1,c”2)を取得する(S110’)。
【0022】
まず、計算装置100αが計算装置P0として、計算装置100βが計算装置P1として、計算装置100γが計算装置P2として動作するように設定する(S101)。そして、断片(a0,a1),(a1,a2),(a2,a0)と断片(b0,b1),(b1,b2),(b2,b0)と断片(c0,c1),(c1,c2),(c2,c0)を用いて、計算装置100αが計算装置P0として、計算装置100βが計算装置P1として、計算装置100γが計算装置P2として、実施例1と同じようにステップS120(乱数共有ステップ)、ステップS130(第1乗算結果分散ステップ)、ステップS140(乗算結果加算ステップ)、ステップS150(第2乗算結果分散ステップ)、ステップS160(乗算確認ステップ)を実行する。このことにより、計算装置P0として動作した計算装置100αが不正をしていないこと(または不正をしたこと)を確認できる。
【0023】
秘密計算システムは、計算装置を所定の組合せだけ設定したかを確認する(S102)。所定の組合せとは、例えば、(1)計算装置100αが計算装置P0として、計算装置100βが計算装置P1として、計算装置100γが計算装置P2として動作する組合せ、(2)計算装置100αが計算装置P1として、計算装置100βが計算装置P2として、計算装置100γが計算装置P0として動作する組合せ、(3)計算装置100αが計算装置P2として、計算装置100βが計算装置P0として、計算装置100γが計算装置P1として動作する組合せとすればよい。このように計算装置P0として動作する計算装置を変更することにより、不正検知の対象となる計算装置を変更できる。また、すべての計算装置が計算装置P0として動作するまで組合せを変更すれば、すべての計算装置を不正検知の対象にできる。
【0024】
所定の組合せ分の処理が終わっていなければ(ステップS102がNoならば)、計算装置の設定を変更する。本実施例では、計算装置100αが計算装置P1として、計算装置100βが計算装置P2として、計算装置100γが計算装置P0として動作するように設定する(S103)。そして、断片(a’0,a’1),(a’1,a’2),(a’2,a’0)と断片(b’0,b’1),(b’1,b’2),(b’2,b’0)と断片(c’0,c’1),(c’1,c’2),(c’2,c’0)を用いて、計算装置100αが計算装置P1として、計算装置100βが計算装置P2として、計算装置100γが計算装置P0として、ステップS120(乱数共有ステップ)、ステップS130(第1乗算結果分散ステップ)、ステップS140(乗算結果加算ステップ)、ステップS150(第2乗算結果分散ステップ)、ステップS160(乗算確認ステップ)を実行する。ただし、a’0=a2,a’1=a0,a’2=a1,b’0=b2,b’1=b0,b’2=b1である。このことにより、計算装置P0として動作した計算装置100γが不正をしていないこと(または不正をしたこと)を確認できる。
【0025】
さらに、本実施例では、計算装置100αが計算装置P2として、計算装置100βが計算装置P0として、計算装置100γが計算装置P1として動作するように設定する(S103)。そして、断片(a”0,a”1),(a”1,a”2),(a”2,a”0)と断片(b”0,b”1),(b”1,b”2),(b”2,b”0)と断片(c”0,c”1),(c”1,c”2),(c”2,c”0)を用いて、計算装置100αが計算装置P2として、計算装置100βが計算装置P0として、計算装置100γが計算装置P1として、ステップS120(乱数共有ステップ)、ステップS130(第1乗算結果分散ステップ)、ステップS140(乗算結果加算ステップ)、ステップS150(第2乗算結果分散ステップ)、ステップS160(乗算確認ステップ)を実行する。ただし、a”0=a1,a”1=a2,a”2=a0,b”0=b1,b”1=b2,b”2=b0である。このことにより、計算装置P0として動作した計算装置100βが不正をしていないこと(または不正をしたこと)を確認できる。
【0026】
次に、秘密計算システムは、計算装置100α、100β、100γが計算装置P0,P1,P2のいずれの計算装置として動作するかを決め、減算結果分散部1700、1701、1702が
U=C−C’ mod M
の秘密計算と、
V=C−C” mod M
の秘密計算とを行い、計算装置P0が断片(u0,u1),(v0,v1)を取得し、計算装置P1が断片(u1,u2),(v1,v2)を取得し、計算装置P2が断片(u2,u0),(v2,v0)を取得する(S170)。
減算確認部1800、1801、1802が、数値UとVを復元し、U=0かつV=0であることを確認する(S180)。
【0027】
本実施例の場合、上述のように計算装置P0として動作する計算装置を変更しながら不正検知の処理を行う。したがって、すべての計算装置が計算装置P0として動作したときに不正を行っていないこと(または不正を行ったこと)を検知できる。また、計算装置P1またはP2として動作するときに不正を行い、
C’≠AB mod M
または
C”≠AB mod M
となった場合、ステップS180で不正が検知できる。したがって、実施例2の秘密計算システムによれば、実施例1と同じ効果が得られるだけでなく、乗算の秘密計算において各計算装置の不正処理を検知できる。
【0028】
[秘密計算]
実施例1、実施例2の説明では、秘密計算については、1つの方法に限定しないことを前提としており、具体例は示さなかった。以下では、本発明の秘密計算システムの各構成部が利用できる基本的な秘密計算の具体例を示す。なお、以下の説明では、計算装置1000,1001,1002が分散して記録する数値Aの断片を(a0,a1),(a1,a2),(a2,a0)、数値Bの断片を(b0,b1),(b1,b2),(b2,b0)、数値Cの断片を(c0,c1),(c1,c2),(c2,c0)とする。また、Mを2以上の整数とする。
【0029】
整数Aの秘密分散
(1)0以上M未満の整数の乱数a0,a1を生成する。
(2)a2=A−a0−a1を計算し、断片を(a0,a1),(a1,a2),(a2,a0)とし、計算装置P0,P1,P2に分散して記録する。
【0030】
整数Aの復元
(1)計算装置P0は計算装置P1にa0を送信し、計算装置P2にa1を送信する。計算装置P1は計算装置P2にa1を送信し、計算装置P0にa2を送信する。計算装置P2は計算装置P0にa2を送信し、計算装置P1にa0を送信する。
(2)計算装置P0は計算装置P1から受信したa2と計算装置P2から受信したa2とが一致していれば、
a0+a1+a2 mod M
を計算して数値Aを復元する。計算装置P1は計算装置P2から受信したa0と計算装置P0から受信したa0とが一致していれば、
a0+a1+a2 mod M
を計算して数値Aを復元する。計算装置P2は計算装置P0から受信したa1と計算装置P1から受信したa1とが一致していれば、
a0+a1+a2 mod M
を計算して数値Aを復元する。
【0031】
整数の加算(C=A+B mod M)の秘密計算
計算装置P0は
(c0,c1)=(a0+b0 mod M,a1+b1 mod M)
を計算して記録し、計算装置P1は
(c1,c2)=(a1+b1 mod M,a2+b2 mod M)
を計算して記録し、計算装置P2は
(c2,c0)=(a2+b2 mod M,a0+b0 mod M)
を計算して記録する。
【0032】
整数の減算(C=A−B mod M)の秘密計算
計算装置P0は
(c0,c1)=(a0−b0 mod M,a1−b1 mod M)
を計算して記録し、計算装置P1は
(c1,c2)=(a1−b1 mod M,a2−b2 mod M)
を計算して記録し、計算装置P2は
(c2,c0)=(a2−b2 mod M,a0−b0 mod M)
を計算して記録する。
【0033】
整数の加算(C=A+S mod M)の秘密計算(ただし、Sは既知の定数)
計算装置P0は
(c0,c1)=(a0+S mod M,a1)
を計算して記録し、計算装置P2は
(c2,c0)=(a2,a0+S mod M)
を計算して記録する。計算装置P1の処理はない。
【0034】
整数の乗算(C=AS mod M)の秘密計算(ただし、Sは既知の定数)
計算装置P0は
(c0,c1)=(a0S mod M,a1S mod M)
を計算して記録し、計算装置P1は
(c1,c2)=(a1S mod M,a2S mod M)
を計算して記録し、計算装置P2は
(c2,c0)=(a2S mod M,a0S mod M)
を計算して記録する。
【0035】
整数の乗算(C=AB mod M)の秘密計算
(1)計算装置P0は、0以上M未満の整数の乱数r1,r2,c0を生成し、
c1=(a0+a1)(b0+b1)−r1−r2−c0 mod M
を計算する。そして、計算装置P0は、計算装置P1に(r1,c1)を、計算装置P2に(r2,c0)を送信する。
(2)計算装置P1は、
y=a1b2+a2b1+r1 mod M
を計算し、計算装置P2に送信する。
(3)計算装置P2は、
z=a2b0+a0b2+r2 mod M
を計算し、計算装置P0に送信する。
(4)計算装置P1と計算装置P2は、それぞれ
c2=y+z+a2b2 mod M
を計算する。
(5)計算装置P0は(c0,c1)を記録し、計算装置P1は(c1,c2)を記録し、計算装置P2は(c2,c0)を記録する。
【0036】
ビットAの否定(C=1−A)の秘密計算
計算装置P0は
(c0,c1)=(1−a0,−a1 mod M)
を計算して記録し、計算装置P1は
(c1,c2)=(−a1 mod M,−a2 mod M)
を計算して記録し、計算装置P2は
(c2,c0)=(−a2 mod M,1−a0)
を計算して記録する。
【0037】
ビットの論理積(C=A∧B=AB)の秘密計算
計算装置P0,P1,P2は、整数の乗算(C=AB mod M)の秘密計算と同じ処理を行う。
【0038】
ビットの論理和(C=A∨B=A+B−AB)の秘密計算
(1)計算装置P0,P1,P2は、整数の加算(C=A+B mod M)の秘密計算と同じ処理を行い、C’=A+Bの結果として、計算装置P0が断片(c0’,c1’)を、計算装置P1が断片(c1’,c2’)を、計算装置P2が断片(c2’,c0’)を記録する。また、計算装置P0,P1,P2は、整数の乗算(C=AB mod M)の秘密計算と同じ処理を行い、C”=ABの結果として、計算装置P0が断片(c0”,c1”)を、計算装置P1が断片(c1”,c2”)を、計算装置P2が断片(c2”,c0”)を記録する。
(2)計算装置P0,P1,P2は、S=−1として整数の乗算(C=AS mod M)の秘密計算(ただし、Sは既知の定数)と同じ処理を行い、C’’’=−C”の結果として、計算装置P0が断片(c0’’’,c1’’’)を、計算装置P1が断片(c1’’’,c2’’’)を、計算装置P2が断片(c2’’’,c0’’’)を記録する。
(3)計算装置P0,P1,P2は、整数の加算(C=A+B mod M)の秘密計算と同じ処理を行い、C=C’+C’’’の結果として、計算装置P0が断片(c0,c1)を、計算装置P1が断片(c1,c2)を、計算装置P2が断片(c2,c0)を記録する。
【0039】
ビットの排他的論理和(C=A∨B=A+B−2AB)の秘密計算
(1)計算装置P0,P1,P2は、整数の加算(C=A+B mod M)の秘密計算と同じ処理を行い、C’=A+Bの結果として、計算装置P0が断片(c0’,c1’)を、計算装置P1が断片(c1’,c2’)を、計算装置P2が断片(c2’,c0’)を記録する。また、計算装置P0,P1,P2は、整数の乗算(C=AB mod M)の秘密計算と同じ処理を行い、C”=ABの結果として、計算装置P0が断片(c0”,c1”)を、計算装置P1が断片(c1”,c2”)を、計算装置P2が断片(c2”,c0”)を記録する。
(2)計算装置P0,P1,P2は、S=−2として整数の乗算(C=AS mod M)の秘密計算(ただし、Sは既知の定数)の秘密計算と同じ処理を行い、C’’’=−2C”の結果として、計算装置P0が断片(c0’’’,c1’’’)を、計算装置P1が断片(c1’’’,c2’’’)を、計算装置P2が断片(c2’’’,c0’’’)を記録する。
(3)計算装置P0,P1,P2は、整数の加算(C=A+B mod M)の秘密計算と同じ処理を行い、C=C’+C’’’の結果として、計算装置P0が断片(c0,c1)を、計算装置P1が断片(c1,c2)を、計算装置P2が断片(c2,c0)を記録する。
【0040】
ビットA(n),n=0,…,N−1の整数変換の秘密計算
ビットA(n)の整数変換とは、
【0041】
【数1】
【0042】
を求めることである。また、計算装置1000,1001,1002が分散して記録するビットA(n)の断片を(a(n)0,a(n)1)、(a(n)1,a(n)2)、(a(n)2,a(n)0)とする。計算装置1000は、
【0043】
【数2】
【0044】
を計算して記録し、計算装置P1は
【0045】
【数3】
【0046】
を計算して記録し、計算装置P2は
【0047】
【数4】
【0048】
を計算して記録する。
【0049】
Nビットの整数Aの二進数変換の秘密計算
x(n)は、xの下位n+1番目のビットを示すものとする。
(1)n=0からN−1について、計算装置1001が(a1+a2 mod M)(n)を秘密分散し、計算装置1000,1001,1002が(a1+a2 mod M)(n)の断片(b(n)0,b(n)1)、(b(n)1,b(n)2)、(b(n)2,b(n)0)を分散して記録する。n=0からN−1について、計算装置1002が(a0)(n)を秘密分散し、計算装置1000,1001,1002が(a0)(n)の断片((a0)(n)0,(a0)(n)1)、((a0)(n)1,(a0)(n)2)、((a0)(n)2,(a0)(n)0)を分散して記録する。
(2)c0=0とし、n=0からN−1について(2−1)から(2−3)の処理を繰返し実行する。
(2−1)dn=b(n)+(a0)(n)−2b(n)(a0)(n)
の秘密計算を実行し、dnの断片を分散して記録する。
(2−2)a(n)=dn+cn−2dncn
の秘密計算を実行し、a(n)の断片を分散して記録する。
(2−3)n<N−1であれば、
cn+1=b(n)(a0)(n)+dncn−b(n)(a0)(n)dncn
の秘密計算を実行し、cn+1の断片を分散して記録する。
【0050】
整数Aの分散データの検証
計算装置P0は、計算装置P1から受信したa1と自身が記録していたa1が等しいこと、計算装置P2から受信したa0と自身が記録していたa0が等しいことを検証する。計算装置P1は、計算装置P2から受信したa2と自身が記録していたa2が等しいこと、計算装置P0から受信したa1と自身が記録していたa1が等しいことを検証する。計算装置P2は、計算装置P0から受信したa0と自身が記録していたa0が等しいこと、計算装置P1から受信したa2と自身が記録していたa2が等しいことを検証する。すべての検証が成功すればtrueを出力し、いずれかの検証が失敗すればfalseを出力する。
【0051】
[プログラム、記録媒体]
上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
【0052】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0053】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【符号の説明】
【0054】
100 計算装置 110 データ取得部
120 乱数共有部 130 第1乗算結果分散部
140 乗算結果加算部 150 第2乗算結果分散部
160 乗算確認部 170 減算結果分散部
180 減算確認部 190 記録部
1000 ネットワーク
【特許請求の範囲】
【請求項1】
数値Xを3つの計算装置α、β、γで分散して記録し、秘密計算を行う秘密計算システムを用いてC=ABの秘密計算での不正を検知する不正検知方法であって、
Mを2以上の整数、計算装置P0として動作する計算装置が記録する断片を(x0,x1)、計算装置P1として動作する計算装置が記録する断片を(x1,x2)、計算装置P2として動作する計算装置が記録する断片を(x2,x0)、数値Xと断片とは
X=x0+x1+x2 mod M
の関係を満たすとし、
数値A,B,Cの断片として、計算装置P0が断片(a0,a1),(b0,b1),(c0,c1)を取得し、計算装置P1が断片(a1,a2),(b1,b2),(c1,c2)を取得し、計算装置P2が断片(a2,a0),(b2,b0),(c2,c0)を取得するデータ取得ステップと、
計算装置P1と計算装置P2が、ランダムに選んだ2以上M以下の整数Sを共有する乱数共有ステップと、
計算装置P1がSa1を分散し、計算装置P1または計算装置P2がSa2を分散し、計算装置P2がSa0を分散して、計算装置P0が断片((Sa0)0,(Sa0)1),((Sa1)0,(Sa1)1),((Sa2)0,(Sa2)1)を取得し、計算装置P1が断片((Sa0)1,(Sa0)2),((Sa1)1,(Sa1)2),((Sa2)1,(Sa2)2)を取得し、計算装置P2が断片((Sa0)2,(Sa0)0),((Sa1)2,(Sa1)0),((Sa2)2,(Sa2)0)を取得する第1乗算結果分散ステップと、
計算装置P0,P1,P2が、
D=Sa0+Sa1+Sa2 mod M
の秘密計算を行い、計算装置P0が断片(d0,d1)を取得し、計算装置P1が断片(d1,d2)を取得し、計算装置P2が断片(d2,d0)を取得する乗算結果加算ステップと、
計算装置P0,P1,P2が、
E=DB mod M
の秘密計算を行い、計算装置P0が断片(e0,e1)を取得し、計算装置P1が断片(e1,e2)を取得し、計算装置P2が断片(e2,e0)を取得する第2乗算結果分散ステップと、
計算装置P1が
f=e1+e2−Sc1−Sc2 mod M
を計算し、計算装置P2が
g=e0−Sc0 mod M
を計算し、計算装置P1または計算装置P2が
f+g=0 mod M
かを確認する、もしくは、
計算装置P1が
f=e1−Sc1 mod M
を計算し、計算装置P2が
g=e2+e0−Sc2−Sc0 mod M
を計算し、計算装置P1または計算装置P2が
f+g=0 mod M
かを確認する乗算確認ステップと、
を有する不正検知方法。
【請求項2】
請求項1記載の不正検知方法であって、
計算装置αが記録する断片を(xγα,xαβ)、計算装置βが記録する断片を(xαβ,xβγ)、計算装置γが記録する断片を(xβγ,xγα)とし、
断片(c0,c1),(c1,c2),(c2,c0)は計算装置αが計算装置P0として、計算装置βが計算装置P1として、計算装置γが計算装置P2としてC=ABの秘密計算を行った結果、断片(c’0,c’1),(c’1,c’2),(c’2,c’0)は計算装置αが計算装置P1として、計算装置βが計算装置P2として、計算装置γが計算装置P0としてC=ABの秘密計算を行った結果、断片(c”0,c”1),(c”1,c”2),(c”2,c”0)は計算装置αが計算装置P2として、計算装置βが計算装置P0として、計算装置γが計算装置P1としてC=ABの秘密計算を行った結果とし、
前記データ取得ステップは、計算装置αが断片(a0,a1),(b0,b1),(c0,c1),(c’1,c’2),(c”2,c”0)を取得し、計算装置βが断片(a0,a1),(b0,b1),(c0,c1),(c’2,c”0),(c”0,c”1)を取得し、計算装置γが断片(a0,a1),(b0,b1),(c0,c1),(c’0,c’1),(c”1,c”2)を取得するステップであり、
断片(a0,a1),(a1,a2),(a2,a0)と断片(b0,b1),(b1,b2),(b2,b0)と断片(c0,c1),(c1,c2),(c2,c0)を用いて、計算装置αが計算装置P0として、計算装置βが計算装置P1として、計算装置γが計算装置P2として、前記乱数共有ステップ、前記第1乗算結果分散ステップ、前記乗算結果加算ステップ、前記第2乗算結果分散ステップ、前記乗算確認ステップを実行し、
断片(a’0,a’1),(a’1,a’2),(a’2,a’0)と断片(b’0,b’1),(b’1,b’2),(b’2,b’0)と断片(c’0,c’1),(c’1,c’2),(c’2,c’0)を用いて(ただし、a’0=a2,a’1=a0,a’2=a1,b’0=b2,b’1=b0,b’2=b1)、計算装置αが計算装置P1として、計算装置βが計算装置P2として、計算装置γが計算装置P0として、前記乱数共有ステップ、前記第1乗算結果分散ステップ、前記乗算結果加算ステップ、前記第2乗算結果分散ステップ、前記乗算確認ステップを実行し、
断片(a”0,a”1),(a”1,a”2),(a”2,a”0)と断片(b”0,b”1),(b”1,b”2),(b”2,b”0)と断片(c”0,c”1),(c”1,c”2),(c”2,c”0)を用いて(ただし、a”0=a1,a”1=a2,a”2=a0,b”0=b1,b”1=b2,b”2=b0)、計算装置αが計算装置P2として、計算装置βが計算装置P0として、計算装置γが計算装置P1として、前記乱数共有ステップ、前記第1乗算結果分散ステップ、前記乗算結果加算ステップ、前記第2乗算結果分散ステップ、前記乗算確認ステップを実行し、
計算装置α、β、γが計算装置P0,P1,P2のいずれの計算装置として動作するかを決め、
U=C−C’ mod M
の秘密計算と、
V=C−C” mod M
の秘密計算とを行い、計算装置P0が断片(u0,u1),(v0,v1)を取得し、計算装置P1が断片(u1,u2),(v1,v2)を取得し、計算装置P2が断片(u2,u0),(v2,v0)を取得する減算結果分散ステップと、
計算装置P0,P1,P2が、数値UとVを復元し、U=0かつV=0であることを確認する減算確認ステップと、
を有することを特徴とする不正検知方法。
【請求項3】
数値Xを3つの計算装置α、β、γで分散して記録し、秘密計算を行う秘密計算システムであって、
Mを2以上の整数、計算装置P0として動作する計算装置が記録する断片を(x0,x1)、計算装置P1として動作する計算装置が記録する断片を(x1,x2)、計算装置P2として動作する計算装置が記録する断片を(x2,x0)、数値Xと断片とは
X=x0+x1+x2 mod M
の関係を満たすとし、
数値A,B,Cの断片として、計算装置P0に断片(a0,a1),(b0,b1),(c0,c1)を取得させ、計算装置P1に断片(a1,a2),(b1,b2),(c1,c2)を取得させ、計算装置P2に断片(a2,a0),(b2,b0),(c2,c0)を取得させるデータ取得手段と、
計算装置P1と計算装置P2に、ランダムに選んだ2以上M以下の整数Sを共有させる乱数共有手段と、
計算装置P1にSa1を分散させ、計算装置P1または計算装置P2にSa2を分散させ、計算装置P2にSa0を分散させて、計算装置P0に断片((Sa0)0,(Sa0)1),((Sa1)0,(Sa1)1),((Sa2)0,(Sa2)1)を取得させ、計算装置P1に断片((Sa0)1,(Sa0)2),((Sa1)1,(Sa1)2),((Sa2)1,(Sa2)2)を取得させ、計算装置P2に断片((Sa0)2,(Sa0)0),((Sa1)2,(Sa1)0),((Sa2)2,(Sa2)0)を取得させる第1乗算結果分散手段と、
D=Sa0+Sa1+Sa2 mod M
の秘密計算を行い、計算装置P0に断片(d0,d1)を取得させ、計算装置P1に断片(d1,d2)を取得させ、計算装置P2に断片(d2,d0)を取得させる乗算結果加算手段と、
E=DB mod M
の秘密計算を行い、計算装置P0に断片(e0,e1)を取得させ、計算装置P1に断片(e1,e2)を取得させ、計算装置P2に断片(e2,e0)を取得させる第2乗算結果分散手段と、
計算装置P1に
f=e1+e2−Sc1−Sc2 mod M
を計算させ、計算装置P2に
g=e0−Sc0 mod M
を計算させ、計算装置P1または計算装置P2に
f+g=0 mod M
かを確認させる、もしくは、
計算装置P1に
f=e1−Sc1 mod M
を計算させ、計算装置P2に
g=e2+e0−Sc2−Sc0 mod M
を計算させ、計算装置P1または計算装置P2に
f+g=0 mod M
かを確認させる乗算確認手段と、
を有する秘密計算システム。
【請求項4】
請求項3記載の秘密計算システムであって、
計算装置αが記録する断片を(xγα,xαβ)、計算装置βが記録する断片を(xαβ,xβγ)、計算装置γが記録する断片を(xβγ,xγα)とし、
断片(c0,c1),(c1,c2),(c2,c0)は計算装置αが計算装置P0として、計算装置βが計算装置P1として、計算装置γが計算装置P2としてC=ABの秘密計算を行った結果、断片(c’0,c’1),(c’1,c’2),(c’2,c’0)は計算装置αが計算装置P1として、計算装置βが計算装置P2として、計算装置γが計算装置P0としてC=ABの秘密計算を行った結果、断片(c”0,c”1),(c”1,c”2),(c”2,c”0)は計算装置αが計算装置P2として、計算装置βが計算装置P0として、計算装置γが計算装置P1としてC=ABの秘密計算を行った結果とし、
前記データ取得手段は、計算装置αに断片(a0,a1),(b0,b1),(c0,c1),(c’1,c’2),(c”2,c”0)を取得させ、計算装置βに断片(a0,a1),(b0,b1),(c0,c1),(c’2,c”0),(c”0,c”1)を取得させ、計算装置γに断片(a0,a1),(b0,b1),(c0,c1),(c’0,c’1),(c”1,c”2)を取得させる手段であり、
断片(a0,a1),(a1,a2),(a2,a0)と断片(b0,b1),(b1,b2),(b2,b0)と断片(c0,c1),(c1,c2),(c2,c0)を用いて、計算装置αが計算装置P0として、計算装置βが計算装置P1として、計算装置γが計算装置P2として、前記乱数共有手段、前記第1乗算結果分散手段、前記乗算結果加算手段、前記第2乗算結果分散手段、前記乗算確認手段を実行し、
断片(a’0,a’1),(a’1,a’2),(a’2,a’0)と断片(b’0,b’1),(b’1,b’2),(b’2,b’0)と断片(c’0,c’1),(c’1,c’2),(c’2,c’0)を用いて(ただし、a’0=a2,a’1=a0,a’2=a1,b’0=b2,b’1=b0,b’2=b1)、計算装置αが計算装置P1として、計算装置βが計算装置P2として、計算装置γが計算装置P0として、前記乱数共有手段、前記第1乗算結果分散手段、前記乗算結果加算手段、前記第2乗算結果分散手段、前記乗算確認手段を実行し、
断片(a”0,a”1),(a”1,a”2),(a”2,a”0)と断片(b”0,b”1),(b”1,b”2),(b”2,b”0)と断片(c”0,c”1),(c”1,c”2),(c”2,c”0)を用いて(ただし、a”0=a1,a”1=a2,a”2=a0,b”0=b1,b”1=b2,b”2=b0)、計算装置αが計算装置P2として、計算装置βが計算装置P0として、計算装置γが計算装置P1として、前記乱数共有手段、前記第1乗算結果分散手段、前記乗算結果加算手段、前記第2乗算結果分散手段、前記乗算確認手段を実行し、
計算装置α、β、γが計算装置P0,P1,P2のいずれの計算装置として動作するかを決め、
U=C−C’ mod M
の秘密計算と、
V=C−C” mod M
の秘密計算とを行い、計算装置P0に断片(u0,u1),(v0,v1)を取得させ、計算装置P1に断片(u1,u2),(v1,v2)を取得させ、計算装置P2に断片(u2,u0),(v2,v0)を取得させる減算結果分散手段と、
数値UとVを復元し、U=0かつV=0であることを確認する減算確認手段と、
を備える秘密計算システム。
【請求項5】
数値Xを3つの計算装置α、β、γで分散して記録し、秘密計算を行う秘密計算システムの計算装置であって、
Mを2以上の整数、計算装置P0として動作する計算装置が記録する断片を(x0,x1)、計算装置P1として動作する計算装置が記録する断片を(x1,x2)、計算装置P2として動作する計算装置が記録する断片を(x2,x0)、数値Xと断片とは
X=x0+x1+x2 mod M
の関係を満たすとし、
数値A,B,Cの断片として、計算装置P0として動作するときは断片(a0,a1),(b0,b1),(c0,c1)を取得し、計算装置P1として動作するときは断片(a1,a2),(b1,b2),(c1,c2)を取得し、計算装置P2として動作するときは断片(a2,a0),(b2,b0),(c2,c0)を取得するデータ取得部と、
計算装置P1として動作するときは、ランダムに選んだ2以上M以下の整数Sを計算装置P2と共有し、計算装置P2として動作するときは、ランダムに選んだ2以上M以下の整数Sを計算装置P1と共有する乱数共有部と、
計算装置P1として動作するときはSa1を分散し、計算装置P1または計算装置P2として動作するときはSa2を分散し、計算装置P2として動作するときはSa0を分散し、計算装置P0として動作するときは断片((Sa0)0,(Sa0)1),((Sa1)0,(Sa1)1),((Sa2)0,(Sa2)1)を取得し、計算装置P1として動作するときは断片((Sa0)1,(Sa0)2),((Sa1)1,(Sa1)2),((Sa2)1,(Sa2)2)を取得し、計算装置P2として動作するときは断片((Sa0)2,(Sa0)0),((Sa1)2,(Sa1)0),((Sa2)2,(Sa2)0)を取得する第1乗算結果分散部と、
D=Sa0+Sa1+Sa2 mod M
の秘密計算を行い、計算装置P0として動作するときは断片(d0,d1)を取得し、計算装置P1として動作するときは断片(d1,d2)を取得し、計算装置P2として動作するときは断片(d2,d0)を取得する乗算結果加算部と、
E=DB mod M
の秘密計算を行い、計算装置P0として動作するときは断片(e0,e1)を取得し、計算装置P1として動作するときは断片(e1,e2)を取得し、計算装置P2として動作するときは断片(e2,e0)を取得する第2乗算結果分散部と、
計算装置P1として動作するときは
f=e1+e2−Sc1−Sc2 mod M
を計算し、計算装置P2として動作するときは
g=e0−Sc0 mod M
を計算し、計算装置P1または計算装置P2として動作するときは
f+g=0 mod M
かを確認する、もしくは、
計算装置P1として動作するときは
f=e1−Sc1 mod M
を計算し、計算装置P2として動作するときは
g=e2+e0−Sc2−Sc0 mod M
を計算し、計算装置P1または計算装置P2として動作するときは
f+g=0 mod M
かを確認する乗算確認手段と、
を備える計算装置。
【請求項6】
請求項5記載の計算装置であって、
U=C−C’ mod M
の秘密計算と、
V=C−C” mod M
の秘密計算とを行い、計算装置P0として動作するときは断片(u0,u1),(v0,v1)を取得し、計算装置P1として動作するときは断片(u1,u2),(v1,v2)を取得し、計算装置P2として動作するときは断片(u2,u0),(v2,v0)を取得する減算結果分散部と、
数値UとVを復元し、U=0かつV=0であることを確認する減算確認部
も備える計算装置。
【請求項7】
請求項5または6記載の計算装置としてコンピュータを機能させる計算プログラム。
【請求項1】
数値Xを3つの計算装置α、β、γで分散して記録し、秘密計算を行う秘密計算システムを用いてC=ABの秘密計算での不正を検知する不正検知方法であって、
Mを2以上の整数、計算装置P0として動作する計算装置が記録する断片を(x0,x1)、計算装置P1として動作する計算装置が記録する断片を(x1,x2)、計算装置P2として動作する計算装置が記録する断片を(x2,x0)、数値Xと断片とは
X=x0+x1+x2 mod M
の関係を満たすとし、
数値A,B,Cの断片として、計算装置P0が断片(a0,a1),(b0,b1),(c0,c1)を取得し、計算装置P1が断片(a1,a2),(b1,b2),(c1,c2)を取得し、計算装置P2が断片(a2,a0),(b2,b0),(c2,c0)を取得するデータ取得ステップと、
計算装置P1と計算装置P2が、ランダムに選んだ2以上M以下の整数Sを共有する乱数共有ステップと、
計算装置P1がSa1を分散し、計算装置P1または計算装置P2がSa2を分散し、計算装置P2がSa0を分散して、計算装置P0が断片((Sa0)0,(Sa0)1),((Sa1)0,(Sa1)1),((Sa2)0,(Sa2)1)を取得し、計算装置P1が断片((Sa0)1,(Sa0)2),((Sa1)1,(Sa1)2),((Sa2)1,(Sa2)2)を取得し、計算装置P2が断片((Sa0)2,(Sa0)0),((Sa1)2,(Sa1)0),((Sa2)2,(Sa2)0)を取得する第1乗算結果分散ステップと、
計算装置P0,P1,P2が、
D=Sa0+Sa1+Sa2 mod M
の秘密計算を行い、計算装置P0が断片(d0,d1)を取得し、計算装置P1が断片(d1,d2)を取得し、計算装置P2が断片(d2,d0)を取得する乗算結果加算ステップと、
計算装置P0,P1,P2が、
E=DB mod M
の秘密計算を行い、計算装置P0が断片(e0,e1)を取得し、計算装置P1が断片(e1,e2)を取得し、計算装置P2が断片(e2,e0)を取得する第2乗算結果分散ステップと、
計算装置P1が
f=e1+e2−Sc1−Sc2 mod M
を計算し、計算装置P2が
g=e0−Sc0 mod M
を計算し、計算装置P1または計算装置P2が
f+g=0 mod M
かを確認する、もしくは、
計算装置P1が
f=e1−Sc1 mod M
を計算し、計算装置P2が
g=e2+e0−Sc2−Sc0 mod M
を計算し、計算装置P1または計算装置P2が
f+g=0 mod M
かを確認する乗算確認ステップと、
を有する不正検知方法。
【請求項2】
請求項1記載の不正検知方法であって、
計算装置αが記録する断片を(xγα,xαβ)、計算装置βが記録する断片を(xαβ,xβγ)、計算装置γが記録する断片を(xβγ,xγα)とし、
断片(c0,c1),(c1,c2),(c2,c0)は計算装置αが計算装置P0として、計算装置βが計算装置P1として、計算装置γが計算装置P2としてC=ABの秘密計算を行った結果、断片(c’0,c’1),(c’1,c’2),(c’2,c’0)は計算装置αが計算装置P1として、計算装置βが計算装置P2として、計算装置γが計算装置P0としてC=ABの秘密計算を行った結果、断片(c”0,c”1),(c”1,c”2),(c”2,c”0)は計算装置αが計算装置P2として、計算装置βが計算装置P0として、計算装置γが計算装置P1としてC=ABの秘密計算を行った結果とし、
前記データ取得ステップは、計算装置αが断片(a0,a1),(b0,b1),(c0,c1),(c’1,c’2),(c”2,c”0)を取得し、計算装置βが断片(a0,a1),(b0,b1),(c0,c1),(c’2,c”0),(c”0,c”1)を取得し、計算装置γが断片(a0,a1),(b0,b1),(c0,c1),(c’0,c’1),(c”1,c”2)を取得するステップであり、
断片(a0,a1),(a1,a2),(a2,a0)と断片(b0,b1),(b1,b2),(b2,b0)と断片(c0,c1),(c1,c2),(c2,c0)を用いて、計算装置αが計算装置P0として、計算装置βが計算装置P1として、計算装置γが計算装置P2として、前記乱数共有ステップ、前記第1乗算結果分散ステップ、前記乗算結果加算ステップ、前記第2乗算結果分散ステップ、前記乗算確認ステップを実行し、
断片(a’0,a’1),(a’1,a’2),(a’2,a’0)と断片(b’0,b’1),(b’1,b’2),(b’2,b’0)と断片(c’0,c’1),(c’1,c’2),(c’2,c’0)を用いて(ただし、a’0=a2,a’1=a0,a’2=a1,b’0=b2,b’1=b0,b’2=b1)、計算装置αが計算装置P1として、計算装置βが計算装置P2として、計算装置γが計算装置P0として、前記乱数共有ステップ、前記第1乗算結果分散ステップ、前記乗算結果加算ステップ、前記第2乗算結果分散ステップ、前記乗算確認ステップを実行し、
断片(a”0,a”1),(a”1,a”2),(a”2,a”0)と断片(b”0,b”1),(b”1,b”2),(b”2,b”0)と断片(c”0,c”1),(c”1,c”2),(c”2,c”0)を用いて(ただし、a”0=a1,a”1=a2,a”2=a0,b”0=b1,b”1=b2,b”2=b0)、計算装置αが計算装置P2として、計算装置βが計算装置P0として、計算装置γが計算装置P1として、前記乱数共有ステップ、前記第1乗算結果分散ステップ、前記乗算結果加算ステップ、前記第2乗算結果分散ステップ、前記乗算確認ステップを実行し、
計算装置α、β、γが計算装置P0,P1,P2のいずれの計算装置として動作するかを決め、
U=C−C’ mod M
の秘密計算と、
V=C−C” mod M
の秘密計算とを行い、計算装置P0が断片(u0,u1),(v0,v1)を取得し、計算装置P1が断片(u1,u2),(v1,v2)を取得し、計算装置P2が断片(u2,u0),(v2,v0)を取得する減算結果分散ステップと、
計算装置P0,P1,P2が、数値UとVを復元し、U=0かつV=0であることを確認する減算確認ステップと、
を有することを特徴とする不正検知方法。
【請求項3】
数値Xを3つの計算装置α、β、γで分散して記録し、秘密計算を行う秘密計算システムであって、
Mを2以上の整数、計算装置P0として動作する計算装置が記録する断片を(x0,x1)、計算装置P1として動作する計算装置が記録する断片を(x1,x2)、計算装置P2として動作する計算装置が記録する断片を(x2,x0)、数値Xと断片とは
X=x0+x1+x2 mod M
の関係を満たすとし、
数値A,B,Cの断片として、計算装置P0に断片(a0,a1),(b0,b1),(c0,c1)を取得させ、計算装置P1に断片(a1,a2),(b1,b2),(c1,c2)を取得させ、計算装置P2に断片(a2,a0),(b2,b0),(c2,c0)を取得させるデータ取得手段と、
計算装置P1と計算装置P2に、ランダムに選んだ2以上M以下の整数Sを共有させる乱数共有手段と、
計算装置P1にSa1を分散させ、計算装置P1または計算装置P2にSa2を分散させ、計算装置P2にSa0を分散させて、計算装置P0に断片((Sa0)0,(Sa0)1),((Sa1)0,(Sa1)1),((Sa2)0,(Sa2)1)を取得させ、計算装置P1に断片((Sa0)1,(Sa0)2),((Sa1)1,(Sa1)2),((Sa2)1,(Sa2)2)を取得させ、計算装置P2に断片((Sa0)2,(Sa0)0),((Sa1)2,(Sa1)0),((Sa2)2,(Sa2)0)を取得させる第1乗算結果分散手段と、
D=Sa0+Sa1+Sa2 mod M
の秘密計算を行い、計算装置P0に断片(d0,d1)を取得させ、計算装置P1に断片(d1,d2)を取得させ、計算装置P2に断片(d2,d0)を取得させる乗算結果加算手段と、
E=DB mod M
の秘密計算を行い、計算装置P0に断片(e0,e1)を取得させ、計算装置P1に断片(e1,e2)を取得させ、計算装置P2に断片(e2,e0)を取得させる第2乗算結果分散手段と、
計算装置P1に
f=e1+e2−Sc1−Sc2 mod M
を計算させ、計算装置P2に
g=e0−Sc0 mod M
を計算させ、計算装置P1または計算装置P2に
f+g=0 mod M
かを確認させる、もしくは、
計算装置P1に
f=e1−Sc1 mod M
を計算させ、計算装置P2に
g=e2+e0−Sc2−Sc0 mod M
を計算させ、計算装置P1または計算装置P2に
f+g=0 mod M
かを確認させる乗算確認手段と、
を有する秘密計算システム。
【請求項4】
請求項3記載の秘密計算システムであって、
計算装置αが記録する断片を(xγα,xαβ)、計算装置βが記録する断片を(xαβ,xβγ)、計算装置γが記録する断片を(xβγ,xγα)とし、
断片(c0,c1),(c1,c2),(c2,c0)は計算装置αが計算装置P0として、計算装置βが計算装置P1として、計算装置γが計算装置P2としてC=ABの秘密計算を行った結果、断片(c’0,c’1),(c’1,c’2),(c’2,c’0)は計算装置αが計算装置P1として、計算装置βが計算装置P2として、計算装置γが計算装置P0としてC=ABの秘密計算を行った結果、断片(c”0,c”1),(c”1,c”2),(c”2,c”0)は計算装置αが計算装置P2として、計算装置βが計算装置P0として、計算装置γが計算装置P1としてC=ABの秘密計算を行った結果とし、
前記データ取得手段は、計算装置αに断片(a0,a1),(b0,b1),(c0,c1),(c’1,c’2),(c”2,c”0)を取得させ、計算装置βに断片(a0,a1),(b0,b1),(c0,c1),(c’2,c”0),(c”0,c”1)を取得させ、計算装置γに断片(a0,a1),(b0,b1),(c0,c1),(c’0,c’1),(c”1,c”2)を取得させる手段であり、
断片(a0,a1),(a1,a2),(a2,a0)と断片(b0,b1),(b1,b2),(b2,b0)と断片(c0,c1),(c1,c2),(c2,c0)を用いて、計算装置αが計算装置P0として、計算装置βが計算装置P1として、計算装置γが計算装置P2として、前記乱数共有手段、前記第1乗算結果分散手段、前記乗算結果加算手段、前記第2乗算結果分散手段、前記乗算確認手段を実行し、
断片(a’0,a’1),(a’1,a’2),(a’2,a’0)と断片(b’0,b’1),(b’1,b’2),(b’2,b’0)と断片(c’0,c’1),(c’1,c’2),(c’2,c’0)を用いて(ただし、a’0=a2,a’1=a0,a’2=a1,b’0=b2,b’1=b0,b’2=b1)、計算装置αが計算装置P1として、計算装置βが計算装置P2として、計算装置γが計算装置P0として、前記乱数共有手段、前記第1乗算結果分散手段、前記乗算結果加算手段、前記第2乗算結果分散手段、前記乗算確認手段を実行し、
断片(a”0,a”1),(a”1,a”2),(a”2,a”0)と断片(b”0,b”1),(b”1,b”2),(b”2,b”0)と断片(c”0,c”1),(c”1,c”2),(c”2,c”0)を用いて(ただし、a”0=a1,a”1=a2,a”2=a0,b”0=b1,b”1=b2,b”2=b0)、計算装置αが計算装置P2として、計算装置βが計算装置P0として、計算装置γが計算装置P1として、前記乱数共有手段、前記第1乗算結果分散手段、前記乗算結果加算手段、前記第2乗算結果分散手段、前記乗算確認手段を実行し、
計算装置α、β、γが計算装置P0,P1,P2のいずれの計算装置として動作するかを決め、
U=C−C’ mod M
の秘密計算と、
V=C−C” mod M
の秘密計算とを行い、計算装置P0に断片(u0,u1),(v0,v1)を取得させ、計算装置P1に断片(u1,u2),(v1,v2)を取得させ、計算装置P2に断片(u2,u0),(v2,v0)を取得させる減算結果分散手段と、
数値UとVを復元し、U=0かつV=0であることを確認する減算確認手段と、
を備える秘密計算システム。
【請求項5】
数値Xを3つの計算装置α、β、γで分散して記録し、秘密計算を行う秘密計算システムの計算装置であって、
Mを2以上の整数、計算装置P0として動作する計算装置が記録する断片を(x0,x1)、計算装置P1として動作する計算装置が記録する断片を(x1,x2)、計算装置P2として動作する計算装置が記録する断片を(x2,x0)、数値Xと断片とは
X=x0+x1+x2 mod M
の関係を満たすとし、
数値A,B,Cの断片として、計算装置P0として動作するときは断片(a0,a1),(b0,b1),(c0,c1)を取得し、計算装置P1として動作するときは断片(a1,a2),(b1,b2),(c1,c2)を取得し、計算装置P2として動作するときは断片(a2,a0),(b2,b0),(c2,c0)を取得するデータ取得部と、
計算装置P1として動作するときは、ランダムに選んだ2以上M以下の整数Sを計算装置P2と共有し、計算装置P2として動作するときは、ランダムに選んだ2以上M以下の整数Sを計算装置P1と共有する乱数共有部と、
計算装置P1として動作するときはSa1を分散し、計算装置P1または計算装置P2として動作するときはSa2を分散し、計算装置P2として動作するときはSa0を分散し、計算装置P0として動作するときは断片((Sa0)0,(Sa0)1),((Sa1)0,(Sa1)1),((Sa2)0,(Sa2)1)を取得し、計算装置P1として動作するときは断片((Sa0)1,(Sa0)2),((Sa1)1,(Sa1)2),((Sa2)1,(Sa2)2)を取得し、計算装置P2として動作するときは断片((Sa0)2,(Sa0)0),((Sa1)2,(Sa1)0),((Sa2)2,(Sa2)0)を取得する第1乗算結果分散部と、
D=Sa0+Sa1+Sa2 mod M
の秘密計算を行い、計算装置P0として動作するときは断片(d0,d1)を取得し、計算装置P1として動作するときは断片(d1,d2)を取得し、計算装置P2として動作するときは断片(d2,d0)を取得する乗算結果加算部と、
E=DB mod M
の秘密計算を行い、計算装置P0として動作するときは断片(e0,e1)を取得し、計算装置P1として動作するときは断片(e1,e2)を取得し、計算装置P2として動作するときは断片(e2,e0)を取得する第2乗算結果分散部と、
計算装置P1として動作するときは
f=e1+e2−Sc1−Sc2 mod M
を計算し、計算装置P2として動作するときは
g=e0−Sc0 mod M
を計算し、計算装置P1または計算装置P2として動作するときは
f+g=0 mod M
かを確認する、もしくは、
計算装置P1として動作するときは
f=e1−Sc1 mod M
を計算し、計算装置P2として動作するときは
g=e2+e0−Sc2−Sc0 mod M
を計算し、計算装置P1または計算装置P2として動作するときは
f+g=0 mod M
かを確認する乗算確認手段と、
を備える計算装置。
【請求項6】
請求項5記載の計算装置であって、
U=C−C’ mod M
の秘密計算と、
V=C−C” mod M
の秘密計算とを行い、計算装置P0として動作するときは断片(u0,u1),(v0,v1)を取得し、計算装置P1として動作するときは断片(u1,u2),(v1,v2)を取得し、計算装置P2として動作するときは断片(u2,u0),(v2,v0)を取得する減算結果分散部と、
数値UとVを復元し、U=0かつV=0であることを確認する減算確認部
も備える計算装置。
【請求項7】
請求項5または6記載の計算装置としてコンピュータを機能させる計算プログラム。
【図1】
【図2】
【図3】
【図2】
【図3】
【公開番号】特開2012−78446(P2012−78446A)
【公開日】平成24年4月19日(2012.4.19)
【国際特許分類】
【出願番号】特願2010−221723(P2010−221723)
【出願日】平成22年9月30日(2010.9.30)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】
【公開日】平成24年4月19日(2012.4.19)
【国際特許分類】
【出願日】平成22年9月30日(2010.9.30)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】
[ Back to top ]