(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-11
(45)【発行日】2024-03-19
(54)【発明の名称】秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム
(51)【国際特許分類】
G09C 1/00 20060101AFI20240312BHJP
【FI】
G09C1/00 650Z
(21)【出願番号】P 2022544975
(86)(22)【出願日】2020-08-26
(86)【国際出願番号】 JP2020032229
(87)【国際公開番号】W WO2022044173
(87)【国際公開日】2022-03-03
【審査請求日】2023-02-24
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100080816
【氏名又は名称】加藤 朝道
(74)【代理人】
【識別番号】100098648
【氏名又は名称】内田 潔人
(72)【発明者】
【氏名】土田 光
【審査官】行田 悦資
(56)【参考文献】
【文献】国際公開第2018/135566(WO,A1)
【文献】国際公開第2018/135511(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
相互にネットワークで接続した少なくとも4台以上の秘密計算サーバ装置を備え、秘密ではない底と秘密である指数との指数演算の秘密計算をする秘密計算システムであって、
前記秘密計算サーバ装置のそれぞれが、
前記秘密計算サーバ装置のそれぞれの内部で完結した演算によって、少なくとも前記指数のシェアを含む入力に対して再分散を出力する再分散部と、
前記指数が前記指数のシェアの加算に分解されており、前記再分散部にて再分散して得られたシェアを用いて乗算を行うことで前記指数演算の秘密計算をする乗算部と、
を有する秘密計算システム。
【請求項2】
前記秘密計算サーバ装置のそれぞれが
前記指数が法を超えるか否かを判断する指数剰余判定部と、
前記指数剰余判定部の結果に基づいて値を補正する乗算を行う乗算補正部と、
をさらに備える請求項1に記載の秘密計算システム。
【請求項3】
前記指数剰余判定部は、前記指数のシェアの加算の分解に対して、各回の加算において前記指数の最下位ビットの反転を判断することで、前記指数が法を超えるか否かを判断する、請求項2に記載の秘密計算システム。
【請求項4】
前記再分散部は、前記底と前記指数のシェアを含む入力に対して前記底に関する前記指数の指数演算の再分散と、前記指数のシェアを含む入力に対して前記指数の最下位ビットの再分散とを出力する請求項3に記載の秘密計算システム。
【請求項5】
相互にネットワークで接続した少なくとも4台以上の秘密計算サーバ装置の一つであって、
前記秘密計算サーバ装置のそれぞれの内部で完結した演算によって、少なくとも指数のシェアを含む入力に対して再分散を出力する再分散部と、
前記指数が前記指数のシェアの加算に分解されており、前記再分散部にて再分散して得られたシェアを用いて乗算を行うことで指数演算の秘密計算をする乗算部と、
を有する秘密計算サーバ装置。
【請求項6】
相互にネットワークで接続した少なくとも4台以上の秘密計算サーバ装置を用いて、秘密ではない底と秘密である指数との指数演算の秘密計算をする秘密計算方法であって、
前記秘密計算サーバ装置のそれぞれの内部で完結した演算によって、少なくとも前記指数のシェアを含む入力に対して再分散を出力する再分散ステップと、
前記指数が前記指数のシェアの加算に分解されており、前記再分散ステップにて再分散して得られたシェアを用いて乗算を行うことで前記指数演算の秘密計算をする乗算ステップと、
を有する秘密計算方法。
【請求項7】
前記指数が法を超えるか否かを判断する指数剰余判定ステップと、
指数剰余判定部の結果に基づいて値を補正する乗算を行う乗算補正ステップと、
をさらに有する請求項6に記載の秘密計算方法。
【請求項8】
前記指数剰余判定ステップは、前記指数のシェアの加算の分解に対して、各回の加算において前記指数の最下位ビットの反転を判断することで、前記指数が法を超えるか否かを判断する請求項7に記載の秘密計算方法。
【請求項9】
前記再分散ステップは、前記底と前記指数のシェアを含む入力に対して前記底に関する前記指数の指数演算の再分散と、前記指数のシェアを含む入力に対して前記指数の最下位ビットの再分散とを出力する請求項8に記載の秘密計算方法。
【請求項10】
相互にネットワークで接続した少なくとも4台以上の秘密計算サーバ装置に、秘密ではない底と秘密である指数との指数演算の秘密計算を実行させる秘密計算プログラムであって、
前記秘密計算サーバ装置のそれぞれの内部で完結した演算によって、少なくとも前記指数のシェアを含む入力に対して再分散を出力する再分散処理と、
前記指数が前記指数のシェアの加算に分解されており、前記再分散処理にて再分散して得られたシェアを用いて乗算を行うことで前記指数演算の秘密計算をする乗算処理と、
を有する秘密計算プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラムに関するものである。
【背景技術】
【0002】
近年、秘密計算と呼ばれる技術の研究開発が盛んに行われている。秘密計算は、第三者に対して計算過程とその結果を秘密にしつつ所定の処理を実行する技術の一つである。秘密計算における代表的な技術の一つとして、マルチパーティ計算技術が挙げられる。マルチパーティ計算技術では、秘密にするデータを複数のサーバ(秘密計算サーバ装置)に分散配置し、秘密にしたまま当該データの任意の演算を実行する。なお、各秘密計算サーバ装置に分散配置したデータをシェアと呼ぶ。以降、特に断りがない限り、本書で「秘密計算」という語を用いた場合は、マルチパーティ計算技術を意味するものとする。
【0003】
秘密計算の処理の一つとして、指数演算があり、秘密計算における指数演算には、大きく分けて二つがある。一つは、指数の値と底の値の両方を秘密にする方法であり、もう一つは、指数の値は秘密であるが底の値は秘密でない方法である。なお、組合せとしては、底の値は秘密であるが指数の値は秘密でない方法も存在し得るが、乗算の秘密計算から自明に導かれるので秘密計算における指数演算としての問題は生じない。
【0004】
底の値は秘密でない指数演算の秘密計算であっても、実用上のメリットがある。例えば、底の値が素数である場合や2の冪である場合など、底の値を公開した上で秘密計算を行うことがある。例えば、特許文献1には、指数を秘密にした秘密計算の指数演算の例が記載されている。
【先行技術文献】
【特許文献】
【0005】
【非特許文献】
【0006】
【文献】Megha Byali, et al. FLASH: Fast and Robust Framework for Privacy-preserving Machine Learning, Proceedings on Privacy Enhancing Technologies 2020
【文献】Harsh Chaudhari, et al. Trident: Efficient 4PC Framework for Privacy Preserving Machine Learning, The Network and Distributed System Security Symposium (NDSS) 2020
【発明の概要】
【発明が解決しようとする課題】
【0007】
なお、上記先行技術文献の各開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者らによってなされたものである。
【0008】
ところで、秘密計算には、安全性の程度に種別があり、その代表的な安全性としてセミオネスト安全とマリシャス安全がある。プロトコルに従う範囲で可能な限り入力や計算過程の値に関する情報を得ようとする攻撃をセミオネスト攻撃と呼び、このセミオネスト攻撃に対する安全性が確保されていることをセミオネスト安全という。また、プロトコルを逸脱して情報を得ようとするだけでなく,計算結果を改ざんしようとする攻撃をマリシャス攻撃と呼び、このマリシャス攻撃に対する安全性が確保されていることをマリシャス安全という。
【0009】
ここで、特許文献1に記載の指数演算の秘密計算は、基本的にセミオネスト安全であり、マリシャス攻撃がなされたときに確率的にそのことを検知することができたとしても、決定的な不正検知をすることができない。その理由は、特許文献1に記載の指数演算の秘密計算が、秘密にするデータを三つの秘密計算サーバ装置に分散配置する方式だからである。三つの秘密計算サーバ装置のうち一つが計算結果を改ざんした場合、残り二つの秘密計算サーバ装置が秘密性を維持した状態で計算結果の改ざんを検証することができない。決定的なマリシャス安全性を確保するためには少なくとも四つ以上の秘密計算サーバ装置を用いた秘密計算を必要とする(例えば、非特許文献1および2参照)。
【0010】
本発明の目的は、上述した課題を鑑み、指数演算の秘密計算において決定的な不正検知をすることに寄与する秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラムを提供する。
【課題を解決するための手段】
【0011】
本発明の第1の視点では、相互にネットワークで接続した少なくとも4台以上の秘密計算サーバ装置を備え、秘密ではない底と秘密である指数との指数演算の秘密計算をする秘密計算システムであって、前記秘密計算サーバ装置のそれぞれが、前記秘密計算サーバ装置のそれぞれの内部で完結した演算によって、少なくとも前記指数のシェアを含む入力に対して再分散を出力する再分散部と、前記指数が前記指数のシェアの加算に分解されており、前記再分散部にて再分散して得られたシェアを用いて乗算を行うことで前記指数演算の秘密計算をする乗算部と、を有する秘密計算システムが提供される。
【0012】
本発明の第2の視点では、相互にネットワークで接続した少なくとも4台以上の秘密計算サーバ装置の一つであって、前記秘密計算サーバ装置のそれぞれの内部で完結した演算によって、少なくとも前記指数のシェアを含む入力に対して再分散を出力する再分散部と、前記指数が前記指数のシェアの加算に分解されており、前記再分散部にて再分散して得られたシェアを用いて乗算を行うことで前記指数演算の秘密計算をする乗算部と、を有する秘密計算サーバ装置が提供される。
【0013】
本発明の第3の視点では、相互にネットワークで接続した少なくとも4台以上の秘密計算サーバ装置を用いて、秘密ではない底と秘密である指数との指数演算の秘密計算をする秘密計算方法であって、前記秘密計算サーバ装置のそれぞれの内部で完結した演算によって、少なくとも前記指数のシェアを含む入力に対して再分散を出力する再分散ステップと、前記指数が前記指数のシェアの加算に分解されており、前記再分散ステップにて再分散して得られたシェアを用いて乗算を行うことで前記指数演算の秘密計算をする乗算ステップと、を有する秘密計算方法が提供される。
【0014】
本発明の第4の視点では、相互にネットワークで接続した少なくとも4台以上の秘密計算サーバ装置に、秘密ではない底と秘密である指数との指数演算の秘密計算を実行させる秘密計算プログラムであって、前記秘密計算サーバ装置のそれぞれの内部で完結した演算によって、少なくとも前記指数のシェアを含む入力に対して再分散を出力する再分散ステップと、前記指数が前記指数のシェアの加算に分解されており、前記再分散ステップにて再分散して得られたシェアを用いて乗算を行うことで前記指数演算の秘密計算をする乗算ステップと、を有する秘密計算プログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント(non-transient)なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【0015】
本発明の各視点によれば、指数演算の秘密計算において決定的な不正検知をすることに寄与する秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラムを提供することができる。
【図面の簡単な説明】
【0016】
【
図1】
図1は、第1の実施形態における秘密計算システムの機能構成例を示すブロック図である。
【
図2】
図2は、第1の実施形態における秘密計算サーバ装置の機能構成例を示すブロック図である。
【
図3】
図3は、第2の実施形態における秘密計算システムの機能構成例を示すブロック図である。
【
図4】
図4は、第2の実施形態における秘密計算サーバ装置の機能構成例を示すブロック図である。
【
図5】
図5は、秘密計算方法の手順の概略を示すフローチャートである。
【
図6】
図6は、秘密計算サーバ装置のハードウェア構成例を示す図である。
【発明を実施するための形態】
【0017】
以下、図面を参照しながら、本発明の実施形態について説明する。ただし、以下に説明する実施形態により本発明が限定されるものではない。また、各図面において、同一または対応する要素には適宜同一の符号を付している。さらに、図面は模式的なものであり、各要素の寸法の関係、各要素の比率などは、現実のものとは異なる場合があることに留意する必要がある。図面の相互間においても、互いの寸法の関係や比率が異なる部分が含まれている場合がある。
【0018】
[第1の実施形態]
以下、
図1、
図2を参照して、第1の実施形態に係る秘密計算システムおよび秘密計算サーバ装置について説明する。
【0019】
図1は、第1の実施形態における秘密計算システムの機能構成例を示すブロック図である。
図1に示すように、第1の実施形態による秘密計算システム100は、第1の秘密計算サーバ装置100_1と第2の秘密計算サーバ装置100_2と第3の秘密計算サーバ装置100_3と第4の秘密計算サーバ装置100_4とを備えている。第1の秘密計算サーバ装置100_1、第2の秘密計算サーバ装置100_2、第3の秘密計算サーバ装置100_3、および第4の秘密計算サーバ装置100_4は、それぞれが互いにネットワーク経由で通信可能に接続されている。
【0020】
第1~第4の秘密計算サーバ装置100_i(i=1,2,3,4)を備える秘密計算システム100においては、第1~第4の秘密計算サーバ装置100_i(i=1,2,3,4)の内のいずれかの秘密計算サーバ装置100_iが入力した値に対し、その入力や計算過程の値を知られることなく目的のシェアを計算し、その計算結果を第1~第3の秘密計算サーバ装置100_i(i=1,2,3)に分散して記憶することができる。
【0021】
また、第1~第4の秘密計算サーバ装置100_i(i=1,2,3,4)を備える秘密計算システム100においては、第1~第4の秘密計算サーバ装置100_i(i=1,2,3,4)に分散して記憶されているシェアに対し、その計算過程の値を知られることなく目的のシェアを計算し、その計算結果を第1~第3の秘密計算サーバ装置100_i(i=1,2,3,4)に分散して記憶することができる。
【0022】
なお、上記計算結果のシェアは、第1~第4の秘密計算サーバ装置100_1~100_4とシェアを送受信することで、復元してもよい。あるいは、第1~第4の秘密計算サーバ装置100_1~100_4ではない外部にシェアを送信することで、復号してもよい。
【0023】
さらに、第1~第4の秘密計算サーバ装置100_i(i=1,2,3,4)を備える秘密計算システム100においては、第1~第4の秘密計算サーバ装置100_i(i=1,2,3,4)が相互に送受信する情報に不正(例えば改ざん)があるか否かを検証することができる。例えば、第4の秘密計算サーバ装置100_4が第1~第3の秘密計算サーバ装置100_i(i=1,2,3)に送信する情報に不正があるか否かを、第1~第3の秘密計算サーバ装置100_i(i=1,2,3)の間で秘密を維持しながら検証することができる。
【0024】
第1~第3の秘密計算サーバ装置100_i(i=1,2,3)は、第4の秘密計算サーバ装置100_4から受け取った情報を第1~第3の秘密計算サーバ装置100_i(i=1,2,3)のそれぞれが保持しているシェアと組み合わせた計算結果を第1~第3の秘密計算サーバ装置100_i(i=1,2,3)の間で照らし合わせることで、第4の秘密計算サーバ装置100_4から受け取った情報に不正(例えば改ざん)があるか否かを検証することができる。
【0025】
例えば上記のように、第1~第4の秘密計算サーバ装置100_i(i=1,2,3,4)が相互に送受信する情報に不正(例えば改ざん)があるか否かを検証することができるシェアの構成として以下の構成を採用することができる。
【0026】
各参加者 Pi(i=0,1,2,3) に対する x∈Zq のシェアを以下のように定める。
【数1】
【0027】
上記のようにシェアを構成すると、非特許文献1に記載の方法にしたがって、通常の加算および乗算と共に、第1~第4の秘密計算サーバ装置100_i(i=1,2,3,4)が相互に送受信する情報に不正(例えば改ざん)があるか否かを検証することができる。
【0028】
そこで、次に考えるのが指数演算である。すなわち、ここで考える指数演算は、秘密ではない底と秘密である指数との指数演算の秘密計算であるので、秘密分散されていないbと秘密分散されている[x]qとを入力とし、[bx]qを得る演算である。
【0029】
【0030】
ここで、x=-σ
x
1-σ
x
2+μ
x
1+μ
x
2 mod qであることを考えると、以下のようにb
xは分解することができる。
【数3】
【0031】
つまり、各b^{-σx
1}, b^{-σx
2}, b^{μx
1}, b^{μx
2}が得られればbxも計算できることになる。ただし、{-σx
1, -σx
2, μx
1, μx
2}は、第1~第4の秘密計算サーバ装置100_i(i=1,2,3,4)に分散して保持されているシェアを構成する値であるので、同時に第1~第4の秘密計算サーバ装置100_i(i=1,2,3,4)のうち一つに揃うことはない。また、求めたいものは、bxを秘密計算で得るためのシェア[bx]qである。
【0032】
そこで、本実施形態では、
図2に示すように、第1~第4の秘密計算サーバ装置100_i(i=1,2,3,4)が、それぞれの内部で完結した演算によって、少なくとも指数xのシェアを含む入力に対して再分散を出力する再分散部101_i(i=1,2,3,4)と、再分散部101_i(i=1,2,3,4)にて再分散して得られたシェアを用いて乗算を行うことで指数演算の秘密計算をする乗算部102_i(i=1,2,3,4)とを備える。
【0033】
そして、再分散部101_i(i=1,2,3,4)は、以下のように、秘密分散されていない底bと秘密分散されている指数[x]
qとを入力とし、底bに関する指数[x]
qの指数演算の結果[b
x]
qの再分散を出力する。
【数4】
も同様に定める。
【0034】
上記定義から解るように、この再分散の演算では自己が保有しているシェア以外を0として扱う。つまり、自己が保有していないシェアを得るために他の秘密計算サーバ装置と通信を行う必要がない。この再分散は、秘密計算サーバ装置のそれぞれで完結した演算であり、このような再分散を局所的再分散(local reshare)と呼ぶことがある。
【0035】
一方、乗算部102_i(i=1,2,3,4)は、再分散部101_i(i=1,2,3,4)にて再分散して得られたシェアを用いて、以下のように底bに関する指数[x]
qの指数演算の結果[b
x]
qを得る。
【数5】
【0036】
このように、本実施形態では、第1~第4の秘密計算サーバ装置100_i(i=1,2,3,4)のそれぞれが、第1~第4の秘密計算サーバ装置100_i(i=1,2,3,4)のそれぞれの内部で完結した演算によって、少なくとも指数xのシェアを含む入力に対して再分散を出力する再分散部101_i(i=1,2,3,4)と、指数xが指数のシェアの加算に分解されており、再分散部101_i(i=1,2,3,4)にて再分散して得られたシェアを用いて乗算を行うことで指数演算の秘密計算をする乗算部102_i(i=1,2,3,4)とを備えることで、秘密分散されていないbと秘密分散されている[x]qとを入力とし、[bx]qを得る指数演算を行うことができる。
【0037】
また、秘密計算システム100が第1~第4の秘密計算サーバ装置100_i(i=1,2,3,4)を備えており、第1~第4の秘密計算サーバ装置100_i(i=1,2,3,4)が相互に送受信する情報に不正(例えば改ざん)があるか否かを検証することができるので、指数演算の秘密計算において決定的な不正検知をすることに寄与することができる。
【0038】
[第2の実施形態]
次に、第1の実施形態で説明した指数演算の秘密計算をより具体化した実施形態について説明する。第1の実施形態では、指数演算を単純に積に分解しているが、それだけでは不十分である場合もある。例えば、法qが素数pである場合、フェルマーの小定理を用いると、bx=bx’+kq = bx’+k mod qとなる。すると、指数xが法qを超えた場合、指数演算の結果の値bxにb-1を乗する必要がある。第2の実施形態では、法qが素数pである場合(q=pの場合)の構成例について説明する。
【0039】
図3は、第2の実施形態における秘密計算システムの機能構成例を示すブロック図である。
図3に示すように、第2の実施形態による秘密計算システム200は、第1の秘密計算サーバ装置200_1と第2の秘密計算サーバ装置200_2と第3の秘密計算サーバ装置200_3と第4の秘密計算サーバ装置200_4とを備えている。第1の秘密計算サーバ装置200_1、第2の秘密計算サーバ装置200_2、第3の秘密計算サーバ装置200_3、および第4の秘密計算サーバ装置200_4は、それぞれが互いにネットワーク経由で通信可能に接続されている。
【0040】
そして第1の実施形態と同様に秘密計算ができると共に、第1~第4の秘密計算サーバ装置200_i(i=1,2,3,4)を備える秘密計算システム200においては、第1~第4の秘密計算サーバ装置200_i(i=1,2,3,4)が相互に送受信する情報に不正(例えば改ざん)があるか否かを検証することができる。
【0041】
また、
図4に示すように、第1~第4の秘密計算サーバ装置200_i(i=1,2,3,4)が、それぞれの内部で完結した演算によって、少なくとも指数xのシェアを含む入力に対して再分散を出力する再分散部201_i(i=1,2,3,4)と、再分散部201_i(i=1,2,3,4)にて再分散して得られたシェアを用いて乗算を行うことで指数演算の秘密計算をする乗算部202_i(i=1,2,3,4)とを備えている。
【0042】
その上でさらに、第1~第4の秘密計算サーバ装置200_i(i=1,2,3,4)が、指数xが法pを超えるか否かを判断する指数剰余判定部203_i(i=1,2,3,4)と、指数剰余判定部203_i(i=1,2,3,4)の結果に基づいて値を補正する乗算を行う乗算補正部204_i(i=1,2,3,4)とを備える。
【0043】
本実施形態においてもシェアの構成は、第1の実施形態と同じである。すなわち、各参加者 Pi(i=0,1,2,3) に対する x∈Zq のシェアを以下のように定める。
【数6】
【0044】
ここで、既に説明したように、pを素数とし、フェルマーの小定理を用いると、bx=bx’+kp = bx’+k mod pとなるのであった。一方、x=-σx
1-σx
2+μx
1+μx
2であったことを考えると、k∈{0,1,2,3}である。つまり、指数xは高々3回法pを超える可能性がある。
【0045】
指数剰余判定部203_i(i=1,2,3,4)は、指数のシェアの加算の分解に対して、指数が法を超えるか否かを判断する。具体的には、-σx
1-σx
2と(-σx
1-σx
2)+μx
1と((-σx
1-σx
2)+μx
1)+μx
2の3回の加算について指数が法を超えるか否かを判断する。
【0046】
指数が法を超えるか否かを判断する方法は、法pが素数であることに注意すれば、法pを超えると偶奇が反転することに着目すればよいことが解る。例えば、a0が偶数でありa1が奇数の場合、(1)a0+a1が法を超えていれば、a0+a1は偶数である。一方、(1)a0+a1が法を超えていなければ、a0+a1は奇数である。そして、偶奇の反転は、最下位ビットの反転で判断することができる。
【0047】
(秘密計算方法)
以下、秘密計算方法の詳細を説明する。
図5は、秘密計算方法の手順の概略を示すフローチャートである。
【0048】
ステップA1では、再分散を行う。つまり、底bと指数xのシェアを含む入力に対して底bに関する指数xの指数演算の結果bxの再分散と、指数xのシェアを含む入力に対して指数xの最下位ビットの再分散とを計算する。具体的には、以下のような計算を行う。
【0049】
【数7】
も同様に定める。
についても上記同様に定める。
についても上記同様に定める。
【0050】
ステップA2では、指数剰余判定を行う。つまり、指数xが法を超えるか否かを判断する。このために以下のような計算を行う。
【0051】
ステップA1における再分散の結果を用いて、以下の計算をする。なお、以下の値は指数演算の結果のシェアを与えているように見えるが、先述したように指数xが法を超える場合に適切な値を与えない。
【数8】
【0052】
そこで、先述した方針に従い、指数xが法pを超えたか否かを、-σx
1-σx
2と(-σx
1-σx
2)+μx
1と((-σx
1-σx
2)+μx
1)+μx
2の3回の加算について指数が法を超えるか否かで判断する。
【0053】
(1)-σx
1-σx
2が法を超えたか否かを判断する。なお、以下の計算においてLSB(least significant bit)は最下位ビットを意味する。そして、[k0]pは-σx
1-σx
2が法pを超えた場合に1となり、超えない場合に0となるように設計された変数である。偶奇の反転を判断するために、途中論理演算が表れるが、最下位ビットの計算に帰着する。
【0054】
【0055】
(2)(-σ
x
1-σ
x
2)+μ
x
1が法を超えたか否かを判断する。以下の計算において、[k
1]
pは(-σ
x
1-σ
x
2)+μ
x
1が法pを超えた場合に1となり超えない場合に0となるように設計された変数である。
【数10】
【0056】
(3)((-σ
x
1-σ
x
2)+μ
x
1)+μ
x
2が法を超えたか否かを判断する。以下の計算において、[k
2]
pは(-σ
x
1-σ
x
2)+μ
x
1が法pを超えた場合に1となり、超えない場合に0となるように設計された変数である。
【数11】
【0057】
ステップA3では、乗算補正を行う。つまり、ステップA2における指数剰余判定の結果に基づいて値を補正する。上記のように計算された,[k0]p,[k1]p,[k2]pを用いて、以下のように[res0]pを補正する。
【0058】
【0059】
[k0]p,[k1]p,[k2]pは、指数が法を超えた場合に1となり、超えない場合に0となるので、上記式の右辺は、指数が法を超えた場合にb-1が掛けられる式になっている。
【0060】
ステップA4では、補正された[res3]pを底bに関する指数xの指数演算の結果[bx]pとして出力する。
【0061】
このように、本実施形態では、法pが素数の場合でも、指数xが法pを超えるか否かを判断し、秘密分散されていない底bと秘密分散されている指数[x]pとを入力とし、[bx]pを得る指数演算を行うことができる。
【0062】
また、秘密計算システム200が第1~第4の秘密計算サーバ装置200_i(i=1,2,3,4)を備えており、第1~第4の秘密計算サーバ装置200_i(i=1,2,3,4)が相互に送受信する情報に不正(例えば改ざん)があるか否かを検証することができるので、指数演算の秘密計算において決定的な不正検知をすることに寄与することができる。
【0063】
[第3の実施形態]
次に、第2の実施形態で説明した指数演算の秘密計算を変形した実施形態について説明する。第2の実施形態では指数が法を超える可能性が3回あったが、底と指数の法が異なる場合は条件判定の数を減らすことができる場合がある。
【0064】
例えば、底の法p’と指数の法q’をp’=3q’+1を満たす素数とし、[bx]p’ ← exp(b,[x]q’)を実行することを考える。このとき、-σx
1, -σx
2, μx
1, μx
2∈[0, q’-1]かつb∈[0, p’-1]であれば、x=-σx
1-σx
2+μx
1+μx
2が法を超えるのは1回に削減できる。
【0065】
本実施形態は、第2の実施形態で説明した構成および計算の手順を踏襲することができるので、ここでは説明を省略するが、本実施形態においても秘密分散されていない底bと秘密分散されている指数[x]pとを入力とし、[bx]pを得る指数演算を行うことができる。また、本実施形態でも相互に送受信する情報に不正(例えば改ざん)があるか否かを検証することができるので、指数演算の秘密計算において決定的な不正検知をすることに寄与することができる。
【0066】
[第4の実施形態]
次に、法が2のべき乗の場合の実施形態について説明する。法が2のべき乗の場合、すなわち、q=2mの場合もb∈Z2
mとして、秘密分散されていないbと秘密分散されている[x]qとを入力とし、以下のように[bx]qを得る指数演算を考えることができる。ただし、ここでは底bは奇数である場合のみを考える。
【0067】
【0068】
この場合も、第1の実施形態と同様に、秘密分散されていない底bと秘密分散されている指数[x]qとを入力とし、底bに関する指数[x]qの指数演算の結果[bx]qの再分散を定めることができる。
【0069】
【0070】
ここで、本実施形態の場合(法が2のべき乗の場合)も、法が素数である場合と同様に、指数xが法を超えた場合に補正をする必要があるか否かを検討する。
【0071】
底bが奇数の場合、底bと法2
mは互いに素になる。すると、オイラーの定理から以下の関係式が成り立つ。
【数15】
【0072】
つまり、指数が2
mを超える場合も補正を加える必要がない。従って、上記再分散から下記計算を行うことで底bに関する指数[x]
qの指数演算を行うことができる。
【数16】
【0073】
本実施形態は、第1の実施形態で説明した構成および計算の手順を踏襲することができるので、ここでは説明を省略するが、本実施形態においても秘密分散されていない底bと秘密分散されている指数[x]qとを入力とし、[bx]qを得る指数演算を行うことができる。また、本実施形態でも相互に送受信する情報に不正(例えば改ざん)があるか否かを検証することができるので、指数演算の秘密計算において決定的な不正検知をすることに寄与することができる。
【0074】
[ハードウェア構成例]
図6は、秘密計算サーバ装置のハードウェア構成例を示す図である。すなわち、
図6に示すハードウェア構成例は、秘密計算サーバ装置100_i,200_i(i=1,2,3,4)のハードウェア構成例である。
図6に示すハードウェア構成を採用した情報処理装置(コンピュータ)は、上記説明した秘密計算方法をプログラムとして実行することで、秘密計算サーバ装置100_i,200_i(i=1,2,3,4)の各機能を実現することを可能にする。
【0075】
ただし、
図6に示すハードウェア構成例は、秘密計算サーバ装置100_i,200_i(i=1,2,3,4)の各機能を実現するハードウェア構成の一例であり、秘密計算サーバ装置100_i,200_i(i=1,2,3,4)のハードウェア構成を限定する趣旨ではない。秘密計算サーバ装置100_i,200_i(i=1,2,3,4)は、
図6に示さないハードウェアを含むことができる。
【0076】
図6に示すように、秘密計算サーバ装置100_i,200_i(i=1,2,3,4)が採用し得るハードウェア構成10は、例えば内部バスにより相互に接続される、CPU(Central Processing Unit)11、主記憶装置12、補助記憶装置13、およびIF(Interface)部14を備える。
【0077】
CPU11は、秘密計算サーバ装置100_i,200_i(i=1,2,3,4)が実行する秘密計算プログラムに含まれる各指令を実行する。主記憶装置12は、例えばRAM(Random Access Memory)であり、秘密計算サーバ装置100_i,200_i(i=1,2,3,4)が実行する秘密計算プログラムなどの各種プログラムなどをCPU11が処理するために一時記憶する。
【0078】
補助記憶装置13は、例えば、HDD(Hard Disk Drive)であり、秘密計算サーバ装置100_i,200_i(i=1,2,3,4)が実行する秘密計算プログラムなどの各種プログラムなどを中長期的に記憶しておくことが可能である。秘密計算プログラムなどの各種プログラムは、非一時的なコンピュータ可読記録媒体(non-transitory computer-readable storage medium)に記録されたプログラム製品として提供することができる。補助記憶装置13は、非一時的なコンピュータ可読記録媒体に記録された秘密計算プログラムなどの各種プログラムを中長期的に記憶することに利用することが可能である。IF部14は、秘密計算サーバ装置100_i,200_i(i=1,2,3,4)間の入出力に関するインターフェイスを提供する。
【0079】
上記のようなハードウェア構成10を採用した情報処理装置は、先述した秘密計算方法をプログラムとして実行することで、秘密計算サーバ装置100_i,200_i(i=1,2,3,4)の各機能を実現する。
【0080】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
[付記1]
相互にネットワークで接続した少なくとも4台以上の秘密計算サーバ装置を備え、秘密ではない底と秘密である指数との指数演算の秘密計算をする秘密計算システムであって、
前記秘密計算サーバ装置のそれぞれが、
前記秘密計算サーバ装置のそれぞれの内部で完結した演算によって、少なくとも前記指数のシェアを含む入力に対して再分散を出力する再分散部と、
前記指数が前記指数のシェアの加算に分解されており、前記再分散部にて再分散して得られたシェアを用いて乗算を行うことで前記指数演算の秘密計算をする乗算部と、
を有する秘密計算システム。
[付記2]
前記秘密計算サーバ装置のそれぞれが
前記指数が法を超えるか否かを判断する指数剰余判定部と、
前記指数剰余判定部の結果に基づいて値を補正する乗算を行う乗算補正部と、
をさらに備える付記1に記載の秘密計算システム。
[付記3]
前記指数剰余判定部は、前記指数のシェアの加算の分解に対して、各回の加算において前記指数の最下位ビットの反転を判断することで、前記指数が法を超えるか否かを判断する、付記2に記載の秘密計算システム。
[付記4]
前記再分散部は、前記底と前記指数のシェアを含む入力に対して前記底に関する前記指数の指数演算の再分散と、前記指数のシェアを含む入力に対して前記指数の最下位ビットの再分散とを出力する付記3に記載の秘密計算システム。
[付記5]
相互にネットワークで接続した少なくとも4台以上の秘密計算サーバ装置の一つであって、
前記秘密計算サーバ装置のそれぞれの内部で完結した演算によって、少なくとも指数のシェアを含む入力に対して再分散を出力する再分散部と、
前記指数が前記指数のシェアの加算に分解されており、前記再分散部にて再分散して得られたシェアを用いて乗算を行うことで前記指数演算の秘密計算をする乗算部と、
を有する秘密計算サーバ装置。
[付記6]
相互にネットワークで接続した少なくとも4台以上の秘密計算サーバ装置を用いて、秘密ではない底と秘密である指数との指数演算の秘密計算をする秘密計算方法であって、
前記秘密計算サーバ装置のそれぞれの内部で完結した演算によって、少なくとも前記指数のシェアを含む入力に対して再分散を出力する再分散ステップと、
前記指数が前記指数のシェアの加算に分解されており、前記再分散ステップにて再分散して得られたシェアを用いて乗算を行うことで前記指数演算の秘密計算をする乗算ステップと、
を有する秘密計算方法。
[付記7]
前記指数が法を超えるか否かを判断する指数剰余判定ステップと、
前記指数剰余判定部の結果に基づいて値を補正する乗算を行う乗算補正ステップと、
をさらに有する付記6に記載の秘密計算方法。
[付記8]
前記指数剰余判定ステップは、前記指数のシェアの加算の分解に対して、各回の加算において前記指数の最下位ビットの反転を判断することで、前記指数が法を超えるか否かを判断する付記7に記載の秘密計算方法。
[付記9]
前記再分散ステップは、前記底と前記指数のシェアを含む入力に対して前記底に関する前記指数の指数演算の再分散と、前記指数のシェアを含む入力に対して前記指数の最下位ビットの再分散とを出力する付記8に記載の秘密計算方法。
[付記10]
相互にネットワークで接続した少なくとも4台以上の秘密計算サーバ装置に、秘密ではない底と秘密である指数との指数演算の秘密計算を実行させる秘密計算プログラムであって、
前記秘密計算サーバ装置のそれぞれの内部で完結した演算によって、少なくとも前記指数のシェアを含む入力に対して再分散を出力する再分散処理と、
前記指数が前記指数のシェアの加算に分解されており、前記再分散処理にて再分散して得られたシェアを用いて乗算を行うことで前記指数演算の秘密計算をする乗算処理と、
を有する秘密計算プログラム。
【0081】
なお、引用した上記の特許文献及び非特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択(部分的削除を含む)が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。さらに、上記引用した文献の各開示事項は、必要に応じ、本発明の趣旨に則り、本発明の開示の一部として、その一部又は全部を、本書の記載事項と組み合わせて用いることも、本願の開示事項に含まれるものと、みなされる。
【符号の説明】
【0082】
100,200 秘密計算システム
100_i,200_i 秘密計算サーバ装置
101_i,201_i 再分散部
102_i,202_i 乗算部
203_i 指数剰余判定部
204_i 乗算補正部
10 ハードウェア構成
11 CPU(Central Processing Unit)
12 主記憶装置
13 補助記憶装置
14 IF(Interface)部