(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-09
(45)【発行日】2024-09-18
(54)【発明の名称】秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム
(51)【国際特許分類】
G09C 1/00 20060101AFI20240910BHJP
【FI】
G09C1/00 650Z
(21)【出願番号】P 2023506621
(86)(22)【出願日】2021-03-18
(86)【国際出願番号】 JP2021011042
(87)【国際公開番号】W WO2022195799
(87)【国際公開日】2022-09-22
【審査請求日】2023-09-15
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100080816
【氏名又は名称】加藤 朝道
(74)【代理人】
【識別番号】100098648
【氏名又は名称】内田 潔人
(72)【発明者】
【氏名】土田 光
【審査官】辻 勇貴
(56)【参考文献】
【文献】国際公開第2020/165932(WO,A1)
【文献】国際公開第2018/216512(WO,A1)
【文献】国際公開第2015/107952(WO,A1)
【文献】樋渡 啓太郎,"定数ラウンドかつ対数サイズ通信量の秘匿配列アクセスプロトコル",コンピュータセキュリティシンポジウム2020 ,2020年10月,pp.1118-1125
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
相互にネットワークで接続した少なくとも4台以上の秘密計算サーバ装置を備え、インデックスを表すシェアの入力に対して、配列のシェアの中から前記インデックスに対応する配列の要素のシェアを参照する秘密計算システムであって、
前記秘密計算サーバ装置のそれぞれが、
前記少なくとも4台以上の秘密計算サーバ装置のうち他の1台以外の秘密計算サーバ装置で共有された巡回置換を用いて、前記他の1台の秘密計算サーバ装置における巡回置換の値を計算するローカル巡回置換部と、
前記少なくとも4台以上の秘密計算サーバ装置のうち自己以外の秘密計算サーバ装置が計算した複数の巡回置換の値の等号判定をして不正検知を行う比較検証部と、
前記ローカル巡回置換部によって構成された前記巡回置換を合成することで、前記少なくとも4台以上の秘密計算サーバ装置の全てが追跡不可能なランダム巡回置換を構成する置換合成部と、
前記ランダム巡回置換を前記配列のシェアに対して適用する配列シャッフル部と、
前記入力されたインデックスを表すシェアに、前記ローカル巡回置換部によって構成された前記巡回置換のシフト量のシェアを加算することで、前記ランダム巡回置換後のインデックスを表すシェアを計算するインデックス計算部と、
前記ランダム巡回置換後のインデックスを表すシェアを復元し、前記ランダム巡回置換を適用した後の前記配列のシェアから、前記復元したインデックスに対応したシェアを選択する配列選択部と、
を有する秘密計算システム。
【請求項2】
前記ランダム巡回置換後のインデックスを表すシェアを復元する際に、自己が所有していないシェアを他の秘密計算サーバ装置から受信した複数のインデックスのシェアに対して等号判定をして不正検知を行う第2の比較検証部を備える請求項1に記載の秘密計算システム。
【請求項3】
前記少なくとも4台以上の秘密計算サーバ装置のうち他の1台以外の秘密計算サーバ装置で共有された巡回置換は、前記少なくとも4台以上の秘密計算サーバ装置のうち他の1台以外の秘密計算サーバ装置で共有されたキーと疑似ランダム関数を用いて生成する、請求項1または請求項2に記載の秘密計算システム。
【請求項4】
前記巡回置換のシフト量は、前記少なくとも4台以上の秘密計算サーバ装置のうち他の1台以外の秘密計算サーバ装置で共有されたキーと疑似ランダム関数を用いて生成する、請求項3に記載の秘密計算システム。
【請求項5】
前記秘密計算サーバ装置を4台備えた2-out-of-4複製型秘密分散方式であり、前記等号判定によって不正が検知された場合に処理を停止する、請求項1から請求項4のいずれか1項に記載の秘密計算システム。
【請求項6】
前記秘密計算サーバ装置を5台備えた2-out-of-5複製型秘密分散方式であり、前記等号判定によって多数派が一致する値を選択し処理を継続する、請求項1から請求項4のいずれか1項に記載の秘密計算システム。
【請求項7】
インデックスを表すシェアの入力に対して、配列のシェアの中から前記インデックスに対応する配列の要素のシェアを参照するために、相互にネットワークで接続した少なくとも4台以上の秘密計算サーバ装置の一つであって、
前記少なくとも4台以上の秘密計算サーバ装置のうち他の1台以外の秘密計算サーバ装置で共有された巡回置換を用いて、前記他の1台の秘密計算サーバ装置における巡回置換の値を計算するローカル巡回置換部と、
前記少なくとも4台以上の秘密計算サーバ装置のうち自己以外の秘密計算サーバ装置が計算した複数の巡回置換の値の等号判定をして不正検知を行う比較検証部と、
前記ローカル巡回置換部によって構成された前記巡回置換を合成することで、前記少なくとも4台以上の秘密計算サーバ装置の全てが追跡不可能なランダム巡回置換を構成する置換合成部と、
前記ランダム巡回置換を前記配列のシェアに対して適用する配列シャッフル部と、
前記入力されたインデックスを表すシェアに、前記ローカル巡回置換部によって構成された前記巡回置換のシフト量のシェアを加算することで、前記ランダム巡回置換後のインデックスを表すシェアを計算するインデックス計算部と、
前記ランダム巡回置換後のインデックスを表すシェアを復元し、前記ランダム巡回置換を適用した後の前記配列のシェアから、前記復元したインデックスに対応したシェアを選択する配列選択部と、
を有する秘密計算サーバ装置。
【請求項8】
相互にネットワークで接続した少なくとも4台以上の秘密計算サーバ装置を備え、インデックスを表すシェアの入力に対して、配列のシェアの中から前記インデックスに対応する配列の要素のシェアを参照する秘密計算方法であって、
前記少なくとも4台以上の秘密計算サーバ装置のうち他の1台以外の秘密計算サーバ装置で共有された巡回置換を用いて、前記他の1台の秘密計算サーバ装置における巡回置換の値を計算するローカル巡回置換ステップと、
前記少なくとも4台以上の秘密計算サーバ装置のうち自己以外の秘密計算サーバ装置が計算した複数の巡回置換の値の等号判定をして不正検知を行う比較検証ステップと、
前記ローカル巡回置換ステップによって構成された前記巡回置換を合成することで、前記少なくとも4台以上の秘密計算サーバ装置の全てが追跡不可能なランダム巡回置換を構成する置換合成ステップと、
前記ランダム巡回置換を前記配列のシェアに対して適用する配列シャッフルステップと、
前記入力されたインデックスを表すシェアに、前記ローカル巡回置換
ステップによって構成された前記巡回置換のシフト量のシェアを加算することで、前記ランダム巡回置換後のインデックスを表すシェアを計算するインデックス計算ステップと、
前記ランダム巡回置換後のインデックスを表すシェアを復元し、前記ランダム巡回置換を適用した後の前記配列のシェアから、前記復元したインデックスに対応したシェアを選択する配列選択ステップと、
を有する秘密計算方法。
【請求項9】
前記ローカル巡回置換ステップと前記比較検証ステップと前記置換合成ステップと前記配列シャッフルステップとを前記インデックスを表すシェアの入力の前に行う、請求項8に記載の秘密計算方法。
【請求項10】
インデックスを表すシェアの入力に対して、配列のシェアの中から前記インデックスに対応する配列の要素のシェアを参照するために、相互にネットワークで接続した少なくとも4台以上の秘密計算サーバ装置に処理を実行させる秘密計算プログラムであって、
前記少なくとも4台以上の秘密計算サーバ装置のうち他の1台以外の秘密計算サーバ装置で共有された巡回置換を用いて、前記他の1台の秘密計算サーバ装置における巡回置換の値を計算するローカル巡回置換処理と、
前記少なくとも4台以上の秘密計算サーバ装置のうち自己以外の秘密計算サーバ装置が計算した複数の巡回置換の値の等号判定をして不正検知を行う比較検証処理と、
前記ローカル巡回置換処理によって構成された前記巡回置換を合成することで、前記少なくとも4台以上の秘密計算サーバ装置の全てが追跡不可能なランダム巡回置換を構成する置換合成処理と、
前記ランダム巡回置換を前記配列のシェアに対して適用する配列シャッフル処理と、
前記入力されたインデックスを表すシェアに、前記ローカル巡回置換
処理によって構成された前記巡回置換のシフト量のシェアを加算することで、前記ランダム巡回置換後のインデックスを表すシェアを計算するインデックス計算処理と、
前記ランダム巡回置換後のインデックスを表すシェアを復元し、前記ランダム巡回置換を適用した後の前記配列のシェアから、前記復元したインデックスに対応したシェアを選択する配列選択処理と、
を有する秘密計算プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラムに関するものである。
【背景技術】
【0002】
近年、秘密計算と呼ばれる技術の研究開発が盛んに行われている。秘密計算は、第三者に対して計算過程とその結果を秘密にしつつ所定の処理を実行する技術の一つである。秘密計算における代表的な技術の一つとして、マルチパーティ計算技術が挙げられる。マルチパーティ計算技術では、秘密にするデータを複数のサーバ(秘密計算サーバ装置)に分散配置し、秘密にした状態を維持しながら当該データの任意の演算を実行する。なお、各秘密計算サーバ装置に分散配置したデータをシェアと呼ぶ。以降、特に断りがない限り、本書で「秘密計算」という語を用いた場合は、マルチパーティ計算技術を意味するものとする。
【0003】
秘密計算の処理の一つとして、配列参照が存在する。配列参照とは、配列して格納された要素を参照するための処理であり、秘密計算における配列参照では、配列におけるどの要素を参照するかを示すインデックスも秘密することが要請される。すなわち、配列におけるどの要素にアクセスしているかさえも秘密にしたまま、所望の配列の要素の読み出しおよび書き込みを行うことが要求されている。
【0004】
例えば、与信判断などでは、複数の判断項目を用いて判断を行うが、判断項目の内容だけではなく、どの判断項目を用いて判断が行われたのかも秘密にしておきたいという状況もある。このような需要に対して、インデックスを秘密とする配列参照の秘密計算の応用例が存在している。また、配列におけるどの要素にアクセスしているかのパターンを解析することで情報が漏洩する可能性もあり、アクセスパターンを秘密にしたまま配列の要素へアクセスすることは、セキュリティ上のメリットもある。
【先行技術文献】
【非特許文献】
【0005】
【文献】Marina Blanton, Ahreum Kang, and Chen Yuan. “Improved building blocks for secure multi-party computation based on secret sharing with honest majority.” International Conference on Applied Cryptography and Network Security. Springer, Cham, 2020
【発明の概要】
【発明が解決しようとする課題】
【0006】
なお、上記先行技術文献の開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者らによってなされたものである。
【0007】
ところで、マルチパーティ計算技術を用いる秘密計算では、秘匿するデータを複数のサーバに分散配置した状態で処理を行うので、処理の効率化という観点では、通信コストの低減が課題となる。そして、この通信コストは、通信の対象となるデータ量を表す通信量と、最大限の並列化を行った場合の通信の回数を表す通信ラウンド数に分解できる。
【0008】
そして、この通信量とラウンド数との間には、環境によっては通信量と通信ラウンド数のどちらを優先すべきかが異なることもある。例えば、WAN(Wide Area Network)環境などの通信遅延が大きい環境では、通信回数が少ない方が有利であるので、通信ラウンド数が小さい秘密計算の方が好ましく、定数ラウンドがあればより好ましい。
【0009】
一方、当然のことながら秘密計算には安全性も求められている。秘密計算における安全性には程度の違いがあり、その代表的な安全性としてセミオネスト安全がある。プロトコルに従う範囲で可能な限り入力や計算過程の値に関する情報を得ようとする攻撃をセミオネスト攻撃と呼び、セミオネスト安全とは、このセミオネスト攻撃に対する安全性が確保されていることをいう。
【0010】
しかしながら、マルチパーティ計算技術を用いる秘密計算には、プロトコルを逸脱して計算結果を改ざんする攻撃をする参加者が紛れ込むことも想定される。このような不正者による値の改ざんを検出することを、不正検知という。非特許文献1は、定数ラウンドの通信コストの配列参照プロトコルであるが、セミオネスト安全であるので、この意味での不正検知を行うことができない。そこで、定数ラウンドの通信コストの配列参照プロトコルでありながら、不正検知を可能として安全性を高めるという要望がある。
【0011】
本発明の目的は、上述した課題を鑑み、配列参照プロトコルにおいて通信コストの低さと安全性の高さを両立することに寄与する秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラムを提供することにある。
【課題を解決するための手段】
【0012】
本発明の第1の視点では、相互にネットワークで接続した少なくとも4台以上の秘密計算サーバ装置を備え、インデックスを表すシェアの入力に対して、配列のシェアの中から前記インデックスに対応する配列の要素のシェアを参照する秘密計算システムであって、前記秘密計算サーバ装置のそれぞれが、前記少なくとも4台以上の秘密計算サーバ装置のうち他の1台以外の秘密計算サーバ装置で共有された巡回置換を用いて、前記他の1台の秘密計算サーバ装置における巡回置換の値を計算するローカル巡回置換部と、前記少なくとも4台以上の秘密計算サーバ装置のうち自己以外の秘密計算サーバ装置が計算した複数の巡回置換の値の等号判定をして不正検知を行う比較検証部と、前記ローカル巡回置換部によって構成された前記巡回置換を合成することで、前記少なくとも4台以上の秘密計算サーバ装置の全てが追跡不可能なランダム巡回置換を構成する置換合成部と、前記ランダム巡回置換を前記配列のシェアに対して適用する配列シャッフル部と、前記入力されたインデックスを表すシェアに、前記ローカル巡回置換部によって構成された前記巡回置換のシフト量のシェアを加算することで、前記ランダム巡回置換後のインデックスを表すシェアを計算するインデックス計算部と、前記ランダム巡回置換後のインデックスを表すシェアを復元し、前記ランダム巡回置換を適用した後の前記配列のシェアから、前記復元したインデックスに対応したシェアを選択する配列選択部と、を有する秘密計算システムが提供される。
【0013】
本発明の第2の視点では、インデックスを表すシェアの入力に対して、配列のシェアの中から前記インデックスに対応する配列の要素のシェアを参照するために、相互にネットワークで接続した少なくとも4台以上の秘密計算サーバ装置の一つであって、前記少なくとも4台以上の秘密計算サーバ装置のうち他の1台以外の秘密計算サーバ装置で共有された巡回置換を用いて、前記他の1台の秘密計算サーバ装置における巡回置換の値を計算するローカル巡回置換部と、前記少なくとも4台以上の秘密計算サーバ装置のうち自己以外の秘密計算サーバ装置が計算した複数の巡回置換の値の等号判定をして不正検知を行う比較検証部と、前記ローカル巡回置換部によって構成された前記巡回置換を合成することで、前記少なくとも4台以上の秘密計算サーバ装置の全てが追跡不可能なランダム巡回置換を構成する置換合成部と、前記ランダム巡回置換を前記配列のシェアに対して適用する配列シャッフル部と、前記入力されたインデックスを表すシェアに、前記ローカル巡回置換部によって構成された前記巡回置換のシフト量のシェアを加算することで、前記ランダム巡回置換後のインデックスを表すシェアを計算するインデックス計算部と、前記ランダム巡回置換後のインデックスを表すシェアを復元し、前記ランダム巡回置換を適用した後の前記配列のシェアから、前記復元したインデックスに対応したシェアを選択する配列選択部と、を有する秘密計算サーバ装置が提供される。
【0014】
本発明の第3の視点では、相互にネットワークで接続した少なくとも4台以上の秘密計算サーバ装置を備え、インデックスを表すシェアの入力に対して、配列のシェアの中から前記インデックスに対応する配列の要素のシェアを参照する秘密計算方法であって、前記少なくとも4台以上の秘密計算サーバ装置のうち他の1台以外の秘密計算サーバ装置で共有された巡回置換を用いて、前記他の1台の秘密計算サーバ装置における巡回置換の値を計算するローカル巡回置換ステップと、前記少なくとも4台以上の秘密計算サーバ装置のうち自己以外の秘密計算サーバ装置が計算した複数の巡回置換の値の等号判定をして不正検知を行う比較検証ステップと、前記ローカル巡回置換ステップによって構成された前記巡回置換を合成することで、前記少なくとも4台以上の秘密計算サーバ装置の全てが追跡不可能なランダム巡回置換を構成する置換合成ステップと、前記ランダム巡回置換を前記配列のシェアに対して適用する配列シャッフルステップと、前記入力されたインデックスを表すシェアに、前記ローカル巡回置換ステップによって構成された前記巡回置換のシフト量のシェアを加算することで、前記ランダム巡回置換後のインデックスを表すシェアを計算するインデックス計算ステップと、前記ランダム巡回置換後のインデックスを表すシェアを復元し、前記ランダム巡回置換を適用した後の前記配列のシェアから、前記復元したインデックスに対応したシェアを選択する配列選択ステップと、を有する秘密計算方法が提供される。
【0015】
本発明の第4の視点では、インデックスを表すシェアの入力に対して、配列のシェアの中から前記インデックスに対応する配列の要素のシェアを参照するために、相互にネットワークで接続した少なくとも4台以上の秘密計算サーバ装置に処理を実行させる秘密計算プログラムであって、前記少なくとも4台以上の秘密計算サーバ装置のうち他の1台以外の秘密計算サーバ装置で共有された巡回置換を用いて、前記他の1台の秘密計算サーバ装置における巡回置換の値を計算するローカル巡回置換処理と、前記少なくとも4台以上の秘密計算サーバ装置のうち自己以外の秘密計算サーバ装置が計算した複数の巡回置換の値の等号判定をして不正検知を行う比較検証処理と、前記ローカル巡回置換処理によって構成された前記巡回置換を合成することで、前記少なくとも4台以上の秘密計算サーバ装置の全てが追跡不可能なランダム巡回置換を構成する置換合成処理と、前記ランダム巡回置換を前記配列のシェアに対して適用する配列シャッフル処理と、前記入力されたインデックスを表すシェアに、前記ローカル巡回置換処理によって構成された前記巡回置換のシフト量のシェアを加算することで、前記ランダム巡回置換後のインデックスを表すシェアを計算するインデックス計算処理と、前記ランダム巡回置換後のインデックスを表すシェアを復元し、前記ランダム巡回置換を適用した後の前記配列のシェアから、前記復元したインデックスに対応したシェアを選択する配列選択処理と、を有する秘密計算プログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント(non-transient)なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【0016】
本発明の各視点によれば、配列参照プロトコルにおいて通信コストの低さと安全性の高さを両立することに寄与する秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラムを提供することができる。
【図面の簡単な説明】
【0017】
【
図1】
図1は、第1の実施形態に係る秘密計算システムの機能構成例を示すブロック図である。
【
図2】
図2は、第1の実施形態における秘密計算サーバ装置の機能構成例を示すブロック図である。
【
図3】
図3は、ランダム巡回置換後のインデックスを表すシェアを計算する原理を説明する図である。
【
図4】
図4は、第1の実施形態にかかる秘密計算方法の手順の概略を示すフローチャートである。
【
図5】
図5は、第2の実施形態に係る秘密計算システムの機能構成例を示すブロック図である。
【
図6】
図6は、第2の実施形態に係る秘密計算方法の手順の概略を示すフローチャートである。
【
図7】
図7は、第3の実施形態に係る秘密計算システムの機能構成例を示すブロック図である。
【
図8】
図8は、第3の実施形態に係る秘密計算方法の手順の概略を示すフローチャートである。
【
図9】
図9は、秘密計算サーバ装置のハードウェア構成例を示す図である。
【発明を実施するための形態】
【0018】
以下、図面を参照しながら、本発明の実施形態について説明する。ただし、以下に説明する実施形態により本発明が限定されるものではない。また、各図面において、同一または対応する要素には適宜同一の符号を付している。さらに、図面は模式的なものであり、各要素の寸法の関係、各要素の比率などは、現実のものとは異なる場合があることに留意する必要がある。図面の相互間においても、互いの寸法の関係や比率が異なる部分が含まれている場合がある。
【0019】
[第1の実施形態]
以下、
図1、
図2を参照して、第1の実施形態に係る秘密計算システムおよび秘密計算サーバ装置について説明する。第1の実施形態は、本発明の基本的なコンセプトのみを説明する実施形態である。
【0020】
図1は、第1の実施形態に係る秘密計算システムの機能構成例を示すブロック図である。
図1に示すように、第1の実施形態に係る秘密計算システム100は、少なくとも第0~第3の秘密計算サーバ装置110
i(i=0,1,2,3)を備えている。第0~第3の秘密計算サーバ装置110
i(i=0,1,2,3)は、それぞれが互いにネットワーク経由で通信可能に接続されている。
図1中央の丸印は、ネットワークを示す。
【0021】
第0~第3の秘密計算サーバ装置110i(i=0,1,2,3)を備える秘密計算システム100においては、第0~第3の秘密計算サーバ装置110i(i=0,1,2,3)の内のいずれかの秘密計算サーバ装置110iが入力した値に対し、その入力や計算過程の値を知られることなく目的のシェアを計算し、その計算結果を第0~第N-1の秘密計算サーバ装置110i(i=0,1,2,3)に分散して記憶することができる。
【0022】
また、第0~第3の秘密計算サーバ装置110i(i=0,1,2,3)を備える秘密計算システム100においては、第0~第3の秘密計算サーバ装置110i(i=0,1,2,3)に分散して記憶されているシェアに対し、その計算過程の値を知られることなく目的のシェアを計算し、その計算結果を第0~第N-1の秘密計算サーバ装置110i(i=0,1,2,3)に分散して記憶することができる。
【0023】
なお、上記計算結果のシェアは、第0~第3の秘密計算サーバ装置110i(i=0,1,2,3)にシェアを送受信することで、復元してもよい。あるいは、第0~第N-1の秘密計算サーバ装置110i(i=0,1,2,3)ではない外部にシェアを送信することで、復元してもよい。
【0024】
図1に示される第1の実施形態に係る秘密計算システム100は、インデックスを表すシェアの入力に対して、配列のシェアの中から前記インデックスに対応する配列の要素のシェアを参照することができる秘密計算システムであり、第0~第3の秘密計算サーバ装置110
i(i=0,1,2,3)のそれぞれは、独立した各参加者P
i(i=0,1,2,3)によって運営されている。さらに、第0~第3の秘密計算サーバ装置110
i(i=0,1,2,3)を備える秘密計算システム100においては、第0~第3の秘密計算サーバ装置110
i(i=0,1,2,3)のうち一部が不正者によって運営されている場合であっても、不正を検知することができる。
【0025】
このために、第0~第3の秘密計算サーバ装置110
i(i=0,1,2,3)のそれぞれは、
図2に示すように、ローカル巡回置換部111と、比較検証部112と、置換合成部113と、配列シャッフル部114と、インデックス計算部115と、配列選択部116とを有している。
図2は、第1の実施形態における秘密計算サーバ装置の機能構成例を示すブロック図である。
【0026】
ローカル巡回置換部111は、第0~第3の秘密計算サーバ装置110i(i=0,1,2,3)のうち1台以外の秘密計算サーバ装置で共有された巡回置換を用いて、当該他の1台の秘密計算サーバ装置における巡回置換の値を計算する。
【0027】
比較検証部112は、第0~第3の秘密計算サーバ装置110i(i=0,1,2,3)のうち自己以外の秘密計算サーバ装置が計算した複数の巡回置換の値の等号判定をして不正検知を行う。例えば、第1~第3の秘密計算サーバ装置110i(i=1,2,3)で共有された巡回置換を用いて第0の秘密計算サーバ装置1100における巡回置換を計算する場合、第0の秘密計算サーバ装置1100は、第1~第3の秘密計算サーバ装置110i(i=1,2,3)から同じ値であるはずの巡回置換後の値を受信することになる。しかし、第1~第3の秘密計算サーバ装置110i(i=1,2,3)の中に不正者によって運用されているものが紛れ込み、値が改ざんされた場合、第0の秘密計算サーバ装置1100が受信する値が等しくならなくなる。比較検証部112は、このように等号判定をして不正検知を行う。
【0028】
置換合成部113は、ローカル巡回置換部111によって構成された巡回置換を合成することで、第0~第3の秘密計算サーバ装置110i(i=0,1,2,3)の全てが追跡不可能なランダム巡回置換を構成する。ローカル巡回置換部111が構成する巡回置換は、第0~第3の秘密計算サーバ装置110i(i=0,1,2,3)のうち1台が追跡不可能な巡回置換となっている。第iの秘密計算サーバ装置110iが追跡不可能な巡回置換をσiとすると、σ=σ0σ1σ2σ3は第0~第3の秘密計算サーバ装置110i(i=0,1,2,3)の全てが追跡不可能なランダム巡回置換となる。
【0029】
配列シャッフル部114は、参照対象となる配列のシェアに対して上記ランダム巡回置換を適用する。上記ランダム巡回置換は、第0~第3の秘密計算サーバ装置110i(i=0,1,2,3)の全てが追跡不可能なので、ランダム巡回置換後の配列も第0~第3の秘密計算サーバ装置110i(i=0,1,2,3)からは不明になる。言い換えると、配列のシェアからインデックスに関する情報が失われる。
【0030】
インデックス計算部115は、入力されたインデックスを表すシェアに、ローカル巡回置換部111によって構成された巡回置換のシフト量のシェアを加算することで、ランダム巡回置換後のインデックスを表すシェアを計算する。上述のように、参照対象となる配列のシェアに対してランダム巡回置換を適用すると、配列のシェアからインデックスに関する情報が失われる。そこで、インデックス計算部115は、入力されたインデックスを表すシェアに各巡回置換のシフト量のシェアを加算することで、ランダム巡回置換後のインデックスを表すシェアを計算する。この計算原理については、後に詳述する。
【0031】
配列選択部116は、ランダム巡回置換後のインデックスを表すシェアを復元し、ランダム巡回置換を適用した後の配列のシェアから、復元したインデックスに対応したシェアを選択する。
【0032】
図3は、ランダム巡回置換後のインデックスを表すシェアを計算する原理を説明する図である。
図3に示すように、配列参照では、配列されて格納されたデータセットから所望のデータを参照する。具体的には、配列されて格納されたデータセットにはインデックスが付与されており、インデックスを指定することによって所望のデータを参照することになる。
【0033】
ここで、秘密計算における配列参照では、インデックス自体も秘匿されている。つまり、秘密計算に参加する参加者は、何番目のデータにアクセスするべきなのかも直接的には知ることができない。そこで、上述の秘密計算システム100では、以下の仕組みで配列参照を行う。
【0034】
まず、上述のように構成したランダム巡回置換を対象とする配列に適用する。すなわち、第iの秘密計算サーバ装置110iが追跡不可能な巡回置換をσiとして、これらを合成したσ=σ0σ1σ2σ3を対象とする配列に適用する。ここで巡回置換σiのシフト量をRiとすると、ランダム巡回置換σのシフト量はR0+R1+R2+R3となる。したがって、参照したいインデックスがhである場合、ランダム巡回置換を適用後の参照すべきインデックスはh’=h+R0+R1+R2+R3となる。なお、これら計算は秘匿されたまま秘密計算として行う。
【0035】
ここで注意すべきことは、巡回置換σiは第iの秘密計算サーバ装置110iが追跡不可能である。つまり、第iの秘密計算サーバ装置110iは巡回置換σiのシフト量Riを知ることはできない。結果、ランダム巡回置換を適用後の参照すべきインデックスh’から、計算式h’=h+R0+R1+R2+R3を用いて元のインデックスhを計算することもできない。
【0036】
このように、上述の秘密計算システム100では、ランダム巡回置換を適用後の参照すべきインデックスh’を計算することが可能であるが、元のインデックスhは秘匿された状態を維持することができる。
【0037】
(秘密計算方法)
図4は、第1の実施形態にかかる秘密計算方法の手順の概略を示すフローチャートである。
図4に示される秘密計算方法の手順は、説明を容易にするための秘密計算の手順の典型例に過ぎず、実際の秘密計算方法では、一部のステップの順序を変えて実施したり、一部のステップを繰り返したりするなどの変更をすることができる。
【0038】
図4に示されるように、第1の実施形態にかかる秘密計算方法は、ローカル巡回置換ステップ(ステップS11)と比較検証ステップ(ステップS12)と置換合成ステップ(ステップS13)と配列シャッフルステップ(ステップS14)とインデックス計算ステップ(ステップS15)と配列選択ステップ(ステップS16)とを有している。
【0039】
ローカル巡回置換ステップ(ステップS11)では、第0~第3の秘密計算サーバ装置110i(i=0,1,2,3)のうち1台以外の秘密計算サーバ装置で共有された巡回置換を用いて、当該他の1台の秘密計算サーバ装置における巡回置換の値を計算する。
【0040】
比較検証ステップ(ステップS12)では、第0~第3の秘密計算サーバ装置110i(i=0,1,2,3)のうち自己以外の秘密計算サーバ装置が計算した複数の巡回置換の値の等号判定をして不正検知を行う。
【0041】
置換合成ステップ(ステップS13)では、ローカル巡回置換ステップ(ステップS11)で構成された巡回置換を合成することで、第0~第3の秘密計算サーバ装置110i(i=0,1,2,3)の全てが追跡不可能なランダム巡回置換を構成する。
【0042】
配列シャッフルステップ(ステップS14)では、参照対象となる配列のシェアに対して上記ランダム巡回置換を適用する。
【0043】
インデックス計算ステップ(ステップS15)では、入力されたインデックスを表すシェアに、ローカル巡回置換部によって構成された巡回置換のシフト量のシェアを加算することで、ランダム巡回置換後のインデックスを表すシェアを計算する。この計算原理については、上述したとおりである。
【0044】
配列選択ステップ(ステップS16)では、ランダム巡回置換後のインデックスを表すシェアを復元し、ランダム巡回置換を適用した後の配列のシェアから、復元したインデックスに対応したシェアを選択する。
【0045】
なお、上記説明から解るように、ローカル巡回置換ステップ(ステップS11)と比較検証ステップ(ステップS12)と置換合成ステップ(ステップS13)と配列シャッフルステップ(ステップS14)は、インデックスを表すシェアの入力を必要としない。したがって、Private Information Retrievalのような状況においては、インデックスを表すシェアの入力を待たずに、事前にローカル巡回置換ステップ(ステップS11)と比較検証ステップ(ステップS12)と置換合成ステップ(ステップS13)と配列シャッフルステップ(ステップS14)を実行する、いわゆるオフライン‐オンラインパラダイムを用いることができる。
【0046】
以上のように第1の実施形態にかかる秘密計算システムおよび秘密計算方法は、定数ラウンドの通信コストの配列参照プロトコルでありながら不正検知が可能である。すなわち、第1の実施形態にかかる秘密計算システムおよび秘密計算方法は、配列参照プロトコルにおいて通信コストの低さと安全性の高さを両立することに寄与することが可能である。
【0047】
以上説明した第1の実施形態は、本発明の基本的なコンセプトのみを説明する実施形態である。以下、第2の実施形態および第3の実施形態の説明において、上記説明したコンセプトを具体的な秘密分散方式に適用する。
【0048】
[第2の実施形態]
以下、
図5を参照して、第2の実施形態に係る秘密計算システムについて説明する。
【0049】
図5は、第2の実施形態に係る秘密計算システムの機能構成例を示すブロック図である。
図5に示すように、第2の実施形態に係る秘密計算システム200は、第0~第3の秘密計算サーバ装置210
i(i=0,1,2,3)を備えている。第0~第3の秘密計算サーバ装置210
i(i=0,1,2,3)は、それぞれが互いにネットワーク経由で通信可能に接続されている。
【0050】
図5に示される第2の実施形態に係る秘密計算システム200は、インデックスを表すシェアの入力に対して、配列のシェアの中から前記インデックスに対応する配列の要素のシェアを参照することができる秘密計算システムであり、第0~第3の秘密計算サーバ装置210
i(i=0,1,2,3)のそれぞれは、独立した各参加者P
i(i=0,1,2,3)によって運営されている。さらに、第0~第3の秘密計算サーバ装置210
i(i=0,1,2,3)を備える秘密計算システム200においては、第0~第3の秘密計算サーバ装置210
i(i=0,1,2,3)のうち一部が不正者によって運営されている場合であっても、不正を検知し、不正があった場合に処理を停止することができる。
【0051】
〔秘密分散の方式〕
第2の実施形態に係る秘密計算システム200は、2-out-of-4複製型秘密分散の方式を採用することができる。具体的には、位数Lの剰余類環ZLの元v∈ZLの剰余類環ZL上のシェアを以下のように構成する。
[v]L=([v]L,0,[v]L,1,[v]L,2,[v]L,3)
mv,λv,λv,1,λv,2,λv,3∈ZLとしたとき
mv=v+λv mod L
λv=λv,1+λv,2+λv,3 mod L
【0052】
このとき、各参加者Pi(i=0,1,2,3)のシェアを以下のように定める。
参加者P0のシェア:[v]L,0=(λv,1,λv,2,λv,3)
参加者P1のシェア:[v]L,1=(mv,λv,2,λv,3)
参加者P2のシェア:[v]L,2=(mv,λv,3,λv,1)
参加者P3のシェア:[v]L,3=(mv,λv,1,λv,2)
【0053】
なお、上記のように構成された2-out-of-4複製型秘密分散方式では、以下のように元のv∈ZLを復元することが可能である。
v=mv-λv,1-λv,2-λv,3
【0054】
配列長Nの配列V=(λ0,λ1,...,λj,...,λN-1)に関するシェアも
mvj=vj+λvj mod L
λvj=λvj,1+λvj,2+λvj,3 mod L
として、
M=(mvj,...,mvN-1)
Λ1=(λvj,1,...,λvN-1,1)
Λ2=(λvj,2,...,λvN-1,2)
Λ3=(λvj,3,...,λvN-1,3)
【0055】
〔シャッフル〕
例えば、第1~第3の参加者Pi(i=1,2,3)で共有された巡回置換を用いて第0の参加者P0の巡回置換を計算する場合を考える。これは、第1~第3の参加者Pi(i=1,2,3)で共有された巡回置換σ0を用いて以下のように構成することができる。
【0056】
以下のように第1~第3の参加者Pi(i=1,2,3)は、第0の参加者P0に巡回置換σ0の適用後のΛ1,Λ2,Λ3の値にマスクをして送信する。言い換えると、第1~第3の参加者Pi(i=1,2,3)は、第0の参加者P0の代わりにΛ1,Λ2,Λ3の巡回置換σ0の適用後の値を計算して、その値を第0の参加者P0に送信する。
送信者{P1,P2}:α3+σ0(Λ3)
送信者{P2,P3}:α1+σ0(Λ1)
送信者{P1,P3}:α2+σ0(Λ2)
ただし、αi=(αi,0,αi,1,...,αi,j,...,αi,N-1)(i=1,2,3)は、α0,j+α1,j+α2,j+α3,j=0 mod L(i=0,1,...,N-1)を満たす、送信者のみが知るキーと疑似ランダム関数で計算できるマスクである。
【0057】
上記構成から解るように、第0の参加者P0は同じ値(Λ1,Λ2,Λ3の巡回置換σ0の適用後の値にマスクをしたもの)を2つ受信する。そこで、第0の参加者P0は、複数の巡回置換の値の等号判定をして不正検知を行う。
【0058】
具体的には、参加者P0は同じであるはずの値が異なっている場合、参加者の中に紛れた不正者が値を改ざんしたものとして、処理を停止する。なお、例えば参加者P1と参加者P2は、同じ値を参加者P0に送ることになるが、例えば一方の参加者P1は値そのものではなく、ハッシュ値を送るものとしてもよい。そして、参加者P0は、参加者P2から受信した値をハッシュ値に変換してから、参加者P1から受信したハッシュ値と等号判定をしてもよい。このようにハッシュ値を送信すると通信量を抑えることができる。
【0059】
第0の参加者P0以外の第1~第3の参加者Pi(i=1,2,3)は、第1~第3の参加者Pi(i=1,2,3)で共有された巡回置換σ0と、自己が所持しているサブシェアを用いて巡回置換σ0を適用後のシェアを各自で計算することができるので、最終的に巡回置換σ0を適用後のシェアは以下のように構成できる。
【0060】
P0:[σ0(V)]L,0=(α1+σ0(Λ1),α2+σ0(Λ2),α3+σ0(Λ3))
P1:[σ0(V)]L,1=(α0+σ0(M),α2+σ0(Λ2),α3+σ0(Λ3))
P2:[σ0(V)]L,2=(α0+σ0(M),α1+σ0(Λ1),α3+σ0(Λ3))
P3:[σ0(V)]L,3=(α0+σ0(M),α1+σ0(Λ1),α2+σ0(Λ2))
【0061】
なお、第1~第3の参加者Pi(i=1,2,3)で共有された巡回置換σ0は、第1~第3の参加者Pi(i=1,2,3)で共有されたキーと疑似ランダム関数を用いて生成することができる。すなわち、第1~第3の参加者Pi(i=1,2,3)で共有されたキーと疑似ランダム関数を用いて生成する疑似乱数を、巡回置換σ0のシフト量R0とすることで、第1~第3の参加者Pi(i=1,2,3)で共有された巡回置換σ0を構成することができる。
【0062】
また、巡回置換σ0は、シフト量R0で特徴付けることもできる。巡回置換σ0を特徴付けるシフト量R0のシェア[R0]Nは以下のように構成することができる。
参加者P0のシェア:[R0]N,0=(0,0,0)
参加者P1のシェア:[R0]N,1=(R0,0,0)
参加者P2のシェア:[R0]N,2=(R0,0,0)
参加者P3のシェア:[R0]N,3=(R0,0,0)
【0063】
上記のように構成されたシフト量R0のシェア[R0]Nは、参加者P0がシフト量R0を知ることができず、第1~第3の参加者Pi(i=1,2,3)はシフト量R0を知ることができるので、第0の参加者P0は巡回置換を追跡不可能であるが、第1~第3の参加者Pi(i=1,2,3)にとっては追跡可能であるという性質を維持している。
【0064】
上記構成の巡回置換σ0は、第0の参加者P0にとっては追跡不可能であるが、第1~第3の参加者Pi(i=1,2,3)にとっては追跡可能である巡回置換の構成例であるが、第0の参加者P0の代わりに第1~第3の参加者Pi(i=1,2,3)に同じことを考えることができる。すると、それぞれ第1~第3の参加者Pi(i=1,2,3)にとっては追跡不可能であるが、他の参加者にとっては追跡可能な巡回置換σi(i=1,2,3)を構成することができる。
【0065】
上記のように構成された巡回置換σi(i=0,1,2,3)は、各参加者Pi(i=0,1,2,3)が追跡不可能であるので、これら巡回置換σi(i=0,1,2,3)を合成すると、σ=σ0σ1σ2σ3は誰も追跡不可能になる。すなわち、参加者Pi(i=0,1,2,3)の全てが追跡不可能なランダム巡回置換が構成された。
【0066】
上記のような性質のランダム巡回置換σのシフト量は、R
0+R
1+R
2+R
3で計算することができることは、
図3を参照しながら既に説明している。また、参照したいインデックスがhである場合、ランダム巡回置換を適用後の参照すべきインデックスはh’=h+R
0+R
1+R
2+R
3となる。そして、このような性質のランダム巡回置換σでは、ランダム巡回置換を適用後の参照すべきインデックスh’を計算することが可能であるが、元のインデックスhは秘匿された状態を維持することができる。
【0067】
(秘密計算方法)
図6は、第2の実施形態にかかる秘密計算方法の手順の概略を示すフローチャートである。
図6に示される秘密計算方法の手順は、説明を容易にするための秘密計算の手順の典型例に過ぎず、実際の秘密計算方法では、一部のステップの順序を変えて実施したり、一部のステップを繰り返したりするなどの変更をすることができる。
【0068】
図6に示されるように、第2の実施形態にかかる秘密計算方法は、ローカル巡回置換ステップ(ステップS21)と第1の比較検証ステップ(ステップS22)と置換合成ステップ(ステップS23)と配列シャッフルステップ(ステップS24)とインデックス計算ステップ(ステップS25)と第2の比較検証ステップ(ステップS26)と配列選択ステップ(ステップS27)とを有している。
【0069】
ローカル巡回置換ステップ(ステップS21)では、第0~第3の秘密計算サーバ装置210i(i=0,1,2,3)のうち1台以外の秘密計算サーバ装置で共有された巡回置換を用いて、当該他の1台の秘密計算サーバ装置における巡回置換の値を計算する。
【0070】
第1の比較検証ステップ(ステップS22)では、第0~第3の秘密計算サーバ装置210i(i=0,1,2,3)のうち自己以外の秘密計算サーバ装置が計算した複数の巡回置換の値の等号判定をして不正検知を行う。具体的には、受信した複数の巡回置換の値が等しい場合(ステップS22;Y)は処理を継続し、受信した複数の巡回置換の値が異なる場合(ステップS22;N)は参加者の中に紛れた不正者が値を改ざんしたものとして、処理を停止する。
【0071】
置換合成ステップ(ステップS23)では、ローカル巡回置換ステップ(ステップS21)で構成された巡回置換を合成することで、第0~第3の秘密計算サーバ装置210i(i=0,1,2,3)の全てが追跡不可能なランダム巡回置換を構成する。
【0072】
配列シャッフルステップ(ステップS24)では、参照対象となる配列のシェアに対して上記ランダム巡回置換を適用する。
【0073】
インデックス計算ステップ(ステップS25)では、入力されたインデックスを表すシェアに、ローカル巡回置換部によって構成された巡回置換のシフト量のシェアを加算することで、ランダム巡回置換後のインデックスを表すシェアを計算する。この計算原理については、上述したとおりである。
【0074】
第2の比較検証ステップ(ステップS26)では、ランダム巡回置換後のインデックスを表すシェアを復元する際に、自己が所有していないシェアを他の秘密計算サーバ装置から受信した複数のインデックスのシェアに対して等号判定をして不正検知を行う。インデックス計算ステップ(ステップS25)におけるランダム巡回置換後のインデックスを表すシェアの計算は秘密計算として行われる。したがって、インデックスを表すシェアを復元する際には、自己が所有していないシェアを他の秘密計算サーバ装置から受信することになる。つまり、この時に紛れ込んだ不正者によって値が改ざんされる可能性があり、第2の比較検証ステップ(ステップS26)では、受信した複数のインデックスのシェアに対して等号判定をして不正検知を行う。具体的には、受信した複数の巡回置換の値が等しい場合(ステップS26;Y)は処理を継続し、受信した複数の巡回置換の値が異なる場合(ステップS26;N)は参加者の中に紛れた不正者が値を改ざんしたものとして、処理を停止する。
【0075】
配列選択ステップ(ステップS27)では、復元されたランダム巡回置換後のインデックスを用いて、ランダム巡回置換を適用した後の配列のシェアから、復元したインデックスに対応したシェアを選択する。
【0076】
以上のように第2の実施形態にかかる秘密計算システムおよび秘密計算方法は、定数ラウンドの通信コストの配列参照プロトコルでありながら不正検知をし、改ざんが行われた場合は処理を停止することができる。すなわち、第2の実施形態にかかる秘密計算システムおよび秘密計算方法は、配列参照プロトコルにおいて通信コストの低さと安全性の高さを両立することに寄与することが可能である。
【0077】
[第3の実施形態]
以下、
図7を参照して、第3の実施形態に係る秘密計算システムについて説明する。
【0078】
図7は、第3の実施形態に係る秘密計算システムの機能構成例を示すブロック図である。
図7に示すように、第3の実施形態に係る秘密計算システム300は、第0~第4の秘密計算サーバ装置310
i(i=0,1,2,3,4)を備えている。第0~第4の秘密計算サーバ装置310
i(i=0,1,2,3,4)は、それぞれが互いにネットワーク経由で通信可能に接続されている。
【0079】
図7に示される第3の実施形態に係る秘密計算システム300は、インデックスを表すシェアの入力に対して、配列のシェアの中から前記インデックスに対応する配列の要素のシェアを参照することができる秘密計算システムであり、第0~第4の秘密計算サーバ装置310
i(i=0,1,2,3,4)のそれぞれは、独立した各参加者P
i(i=0,1,2,3,4)によって運営されている。さらに、第0~第4の秘密計算サーバ装置310
i(i=0,1,2,3,4)を備える秘密計算システム300においては、第0~第4の秘密計算サーバ装置310
i(i=0,1,2,3,4)のうち一部が不正者によって運営されている場合であっても、不正を検知し、不正があった場合に処理を停止することができる。
【0080】
〔秘密分散の方式〕
第3の実施形態に係る秘密計算システム300は、2-out-of-5複製型秘密分散の方式を採用することができる。具体的には、位数Lの剰余類環ZLの元v∈ZLの剰余類環ZL上のシェアを以下のように構成する。
[v]L=([v]L,0,[v]L,1,[v]L,2,[v]L,3,[v]L,4)
ここでv=v0+v1+v2+v3+v4 mod Lとする。
参加者Piのシェアは、[v]L,i=(vi,vi+1,vi+1,vi+3),ただし、x4+1=x0である。
【0081】
また、配列長Nの配列V=(v0,v1,...,vj,...,vN-1)に関するシェアは、vj=vj,0+vj,1+vj,2+vj,3+vj,4 mod Lとしたとき、
Vi=(v0,i,...,vN-1,i)(i=0,1,2,3,4)
とする。
【0082】
〔シャッフル〕
例えば、第1~第4の参加者Pi(i=1,2,3,4)で共有された巡回置換を用いて第0の参加者P0の巡回置換を計算する場合を考える。これは、第1~第4の参加者Pi(i=1,2,3,4)で共有された巡回置換σ0を用いて以下のように構成することができる。
【0083】
以下のように第1~第4の参加者Pi(i=1,2,3,4)は、第0の参加者P0に巡回置換σ0の適用後のVi=(v0,i,...,vN-1,i)(i=0,1,2,3,4)の値にマスクをして送信する。言い換えると、第1~第4の参加者Pi(i=1,2,3,4)は、第0の参加者P0の代わりにVi(i=0,1,2,3,4)の巡回置換σ0の適用後の値を計算して、その値を第0の参加者P0に送信する。
送信者{P2,P3,P4}:α0+σ0(V0)
送信者{P1,P3,P4}:α1+σ0(V1)
送信者{P1,P2,P4}:α2+σ0(V2)
送信者{P1,P2,P3}:α3+σ0(V3)
ただし、αi=(αi,0,αi,1,...,αi,j,...,αi,N-1)(i=1,2,3,4)は、α0,j+α1,j+α2,j+α3,j=0 mod L(i=0,1,...,N-1)を満たす、送信者のみが知るキーと疑似ランダム関数で計算できるマスクである。
【0084】
上記構成から解るように、第0の参加者P0は同じ値(Vi(i=0,1,2,3,4)の巡回置換σ0の適用後の値にマスクをしたもの)を3つ受信する。そこで、第0の参加者P0は、複数の巡回置換の値のうち多数派が一致する値を選択し処理を継続する。つまり、第0の参加者P0は、たとえ改ざんが行われていても正しい値を選択し処理を継続することができる。
【0085】
具体的には、参加者P0は受信した3つの値のうち少なくとも2つが一致するものを正しい値として選択する。つまり、たとえ改ざんが行われていても、受信した3つの値のうち他の2つは同じ値であるので、正しい値を選択することができる。なお、例えば参加者P1と参加者P2と参加者P3は、同じ値を参加者P0に送ることになるが、例えば一方の参加者P1と参加者P2は値そのものではなく、ハッシュ値を送るものとしてもよい。そして、参加者P0は、参加者P3から受信した値をハッシュ値に変換してから、参加者P1と参加者P2から受信したハッシュ値と等号判定をしてもよい。このようにハッシュ値を送信すると通信量を抑えることができる。
【0086】
第0の参加者P0以外の第1~第4の参加者Pi(i=1,2,3,4)は、第1~第4の参加者Pi(i=1,2,3,4)で共有された巡回置換σ0と、自己が所持しているサブシェアを用いて巡回置換σ0の適用後のシェアを各自で計算することができるので、最終的に巡回置換σ0を適用後のシェアは以下のように構成できる。
Pi:[σ0(V)]L,i=(αi+σ0(Vi),αi+1+σ0(Vi+1),αi+2+σ0(Vi+2),αi+3+σ0(Vi+3))
【0087】
なお、第1~第4の参加者Pi(i=1,2,3,4)で共有された巡回置換σ0は、第1~第4の参加者Pi(i=1,2,3,4)で共有されたキーと疑似ランダム関数を用いて生成することができる。すなわち、第1~第4の参加者Pi(i=1,2,3,4)で共有されたキーと疑似ランダム関数を用いて生成する疑似乱数を、巡回置換σ0のシフト量R0とすることで、第1~第4の参加者Pi(i=1,2,3,4)で共有された巡回置換σ0を構成することができる。
【0088】
上記構成の巡回置換σ0は、第0の参加者P0にとっては追跡不可能であるが、第1~第4の参加者Pi(i=1,2,3,4)にとっては追跡可能である巡回置換の構成例であるが、第0の参加者P0の代わりに第1~第4の参加者Pi(i=1,2,3,4)に同じことを考えることができる。すると、それぞれ第1~第4の参加者Pi(i=1,2,3,4)にとっては追跡不可能であるが、他の参加者にとっては追跡可能な巡回置換σi(i=1,2,3,4)を構成することができる。
【0089】
上記のように構成された巡回置換σi(i=0,1,2,3,4)は、各参加者Pi(i=0,1,2,3,4)が追跡不可能であるので、これら巡回置換σi(i=0,1,2,3,4)を合成すると、σ=σ0σ1σ2σ3σ4は誰も追跡不可能になる。すなわち、参加者Pi(i=0,1,2,3,4)の全てが追跡不可能なランダム巡回置換が構成された。
【0090】
上記のような性質のランダム巡回置換σのシフト量は、R
0+R
1+R
2+R
3+R
4で計算することができることは、
図3を参照しながら既に説明している。また、参照したいインデックスがhである場合、ランダム巡回置換を適用後の参照すべきインデックスはh’=h+R
0+R
1+R
2+R
3+R
4となる。そして、このような性質のランダム巡回置換σでは、ランダム巡回置換を適用後の参照すべきインデックスh’を計算することが可能であるが、元のインデックスhは秘匿された状態を維持することができる。
【0091】
(秘密計算方法)
図8は、第3の実施形態にかかる秘密計算方法の手順の概略を示すフローチャートである。
図8に示される秘密計算方法の手順は、説明を容易にするための秘密計算の手順の典型例に過ぎず、実際の秘密計算方法では、一部のステップの順序を変えて実施したり、一部のステップを繰り返したりするなどの変更をすることができる。
【0092】
図8に示されるように、第3の実施形態にかかる秘密計算方法は、ローカル巡回置換ステップ(ステップS31)と第1の比較検証ステップ(ステップS32)と置換合成ステップ(ステップS33)と配列シャッフルステップ(ステップS34)とインデックス計算ステップ(ステップS35)と第2の比較検証ステップ(ステップS36)と配列選択ステップ(ステップS37)とを有している。
【0093】
ローカル巡回置換ステップ(ステップS31)では、第0~第4の秘密計算サーバ装置310i(i=0,1,2,3,4)のうち1台以外の秘密計算サーバ装置で共有された巡回置換を用いて、当該他の1台の秘密計算サーバ装置における巡回置換の値を計算する。
【0094】
第1の比較検証ステップ(ステップS32)では、第0~第4の秘密計算サーバ装置310i(i=0,1,2,3,4)のうち自己以外の秘密計算サーバ装置が計算した複数の巡回置換の値の等号判定をして不正検知を行う。具体的には、受信した3つの値のうち少なくとも2つが一致するものを正しい値として選択し、たとえ改ざんが行われていても、正しい値を選択して処理を継続する。
【0095】
置換合成ステップ(ステップS33)では、ローカル巡回置換ステップ(ステップS31)で構成された巡回置換を合成することで、第0~第4の秘密計算サーバ装置310i(i=0,1,2,3,4)の全てが追跡不可能なランダム巡回置換を構成する。
【0096】
配列シャッフルステップ(ステップS34)では、参照対象となる配列のシェアに対して上記ランダム巡回置換を適用する。
【0097】
インデックス計算ステップ(ステップS35)では、入力されたインデックスを表すシェアに、ローカル巡回置換部によって構成された巡回置換のシフト量のシェアを加算することで、ランダム巡回置換後のインデックスを表すシェアを計算する。この計算原理については、上述したとおりである。
【0098】
第2の比較検証ステップ(ステップS36)では、ランダム巡回置換後のインデックスを表すシェアを復元する際に、自己が所有していないシェアを他の秘密計算サーバ装置から受信した複数のインデックスのシェアに対して等号判定をして不正検知を行う。インデックス計算ステップ(ステップS35)におけるランダム巡回置換後のインデックスを表すシェアの計算は秘密計算として行われる。したがって、インデックスを表すシェアを復元する際には、自己が所有していないシェアを他の秘密計算サーバ装置から受信することになる。つまり、この時に紛れ込んだ不正者によって値が改ざんされる可能性があり、第2の比較検証ステップ(ステップS36)では、受信した複数のインデックスのシェアに対して等号判定をして不正検知を行う。具体的には、受信した3つの値のうち少なくとも2つが一致するものを正しい値として選択し、たとえ改ざんが行われていても、正しい値を選択して処理を継続する。
【0099】
配列選択ステップ(ステップS37)では、復元されたランダム巡回置換後のインデックスを用いて、ランダム巡回置換を適用した後の配列のシェアから、復元したインデックスに対応したシェアを選択する。
【0100】
以上のように第3の実施形態にかかる秘密計算システムおよび秘密計算方法は、定数ラウンドの通信コストの配列参照プロトコルでありながら不正検知をし、たとえ改ざんが行われていても、正しい値を選択して処理を継続する。すなわち、第3の実施形態にかかる秘密計算システムおよび秘密計算方法は、配列参照プロトコルにおいて通信コストの低さと安全性の高さを両立することに寄与することが可能である。
【0101】
[ハードウェア構成例]
図9は、秘密計算サーバ装置のハードウェア構成例を示す図である。すなわち、
図9に示すハードウェア構成例は、秘密計算サーバ装置110
i,210
i,310
iのハードウェア構成例である。
図9に示すハードウェア構成を採用した情報処理装置(コンピュータ)は、上記説明した秘密計算方法をプログラムとして実行することで、秘密計算サーバ装置110
i,210
i,310
iの各機能を実現することを可能にする。
【0102】
ただし、
図9に示すハードウェア構成例は、秘密計算サーバ装置110
i,210
i,310
iの各機能を実現するハードウェア構成の一例であり、秘密計算サーバ装置110
i,210
i,310
iのハードウェア構成を限定する趣旨ではない。秘密計算サーバ装置110
i,210
i,310
iは、
図9に示さないハードウェアを含むことができる。
【0103】
図9に示すように、秘密計算サーバ装置110
i,210
i,310
iが採用し得るハードウェア構成10は、例えば内部バスにより相互に接続される、CPU(Central Processing Unit)11、主記憶装置12、補助記憶装置13、およびIF(Interface)部14を備える。
【0104】
CPU11は、秘密計算サーバ装置110i,210i,310iが実行する秘密計算プログラムに含まれる各指令を実行する。主記憶装置12は、例えばRAM(Random Access Memory)であり、秘密計算サーバ装置110i,210i,310iが実行する秘密計算プログラムなどの各種プログラムなどをCPU11が処理するために一時記憶する。
【0105】
補助記憶装置13は、例えば、HDD(Hard Disk Drive)であり、秘密計算サーバ装置110i,210i,310iが実行する秘密計算プログラムなどの各種プログラムなどを中長期的に記憶しておくことが可能である。秘密計算プログラムなどの各種プログラムは、非一時的なコンピュータ可読記録媒体(non-transitory computer-readable storage medium)に記録されたプログラム製品として提供することができる。補助記憶装置13は、非一時的なコンピュータ可読記録媒体に記録された秘密計算プログラムなどの各種プログラムを中長期的に記憶することに利用することが可能である。IF部14は、秘密計算サーバ装置110i,210i,310i間の入出力に関するインターフェイスを提供する。
【0106】
上記のようなハードウェア構成10を採用した情報処理装置は、先述した秘密計算方法をプログラムとして実行することで、秘密計算サーバ装置110i,210i,310iの各機能を実現する。
【0107】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
[付記1]
相互にネットワークで接続した少なくとも4台以上の秘密計算サーバ装置を備え、インデックスを表すシェアの入力に対して、配列のシェアの中から前記インデックスに対応する配列の要素のシェアを参照する秘密計算システムであって、
前記秘密計算サーバ装置のそれぞれが、
前記少なくとも4台以上の秘密計算サーバ装置のうち他の1台以外の秘密計算サーバ装置で共有された巡回置換を用いて、前記他の1台の秘密計算サーバ装置における巡回置換の値を計算するローカル巡回置換部と、
前記少なくとも4台以上の秘密計算サーバ装置のうち自己以外の秘密計算サーバ装置が計算した複数の巡回置換の値の等号判定をして不正検知を行う比較検証部と、
前記ローカル巡回置換部によって構成された前記巡回置換を合成することで、前記少なくとも4台以上の秘密計算サーバ装置の全てが追跡不可能なランダム巡回置換を構成する置換合成部と、
前記ランダム巡回置換を前記配列のシェアに対して適用する配列シャッフル部と、
前記入力されたインデックスを表すシェアに、前記ローカル巡回置換部によって構成された前記巡回置換のシフト量のシェアを加算することで、前記ランダム巡回置換後のインデックスを表すシェアを計算するインデックス計算部と、
前記ランダム巡回置換後のインデックスを表すシェアを復元し、前記ランダム巡回置換を適用した後の前記配列のシェアから、前記復元したインデックスに対応したシェアを選択する配列選択部と、
を有する秘密計算システム。
[付記2]
前記ランダム巡回置換後のインデックスを表すシェアを復元する際に、自己が所有していないシェアを他の秘密計算サーバ装置から受信した複数のインデックスのシェアに対して等号判定をして不正検知を行う第2の比較検証部を備える付記1に記載の秘密計算システム。
[付記3]
前記少なくとも4台以上の秘密計算サーバ装置のうち他の1台以外の秘密計算サーバ装置で共有された巡回置換は、前記少なくとも4台以上の秘密計算サーバ装置のうち他の1台以外の秘密計算サーバ装置で共有されたキーと疑似ランダム関数を用いて生成する、付記1または付記2に記載の秘密計算システム。
[付記4]
前記巡回置換のシフト量は、前記少なくとも4台以上の秘密計算サーバ装置のうち他の1台以外の秘密計算サーバ装置で共有されたキーと疑似ランダム関数を用いて生成する、付記3に記載の秘密計算システム。
[付記5]
前記秘密計算サーバ装置を4台備えた2-out-of-4複製型秘密分散方式であり、前記等号判定によって不正が検知された場合に処理を停止する、付記1から付記4のいずれか1つに記載の秘密計算システム。
[付記6]
前記秘密計算サーバ装置を5台備えた2-out-of-5複製型秘密分散方式であり、前記等号判定によって多数派が一致する値を選択し処理を継続する、付記1から付記4のいずれか1つに記載の秘密計算システム。
[付記7]
インデックスを表すシェアの入力に対して、配列のシェアの中から前記インデックスに対応する配列の要素のシェアを参照するために、相互にネットワークで接続した少なくとも4台以上の秘密計算サーバ装置の一つであって、
前記少なくとも4台以上の秘密計算サーバ装置のうち他の1台以外の秘密計算サーバ装置で共有された巡回置換を用いて、前記他の1台の秘密計算サーバ装置における巡回置換の値を計算するローカル巡回置換部と、
前記少なくとも4台以上の秘密計算サーバ装置のうち自己以外の秘密計算サーバ装置が計算した複数の巡回置換の値の等号判定をして不正検知を行う比較検証部と、
前記ローカル巡回置換部によって構成された前記巡回置換を合成することで、前記少なくとも4台以上の秘密計算サーバ装置の全てが追跡不可能なランダム巡回置換を構成する置換合成部と、
前記ランダム巡回置換を前記配列のシェアに対して適用する配列シャッフル部と、
前記入力されたインデックスを表すシェアに、前記ローカル巡回置換部によって構成された前記巡回置換のシフト量のシェアを加算することで、前記ランダム巡回置換後のインデックスを表すシェアを計算するインデックス計算部と、
前記ランダム巡回置換後のインデックスを表すシェアを復元し、前記ランダム巡回置換を適用した後の前記配列のシェアから、前記復元したインデックスに対応したシェアを選択する配列選択部と、
を有する秘密計算サーバ装置。
[付記8]
相互にネットワークで接続した少なくとも4台以上の秘密計算サーバ装置を備え、インデックスを表すシェアの入力に対して、配列のシェアの中から前記インデックスに対応する配列の要素のシェアを参照する秘密計算方法であって、
前記少なくとも4台以上の秘密計算サーバ装置のうち他の1台以外の秘密計算サーバ装置で共有された巡回置換を用いて、前記他の1台の秘密計算サーバ装置における巡回置換の値を計算するローカル巡回置換ステップと、
前記少なくとも4台以上の秘密計算サーバ装置のうち自己以外の秘密計算サーバ装置が計算した複数の巡回置換の値の等号判定をして不正検知を行う比較検証ステップと、
前記ローカル巡回置換ステップによって構成された前記巡回置換を合成することで、前記少なくとも4台以上の秘密計算サーバ装置の全てが追跡不可能なランダム巡回置換を構成する置換合成ステップと、
前記ランダム巡回置換を前記配列のシェアに対して適用する配列シャッフルステップと、
前記入力されたインデックスを表すシェアに、前記ローカル巡回置換ステップによって構成された前記巡回置換のシフト量のシェアを加算することで、前記ランダム巡回置換後のインデックスを表すシェアを計算するインデックス計算ステップと、
前記ランダム巡回置換後のインデックスを表すシェアを復元し、前記ランダム巡回置換を適用した後の前記配列のシェアから、前記復元したインデックスに対応したシェアを選択する配列選択ステップと、
を有する秘密計算方法。
[付記9]
前記ローカル巡回置換ステップと前記比較検証ステップと前記置換合成ステップと前記配列シャッフルステップとを前記インデックスを表すシェアの入力の前に行う、付記8に記載の秘密計算方法。
[付記10]
インデックスを表すシェアの入力に対して、配列のシェアの中から前記インデックスに対応する配列の要素のシェアを参照するために、相互にネットワークで接続した少なくとも4台以上の秘密計算サーバ装置に処理を実行させる秘密計算プログラムであって、
前記少なくとも4台以上の秘密計算サーバ装置のうち他の1台以外の秘密計算サーバ装置で共有された巡回置換を用いて、前記他の1台の秘密計算サーバ装置における巡回置換の値を計算するローカル巡回置換処理と、
前記少なくとも4台以上の秘密計算サーバ装置のうち自己以外の秘密計算サーバ装置が計算した複数の巡回置換の値の等号判定をして不正検知を行う比較検証処理と、
前記ローカル巡回置換処理によって構成された前記巡回置換を合成することで、前記少なくとも4台以上の秘密計算サーバ装置の全てが追跡不可能なランダム巡回置換を構成する置換合成処理と、
前記ランダム巡回置換を前記配列のシェアに対して適用する配列シャッフル処理と、
前記入力されたインデックスを表すシェアに、前記ローカル巡回置換処理によって構成された前記巡回置換のシフト量のシェアを加算することで、前記ランダム巡回置換後のインデックスを表すシェアを計算するインデックス計算処理と、
前記ランダム巡回置換後のインデックスを表すシェアを復元し、前記ランダム巡回置換を適用した後の前記配列のシェアから、前記復元したインデックスに対応したシェアを選択する配列選択処理と、
を有する秘密計算プログラム。
【0108】
なお、引用した上記の特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択(部分的削除を含む)が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。さらに、上記引用した文献の各開示事項は、必要に応じ、本発明の趣旨に則り、本発明の開示の一部として、その一部又は全部を、本書の記載事項と組み合わせて用いることも、本願の開示事項に含まれるものと、みなされる。
【符号の説明】
【0109】
100,200,300 秘密計算システム
110i,210i,310i 秘密計算サーバ装置
111 ローカル巡回置換部
112 比較検証部
113 置換合成部
114 配列シャッフル部
115 インデックス計算部
116 配列選択部
10 ハードウェア構成
11 CPU(Central Processing Unit)
12 主記憶装置
13 補助記憶装置
14 IF(Interface)部