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

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

Info

Publication number
JP2020519969A
JP2020519969A JP2019563914A JP2019563914A JP2020519969A JP 2020519969 A JP2020519969 A JP 2020519969A JP 2019563914 A JP2019563914 A JP 2019563914A JP 2019563914 A JP2019563914 A JP 2019563914A JP 2020519969 A JP2020519969 A JP 2020519969A
Authority
JP
Japan
Prior art keywords
multiplication
buffer
triplet
party
generated
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.)
Granted
Application number
JP2019563914A
Other languages
English (en)
Other versions
JP6973868B2 (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 JP2020519969A publication Critical patent/JP2020519969A/ja
Application granted granted Critical
Publication of JP6973868B2 publication Critical patent/JP6973868B2/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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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
    • 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/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/78Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/46Secure multiparty computation, e.g. millionaire problem

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】多くの事前計算を必要とせず、悪意を持つ攻撃者に対して安全な秘密計算方法の提供。【解決手段】複数のパーティがそれぞれの入力を他のパーティに明かすことなく、予め設定された関数をそれぞれ計算する秘密計算のための方法は、前記関数の計算が正しく実行されることを検証する検証ステップを行う前記パーティを含み、前記検証ステップは、複数の検証済みの乗算三つ組を用意し、要求されると1つの乗算三つ組を第2のステップに供給する第1のステップと、前記第1のステップで生成されランダムに選択された乗算三つ組を消費する前記第2のステップとを含み、前記第1のステップでは、列内でのシャッフルと列間のシャッフルとのうち少なくとも1つの方法で、前記生成された乗算三つ組のシャッフルを行う。【選択図】図2

Description

本発明は秘密計算(multiparty computation;MPC)方法、装置、およびプログラムに関する。
MPCでは、プライベートデータをそれぞれ持つ所定の数のパーティは、各々がその入力を他者へ明かすことなく入力としてプライベートデータの関数を計算することができる。
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. Ivan Damgaard, Valerio Pastro, Nigel P. Smart, Sarah Zakarias, "Multiparty Computation from Somewhat Homomorphic Encryption", CRYPTO 2012: 643-662. Toshinori Araki, Jun Furukawa, Yehuda Lindell, Ariel Nof and Kazuma Ohara, "High-Throughput Semi-Honest Secure Three-Party Computation with an Honest Majority", CCS ‘16 Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security, Pages 805-817. Jun Furukawa, Yehuda Lindell, Ariel Nof and Or Weinstein, "High-Throughput Secure Three-Party Computation for Malicious Adversaries and an Honest Majority", Advances in Cryptology - EUROCRYPT 2017. EUROCRYPT 2017. Lecture Notes in Computer Science, vol.10211. Springer, Cham
非特許文献1や非特許文献2などの関連技術は、すべてのパーティが関連するプロトコルに従う場合にのみ安全であり、正直に(honestly)当該プロトコルに従わないパーティに対しては安全ではない。すなわち、すべてのパーティは、プロトコルに正直に従う限り、他のパーティから受信したデータから何も学習しない。そのようなプロトコルは、セミオネスト(semi-honest)な秘匿性を実現すると言われている。
非特許文献3に開示されている関連技術は、プロトコルを正直に従わないパーティに対して安全だが、重い事前計算が必要になる。
従って、本発明の目的は、多くの事前計算を必要とせず、悪意を持つ攻撃者に対して安全な秘密計算方法、装置、方法、プログラムを提供することにある。
本発明の1つの側面によれば、複数のパーティの各々が、各々の入力を他のパーティに明かすことなく、予め設定された関数をそれぞれ計算する秘密計算のための方法であり、
前記複数のパーティの各々が前記関数の計算が正しく実行されたことを検証する検証ステップを含み、
前記検証ステップは、
複数の検証済みの乗算三つ組(multiplication triple)を用意し、要求があれば、少なくとも1つの乗算三つ組(multiplication triple)を第2のステップに供給する第1のステップと、
前記第1のステップで生成されランダムに選択された乗算三つ組(multiplication triple)を消費する前記第2のステップと、
を含み、
前記第1のステップは、前記生成された乗算三つ組(multiplication triple)のシャッフルを、1つの列内でのシャッフルと列のシャッフルとのうち少なくとも1つで行う、方法が提供される。
本発明の他の側面によれば、複数のパーティの各々が、各々の入力を他のパーティに明かすことなく、予め設定された関数をそれぞれ計算する秘密計算のための方法であり、
前記複数のパーティの各々が前記関数の計算が正しく実行されたことを検証する検証ステップを含み、
前記検証ステップは、
複数の検証済みの乗算三つ組(multiplication triple)を用意し、要求されると少なくとも1つの乗算三つ組(multiplication triple)を第2のステップに供給する第1のステップと、
前記第1のステップで生成され、ランダムに選択された 乗算三つ組(multiplication triple)を消費する前記第2のステップと、
を含み、
前記第1のステップは、要求があれば、全体の中からランダムに選択された乗算三つ組(multiplication triple)を提供する第1のバッファを用い、前記第1のバッファは、第2のバッファから順次補充される方法が提供される。
本発明の1つの側面によれば、メモリを有し、予め設定された関数の秘密計算が正しく実行されていることを検証する回路検証プロセスを実行するプロセッサを含み、
前記回路検証プロセスは、複数の検証済みの乗算三つ組(multiplication triple)を用意し、要求されると、少なくとも1つの乗算三つ組(multiplication triple)を第2の処理に供給する第1の処理と、
前記第1の処理で生成されランダムに選択された乗算三つ組(multiplication triple)を消費する前記第2の処理と、
を含み、前記第1の処理では、1つの列内でのシャッフルと列のシャッフルとのうち少なくとも1つで、前記生成された乗算三つ組(multiplication triple)のシャッフルを行う秘密計算装置が提供される。
本発明の他の側面によれば、メモリを有し、予め設定された関数の秘密計算が正しく実行されていることを検証するための回路検証プロセスを実行するプロセッサを含み、前記回路検証プロセスは、複数の検証済みの乗算三つ組(multiplication triple)を用意し、要求されると、少なくとも1つの乗算三つ組(multiplication triple)を第2の処理に供給する第1の処理と、
前記第1の処理で生成され、ランダムに選択された乗算三つ組(multiplication triple)を消費する前記第2の処理と、
を含み、前記第1の処理は、要求されると、全体の中からランダムに選択された乗算三つ組(multiplication triple)を提供する第1のバッファを含み、
前記第1のバッファは第2のバッファから順次補充される秘密計算装置が提供される。
本発明の1つの側面によれば、予め設定された関数の秘密計算が正しく実行されていることを検証する回路検証プロセスをコンピュータに実行させるプログラムであり、前記回路検証プロセスは、複数の検証済みの乗算三つ組(multiplication triple)を用意し、要求されると、少なくとも1つの乗算三つ組(multiplication triple)を第2の処理に供給する第1の処理と、前記第1の処理で生成されランダムに選択された乗算三つ組(multiplication triple)を消費する前記第2の処理と、
を含み、前記第1の処理では、1つの列内でのシャッフルと列のシャッフルとのうち少なくとも1つで、前記生成された乗算三つ組(multiplication triple)のシャッフルを行うプログラムが提供される。
本発明の他の側面によれば、予め設定された関数の秘密計算が正しく実行されていることを検証する回路検証プロセスをコンピュータに実行させるプログラムであり、前記回路検証プロセスは、複数の検証済みの乗算三つ組(multiplication triple)を用意し、要求されると少なくとも1つの乗算三つ組(multiplication triple)を第2の処理に供給する第1の処理と、前記第1の処理で生成されランダムに選択された乗算三つ組(multiplication triple)を消費する前記第2の処理とを含み、前記第1の処理は、要求されると全体の中からランダムに選択された乗算三つ組(multiplication triple)を提供する第1のバッファを用い、前記第1のバッファは第2のバッファから順次補充されるプログラムが提供される。
本発明の他の側面によれば、RAM(Random Access Memory)、ROM(Read Only Memory)、EEPROM(Electrically Erasable Programmable Read-Only Memory)、USB(Universal Serial Bus)デバイス、SSD(Solid State Device)などの半導体メモリ、又は例えばHDD(Hard Disk Drive)、CD(Compact Disc)又はDVD(Digital Versatile Disc)などの記憶装置などのような、上記のプログラムを記録した、非一時的なコンピュータ読み出し可能な記録媒体が提供される。
本発明によれば、悪意を持つ攻撃者に対して安全な秘密計算が、事前計算を必要とせず可能となる。
本発明のさらに他の特徴及び利点は、本発明を実施することが企図されている最良の形態の単なる例示により、本発明の実施形態のみを図示及び説明した添付の図面と併せて以下の詳細な説明から当業者には容易に明らかになるであろう。理解されるように、本発明は、他の異なる実施形態が可能であり、そのいくつかの詳細は、本発明から逸脱することなく、様々な明白な点において変更可能である。したがって、図面及び説明は、本質的に例示的であるとみなされるべきであり、限定的ではないとみなされるべきである。
(2,3)秘密分散方式を説明する図である。 (2,3)秘密分散方式を説明する図である。 本発明の第1の実施形態の動作を示すフローチャートである。 本発明の第1の実施形態の構成を示す図である。 本発明の第1の実施形態における三つ組(triple)生成の動作を示すフローチャートである。 本発明の第1の実施形態における三つ組(triple)を生成するためのメモリ構成を模式的に示す図である。 本発明の第1の実施形態における三つ組(triple)を生成するためのメモリ構成を模式的に示す図である。 本発明の第1の実施形態における三つ組(triple)を生成するためのメモリ構成を模式的に示す図である。 本発明の第1の実施形態における回路計算の動作を示すフローチャートである。 本発明の第1の実施形態における回路計算を模式的に示す図である。 本発明の第1の実施形態における回路検証の動作を示すフローチャートである。 本発明の第1の実施形態における回路検証のためのバッファ構成を模式的に示す図である。 本発明の第2の実施形態の構成を示す図である。
例示的な実施形態を図面を参照して説明する。以下、本発明の実施形態の基本について概説する。秘密計算(MPC)のプロトコルは、攻撃者に対する閾値の要件を持つ。例えば、パーティの数がnで、攻撃者によって汚染されたパーティの数をtとした場合、MPCプロトコルは、t < n = 3、または、t < n = 2を必要とする。nを、MPCプロトコルに参加するパーティの数とし、P(1)、..、P(n)を、これらn個のパーティそれぞれを表すとする。
Rを、加算と乗算とが定義されている環(ring)とする。環は、2^nを法とする環(^は2のべき乗の演算子)または任意の有限体でもよい。3^(-1)が存在する任意の有限体と環では、すべてが成り立つ。
SecretShare()を、Rの要素が与えられると、シェア(share)と呼ばれるx(1),...,x(n)を出力する(t、n)-秘密分散方式の関数とする。
これらのシェアは、以下を満たす。
(i)n個のシェアのうち、任意のt個のシェアの組が入力されると、xを出力する関数Reconstruct()が存在し、
(ii)任意のt-1個のシェアの組からは、xの任意の部分を復元することが、計算上実行不可能である。
i(= 1、...、n)の各々について、P(i)がx(i)を持つ場合、xは秘密分散(secretly shared)されていると言う。これを[x]と表す。すなわち、値xがP(1)〜P(n)などの複数のパーティ間において秘密分散されていることを示すために、[x]という表記を用いる。
<(2,3)-秘密分散方式>
以下に(2,3)−秘密分散の例を説明する。要素v mod 2 ^ nを分散するため、ディーラーは、次の条件の下、3つのランダムな要素r(1)、r(2)、r(3)を選ぶ。
r(1)+ r(2)+ r(3) = 0
P(1)のシェアは、x(1)=(r(1), t(1))になり(ただし、t(1)= r(3)-v)、
P(2)のシェアは、x(2)=(r(2), t(2))になり(ただし、t(2)= r(1)-v)、
P(3)のシェアは、x(3)=(r(3), t(3))になる(ただし、t(3)= r(2)-v)。
単一のパーティのシェアは秘密(secret)vについて何も明らかにしないことは明白である。
関数Reconstruct()に関して、例えば、x(1)=(r(1), t(1))およびx(2)=(r(2), t(2))が与えられた場合、1つのパーティ(例えばP(1))は、v = r(1)-t(2)= r(1)-(r(1)-v)を計算することができる。
同様に、P(2)は、x(2)とx(3)の組からvを計算できる(すなわち、v = r(2)-(r(2)-v)。そしてP(3)は、x(3)およびx(1)の組からvを計算できる(すなわち、v = r(3)-(r(3)-v)。上記秘密分散方式に従って値vの3つのうち2つの分散を[v]で表記する 。なお、秘密vは、1つのビットでもよく、r(1)、r(2)、r(3)は、
Figure 2020519969
の条件の下、
Figure 2020519969
となる3つのランダムビットになり、ここで、円に「+」はビット毎の排他的論理和を示す。この場合、
Figure 2020519969
(非特許文献4を参照)。
vを復元するのに必要なデータのすべてが、パーティのシェアとして分散されており、すべてのデータがこれらのパーティのいずれかに収集され、各パーティが、Reconstruct()を用いてvを復元できる場合、パーティの組が[v]を開く(open)と言い、サブプロシージャ:「open([v])」は以下のように定義できる。
秘密値vのシェアが{(r(1), t(i))}(i = 1、...、3)で表記される場合、各パーティP(i)は、t(i)をP(i + 1)に送信し、P(4)はP(1)に送信し、各P(i)は、v = r(i)-t(i-1)(すなわち、
Figure 2020519969
)を出力する(ただし、t(0)はt(3))。
[x]と[y]が与えられるとき、n個のパーティP(1),...,P(n)は、MPCによって、互い通信せずに、セミオネストな秘匿性(semi-honest secrecy)で、[z] = [x + y] を計算可能とされる。この手順は、[z] = [x] + [y]で表される。
以下、MPCの加算の例を説明する。xとyが(2,3)-秘密分散方式によって秘密分散されているとする。より具体的には、
P(1)のxのシェアは、(x(11), x(12))であり(ただし、x(12)=x(31)-x)、
P(2)のxのシェアは、(x(21), x(22))であり(ただし、x(22)=x(11)-x)、
P(3)のxのシェアは、(x(31), x(32))である(ただし、x(22)=x(21)-x)。
P(1)のyのシェアは、(y(11), y(12))であり(ただし、y(12)=y(31)-y)、
P(2)のyのシェアは、(y(21), y(22))であり(ただし、y(22)=y(11)-y)、
P(3)のyのシェアは、(y(31), y(32))である(ただし、y(32)=x(21)-y)。
すると、
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))
となる。
x + yは、(x(11)+y(11), x(12)+y(12))と、(x(21)+y(21), x(22)+y(22))の組から以下のとおり復元できる。
x+y = x(11)+y(11) - (x(22)+y(22))
= x(11)+y(11) - ( x(11)-x + y(11)-y)
[x]とyが与えられ、yが各パーティに知られているとき、n個のパーティP(1)、...、P(n)は、MPCによって、互い通信せずにセミオネストな秘匿性で、[z]=[x+y]を計算可能とされる。この手順は、[z]=[x]+y または[z]=y+[x]で表される。
以下、MPC加算の例を説明する。xが上記(2,3)-秘密分散方式によって秘密に分散され、yが各パーティに知られているとする。より具体的には、
P(1)のxのシェアは、(x(11), x(12))であり(ただし、x(12)=x(31)-x)、
P(2)のxのシェアは、(x(21), x(22))であり(ただし、x(22)=x(11)-x)、
P(3)のxのシェアは、(x(31), x(32))である(ただし、x(22)=x(21)-x)。
すると、
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)となる。
x + yは、(x(11), x(12)-y)、及び(x(21),x(22)-y)の組から以下のとおり復元できる。
x+y = x(11) - (x(22) - y) = x(11) - ((x(11) - x) - y)
[x]とyが与えられ、yが各パーティに知られているとき、P(1)、...、P(n)は、MPCによって、互い通信せずに、セミオネストな秘匿性で、[z]=[xy] を計算可能とされる。この手順は、[z]=[x]y または[z]=y[x]で表される。
以下、このMPCの乗算の例を説明する。
xが上記(2,3)-秘密分散方式によって秘密に分散され、yが各パーティに知られているとする。より具体的には、
P(1)のxのシェアは(x(11), x(12))であり(x(12)=x(31)/x)、
P(2)のxのシェアは(x(21), x(22))であり(x(22)=x(11)/x)、
P(3)のxのシェアは(x(31), x(32))である(x(22)=x(21)/x)。
すると、
P(1)のxyのシェアは、(x(11)y, x(12))、
P(2)のxyのシェアは、(x(21)y, x(22))、
P(3)のxyのシェアは、(x(31)y, x(32))である。
xyは、(x(11)y, x(12))、及び(x(21)y, x(22))の組から以下のとおり復元できる。
xy = (x(11)y)/x(22) = (x(11)y)/(x(11)/x)
[x]と[y]が与えられるとき、P(1)、...、P(n)それぞれは、MPCを用い、若干の通信により、semi-honestな秘匿性で、[z] = [xy]を計算可能とされる。この手順は、[z]=[x]*[y]で表される。
以下、MPCの乗算の例を説明する。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))である。
ランダムに選択され、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)のxyのシェアは、(z1 = t(3)-t(1), c1=-2t(3)-t(1))であり、
P(2)のxyのシェアは、(z2 = t(1)-t(2), c2=-2t(1)-t(2))であり、
P(3)のxyのシェアは、(z3 = t(2)-t(3), c3=-2t(2)-t(3))である。
x(12)y(12) = (x(31) - x)(y(31) - y) = x(31)y(31) - x(31)y - y(31)x + xy
x(22)y(22) = (x(11) - x)(y(11) - y) = x(11)y(11) - x(11)y - y(11)x + xy
x(32)y(32) = (x(21) - x)(y(21) - y) = x(21)y(21) - x(21)y - y(21)x + xy
従って、
3(t(1)+t(2)+t(3)) = -x(11)y(11) + x(12)y(12) + r(1)
- x(21)y(21) + x(22)y(22) + r(2)
-x(31)y(31) + x(32)y(32) + r(3)
= x(12)y(12)+x(22)y(22)+x(32)y(32)-x(11)y(11)-x(21)y(21)-x(31)y(31)
= 3xy-x(y(11)+y(21)+y(31))-y(x(11)+x(21)+x(31))
= 3xy
n個のパーティP(1)からP(n)が、それぞれ、Rのランダムな要素を、互いに通信せず他の誰にも開示せずに、必要なだけシェア(共有)できるものとする。
以下、3つのパーティ間で共有されるランダム要素の例を説明する。複数の乱数種(random seeds)S(1)、S(2)、及びS(3)が既に以下のように共有されているものとする。
P(1)は、S(3)とS(1)とを持ち、
P(2)は、S(1)とS(2)とを持ち、
P(3)は、S(2)とS(3)とを持つ。
HashR()をRの要素を出力する暗号学的ハッシュ関数とする。
P(1)は、i番目のランダム要素r(1i)のシェアを、HashR(S(3),i)-HashR(S(1),i)として生成する。
P(2)は、i番目のランダム要素r(2i)のシェアを、HashR(S(1),i)-HashR(S(2),i)として生成する。
P(3)は、i番目のランダム要素r(3i)のシェアを、HashR(S(2),i)-HashR(S(3),i)として生成する。
図2は、本発明の実施形態による動作を例示するフローチャートである。図2は、例示的な実施形態による(2,3)秘密分散方式に基づいて秘密を分散する各パーティによって実行される回路検証(circuit validation)の動作を示す。
図2を参照すると、各パーティによるステップS1(第1のプロセス)は、複数の検証された乗算三つ組(multiplication triple:乗算トリプル)を用意し、要求されると少なくとも1つの乗算三つ組をステップS2に供給する。
各パーティによるステップS2(第2のプロセス)において、ステップS1で生成され、ランダムに選択された乗算三つ組を消費する。
各パーティによるステップS1(第1のプロセス)において、生成された乗算三つ組のシャッフルを行い、1つの列の三つ組(triple)が三つ組単位でシャッフルされる列におけるシャッフル(並べ替え)か、列が列単位でシャッフルされる列のシャッフルかの少なくとも1つのシャッフルが行われる。
あるいは、各パーティによるステップS1(第1のプロセス)は、要求されると全体の中からランダムに選択された乗算三つ組を提供する第1のバッファを使用または含んでもよく、第1のバッファは第2のバッファから、順次、補充される。
図3は、1つの実施形態による1つのパーティの構成の一例を示す図である。パーティ(nパーティ、n=3)は同じ構成を有するので、1つのパーティの構成が図3に示されている。図3を参照すると、パーティ100は、図3に不図示のメモリを有するプロセッサと通信インタフェースを含み、乗算三つ組生成プロセス102、回路計算プロセス104、および回路検証(circuit validation)プロセス106を実行する。
乗算三つ組生成プロセス102は、検証されたN個の乗算三つ組を生成する。
ゲートの入力配線(input wire)へのシェアを与えられたパーティの回路計算プロセス104は、ゲートの入力配線についての関数fを計算する。ゲートの出力配線(output wire)における結果は、パーティのシェアとして定義されてもよい。
回路検証プロセス106は、秘密計算が正しく実行されたことを検証する。
例示的な実施形態について、図面を参照してより詳細に説明する。
<三つ組の検証(Triple Verification)>
以下、乗算三つ組の検証について説明する。この検証方法に関して、例えば非特許文献5が参照できる。
B組(タプル)の乗算三つ組、([a(1)]、[b(1)]、[c(1)])、...、([a(B)]、[b(B)]、[c(B)])が与えられる。ただし、[a(i)]、[b(i)]、[c(i)](i = 1、...、B)は、a(i)、b(i)、c(i)(i = 1、...、B)が、それぞれ、パーティ間で秘密分散されていることを表す。各i番目の乗算三つ組について、a(i)* b(i)= c(i)が成り立たないとすると、ある程度高い確率で検出される。もし、([a(i)]、[b(i)]、[c(i)])が、[a(i)] * [b(i)] = [c(i)]の関係を満たさないとすると、以下のテストでは、より高い確率で検出できる。
このテストの後、a(1)、b(1)、c(1)は、他のシェア、([a(2)]、[b(2)]、[c(2)])、...、([a(B)]、[b(B)]、[c(B)])が開かれない限り、秘密に分散され続ける。
i = 2、...、Bについて、各パーティは、[a(i)+ a(1)]及び[b(i)+ b(1)]を、ローカルに計算し、それぞれr(i)およびs(i)として開く。ここで「開く」とは、過半数のパーティの各組がそれらを開くことを意味する。
そして、各パーティは、r(i)及びs(i)(i = 2、...、B)について学習したことに基づき、それぞれのシェア
[c'(i)] = r(i)*s(i) - r(i)*[b(i)] - s(i)*[a(i)] + [c(i)]
=([a(i)+a(1)])*([b(i)+b(1)])-([a(i)+a(1)])*[b(i)]-([b(i)+b(1)])*[a(i)]+[c(i)]
=[a(1)]*[b(1)] - [a(i)]*[b(i)] + [c(i)]
を計算し、以下を開いてチェックする。
[c'(i)-c(i)]=[c'(i)]-[c(i)]
この等式は、a(i)b(i)= c(i)がすべてのiに対して成り立つか、iに対して成り立たない場合(either for all i or for no i)に成り立つ。したがって、このテストに合格する確率は、やや高い確率の積に近くなる。
以下、本実施形態によるプロトコルを説明する。まず最初に、乗算三つ組の秘密生成について、図4を参照して説明する。
<三つ組の生成(Generating Triples)>
パーティの乗算三つ組生成プロセス102によるN個の乗算三つ組の生成動作を、図4を参照して説明する。
<ステップS101>
生成される三つ組の個数Nが入力される。N =(X-C)* Lとなる補助パラメータB、C、X、及びLが入力される。
ただし、Xは、各部分配列のサイズ、
Cは、各部分配列で開かれた三つ組の数、
Bは、バケットの数、
Lは、1つのバケット内の部分配列の数である。
<M個のランダム値のシェアリング生成(Generating sharing of M random values)(ステップS102)>
各パーティの乗算三つ組生成プロセス102は、2M個のランダム値のシェアリングを生する。
2M = 2(N + C*L)*(B -1) + 2N= 2(N + C*L)*Bは、パーティが受け取るシェア[([a(i)]、[b(i)])](i = 1、...、M)によって示される。各パーティは、どのパーティも知らないランダムな秘密値vのシェアリングを生成できる。
<乗算三つ組の生成 (ステップS103)>
各パーティの乗算三つ組生成プロセス102は、セミオネストな乗算プロトコルを実行し、[c(i)] = [a(i)]*[b(i)]を計算する。D = [([ai]; [bi]; [ci])] (i=1,..., M = (N + C*L)*B)となり、[c(i)]は上記プロトコルの結果であり、必ずしも正しいとは限らない。
<カット及びバケット(Cut and bucket)(ステップS104)>
各パーティの乗算三つ組生成プロセス102は、いくつかの三つ組(C個の三つ組)を開き、三つ組が正しく生成されているか、最初の検証を行い、残りを複数のバケット(buckets)へランダムに分割する。
(a)各パーティの乗算三つ組生成プロセス102は、(N + C*L)*(B - 1) + N個の三つ組を有するDを、D'(1)、...、D'(B)のベクトルに分割し、図5に示すように、D'(1)がN個の三つ組を含み、各D'(j)(j = 2、...、B)が(N + C * L)個の三つ組を含むようにする。ここで、各パーティは、他のパーティも同じことを行うという前提で、Dの自身のシェアのみを分割する。
(b)k = 2〜Bについて、各パーティの乗算三つ組生成プロセス102は、D'(k)を、等しいサイズXのL個の部分配列に分割する(L *(X-C)= N)。図6に示すように、等しいサイズXのL個の部分配列は、D''(k、1)、...、D ''(k、L)となる。ここでも各パーティは、自身のシェアのみを分割する。図6では、D''(k、1)、...、D''(k、L)(k=1,...,B)それぞれにおけるC個の三つ組が、開かれるべき三つ組となる。
(c)k = 2、...、B、及びj = 1、...、Lについて、各パーティの乗算三つ組生成プロセス102は、D ''(k、j)に含まれる三つ組の順序を共同でランダムに並べ替える。ここで、各パーティは、それぞれのシェアのみをランダムに並べ替える。ただし、すべてのパーティが同意するランダム性を使用することにより、すべての順列が同じになるように調整される。
(d)k = 2、...、Bについて、各パーティの乗算三つ組生成プロセス102は、D ''(k、1)、...、D ''(k、L)間のL個の部分配列の順序を共同で並べ替える。
(e)k = 2、...、B、及びj = 1、...、Lについて、 過半数のパーティそれぞれの乗算三つ組生成プロセス102は、図6に示すように、D''(k, j)に含まれる最初のC個の三つ組を開き、a(i)b(i)=c(i)が成り立つか否か検証する(インデックスiは、選択した三つ組のインデックス)。
上記のように、各過半数のパーティのうち少なくとも1つのパーティは、a(i)、b(i)、c(i)を復元し、当該パーティは次の方程式を検証できる。a(i)b(i)= c(i)
いずれの過半数のパーティの組もこれを拒否しない場合、すべてのパーティはD''(k、j)からこれらを削除する。
過半数のパーティの組のいずれかが、検証を拒否した場合、他のパーティに「停止(Abort)」を送信し、プロトコルとして「停止」を出力する。
(f)残りの三つ組は、図7に示すように、それぞれBのサイズの(B個の三つ組を含む)N組の三つ組 E '(1)、...、E'(N)に分割される。
<バケットのチェック(Check buckets)(ステップS105)>
ベクトルdの長さをNとする。i= 1、...、Nについて、E '(i)では、B個の三つ組のうち、最初の三つ組 ([a(1)], [b(1)], [c(1)])は、残りのB -1個の三つ組 ([a(j)], [b(j)], [c(j)]) (j=2,...,B)を用いて、上記の三つ組検証方法にて検証される。図7に示すように、パーティは、長さNのベクトルdのi番目のエントリd(i)に([a(1)], [b(1)], [c(1)])を設定する。
<ステップS106>
現時点で、各パーティにおいて、N個の乗算三つ組がベクトルdに用意されている。パーティは、N個の乗算三つ組を出力する。
追加のN個の三つ組が必要な場合には、常に、上記のプロトコルを実行して取得できる(ステップS101〜S106)。
<回路計算(Circuit Computation)>
図8を参照して、各パーティの回路計算プロセス104の動作を説明する。
回路および回路への入力のシェアが入力される(ステップS201)。回路にはゲートと配線が含まれる。各ゲートは、乗算または加算ゲートのいずれかになる。各乗算ゲートと加算ゲートとは、2本の入力配線と1本の出力配線を有する。
図9に示すように、入力配線のぞれぞれは、回路への入力またはゲートの出力のいずれかとなることができる。出力配線のそれぞれは、回路の出力、他のゲートへの入力、またはその両方になることができる。入力配線と出力配線はそれぞれ、1つの秘密シェアに関連付けられている。したがって、各ゲートは、秘密のシェア入力(例えば[x]、[y]、...)が与えられると、秘密のシェア出力(例えば [z]、..)を生成する。
回路における計算段階の開始時、秘密シェアの組である入力が回路へ与えられ、各値はゲートへの入力となる(ステップS202)。
両方の入力配線の秘密シェアが既に生成されている各ゲートにおいて、その出力配線の秘密値は、セミオネストな秘密計算(セミオネストな攻撃者に対する安全なマルチパーティ計算)によって生成することができる(ステップS203)。
秘密シェアがその入力配線のために用意されたすべてのゲートに対してステップS203の手順を繰り返すことにより(ステップS204)、回路のすべての出力の秘密値が生成できる(ステップS205)。
<回路検証(Circuit Validation)>
各パーティの回路検証(circuit validation)プロセス106の動作を、図10を参照して説明する。
各パーティの回路検証プロセス106は、それぞれN個の三つ組の、2つのバッファベクトルV及びV'を用意する。回路検証プロセス106は、乗算三つ組生成プロセス102によって生成されたN個の三つ組で2つのバッファベクトルV及びV'を満たす(N=(X-C)*L)(ステップS301)。
各パーティの回路検証プロセス106は、バッファベクトルV及びV'を満たすのに十分な数の三つ組を生成するのに必要な回数だけ乗算三つ組生成プロセス102を実行する。
図11に示すように、各パーティの回路検証プロセス106は、バッファベクトルV及びV'を、それぞれのサイズがX'=X-CであるL個の部分配列V(1)、...、V(L)、及びV'(1)、...、V'(L)にそれぞれ分割する(ステップS302)。
回路計算プロセス104による回路計算の結果は、それぞれが秘密分散入力(secrete shared inputs)および秘密分散出力(secrete shared outputs)を含む一連のゲートとして見ることができる。
加算ゲートの場合、非対話型プロトコルであるため、ゲートが他のパーティのデータを操作できるという意味で、いずれのパーティも他のパーティに対して効果的に悪意を持つことはできない。
乗算ゲートの場合、パーティは効果的に悪意のある動作をすることができる。したがって、一連の乗算ゲートの妥当性のみを検証すれば十分である。ここで、一連の乗算ゲートをQと称する。
一連の乗算ゲートの数をM'とし、L'に対して、M'=X'L'+K(ただし、X'=X-C、及び、K < X')。
図11に示すように、Qを、順次Q(1)、...、Q(L')、及びQ(L' + 1)に分割し、Q(1)、...、Q(L')はサイズX'であり、Q(L'+1)はサイズKである(ステップS303)。
i=1〜L'+1について(ステップS304)、以下のステップS305乃至S308を実行する。
<ステップS305>
各パーティの回路検証プロセス106は、バッファベクトルV'から1つの部分配列をランダムに選ぶ。この部分配列をランダムにシャッフルしてもよい。これを部分配列S(i)と称する。
<ステップS306〜S307>
j=1〜X'の場合、各パーティの回路検証プロセス106は、S(i)のj番目の組(乗算三つ組)を用いて、Q(i)のj番目の組(回路内のゲートのj番目の三つ組)を検証する。i = L'+ 1の場合、jはX'ではなくKまでである。例えば、([x], [y])がj番目の三つ組への入力配線のシェアであり、[z]がj番目のfQ(i)の出力配線のシェアであるとすると、パーティは、([x], [y], [z])及び([a(j)], [b(j)], [c(j)])に対して三つ組の検証を行い、([x], [y], [z])を検証する。すなわち、関連するゲートの計算が正しく実行されたことを検証する。いずれかのパーティがすべての処理を受け入れない場合、当該パーティは「停止(Abort)」を他のパーティに送信する。
<ステップS308>
各パーティの回路検証プロセス106は、V'のS(i)をV(i)に置き換え、VのV(i)を削除する。
<ステップS309〜S310>
上記の処理が完了すると、j=L'+2〜M’の全てについて、各パーティの回路検証プロセス106は、V(j)をV(j-L'+1)にリネーム(rename)する。ここで、M'は、V(M' + 1)が空になる。
なお、上記の改名ステップ(S309〜S310)では、V(j)が補充されない限り、一部のjに対してV(j)は空になる。
上記の処理により、バッファベクトルV内のすべての部分配列(subarray)が削除される。そして、これは、乗算三つ組生成プロセス102により補充できる。バッファベクトルV内の三つ組は、予め設定された大きいサイズのチャンクによってのみ消費され補充される。
M/2個の三つ組が、LK+M個の三つ組から選択され、上記のように検証されたものとする。GとTを適切な値として、この検証で正しく生成されていない三つ組を検出しない確率は、1/T個を超える三つ組が正しく生成されない場合、G未満になる。
上記の実施形態において、1つの三つ組を検証するためにB-1個の三つ組を用いるため、乗算三つ組生成プロセス102の出力が、(1/T)^B個を超える数の正しく生成されていない三つ組を含む確率はGになる(^はべき乗演算子)。
選択されたGが非常に小さい確率なため、システムのユーザはTを増大させることでこれを無視できるとする(これは常に可能である)。ユーザは、正しく生成されていない三つ組の予想数を(このような悪意のある三つ組の生成が検出されない場合)、Bを増大させることによって減らすことができる。
バッファベクトルV'に格納されている三つ組は、回路内のゲートの三つ組が生成された後にランダムに選択されるため、悪意のあるパーティは、バッファベクトルV'の三つ組の非常に小さな部分が正しく生成されない場合でも、検出される危険を冒さずに上記ゲートの計算を偽ることはできない。
バッファベクトルV'は、その要素(V'(i):ランダムに選ばれシャッフルされる)が検証に用いられた後、常にバッファベクトルVから補充されるため、三つ組が選択される集合のサイズは、同じで十分な大きさのままである。これにより、悪意のあるゲート計算を検出する能力は高く保たれる。さらに、この処理では、消費された三つ組が即座に補充されるため、バッファベクトルV'における消費された三つ組の位置を記憶するためのメモリは必要ない。
バッファベクトルV内の乗算三つ組は、予め設定された(大きい)サイズのチャンクによってのみ消費され補充される。消費される三つ組は、バッファベクトルV内でランダムに分散される訳ではなく、最後に消費された三つ組の位置を使用して順番に消費されるため、バッファ管理が簡単になる。
シャッフル操作は2つの方法で実行される。その内の1つは、短い列における細かいシャッフルである。列を十分に短くすることにより、キャッシュメモリに置き、高速操作を達成することができる。
他の1つの方法は、シャッフルされる単位が上記の列である長い列の粗いシャッフルである。データのみが特定のサイズのチャンク内で移動するため、各三つ組に対する操作コストは小さくなる。
上記の2つのシャッフルの組み合わせは、全体として完全なシャッフルにはならないが、本発明の実施形態が関与する秘匿性には十分である。したがって、高速操作で十分に高い秘匿性が得られる。
本発明の実施形態により、各パーティは、他のパーティの入力を知ることなく、分散した方法で入力の任意の関数を計算することが可能になる。
あるパーティがプロトコルに従わない場合、他のパーティはこれを検知できる。このような計算方法は、マシンのマルウェア又はマシンの操作者がデータを盗もうとする可能性がある、機密データが処理されるサービスに適用できる。
上記のパーティは、例えば図12に示されるようなコンピュータシステム上で実現されてもよい。図12を参照すると、コンピュータ装置110は、プロセッサ(Central Processing Unit)112と、例えば半導体メモリ(例えばRAM(Random Access Memory)、ROM(Read Only Memory)、EEPROM(Electrically Erasable Programmable ROM))、及び/又はHDD(Hard Disk Drive)、CD(Compact Disc)、DVD(Digital Versatile Disc)のうち少なくとも1つを含む記憶装置などを含むメモリ114と、表示装置116(ディスプレイ)と、通信インタフェース118とを含む。通信インタフェース118(ネットワークインタフェースコントローラ(Network Interface Controller;NIC)など)は、他のパーティと通信するように構成されてもよい。図2のパーティの処理を実行するプログラムは、メモリ114に記憶されており、プロセッサ112が、メモリからプログラムを読み取り、プログラムを実行して秘密計算を行うパーティを実現する。
なお、上記非特許文献1乃至5の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせ乃至選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
100 パーティ
102 乗算三つ組生成プロセス
104 回路計算プロセス
106 回路検証プロセス
110 コンピュータ装置
112 プロセッサ
114 メモリ
116 表示装置
118 通信インタフェース

