JP7290177B2 - 秘密計算装置、秘密計算方法、およびプログラム - Google Patents

秘密計算装置、秘密計算方法、およびプログラム Download PDF

Info

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
Application number
JP2021572126A
Other languages
English (en)
Other versions
JPWO2021149104A1 (ja
JPWO2021149104A5 (ja
Inventor
大 五十嵐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Publication of JPWO2021149104A1 publication Critical patent/JPWO2021149104A1/ja
Publication of JPWO2021149104A5 publication Critical patent/JPWO2021149104A5/ja
Application granted granted Critical
Publication of JP7290177B2 publication Critical patent/JP7290177B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • H04L9/16Cryptographic 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に記載された方法では、関数の特性に応じて異なる方式を選択して適用しなければならない。
本発明はこのような点に鑑みてなされたものであり、パラメータ変更のみで多くの初等関数に汎用的に対応可能な秘密計算技術を提供することを目的とする。
実数xの秘密分散値[x]を用いた秘密計算によって秘密分散値[y]=[δx+ax]を得、秘密分散値[x]および秘密分散値[y]を用いた秘密計算によって実数xの初等関数近似値z=func(x)の秘密分散値[func(x)]=[y(ζy+b)+cx]を得て出力する。ただし、x,y,zが実数であり、a,b,c,δ,ζが実数係数であり、・の秘密分散値が[・]である。
本発明では、パラメータ変更のみで多くの初等関数を汎用的に秘密計算できる。
図1Aは第1実施形態の秘密計算装置を例示したブロックである。図1Bは第1実施形態の秘密計算方法を説明するためのフロー図である。 図2Aは第2実施形態の秘密計算装置を例示したブロックである。図2Bは第2実施形態の秘密計算方法を説明するためのフロー図である。 図3Aは第3実施形態の秘密計算装置を例示したブロックである。図3Bは第3実施形態の秘密計算方法を説明するためのフロー図である。 図4は第4実施形態の秘密計算装置を例示したブロックである。 図5は第4実施形態の秘密計算方法を説明するためのフロー図である。 図6は各初等関数に関する計算済みのパラメータを例示した表である。 図7はハードウェア構成を説明するためのブロック図である。
以下、図面を参照して本発明の実施形態を説明する。
[第1実施形態]
第1実施形態について説明する。本実施形態では初等関数を多項式で近似して秘密計算を行う。これによって、パラメータ変更のみで多くの初等関数を汎用的に秘密計算できる。また本形態で扱う初等関数に限定はないが、指数関数や対数関数を多項式で近似した場合には高次の係数が非常に小さくなる。このような場合に1つの多項式のみで近似を行うと係数の近似精度が低下してしまう。そのため、本実施形態では複数の多項式を用いて段階的に高次の次数を小さくしていく。なお、初等関数(Elementary function)とは、実数または複素数の1変数関数で、代数関数、指数関数、対数関数、三角関数、逆三角関数および、それらの合成関数を作ることを有限回繰り返して得られる関数をいう。初等関数の例は、逆数関数、平方根関数、指数関数、対数関数などである。
図1Aに例示するように、第1実施形態の秘密計算装置1は秘密計算部11,12および制御部19を有する。秘密計算装置1は制御部19の制御のもとで各処理を実行する。以下ではx,y,zが実数であり、a,b,c,δ,ζが実数係数である。実数係数a,b,c,δ,ζは、所望の初等関数に応じて設定されている。・の秘密分散値が[・]である。秘密分散方式に限定はなく、例えば、加法的秘密分散方式やシャミア秘密分散方式などを例示できる。[・]の一例は剰余環上の要素・を線形秘密分散した秘密分散値(シェア)である。また環上の整数に公開の小数点位置を定めることで固定小数点の実数と見なすことができる。実施形態ではこのようにして環上で表した固定小数点の実数を単に実数と表記する。
図1Bに例示するように、まず秘密計算装置1に実数xの秘密分散値[x]が入力される(ステップS10)。
秘密分散値[x]は秘密計算部11に入力される。秘密計算部11は秘密分散値[x]を用いた秘密計算によって秘密分散値[y]=[δx+ax]を得て出力する(ステップS11)。
秘密分散値[x],[y]は秘密計算部12に入力される。秘密計算部12は秘密分散値[x]および秘密分散値[y]を用いた秘密計算によって実数xの初等関数近似値z=func(x)の秘密分散値[func(x)]=[y(ζy+b)+cx]を得て出力する(ステップS12)。
秘密計算部11は秘密分散値[func(x)]を出力する(ステップS13)。
[第2実施形態]
第1実施形態では4次多項式によって初等関数を近似したが、第2実施形態では8次多項式によって初等関数を近似する。以下では、これまで説明した事項との相違点を中心に説明し、共通する事項については説明を簡略化する。
図2Aに例示するように、第2実施形態の秘密計算装置2は秘密計算部11,22,23および制御部19を有する。秘密計算装置2は制御部19の制御のもとで各処理を実行する。以下ではx,y,z,wが実数であり、a,b,c,d,f,g,α,β,γ,δ,ζが実数係数である。実数係数a,b,c,d,f,g,α,β,γ,δ,ζは、所望の初等関数に応じて設定されている。
図2Bに例示するように、まず秘密計算装置2に実数xの秘密分散値[x]が入力される(ステップS10)。
秘密分散値[x]は秘密計算部11に入力される。秘密計算部11は秘密分散値[x]を用いた秘密計算によって秘密分散値[y]=[δx+ax]を得て出力する(ステップS11)。
秘密分散値[x],[y]は秘密計算部22に入力される。秘密計算部22は、秘密分散値[x]および秘密分散値[y]を用いた秘密計算によって秘密分散値[z]=[y(ζy+b)+cx]を得て出力する(ステップS22)。
秘密分散値[x],[y],[z]は秘密計算部23に入力される。秘密計算部23は、秘密分散値[x]、秘密分散値[y]、および秘密分散値[z]を用いた秘密計算によって実数xの初等関数近似値w=func(x)の秘密分散値[func(x)]=[γ(z(αz+d)+y(βx+f)+gx)]を得て出力する(ステップS23)。
秘密計算装置2は秘密分散値[func(x)]を出力する(ステップS13)。
[第3実施形態]
第3実施形態では第1実施形態と同様に4次多項式によって初等関数を近似するが、最高次の係数が設定可能な点で第1実施形態と相違する。
図3Aに例示するように、第3実施形態の秘密計算装置3は秘密計算部11,32および制御部19を有する。秘密計算装置3は制御部19の制御のもとで各処理を実行する。以下ではx,y,zが実数であり、a,b,c,γ,δ,ζが実数係数である。実数係数a,b,c,γ,δ,ζは、所望の初等関数に応じて設定されている。
図3Bに例示するように、まず秘密計算装置3に実数xの秘密分散値[x]が入力される(ステップS10)。
秘密分散値[x]は秘密計算部11に入力される。秘密計算部11は、秘密分散値[x]を用いた秘密計算によって秘密分散値[y]=[δx+ax]を得て出力する(ステップS11)。
秘密分散値[x],[y]は秘密計算部32に入力される。秘密計算部32は、秘密分散値[x]および秘密分散値[y]を用いた秘密計算によって実数xの初等関数近似値z=func(x)の秘密分散値[func(x)]=[γ(y(ζy+b)+cx)]を得て出力する(ステップS32)。
秘密計算部31は秘密分散値[func(x)]を出力する(ステップS13)。
[第1~3実施形態の変形例]
所望の初等関数を多項式関数f(x)=func(x)で近似し、さらに右シフト前の関数f(x)と当該関数f(x)の近似関数f’(x)との差分f(x)-f’(x)の秘密分散値[f(x)-f’(x)]を計算し、f(x)-f’(x)を右シフトした(f(x)-f’(x))の秘密分散値[f(x)-f’(x)]を得、秘密分散値[f(x)-f’(x)]と秘密分散値[f’(x)]の秘密計算によってf(x)-f’(x)にf’(x)を加算した関数f(x)の秘密分散値[f(x)]を得てもよい。ただし、xが実数であり、[・]が・の秘密分散値であり、nが1以上の整数(例えば、nは2以上の整数)であり、t=0,…,n-1であり、u=1,…,n-1であり、f(x)が実数xに対する関数であり、f’(x)は関数f(x)の近似関数であり、近似関数f’(x)の秘密分散値[f’(x)]が[f’(x)]=c0,0+c0,1[x]であり、近似関数f’(x)の秘密分散値[f’(x)]が[f’(x)]=cu,0+cu,1[x]+cu,2[f(x)]+…+[fu-1(x)]であり、ct,0は公開値であり、ct,1,…,ct,n+1は係数である。ただし、ct,1,…,ct,n+1は有効ビット数の小さな値であり、ct,1,…,ct,n+1が乗じられても桁あふれによってシフトが必要になるようなことがない値である。f(x)-f’(x)は正である。秘密分散方式に限定はなく、例えば、加法的秘密分散方式やシャミア秘密分散方式などを例示できる。ここでf(x)-f’(x)の大きさはf(x)の大きさよりも小さいため、秘密分散値[f(x)-f’(x)]のオーバーフローを抑制することができる。また右シフト前の関数f(x)と当該関数f(x)の近似関数f’(x)との差分f(x)-f’(x)の秘密分散値[f(x)-f’(x)]を計算するため、高い精度を保つことができる。オーバーフローは秘密計算を実装したプロセッサの性能に基づく問題であり、本方式はこのハードウェア上の制約に基づく問題を解決するための手法を提供する。このように、本方式は純粋数学上の問題を解決するものではなく、ハードウェア実装上の問題を解決するものであって技術的特徴を有するものである。例えば、秘密分散値[f(x)]を計算するとオーバーフローしてしまうが秘密分散値[f(x)-f’(x)]の計算ではオーバーフローしないプロセッサではその技術的特徴は顕著である。以下、第1~3実施形態の変形例を具体的に示す。
≪第1実施形態の変形例≫
第1実施形態の場合、n=2であり、a,b,c,δ,i,j,k,s,mが実数であり、f(x)=y=δx+axであり、f(x)=z=y(ζy+b)+cxであり、f(x)=w=γ(z(αz+d)+y(βx+f)+gx)であり、f’(x)=ix+jであり、f’(x)=ky+sx+mであり、f’(x)=nz+oy+px+qである。
入力:[x]∈[L,R)
設定済のパラメータ:a,b,c,δ,i,j,k,s,m
出力:秘密分散値[func(x)]
1:秘密計算装置1に秘密分散値[x]が入力される(ステップS10)。秘密計算装置1の秘密計算部11は、秘密分散値[x]を用いた積和の秘密計算により秘密分散値[y’]=[x(δx+a-i)-j]を得、右シフトの秘密計算により小数点位置を下げたy’の秘密分散値[y’]を得る(ステップS11)。
2:秘密計算部11は、秘密分散値[y’],[x]を用いた秘密計算により秘密分散値[y]=[y’+(ix+j)]を得る(ステップS11)。
3:秘密計算部12は、秘密分散値[x],[y]を用いた積和の秘密計算により秘密分散値[z’]=[y(ζy+b-k)+(c-s)x-m]を得、右シフトにより小数点位置を下げたz’の秘密分散値[z’]を得る(ステップS12)。
4:秘密計算部12は、秘密分散値[z’]を用いた秘密計算により秘密分散値[func(x)]=[z’+(ky+sx+m)]を得る(ステップS12)。秘密計算部12は、得た秘密分散値[func(x)]を出力する(ステップS13)。
≪第2実施形態の変形例≫
第2実施形態の場合、n=3であり、a,b,c,d,f,g,h,i,j,k,s,m,n,o,p,q,α,β,γ,δ,ζが実数であり、f(x)=y=δx+axであり、f(x)=z=y(ζy+b)+cxであり、f(x)=w=γ(z(αz+d)+y(βx+f)+gx)であり、f’(x)=ix+jであり、f’(x)=ky+sx+mであり、f’(x)=nz+oy+px+qである。
入力:[x]∈[L,R)
設定済のパラメータ:a,b,c,d,f,g,H,i,j,k,s,m,n,o,p,q,α,β,γ,δ,ζ
出力:秘密分散値[func(x)]
1:秘密計算装置2に秘密分散値[x]が入力される(ステップS10)。秘密計算装置2の秘密計算部11は、秘密分散値[x]を用いた積和の秘密計算により秘密分散値[y’]=[x(δx+a-i)-j]を得、右シフトの秘密計算により小数点位置を下げたy’の秘密分散値[y’]を得る(ステップS11)。
2:秘密計算部11は、秘密分散値[y’],[x]を用いた秘密計算により秘密分散値[y]=[y’+(ix+j)]を得る(ステップS11)。
3:秘密計算部22は、秘密分散値[x],[y]を用いた積和の秘密計算により秘密分散値[z’]=[y(ζy+b-k)+(c-s)x-m]を得、右シフトにより小数点位置を下げたz’の秘密分散値[z’]を得る(ステップS22)。
4:秘密計算部22は、秘密分散値[z’],[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’]を得てもよい。ただし、σは右シフト量を表す正整数である。これによってγの乗算および右シフトの秘密計算を同時に実行できるため、処理コストを低減できる。
6:秘密計算部23は、秘密計算により秘密分散値[func(x)]=[w’+(nz+oy+px+q)]を得る(ステップS23)。秘密計算部23は、得た秘密分散値[func(x)]を出力する(ステップS13)。
≪第3実施形態の変形例≫
第3実施形態の場合、n=2であり、a,b,c,γ,δ,i,j,k,s,mが実数であり、f(x)=y=δx+axであり、f(x)=z=γ(y(δy+b)+cx)であり、f’(x)=ix+jであり、f’(x)=ky+sx+mである。
入力:[x]∈[L,R)
設定済のパラメータ:a,b,c,γ,δ,i,j,k,s,m
出力:秘密分散値[func(x)]
1:秘密計算装置3に秘密分散値[x]が入力される(ステップS10)。秘密計算装置3の秘密計算部31は、秘密分散値[x]を用いた積和の秘密計算により秘密分散値[y’]=[x(δx+a-i)-j]を得、右シフトの秘密計算により小数点位置を下げたy’の秘密分散値[y’]を得る(ステップS11)。
2:秘密計算部31は、秘密分散値[y’]を用いた秘密計算により秘密分散値[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’の秘密分散値[z’]を得る(ステップS32)。秘密分散値[z’]を得るための処理に限定は無いが、例えば、秘密計算部32は、公開値2σ/γを得、公開値2σ/γと秘密分散値[z’/γ]を用いた公開値除算の秘密計算[z’/γ]/(2σ/γ)によって秘密分散値[z’]を得てもよい。これによってγの乗算および右シフトの秘密計算を同時に実行できるため、処理コストを低減できる。
5:秘密計算部32は、秘密分散値[z’]と秘密分散値[x],[y]を用いた秘密計算によって秘密分散値[func(x)]=[z’+(ky+sx+m)]を得る(ステップS32)。秘密計算部32は、得た秘密分散値[func(x)]を出力する(ステップS13)。
[第4実施形態]
第4実施形態では、初等関数として対数関数を近似する。
図4に例示するように、第4実施形態の秘密計算装置4は、秘密計算部45,46,47,48,49,410,411、および秘密計算装置1~3の何れかまたは前述したその変形例の秘密計算装置を有する。以下ではχが実数であり、pが正整数であり、Lが2以上の整数であり、[・]がpを法とした剰余環上の要素・を線形秘密分散した秘密分散値であり、{・}が2を法とした剰余環上の要素・を線形秘密分散した秘密分散値である。
図5に例示するように、まず秘密計算装置4に実数χの秘密分散値[χ]が入力される(ステップS40)。
秘密分散値[χ]は秘密計算部45に入力される。秘密計算部45は、秘密分散値[χ]を用いた秘密計算によって実数χのLビット表現χ…χL-1の秘密分散値{χ},…,{χL-1}を得て出力する(ステップS45)。χ,…,χL-1は整数である。
秘密分散値{χ},…,{χL-1}は秘密計算部46に入力される。秘密計算部46は、秘密分散値{χ},…,{χL-1}を用いた秘密計算によって、ビット列χ…χL-1の最上位ビット(msb)χmsbに対応するビットηmsbが1であり、ビットηmsb以外のビットηξ(ξ∈{0,…,L-1})が0であるmsbフラグ列η,…,ηL-1の秘密分散値{η},…,{ηL-1}を得て出力する(ステップS46)。ステップS46の詳細は後述する。
秘密分散値{χ},…,{χL-1}は秘密計算部47に入力される。秘密計算部47は、秘密分散値{χ},…,{χL-1}を用いた秘密計算によって、0≦i<L-1における秘密分散値{ρ}={ρi+1∨χ}および秘密分散値{ρL-1}={χL-1}を得て出力する(ステップS47)。ステップS47の詳細は後述する。
秘密分散値{ρ},…,{ρL-1}は秘密計算部48に入力される。秘密計算部48は、秘密分散値{ρ},…,{ρL-1}を用いた秘密計算によって、ρ,…,ρL-1のうち1である要素の個数を表すカウント値θの秘密分散値[θ]を得て出力する(ステップS48)。
秘密分散値{η},…,{ηL-1}は秘密計算部49に入力される。秘密計算部49は、秘密分散値{η},…,{ηL-1}を用いた秘密計算によってmsbフラグ列η,…,ηL-1をビット結合したmsbフラグ値ν=η…ηL-1の秘密分散値[ν]を得て出力する(ステップS49)。
秘密分散値[χ],[ν]は秘密計算部410に入力される。秘密計算部410は、秘密分散値[χ]および秘密分散値[ν]を用いた秘密計算によって秘密分散値[x]=[χ][ν]を得て出力する(ステップS410)。
秘密分散値[x]は秘密計算装置1~3の何れかに入力される。秘密分散値[x]が入力された秘密計算装置1~3またはその変形例の何れかの秘密計算装置は、第1~3実施形態またはその変形例の処理によって秘密分散値[func(x)]を得て出力する(ステップS420)。
秘密分散値[func(x)],[θ]は秘密計算部411に入力される。秘密計算部411は、秘密分散値[func(x)]および秘密分散値[θ]を用いた秘密計算によって[log χ]=[func(x)]-[θ]を得て出力する(ステップS411)。
秘密計算装置4は秘密分散値[log χ]を出力する(ステップS412)。
<ステップS46,S47の詳細>
入力:秘密分散値{χ},…,{χL-1
出力:秘密分散値{η},…,{ηL-1
1:秘密計算部46は、0≦i<L-1で{ρ}={ρi+1∨χ}とする。
2:秘密計算部46は、{ρL-1}={χL-1}とする。
ここまでで、ρ,…,ρL-1は、0,0,0,1,1,…,1のように、msb以下のビットが1でmsbよりも上位のビットが0のビット列となっている。
3:秘密計算部46は、0≦i<L-1で{η}={ρ(XOR)ρi+1}とする。ただし、α1(XOR)α2はα1とα2との排他的論理和を表す。
4:秘密計算部46は、{ηL-1}={χL-1}とする。
ここまでで、η,…,ηL-1は、0,0,0,1,0,…,0のように、msbの位置のビットのみが1で、他のビットが0となっている。
[第5実施形態]
第5実施形態では、初等関数が逆数関数、平方根の逆数関数、平方根関数、指数関数である場合の処理を例示する。
<実施例1:逆数関数の例>
実施例1では、実数χの逆数関数値1/χの秘密分散値を計算する。入力された実数χを二進数表現した場合における0.5のビット列の小数点位置とχの最上位ビット(msb)との差を表す正整数をeとし、実数χに対して以下の変形を行う。
Figure 0007290177000001

すなわち、2eを乗じて区間[0.5, 1)に正規化し、逆数
Figure 0007290177000002

を求めた後に2を乗じる処理を秘密計算で行う。逆数においては、標準的である[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:秘密計算装置は、秘密分散値[χ]を用いた秘密計算によるビット分解により、χを二進数表現した場合のビット列χ…χL-1に対するビット表現χ,…,χL-1の秘密分散値{χ},…,{χL-1}を得る。
2:秘密計算装置は、秘密分散値{χ},…,{χL-1}を用いた秘密計算によって、ビット列χ…χL-1の最上位ビット(msb)χmsbに対応するビットηmsbが1であり、ビットηmsb以外のビットηξ(ξ∈{0,…,L-1})が0であるmsbフラグ列η,…,ηL-1の秘密分散値{η},…,{ηL-1}を得る。この処理は前述したステップS46と同じである。
3:秘密計算装置は、秘密分散値{χ},…,{χL-1},{η},…,{ηL-1}を用いた秘密計算によって、2≦i<Lで{ω}={(¬χi-2∧ηi-1)(XOR)η}を得る。
4:秘密計算装置は、秘密分散値{η},…,{ηL-1}を用いた秘密計算によって秘密分散値{ω}={ω}={0},{ω}={¬ηL-2∧ηL-1}を得る。ビット列χ…χL-1のmsbの1ビット下の入力ビットが1であれば、msbの1ビット上のωが1となる。次のステップで{ω},{ω},{ω},…,{ωL-1}の上下桁を逆転して結合するため、ここでは上下桁を逆転して秘密分散値{ω},{ω},{ω},…,{ωL-1}を設定している。
5:秘密計算装置は、秘密分散値{ω},{ω},{ω},…,{ωL-1}を用いた秘密計算によるビット結合により、{ωL-1},…,{ω}を結合して[ν]を得て出力する。νはχに乗じられた場合、χの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:平方根の逆数関数の例>
実施例2では、実数χの平方根の逆数関数値1/√χの秘密分散値を計算する。平方根の逆数関数では、上述の逆数関数と同じ考え方で[0.5,1)に正規化する。ただし、2ではなく√(2)が乗じられる。実施例2では、実数χに対して以下の変形を行う。
Figure 0007290177000003

つまり、実数χに2を掛けて正規化し、2χの平方根の逆数
Figure 0007290177000004

を求めた後に√(2)を乗じる処理を秘密計算で行う。
≪平方根の逆数用正規化プロトコル≫
入力:[χ]
出力:[x],[φ],[ν’]
ただし、χを二進数表現した場合における小数点位置をιとすると、xはχのmsbをι-1の位置に移動した値である。実施例2では、φは最後に計算値に√2を掛ける必要があるかどうかを表す真理値である。ν’は最後に掛けるべき2のべき乗値である。
1:秘密計算装置は、秘密分散値[χ]を用いた秘密計算によるビット分解により、χを二進数表現した場合のビット列χ…χL-1に対するビット表現χ,…,χL-1の秘密分散値{χ},…,{χL-1}を得る。
2:秘密計算装置は、L’=ceil(L/2)を得る。ただし、ceilは天井関数である。
3:秘密計算装置は、秘密分散値{χ},…,{χL-1}を用いた秘密計算によって、0≦i<floor(L/2)で、秘密分散値{χ’}={χ∨χi+1}を得る。ただし、floorは床関数である。
4:秘密計算装置は、Lが奇数なら、{χ’L’-1}={χL-1}と設定する。
5:秘密計算部は、秘密分散値{χ’},…,{χ’L-1}を用いた秘密計算によって、ビット列χ’…χ’L-1の最上位ビット(msb)χ’msbに対応するビットηmsbが1であり、ビットηmsb以外のビットηξ(ξ∈{0,…,L’-1})が0であるmsbフラグ列η,…,ηL-1の秘密分散値{η},…,{ηL’-1}を得て出力する。この処理はχをχ’とし、LをL’とした前述のステップS46と同じである。
6:秘密計算部は、秘密分散値{η},…,{ηL’-1}を用いた秘密計算でのビット結合により、msbフラグ列ηL’-1,…,ηをビット結合したmsbフラグ値ν’の秘密分散値[ν’]を得て出力する。
7:秘密計算部は、0≦i<floor(L/2)で、{χ”}={χ2i}と設定する。
8:秘密計算部は、Lが奇数なら、{χ”L’-1}={χL-1}と設定する。
9:秘密計算部は、秘密分散値{χ”},…,{χ”L’-1},{η},…,{ηL’-1}を用いた積和の秘密計算によって、秘密分散値{φ}={ηχ”+…+η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)][ν’]を得て出力する。
以下にステップS23’,S32’の処理内容を例示する。
≪第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)]を得て出力する。
秘密計算部は、例えば、以下のようにステップS232の処理を実行する(ステップS232a~S232c)。
秘密計算部は、乗数m=1,m=√2および正整数σ0,σ1を用いて公開値2σ0/m,2σ1/mを得て出力する。ただし、σ0,σ1は、それぞれ乗数m,mが大きい場合に必要となる右シフト量を表すビット数である正整数である(ステップS232a)。
秘密計算装置は、秘密分散値[x],[y],[z]とステップS232aで得られた公開値2σ0/m,2σ1/mとを用いた公開値除算の秘密計算[γ(z(αz+d)+y(βx+f)+gx)]/(2σ0/m),[γ(z(αz+d)+y(βx+f)+gx)]/(2σ1/m)を行って、mγ(z(αz+d)+y(βx+f)+gx)をσ0ビットだけ右シフトした値の秘密分散値[mγ(z(αz+d)+y(βx+f)+gx)]およびmγ(z(αz+d)+y(βx+f)+gx)をσ1ビットだけ右シフトした値の秘密分散値[mγ(z(αz+d)+y(βx+f)+gx)]を得て出力する(ステップS232b)。
秘密計算装置は、秘密分散値[φ],[mγ(z(αz+d)+y(βx+f)+gx)],[mγ(z(αz+d)+y(βx+f)+gx)]を用いた秘密計算によって、mφγ(z(αz+d)+y(βx+f)+gx)の秘密分散値[func(x)]=[φ?mγ(z(αz+d)+y(βx+f)+gx):mγ(z(αz+d)+y(βx+f)+gx)]を得て出力する。すなわち、秘密計算部はφ=0の場合に[func(x)]=[γ(z(αz+d)+y(βx+f)+gx)]を得て出力し、φ=1の場合に[func(x)]=[(√2)γ(z(αz+d)+y(βx+f)+gx)]を得て出力する(ステップS232c)。
≪第2実施形態の変形例の方法が用いられる場合(ステップS23’)≫
秘密計算部は、上述のように[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)]を得る。
秘密計算部は、例えば、以下のようにステップS232’の処理を実行する(ステップS232a’~S232e’)。
秘密計算部は、秘密分散値[x],[y],[z]を用いた積和の秘密計算により秘密分散値[w’/γ]=[z(αz+d-n/γ)+(βx+f-o/γ)y+(g-p)x+(H-q)/γ]を得る(ステップS232a’)。
秘密計算部は、乗数m=1,m=√2および正整数σ0,σ1を用いて公開値2σ0/m,2σ1/mを得て出力する(ステップS232b’)。
秘密計算装置は、秘密分散値[w’/γ]とステップS232b’で得られた公開値2σ0/m,2σ1/mとを用いた公開値除算の秘密計算[w’/γ]/(2σ0/γm),[w’/γ]/(2σ1/γm)を行って、mw’をσ0ビットだけ右シフトした値の秘密分散値[mw’]およびmw’をσ1ビットだけ右シフトした値の秘密分散値[mw’]を得て出力する(ステップS232c’)。
秘密計算装置は、秘密分散値[φ],[mw’],[mw’]を用いた秘密計算によって、mφw’の秘密分散値[func(x)]=[φ?mw’:mw’]を得て出力する。すなわち、秘密計算部はφ=0の場合に秘密分散値[func’(x)]=[w’]を得て出力し、φ=1の場合に秘密分散値[func’(x)]=[(√2)w’]を得て出力する(ステップS232d’)。
秘密計算部は、秘密分散値[func’(x)],[x],[y],[z]を用いた秘密計算により秘密分散値[func(x)]=[func’(x)+(nz+oy+px+q)]を得る(ステップS232e’)。
≪第3実施形態の方法が用いられる場合(ステップS32’)≫
秘密計算部は、上述のように[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)]を得て出力する。
秘密計算部は、例えば、以下のようにステップS323の処理を実行する(ステップS323a~S323c)。
秘密計算部は、乗数m=1,m=√2および正整数σ0,σ1を用いて公開値2σ0/m,2σ1/mを得て出力する(ステップS323a)。
秘密計算装置は、秘密分散値[x],[y]とステップS323aで得られた公開値2σ0/m,2σ1/mとを用いた公開値除算の秘密計算[γ(y(ζy+b)+cx)]/(2σ0/m),[γ(y(ζy+b)+cx)]/(2σ1/m)を行って、mγ(y(ζy+b)+cx)をσ0ビットだけ右シフトした値の秘密分散値[mγ(y(ζy+b)+cx)]およびmγ(y(ζy+b)+cx)をσ1ビットだけ右シフトした値の秘密分散値[mγ(y(ζy+b)+cx)]を得て出力する(ステップS323b)。
秘密計算装置は、秘密分散値[φ],[mγ(y(ζy+b)+cx)],[mγ(y(ζy+b)+cx)]を用いた秘密計算によって、mφγ(y(ζy+b)+cx)の秘密分散値[φ?mγ(y(ζy+b)+cx):mγ(y(ζy+b)+cx)]を得て出力する。すなわち、秘密計算部はφ=0の場合に[func(x)]=[γ(y(ζy+b)+cx)]を得て出力し、φ=1の場合に[func(x)]=[(√2)γ(y(ζy+b)+cx)]を得て出力する(ステップS323c)。
≪第3実施形態の変形例の方法が用いられる場合(ステップS32’)≫
秘密計算部は、上述のように[0.5,1)に正規化した値xの秘密分散値[x]に対し、前述した第3実施形態の変形例のステップS10,S11を実行する。その後、秘密計算部は、ステップS32に代えて以下のステップS323’の処理を実行する。
ステップS323’:秘密計算部は、秘密分散値[x],[y],[φ]を用いた積和の秘密計算により[z’/γ]=[y(ζy+b-k/γ)+(c-s/γ)x-m/γ]を得、φ=1のときに(√2)γによる乗算と小数点位置の下降を行い、φ=0のときにγによる乗算と小数点位置の下降を行って、秘密分散値[func’(x)]を得る。秘密計算部32は、秘密分散値[func’(x)]と秘密分散値[x],[y]を用いた秘密計算によって秘密分散値[func(x)]=[func’(x)+(ky+sx+m)]を得て出力する。
秘密計算部は、例えば、以下のようにステップS323’の処理を実行する(ステップS323a’~S323c’)。
秘密計算部は、秘密分散値[x],[y]を用いた積和の秘密計算により[z’/γ]=[y(ζy+b-k/γ)+(c-s/γ)x-m/γ]を得る(ステップS323a’)。
秘密計算部は、乗数m=1,m=√2および正整数σ0,σ1を用いて公開値2σ0/m,2σ1/mを得て出力する(ステップS323b’)。
秘密計算部は、秘密分散値[w’/γ]とステップS323b’で得られた公開値2σ0/m,2σ1/mとを用いた公開値除算の秘密計算[w’/γ]/(2σ0/γm),[w’/γ]/(2σ1/γm)を行って、mw’をσ0ビットだけ右シフトした値の秘密分散値[mw’]およびmw’をσ1ビットだけ右シフトした値の秘密分散値[mw’]を得て出力する(ステップS323c’)。
秘密計算装置は、秘密分散値[φ],[mw’],[mw’]を用いた秘密計算によって、mφw’の秘密分散値[func(x)]=[φ?mw’:mw’]を得て出力する。すなわち、秘密計算部はφ=0の場合に秘密分散値[func’(x)]=[w’]を得て出力し、φ=1の場合に秘密分散値[func’(x)]=[(√2)w’]を得て出力する(ステップS323d’)。
秘密計算部は、秘密分散値[func’(x)],[x],[y]を用いた秘密計算により秘密分散値[func(x)]=[func’(x)+(ky+sx+m)]を得て出力する(ステップS323e’)。
<実施例3:平方根関数の例>
実施例3では、実数χの平方根√χの秘密分散値を計算する。平方根の逆数関数では、上述の逆数関数と同じ考え方で[1,2)に正規化する。実施例3では、実数χに対して以下の変形を行う。
Figure 0007290177000005

つまり、実数χに2を掛けて正規化し、2χの平方根√(2χ)を求めた後に√(2)で除する処理を秘密計算で行う。
≪平方根用正規化プロトコル≫
入力:[χ]
出力:[x],[φ],[ν’]
ただし、χを二進数表現した場合における小数点位置をιとすると、xはχのmsbをιの位置に移動した値である。実施例3では、φは最後に計算値を√2で割る必要があるかどうかを表す真理値である。ν’は最後に掛けるべき2のべき乗値である。
1:秘密計算装置は、秘密分散値[χ]を用いた秘密計算によるビット分解により、χを二進数表現した場合のビット列χ…χL-1に対するビット表現χ,…,χL-1の秘密分散値{χ},…,{χL-1}を得る。
2:秘密計算装置は、秘密分散値{χ},…,{χL-1}を用いた秘密計算によって、ビット列χ…χL-1の最上位ビット(msb)χmsbに対応するビットηmsbが1であり、ビットηmsb以外のビットηξ(ξ∈{0,…,L-1})が0であるmsbフラグ列η,…,ηL-1の秘密分散値{η},…,{ηL-1}を得る。この処理は前述したステップS46と同じである。
3:秘密計算装置は、L’=ceil(L/2)を得る。ただし、ceilは天井関数である。
4:秘密計算装置は、秘密分散値{η},…,{ηL-1}を用いた秘密計算により、各i<L’で、秘密分散値{ω}={η2i}(XOR){η2i+1}を得る。ただし、Lが奇数のとき、{ωL-1}={η2i}とする。
5:秘密計算装置は、秘密分散値{η},…,{ηL-1}を用いた秘密計算により秘密分散値{φ}={η}(XOR){η}(XOR){η}(XOR)…を得る。最後に計算値を√2で割る必要がある場合にはφ=1であり、最後に計算値を√2で割る必要がない場合にはφ=0である。
6:秘密計算装置は、秘密分散値{φ}を秘密分散値[φ]に変換する。
7:秘密計算装置は、秘密分散値{ω},{ω},{ω},…,{ωL-1}を用いた秘密計算によるビット結合により、{ω},…,{ωL’-1}を結合して[ν’]を得て出力する。
8:秘密計算装置は、秘密分散値{η},…,{ηL-1}を用いた秘密計算により、{ηL-1},…,{η}を結合して[ν]を得て出力する。
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)][ν’]を得て出力する。
以下にステップS23”,S32”の処理内容を例示する。
≪第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)]を得て出力する。
秘密計算部は、例えば、以下のようにステップS234の処理を実行する(ステップS234a~S234c)。
秘密計算部は、乗数m=φ’,m=φ’/√2および正整数σ0,σ1を用いて公開値2σ0/m,2σ1/mを得て出力する(ステップS234a)。
秘密計算装置は、秘密分散値[x],[y],[z]とステップS234aで得られた公開値2σ0/m,2σ1/mとを用いた公開値除算の秘密計算[γ(z(αz+d)+y(βx+f)+gx)]/(2σ0/m),[γ(z(αz+d)+y(βx+f)+gx)]/(2σ1/m)を行って、mγ(z(αz+d)+y(βx+f)+gx)をσ0ビットだけ右シフトした値の秘密分散値[mγ(z(αz+d)+y(βx+f)+gx)]およびmγ(z(αz+d)+y(βx+f)+gx)をσ1ビットだけ右シフトした値の秘密分散値[mγ(z(αz+d)+y(βx+f)+gx)]を得て出力する(ステップS234b)。
秘密計算装置は、秘密分散値[φ],[mγ(z(αz+d)+y(βx+f)+gx)],[mγ(z(αz+d)+y(βx+f)+gx)]を用いた秘密計算によって、mφγ(z(αz+d)+y(βx+f)+gx)の秘密分散値[func(x)]=[φ?mγ(z(αz+d)+y(βx+f)+gx):mγ(z(αz+d)+y(βx+f)+gx)]を得て出力する。すなわち、秘密計算部はφ=0の場合に[func(x)]=[φ’γ(z(αz+d)+y(βx+f)+gx)]を得て出力し、φ=1の場合に[func(x)]=[(φ’/√2)γ(z(αz+d)+y(βx+f)+gx)]を得て出力する(ステップS234c)。
≪第2実施形態の変形例の方法が用いられる場合(ステップS23”)≫
秘密計算部は、上述のように[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)]を得る。
秘密計算部は、例えば、以下のようにステップS234’の処理を実行する(ステップS234a’~S234e’)。
秘密計算部は、秘密分散値[x],[y],[z]を用いた積和の秘密計算により秘密分散値[w’/γ]=[z(αz+d-n/γ)+(βx+f-o/γ)y+(g-p)x+(H-q)/γ]を得る(ステップS234a’)。
秘密計算部は、乗数m=φ’,m=φ’/√2および正整数σ0,σ1を用いて公開値2σ0/m,2σ1/mを得て出力する(ステップS234b’)。
秘密計算装置は、秘密分散値[w’/γ]とステップS234b’で得られた公開値2σ0/m,2σ1/mとを用いた公開値除算の秘密計算[w’/γ]/(2σ0/γm),[w’/γ]/(2σ1/γm)を行って、mw’をσ0ビットだけ右シフトした値の秘密分散値[mw’]およびmw’をσ1ビットだけ右シフトした値の秘密分散値[mw’]を得て出力する(ステップS234c’)。
秘密計算装置は、秘密分散値[φ],[mw’],[mw’]を用いた秘密計算によって、mφw’の秘密分散値[func(x)]=[φ?mw’:mw’]を得て出力する。すなわち、秘密計算部はφ=0の場合に秘密分散値[func’(x)]=[φ’w’]を得て出力し、φ=1の場合に秘密分散値[func’(x)]=[(φ’/√2)w’]を得て出力する(ステップS234d’)。
秘密計算部は、秘密分散値[func’(x)],[x],[y],[z]を用いた秘密計算により秘密分散値[func(x)]=[func’(x)+(nz+oy+px+q)]を得る(ステップS234e’)。
≪第3実施形態の方法が用いられる場合(ステップS32”)≫
秘密計算部は、上述のように[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)]を得て出力する。
秘密計算部は、例えば、以下のようにステップS325の処理を実行する(ステップS325a~S325c)。
秘密計算部は、乗数m=φ’,m=φ’/√2および正整数σ0,σ1を用いて公開値2σ0/m,2σ1/mを得て出力する(ステップS325a)。
秘密計算装置は、秘密分散値[x],[y]とステップS325aで得られた公開値2σ0/m,2σ1/mとを用いた公開値除算の秘密計算[γ(y(ζy+b)+cx)]/(2σ0/m),[γ(y(ζy+b)+cx)]/(2σ1/m)を行って、mγ(y(ζy+b)+cx)をσ0ビットだけ右シフトした値の秘密分散値[mγ(y(ζy+b)+cx)]およびmγ(y(ζy+b)+cx)をσ1ビットだけ右シフトした値の秘密分散値[mγ(y(ζy+b)+cx)]を得て出力する(ステップS325b)。
秘密計算装置は、秘密分散値[φ],[mγ(y(ζy+b)+cx)],[mγ(y(ζy+b)+cx)]を用いた秘密計算によって、mφγ(y(ζy+b)+cx)の秘密分散値[φ?mγ(y(ζy+b)+cx):mγ(y(ζy+b)+cx)]を得て出力する。すなわち、秘密計算部はφ=0の場合に[func(x)]=[φ’γ(y(ζy+b)+cx)]を得て出力し、φ=1の場合に[func(x)]=[(φ’/√2)γ(y(ζy+b)+cx)]を得て出力する(ステップS325c)。
≪第3実施形態の変形例の方法が用いられる場合(ステップS32”)≫
秘密計算部は、上述のように[1,2)に正規化した値xの秘密分散値[x]に対し、前述した第3実施形態の変形例のステップS10,S11を実行する。その後、秘密計算部は、ステップS32に代えて以下のステップS325’の処理を実行する。
ステップS325’:秘密計算部は、秘密分散値[x],[y],[φ]を用いた積和の秘密計算により[z’/γ]=[y(ζy+b-k/γ)+(c-s/γ)x-m/γ]を得、φ=1のときに(φ’/√2)γによる乗算と小数点位置の下降を行い、φ=0のときにφ’γによる乗算と小数点位置の下降を行って、秘密分散値[func’(x)]を得る。秘密計算部32は、秘密分散値[func’(x)]と秘密分散値[x],[y]を用いた秘密計算によって秘密分散値[func(x)]=[func’(x)+(ky+sx+m)]を得て出力する。
秘密計算部は、例えば、以下のようにステップS325’の処理を実行する(ステップS325a’~S325c’)。
秘密計算部は、秘密分散値[x],[y]を用いた積和の秘密計算により[z’/γ]=[y(ζy+b-k/γ)+(c-s/γ)x-m/γ]を得る(ステップS325a’)。
秘密計算部は、乗数m=φ’,m=φ’/√2および正整数σ0,σ1を用いて公開値2σ0/m,2σ1/mを得て出力する(ステップS325b’)。
秘密計算部は、秘密分散値[w’/γ]とステップS325b’で得られた公開値2σ0/m,2σ1/mとを用いた公開値除算の秘密計算[w’/γ]/(2σ0/γm),[w’/γ]/(2σ1/γm)を行って、mw’をσ0ビットだけ右シフトした値の秘密分散値[mw’]およびmw’をσ1ビットだけ右シフトした値の秘密分散値[mw’]を得て出力する(ステップS325c’)。
秘密計算装置は、秘密分散値[φ],[φ’],[mw’],[mw’]を用いた秘密計算によって、mφw’の秘密分散値[func(x)]=[φ?mw’:mw’]を得て出力する。すなわち、秘密計算部はφ=0の場合に秘密分散値[func’(x)]=[φ’w’]を得て出力し、φ=1の場合に秘密分散値[func’(x)]=[(φ’/√2)w’]を得て出力する(ステップS325d’)。
秘密計算部は、秘密分散値[func’(x)],[x],[y]を用いた秘密計算により秘密分散値[func(x)]=[func’(x)+(ky+sx+m)]を得て出力する(ステップS325e’)。
<実施例4:指数関数の例>
実施例4では、実数xの指数関数値exp(x)の秘密分散値を計算する。指数関数は入力に加法性があるため、入力を以下の3パートに分解する。
I.想定される入力の最小値μ
II.x-μの小数点以下tビット以上の上位uビットx,…,xu-1
III.x-μのxよりも下位ビット全体が表す数xρ
exp x=exp μ exp 2-t,…,exp 2u-t-1u-1exp xρとする。exp μは公開値、exp 2-t,・・・,exp 2u-t-1u-1は表による計算である。exp xρが近似により計算する箇所であり、[0,2-t)に正規化される。
入力:[x]
出力:[exp(x)]
設定済のパラメータ:t=-1
1:秘密計算装置は、秘密計算によって[x’]=[x]-μを得る。ただし、μは想定されるxの最小値である。
2:秘密計算装置は、秘密計算により、小数点以下tビットより上位のビットをビット分解で取り出してmod p変換し、[x’],…,[x’u-1]を得る。
3:秘密計算装置は、秘密計算により、各0≦i<uで、f,εをそれぞれexp(2i-t)の仮数部、指数部とする。
4:秘密計算装置は、秘密計算によって、i=0,…,u-1について、x’i’=0ならばF=1、x’i’=1ならばF=fとした
Figure 0007290177000006

