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

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

Info

Publication number
JP7047764B2
JP7047764B2 JP2018541929A JP2018541929A JP7047764B2 JP 7047764 B2 JP7047764 B2 JP 7047764B2 JP 2018541929 A JP2018541929 A JP 2018541929A JP 2018541929 A JP2018541929 A JP 2018541929A JP 7047764 B2 JP7047764 B2 JP 7047764B2
Authority
JP
Japan
Prior art keywords
multiplication
triplet
secret
verification
fraud
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
JP2018541929A
Other languages
English (en)
Other versions
JPWO2018061391A1 (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Publication of JPWO2018061391A1 publication Critical patent/JPWO2018061391A1/ja
Application granted granted Critical
Publication of JP7047764B2 publication Critical patent/JP7047764B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/032Protect output to user by software means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Description

本発明は、秘密計算システム、秘密計算装置、秘密計算方法および秘密計算プログラムに関する。
上記技術分野において、非特許文献1および非特許文献2には、参加者の悪意ある振る舞いを考慮せずに、秘密分散された値やビットを秘密加算および秘密乗算する技術が開示されている。非特許文献3には、参加者の悪意ある振る舞いを考慮した秘密計算の検証技術が開示されている
Tal Rabin, Michael Ben-Or: Verifiable Secret Sharing and Multiparty Protocols with Honest Majority (Extended Abstract). STOC 1989: 73-85 Oded Goldreich, Ronen Vainish: How to Solve any Protocol Problem - An Efficiency Improvement. CRYPTO 1987: 73-86 Yehuda Lindelly, Ben Rivay: Cut-and-Choose Based Two-Party Computation in the Online/Oine and Batch Settings, CRYPTO 2014: 73-86
しかしながら、上記非特許文献3に記載の技術では、秘密計算の検証精度を上げるには処理量が大きくなってしまう。したがって、処理量を少なく保ったまま、参加者の悪意のある振る舞いに対して秘密を守ることができなかった。
本発明の目的は、上述の課題を解決する技術を提供することにある。
上記目的を達成するため、本発明に係る秘密計算装置は、
2つの秘密分散したランダム数と、該2つの秘密分散したランダム数を秘密乗算した乗算結果の分散値と、の組からなる第1乗算トリプレット列を生成する第1乗算トリプレット列生成手段と、
前記第1乗算トリプレット列からランダムに選択された所定数の乗算トリプレットから不正を検証する乗算トリプレット検証手段と、
セミオネスト安全な秘密乗算における各乗算処理における2つの秘密分散した入力数と、該2つの秘密分散した入力数を秘密乗算した乗算結果の分散値と、の組からなる第2乗算トリプレット列を生成する第2乗算トリプレット列生成手段と、
前記乗算トリプレット検証手段により不正が発見されなかった場合に、前記第2乗算トリプレット列に対応する数の乗算トリプレットを前記第1乗算トリプレット列からランダムに選択して乗算トリプレットの組を生成して秘密乗算の正当性を検証する乗算正当性検証手段と、
を備え、
前記乗算トリプレット検証手段は、
前記第1乗算トリプレット列からランダムに第1数の乗算トリプレットをサンプリングして、前記サンプリングされた乗算トリプレットに基づいて不正を検証する第1トリプレット検証手段と、
前記第1トリプレット検証手段により不正が発見されなかった場合に、サンプリングされなかった乗算トリプレットにより少なくとも2列を有するランダムな行列を生成し、前記乗算トリプレットによるランダムな行列に基づいて不正を検証する第2トリプレット検証手段と、
を有する。
上記目的を達成するため、本発明に係る秘密計算装置の秘密計算方法は、
第1乗算トリプレット列生成手段が、2つの秘密分散したランダム数と、該2つの秘密分散したランダム数を秘密乗算した乗算結果の分散値と、の組からなる第1乗算トリプレット列を生成する第1乗算トリプレット列生成ステップと、
乗算トリプレット検証手段が、前記第1乗算トリプレット列からランダムに選択された所定数の乗算トリプレットから不正を検証する乗算トリプレット検証ステップと、
第2乗算トリプレット列生成手段が、セミオネスト安全な秘密乗算における各乗算処理における2つの秘密分散した入力数と、該2つの秘密分散した入力数を秘密乗算した乗算結果の分散値と、の組からなる第2乗算トリプレット列を生成する第2乗算トリプレット列生成ステップと、
乗算正当性検証手段が、前記乗算トリプレット検証ステップにおいて不正が発見されなかった場合に、前記第2乗算トリプレット列に対応する数の乗算トリプレットを前記第1乗算トリプレット列からランダムに選択して乗算トリプレットの組を生成して秘密乗算の正当性を検証する乗算正当性検証ステップと、
を含み、
前記乗算トリプレット検証ステップは、
前記第1乗算トリプレット列からランダムに第1数の乗算トリプレットをサンプリングして、前記サンプリングされた乗算トリプレットに基づいて不正を検証する第1トリプレット検証ステップと、
前記第1トリプレット検証ステップにおいて不正が発見されなかった場合に、サンプリングされなかった乗算トリプレットにより少なくとも2列を有するランダムな行列を生成し、前記乗算トリプレットによるランダムな行列に基づいて不正を検証する第2トリプレット検証ステップと、
を含む。
上記目的を達成するため、本発明に係る秘密計算プログラムは、
2つの秘密分散したランダム数と、該2つの秘密分散したランダム数を秘密乗算した乗算結果の分散値と、の組からなる第1乗算トリプレット列を生成する第1乗算トリプレット列生成ステップと、
前記第1乗算トリプレット列からランダムに選択された所定数の乗算トリプレットから不正を検証する乗算トリプレット検証ステップと、
セミオネスト安全な秘密乗算における各乗算処理における2つの秘密分散した入力数と、該2つの秘密分散した入力数を秘密乗算した乗算結果の分散値と、の組からなる第2乗算トリプレット列を生成する第2乗算トリプレット列生成ステップと、
前記乗算トリプレット検証ステップにおいて不正が発見されなかった場合に、前記第2乗算トリプレット列に対応する数の乗算トリプレットを前記第1乗算トリプレット列からランダムに選択して乗算トリプレットの組を生成して秘密乗算の正当性を検証する乗算正当性検証ステップと、
秘密計算装置のコンピュータに実行させる秘密計算プログラムであって、
前記乗算トリプレット検証ステップにおいては、
前記第1乗算トリプレット列からランダムに第1数の乗算トリプレットをサンプリングして、前記サンプリングされた乗算トリプレットに基づいて不正を検証する第1トリプレット検証ステップと、
前記第1トリプレット検証ステップにおいて不正が発見されなかった場合に、サンプリングされなかった乗算トリプレットにより少なくとも2列を有するランダムな行列を生成し、前記乗算トリプレットによるランダムな行列に基づいて不正を検証する第2トリプレット検証ステップと、
を前記秘密計算装置のコンピュータに実行させる
上記目的を達成するため、本発明に係る秘密計算システムは、
複数の秘密計算装置が互いに通信接続されて、前記複数の秘密計算装置に秘密分散された数を協働して秘密計算する秘密計算システムであって、
前記複数の秘密計算装置の少なくとも1つの秘密計算装置が、
2つの秘密分散したランダム数と、該2つの秘密分散したランダム数を秘密乗算した乗算結果の分散値と、の組からなる第1乗算トリプレット列を生成する第1乗算トリプレット列生成手段と、
前記第1乗算トリプレット列からランダムに選択された所定数の乗算トリプレットから不正を検証する乗算トリプレット検証手段と、
セミオネスト安全な秘密乗算における各乗算処理における2つの秘密分散した入力数と、該2つの秘密分散した入力数を秘密乗算した乗算結果の分散値と、の組からなる第2乗算トリプレット列を生成する第2乗算トリプレット列生成手段と、
前記乗算トリプレット検証手段により不正が発見されなかった場合に、前記第2乗算トリプレット列に対応する数の乗算トリプレットを前記第1乗算トリプレット列からランダムに選択して乗算トリプレットの組を生成して秘密乗算の正当性を検証する乗算正当性検証手段と、
を備え
前記乗算トリプレット検証手段は、
前記第1乗算トリプレット列からランダムに第1数の乗算トリプレットをサンプリングして、前記サンプリングされた乗算トリプレットに基づいて不正を検証する第1トリプレット検証手段と、
前記第1トリプレット検証手段により不正が発見されなかった場合に、サンプリングされなかった乗算トリプレットにより少なくとも2列を有するランダムな行列を生成し、前記乗算トリプレットによるランダムな行列に基づいて不正を検証する第2トリプレット検証手段と、
を有する。
本発明によれば、秘密計算において、処理量を少なく保ったまま、参加者の悪意のある振る舞いに対して秘密を守ることができる。
本発明の第1実施形態に係る秘密計算装置の構成を示すブロック図である。 本発明の第2実施形態に係る秘密計算装置の機能構成を示すブロック図である。 本発明の第2実施形態に係る秘密計算装置を含む秘密計算システムの構成を示すブロック図である。 本発明の第2実施形態に係る乗算トリプレット列生成部の機能構成を示すブロック図である。 本発明の第2実施形態に係るサンプリング検証部の機能構成を示すブロック図である。 本発明の第2実施形態に係るバケット検証部の機能構成を示すブロック図である。 本発明の第2実施形態に係るセミオネスト計算部の機能構成を示すブロック図である。 本発明の第2実施形態に係る乗算正当性検証部の機能構成を示すブロック図である。 本発明の第2実施形態に係る秘密計算終了処理部の機能構成を示すブロック図である。 本発明の第2実施形態に係る秘密計算装置のハードウェア構成を示すブロック図である。 本発明の第2実施形態に係る秘密乗算検証用パラメータの内容を示す図である。 本発明の第2実施形態に係る秘密計算装置の処理手順を示すフローチャートである。 本発明の第2実施形態に係るセミオネスト計算処理および乗算正当性検証処理の手順を示すフローチャートである。 本発明の第3実施形態に係る秘密計算装置の機能構成を示すブロック図である。 本発明の第4実施形態に係る秘密計算装置の機能構成を示すブロック図である。
以下に、図面を参照して、本発明の実施の形態について例示的に詳しく説明する。ただし、以下の実施の形態に記載されている構成要素は単なる例示であり、本発明の技術範囲をそれらのみに限定する趣旨のものではない。なお、本明細書において、「秘密計算」とは、複数の秘密計算装置が互いに通信を介しながら計算することで与えられた関数の出力を計算する場合に、これらのいずれの秘密計算装置も十分な数の多装置間で互いに扱うデータを共有しない限り、関数への入力や出力に関する情報を得ることができない計算方法である。また、「秘密加算」は「秘密計算」中の加算を、「秘密乗算」は「秘密計算」中の乗算を示す。
[第1実施形態]
本発明の第1実施形態としての秘密計算装置100について、図1を用いて説明する。秘密計算装置100は、秘密分散された値やビットを秘密加算および秘密乗算する装置である。
図1に示すように、秘密計算装置100は、第1乗算トリプレット列生成部101と、第2乗算トリプレット列生成部102と、乗算正当性検証部103と、を含む。第1乗算トリプレット列生成部101は、2つの秘密分散したランダム数と、2つの秘密分散したランダム数を秘密乗算した乗算結果の分散値と、の組からなる第1乗算トリプレット列111を生成する。第2乗算トリプレット列生成部102は、セミオネスト安全な秘密乗算における各乗算処理における2つの秘密分散した入力数と、2つの秘密分散した入力数を秘密乗算した乗算結果の分散値と、の組からなる第2乗算トリプレット列121を生成する。乗算正当性検証部103は、第2乗算トリプレット列121に対応する数の乗算トリプレット列を第1乗算トリプレットからランダムに選択して乗算トリプレットの組131を生成して秘密乗算の正当性を検証する。
本実施形態によれば、セミオネスト安全な秘密乗算を行なった結果を用いて秘密乗算の正当性を検証するので、秘密計算において、処理量を少なく保ったまま、参加者の悪意のある振る舞いに対して秘密を守ることができる。
[第2実施形態]
次に、本発明の第2実施形態に係る秘密計算装置について説明する。本実施形態においては、第1乗算トリプレット列からランダムに選択された所定数の乗算トリプレットから不正を検証する乗算トリプレット検証部を有し、乗算トリプレット検証部により不正が発見されなかった場合に、秘密乗算の正当性を検証する。この乗算トリプレット検証部は、第1乗算トリプレット列からランダムに第1数の乗算トリプレットをサンプリングして、サンプリングされた乗算トリプレットに基づいて不正を検証するサンプリング検証部を有する。ここで、第1数は、サンプリング検証部が不正を検証する精度に対応して設定される。また、乗算トリプレット検証部は、サンプリング検証部により不正が発見されなかった場合に、サンプリングされなかった乗算トリプレットにより少なくとも2列を有するランダムな行列を生成し、乗算トリプレットによるランダムな行列に基づいて不正を検証するバケット検証部を有する。ここで、行列の列数は、バケット検証部が不正を検証する精度に対応して設定される。
《前提技術の説明》
以下、本実施形態を理解するための前提技術について説明する。まず、非特許文献1~3の開示技術を説明する。
[非特許文献1]
非特許文献1の方法では、ある体上の値である秘密Sを、この体上の多項式FでF(0)=Sとなるものを使って複数の装置に分散する。装置の数をN、装置の個数がK未満であれば関数の入力や出力に関する情報を得ることができないとする。このような技術を秘密分散という。装置ごとに異なるこの体上の値が割り当てられているとし、装置iに割り当てられている体の値をX[i]とする。秘密Aをこれら複数の装置に分散する時、各i番目の装置にはF(0)=Aなるランダムに選ばれたK-1次多項式Fに関する、F[i]:=F(X[i])を配る。秘密Bに関しても同様にG(0)=BなるK-1次多項式Gに関する、G[i]:=G(X[i])を各i番目の装置に配る。秘密はK個以上の装置が集まればK-1次多項式を解くことが可能で、FやGの係数を求めることができ、F(0)やG(0)を計算することが可能になる。
(A+B)の分散した値を計算するには、各i番目の装置はH[i]=F[i]+G[i]を計算する。この値はFとGのそれぞれ対応する係数を足したものを係数とする多項式Hに、X[i]を代入して得られたものH(X[i])であるので、AやBと同様にA+Bを複数の装置で分散したものとなる。AやBの場合と同様に、K個以上の装置が集まればK-1次多項式を解くことが可能で、Hの係数を求めることができ、H(0)を計算することが可能になる。
K*2≦N+1 の場合は、(A*B)の分散した値を計算するには、各i番目の装置は H[i]=F[i]*G[i]を計算する。この値は2K次多項式H(X)=F(X)*G(X)、X[i]を代入して得られたものH(X[i])であるので、AやBと同様に(A*B)を複数の装置で分散したものとなる。ただし、AやBの場合とは異なりHの次数は2Kとなるので、2K個以上の装置が集まれば2K次多項式を解くことが可能で、Hの係数を求めることができ、H(0)を計算することが可能になる。(A*B)の分散方法はAやBとは分散のされ方が異なる。これを同様に、K-1次多項式を用いた形で分散するには、それぞれi番目の装置がH[i]からK-1次多項式Gを生成して、他のそれぞれj番目の装置にG(X[j])を配ることでなされる。このようにして、加算と乗算からなる全ての関数を計算することができる。
[非特許文献2]
非特許文献2には、装置の数が2つの場合の方法に関する記述がある。この方法では2つの装置がビット、すなわちGF(2)上のある要素bを分散して保持する場合は b+c=b mod 2 となるbとcを、それぞれの装置で分けて保持する。この様な方法を使うとあるビットAとあるビットBを装置1と装置2で分散する場合、A=C+D mod 2, B=E+F mod 2として、装置1はCとEを、装置2はDとFを保持する。この時、AとBの排他的論理和Gは G=A+B mod 2となり、これらの装置1と装置2との分散はそれぞれ、H=C+E mod 2とJ=D+F mod 2 とすることができる。それぞれの装置は他の装置と通信することなく、軽い計算で分散された2つの値の排他的論理和の分散が計算できたことになる。
同様にAとBが分散されて保持しているとき、この2つのビットの論理積 K=A・Bのそれぞれの分散、すなわち L+M=K mod 2なるLとMを、装置1がLを装置2がMを得るように行うには、次のようにする。装置1はLをランダムに生成する。この時、M=(C+D)・(E+F)=L mod 2 であるので、装置2が持つ値DとFに応じて、装置AがMの値を知らずに装置に、(D,F)=(0,0)ならM=(C+0)・(E+0)+L mod 2 を、(D,F)=(0,1)ならM=(C+0)・(1+E)+L mod 2 を、(D,F)=(1,0)ならM=(1+C)・(E+0)+L mod 2 を、(D,F)=(1,1)ならM=(1+C)・(1+E)+L mod 2 を返す。装置2の入力に依存する値を装置1が装置2に送付する、装置1が装置2の入力を知ることができない方法は装置1と装置2との間の紛失通信(oblivious transfer)と呼ばれる技術で実現されるが、一般に両者に多くの計算と通信を要求する。
[非特許文献3]
非特許文献1および非特許文献2は、各装置が正直に振る舞うことを前提としていた。しかし、非特許文献3には、一定数以上の装置が正直に振る舞えば、その他の装置が悪意を持って振る舞っても(互いに通信する時に正しい値を他者に送らないなど)、安全性が保たれる方法(すなわち、偽の値を送ることで他者の持つ秘密を得ることができない)が記述されている。
非特許文献3においては、例えば、準備された多くの回路を複数の小バケットに割り当てることによって、秘密乗算の正当性を検証する幾つかの方法が記載されている。
(非特許文献の課題)
非特許文献1および非特許文献2は、参加者が正直であることを前提にしているので、参加者の悪意ある振る舞いに対して秘密を守ることができないという問題である。また、非特許文献3は、秘密計算の検証精度を上げるには処理量が大きくなってしまので、参加者の悪意ある振る舞いに対して秘密を守るには処理量が大きいことが問題である。
次に、本実施形態において利用される前提技術について説明する。
[(t,n)秘密分散]
n個の装置P(1), P(2),…,P(n)がある。Rを加算と乗算が定義されるある環とする。関数SecretShare()を、Rの要素が与えられた時、n個のシェアと呼ばれる値を出力する関数とする。
XをRの要素とするとき、(x(1),…,x(n))=SecretShare(x) と記すとする。このとき、(x(1),…,x(n))は、xを(t,n)秘密分散した結果のシェアと呼び、次の性質を満たす。
1.関数Recover()が存在し、n個のシェアから任意のt個を選び、これをRecoverに入力すると、xを得ることができる。
2.(t-1)未満個のシェアからはxを復元することは困難である。
xが(t,n)秘密分散されているとは、i=1,…,nに関して、P(i)がx(i)を保持していることを言う。これを[x]と表す。
xの(2,3)秘密分散を例とし、SecretShare()の入力をxとする。乱数a(1),a(2)をランダムに選び、a(3)=0-a(1)-a(2)とし、(2,3)秘密分散はそれぞれ、x(1)=(a(1),a(3)-x)、x(2)=(a(2),a(1)-x)、x(3)=(a(3),a(2)-x))とする。
[セミオネスト復元]
秘密分散[x]から一部ないしは全ての参加者が関与して、それぞれがxを得る処理を復元と呼ぶ。復元に関与した全ての参加者が正直にこの処理を実行した場合、この参加者全てが正しい復元結果を得られる場合、セミオネスト復元と呼ぶ。
(2,3)秘密分散の例において、全ての参加者が関与した場合のけるセミオネスト復元の例を挙げる。[x]は先の例に従い、x(1)=(a(1),a(3)-x)、x(2)=(a(2),a(1)-x)、x(3)=(a(3),a(2)-x)と秘密分散されているとする。
P(1)はP(2)にa(1)を送る。P(2)はP(3)にa(2)を送る。P(3)はP(1)にa(3)を送る。そして、P(1)はa(3)-(a(3)-x)=xを計算する。P(2)はa(1)-(a(1)-x)=xを計算する。P(3)はa(2)-(a(2)-x)=xを計算する。
[セミオネスト秘密計算]
(秘密加算)
[x],[y]が与えられた時、P(1),…,P(n)は互いに通信することなく、それぞれ自身のシェアを使って計算する事で、[z]=[x+y]を計算することができるとする。全ての参加者が正直にこの計算を実行している限り、どのt未満の数の参加者が自身の知識を共有しても、x,y,zに関する新たな知識を得ることができないものとする。この処理を、[z]=[x]+[y]と表現し、秘密計算の加算と呼ぶ。
例えば、xとyが(2,3)秘密分散されていて、P(1)のxのシェアが(x(11),x(12))で、P(2)のxのシェアが(x(21),x(22))で、P(3)のxのシェアが(x(31),x(32))とし、P(1)のyのシェアが(y(11),y(12))で、P(2)のyのシェアが(y(21),y(22))で、P(3)のyのシェアが(y(31),y(32))であるとする。
この時、P(1)の(x+y)のシェアは(x(11)+y(11),x(12)+y(12))、P(2)の(x+y)のシェアは(x(21)+y(21),x(22)+y(22))、P(3)の(x+y)のシェアは(x(31)+y(31),x(32)+y(32))と計算できる。例えば、P(3)がP(1)にx(31)+y(31)=a(3)+b(3)を送ると、P(1)はx(31)+y(31)-{x(12)+y(12)}=a(3)+b(3)-{a(3)-x+b(3)-y}=x+y、をセミオネスト復元できる。
また、[x]と全ての装置が知るyが与えられた時、P(1),…,P(n)は互いに通信することなく、それぞれ自身のシェアを使って計算する事で、[z]=[x+y]を計算する事ができるとする。この処理を、[z]=[x]+yあるいは[z]=y+[x]と表現し、秘密計算の局所的な加算と呼ぶ。
例えば、xとyが(2,3)秘密分散されていて、P(1)のxのシェアが(x(11),x(12))で、P(2)のxのシェアが(x(21),x(22))で、P(3)のxのシェアが(x(31),x(32))とする。この時、P(1)の(x+y)のシェアは(x(11),x(12)-y)、P(2)の(x+y)のシェアは(x(21),x(22)-y)、P(3)の(x+y)のシェアは(x(31),x(32)-y)と計算できる。例えば、P(3)がP(1)にx(31)=a(3)を送ると、P(1)はx(31)-{x(12)-y}=a(3)-{a(3)-x-y}=x+y、をセミオネスト復元できる。
(秘密乗算)
[x]と全ての装置が知るyが与えられた時、P(1),…,P(n)は互いに通信することなく、それぞれ自身のシェアを使って計算することで、[z]=[x・y]を計算する事ができるとする。この処理を、[z]=[x]・yあるいは[z]=y・[x]と表現し、秘密計算の局所的な乗算と呼ぶ。
例えば、各装置がxの自身のシェアにyを乗じれば良く、P(1)の(x*y)のシェアは(x(11)*y,x(12)*y)、P(2)の(x*y)のシェアは(x(21)*y,x(22)*y)、P(3)の(x*y)のシェアは(x(31)*y,x(32)*y)と計算できる。例えば、P(3)がP(1)にx(31)*y=a(3)*yを送ると、P(1)はx(31)*y-{x(12)*y}=a(3)*y-{a(3)-x}*y=x*y、をセミオネスト復元できる。
[x] ,[y] が与えられた時、P(1),…,P(n)は互いに通信することとそれぞれ自身のシェアを使って計算する事で、[z]=[x・y]を計算することができるとする。ここで「・」は乗算を表すとする。全ての参加者が正直にこの計算を実行している限り、どのt未満の数の参加者が自身の知識を共有しても、x,y,zに関する新たな知識を得ることができないものとする。この処理を[z]=[x]*[y]と表現し、セミオネスト安全な秘密計算の乗算と呼ぶ。
例えば、xとyが(2,3)秘密分散されていて、P(1)のxのシェアが(x(11),x(12))で、P(2)のxのシェアが(x(21),x(22))で、P(3)のxのシェアが(x(31),x(32))とし、P(1)のyのシェアが(y(11),y(12))で、P(2)のyのシェアが(y(21),y(22))で、P(3)のyのシェアが(y(31),y(32))であるとする。
この時、次のようにして、P(1)の(x・y)のシェア、P(2)の(x・y)のシェア、P(3)の(x・y)のシェアが計算できる。r(1)+r(2)+r(3)=0 となるようなr(1),r(2),r(3)があり、P(1)がr(1)を、P(2)がr(2)をP(3)がr(3)を保持しているとする。
P(1)はt(1)=(-x(11)y(11)+x(12)y(12)-r(1))/3を計算し、t(1)をP(2)に送る。P(2)はt(2)=(-x(21)y(21)+x(22)y(22)-r(2))/3を計算し、t(2)をP(3)に送る。P(3)はt(3)=(-x(31)y(31)+x(32)y(32)-r(3))/3を計算し、t(3)をP(1)に送る。
P(1)は(x・y)のシェアを、(t(3)-t(1),-2t(3)-t(1))とする。P(2)は(x・y)のシェアを、(t(1)-t(2),-2t(1)-t(2))とする。P(3)は(x・y)のシェアを、(t(2)-t(3),-2t(2)-t(3))とする。
例えば、P(3)がP(1)にt(2)-t(3)={(-x(21)y(21)+x(22)y(22)-r(2))/3}-{(-x(31)y(31)+x(32)y(32)-r(3))/3}を送ると、P(1)は、
t(2)-t(3)-{-2t(3)-t(1)}=t(1)+t(2)+t(3)
={(-x(11)y(11)+x(12)y(12)-r(1))/3}+{(-x(21)y(21)+x(22)y(22)-r(2))/3}+{(-x(31)y(31)+x(32)y(32)-r(3))/3}
={((-a(1)b(1)+(a(1)-x)(b(1)-y)-r(1))/3}+{((-a(2)b(2)+(a(2)-x)(b(2)-y)-r(2))/3}+{((-a(3)b(3)+(a(3)-x)(b(3)-y)-r(3))/3}
={(-b(1)x-a(1)y+x・y-r(1))/3}+{(-b(2)x-a(2)y+x・y-r(2))/3}+{(-b(3)x-a(3)y+x・y-r(3))/3}
=-{(b(1)+b(2)+b(3)}x/3-{a(1)+a(2)+a(3)y/3}+x・y-{r(1)+r(2)+r(3)}
=x・y、をセミオネスト復元できる。
《本実施形態の説明》
上記前提技術を参照しながら、本実施形態の秘密計算装置の構成および動作を詳細に説明する。
《秘密計算装置の機能構成》
図2は、本実施形態に係る秘密計算装置200の機能構成を示すブロック図である。
秘密計算装置200は、通信制御部201と、乗算トリプレット列生成部202と、サンプリング検証部203と、バケット検証部204と、セミオネスト計算部205と、乗算正当性検証部206と、秘密計算終了処理部207と、を備える。
通信制御部201は、他の秘密計算装置、または、秘密分散装置などとのネットワークを介した通信を制御する。乗算トリプレット列生成部202は、第1乗算トリプレット列生成部101に相当し、2つの秘密分散したランダム数と、2つの秘密分散したランダム数を秘密乗算した乗算結果の分散値と、の組からなる乗算トリプレット列を生成する。サンプリング検証部203は、第1トリプレット検証部に相当し、乗算トリプレット列からランダムに所定数の乗算トリプレットをサンプリングして、サンプリングされた乗算トリプレットに基づいて不正を検証する。バケット検証部204は、第2トリプレット検証部に相当し、サンプリング検証部203により不正が発見されなかった場合に、サンプリングされなかった乗算トリプレットにより少なくとも2列を有するランダムな行列を生成し、乗算トリプレットによるランダムな行列に基づいて不正を検証する。
セミオネスト計算部205は、第2乗算トリプレット列生成部102に相当し、セミオネスト安全な秘密乗算における各乗算処理における2つの秘密分散した入力数と、2つの秘密分散した入力数を秘密乗算した乗算結果と、の組からなる乗算トリプレット列を生成する。乗算正当性検証部206は、セミオネスト計算部205が生成した乗算結果の乗算トリプレット列と同数の乗算トリプレットを、バケット検証部204が生成した乗算トリプレットの行列からランダムに選択して、乗算トリプレットの組に基づいて乗算結果の正当性を検証する。秘密計算終了処理部207は、サンプリング検証部203、バケット検証部204および乗算正当性検証部206のいずれかが秘密計算中の不正を発見したら、秘密計算の終了処理を行なう。
なお、本実施形態においては、乗算正当性検証部206は、サンプリング検証部203およびバケット検証部204において不正を発見しなかった場合に、不正の検証を行ない、バケット検証部204は、サンプリング検証部203において不正を発見しなかった場合に、不正の検証を行なう。しかしながら、この関係に限定されない。また、本実施形態においては、バケット検証部204の生成する乗算トリプレットの行列は、サンプリングされなかった乗算トリプレットから生成するが、これに限定されない。
(秘密計算装置を含むシステム)
図3は、本実施形態に係る秘密計算装置200を含む秘密計算システム300の構成を示すブロック図である。
本実施形態の秘密計算システム300は、複数の秘密計算装置301~30nと、秘密分散装置310とが、ネットワーク320を介して通信接続され、秘密計算、特に秘密乗算は、複数の秘密計算装置301~30n間で協働して秘密情報の通信を行ないながら実現される。
(乗算トリプレット列生成)
図4は、本実施形態に係る乗算トリプレット列生成部202の機能構成を示すブロック図である。
乗算トリプレット列生成部202は、乱数保持部401と、乱数のシェア算出部402と、秘密分散生成部403と、乗算トリプレット生成部404と、を有する。乱数保持部401は、乱数のシェア算出部402で使用する乱数を保持する。乱数のシェア算出部402は、乱数保持部401が保持する乱数からハッシュ関数を使って、乱数のシェアを算出する。秘密分散生成部403は、乱数のシェアを使用して秘密分散を生成する。例えば、(LK+M)個の秘密分散値列a(j)、b(j)(1≦j≦LK+M)431、を生成する。乗算トリプレット生成部404は、[a(j)・b(j)]=[c(j)]となるc(j)を生成し、乗算トリプレット列{a(j),b(j),c(j)}(1≦j≦LK+M)441、を生成する。生成された乗算トリプレット{a(j),b(j),c(j)}は、サンプリング検証部203、バケット検証部204、乗算正当性検証部206において用いられる。
以下、本実施形態に係る乗算トリプレット列生成の一例を説明する。
ある環Rのランダムな要素rの秘密分散[r]を任意の個数作る方法があるとする。
例えば、(2,3)秘密分散の場合には、次のようにする。
P(1)は乱数S(3),S(1)を、P(2)は乱数S(1),S(2)を、P(3)は乱数S(2),S(3)をあらかじめ持つとする。Rの要素を出力するハッシュ関数Hash()を用いて、m番目の乱数の、P(1)のシェアを{Hash(S(3),m)-Hash(S(1),m)}、P(2)のシェアを{Hash(S(1),m)-Hash(S(2),m)}、P(3)のシェアを Hash(S(2),m)-Hash(S(3),m)、と計算すればよい。
次に、L,K,Mをある整数とし、N個の参加者は、ある環のランダムな要素の秘密分散を2(LK+M)個生成する。これらを[a(1)],[b(1)],[a(2)],[b(2)],…,[a(LK+M)],[b(LK+M)] とする。参加者は、全てのj=1,…,LK+M に関してセミオネスト安全な秘密計算の乗算[a(j)]*[b(j)]を実行することにより、[c(j)]=[a(j)・b(j)] を計算する。それぞれのjに関して、[a(j)],[b(j)],[c(j)]を乗算トリプレットと呼ぶ。
(乗算トリプレットのサンプリング検証)
図5は、本実施形態に係るサンプリング検証部203の機能構成を示すブロック図である。
サンプリング検証部203は、ランダムサンプリング部501と、トリプレット検証部502と、を有する。ランダムサンプリング部501は、乗算トリプレット生成部404が生成した乗算トリプレット列{a(j),b(j),c(j)}(1≦j≦LK+M)441から、ランダムにM個の乗算トリプレットをサンプリングし、乗算トリプレット列{a(j),b(j),c(j)}(1≦j≦M)521を生成する。そして、ランダムサンプリング部501は、サンプリングされなかったLK個の乗算トリプレットをバケット検証部204に送る。トリプレット検証部502は、乗算トリプレット列{a(j),b(j),c(j)}(1≦j≦M)521を用いて、トリプレットに誤りがあるかを判定して、不正のあり/なしを検証する。
以下、本実施形態に係る乗算トリプレットのサンプリング検証の一例を説明する。
LK+M個の乗算トリプレットからM個の乗算トリプレットをランダムに選び、全員あるいは一部の参加者でセミオネスト復元する。各参加者は選ばれたトリプレットに関して、すなわち、選ばれた複数のインデックスjに関して、a(j),b(j),c(j)を得る。これらのうち1つでもa(j)・b(j)=c(j)を満たさないものを発見した参加者がいた場合、乗算トリプレット生成に不正があったとして、プログラムを終了する。なお、(LK+M)個の乗算トリプレットから、上で選択して復元されたM個を除くLK個の乗算トリプレットを以降で利用する。
ここで、LKとMとをある程度大きくとれば、MがLKに比較してかなり小さくとも、LK個の乗算トリプレット中に、参加者が正直に生成していない乗算トリプレットが一定割合以上あり、かつ、復元処理で不正が発見されない確率は、かなり小さくなり、かなりの不正の検証が可能である。しかし、乗算トリプレットのサンプリング検証では不十分な不正の発見確率をさらに高めるために、次の乗算トリプレットのバケット検証が行なわれる。
(乗算トリプレットのバケット検証)
図6は、本実施形態に係るバケット検証部204の機能構成を示すブロック図である。
バケット検証部204は、サンプリング検証結果受信部601と、非サンプリングトリプレット受信部602と、トリプレット行列生成部603と、バケット検証処理部604と、を有する。サンプリング検証結果受信部601は、サンプリング検証部203からサンプリング検証の結果を受信する。そして、不正なしを受信した場合に、バケット検証部204を起動する。非サンプリングトリプレット受信部602は、サンプリング検証部203からサンプリングされなかったLK個の乗算サンプリングを受信して、乗算トリプレット列{a(j),b(j),c(j)}(1≦j≦LK)621を保持する。なお、非サンプリングトリプレット受信部602において、サンプリングされなかったLK個の乗算サンプリングは、乗算トリプレット列生成部202からの全乗算トリプレット列からサンプリングされたM個の乗算トリプレットを除くことで求めてもよい。
トリプレット行列生成部603は、非サンプリングトリプレット受信部602の乗算トリプレット列{a(j),b(j),c(j)}(1≦j≦LK)621から、ランダムにL行K列の乗算トリプレット行列Tr(p,q)={a(p,q),b(p,q),c(p,q)}(p=1,…,L、q=1,…,K)631を生成する。バケット検証処理部604は、L行K列の乗算トリプレット行列Tr(p,q)(p=1,…,L、q=1,…,K)631を用いて、バケット検証を実行する。
以下、本実施形態に係る乗算トリプレットのバケット検証の一例を説明する。
LK個の乗算トリプレットをランダムに並び替えて、L個の乗算トリプレットの列をK列生成する。すなわちp=1,…,L、q=1,…,K に関して、[a(p,q)],[b(p,q)],[c(p,q)]をそれぞれ、1,…,LKから選ばれたjに関する[a(j)],[b(j)],[c(j)]を割り当てる。
全てのp=1,…,Lに関して、以下の[大ループ終了]までの処理を実行する。
全てのq=2,..,Kに関して、以下の[小ループ終了]までの処理を実行する。
・[d(p,q)]=[a(p,1)]+[a(p,q)]および[e(p,q)]=[b(p,1)]+[b(p,q)]を秘密計算し、d(p,q)とe(p,q)とをセミオネスト復元する。
・f番目の参加者が得る復元結果をそれぞれ、d(p,q,f)とe(p,q,f)とする。
・f番目の参加者は、d(p,q)とe(p,q)としてd(p,q,f)とe(p,q,f)をそれぞれ用いて、次の秘密計算を行う。
[c'(p,q)]=[c(p,1)]-d(p,q)・e(p,q)+[a(p,q)]・e(p,q)+[b(p,q)]・d(p,q)-[c(p,q)]
[小ループ終了]
[大ループ終了]
全てのp=1,…,L、q=2,…,Kに関して、d(p,q,f)とe(p,q,f)とがfによって異ならないことを確認する。これは、例えば、次のようにして実施する。
全ての各f番目の参加者とf'番目の参加者の組み合わせに関して、全てのp=1,…,L、q=2,…,Kに関して、d(p,q,f)とd(p,q,f')が等しいことを確認する。
D(p,q,f)を、p=1,…,L、q=2,…,Kに関するd(p,q,f)を全て並べたものとする。各f番目の参加者とf'番目の参加者が両者のみに秘密の鍵Sを共有していて、それぞれ(S,D(p,q,f))のハッシュ値と(S,D(p,q,f'))のハッシュ値とを計算し、交換して同一であることを確認すればよい。
全てのp=1,…,L、q=2,…,Kに関して、[c'(p,q)]が0(ゼロ)の秘密分散であることを確認する。0でないものが含まれることが判明したら、不正が発見されたと判断してプログラムを終了する。
例えば、[c'(p,q)]を全てセミオネスト復元することでも確認することができる。
復元に必要な通信を省略したい場合は、例えば次のようにすることもできる。以下に、(3,2)秘密分散の場合の例を挙げる。
P(1)のx(p,q)のシェアが(x(11pq),x(12pqj))で、P(2)のx(p,q)のシェアが(x(21pq),x(22pq))で、P(3)のx(p,q)のシェアが(x(31pq),x(32pq))とすると、0が秘密分散されているならば、x(11pq)=x(22pq),x(21pq)=x(32pq),x(31pq)=x(12pq)となる。よって、P(1)とP(2)は互いに、p=1,…,L、q=2,…,Kに関してx(11pq)を並べたもののハッシュ値と、x(22pq)を並べたもののハッシュ値とをそれぞれ計算して交換して同一であることを比較すればよい。P(2)とP(3)に関してと、P(3)とP(1)に関しても同様に比較して確認すればよい。
上記の様に、各[c'(p,q)]が0の秘密分散であることを確認されると、[c(p,q)]=[a(p,q)]*[b(p,q)]と[c(1,q)]=[a(1,q)]*[b(1,q)]の両方が正しく計算されているか、あるいは両方とも誤って計算されていることが確認される。いずれも、既にある程度の高い確率で正しく計算されていることが保証されているため、この確認により、両方が正しく計算されていることがより高い確率で確認される。Kが大きければ大きいほどこの確認が繰り返されるため、[c(1,q)]=[a(1,q)]*[b(1,q)]が正しく計算されていることがより高い確率で確認される。この乗算トリプレットのバケット検証を含めなくとも、サンプリング確認により保証された割合で不正が発見されるため、高い確率で不正を発見しなくともよい場合は、この処理を除くことができる。
この様にして、Kを選ぶことで任意の高さの確立で正しいことが保証された乗算トリプレット[a(1,q)],[b(1,q)],[c(1,q)]の列を生成することができた。ここで、列の各要素はq=1,…,Kによる。
(セミオネスト回路計算)
図7は、本実施形態に係るセミオネスト計算部205の機能構成を示すブロック図である。
セミオネスト計算部205は、セミオネスト計算実行部701と、セミオネスト乗算トリプレット生成部702と、を有する。セミオネスト計算実行部701は、加算と乗算とを順に繋ぎ合わせて所望の秘密計算を実行する。なお、秘密分散された数の秘密計算では、秘密乗算(乗算回路ともいう)のみが複数の秘密計算装置間で情報の交換をするので、正当性を検証する対象は乗算処理のみでよい。セミオネスト計算実行部701の、例えば、乗算処理711、712、713、714、715、…、71Cを正当性検証の対象とする。セミオネスト乗算トリプレット生成部702は、例えば、乗算処理711~71CのC個のセミオネスト乗算に対応する乗算トリプレット列{x(w),y(w),z(w)=[X(w)・y(w)]}721を生成する。
以下、本実施形態に係るセミオネスト回路計算の一例を説明する。
乗算と加算から構成される回路が与えられたとする。この回路の入力が秘密分散されているとする。秘密計算の加算と、セミオネスト安全な秘密計算の乗算を、回路の入力から出力に向かって順番に適用することにより、出力結果の秘密分散が生成される。ここで、乗算は通信を必要とし、参加者が不正を働くと、正直に計算した参加者の秘密分散も正しい計算結果とならない可能性がある。
そこで、次のようにして、回路に含まれる全ての乗算が正しく実行されたことを検証する。
(乗算の正当性検証)
図8は、本実施形態に係る乗算正当性検証部206の機能構成を示すブロック図である。
乗算正当性検証部206は、乗算トリプレット選択部801と、乗算正当性検証処理部802と、を有する。乗算トリプレット選択部801は、バケット検証部204で生成されたL個の乗算トリプレットを受信し、L個の乗算トリプレットから乗算処理(乗算回路)の数であるC個と同数の乗算トレプレットをランダムに選択する。乗算正当性検証処理部802は、セミオネスト計算部205からのC個の乗算結果から生成された乗算トリプレットと、乗算トリプレット選択部801がランダムに選択したC個の乱数から生成された乗算トリプレットと、をランダムに組み合わせて、乗算トリプレット組の列{(x(w),y(w),z(w))、(a(w),b(w),c(w))}821を生成する。そして、乗算正当性検証処理部802は、バケット検証処理部604と同様の方法で、乗算正当性検証を行なう。
以下、本実施形態に係る乗算の正当性検証の一例を説明する。
回路を構成する乗算の個数をCとし、これらに1からCまでの順番をつける。各乗算には入力が2つあり、出力が1つあるが、w番目の乗算の入力を[x(w)],[y(w)]とし、その出力を[z(w)]とする。いくつかのwに関する[x(w)]と[y(w)]とは回路への入力であり、いくつかのwに関する[z(w)]は回路の出力である。
バケット検証処理で生成されたL個の乗算トリプレットの中からランダムにC個の乗算トリプレットを選び、さらに、これらの順序をランダムに並び替える。ここでは、C個の乗算トリプレットの順序をランダムに入れ替えたが、以下において、各ゲートに対して、L個の乗算トリプレットからランダムに選ばれた乗算トリプレットが割り当てられることのみが重要である。よって、各乗算ゲートを検証するたびに、L個からランダムに乗算トリプレットを1つ選ぶ処理でもよい。この回路自体の計算が終わった後にランダムに乗算トリプレットを選ばずに、あらかじめ決めておいた乗算トリプレットで回路の各ゲートの正当性検証を実施するならば、少ない確率であっても乗算トリプレットを発見されずに不正生成できる。この場合には、この乗算トリプレットで検証されるゲートを選んで不正な計算をすることができる。
この結果、でき上がった乗算トリプレットの列を、w=1,…,C に関する[a(w)],[b(w)],[c(w)] とする。全てのw=1,…,Cに関して、[d(w)]=[a(w)]+[x(w)]および[e(w)]=[b(w)]+[y(w)]を秘密計算し、d(w)とe(w)とをセミオネスト復元する。f番目の参加者が得る復元結果をそれぞれ、d(w,f)とe(w,f)とする。f番目の参加者は、d(w)とe(w)としてd(w,f)とe(w,f)をそれぞれ用いて、次の秘密計算を行う。
[c'(w)]=[c(w)]-d(w)・e(w)+[x(w)]・e(w)+[y(w)]・d(w)-[z(w)]
そして、全てのw=1,…,Cに関して、d(w,f)とe(w,f)とがfによって異ならないことを確認する。これは、例えば次のようにして実施する。
全ての各f番目の参加者とf'番目の参加者の組み合わせに関して、全てのw=1,…,Cに関してd(w,f)とd(w,f')が等しいことを確認する。
D(w,f)を、w=1,…,Cに関するd(w,f)を全て並べたものとする。各f番目の参加者とf'番目の参加者が両者のみに秘密の鍵Sを共有していて、それぞれ(S,D(w,f))のハッシュ値と(S,D(w,f’))のハッシュ値とを計算し、交換して同一であることを確認すればよい。
全てのw=1,…,Cに関して、[c'(w)]が0の秘密分散であることを確認する。例えばこれは、全てのi=1,…,L、j=2,…,Kに関して、[c'(i,j)]が0の秘密分散であることを確認する方法を上述したが、同様に行えばよい。0でないものが含まれることが判明したら、不正が発見されたと判断してプログラムを終了する。
ここで、秘密分散された値が0であるということは、[c(w)]=[a(w)]*[b(w)]と[z(w)]=[x(w)]*[y(w)]の両方が正しく計算されているか、あるいは両方とも誤って計算されていることが確認される。前者は、既にある程度高い確率で正しく計算されていることが保証されているため、この確認により、後者も正しく計算されていることが高い確率で確認される。この様にして、回路の各乗算が正しく秘密計算されたことが確認される。加算では、通信を使わず参加者は他の参加者に偽ったデータを送る機会はなく、不正を働くことはできない。よって、回路全体が正しく秘密計算されたことが検証されている。
(秘密計算終了処理)
図9は、本実施形態に係る秘密計算終了処理部207の機能構成を示すブロック図である。
秘密計算終了処理部207は、論理和(OR)901と、秘密計算終了指示部902と、を有する。論理和(OR)901は、サンプリング検証部203、バケット検証部204および乗算正当性検証部206からの「不正あり」の検証結果を入力し、その論理和を出力する。秘密計算終了指示部902は、サンプリング検証部203、バケット検証部204および乗算正当性検証部206のいずれかからの「不正あり」があれば、秘密計算終了の指示信号を、秘密計算装置200および他の秘密計算装置に報知する。
《秘密計算装置のハードウェア構成》
図10Aは、本実施形態に係る秘密計算装置200のハードウェア構成を示すブロック図である。
図10Aで、CPU(Central Processing Unit)1010は演算制御用のプロセッサであり、プログラムを実行することで図2の機能構成部を実現する。CPU1010は複数のプロセッサを有し、異なるプログラムやモジュール、タスク、スレッドなどを並行して実行してもよい。ROM(Read Only Memory)1020は、初期データおよびプログラムなどの固定データおよびプログラムを記憶する。ネットワークインタフェース1030は、ネットワークを介して、複数の秘密計算装置あるいは秘密分散装置との通信を制御する。
RAM(Random Access Memory)1040は、CPU1010が一時記憶のワークエリアとして使用するランダムアクセスメモリである。RAM1040には、本実施形態の実現に必要なデータを記憶する領域が確保されている。サンプリングされたトリプレット(M)1041は、サンプリング検証のためのサンプリングされたM個の乗算トリプレットである。サンプリング検証結果1042は、サンプリング検証による不正あり/不正なしのデータである。トリプレット行列(L×K)1043は、バケット検証のためのL行M列の乗算トリプレット行列である。バケット検証結果1044は、バケット検証による不正あり/不正なしのデータである。セミオネスト乗算のトリプレット(C)1045は、乗算正当性検証のためのC個のセミオネスト乗算に基づく乗算トリプレットである。トリプレット行列からのランダム選択トリプレット(C)1046は、トリプレット行列(L×K)1043からランダム選択されたC個の乗算トリプレットである。乗算正当性検証結果1047は、乗算正当性検証による不正あり/不正なしのデータである。秘密計算終了フラグ1048は、サンプリング検証結果1042、バケット検証結果1044および乗算正当性検証結果1047のいずれかで不正ありとなった場合に、秘密計算を終了するためのフラグである。秘密計算用領域1049は、秘密計算装置200が秘密計算をするために一時使用される領域である。
ストレージ1050は、データベースや各種のパラメータ、あるいは本実施形態の実現に必要な以下のデータまたはプログラムが記憶されている。乱数(乱数分散値)1051は、乗算トリプレット列を生成するために使用する乱数である。秘秘密乗算検証用パラメータ1059は、本実施形態で実施する秘密乗算検証のために設定される、あるいは、算出されるパラメータである。乗算トリプレット列(LK+M)441は、図4を参照して説明した乗算トリプレット列である。
ストレージ1050には、以下のプログラムが格納される。秘密計算制御プログラム1052は、秘密計算装置200による秘密計算を制御するプログラムである。秘密加算モジュール1053は、秘密分散数による秘密加算を行なうモジュールである。秘密乗算モジュール1054は、秘密分散数による秘密乗算を行なうモジュールである。乗算トリプレット列生成モジュール1055は、乱数に基づいて多数の乗算トリプレット列を生成するモジュールである。サンプリング検証モジュール1056は、乗算トリプレット列から乗算トリプレットをサンプリングして検証を行なうモジュールである。バケット検証モジュール1057は、乗算トリプレット列からサンプリングされなかった乗算トリプレットから乗算トリプレット行列を生成して検証を行なうモジュールである。乗算正当性検証モジュール1058は、セミオネスト乗算結果から生成された乗算トリプレットと、同数の乗算トリプレット行列からランダムに選択された乗算トリプレットとから、検証を行なうモジュールである。
なお、図10のRAM1040やストレージ1050には、秘密計算装置200が有する汎用の機能や他の実現可能な機能に関連するプログラムやデータは図示されていない。
(密乗算検証用パラメータ)
図10Bは、本実施形態に係る秘密乗算検証用パラメータ1059の内容を示す図である。秘密乗算検証用パラメータ1059は、乗算トリプレット生成、サンプリング検証、バケット検証、または、乗算正当性検証のために設定される、あるいは、算出されるパラメータである。なお、秘密乗算検証用パラメータ1059は、図10Bに限定されない。
秘密乗算検証用パラメータ1059は、秘密乗算条件1061、選択パラメータ1062、および、正当性検証結果1063を対応付けて格納、あるいは、学習のために蓄積する。秘密計算装置200は、秘密乗算検証用パラメータ1059を用いて、検証速度や検証精度により適切なパラメータを選択する。また、秘密計算装置200は、秘密乗算検証用パラメータ1059への蓄積情報から望ましいパラメータを選択したり、オペレータに通知したりする。
秘密乗算条件1061には、秘密乗算する数値の範囲、ビット幅、使用する秘密乗算用のアルゴリズム、目標とする正当性判定の精度、などが含まれる。また、選択パラメータ1062には、乱数から生成するトリプレット数(LK+M)、サンプリング検証におけるサンプリング数(M)、バケット検証におけるトリプレット行列の行数と列数(L行K列)、秘密演算処理での秘密乗算回数(C)、などが含まれる。また、正当性検証結果1063には、通信量を含む検証速度や正当性精度などが含まれる。
《秘密計算装置の処理手順》
図11は、本実施形態に係る秘密計算装置200の処理手順を示すフローチャートである。このフローチャートは、図10のCPU1010がRAM1040を用いて実行し、図2の機能構成部を実現する。
秘密計算装置200は、ステップS1101において、(LK+M)個の乗算トリプレット列を生成する。秘密計算装置200は、ステップS1103において、(LK+M)個の乗算トリプレット列からM個の乗算トリプレットをランダムにサンプリングして、秘密乗算の通信時の不正を検証する。秘密計算装置200は、ステップS1105において、(LK+M)個の乗算トリプレット列でサンプリングしなかったLK個の乗算トリプレットによりL行K列の乗算トリプレット行列を生成して、秘密乗算の通信時の不正を検証する。
秘密計算装置200は、ステップS1107において、セミオネスト計算を実行して、C個の乗算処理に対応するC個の乗算トリプレットを生成する。秘密計算装置200は、ステップS1109において、C個の乗算トリプレットと同数の乗算トリプレットをL行K列の乗算トリプレット行列からランダムに選択して、秘密乗算結果の通信時の不正を検証する。秘密計算装置200は、ステップS1111において、乗算正当性の検証結果を報知する。
(セミオネスト処理および乗算正当性検証処理)
図12は、本実施形態に係るセミオネスト計算処理(S1107)および乗算正当性検証処理(S1109)の手順を示すフローチャートである。
秘密計算装置200は、ステップS1201において、セミオネスト秘密計算を実行する。秘密計算装置200は、ステップS1203において、セミオネスト秘密計算の中にある秘密乗算処理を抽出する。秘密計算装置200は、ステップS1205において、秘密乗算処理の数の乗算トリプレットを生成する。秘密計算装置200は、ステップS1207において、バケット検証で生成された乗算トリプレット列(L行)から、ランダムに秘密乗算処理の数と同数の乗算トリプレットを選択する。秘密計算装置200は、ステップS1209において、同数の秘密乗算トリプレットと選択乗算トリプレットとの組を生成する。そして、秘密計算装置200は、ステップ1105において、同数の秘密乗算トリプレットと選択乗算トリプレットとの組を用いて、バケット検証を行なう。
本実施形態によれば、乗算トリプレットに基づくサンプリング検証およびバケット検証と、セミオネスト乗算からの乗算トリプレットに基づく乗算正当性検証と、を併用することによって、秘密計算において、処理量を少なく保ったまま、参加者の悪意のある振る舞いに対してより精度よく秘密を守ることができる。
詳細には、LK+M個の乗算トリプレットからM個の乗算トリプレットを復元して検査をした時点で、不正に作られた乗算トリプレットの数が1/T個以下である確率が非常に高い、あるいは、圧倒的であると計算できたとする。
したがって、LK個の乗算トリプレットに絞られた時点で、不正に作られた乗算トリプレットの数は1/TK個以下である確率が非常に高いあるいは圧倒的であるということができる。
上の計算で、セミオネスト復元のために通信する回数はKに比例するため通信量を小さくするにはKを小さくしたいが、Kを小さくすると、高い確率で保証できる不正に作られた乗算トリプレットの数の上限が大きくなってしまう。ここで、通信量を小さくするためKを小さめにとり、1/TKの確立でしか不正が見つからないのであれば不正をあえて侵すには1/TKは小さすぎるが、TK個程度の乗算を計算する場合を考える。もし、回路の計算後にL個の乗算トリプレットからC個の乗算トリプレットを順番もランダムに選ぶのでなければ、回路を計算する時点でどの各乗算がどの乗算トリプレットと対照して検査されるかが分かる。上記のようにKが小さいなら、不正に作られた乗算トリプレットは存在することができ、これを使って検査される乗算で不正を働いても発覚しない。一方、前述のようにランダムに選ばれるのであれば、不正に作られた乗算トリプレットで検査する確率は1/TKと小さく、不正を隠し通せる可能性は低くなる。
C個の乗算トリプレットがランダムに選ばれなくとも、Kを大きくすることで1/TKが十分に小さいあるいは無視できるほど小さければ、問題ない。逆に言うと、ランダムに選ぶようにした効果として、Kを小さくすることができた。すなわち不正を検知可能な秘密計算において、通信量を小さくすることができた。
[第3実施形態]
次に、本発明の第3実施形態に係る秘密計算装置について説明する。本実施形態に係る秘密計算装置は、上記第2実施形態と比べると、バケット検証なしにサンプリング検証と乗算正当性検証とで検証する点で異なる。その他の構成および動作は、第2実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
《秘密計算装置の機能構成》
図13は、本実施形態に係る秘密計算装置1300の機能構成を示すブロック図である。図13において、図2と同様の機能構成には同じ参照番号を付して、重複する説明は説明を省略する。すなわち、図13においては、図2の乗算トリプレット検証部210からバケット検証部204を省いて乗算トリプレット検証部1310としたのみで、他の機能構成は同様であるので詳細な説明は省略する。
本実施形態によれば、バケット検証部を省いたので、第2実施形態と同様の精度および処理量は難しいが、より簡易な構成により十分に参加者の悪意のある振る舞いに対して精度よく秘密を守ることができる。
[第4実施形態]
次に、本発明の第4実施形態に係る秘密計算装置について説明する。本実施形態に係る秘密計算装置は、上記第2実施形態および第3実施形態と比べると、バケット検証と乗算正当性検証との順番を逆にして検証する点で異なる。その他の構成および動作は、第2実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
《秘密計算装置の機能構成》
図14は、本実施形態に係る秘密計算装置1400の機能構成を示すブロック図である。図14において、図2または図13と同様の機能構成には同じ参照番号を付して、重複する説明は説明を省略する。すなわち、図14においては、図2の乗算トリプレット検証部210のバケット検証部204を移動して、乗算トリプレット検証部1410としたのみで、機能構成部は同様であるので詳細な説明は省略する。
本実施形態によれば、バケット検証と乗算正当性検証との順番を逆にしたが、第2実施形態と同様の精度および処理量が可能であり、参加者の悪意のある振る舞いに対して精度よく秘密を守ることができる。
[他の実施形態]
以上説明したように、本発明を用いれば複数の装置にデータを分散して各装置にデータを隠ぺいしたまま加算や乗算が可能になり、あわせて任意の関数を計算することが可能になる。また、参加装置が不正を働いたとしても、これを検知することができる。この計算に必要な通信量と計算量は小さい。この様なシステムは、ある装置で秘密のデータを扱ってなんらかのサービスを提供する時に、装置の管理者がデータを盗む出すことを防止できる。なぜなら、複数の装置に異なる管理者を割り当てれば、一人で全ての装置中のデータを見ることのできる管理者がいなくなり、このような管理者を通じたデータの盗み出しを防止することに貢献する。
また、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。また、それぞれの実施形態に含まれる別々の特徴を如何様に組み合わせたシステムまたは装置も、本発明の範疇に含まれる。
また、本発明は、複数の機器から構成されるシステムに適用されてもよいし、単体の装置に適用されてもよい。さらに、本発明は、実施形態の機能を実現する秘密計算プログラムが、システムあるいは装置に直接あるいは遠隔から供給される場合にも適用可能である。したがって、本発明の機能をコンピュータで実現するために、コンピュータにインストールされるプログラム、あるいはそのプログラムを格納した媒体、そのプログラムをダウンロードさせるWWW(World Wide Web)サーバも、本発明の範疇に含まれる。特に、少なくとも、上述した実施形態に含まれる処理ステップをコンピュータに実行させるプログラムを格納した非一時的コンピュータ可読媒体(non-transitory computer readable medium)は本発明の範疇に含まれる。
この出願は、2016年9月30日に出願された日本国特許出願 特願2016-193094号を基礎とする優先権を主張し、その開示の全てをここに取り込む。

Claims (6)

  1. 2つの秘密分散したランダム数と、該2つの秘密分散したランダム数を秘密乗算した乗算結果の分散値と、の組からなる第1乗算トリプレット列を生成する第1乗算トリプレット列生成手段と、
    前記第1乗算トリプレット列からランダムに選択された所定数の乗算トリプレットから不正を検証する乗算トリプレット検証手段と、
    セミオネスト安全な秘密乗算における各乗算処理における2つの秘密分散した入力数と、該2つの秘密分散した入力数を秘密乗算した乗算結果の分散値と、の組からなる第2乗算トリプレット列を生成する第2乗算トリプレット列生成手段と、
    前記乗算トリプレット検証手段により不正が発見されなかった場合に、前記第2乗算トリプレット列に対応する数の乗算トリプレットを前記第1乗算トリプレット列からランダムに選択して乗算トリプレットの組を生成して秘密乗算の正当性を検証する乗算正当性検証手段と、
    を備え、
    前記乗算トリプレット検証手段は、
    前記第1乗算トリプレット列からランダムに第1数の乗算トリプレットをサンプリングして、前記サンプリングされた乗算トリプレットに基づいて不正を検証する第1トリプレット検証手段と、
    前記第1トリプレット検証手段により不正が発見されなかった場合に、サンプリングされなかった乗算トリプレットにより少なくとも2列を有するランダムな行列を生成し、前記乗算トリプレットによるランダムな行列に基づいて不正を検証する第2トリプレット検証手段と、
    を有する秘密計算装置。
  2. 前記第1数は、前記第1トリプレット検証手段が不正を検証する精度に対応して設定される、請求項に記載の秘密計算装置。
  3. 前記行列の列数は、前記第2トリプレット検証手段が不正を検証する精度に対応して設定される、請求項に記載の秘密計算装置。
  4. 第1乗算トリプレット列生成手段が、2つの秘密分散したランダム数と、該2つの秘密分散したランダム数を秘密乗算した乗算結果の分散値と、の組からなる第1乗算トリプレット列を生成する第1乗算トリプレット列生成ステップと、
    乗算トリプレット検証手段が、前記第1乗算トリプレット列からランダムに選択された所定数の乗算トリプレットから不正を検証する乗算トリプレット検証ステップと、
    第2乗算トリプレット列生成手段が、セミオネスト安全な秘密乗算における各乗算処理における2つの秘密分散した入力数と、該2つの秘密分散した入力数を秘密乗算した乗算結果の分散値と、の組からなる第2乗算トリプレット列を生成する第2乗算トリプレット列生成ステップと、
    乗算正当性検証手段が、前記乗算トリプレット検証ステップにおいて不正が発見されなかった場合に、前記第2乗算トリプレット列に対応する数の乗算トリプレットを前記第1乗算トリプレット列からランダムに選択して乗算トリプレットの組を生成して秘密乗算の正当性を検証する乗算正当性検証ステップと、
    を含み、
    前記乗算トリプレット検証ステップは、
    前記第1乗算トリプレット列からランダムに第1数の乗算トリプレットをサンプリングして、前記サンプリングされた乗算トリプレットに基づいて不正を検証する第1トリプレット検証ステップと、
    前記第1トリプレット検証ステップにおいて不正が発見されなかった場合に、サンプリングされなかった乗算トリプレットにより少なくとも2列を有するランダムな行列を生成し、前記乗算トリプレットによるランダムな行列に基づいて不正を検証する第2トリプレット検証ステップと、
    を含秘密計算装置の秘密計算方法。
  5. 2つの秘密分散したランダム数と、該2つの秘密分散したランダム数を秘密乗算した乗算結果の分散値と、の組からなる第1乗算トリプレット列を生成する第1乗算トリプレット列生成ステップと、
    前記第1乗算トリプレット列からランダムに選択された所定数の乗算トリプレットから不正を検証する乗算トリプレット検証ステップと、
    セミオネスト安全な秘密乗算における各乗算処理における2つの秘密分散した入力数と、該2つの秘密分散した入力数を秘密乗算した乗算結果の分散値と、の組からなる第2乗算トリプレット列を生成する第2乗算トリプレット列生成ステップと、
    前記乗算トリプレット検証ステップにおいて不正が発見されなかった場合に、前記第2乗算トリプレット列に対応する数の乗算トリプレットを前記第1乗算トリプレット列からランダムに選択して乗算トリプレットの組を生成して秘密乗算の正当性を検証する乗算正当性検証ステップと、
    秘密計算装置のコンピュータに実行させる秘密計算プログラムであって、
    前記乗算トリプレット検証ステップにおいては、
    前記第1乗算トリプレット列からランダムに第1数の乗算トリプレットをサンプリングして、前記サンプリングされた乗算トリプレットに基づいて不正を検証する第1トリプレット検証ステップと、
    前記第1トリプレット検証ステップにおいて不正が発見されなかった場合に、サンプリングされなかった乗算トリプレットにより少なくとも2列を有するランダムな行列を生成し、前記乗算トリプレットによるランダムな行列に基づいて不正を検証する第2トリプレット検証ステップと、
    を前記秘密計算装置のコンピュータに実行させる秘密計算プログラム
  6. 複数の秘密計算装置が互いに通信接続されて、前記複数の秘密計算装置に秘密分散された数を協働して秘密計算する秘密計算システムであって、
    前記複数の秘密計算装置の少なくとも1つの秘密計算装置が、
    2つの秘密分散したランダム数と、該2つの秘密分散したランダム数を秘密乗算した乗算結果の分散値と、の組からなる第1乗算トリプレット列を生成する第1乗算トリプレット列生成手段と、
    前記第1乗算トリプレット列からランダムに選択された所定数の乗算トリプレットから不正を検証する乗算トリプレット検証手段と、
    セミオネスト安全な秘密乗算における各乗算処理における2つの秘密分散した入力数と、該2つの秘密分散した入力数を秘密乗算した乗算結果の分散値と、の組からなる第2乗算トリプレット列を生成する第2乗算トリプレット列生成手段と、
    前記乗算トリプレット検証手段により不正が発見されなかった場合に、前記第2乗算トリプレット列に対応する数の乗算トリプレットを前記第1乗算トリプレット列からランダムに選択して乗算トリプレットの組を生成して秘密乗算の正当性を検証する乗算正当性検証手段と、
    を備え
    前記乗算トリプレット検証手段は、
    前記第1乗算トリプレット列からランダムに第1数の乗算トリプレットをサンプリングして、前記サンプリングされた乗算トリプレットに基づいて不正を検証する第1トリプレット検証手段と、
    前記第1トリプレット検証手段により不正が発見されなかった場合に、サンプリングされなかった乗算トリプレットにより少なくとも2列を有するランダムな行列を生成し、前記乗算トリプレットによるランダムな行列に基づいて不正を検証する第2トリプレット検証手段と、
    を有する秘密計算システム。
JP2018541929A 2016-09-30 2017-07-06 秘密計算システム、秘密計算装置、秘密計算方法および秘密計算プログラム Active JP7047764B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2016193094 2016-09-30
JP2016193094 2016-09-30
PCT/JP2017/024874 WO2018061391A1 (ja) 2016-09-30 2017-07-06 秘密計算システム、秘密計算装置、秘密計算方法および秘密計算プログラム

Publications (2)

Publication Number Publication Date
JPWO2018061391A1 JPWO2018061391A1 (ja) 2019-07-11
JP7047764B2 true JP7047764B2 (ja) 2022-04-05

Family

ID=61762751

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018541929A Active JP7047764B2 (ja) 2016-09-30 2017-07-06 秘密計算システム、秘密計算装置、秘密計算方法および秘密計算プログラム

Country Status (3)

Country Link
US (1) US11080393B2 (ja)
JP (1) JP7047764B2 (ja)
WO (1) WO2018061391A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11042358B2 (en) * 2016-08-18 2021-06-22 Nec Corporation Secure computation system, secure computation method, secure computation apparatus, distribution information generation apparatus, and methods and programs therefor
US11456862B2 (en) * 2017-07-05 2022-09-27 Nippon Telegraph And Telephone Corporation Secure computation system, secure computation apparatus, secure computation method, and recording medium
CN110457936B (zh) * 2019-07-01 2020-08-14 阿里巴巴集团控股有限公司 数据交互方法、装置和电子设备
EP4057170A1 (de) * 2021-03-11 2022-09-14 Siemens Aktiengesellschaft Verfahren zur bestimmung der integrität einer datenverarbeitung, vorrichtung, datenverarbeitungsanlage und anlage

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012078446A (ja) 2010-09-30 2012-04-19 Nippon Telegr & Teleph Corp <Ntt> 不正検知方法、秘密計算システム、計算装置、計算プログラム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6941463B1 (en) * 1998-05-14 2005-09-06 Purdue Research Foundation Secure computational outsourcing techniques
US7296163B2 (en) * 2000-02-08 2007-11-13 The Trustees Of Dartmouth College System and methods for encrypted execution of computer programs
US10439654B1 (en) * 2007-04-19 2019-10-08 Primos Storage Technology, LLC Systems, methods and computer program products including features of transforming data involving a secure format from which the data is recoverable
US8433925B2 (en) * 2009-09-04 2013-04-30 Gradiant Cryptographic system for performing secure computations and signal processing directly on encrypted data in untrusted environments
US9660813B1 (en) * 2012-03-27 2017-05-23 EMC IP Holding Company LLC Dynamic privacy management for communications of clients in privacy-preserving groups
US10791123B2 (en) * 2015-11-25 2020-09-29 Yaron Gvili Selectivity in privacy and verification with applications
EP3602422B1 (en) * 2017-03-22 2022-03-16 Visa International Service Association Privacy-preserving machine learning

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012078446A (ja) 2010-09-30 2012-04-19 Nippon Telegr & Teleph Corp <Ntt> 不正検知方法、秘密計算システム、計算装置、計算プログラム

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
FURUKAWA, J. et al.,High-Throughput Secure Three-Party Computation for Malicious Adversaries and an Honest Majority,ePrint archive,2016年10月01日,p.1-36,[online], [平成29年9月21日検索], インターネット:<http://eprint.iacr.org/2016/944>
五十嵐大ほか,軽量検証可能3パーティ秘匿関数計算の効率化及びこれを用いたセキュアなデータベース処理,暗号と情報セキュリティシンポジウム 2011(SCIS2011),日本,電子情報通信学会,2011年01月25日,p.1-8
千田浩司ほか,軽量検証可能3パーティ秘匿関数計算の再考,コンピュータセキュリティシンポジウム2010(CSS2010),日本,一般社団法人情報処理学会,2010年10月12日,第2010巻,第9号,p.555-560
古川潤,スループットの大きいマルチパーティー計算,暗号と情報セキュリティシンポジウム2016(SCIS2016),日本,電子情報通信学会,2016年01月19日,p.1-7

Also Published As

Publication number Publication date
WO2018061391A1 (ja) 2018-04-05
JPWO2018061391A1 (ja) 2019-07-11
US11080393B2 (en) 2021-08-03
US20190266326A1 (en) 2019-08-29

Similar Documents

Publication Publication Date Title
JP7047764B2 (ja) 秘密計算システム、秘密計算装置、秘密計算方法および秘密計算プログラム
JP6034927B1 (ja) 秘密計算システム、秘密計算装置、およびプログラム
US10083310B1 (en) System and method for mobile proactive secure multi-party computation (MPMPC) using commitments
CN112580821A (zh) 一种联邦学习方法、装置、设备及存储介质
CN110505046A (zh) 多数据提供方加密数据跨平台零知识校验方法、装置及介质
WO2017099117A1 (ja) 事前計算装置、方法、およびコンピュータ読取可能な記録媒体、並びにベクトル乗算装置、および方法
JP7259876B2 (ja) 情報処理装置、秘密計算方法及びプログラム
JP2022141772A (ja) ブロックチェーンのための暗号化データ共有管理
CN107210006A (zh) 不一致检测方法、不一致检测系统、不一致检测装置以及程序
CN111475854A (zh) 保护两方数据隐私的协同计算方法及系统
CN113591097A (zh) 业务数据处理方法、装置、电子设备及存储介质
EP3369207B1 (en) An information secure protocol for mobile proactive secret sharing with near-optimal resilience
CN114153808B (zh) 一种基于秘密分享的排序方法和系统
CN112464155A (zh) 一种数据处理方法、多方安全计算系统和电子设备
CN107888385A (zh) Rsa模数生成方法、rsa密钥生成方法、计算机设备及介质
WO2015118179A1 (en) Quantum position based authentication
CN114139197A (zh) 一种代理安全多方计算方法、系统、处理设备及存储介质
CN116992480A (zh) 一种提供公开可验证的外包计算服务的方法
CN111311260A (zh) 一种账户私钥的重置方法及装置
CN116342249A (zh) 基于区块链的贷款风险评估方法及装置
CN114143311B (zh) 一种基于区块链的隐私保护方案聚合方法及装置
JPWO2020165931A1 (ja) 情報処理装置、秘密計算方法及びプログラム
CN114547684A (zh) 一种保护隐私数据的多方联合训练树模型的方法及装置
CN114298321A (zh) 联合建模方法、装置、电子设备及存储介质
CN113064899A (zh) 资产类证券型通证交易凭证的存储方法、装置和电子设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200601

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210804

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211004

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: 20220222

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220307

R151 Written notification of patent or utility model registration

Ref document number: 7047764

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151