(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-24
(45)【発行日】2024-07-02
(54)【発明の名称】秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム
(51)【国際特許分類】
G09C 1/00 20060101AFI20240625BHJP
【FI】
G09C1/00 650Z
(21)【出願番号】P 2022553262
(86)(22)【出願日】2020-09-29
(86)【国際出願番号】 JP2020036931
(87)【国際公開番号】W WO2022070259
(87)【国際公開日】2022-04-07
【審査請求日】2023-03-28
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100080816
【氏名又は名称】加藤 朝道
(74)【代理人】
【識別番号】100098648
【氏名又は名称】内田 潔人
(72)【発明者】
【氏名】土田 光
【審査官】松平 英
(56)【参考文献】
【文献】米国特許出願公開第2019/0228299(US,A1)
【文献】大畑 幸矢 SATSUYA OHATA,ラウンド効率のよい2者間秘匿計算とその秘匿畳み込みニューラルネットワークへの応用 Round-Efficient Se,CSS2018 コンピュータセキュリティシンポジウム2018論文集 [USB],日本,一般社団法人情報処理学会,2018年10月15日,pp.615-622
【文献】大畑 幸矢 Satsuya Ohata 他,効率的な秘匿大小比較プロトコルとその応用 Efficient Secure Comparison Protocols and Their Applicatio,2019年 暗号と情報セキュリティシンポジウム(SCIS2019)予稿集 [USB] 2019年 暗,日本,一般社団法人電子情報通信学会,2019年01月15日,3A4-2, pp.1-8
(58)【調査した分野】(Int.Cl.,DB名)
G06F12/14
21/00-21/88
G09C 1/00-5/00
H04K 1/00-3/00
H04L 9/00-9/40
(57)【特許請求の範囲】
【請求項1】
相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置を備え、秘密分散して保持されている入力値の最上位ビットを抽出する秘密計算システムであって、
前記秘密計算サーバ装置のそれぞれが、
前記入力値をマスクするための乱数を生成する乱数生成部と、
前記乱数でマスクされた前記入力値から最上位ビットを除いた値と前記乱数から最上位ビットを除いた値との大小比較を行うm-1ビット比較部と、
前記大小比較の結果に基づいて、前記入力値から最上位ビットを除いた値の計算の補正を行う繰り上がり補正部と、
前記補正された前記入力値から最上位ビットを除いた値を前記入力値から減算することで前記入力値の最上位ビットを抽出する最上位ビット抽出部と、
を有する秘密計算システム。
【請求項2】
前記m-1ビット比較部が行う大小比較は、前記秘密計算サーバ装置の間で行われる通信コストが定数ラウンドである、請求項1に記載の秘密計算システム。
【請求項3】
前記m-1ビット比較部、前記繰り上がり補正部、および前記最上位ビット抽出部が行う処理は、前記秘密計算サーバ装置の間で行われる通信コストの総和が定数ラウンドである、請求項2に記載の秘密計算システム。
【請求項4】
前記乱数生成部は、前記入力値に依存せず、前記秘密計算サーバ装置の各々が独立に処理を行う、請求項1から請求項3のいずれか1項に記載の秘密計算システム。
【請求項5】
前記繰り上がり補正部は、前記乱数でマスクされた前記入力値から最上位ビットを除いた値よりも前記乱数から最上位ビットを除いた値が大きい場合に、前記入力値から最上位ビットを除いた値の計算の補正を行う、請求項1から請求項4のいずれか1項に記載の秘密計算システム。
【請求項6】
秘密分散して保持されている入力値の最上位ビットを抽出するための相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置の一つであって、
前記入力値をマスクするための乱数を生成する乱数生成部と、
前記乱数でマスクされた前記入力値から最上位ビットを除いた値と前記乱数から最上位ビットを除いた値との大小比較を行うm-1ビット比較部と、
前記大小比較の結果に基づいて、前記入力値から最上位ビットを除いた値の計算の補正を行う繰り上がり補正部と、
前記補正された前記入力値から最上位ビットを除いた値を前記入力値から減算することで前記入力値の最上位ビットを抽出する最上位ビット抽出部と、
を有する秘密計算サーバ装置。
【請求項7】
相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置を用いて、秘密分散して保持されている入力値の最上位ビットを抽出する秘密計算方法であって、
前記入力値をマスクするための乱数を生成する乱数生成ステップと、
前記乱数でマスクされた前記入力値から最上位ビットを除いた値と前記乱数から最上位ビットを除いた値との大小比較を行うm-1ビット比較ステップと、
前記大小比較の結果に基づいて、前記入力値から最上位ビットを除いた値の補正を行う繰り上がり補正ステップと、
前記補正された前記入力値から最上位ビットを除いた値を前記入力値から減算することで前記入力値の最上位ビットを抽出する最上位ビット抽出ステップと、
を有する秘密計算方法。
【請求項8】
前記乱数生成ステップは、前記入力値に依存せず、前記秘密計算サーバ装置の各々が独立に処理を行う、請求項7に記載の秘密計算方法。
【請求項9】
前記繰り上がり補正ステップは、前記乱数でマスクされた前記入力値から最上位ビットを除いた値よりも前記乱数から最上位ビットを除いた値が大きい場合に、前記入力値から最上位ビットを除いた値の計算の補正を行う、請求項7または請求項8に記載の秘密計算方法。
【請求項10】
相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置に、秘密分散して保持されている入力値の最上位ビットを抽出させる秘密計算プログラムであって、
前記入力値をマスクするための乱数を生成する乱数生成ステップと、
前記乱数でマスクされた前記入力値から最上位ビットを除いた値と前記乱数から最上位ビットを除いた値との大小比較を行うm-1ビット比較ステップと、
前記大小比較の結果に基づいて、前記入力値から最上位ビットを除いた値の計算の補正を行う繰り上がり補正ステップと、
前記補正された前記入力値から最上位ビットを除いた値を前記入力値から減算することで前記入力値の最上位ビットを抽出する最上位ビット抽出ステップと、
を有する秘密計算プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラムに関するものである。
【背景技術】
【0002】
近年、秘密計算と呼ばれる技術の研究開発が盛んに行われている。秘密計算は、第三者に対して計算過程とその結果を秘密にしつつ所定の処理を実行する技術の一つである。秘密計算における代表的な技術の一つとして、マルチパーティ計算技術が挙げられる。マルチパーティ計算技術では、秘密にするデータを複数のサーバ(秘密計算サーバ装置)に分散配置し、秘密にした状態を維持しながら当該データの任意の演算を実行する。なお、各秘密計算サーバ装置に分散配置したデータをシェアと呼ぶ。以降、特に断りがない限り、本書で「秘密計算」という語を用いた場合は、マルチパーティ計算技術を意味するものとする。
【0003】
秘密計算の処理の一つとして、最上位ビット抽出(MSB (Most Significant Bit) Extraction)のプロトコルがある。最上位ビット抽出は、各秘密計算サーバ装置に分散して保持されている値(シェア)から、秘密状態を維持したまま当該値の最上位ビットを計算するプロトコルである。最上位ビット抽出の重要な応用例として大小比較やビット分解があり、最上位ビット抽出自体の改良は、応用例としての大小比較やビット分解における改良へと波及することになるので重要である。
【先行技術文献】
【非特許文献】
【0004】
【文献】Wagh, Sameer, Divya Gupta, and Nishanth Chandran. "Securenn: 3-party secure computation for neural network training. "Proceedings on Privacy Enhancing Technologies 2019.3 (2019): 26-49.
【文献】Araki, Toshinori, et al. "How to choose suitable secure multiparty computation using generalized spdz. "Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security. 2018.
【文献】Araki, Toshinori, et al. "High-throughput semi-honest secure three-party computation with an honest majority. "Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security. 2016.
【発明の概要】
【発明が解決しようとする課題】
【0005】
なお、上記先行技術文献の各開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者らによってなされたものである。
【0006】
ところで、マルチパーティ計算技術を用いる秘密計算では、秘匿するデータを複数のサーバに分散配置した状態で処理を行うので、処理の効率化という観点では、通信コストの低減が課題となる。そして、この通信コストは、通信の対象となるデータ量を表す通信量と、最大限の並列化を行った場合の通信の回数を表す通信ラウンド数に分解できる。
【0007】
また、この通信量とラウンド数との間には、トレードオフの関係が成り立つことが多々ある一方、環境によっては通信量と通信ラウンド数のどちらを優先すべきかが異なることもある。例えば、WAN(Wide Area Network)環境などの通信遅延が大きい環境では、通信回数が小さい方が有利であるので、通信ラウンド数が小さい秘密計算の方が好ましい。例えば、非特許文献1に開示されている最上位ビット抽出のプロトコルは、定数ラウンド数(10ラウンド)であるが、より少ない定数ラウンド数で最上位ビット抽出を実行することができれば、応用例としての大小比較やビット分解においてもメリットがある。
【0008】
本発明の目的は、上述した課題を鑑み、最上位ビット抽出のプロトコルにおいて通信ラウンド数を低減することに寄与する秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラムを提供することにある。
【課題を解決するための手段】
【0009】
本発明の第1の視点では、相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置を備え、秘密分散して保持されている入力値の最上位ビットを抽出する秘密計算システムであって、前記秘密計算サーバ装置のそれぞれが、前記入力値をマスクするための乱数を生成する乱数生成部と、前記乱数でマスクされた前記入力値から最上位ビットを除いた値と前記乱数から最上位ビットを除いた値との大小比較を行うm-1ビット比較部と、前記大小比較の結果に基づいて、前記入力値から最上位ビットを除いた値の計算の補正を行う繰り上がり補正部と、前記補正された前記入力値から最上位ビットを除いた値を前記入力値から減算することで前記入力値の最上位ビットを抽出する最上位ビット抽出部と、を有する秘密計算システムが提供される。
【0010】
本発明の第2の視点では、秘密分散して保持されている入力値の最上位ビットを抽出するための相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置の一つであって、前記入力値をマスクするための乱数を生成する乱数生成部と、前記乱数でマスクされた前記入力値から最上位ビットを除いた値と前記乱数から最上位ビットを除いた値との大小比較を行うm-1ビット比較部と、前記大小比較の結果に基づいて、前記入力値から最上位ビットを除いた値の計算の補正を行う繰り上がり補正部と、前記補正された前記入力値から最上位ビットを除いた値を前記入力値から減算することで前記入力値の最上位ビットを抽出する最上位ビット抽出部と、を有する秘密計算サーバ装置が提供される。
【0011】
本発明の第3の視点では、相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置を用いて、秘密分散して保持されている入力値の最上位ビットを抽出する秘密計算方法であって、前記入力値をマスクするための乱数を生成する乱数生成ステップと、前記乱数でマスクされた前記入力値から最上位ビットを除いた値と前記乱数から最上位ビットを除いた値との大小比較を行うm-1ビット比較ステップと、前記大小比較の結果に基づいて、前記入力値から最上位ビットを除いた値の補正を行う繰り上がり補正ステップと、前記補正された前記入力値から最上位ビットを除いた値を前記入力値から減算することで前記入力値の最上位ビットを抽出する最上位ビット抽出ステップと、を有する秘密計算方法が提供される。
【0012】
本発明の第4の視点では、相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置に、秘密分散して保持されている入力値の最上位ビットを抽出させる秘密計算プログラムであって、前記入力値をマスクするための乱数を生成する乱数生成ステップと、前記乱数でマスクされた前記入力値から最上位ビットを除いた値と前記乱数から最上位ビットを除いた値との大小比較を行うm-1ビット比較ステップと、前記大小比較の結果に基づいて、前記入力値から最上位ビットを除いた値の計算の補正を行う繰り上がり補正ステップと、前記補正された前記入力値から最上位ビットを除いた値を前記入力値から減算することで前記入力値の最上位ビットを抽出する最上位ビット抽出ステップと、を有する秘密計算プログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント(non-transient)なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【0013】
本発明の各視点によれば、最上位ビット抽出のプロトコルにおいて通信ラウンド数を低減することに寄与する秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラムを提供することができる。
【図面の簡単な説明】
【0014】
【
図1】
図1は、第1の実施形態に係る秘密計算システムの機能構成例を示すブロック図である。
【
図2】
図2は、第1の実施形態に係る秘密計算方法の手順の概略を示すフローチャートである。
【
図3】
図3は、第1の実施形態に係る秘密計算サーバ装置の機能構成例を示すブロック図である。
【
図4】
図4は、第2の実施形態に係る秘密計算システムの機能構成例を示すブロック図である。
【
図5】
図5は、第2の実施形態に係る秘密計算方法の手順の概略を示すフローチャートである。
【
図6】
図6は、秘密計算サーバ装置のハードウェア構成例を示す図である。
【発明を実施するための形態】
【0015】
以下、図面を参照しながら、本発明の実施形態について説明する。ただし、以下に説明する実施形態により本発明が限定されるものではない。また、各図面において、同一または対応する要素には適宜同一の符号を付している。さらに、図面は模式的なものであり、各要素の寸法の関係、各要素の比率などは、現実のものとは異なる場合があることに留意する必要がある。図面の相互間においても、互いの寸法の関係や比率が異なる部分が含まれている場合がある。
【0016】
[準備]
以下、実施形態の説明にあたり、記法の定義および処理要素の説明を行う。以下で説明する記法および演算要素は、各実施形態の説明の中で共通して用いられる。
【0017】
秘密計算に参加する参加者をPi(i=0, 1, 2)とする。これら参加者Pi(i=0, 1, 2)は、後に詳述する秘密計算サーバ装置の使用者であり、実質的に各秘密計算サーバ装置と同一視することができる。
【0018】
位数nの剰余類環をZnとし、ここではn=2m(mは2以上の整数)とする。また、位数2の剰余類環をZ2とし、3以上の素数pに対する位数pの剰余類環をZpとする。なお、位数pの剰余類環Zpは体であるが、ここでは環としての性質のみを扱う。
【0019】
〔(2,3)-RSSS〕
2-out-of-3複製型秘密分散(Replicated Secret Sharing Scheme)は以下のような構成である。
【0020】
(位数nの剰余類環Znの場合)
剰余類環Znの元xに対する剰余類環Zn上のシェアを[x]=([x]0, [x]1, [x]2)とすると、各参加者Pi(i=0, 1, 2)が保持するシェア[x]0, [x]1, [x]2は、x=x0+x1+x2 mod nとなるx0, x1, x2を用いて、以下のように定められる。
[x]0=(x0, x1)
[x]1=(x1, x2)
[x]2=(x2, x0)
【0021】
このように各参加者Pi(i=0, 1, 2)が保持するシェア[x]0, [x]1, [x]2を定めると、各参加者Pi(i=0, 1, 2)は、自己が保持するシェア[x]0, [x]1, [x]2からはxを復元することはできない。
【0022】
(位数2の剰余類環Z2の場合)
剰余類環Z2の元xに対する剰余類環Z2上のシェアを[x]B=([x]B
0, [x]B
1, [x]B
2)とすると、各参加者Pi(i=0, 1, 2)が保持するシェア[x]B
0, [x]B
1, [x]B
2は、x=x0+x1+x2 mod 2となるx0, x1, x2を用いて、以下のように定められる。
[x]B
0=(x0, x1)
[x]B
1=(x1, x2)
[x]B
2=(x2, x0)
【0023】
(位数pの剰余類環Zpの場合)
剰余類環Zpの元xに対する剰余類環Zp上のシェアを[x]P=([x]P
0, [x]P
1, [x]P
2)とすると、各参加者Pi(i=0, 1, 2)が保持するシェア[x]P
0, [x]P
1, [x]P
2は、x=x0+x1+x2 mod pとなるx0, x1, x2を用いて、以下のように定められる。
[x]P
0=(x0, x1)
[x]P
1=(x1, x2)
[x]P
2=(x2, x0)
【0024】
〔(2,2)-ASSS〕
また、2-out-of-2加法秘密分散(Additive Secret Sharing Scheme)は以下のような構成である。
【0025】
剰余類環Zpの元xに対する剰余類環Zp上のシェアを[[x]]P=([[x]]P
0, [[x]]P
1)とすると、参加者Pi(i=0, 1)が保持するシェア[x]P
0, [x]P
1は、x=x0+x1 mod pとなるx0, x1を用いて、以下のように定められる。
[[x]]P
0=x0
[[x]]P
1=x1
【0026】
〔疑似ランダム関数〕
疑似ランダム関数は、セキュリティパラメータκに対して定められた2項演算である。各参加者Pi(i=0, 1, 2)は、シードseedi∈{0,1}κ(i=0, 1, 2)を(seedi, seedi+1)のように分散保持しており(ただしseed2+1 = seed0とする)、識別子vid∈{0,1}κはカウンタなどの公開された値である。各疑似ランダム関数Fn,F2,Fpは、これらシードseedi∈{0,1}κおよび識別子vid∈{0,1}κを入力とする以下のような2項演算である。
Fn:{0,1}κ×{0,1}κ→{0,1}n
F2:{0,1}κ×{0,1}κ→{0,1}2
Fp*:{0,1}κ×{0,1}κ→Z*
p
【0027】
ここで、以下の実施形態で用いる演算のビルディングブロック(Building Block)およびその通信ラウンド数と通信量の説明を行う。
【0028】
〔ビット変換〕
ビルディングブロックとして2種類のビット変換を用いる。一つは、位数2の剰余類環Z2上のシェア[x]Bから位数nの剰余類環Zn上のシェア[x]を得るビット変換:[x]←BC([x]B)である。具体的な演算は、例えば非特許文献2に記載の方法を用いることができる。ビット変換:[x]←BC([x]B)の通信ラウンド数は2ラウンドであり、通信量は6mビットである。
【0029】
もう一つは、位数2の剰余類環Z2上のシェア[x]Bから位数pの剰余類環Zp上のシェア[x]pを得るビット変換:[x]p←BC([x]B)である。具体的な演算は、非特許文献2に記載の方法と大枠で同じであるが、位数pの剰余類環Zp上のシェア[x]pへ変換することが異なる。位数2の剰余類環Z2上のシェア[x]Bから[x]0, [x]1, [x]2に再分散を行うのではなく、[x]P
0, [x]P
1, [x]P
2に再分散を行う。その後、[x]p=(([x]P
0 - [x]P
1)2 - [x]P
2)2を計算する。ビット変換:[x]p←BC([x]B)の通信ラウンド数は2ラウンドであり、通信量は6log2(p)ビットである。
【0030】
〔復元〕
ビルディングブロックとして3種類の復元を用いる。一つは、参加者Piが位数2mの剰余類環Z2
m上のシェア[x]から秘密状態を解除した元xを得る復元:x←Open(Pi, [x])である。具体的な演算は、例えば非特許文献3に記載の方法を用いることができる。復元:x←Open(Pi, [x])の通信ラウンド数は1ラウンドであり、通信量はmビットである。
【0031】
もう一つは、参加者Piが位数2の剰余類環Z2上のシェア[x]Bから秘密状態を解除した元xを得る復元:x←Open(Pi, [x]B)である。具体的な演算は、例えば非特許文献3に記載の方法を用いることができる。復元:x←Open(Pi, [x]B)の通信ラウンド数は1ラウンドであり、通信量は1ビットである。
【0032】
もう一つは、参加者Piが位数pの剰余類環Zp上のシェア[x]Pから秘密状態を解除した元xを得る復元:x←Open(Pi, [x]P)である。具体的な演算は、例えば非特許文献3に記載の方法と大枠で同じであるが、剰余類環Zp上での復元であることが異なる。復元:x←Open(Pi, [x]P)の通信ラウンド数は1ラウンドであり、通信量はlog2(p)ビットである。
【0033】
〔ビット変換〕
参加者Pi(i=0, 1, 2)のうち2参加者Pi,Pi+1が(2,3)-RSSSから(2,2)-ASSSのシェアを得る変換:[[x]]p←SC([x]P, Pi, Pi+1)は、例えば2参加者がP0,P1の場合、[[x]]p
0=(x0+x1) mod p, [[x]]p
1=x2とすれば得ることができる。
【0034】
〔分散〕
ビルディングブロックとして2種類の分散を用いる。一つは、入力者(input dealer)として参加者Piが入力した元xを、位数2mの剰余類環Z2
m上のシェア[x]として各参加者Piに分散する分散:[x]←Share(Pi, x)である。例えば非特許文献3に記載の方法を用いることができる。分散:[x]←Share(Pi, x)の通信ラウンド数は1ラウンドであり、通信量は4mビットである。
【0035】
もう一つは、入力者として参加者Piが入力した元xを、位数2の剰余類環Z2上のシェア[x]として各参加者Piに分散する分散:[x]B←Share(Pi, x)である。例えば非特許文献3に記載の方法を用いることができる。分散:[x]B←Share(Pi, x)の通信ラウンド数は1ラウンドであり、通信量は4ビットである。
【0036】
〔乱数生成〕
ビルディングブロックとして2種類の乱数生成を用いる。一つは、シードのペア(seedi, seedi+1)と識別子vidから位数2mの剰余類環Z2
m上の乱数のシェア[r]を生成する乱数生成:[r]←RndGen(seedi, seedi+1)であり、先述の疑似ランダム関数Fnを用いて[r]i=(Fn(seedi, vid), Fn(seedi+1, vid))で定める。
【0037】
もう一つは、シードのペア(seedi, seedi+1)と識別子vidから位数2の剰余類環Z2上の乱数のシェア[r]Bを生成する乱数生成:[r]B←BitRndGen(seedi, seedi+1)であり、先述の疑似ランダム関数F2を用いて[r]i=(F2(seedi, vid), F2(seedi+1, vid))で定める。
【0038】
〔PrivateCompare〕
PrivateCompareは、定数ラウンドで大小比較を実行するビルディングブロックであり、例えば非特許文献1に記載の演算を用いることができる。PrivateCompareの通信ラウンド数は1ラウンドであり、通信量は2m log2(p)ビットである。
【0039】
[第1の実施形態]
以下、
図1、
図2、および
図3を参照して、第1の実施形態に係る秘密計算システム、秘密計算サーバ装置、秘密計算方法について説明する。第1の実施形態は、本発明の基本的なコンセプトと説明する実施形態である。
【0040】
図1は、第1の実施形態に係る秘密計算システムの機能構成例を示すブロック図である。
図1に示すように、第1の実施形態による秘密計算システム100は、第1の秘密計算サーバ装置100_1と第2の秘密計算サーバ装置100_2と第3の秘密計算サーバ装置100_3とを備えている。第1の秘密計算サーバ装置100_1、第2の秘密計算サーバ装置100_2、および第3の秘密計算サーバ装置100_3は、それぞれが互いにネットワーク経由で通信可能に接続されている。
【0041】
第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)に分散して保持することができる。
【0042】
また、第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)に分散して保持することができる。
【0043】
なお、上記計算結果のシェアは、第1~第3の秘密計算サーバ装置100_1~100_3とシェアを送受信することで、復元してもよい。あるいは、第1~第3の秘密計算サーバ装置100_1~100_3ではない外部にシェアを送信することで、復元してもよい。
【0044】
ここで、最上位ビットを抽出する秘密計算を行う際の問題点を説明する。
【0045】
まず、最上位ビットを抽出しようとする入力値aは、第1~第3の秘密計算サーバ装置100_i(i=1,2,3)にシェア[a]として秘密分散して保持されているとする。最上位ビットを抽出しようとする入力値aが新たに第1~第3の秘密計算サーバ装置100_1~100_3のいずれかに入力される場合も、第1~第3の秘密計算サーバ装置100_1~100_3のいずれかがシェア[a]を生成して秘密分散するものと考えてよい。
【0046】
目的とする秘密計算は、シェア[a]から入力値aの最上位ビットmsb(a)のシェア[msb(a)]を計算することであるが、各第1~第3の秘密計算サーバ装置100_i(i=1,2,3)は、自己が保持するシェア[a]から入力値aを知ることはできず、最上位ビットmsb(a)を直接的に知ることはできない。
【0047】
そこで、各第1~第3の秘密計算サーバ装置100_i(i=1,2,3)が保持するシェア[a]の情報を相互に受け渡すことによってシェア[msb(a)]を計算するのであるが、無制限に情報を相互に受け渡すと第1~第3の秘密計算サーバ装置100_i(i=1,2,3)が入力値aを復元することが可能になってしまい秘密状態が維持できない。
【0048】
これに対する解決方法として、第1~第3の秘密計算サーバ装置100_i(i=1,2,3)の間でシェア[a]の情報を受け渡す際に、乱数によってマスクをして情報を復元できないようにする方法が考えられる。しかしながら、乱数によってマスクをする方法にも問題点がある。それは、マスクをすることによって、最上位ビットmsb(a)が影響を受けてしまうことが起こり得るからである。
【0049】
本発明の実施形態では、最上位ビットmsb(a)が乱数のマスクによって影響を受けたか否かを検証し、最上位ビットmsb(a)が乱数のマスクによって影響を受けた場合に補正をすることで、この問題を回避する。以下、第1の実施形態に係る秘密計算方法の手順の概要を示すことで、この手法を説明する。
【0050】
図2は、第1の実施形態に係る秘密計算方法の手順の概要を示すフローチャートである。
図2に示す秘密計算方法の手順の概要は、相互にネットワークで接続した第1~第3の秘密計算サーバ装置100_i(i=1,2,3)を用いて、秘密分散して保持されている入力値のシェア[a]から最上位ビットのシェア[msb(a)]を抽出する秘密計算方法に関するものである。
【0051】
ステップA1は、入力値のシェア[a]をマスクするための乱数のシェア[r]を生成する乱数生成ステップである。後に詳述するが、乱数のシェア[r]を生成するためには、入力値のシェア[a]を必要としない。したがって、この乱数生成ステップは、入力値aに依存せず、第1~第3の秘密計算サーバ装置100_i(i=1,2,3)の各々が独立に処理を行うことができる。すなわち、この乱数生成ステップは、いわゆるオフラインの処理で実行することができる。
【0052】
ステップA2は、乱数[r]でマスクされた入力値[a+r]から最上位ビットを除いた値[(a+r) mod 2m-1]と乱数[r]から最上位ビットを除いた値[r mod 2m-1]との大小比較を行うm-1ビット比較ステップである。この大小比較により、最上位ビットmsb(a)が乱数のマスクによって影響を受けたか否かの判断をすることができる。
【0053】
ステップA3は、ステップA2の大小比較の結果に基づいて、入力値のシェア[a]から最上位ビットを除いた値[a mod 2m-1]の補正を行う繰り上がり補正ステップである。後に詳述するように、シェア[a mod 2m-1]を計算するには、シェア[(a+r) mod 2m-1]からシェア[r mod 2m-1]を減算することになるが、単純に計算すると乱数のマスクによって繰り上げの影響を受けた場合に値が誤ってしまう。そこで、ステップA3では、乱数[r]でマスクされた入力値[a+r]から最上位ビットを除いた値[(a+r) mod 2m-1]よりも乱数[r]から最上位ビットを除いた値[r mod 2m-1]が大きい場合に、入力値から最上位ビットを除いた値[a mod 2m-1]の計算の補正を行う。
【0054】
ステップA4は、補正された入力値から最上位ビットを除いた値のシェア[a mod 2m-1]を入力値のシェア[a]から減算することで入力値の最上位ビットシェア[msb(a)]を抽出する最上位ビット抽出ステップである。
【0055】
このように、第1の実施形態に係る秘密計算方法では、最上位ビットmsb(a)が乱数のマスクによって影響を受けたか否かを検証し、最上位ビットmsb(a)が乱数のマスクによって影響を受けた場合に補正をすることで、乱数のマスクで秘密状態を維持しながら正しく最上位ビットを抽出することができる。
【0056】
また、後に具体的数値を挙げて説明するように、第1の実施形態に係る秘密計算方法では、各ステップの処理における通信ラウンド数を定数ラウンドに抑えることができる。したがって、第1の実施形態に係る秘密計算方法は、最上位ビット抽出のプロトコルにおいて通信ラウンド数を低減することに寄与することができる。
【0057】
図3は、第1の実施形態に係る秘密計算サーバ装置の機能構成例を示すブロック図である。
図3に示す秘密計算サーバ装置の機能構成例は、
図2に示した第1の実施形態に係る秘密計算方法を実施するために好適な機能構成例である。ただし、第1の実施形態に係る秘密計算方法を実施することが可能な秘密計算サーバ装置の構成は、
図3に示すものに限定されず、例えば後に詳述するハードウェア構成例を採用することができる。
【0058】
図3に示す秘密計算サーバ装置の機能構成例は、
図1に示した第1~第3の秘密計算サーバ装置100_i(i=1,2,3)の一つを代表して示したものである。
図3に示すように、第1~第3の秘密計算サーバ装置100_i(i=1,2,3)は、乱数生成部101_iとm-1ビット比較部102_iと繰り上がり補正部103_iと最上位ビット抽出部104_iとを備えている。
【0059】
乱数生成部101_iは、入力値のシェア[a]をマスクするための乱数のシェア[r]を生成するための構成である。既に指摘したことであるが、乱数のシェア[r]を生成するためには、入力値のシェア[a]を必要としない。したがって、乱数生成部101_iは、入力値aに依存せず、第1~第3の秘密計算サーバ装置100_i(i=1,2,3)の各々が独立に処理を行うことができる。
【0060】
m-1ビット比較部102_iは、乱数[r]でマスクされた入力値[a+r]から最上位ビットを除いた値[(a+r) mod 2m-1]と乱数[r]から最上位ビットを除いた値[r mod 2m-1]との大小比較を行うための構成である。この大小比較により、最上位ビットmsb(a)が乱数のマスクによって影響を受けたか否かの判断をすることができる。
【0061】
繰り上がり補正部103_iは、上記大小比較の結果に基づいて、入力値のシェア[a]から最上位ビットを除いた値[a mod 2m-1]の補正を行うための構成である。繰り上がり補正部103_iでは、乱数[r]でマスクされた入力値[a+r]から最上位ビットを除いた値[(a+r) mod 2m-1]よりも乱数[r]から最上位ビットを除いた値[r mod 2m-1]が大きい場合に、入力値から最上位ビットを除いた値[a mod 2m-1]の計算の補正を行う。
【0062】
最上位ビット抽出部104_iは、補正された入力値から最上位ビットを除いた値のシェア[a mod 2m-1]を入力値のシェア[a]から減算することで入力値の最上位ビットシェア[msb(a)]を抽出するための構成である。
【0063】
このように、第1の実施形態に係る秘密計算サーバ装置は、第1の実施形態に係る秘密計算方法を実施するために好適な機能構成例である。したがって、第1の実施形態に係る秘密計算サーバ装置は、最上位ビットmsb(a)が乱数のマスクによって影響を受けたか否かを検証し、最上位ビットmsb(a)が乱数のマスクによって影響を受けた場合に補正をすることで、乱数のマスクで秘密状態を維持しながら正しく最上位ビットを抽出するための好適な構成を備えている。
【0064】
また、第1の実施形態に係る秘密計算サーバ装置が実施する秘密計算方法では、各ステップの処理における通信ラウンド数を定数ラウンドに抑えることができる。したがって、第1の実施形態に係る秘密計算サーバ装置は、最上位ビット抽出のプロトコルにおいて通信ラウンド数を低減することに寄与することができる。
【0065】
さらに、第1の実施形態に係る秘密計算サーバ装置を第1~第3の秘密計算サーバ装置100_i(i=1,2,3)のそれぞれに備えた第1の実施形態に係る秘密計算システムも、第1の実施形態に係る秘密計算方法を実施するために好適な機能構成例である。したがって、第1の実施形態に係る秘密計算サーバ装置は、最上位ビットmsb(a)が乱数のマスクによって影響を受けたか否かを検証し、最上位ビットmsb(a)が乱数のマスクによって影響を受けた場合に補正をすることで、乱数のマスクで秘密状態を維持しながら正しく最上位ビットを抽出するための好適な構成を備えている。
【0066】
そして、第1の実施形態に係る秘密計算システムが実施する秘密計算方法では、各ステップの処理に係る通信ラウンド数を定数ラウンドに抑えることができる。したがって、第1の実施形態における秘密計算システムは、最上位ビット抽出のプロトコルにおいて通信ラウンド数を低減することに寄与することができる。
【0067】
[第2の実施形態]
次に、第1の実施形態で説明した秘密計算をより具体化した第2の実施形態について説明する。第2の実施形態に係る秘密計算システム、秘密計算サーバ装置、秘密計算方法は、第1の実施形態で説明した秘密計算をより具体化したものであるので、その構成は多くの点で共通している。したがって、第2の実施形態では構成の説明を適宜省略する。
【0068】
図4は、第2の実施形態に係る秘密計算システムの機能構成例を示すブロック図である。
図4に示すように、第2の実施形態による秘密計算システム200は、第1の秘密計算サーバ装置200_1と第2の秘密計算サーバ装置200_2と第3の秘密計算サーバ装置200_3とを備えている。第1の秘密計算サーバ装置200_1、第2の秘密計算サーバ装置200_2、および第3の秘密計算サーバ装置200_3は、それぞれが互いにネットワーク経由で通信可能に接続されている。
【0069】
第1~第3の秘密計算サーバ装置200_i(i=1,2,3)を備える秘密計算システム200においては、第1~第3の秘密計算サーバ装置200_i(i=1,2,3)に分散して保持されているシェアに対し、その計算過程の値を知られることなく目的のシェアを計算し、その計算結果を第1~第3の秘密計算サーバ装置200_i(i=1,2,3)に分散して保持することができる。
【0070】
図5は、第2の実施形態に係る秘密計算方法の手順の概要を示すフローチャートである。
図5に示す秘密計算方法の手順の概要は、相互にネットワークで接続した第1~第3の秘密計算サーバ装置200_i(i=1,2,3)を用いて、秘密分散して保持されている入力値のシェア[a]から最上位ビットのシェア[msb(a)]を抽出する秘密計算方法に関するものである。
【0071】
図5に示すように、第2の実施形態に係る秘密計算方法は、乱数生成ステップ(ステップB1)とm-1ビット比較ステップ(ステップB2)と繰り上がり補正ステップ(ステップB3)と最上位ビット抽出ステップ(ステップB4)とに大きく分けられる。以下、これら各ステップの詳細を説明する。
【0072】
〔ステップB1〕
ステップB1は、入力値のシェア[a]をマスクするための乱数のシェア[r]を生成する乱数生成ステップである。
【0073】
(ステップB1-1)
シードのペア(seedi, seedi+1)と識別子vidから位数2の剰余類環Z2上の乱数のシェア[r]Bを生成する乱数生成:[rj]B←BitRndGen(seedi, seedi+1)をj=0,...,m-1に対して行う。
【0074】
(ステップB1-2)
位数2の剰余類環Z2上の乱数のシェア[rj]Bから位数nの剰余類環Zn上の乱数のシェア[rj]を得るビット変換:[rj]←BC([rj]B)をj=0,...,m-1に対して行う。
【0075】
(ステップB1-3)
位数2の剰余類環Z2上の乱数のシェア[rj]Bから位数pの剰余類環Zp上の乱数のシェア[rj]pを得るビット変換:[rj]p←BC([rj]B)をj=0,...,m-1に対して行う。
【0076】
(ステップB1-4)
2参加者P0,P1が(2,3)-RSSSの[rj]pから(2,2)-ASSSのシェア[[r]]pを得る変換:[[r]]p←SC([rj]p, P0, P1)をj=0,...,m-1に対して行う。
【0077】
(ステップB1-5)
乱数のシェア[r]を以下のように構成する。
【数1】
【0078】
(ステップB1-6)
乱数のシェア[r]の下位m-1ビット部分を以下のように抽出する。
【数2】
【0079】
(ステップB1-7)
乱数rの最上位ビットのみを残して、下位m-1ビット部分に0を埋めたシェアを以下のように計算する。
[2m-1 msb(r)] = [r-(r mod 2m-1)] = 2m-1[rm-1] = 2m-1[msb(r)]
【0080】
上記ステップB1-1からステップB1-7は、入力値のシェア[a]を必要としない。したがって、ステップB1-1からステップB1-7は、いわゆるオフラインの処理で実行することができる。また、ステップB1-1からステップB1-7における通信ラウンド数は2ラウンドであり、通信量は6m2+6(m-1)log2(p)である。
【0081】
〔ステップB2〕
ステップB2は、乱数[r]でマスクされた入力値[a+r]から最上位ビットを除いた値[(a+r) mod 2m-1]と乱数[r]から最上位ビットを除いた値[r mod 2m-1]との大小比較を行うm-1ビット比較ステップである。
【0082】
(ステップB2-1)
最上位ビットを抽出すべき入力値のシェア[a]を乱数のシェア[r]でマスクをする。
[a+r] = [a]+[r]
【0083】
(ステップB2-2)
乱数のシェア[r]でマスクをした入力値のシェア[a+r]を2倍する。つまり、1ビット分だけ左シフトを行い、最上位ビットを消す。なお、この処理で最下位ビットは0になる。
[2((a+r) mod 2m-1)] = 2[a+r]
【0084】
(ステップB2-3)
各参加者Pi(i=0,1,2)がmビット分の値のa+rのうち、m-1ビット部分のみを抽出する。
[2((a+r) mod 2m-1) ← Open(Pi, [2((a+r) mod 2m-1)])
【0085】
(ステップB2-4)
参加者P0とP1が疑似ランダム関数とシードseed1を用いて、β∈{0,1}とsi∈Z*
pとui∈Z*
pを生成する。
【0086】
(ステップB2-5)
参加者P
2が以下のようにPrivateCompareを用いて、変数u’を計算する。
【数3】
【0087】
(ステップB2-6)
参加者P2が計算された変数u’をシェア[u’]として秘密分散する。
【0088】
(ステップB2-7)
参加者P0とP1が、シェア[β]と[(a+r) mod 2m-1]を以下のように設定する。
[β] = ((0,β), (β,0), (0,0))
[(a+r) mod 2m-1] = ((0, (a+r) mod 2m-1), ((a+r) mod 2m-1,0), (0,0))
【0089】
(ステップB2-8)
乱数でマスクされた入力値から最上位ビットを除いた値と乱数から最上位ビットを除いた値との大小比較は、以下のように計算することができ、この結果を示すシェアを[u]とする。シェア[u]は、乱数でマスクされた入力値から最上位ビットを除いた値の方が乱数から最上位ビットを除いた値よりも大きい場合に1となり、逆の場合に0となる。
【数4】
【0090】
〔ステップB3〕
ステップB3は、ステップB2の大小比較の結果に基づいて、入力値のシェア[a]から最上位ビットを除いた値[a mod 2m-1]の補正を行う繰り上がり補正ステップである。シェア[a mod 2m-1]を計算するには、シェア[(a+r) mod 2m-1]からシェア[r mod 2m-1]を減算することになるが、単純に計算すると乱数のマスクによって繰り上げの影響を受けた場合に値が誤ってしまう。そこで、この補正ステップでは、ステップB2で計算した大小関係を示すシェア[u]を用いて、シェア[a mod 2m-1]の計算を補正する。
【0091】
(ステップB3-1)
ステップB2で計算した大小関係を示すシェア[u]を用いて、以下のようにシェア[a mod 2
m-1]の計算を補正する。
【数5】
【0092】
上記計算を行うと、乱数[r]でマスクされた入力値[a+r]から最上位ビットを除いた値[(a+r) mod 2m-1]よりも乱数[r]から最上位ビットを除いた値[r mod 2m-1]が大きい場合に、入力値から最上位ビットを除いた値[a mod 2m-1]の計算の補正を行うことができる。
【0093】
この補正によって、入力値aのmビットのうち、m-1ビットの部分を正しく抽出することができる。
【0094】
〔ステップB4〕
ステップB4は、補正された入力値から最上位ビットを除いた値のシェア[a mod 2m-1]を入力値のシェア[a]から減算することで入力値の最上位ビットシェア[msb(a)]を抽出する最上位ビット抽出ステップである。
【0095】
(ステップB4-1)
補正された入力値から最上位ビットを除いた値のシェア[a mod 2m-1]を入力値のシェア[a]から減算する。
[2m-1msb(a)] = [a]- [a mod 2m-1]
【0096】
(ステップB4-2)
次に以下の計算を行う。
【数6】
【0097】
(ステップB4-3)
参加者P
0が、ステップB4-2の計算結果を復元する。
【数7】
【0098】
(ステップB4-4)
参加者P
0が、ステップB4-3の計算結果から2
m-1を除算した値を秘密分散する。
【数8】
【0099】
(ステップB4-5)
最終的に、以下の計算をすることで最上位ビットのシェア[msb(a)]
Bを抽出することができる。
【数9】
【0100】
以上のように、第2の実施形態に係る秘密計算方法では、入力値のシェア[a]から最上位ビットのシェア[msb(a)]Bを抽出することができる。
【0101】
第2の実施形態に係る秘密計算方法では、入力値のシェア[a]から最上位ビットのシェア[msb(a)]Bを抽出するまでの全体の通信コストは、通信ラウンド数が8ラウンドであり、通信量が6m2+8(m-1)log2(p)+11m+4ビットである。
【0102】
また、通信コストの内訳は、オフラインの処理であるステップB1における通信ラウンド数が2ラウンドであり、通信量が6m2+6(m-1)log2(p)である。オンラインの処理であるステップB2からステップB4までの通信ラウンド数が6ラウンドであり、通信量が11m+4+2(m-1)log2(p)である。
【0103】
例えば、非特許文献1に記載の最上位ビットの抽出方法の通信コストは、通信ラウンド数が10ラウンドであり、通信量が8mlog2(p)+19m+2である。したがって、本発明の秘密計算方法では、非特許文献1に記載の最上位ビットの抽出方法よりも、通信コストにおける通信ラウンド数を削減することができている。すなわち、本発明の秘密計算方法は、最上位ビット抽出のプロトコルにおいて通信ラウンド数を低減することに寄与することができる。
【0104】
[ハードウェア構成例]
図6は、秘密計算サーバ装置のハードウェア構成例を示す図である。すなわち、
図6に示すハードウェア構成例は、秘密計算サーバ装置100_i,200_i(i=1,2,3)のハードウェア構成例である。
図6に示すハードウェア構成を採用した情報処理装置(コンピュータ)は、上記説明した秘密計算方法をプログラムとして実行することで、秘密計算サーバ装置100_i,200_i(i=1,2,3)の各機能を実現することを可能にする。
【0105】
ただし、
図6に示すハードウェア構成例は、秘密計算サーバ装置100_i,200_i(i=1,2,3)の各機能を実現するハードウェア構成の一例であり、秘密計算サーバ装置100_i,200_i(i=1,2,3)のハードウェア構成を限定する趣旨ではない。秘密計算サーバ装置100_i,200_i(i=1,2,3)は、
図6に示さないハードウェアを含むことができる。
【0106】
図6に示すように、秘密計算サーバ装置100_i,200_i(i=1,2,3)が採用し得るハードウェア構成10は、例えば内部バスにより相互に接続される、CPU(Central Processing Unit)11、主記憶装置12、補助記憶装置13、およびIF(Interface)部14を備える。
【0107】
CPU11は、秘密計算サーバ装置100_i,200_i(i=1,2,3)が実行する秘密計算プログラムに含まれる各指令を実行する。主記憶装置12は、例えばRAM(Random Access Memory)であり、秘密計算サーバ装置100_i,200_i(i=1,2,3)が実行する秘密計算プログラムなどの各種プログラムなどをCPU11が処理するために一時記憶する。
【0108】
補助記憶装置13は、例えば、HDD(Hard Disk Drive)であり、秘密計算サーバ装置100_i,200_i(i=1,2,3)が実行する秘密計算プログラムなどの各種プログラムなどを中長期的に記憶しておくことが可能である。秘密計算プログラムなどの各種プログラムは、非一時的なコンピュータ可読記録媒体(non-transitory computer-readable storage medium)に記録されたプログラム製品として提供することができる。補助記憶装置13は、非一時的なコンピュータ可読記録媒体に記録された秘密計算プログラムなどの各種プログラムを中長期的に記憶することに利用することが可能である。IF部14は、秘密計算サーバ装置100_i,200_i(i=1,2,3)間の入出力に関するインターフェイスを提供する。
【0109】
上記のようなハードウェア構成10を採用した情報処理装置は、先述した秘密計算方法を秘密計算プログラムとして実行することで、秘密計算サーバ装置100_i,200_i(i=1,2,3)の各機能を実現することができる。
【0110】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
[付記1]
相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置を備え、秘密分散して保持されている入力値の最上位ビットを抽出する秘密計算システムであって、
前記秘密計算サーバ装置のそれぞれが、
前記入力値をマスクするための乱数を生成する乱数生成部と、
前記乱数でマスクされた前記入力値から最上位ビットを除いた値と前記乱数から最上位ビットを除いた値との大小比較を行うm-1ビット比較部と、
前記大小比較の結果に基づいて、前記入力値から最上位ビットを除いた値の計算の補正を行う繰り上がり補正部と、
前記補正された前記入力値から最上位ビットを除いた値を前記入力値から減算することで前記入力値の最上位ビットを抽出する最上位ビット抽出部と、
を有する秘密計算システム。
[付記2]
前記m-1ビット比較部が行う大小比較は、前記秘密計算サーバ装置の間で行われる通信コストが定数ラウンドである、付記1に記載の秘密計算システム。
[付記3]
前記m-1ビット比較部、前記繰り上がり補正部、および前記最上位ビット抽出部が行う処理は、前記秘密計算サーバ装置の間で行われる通信コストの総和が定数ラウンドである、付記2に記載の秘密計算システム。
[付記4]
前記乱数生成部は、前記入力値に依存せず、前記秘密計算サーバ装置の各々が独立に処理を行う、付記1から付記3のいずれか1つに記載の秘密計算システム。
[付記5]
前記繰り上がり補正部は、前記乱数でマスクされた前記入力値から最上位ビットを除いた値よりも前記乱数から最上位ビットを除いた値が大きい場合に、前記入力値から最上位ビットを除いた値の計算の補正を行う、付記1から付記4のいずれか1つに記載の秘密計算システム。
[付記6]
秘密分散して保持されている入力値の最上位ビットを抽出するための相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置の一つであって、
前記入力値をマスクするための乱数を生成する乱数生成部と、
前記乱数でマスクされた前記入力値から最上位ビットを除いた値と前記乱数から最上位ビットを除いた値との大小比較を行うm-1ビット比較部と、
前記大小比較の結果に基づいて、前記入力値から最上位ビットを除いた値の計算の補正を行う繰り上がり補正部と、
前記補正された前記入力値から最上位ビットを除いた値を前記入力値から減算することで前記入力値の最上位ビットを抽出する最上位ビット抽出部と、
を有する秘密計算サーバ装置。
[付記7]
相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置を用いて、秘密分散して保持されている入力値の最上位ビットを抽出する秘密計算方法であって、
前記入力値をマスクするための乱数を生成する乱数生成ステップと、
前記乱数でマスクされた前記入力値から最上位ビットを除いた値と前記乱数から最上位ビットを除いた値との大小比較を行うm-1ビット比較ステップと、
前記大小比較の結果に基づいて、前記入力値から最上位ビットを除いた値の補正を行う繰り上がり補正ステップと、
前記補正された前記入力値から最上位ビットを除いた値を前記入力値から減算することで前記入力値の最上位ビットを抽出する最上位ビット抽出ステップと、
を有する秘密計算方法。
[付記8]
前記乱数生成ステップは、前記入力値に依存せず、前記秘密計算サーバ装置の各々が独立に処理を行う、付記7に記載の秘密計算方法。
[付記9]
前記繰り上がり補正ステップは、前記乱数でマスクされた前記入力値から最上位ビットを除いた値よりも前記乱数から最上位ビットを除いた値が大きい場合に、前記入力値から最上位ビットを除いた値の計算の補正を行う、付記7または付記8に記載の秘密計算方法。
[付記10]
相互にネットワークで接続した少なくとも3台以上の秘密計算サーバ装置に、秘密分散して保持されている入力値の最上位ビットを抽出させる秘密計算プログラムであって、
前記入力値をマスクするための乱数を生成する乱数生成ステップと、
前記乱数でマスクされた前記入力値から最上位ビットを除いた値と前記乱数から最上位ビットを除いた値との大小比較を行うm-1ビット比較ステップと、
前記大小比較の結果に基づいて、前記入力値から最上位ビットを除いた値の計算の補正を行う繰り上がり補正ステップと、
前記補正された前記入力値から最上位ビットを除いた値を前記入力値から減算することで前記入力値の最上位ビットを抽出する最上位ビット抽出ステップと、
を有する秘密計算プログラム。
【0111】
なお、引用した上記の特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択(部分的削除を含む)が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。さらに、上記引用した文献の各開示事項は、必要に応じ、本発明の趣旨に則り、本発明の開示の一部として、その一部又は全部を、本書の記載事項と組み合わせて用いることも、本願の開示事項に含まれるものと、みなされる。
【符号の説明】
【0112】
100,200 秘密計算システム
100_i,200_i 秘密計算サーバ装置
101_i 乱数生成部
102_i m-1ビット比較部
103_i 繰り上がり補正部
104_i 最上位ビット抽出部
10 ハードウェア構成
11 CPU(Central Processing Unit)
12 主記憶装置
13 補助記憶装置
14 IF(Interface)部