IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電気株式会社の特許一覧

特許7517475秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム
<>
  • 特許-秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム 図1
  • 特許-秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム 図2
  • 特許-秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム 図3
  • 特許-秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム 図4
  • 特許-秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム 図5
  • 特許-秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム 図6
  • 特許-秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム 図7
  • 特許-秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム 図8
  • 特許-秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-08
(45)【発行日】2024-07-17
(54)【発明の名称】秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム
(51)【国際特許分類】
   G06F 21/60 20130101AFI20240709BHJP
【FI】
G06F21/60
【請求項の数】 10
(21)【出願番号】P 2022574879
(86)(22)【出願日】2021-01-12
(86)【国際出願番号】 JP2021000661
(87)【国際公開番号】W WO2022153358
(87)【国際公開日】2022-07-21
【審査請求日】2023-07-11
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100080816
【弁理士】
【氏名又は名称】加藤 朝道
(74)【代理人】
【識別番号】100098648
【弁理士】
【氏名又は名称】内田 潔人
(72)【発明者】
【氏名】土田 光
【審査官】中里 裕正
(56)【参考文献】
【文献】国際公開第2018/053185(WO,A1)
【文献】加藤遼, 西出隆志, 吉浦裕 ,部分的に小さな法を用いたマルチパーティ計算のビット演算効率化,情報処理学会論文誌(ジャーナル) Vol.55 No.9 [online] ,2014年09月15日,第55巻 第9号,pp.1971-1991
【文献】KIKUCHI, R. et al.,Efficient Bit-Decomposition and Modulus-Conversion Protocols with an Honest Majority,Cryptology ePrint Archive,Report 2018/387,[online],2018年04月,pp.1-19,URL:https://eprint.iacr.org/2018/387
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/60
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
相互にネットワークで接続した5台の秘密計算サーバ装置を備え、秘密分散して保持されている位数2の剰余類環上の論理シェアから位数n(n=2;mは2以上の整数)の剰余類環上の算術シェアにビット変換する秘密計算システムであって、
前記秘密計算サーバ装置のそれぞれが、
前記論理シェアから、自己が保持していないサブシェアをゼロに設定することで他の秘密計算サーバ装置との通信を伴うことなく算術シェアを計算するローカル再分散部と、
前記論理シェアをビット変換した算術シェアを得るために、前記ローカル再分散部が得た算術シェアを用いて通信を伴った秘密計算を行う秘密計算部と、
少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの受信値を比較し、少なくとも2つ以上が同一である受信値を正しい値として採用する比較検証部と、
を有し、
前記通信を伴った秘密計算における受信値を前記比較検証部が検証する、秘密計算システム。
【請求項2】
前記秘密計算サーバ装置のそれぞれが、
前記論理シェアにおけるサブシェアから計算された一時的変数を算術シェアとして分散する再分散部をさらに有し、
前記再分散部が分散した前記一時的変数の算術シェアの受信値を前記比較検証部が検証し、
前記再分散部が分散した前記一時的変数の算術シェアと前記ローカル再分散部が得た算術シェアとを用いて、前記論理シェアをビット変換した算術シェアを秘密計算する、請求項1に記載の秘密計算システム。
【請求項3】
前記一時的変数は、前記秘密計算サーバ装置の5台のうち3台が共通して保持している前記論理シェアにおけるサブシェアから計算され、
前記再分散部は、前記3台の秘密計算サーバ装置が共通して計算する前記一時的変数から決定的に生成した算術シェアを分散し、
前記比較検証部は、前記3台の秘密計算サーバ装置から受信した算術シェアに対して、少なくとも2つ以上が同一である受信値を正しい値として採用する、請求項2に記載の秘密計算システム。
【請求項4】
前記比較検証部は、前記受信値のハッシュ値が同一であることを判断して、前記受信値が正しい値であることを判断する、請求項1から請求項3のいずれか1項に記載の秘密計算システム。
【請求項5】
秘密分散して保持されている位数2の剰余類環上の論理シェアから位数n(n=2;mは2以上の整数)の剰余類環上の算術シェアにビット変換するために、相互にネットワークで接続した少なくとも5台の秘密計算サーバ装置の一つであって、
前記論理シェアから、自己が保持していないサブシェアをゼロに設定することで他の秘密計算サーバ装置との通信を伴うことなく算術シェアを計算するローカル再分散部と、
前記論理シェアをビット変換した算術シェアを得るために、前記ローカル再分散部が得た算術シェアを用いて通信を伴った秘密計算を行う秘密計算部と、
少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの受信値を比較し、少なくとも2つ以上が同一である受信値を正しい値として採用する比較検証部と、
を有し、
前記通信を伴った秘密計算における受信値を前記比較検証部が検証する、秘密計算サーバ装置。
【請求項6】
相互にネットワークで接続した5台の秘密計算サーバ装置を用いて、秘密分散して保持されている位数2の剰余類環上の論理シェアから位数n(n=2;mは2以上の整数)の剰余類環上の算術シェアにビット変換する秘密計算方法であって、
前記秘密計算サーバ装置のそれぞれが、
前記論理シェアから、自己が保持していないサブシェアをゼロに設定することで他の秘密計算サーバ装置との通信を伴うことなく算術シェアに再分散し、
前記論理シェアをビット変換した算術シェアを得るために、前記再分散された算術シェアを用いて通信を伴った秘密計算を行い、
少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの受信値を比較し、少なくとも2つ以上が同一である受信値を正しい値として採用することで、前記通信を伴った秘密計算における受信値を検証する、秘密計算方法。
【請求項7】
前記秘密計算サーバ装置のそれぞれが、
前記論理シェアにおけるサブシェアから計算された一時的変数を算術シェアとして再分散し、
少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの受信値を比較し、少なくとも2つ以上が同一である受信値を正しい値として採用することで、前記再分散した前記一時的変数の算術シェアの受信値を検証し、
前記再分散した前記一時的変数の算術シェアと前記通信を伴うことなく計算した算術シェアとを用いて、前記論理シェアをビット変換した算術シェアを秘密計算する、請求項6に記載の秘密計算方法。
【請求項8】
前記一時的変数を、前記秘密計算サーバ装置の5台のうち3台が共通して保持している前記論理シェアにおけるサブシェアから計算し、
前記3台の秘密計算サーバ装置が共通して計算する前記一時的変数から決定的に生成した算術シェアを再分散し、
前記3台の秘密計算サーバ装置から受信した算術シェアに対して、少なくとも2つ以上が同一である受信値を正しい値として採用する、請求項7に記載の秘密計算方法。
【請求項9】
前記受信値が正しい値であることを判断する際には、前記受信値のハッシュ値が同一であることを用いて判断する、請求項6から請求項8のいずれか1項に記載の秘密計算方法。
【請求項10】
相互にネットワークで接続した少なくとも5台以上の秘密計算サーバ装置に、秘密分散して保持されている値の秘密計算をさせる秘密計算プログラムであって、
相互にネットワークで接続した5台の秘密計算サーバ装置に、秘密分散して保持されている位数2の剰余類環上の論理シェアから位数n(n=2;mは2以上の整数)の剰余類環上の算術シェアにビット変換をさせる秘密計算プログラムであって、
前記秘密計算サーバ装置のそれぞれが、
前記論理シェアから、自己が保持していないサブシェアをゼロに設定することで他の秘密計算サーバ装置との通信を伴うことなく算術シェアに再分散し、
前記論理シェアをビット変換した算術シェアを得るために、前記再分散された算術シェアを用いて通信を伴った秘密計算を行い、
少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの受信値を比較し、少なくとも2つ以上が同一である受信値を正しい値として採用することで、前記通信を伴った秘密計算における受信値を検証する、秘密計算プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラムに関するものである。
【背景技術】
【0002】
近年、秘密計算と呼ばれる技術の研究開発が盛んに行われている。秘密計算は、第三者に対して計算過程とその結果を秘密にしつつ所定の処理を実行する技術の一つである。秘密計算における代表的な技術の一つとして、マルチパーティ計算技術が挙げられる。マルチパーティ計算技術では、秘密にするデータを複数のサーバ(秘密計算サーバ装置)に分散配置し、秘密にした状態を維持しながら当該データの任意の演算を実行する。なお、各秘密計算サーバ装置に分散配置したデータをシェアと呼ぶ。以下、特に断りがない限り、「秘密計算」という語を用いた場合は、マルチパーティ計算技術を意味するものとする。
【0003】
このような秘密計算には、四則演算だけではなく、特定用途の計算プロトコルも実装することが一般的である。その特定用途の計算プロトコルの一つとして、ビット変換プロトコルがある。ビット変換は、法の変換を伴う型変換のことであり、例えば、位数2の剰余類環Z上のシェアから位数nの剰余類環Z上のシェアを得る変換が該当する。このようなビット変換は、例えば、算術演算と論理演算の混合回路における計算効率を向上させることができる。
【0004】
算術演算と論理演算の混合回路の簡単な例としてハミング距離(Hamming distance)の計算がある。ハミング距離とは、2つの2進数の比較において異なっている桁の個数のことであり、例えば1111111と1010101とのハミング距離は3である。このようなハミング距離の計算では、桁が異なっているか否かは排他的論理和であるので論理演算とし、異なっている桁の個数を集計するのは算術演算とすることが好ましい。ビット変換のためのプロトコルを備えた秘密計算は、このような算術演算と論理演算の混合回路における秘密計算の処理をそれぞれに適した法で計算することができるので、計算効率を向上させることが可能である。
【先行技術文献】
【非特許文献】
【0005】
【文献】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.
【発明の概要】
【発明が解決しようとする課題】
【0006】
なお、上記先行技術文献の開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者らによってなされたものである。
【0007】
ところで、一般に秘密計算と呼ばれる技術の中にも、達成されている安全性の程度には高低がある。例えば、秘密計算を行うマルチパーティの参加者の中に不正者が紛れたとする。その場合に、不正者の存在を検知し処理を中断することができる秘密計算の技術と、たとえ不正者が存在しても処理を中断することなく正しい計算結果を得ることができる秘密計算の技術とでは、後者の方が前者よりも安全性が高い。そして、後者の安全性を満たす秘密計算はGuaranteed Output Delivery (GOD)と呼ばれ、これを実現する秘密計算の例も知られている(例えば、非特許文献1参照)。
【0008】
また、秘密計算における安全性の評価には、達成できる安全性の効果だけではなく、前提条件も重要な意味を持つ。代表的な前提条件としてハッシュ関数のランダムオラクルモデルないしランダムオラクル仮定がある。
【0009】
ハッシュ関数は、入力に対し一意の出力を返す関数であるが、出力から入力を推定することが困難であるように構成されている。ここで、出力から入力を推定することが困難であるとはいうものの、絶対に不可能であるかというとその保証はできない。そこで、安全性の評価に際し、用いられているハッシュ関数が脆弱性を持たないという前提で安全性が評価される。この前提の安全性を「ランダムオラクルモデルにおいて安全」あるいは「ランダムオラクル仮定のもとで安全」という。そして、非特許文献1における秘密計算の安全性は「ランダムオラクルモデルにおいて安全」である。
【0010】
一方、「ランダムオラクルモデルにおいて安全」の対義語は、「標準モデルにおいて安全」である。すなわち、ハッシュ関数の出力から入力を推定することができたとしても、そのこと自体が秘密計算の脆弱性とはならないことをいう。当然のことながら、達成できる安全性が同じであれば、ランダムオラクルモデルにおける安全性よりも、標準モデルにおける安全性の方が高度な安全性が達成できることになる。したがって、ビット変換のプロトコルにおいても標準モデルにてGuaranteed Output Delivery (GOD)を達成することが望ましいことになる。
【0011】
本発明の目的は、上述した課題を鑑み、標準モデルにおいてGuaranteed Output Delivery (GOD)を達成するビット変換に寄与する秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラムを提供することである。
【課題を解決するための手段】
【0012】
本発明の第1の視点では、相互にネットワークで接続した5台の秘密計算サーバ装置を備え、秘密分散して保持されている位数2の剰余類環上の論理シェアから位数n(n=2;mは2以上の整数)の剰余類環上の算術シェアにビット変換する秘密計算システムであって、前記秘密計算サーバ装置のそれぞれが、前記論理シェアから、自己が保持していないサブシェアをゼロに設定することで他の秘密計算サーバ装置との通信を伴うことなく算術シェアを計算するローカル再分散部と、前記論理シェアをビット変換した算術シェアを得るために、前記ローカル再分散部が得た算術シェアを用いて通信を伴った秘密計算を行う秘密計算部と、少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの受信値を比較し、少なくとも2つ以上が同一である受信値を正しい値として採用する比較検証部と、を有し、前記通信を伴った秘密計算における受信値を前記比較検証部が検証する、秘密計算システムが提供される。
【0013】
本発明の第2の視点では、秘密分散して保持されている位数2の剰余類環上の論理シェアから位数n(n=2;mは2以上の整数)の剰余類環上の算術シェアにビット変換するために、相互にネットワークで接続した少なくとも5台の秘密計算サーバ装置の一つであって、前記論理シェアから、自己が保持していないサブシェアをゼロに設定することで他の秘密計算サーバ装置との通信を伴うことなく算術シェアを計算するローカル再分散部と、前記論理シェアをビット変換した算術シェアを得るために、前記ローカル再分散部が得た算術シェアを用いて通信を伴った秘密計算を行う秘密計算部と、少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの受信値を比較し、少なくとも2つ以上が同一である受信値を正しい値として採用する比較検証部と、を有し、前記通信を伴った秘密計算における受信値を前記比較検証部が検証する、秘密計算サーバ装置が提供される。
【0014】
本発明の第3の視点では、相互にネットワークで接続した5台の秘密計算サーバ装置を用いて、秘密分散して保持されている位数2の剰余類環上の論理シェアから位数n(n=2;mは2以上の整数)の剰余類環上の算術シェアにビット変換する秘密計算方法であって、前記秘密計算サーバ装置のそれぞれが、前記論理シェアから、自己が保持していないサブシェアをゼロに設定することで他の秘密計算サーバ装置との通信を伴うことなく算術シェアに再分散し、前記論理シェアをビット変換した算術シェアを得るために、前記再分散された算術シェアを用いて通信を伴った秘密計算を行い、少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの受信値を比較し、少なくとも2つ以上が同一である受信値を正しい値として採用することで、前記通信を伴った秘密計算における受信値を検証する、秘密計算方法が提供される。
【0015】
本発明の第4の視点では、相互にネットワークで接続した少なくとも5台以上の秘密計算サーバ装置に、秘密分散して保持されている値の秘密計算をさせる秘密計算プログラムであって、相互にネットワークで接続した5台の秘密計算サーバ装置に、秘密分散して保持されている位数2の剰余類環上の論理シェアから位数n(n=2;mは2以上の整数)の剰余類環上の算術シェアにビット変換をさせる秘密計算プログラムであって、前記秘密計算サーバ装置のそれぞれが、前記論理シェアから、自己が保持していないサブシェアをゼロに設定することで他の秘密計算サーバ装置との通信を伴うことなく算術シェアに再分散し、前記論理シェアをビット変換した算術シェアを得るために、前記再分散された算術シェアを用いて通信を伴った秘密計算を行い、少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの受信値を比較し、少なくとも2つ以上が同一である受信値を正しい値として採用することで、前記通信を伴った秘密計算における受信値を検証する、秘密計算プログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント(non-transient)なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【0016】
本発明の各視点によれば、標準モデルにおいてGuaranteed Output Delivery (GOD)を達成するビット変換に寄与する秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラムを提供することができる。
【図面の簡単な説明】
【0017】
図1図1は、第1の実施形態における秘密計算システムの機能構成例を示すブロック図である。
図2図2は、第1の実施形態における秘密計算サーバ装置の機能構成例を示すブロック図である。
図3図3は、秘密計算方法の手順の概略を示すフローチャートである。
図4図4は、第2の実施形態における秘密計算システムの機能構成例を示すブロック図である。
図5図5は、第2の実施形態における秘密計算サーバ装置の機能構成例を示すブロック図である。
図6図6は、第3の実施形態における秘密計算システムの機能構成例を示すブロック図である。
図7図7は、第3の実施形態における秘密計算サーバ装置の機能構成例を示すブロック図である。
図8図8は、秘密計算方法の手順の概略を示すフローチャートである。
図9図9は、秘密計算サーバ装置のハードウェア構成例を示す図である。
【発明を実施するための形態】
【0018】
以下、図面を参照しながら、本発明の実施形態について説明する。ただし、以下に説明する実施形態により本発明が限定されるものではない。また、各図面において、同一または対応する要素には適宜同一の符号を付している。さらに、図面は模式的なものであり、各要素の寸法の関係、各要素の比率などは、現実のものとは異なる場合があることに留意する必要がある。図面の相互間においても、互いの寸法の関係や比率が異なる部分が含まれている場合がある。
【0019】
[第1の実施形態]
以下、図1図2を参照して、第1の実施形態に係る秘密計算システムおよび秘密計算サーバ装置について説明する。第1の実施形態は、本発明の基本的なコンセプトのみを説明する実施形態である。
【0020】
図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は、それぞれが互いにネットワーク経由で通信可能に接続されている。
【0021】
第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)に分散して記憶することができる。
【0022】
また、第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)に分散して記憶することができる。
【0023】
なお、上記計算結果のシェアは、第1~第5の秘密計算サーバ装置100_0~100_4とシェアを送受信することで、復元してもよい。あるいは、第1~第5の秘密計算サーバ装置100_0~100_4ではない外部にシェアを送信することで、復号してもよい。
【0024】
さらに、第1~第5の秘密計算サーバ装置100_i(i=0,1,2,3,4)を備える秘密計算システム100においては、第1~第5の秘密計算サーバ装置100_i(i=0,1,2,3,4)のうち1つが不正者によって運営されている場合であっても、処理を停止することなく、正しい秘密計算を継続することができる。
【0025】
例えば上記のように、第1~第5の秘密計算サーバ装置100_i(i=0,1,2,3,4)のうち1つが不正者によって運営されている場合であっても、処理を停止することなく、正しい秘密計算を継続することができるシェアの構成として以下の構成を採用することができる。
【0026】
位数nの剰余類環Znの元x∈Znの剰余類環Zn上のシェア(以下、これを算術シェアということがある)を以下のように定義する。ただし、mは2以上の整数とし、n=2mであるとする。つまり、位数2の剰余類環Z2は、位数nの剰余類環Znと区別する。
【0027】
位数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
【0028】
一方、位数2の剰余類環Z2の元x∈Z2の剰余類環Z2上のシェア(以下、これを論理シェアということがある)は、上記剰余類環Zn上のシェアにおけるn=2の場合と同様の定義であるが、記法としては位数nの剰余類環Znと区別し、[x]Bのように表す。すなわち、具体的には以下のように定める。
【0029】
位数2の剰余類環Z2の元x∈Z2を以下のように分解する。なお、〇で囲まれた+は排他的論理和を表す。
【数1】
【0030】
そして、各参加者 Pi (i = 0, 1, 2, 3, 4)が分散保持する[x]B iは、以下のようにする。
[x]B i = (xi, xi+1, xi+2, xi+3), ただし、x4+1 = x0
【0031】
このように各参加者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)と呼ばれている。
【0032】
ところで、この秘密分散方式の秘密計算では、xを復元する場合に限らず、ビット変換をする場合でも、各参加者が、自己が保持していないサブシェアの値を他の参加者から直接ないし間接的に受信する状況が発生する。
【0033】
例えば、1という数を考えた場合、(1, 0, 0, 0, 0)と(1, 1, 1, 1, 1)は、共に1を排他的論理和に分解したものである。しかしながら、1+0+0+0+0=1であるが、1+1+1+1+1=5であるので、(1, 1, 1, 1, 1)は、1という数の算術和ではない。つまり、(1, 0, 0, 0, 0)と(1, 1, 1, 1, 1)は、位数2の剰余類環Z2の元x∈Z2の剰余類環Z2上のシェアとしては同値であっても、位数nの剰余類環Znの元x∈Znの剰余類環Zn上のシェアとしては同値にならない。
【0034】
そこで、ビット変換をする場合でも、各参加者が、自己が保持していないサブシェアの値を他の参加者から直接ないし間接的に受信する状況が発生するが、他の参加者の中に不正者が紛れたとすると、本来は受信したい値の代わりに別の値が送信されてくることが起こり得る。すると、誤った値に基づいて秘密計算を実行することになり、誤った計算を得ることになったり、そもそも計算自体を正常に実行することができなくなったりするのである。
【0035】
そこで、本実施形態の秘密計算システム100では、図2に示すように、第1~第5の秘密計算サーバ装置100_i(i=0,1,2,3,4)が、ローカル再分散部101_iと秘密計算部102_iと比較検証部103_iを備える。図2は、第1の実施形態における秘密計算サーバ装置の機能構成例を示すブロック図である。
【0036】
ローカル再分散部101_iは、論理シェアから、自己が保持していないサブシェアをゼロに設定することで他の秘密計算サーバ装置との通信を伴うことなく算術シェアを計算し、秘密計算部102_iは、論理シェアをビット変換した算術シェアを得るために、ローカル再分散部101_iが得た算術シェアを用いて通信を伴った秘密計算を行う。そして、比較検証部103_iは、少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの受信値を比較し、少なくとも2つ以上が同一である受信値を正しい値として採用することで、通信を伴った秘密計算における受信値を検証する。
【0037】
このように、本実施形態の秘密計算システム100は、位数2の剰余類環上の論理シェアから位数nの剰余類環上の算術シェアにビット変換する際に、最初に通信を伴うことなく再分散(ローカル再分散)を行い、当該ローカル再分散された算術シェアから論理シェアをビット変換した算術シェアを得るために行う通信を伴った秘密計算を行い、当該通信を伴った秘密計算における受信値を少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの受信値を比較することで検証を行う。
【0038】
なお、本実施形態を秘密計算方法として捉えると、以下のようになる。図3は、秘密計算方法の手順の概略を示すフローチャートである。
【0039】
図3に示すように、本実施形態に係る秘密計算方法は、ローカル再分散ステップ(S11)と通信を伴った秘密計算ステップ(S12)と比較検証ステップ(S13)とを有する。ローカル再分散ステップ(S11)では、論理シェアから、自己が保持していないサブシェアをゼロに設定することで他の秘密計算サーバ装置との通信を伴うことなく算術シェアを計算し、通信を伴った秘密計算ステップ(S12)では、論理シェアをビット変換した算術シェアを得るために、再分散された算術シェアを用いて通信を伴った秘密計算を行う。そして、比較検証ステップ(S13)にて、少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの受信値を比較し、少なくとも2つ以上が同一である受信値を正しい値として採用することで、通信を伴った秘密計算における受信値を検証する。なお、比較検証ステップ(S13)は、通信を伴った秘密計算ステップ(S12)を行う度に行う。
【0040】
このように、本実施形態の秘密計算システム100および秘密計算方法は、少なくとも3人の他の参加者から同一となるはずの受信値を受信し、少なくとも2つ以上が同一である受信値を正しい値として採用することで、他の参加者の中に不正者が紛れたとしても正しい値を判別することができる。すなわち、不正者が紛れたとしても処理を停止することなく、正しい計算を得ることができるGuaranteed Output Delivery (GOD)が実現されている。また、上記処理では、そもそもハッシュ関数を用いていないので、標準モデルにおいてGuaranteed Output Delivery (GOD)が実現されている。
【0041】
さらに、本実施形態の秘密計算システム100および秘密計算方法は、最初に通信を伴うことなく再分散(ローカル再分散)を行い、その後に通信を伴った秘密計算を行うので、通信コストが低減されている。
【0042】
以上説明した第1の実施形態は、本発明の基本的なコンセプトのみを説明する実施形態である。以下で説明する第2の実施形態は、上記説明したコンセプトを実用的な実施形態に適用したものである。
【0043】
[第2の実施形態]
以下、図4および図5を参照して、第2の実施形態に係る秘密計算システムおよび秘密計算サーバ装置について説明する。
【0044】
図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は、それぞれが互いにネットワーク経由で通信可能に接続されている。
【0045】
第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)に分散して記憶することができる。
【0046】
さらに、第1~第5の秘密計算サーバ装置200_i(i=0,1,2,3,4)を備える秘密計算システム200においては、第1~第5の秘密計算サーバ装置200_i(i=0,1,2,3,4)のうち1つが不正者によって運営されている場合であっても、処理を停止することなく、正しい秘密計算を継続することができる。
【0047】
図5は、第2の実施形態における秘密計算サーバ装置の機能構成例を示すブロック図である。本実施形態の秘密計算システム200は、図5に示すように、第1~第5の秘密計算サーバ装置200_i(i=0,1,2,3,4)が、ローカル再分散部201_iと秘密計算部202_iと比較検証部203_iを備える。
【0048】
ローカル再分散部201_iは、論理シェアから、自己が保持していないサブシェアをゼロに設定することで他の秘密計算サーバ装置との通信を伴うことなく算術シェアを計算し、秘密計算部202_iは、論理シェアをビット変換した算術シェアを得るために、ローカル再分散部201_iが得た算術シェアを用いて通信を伴った秘密計算を行う。そして、比較検証部203_iは、少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの受信値を比較し、少なくとも2つ以上が同一である受信値を正しい値として採用することで、通信を伴った秘密計算における受信値を検証する。
【0049】
以下、本実施形態におけるビット変換の実施に用いられるビルディングブロックについて説明する。なお、以下ではビット変換の実施に用いられるビルディングブロックの全てを説明することはしない。基本となる四則演算の秘密計算のうち、自明ではない乗算を中心に説明を行う。
【0050】
[疑似乱数の生成とシードの共有]
疑似ランダム関数F,Fとシードおよび識別子の関係は次の通りである。疑似ランダム関数F,Fは、セキュリティパラメータκに対して定められた2項演算である。
:{0,1}κ×{0,1}κ→{0,1}
:{0,1}κ×{0,1}κ→{0,1}
一方、シードseedi∈{0,1}κ(i=0, 1, 2, 3, 4)は、各秘密計算サーバ装置200_iが適切に共有している値であり、識別子vid∈{0,1}κはカウンタなどの公開された値である。これらシードと識別子を入力として、疑似ランダム関数F,Fは、決定的に疑似乱数を生成する。
【0051】
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における事前の設定として管理者などが適切に設定することができる。
【0052】
[マスク作成]
ここでは、参加者Pi+4からは乱数に見えて除去できないが、残りの参加者Pi, Pi+1, Pi+2, Pi+3にとっては決定的に計算可能であるような、疑似乱数(Correlated Randomness)を作成し、これを後に説明する乗算の秘密計算においてマスクとして用いる。
【0053】
まず、参加者Pi+4がシードseedi+3を保持していないことに着目すると、疑似ランダム関数Fnの入力としてシードseedi+3を用いれば以下の疑似乱数は上記条件を満たす。すなわち、下記αkは、参加者Pi+4からは乱数に見えて除去できないが、残りの参加者Pi, Pi+1, Pi+2, Pi+3にとっては決定的に計算可能である。
αk = Fn(vidk, seedi+3)- Fn(vidk+1, seedi+3) mod n
【0054】
また、識別子vidkにおけるインデックスkをk=0からk=4まで変化させると、αkを5つ作成することが可能である。そこで、これらαkの組を以下のように定める。このように定めたα0, α1, α2, α3, α4がα01234=0を満たすことは容易に確かめることができる。
0, α1, α2, α3, α4) = CR(i+4, {vidk}4 k=0, seedi+3)
【0055】
このように作成された疑似乱数α0, α1, α2, α3, α4は、参加者Pi+4からは乱数に見えて除去できないが、残りの参加者Pi, Pi+1, Pi+2, Pi+3にとっては決定的に計算可能である。一方、参加者Pi+4にとっても、各疑似乱数α0, α1, α2, α3, α4は除去できないが、すべての疑似乱数α0, α1, α2, α3, α4が揃うと総和は0であり除去可能になるという性質がある。
【0056】
さらに、上記疑似乱数の作成は、すべての参加者Pi+4に対しても同様に行うことができる。具体的には、以下のように定めればよい。
i,0, αi,1, αi,2, αi,3, αi,4) = CR(i, {vidk}4 k=0, seedi+4) for i=0,1,2,3,4
αi,k = Fn(vidk, seedi+4)- Fn(vidk+1, seedi+4) mod n for i=0,1,2,3,4
【0057】
このように作成された疑似乱数の組は以下のようになる。
【表1】
【0058】
上記疑似乱数の表では、第1のインデックス(縦方向)に関する総和はゼロであり、第2のインデックス(横方向)に関する総和はゼロではないという性質を有する。
【0059】
[秘密計算(乗算)]
次に、秘密計算の重要な因子である乗算について説明する。つまり、2つのシェア[x],[y]から[z]=[x・y]=[x]・[y]を計算する秘密計算の具体例を説明する。なお、x,y,zは以下のように分解されているとする。
【数2】