を得る。
5:秘密計算装置は、秘密計算によって、各0≦i<uで、選択肢公開のif-then-elseゲートにより[ε’]=if[x’] then 2εi else 1を計算する。
6:秘密計算装置は、秘密計算によって、各iに関する[ε’]の積[ε’]を得る(ε’=ε’…ε’u-1)。これはexp(x’)の上位ビット部分の指数部の2のべき乗値である。
7:秘密計算装置は、秘密計算によって、
Figure 0007290177000007

を得る。これは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を含んでいてもよい。
図5は、各実施形態における秘密計算装置1~4および各実施例における秘密計算装置のハードウェア構成を例示したブロック図である。図7に例示するように、この例の秘密計算装置1~4は、CPU(Central Processing Unit)10a、力部10b、出力部10c、RAM(Random Access Memory)10d、ROM(Read Only Memory)10e、補助記憶装置10f及びバス10gを有している。この例のCPU10aは、制御部10aa、演算部10ab及びレジスタ10acを有し、レジスタ10acに読み込まれた各種プログラムに従って様々な演算処理を実行する。また、出力部10は、データが出力される出力端子、ディスプレイ等、所定のプログラムを読み込んだCPU10aによって制御されるLANカード等である。また、RAM10dは、SRAM (Static Random Access Memory)、DRAM (Dynamic Random Access Memory)等であり、所定のプログラムが格納されるプログラム領域10da及び各種データが格納されるデータ領域10dbを有している。また、補助記憶装置10fは、例えば、ハードディスク、MO(Magneto-Optical disc)、半導体メモリ等であり、所定のプログラムが格納されるプログラム領域10fa及び各種データが格納されるデータ領域10fbを有している。また、バス10gは、CPU10a、力部10b、出力部10c、RAM10d、ROM10e及び補助記憶装置10fを、情報のやり取りが可能なように接続する。CPU10aは、読み込まれたOS(Operating System)プログラムに従い、補助記憶装置10fのプログラム領域10faに格納されているプログラムをRAM10dのプログラム領域10daに書き込む。同様にCPU10aは、補助記憶装置10fのデータ領域10fbに格納されている各種データを、RAM10dのデータ領域10dbに書き込む。そして、このプログラムやデータが書き込まれたRAM10d上のアドレスがCPU10aのレジスタ10acに格納される。CPU10aの制御部10abは、レジスタ10acに格納されたこれらのアドレスを順次読み出し、読み出したアドレスが示すRAM10d上の領域からプログラムやデータを読み出し、そのプログラムが示す演算を演算部10abに順次実行させ、その演算結果をレジスタ10acに格納していく。このような構成により、図1から図4に例示した秘密計算装置1~4および各実施例における秘密計算装置の機能構成が実現される。
上述のプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体の例は非一時的な(non-transitory)記録媒体である。このような記録媒体の例は、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等である。
このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。上述のように、このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
各実施形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
なお、本発明は上述の実施形態に限定されるものではない。例えば、具体例を示した以外の初等関数を秘密計算を行う場合に本発明が用いられてもよい。また、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
本発明は、例えば、データを秘匿化しつつ秘密計算で行う機械学習やデータマイニングでの逆数関数、平方根関数、指数関数、対数関数などの初等関数の計算に利用できる。
1~4 秘密計算装置

