(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-07
(45)【発行日】2023-11-15
(54)【発明の名称】秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム
(51)【国際特許分類】
G09C 1/00 20060101AFI20231108BHJP
【FI】
G09C1/00 650Z
(21)【出願番号】P 2022509808
(86)(22)【出願日】2020-03-24
(86)【国際出願番号】 JP2020012906
(87)【国際公開番号】W WO2021192006
(87)【国際公開日】2021-09-30
【審査請求日】2022-09-22
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100080816
【氏名又は名称】加藤 朝道
(74)【代理人】
【識別番号】100098648
【氏名又は名称】内田 潔人
(72)【発明者】
【氏名】土田 光
【審査官】金沢 史明
(56)【参考文献】
【文献】LAUNCHBURY, John et al.,Application-Scale Secure Multiparty Computation,Lecture Notes in Computer Science,Springer-Verlag,2014年,vol. 8410,pp. 8-26
【文献】KELLER, Marcel et al.,Faster Secure Multi-Party Computation of AES and DES Using Lookup Tables,Cryptology ePrint Archive [online],International Association for Cryptologic Research,2017年05月,Report 2017/378, Ver. 20170501:134527,pp. 1-26,[retrieved on 2020.09.03], Retrieved from the Internet: <URL: https://eprint.iacr.org/2017/378/20170501:134527>
【文献】KELLER, Marcel et al.,Efficient, Oblivious Data Structures for MPC,Cryptology ePrint Archive [online],International Association for Cryptologic Research,2014年08月,Report 2014/137, Ver. 20140815:182750,pp. 1-31,[retrieved on 2020.09.03], Retrieved from the Internet: <URL: https://eprint.iacr.org/2014/137/20140815:182750>
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置を備える秘密計算システムであって、
前記秘密計算サーバ装置のそれぞれが、
秘密分散されたシェア値を定数ラウンド数でビット分解を行うビット分解演算部と、
各ビットにおいて等号が成立するか否かを判定する判定式を行方向に配列し、前記判定式の組み合わせを列方向に配列したテーブルを用いて、前記ビット分解の各ビットにおける等号の成否を判定するテーブル演算部と、
前記ビット分解の各ビットにおける等号の成否を集積した値に対して定数ラウンド数で等号判定をすることで、前記シェア値に対応する配列参照を判定する等号判定部と、
を有する、秘密計算システム。
【請求項2】
前記ビット分解の各ビットにおける等号の成否を集積した値は、前記ビット分解の各ビットにおける等号の成否の結果と(1,...,1)との内積を計算することで得られる、請求項1に記載の秘密計算システム。
【請求項3】
前記等号判定部は、前記配列参照の候補に関して前記等号判定を繰り返すことで前記配列参照を判定する、請求項1または請求項2に記載の秘密計算システム。
【請求項4】
前記テーブルにおける前記判定式は、前記秘密分散されたシェア値が[x]である場合、x番目の行のみがすべての判定式の出力が1となる、請求項1から請求項3のいずれか1つに記載の秘密計算システム。
【請求項5】
前記テーブルは、Demuxプロトコルにおける入力のビット分解に対する判定式に関するものである、請求項1から請求項4のいずれか1つに記載の秘密計算システム。
【請求項6】
前記テーブルは、決定木の節点における判定に用いる要素のインデックスのビット分解に対する判定式に関するものである、請求項1から請求項4のいずれか1つに記載の秘密計算システム。
【請求項7】
前記テーブルは、決定木の分岐に対する判定式に関するものである、請求項1から請求項4のいずれか1つに記載の秘密計算システム。
【請求項8】
相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置の一つであって、
秘密分散されたシェア値を定数ラウンド数でビット分解を行うビット分解演算部と、
各ビットにおいて等号が成立するか否かを判定する判定式を行方向に配列し、前記判定式の組み合わせを列方向に配列したテーブルを用いて、前記ビット分解の各ビットにおける等号の成否を判定するテーブル演算部と、
前記ビット分解の各ビットにおける等号の成否を集積した値に対して定数ラウンド数で等号判定をすることで、前記シェア値に対応する配列参照を判定する等号判定部と、
を備える、秘密計算サーバ装置。
【請求項9】
相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置を用いる秘密計算方法であって、
秘密分散されたシェア値を定数ラウンド数でビット分解を行い、
各ビットにおいて等号が成立するか否かを判定する判定式を行方向に配列し、前記判定式の組み合わせを列方向に配列したテーブルを用いて、前記ビット分解の各ビットにおける等号の成否を判定し、
前記ビット分解の各ビットにおける等号の成否を集積した値に対して定数ラウンド数で等号判定をすることで、前記シェア値に対応する配列参照を判定する、秘密計算方法。
【請求項10】
相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置に実行させる秘密計算プログラムであって、
秘密分散されたシェア値を定数ラウンド数でビット分解を行い、
各ビットにおいて等号が成立するか否かを判定する判定式を行方向に配列し、前記判定式の組み合わせを列方向に配列したテーブルを用いて、前記ビット分解の各ビットにおける等号の成否を判定し、
前記ビット分解の各ビットにおける等号の成否を集積した値に対して定数ラウンド数で等号判定をすることで、前記シェア値に対応する配列参照を判定する、秘密計算プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラムに関するものである。
【背景技術】
【0002】
近年、秘密計算と呼ばれる技術の研究開発が盛んに行われている。秘密計算は、第三者に対して入力と計算過程の値を秘匿しつつ所定の処理を実行する技術の一つである。秘密計算における代表的な技術の一つとして、マルチパーティ計算技術が挙げられる。マルチパーティ計算技術では、秘匿するデータを複数のサーバ(秘密計算サーバ)に分散配置し、秘匿したまま当該データの任意の演算を実行する。以降、特に断りがない限り、本書で「秘密計算」という語を用いた場合は、マルチパーティ計算技術を意味するものとする。
【0003】
秘密計算の処理の一つとして、配列参照が存在する。配列参照とは、配列して格納された要素を参照するための処理であり、秘密計算における配列参照では、どこを参照するかのインデックスまでも秘匿することが要請されることがある。そして、このようなインデックスを秘匿する配列参照に用いるサブプロトコルとして、Demux(demultiplexer)プロトコルがある(例えば、非特許文献1参照)。秘密計算におけるDemuxプロトコルでは、秘匿されたインデックスを入力として、入力されたインデックスに対応した配列の要素のみが1であり、その他の要素は0であるような出力を秘匿したまま計算する処理である。
【先行技術文献】
【非特許文献】
【0004】
【文献】J. Launchbury et al. Efficient Lookup-Table Protocol in Secure Multiparty Computation. In ICFP 2012.
【文献】Catrina, Octavian. Round-efficient protocols for secure multiparty fixed-point arithmetic. 2018 International Conference on Communications (COMM). IEEE, 2018.
【発明の概要】
【発明が解決しようとする課題】
【0005】
なお、上記先行技術文献の各開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者らによってなされたものである。
【0006】
ところで、マルチパーティ計算技術を用いる秘密計算では、秘匿するデータを複数のサーバに分散配置した状態で処理を行うので、処理の効率化という観点では、通信コストの低減が課題となる。そして、この通信コストは、通信の対象となるデータ量を表す通信量と、最大限の並列化を行った場合の通信の回数を表す通信ラウンド数に分解できる。
【0007】
また、この通信量とラウンド数との間には、トレードオフの関係が成り立つことが多々ある一方、環境によっては通信量と通信ラウンド数のどちらを優先すべきかが異なることもある。例えば、WAN(Wide Area Network)環境などの通信遅延が大きい環境では、通信回数が小さい方が有利であるので、通信ラウンド数が小さい秘密計算の方が好ましい。例えば、非特許文献1に開示されているDemuxプロトコルでは、通信ラウンド数がO(log2k)であるので、通信ラウンド数が定数であるDemuxプロトコルを実現すると、通信遅延が大きい環境などでの通信コストを低減することができる。
【0008】
本発明の目的は、上述した課題を鑑み、通信ラウンド数を低減することに寄与する秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラムを提供する。
【課題を解決するための手段】
【0009】
本発明の第1の視点では、相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置を備える秘密計算システムであって、前記秘密計算サーバ装置のそれぞれが、秘密分散されたシェア値を定数ラウンド数でビット分解を行うビット分解演算部と、各ビットにおいて等号が成立するか否かを判定する判定式を行方向に配列し、前記判定式の組み合わせを列方向に配列したテーブルを用いて、前記ビット分解の各ビットにおける等号の成否を判定するテーブル演算部と、前記ビット分解の各ビットにおける等号の成否を集積した値に対して定数ラウンド数で等号判定をすることで、前記シェア値に対応する配列参照を判定する等号判定部と、を有する、秘密計算システムが提供される。
【0010】
本発明の第2の視点では、相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置の一つであって、秘密分散されたシェア値を定数ラウンド数でビット分解を行うビット分解演算部と、各ビットにおいて等号が成立するか否かを判定する判定式を行方向に配列し、前記判定式の組み合わせを列方向に配列したテーブルを用いて、前記ビット分解の各ビットにおける等号の成否を判定するテーブル演算部と、前記ビット分解の各ビットにおける等号の成否を集積した値に対して定数ラウンド数で等号判定をすることで、前記シェア値に対応する配列参照を判定する等号判定部と、を備える、秘密計算サーバ装置が提供される。
【0011】
本発明の第3の視点では、相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置を用いる秘密計算方法であって、秘密分散されたシェア値を定数ラウンド数でビット分解を行い、各ビットにおいて等号が成立するか否かを判定する判定式を行方向に配列し、前記判定式の組み合わせを列方向に配列したテーブルを用いて、前記ビット分解の各ビットにおける等号の成否を判定し、前記ビット分解の各ビットにおける等号の成否を集積した値に対して定数ラウンド数で等号判定をすることで、前記シェア値に対応する配列参照を判定する、秘密計算方法が提供される。
【0012】
本発明の第4の視点では、相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置に実行させる秘密計算プログラムであって、秘密分散されたシェア値を定数ラウンド数でビット分解を行い、各ビットにおいて等号が成立するか否かを判定する判定式を行方向に配列し、前記判定式の組み合わせを列方向に配列したテーブルを用いて、前記ビット分解の各ビットにおける等号の成否を判定し、前記ビット分解の各ビットにおける等号の成否を集積した値に対して定数ラウンド数で等号判定をすることで、前記シェア値に対応する配列参照を判定する、秘密計算プログラムが提供される。
なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント(non-transient)なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【0013】
本発明の各視点によれば、ラウンド数を低減することに寄与する秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラムを提供することができる。
【図面の簡単な説明】
【0014】
【
図1】
図1は、秘密計算システムの機能構成例を示すブロック図である。
【
図2】
図2は、秘密計算サーバ装置の機能構成例を示すブロック図である。
【
図3】
図3は、Demuxプロトコルに関する動作例を示すフローチャートである。
【
図4】
図4は、秘密計算サーバ装置のハードウェア構成例を示す図である。
【
図6】
図6は、秘密計算システムの機能構成例を示すブロック図である。
【
図7】
図7は、秘密計算サーバ装置の機能構成例を示すブロック図である。
【
図8】
図8は、節点要素参照部の機能構成例を示すブロック図である。
【
図9】
図9は、節点要素の配列参照を例示する図である。
【
図10】
図10は、経路計算部の機能構成例を示すブロック図である。
【
図11】
図11は、決定木の経路計算とテーブルの関係を例示する図である。
【発明を実施するための形態】
【0015】
以下、図面を参照しながら、本発明の実施形態について説明する。ただし、以下に説明する実施形態により本発明が限定されるものではない。さらに、図面は模式的なものであり、各要素の寸法の関係、各要素の比率などは、現実のものとは異なる場合があることに留意する必要がある。図面の相互間においても、互いの寸法の関係や比率が異なる部分が含まれている場合がある。
【0016】
[準備]
以下、実施形態の説明にあたり、記法の定義および処理要素の説明を行う。以下で説明する記法および演算要素は、各実施形態の説明の中で共通して用いられる。
【0017】
体上で線形秘密分散されたxのシェアを[x]と表す。秘密分散されたシェア[x]とは、後述する秘密計算システムにおける各秘密計算サーバ装置が分散して保持する分散データ[x]iのことであり、これら全ての分散データ[x]iが揃って初めて秘匿された値xが復号できるものである。
【0018】
秘密計算とは、秘密分散されたシェアを入力として、秘匿された情報を秘匿されたまま処理を行う計算のことをいう。Demuxプロトコルでは、[x] s.t. 0≦x<2kという入力に対して、下式のように、xに対応した配列の要素のみが1であり、その他の要素は0であるような出力を秘匿したまま計算する処理である。
【0019】
【0020】
また、以下で説明する実施形態では、ビルディングブロック(処理要素)として以下に示すプロトコルを用いる。
【0021】
〔等号判定〕
等号判定として、特に0との等号の成否を判定するプロトコルを用いる。容易に解るように、0ではない値との等号の成否も引き算と組み合わせることによって判定することが可能である。この等号判定を以下のように表す。
【0022】
【0023】
なお、等号判定の具体的処理は、例えば非特許文献2に記載の方法を用いることができる。非特許文献2に記載の等号判定は、通信ラウンド数が定数で抑えられる。しかしながら、通信ラウンド数が定数であれば、その他の適切な等号判定の処理を用いても本発明の効果に影響を及ぼすことはない。
【0024】
〔ビット分解〕
ビット分解とは、下式のように、[x] s.t. 0≦x<2kという入力に対して、これをビット表記した際の各桁を出力する処理である。
【0025】
【0026】
なお、ビット分解の具体的処理は、例えば非特許文献2に記載の方法を用いることができる。非特許文献2に記載の等号判定は、通信ラウンド数が定数で抑えられる。しかしながら、通信ラウンド数が定数であれば、その他の適切なビット分解の処理を用いても本発明の効果に影響を及ぼすことはない。
【0027】
[第1の実施形態]
以下、
図1、
図2を参照して、本発明の第1の実施形態に係る秘密計算システムおよび秘密計算サーバ装置について説明する。
【0028】
図1は、第1の実施形態における秘密計算システムの機能構成例を示すブロック図である。
図1に示すように、本発明の第1の実施形態による秘密計算システム100は、第1の秘密計算サーバ装置100_1と第2の秘密計算サーバ装置100_2と第3の秘密計算サーバ装置100_3とを備えている。第1の秘密計算サーバ装置100_1、第2の秘密計算サーバ装置100_2、および第3の秘密計算サーバ装置100_3は、それぞれが互いにネットワーク経由で通信可能に接続されている。
【0029】
図2は、秘密計算サーバ装置の機能構成例を示すブロック図である。
図2に示される秘密計算サーバ装置100_i(i=1,2,3)は、第1の秘密計算サーバ装置100_1、第2の秘密計算サーバ装置100_2、および第3の秘密計算サーバ装置100_3を代表して例示した機能構成例である。
【0030】
図2に示すように、秘密計算サーバ装置100_iは、算術演算部101_iとシェア値記憶部102_iとを備えている。また、算術演算部101_iは、さらに、ビット分解演算部103_iとテーブル演算部104_iと等号判定部105_iとを含んでいる。これら算術演算部101_i、シェア値記憶部102_i、ビット分解演算部103_i、テーブル演算部104_i、および等号判定部105_iは、後に例示するハードウェア構成によって、メモリに記憶されたプログラムをプロセッサが実行することによって実現することが可能である。
【0031】
上記構成の第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)における各シェア値記憶部102_iに記憶することができる。
【0032】
また、上記構成の第1~第3の秘密計算サーバ装置100_i(i=1,2,3)を備える秘密計算システム100においては、第1~第3の秘密計算サーバ装置100_i(i=1,2,3)における各シェア値記憶部102_iに記憶されたシェアに対し、その計算過程の値を知られることなく目的のシェアを計算し、これを第1~第3の秘密計算サーバ装置100_i(i=1,2,3)における各シェア値記憶部102_iに記憶することができる。
【0033】
なお、上記計算結果のシェアは、第1~第3の秘密計算サーバ装置100_1~100_3とシェアを送受信することで、復元してもよい。あるいは、第1~第3の秘密計算サーバ装置100_1~100_3ではない外部にシェアを送信することで、復号してもよい。
【0034】
ビット分解演算部103_iは、秘密分散されたシェア値を定数ラウンド数でビット分解を行う。テーブル演算部104_iは、各ビットにおいて等号が成立するか否かを判定する判定式を行方向に配列し、前記判定式の組み合わせを列方向に配列したテーブルを用いて、ビット分解演算部103_iの結果の各ビットにおける等号の成否を判定する。各ビットにおける等号の成否は、算術XORと算術NOTで行うことができるので、通信ラウンド数は定数で抑えられる。そして、等号判定部105_iは、ビット分解の各ビットにおける等号の成否を集積した値に対して定数ラウンド数で等号判定をすることで、入力したシェア値に対応する配列参照を判定する。
【0035】
ここで算術XORとは、シェア[x],[y]に対し、[x xor y]を計算するという処理である。なお、x,yはでビットあることから、その値は0か1であり、([x]-[y])2 = [x xor y]が成り立つ。つまり、算術XORは、差の二乗を計算する処理に相当する。一方、算術NOTとは、シェア[x]に対し、[x xor 1]を計算するという処理であり、([x]-1)2 = [x xor 1]が成り立つ。つまり、算術NOTとは、入力から1を引いた値の二乗を計算する処理に相当する。
【0036】
これらの性質を用いると、1ビットの等号判定は、次のように実行できる。シェア[x],[y]に対し、[x ?= y]を計算するという処理では、(([x]-[y])2 - 1)2を計算すればよい。つまり、[x]と[y]について,算術XORを行い,その結果に対し,算術NOTを行う。例えば、x=yの場合、算術XORの結果は[0]となり、その後の算術NOTによって[1]が出力される。一方、x≠yの場合、算術XORの結果は[1]となり、その後の算術NOTによって[0]が出力される。
【0037】
上記のように、ビット分解演算部103_i、テーブル演算部104_i、および等号判定部105_iは、通信ラウンド数が定数で抑えられる処理を行っているので、Demuxプロトコルの処理全体としても、通信ラウンド数が定数で抑えられる。すなわち、上記構成の秘密計算システム100および秘密計算サーバ装置100_i(i=1,2,3)は、Demuxプロトコルにおいて通信ラウンド数を低減することに寄与することができ、通信遅延が大きい環境などでの通信コストを低減することができる。
【0038】
次に、本発明の第1の実施形態における秘密計算方法について詳細に説明を行う。すなわち、上記説明した第1~第3の秘密計算サーバ装置100_i(i=1,2,3)を備える秘密計算システム100の動作について説明する。
図3は、Demuxプロトコルに関する動作例を示すフローチャートである。以下、各ステップを説明する。
【0039】
(ステップA1)
秘密計算システム100における第1~第3の秘密計算サーバ装置100_i(i=1,2,3)は、秘密分散されたシェア値を定数ラウンド数でビット分解を行う。ここで、秘密分散されたシェア値は、秘密計算システム100の外部から入力された情報から計算されたシェア値であってもよく、また、第1~第3の秘密計算サーバ装置100_i(i=1,2,3)におけるシェア値記憶部102_iに既に秘密分散されて記憶しているシェア値であってもよい。
【0040】
具体的なビット分解の処理は、通信ラウンド数が定数で抑えられるものであれば適切に選択することが可能であるが、例えば先述したビルディングブロックのビット分解を用いることができる。
【0041】
(ステップA2)
秘密計算システム100における第1~第3の秘密計算サーバ装置100_i(i=1,2,3)は、各ビットにおいて等号が成立するか否かを判定する判定式を行方向に配列し、前記判定式の組み合わせを列方向に配列したテーブルを用意する。ここで用意するテーブルは、各第1~第3の秘密計算サーバ装置100_i(i=1,2,3)の記憶装置に既に記憶しておくことが可能な場合もあれば、ステップA1での入力に対応させて作成するとしてもよい。
【0042】
本ステップA2で用いるテーブルの具体的な形は以下のように例示することができる。なお、下記表の各要素における「?=」は等号が成立しているか否かを判定することを意味している。判定結果としては、等号が成立している場合に1を出力し、等号が成立していない場合に0を出力する。なお、既に指摘したように、各ビットにおける等号の成否は、算術XORと算術NOTで行うことができる。
【0043】
【0044】
上記テーブルは、先述の式(3)のビット分解の結果における各ビットにおいて等号が成立するか否かを判定する判定式を行方向に配列している。例えば、0番目の行は、式(3)のビット分解の結果におけるすべてのビットが0である場合にすべての判定式の出力が1となる。ビット分解の入力は、[x] s.t. 0≦x<2kであることから、判定式の組み合わせは2k通りであり、入力が[x]である場合、x番目の行のみがすべての判定式の出力が1となる。
【0045】
(ステップA3)
テーブル演算部104_iは、このようなテーブルを用いて、ビット分解演算部103_iの結果の各ビットにおける等号の成否を判定する。各ビットにおける等号の成否を判定は、行方向の配列(つまりベクトル)として出力される。このベクトルをrowj (0≦j<2k)と表記する。
【0046】
(ステップA4)
秘密計算システム100における第1~第3の秘密計算サーバ装置100_i(i=1,2,3)は、ビット分解の各ビットにおける等号の成否を集積する。具体的には、ステップA2の結果であるrowj (0≦j<2k)と(1,...,1)の内積を計算することで集積する。ベクトル(1,...,1)との内積を計算することで、rowjに含まれている1の数を集積することが可能である。これを0≦j<2kとなるjについて行い、結果を[resj]とする。なお、この内積の計算も通信ラウンド数が定数で抑えられる。
【0047】
【0048】
(ステップA5)
秘密計算システム100における第1~第3の秘密計算サーバ装置100_i(i=1,2,3)は、上記のように集積した値に対して定数ラウンド数で等号判定をすることで、入力されたシェア値に対応する配列参照を判定する。具体的な等号判定の処理は、通信ラウンド数が定数で抑えられるものであれば適切に選択することが可能であるが、例えば先述したビルディングブロックの等号判定を用いることができる。すなわち、下式のような等号判定を行えば、x番目のビットのみ1となり、それ以外が0となる配列bjが得られる。
【0049】
【0050】
上記秘密計算方法では、すべてのステップで通信ラウンド数が定数で抑えられる処理を行っているので、Demuxプロトコルの処理全体としても、通信ラウンド数が定数で抑えられる。すなわち、上記秘密計算方法は、Demuxプロトコルにおいて通信ラウンド数を低減することに寄与することができ、通信遅延が大きい環境などでの通信コストを低減することができる。
【0051】
[ハードウェア構成例]
図4は、秘密計算サーバ装置のハードウェア構成例を示す図である。すなわち、
図4に示すハードウェア構成例は、秘密計算サーバ装置100_i,200_i,300_i(i=1,2,3)のハードウェア構成例である。
図4に示すハードウェア構成を採用した情報処理装置(コンピュータ)は、上記説明した秘密計算方法をプログラムとして実行することで、秘密計算サーバ装置100_i,200_i,300_iの各機能を実現することを可能にする。
【0052】
ただし、
図4に示すハードウェア構成例は、秘密計算サーバ装置100_i,200_i,300_i(i=1,2,3)の各機能を実現するハードウェア構成の一例であり、秘密計算サーバ装置100_i,200_i,300_i(i=1,2,3)のハードウェア構成を限定する趣旨ではない。秘密計算サーバ装置100_i,200_i,300_i(i=1,2,3)は、
図4に示さないハードウェアを含むことができる。
【0053】
図4に示すように、秘密計算サーバ装置100_i,200_i,300_i(i=1,2,3)が採用し得るハードウェア構成10は、例えば内部バスにより相互に接続される、CPU(Central Processing Unit)11、主記憶装置12、補助記憶装置13、およびIF(Interface)部14を備える。
【0054】
CPU11は、秘密計算サーバ装置100_i,200_i,300_i(i=1,2,3)が実行する秘密計算プログラムに含まれる各指令を実行する。主記憶装置12は、例えばRAM(Random Access Memory)であり、秘密計算サーバ装置100_i,200_i,300_i(i=1,2,3)が実行する秘密計算プログラムなどの各種プログラムなどをCPU11が処理するために一時記憶する。
【0055】
補助記憶装置13は、例えば、HDD(Hard Disk Drive)であり、秘密計算サーバ装置100_i,200_i,300_i(i=1,2,3)が実行する秘密計算プログラムなどの各種プログラムなどを中長期的に記憶しておくことが可能である。秘密計算プログラムなどの各種プログラムは、非一時的なコンピュータ可読記録媒体(non-transitory computer-readable storage medium)に記録されたプログラム製品として提供することができる。補助記憶装置13は、非一時的なコンピュータ可読記録媒体に記録された秘密計算プログラムなどの各種プログラムを中長期的に記憶することに利用することが可能である。
【0056】
IF部14は、秘密計算サーバ装置100_i,200_i,300_i(i=1,2,3)間の入出力に関するインターフェイスを提供する。IF部14は、WAN(Wide Area Network)などの通信遅延が大きいネットワークに接続されることもある。
【0057】
上記のようなハードウェア構成10を採用した情報処理装置は、先述した秘密計算方法をプログラムとして実行することで、秘密計算サーバ装置100_i,200_i,300_i(i=1,2,3)の各機能を実現できる。
【0058】
[第2の実施形態]
以下、
図5から
図11を参照して、本発明の第2の実施形態に係る秘密計算システムおよび秘密計算サーバ装置について説明する。本発明の第2の実施形態に係る秘密計算システムおよび秘密計算サーバ装置は、
図5に例示するような決定木の計算に対して本発明の実施を適用した実施形態である。
【0059】
図5に例示するように、決定木は節点と枝から構成されている。決定木を用いた計算では、節点での判定に用いる要素を参照する処理と、各節点において分岐を判定する処理と、各分岐をどのように辿ったかの経路を計算する処理とを含む。秘密計算を用いた決定木の計算では、これらすべての計算を秘匿された状態で行う。
【0060】
図6は、第2の実施形態における秘密計算システムの機能構成例を示すブロック図である。
図6に示すように、本発明の第2の実施形態による秘密計算システム200は、第1の秘密計算サーバ装置200_1と第2の秘密計算サーバ装置200_2と第3の秘密計算サーバ装置200_3とを備えている。第1の秘密計算サーバ装置200_1、第2の秘密計算サーバ装置200_2、および第3の秘密計算サーバ装置200_3は、それぞれが互いにネットワーク経由で通信可能に接続されている。
【0061】
図7は、秘密計算サーバ装置の機能構成例を示すブロック図である。
図7に示される秘密計算サーバ装置200_i(i=1,2,3)は、第1の秘密計算サーバ装置200_1、第2の秘密計算サーバ装置200_2、および第3の秘密計算サーバ装置200_3を代表して例示した機能構成例である。
【0062】
図7に示すように、秘密計算サーバ装置200_iは、算術演算部201_iとシェア値記憶部202_iとを備えている。また、算術演算部201_iは、さらに、節点要素参照部210_iと節点判定部220_iと経路計算部230_iとを含んでいる。これら算術演算部201_i、シェア値記憶部202_i、節点要素参照部210_i、節点判定部220_i、および経路計算部230_iは、先述のハードウェア構成によって、メモリに記憶されたプログラムをプロセッサが実行することによって実現することが可能である。
【0063】
図8は、節点要素参照部の機能構成例を示すブロック図である。
図8に示すように、節点要素参照部210_iは、ビット分解演算部203_iとテーブル演算部204_iと等号判定部205_iとを含んでいる。これらビット分解演算部203_i、テーブル演算部204_i、および等号判定部205_iも、先述のハードウェア構成によって、メモリに記憶されたプログラムをプロセッサが実行することによって実現することが可能である。
【0064】
図5に示したように、決定木を用いた計算では、各節点における判定に要素a1,...,a
2
{k-1}を用いる。これら要素a1,...,a
2
{k-1}は、
図9に示すように、シェア値記憶部202_iに配列されて記憶されている。そこで、決定木を用いた計算では、要素a1,...,a
2
{k-1}を配列参照する必要があるが、この配列参照に対して第1の実施形態で説明したDemuxプロトコルを用いることができる。
【0065】
つまり、ビット分解演算部203_iは、要素axのインデックスxを定数ラウンド数でビット分解を行う。テーブル演算部204_iは、各ビットにおいて等号が成立するか否かを判定する判定式を行方向に配列し、前記判定式の組み合わせを列方向に配列したテーブルを用いて、ビット分解演算部203_iの結果の各ビットにおける等号の成否を判定する。そして、等号判定部205_iは、ビット分解の各ビットにおける等号の成否を集積した値に対して定数ラウンド数で等号判定をすることで、要素axのインデックスxに対応する配列参照を判定する。
【0066】
なお、節点要素参照部210_iによって得られた要素axは、節点判定部220_iによってどちらの分岐に進むかが判定されるが、この処理は、例えば非特許文献2に記載の処理など、公知の処理を用いることにより通信ラウンド数が定数で抑えられる処理で行うことができる。
【0067】
図10は、経路計算部の機能構成例を示すブロック図である。
図10に示すように、経路計算部230_iは、テーブル演算部206_iと等号判定部207_iとを含んでいる。これらテーブル演算部206_iおよび等号判定部207_iも、先述のハードウェア構成によって、メモリに記憶されたプログラムをプロセッサが実行することによって実現することが可能である。
【0068】
経路計算部230_iは、
図11に示すようにテーブルを用いて経路計算を行う。
図11は、決定木の経路計算とテーブルの関係を例示する図である。
図11に示すように、決定木の各節点で分岐された経路は、分岐判定をビットで表記し、決定木の深さをビット分解の桁であると考えると、第1の実施形態で説明したテーブルと同じものが作成できる。すなわち、経路計算部230_iが経路計算を行うために用いるテーブルは、各ビットにおいて等号が成立するか否かを判定する判定式を行方向に配列し、前記判定式の組み合わせを列方向に配列したテーブルである。
【0069】
したがって、テーブル演算部206_iおよび等号判定部207_iは、第1の実施形態と同様に当該テーブルを用いて経路計算を行うことができる。経路計算部230_iの出力は、決定木を用いた計算の結果であり、決定木を用いて行われた判断ないし分析の結果を指し示す配列参照になる。
【0070】
上記のように、節点要素参照部210_i、節点判定部220_i、および経路計算部230_iは、通信ラウンド数が定数で抑えられる処理を行っているので、決定木を用いた処理全体としても、通信ラウンド数が定数で抑えられる。すなわち、上記構成の秘密計算システム100および秘密計算サーバ装置100_i(i=1,2,3)は、決定木を用いた処理全体において通信ラウンド数を低減することに寄与することができ、通信遅延が大きい環境などでの通信コストを低減することができる。
【0071】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
[付記1]
相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置を備える秘密計算システムであって、
前記秘密計算サーバ装置のそれぞれが、
秘密分散されたシェア値を定数ラウンド数でビット分解を行うビット分解演算部と、
各ビットにおいて等号が成立するか否かを判定する判定式を行方向に配列し、前記判定式の組み合わせを列方向に配列したテーブルを用いて、前記ビット分解の各ビットにおける等号の成否を判定するテーブル演算部と、
前記ビット分解の各ビットにおける等号の成否を集積した値に対して定数ラウンド数で等号判定をすることで、前記シェア値に対応する配列参照を判定する等号判定部と、
を有する、秘密計算システム。
[付記2]
前記ビット分解の各ビットにおける等号の成否を集積した値は、前記ビット分解の各ビットにおける等号の成否の結果と(1,...,1)との内積を計算することで得られる、付記1に記載の秘密計算システム。
[付記3]
前記等号判定部は、前記配列参照の候補に関して前記等号判定を繰り返すことで前記配列参照を判定する、付記1または付記2に記載の秘密計算システム。
[付記4]
前記テーブルにおける前記判定式は、前記秘密分散されたシェア値が[x]である場合、x番目の行のみがすべての判定式の出力が1となる、付記1から付記3のいずれか1つに記載の秘密計算システム。
[付記5]
前記テーブルは、Demuxプロトコルにおける入力のビット分解に対する判定式に関するものである、付記1から付記4のいずれか1つに記載の秘密計算システム。
[付記6]
前記テーブルは、決定木の節点における判定に用いる要素のインデックスのビット分解に対する判定式に関するものである、付記1から付記4のいずれか1つに記載の秘密計算システム。
[付記7]
前記テーブルは、決定木の分岐に対する判定式に関するものである、付記1から付記4のいずれか1つに記載の秘密計算システム。
[付記8]
相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置の一つであって、
秘密分散されたシェア値を定数ラウンド数でビット分解を行うビット分解演算部と、
各ビットにおいて等号が成立するか否かを判定する判定式を行方向に配列し、前記判定式の組み合わせを列方向に配列したテーブルを用いて、前記ビット分解の各ビットにおける等号の成否を判定するテーブル演算部と、
前記ビット分解の各ビットにおける等号の成否を集積した値に対して定数ラウンド数で等号判定をすることで、前記シェア値に対応する配列参照を判定する等号判定部と、
を備える、秘密計算サーバ装置。
[付記9]
相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置を用いる秘密計算方法であって、
秘密分散されたシェア値を定数ラウンド数でビット分解を行い、
各ビットにおいて等号が成立するか否かを判定する判定式を行方向に配列し、前記判定式の組み合わせを列方向に配列したテーブルを用いて、前記ビット分解の各ビットにおける等号の成否を判定し、
前記ビット分解の各ビットにおける等号の成否を集積した値に対して定数ラウンド数で等号判定をすることで、前記シェア値に対応する配列参照を判定する、秘密計算方法。
[付記10]
相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置に実行させる秘密計算プログラムであって、
秘密分散されたシェア値を定数ラウンド数でビット分解を行い、
各ビットにおいて等号が成立するか否かを判定する判定式を行方向に配列し、前記判定式の組み合わせを列方向に配列したテーブルを用いて、前記ビット分解の各ビットにおける等号の成否を判定し、
前記ビット分解の各ビットにおける等号の成否を集積した値に対して定数ラウンド数で等号判定をすることで、前記シェア値に対応する配列参照を判定する、秘密計算プログラム。
【0072】
なお、引用した上記の非特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択(部分的削除を含む)が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。さらに、上記引用した文献の各開示事項は、必要に応じ、本発明の趣旨に則り、本発明の開示の一部として、その一部又は全部を、本書の記載事項と組み合わせて用いることも、本願の開示事項に含まれるものと、みなされる。
【符号の説明】
【0073】
100,200 秘密計算システム
100_i,200_i 秘密計算サーバ装置
101_i,201_i 算術演算部
102_i,202_i シェア値記憶部
103_i,203_i ビット分解演算部
104_i,204_i,206_i テーブル演算部
105_i,205_i,207_i 等号判定部