【0060】
参加者Pi(i=0,1,2,3,4)は、以下のようなtmpzkを計算する。このtmpzkは参加者Piがzkを計算するためにはxk・yi+4が足りない(保持しているシェアから計算できない)ので、代わりに計算する値である。なお、αj,kは、上述の[マスク作成]の項目にて説明した疑似乱数である。
【数3】

【0061】
ここで、送信者集合Si={Pi+2, Pi+3, Pi+4}, Si+1={Pi+3, Pi+4, Pi+1}, Si+2={Pi+4, Pi+1, Pi+2}, Si+3={Pi+1, Pi+2, Pi+3}を定める。するとSkに属する参加者は、xkyi+4を保持しているシェアから計算することができる。そこで、例えば、送信者集合Si={Pi+2, Pi+3, Pi+4}に属する参加者Pi+2, Pi+3, Pi+4は、xk・yi+4を上記疑似乱数αi,kでマスクをしたmk,i+2, mk,i+3, mk,i+4を計算する。
Pi+2: mk,i+2 = αi,k + xk・yi+4 mod n
Pi+3: mk,i+3 = αi,k + xk・yi+4 mod n
Pi+4: mk,i+4 = αi,k + xk・yi+4 mod n
【0062】
そして、送信者集合Si={Pi+2, Pi+3, Pi+4}に属する参加者Pi+2, Pi+3, Pi+4は、例えば、参加者Pi+2, Pi+3がmk,i+2, mk,i+3をそのまま参加者Piに送信し、参加者Pi+4がmk,i+4のハッシュ値hk,i+4を参加者Piに送信する。ここで、mk,i+2, mk,i+3, mk,i+4は疑似乱数αi,kでマスクをしているのでxkyi+4が漏洩することはない。つまり、ここではハッシュ関数も用いているが、これは安全性の確保のためではなく、通信コストを削減するためである。
【0063】
その後、mk,i+2, mk,i+3およびmk,i+4のハッシュ値hk,i+4を受信した参加者Piは、mk,i+2, mk,i+3およびmk,i+4のハッシュ値hk,i+4の比較検証を行う。まず、参加者Piは、mk,i+2, mk,i+3のハッシュ値hk,i+2, hk,i+3を計算する。そして、hk,i+2=hk,i+3またはhk,i+2=hk,i+4であれば、mk = mk,i+2とする。一方、hk,i+3=hk,i+4であれば、mk = mk,i+2とする。
【0064】
上記のようにxkyi+4を参加者Piへ受け渡せば、少なくとも3人の他の参加者Pjから同一となるはずのmk(のハッシュ値)を受信し、少なくとも2つ以上が同一である受信値を正しい値として採用することで、他の参加者Pjの中に不正者が紛れたとしても正しい値を判別することができる。
【0065】
その後、参加者Piは、正しい値であることが判定されたmkを用いて、zk = tmpzk + mk mod n (k=i,i+1,i+2,i+3)を計算する。
【数4】


