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

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

▶ 日本電気株式会社の特許一覧 ▶ 国立大学法人 筑波大学の特許一覧

特許7495677秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム
<>
  • 特許-秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム 図1
  • 特許-秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム 図2
  • 特許-秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム 図3
  • 特許-秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム 図4
  • 特許-秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム 図5
  • 特許-秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム 図6
  • 特許-秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム 図7
  • 特許-秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム 図8
  • 特許-秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム 図9
  • 特許-秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム 図10
  • 特許-秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム 図11
  • 特許-秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-28
(45)【発行日】2024-06-05
(54)【発明の名称】秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム
(51)【国際特許分類】
   G09C 1/00 20060101AFI20240529BHJP
【FI】
G09C1/00 650Z
【請求項の数】 10
(21)【出願番号】P 2022563533
(86)(22)【出願日】2020-11-20
(86)【国際出願番号】 JP2020043444
(87)【国際公開番号】W WO2022107323
(87)【国際公開日】2022-05-27
【審査請求日】2023-05-19
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(73)【特許権者】
【識別番号】504171134
【氏名又は名称】国立大学法人 筑波大学
(74)【代理人】
【識別番号】100080816
【弁理士】
【氏名又は名称】加藤 朝道
(74)【代理人】
【識別番号】100098648
【弁理士】
【氏名又は名称】内田 潔人
(72)【発明者】
【氏名】土田 光
(72)【発明者】
【氏名】西出 隆志
【審査官】行田 悦資
(56)【参考文献】
【文献】国際公開第2019/059069(WO,A1)
【文献】国際公開第2020/145340(WO,A1)
【文献】KELLER, M. et al.,Efficient, Oblivious Data Structures for MPC,Advances in Cryptology - ASIACRYPT 2014,ドイツ,Springer,2014年,pp.506-525,Lecture Notes in Computer Science, vol. 8874, <DOI:10.1007/978-3-662-45608-8_27>
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置を備え、インデックスを表すシェアの入力に対して、シェアの配列の中から前記インデックスに対応する配列の要素のシェアを参照する秘密計算システムであって、
前記秘密計算サーバ装置のそれぞれが、
前記入力に係るインデックスを表すシェアと前記配列が取り得るインデックスのシェアの組み合わせとから、前記入力に係るインデックスが特定の値に対応するように構成された判別用シェアを計算する判別シェア生成部と、
前記配列が取り得るインデックスの組み合わせの全てに対して、前記配列の要素のシェアと前記判別用シェアとの組み合わせを構成する組み合わせ構成部と、
前記組み合わせに対してシャッフルを行うシャッフル部と、
前記シャッフルされた前記組み合わせにおける前記判別用シェアを復元する復元部と、
前記復元された値が前記特定の値である前記組み合わせにおける前記配列の要素のシェアを選択する選択部と、
を有する秘密計算システム。
【請求項2】
前記判別シェア生成部は、前記入力に係るインデックスを表すシェアおよび取り得るインデックスのシェアを二進数のシェアに変換したのちに前記判別用シェアを計算する、請求項1に記載の秘密計算システム。
【請求項3】
前記判別シェア生成部は、二進数のシェアに変換した前記入力に係るインデックスを表すシェアと取り得るインデックスのシェアに対する排他的論理和を用いて前記判別用シェアを計算する、請求項2に記載の秘密計算システム。
【請求項4】
N台の秘密計算サーバ装置を備え、(t+1,N)―加法的秘密分散方式を用いて秘密計算を行う、請求項2または請求項3に記載の秘密計算システム。
【請求項5】
前記判別シェア生成部は、前記入力に係るインデックスを表すシェアと取り得るインデックスのシェアとの算術差を用いて前記判別用シェアを計算する、請求項1に記載の秘密計算システム。
【請求項6】
前記判別シェア生成部は、前記算術差に非ゼロ乱数を掛けて前記判別用シェアを計算する、請求項5に記載の秘密計算システム。
【請求項7】
N台の秘密計算サーバ装置を備え、(t+1,N)―シャミア秘密分散方式を用いて秘密計算を行う、請求項5または請求項6に記載の秘密計算システム。
【請求項8】
インデックスを表すシェアの入力に対して、シェアの配列の中から前記インデックスに対応する配列の要素のシェアを参照するために、相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置の一つであって、
前記入力に係るインデックスを表すシェアと前記配列が取り得るインデックスのシェアの組み合わせとから、前記入力に係るインデックスが特定の値に対応するように構成された判別用シェアを計算する判別シェア生成部と、
前記配列が取り得るインデックスの組み合わせの全てに対して、前記配列の要素のシェアと前記判別用シェアとの組み合わせを構成する組み合わせ構成部と、
前記組み合わせに対してシャッフルを行うシャッフル部と、
前記シャッフルされた前記組み合わせにおける前記判別用シェアを復元する復元部と、
前記復元された値が前記特定の値である前記組み合わせにおける前記配列の要素のシェアを選択する選択部と、
を有する秘密計算サーバ装置。
【請求項9】
相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置を備え、インデックスを表すシェアの入力に対して、シェアの配列の中から前記インデックスに対応する配列の要素のシェアを参照する秘密計算方法であって、
前記秘密計算サーバ装置のそれぞれが、
前記入力に係るインデックスを表すシェアと前記配列が取り得るインデックスのシェアの組み合わせとから、前記入力に係るインデックスが特定の値に対応するように構成された判別用シェアを計算し、
前記配列が取り得るインデックスの組み合わせの全てに対して、前記配列の要素のシェアと前記判別用シェアとの組み合わせを構成し、
前記組み合わせに対してシャッフルを行い、
前記シャッフルされた前記組み合わせにおける前記判別用シェアを復元し、
前記復元された値が前記特定の値である前記組み合わせにおける前記配列の要素のシェアを選択する、秘密計算方法。
【請求項10】
相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置に、インデックスを表すシェアの入力に対して、シェアの配列の中から前記インデックスに対応する配列の要素のシェアを参照する秘密計算プログラムであって、
前記入力に係るインデックスを表すシェアと前記配列が取り得るインデックスのシェアの組み合わせとから、前記入力に係るインデックスが特定の値に対応するように構成された判別用シェアを計算し、
前記配列が取り得るインデックスの組み合わせの全てに対して、前記配列の要素のシェアと前記判別用シェアとの組み合わせを構成し、
前記組み合わせに対してシャッフルを行い、
前記シャッフルされた前記組み合わせにおける前記判別用シェアを復元し、
前記復元された値が前記特定の値である前記組み合わせにおける前記配列の要素のシェアを選択する、
処理を有する秘密計算プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラムに関するものである。
【背景技術】
【0002】
近年、秘密計算と呼ばれる技術の研究開発が盛んに行われている。秘密計算は、第三者に対して計算過程とその結果を秘密にしつつ所定の処理を実行する技術の一つである。秘密計算における代表的な技術の一つとして、マルチパーティ計算技術が挙げられる。マルチパーティ計算技術では、秘密にするデータを複数のサーバ(秘密計算サーバ装置)に分散配置し、参加者にも秘密にしたまま当該データの任意の演算を実行する。なお、各秘密計算サーバ装置に分散配置したデータをシェアと呼ぶ。以降、特に断りがない限り、本書で「秘密計算」という語を用いた場合は、マルチパーティ計算技術を用いた秘密計算を意味するものとする。
【0003】
秘密計算の処理の一つとして、配列参照が存在する。配列参照とは、配列して格納された要素を参照するための処理であり、秘密計算における配列参照では、配列におけるどの要素を参照するかを示すインデックスも秘密にすることが要請される。すなわち、配列におけるどの要素にアクセスしているかさえも秘密にしたまま、所望の配列の要素に読み出しおよび書き込みを行うことが要求されている。
【0004】
例えば、与信判断などでは、複数の判断項目を用いて判断を行うが、判断項目の内容だけではなく、どの判断項目を用いて判断が行われたのかも秘密にしておきたいという状況もある。このような需要に対して、インデックスを秘密とする配列参照の秘密計算の応用例が存在している。また、配列におけるどの要素にアクセスしているかのパターンを解析することで情報が漏洩する可能性もあり、アクセスパターンを秘密にしたまま配列の要素へアクセスすることは、セキュリティ上のメリットもある。
【先行技術文献】
【非特許文献】
【0005】
【文献】BLANTON, Marina; KANG, Ah Reum; YUAN, Chen. Improved Building Blocks for Secure Multi-Party Computation based on Secret Sharing with Honest Majority. IACR Cryptol. ePrint Arch., 2019, 2019: 718. (Accepted in ACNS 2020)
【発明の概要】
【発明が解決しようとする課題】
【0006】
なお、上記先行技術文献の開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者らによってなされたものである。
【0007】
ところで、マルチパーティ計算技術を用いる秘密計算では、秘匿するデータを複数のサーバに分散配置した状態で処理を行うので、処理の効率化という観点では、通信コストの低減が課題となる。この通信コストは、通信の対象となるデータ量を表す通信量と、最大限の並列化を行った場合の通信の回数を表すラウンド数に分解できる。そして、通信量およびラウンド数に対して、小さくするための研究および開発が行われている(例えば、非特許文献1参照)。
【0008】
一方、配列参照の秘密計算では、他の秘密計算と組み合わさる際の柔軟性という観点も重要になる。配列参照のみを行う秘密計算のシステムを構築することは稀であり、通常は他の秘密計算と組み合わせて秘密計算のシステムを構築するからである。秘密計算のベースとなる体系には、環や体などの代数的構造または3パーティや4パーティなどの参加者数の違いがある。
【0009】
そして、これらの通信コストの低減と柔軟性の両立は容易ではない。つまり、ある特定の体系の下では通信コストを少なくすることができたとしても、その他の体系の秘密計算に適用することが困難であることが生じる。例えば、非特許文献1に記載の方式では、環の代数的構造を用いた4パーティ以上の秘密計算には拡張ができない。したがって、他の秘密計算と組み合わさる際の柔軟性を損なうことなく、通信コストを低減することが望まれている。
【0010】
本発明の目的は、上述した課題を鑑み、他の秘密計算と組み合わさる際の柔軟性を損なうことなく、通信コストを低減することに寄与する秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラムを提供することである。
【課題を解決するための手段】
【0011】
本発明の第1の視点では、相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置を備え、インデックスを表すシェアの入力に対して、シェアの配列の中から前記インデックスに対応する配列の要素のシェアを参照する秘密計算システムであって、前記秘密計算サーバ装置のそれぞれが、前記入力に係るインデックスを表すシェアと前記配列が取り得るインデックスのシェアの組み合わせとから、前記入力に係るインデックスが特定の値に対応するように構成された判別用シェアを計算する判別シェア生成部と、前記配列が取り得るインデックスの組み合わせの全てに対して、前記配列の要素のシェアと前記判別用シェアとの組み合わせを構成する組み合わせ構成部と、前記組み合わせに対してシャッフルを行うシャッフル部と、前記シャッフルされた前記組み合わせにおける前記判別用シェアを復元する復元部と、前記復元された値が前記特定の値である前記組み合わせにおける前記配列の要素のシェアを選択する選択部と、を有する秘密計算システムが提供される。
【0012】
本発明の第2の視点では、インデックスを表すシェアの入力に対して、シェアの配列の中から前記インデックスに対応する配列の要素のシェアを参照するために、相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置の一つであって、前記入力に係るインデックスを表すシェアと前記配列が取り得るインデックスのシェアの組み合わせとから、前記入力に係るインデックスが特定の値に対応するように構成された判別用シェアを計算する判別シェア生成部と、前記配列が取り得るインデックスの組み合わせの全てに対して、前記配列の要素のシェアと前記判別用シェアとの組み合わせを構成する組み合わせ構成部と、前記組み合わせに対してシャッフルを行うシャッフル部と、前記シャッフルされた前記組み合わせにおける前記判別用シェアを復元する復元部と、前記復元された値が前記特定の値である前記組み合わせにおける前記配列の要素のシェアを選択する選択部と、を有する秘密計算サーバ装置が提供される。
【0013】
本発明の第3の視点では、相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置を備え、インデックスを表すシェアの入力に対して、シェアの配列の中から前記インデックスに対応する配列の要素のシェアを参照する秘密計算方法であって、前記秘密計算サーバ装置のそれぞれが、前記入力に係るインデックスを表すシェアと前記配列が取り得るインデックスのシェアの組み合わせとから、前記入力に係るインデックスが特定の値に対応するように構成された判別用シェアを計算し、前記配列が取り得るインデックスの組み合わせの全てに対して、前記配列の要素のシェアと前記判別用シェアとの組み合わせを構成し、前記組み合わせに対してシャッフルを行い、前記シャッフルされた前記組み合わせにおける前記判別用シェアを復元し、前記復元された値が前記特定の値である前記組み合わせにおける前記配列の要素のシェアを選択する、秘密計算方法が提供される。
【0014】
本発明の第4の視点では、相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置に、インデックスを表すシェアの入力に対して、シェアの配列の中から前記インデックスに対応する配列の要素のシェアを参照する秘密計算プログラムであって、前記入力に係るインデックスを表すシェアと前記配列が取り得るインデックスのシェアの組み合わせとから、前記入力に係るインデックスが特定の値に対応するように構成された判別用シェアを計算し、前記配列が取り得るインデックスの組み合わせの全てに対して、前記配列の要素のシェアと前記判別用シェアとの組み合わせを構成し、前記組み合わせに対してシャッフルを行い、前記シャッフルされた前記組み合わせにおける前記判別用シェアを復元し、前記復元された値が前記特定の値である前記組み合わせにおける前記配列の要素のシェアを選択する、処理を有する秘密計算プログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント(non-transient)なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【0015】
本発明の各視点によれば、他の秘密計算と組み合わさる際の柔軟性を損なうことなく、通信コストを低減することに寄与する秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラムを提供することができる。
【図面の簡単な説明】
【0016】
図1図1は、第1の実施形態における秘密計算システムの機能構成例を示すブロック図である。
図2図2は、第1の実施形態における秘密計算サーバ装置の機能構成例を示すブロック図である。
図3図3は、秘密計算方法の手順の概略を示すフローチャートである。
図4図4は、第2の実施形態における秘密計算システムの機能構成例を示すブロック図である。
図5図5は、第2の実施形態における秘密計算サーバ装置の機能構成例を示すブロック図である。
図6図6は、第3の実施形態における秘密計算システムの機能構成例を示すブロック図である。
図7図7は、第3の実施形態における秘密計算サーバ装置の機能構成例を示すブロック図である。
図8図8は、第4の実施形態における秘密計算システムの機能構成例を示すブロック図である。
図9図9は、第4の実施形態における秘密計算サーバ装置の機能構成例を示すブロック図である。
図10図10は、第5の実施形態における秘密計算システムの機能構成例を示すブロック図である。
図11図11は、第5の実施形態における秘密計算サーバ装置の機能構成例を示すブロック図である。
図12図12は、秘密計算サーバ装置のハードウェア構成例を示す図である。
【発明を実施するための形態】
【0017】
以下、図面を参照しながら、本発明の実施形態について説明する。ただし、以下に説明する実施形態により本発明が限定されるものではない。また、各図面において、同一または対応する要素には適宜同一の符号を付している。さらに、図面は模式的なものであり、各要素の寸法の関係、各要素の比率などは、現実のものとは異なる場合があることに留意する必要がある。図面の相互間においても、互いの寸法の関係や比率が異なる部分が含まれている場合がある。
【0018】
[第1の実施形態]
以下、図1図2を参照して、第1の実施形態に係る秘密計算システムおよび秘密計算サーバ装置について説明する。第1の実施形態は、本発明の基本的なコンセプトのみを説明する実施形態である。また、第1の実施形態の説明では、図示などの都合上、3台の秘密計算サーバ装置を備える秘密計算システムについて説明を行うが、後の実施形態でも示すように、本実施形態は3台の秘密計算サーバ装置を備える秘密計算システムに限定されない。
【0019】
図1は、第1の実施形態における秘密計算システムの機能構成例を示すブロック図である。図1に示すように、第1の実施形態による秘密計算システム100は、第1の秘密計算サーバ装置100_1と第2の秘密計算サーバ装置100_2と第3の秘密計算サーバ装置100_3とを備えている。第1の秘密計算サーバ装置100_1、第2の秘密計算サーバ装置100_2、および第3の秘密計算サーバ装置100_3は、それぞれが互いにネットワーク経由で通信可能に接続されている。
【0020】
第1~第3の秘密計算サーバ装置100_i(i=1,2,3)を備える秘密計算システム100においては、第1~第3の秘密計算サーバ装置100_i(i=1,2,3)の内のいずれかの秘密計算サーバ装置100_iが入力した値に対し、その入力や計算過程の値を知られることなく目的のシェアを計算し、その計算結果を第1~第3の秘密計算サーバ装置100_i(i=1,2,3)に分散して記憶することができる。
【0021】
また、第1~第3の秘密計算サーバ装置100_i(i=1,2,3)を備える秘密計算システム100においては、第1~第3の秘密計算サーバ装置100_i(i=1,2,3)に分散して記憶されているシェアに対し、その計算過程の値を知られることなく目的のシェアを計算し、その計算結果を第1~第3の秘密計算サーバ装置100_i(i=1,2,3)に分散して記憶することができる。
【0022】
なお、上記計算結果のシェアは、第1~第3の秘密計算サーバ装置100_1~100_3とシェアを送受信することで、復元してもよい。あるいは、第1~第3の秘密計算サーバ装置100_1~100_3ではない外部にシェアを送信することで、復号してもよい。
【0023】
第1~第3の秘密計算サーバ装置100_i(i=1,2,3)に秘密分散して記憶するシェアの方式は、例えば、複製型秘密分散方式(replicated secret sharing scheme)、加法的秘密分散方式(additive secret sharing scheme)またはシャミア秘密分散方式(Shamir's secret sharing scheme)を用いることができる。例えば、秘密計算システムが用いるベースとなる代数的構造が環である場合は、加法的秘密分散方式を選択し、ベースとなる代数的構造が体である場合は、シャミア秘密分散方式を選択するなど、第1の実施形態の実施に限定されずに適切なものを選択することができる。
【0024】
記法として、インデックスidxのシェアを[idx]と表し、配列のj番目の要素をLjと表し、要素Ljのシェアを[Lj]と表す。すると、インデックスidxを表すシェア[idx]の入力に対して、m個のシェアの配列{[Lj]}j=0 m-1の中からインデックスidxに対応する配列の要素のシェア[Lidx]を参照するアルゴリズムは以下のようなものである。
【0025】
【数1】
【0026】
第1の実施形態における秘密計算システム100は、第1~第3の秘密計算サーバ装置100_i(i=1,2,3)が図2に示すような構成を有することによって、上記アルゴリズムを実現する。図2は、第1の実施形態における秘密計算サーバ装置の機能構成例を示すブロック図である。なお、図2に示す秘密計算サーバ装置100_iは、第1~第3の秘密計算サーバ装置100_i(i=1,2,3)の全てを共通して代表している。
【0027】
図2に示すように、秘密計算サーバ装置100_iは、判別シェア生成部101_iと組み合わせ構成部102_iとシャッフル部103_iと復元部104_iと選択部105_iとを有する。
【0028】
判別シェア生成部101_iは、入力に係るインデックスidxを表すシェア[idx]と、m個の配列{[Lj]}j=0 m-1が取り得るインデックスのシェア{[j]}j=0 m-1の組み合わせとから、入力に係るインデックスidxが特定の値sに対応するように構成された判別用シェア[dj]を計算する。ここで、判別用シェア[dj]の計算の具体的方法は、後述の実施形態の説明の中で開示する。環の代数的構造を用いた秘密計算システムの場合における判別用シェア[dj]の計算の具体的方法は、第2の実施形態の説明の中で開示する。また、体の代数的構造を用いた秘密計算システムの場合における判別用シェア[dj]の計算の具体的方法は、第3の実施形態の説明の中で開示する。本実施形態の説明では、これら判別用シェア[dj]に共通して成り立つ性質を前提に以降の説明を進める。
【0029】
組み合わせ構成部102_iは、配列{[Lj]}j=0 m-1が取り得るインデックスjの組み合わせの全てに対して、配列の要素のシェア[Lj]と判別用シェア[dj]との組み合わせ{[Lj], [dj]}を構成する。
【0030】
シャッフル部103_iは、組み合わせの集合{[Lj], [dj]}j=0 m-1に対してシャッフルを行う。シャッフルとは、{[Lj], [dj]}j=0 m-1におけるインデックスjが1対1で別のインデックスkに置換されたと考えることができるので、シャッフル後の組み合わせを{[Lk], [dk]}k=0 m-1と表現する。なお、ここでのシャッフルとは、個々の秘密計算サーバ装置100_i(i=1,2,3)が独立に行うローカルなシャッフルではなく、各秘密計算サーバ装置100_i(i=1,2,3)が協働して行うシャッフルである。
【0031】
復元部104_iは、シャッフルされた組み合わせ{[Lk], [dk]}k=0 m-1における判別用シェア[dk]を復元する。
【0032】
選択部105_iは、復元された値dkが特定の値sである組み合わせ{[Lk], [dk]}k=0 m-1における配列の要素のシェア[Lk]を選択する。ここで、判別用シェア[dj]の性質として入力に係るインデックスidxが特定の値sに対応するように構成されていることに注意すると、dk=sとなるインデックスkに対して、[Lk]=[Lidx]が成り立つ。したがって、選択部105_iが選択したシェア[Lk]が、所望のインデックスidxに対応する配列の要素のシェア[Lidx]である。
【0033】
第1の実施形態における秘密計算システム100は、第1~第3の秘密計算サーバ装置100_i(i=1,2,3)が上記説明した構成を有することによって、入力されたインデックスidxのシェアを[idx]からインデックスidxを復元することなく、所望のインデックスidxに対応する配列の要素のシェア[Lidx]を参照することができる。すなわち、第1の実施形態における秘密計算システム100は、配列{[Lj]}j=0 m-1におけるどの要素にアクセスしているかさえも秘密にしたまま、所望の配列の要素[Lidx]に読み出しおよび書き込みを行うことができる。
【0034】
第1の実施形態における秘密計算システム100は、後述する第2の実施形態および第3の実施形態に示すように、ベースとする代数的構造が環である場合であっても、ベースとする代数的構造が体である場合であっても、適切に適用できるので、他の秘密計算と組み合わさる際の柔軟性を損なうことはない。また、後述する第4の実施形態および第5の実施形態に示すように、3台の秘密計算サーバ装置を備える秘密計算システムに限定されず、N台の秘密計算サーバ装置を備える秘密計算システムに拡張することができる(Nは3より大きい自然数)。
【0035】
〔秘密計算方法〕
第1の実施形態における秘密計算システム100は、秘密計算方法の発明に自然に拡張可能である。図3は、秘密計算方法の手順の概略を示すフローチャートである。
【0036】
図3に示すように、秘密計算方法は、判別シェア生成ステップ(S1)と組み合わせ構成ステップ(S2)とシャッフルステップ(S3)と復元ステップ(S4)と選択ステップ(S5)とを有する。
【0037】
判別シェア生成ステップ(S1)では、入力に係るインデックスidxを表すシェア[idx]と、m個の配列{[Lj]}j=0 m-1が取り得るインデックスのシェア{[j]}j=0 m-1の組み合わせとから、入力に係るインデックスidxが特定の値sに対応するように構成された判別用シェア[dj]を計算する。
【0038】
組み合わせ構成ステップ(S2)では、配列{[Lj]}j=0 m-1が取り得るインデックスjの組み合わせの全てに対して、配列の要素のシェア[Lj]と判別用シェア[dj]との組み合わせ{[Lj], [dj]}j=0 m-1を構成する。
【0039】
シャッフルステップ(S3)では、組み合わせ{[Lj], [dj]}j=0 m-1に対してシャッフルを行う。シャッフルとは、{[Lj], [dj]}j=0 m-1におけるインデックスjが1対1で別のインデックスkに置換されたと考えることができるので、シャッフル後の組み合わせを{[Lk], [dk]}k=0 m-1と表現する。
【0040】
復元ステップ(S4)では、シャッフルされた組み合わせ{[Lk], [dk]}k=0 m-1における判別用シェア[dk]を復元する。
【0041】
選択ステップ(S5)は、復元された値dkが特定の値sである組み合わせ{[Lk], [dk]}k=0 m-1における配列の要素のシェア[Lk]を選択する。選択部105_iが選択したシェア[Lk]が、所望のインデックスidxに対応する配列の要素のシェア[Lidx]である。
【0042】
以上説明した秘密計算方法も、所望のインデックスidxに対応する配列の要素のシェア[Lidx]を参照することができる。すなわち、第1の実施形態における秘密計算システム100は、配列{[Lj]}j=0 m-1におけるどの要素にアクセスしているかさえも秘密にしたまま、所望の配列の要素[Lidx]に読み出しおよび書き込みを行うことができる。また、他の秘密計算と組み合わさる際の柔軟性を損なうことはない。
【0043】
[第2の実施形態]
以下、図4図5を参照して、第2の実施形態に係る秘密計算システムおよび秘密計算サーバ装置について説明する。第2の実施形態は、第1の実施形態に係る秘密計算システムを、ベースとする代数的構造が環である場合の3パーティにおける秘密計算システムに適用するものである。
【0044】
図4は、第2の実施形態における秘密計算システムの機能構成例を示すブロック図である。図4に示すように、第2の実施形態による秘密計算システム200は、第1の秘密計算サーバ装置200_1と第2の秘密計算サーバ装置200_2と第3の秘密計算サーバ装置200_3とを備えている。第1の秘密計算サーバ装置200_1、第2の秘密計算サーバ装置200_2、および第3の秘密計算サーバ装置200_3は、それぞれが互いにネットワーク経由で通信可能に接続されている。
【0045】
第1~第3の秘密計算サーバ装置200_i(i=1,2,3)を備える秘密計算システム200においては、第1~第3の秘密計算サーバ装置200_i(i=1,2,3)の内のいずれかの秘密計算サーバ装置200_iが入力した値に対し、その入力や計算過程の値を知られることなく目的のシェアを計算し、その計算結果を第1~第3の秘密計算サーバ装置200_i(i=1,2,3)に分散して記憶することができる。
【0046】
図5は、第2の実施形態における秘密計算サーバ装置の機能構成例を示すブロック図である。なお、図5に示す秘密計算サーバ装置200_iは、第1~第3の秘密計算サーバ装置200_i(i=1,2,3)の全てを共通して代表している。図5に示すように、秘密計算サーバ装置200_iは、判別シェア生成部201_iと組み合わせ構成部202_iとシャッフル部203_iと復元部204_iと選択部205_iとを有する。
【0047】
第1~第3の秘密計算サーバ装置200_i(i=1,2,3)に秘密分散して記憶するシェアの方式は、例えば、複製型秘密分散方式(replicated secret sharing scheme)を用いることができる。ここでは、位数nの剰余類環Zの場合におけるシェア(nは3以上の自然数)と、位数2の剰余類環Zの場合におけるシェアを用いるので、位数nの剰余類環Zの場合におけるシェアを[x]Rと記載し、位数2の剰余類環Zの場合におけるシェアを[x]2と記載し、両者を区別する。目標はインデックスidxを表すシェア[idx]Rの入力に対して、2h(=m)個のシェアの配列{[Lj]R}j=0 m-1の中からインデックスidxに対応する配列の要素のシェア[Lidx]Rを参照することである。
【0048】
判別シェア生成部201_iは、入力に係るインデックスidxを表すシェア[idx]Rと、2h(=m)個の配列{[Lj]R}j=0 m-1が取り得るインデックスのシェアの組み合わせとから、入力に係るインデックスidxが特定の値sに対応するように構成された判別用シェアを計算する。具体的には以下のような計算を行う。
【0049】
まず、判別シェア生成部201_iは、[idx]Rをビット分解して位数2の剰余類環Zにおけるシェア[idx0]2, [idx1]2,...,[idxh]2に変換する。一方、2h(=m)個の配列{[Lj]R}j=0 m-1が取り得るインデックスを剰余類環Zにおけるシェアとして表すと、[P0,0]2, [P1,0]2, [P0,1]2, [P1,1]2...,[P0,h-1]2, [P1,h-1]2となる。ただし、P0,jはj番目のビットが0であり、P1,jはj番目のビットが1であることを意味する。
【0050】
これら剰余類環Zにおけるシェアに対する排他的論理和を用いて以下のような判別用シェア[dj]を計算することができる。ただし、下式におけるjは、2h(=m)個の配列{[Lj]R}j=0 m-1が取り得るインデックスjである。また、下式の右辺は剰余類環Zにおけるシェアの組であるが記載を簡単化するために[dj]と表すことにする。
【0051】
【数2】
【0052】
このように計算した判別用シェア[dj]は、jが入力に係るインデックスidxに一致している場合に、[dj]={[1]2, [1]2,..., [1]2}となる。すなわち、このように計算した判別用シェア[dj]は、入力に係るインデックスが特定の値(s={1, 1,..., 1})に対応するように構成されている。さらに、判別用シェア[dj]は、インデックスjを取り得る範囲の全てに動かした場合、0と1の組み合わせの全てを動くことになる。
【0053】
組み合わせ構成部202_iは、取り得るインデックスjの組み合わせの全てに対して、配列の要素のシェア[Lj]Rと判別用シェア[dj]との組み合わせCj={[Lj]R, [dj]}を構成する。なお、組み合わせCjを具体的に記載すると以下のようになる。
【0054】
【数3】
【0055】
シャッフル部203_iは、組み合わせの集合{Cj|j=0,...,2h-1}に対してシャッフルを行う。シャッフルとは、{Cj|j=0,...,2h-1}におけるインデックスjが1対1で別のインデックスkに置換されたと考えることができるので、シャッフル後の組み合わせを{Ck|k=0,...,2h-1}と表現する。
【0056】
復元部204_iは、シャッフルされた組み合わせ{Ck={[Lk]R, [dk]}|k=0,...,2h-1}における判別用シェア[dk]を復元する。dkは、0または1がh桁並んだものであるが、上記したように、インデックスjを取り得る範囲の全てに動かした場合、0と1の組み合わせの全てを動くことになる。したがって、判別用シェア[dk]を復元することで、秘密が漏洩することはない。
【0057】
選択部205_iは、判別用シェア[dk]が、kが入力に係るインデックスidxに一致している場合に、[dk]={[1]2, [1]2,...,[1]2}となるので、これを満たすkを選択する。そして、当該kにおける[Lk]Rが、所望のインデックスidxに対応する配列の要素のシェア[Lidx]Rである。
【0058】
以上のように、第2の実施形態における秘密計算システム200は、環の代数的構造を用いた秘密計算において、入力されたインデックスidxのシェア[idx]Rからインデックスidxを復元することなく、所望のインデックスidxに対応する配列の要素のシェア[Lidx]Rを参照することができる。すなわち、第2の実施形態における秘密計算システム200は、配列{[Lj]R}j=0 m-1におけるどの要素にアクセスしているかさえも秘密にしたまま、所望の配列の要素[Lidx]Rに読み出しおよび書き込みを行うことができる。
【0059】
また、このとき、第2の実施形態における秘密計算システム200における配列参照の通信コストは、ラウンド数が4であり、通信量が6・2h・(k+h)+2h・hである。例えば、非特許文献1における3パーティ構成の配列参照の通信コストは、ラウンド数が12であり、通信量が(7m+5log(m)+6)log(p)であるので、第2の実施形態における秘密計算システム200における配列参照の通信コストが低い。すなわち、環の代数的構造を用いる他の秘密計算と組み合わさる際の柔軟性を損なうことなく、通信コストを低減することに寄与することができる。
【0060】
[第3の実施形態]
以下、図6図7を参照して、第3の実施形態に係る秘密計算システムおよび秘密計算サーバ装置について説明する。第3の実施形態は、第1の実施形態に係る秘密計算システムを、ベースとする代数的構造が体である場合の3パーティにおける秘密計算システムに適用するものである。
【0061】
図6は、第3の実施形態における秘密計算システムの機能構成例を示すブロック図である。図6に示すように、第3の実施形態による秘密計算システム300は、第1の秘密計算サーバ装置300_1と第2の秘密計算サーバ装置300_2と第3の秘密計算サーバ装置300_3とを備えている。第1の秘密計算サーバ装置300_1、第2の秘密計算サーバ装置300_2、および第3の秘密計算サーバ装置300_3は、それぞれが互いにネットワーク経由で通信可能に接続されている。
【0062】
第1~第3の秘密計算サーバ装置300_i(i=1,2,3)を備える秘密計算システム300においては、第1~第3の秘密計算サーバ装置300_i(i=1,2,3)の内のいずれかの秘密計算サーバ装置300_iが入力した値に対し、その入力や計算過程の値を知られることなく目的のシェアを計算し、その計算結果を第1~第3の秘密計算サーバ装置300_i(i=1,2,3)に分散して記憶することができる。
【0063】
図7は、第3の実施形態における秘密計算サーバ装置の機能構成例を示すブロック図である。なお、図7に示す秘密計算サーバ装置300_iは、第1~第3の秘密計算サーバ装置300_i(i=1,2,3)の全てを共通して代表している。図7に示すように、秘密計算サーバ装置300_iは、判別シェア生成部301_iと組み合わせ構成部302_iとシャッフル部303_iと復元部304_iと選択部305_iと非ゼロ乱数生成部306_iを有する。
【0064】
第1~第3の秘密計算サーバ装置300_i(i=1,2,3)に秘密分散して記憶するシェアの方式は、例えば、シャミア秘密分散方式(Shamir's secret sharing scheme)を用いることができる。用いる体の代数的構造は、素数pを法とした有限体Fpであるが、これは第2の実施形態で用いた位数nの剰余環Znにおけるnを素数pにしたものである。したがって、有限体Fpは剰余環Znの下位概念であるが、有限体Fpにおけるシェアを[x]pと表す。
【0065】
まず準備として、非ゼロ乱数生成部306_iは、非ゼロ乱数を生成する。非ゼロ乱数とは、有限体Fpからゼロを除いたFp ×に値をもつ乱数であって、秘密計算の参加者の誰からも秘密にされているものである。非ゼロ乱数生成部306_iは、以下のように非ゼロ乱数を生成する。
【0066】
第1~第3の秘密計算サーバ装置300_i(i=1,2,3)における非ゼロ乱数生成部306_iが、それぞれ独立に、配列が取り得るインデックスjに対して非ゼロ乱数rj,iを生成する。そして、非ゼロ乱数生成部306_iは、生成した非ゼロ乱数rj,iを秘密分散して、第1~第3の秘密計算サーバ装置300_i(i=1,2,3)が非ゼロ乱数rj,iのシェア[rj,i]pを記憶する。最終的な非ゼロ乱数は、これら[rj,i]pの積[rj]p=[rj,0]p[rj,1]p[rj,2]pとして定める。この非ゼロ乱数[rj]pは、ゼロでない数の積であるので非ゼロであり、秘密計算の参加者の誰からも秘密にされている。
【0067】
判別シェア生成部301_iは、入力に係るインデックスidxを表すシェア[idx]pと、m個の配列{[Lj]R}j=0 m-1が取り得るインデックスのシェアの組み合わせとから、入力に係るインデックスidxが特定の値sに対応するように構成された判別用シェアを計算する。具体的には以下のような計算を行う。
【0068】
まず、判別シェア生成部301_iは、入力に係るインデックスを表すシェア[idx]pと取り得るインデックスのシェアjとの算術差([idx]p-j)を計算する。そして、判別シェア生成部301_iは、この算術差([idx]p-j)に上記非ゼロ乱数[rj]pを掛けることで、判別用シェア[dj]pを得る。
【0069】
このように得られた判別用シェア[dj]pは、算術差([idx]p-j)がゼロになったときにゼロになり、算術差([idx]p-j)がゼロでないときはゼロにならない。つまり、判別用シェア[dj]pは、入力に係るインデックスidxが特定の値(s=0)に対応するように構成されている。また、判別用シェア[dj]pは、算術差([idx]p-j)に非ゼロ乱数[rj]pを掛けているので、判別用シェア[dj]pを復元しても、ゼロでないときの値からは情報が漏洩することはない。
【0070】
組み合わせ構成部302_iは、取り得るインデックスjの組み合わせの全てに対して、配列の要素のシェア[Lj]pと判別用シェア[dj]との組み合わせCj={[Lj]p, [dj]}を構成する。なお、組み合わせCjを具体的に記載すると以下のようになる。
【0071】
シャッフル部303_iは、組み合わせの集合{Cj|j=0,...,m}に対してシャッフルを行う。シャッフルとは、{Cj|j=0,...,m}におけるインデックスjが1対1で別のインデックスkに置換されたと考えることができるので、シャッフル後の組み合わせを{Ck|k=0,...,m}と表現する。
【0072】
復元部304_iは、シャッフルされた組み合わせ{Ck={[Lk]p, [dk]}|k=0,...,m}における判別用シェア[dk]を復元する。
【0073】
選択部305_iは、判別用シェア[dk]が、kが入力に係るインデックスidxに一致している場合にゼロとなるので、これを満たすkを選択する。そして、当該kにおける[Lk]pが、所望のインデックスidxに対応する配列の要素のシェア[Lidx]pである。
【0074】
以上のように、第3の実施形態における秘密計算システム300は、体の代数的構造を用いた秘密計算において、入力されたインデックスidxのシェア[idx]pからインデックスidxを復元することなく、所望のインデックスidxに対応する配列の要素のシェア[Lidx]pを参照することができる。すなわち、第3の実施形態における秘密計算システム300は、配列{[Lj]p}j=0 m-1におけるどの要素にアクセスしているかさえも秘密にしたまま、所望の配列の要素[Lidx]pに読み出しおよび書き込みを行うことができる。
【0075】
また、このとき、第3の実施形態における秘密計算システム300における配列参照の通信コストは、ラウンド数が8であり、通信量が51mlog(p)である。例えば、非特許文献1における3パーティ構成の配列参照の通信コストは、ラウンド数が12であり、通信量が(7m+5log(m)+6)log(p)であるので、第3の実施形態における秘密計算システム300における配列参照の通信コストが低い。すなわち、体の代数的構造を用いる他の秘密計算と組み合わさる際の柔軟性を損なうことなく、通信コストを低減することに寄与することができる。
【0076】
[第4の実施形態]
以下、図8図9を参照して、第4の実施形態に係る秘密計算システムおよび秘密計算サーバ装置について説明する。第4の実施形態は、第2の実施形態に係る秘密計算システムを、Nパーティにおける秘密計算システムに適用するものである。
【0077】
図8は、第4の実施形態における秘密計算システムの機能構成例を示すブロック図である。図8に示すように、第4の実施形態による秘密計算システム400は、第1~第Nの秘密計算サーバ装置400_i(i=1,2,…,N)を備えている。第1~第Nの秘密計算サーバ装置400_i(i=1,2,…,N)は、それぞれが互いにネットワーク経由で通信可能に接続されている。
【0078】
第1~第Nの秘密計算サーバ装置400_i(i=1,2,…,N)を備える秘密計算システム400においては、第1~第Nの秘密計算サーバ装置400_i(i=1,2,…,N)の内のいずれかの秘密計算サーバ装置400_iが入力した値に対し、その入力や計算過程の値を知られることなく目的のシェアを計算し、その計算結果を第1~第Nの秘密計算サーバ装置400_i(i=1,2,…,N)に分散して記憶することができる。
【0079】
図9は、第4の実施形態における秘密計算サーバ装置の機能構成例を示すブロック図である。なお、図9に示す秘密計算サーバ装置400_iは、第1~第Nの秘密計算サーバ装置400_i(i=1,2,…,N)の全てを共通して代表している。図9に示すように、秘密計算サーバ装置400_iは、判別シェア生成部401_iと組み合わせ構成部402_iとシャッフル部403_iと復元部404_iと選択部405_iとを有する。
【0080】
第1~第Nの秘密計算サーバ装置400_i(i=1,2,…,N)に秘密分散して記憶するシェアの方式は、例えば、(t+1,N)―加法的秘密分散方式(additive secret sharing scheme)を用いることができる。ただし、tは、t<N/2を満たす自然数を選ぶ。
【0081】
このように、シェアの方式を選択すれば、第1~第Nの秘密計算サーバ装置400_i(i=1,2,…,N)が第2の実施形態における第1~第3の秘密計算サーバ装置200_i(i=1,2,3)と同様の構成及び機能を有することで、第4の実施形態の秘密計算システム400が、Nパーティにおける配列参照を実施することができる。すなわち、第4の実施形態の秘密計算システム400は、他の秘密計算と組み合わさる際の柔軟性を損なうことなく、通信コストを低減することに寄与することができる。
【0082】
[第5の実施形態]
以下、図10図11を参照して、第5の実施形態に係る秘密計算システムおよび秘密計算サーバ装置について説明する。第5の実施形態は、第3の実施形態に係る秘密計算システムを、Nパーティにおける秘密計算システムに適用するものである。
【0083】
図10は、第5の実施形態における秘密計算システムの機能構成例を示すブロック図である。図10に示すように、第5の実施形態による秘密計算システム500は、第1~第Nの秘密計算サーバ装置500_i(i=1,2,…,N)を備えている。第1~第Nの秘密計算サーバ装置500_i(i=1,2,…,N)は、それぞれが互いにネットワーク経由で通信可能に接続されている。
【0084】
第1~第Nの秘密計算サーバ装置500_i(i=1,2,…,N)を備える秘密計算システム500においては、第1~第Nの秘密計算サーバ装置500_i(i=1,2,…,N)の内のいずれかの秘密計算サーバ装置500_iが入力した値に対し、その入力や計算過程の値を知られることなく目的のシェアを計算し、その計算結果を第1~第Nの秘密計算サーバ装置500_i(i=1,2,…,N)に分散して記憶することができる。
【0085】
図11は、第5の実施形態における秘密計算サーバ装置の機能構成例を示すブロック図である。なお、図11に示す秘密計算サーバ装置500_iは、第1~第Nの秘密計算サーバ装置500_i(i=1,2,…,N)の全てを共通して代表している。図11に示すように、秘密計算サーバ装置500_iは、判別シェア生成部501_iと組み合わせ構成部502_iとシャッフル部503_iと復元部504_iと選択部505_iと非ゼロ乱数生成部506_iとを有する。
【0086】
第1~第Nの秘密計算サーバ装置500_i(i=1,2,…,N)に秘密分散して記憶するシェアの方式は、例えば、(t+1,N)―加法的秘密分散方式(additive secret sharing scheme)を用いることができる。ただし、tは、t<N/2を満たす自然数を選ぶ。
【0087】
このように、シェアの方式を選択すれば、第1~第Nの秘密計算サーバ装置500_i(i=1,2,…,N)が第3の実施形態における第1~第3の秘密計算サーバ装置300_i(i=1,2,3)と同様の構成及び機能を有することで、第5の実施形態の秘密計算システム500が、Nパーティにおける配列参照を実施することができる。ただし、非ゼロ乱数生成部506_iは、第3の実施形態における非ゼロ乱数生成部306_iと少し異なる部分があるので補足する。
【0088】
第1~第Nの秘密計算サーバ装置500_i(i=1,2,…,N)における非ゼロ乱数生成部506_iが、それぞれ独立に、配列が取り得るインデックスjに対して非ゼロ乱数rj,iを生成する。そして、非ゼロ乱数生成部506_iは、生成した非ゼロ乱数rj,iを秘密分散して、第1~第Nの秘密計算サーバ装置500_i(i=1,2,…,N)が非ゼロ乱数rj,iのシェア[rj,i]pを記憶する。
【0089】
最終的な非ゼロ乱数は、これら[rj,i]pの積[rj]p=[rj,0]p[rj,1]p…[rj,N]pとして定める。この非ゼロ乱数[rj]pは、ゼロでない数の積であるので非ゼロであり、秘密計算の参加者の誰からも秘密にされている。
【0090】
このように、第5の実施形態の秘密計算システム500は、非ゼロ乱数生成部506_iの機能を自然に拡張することで、第3の実施形態に係る秘密計算システムを、Nパーティにおける秘密計算システムに適用することができる。すなわち、第5の実施形態の秘密計算システム500は、他の秘密計算と組み合わさる際の柔軟性を損なうことなく、通信コストを低減することに寄与することができる。
【0091】
[ハードウェア構成例]
図12は、秘密計算サーバ装置のハードウェア構成例を示す図である。すなわち、図12に示すハードウェア構成例は、秘密計算サーバ装置100_i,200_i,300_i,400_i,500_iのハードウェア構成例である。図12に示すハードウェア構成を採用した情報処理装置(コンピュータ)は、上記説明した秘密計算方法をプログラムとして実行することで、秘密計算サーバ装置100_i,200_i,300_i,400_i,500_iの各機能を実現することを可能にする。
【0092】
ただし、図12に示すハードウェア構成例は、秘密計算サーバ装置100_i,200_i,300_i,400_i,500_iの各機能を実現するハードウェア構成の一例であり、秘密計算サーバ装置100_i,200_i,300_i,400_i,500_iのハードウェア構成を限定する趣旨ではない。秘密計算サーバ装置100_i,200_i,300_i,400_i,500_iは、図12に示さないハードウェアを含むことができる。
【0093】
図12に示すように、秘密計算サーバ装置100_i,200_i,300_i,400_i,500_iが採用し得るハードウェア構成10は、例えば内部バスにより相互に接続される、CPU(Central Processing Unit)11、主記憶装置12、補助記憶装置13、およびIF(Interface)部14を備える。
【0094】
CPU11は、秘密計算サーバ装置100_i,200_i,300_i,400_i,500_iが実行する秘密計算プログラムに含まれる各指令を実行する。主記憶装置12は、例えばRAM(Random Access Memory)であり、秘密計算サーバ装置100_i,200_i,300_i,400_i,500_iが実行する秘密計算プログラムなどの各種プログラムなどをCPU11が処理するために一時記憶する。
【0095】
補助記憶装置13は、例えば、HDD(Hard Disk Drive)であり、秘密計算サーバ装置100_i,200_i,300_i,400_i,500_iが実行する秘密計算プログラムなどの各種プログラムなどを中長期的に記憶しておくことが可能である。秘密計算プログラムなどの各種プログラムは、非一時的なコンピュータ可読記録媒体(non-transitory computer-readable storage medium)に記録されたプログラム製品として提供することができる。補助記憶装置13は、非一時的なコンピュータ可読記録媒体に記録された秘密計算プログラムなどの各種プログラムを中長期的に記憶することに利用することが可能である。IF部14は、秘密計算サーバ装置100_i,200_i,300_i,400_i,500_i間の入出力に関するインターフェイスを提供する。
【0096】
上記のようなハードウェア構成10を採用した情報処理装置は、先述した秘密計算方法をプログラムとして実行することで、秘密計算サーバ装置100_i,200_i,300_i,400_i,500_iの各機能を実現する。
【0097】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
[付記1]
相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置を備え、インデックスを表すシェアの入力に対して、シェアの配列の中から前記インデックスに対応する配列の要素のシェアを参照する秘密計算システムであって、
前記秘密計算サーバ装置のそれぞれが、
前記入力に係るインデックスを表すシェアと前記配列が取り得るインデックスのシェアの組み合わせとから、前記入力に係るインデックスが特定の値に対応するように構成された判別用シェアを計算する判別シェア生成部と、
前記配列が取り得るインデックスの組み合わせの全てに対して、前記配列の要素のシェアと前記判別用シェアとの組み合わせを構成する組み合わせ構成部と、
前記組み合わせに対してシャッフルを行うシャッフル部と、
前記シャッフルされた前記組み合わせにおける前記判別用シェアを復元する復元部と、
前記復元された値が前記特定の値である前記組み合わせにおける前記配列の要素のシェアを選択する選択部と、
を有する秘密計算システム。
[付記2]
前記判別シェア生成部は、前記入力に係るインデックスを表すシェアおよび取り得るインデックスのシェアを二進数のシェアに変換したのちに前記判別用シェアを計算する、付記1に記載の秘密計算システム。
[付記3]
前記判別シェア生成部は、二進数のシェアに変換した前記入力に係るインデックスを表すシェアと取り得るインデックスのシェアに対する排他的論理和を用いて前記判別用シェアを計算する、付記2に記載の秘密計算システム。
[付記4]
N台の秘密計算サーバ装置を備え、(t+1,N)―加法的秘密分散方式を用いて秘密計算を行う、付記2または付記3に記載の秘密計算システム。
[付記5]
前記判別シェア生成部は、前記入力に係るインデックスを表すシェアと取り得るインデックスのシェアとの算術差を用いて前記判別用シェアを計算する、付記1に記載の秘密計算システム。
[付記6]
前記判別シェア生成部は、前記算術差に非ゼロ乱数を掛けて前記判別用シェアを計算する、付記5に記載の秘密計算システム。
[付記7]
N台の秘密計算サーバ装置を備え、(t+1,N)―シャミア秘密分散方式を用いて秘密計算を行う、付記5または付記6に記載の秘密計算システム。
[付記8]
インデックスを表すシェアの入力に対して、シェアの配列の中から前記インデックスに対応する配列の要素のシェアを参照するために、相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置の一つであって、
前記入力に係るインデックスを表すシェアと前記配列が取り得るインデックスのシェアの組み合わせとから、前記入力に係るインデックスが特定の値に対応するように構成された判別用シェアを計算する判別シェア生成部と、
前記配列が取り得るインデックスの組み合わせの全てに対して、前記配列の要素のシェアと前記判別用シェアとの組み合わせを構成する組み合わせ構成部と、
前記組み合わせに対してシャッフルを行うシャッフル部と、
前記シャッフルされた前記組み合わせにおける前記判別用シェアを復元する復元部と、
前記復元された値が前記特定の値である前記組み合わせにおける前記配列の要素のシェアを選択する選択部と、
を有する秘密計算サーバ装置。
[付記9]
相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置を備え、インデックスを表すシェアの入力に対して、シェアの配列の中から前記インデックスに対応する配列の要素のシェアを参照する秘密計算方法であって、
前記秘密計算サーバ装置のそれぞれが、
前記入力に係るインデックスを表すシェアと前記配列が取り得るインデックスのシェアの組み合わせとから、前記入力に係るインデックスが特定の値に対応するように構成された判別用シェアを計算し、
前記配列が取り得るインデックスの組み合わせの全てに対して、前記配列の要素のシェアと前記判別用シェアとの組み合わせを構成し、
前記組み合わせに対してシャッフルを行い、
前記シャッフルされた前記組み合わせにおける前記判別用シェアを復元し、
前記復元された値が前記特定の値である前記組み合わせにおける前記配列の要素のシェアを選択する、秘密計算方法。
[付記10]
相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置に、インデックスを表すシェアの入力に対して、シェアの配列の中から前記インデックスに対応する配列の要素のシェアを参照する秘密計算プログラムであって、
前記入力に係るインデックスを表すシェアと前記配列が取り得るインデックスのシェアの組み合わせとから、前記入力に係るインデックスが特定の値に対応するように構成された判別用シェアを計算し、
前記配列が取り得るインデックスの組み合わせの全てに対して、前記配列の要素のシェアと前記判別用シェアとの組み合わせを構成し、
前記組み合わせに対してシャッフルを行い、
前記シャッフルされた前記組み合わせにおける前記判別用シェアを復元し、
前記復元された値が前記特定の値である前記組み合わせにおける前記配列の要素のシェアを選択する、
処理を有する秘密計算プログラム。
【0098】
なお、引用した上記の非特許文献の開示は、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択(部分的削除を含む)が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。さらに、上記引用した文献の各開示事項は、必要に応じ、本発明の趣旨に則り、本発明の開示の一部として、その一部又は全部を、本書の記載事項と組み合わせて用いることも、本願の開示事項に含まれるものと、みなされる。
【符号の説明】
【0099】
100,200,300,400,500 秘密計算システム
100_i,200_i,300_i,400_i,500_i 秘密計算サーバ装置
101_i,201_i,301_i,401_i,501_i 判別シェア生成部
102_i,202_i,302_i,402_i,502_i 組み合わせ構成部
103_i,203_i,303_i,403_i,503_i シャッフル部
104_i,204_i,304_i,404_i,504_i 復元部
105_i,205_i,305_i,405_i,505_i 選択部
306_i,506_i 非ゼロ乱数生成部
10 ハードウェア構成
11 CPU(Central Processing Unit)
12 主記憶装置
13 補助記憶装置
14 IF(Interface)部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12