Claims (16)

  1. 複数のパーティの各々が、各々の入力を他のパーティに明かすことなく、所定の関数をそれぞれ計算するマルチパーティ計算方法であって、
    前記複数のパーティの各々が、前記関数の計算が正しく実行されたことを確認する確認ステップを含み、
    前記確認ステップは、
    複数の検証済みの乗算三つ組(multiplication triple)を用意しておき、要求されると、少なくとも1つの乗算三つ組を第2のステップに供給する第1のステップと、
    前記第1のステップで生成されランダムに選択された乗算三つ組を消費する前記第2のステップと、
    を含み、
    前記第1のステップは、前記生成された乗算三つ組のシャッフルを、1つの列内でのシャッフルと、列のシャッフルとのうち少なくとも1つで行う、ことを特徴とするマルチパーティ計算方法。
  2. 複数のパーティの各々が、各々の入力を他のパーティに明かすことなく、所定の関数をそれぞれ計算するマルチパーティ計算方法であって、
    前記複数のパーティの各々が、前記関数の計算が正しく実行されたことを確認する確認ステップを含み、
    前記確認ステップは、
    複数の確認済みの乗算三つ組(multiplication triple)を用意しておき、要求されると、少なくとも1つの乗算三つ組を第2のステップに供給する第1のステップと、
    前記第1のステップで生成されランダムに選択された乗算三つ組を消費する前記第2のステップと、
    を含み、
    前記第1のステップは、要求されると、全体の中からランダムに選択された乗算三つ組を提供する第1のバッファを用い、前記第1のバッファは第2のバッファから順次補充される、ことを特徴とするマルチパーティ計算方法。
  3. 前記第1のステップは、要求されると全体の中からランダムに選択された乗算三つ組を提供する第1のバッファを用い、前記第1のバッファは第2のバッファから順次補充される、ことを特徴とする請求項1に記載のマルチパーティ計算方法。
  4. 前記第2のステップは、前記関数に相当する回路のゲートの三つ組(triple)が生成された後、前記第1のバッファに格納された前記乗算三つ組をランダムに選択する、ことを特徴とする請求項2又は3に記載のマルチパーティ計算方法。
  5. ランダムに選択されシャッフルされた要素が検証に用いられた直後、前記第1のバッファのベクトルは、前記第2のバッファから補充され、三つ組(triple)が選択される前記第1のバッファのサイズを同じに保つ、ことを特徴とする請求項2乃至4のいずれか一項に記載のマルチパーティ計算方法。
  6. 前記第2のバッファ内の乗算三つ組は、予め設定されたサイズのチャンクによって消費され補充される、ことを特徴とする請求項2乃至5のいずれか一項に記載の方法。
  7. 前記第1のステップは、複数の乗算三つ組を用いて1つの乗算三つ組を検証する、ことを特徴とする請求項2乃至6のいずれか一項に記載の方法。
  8. メモリを有し、所定の関数のマルチパーティ計算が正しく実行されていることを確認するための回路確認プロセス(circuit validation process)を実行するプロセッサを含み、
    前記回路確認プロセスは、
    複数の確認済みの乗算三つ組(multiplication triple)を用意しておき、要求されると、少なくとも1つの乗算三つ組を第2の処理に供給する第1の処理と、
    前記第1の処理で生成され、ランダムに選択された乗算三つ組を消費する前記第2の処理と、
    を含み、
    前記第1の処理では、前記生成された乗算三つ組のシャッフルを、1つの列内でのシャッフルと、列のシャッフルと、のうち少なくとも一つにて行う、ことを特徴とするマルチパーティ計算装置。
  9. メモリを有し、所定の関数のマルチパーティ計算が正しく実行されていることを確認するための回路確認プロセス(circuit validation process)を実行するプロセッサを含み、
    前記回路確認プロセスは、
    複数の確認済みの乗算三つ組を用意し、要求されると、少なくとも1つの乗算三つ組(multiplication triple)を第2の処理に供給する第1の処理と、
    前記第1の処理で生成され、ランダムに選択された乗算三つ組(multiplication triple)を消費する前記第2の処理と、
    を含み、
    前記第1の処理は、要求されると、全体の中からランダムに選択された乗算三つ組を提供する第1のバッファを含み、
    前記第1のバッファは第2のバッファから、順次、補充される、ことを特徴とするマルチパーティ計算装置。
  10. 前記第1の処理は、要求されると、全体の中からランダムに選択された乗算三つ組を提供する第1のバッファを含み、
    前記第1のバッファは、第2のバッファから順次補充される、ことを特徴とする請求項9に記載のマルチパーティ計算装置。
  11. 前記第2の処理は、前記関数に相当する回路のゲートの三つ組(triple)が生成された後、前記第1のバッファに格納された前記乗算三つ組をランダムに選択する、ことを特徴とする請求項9又は10に記載のマルチパーティ計算装置。
  12. 前記第2の処理は、ランダムに選択されシャッフルされた要素が検証に用いられた直後、前記第1のバッファのベクトルを、前記第2のバッファから補充し、三つ組(triple)が選択される前記第1のバッファのサイズを同じに保つ、ことを特徴とする請求項9乃至11のいずれか一項に記載のマルチパーティ計算装置。
  13. 前記第2の処理は、前記第2のバッファ内の三つ組(triple)を、予め設定されたサイズのチャンクによって消費し補充する、ことを特徴とする請求項9乃至12のいずれか一項に記載のマルチパーティ計算装置。
  14. 前記第1の処理は、複数の乗算三つ組を用いて1つの乗算三つ組を検証する、ことを特徴とする請求項9乃至13のいずれか一項に記載のマルチパーティ計算装置。
  15. 所定の関数のマルチパーティ計算が正しく実行されていることを確認する回路確認プロセスをコンピュータに実行させるプログラムであって、
    前記回路確認プロセスは、
    複数の確認済みの乗算三つ組(multiplication triple)を用意し、要求されると少なくとも1つの乗算三つ組を第2の処理に供給する第1の処理と、
    前記第1の処理で生成され、ランダムに選択された乗算三つ組を消費する前記第2の処理と、
    を含み、
    前記第1の処理では、列内におけるシャッフルと、列のシャッフルと、のうち少なくとも一つにて、前記生成された乗算三つ組のシャッフルを行う、ことを特徴とするプログラム。
  16. 所定の関数のマルチパーティ計算が正しく実行されていることを確認する回路確認プロセスをコンピュータに実行させるプログラムであって、
    前記回路確認プロセスは、
    複数の確認済みの乗算三つ組(multiplication triple)を用意し、要求されると、少なくとも1つの乗算三つ組を第2の処理に供給する第1の処理と、
    前記第1の処理で生成され、ランダムに選択された乗算三つ組(multiplication triple)を消費する前記第2の処理と、
    を含み、
    前記第1の処理は、要求されると、全体の中からランダムに選択された乗算三つ組を提供する第1のバッファを用い、
    前記第1のバッファには、第2のバッファから、乗算三つ組が、順次、補充される、ことを特徴とするプログラム。