【0066】
このように計算されたzkは、余計な付加項が含まれているが、[z]=[xy]=[x][y]の計算結果のシェア[z]i=(zi, zi+1, zi+2, zi+3)として機能する。それは、実際に以下のようにz=z0+z1+z2+z3+z4を計算すると明らかとなる。
【0067】
【数5】





【0068】
ここで、疑似乱数αi,kが消去される理由は、疑似乱数の構成から以下の関係式が成り立つからである。
【数6】
【0069】
すなわち、上述の[マスク作成]の項目にて説明したように、本構成の疑似乱数は、第1のインデックス(縦方向)に関する総和はゼロであり、第2のインデックス(横方向)に関する総和はゼロではないという性質を有する。zk = tmpzk + mk mod n (k=i,i+1,i+2,i+3)の計算結果に表れていた付加項は、第2のインデックス(横方向)に関する総和であり、ゼロとはならないが、[z]=[x・y]=[x] ・ [y]の計算結果を復元する際には、第1のインデックス(縦方向)に関する総和がゼロになるという性質を用いて、結果的に付加項(マスク)の影響を除去することが可能になる。つまり、上記計算されたzkは、余計な付加項が含まれているが、[z]=[x・y]=[x]・[y]の計算結果のシェア[z]i=(zi, zi+1, zi+2, zi+3)として機能する。
【0070】
以上、上記のような[z]=[x・y]=[x]・[y]の計算結果のシェア[z]i=(zi, zi+1, zi+2, zi+3)は、少なくとも3人の他の参加者Pjから同一となるはずのmk(のハッシュ値)を受信し、少なくとも2つ以上が同一である受信値を正しい値として採用することで、他の参加者Pjの中に不正者が紛れたとしても正しい値を判別することができる。つまり、参加者の中に不正者が紛れたとしても処理を停止することなく、正しい計算を得ることができるGuaranteed Output Delivery (GOD)が実現されている。また、上記処理では、ハッシュ関数を用いているが、通信量の削減を目的として利用しているのであり、出力から入力が推定されたとしても安全性に影響を与えないので、標準モデルにおいてGuaranteed Output Delivery (GOD)が実現されている。
【0071】
[ビット変換]
ビット変換とは、位数2の剰余類環Z上の論理シェア[x]Bから位数nの剰余類環Z上の算術シェア[x]を得るビット変換:[x]←BC([x]B)である。まず、ローカル再分散として、論理シェアから、自己が保持していないサブシェアをゼロに設定することで他の秘密計算サーバ装置との通信を伴うことなく算術シェアに再分散する。具体的には以下のように行う。
【0072】
各参加者Pi(i=0,1,2,3,4)は以下のように、[x0]iを設定する。
P0: [x0]0 = (x0, 0, 0, 0)
P1: [x0]1 = (0, 0, 0, 0)
P2: [x0]2 = (0, 0, 0, x0)
P3: [x0]3 = (0, 0, x0, 0)
P4: [x0]4 = (0, x0, 0, 0)
【0073】
各参加者Pi(i=0,1,2,3,4)は以下のように、[x1]iを設定する。
P0: [x1]0 = (0, x1, 0, 0)
P1: [x1]1 = (x1, 0, 0, 0)
P2: [x1]2 = (0, 0, 0, 0)
P3: [x1]3 = (0, 0, 0, x1)
P4: [x1]4 = (0, 0, x1, 0)
【0074】
各参加者Pi(i=0,1,2,3,4)は以下のように、[x2]iを設定する。
P0: [x2]0 = (0, 0, x2, 0)
P1: [x2]1 = (0, x2, 0, 0)
P2: [x2]2 = (x2, 0, 0, 0)
P3: [x2]3 = (0, 0, 0, 0)
P4: [x2]4 = (0, 0, 0, x2)
【0075】
各参加者Pi(i=0,1,2,3,4)は以下のように、[x3]iを設定する。
P0: [x3]0 = (0, 0, 0, x3)
P1: [x3]1 = (0, 0, x3, 0)
P2: [x3]2 = (0, x3, 0, 0)
P3: [x3]3 = (x3, 0, 0, 0)
P4: [x3]4 = (0, 0, 0, 0)
【0076】
各参加者Pi(i=0,1,2,3,4)は以下のように、[x4]iを設定する。
P0: [x4]0 = (0, 0, 0, 0)
P1: [x4]1 = (0, 0, 0, x4)
P2: [x4]2 = (0, 0, x4, 0)
P3: [x4]3 = (0, x4, 0, 0)
P4: [x4]4 = (x4, 0, 0, 0)
【0077】
なお、上記ローカル再分散は、通信を伴った計算ではないので、参加者の中に不正者が紛れたとしても計算の実行に影響を及ぼさない。
【0078】
次に、上記のように再分散された算術シェアを用いて通信を伴った秘密計算を行い、論理シェアをビット変換した算術シェアを得る。なお、ここで再度の注意を述べるが、例えば、(1, 0, 0, 0, 0)と(1, 1, 1, 1, 1)は、位数2の剰余類環Z2の元x∈Z2の剰余類環Z2上のシェアとしては同値であっても、位数nの剰余類環Znの元x∈Znの剰余類環Zn上のシェアとしては同値にならない。これは、排他的論理和を用いた分解は、算術和の分解に対応しないからである。そこで、排他的論理和と算術和との違いを相殺するために以下のような秘密計算を行う。
【0079】
【数7】