Claims (8)

  1. x,y,zが実数であり、a,b,c,δ,ζが実数係数であり、・の秘密分散値が[・]であり、
    前記実数xの秘密分散値[x]を用いた秘密計算によって秘密分散値[y]=[δx+ax]を得る第1秘密計算部と、
    前記秘密分散値[x]および前記秘密分散値[y]を用いた秘密計算によって前記実数xの初等関数近似値z=func(x)の秘密分散値[func(x)]=[y(ζy+b)+cx]を得て出力する第2秘密計算部と、
    を有する秘密計算装置。
  2. x,y,z,wが実数であり、a,b,c,d,f,g,α,β,γ,δ,ζが実数係数であり、・の秘密分散値が[・]であり、
    前記実数xの秘密分散値[x]を用いた秘密計算によって秘密分散値[y]=[δx+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秘密計算部と
    を有する秘密計算装置。
  3. x,y,zが実数であり、a,b,c,γ,δ,ζが実数係数であり、・の秘密分散値が[・]であり、
    前記実数xの秘密分散値[x]を用いた秘密計算によって秘密分散値[y]=[δx+ax]を得る第1秘密計算部と、
    前記秘密分散値[x]および前記秘密分散値[y]を用いた秘密計算によって前記実数xの初等関数近似値z=func(x)の秘密分散値[func(x)]=[γ(y(ζy+b)+cx)]を得て出力する第2秘密計算部と、
    を有する秘密計算装置。
  4. 請求項1から3の何れかの秘密計算装置であって、
    χが実数であり、pが正整数であり、Lが2以上の整数であり、[・]がpを法とした剰余環上の要素・を線形秘密分散した秘密分散値であり、{・}が2を法とした剰余環上の要素・を線形秘密分散した秘密分散値であり、
    前記実数χの秘密分散値[χ]を用いた秘密計算によって前記実数χのLビット表現χ…χL-1の秘密分散値{χ},…,{χL-1}を得る第5秘密計算部と、
    前記秘密分散値{χ},…,{χL-1}を用いた秘密計算によって、ビット列χ…χL-1の最上位ビットχmsbに対応するビットηmsbが1であり、前記ビットηmsb以外のビットηξ(ξ∈{0,…,L-1})が0であるmsbフラグ列η,…,ηL-1の秘密分散値{η},…,{ηL-1}を得る第6秘密計算部と、
    前記秘密分散値{χ},…,{χL-1}を用いた秘密計算によって、0≦i<L-1における秘密分散値{ρ}={ρi+1∨χ}および秘密分散値{ρL-1}={χL-1}を得る第7秘密計算部と、
    前記秘密分散値{ρ},…,{ρL-1}を用いた秘密計算によって、ρ,…,ρL-1のうち1である要素の個数を表すカウント値θの秘密分散値[θ]を得る第8秘密計算部と、
    前記秘密分散値{η},…,{ηL-1}を用いた秘密計算によって前記msbフラグ列η,…,ηL-1をビット結合したmsbフラグ値ν=η…ηL-1の秘密分散値[ν]を得る第9秘密計算部と、
    前記秘密分散値[χ]および前記秘密分散値[ν]を用いた秘密計算によって秘密分散値[x]=[χ][ν]を得る第10秘密計算部と、
    前記秘密分散値[func(x)]および前記秘密分散値[θ]を用いた秘密計算によって[log χ]=[func(x)]-[θ]を得て出力する第11秘密計算部と、
    を有する秘密計算装置。
  5. x,y,zが実数であり、a,b,c,δ,ζが実数係数であり、・の秘密分散値が[・]であり、
    第1秘密計算部が、前記実数xの秘密分散値[x]を用いた秘密計算によって秘密分散値[y]=[δx+ax]を得る第1秘密計算ステップと、
    第2秘密計算部が、前記秘密分散値[x]および前記秘密分散値[y]を用いた秘密計算によって前記実数xの初等関数近似値z=func(x)の秘密分散値[func(x)]=[y(ζy+b)+cx]を得て出力する第2秘密計算ステップと、
    を有する秘密計算方法。
  6. x,y,z,wが実数であり、a,b,c,d,f,g,α,β,γ,δ,ζが実数係数であり、・の秘密分散値が[・]であり、
    第1秘密計算部が、前記実数xの秘密分散値[x]を用いた秘密計算によって秘密分散値[y]=[δx+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秘密計算ステップと
    を有する秘密計算方法。
  7. x,y,zが実数であり、a,b,c,γ,δ,ζが実数係数であり、・の秘密分散値が[・]であり、
    第1秘密計算部が、前記実数xの秘密分散値[x]を用いた秘密計算によって秘密分散値[y]=[δx+ax]を得る第1秘密計算ステップと、
    第2秘密計算部が、前記秘密分散値[x]および前記秘密分散値[y]を用いた秘密計算によって前記実数xの初等関数近似値z=func(x)の秘密分散値[func(x)]=[γ(y(ζy+b)+cx)]を得て出力する第2秘密計算ステップと、
    を有する秘密計算方法。
  8. 請求項1から4の何れかの秘密計算装置としてコンピュータを機能させるためのプログラム。
JP2021572126A 2020-01-20 2020-01-20 秘密計算装置、秘密計算方法、およびプログラム Active JP7290177B2 (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019225531A1 (ja) 2018-05-25 2019-11-28 日本電信電話株式会社 秘密一括近似システム、秘密計算装置、秘密一括近似方法、およびプログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019225531A1 (ja) 2018-05-25 2019-11-28 日本電信電話株式会社 秘密一括近似システム、秘密計算装置、秘密一括近似方法、およびプログラム

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
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