JP2019563914A 2017-05-18 2017-05-18 秘密計算方法、装置、およびプログラム Active JP6973868B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2017/018747 WO2018211676A1 (en) 2017-05-18 2017-05-18 Multiparty computation method, apparatus and program

Publications (2)

Publication Number Publication Date
JP2020519969A true JP2020519969A (ja) 2020-07-02
JP6973868B2 JP6973868B2 (ja) 2021-12-01

Family

ID=64274482

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019563914A Active JP6973868B2 (ja) 2017-05-18 2017-05-18 秘密計算方法、装置、およびプログラム

Country Status (3)

Country Link
US (1) US11334353B2 (ja)
JP (1) JP6973868B2 (ja)
WO (1) WO2018211676A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113434886A (zh) * 2021-07-01 2021-09-24 支付宝(杭州)信息技术有限公司 联合生成用于安全计算的数据元组的方法及装置

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6713585B2 (ja) * 2017-07-05 2020-06-24 日本電信電話株式会社 秘密計算システム、秘密計算装置、秘密計算方法、プログラム、および記録媒体
IT201900021576A1 (it) 2019-11-19 2021-05-19 Intesa Sanpaolo Innovation Center S P A Metodo di multiparty computation
CN111143894B (zh) * 2019-12-24 2022-01-28 支付宝(杭州)信息技术有限公司 一种提升安全多方计算效率的方法及系统
WO2021230771A2 (en) * 2020-05-12 2021-11-18 Ubic Technologies Llc Method of piece data synchronization describing a single entity and stored in different databases
CN112953700B (zh) * 2021-01-26 2022-03-22 西安电子科技大学 一种提升安全多方计算效率的方法、系统及存储介质
CN114615282B (zh) * 2022-05-10 2022-08-23 富算科技(上海)有限公司 多方安全计算方法、电子设备及可读存储介质

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4101975B2 (ja) 1998-12-02 2008-06-18 オリンパス株式会社 可搬型記憶媒体を用いたデータ記録/再生装置
GB2355140B (en) * 1999-10-05 2003-09-03 Mitel Corp Security mechanism and architecture for collaborative software systems using tuple space
US6772339B1 (en) 2000-03-13 2004-08-03 Lucent Technologies Inc. Mix and match: a new approach to secure multiparty computation
EP1374188A2 (en) * 2001-03-24 2004-01-02 Votehere Inc. Verifiable secret shuffles and their application to electronic voting
US7584354B2 (en) * 2003-01-31 2009-09-01 Intel Corporation Implementing portable content protection to secure secrets
US20110040762A1 (en) * 2009-08-12 2011-02-17 Globalspec, Inc. Segmenting postings list reader
US20120002811A1 (en) 2010-06-30 2012-01-05 The University Of Bristol Secure outsourced computation
US8881295B2 (en) * 2010-09-28 2014-11-04 Alcatel Lucent Garbled circuit generation in a leakage-resilient manner
JP5438650B2 (ja) 2010-09-30 2014-03-12 日本電信電話株式会社 不正検知方法、秘密計算システム、計算装置、計算プログラム
EP2689554B1 (en) 2011-06-28 2018-08-08 NEC Corporation Method and system for obtaining a result of a joint public function for a plurality of parties
JP2013142927A (ja) 2012-01-06 2013-07-22 Hitachi Ltd 物理乱数生成装置を搭載した計算機及び物理乱数生成装置の制御方法
WO2015107952A1 (ja) 2014-01-17 2015-07-23 日本電信電話株式会社 秘密計算方法、秘密計算システム、ランダム置換装置及びプログラム
US10950144B2 (en) 2014-12-26 2021-03-16 Nippon Telegraph And Telephone Corporation Secret falsification detecting system, secret computation apparatus, secret falsification detecting method, and program
WO2016159357A1 (ja) 2015-04-03 2016-10-06 日本電気株式会社 秘密計算システム、サーバ装置、秘密計算方法、および、プログラム
JP6053238B2 (ja) 2016-01-13 2016-12-27 日本電信電話株式会社 秘密改ざん検知システム、秘密計算装置、秘密改ざん検知方法、およびプログラム
AU2017278253A1 (en) * 2016-06-06 2019-01-24 Agilepq, Inc. Data conversion systems and methods

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113434886A (zh) * 2021-07-01 2021-09-24 支付宝(杭州)信息技术有限公司 联合生成用于安全计算的数据元组的方法及装置
CN113434886B (zh) * 2021-07-01 2022-05-17 支付宝(杭州)信息技术有限公司 联合生成用于安全计算的数据元组的方法及装置