【0080】
ここで、上記秘密計算は、2乗が含まれているので乗算の秘密計算を含む。そして、乗算の秘密計算では、他の秘密計算サーバ装置との間で通信が必要となる。そこで、上述の[秘密計算(乗算)]を用い、少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの受信値を比較し、少なくとも2つ以上が同一である受信値を正しい値として採用することで、通信を伴った秘密計算における受信値を検証する。
【0081】
以上のように、第2の実施形態の秘密計算システム200および秘密計算方法は、少なくとも3人の他の参加者から同一となるはずの受信値を受信し、少なくとも2つ以上が同一である受信値を正しい値として採用することで、他の参加者の中に不正者が紛れたとしても正しい値を判別することができる。すなわち、不正者が紛れたとしても処理を停止することなく、正しい計算を得ることができるGuaranteed Output Delivery (GOD)が実現されている。
【0082】
また、上記処理では、ハッシュ関数を用いているが、通信量の削減を目的として利用しているのであり、出力から入力が推定されたとしても安全性に影響を与えないので、標準モデルにおいてGuaranteed Output Delivery (GOD)が実現されている。さらに、本実施形態の秘密計算システム200および秘密計算方法は、最初に通信を伴うことなく再分散(ローカル再分散)を行い、その後に通信を伴った秘密計算を行うので、通信コストが低減されている。
【0083】
[第3の実施形態]
以下、図6および図7を参照して、第3の実施形態に係る秘密計算システムおよび秘密計算サーバ装置について説明する。
【0084】
図6は、第3の実施形態における秘密計算システムの機能構成例を示すブロック図である。図6に示すように、第3の実施形態による秘密計算システム300は、第1の秘密計算サーバ装置300_0と第2の秘密計算サーバ装置300_1と第3の秘密計算サーバ装置300_2と第4の秘密計算サーバ装置300_3と第5の秘密計算サーバ装置300_4とを備えている。第1の秘密計算サーバ装置300_0、第2の秘密計算サーバ装置300_1、第3の秘密計算サーバ装置300_2、第4の秘密計算サーバ装置300_3、および第5の秘密計算サーバ装置300_4は、それぞれが互いにネットワーク経由で通信可能に接続されている。
【0085】
第1~第5の秘密計算サーバ装置300_i(i=0,1,2,3,4)を備える秘密計算システム300においては、第1~第5の秘密計算サーバ装置300_i(i=0,1,2,3,4)の内のいずれかの秘密計算サーバ装置300_iが入力した値に対し、その入力や計算過程の値を知られることなく目的のシェアを計算し、その計算結果を第1~第5の秘密計算サーバ装置300_i(i=0,1,2,3,4)に分散して記憶することができる。
【0086】
さらに、第1~第5の秘密計算サーバ装置300_i(i=0,1,2,3,4)を備える秘密計算システム300においては、第1~第5の秘密計算サーバ装置300_i(i=0,1,2,3,4)のうち1つが不正者によって運営されている場合であっても、処理を停止することなく、正しい秘密計算を継続することができる。
【0087】
図7は、第3の実施形態における秘密計算サーバ装置の機能構成例を示すブロック図である。本実施形態秘密計算システム300は、図7に示すように、第1~第5の秘密計算サーバ装置300_i(i=0,1,2,3,4)が、ローカル再分散部301_iと秘密計算部302_iと比較検証部303_iと再分散部304_iを備える。
【0088】
ローカル再分散部301_iは、論理シェアから、自己が保持していないサブシェアをゼロに設定することで他の秘密計算サーバ装置との通信を伴うことなく算術シェアを計算し、秘密計算部302_iは、論理シェアをビット変換した算術シェアを得るために、ローカル再分散部301_iが得た算術シェアを用いて通信を伴った秘密計算を行う。そして、比較検証部303_iは、少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの受信値を比較し、少なくとも2つ以上が同一である受信値を正しい値として採用することで、通信を伴った秘密計算における受信値を検証する。再分散部304_iは、論理シェアにおけるサブシェアから計算された一時的変数を算術シェアとして再分散する。
【0089】
このように、第3の実施形態における秘密計算サーバ装置300_iは、第2の実施形態における秘密計算サーバ装置200_iの構成に加えて再分散部304_iを備えている。この再分散部304_iの役割を秘密計算方法の中で説明すると、以下のようになる。図8は、秘密計算方法の手順の概略を示すフローチャートである。
【0090】
図8に示すように、本実施形態に係る秘密計算方法は、再分散ステップ(S21)とローカル再分散ステップ(S22)と通信を伴った秘密計算ステップ(S23)と比較検証ステップ(S24)とを有する。再分散ステップ(S21)では、論理シェアにおけるサブシェアから計算された一時的変数を算術シェアとして再分散し、ローカル再分散ステップ(S22)では、論理シェアから、自己が保持していないサブシェアをゼロに設定することで他の秘密計算サーバ装置との通信を伴うことなく算術シェアを計算する。なお、再分散ステップ(S21)とローカル再分散ステップ(S22)は順序が逆になってもよい。
【0091】
通信を伴った秘密計算ステップ(S23)では、論理シェアをビット変換した算術シェアを得るために、再分散された算術シェアを用いて通信を伴った秘密計算を行う。そして、比較検証ステップ(S24)にて、少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの受信値を比較し、少なくとも2つ以上が同一である受信値を正しい値として採用することで、通信を伴った秘密計算における受信値を検証する。なお、比較検証ステップ(S24)は、通信を伴った秘密計算を行う度に行う。したがって、通信を伴った秘密計算ステップ(S23)の受信値に対してだけではなく、再分散ステップ(S21)の受信値に対しても比較検証ステップ(S24)が行われる。
【0092】
[再分散]
まず、本実施形態において追加された再分散部304_iの機能について説明する。本実施形態で用いられる再分散は、以下のように定義される。すなわち、参加者Pi,Pi+1,Pi+2が値cを保持していた場合に、シードと識別子から決定的に定められる再分散である。
【0093】
【数8】


