(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-05
(45)【発行日】2024-11-13
(54)【発明の名称】秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム
(51)【国際特許分類】
G09C 1/00 20060101AFI20241106BHJP
【FI】
G09C1/00 650Z
(21)【出願番号】P 2022575036
(86)(22)【出願日】2021-01-18
(86)【国際出願番号】 JP2021001468
(87)【国際公開番号】W WO2022153532
(87)【国際公開日】2022-07-21
【審査請求日】2023-07-14
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100080816
【氏名又は名称】加藤 朝道
(74)【代理人】
【識別番号】100098648
【氏名又は名称】内田 潔人
(72)【発明者】
【氏名】土田 光
【審査官】児玉 崇晶
(56)【参考文献】
【文献】国際公開第2020/165932(WO,A1)
【文献】TSUCHIDA, Hikaru et al.,Client-Aided Bit-Composition Protocol with Guaranteed Output Delivery,2020 International Symposium on Information Theory and Its Applications(ISITA) [online],2020年10月27日,pp. 387-391,[検索日 2024.09.25]、インターネット <URL: https://ieeexplore.ieee.org/document/9366101>
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
相互にネットワークで接続した5台の秘密計算サーバ装置を備える秘密計算システムであって、
前記秘密計算サーバ装置のそれぞれが、
前記5台の秘密計算サーバ装置のうち4台の秘密計算サーバ装置によって共有されている共有置換を用いて、前記5台の秘密計算サーバ装置における他の1台の秘密計算サーバ装置におけるシェアの置換後の値を計算し、前記シェアの置換後の値を前記他の1台の秘密計算サーバ装置に送信するローカルシャッフル部と、
前記4台の秘密計算サーバ装置のうち少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの値を比較し、少なくとも2つ以上が同一であるものを正しい置換として採用する比較検証部と、
前記4台の秘密計算サーバ装置によって共有されている共有置換と前記比較検証部によって採用された置換とを用いて構成されたミニシャッフルを、前記5台の秘密計算サーバ装置のうち4台の秘密計算サーバ装置を選択する5つの組み合わせに関して合成するシャッフル合成部と、
を備える、秘密計算システム。
【請求項2】
前記ミニシャッフルは、前記4台の秘密計算サーバ装置が保持しているシードと前記5台の秘密計算サーバ装置が保持している識別子とを入力に決定的に生成され、かつ、前記5台の秘密計算サーバ装置に関する総和がゼロになる疑似乱数によってマスクされている請求項1に記載の秘密計算システム。
【請求項3】
前記共有置換は、前記4台の秘密計算サーバ装置によって共有されているシードを入力に決定的に生成される請求項1または請求項2に記載の秘密計算システム。
【請求項4】
前記比較検証部は、前記シェアの置換後の値のハッシュ値が同一であることを判断して、前記受信値が正しい値であることを判断する、請求項1から請求項3のいずれか1項に記載の秘密計算システム。
【請求項5】
相互にネットワークで接続した5台の秘密計算サーバ装置の一つであって、
前記5台の秘密計算サーバ装置のうち4台の秘密計算サーバ装置によって共有されている共有置換を用いて、前記5台の秘密計算サーバ装置における他の1台の秘密計算サーバ装置におけるシェアの置換後の値を計算し、前記シェアの置換後の値を前記他の1台の秘密計算サーバ装置に送信するローカルシャッフル部と、
前記4台の秘密計算サーバ装置のうち少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの値を比較し、少なくとも2つ以上が同一であるものを正しい置換として採用する比較検証部と、
前記4台の秘密計算サーバ装置によって共有されている共有置換と前記比較検証部によって採用された置換とを用いて構成されたミニシャッフルを、前記5台の秘密計算サーバ装置のうち4台の秘密計算サーバ装置を選択する5つの組み合わせに関して合成するシャッフル合成部と、
を備える、秘密計算サーバ装置。
【請求項6】
相互にネットワークで接続した5台の秘密計算サーバ装置を用いる秘密計算方法であって、
前記秘密計算サーバ装置のそれぞれが、
前記5台の秘密計算サーバ装置のうち4台の秘密計算サーバ装置によって共有されている共有置換を用いて、前記5台の秘密計算サーバ装置における他の1台の秘密計算サーバ装置におけるシェアの置換後の値を計算し、
前記シェアの置換後の値を前記他の1台の秘密計算サーバ装置に送信し、
前記4台の秘密計算サーバ装置のうち少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの値を比較し、
少なくとも2つ以上が同一であるものを正しい置換として採用し、
前記4台の秘密計算サーバ装置によって共有されている共有置換と前記採用された置換とを用いて構成されたミニシャッフルを、前記5台の秘密計算サーバ装置のうち4台の秘密計算サーバ装置を選択する5つの組み合わせに関して合成する、秘密計算方法。
【請求項7】
前記ミニシャッフルは、前記4台の秘密計算サーバ装置が保持しているシードと前記5台の秘密計算サーバ装置が保持している識別子とを入力に決定的に生成され、かつ、前記5台の秘密計算サーバ装置に関する総和がゼロになる疑似乱数によってマスクされている請求項6に記載の秘密計算方法。
【請求項8】
前記共有置換は、前記4台の秘密計算サーバ装置によって共有されているシードを入力に決定的に生成される請求項6または請求項7に記載の秘密計算方法。
【請求項9】
前記シェアの置換後の値が正しい値であることを判断する際には、前記シェアの置換後の値のハッシュ値が同一であることを用いて判断する、請求項6から請求項8のいずれか1項に記載の秘密計算方法。
【請求項10】
相互にネットワークで接続した5台以上の秘密計算サーバ装置に秘密計算をさせる秘密計算プログラムであって、
前記5台の秘密計算サーバ装置のうち4台の秘密計算サーバ装置によって共有されている共有置換を用いて、前記5台の秘密計算サーバ装置における他の1台の秘密計算サーバ装置におけるシェアの置換後の値を計算し、
前記シェアの置換後の値を前記他の1台の秘密計算サーバ装置に送信し、
前記4台の秘密計算サーバ装置のうち少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの値を比較し、
少なくとも2つ以上が同一であるものを正しい置換として採用し、
前記4台の秘密計算サーバ装置によって共有されている共有置換と前記採用された置換とを用いて構成されたミニシャッフルを、前記5台の秘密計算サーバ装置のうち4台の秘密計算サーバ装置を選択する5つの組み合わせに関して合成する、秘密計算プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラムに関するものである。
【背景技術】
【0002】
近年、秘密計算と呼ばれる技術の研究開発が盛んに行われている。秘密計算は、第三者に対して計算過程とその結果を秘密にしつつ所定の処理を実行する技術の一つである。秘密計算における代表的な技術の一つとして、マルチパーティ計算技術が挙げられる。マルチパーティ計算技術では、秘密にするデータを複数のサーバ(秘密計算サーバ装置)に分散配置し、秘密にした状態を維持しながら当該データの任意の演算を実行する。なお、各秘密計算サーバ装置に分散配置したデータをシェアと呼ぶ。以下、特に断りがない限り、「秘密計算」という語を用いた場合は、マルチパーティ計算技術を意味するものとする。
【0003】
このような秘密計算には、四則演算だけではなく、特定用途の計算プロトコルも実装することが一般的である。その特定用途の計算プロトコルの一つとして、シャッフルプロトコルがある。秘密計算のプロトコルの中にシャッフルプロトコルがあると、例えばシェアのソートを効率よく行うことができる。
【0004】
ソートとは、シェアとして秘密にされた値の大小比較に基づいて、シェアを再配置する処理のことであるが、このとき大小比較の結果も秘密にする必要がある。例えば、配列番号iのシェアの値と配置場所jのシェアの値を比較した結果の情報は、間接的に配列番号i,jのシェアの値の情報を含んでおり、この情報が漏洩すると安全性の問題が生じるからである。そこで、大小比較の結果も秘密を維持したままソートを実行する必要があるが、大小比較の結果の秘密を維持したまま計算を行うことによって効率が悪い(通信コストが大きい)。
【0005】
一方、ソートを行う前にシャッフルを行うと、配列番号とシェアの値との関係が失われるので、大小比較の結果を秘密にする必要がなくなる。すると、大小比較の結果の秘密を維持していたが故の非効率な計算を行う必要もなくなり、ソートを実行する効率も向上する。このように、秘密計算のプロトコルの中にシャッフルプロトコルを実装することには大きなメリットが存在している。
【先行技術文献】
【非特許文献】
【0006】
【文献】Byali, M., Chaudhari, H., Patra, A., & Suresh, A. (2020). FLASH: fast and robust framework for privacy-preserving machine learning. Proceedings on Privacy Enhancing Technologies, 2020(2), 459-480.
【発明の概要】
【発明が解決しようとする課題】
【0007】
なお、上記先行技術文献の各開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者らによってなされたものである。
【0008】
ところで、一般に秘密計算と呼ばれる技術の中にも、達成されている安全性の程度には高低がある。例えば、秘密計算を行うマルチパーティの参加者の中に不正者が紛れたとする。その場合に、不正者の存在を検知し処理を中断することができる秘密計算の技術と、たとえ不正者が存在しても処理を中断することなく正しい計算結果を得ることができる秘密計算の技術とでは、後者の方が前者よりも安全性が高い。そして、後者の安全性を満たす秘密計算はGuaranteed Output Delivery (GOD)と呼ばれ、これを実現する秘密計算の例も知られている(例えば、非特許文献1参照)。
【0009】
また、秘密計算における安全性の評価には、達成できる安全性の効果だけではなく、前提条件も重要な意味を持つ。代表的な前提条件としてハッシュ関数のランダムオラクルモデルないしランダムオラクル仮定がある。
【0010】
ハッシュ関数は、入力に対し一意の出力を返す関数であるが、出力から入力を推定することが困難であるように構成されている。ここで、出力から入力を推定することが困難であるとはいうものの、絶対に不可能であるかというとその保証はできない。そこで、安全性の評価に際し、用いられているハッシュ関数が脆弱性を持たないという前提で安全性が評価される。この前提の安全性を「ランダムオラクルモデルにおいて安全」あるいは「ランダムオラクル仮定のもとで安全」という。そして、非特許文献1における秘密計算の安全性は「ランダムオラクルモデルにおいて安全」である。
【0011】
一方、「ランダムオラクルモデルにおいて安全」の対義語は、「標準モデルにおいて安全」である。すなわち、ハッシュ関数の出力から入力を推定することができたとしても、そのこと自体が秘密計算の脆弱性とはならないことをいう。当然のことながら、達成できる安全性が同じであれば、ランダムオラクルモデルにおける安全性よりも、標準モデルにおける安全性の方が高度な安全性が達成できることになる。したがって、シャッフルプロトコルにおいても標準モデルにおいてGuaranteed Output Delivery (GOD)を達成することが望ましいことになる。
【0012】
本発明の目的は、上述した課題を鑑み、標準モデルにおいてGuaranteed Output Delivery (GOD)を達成するビット変換に寄与する秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラムを提供することである。
【課題を解決するための手段】
【0013】
本発明の第1の視点では、相互にネットワークで接続した5台の秘密計算サーバ装置を備える秘密計算システムであって、前記秘密計算サーバ装置のそれぞれが、前記5台の秘密計算サーバ装置のうち4台の秘密計算サーバ装置によって共有されている共有置換を用いて、前記5台の秘密計算サーバ装置における他の1台の秘密計算サーバ装置におけるシェアの置換後の値を計算し、前記シェアの置換後の値を前記他の1台の秘密計算サーバ装置に送信するローカルシャッフル部と、前記4台の秘密計算サーバ装置のうち少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの値を比較し、少なくとも2つ以上が同一であるものを正しい置換として採用する比較検証部と、前記4台の秘密計算サーバ装置によって共有されている共有置換と前記比較検証部によって採用された置換とを用いて構成されたミニシャッフルを、前記5台の秘密計算サーバ装置のうち4台の秘密計算サーバ装置を選択する5つの組み合わせに関して合成するシャッフル合成部と、を備える、秘密計算システムが提供される。
【0014】
本発明の第2の視点では、相互にネットワークで接続した5台の秘密計算サーバ装置の一つであって、前記5台の秘密計算サーバ装置のうち4台の秘密計算サーバ装置によって共有されている共有置換を用いて、前記5台の秘密計算サーバ装置における他の1台の秘密計算サーバ装置におけるシェアの置換後の値を計算し、前記シェアの置換後の値を前記他の1台の秘密計算サーバ装置に送信するローカルシャッフル部と、前記4台の秘密計算サーバ装置のうち少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの値を比較し、少なくとも2つ以上が同一であるものを正しい置換として採用する比較検証部と、前記4台の秘密計算サーバ装置によって共有されている共有置換と前記比較検証部によって採用された置換とを用いて構成されたミニシャッフルを、前記5台の秘密計算サーバ装置のうち4台の秘密計算サーバ装置を選択する5つの組み合わせに関して合成するシャッフル合成部と、を備える、秘密計算サーバ装置が提供される。
【0015】
本発明の第3の視点では、相互にネットワークで接続した5台の秘密計算サーバ装置を用いる秘密計算方法であって、前記秘密計算サーバ装置のそれぞれが、前記5台の秘密計算サーバ装置のうち4台の秘密計算サーバ装置によって共有されている共有置換を用いて、前記5台の秘密計算サーバ装置における他の1台の秘密計算サーバ装置におけるシェアの置換後の値を計算し、前記シェアの置換後の値を前記他の1台の秘密計算サーバ装置に送信し、前記4台の秘密計算サーバ装置のうち少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの値を比較し、少なくとも2つ以上が同一であるものを正しい置換として採用し、前記4台の秘密計算サーバ装置によって共有されている共有置換と前記採用された置換とを用いて構成されたミニシャッフルを、前記5台の秘密計算サーバ装置のうち4台の秘密計算サーバ装置を選択する5つの組み合わせに関して合成する、秘密計算方法が提供される。
【0016】
本発明の第4の視点では、相互にネットワークで接続した5台以上の秘密計算サーバ装置に秘密計算をさせる秘密計算プログラムであって、前記5台の秘密計算サーバ装置のうち4台の秘密計算サーバ装置によって共有されている共有置換を用いて、前記5台の秘密計算サーバ装置における他の1台の秘密計算サーバ装置におけるシェアの置換後の値を計算し、前記シェアの置換後の値を前記他の1台の秘密計算サーバ装置に送信し、前記4台の秘密計算サーバ装置のうち少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの値を比較し、少なくとも2つ以上が同一であるものを正しい置換として採用し、前記4台の秘密計算サーバ装置によって共有されている共有置換と前記採用された置換とを用いて構成されたミニシャッフルを、前記5台の秘密計算サーバ装置のうち4台の秘密計算サーバ装置を選択する5つの組み合わせに関して合成する、秘密計算プログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント(non-transient)なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【0017】
本発明の各視点によれば、標準モデルにおいてGuaranteed Output Delivery (GOD)を達成するビット変換に寄与する秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラムを提供することができる。
【図面の簡単な説明】
【0018】
【
図1】
図1は、第1の実施形態における秘密計算システムの機能構成例を示すブロック図である。
【
図2】
図2は、第1の実施形態における秘密計算サーバ装置の機能構成例を示すブロック図である。
【
図3】
図3は、秘密計算方法の手順の概略を示すフローチャートである。
【
図4】
図4は、第2の実施形態における秘密計算システムの機能構成例を示すブロック図である。
【
図5】
図5は、第2の実施形態における秘密計算サーバ装置の機能構成例を示すブロック図である。
【
図6】
図6は、秘密計算サーバ装置のハードウェア構成例を示す図である。
【発明を実施するための形態】
【0019】
以下、図面を参照しながら、本発明の実施形態について説明する。ただし、以下に説明する実施形態により本発明が限定されるものではない。また、各図面において、同一または対応する要素には適宜同一の符号を付している。さらに、図面は模式的なものであり、各要素の寸法の関係、各要素の比率などは、現実のものとは異なる場合があることに留意する必要がある。図面の相互間においても、互いの寸法の関係や比率が異なる部分が含まれている場合がある。
【0020】
[第1の実施形態]
以下、
図1、
図2を参照して、第1の実施形態に係る秘密計算システムおよび秘密計算サーバ装置について説明する。第1の実施形態は、本発明の基本的なコンセプトのみを説明する実施形態である。
【0021】
図1は、第1の実施形態における秘密計算システムの機能構成例を示すブロック図である。
図1に示すように、第1の実施形態による秘密計算システム100は、第1の秘密計算サーバ装置100_0と第2の秘密計算サーバ装置100_1と第3の秘密計算サーバ装置100_2と第4の秘密計算サーバ装置100_3と第5の秘密計算サーバ装置100_4とを備えている。第1の秘密計算サーバ装置100_0、第2の秘密計算サーバ装置100_1、第3の秘密計算サーバ装置100_2、第4の秘密計算サーバ装置100_3、および第5の秘密計算サーバ装置100_4は、それぞれが互いにネットワーク経由で通信可能に接続されている。
【0022】
第1~第5の秘密計算サーバ装置100_i(i=0,1,2,3,4)を備える秘密計算システム100においては、第1~第5の秘密計算サーバ装置100_i(i=0,1,2,3,4)の内のいずれかの秘密計算サーバ装置100_iが入力した値に対し、その入力や計算過程の値を知られることなく目的のシェアを計算し、その計算結果を第1~第5の秘密計算サーバ装置100_i(i=0,1,2,3,4)に分散して記憶することができる。
【0023】
また、第1~第5の秘密計算サーバ装置100_i(i=0,1,2,3,4)を備える秘密計算システム100においては、第1~第5の秘密計算サーバ装置100_i(i=0,1,2,3,4)に分散して記憶されているシェアに対し、その計算過程の値を知られることなく目的のシェアを計算し、その計算結果を第1~第5の秘密計算サーバ装置100_i(i=0,1,2,3,4)に分散して記憶することができる。
【0024】
なお、上記計算結果のシェアは、第1~第5の秘密計算サーバ装置100_0~100_4とシェアを送受信することで、復元してもよい。あるいは、第1~第5の秘密計算サーバ装置100_0~100_4ではない外部にシェアを送信することで、復号してもよい。
【0025】
さらに、第1~第5の秘密計算サーバ装置100_i(i=0,1,2,3,4)を備える秘密計算システム100においては、第1~第5の秘密計算サーバ装置100_i(i=0,1,2,3,4)のうち1つが不正者によって運営されている場合であっても、処理を停止することなく、正しい秘密計算を継続することができる。
【0026】
例えば上記のように、第1~第5の秘密計算サーバ装置100_i(i=0,1,2,3,4)のうち1つが不正者によって運営されている場合であっても、処理を停止することなく、正しい秘密計算を継続することができるシェアの構成として以下の構成を採用することができる。
【0027】
位数nの剰余類環Znの元x∈Znの剰余類環Zn上のシェア(以下、これを算術シェアということがある)を以下のように定義する。ただし、mは2以上の整数とし、n=2mであるとする。つまり、位数2の剰余類環Z2は、位数nの剰余類環Znと区別する。
【0028】
位数nの剰余類環Znの元x∈Znを
x = x0 + x1 + x2 + x3 + x4 mod n
との関係を満たすように分解し、各参加者 Pi (i = 0, 1, 2, 3, 4)が分散保持する[x]iは、以下のようにする。
[x]i = (xi, xi+1, xi+2, xi+3), ただし、x4+1 = x0
【0029】
一方、位数2の剰余類環Z2の元x∈Z2の剰余類環Z2上のシェア(以下、これを論理シェアということがある)は、上記剰余類環Zn上のシェアにおけるn=2の場合と同様の定義であるが、記法としては位数nの剰余類環Znと区別し、[x]Bのように表す。すなわち、具体的には以下のように定める。
【0030】
位数2の剰余類環Z2の元x∈Z2を以下のように分解する。なお、〇で囲まれた+は排他的論理和を表す。
【0031】
【0032】
そして、各参加者 Pi (i = 0, 1, 2, 3, 4)が分散保持する[x]B
iは、以下のようにする。
[x]B
i = (xi, xi+1, xi+2, xi+3), ただし、x4+1 = x0
【0033】
このように各参加者Pi (i = 0, 1, 2, 3, 4)が保持するシェア[x]0, [x]1, [x]2, [x]3, [x]4を定めると、各参加者Pi (i = 0, 1, 2, 3, 4)は、自己が保持するシェア[x]0, [x]1, [x]2, [x]3, [x]4からはxを復元することはできない。一方、参加者Pi (i = 0, 1, 2, 3, 4)のうち、すくなくとも2名が保持しているシェアを合わせるとxを復元することができるという秘密分散が実現する。なお、この秘密分散方式は、2-out-of-5複製型秘密分散(Replicated Secret Sharing Scheme)と呼ばれている。
【0034】
ここでシャッフルを利用する状況とは、上記のように構成したシェアの配列を各参加者が分散して保持している状況である。すなわち、配列長Mの配列の各成分xjを以下のようにシェアに分解し、各参加者 Pi (i = 0, 1, 2, 3, 4)が分散保持する。
【0035】
【0036】
ところで、この秘密分散方式の秘密計算では、xを復元する場合に限らず、配列における位置をシャッフルする場合でも、各参加者が、自己が保持していないサブシェアの値を他の参加者から直接ないし間接的に受信する状況が発生する。何故ならば、各参加者が秘密分散して保持しているシェアが示している値を維持しながら、配列における位置をシャッフルする必要があるからである。しかも、各参加者も自己が保持しているシェアが示している値を知ることなく、配列における位置の変更後でもシェアが示している値を維持している必要がある。
【0037】
そこで、ビット変換をする場合でも、各参加者が、自己が保持していないサブシェアの値を他の参加者から直接ないし間接的に受信する状況が発生するが、他の参加者の中に不正者が紛れたとすると、本来は受信したい値の代わりに別の値が送信されてくることが起こり得る。すると、誤った値に基づいて秘密計算を実行することになり、誤った計算結果を得ることになったり、そもそも計算自体を正常に実行することができなくなったりするのである。
【0038】
このような目的に対し、本実施形態の秘密計算システム100では、
図2に示すように、第1~第5の秘密計算サーバ装置100_i(i=0,1,2,3,4)が、ローカルシャッフル部101_iと比較検証部102_iとシャッフル合成部103_iを備える。
図2は、第1の実施形態における秘密計算サーバ装置の機能構成例を示すブロック図である。
【0039】
ローカルシャッフル部101_iは、第1~第5の秘密計算サーバ装置100_i(i=0,1,2,3,4)のうち4台の秘密計算サーバ装置によって共有されている共有置換を用いて、第1~第5の秘密計算サーバ装置100_i(i=0,1,2,3,4)における他の1台の秘密計算サーバ装置におけるシェアの置換後の値を計算し、そのシェアの置換後の値を他の1台の秘密計算サーバ装置に送信する。そして、比較検証部102_iは、4台の秘密計算サーバ装置のうち少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずのシェアの置換後の値を比較し、少なくとも2つ以上が同一であるものを正しい置換として採用する。シャッフル合成部103_iは、4台の秘密計算サーバ装置によって共有されている共有置換と比較検証部102_iによって採用された置換とを用いて構成されたミニシャッフルを、第1~第5の秘密計算サーバ装置100_i(i=0,1,2,3,4)のうち4台の秘密計算サーバ装置を選択する5つの組み合わせに関して合成する。
【0040】
このように、本実施形態の秘密計算システム100では、第1~第5の秘密計算サーバ装置100_i(i=0,1,2,3,4)のうち4台の秘密計算サーバ装置が自己の装置で完結する置換を用いて自己のサブシェアの位置を置換し、かつ、残り1台の秘密計算サーバ装置のための置換を代わりに行う。当該残り1台の秘密計算サーバ装置は、他の4台の秘密計算サーバ装置が置換を行ったサブシェアをこれら4台の秘密計算サーバ装置から受信するが、このとき、4台の秘密計算サーバ装置のうち少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずのシェアの置換後の値を比較し、少なくとも2つ以上が同一であるものを正しい置換として採用することで、第1~第5の秘密計算サーバ装置100_i(i=0,1,2,3,4)にミニシャッフルが構成される。
【0041】
ここで注意したいのは、上記4台の秘密計算サーバ装置にとっては自己の装置で完結する置換であるので、シェアの配列における位置がどのように置換されたのかを知っているが、残り1台の秘密計算サーバ装置にとっては置換した結果を受け取るので、置換されたのかを知らない。そこで、このように構成されたミニシャッフルを、第1~第5の秘密計算サーバ装置100_i(i=0,1,2,3,4)のうち4台の秘密計算サーバ装置を選択する5つの組み合わせに関してすべて合成すると、第1~第5の秘密計算サーバ装置100_i(i=0,1,2,3,4)のどれもが追跡することができない置換(シャッフル)が構成されることになる。
【0042】
なお、本実施形態を秘密計算方法として捉えると、以下のようになる。
図3は、秘密計算方法の手順の概略を示すフローチャートである。
【0043】
図3に示すように、本実施形態に係る秘密計算方法は、ローカルシャッフルステップ(S11)と比較検証ステップ(S12)とシャッフル合成ステップ(S13)とを有する。ローカルシャッフルステップ(S11)では、第1~第5の秘密計算サーバ装置100_i(i=0,1,2,3,4)のうち4台の秘密計算サーバ装置によって共有されている共有置換を用いて、第1~第5の秘密計算サーバ装置100_i(i=0,1,2,3,4)における他の1台の秘密計算サーバ装置におけるシェアの置換後の値を計算し、そのシェアの置換後の値を他の1台の秘密計算サーバ装置に送信する。そして、比較検証ステップ(S12)では、4台の秘密計算サーバ装置のうち少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずのシェアの置換後の値を比較し、少なくとも2つ以上が同一であるものを正しい置換として採用する。最後に、シャッフル合成ステップ(S13)では、4台の秘密計算サーバ装置によって共有されている共有置換と比較検証部102_iによって採用された置換とを用いて構成されたミニシャッフルを、第1~第5の秘密計算サーバ装置100_i(i=0,1,2,3,4)のうち4台の秘密計算サーバ装置を選択する5つの組み合わせに関して合成する。
【0044】
このように、本実施形態の秘密計算システム100および秘密計算方法は、少なくとも3人の他の参加者から同一となるはずの受信値を受信し、少なくとも2つ以上が同一である受信値を正しい値として採用することで、他の参加者の中に不正者が紛れたとしても正しい値を判別することができる。すなわち、不正者が紛れたとしても処理を停止することなく、正しい計算を得ることができるGuaranteed Output Delivery (GOD)が実現されている。また、上記処理では、そもそもハッシュ関数を用いていないので、標準モデルにおいてGuaranteed Output Delivery (GOD)が実現されている。
【0045】
以上説明した第1の実施形態は、本発明の基本的なコンセプトのみを説明する実施形態である。以下で説明する第2の実施形態は、上記説明したコンセプトを実用的な実施形態に適用したものである。
【0046】
[第2の実施形態]
以下、
図4および
図5を参照して、第2の実施形態に係る秘密計算システムおよび秘密計算サーバ装置について説明する。
【0047】
図4は、第2の実施形態における秘密計算システムの機能構成例を示すブロック図である。
図4に示すように、第2の実施形態による秘密計算システム200は、第1の秘密計算サーバ装置200_0と第2の秘密計算サーバ装置200_1と第3の秘密計算サーバ装置200_2と第4の秘密計算サーバ装置200_3と第5の秘密計算サーバ装置200_4とを備えている。第1の秘密計算サーバ装置200_0、第2の秘密計算サーバ装置200_1、第3の秘密計算サーバ装置200_2、第4の秘密計算サーバ装置200_3、および第5の秘密計算サーバ装置200_4は、それぞれが互いにネットワーク経由で通信可能に接続されている。
【0048】
第1~第5の秘密計算サーバ装置200_i(i=0,1,2,3,4)を備える秘密計算システム200においては、第1~第5の秘密計算サーバ装置200_i(i=0,1,2,3,4)の内のいずれかの秘密計算サーバ装置200_iが入力した値に対し、その入力や計算過程の値を知られることなく目的のシェアを計算し、その計算結果を第1~第5の秘密計算サーバ装置200_i(i=0,1,2,3,4)に分散して記憶することができる。
【0049】
さらに、第1~第5の秘密計算サーバ装置200_i(i=0,1,2,3,4)を備える秘密計算システム200においては、第1~第5の秘密計算サーバ装置200_i(i=0,1,2,3,4)のうち1つが不正者によって運営されている場合であっても、処理を停止することなく、正しい秘密計算を継続することができる。
【0050】
図5は、第2の実施形態における秘密計算サーバ装置の機能構成例を示すブロック図である。本実施形態の秘密計算システム200は、
図5に示すように、第1~第5の秘密計算サーバ装置200_i(i=0,1,2,3,4)が、ローカルシャッフル部201_iと比較検証部202_iとシャッフル合成部203_iを備える。
【0051】
ローカルシャッフル部201_iは、第1~第5の秘密計算サーバ装置200_i(i=0,1,2,3,4)のうち4台の秘密計算サーバ装置によって共有されている共有置換を用いて、第1~第5の秘密計算サーバ装置200_i(i=0,1,2,3,4)における他の1台の秘密計算サーバ装置におけるシェアの置換後の値を計算し、そのシェアの置換後の値を他の1台の秘密計算サーバ装置に送信する。そして、比較検証部202_iは、4台の秘密計算サーバ装置のうち少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずのシェアの置換後の値を比較し、少なくとも2つ以上が同一であるものを正しい置換として採用する。シャッフル合成部203_iは、4台の秘密計算サーバ装置によって共有されている共有置換と比較検証部202_iによって採用された置換とを用いて構成されたミニシャッフルを、第1~第5の秘密計算サーバ装置200_i(i=0,1,2,3,4)のうち4台の秘密計算サーバ装置を選択する5つの組み合わせに関して合成する。
【0052】
以下、本実施形態におけるビット変換の実施に用いられるビルディングブロックについて説明する。
【0053】
[疑似乱数の生成とシードの共有]
疑似ランダム関数Fnとシードおよび識別子の関係は次の通りである。疑似ランダム関数Fnは、セキュリティパラメータκに対して定められた2項演算である。
Fn:{0,1}κ×{0,1}κ→{0,1}n
一方、シードseedi∈{0,1}κ(i=0, 1, 2, 3, 4)は、各秘密計算サーバ装置200_iが適切に共有している値であり、識別子vid∈{0,1}κはカウンタなどの公開された値である。これらシードと識別子を入力として、疑似ランダム関数Fnは、決定的に疑似乱数を生成する。
【0054】
5つのシードseedi∈{0,1}κ(i=0, 1, 2, 3, 4)は、各秘密計算サーバ装置200_iが(seedi, seedi+1, seedi+2, seedi+3)を保持する。ただし、seed4+1 = seed0である。すなわち、各秘密計算サーバ装置200_iは、すべてのシードseediを保持するのではなく、秘密計算サーバ装置200_iは、シードseedi+4のみを保持していないという関係となっている。これらシードの共有は、例えば、各秘密計算サーバ装置200_iにおける事前の設定として管理者などが適切に設定することができる。
【0055】
[マスク作成]
ここでは、参加者Pi+4からは乱数に見えて除去できないが、残りの参加者Pi, Pi+1, Pi+2, Pi+3にとっては決定的に計算可能であるような、疑似乱数(Correlated Randomness)を作成し、これを後に説明する置換後のシェアを送信する際にマスクとして用いる。
【0056】
まず、参加者Pi+4がシードseedi+3を保持していないことに着目すると、疑似ランダム関数Fnの入力としてシードseedi+3を用いれば以下の疑似乱数は上記条件を満たす。すなわち、下記rkは、参加者Pi+4からは乱数に見えて除去できないが、残りの参加者Pi, Pi+1, Pi+2, Pi+3にとっては決定的に計算可能である。
rk = Fn(vidk, seedi+3)- Fn(vidk+1, seedi+3) mod n
【0057】
また、識別子vidkにおけるインデックスkをk=0からk=4まで変化させると、rkを5つ作成することが可能である。そこで、これらrkの組を以下のように定める。このように定めたr0, r1, r2, r3, r4がr0+r1+r2+r3+r4=0を満たすことは容易に確かめることができる。
(r0, r1, r2, r3, r4) = CR(i+4, {vidk}4
k=0, seedi+3)
【0058】
このように作成された疑似乱数r0, r1, r2, r3, r4は、参加者Pi+4からは乱数に見えて除去できないが、残りの参加者Pi, Pi+1, Pi+2, Pi+3にとっては決定的に計算可能である。一方、参加者Pi+4にとっても、各疑似乱数r0, r1, r2, r3, r4は除去できないが、すべての疑似乱数r0, r1, r2, r3, r4が揃うと総和は0であり除去可能になるという性質がある。
【0059】
[ミニシャッフルの構成]
ミニシャッフルの構成は、先述の第1実施形態で説明したローカルシャッフルステップ(S11)と比較検証ステップ(S12)に相当する処理である。
【0060】
ここで、参加者Pi (i = 0, 1, 2, 3, 4)のうち、参加者Pi (i = 1, 2, 3, 4)が共有している置換を用いて、参加者P0の置換を代わりに計算し、これを参加者P0に送信する例を考える。
【0061】
参加者Pi (i = 1, 2, 3, 4)が共有する置換σ0∈SMを、次のように構成する。先述したように、各参加者Pi (i = 0, 1, 2, 3, 4)は、シード(seedi, seedi+1, seedi+2, seedi+3)を保持している。これを言い換えると、各参加者Pi (i = 0, 1, 2, 3, 4)は、シードseedi+4のみを保持していないことになる。つまり、参加者P0は、シードseed4を保持していない一方、他の参加者Pi (i = 1, 2, 3, 4)は、シードseed4を保持している。そこで、シードseed4を用いて生成した疑似乱数を用いて参加者Pi (i = 1, 2, 3, 4)が共有する置換σ0∈SMを構成する。すると、置換σ0∈SMは、参加者Pi (i = 1, 2, 3, 4)にとっては、どのような置き換えが起きたのかの追跡可能である一方、参加者P0にとっては、追跡不可能な置換となる。
【0062】
次に、このように構成した置換σ0∈SMと疑似乱数rkを用いて、参加者Pi (i = 1, 2, 3, 4)が参加者P0の置換を代わりに計算し、これを以下のように参加者P0に送信する。なお、ここで注意すべきことは、秘密分散のシェアの構成方法から、参加者Pi (i = 1, 2, 3, 4)と参加者P0との間で共有されているシェアが存在しており、参加者Pi (i = 1, 2, 3, 4)が参加者P0の置換を代わりに計算することが可能であるということである。
【0063】
【0064】
ここで、上記送信では、参加者P2, P3, P4が同一の値を参加者P0に送信し、参加者P1, P3, P4が同一の値を参加者P0に送信し、参加者P1, P2, P4が同一の値を参加者P0に送信し、参加者P1, P2, P3が同一の値を参加者P0に送信することに注意する。この性質から、参加者P0は、3人の参加者から受信した同一の値となるはずのシェアの置換後の値を比較し、少なくとも2つ以上が同一であるものを正しい置換として採用することが可能である。つまり、他の参加者の中に不正者が紛れたとしても正しい値を判別することができ、不正者が紛れたとしても処理を停止することなく、正しい計算を得ることができるGuaranteed Output Delivery (GOD)が実現されている。
【0065】
また、上記送信では、参加者Pi (i = 1, 2, 3, 4)が共有するハッシュ関数を用いて以下のようにハッシュ値を送信することで通信量を減らすことができる。まず、3人の参加者のうち、1名はハッシュ関数を用いて送信する値を変換し、ハッシュ値を参加者P0に送信する。一方、残りの2名の参加者は、ハッシュ値ではなく、そのままの値を送信し、受信した参加者P0がハッシュ関数を用いてハッシュ値へ変換する。そして、参加者P0は、ハッシュ値同士を比較し、2つ以上が一致した場合を正しい値として用いる。
【0066】
上記のような処理を行うことで、参加者Pi (i = 1, 2, 3, 4)にとっては計算可能である一方、参加者P0にとっては、計算不可能な置換σ0∈SMに対応したシェアが以下のように構成できる。
【0067】
【0068】
[ミニシャッフルの合成]
上記ミニシャッフルの構成では、参加者Pi (i = 0, 1, 2, 3, 4)のうち、参加者Pi (i = 1, 2, 3, 4)が共有している置換を用いて、参加者P0の置換を代わりに計算し、これを参加者P0に送信する例を考えたが、4人の参加者Piと1人の参加者P0の組み合わせを変更することができる。すると、5通りのミニシャッフルを構成することが可能である。また、このように構成した5通りのミニシャッフルのそれぞれは、各参加者Pi (i = 0, 1, 2, 3, 4)のいずれかにとっては追跡不可能な置換となっている。
【0069】
したがって、参加者Pi (i = 0, 1, 2, 3, 4)にとっては追跡不可能な置換σi (i = 0, 1, 2, 3, 4)∈SMをすべて合成すると、すべての参加者Pi (i = 0, 1, 2, 3, 4)にとって追跡不可能な置換σ(シャッフル)を構成することができる。
【0070】
【0071】
なお、上記のように構成したシャッフルの通信コストは、通信ラウンド数が5ラウンドであり、通信量が40nmビットである。1回のミニシャッフルの通信ラウンド数が1ラウンドであり、通信量が8nmビットであり、ミニシャッフルが5回行われるので上記通信コストになる。
【0072】
[ハードウェア構成例]
図6は、秘密計算サーバ装置のハードウェア構成例を示す図である。すなわち、
図6に示すハードウェア構成例は、秘密計算サーバ装置100_i,200_i(i=0,1,2,3,4)のハードウェア構成例である。
図6に示すハードウェア構成を採用した情報処理装置(コンピュータ)は、上記説明した秘密計算方法をプログラムとして実行することで、秘密計算サーバ装置100_i,200_i(i=0,1,2,3,4)の各機能を実現することを可能にする。
【0073】
ただし、
図6に示すハードウェア構成例は、秘密計算サーバ装置100_i,200_i(i=0,1,2,3,4)の各機能を実現するハードウェア構成の一例であり、秘密計算サーバ装置100_i,200_i(i=0,1,2,3,4)のハードウェア構成を限定する趣旨ではない。秘密計算サーバ装置100_i,200_i(i=0,1,2,3,4)は、
図6に示さないハードウェアを含むことができる。
【0074】
図6に示すように、秘密計算サーバ装置100_i,200_i(i=0,1,2,3,4)が採用し得るハードウェア構成10は、例えば内部バスにより相互に接続される、CPU(Central Processing Unit)11、主記憶装置12、補助記憶装置13、およびIF(Interface)部14を備える。
【0075】
CPU11は、秘密計算サーバ装置100_i,200_i(i=0,1,2,3,4)が実行する秘密計算プログラムに含まれる各指令を実行する。主記憶装置12は、例えばRAM(Random Access Memory)であり、秘密計算サーバ装置100_i,200_i(i=0,1,2,3,4)が実行する秘密計算プログラムなどの各種プログラムなどをCPU11が処理するために一時記憶する。
【0076】
補助記憶装置13は、例えば、HDD(Hard Disk Drive)であり、秘密計算サーバ装置100_i,200_i(i=0,1,2,3,4)が実行する秘密計算プログラムなどの各種プログラムなどを中長期的に記憶しておくことが可能である。秘密計算プログラムなどの各種プログラムは、非一時的なコンピュータ可読記録媒体(non-transitory computer-readable storage medium)に記録されたプログラム製品として提供することができる。補助記憶装置13は、非一時的なコンピュータ可読記録媒体に記録された秘密計算プログラムなどの各種プログラムを中長期的に記憶することに利用することが可能である。IF部14は、秘密計算サーバ装置100_i,200_i(i=0,1,2,3,4)間の入出力に関するインターフェイスを提供する。
【0077】
上記のようなハードウェア構成10を採用した情報処理装置は、先述した秘密計算方法をプログラムとして実行することで、秘密計算サーバ装置100_i,200_i(i=0,1,2,3,4)の各機能を実現する。
【0078】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
[付記1]
相互にネットワークで接続した5台の秘密計算サーバ装置を備える秘密計算システムであって、
前記秘密計算サーバ装置のそれぞれが、
前記5台の秘密計算サーバ装置のうち4台の秘密計算サーバ装置によって共有されている共有置換を用いて、前記5台の秘密計算サーバ装置における他の1台の秘密計算サーバ装置におけるシェアの置換後の値を計算し、前記シェアの置換後の値を前記他の1台の秘密計算サーバ装置に送信するローカルシャッフル部と、
前記4台の秘密計算サーバ装置のうち少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの値を比較し、少なくとも2つ以上が同一であるものを正しい置換として採用する比較検証部と、
前記4台の秘密計算サーバ装置によって共有されている共有置換と前記比較検証部によって採用された置換とを用いて構成されたミニシャッフルを、前記5台の秘密計算サーバ装置のうち4台の秘密計算サーバ装置を選択する5つの組み合わせに関して合成するシャッフル合成部と、
を備える、秘密計算システム。
[付記2]
前記ミニシャッフルは、前記4台の秘密計算サーバ装置が保持しているシードと前記5台の秘密計算サーバ装置が保持している識別子とを入力に決定的に生成され、かつ、前記5台の秘密計算サーバ装置に関する総和がゼロになる疑似乱数によってマスクされている付記1に記載の秘密計算システム。
[付記3]
前記共有置換は、前記4台の秘密計算サーバ装置によって共有されているシードを入力に決定的に生成される付記1または付記2に記載の秘密計算システム。
[付記4]
前記比較検証部は、前記シェアの置換後の値のハッシュ値が同一であることを判断して、前記受信値が正しい値であることを判断する、付記1から付記3のいずれか1つに記載の秘密計算システム。
[付記5]
相互にネットワークで接続した5台の秘密計算サーバ装置の一つであって、
前記5台の秘密計算サーバ装置のうち4台の秘密計算サーバ装置によって共有されている共有置換を用いて、前記5台の秘密計算サーバ装置における他の1台の秘密計算サーバ装置におけるシェアの置換後の値を計算し、前記シェアの置換後の値を前記他の1台の秘密計算サーバ装置に送信するローカルシャッフル部と、
前記4台の秘密計算サーバ装置のうち少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの値を比較し、少なくとも2つ以上が同一であるものを正しい置換として採用する比較検証部と、
前記4台の秘密計算サーバ装置によって共有されている共有置換と前記比較検証部によって採用された置換とを用いて構成されたミニシャッフルを、前記5台の秘密計算サーバ装置のうち4台の秘密計算サーバ装置を選択する5つの組み合わせに関して合成するシャッフル合成部と、
を備える、秘密計算サーバ装置。
[付記6]
相互にネットワークで接続した5台の秘密計算サーバ装置を用いる秘密計算方法であって、
前記秘密計算サーバ装置のそれぞれが、
前記5台の秘密計算サーバ装置のうち4台の秘密計算サーバ装置によって共有されている共有置換を用いて、前記5台の秘密計算サーバ装置における他の1台の秘密計算サーバ装置におけるシェアの置換後の値を計算し、
前記シェアの置換後の値を前記他の1台の秘密計算サーバ装置に送信し、
前記4台の秘密計算サーバ装置のうち少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの値を比較し、
少なくとも2つ以上が同一であるものを正しい置換として採用し、
前記4台の秘密計算サーバ装置によって共有されている共有置換と前記採用された置換とを用いて構成されたミニシャッフルを、前記5台の秘密計算サーバ装置のうち4台の秘密計算サーバ装置を選択する5つの組み合わせに関して合成する、秘密計算方法。
[付記7]
前記ミニシャッフルは、前記4台の秘密計算サーバ装置が保持しているシードと前記5台の秘密計算サーバ装置が保持している識別子とを入力に決定的に生成され、かつ、前記5台の秘密計算サーバ装置に関する総和がゼロになる疑似乱数によってマスクされている付記6に記載の秘密計算方法。
[付記8]
前記共有置換は、前記4台の秘密計算サーバ装置によって共有されているシードを入力に決定的に生成される付記6または付記7に記載の秘密計算方法。
[付記9]
前記シェアの置換後の値が正しい値であることを判断する際には、前記シェアの置換後の値のハッシュ値が同一であることを用いて判断する、付記6から付記8のいずれか1つに記載の秘密計算方法。
[付記10]
相互にネットワークで接続した5台以上の秘密計算サーバ装置に秘密計算をさせる秘密計算プログラムであって、
前記5台の秘密計算サーバ装置のうち4台の秘密計算サーバ装置によって共有されている共有置換を用いて、前記5台の秘密計算サーバ装置における他の1台の秘密計算サーバ装置におけるシェアの置換後の値を計算し、
前記シェアの置換後の値を前記他の1台の秘密計算サーバ装置に送信し、
前記4台の秘密計算サーバ装置のうち少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの値を比較し、
少なくとも2つ以上が同一であるものを正しい置換として採用し、
前記4台の秘密計算サーバ装置によって共有されている共有置換と前記採用された置換とを用いて構成されたミニシャッフルを、前記5台の秘密計算サーバ装置のうち4台の秘密計算サーバ装置を選択する5つの組み合わせに関して合成する、秘密計算プログラム。
【0079】
なお、引用した上記の非特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択(部分的削除を含む)が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。さらに、上記引用した文献の各開示事項は、必要に応じ、本発明の趣旨に則り、本発明の開示の一部として、その一部又は全部を、本書の記載事項と組み合わせて用いることも、本願の開示事項に含まれるものと、みなされる。
【符号の説明】
【0080】
100,200 秘密計算システム
100_i,200_i 秘密計算サーバ装置
101_i,201_i ローカルシャッフル部
102_i,202_i 比較検証部
103_i,203_i シャッフル合成部
10 ハードウェア構成
11 CPU(Central Processing Unit)
12 主記憶装置
13 補助記憶装置
14 IF(Interface)部