Also Published As

Publication number Publication date
WO2018211676A1 (en) 2018-11-22
JP6973868B2 (ja) 2021-12-01
US20210334099A1 (en) 2021-10-28
US11334353B2 (en) 2022-05-17

Similar Documents

Publication Publication Date Title
JP6973868B2 (ja) 秘密計算方法、装置、およびプログラム
US11552797B2 (en) Multi-party threshold authenticated encryption
US20200259800A1 (en) Fast oblivious transfers
US11316676B2 (en) Quantum-proof multiparty key exchange system, quantum-proof multiparty terminal device, quantum-proof multiparty key exchange method, program, and recording medium
CN104429019B (zh) 秘密分散系统、数据分散装置、分散数据变换装置以及秘密分散方法
CN111512589A (zh) 用于利用spdz的快速安全多方内积的方法
TWI821248B (zh) 用以移轉數位資產支配權之電腦實施方法及系統
CN111066285A (zh) 基于sm2签名恢复公钥的方法
US11804960B2 (en) Distributed symmetric encryption
CN112765652B (zh) 叶节点分类权值的确定方法、装置、及设备
CN107888385B (zh) Rsa模数生成方法、rsa密钥生成方法、计算机设备及介质
US9660813B1 (en) Dynamic privacy management for communications of clients in privacy-preserving groups
CN111740815A (zh) 基于密文的两方秘密分享方法、装置、设备及存储介质
US20210157955A1 (en) Bit decomposition secure computation apparatus, bit combining secure computation apparatus, method and program
CN116248359A (zh) 一种基于不经意传输协议的数据传输系统、方法及装置
WO2023055371A1 (en) Replicated secret share generation for distributed symmetric cryptography
CN115336224A (zh) 自适应抗攻击分布式对称加密
WO2020169996A1 (en) Matrix-based cryptographic methods and apparatus
CN114095157B (zh) 密钥管理方法、装置、计算机设备及可读存储介质
EP4024755B1 (en) Secured performance of an elliptic curve cryptographic process
CN116800419B (zh) 密钥生成方法、装置、计算机设备和存储介质
CN117254911B (zh) 一种基于秘密分享的多方安全计算处理方法和系统
CN114499845A (zh) 多方安全计算的方法、装置及系统
JPWO2020058806A5 (ja)
JP2024515092A (ja) ネストされた閾値署名

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210423

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211028

R150 Certificate of patent or registration of utility model

Ref document number: 6973868

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150