【0094】
ただし、rj = Fn(vidk, seedi+2)かつr´j = Fn(vidk+1, seedi+3)であり、シードseedi∈{0,1}κ(i=0, 1, 2, 3, 4)は、先述の[疑似乱数の生成とシードの共有]の項で説明した性質のシードである。したがって、参加者Pi+3は、seedi+2を知らず、また、参加者Pi+4は、seedi+3を知らない。つまり、参加者Pi+3, Pi+4は、自分でci+3,ci+4を計算することができず、参加者Pi,Pi+1,Pi+2からci+3,ci+4を受信する必要がある。
【0095】
ここで、通信を伴った秘密計算が発生するので、参加者Pi+3, Pi+4は、参加者Pi,Pi+1,Pi+2から受信した同一の値となるはずの受信値ci+3,ci+4を比較し、少なくとも2つ以上が同一である受信値を正しい値として採用する。具体的には、以下のように行うことができる。
【0096】
参加者Pi,Pi+1は、cj+1,cj+2,cj+3(j=i+3)を参加者Pi+3に送信する。一方、参加者Pi+2は、cj+1,cj+2,cj+3(j=i+3)のハッシュ値を各参加者に送信する。さらに、参加者Pi,Pi+1は、cj´+1,cj´+2,cj´+3(j´=i+3)を参加者Pi+4に送信する。一方、参加者Pi+2は、cj´+1,cj´+2,cj´+3(j´=i+3)を各参加者に送信する。そして、参加者Pi+3, Pi+4は、参加者Pi,Pi+1,Pi+2から受信した受信値のうち少なくとも2つ以上が同一である受信値を正しい値として採用する。
【0097】
次に、上記説明した再分散をビット変換の中でどのように用いるかを説明する。
【0098】
[ビット変換]
ビット変換とは、位数2の剰余類環Z上の論理シェア[x]Bから位数nの剰余類環Z上の算術シェア[x]を得るビット変換:[x]←BC([x]B)であった。まず、参加者P3,P4,P0および参加者P0,P1,P2は、それぞれ以下のように、論理シェア[x]Bにおけるサブシェアxiから計算された一時的変数y0,y1を計算する。
【0099】
【数9】

