(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-18
(45)【発行日】2023-12-26
(54)【発明の名称】秘密選択積計算システム、秘密選択積計算方法、秘密計算装置、およびプログラム
(51)【国際特許分類】
G09C 1/00 20060101AFI20231219BHJP
【FI】
G09C1/00 650Z
(21)【出願番号】P 2021572123
(86)(22)【出願日】2020-01-20
(86)【国際出願番号】 JP2020001677
(87)【国際公開番号】W WO2021149101
(87)【国際公開日】2021-07-29
【審査請求日】2022-07-05
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】100121706
【氏名又は名称】中尾 直樹
(74)【代理人】
【識別番号】100128705
【氏名又は名称】中村 幸雄
(74)【代理人】
【識別番号】100147773
【氏名又は名称】義村 宗洋
(72)【発明者】
【氏名】五十嵐 大
【審査官】青木 重徳
(56)【参考文献】
【文献】CATRINA, Octavian et al.,Secure Computation With Fixed-Point Numbers,LNCS, Financial Cryptography and Data Security,Vol. 6052,ドイツ,Springer,2010年,p. 35-50
【文献】大畑 幸矢,秘匿深層学習再考,2018年 暗号と情報セキュリティシンポジウム(SCIS2018)予稿集 [USB],日本,2018年01月23日,3F1-5,p. 1-8
【文献】三品 気吹 ほか,秘密計算によるロジスティック回帰は本当に使えるか?,2019年暗号と情報セキュリティシンポジウム予稿集,日本,一般社団法人電子情報通信学会,2019年01月15日,4C2-3,p. 1-8
【文献】五十嵐 大,M op/sを超える秘密計算上の初等関数群,2020年 暗号と情報セキュリティシンポジウム,日本,2020年01月21日,2C3-2,p. 1-8
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
THE ACM DIGITAL LIBRARY
(57)【特許請求の範囲】
【請求項1】
複数の秘密計算装置を含み、n個の条件c
0, …, c
n-1の分散値の列[c
0], …, [c
n-1]と前記条件それぞれに2個の乗数を対応させる2値の表m
0,0, m
0,1, …, m
n-1,0, m
n-1, 1とを入力とし、前記
n個の条件
の夫々に応じて選択した前記乗数の総積の分散値[A]を出力する秘密選択積計算システムであって、
前記秘密計算装置は、
0以上n未満の各偶数iについて、前記分散値[c
i]と前記分散値[c
i+1]とを乗じた分散値[c
ic
i+1]を計算する条件統合部と、
0以上n未満の各偶数iについて、m'
00:=m
i,0m
i+1,0、m'
01:=m
i,0m
i+1,1、m'
10:=m
i,1m
i+1,0、m'
11:=m
i,1m
i+1,1からなる4値の表m'
00, m'
01, m'
10, m'
11を生成する表変換部と、
0以上n未満の各偶数iについて、[c
ic
i+1](m
00+m
11-m
01-m
10)+[c
i](m
i+1,0-m
i,0)+[c
i+1](m
i,1-m
i,0)+m
i,0を計算した値a
iの分散値[a
i]を生成する公開値乗算部と、
前記分散値[a
i]をすべて乗じた値Aの分散値[A]を計算する実数乗算部と、
nが奇数のとき、前記条件c
n-1に応じて乗数m
n-1,1, m
n-1,0から選択した乗数を前記分散値[A]に乗じる選択乗算部と、
を含む秘密選択積計算システム。
【請求項2】
複数の秘密計算装置を含み、n個の条件c
0, …, c
n-1の分散値の列[c
0], …, [c
n-1]と前記条件それぞれに2個の乗数を対応させる2値の表m
0,0, m
0,1, …, m
n-1,0, m
n-1, 1とを入力とし、前記
n個の条件
の夫々に応じて選択した前記乗数の総積の分散値[A]を出力する秘密選択積計算システムが実行する秘密選択積計算方法であって、
各秘密計算装置の条件統合部が、0以上n未満の各偶数iについて、前記分散値[c
i]と前記分散値[c
i+1]とを乗じた分散値[c
ic
i+1]を計算し、
表変換部が、0以上n未満の各偶数iについて、m'
00:=m
i,0m
i+1,0、m'
01:=m
i,0m
i+1,1、m'
10:=m
i,1m
i+1,0、m'
11:=m
i,1m
i+1,1からなる4値の表m'
00, m'
01, m'
10, m'
11を生成し、
公開値乗算部が、0以上n未満の各偶数iについて、[c
ic
i+1](m
00+m
11-m
01-m
10)+[c
i](m
i+1,0-m
i,0)+[c
i+1](m
i,1-m
i,0)+m
i,0を計算した値a
iの分散値[a
i]を生成し、
実数乗算部が、前記分散値[a
i]をすべて乗じた値Aの分散値[A]を計算し、
選択乗算部が、nが奇数のとき、前記条件c
n-1に応じて乗数m
n-1,1, m
n-1,0から選択した乗数を前記分散値[A]に乗じる、
秘密選択積計算方法。
【請求項3】
請求項1の秘密選択積計算システムにおいて用いられる前記秘密計算装置。
【請求項4】
請求項3に記載の秘密計算装置としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、秘密計算において選択積を計算する技術に関する。
【背景技術】
【0002】
秘密計算とは、データを秘匿したまま任意の関数を計算する暗号技術である。この特徴を活かして、システム運用者にもデータ利用者にもデータを漏らさないデータ利活用の形態が期待されている。秘密計算にはいくつかの方式が存在し、その中でも秘密分散を構成要素にするものは、データの処理単位が小さく、高速な処理が可能であることが知られている。
【0003】
秘密分散とは、秘密情報をシェアと呼ばれるいくつかの断片に変換する方法である。例えば、秘密の情報からn個のシェアを生成し、k個以上のシェアからは秘密が復元できるが、k個未満のシェアからは秘密の情報が漏れない(k, n)閾値法と呼ばれる秘密分散がある。秘密分散の具体的な構成方法は、Shamir秘密分散や複製秘密分散等が知られている。本明細書では、秘密分散により分散された値の1個の断片を「シェア」と呼ぶ。また、すべてのシェアの集合全体を「分散値」と呼ぶ。
【0004】
近年、秘密計算による高度な統計や機械学習の研究が盛んに行われている。しかしながら、これらの演算のほとんどは秘密計算の得意な加減乗算を超える、逆数、平方根、指数、対数等の計算を含んでいる。選択積は、公開値からなる2値の表から値を参照し選択する操作を複数回行い、参照結果を乗ずる計算である。選択積は、秘密計算で指数関数を計算するとき等に用いられる。非特許文献1には、秘密計算において指数関数を計算する方法が開示されており、この中で選択積の計算が用いられている。
【先行技術文献】
【非特許文献】
【0005】
【文献】五十嵐大、“秘密計算AIの実装に向けた秘密実数演算群の設計と実装-O(|p|)ビット通信量 O(1)ラウンドの実数向け右シフト-”、CSS2019、2019年
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、非特許文献1に開示された方法は、計算コストが大きい、という課題がある。
【0007】
この発明の目的は、上記のような技術的課題に鑑みて、選択積を高速に計算することができる秘密計算技術を提供することである。
【課題を解決するための手段】
【0008】
上記の課題を解決するために、本発明の一態様の秘密選択積計算システムは、複数の秘密計算装置を含み、n個の条件c0, …, cn-1の分散値の列[c0], …, [cn-1]と条件それぞれに2個の乗数を対応させる2値の表m0,0, m0,1, …, mn-1,0, mn-1, 1とを入力とし、条件に応じて選択した乗数の総積の分散値[A]を出力する秘密選択積計算システムであって、秘密計算装置は、0以上n未満の各偶数iについて、分散値[ci]と分散値[ci+1]とを乗じた分散値[cici+1]を計算する条件統合部と、0以上n未満の各偶数iについて、m'00:=mi,0mi+1,0、m'01:=mi,0mi+1,1、m'10:=mi,1mi+1,0、m'11:=mi,1mi+1,1からなる4値の表m'00, m'01, m'10, m'11を生成する表変換部と、0以上n未満の各偶数iについて、[cici+1](m00+m11-m01-m10)+[ci](mi+1,0-mi,0)+[ci+1](mi,1-mi,0)+mi,0を計算した値aiの分散値[ai]を生成する公開値乗算部と、分散値[ai]をすべて乗じた値Aの分散値[A]を計算する実数乗算部と、nが奇数のとき、条件cn-1に応じて乗数mn-1,1, mn-1,0から選択した乗数を分散値[A]に乗じる選択乗算部と、を含む。
【発明の効果】
【0009】
この発明によれば、秘密計算において選択積を高速に計算することができる。
【図面の簡単な説明】
【0010】
【
図1】
図1は秘密選択積計算システムの機能構成を例示する図である。
【
図2】
図2は秘密計算装置の機能構成を例示する図である。
【
図3】
図3は秘密選択積計算方法の処理手順を例示する図である。
【
図4】
図4はコンピュータの機能構成を例示する図である。
【発明を実施するための形態】
【0011】
以下、この発明の実施の形態について詳細に説明する。なお、図面中において同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【0012】
本明細書では、以下の記法を用いる。
【0013】
[・]は数値・を秘匿したデータである。例えば、Shamir秘密分散、複製秘密分散等の分散値を用いることができる。
【0014】
[a?b:c]はa=1ならばb、a=0ならばcを表す。
【0015】
【0016】
はそれぞれ論理否定(NOT)、論理積(AND)、論理和(OR)、排他的論理和(XOR)を表す。
【0017】
環上の整数に公開の小数点位置を定めることで固定小数点の実数と見なすことができる。本発明ではこのようにして環上で表した固定小数点の実数を単に実数と表記する。
【0018】
[実施形態:秘密選択積計算システム]
本発明の実施形態は、n個の条件の分散値の列と、各条件に対応する2個の公開値からなる2値の表とを入力とし、各条件に応じて2値の表を参照し、すべての参照結果を乗じた値の分散値を出力する秘密選択積計算システムおよび方法である。以下、実施形態の秘密選択積計算システムが実行する選択的公開乗算プロトコルの概要について説明する。
【0019】
指数関数の計算等では、公開値からなる2値の表から秘密の真理値により値を参照し選択するという操作を複数行い、それぞれの参照結果を乗ずるという処理を行う。以下、この処理を「2値の公開表参照のべき」と呼ぶ。このような場合、2値の表2個を結合して4値の表を参照する方が効率的である。2値の表2個を結合して4値の表とするのは公開値の計算であるため高精度に処理できる。この手法であれば秘密計算で実数乗算する回数が減るため精度面でも有利である。本発明で実行する2値の公開表参照のべきアルゴリズムを以下に示す。
【0020】
〔アルゴリズム1:2値の公開表参照のべき〕
入力:乗数m0,0, m0,1, …, mn-1,0, mn-1,1、条件[c0], …, [cn-1]
出力:
【0021】
【0022】
1:n2をn以下の最大の偶数とする。
【0023】
2:for each i∈{0, 2, …, n2-2}
【0024】
3: [cici+1]を計算する。
【0025】
4: m'00:=mi,0mi+1,0、m'01:=mi,0mi+1,1、m'10:=mi,1mi+1,0、m'11:=mi,1mi+1,1とおく。
【0026】
5: [ai]:=[cici+1](m00+m11-m01-m10)+[ci](mi+1,0-mi,0)+[ci+1](mi,1-mi,0)+mi,0を計算する。
【0027】
6:実数乗算で次式を計算する。ただしnが奇数なら最後の右シフトは行わない。
【0028】
【0029】
7:nが奇数なら、残ったmn-1,0, mn-1,1を[cn-1]により選択して[A]に乗じて出力する。
【0030】
アルゴリズム1のステップ7で実行する選択的公開乗算は、例えば、以下のアルゴリズム2を用いることで、効率的に行うことができる。
【0031】
〔アルゴリズム2:要右シフト値への選択的公開乗数による乗算〕
入力:[a]、乗数m0, m1、条件[c]
出力:[m1a] if c=1, [m0a] if c=0
【0032】
1:[m1a], [m0a]を計算する。
【0033】
2:if-then-elseゲートにより、[c?m1a:m0a]を出力する。
【0034】
アルゴリズム2のステップ1で実行する公開値乗算は、例えば、以下の2つのアルゴリズムを組み合わせることで、効率的に行うことができる。
【0035】
〔アルゴリズム3:右シフトから処理コスト増大無しで同時に公開値乗算〕
入力:[x]、乗数m、シフト量σ
出力:シフト後の[mx]
【0036】
1:公開値2σ/mを計算する。
【0037】
2:公開値除算により次式を計算する。ただし、[mx]は[x]より小数点位置がσ低くなった表現とみなす。
【0038】
【0039】
〔アルゴリズム4:複数除数での右シフト/除数公開除算〕
入力:[a]、除数d0, d1, …, dn-1
出力:[a/d0], [a/d1], …, [a/dn-1]
【0040】
1:[a]の商[q]を求める。
【0041】
2:商[q]を用いて、右シフト/除数公開除算で各iに対する[a/di]を計算し出力する。
【0042】
アルゴリズム4のステップ1で求める商は、商転移により効率的に求めることができる(参考文献1参照)。
【0043】
≪参考文献1≫Ryo Kikuchi, Dai Ikarashi, Takahiro Matsuda, Koki Hamada, and Koji Chida, "Efficient bit-decomposition and modulus-conversion protocols with an honest majority," Proceedings of Information Security and Privacy - 23rd Australasian Conference (ACISP 2018), pp. 64-82, July 11-13, 2018.
【0044】
単純に2値の表から選択して乗ずる場合、2公開値の選択はオフラインであるため、(n-1)回の実数乗算となる。アルゴリズム1ではn/2回の整数乗算と(n/2)-1回の実数乗算となり、およそ右シフトn/2回分効率的となる。さらに、アルゴリズム1では、nが奇数のときはアルゴリズム2を用い、4値の表に結合できない端数分も効率的としている。
【0045】
参考として、アルゴリズム1を用いて秘密計算上の指数関数を計算するアルゴリズムを以下に示す。
【0046】
〔アルゴリズム5:指数関数プロトコル〕
入力:[a]
出力:[exp(a)]
パラメータ:t:=-1
【0047】
1:[a']:=[a]-μを計算する。
【0048】
2:小数点以下tビットより上位のビットをビット分解で取り出し、mod p変換し、[a'0], …, [a'u-1]を得る。
【0049】
3:各0≦i<uで、fi, εiをそれぞれexp(2i-t)の仮数部、指数部とする。
【0050】
4:[a'0], …, [a'u-1]を条件、1, f0, 1, f1, …, 1, fu-1を選択肢として、2値の公開表参照のべきにより積[f']を得る。
【0051】
5:各0≦i<uで、選択肢公開のif-then-elseゲートにより次式を計算する。
【0052】
【0053】
6:各iに関する[ε'i]の積[ε']を計算する。これは上位ビット部分の指数部の2べきである。
【0054】
7:次式を計算する。これは下位ビット部分の表す数である。
【0055】
【0056】
8:[a'ρ]に対して指数関数[exp(a'ρ)]を計算する。結果を[w]とする。
【0057】
9:[w][f'][ε']exp(μ)を計算して出力する。
【0058】
アルゴリズム3のステップ4で実行する選択的公開乗数による乗算は、アルゴリズム1を用いることで、効率的に行うことができる。
【0059】
<秘密選択積計算システム100>
実施形態の秘密選択積計算システム100は、上記の2値の公開表参照のべきを実行する情報処理システムである。秘密選択積計算システム100は、
図1に示すように、N(≧3)台の秘密計算装置1
1, …, 1
Nを含む。この実施形態では、秘密計算装置1
1, …, 1
Nはそれぞれ通信網9へ接続される。通信網9は、接続される各装置が相互に通信可能なように構成された回線交換方式もしくはパケット交換方式の通信網であり、例えばインターネットやLAN(Local Area Network)、WAN(Wide Area Network)等を用いることができる。なお、各装置は必ずしも通信網9を介してオンラインで通信可能である必要はない。例えば、秘密計算装置1
n(n=1, …, N)へ入力する情報を磁気テープやUSBメモリ等の可搬型記録媒体に記憶し、その可搬型記録媒体から秘密計算装置1
nへオフラインで入力するように構成してもよい。
【0060】
実施形態の秘密選択積計算システム100に含まれる秘密計算装置1
nは、例えば、
図2に示すように、条件統合部11、表変換部12、公開値乗算部13、実数乗算部14、および選択乗算部15を備える。この秘密計算装置1
nが他の秘密計算装置1
n'(n'=1, …, N、ただしn≠n')と協調しながら後述する各ステップの処理を行うことにより実施形態の秘密選択積計算方法が実現される。
【0061】
秘密計算装置1nは、例えば、中央演算処理装置(CPU: Central Processing Unit)、主記憶装置(RAM: Random Access Memory)等を有する公知又は専用のコンピュータに特別なプログラムが読み込まれて構成された特別な装置である。秘密計算装置1nは、例えば、中央演算処理装置の制御のもとで各処理を実行する。秘密計算装置1nに入力されたデータや各処理で得られたデータは、例えば、主記憶装置に格納され、主記憶装置に格納されたデータは必要に応じて中央演算処理装置へ読み出されて他の処理に利用される。秘密計算装置1nの各処理部は、少なくとも一部が集積回路等のハードウェアによって構成されていてもよい。秘密計算装置1nが備える各記憶部は、例えば、RAM(Random Access Memory)等の主記憶装置、ハードディスクや光ディスクもしくはフラッシュメモリ(Flash Memory)のような半導体メモリ素子により構成される補助記憶装置、またはリレーショナルデータベースやキーバリューストア等のミドルウェアにより構成することができる。
【0062】
図3を参照して、実施形態の秘密選択積計算システム100が実行する秘密選択積計算方法の処理手続きを説明する。
【0063】
以下では、n2をn以下の最大の偶数とする。0以上n2-2以下の各偶数iについて、以下のステップS11~S13を実行する。
【0064】
ステップS11において、各秘密計算装置1nの条件統合部11は、条件ciの分散値[ci]と条件ci+1の分散値[ci+1]とを乗じた統合条件cici+1の分散値[cici+1]を計算する。条件統合部11は、分散値[cici+1]を公開値乗算部13へ出力する。
【0065】
ステップS12において、各秘密計算装置1nの表変換部12は、m'00:=mi,0mi+1,0、m'01:=mi,0mi+1,1、m'10:=mi,1mi+1,0、m'11:=mi,1mi+1,1からなる4値の表m'00, m'01, m'10, m'11を生成する。表変換部12は、4値の表m'00, m'01, m'10, m'11を公開値乗算部13へ出力する。
【0066】
ステップS13において、各秘密計算装置1nの公開値乗算部13は、[ai]:=[cici+1](m00+m11-m01-m10)+[ci](mi+1,0-mi,0)+[ci+1](mi,1-mi,0)+mi,0を計算する。公開値乗算部13は、分散値[ai]を実数乗算部14へ出力する。
【0067】
ステップS14において、各秘密計算装置1nの実数乗算部14は、分散値[ai]をすべて乗じた値Aの分散値[A]を計算する。すなわち、次式を計算する。乗算は実数乗算となるため最後に右シフトを行う必要があるが、nが奇数の場合ここでは右シフトを行わない。
【0068】
【0069】
ステップS15において、各秘密計算装置1nの選択乗算部15は、nが奇数のとき、cn-1=1ならmn-1,1を選択し、cn-1=0ならmn-1,0を選択し、値Aの分散値[A]に乗じて出力する。すなわち、[A][cn-1?mn-1,1:mn-1,0]を計算する。
【0070】
以上、この発明の実施の形態について説明したが、具体的な構成は、これらの実施の形態に限られるものではなく、この発明の趣旨を逸脱しない範囲で適宜設計の変更等があっても、この発明に含まれることはいうまでもない。実施の形態において説明した各種の処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
【0071】
[プログラム、記録媒体]
上記実施形態で説明した各装置における各種の処理機能をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムを
図4に示すコンピュータの記憶部1020に読み込ませ、制御部1010、入力部1030、出力部1040等に動作させることにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
【0072】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【0073】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0074】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
【0075】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。