JP7334789B2 - 秘密計算システム、秘密計算サーバ、補助サーバ、秘密計算方法及びプログラム - Google Patents

秘密計算システム、秘密計算サーバ、補助サーバ、秘密計算方法及びプログラム Download PDF

Info

Publication number
JP7334789B2
JP7334789B2 JP2021550924A JP2021550924A JP7334789B2 JP 7334789 B2 JP7334789 B2 JP 7334789B2 JP 2021550924 A JP2021550924 A JP 2021550924A JP 2021550924 A JP2021550924 A JP 2021550924A JP 7334789 B2 JP7334789 B2 JP 7334789B2
Authority
JP
Japan
Prior art keywords
carry
share
secure computing
secure
server
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
JP2021550924A
Other languages
English (en)
Other versions
JPWO2021064996A1 (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 JPWO2021064996A1 publication Critical patent/JPWO2021064996A1/ja
Application granted granted Critical
Publication of JP7334789B2 publication Critical patent/JP7334789B2/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
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • 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/544Methods 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 for evaluating functions by calculation
    • 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
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0485Networking architectures for enhanced packet encryption processing, e.g. offloading of IPsec packet processing or efficient security association look-up

Landscapes

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

Description

本発明は、秘密計算システム、秘密計算サーバ、補助サーバ、秘密計算方法及びプログラムに関する。
近年、秘密計算と称される技術の研究開発が盛んに行われている(例えば、特許文献1や非特許文献1参照)。秘密計算は、第3者に対して計算過程とその結果を秘匿しつつ所定の処理を実行する技術である。秘密計算では、データを複数のサーバ(秘密計算サーバ)に分散配置し、当該データに対して任意の演算を実行することができる。
非特許文献2や非特許文献3には、ビット分解やビット結合等の秘密計算にて用いられる型変換処理が記載されている。
国際公開2015/053185号
Toshinori ARAKI, et al、"High-Throughput Semi-Honest Secure Three-Party Computation with an Honest Majority"、Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security. ACM, 2016. p. 805-817、2016 Toshinori ARAKI, et al、"Generalizing the SPDZ Compiler For Other Protocols. "、Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security. ACM, 2018. p. 880-895、2018 Toshinori ARAKI, et al、"How to Choose Suitable Secure Multiparty Computation Using Generalized SPDZ"、CCS ’18, October 15-19, 2018
秘密計算は、任意の演算を実行することが可能であるが、データが複数の秘密計算サーバに分散配置されているという特殊性から秘密計算に特有な処理が存在する。上記非特許文献3等に開示された型変換の1つである「ビット埋め込み」も秘密計算に特有な処理といえる。秘密計算において、特定のアプリケーションの実現にあたりビット埋め込みをサブルーチンとして実行することがある。とりわけ、ビット埋め込みを並列に実行することがある。ビット埋め込みを並列に実行すると、並列度(並列に実行するビット埋め込みに関するサブルーチンの個数)に比例して秘密計算サーバ間の通信量が増加してしまう。
本発明は、ビット埋め込みが並列実行される際の効率的な処理を実現する、秘密計算システム、秘密計算サーバ、補助サーバ、秘密計算方法及びプログラムを提供することを主たる目的とする。
本発明の第1の視点によれば、少なくとも3台以上の秘密計算サーバと、前記少なくとも3台以上の秘密計算サーバと接続された補助サーバと、を含み、前記少なくとも3台以上の秘密計算サーバのそれぞれは、算術演算のシェアを2進数として扱い加算した場合に繰り上がりが発生するか否かを示すキャリーを計算するためのキャリー計算情報を前記補助サーバに送信し、前記補助サーバは、受信した前記キャリー計算情報に基づいて前記キャリーを計算し、前記計算されたキャリーを用いて論理演算のシェアから算術演算のシェアを計算する際の調整値を計算すると共に、前記計算された調整値を前記少なくとも3台以上の秘密計算サーバに分散し、前記少なくとも3台以上の秘密計算サーバのそれぞれは、前記調整値の分散値を用いて論理演算のシェアを算術演算のシェアに変換する、秘密計算システムが提供される。
本発明の第2の視点によれば、補助サーバと接続され、算術演算のシェアを2進数として扱い加算した場合に繰り上がりが発生するか否かを示すキャリーを計算するためのキャリー計算情報を前記補助サーバに送信し、前記補助サーバから、前記キャリーを用いて論理演算のシェアから算術演算のシェアを計算する際の調整値の分散値を取得し、前記調整値の分散値を用いて論理演算のシェアを算術演算のシェアに変換する、秘密計算サーバが提供される。
本発明の第3の視点によれば、少なくとも3台以上の秘密計算サーバと接続され、前記少なくとも3台以上の秘密計算サーバのそれぞれが送信する、算術演算のシェアを2進数として扱い加算した場合に繰り上がりが発生するか否かを示すキャリーを計算するためのキャリー計算情報を受信し、受信したキャリー計算情報に基づいて前記キャリーを計算し、前記計算されたキャリーを用いて論理演算のシェアから算術演算のシェアを計算する際の調整値を計算すると共に、前記計算された調整値を前記少なくとも3台以上の秘密計算サーバに分散する、補助サーバが提供される。
本発明の第4の視点によれば、少なくとも3台以上の秘密計算サーバと、前記少なくとも3台以上の秘密計算サーバと接続された補助サーバと、を含む秘密計算システムにおいて、前記少なくとも3台以上の秘密計算サーバのそれぞれが、算術演算のシェアを2進数として扱い加算した場合に繰り上がりが発生するか否かを示すキャリーを計算するためのキャリー計算情報を前記補助サーバに送信するステップと、前記補助サーバが、受信した前記キャリー計算情報に基づいて前記キャリーを計算し、前記計算されたキャリーを用いて論理演算のシェアから算術演算のシェアを計算する際の調整値を計算すると共に、前記計算された調整値を前記少なくとも3台以上の秘密計算サーバに分散するステップと、
前記少なくとも3台以上の秘密計算サーバのそれぞれが、前記調整値の分散値を用いて論理演算のシェアを算術演算のシェアに変換するステップと、を含む、秘密計算方法が提供される。
本発明の第5の視点によれば、コンピュータに、算術演算のシェアを2進数として扱い加算した場合に繰り上がりが発生するか否かを示すキャリーを計算するためのキャリー計算情報を前記補助サーバに送信する処理と、前記補助サーバから、前記キャリーを用いて論理演算のシェアから算術演算のシェアを計算する際の調整値の分散値を取得する処理と、前記調整値の分散値を用いて論理演算のシェアを算術演算のシェアに変換する処理と、を実行させるプログラムが提供される。
本発明の各視点によれば、ビット埋め込みが並列実行される際の効率的な処理を実現する、秘密計算システム、秘密計算サーバ、補助サーバ、秘密計算方法及びプログラムが提供される。なお、本発明により、当該効果の代わりに、又は当該効果と共に、他の効果が奏されてもよい。
一実施形態の概要を説明するための図である。 第1の実施形態に係る秘密計算システムの概略構成の一例を示す図である。 算術上の排他的論理和を説明するための図である。 第1の実施形態に係る制御サーバの処理構成の一例を示す図である。 第1の実施形態に係る秘密計算サーバの処理構成の一例を示す図である。 第1の実施形態に係る補助サーバの処理構成の一例を示す図である。 第1の実施形態に係る秘密計算システムの動作の一例を示すシーケンス図である。 秘密計算サーバのハードウェア構成の一例を示す図である。
はじめに、一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。なお、本明細書及び図面において、同様に説明されることが可能な要素については、同一の符号を付することにより重複説明が省略され得る。
一実施形態に係る秘密計算システムは、少なくとも3台以上の秘密計算サーバ101と、少なくとも3台以上の秘密計算サーバ101と接続された補助サーバ102と、を含む(図1参照)。少なくとも3台以上の秘密計算サーバ101のそれぞれは、算術演算のシェアを2進数として扱い加算した場合に繰り上がりが発生するか否かを示すキャリーを計算するためのキャリー計算情報を補助サーバ102に送信する。補助サーバ102は、受信したキャリー計算情報に基づいてキャリーを計算し、計算されたキャリーを用いて論理演算のシェアから算術演算のシェアを計算する際の調整値を計算する。補助サーバ102は、計算された調整値を少なくとも3台以上の秘密計算サーバ101に分散する。少なくとも3台以上の秘密計算サーバ101のそれぞれは、調整値の分散値を用いて論理演算のシェアを算術演算のシェアに変換する。
詳細については後述するが、論理演算のシェアを算術演算のシェアに変換するビット埋め込みでは、算術上の排他的論理和を計算する必要がある。この算術上の排他的論理和を計算する際に乗算が必要となる。秘密計算では、乗算を計算するためには秘密計算サーバ101の間で相互に通信する必要がある。当該通信は、ビット埋め込みごとに生じるものであるから、ビット結合のように複数のビット埋め込み処理が並列に実行されると通信量が増加してしまう。
このような不都合を解消するため、上記秘密計算システムでは、秘密計算サーバ101の動作を補助する補助サーバ102を活用する。補助サーバ102は、上記算術上の排他的論理和を実行せず、算術演算のシェアを単に加算した場合に桁上がりが発生するか否かを、キャリーを計算することで検出する。補助サーバ102は、桁上がりが発生する場合には、当該桁上がりをキャンセルするような調整値を生成し、秘密計算サーバ101に分散する。秘密計算サーバ101は、取得した調整値を用いて算術演算のシェアを加算することで、桁上がりの影響を排除し、整合性の取れた計算結果(ビット埋め込みの結果)を効率的に得ることができる。
以下に具体的な実施形態について、図面を参照してさらに詳しく説明する。
[第1の実施形態]
第1の実施形態について、図面を用いてより詳細に説明する。
[システム構成]
図2は、第1の実施形態に係る秘密計算システムの概略構成の一例を示す図である。図2を参照すると、秘密計算システムは、制御サーバ10と、秘密計算サーバ20-1~20-3と、補助サーバ30と、を含んで構成される。なお、以降の説明において、秘密計算サーバ20-1~20-3を区別する特段の理由がない場合には単に「秘密計算サーバ20」と表記する。
制御サーバ10、秘密計算サーバ20及び補助サーバ30は、相互に通信可能なように有線又は無線により接続されている。
制御サーバ10は、秘密計算サーバ20における秘密計算を制御する装置である。具体的には、制御サーバ10は、秘密計算サーバ20に対するデータの入力及び出力を制御する。
秘密計算サーバ20は、秘密計算を実行する装置である。秘密計算サーバ20は、制御サーバ10から取得したデータ(秘密分散するデータ)に対して所定の処理を実行する。当該所定の処理としては、取得したデータ同士の演算や取得したデータを検索キーとするデータベースの検索等が例示される。秘密計算サーバ20は、他の秘密計算サーバ20と協働して上記所定の処理を実行する。その際、秘密計算サーバ20は、他の秘密計算サーバ20との間でデータの送受信を行う。
秘密計算サーバ20は、(2、3)閾値のアクセス構造を有する複製秘密分散(以下、(2、3)秘密分散と表記する)を用いた秘密計算を実行する。(2、3)秘密分散では、入力されたデータ(秘密情報)から3つの分散情報(シェア)が生成される。(2、3)秘密分散では、分散情報を閾値(=2)以上の個数を集めることにより元の値(秘密情報)が復元される。即ち、2つ以上の分散情報から元の値を復元することができるが、1つ以下の分散情報から元の値は得られない。
秘密計算サーバ20は、計算結果を制御サーバ10に送信(応答)する。秘密計算サーバ20は、計算結果を制御サーバ10とは異なる装置に送信してもよい。
補助サーバ30は、秘密計算サーバ20による秘密計算を保持する装置である。詳細については、後述するが、補助サーバ30は、秘密計算サーバ20がビット埋め込みを効率的に実行できるように動作する。なお、補助サーバ30は、「セミオネストな攻撃者」であると想定する。セミオネストな攻撃者とは、秘密計算にて定められたプロトコルに従う範囲で可能な限り情報を取得しようとする攻撃者である。
なお、図2に示す構成は例示であって秘密計算システムの構成を限定する趣旨ではない。秘密計算システムには、少なくとも3台以上の秘密計算サーバ20が含まれていればよい。また、図2には制御サーバ10を図示しているが、秘密計算に用いられる値が予め秘密計算サーバ20に分散配置されている場合等には、制御サーバ10が不要な場合もある。
[記法]
記法の定義を行う。
2を法とする剰余類環を、
Figure 0007334789000001
とする。
を法とする剰余類環を、
Figure 0007334789000002
とする(kは自然数、以下同じ)。
2を法とする剰余類環に属するシェアを[x]と表記する。2を法とする剰余類環に属するシェアを[x]と表記する。2を法とする剰余類環に属するシェアは「ビットのシェア」又は「論理演算のシェア」とも表記する。2を法とする剰余類環に属するシェアは「リングのシェア」又は「算術演算のシェア」とも表記する。
続いて、本願開示に関わる秘密計算の型変換に関する説明を行う。秘密計算の型変換には、「ビット分解(bit decomposition)」、「ビット埋め込み(bit injection)」、「ビット結合(bit recomposition)」が存在する。
[ビット分解]
ビット分解とは、算術演算向けの分散情報を論理演算向けの分散情報に変換する処理である。ビット分解は、秘密分散された値を10進数のシェアから2進数のシェアに変換する。
例えば、整数「5」が秘密計算サーバ20に分散配置される場合を考える。この場合、法を8(2)とすれば、整数5は、x=x+x+x mod2を満たすように分散される。例えば、整数5はx=1、x=2、x=2のように分散される。なお、算術演算のシェアが満たすべきフォーマットは下記の式(1)のとおりである。なお、「mod」は剰余演算である。
Figure 0007334789000003
上記のように分散された場合、各パーティ(秘密計算サーバ20)は、以下のような情報を保持することになる。
・秘密計算サーバ20-1:(x、x)=(1、2)
・秘密計算サーバ20-2:(x、x)=(2、2)
・秘密計算サーバ20-3:(x、x)=(2、1)
次に、各秘密計算サーバ20が保持するシェアの要素(サブシェア)が2進数に変換され、当該2進数に変換されたビットの各桁が取り出される。具体的には、(x、xi+1)からjビット目が切り出される。なお、本願開示において、iは秘密計算サーバ20を特定するサフィックス(i=1、2、3)である。i=3の場合には、i+1=4=1とする。jは2進数の桁を示す0以上、k-1以下の整数である。また、本願開示において、数値の前に記載した「b」は当該数値が2進数表記されていることを示す。
上記の例では、x=1の2進数表記はb001であり、0ビット目(最下位ビット)の1、1ビット目の0、2ビット目の0が取り出される。同様に、x=x=2の2進数表記はb010であり、0ビット目の0、1ビット目の1、2ビット目の0が取り出される。なお、jビット目のシェアを切り出す動作は秘密計算サーバ20間の通信は不要である。
各秘密計算サーバ20が取り出したjビット目のシェアは下記の通り記載できる。
・秘密計算サーバ20-1:(x、x
・秘密計算サーバ20-2:(x、x
・秘密計算サーバ20-3:(x、x
j=0の場合は、
・秘密計算サーバ20-1:(x、x)=(1、0)
・秘密計算サーバ20-2:(x、x)=(0、0)
・秘密計算サーバ20-3:(x、x)=(0、1)
となる。
j=1の場合は、
・秘密計算サーバ20-1:(x、x)=(0、1)
・秘密計算サーバ20-2:(x、x)=(1、1)
・秘密計算サーバ20-3:(x、x)=(1、0)
となる。
j=2の場合は、
・秘密計算サーバ20-1:(x、x)=(0、0)
・秘密計算サーバ20-2:(x、x)=(0、0)
・秘密計算サーバ20-3:(x、x)=(0、0)
となる。
次に、各秘密計算サーバ20は、ローカルリシェア(Local re-share)により、jビット目のシェア(x、xi+1)を論理演算向けの分散情報(シェア)に変換する。具体的には、各秘密計算サーバ20は、jビット目のシェア(x、xi+1)を論理演算のシェアのフォーマットを満たすように変換する。なお、論理演算のシェアが満たすべきフォーマットは下記の式(2)のとおりである。
Figure 0007334789000004
なお、式(2)において、
Figure 0007334789000005
は排他的論理和を示す演算子である。
jビット目のシェアを論理演算のシェアのフォーマットに変換すると、各秘密計算サーバ20は下記のシェアを保持する。
秘密計算サーバ20-1は以下のシェアを保持する。
(x、0)
(0、x
(0、0)
秘密計算サーバ20-2は以下のシェアを保持する。
(0、0)
(x、0)
(0、x
秘密計算サーバ20-3は以下のシェアを保持する。
(0、x
(0、0)
(x、0)
算術演算のシェア(式(1)参照)をなす各要素(x、x、x)の論理演算のシェア(ビットのシェア)は下記の通りとなる。
[x]=(x、0) (0、0) (0、x
[x]=(0、x) (x、0) (0、0)
[x]=(0、0) (0、x) (x、0)
なお、上記論理演算のシェアにおいて、左の括弧は秘密計算サーバ20-1が保持するシェア、中央の括弧は秘密計算サーバ20-2が保持するシェア、右の括弧は秘密計算サーバ20-3が保持するシェアを示す。
上記の例(数値5をビット分解する例)を論理演算のシェアとして記載すると下記の通りとなる。
0ビット目(j=0)
[x]=(1、0) (0、0) (0、1)
[x]=(0、0) (0、0) (0、0)
[x]=(0、0) (0、0) (0、0)
1ビット目(j=1)
[x]=(0、0) (0、0) (0、0)
[x]=(0、1) (1、0) (0、0)
[x]=(0、0) (0、1) (1、0)
2ビット目(j=2)
[x]=(0、0) (0、0) (0、0)
[x]=(0、0) (0、0) (0、0)
[x]=(0、0) (0、0) (0、0)
秘密計算サーバ20は、上記各要素の論理演算のシェアを用いて論理演算のシェア([x|]、j=0、・・・k-1)を計算する。具体的には、秘密計算サーバ20は、各要素の論理演算のシェアを加算器で加算することで論理演算のシェアを下記の式(3)に基づき計算する。式(3)の計算によりビット分解の処理が終了する。
Figure 0007334789000006
[ビット埋め込み]
ビット埋め込みとは、論地演算向けのビット(0、1)に関する分散情報を算術演算向けの数値(0、1)に関する分散情報に変換する処理である。ビット埋め込みは、2進数のシェアから10進数のシェアに変換する。
各秘密計算サーバ20は、論理演算のシェア(ビットのシェア)を保持する。具体的には、秘密計算サーバ20-1は、(x、x)を保持する。秘密計算サーバ20-2は、(x、x)を保持する。秘密計算サーバ20-3は、(x、x)を保持する。なお、論理演算のシェア[x]をなす要素(x、x、x)は論理演算のシェアのフォーマットである式(2)を満たす。
次に、秘密計算サーバ20は、上記各要素(x、x、x)をローカルリシェアする。その結果、各秘密計算サーバ20は、下記のシェアを保持する。
秘密計算サーバ20-1は以下のシェアを保持する。
(x、0)
(0、x
(0、0)
秘密計算サーバ20-2は以下のシェアを保持する。
(0、0)
(x、0)
(0、x
秘密計算サーバ20-3は以下のシェアを保持する。
(0、x
(0、0)
(x、0)
各要素(x、x、x)の算術演算のシェアは下記とおりとなる。
[x=(x、0) (0、0) (0、x
[x=(0、x) (x、0) (0、0)
[x=(0、0) (0、x) (x、0)
各要素の算術演算のシェアが得られると、秘密計算サーバ20は、当該シェアを用いて算術上の排他的論理和(ArithXORと表記する)により算術演算のシェア[x]を計算する(下記の式(4)参照)。
Figure 0007334789000007
ここで、通常、排他的論理和はビット(0、1)に対して行われる処理であり、数値(0、1)に対する実行は観念できない。そのため、上記算術上の排他的論理和は下記の式(5)により行われる。
Figure 0007334789000008
式(5)において右辺は通常の排他的論理和を示し、左辺が算術上の排他的論理和を示す。
算術演算のシェア[x]、[y]が取り得る値は0又は1であり、これらのシェアに関する算術上の排他的論理和は式(5)により計算できる。算術演算のシェア[x]、[y]が取り得る値とその算術上の排他的論理和の関係をまとめると図3のとおりとなる。
上述のように、ビット埋め込みでは、各要素(x、x、x)のローカルリシェアにより各要素の算術演算のシェア([x]、[x]、[x])を得ている。その後、上記式(5)により算術上の排他的論理和が計算されている。仮に、当該算術上の排他的論理和が計算されないとすると、ビット(0、1)を数値(0、1)のシェアに変換できない。具体的には、上記算術上の排他的論理和に代えて、[x]=[x+[x+[xを計算するのでは正しい変換が行えない。
例えば、x=1、x=1、x=1とすれば、[x]=3となり正しい結果とはならない。ビット埋め込みは、ビット(0、1)を数値(0、1)に変換する処理であるから、結果は「0」又は「1」である必要がある。上記例では、[x]=1となる必要がある。このような不都合を解決するため、ビット埋め込みの計算では、算術上の排他的論理和の計算が必要となる。
[ビット結合]
ビット結合とは、論理演算向けの分散情報を算術演算向けの分散情報に変換する処理である。ビット結合は、秘密分散された値を2進数のシェアから10進数のシェアに変換する。ビット結合では、(0、1)の論理演算のシェア列が入力となり、算術演算のシェアが出力される。
例えば、b0101のシェア(論理演算のシェア、ビットのシェア)が各秘密計算サーバ20に分散配置されている場合を考える。この場合、ビット結合が実行されることにより数値5のシェア(算術演算のシェア、リングのシェア)が各秘密計算サーバ20に分散配置されることになる。
第1の実施形態に係る秘密計算システムでは、ビット埋め込み時に必要となる算術上の排他的論理和の計算を不要とし、ビット埋め込み計算時の通信コスト(通信量、通信回数)、とりわけ、ビット埋め込みが並列に実行される際の通信コストを低減する。第1の実施形態に係る秘密計算システムでは、当該通信コストの低減に補助サーバ30を活用する。
続いて、秘密計算システムを構成する各装置の詳細について説明する。
図4は、第1の実施形態に係る制御サーバ10の処理構成(処理モジュール)の一例を示す図である。図4を参照すると、制御サーバ10は、通信制御部201と、分散データ生成部202と、分散データ復号部203と、を含んで構成される。
通信制御部201は、他の装置(秘密計算サーバ20)との間の通信を制御する手段である。
分散データ生成部202は、秘密計算サーバ20に配付するシェアを生成する手段である。生成されたシェアは、通信制御部201を介して各秘密計算サーバ20に配付される。
分散データ復号部203は、秘密計算サーバ20による秘密計算の結果を収集し、復元する手段である。
図5は、第1の実施形態に係る秘密計算サーバ20の処理構成(処理モジュール)の一例を示す図である。図5を参照すると、秘密計算サーバ20は、通信制御部301と、秘密計算実行部302と、を含んで構成される。
通信制御部301は、他の装置(制御サーバ10、他の秘密計算サーバ20、補助サーバ30)との間の通信を制御する手段である。
秘密計算実行部302は、所定の秘密計算を実行する手段である。秘密計算実行部302は、所定の処理を実行する際に種々のサブルーチンを用いる。例えば、秘密計算実行部302は、ビット分解、ビット埋め込み、ビット結合、ポップカウント(Pop Count)等のサブルーチンを用いる。なお、ポップカウントは、数値を2進数表記した場合の1の個数を数える処理である。
秘密計算実行部302が上記サブルーチンを計算する際の詳細な動作は、補助サーバ30の動作と合わせて説明する。
図6は、第1の実施形態に係る補助サーバ30の処理構成(処理モジュール)の一例を示す図である。図6を参照すると、補助サーバ30は、通信制御部401と、秘密計算補助部402と、を含んで構成される。
通信制御部301は、他の装置(秘密計算サーバ20)との間の通信を制御する手段である。
秘密計算補助部402は、各秘密計算サーバ20による秘密計算を補助する手段である。より具体的には、秘密計算補助部402は、各秘密計算サーバ20から「キャリー」を計算するための情報(以下、キャリー計算情報と表記する)を取得する。秘密計算補助部402は、各秘密計算サーバ20から取得したキャリー計算情報を用いて「キャリー」を計算し、当該計算したキャリーに基づき「調整値」を計算する。秘密計算補助部402は、当該計算した調整値を各秘密計算サーバ20に配布(分散)する。
上記キャリーは、各要素の算術上のシェアをビット(2進数)として扱い加算した場合に、繰り上がり(桁上がり)が発生するか否かを判定するための情報である。例えば、数値「1」と数値「1」の加算では繰り上がりが発生する。対して、数値「0」と数値「1」の加算では繰り上がりは発生しない。キャリーは上記繰り上がりの有無を判定するための情報である。
上記調整値は、各秘密計算サーバ20が算術上の排他的論理和を計算しなくとも正しい算術上のシェアを得るために各秘密計算サーバ20に配布されるデータである。当該調整値は、論理演算のシェアから算術演算のシェアを計算する際に使用される。
以下、秘密計算サーバ20及び補助サーバ30が、ビット埋め込み、ビット結合、ポップカウントに係るサブルーチンを実行する際の動作について説明する。
[ビット埋め込み]
図7は、第1の実施形態に係る秘密計算システムにてビット埋め込みが実行される際の動作の一例を示すシーケンス図である。
なお、秘密計算に先立ち、各秘密計算サーバ20の秘密計算実行部302は、シードSeed_i、Seed_i+1を生成し、他の秘密計算サーバ20との間で共有する。各秘密計算実行部302は、鍵共有といったようなプロトコルにより上記2つのシードを他の秘密計算サーバ20との間で共有する。但し、鍵共有に限らず他の方法によりシードが共有されてもよい。
また、各秘密計算実行部302は、シードSeed’を共通して所持する。シードSeed’は制御サーバ10から入力されてもよいし、複数の秘密計算サーバ20のうちの1台が当該シードを生成し、他の秘密計算サーバ20に配布してもよい。
ビット埋め込みでは、下記の論理演算のシェア
Figure 0007334789000009
が入力となる。ビット埋め込みのサブルーチンに上記シェアが入力される。ビット埋め込みでは、算術演算のシェア[x]が出力となる。
各秘密計算サーバ20の秘密計算実行部302は、相関乱数(Correlated Randomness)βを計算する(ステップS101)。相関乱数βは下記の式(6)を満たす。
Figure 0007334789000010
なお、上記相関乱数βは非特許文献1に記載された方法により計算可能であるため、その詳細な説明を省略する。相関乱数βの計算に上記シードSeed_i、Seed_i+1、Seed’が使用される。
各秘密計算実行部302は、「キャリー計算情報」を計算する。具体的には、秘密計算実行部302は、下記の式(7)に従いキャリー計算情報cを計算する(ステップS102)。なお、式(7)等に示す「・」は乗算演算を示す。
Figure 0007334789000011
なお、式(7)は、秘密計算サーバ20は、自身が保有する論理演算のシェア(x、xi+1)を、相関乱数βを用いて隠蔽し、キャリー計算情報cを生成することを示す。即ち、補助サーバ30はセミオネストな攻撃者であるという想定であり、秘密計算サーバ20は、補助サーバ30にシェアの内容が知られることがないようにキャリー計算情報cを生成している。
各秘密計算実行部302は、上記計算されたキャリー計算情報cを補助サーバ30に送信する(ステップS103)。
補助サーバ30の秘密計算補助部402は、キャリーCを計算する。キャリーCは、下記の式(8)により定義される。
Figure 0007334789000012
補助サーバ30の秘密計算補助部402は、上記キャリーCを秘密計算サーバ20から取得したキャリー計算情報cを用いて計算する(ステップS104)。具体的には、秘密計算補助部402は、下記の式(9)に従いキャリーCを計算する。
Figure 0007334789000013
なお、補助サーバ30が各秘密計算サーバ20から取得するキャリー計算情報は、相関乱数βにより隠蔽されている(式(7)参照)。従って、補助サーバ30は、取得したキャリー計算情報からシェアの要素(x、x、x)を知ることはできない。ここで、相関乱数βは式(6)に示す性質(排他的論理和が0)を備える。当該性質により式(9)の計算結果と式(8)の計算結果は一致することになる。即ち、補助サーバ30は、シェアの内容を知ることはできないが、キャリーCの計算は正しく行うことができる。
秘密計算補助部402は、キャリーCの値が「0」であるのか「1」であるのか判定する(ステップS105)。
キャリーCが「0」であれば(ステップS105、Yes分岐)、秘密計算補助部402は、調整値yに「0」を設定する(ステップS106)。
キャリーCが「1」であれば(ステップS105、No分岐)、秘密計算補助部402は、調整値yに「-2」を設定する(ステップS107)。
キャリーCと調整値yの関係を纏めると下記の式(10)のとおりとなる。
Figure 0007334789000014
秘密計算補助部402は、上記生成した調整値yのシェア[y]kを各秘密計算サーバ20に分散(配布)する(ステップS108)。
各秘密計算サーバ20の秘密計算実行部302は、ローカルリシェアにより、ビットのシェア(論理演算のシェア)[x]から各要素の算術演算のシェア[xk、[xk、[xkを生成する(ステップS109)。
秘密計算実行部302は、上記各要素の算術のシェアと調整値yのシェアを用いて算術演算のシェア[x]kを計算する(ステップS110)。具体的には、秘密計算実行部302は、下記の式(11)に基づき算術演算のシェアを計算する。
Figure 0007334789000015
上記式(11)の計算によりビット埋め込みに関する処理(サブルーチン)が終了する。このように、複数の秘密計算サーバ20のそれぞれは、調整値yの分散値を用いて論理演算のシェアを算術演算のシェアに変換する。より具体的には、秘密計算サーバ20は、調整値yの分散値を用いて、所定値xに関するビット埋め込みを実行する。
例えば、ビット「1」を数値「1」に変換(ビット埋め込みの実行)する場合を考える。この場合、ビット「1」の論理演算のシェアの要素(サブシェア)はx=1、x=1、x=1となる。式(8)によればキャリーCは「1」となる。従って、式(10)によれば、調整値yは「-2」となる。式(11)に従い算術演算のシェアを計算すると、[x]=1+1+1-2=1となる。従って、ビット「1」のシェアは数値「1」のシェアに正しく変換されていることになる。
あるいは、ビット「0」を数値「0」に変換する場合を考える。この場合、ビット「0」の論理演算のシェアの各要素はx=0、x=0、x=0となる。式(8)によればキャリーCは「0」となる。従って、式(10)によれば、調整値yは「0」となる。式(11)に従い算術演算のシェアを計算すると、[x]=0+0+0+0=0となる。従って、ビット「0」のシェアは数値「0」のシェアに正しく変換されていることになる。
[ビット結合]
続いて、秘密計算サーバ20及び補助サーバ30が、ビット結合を実行する場合について説明する。秘密計算サーバ20及び補助サーバ30は、キャリー計算情報、キャリー及び調整値を用いた、複数のビット埋め込みを並列に実行することでビット結合を実行(実現)する。
ビット結合を実行する際の秘密計算システムの基本的な動作(フロー、処理の順番)はビット埋め込み実行時と同じであり、図7に相当する説明を省略する。以下、ビット埋め込みとビット結合の相違点を中心に説明を行う。
ビット結合では、下記の論理演算のシェア列
Figure 0007334789000016
が入力となる。
ビット結合のサブルーチンに上記シェア列が入力される。ビット結合では、下記の算術演算のシェア
Figure 0007334789000017
が出力となる。
秘密計算サーバ20は、k桁のビット(j=0、1、・・・k-1)ごとに相関乱数βj、iを計算する(式(12)参照)。
Figure 0007334789000018
秘密計算サーバ20は、k桁のビットごとにキャリー計算情報を計算する(式(13)参照)。
Figure 0007334789000019
補助サーバ30は、各秘密計算サーバ20から取得したキャリー計算情報を用いてk桁のビットごとにキャリーCを計算する(式(14)参照)。
Figure 0007334789000020
補助サーバ30は、k桁のビットごとにキャリーCの値を判定し、当該判定値に基づき調整値yを計算する(式(15)参照)。
Figure 0007334789000021
補助サーバ30は、上記調整値yから下記の式(16)に示す値(各桁の調整値yに2のj乗を乗算した値の総和)を計算する。
Figure 0007334789000022
補助サーバ30は、上記式(16)により計算した値を各秘密計算サーバ20に分散する。
秘密計算サーバ20は、k桁のビットごとのローカルリシェアにより、ビットのシェア(論理演算のシェア)[x]から各要素の算術演算のシェア[xj、1k、[xj、2k、[xj、3kを生成する。
秘密計算サーバ20は、下記の式(17)により算術演算のシェア[x]を計算する。
Figure 0007334789000023
なお、式(17)は下記に示す式(18)のように書き換えることができる。秘密計算サーバ20は、式(18)において、調整値yに2のj乗を乗算した値の総和として補助サーバ30から取得した値(分散されたシェア)を用いる。
Figure 0007334789000024
上記式(18)の計算によりビット結合に関する処理(サブルーチン)が終了する。上記説明から明らかなように、ビット結合に係るサブルーチンに入力されたjビットのシェア列(ビットのシェア列)は、ビットごとに算術演算のシェア(リングのシェア)に変換される。当該変換された算術演算のシェアは、変換対象のビット列においてビットの有無を示すので各ビットに対応した冪数(2のj乗)を乗算することで2進数から10進数に変換される。
例えば、b0101というビットのシェア列がビット結合のサブルーチンに入力されると、各桁のビット(0、1)はビット埋め込みにより数値(0、1)に変換される。変換された数値(0、1)は各桁のビットの有無を示すので、上記2進数は2×0+2×1+2×0+2×1=5という10進数に変換される。
ビット結合では先に説明したビット埋め込みと同等の処理がk個並列に動作している。つまり、ビット結合では、k桁のビットごとにキャリー計算情報c、キャリーC、調整値y等が並列に計算される。従って、k個のビット埋め込みに関する処理が並列に動作することになる。
[ポップカウント]
続いて、秘密計算サーバ20及び補助サーバ30が、ポップカウントを実行する場合について説明する。秘密計算サーバ20及び補助サーバ30は、複数のビット埋め込みを並列に実行することで、数値を2進数表記した場合の1の個数を数える、ポップカウントを実行(実現)する。
なお、ポップカウントを実行する際の秘密計算システムの基本的な動作(フロー、処理の順番)はビット埋め込み、ビット結合の実行時と同じであり、図7に相当する説明を省略する。以下、ビット結合とポップカウントの相違点を中心に説明を行う。
ポップカウントの処理とビット結合の処理では、式(15)にて調整値yを計算するまで同一とすることができる。
補助サーバ30は、上記調整値yから下記の式(19)に示す値(各桁の調整値yの総和)を計算する。
Figure 0007334789000025
補助サーバ30は、上記式(19)により計算した値を各秘密計算サーバ20に分散する。
秘密計算サーバ20は、下記の式(20)により算術演算のシェア[x]を計算する。
Figure 0007334789000026
上記式(20)の計算によりポップカウントに関する処理(サブルーチン)が終了する。なお、秘密計算サーバ20は、上記式(20)の計算において、ビット結合と同様に調整値yに関する総和として補助サーバ30から取得した値を用いる。
ポップカウントに関してもビット結合と同様に、先に説明したビット埋め込みと同等の処理がk個並列に動作している。
ポップカウントに係るサブルーチンに入力されたjビットのシェア列(ビットのシェア列)は、ビットごとに算術演算のシェア(リングのシェア)に変換される。各ビットの算術演算のシェアをそのまま加算すればビット列を構成する「1」の数が算出できる。
以上のように、第1の実施形態では、補助サーバ30を活用しビット埋め込み時に必要となる算術上の排他的論理和を不実施としている。ここで、式(5)の左辺によれば、算術上の排他的論理和は、シェアの差分に関する乗算により求められる。また、k桁のビット結合ではk個のビット埋め込みが並列で処理されることになる。従って、当該k個のビット埋め込みの並列実行は、算術上の排他的論理和がk個並列に実行されることと等価である。1回の算術上の排他的論理和の計算ではkビットのデータを秘密計算サーバ20間で送受信する必要があるから、k回の算術上の排他的論理和の実行では、k×kビットのデータ量が秘密計算サーバ20間で送受信される。従って、算術上の排他的論理和を用いたビット結合では、O(k)の通信量(kに比例した通信量)が必要となる。
対して、補助サーバ30を用いる本願開示では、各秘密計算サーバ20から送信されるk桁ごとのキャリー計算情報cは、式(7)及び(13)から1ビットの情報量である。この場合、k桁のビット結合が行われる場合には、kビットの情報量が3台の秘密計算サーバ20から補助サーバ30に送信されるので、通信量は3kビットである。従って、キャリー計算情報の送受信に伴う通信量はO(k)となる(kに比例した通信量)。また、各桁について、2つの要素(サブシェア)からなる調整値yが3台の秘密計算サーバ20に補助サーバ30から送信されるので、k桁のビット結合では、2×3×k=6kビットのデータ量が送受信される。従って、キャリーを用いた、複数のビット埋め込みが並列処理されるビット結合では、3k+6k=9kビットの通信量が必要となり、その通信量のオーダーはO(k)となる。
算術上の排他的論理和を用いる場合であってもキャリーを用いる場合であっても、必要な通信回数は2回であり、通信回数の観点では本願開示のメリットはないが、通信量の観点では改善が図られている。とりわけ、並列度が高くなる(kが大きくなると)、上記通信量の削減が顕著となる。算術上の排他的論理和を用いたビット結合ではO(k)の通信量が必要になるのに対し、キャリーを用いた本願開示の方法ではO(k)の通信量が必要となるためである。即ち、キャリーを用いることでビット結合等のビット埋め込みが並列に実行される処理を効率的に実施することできる。
続いて、秘密計算システムを構成する各装置のハードウェアについて説明する。図8は、秘密計算サーバ20のハードウェア構成の一例を示す図である。
秘密計算サーバ20は、情報処理装置(所謂、コンピュータ)により構成可能であり、図8に例示する構成を備える。例えば、秘密計算サーバ20は、プロセッサ311、メモリ312、入出力インターフェイス313及び通信インターフェイス314等を備える。上記プロセッサ311等の構成要素は内部バス等により接続され、相互に通信可能に構成されている。
但し、図8に示す構成は、秘密計算サーバ20のハードウェア構成を限定する趣旨ではない。秘密計算サーバ20は、図示しないハードウェアを含んでもよいし、必要に応じて入出力インターフェイス313を備えていなくともよい。また、秘密計算サーバ20に含まれるプロセッサ311等の数も図8の例示に限定する趣旨ではなく、例えば、複数のプロセッサ311が秘密計算サーバ20に含まれていてもよい。
プロセッサ311は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)等のプログラマブルなデバイスである。あるいは、プロセッサ311は、FPGA(Field Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)等のデバイスであってもよい。プロセッサ311は、オペレーティングシステム(OS;Operating System)を含む各種プログラムを実行する。
メモリ312は、RAM(Random Access Memory)、ROM(Read Only Memory)、HDD(Hard Disk Drive)、SSD(Solid State Drive)等である。メモリ312は、OSプログラム、アプリケーションプログラム、各種データを格納する。
入出力インターフェイス313は、図示しない表示装置や入力装置のインターフェイスである。表示装置は、例えば、液晶ディスプレイ等である。入力装置は、例えば、キーボードやマウス等のユーザ操作を受け付ける装置である。
通信インターフェイス314は、他の装置と通信を行う回路、モジュール等である。例えば、通信インターフェイス314は、NIC(Network Interface Card)等を備える。
秘密計算サーバ20の機能は、各種処理モジュールにより実現される。当該処理モジュールは、例えば、メモリ312に格納されたプログラムをプロセッサ311が実行することで実現される。また、当該プログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント(non-transitory)なものとすることができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。また、上記プログラムは、ネットワークを介してダウンロードするか、あるいは、プログラムを記憶した記憶媒体を用いて、更新することができる。さらに、上記処理モジュールは、半導体チップにより実現されてもよい。
なお、制御サーバ10、補助サーバ30も秘密計算サーバ20と同様に情報処理装置により構成可能であり、その基本的なハードウェア構成は秘密計算サーバ20と相違する点はないので説明を省略する。
[変形例]
なお、上記実施形態にて説明した秘密計算システムの構成、動作等は例示であって、システムの構成等を限定する趣旨ではない。例えば、4台以上の秘密計算サーバ20により秘密計算が行われてもよい。なお、この場合、キャリーから計算される調整値を適宜変更すればよい。
上記実施形態では、非特許文献1に開示された3者による秘密計算方式を前提として補助サーバ30を用いたビット埋め込み等を説明した。当該秘密計算方式を前提すると、キャリーCは式(8)により計算されるが、上記非特許文献1に開示された秘密計算方式とは異なる方式を用いる場合には、式(8)とは異なる計算式によりキャリーCが計算される。即ち、式(8)で示されるキャリーCの計算式は例示であって、キャリーCの計算を限定する趣旨ではない。
上記実施形態では、補助サーバ30が「セミオネストな攻撃者」であるという想定の下、当該攻撃者にシェアの内容が知られないように相関乱数βを用いてキャリー計算情報cが計算されている。しかし、補助サーバ30が「真に信頼できる主体」であれば、上記相関乱数βを用いたシェアの隠蔽は不要となる。即ち、本願開示では、各秘密計算サーバ20は、自身が保有する要素(サブシェア)の乗算結果をキャリー計算情報cとして補助サーバ30に送信してもよい。
上述の説明で用いたシーケンス図では、複数の工程(処理)が順番に記載されているが、各実施形態で実行される工程の実行順序は、その記載の順番に制限されない。各実施形態では、例えば各処理を並行して実行する等、図示される工程の順番を内容的に支障のない範囲で変更することができる。
情報処理装置(コンピュータ)の記憶部に秘密計算プログラムをインストールすることにより、コンピュータを秘密計算サーバとして機能させることができる。また、秘密計算プログラムをコンピュータに実行させることにより、コンピュータにより秘密計算方法を実行することができる。
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
[付記1]
少なくとも3台以上の秘密計算サーバ(20、101)と、
前記少なくとも3台以上の秘密計算サーバ(20、101)と接続された補助サーバ(20、102)と、
を含み、
前記少なくとも3台以上の秘密計算サーバ(20、101)のそれぞれは、算術演算のシェアを2進数として扱い加算した場合に繰り上がりが発生するか否かを示すキャリーを計算するためのキャリー計算情報を前記補助サーバ(20、102)に送信し、
前記補助サーバ(20、102)は、受信した前記キャリー計算情報に基づいて前記キャリーを計算し、前記計算されたキャリーを用いて論理演算のシェアから算術演算のシェアを計算する際の調整値を計算すると共に、前記計算された調整値を前記少なくとも3台以上の秘密計算サーバ(20、101)に分散し、
前記少なくとも3台以上の秘密計算サーバ(20、101)のそれぞれは、前記調整値の分散値を用いて論理演算のシェアを算術演算のシェアに変換する、秘密計算システム。
[付記2]
前記少なくとも3台以上の秘密計算サーバ(20、101)は、前記調整値の分散値を用いて、所定値に関するビット埋め込みを実行する、付記1に記載の秘密計算システム。
[付記3]
前記少なくとも3台以上の秘密計算サーバ(20、101)及び前記補助サーバ(20、102)は、前記キャリー計算情報、前記キャリー及び前記調整値を用いた、複数のビット埋め込みを並列に実行する、付記2に記載の秘密計算システム。
[付記4]
前記少なくとも3台以上の秘密計算サーバ(20、101)及び前記補助サーバ(20、102)は、前記複数のビット埋め込みを並列に実行することで、論理演算向けのシェアを算術演算向けのシェアに変換する、ビット結合を実行する、付記3に記載の秘密計算システム。
[付記5]
前記補助サーバ(20、102)は、k桁のビットごとに前記調整値を計算し、各桁の前記調整値に2のj乗を乗算した値の総和を、前記少なくとも3台以上の秘密計算サーバ(20、101)に分散する、付記4に記載の秘密計算システム。
[付記6]
前記少なくとも3台以上の秘密計算サーバ(20、101)及び前記補助サーバ(20、102)は、前記複数のビット埋め込みを並列に実行することで、数値を2進数表記した場合の1の個数を数える、ポップカウントを実行する、付記3に記載の秘密計算システム。
[付記7]
前記補助サーバ(20、102)は、k桁のビットごとに前記調整値を計算し、各桁の前記調整値の総和を、前記少なくとも3台以上の秘密計算サーバ(20、101)に分散する、付記6に記載の秘密計算システム。
[付記8]
前記少なくとも3台以上の秘密計算サーバ(20、101)は、自身が保有する論理演算のシェアを、相関乱数を用いて隠蔽し、前記キャリー計算情報を生成する、付記1乃至7のいずれか一つに記載の秘密計算システム。
[付記9]
論理演算のシェアを、x1、x2、x3とした場合、
前記補助サーバ(20、102)は、前記キャリーCを
C=x1・x2 EXOR x2・x3 EXOR x3・x1
により計算(・は乗算演算、EXORは排他的論理和)する、付記1乃至8のいずれか一つに記載の秘密計算システム。
[付記10]
前記補助サーバ(20、102)は、前記キャリーの値が0の場合には前記調整値に0を設定し、前記キャリーの値が1の場合には前記調整値に-2を設定する、付記9に記載の秘密計算システム。
[付記11]
補助サーバ(20、102)と接続され、
算術演算のシェアを2進数として扱い加算した場合に繰り上がりが発生するか否かを示すキャリーを計算するためのキャリー計算情報を前記補助サーバ(20、102)に送信し、
前記補助サーバ(20、102)から、前記キャリーを用いて論理演算のシェアから算術演算のシェアを計算する際の調整値の分散値を取得し、
前記調整値の分散値を用いて論理演算のシェアを算術演算のシェアに変換する、秘密計算サーバ(20、101)。
[付記12]
少なくとも3台以上の秘密計算サーバ(20、101)と接続され、
前記少なくとも3台以上の秘密計算サーバ(20、101)のそれぞれが送信する、算術演算のシェアを2進数として扱い加算した場合に繰り上がりが発生するか否かを示すキャリーを計算するためのキャリー計算情報を受信し、
受信したキャリー計算情報に基づいて前記キャリーを計算し、前記計算されたキャリーを用いて論理演算のシェアから算術演算のシェアを計算する際の調整値を計算すると共に、前記計算された調整値を前記少なくとも3台以上の秘密計算サーバ(20、101)に分散する、補助サーバ(20、102)。
[付記13]
少なくとも3台以上の秘密計算サーバ(20、101)と、
前記少なくとも3台以上の秘密計算サーバ(20、101)と接続された補助サーバ(20、102)と、
を含む秘密計算システムにおいて、
前記少なくとも3台以上の秘密計算サーバ(20、101)のそれぞれが、算術演算のシェアを2進数として扱い加算した場合に繰り上がりが発生するか否かを示すキャリーを計算するためのキャリー計算情報を前記補助サーバ(20、102)に送信するステップと、
前記補助サーバ(20、102)が、受信した前記キャリー計算情報に基づいて前記キャリーを計算し、前記計算されたキャリーを用いて論理演算のシェアから算術演算のシェアを計算する際の調整値を計算すると共に、前記計算された調整値を前記少なくとも3台以上の秘密計算サーバ(20、101)に分散するステップと、
前記少なくとも3台以上の秘密計算サーバ(20、101)のそれぞれが、前記調整値の分散値を用いて論理演算のシェアを算術演算のシェアに変換するステップと、
を含む、秘密計算方法。
[付記14]
コンピュータ(311)に、
算術演算のシェアを2進数として扱い加算した場合に繰り上がりが発生するか否かを示すキャリーを計算するためのキャリー計算情報を前記補助サーバ(20、102)に送信する処理と、
前記補助サーバ(20、102)から、前記キャリーを用いて論理演算のシェアから算術演算のシェアを計算する際の調整値の分散値を取得する処理と、
前記調整値の分散値を用いて論理演算のシェアを算術演算のシェアに変換する処理と、
を実行させるプログラム。
なお、付記11~14の形態は、付記1の形態と同様に、付記2の形態~付記10の形態に展開することが可能である。
なお、引用した上記の先行技術文献の各開示は、本書に引用をもって繰り込むものとする。以上、本発明の実施形態を説明したが、本発明はこれらの実施形態に限定されるものではない。これらの実施形態は例示にすぎないということ、及び、本発明のスコープ及び精神から逸脱することなく様々な変形が可能であるということは、当業者に理解されるであろう。
10 制御サーバ
20、20-1~20-3、101 秘密計算サーバ
30、102 補助サーバ
201、301、401 通信制御部
202 分散データ生成部
203 分散データ復号部
302 秘密計算実行部
311 プロセッサ
312 メモリ
313 入出力インターフェイス
314 通信インターフェイス
402 秘密計算補助部

Claims (14)

  1. 少なくとも3台以上の秘密計算サーバと、
    前記少なくとも3台以上の秘密計算サーバと接続された補助サーバと、
    を含み、
    前記少なくとも3台以上の秘密計算サーバのそれぞれは、算術演算のシェアを2進数として扱い加算した場合に繰り上がりが発生するか否かを示すキャリーを計算するためのキャリー計算情報を前記補助サーバに送信し、
    前記補助サーバは、受信した前記キャリー計算情報に基づいて前記キャリーを計算し、前記計算されたキャリーを用いて論理演算のシェアから算術演算のシェアを計算する際の調整値を計算すると共に、前記計算された調整値を前記少なくとも3台以上の秘密計算サーバに分散し、
    前記少なくとも3台以上の秘密計算サーバのそれぞれは、前記調整値の分散値を用いて論理演算のシェアを算術演算のシェアに変換する、秘密計算システム。
  2. 前記少なくとも3台以上の秘密計算サーバは、前記調整値の分散値を用いて、所定値に関するビット埋め込みを実行する、請求項1に記載の秘密計算システム。
  3. 前記少なくとも3台以上の秘密計算サーバ及び前記補助サーバは、前記キャリー計算情報、前記キャリー及び前記調整値を用いた、複数のビット埋め込みを並列に実行する、請求項2に記載の秘密計算システム。
  4. 前記少なくとも3台以上の秘密計算サーバ及び前記補助サーバは、前記複数のビット埋め込みを並列に実行することで、論理演算向けのシェアを算術演算向けのシェアに変換する、ビット結合を実行する、請求項3に記載の秘密計算システム。
  5. 前記補助サーバは、k桁のビットごとに前記調整値を計算し、各桁の前記調整値に2のj乗を乗算した値の総和を、前記少なくとも3台以上の秘密計算サーバに分散する、請求項4に記載の秘密計算システム。
  6. 前記少なくとも3台以上の秘密計算サーバ及び前記補助サーバは、前記複数のビット埋め込みを並列に実行することで、数値を2進数表記した場合の1の個数を数える、ポップカウントを実行する、請求項3に記載の秘密計算システム。
  7. 前記補助サーバは、k桁のビットごとに前記調整値を計算し、各桁の前記調整値の総和を、前記少なくとも3台以上の秘密計算サーバに分散する、請求項6に記載の秘密計算システム。
  8. 前記少なくとも3台以上の秘密計算サーバは、自身が保有する論理演算のシェアを、相関乱数を用いて隠蔽し、前記キャリー計算情報を生成する、請求項1乃至7のいずれか一項に記載の秘密計算システム。
  9. 論理演算のシェアを、x、x、xとした場合、
    前記補助サーバは、前記キャリーを表す値Cを
    C=x・xEXOR x・xEXOR x・x
    により計算(・は乗算演算、EXORは排他的論理和)する、請求項1乃至8のいずれか一項に記載の秘密計算システム。
  10. 前記補助サーバは、前記キャリーの前記値が0の場合には前記調整値に0を設定し、前記キャリーの前記値が1の場合には前記調整値に-2を設定する、請求項9に記載の秘密計算システム。
  11. 補助サーバと接続され、
    算術演算のシェアを2進数として扱い加算した場合に繰り上がりが発生するか否かを示すキャリーを計算するためのキャリー計算情報を前記補助サーバに送信し、
    前記補助サーバから、前記キャリーを用いて論理演算のシェアから算術演算のシェアを計算する際の調整値の分散値を取得し、
    前記調整値の分散値を用いて論理演算のシェアを算術演算のシェアに変換する、秘密計算サーバ。
  12. 少なくとも3台以上の秘密計算サーバと接続され、
    前記少なくとも3台以上の秘密計算サーバのそれぞれが送信する、算術演算のシェアを2進数として扱い加算した場合に繰り上がりが発生するか否かを示すキャリーを計算するためのキャリー計算情報を受信し、
    受信したキャリー計算情報に基づいて前記キャリーを計算し、前記計算されたキャリーを用いて論理演算のシェアから算術演算のシェアを計算する際の調整値を計算すると共に、前記計算された調整値を前記少なくとも3台以上の秘密計算サーバに分散する、補助サーバ。
  13. 少なくとも3台以上の秘密計算サーバと、
    前記少なくとも3台以上の秘密計算サーバと接続された補助サーバと、
    を含む秘密計算システムにおいて、
    前記少なくとも3台以上の秘密計算サーバのそれぞれが、算術演算のシェアを2進数として扱い加算した場合に繰り上がりが発生するか否かを示すキャリーを計算するためのキャリー計算情報を前記補助サーバに送信するステップと、
    前記補助サーバが、受信した前記キャリー計算情報に基づいて前記キャリーを計算し、前記計算されたキャリーを用いて論理演算のシェアから算術演算のシェアを計算する際の調整値を計算すると共に、前記計算された調整値を前記少なくとも3台以上の秘密計算サーバに分散するステップと、
    前記少なくとも3台以上の秘密計算サーバのそれぞれが、前記調整値の分散値を用いて論理演算のシェアを算術演算のシェアに変換するステップと、
    を含む、秘密計算方法。
  14. コンピュータに、
    算術演算のシェアを2進数として扱い加算した場合に繰り上がりが発生するか否かを示すキャリーを計算するためのキャリー計算情報を補助サーバに送信する処理と、
    前記補助サーバから、前記キャリーを用いて論理演算のシェアから算術演算のシェアを計算する際の調整値の分散値を取得する処理と、
    前記調整値の分散値を用いて論理演算のシェアを算術演算のシェアに変換する処理と、
    を実行させるプログラム。
JP2021550924A 2019-10-04 2019-10-04 秘密計算システム、秘密計算サーバ、補助サーバ、秘密計算方法及びプログラム Active JP7334789B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/039335 WO2021064996A1 (ja) 2019-10-04 2019-10-04 秘密計算システム、秘密計算サーバ、補助サーバ、秘密計算方法及びプログラム

Publications (2)

Publication Number Publication Date
JPWO2021064996A1 JPWO2021064996A1 (ja) 2021-04-08
JP7334789B2 true JP7334789B2 (ja) 2023-08-29

Family

ID=75336862

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021550924A Active JP7334789B2 (ja) 2019-10-04 2019-10-04 秘密計算システム、秘密計算サーバ、補助サーバ、秘密計算方法及びプログラム

Country Status (3)

Country Link
US (1) US11991178B2 (ja)
JP (1) JP7334789B2 (ja)
WO (1) WO2021064996A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006101227A1 (ja) 2005-03-25 2006-09-28 Matsushita Electric Industrial Co., Ltd. プログラム変換装置、セキュア処理装置、コンピュータプログラム及び記録媒体
WO2018034079A1 (ja) 2016-08-18 2018-02-22 日本電気株式会社 秘密計算システム、秘密計算方法、秘密計算装置、分散情報生成装置およびそれらの方法とプログラム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10003460B2 (en) 2013-10-10 2018-06-19 Nippon Telegraph And Telephone Corporation Secret quotient transfer device, secret bit decomposition device, secret modulus conversion device, secret quotient transfer method, secret bit decomposition method, secret modulus conversion method, and programs therefor
US10490107B2 (en) * 2014-09-19 2019-11-26 Nec Corporation Secret calculation device, method, recording medium, and secret calculation system
US9813243B1 (en) * 2015-03-30 2017-11-07 EMC IP Holding Company LLC Methods and apparatus for password-based secret sharing schemes
JP6607257B2 (ja) * 2015-08-31 2019-11-20 日本電気株式会社 秘密計算システム、秘密計算装置、および、秘密計算方法
US20210089676A1 (en) * 2018-02-16 2021-03-25 Ecole Polytechnique Fédérale De Lausanne Epfl-Tto Methods and systems for secure data exchange
US11070374B2 (en) * 2018-02-28 2021-07-20 Vmware, Inc. Methods and systems that efficiently and securely store encryption keys
US11222138B2 (en) * 2018-05-29 2022-01-11 Visa International Service Association Privacy-preserving machine learning in the three-server model
WO2019231481A1 (en) * 2018-05-29 2019-12-05 Visa International Service Association Privacy-preserving machine learning in the three-server model
WO2021220278A1 (en) * 2020-04-27 2021-11-04 B.G. Negev Technologies And Applications Ltd., At Ben-Gurion University System and method for fast, post-quantum blockchain concensus generation and smart contracts execution

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006101227A1 (ja) 2005-03-25 2006-09-28 Matsushita Electric Industrial Co., Ltd. プログラム変換装置、セキュア処理装置、コンピュータプログラム及び記録媒体
WO2018034079A1 (ja) 2016-08-18 2018-02-22 日本電気株式会社 秘密計算システム、秘密計算方法、秘密計算装置、分散情報生成装置およびそれらの方法とプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
大原 一真,秘密分散法を用いた秘密計算,システム/制御/情報 第63巻 第2号,日本,一般社団法人システム制御情報学会,2019年02月15日,第63巻

Also Published As

Publication number Publication date
WO2021064996A1 (ja) 2021-04-08
US11991178B2 (en) 2024-05-21
US20220329596A1 (en) 2022-10-13
JPWO2021064996A1 (ja) 2021-04-08

Similar Documents

Publication Publication Date Title
Liu et al. Hybrid privacy-preserving clinical decision support system in fog–cloud computing
US8345861B2 (en) Sharing a secret using polynomial division over GF(Q)
WO2019231481A1 (en) Privacy-preserving machine learning in the three-server model
US11979492B2 (en) Computer-implemented system and method for distributing shares of digitally signed data
JPH09230786A (ja) データの暗号化方法及び装置
US20100054474A1 (en) SHARING A SECRET USING HYPERPLANES OVER GF(2m)
US20220045840A1 (en) Methods and systems for somewhat homomorphic encryption and key updates based on geometric algebra for distributed ledger/blockchain technology
JP7259876B2 (ja) 情報処理装置、秘密計算方法及びプログラム
US11863657B2 (en) Using cryptographic blinding for efficient use of montgomery multiplication
JP7173170B2 (ja) 情報処理装置、秘密計算方法及びプログラム
US20230004356A1 (en) Secure random number generation system, secure computation apparatus, secure random number generation method, and program
WO2022233605A1 (en) Blind rotation for use in fully homomorphic encryption
JP2020519968A (ja) ビット分解秘密計算装置、ビット結合秘密計算装置、方法およびプログラム
JPWO2017038761A1 (ja) 秘密計算システム、秘密計算装置、および、秘密計算方法
JP7259875B2 (ja) 情報処理装置、秘密計算方法及びプログラム
JP7334789B2 (ja) 秘密計算システム、秘密計算サーバ、補助サーバ、秘密計算方法及びプログラム
JP7205016B2 (ja) 秘匿情報処理システムおよび秘匿情報処理方法
JP7396373B2 (ja) 秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム
Deryabin et al. Comparative performance analysis of information dispersal methods
Liu et al. Quantum public key encryption scheme with four states key
Catrina Optimization and tradeoffs in secure floating-point computation: products, powers, and polynomials
Jiang et al. Lancelot: Towards Efficient and Privacy-Preserving Byzantine-Robust Federated Learning within Fully Homomorphic Encryption
Калимолдаев et al. Software-hardware facilities for cryptosystems based on polynomial RNS
TW201830916A (zh) 通信設備與密碼處理系統
Leelavathi et al. Performance Analysis of Probabilistic Encryption on FPGA for Wireless Sensor Nodes

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220401

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230620

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230705

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230731

R151 Written notification of patent or utility model registration

Ref document number: 7334789

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151