【0100】
次に、参加者P3,P4,P0および参加者P0,P1,P2は、一時的変数y0,y1を再分散する。
【数10】

【0101】
なお、上記再分散は、通信を伴った秘密計算であるので、既に説明したように、参加者Pi+3, Pi+4は、参加者Pi,Pi+1,Pi+2から受信した受信値のうち少なくとも2つ以上が同一である受信値を正しい値として採用する。
【0102】
一方、各参加者Pi(i=0,1,2,3,4)は以下のように、[x4]iを設定する。なお、この処理は通信を伴った秘密計算ではないので、検証は必要ない。
P0: [x4]0 = (0, 0, 0, 0)
P1: [x4]1 = (0, 0, 0, x4)
P2: [x4]2 = (0, 0, x4, 0)
P3: [x4]3 = (0, x4, 0, 0)
P4: [x4]4 = (x4, 0, 0, 0)
【0103】
そして、最終的に、一時的変数y0,y1の算術シェアと算術シェア[x4]i(i=0,1,2,3,4)とを用いて、前記論理シェアをビット変換した算術シェアを以下のように秘密計算する。
【0104】
【数11】

【0105】
なお、ここでも、上記秘密計算は、乗算の秘密計算を含むので、上述の[秘密計算(乗算)]を用い、少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの受信値を比較し、少なくとも2つ以上が同一である受信値を正しい値として採用することで、通信を伴った秘密計算における受信値を検証する。
【0106】
以上のように、第3の実施形態の秘密計算システム300および秘密計算方法は、少なくとも3人の他の参加者から同一となるはずの受信値を受信し、少なくとも2つ以上が同一である受信値を正しい値として採用することで、他の参加者の中に不正者が紛れたとしても正しい値を判別することができる。すなわち、不正者が紛れたとしても処理を停止することなく、正しい計算を得ることができるGuaranteed Output Delivery (GOD)が実現されている。
【0107】
また、上記処理では、ハッシュ関数を用いているが、通信量の削減を目的として利用しているのであり、出力から入力が推定されたとしても安全性に影響を与えないので、標準モデルにおいてGuaranteed Output Delivery (GOD)が実現されている。さらに、本実施形態の秘密計算システム300および秘密計算方法は、最初に通信を伴うことなく再分散(ローカル再分散)を行い、その後に通信を伴った秘密計算を行うので、通信コストが低減されている。
【0108】
特に、第3の実施形態の秘密計算システム300および秘密計算方法は、通信を伴った再分散と通信を伴わない再分散とを組み合わせて用いているので、第2の実施形態よりも通信コストが低減されている。具体的には、第2の実施形態の通信コストは、ラウンド数が3ラウンドであり、通信量が160kビットである。一方、第3の実施形態の通信コストは、ラウンド数が3ラウンドであり、通信量が112kビットである。つまり、第3の実施形態の秘密計算システム300および秘密計算方法は、第2の実施形態との比較において、ラウンド数が同じでありながら、通信量48kビット削減することができている。
【0109】
[ハードウェア構成例]
図9は、秘密計算サーバ装置のハードウェア構成例を示す図である。すなわち、図9に示すハードウェア構成例は、秘密計算サーバ装置100_i,200_i,300_i(i=0,1,2,3,4)のハードウェア構成例である。図9に示すハードウェア構成を採用した情報処理装置(コンピュータ)は、上記説明した秘密計算方法をプログラムとして実行することで、秘密計算サーバ装置100_i,200_i,300_i(i=0,1,2,3,4)の各機能を実現することを可能にする。
【0110】
ただし、図9に示すハードウェア構成例は、秘密計算サーバ装置100_i,200_i,300_i(i=0,1,2,3,4)の各機能を実現するハードウェア構成の一例であり、秘密計算サーバ装置100_i,200_i,300_i(i=0,1,2,3,4)のハードウェア構成を限定する趣旨ではない。秘密計算サーバ装置100_i,200_i,300_i(i=0,1,2,3,4)は、図9に示さないハードウェアを含むことができる。
【0111】
図9に示すように、秘密計算サーバ装置100_i,200_i,300_i(i=0,1,2,3,4)が採用し得るハードウェア構成10は、例えば内部バスにより相互に接続される、CPU(Central Processing Unit)11、主記憶装置12、補助記憶装置13、およびIF(Interface)部14を備える。
【0112】
CPU11は、秘密計算サーバ装置100_i,200_i,300_i(i=0,1,2,3,4)が実行する秘密計算プログラムに含まれる各指令を実行する。主記憶装置12は、例えばRAM(Random Access Memory)であり、秘密計算サーバ装置100_i,200_i,300_i(i=0,1,2,3,4)が実行する秘密計算プログラムなどの各種プログラムなどをCPU11が処理するために一時記憶する。
【0113】
補助記憶装置13は、例えば、HDD(Hard Disk Drive)であり、秘密計算サーバ装置100_i,200_i,300_i(i=0,1,2,3,4)が実行する秘密計算プログラムなどの各種プログラムなどを中長期的に記憶しておくが可能である。秘密計算プログラムなどの各種プログラムは、非一時的なコンピュータ可読記録媒体(non-transitory computer-readable storage medium)に記録されたプログラム製品として提供することができる。補助記憶装置13は、非一時的なコンピュータ可読記録媒体に記録された秘密計算プログラムなどの各種プログラムを中長期的に記憶することに利用することが可能である。IF部14は、秘密計算サーバ装置100_i,200_i,300_i(i=0,1,2,3,4)間の入出力に関するインターフェイスを提供する。
【0114】
上記のようなハードウェア構成10を採用した情報処理装置は、先述した秘密計算方法をプログラムとして実行することで、秘密計算サーバ装置100_i,200_i,300_i(i=0,1,2,3,4)の各機能を実現する。
【0115】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
[付記1]
相互にネットワークで接続した5台の秘密計算サーバ装置を備え、秘密分散して保持されている位数2の剰余類環上の論理シェアから位数n(n=2;mは2以上の整数)の剰余類環上の算術シェアにビット変換する秘密計算システムであって、
前記秘密計算サーバ装置のそれぞれが、
前記論理シェアから、自己が保持していないサブシェアをゼロに設定することで他の秘密計算サーバ装置との通信を伴うことなく算術シェアを計算するローカル再分散部と、
前記論理シェアをビット変換した算術シェアを得るために、前記ローカル再分散部が得た算術シェアを用いて通信を伴った秘密計算を行う秘密計算部と、
少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの受信値を比較し、少なくとも2つ以上が同一である受信値を正しい値として採用する比較検証部と、
を有し、
前記通信を伴った秘密計算における受信値を前記比較検証部が検証する、秘密計算システム。
[付記2]
前記秘密計算サーバ装置のそれぞれが、
前記論理シェアにおけるサブシェアから計算された一時的変数を算術シェアとして分散する再分散部をさらに有し、
前記再分散部が分散した前記一時的変数の算術シェアの受信値を前記比較検証部が検証し、
前記再分散部が分散した前記一時的変数の算術シェアと前記ローカル再分散部が得た算術シェアとを用いて、前記論理シェアをビット変換した算術シェアを秘密計算する、付記1に記載の秘密計算システム。
[付記3]
前記一時的変数は、前記秘密計算サーバ装置の5台のうち3台が共通して保持している前記論理シェアにおけるサブシェアから計算され、
前記再分散部は、前記3台の秘密計算サーバ装置が共通して計算する前記一時的変数から決定的に生成した算術シェアを分散し、
前記比較検証部は、前記3台の秘密計算サーバ装置から受信した算術シェアに対して、少なくとも2つ以上が同一である受信値を正しい値として採用する、付記2に記載の秘密計算システム。
[付記4]
前記比較検証部は、前記受信値のハッシュ値が同一であることを判断して、前記受信値が正しい値であることを判断する、付記1から付記3のいずれか1つに記載の秘密計算システム。
[付記5]
秘密分散して保持されている位数2の剰余類環上の論理シェアから位数n(n=2;mは2以上の整数)の剰余類環上の算術シェアにビット変換するために、相互にネットワークで接続した少なくとも5台の秘密計算サーバ装置の一つであって、
前記論理シェアから、自己が保持していないサブシェアをゼロに設定することで他の秘密計算サーバ装置との通信を伴うことなく算術シェアを計算するローカル再分散部と、
前記論理シェアをビット変換した算術シェアを得るために、前記ローカル再分散部が得た算術シェアを用いて通信を伴った秘密計算を行う秘密計算部と、
少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの受信値を比較し、少なくとも2つ以上が同一である受信値を正しい値として採用する比較検証部と、
を有し、
前記通信を伴った秘密計算における受信値を前記比較検証部が検証する、秘密計算サーバ装置。
[付記6]
相互にネットワークで接続した5台の秘密計算サーバ装置を用いて、秘密分散して保持されている位数2の剰余類環上の論理シェアから位数n(n=2;mは2以上の整数)の剰余類環上の算術シェアにビット変換する秘密計算方法であって、
前記秘密計算サーバ装置のそれぞれが、
前記論理シェアから、自己が保持していないサブシェアをゼロに設定することで他の秘密計算サーバ装置との通信を伴うことなく算術シェアに再分散し、
前記論理シェアをビット変換した算術シェアを得るために、前記再分散された算術シェアを用いて通信を伴った秘密計算を行い、
少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの受信値を比較し、少なくとも2つ以上が同一である受信値を正しい値として採用することで、前記通信を伴った秘密計算における受信値を検証する、秘密計算方法。
[付記7]
前記秘密計算サーバ装置のそれぞれが、
前記論理シェアにおけるサブシェアから計算された一時的変数を算術シェアとして再分散し、
少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの受信値を比較し、少なくとも2つ以上が同一である受信値を正しい値として採用することで、前記再分散した前記一時的変数の算術シェアの受信値を検証し、
前記再分散した前記一時的変数の算術シェアと前記通信を伴うことなく計算した算術シェアとを用いて、前記論理シェアをビット変換した算術シェアを秘密計算する、付記6に記載の秘密計算方法。
[付記8]
前記一時的変数を、前記秘密計算サーバ装置の5台のうち3台が共通して保持している前記論理シェアにおけるサブシェアから計算し、
前記3台の秘密計算サーバ装置が共通して計算する前記一時的変数から決定的に生成した算術シェアを再分散し、
前記3台の秘密計算サーバ装置から受信した算術シェアに対して、少なくとも2つ以上が同一である受信値を正しい値として採用する、付記7に記載の秘密計算方法。
[付記9]
前記受信値が正しい値であることを判断する際には、前記受信値のハッシュ値が同一であることを用いて判断する、付記6から付記8のいずれか1つに記載の秘密計算方法。
[付記10]
相互にネットワークで接続した少なくとも5台以上の秘密計算サーバ装置に、秘密分散して保持されている値の秘密計算をさせる秘密計算プログラムであって、
相互にネットワークで接続した5台の秘密計算サーバ装置に、秘密分散して保持されている位数2の剰余類環上の論理シェアから位数n(n=2;mは2以上の整数)の剰余類環上の算術シェアにビット変換をさせる秘密計算プログラムであって、
前記秘密計算サーバ装置のそれぞれが、
前記論理シェアから、自己が保持していないサブシェアをゼロに設定することで他の秘密計算サーバ装置との通信を伴うことなく算術シェアに再分散し、
前記論理シェアをビット変換した算術シェアを得るために、前記再分散された算術シェアを用いて通信を伴った秘密計算を行い、
少なくとも3台以上の秘密計算サーバ装置から受信した同一の値となるはずの受信値を比較し、少なくとも2つ以上が同一である受信値を正しい値として採用することで、前記通信を伴った秘密計算における受信値を検証する、秘密計算プログラム。
【0116】
なお、引用した上記の特許文献の開示は、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択(部分的削除を含む)が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。さらに、上記引用した文献の各開示事項は、必要に応じ、本発明の趣旨に則り、本発明の開示の一部として、その一部又は全部を、本書の記載事項と組み合わせて用いることも、本願の開示事項に含まれるものと、みなされる。
【符号の説明】
【0117】
100,200,300 秘密計算システム
100_i,200_i,300_i 秘密計算サーバ装置
101_i,201_i,301_i ローカル再分散部
102_i,202_i,302_i 秘密計算部
103_i,203_i,303_i 比較検証部
304_i 再分散部
10 ハードウェア構成
11 CPU(Central Processing Unit)
12 主記憶装置
13 補助記憶装置
14 IF(Interface)部
図1
図2
図3
図4
図5
図6
図7
図8
図9