JP7290177B2 - 秘密計算装置、秘密計算方法、およびプログラム - Google Patents
秘密計算装置、秘密計算方法、およびプログラム Download PDFInfo
- Publication number
- JP7290177B2 JP7290177B2 JP2021572126A JP2021572126A JP7290177B2 JP 7290177 B2 JP7290177 B2 JP 7290177B2 JP 2021572126 A JP2021572126 A JP 2021572126A JP 2021572126 A JP2021572126 A JP 2021572126A JP 7290177 B2 JP7290177 B2 JP 7290177B2
- Authority
- JP
- Japan
- Prior art keywords
- secret
- secret sharing
- value
- sharing value
- calculation unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/085—Secret sharing or secret splitting, e.g. threshold schemes
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
- H04L9/16—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms the keys or algorithms being changed during operation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Complex Calculations (AREA)
- Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
- Hardware Redundancy (AREA)
- Devices For Executing Special Programs (AREA)
Description
[第1実施形態]
第1実施形態について説明する。本実施形態では初等関数を多項式で近似して秘密計算を行う。これによって、パラメータ変更のみで多くの初等関数を汎用的に秘密計算できる。また本形態で扱う初等関数に限定はないが、指数関数や対数関数を多項式で近似した場合には高次の係数が非常に小さくなる。このような場合に1つの多項式のみで近似を行うと係数の近似精度が低下してしまう。そのため、本実施形態では複数の多項式を用いて段階的に高次の次数を小さくしていく。なお、初等関数(Elementary function)とは、実数または複素数の1変数関数で、代数関数、指数関数、対数関数、三角関数、逆三角関数および、それらの合成関数を作ることを有限回繰り返して得られる関数をいう。初等関数の例は、逆数関数、平方根関数、指数関数、対数関数などである。
第1実施形態では4次多項式によって初等関数を近似したが、第2実施形態では8次多項式によって初等関数を近似する。以下では、これまで説明した事項との相違点を中心に説明し、共通する事項については説明を簡略化する。
第3実施形態では第1実施形態と同様に4次多項式によって初等関数を近似するが、最高次の係数が設定可能な点で第1実施形態と相違する。
所望の初等関数を多項式関数ft(x)=func(x)で近似し、さらに右シフト前の関数ft(x)と当該関数ft(x)の近似関数f’u(x)との差分ft(x)-f’t(x)の秘密分散値[ft(x)-f’t(x)]を計算し、ft(x)-f’t(x)を右シフトした(ft(x)-f’t(x))rの秘密分散値[ft(x)-f’t(x)]rを得、秘密分散値[ft(x)-f’t(x)]rと秘密分散値[f’t(x)]の秘密計算によってft(x)-f’t(x)にf’t(x)を加算した関数ft(x)の秘密分散値[ft(x)]を得てもよい。ただし、xが実数であり、[・]が・の秘密分散値であり、nが1以上の整数(例えば、nは2以上の整数)であり、t=0,…,n-1であり、u=1,…,n-1であり、ft(x)が実数xに対する関数であり、f’t(x)は関数ft(x)の近似関数であり、近似関数f’0(x)の秘密分散値[f’0(x)]が[f’0(x)]=c0,0+c0,1[x]であり、近似関数f’u(x)の秘密分散値[f’u(x)]が[f’u(x)]=cu,0+cu,1[x]+cu,2[f0(x)]+…+[fu-1(x)]であり、ct,0は公開値であり、ct,1,…,ct,n+1は係数である。ただし、ct,1,…,ct,n+1は有効ビット数の小さな値であり、ct,1,…,ct,n+1が乗じられても桁あふれによってシフトが必要になるようなことがない値である。ft(x)-f’t(x)は正である。秘密分散方式に限定はなく、例えば、加法的秘密分散方式やシャミア秘密分散方式などを例示できる。ここでft(x)-f’t(x)の大きさはft(x)の大きさよりも小さいため、秘密分散値[ft(x)-f’t(x)]のオーバーフローを抑制することができる。また右シフト前の関数ft(x)と当該関数ft(x)の近似関数f’u(x)との差分ft(x)-f’t(x)の秘密分散値[ft(x)-f’t(x)]を計算するため、高い精度を保つことができる。オーバーフローは秘密計算を実装したプロセッサの性能に基づく問題であり、本方式はこのハードウェア上の制約に基づく問題を解決するための手法を提供する。このように、本方式は純粋数学上の問題を解決するものではなく、ハードウェア実装上の問題を解決するものであって技術的特徴を有するものである。例えば、秘密分散値[ft(x)]を計算するとオーバーフローしてしまうが秘密分散値[ft(x)-f’t(x)]の計算ではオーバーフローしないプロセッサではその技術的特徴は顕著である。以下、第1~3実施形態の変形例を具体的に示す。
第1実施形態の場合、n=2であり、a,b,c,δ,i,j,k,s,mが実数であり、f0(x)=y=δx2+axであり、f1(x)=z=y(ζy+b)+cxであり、f2(x)=w=γ(z(αz+d)+y(βx+f)+gx)であり、f’0(x)=ix+jであり、f’1(x)=ky+sx+mであり、f’2(x)=nz+oy+px+qである。
設定済のパラメータ:a,b,c,δ,i,j,k,s,m
出力:秘密分散値[func(x)]
2:秘密計算部11は、秘密分散値[y’]r,[x]を用いた秘密計算により秘密分散値[y]=[y’+(ix+j)]を得る(ステップS11)。
3:秘密計算部12は、秘密分散値[x],[y]を用いた積和の秘密計算により秘密分散値[z’]=[y(ζy+b-k)+(c-s)x-m]を得、右シフトにより小数点位置を下げたz’rの秘密分散値[z’]rを得る(ステップS12)。
4:秘密計算部12は、秘密分散値[z’]rを用いた秘密計算により秘密分散値[func(x)]=[z’+(ky+sx+m)]を得る(ステップS12)。秘密計算部12は、得た秘密分散値[func(x)]を出力する(ステップS13)。
第2実施形態の場合、n=3であり、a,b,c,d,f,g,h,i,j,k,s,m,n,o,p,q,α,β,γ,δ,ζが実数であり、f0(x)=y=δx2+axであり、f1(x)=z=y(ζy+b)+cxであり、f2(x)=w=γ(z(αz+d)+y(βx+f)+gx)であり、f’0(x)=ix+jであり、f’1(x)=ky+sx+mであり、f’2(x)=nz+oy+px+qである。
設定済のパラメータ:a,b,c,d,f,g,H,i,j,k,s,m,n,o,p,q,α,β,γ,δ,ζ
出力:秘密分散値[func(x)]
2:秘密計算部11は、秘密分散値[y’]r,[x]を用いた秘密計算により秘密分散値[y]=[y’+(ix+j)]を得る(ステップS11)。
3:秘密計算部22は、秘密分散値[x],[y]を用いた積和の秘密計算により秘密分散値[z’]=[y(ζy+b-k)+(c-s)x-m]を得、右シフトにより小数点位置を下げたz’rの秘密分散値[z’]rを得る(ステップS22)。
4:秘密計算部22は、秘密分散値[z’]r,[x],[y]を用いた秘密計算により秘密分散値[z]=[z’+(ky+sx+m)]を得る(ステップS22)。
5:秘密計算部23は、秘密分散値[x],[y],[z]を用いた積和の秘密計算により秘密分散値[w’/γ]=[z(αz+d-n/γ)+(βx+f-o/γ)y+(g-p)x+(H-q)/γ]を得、γによる乗算と小数点位置の下降を行って秘密分散値[w’]を得る(ステップS23)。秘密分散値[w’]を得るための処理に限定は無いが、例えば、秘密計算部23は、公開値2σ/γを得、公開値2σ/γと秘密分散値[w’/γ]を用いた公開値除算の秘密計算[w’/γ]/(2σ/γ)によって秘密分散値[w’]rを得てもよい。ただし、σは右シフト量を表す正整数である。これによってγの乗算および右シフトの秘密計算を同時に実行できるため、処理コストを低減できる。
6:秘密計算部23は、秘密計算により秘密分散値[func(x)]=[w’+(nz+oy+px+q)]を得る(ステップS23)。秘密計算部23は、得た秘密分散値[func(x)]を出力する(ステップS13)。
第3実施形態の場合、n=2であり、a,b,c,γ,δ,i,j,k,s,mが実数であり、f0(x)=y=δx2+axであり、f1(x)=z=γ(y(δy+b)+cx)であり、f’0(x)=ix+jであり、f’1(x)=ky+sx+mである。
設定済のパラメータ:a,b,c,γ,δ,i,j,k,s,m
出力:秘密分散値[func(x)]
2:秘密計算部31は、秘密分散値[y’]rを用いた秘密計算により秘密分散値[y]=[y’+(ix+j)]を得る(ステップS11)。
3:秘密計算部32は、秘密分散値[x],[y]を用いた積和の秘密計算により[z’/γ]=[y(ζy+b-k/γ)+(c-s/γ)x-m/γ]を得る(ステップS32)。
4:秘密計算部32は、秘密分散値[z’/γ]を用いた秘密計算によってz’/γにγを乗算して得られるz’を所定ビット数だけ右シフトしたz’rの秘密分散値[z’]rを得る(ステップS32)。秘密分散値[z’]rを得るための処理に限定は無いが、例えば、秘密計算部32は、公開値2σ/γを得、公開値2σ/γと秘密分散値[z’/γ]を用いた公開値除算の秘密計算[z’/γ]/(2σ/γ)によって秘密分散値[z’]rを得てもよい。これによってγの乗算および右シフトの秘密計算を同時に実行できるため、処理コストを低減できる。
5:秘密計算部32は、秘密分散値[z’]rと秘密分散値[x],[y]を用いた秘密計算によって秘密分散値[func(x)]=[z’+(ky+sx+m)]を得る(ステップS32)。秘密計算部32は、得た秘密分散値[func(x)]を出力する(ステップS13)。
第4実施形態では、初等関数として対数関数を近似する。
図4に例示するように、第4実施形態の秘密計算装置4は、秘密計算部45,46,47,48,49,410,411、および秘密計算装置1~3の何れかまたは前述したその変形例の秘密計算装置を有する。以下ではχが実数であり、pが正整数であり、Lが2以上の整数であり、[・]がpを法とした剰余環上の要素・を線形秘密分散した秘密分散値であり、{・}が2を法とした剰余環上の要素・を線形秘密分散した秘密分散値である。
入力:秘密分散値{χ0},…,{χL-1}
出力:秘密分散値{η0},…,{ηL-1}
1:秘密計算部46は、0≦i<L-1で{ρi}={ρi+1∨χi}とする。
2:秘密計算部46は、{ρL-1}={χL-1}とする。
ここまでで、ρ0,…,ρL-1は、0,0,0,1,1,…,1のように、msb以下のビットが1でmsbよりも上位のビットが0のビット列となっている。
3:秘密計算部46は、0≦i<L-1で{ηi}={ρi(XOR)ρi+1}とする。ただし、α1(XOR)α2はα1とα2との排他的論理和を表す。
4:秘密計算部46は、{ηL-1}={χL-1}とする。
ここまでで、η0,…,ηL-1は、0,0,0,1,0,…,0のように、msbの位置のビットのみが1で、他のビットが0となっている。
第5実施形態では、初等関数が逆数関数、平方根の逆数関数、平方根関数、指数関数である場合の処理を例示する。
実施例1では、実数χの逆数関数値1/χの秘密分散値を計算する。入力された実数χを二進数表現した場合における0.5のビット列の小数点位置とχの最上位ビット(msb)との差を表す正整数をeとし、実数χに対して以下の変形を行う。
すなわち、2eを乗じて区間[0.5, 1)に正規化し、逆数
を求めた後に2eを乗じる処理を秘密計算で行う。逆数においては、標準的である[0.5, 1)への正規化では8次多項式近似で21ビット程度の精度となる。一般的に単精度で23ビットの精度が必要とされるため、さらに精度を向上するテクニックを導入する必要がある。通常、最左ビットを移動して[0.5, 1)に正規化するのだが、その後さらに最左ビットの1ビット下が0であれば(すなわち値が[0.5, 0.75)であれば)1.5を乗ずる。すると、[0.5, 0.75)が[0.75, 1.125)へと動くので、[0.75, 1)であれば何もしないことと合わせると、[0.75, 1.125)に正規化されることになる。[0.75, 1.125)は[0.5, 1)よりも狭い区間であるため、近似区間が狭いほど精度が向上する補間多項式近似においては有効なテクニックである。
入力:[χ]
出力:[x],[ν]
ただし、χを二進数表現した場合における小数点位置をιとすると、xはχのmsbをιの位置に移動した後、χのmsbの1ビット下のビットが0であればさらに1.5を乗じた値である。xは[0.75,1.125)に正規化されている。νはx=χνを満たす値である。
1:秘密計算装置は、秘密分散値[χ]を用いた秘密計算によるビット分解により、χを二進数表現した場合のビット列χ0…χL-1に対するビット表現χ0,…,χL-1の秘密分散値{χ0},…,{χL-1}を得る。
2:秘密計算装置は、秘密分散値{χ0},…,{χL-1}を用いた秘密計算によって、ビット列χ0…χL-1の最上位ビット(msb)χmsbに対応するビットηmsbが1であり、ビットηmsb以外のビットηξ(ξ∈{0,…,L-1})が0であるmsbフラグ列η0,…,ηL-1の秘密分散値{η0},…,{ηL-1}を得る。この処理は前述したステップS46と同じである。
3:秘密計算装置は、秘密分散値{χ0},…,{χL-1},{η0},…,{ηL-1}を用いた秘密計算によって、2≦i<Lで{ωi}={(¬χi-2∧ηi-1)(XOR)ηi}を得る。
4:秘密計算装置は、秘密分散値{η0},…,{ηL-1}を用いた秘密計算によって秘密分散値{ω0}={ω1}={0},{ωL}={¬ηL-2∧ηL-1}を得る。ビット列χ0…χL-1のmsbの1ビット下の入力ビットが1であれば、msbの1ビット上のωiが1となる。次のステップで{ω0},{ω1},{ω2},…,{ωL-1}の上下桁を逆転して結合するため、ここでは上下桁を逆転して秘密分散値{ω0},{ω1},{ω2},…,{ωL-1}を設定している。
5:秘密計算装置は、秘密分散値{ω0},{ω1},{ω2},…,{ωL-1}を用いた秘密計算によるビット結合により、{ωL-1},…,{ω0}を結合して[ν]を得て出力する。νはχに乗じられた場合、χのmsbを定められた場所に移動し、さらにχのmsbの1ビット下のビットが0であれば1.5をχに乗ずるという数になっている。
6:秘密計算装置は、秘密分散値[x]=[χ][ν]を得る。
入力:[χ]
出力:[1/χ]
1:秘密計算装置は、上述の逆数用正規化プロトコルにより、実数χを[0.75,1.125)に正規化した値xの秘密分散値[x]、および当該正規化のために秘密分散値[χ]に乗じられる秘密分散値[ν]を得る。
2:秘密計算装置は、秘密計算によって、秘密分散値[x]から秘密分散値[func(x)]を得る。ただし、実施例1のfunc(x)はxの逆数関数を近似する多項式である。秘密計算装置は、例えば、第1~3実施形態またはその変形例の方法を用いて秘密分散値[w]=[func(x)]を得る。
3:秘密計算装置は、秘密分散値[w],[ν]を用いた秘密計算によって秘密分散値[w][ν]を得て出力する。
実施例2では、実数χの平方根の逆数関数値1/√χの秘密分散値を計算する。平方根の逆数関数では、上述の逆数関数と同じ考え方で[0.5,1)に正規化する。ただし、2eではなく√(2e)が乗じられる。実施例2では、実数χに対して以下の変形を行う。
つまり、実数χに2eを掛けて正規化し、2eχの平方根の逆数
を求めた後に√(2e)を乗じる処理を秘密計算で行う。
入力:[χ]
出力:[x],[φ],[ν’]
ただし、χを二進数表現した場合における小数点位置をιとすると、xはχのmsbをι-1の位置に移動した値である。実施例2では、φは最後に計算値に√2を掛ける必要があるかどうかを表す真理値である。ν’は最後に掛けるべき2のべき乗値である。
1:秘密計算装置は、秘密分散値[χ]を用いた秘密計算によるビット分解により、χを二進数表現した場合のビット列χ0…χL-1に対するビット表現χ0,…,χL-1の秘密分散値{χ0},…,{χL-1}を得る。
2:秘密計算装置は、L’=ceil(L/2)を得る。ただし、ceilは天井関数である。
3:秘密計算装置は、秘密分散値{χ0},…,{χL-1}を用いた秘密計算によって、0≦i<floor(L/2)で、秘密分散値{χ’i}={χi∨χi+1}を得る。ただし、floorは床関数である。
4:秘密計算装置は、Lが奇数なら、{χ’L’-1}={χL-1}と設定する。
5:秘密計算部は、秘密分散値{χ’0},…,{χ’L-1}を用いた秘密計算によって、ビット列χ’0…χ’L-1の最上位ビット(msb)χ’msbに対応するビットηmsbが1であり、ビットηmsb以外のビットηξ(ξ∈{0,…,L’-1})が0であるmsbフラグ列η0,…,ηL-1の秘密分散値{η0},…,{ηL’-1}を得て出力する。この処理はχiをχ’iとし、LをL’とした前述のステップS46と同じである。
6:秘密計算部は、秘密分散値{η0},…,{ηL’-1}を用いた秘密計算でのビット結合により、msbフラグ列ηL’-1,…,η0をビット結合したmsbフラグ値ν’の秘密分散値[ν’]を得て出力する。
7:秘密計算部は、0≦i<floor(L/2)で、{χ”i}={χ2i}と設定する。
8:秘密計算部は、Lが奇数なら、{χ”L’-1}={χL-1}と設定する。
9:秘密計算部は、秘密分散値{χ”0},…,{χ”L’-1},{η0},…,{ηL’-1}を用いた積和の秘密計算によって、秘密分散値{φ}={η0χ”0+…+ηL’-1χ”L’-1}を得る。
10:秘密計算部は、秘密分散値{φ}を秘密分散値[φ]に変換して出力する。φはχのmsbが偶数ビット目にあるかどうかを表す真理値である。χのmsbが偶数ビット目にある場合にはφ=1であり、そうでない場合にはφ=0である。
11:秘密計算部は、秘密分散値[ν’],[φ],[χ]を用いた秘密計算によって、秘密分散値[x]=[ν’][ν’][φ?2χ:χ]を得て出力する。ただし、φ?2χ:χは、φ=1のときに2χであり、φ=0のときにχである。
入力:[χ]
出力:[1/√χ]
1:秘密計算部は、上述した平方根の逆数用正規化プロトコルにより、実数χを[0.5,1)に正規化した値xの秘密分散値[x]、および正規化の逆演算に必要な秘密分散値[ν’],[φ]を得る。
2:秘密計算部は、第2実施形態もしくは3実施形態またはそれらの変形例の方法を用いて、秘密計算によって、秘密分散値[x]から秘密分散値[func(x)]を得る。ただし、func(x)はxの平方根の逆数関数を近似する多項式である。また、ステップS23ではφ=1のときにγが√2γに置換される(ステップS23’)。同様に、ステップS32ではφ=1のときにγが√2γに置換される(ステップS32’)。ステップS23’,S32’の処理の詳細は後述する。
3:秘密計算部は、秘密分散値[func(x)],[ν’]を用いた秘密計算によって、秘密分散値[1/√χ]=[func(x)][ν’]を得て出力する。
≪第2実施形態の方法が用いられる場合(ステップS23’)≫
秘密計算部は、上述のように[0.5,1)に正規化した値xの秘密分散値[x]に対し、前述した第2実施形態のステップS10,S11,S22を実行する。その後、秘密計算部は、ステップS23に代えて以下のステップS232の処理を実行する。
ステップS232:秘密計算部は、秘密分散値[x],[y],[z],[φ]を用いた秘密計算により、φ=1のときに秘密分散値[func(x)]=[(√2)γ(z(αz+d)+y(βx+f)+gx)]を得て出力し、φ=0のときに秘密分散値[func(x)]=[γ(z(αz+d)+y(βx+f)+gx)]を得て出力する。
秘密計算部は、乗数m0=1,m1=√2および正整数σ0,σ1を用いて公開値2σ0/m0,2σ1/m1を得て出力する。ただし、σ0,σ1は、それぞれ乗数m0,m1が大きい場合に必要となる右シフト量を表すビット数である正整数である(ステップS232a)。
秘密計算部は、上述のように[0.5,1)に正規化した値xの秘密分散値[x]に対し、前述した第2実施形態の変形例のステップS10,S11,S22を実行する。その後、秘密計算部は、ステップS23に代えて以下のステップS232’の処理を実行する。
ステップS232’:秘密計算部は、秘密分散値[x],[y],[z],[φ]を用いた積和の秘密計算により秘密分散値[w’/γ]=[z(αz+d-n/γ)+(βx+f-o/γ)y+(g-p)x+(H-q)/γ]を得、φ=1のときに(√2)γによる乗算と小数点位置の下降を行い、φ=0のときにγによる乗算と小数点位置の下降を行って、秘密分散値[w’]を得る。さらに、秘密計算部は、秘密分散値[w’],[x],[y],[z]を用いた秘密計算により秘密分散値[func(x)]=[w’+(nz+oy+px+q)]を得る。
秘密計算部は、秘密分散値[x],[y],[z]を用いた積和の秘密計算により秘密分散値[w’/γ]=[z(αz+d-n/γ)+(βx+f-o/γ)y+(g-p)x+(H-q)/γ]を得る(ステップS232a’)。
秘密計算部は、上述のように[0.5,1)に正規化した値xの秘密分散値[x]に対し、前述した第3実施形態のステップS10,S11を実行する。その後、秘密計算部は、ステップS32に代えて以下のステップS323の処理を実行する。
ステップS323:秘密計算部は、秘密分散値[x],[y],[φ]を用いた秘密計算により、φ=1のときに秘密分散値[func(x)]=[(√2)γ(y(ζy+b)+cx)]を得て出力し、φ=0のときに秘密分散値[func(x)]=[γ(y(ζy+b)+cx)]を得て出力する。
秘密計算部は、乗数m0=1,m1=√2および正整数σ0,σ1を用いて公開値2σ0/m0,2σ1/m1を得て出力する(ステップS323a)。
秘密計算部は、上述のように[0.5,1)に正規化した値xの秘密分散値[x]に対し、前述した第3実施形態の変形例のステップS10,S11を実行する。その後、秘密計算部は、ステップS32に代えて以下のステップS323’の処理を実行する。
秘密計算部は、秘密分散値[x],[y]を用いた積和の秘密計算により[z’/γ]=[y(ζy+b-k/γ)+(c-s/γ)x-m/γ]を得る(ステップS323a’)。
実施例3では、実数χの平方根√χの秘密分散値を計算する。平方根の逆数関数では、上述の逆数関数と同じ考え方で[1,2)に正規化する。実施例3では、実数χに対して以下の変形を行う。
つまり、実数χに2eを掛けて正規化し、2eχの平方根√(2eχ)を求めた後に√(2e)で除する処理を秘密計算で行う。
入力:[χ]
出力:[x],[φ],[ν’]
ただし、χを二進数表現した場合における小数点位置をιとすると、xはχのmsbをιの位置に移動した値である。実施例3では、φは最後に計算値を√2で割る必要があるかどうかを表す真理値である。ν’は最後に掛けるべき2のべき乗値である。
1:秘密計算装置は、秘密分散値[χ]を用いた秘密計算によるビット分解により、χを二進数表現した場合のビット列χ0…χL-1に対するビット表現χ0,…,χL-1の秘密分散値{χ0},…,{χL-1}を得る。
2:秘密計算装置は、秘密分散値{χ0},…,{χL-1}を用いた秘密計算によって、ビット列χ0…χL-1の最上位ビット(msb)χmsbに対応するビットηmsbが1であり、ビットηmsb以外のビットηξ(ξ∈{0,…,L-1})が0であるmsbフラグ列η0,…,ηL-1の秘密分散値{η0},…,{ηL-1}を得る。この処理は前述したステップS46と同じである。
3:秘密計算装置は、L’=ceil(L/2)を得る。ただし、ceilは天井関数である。
4:秘密計算装置は、秘密分散値{η0},…,{ηL-1}を用いた秘密計算により、各i<L’で、秘密分散値{ωi}={η2i}(XOR){η2i+1}を得る。ただし、Lが奇数のとき、{ωL-1}={η2i}とする。
5:秘密計算装置は、秘密分散値{η0},…,{ηL-1}を用いた秘密計算により秘密分散値{φ}={η1}(XOR){η3}(XOR){η5}(XOR)…を得る。最後に計算値を√2で割る必要がある場合にはφ=1であり、最後に計算値を√2で割る必要がない場合にはφ=0である。
6:秘密計算装置は、秘密分散値{φ}を秘密分散値[φ]に変換する。
7:秘密計算装置は、秘密分散値{ω0},{ω1},{ω2},…,{ωL-1}を用いた秘密計算によるビット結合により、{ω0},…,{ωL’-1}を結合して[ν’]を得て出力する。
8:秘密計算装置は、秘密分散値{η0},…,{ηL-1}を用いた秘密計算により、{ηL-1},…,{η0}を結合して[ν]を得て出力する。
9:秘密計算装置は、秘密分散値[χ],[ν]を用いた秘密計算により、秘密分散値[x]=[χ][ν]を得て出力する。
入力:[χ]
出力:[√χ]
1:秘密計算装置は、上述の平方根用正規化プロトコルにより、実数χを[1,2)に正規化した値xの秘密分散値[x]、および正規化の逆演算に必要な秘密分散値[ν’],[φ]を得る。
2:秘密計算装置は、L’=ceil(L/2)を得る。
3:秘密計算装置は、Lが奇数ならφ’=√2とし、偶数ならφ’=1に設定する。
4:秘密計算部は、第2実施形態もしくは3実施形態またはそれらの変形例の方法を用いて、秘密計算によって、秘密分散値[x]から秘密分散値[func(x)]を得る。ただし、func(x)はxの平方根関数を近似する多項式である。また、ステップS23ではφ=1のときにγがγφ’/√2に置換され、φ=0のときにγがγφ’に置換される(ステップS23”)。同様に、ステップS32ではφ=1のときにγが(φ’/√2)γに置換され、φ=0のときにγがφ’γに置換される(ステップS32”)。ステップS23”,S32”の処理の詳細は後述する。
5:秘密計算部は、秘密分散値[func(x)],[ν’]を用いた秘密計算によって、秘密分散値[√χ]=[func(x)][ν’]を得て出力する。
≪第2実施形態の方法が用いられる場合(ステップS23”)≫
秘密計算部は、上述のように[1,2)に正規化した値xの秘密分散値[x]に対し、前述した第2実施形態のステップS10,S11,S22を実行する。その後、秘密計算部は、ステップS23に代えて以下のステップS234の処理を実行する。
ステップS234:秘密計算部は、秘密分散値[x],[y],[z],[φ]を用いた秘密計算により、φ=1のときに秘密分散値[func(x)]=[(γφ’/√2)(z(αz+d)+y(βx+f)+gx)]を得て出力し、φ=0のときに秘密分散値[func(x)]=[γφ’(z(αz+d)+y(βx+f)+gx)]を得て出力する。
秘密計算部は、乗数m0=φ’,m1=φ’/√2および正整数σ0,σ1を用いて公開値2σ0/m0,2σ1/m1を得て出力する(ステップS234a)。
秘密計算部は、上述のように[1,2)に正規化した値xの秘密分散値[x]に対し、前述した第2実施形態の変形例のステップS10,S11,S22を実行する。その後、秘密計算部は、ステップS23に代えて以下のステップS234’の処理を実行する。
ステップS234’:秘密計算部は、秘密分散値[x],[y],[z],[φ]を用いた積和の秘密計算により秘密分散値[w’/γ]=[z(αz+d-n/γ)+(βx+f-o/γ)y+(g-p)x+(H-q)/γ]を得、φ=1のときにγφ’/√2による乗算と小数点位置の下降を行い、φ=0のときにγφ’による乗算と小数点位置の下降を行って、秘密分散値[w’]を得る。さらに、秘密計算部は、秘密分散値[w’],[x],[y],[z]を用いた秘密計算により秘密分散値[func(x)]=[w’+(nz+oy+px+q)]を得る。
秘密計算部は、秘密分散値[x],[y],[z]を用いた積和の秘密計算により秘密分散値[w’/γ]=[z(αz+d-n/γ)+(βx+f-o/γ)y+(g-p)x+(H-q)/γ]を得る(ステップS234a’)。
秘密計算部は、上述のように[1,2)に正規化した値xの秘密分散値[x]に対し、前述した第3実施形態のステップS10,S11を実行する。その後、秘密計算部は、ステップS32に代えて以下のステップS325の処理を実行する。
ステップS325:秘密計算部は、秘密分散値[x],[y],[φ]を用いた秘密計算により、φ=1のときに秘密分散値[func(x)]=[(φ’/√2)γ(y(ζy+b)+cx)]を得て出力し、φ=0のときに秘密分散値[func(x)]=[φ’γ(y(ζy+b)+cx)]を得て出力する。
秘密計算部は、乗数m0=φ’,m1=φ’/√2および正整数σ0,σ1を用いて公開値2σ0/m0,2σ1/m1を得て出力する(ステップS325a)。
秘密計算部は、上述のように[1,2)に正規化した値xの秘密分散値[x]に対し、前述した第3実施形態の変形例のステップS10,S11を実行する。その後、秘密計算部は、ステップS32に代えて以下のステップS325’の処理を実行する。
秘密計算部は、秘密分散値[x],[y]を用いた積和の秘密計算により[z’/γ]=[y(ζy+b-k/γ)+(c-s/γ)x-m/γ]を得る(ステップS325a’)。
実施例4では、実数xの指数関数値exp(x)の秘密分散値を計算する。指数関数は入力に加法性があるため、入力を以下の3パートに分解する。
I.想定される入力の最小値μ
II.x-μの小数点以下tビット以上の上位uビットx0,…,xu-1
III.x-μのx0よりも下位ビット全体が表す数xρ
exp x=exp μ exp 2-tx0,…,exp 2u-t-1xu-1exp xρとする。exp μは公開値、exp 2-tx0,・・・,exp 2u-t-1xu-1は表による計算である。exp xρが近似により計算する箇所であり、[0,2-t)に正規化される。
入力:[x]
出力:[exp(x)]
設定済のパラメータ:t=-1
1:秘密計算装置は、秘密計算によって[x’]=[x]-μを得る。ただし、μは想定されるxの最小値である。
2:秘密計算装置は、秘密計算により、小数点以下tビットより上位のビットをビット分解で取り出してmod p変換し、[x’0],…,[x’u-1]を得る。
3:秘密計算装置は、秘密計算により、各0≦i<uで、fi,εiをそれぞれexp(2i-t)の仮数部、指数部とする。
4:秘密計算装置は、秘密計算によって、i=0,…,u-1について、x’i’=0ならばFi=1、x’i’=1ならばFi=fiとした
を得る。
5:秘密計算装置は、秘密計算によって、各0≦i<uで、選択肢公開のif-then-elseゲートにより[ε’i]=if[x’i] then 2εi else 1を計算する。
6:秘密計算装置は、秘密計算によって、各iに関する[ε’i]の積[ε’]を得る(ε’=ε’0…ε’u-1)。これはexp(x’)の上位ビット部分の指数部の2のべき乗値である。
7:秘密計算装置は、秘密計算によって、
を得る。これはexp(x’)の下位ビット部分の表す数である。
8:秘密計算装置は、秘密計算によって、秘密分散値[x’ρ]から秘密分散値[w]=[func(x)]を得る。ただし、w=func(x)はxの指数関数exp xを近似する多項式である。秘密計算装置は、例えば、x=x’ρとした第1~3実施形態またはその変形例の方法を用いて秘密分散値[w]=[func(x)]を得る。
9:秘密計算装置は、秘密計算によって、[w][f’][ε’]exp(μ)を得て出力する。例えば、秘密計算装置は、秘密計算によって、公開値2σ/exp(μ)を得、秘密分散値[w][f’][ε’]と得られた公開値2σ/exp(μ)とを用いた公開値除算の秘密計算[w][f’][ε’]/(2σ/exp(μ))を行って、wf’ε’exp(μ)をαビットだけ右シフトした値の秘密分散値[w][f’][ε’]exp(μ)を得て出力する。
図6に初等関数が逆数関数、平方根関数、平方根の逆数関数、指数関数、対数関数である場合の計算済みのパラメータを例示する。なお、ex,ey,ezはそれぞれx,y,zの小数点位置を示す。また、e’x,e’y,e’zはそれぞれ右シフト前のx’,y’,z’の小数点位置を示す。これらの小数点位置は、下位ビットから数えた小数点位置のビット位置を表す。このビット位置を表す値は0から始まり、下位ビットから数えてe1ビット目が1を表すときに、小数点位置がe1であると表記する。
各実施形態における秘密計算装置1~4および各実施例における秘密計算装置は、例えば、CPU(central processing unit)等のプロセッサ(ハードウェア・プロセッサ)やRAM(random-access memory)・ROM(read-only memory)等のメモリ等を備える汎用または専用のコンピュータが所定のプログラムを実行することで構成される装置である。このコンピュータは1個のプロセッサやメモリを備えていてもよいし、複数個のプロセッサやメモリを備えていてもよい。このプログラムはコンピュータにインストールされてもよいし、予めROM等に記録されていてもよい。また、CPUのようにプログラムが読み込まれることで機能構成を実現する電子回路(circuitry)ではなく、単独で処理機能を実現する電子回路を用いて一部またはすべての処理部が構成されてもよい。また、1個の装置を構成する電子回路が複数のCPUを含んでいてもよい。
Claims (8)
- x,y,zが実数であり、a,b,c,δ,ζが実数係数であり、・の秘密分散値が[・]であり、
前記実数xの秘密分散値[x]を用いた秘密計算によって秘密分散値[y]=[δx2+ax]を得る第1秘密計算部と、
前記秘密分散値[x]および前記秘密分散値[y]を用いた秘密計算によって前記実数xの初等関数近似値z=func(x)の秘密分散値[func(x)]=[y(ζy+b)+cx]を得て出力する第2秘密計算部と、
を有する秘密計算装置。 - x,y,z,wが実数であり、a,b,c,d,f,g,α,β,γ,δ,ζが実数係数であり、・の秘密分散値が[・]であり、
前記実数xの秘密分散値[x]を用いた秘密計算によって秘密分散値[y]=[δx2+ax]を得る第1秘密計算部と、
前記秘密分散値[x]および前記秘密分散値[y]を用いた秘密計算によって秘密分散値[z]=[y(ζy+b)+cx]を得る第2秘密計算部と、
前記秘密分散値[x]、前記秘密分散値[y]、および前記秘密分散値[z]を用いた秘密計算によって前記実数xの初等関数近似値w=func(x)の秘密分散値[func(x)]=[γ(z(αz+d)+y(βx+f)+gx)]を得て出力する第3秘密計算部と
を有する秘密計算装置。 - x,y,zが実数であり、a,b,c,γ,δ,ζが実数係数であり、・の秘密分散値が[・]であり、
前記実数xの秘密分散値[x]を用いた秘密計算によって秘密分散値[y]=[δx2+ax]を得る第1秘密計算部と、
前記秘密分散値[x]および前記秘密分散値[y]を用いた秘密計算によって前記実数xの初等関数近似値z=func(x)の秘密分散値[func(x)]=[γ(y(ζy+b)+cx)]を得て出力する第2秘密計算部と、
を有する秘密計算装置。 - 請求項1から3の何れかの秘密計算装置であって、
χが実数であり、pが正整数であり、Lが2以上の整数であり、[・]がpを法とした剰余環上の要素・を線形秘密分散した秘密分散値であり、{・}が2を法とした剰余環上の要素・を線形秘密分散した秘密分散値であり、
前記実数χの秘密分散値[χ]を用いた秘密計算によって前記実数χのLビット表現χ0…χL-1の秘密分散値{χ0},…,{χL-1}を得る第5秘密計算部と、
前記秘密分散値{χ0},…,{χL-1}を用いた秘密計算によって、ビット列χ0…χL-1の最上位ビットχmsbに対応するビットηmsbが1であり、前記ビットηmsb以外のビットηξ(ξ∈{0,…,L-1})が0であるmsbフラグ列η0,…,ηL-1の秘密分散値{η0},…,{ηL-1}を得る第6秘密計算部と、
前記秘密分散値{χ0},…,{χL-1}を用いた秘密計算によって、0≦i<L-1における秘密分散値{ρi}={ρi+1∨χi}および秘密分散値{ρL-1}={χL-1}を得る第7秘密計算部と、
前記秘密分散値{ρ0},…,{ρL-1}を用いた秘密計算によって、ρ0,…,ρL-1のうち1である要素の個数を表すカウント値θの秘密分散値[θ]を得る第8秘密計算部と、
前記秘密分散値{η0},…,{ηL-1}を用いた秘密計算によって前記msbフラグ列η0,…,ηL-1をビット結合したmsbフラグ値ν=η0…ηL-1の秘密分散値[ν]を得る第9秘密計算部と、
前記秘密分散値[χ]および前記秘密分散値[ν]を用いた秘密計算によって秘密分散値[x]=[χ][ν]を得る第10秘密計算部と、
前記秘密分散値[func(x)]および前記秘密分散値[θ]を用いた秘密計算によって[log χ]=[func(x)]-[θ]を得て出力する第11秘密計算部と、
を有する秘密計算装置。 - x,y,zが実数であり、a,b,c,δ,ζが実数係数であり、・の秘密分散値が[・]であり、
第1秘密計算部が、前記実数xの秘密分散値[x]を用いた秘密計算によって秘密分散値[y]=[δx2+ax]を得る第1秘密計算ステップと、
第2秘密計算部が、前記秘密分散値[x]および前記秘密分散値[y]を用いた秘密計算によって前記実数xの初等関数近似値z=func(x)の秘密分散値[func(x)]=[y(ζy+b)+cx]を得て出力する第2秘密計算ステップと、
を有する秘密計算方法。 - x,y,z,wが実数であり、a,b,c,d,f,g,α,β,γ,δ,ζが実数係数であり、・の秘密分散値が[・]であり、
第1秘密計算部が、前記実数xの秘密分散値[x]を用いた秘密計算によって秘密分散値[y]=[δx2+ax]を得る第1秘密計算ステップと、
第2秘密計算部が、前記秘密分散値[x]および前記秘密分散値[y]を用いた秘密計算によって秘密分散値[z]=[y(ζy+b)+cx]を得る第2秘密計算ステップと、
第3秘密計算部が、前記秘密分散値[x]、前記秘密分散値[y]、および前記秘密分散値[z]を用いた秘密計算によって前記実数xの初等関数近似値w=func(x)の秘密分散値[func(x)]=[γ(z(αz+d)+y(βx+f)+gx)]を得て出力する第3秘密計算ステップと
を有する秘密計算方法。 - x,y,zが実数であり、a,b,c,γ,δ,ζが実数係数であり、・の秘密分散値が[・]であり、
第1秘密計算部が、前記実数xの秘密分散値[x]を用いた秘密計算によって秘密分散値[y]=[δx2+ax]を得る第1秘密計算ステップと、
第2秘密計算部が、前記秘密分散値[x]および前記秘密分散値[y]を用いた秘密計算によって前記実数xの初等関数近似値z=func(x)の秘密分散値[func(x)]=[γ(y(ζy+b)+cx)]を得て出力する第2秘密計算ステップと、
を有する秘密計算方法。 - 請求項1から4の何れかの秘密計算装置としてコンピュータを機能させるためのプログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2020/001681 WO2021149104A1 (ja) | 2020-01-20 | 2020-01-20 | 秘密計算装置、秘密計算方法、およびプログラム |
Publications (3)
Publication Number | Publication Date |
---|---|
JPWO2021149104A1 JPWO2021149104A1 (ja) | 2021-07-29 |
JPWO2021149104A5 JPWO2021149104A5 (ja) | 2022-08-29 |
JP7290177B2 true JP7290177B2 (ja) | 2023-06-13 |
Family
ID=76992096
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021572126A Active JP7290177B2 (ja) | 2020-01-20 | 2020-01-20 | 秘密計算装置、秘密計算方法、およびプログラム |
Country Status (6)
Country | Link |
---|---|
US (1) | US20220407682A1 (ja) |
EP (1) | EP4095832A4 (ja) |
JP (1) | JP7290177B2 (ja) |
CN (1) | CN114981861A (ja) |
AU (1) | AU2020425196B2 (ja) |
WO (1) | WO2021149104A1 (ja) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019225531A1 (ja) | 2018-05-25 | 2019-11-28 | 日本電信電話株式会社 | 秘密一括近似システム、秘密計算装置、秘密一括近似方法、およびプログラム |
-
2020
- 2020-01-20 EP EP20915962.3A patent/EP4095832A4/en active Pending
- 2020-01-20 US US17/791,907 patent/US20220407682A1/en active Pending
- 2020-01-20 JP JP2021572126A patent/JP7290177B2/ja active Active
- 2020-01-20 WO PCT/JP2020/001681 patent/WO2021149104A1/ja unknown
- 2020-01-20 CN CN202080093455.6A patent/CN114981861A/zh active Pending
- 2020-01-20 AU AU2020425196A patent/AU2020425196B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019225531A1 (ja) | 2018-05-25 | 2019-11-28 | 日本電信電話株式会社 | 秘密一括近似システム、秘密計算装置、秘密一括近似方法、およびプログラム |
Non-Patent Citations (3)
Title |
---|
GUO, C. et al.,Secure multiparty computation in floating-point arithmetic,arXiv,2001.03192v1,[online],2020年01月09日,pp.1-31,<URL:https://arxiv.org/abs/2001.03192v1> |
三品気吹 他,高精度かつ高効率な秘密ロジスティック回帰の設計と実装,CSS2018 コンピュータセキュリティシンポジウム2018論文集,2018年10月15日,pp.1229-1236 |
高田敏行 他,準同型暗号を用いた経験損失最小化のための秘密精度保証,電子情報通信学会技術研究報告 Vol.115 No.323 IEICE Technical Report,第115巻 第323号,pp.249-256 |
Also Published As
Publication number | Publication date |
---|---|
JPWO2021149104A1 (ja) | 2021-07-29 |
AU2020425196A1 (en) | 2022-07-14 |
CN114981861A (zh) | 2022-08-30 |
EP4095832A1 (en) | 2022-11-30 |
US20220407682A1 (en) | 2022-12-22 |
EP4095832A4 (en) | 2023-10-18 |
WO2021149104A1 (ja) | 2021-07-29 |
AU2020425196B2 (en) | 2023-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20170192752A1 (en) | Partial stochastic rounding that includes sticky and guard bits | |
JPWO2019087317A1 (ja) | 秘密計算装置、システム、方法、プログラム | |
US10031846B1 (en) | Transposition of two-dimensional arrays using single-buffering | |
JP7290177B2 (ja) | 秘密計算装置、秘密計算方法、およびプログラム | |
US7366745B1 (en) | High-speed function approximation | |
JP7091930B2 (ja) | テンソルデータ計算装置、テンソルデータ計算方法及びプログラム | |
JP7290178B2 (ja) | 秘密計算装置、秘密計算方法、およびプログラム | |
JP7318743B2 (ja) | 秘密計算装置、秘密計算方法、およびプログラム | |
US11068458B2 (en) | Mechanism for distributed-system-aware difference encoding/decoding in graph analytics | |
JP7205623B2 (ja) | 秘密共役勾配法計算システム、秘密計算装置、共役勾配法計算装置、秘密共役勾配法計算方法、共役勾配法計算方法、およびプログラム | |
CN109614072B (zh) | 对素数取模、素域中模乘运算的实现方法和装置 | |
JP7331951B2 (ja) | 秘密平方根計算システム、秘密正規化システム、それらの方法、秘密計算装置、およびプログラム | |
JP7331953B2 (ja) | 秘密逆数計算システム、秘密正規化システム、それらの方法、秘密計算装置、およびプログラム | |
CN114003197A (zh) | 利用梅森数或者费马数快速计算模运算的技术和应用 | |
WO2021149103A1 (ja) | 秘密計算装置、秘密計算方法、およびプログラム | |
JP7331952B2 (ja) | 秘密平方根逆数計算システム、秘密正規化システム、それらの方法、秘密計算装置、およびプログラム | |
JP7351353B2 (ja) | 秘密指数関数計算システム、秘密指数関数計算方法、秘密計算装置、およびプログラム | |
JP7405156B2 (ja) | 秘密選択積計算システム、秘密選択積計算方法、秘密計算装置、およびプログラム | |
JP7173328B2 (ja) | 秘密除算システム、秘密計算装置、秘密除算方法、およびプログラム | |
CN116738494B (zh) | 基于秘密分享的多方安全计算的模型训练方法和装置 | |
CN114186186B (zh) | 矩阵计算方法及相关设备 | |
JP2005128832A (ja) | データ処理装置と剰余演算回路 | |
Kanasugi et al. | Hardware implementation of evolutionary algorithms using dynamic reconfiguration technology |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220627 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220627 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20230502 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230515 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7290177 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |