JP2024033698A - Secure calculation system, server, information processing device, computer program, and secure calculation method - Google Patents

Secure calculation system, server, information processing device, computer program, and secure calculation method Download PDF

Info

Publication number
JP2024033698A
JP2024033698A JP2022137457A JP2022137457A JP2024033698A JP 2024033698 A JP2024033698 A JP 2024033698A JP 2022137457 A JP2022137457 A JP 2022137457A JP 2022137457 A JP2022137457 A JP 2022137457A JP 2024033698 A JP2024033698 A JP 2024033698A
Authority
JP
Japan
Prior art keywords
random number
client
secure
server
random numbers
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
JP2022137457A
Other languages
Japanese (ja)
Other versions
JP7171113B1 (en
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.)
Zenmutech Inc
Original Assignee
Zenmutech Inc
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 Zenmutech Inc filed Critical Zenmutech Inc
Priority to JP2022137457A priority Critical patent/JP7171113B1/en
Application granted granted Critical
Publication of JP7171113B1 publication Critical patent/JP7171113B1/en
Publication of JP2024033698A publication Critical patent/JP2024033698A/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

【課題】秘匿計算に用いる乱数を適切に供給する秘匿計算システム、サーバー、情報処理装置、コンピュータプログラム及び秘匿計算方法を提供する。【解決手段】秘匿計算システム1において、クライアント10は、不足する乱数の有無を一定間隔で照会し必要乱数情報の回答があった場合には必要乱数情報を乱数プール手段に送信する不足乱数照会手段と、必要乱数情報に基づいて乱数を生成し複数のサーバー30、40に送信する乱数供給手段とを備える。各サーバーは、秘匿計算に必要となる乱数の種類及び数を見積もり必要乱数情報としてクライアントに送信する乱数見積手段と、秘匿計算を実行するための乱数をプールする乱数プール手段と、秘匿計算を実行し実行結果をクライアントに送信する秘匿計算手段と、秘匿計算の実行において不足する乱数を検知し不足する乱数の種類及び数を必要乱数情報としてクライアントに回答する不足乱数検知手段と、を備える。【選択図】図1The present invention provides a secure calculation system, a server, an information processing device, a computer program, and a secure calculation method that appropriately supply random numbers used in secure calculations. In a secure calculation system 1, a client 10 inquires at regular intervals as to whether there is a missing random number, and when there is a response with necessary random number information, the missing random number inquiry means sends the necessary random number information to a random number pool means. and random number supply means for generating random numbers based on the necessary random number information and transmitting them to the plurality of servers 30 and 40. Each server includes a random number estimation means that estimates the type and number of random numbers required for secure calculation and sends it to the client as necessary random number information, a random number pool means that pools random numbers to perform secure calculation, and executes secure calculation. and a secret calculation means for transmitting the execution result to the client, and a missing random number detection means for detecting the missing random numbers in the execution of the secret calculation and replying to the client the type and number of the missing random numbers as necessary random number information. [Selection diagram] Figure 1

Description

本発明は、秘匿計算を実行する秘匿計算システム、当該秘匿計算システムを構成するサーバー、情報処理装置、コンピュータプログラムおよび秘匿計算方法に関する。 The present invention relates to a secure computation system that performs secure computation, a server that constitutes the secure computation system, an information processing device, a computer program, and a secure computation method.

近年、情報漏洩に対する意識の高まりから、データを暗号化したまま計算する秘匿計算(秘密計算とも言われる。以下同じ。)技術が注目されている。秘匿計算の方法として、主に、暗号鍵を用いる完全準同形暗号式の方法と、データをシェアと呼ばれる暗号化された情報に分割し、分割したシェアを複数のサーバーに分散して格納しておき、各サーバーにおいてそれぞれデータ(シェア)を暗号化したまま計算する、秘密分散式との秘匿計算が知られている。秘密分散式の秘匿計算では、完全準同形暗号式の秘匿計算と比べて、複数サーバー間の通信制御や同期処理が必要で、システム構築難度は高い一方、計算速度が速いという特徴がある。 In recent years, as awareness of information leaks has increased, secure computation (also referred to as secret computation, hereinafter the same) technology that performs calculations while encrypting data has been attracting attention. The main methods of secure computation are a completely homomorphic encryption method using an encryption key, and a method in which data is divided into encrypted information called shares and the divided shares are distributed and stored on multiple servers. A secret sharing method is known in which calculations are performed while data (shares) are encrypted on each server. Compared to completely homomorphic encryption-based secure calculations, secret-sharing secret computation requires communication control and synchronization between multiple servers, making it more difficult to construct a system, but it is characterized by faster calculation speed.

秘密分散式の秘匿計算では、サーバー間で相関を持つ乱数を用いることで、秘匿計算を実現するプロトコルが多く提案されている。相関を持つ乱数を生成する方法としては、秘匿計算を行うサーバー間のみで乱数を生成する方法が知られている。しかしこの場合、公開鍵暗号と、サーバー間での多くの通信回数及び通信量が必要となり、計算速度が低下してしまうという問題があった。
そこで、非特許文献1では、秘匿計算において必要な乱数を生成するための信頼できる第三者として乱数生成サーバーを秘匿計算用のサーバーとは別に設けておき、秘匿計算に必要な乱数を予め見積もっておくことで、秘匿計算において用いられる乱数を予め生成しておく技術が開示されている。このような構成では、相関を持つ乱数を信頼できる第三者の内部で生成できる。その結果、乱数生成において公開鍵暗号とそれに伴う通信が、秘匿計算用サーバー間では不要となり、計算速度が向上する。
また、非特許文献2では、信頼できる第三者の役割をクライアントが担い、クライアントから、秘密情報とともに相関を持つ乱数をサーバーに送信することで、同様に秘匿計算用サーバーの負荷を軽減し、秘匿計算の効率を高める方法が開示されている。
In secret sharing type secure computation, many protocols have been proposed that realize secure computation by using random numbers that are correlated between servers. A known method for generating correlated random numbers is to generate random numbers only between servers that perform secure calculations. However, in this case, public key cryptography and a large number of communication times and amount of communication between the servers are required, resulting in a problem that the calculation speed decreases.
Therefore, in Non-Patent Document 1, a random number generation server is provided separately from the secure calculation server as a reliable third party to generate the random numbers necessary for secure calculation, and the random numbers necessary for secure calculation are estimated in advance. A technique has been disclosed in which random numbers used in secure calculation are generated in advance. With such a configuration, correlated random numbers can be generated internally by a trusted third party. As a result, public key cryptography and associated communication are no longer required between the secure calculation servers during random number generation, improving calculation speed.
In addition, in Non-Patent Document 2, the client assumes the role of a trusted third party, and the client transmits correlated random numbers along with secret information to the server, thereby reducing the load on the secure calculation server. A method for increasing the efficiency of secure computation is disclosed.

石田祐介他、「秘匿計算における乱数生成サーバーの設計と実装」、2021年暗号と情報セキュリティシンポジウム (SCIS 2021)予稿集、2021年Yusuke Ishida et al., “Design and implementation of random number generation server for secure computation”, Proceedings of the 2021 Symposium on Cryptography and Information Security (SCIS 2021), 2021 荒木俊則他、「秘密分散法を用いた3者秘密計算の有用性」、情報処理Vol.59 No.10 2018年10月Toshinori Araki et al., “Usefulness of three-party secure computation using secret sharing method”, Information Processing Vol. 59 No. 10 October 2018

秘匿計算においては、加算や減算では乱数は不要であるが、乗算や除算に加えて、数値の大小比較、テーブル構造データのから所定の条件に合うデータを抽出するフィルタリング計算、テーブル構造データの並び替えなどを行う場合などに乱数が用いられる。しかしながら、テーブル構造データについて秘匿計算を行う場合には、テーブル構造データの行数に応じた数の乱数が必要となり、秘匿計算の途中で計算対象とする行数が変化する場合には、乱数の見積もりを予め行えない場合がある。たとえば、テーブル構造データにおいて、一定の条件に合致する行データを抽出(フィルタリング)した後に、抽出したデータを並び替える場合には、並び替え時に、抽出した行データの数に応じた乱数が必要となるところ、行データの抽出が完了するまでは、抽出後の行データの数が確定しないため必要な乱数の数を見積もることができない。このように、必要とする乱数を予め見積もれない場合があり、秘匿計算の途中で乱数が不足してしまうおそれがあった。そして、乱数が不足してしまうと、今まで行われていた秘匿計算が中断され、演算結果を得ることができない場合もあった。 In secure calculations, random numbers are not required for addition and subtraction, but in addition to multiplication and division, they can also be used to compare the magnitude of numerical values, filtering calculations to extract data that meets predetermined conditions from table-structured data, and arrangement of table-structured data. Random numbers are used in cases such as when changing numbers. However, when performing secure calculations on table-structured data, random numbers are required according to the number of rows in the table-structured data, and if the number of rows to be calculated changes during secure calculations, the number of random numbers It may not be possible to make an estimate in advance. For example, in table-structured data, if you want to sort the extracted data after extracting (filtering) row data that meets certain conditions, you will need random numbers according to the number of extracted row data when sorting. However, until the extraction of row data is completed, the number of row data after extraction is not determined, so the number of necessary random numbers cannot be estimated. In this way, it may not be possible to estimate the required random numbers in advance, and there is a risk that the random numbers will run out during the secure calculation. If there is a shortage of random numbers, the secret calculations that have been performed so far are interrupted, and results may not be obtained.

本発明は、秘匿計算において乱数が不足してしまい、秘匿計算の処理が中断されることを防止することができる、秘匿計算システム、サーバー、情報処理装置、コンピュータプログラムおよび秘匿計算方法を提供することを目的とする。 The present invention provides a secure calculation system, a server, an information processing device, a computer program, and a secure calculation method that can prevent the secure calculation process from being interrupted due to a shortage of random numbers in the secure calculation. With the goal.

本発明に係る第1の観点に係る秘匿計算システムは、秘匿計算を実行する複数のサーバーと、前記複数のサーバーに秘匿計算を実行するために必要な乱数を供給するクライアントと、を備え、前記クライアントは、ユーザが入力したデータのクエリーを前記複数のサーバーの少なくとも1つに送信するクエリー入力手段と、受信した必要乱数情報に基づいて乱数を生成し、前記複数のサーバーに送信する乱数供給手段と、を備え、前記サーバーは、前記クライアントから受信した前記クエリーに基づいて秘匿計算に必要となる乱数の種類および数を見積もり、見積もった乱数の種類および数を必要乱数情報として前記クライアントに送信する乱数見積手段と、前記クライアントから受信した前記クエリーに基づく秘匿計算を実行するための乱数をプールする乱数プール手段と、前記クライアントから受信した前記クエリーに基づく秘匿計算を実行し、実行結果を前記クライアントに送信する秘匿計算手段と、前記秘匿計算手段による秘匿計算の実行において不足する乱数を検知し、前記クライアントの不足乱数照会手段による照会があった際に不足する乱数の種類および数を必要乱数情報として前記クライアントに回答する不足乱数検知手段と、を備え、前記クライアントが、前記サーバーに前記クエリーに基づく秘匿計算の実行時に不足する乱数の有無を一定間隔で照会し、前記不足乱数検知手段から前記必要乱数情報の回答があった場合には、当該必要乱数情報を前記乱数プール手段に送信する不足乱数照会手段をさらに備える。
上記秘匿計算システムにおいて、前記秘匿計算手段は、前記不足乱数検知手段が秘匿計算の実行において不足する乱数を検知した場合には、当該不足する乱数を前記乱数供給手段から受信するまで実行中の秘匿計算を一時的に中断する機能を有する構成とすることができる。
本発明の第2の観点に係る秘匿計算システムは、秘匿計算を実行する複数のサーバーと、前記複数のサーバーに秘匿計算に必要な乱数を供給するクライアントとを有し、前記サーバーが前記クライアントから供給された乱数を用いて前記秘匿計算を行う、秘匿計算システムであって、前記サーバーは、秘匿計算に使用する乱数が不足しているかを繰り返し検知し、秘匿計算に必要となる乱数が不足する場合に、不足する乱数の種類および数の情報を含む乱数の要求情報を前記クライアントに送信し、前記クライアントは、前記要求情報を受信した場合に、前記要求情報に基づく種類および数の乱数を前記サーバーに送信する構成とすることができる。
本発明に係るサーバーは、秘匿計算を実行するために必要な乱数を供給するクライアントと通信可能に構成された秘匿計算を実行するためのサーバーであって、前記クライアントは、ユーザが入力したデータのクエリーを前記複数のサーバーの少なくとも1つに送信するクエリー入力手段と、受信した必要乱数情報に基づいて乱数を生成し、前記複数のサーバーに送信する乱数供給手段と、を備え、前記サーバーは、前記クライアントから受信した前記クエリーに基づいて秘匿計算に必要となる乱数の種類および数を見積もり、見積もった乱数の種類および数を必要乱数情報として前記クライアントに送信する乱数見積手段と、前記クライアントから受信した前記クエリーに基づく秘匿計算を実行するための乱数をプールする乱数プール手段と、前記クライアントから受信した前記クエリーに基づく秘匿計算を実行し、実行結果を前記クライアントに送信する秘匿計算手段と、前記秘匿計算手段による秘匿計算の実行において不足する乱数を検知し、前記クライアントの不足乱数照会手段による照会があった際に不足する乱数の種類および数を必要乱数情報として前記クライアントに回答する不足乱数検知手段と、を備える。
本発明に係る情報処理装置は、秘匿計算を実行するための複数のサーバーと通信可能に構成された情報処理装置であって、ユーザが入力したデータのクエリーを前記複数のサーバーの少なくとも1つに送信するクエリー入力手段と、受信した必要乱数情報に基づいて乱数を生成し、前記複数のサーバーに送信する乱数供給手段と、を備え、前記サーバーは、前記情報処理装置から受信した前記クエリーに基づいて秘匿計算に必要となる乱数の種類および数を見積もり、見積もった乱数の種類および数を必要乱数情報として前記情報処理装置に送信する乱数見積手段と、前記情報処理装置から受信した前記クエリーに基づく秘匿計算を実行するための乱数をプールする乱数プール手段と、前記情報処理装置から受信した前記クエリーに基づく秘匿計算を実行し、実行結果を前記情報処理装置に送信する秘匿計算手段と、前記秘匿計算手段による秘匿計算の実行において不足する乱数を検知し、前記情報処理装置の不足乱数照会手段による照会があった際に不足する乱数の種類および数を必要乱数情報として回答する不足乱数検知手段と、を備え、さらに、前記サーバーに前記クエリーに基づく秘匿計算の実行時に不足する乱数の有無を一定間隔で照会し、前記不足乱数検知手段から前記必要乱数情報の回答があった場合には、当該必要乱数情報を前記乱数プール手段に送信する不足乱数照会手段を備える。
本発明に係るコンピュータプログラムは、秘匿計算を実行するためのサーバーと通信可能に構成された情報処理装置のプロセッサを、ユーザが入力したデータのクエリーを前記複数のサーバーの少なくとも1つに送信するクエリー入力手段と、受信した必要乱数情報に基づいて乱数を生成し、前記複数のサーバーに送信する乱数供給手段と、として機能させるためのコンピュータプログラムであって、前記サーバーは、前記情報処理装置から受信した前記クエリーに基づいて秘匿計算に必要となる乱数の種類および数を見積もり、見積もった乱数の種類および数を必要乱数情報として前記情報処理装置に送信する乱数見積手段と、前記情報処理装置から受信した前記クエリーに基づく秘匿計算を実行するための乱数をプールする乱数プール手段と、前記情報処理装置から受信した前記クエリーに基づく秘匿計算を実行し、実行結果を前記情報処理装置に送信する秘匿計算手段と、前記秘匿計算手段による秘匿計算の実行において不足する乱数を検知し、前記情報処理装置の不足乱数照会手段による照会があった際に不足する乱数の種類および数を必要乱数情報として回答する不足乱数検知手段と、を備え、さらに、前記プロセッサを、前記サーバーに前記クエリーに基づく秘匿計算の実行時に不足する乱数の有無を一定間隔で照会し、前記不足乱数検知手段から前記必要乱数情報の回答があった場合には、当該必要乱数情報を前記乱数プール手段に送信する不足乱数照会手段として機能させる。
本発明に係る秘匿計算方法は、秘匿計算を実行する複数のサーバーと、前記複数のサーバーに秘匿計算を実行するために必要な乱数を供給するクライアントと、を用いた秘匿計算方法であって、前記クライアントが、ユーザが入力したデータのクエリーを前記複数のサーバーの少なくとも1つに送信することと、前記サーバーが、前記クライアントから受信した前記クエリーに基づいて秘匿計算に必要となる乱数の種類および数を見積もり、見積もった乱数の種類および数を必要乱数情報として前記クライアントに送信することと、前記クライアントが、受信した必要乱数情報に基づいて乱数を生成して前記複数のサーバーに送信することと、前記クライアントから受信した前記クエリーに基づく秘匿計算を実行するための乱数をプールすることと、前記サーバーが、前記クライアントから受信した前記クエリーに基づく秘匿計算を実行し、実行結果を前記クライアントに送信することと、を含み、前記サーバーが、前記秘匿計算の実行において不足する乱数を検知すると、前記クライアントからの照会があった際に不足する乱数の種類および数を必要乱数情報として回答することと、前記クライアントが、前記サーバーに前記クエリーに基づく秘匿計算の実行時に不足する乱数の有無を一定間隔で照会し、前記サーバーから前記必要乱数情報の回答があった場合には、当該必要乱数情報に基づいて不足する乱数を生成して前記複数のサーバーに送信することと、をさらに含む。
A secure calculation system according to a first aspect of the present invention includes a plurality of servers that execute secure calculations, and a client that supplies random numbers necessary for executing secure calculations to the plurality of servers, The client includes a query input means for transmitting a query of data input by a user to at least one of the plurality of servers, and a random number supply means for generating a random number based on the received necessary random number information and transmitting it to the plurality of servers. and, the server estimates the type and number of random numbers required for secure calculation based on the query received from the client, and transmits the estimated type and number of random numbers to the client as necessary random number information. a random number estimating means; a random number pooling means for pooling random numbers for performing a secure calculation based on the query received from the client; Detects missing random numbers in execution of secret calculation by said secret calculation means, and detects the type and number of missing random numbers when an inquiry is made by said client's missing random number inquiry means, and provides required random number information. and a missing random number detecting means for replying to the client as a result, the client inquires the server at regular intervals as to whether there is a missing random number when performing a secure calculation based on the query, and the missing random number detecting means replies to the client. The apparatus further includes insufficient random number inquiry means for transmitting the necessary random number information to the random number pool means when there is a response regarding the necessary random number information.
In the above-mentioned secure calculation system, when the insufficient random number detection means detects an insufficient random number in execution of the secure calculation, the secure calculation means continues to perform the ongoing concealment until the insufficient random number is received from the random number supply means. The configuration may include a function to temporarily interrupt calculation.
A secure calculation system according to a second aspect of the present invention includes a plurality of servers that execute secure calculations, and a client that supplies random numbers necessary for secure calculations to the plurality of servers, and the server receives a request from the client. A secure computation system that performs the secure computation using supplied random numbers, wherein the server repeatedly detects whether there is a shortage of random numbers used for the secure computation, and that the random numbers necessary for the secure computation are insufficient. In this case, random number request information including information on the type and number of random numbers that are missing is transmitted to the client, and when the client receives the request information, the client transmits the random number type and number based on the request information. It can be configured to send to a server.
A server according to the present invention is a server for executing secure calculations that is configured to be able to communicate with a client that supplies random numbers necessary for executing secure calculations, and the client is configured to be able to communicate with a client that supplies random numbers necessary for performing secure calculations. The server comprises: a query input means for transmitting a query to at least one of the plurality of servers; and a random number supply means for generating a random number based on the received necessary random number information and transmitting it to the plurality of servers; random number estimating means for estimating the type and number of random numbers required for secure calculation based on the query received from the client, and transmitting the estimated type and number of random numbers to the client as necessary random number information; random number pooling means for pooling random numbers for performing a secure calculation based on the query received from the client; a secure calculation means for performing a secure calculation based on the query received from the client and transmitting the execution result to the client; Insufficient random number detection for detecting insufficient random numbers in execution of confidential calculation by the confidential calculation means, and replying to the client as required random number information the type and number of the insufficient random numbers when an inquiry is made by the insufficient random number inquiry means of the client. and means.
An information processing device according to the present invention is an information processing device configured to be able to communicate with a plurality of servers for executing secure calculation, and transmits a query of data input by a user to at least one of the plurality of servers. a query input means for transmitting a query; and a random number supply means for generating a random number based on the received necessary random number information and transmitting the generated random number to the plurality of servers; random number estimating means for estimating the type and number of random numbers necessary for secure calculation and transmitting the estimated type and number of random numbers to the information processing device as necessary random number information; and random number pooling means for pooling random numbers for executing a secure calculation; a secure calculation means for executing a secure calculation based on the query received from the information processing device and transmitting an execution result to the information processing device; Insufficient random number detection means for detecting insufficient random numbers in execution of secret calculation by the calculation means, and responding with the type and number of the insufficient random numbers as necessary random number information when an inquiry is made by the insufficient random number inquiry means of the information processing device; , further comprising: inquiring the server at regular intervals as to whether or not there are insufficient random numbers when performing secure calculation based on the query, and when there is a response from the missing random number detection means with the necessary random number information, Insufficient random number inquiry means is provided for transmitting necessary random number information to the random number pool means.
A computer program according to the present invention causes a processor of an information processing device configured to be able to communicate with a server for executing secure calculation to send a query of data input by a user to at least one of the plurality of servers. A computer program for functioning as an input means and a random number supply means for generating random numbers based on received necessary random number information and transmitting the generated random numbers to the plurality of servers, wherein the server receives information from the information processing device. random number estimating means for estimating the type and number of random numbers required for secure calculation based on the query, and transmitting the estimated type and number of random numbers to the information processing device as necessary random number information; random number pooling means for pooling random numbers for performing a secure calculation based on the query received from the information processing device; and a secure calculation for performing the secure calculation based on the query received from the information processing device and transmitting the execution result to the information processing device. detecting a missing random number in the execution of a secret calculation by the secret calculation means, and responding as necessary random number information with the type and number of the missing random number when an inquiry is made by the missing random number inquiry means of the information processing device; Insufficient random number detection means, further causing the processor to inquire of the server at regular intervals as to whether or not there are insufficient random numbers when performing secure calculation based on the query, and to detect the required random number information from the insufficient random number detection means. If there is a response, the necessary random number information is sent to the random number pooling means to function as a missing random number inquiry means.
A secure calculation method according to the present invention is a secure calculation method using a plurality of servers that perform secure calculations, and a client that supplies random numbers necessary for performing secure calculations to the plurality of servers, The client transmits a query for data input by a user to at least one of the plurality of servers, and the server determines the types of random numbers necessary for secure calculation based on the query received from the client. estimating the number, and transmitting the estimated type and number of random numbers to the client as necessary random number information; and the client generating random numbers based on the received necessary random number information and transmitting them to the plurality of servers. , pooling random numbers for performing a secure calculation based on the query received from the client, and the server performing a secure calculation based on the query received from the client, and transmitting the execution result to the client. and, when the server detects a missing random number in executing the secure calculation, the server responds with the type and number of missing random numbers as necessary random number information when an inquiry is received from the client. , the client inquires of the server at regular intervals whether there are any random numbers missing when performing secure calculation based on the query, and if there is a response from the server with the necessary random number information, the necessary random number information is The method further includes generating a missing random number based on the random number and transmitting the generated random number to the plurality of servers.

本発明によれば、クライアントが、サーバーから乱数の要求情報を受信した場合に、要求情報に基づく種類および数の乱数をサーバーに送信することで、秘匿計算に用いる乱数を適切にサーバーに提供することができる。 According to the present invention, when a client receives random number request information from a server, it sends random numbers of the type and number based on the request information to the server, thereby appropriately providing the server with random numbers used for secure calculation. be able to.

本実施形態に係る秘匿計算システムの構成図である。FIG. 1 is a configuration diagram of a secure calculation system according to the present embodiment. 本実施形態に係る乱数供給処理を説明するための概要図である。FIG. 2 is a schematic diagram for explaining random number supply processing according to the present embodiment. 第1サーバーにおける秘匿乗算処理を示すフローチャートである。It is a flowchart which shows the secret multiplication process in a 1st server. 第2サーバーにおける秘匿乗算処理を示すフローチャートである。It is a flowchart which shows the secret multiplication process in a 2nd server. 秘匿乗算処理を説明するための概要図である。FIG. 3 is a schematic diagram for explaining secure multiplication processing. 秘匿データ抽出処理を示すフローチャートである。It is a flowchart which shows secret data extraction processing. 秘匿データ抽出処理を説明するための概要図である。FIG. 3 is a schematic diagram for explaining confidential data extraction processing. 本実施形態に係るクライアント側乱数供給処理を示すフローチャートである。7 is a flowchart showing client-side random number supply processing according to the present embodiment. 本実施形態に係るサーバー側乱数供給処理を示すフローチャートである。7 is a flowchart showing server-side random number supply processing according to the present embodiment. 本実施形態に係る乱数供給処理におけるクライアントとサーバーとの情報の授受を説明するための図である。FIG. 6 is a diagram for explaining the exchange of information between the client and the server in the random number supply process according to the present embodiment.

本発明に係る秘匿計算システムの実施形態を、図を参照して説明する。図1は、本実施形態に係る秘匿計算システム1を示す構成図である。図1に示すように、本実施形態に係る秘匿計算システム1は、クライアント10と、ゲートウェイ20と、第1サーバー30と、第2サーバー40とから構成される。また、図1に示すように、クライアント10は、ゲートウェイ20により通信制限が行われているLAN(Local Area Network)内に配置されている。また、クライアント10およびゲートウェイ20と、第1サーバー30と、第2サーバー40とは、インターネット2を介して、互いに通信が可能となっている。なお、図1に示す図では、クライアント10およびゲートウェイ20を1つのみ図示するが、クライアント10やゲートウェイ20を複数備える構成とすることができる。また、図1に示す例では、サーバー30,40を2台用いて秘匿計算を行う2者間秘匿計算を実行する構成を例示しているが、これに限定されず、たとえば3台以上のサーバーを用いて秘匿計算を行う構成とすることができる。 An embodiment of a secure calculation system according to the present invention will be described with reference to the drawings. FIG. 1 is a configuration diagram showing a secure calculation system 1 according to this embodiment. As shown in FIG. 1, the secure computing system 1 according to the present embodiment includes a client 10, a gateway 20, a first server 30, and a second server 40. Further, as shown in FIG. 1, the client 10 is located within a LAN (Local Area Network) where communication is restricted by a gateway 20. Further, the client 10, the gateway 20, the first server 30, and the second server 40 can communicate with each other via the Internet 2. Note that although only one client 10 and one gateway 20 are illustrated in the diagram shown in FIG. 1, a configuration including a plurality of clients 10 and gateways 20 is possible. Furthermore, although the example shown in FIG. 1 illustrates a configuration in which two-party secure computation is performed using two servers 30 and 40, the configuration is not limited to this, and for example, three or more servers It is possible to have a configuration in which secure calculation is performed using .

本実施形態では、サーバー30,40に、暗号化されていないデータ(以下、「平文データ」という。)が秘密分散して記憶されている。秘密分散(法)とは、平文データを、単独では意味をなさないシェアと言われる断片に分割し、複数のサーバーに分散させる暗号化技術である。秘密分散(法)によれば、情報は複数の断片へと分散され、所定数以上の断片が集まらない限り元の情報は復元不能とされる。各サーバー30,40は、シェアを平文データに戻すことなく、平文データの計算結果のシェアを算出する秘匿計算を実行する。ここで、秘匿計算のうち、乗算および除算や、大小比較、テーブル構造データのフィルタリングおよび並び替えなどの計算では、秘匿計算において乱数が必要となる。従来は、秘匿計算を実行する各サーバーが互いに通信して乱数を生成する方法が提案されていたが、この場合、公開鍵暗号などを用いる必要があり、計算速度が低下してしまうという問題があった。そこで、本実施形態では、クライアント10が、秘匿計算に必要な乱数を生成し、生成した乱数をサーバー30,40に送信する構成(Client-Aidedモデルとも言われる)を採用している。 In this embodiment, unencrypted data (hereinafter referred to as "plaintext data") is stored in the servers 30 and 40 with a shared secret. Secret sharing is an encryption technology that divides plaintext data into pieces called shares, which have no meaning on their own, and distributes them to multiple servers. According to the secret sharing method, information is dispersed into multiple fragments, and the original information cannot be recovered unless a predetermined number of fragments or more are collected. Each server 30, 40 executes a secret calculation to calculate the share of the calculation result of the plaintext data without converting the share back to the plaintext data. Here, among the secure calculations, calculations such as multiplication and division, size comparison, and filtering and sorting of table structure data require random numbers in the secure calculations. Conventionally, a method has been proposed in which servers performing secure calculations communicate with each other to generate random numbers, but in this case, it is necessary to use public key cryptography, which poses the problem of slowing down the calculation speed. there were. Therefore, this embodiment adopts a configuration (also referred to as a Client-Aided model) in which the client 10 generates random numbers necessary for secure calculation and sends the generated random numbers to the servers 30 and 40.

また、本実施形態では、クライアント10が予め必要となる乱数を予測し、秘匿計算が開始される前に乱数をサーバー30,40に送信するのではなく、秘匿計算が開始されると、図2(A)に示すように、クライアント10からサーバー30,40に対して、秘匿計算で不足している乱数があるか問い合わせを行い、当該問い合わせに応答して、図2(B)に示すように、サーバー30,40から乱数の要求情報を送信してもらう。そして、図2(C)に示すように、クライアント10は、受信した要求情報に基づいて乱数を生成し、生成した乱数をサーバー30,40に供給することを特徴としている。なお、図2は、本実施形態に係る乱数供給処理を説明するための概要図である。以下、秘匿計算システム1を構成する各装置について説明する。 Furthermore, in this embodiment, instead of the client 10 predicting the necessary random numbers in advance and transmitting the random numbers to the servers 30 and 40 before the secure computation is started, the client 10 predicts the necessary random numbers in advance and sends the random numbers to the servers 30 and 40 when the secure computation is started. As shown in FIG. 2(A), the client 10 makes an inquiry to the servers 30 and 40 about whether there are any random numbers missing in the secure calculation, and in response to the inquiry, as shown in FIG. 2(B), , have the servers 30 and 40 send random number request information. As shown in FIG. 2C, the client 10 is characterized in that it generates a random number based on the received request information and supplies the generated random number to the servers 30 and 40. Note that FIG. 2 is a schematic diagram for explaining the random number supply processing according to this embodiment. Each device constituting the secure calculation system 1 will be explained below.

クライアント10は、ユーザが操作するパソコンなどの情報端末装置であり、演算装置、記憶装置、および通信装置を有する。本実施形態では、ユーザの操作により、クライアント10からサーバー30,40に秘匿計算の指示が送信され、これにより、サーバー30,40で秘匿計算が行われる。また、本実施形態に係る秘匿計算システム1において、クライアント10は、秘匿計算の指示を送信し、サーバー30,40で秘匿計算が開始されると、定期的に乱数の供給に関する問い合わせをサーバー30,40に対して行い、乱数が必要である場合には、秘匿計算で使用される乱数を生成し、生成した乱数をサーバー30,40に供給する機能も有する。なお、クライアント10からサーバー30,40への乱数供給方法の詳細については後述する。 The client 10 is an information terminal device such as a personal computer operated by a user, and includes a computing device, a storage device, and a communication device. In this embodiment, a secure calculation instruction is transmitted from the client 10 to the servers 30 and 40 by a user's operation, and thereby the servers 30 and 40 perform secure calculation. In the secure computation system 1 according to the present embodiment, the client 10 transmits a secure computation instruction, and when the secure computation is started at the servers 30 and 40, the client 10 periodically sends inquiries regarding the supply of random numbers to the servers 30 and 40. 40, and if a random number is required, it also has a function of generating a random number to be used in the secure calculation and supplying the generated random number to the servers 30, 40. Note that details of the method of supplying random numbers from the client 10 to the servers 30 and 40 will be described later.

ゲートウェイ20は、クライアント10およびサーバー30,40間の通信を制御する。具体的には、ゲートウェイ20は、クライアント10からサーバー30,40へのコネクション確立要求の伝送を許可する一方で、サーバー30、40からクライアント10へのコネクション確立要求の伝送を禁止する。一旦クライアント10とサーバー30、40の間でコネクションが確立すれば、当該コネクションが有効である間は相互に通信することが可能である。本実施形態では、ゲートウェイ20は、クライアント10からサーバー30、40とのコネクション確立要求を伝送し、コネクション確立後に、当該コネクションを使用して乱数供給の問い合わせがクライアント10からサーバー30,40に送信され、これに応答して、サーバー30,40から乱数の要求情報が同コネクションを使用してクライアント10に送信される。また、ゲートウェイ20は、サーバー30,40からクライアント10へと、秘匿計算の計算結果を送信する場合にも、同手順に従いクライアント10がサーバー30、40とのコネクションを確立させた後、サーバー30,40がクライアント10の指示に基づいて、当該コネクションを使用してクライアント10への計算結果を伝送する。
このようなゲートウェイ20の機能は、ゲートウェイが一般的に有する機能であり、かつLAN外部からクライアント10へ侵入されること防ぐために導入される一般的なネットワーク構成である。本実施形態では、ゲートウェイ20が一般的に有する機能と一般的なネットワーク構成を利用することができるため、本実施形態に係る秘匿計算システム1の既存システムへの汎用性は高いと言える。
Gateway 20 controls communication between client 10 and servers 30 and 40. Specifically, the gateway 20 allows connection establishment requests to be transmitted from the client 10 to the servers 30 and 40, while prohibiting transmission of connection establishment requests from the servers 30 and 40 to the client 10. Once a connection is established between the client 10 and the servers 30, 40, they can communicate with each other while the connection is valid. In this embodiment, the gateway 20 transmits a connection establishment request from the client 10 to the servers 30 and 40, and after establishing the connection, the client 10 sends a random number supply inquiry to the servers 30 and 40 using the connection. , in response, random number request information is sent from the servers 30 and 40 to the client 10 using the same connection. Also, when transmitting the calculation result of secure calculation from the servers 30, 40 to the client 10, the gateway 20 follows the same procedure, and after the client 10 establishes a connection with the servers 30, 40, the server 30, 40, 40 uses the connection to transmit the calculation results to the client 10 based on instructions from the client 10.
Such a function of the gateway 20 is a function that a gateway generally has, and is a general network configuration introduced to prevent intrusion into the client 10 from outside the LAN. In this embodiment, it is possible to utilize the functions that the gateway 20 generally has and the general network configuration, so it can be said that the secure calculation system 1 according to this embodiment has high versatility to existing systems.

サーバー30,40は、演算装置、記憶装置、通信装置、およびデータベースを有しており、データベースに、データを秘密分散してシェアとして記憶している。シェアは、秘密分散された特定の数のシェアが揃わないと平文データを復号することができず、仮に、第1サーバー30または第2サーバー40の一方のみでシェアが漏洩した場合でも、もう一方のシェアが漏洩していない場合には、平文データを復号することができず、秘密状態を担保することができる。本実施形態において、サーバー30,40は、秘匿計算を行うためのサーバー側プログラムを記憶装置に記憶しており、当該プログラムを演算装置で実行することで、秘匿計算を実行することができる。特に、本実施形態では、第1サーバー30と第2サーバー40とは、インターネット2を介して互いに通信が可能であり、サーバー30,40が秘密分散されたシェアを復号することなくデータを秘匿したまま、サーバー30,40で行った計算結果を互いにやり取りしながら秘匿計算を行うことで、所望の計算結果を得るマルチパーティ計算(Multi-Party Computation、MPC)が行われる。また、秘匿計算において、サーバー30,40は、乗算、大小比較、フィルタリング計算、データの並び替えなどの秘匿計算では、クライアント10から乱数を受信し、受信した乱数を用いて秘匿計算を実行する。 The servers 30 and 40 have a computing device, a storage device, a communication device, and a database, and secretly share and store data in the database. Plaintext data cannot be decrypted unless a specific number of secretly shared shares are collected, and even if a share is leaked from only one of the first server 30 or the second server 40, the other If the share of the data is not leaked, the plaintext data cannot be decrypted and the confidentiality can be guaranteed. In this embodiment, the servers 30 and 40 have server-side programs for performing secure calculations stored in their storage devices, and can perform secure calculations by executing the programs on their arithmetic devices. In particular, in this embodiment, the first server 30 and the second server 40 can communicate with each other via the Internet 2, and the servers 30 and 40 can conceal data without decrypting the secret shared share. Multi-Party Computation (MPC) is performed to obtain a desired computation result by performing secret computation while exchanging the computation results performed by the servers 30 and 40 with each other. Furthermore, in secure calculations such as multiplication, size comparison, filtering calculations, and data rearrangement, the servers 30 and 40 receive random numbers from the client 10 and execute secure calculations using the received random numbers.

さらに、サーバー30,40は、秘匿演算で必要となる乱数を見積るためのプログラムを記憶部に記憶しており、当該乱数見積プログラムを実行することで、秘匿計算に必要な乱数を予め見積もることができる。具体的には、サーバー30,40は、クライアント10から実行する秘匿計算の計算情報を取得し、乱数見積プログラムを実行することで、クライアント10から取得した計算情報にある秘匿計算を行う場合の乱数を見積もる。計算情報は、サーバー30,40で実行される秘匿計算を示す情報であれば特に限定されないが、本実施形態では、クライアント10から出力されるクエリー情報(たとえばwhere句を有するselect構文など)が計算情報として、クライアント10から送信され、サーバー30,40により取得される。なお、当該乱数見積プログラムで見積可能な乱数は、計算対象となるテーブル構造データの行数が変化する前の計算で使用される乱数であり、行数が変化した後の計算で使用される乱数までは見積もることができない。たとえば、秘匿乗算ではテーブル構造データの行数は変化しないため、2回の秘匿乗算を行う場合も、これらの計算で使用される乱数を見積もることができるが、行数が変化するフィルタリング計算(where句)を行った後に秘匿乗算を行う計算では、フィルタリング後の秘匿乗算で使用する乱数までは見積もることができない。 Furthermore, the servers 30 and 40 have a program for estimating random numbers required for secure calculations stored in their storage units, and by executing the random number estimation program, it is possible to estimate in advance the random numbers required for secure calculations. can. Specifically, the servers 30 and 40 acquire the calculation information of the secure calculation to be executed from the client 10 and run the random number estimation program, thereby obtaining the random numbers for performing the secure calculation in the calculation information acquired from the client 10. Estimate. The calculation information is not particularly limited as long as it is information indicating a secure calculation executed by the servers 30 and 40, but in this embodiment, the calculation information is calculated based on query information output from the client 10 (for example, a select syntax with a where clause). The information is transmitted from the client 10 and acquired by the servers 30 and 40. Note that the random numbers that can be estimated by this random number estimation program are the random numbers used in calculations before the number of rows of the table structure data to be calculated changes, and the random numbers used in calculations after the number of rows changes. cannot be estimated until then. For example, in a secure multiplication, the number of rows in the table structure data does not change, so even if two secure multiplications are performed, it is possible to estimate the random numbers used in these calculations, but in a filtering calculation where the number of rows changes (where In calculations in which a secret multiplication is performed after performing a filtering process, it is not possible to estimate the random numbers used in the secret multiplication after filtering.

以下においては、まず、図3ないし図6を参照して、サーバー30,40による秘匿計算のうち、乱数を用いる秘匿乗算の一例について説明する。なお、図3は、第1サーバー30で実行される秘匿乗算処理を示すフローチャートであり、図4は、第2サーバー40で実行される秘匿乗算処理を示すフローチャートであり、図5は、秘匿乗算処理を説明するための概要図である。 In the following, an example of secure multiplication using random numbers among the secure calculations performed by the servers 30 and 40 will be described first with reference to FIGS. 3 to 6. Note that FIG. 3 is a flowchart showing the secure multiplication process executed by the first server 30, FIG. 4 is a flowchart showing the secure multiplication process executed by the second server 40, and FIG. FIG. 2 is a schematic diagram for explaining processing.

(秘匿乗算処理)
秘匿乗算処理は、2入力1出力の整数乗算において、入出力に関する情報を一切知ることなく、その演算結果を得ることができる処理である。具体的には、2つの暗号化データを入力とし、それらを一切復号することなく後述する所定の演算(所定の秘匿乗算アリゴリズム)を実施し、乗算結果を暗号化データとして得る演算処理である。秘匿乗算処理では、図5に示すように、サーバー30,40に、平文データx,yを秘密分散したシェア[[x]],[[x]],[[y]],[[y]]がそれぞれ記憶されている。図3ないし図5に示す秘匿乗算処理では、サーバー30,40により、x,yのシェアをそのまま用いて、x×y=zの乗算を行い、計算結果であるzのシェア[[z]],[[z]]を得る場面を例示して説明する。なお、以下においては、第1サーバー30に記憶されているxのシェアを[[x]]、yのシェアを[[y]]とする。同様に、第2サーバー40に記憶されているxのシェアを[[x]]、yのシェアを[[y]]とする。さらに、第1サーバー30に記憶されるzのシェアを[[z]]とし、第2サーバー40に記憶されるzのシェアを[[z]]とする。なお、平文データと、秘密分散されたシェアとは、以下のような関係を有している。たとえば、平文データxと、そのシェアである[[x]],[[x]]は、x=[[x]]+[[x]]の関係にあり、[[x]]=rおよび[[x]]=x-rの関係にある。ここで、xとrは2の剰余環で表現される整数であり、rは一様乱数となる。lは演算対象の値域を表すビット数であり、1ビット整数の演算の場合はl=1、32ビット整数の演算の場合はl=32となる。平文データとシェアとがこのような関係にあるため、[[x]]+[[x]]により平文データxを復号することが可能となる。
(Secret multiplication process)
The secret multiplication process is a process in which the result of integer multiplication with two inputs and one output can be obtained without knowing any information regarding input and output. Specifically, it is an arithmetic process in which two pieces of encrypted data are input, a predetermined operation (predetermined secret multiplication algorithm) described below is performed on them without decrypting them at all, and the multiplication result is obtained as encrypted data. In the secret multiplication process, as shown in FIG. 5, the servers 30 and 40 share [[x]] 1 , [[x]] 2 , [[y]] 1 , [ [y]] 2 are stored respectively. In the secure multiplication processing shown in FIGS. 3 to 5, the servers 30 and 40 use the shares of x and y as they are to perform multiplication of x×y=z, and the share of z that is the calculation result [[z]] 1 , [[z]] 2 will be explained as an example. Note that in the following, the share of x stored in the first server 30 is assumed to be [[x]] 1 and the share of y is assumed to be [[y]] 1 . Similarly, assume that the share of x stored in the second server 40 is [[x]] 2 and the share of y is [[y]] 2 . Further, let the share of z stored in the first server 30 be [[z]] 1 , and the share of z stored in the second server 40 be [[z]] 2 . Note that the plaintext data and the secret-distributed share have the following relationship. For example, plaintext data x and its shares [[x]] 1 and [[x]] 2 have the relationship x = [[x]] 1 + [[x]] 2 , and [[x] ] 1 = r and [[x]] 2 = x−r. Here, x and r are integers expressed by a coset ring of 2 l , and r is a uniform random number. l is the number of bits representing the range of the operation target; l=1 in the case of an operation on a 1-bit integer, and l=32 in the case of an operation on a 32-bit integer. Since the plaintext data and shares have such a relationship, it becomes possible to decrypt the plaintext data x by [[x]] 1 + [[x]] 2 .

秘匿乗算処理では、クライアント10により生成された3つの乱数a,b,cを用いて計算が行われる。なお、これら3つの乱数はc=a×bの関係にある相関乱数である。クライアント10は、乱数aを秘密分散して乱数シェア[[a]],[[a]]を生成し、乱数bを秘密分散して乱数シェア[[b]],[[b]]を生成し、乱数cを秘密分散して乱数シェア[[c]],[[c]]を生成する。そして、クライアント10は、乱数a,b,cを秘密分散したシェア[[a]],[[b]],[[c]]を第1サーバー30に送信し、乱数a,b,cを秘密分散したシェア[[a]],[[b]],[[c]]を第2サーバー40へと送信する。これにより、第1サーバー30は、乱数a,b,cのシェア[[a]],[[b]],[[c]]を用いて秘匿乗算を実行することができ、また、第2サーバー40は、乱数a,b,cのシェア[[a]],[[b]],[[c]]を用いて秘匿乗算を実行することができる。 In the secure multiplication process, calculation is performed using three random numbers a, b, and c generated by the client 10. Note that these three random numbers are correlated random numbers having a relationship of c=a×b. The client 10 distributes the secret of random number a to generate random number shares [[a]] 1 , [[a]] 2 , and distributes the secret of random number b to generate random number shares [[b]] 1 , [[b] ] 2 and secretly share the random number c to generate random number shares [[c]] 1 and [[c]] 2 . Then, the client 10 transmits the secret sharing shares [[a]] 1 , [[b]] 1 , [[c]] 1 of the random numbers a, b, and c to the first server 30, and shares the random numbers a, b, and c. , c are secretly shared, and the shares [[a]] 2 , [[b]] 2 , and [[c]] 2 are transmitted to the second server 40 . As a result, the first server 30 can perform secure multiplication using the shares [[a]] 1 , [[b]] 1 , [[c]] 1 of the random numbers a, b, and c, and , the second server 40 can perform secure multiplication using the shares [[a]] 2 , [[b]] 2 , [[c]] 2 of the random numbers a, b, and c.

まず、図3を参照して、第1サーバー30で実行される秘匿乗算処理について説明する。なお、以下においては、平文データxのシェア[[x]],[[y]]を一次シェア、一次シェア[[x]],[[y]]に基づいて算出されたシェア[[x’]],[[y’]]を二次シェアと称す。まず、ステップS101では、第1サーバー30により、平文データxの一次シェア[[x]]から乱数aのシェア[[a]]を引いた数が、二次シェア[[x’]]として算出される。また、ステップS102では、第1サーバー30により、平文データyの一次シェア[[y]]から乱数bのシェア[[b]]を引いた数が、二次シェア[[y’]]として算出される。 First, with reference to FIG. 3, the secure multiplication process executed by the first server 30 will be described. In addition, in the following, shares [[x]], [[y]] of plaintext data x are expressed as primary shares, and shares [[x'] calculated based on primary shares [[x]], [[y]] are expressed as ]], [[y']] are called secondary shares. First, in step S101, the first server 30 determines that the number obtained by subtracting the share [[a]] 1 of the random number a from the primary share [[x]] 1 of the plaintext data x is the secondary share [[x']] It is calculated as 1 . Further, in step S102, the first server 30 determines that the number obtained by subtracting the share [[b]] 1 of the random number b from the primary share [[y]] 1 of the plaintext data y is the secondary share [[y']] It is calculated as 1 .

また、ステップS103およびS104では、図5に示すように、サーバー30,40間の相互通信により、一方のサーバー30,40で行われた計算結果を他方のサーバー30,40と送受信する処理が行われる。具体的には、ステップS103では、第1サーバー30により、ステップS101で算出した二次シェア[[x’]]と、ステップS102で算出した二次シェア[[y’]]とが、第2サーバー40へと送信される。また、ステップS104では、第1サーバー30により、第2サーバー40で生成された二次シェア[[x’]]および二次シェア[[y’]]が受信される。なお、二次シェア[[x’]]は、第2サーバー40において、平文データxの一次シェア[[x]]から乱数aのシェア[[a]]を引いて求めた数である。また、二次シェア[[y’]]は、第2サーバー40において算出された、平文データyの一次シェア[[y]]から乱数bのシェア[[b]]を引いて求めた数である。二次シェア[[x’]]および二次シェア[[y’]]の算出方法については、後述する図4に示す、第2サーバー40で実行される秘匿乗算処理でも説明する。 Further, in steps S103 and S104, as shown in FIG. 5, processing is performed to transmit and receive calculation results performed by one server 30 and 40 to and from the other server 30 and 40 through mutual communication between the servers 30 and 40. be exposed. Specifically, in step S103, the first server 30 calculates that the secondary share [[x']] 1 calculated in step S101 and the secondary share [[y']] 1 calculated in step S102 are It is transmitted to the second server 40. Further, in step S104, the first server 30 receives the secondary share [[x']] 2 and the secondary share [[y']] 2 generated by the second server 40. Note that the secondary share [[x']] 2 is the number obtained by subtracting the share [[a]] 2 of the random number a from the primary share [[x]] 2 of the plaintext data x in the second server 40. be. Further, the secondary share [[y']] 2 is calculated by subtracting the share [[b]] 2 of the random number b from the primary share [[y]] 2 of the plaintext data y calculated in the second server 40. This is the number. The method for calculating the secondary share [[x']] 2 and the secondary share [[y']] 2 will also be described in the secure multiplication process executed by the second server 40 shown in FIG. 4, which will be described later.

続いて、ステップS105では、第1サーバー30により、ステップS101で算出した二次シェア[[x’]]と、ステップS104で取得した二次シェア[[x’]]とが加算され、データx’が算出される。また、ステップS106では、第1サーバー30により、ステップS102で算出した二次シェア[[y’]]と、ステップS104で取得した二次シェア[[y’]]とが加算され、データy’が算出される。なお、データx’およびデータy’は、平文データxおよび平文データyを乱数aおよび乱数bを用いて暗号化したデータであり、それ単独で意味をなさないデータとなる。 Subsequently, in step S105, the first server 30 adds the secondary share [[x']] 1 calculated in step S101 and the secondary share [[x']] 2 obtained in step S104, Data x' is calculated. Further, in step S106, the first server 30 adds the secondary share [[y']] 1 calculated in step S102 and the secondary share [[y']] 2 obtained in step S104, and the data y' is calculated. Note that data x' and data y' are data obtained by encrypting plaintext data x and plaintext data y using random numbers a and random numbers b, and are meaningless data on their own.

ステップS107では、第1サーバー30により、ステップS105で算出したデータx’、ステップS106で算出したデータy’、クライアント10から受信した乱数a,b,cのシェア[[a]],[[b]],[[c]]を用いて、x×yの計算結果であるzのシェア[[z]]が算出される。具体的には、第1サーバー30は、x’×y’+x’× [[b]]+y’× [[a]]+[[c]]の計算結果を、シェア[[z]]として算出することができる。そして、第1サーバー30は、算出したシェア[[z]]を、データベースに記憶し、あるいは、クライアント10の指示に基づいて、クライアント10へと送信する。 In step S107, the first server 30 calculates the data x' calculated in step S105, the data y' calculated in step S106, and the shares [[a]] 1 , [[ of the random numbers a, b, and c received from the client 10. b]] 1 and [[c]] 1 , the share [[z]] 1 of z, which is the calculation result of x×y, is calculated. Specifically, the first server 30 shares the calculation result of x'×y'+x'× [[b]] 1 +y'× [[a]] 1 +[[c]] 1 by sharing [[z ]] It can be calculated as 1 . Then, the first server 30 stores the calculated share [[z]] 1 in the database or transmits it to the client 10 based on an instruction from the client 10.

また、図4は、第2サーバー40で実行される秘匿乗算処理を示すフローチャートである。図4に示すように、まず、ステップS201では、第2サーバー40により、平文データxの一次シェア[[x]]から乱数aのシェア[[a]]を引いた数が二次シェア[[x’]]として算出される。また、ステップS202では、第2サーバー40により、平文データyの一次シェア[[y]]から乱数bのシェア[[b]]を引いた数が、二次シェア[[y’]]として算出される。 Further, FIG. 4 is a flowchart showing the secure multiplication process executed by the second server 40. As shown in FIG. 4, first, in step S201, the second server 40 determines that the secondary share is the number obtained by subtracting the share [[a]] 2 of the random number a from the primary share [[x]] 2 of the plaintext data x. [[x']] is calculated as 2 . Further, in step S202, the second server 40 determines that the number obtained by subtracting the share [[b]] 2 of the random number b from the primary share [[y]] 2 of the plaintext data y is the secondary share [[y']] It is calculated as 2 .

ステップS203およびS204では、図3のステップS103,S104と同様に、サーバー30,40間の相互通信により、一方のサーバー30,40で行われた計算結果を他方のサーバー30,40に送受信する処理が行われる。すなわち、ステップS203では、第2サーバー40により、ステップS201で算出した二次シェア[[x’]]と、ステップS202で算出した二次シェア[[y’]]とが、第1サーバー30へと送信される。なお、上述したように、図3のステップS104で第1サーバー30が受信する二次シェア[[x’]]および二次シェア[[y’]]は、このステップS203で第2サーバー40から送信される二次シェア[[x’]]および二次シェア[[y’]]である。また、ステップS204では、第2サーバー40により、第1サーバー30で生成された二次シェア[[x’]]および二次シェア[[y’]]が受信される。なお、二次シェア[[x’]]および二次シェア[[y’]]は、上述した図3のステップS103において第1サーバー30により送信された二次シェア[[x’]]および二次シェア[[y’]]である。 In steps S203 and S204, similarly to steps S103 and S104 in FIG. will be held. That is, in step S203, the second server 40 transfers the secondary share [[x']] 2 calculated in step S201 and the secondary share [[y']] 2 calculated in step S202 to the first server 40. 30. Note that, as described above, the secondary share [[x']] 2 and the secondary share [[y']] 2 that the first server 30 receives in step S104 of FIG. The secondary share [[x']] 2 and the secondary share [[y']] 2 are sent from 40. Further, in step S204, the second server 40 receives the secondary share [[x']] 1 and the secondary share [[y']] 1 generated by the first server 30. Note that the secondary share [[x']] 1 and the secondary share [[y']] 1 are the secondary share [[x']] transmitted by the first server 30 in step S103 of FIG. 3 described above. 1 and the quadratic share [[y']] 1 .

そして、ステップS205では、第2サーバー40により、ステップS201で算出した二次シェア[[x’]]と、ステップS204で取得した二次シェア[[x’]]とを加算して、データx’が復号される。また、ステップS206では、第2サーバー40により、ステップS202で算出した二次シェア[[y’]]と、ステップS204で取得した二次シェア[[y’]]とを加算して、データy’が復号される。 Then, in step S205, the second server 40 adds the secondary share [[x']] 2 calculated in step S201 and the secondary share [[x']] 1 obtained in step S204, Data x' is decoded. Further, in step S206, the second server 40 adds the secondary share [[y']] 2 calculated in step S202 and the secondary share [[y']] 1 obtained in step S204, Data y' is decoded.

ステップS207では、第2サーバー40により、ステップS205で算出したデータx’、ステップS206で算出したデータy’、クライアント10から受信した乱数a,b,cのシェア[[a]],[[b]],[[c]]を用いて、乗算x×yの計算結果であるデータzのシェア[[z]]が算出される。具体的には、第2サーバー40は、x’×[[b]]+y’×[[a]]+ [[c]]の計算結果をシェア[[z]]として算出する。そして、第2サーバー40は、算出したシェア[[z]]を、データベースに記憶し、あるいは、クライアント10の指示に基づいて、クライアント10へと送信する。 In step S207, the second server 40 calculates the data x' calculated in step S205, the data y' calculated in step S206, and the shares [[a]] 2 , [[ of the random numbers a, b, and c received from the client 10. b]] 2 and [[c]] 2 , the share [[z]] 2 of the data z, which is the calculation result of the multiplication x×y, is calculated. Specifically, the second server 40 calculates the calculation result of x' x [[b]] 2 + y' x [[a]] 2 + [[c]] 2 as a share [[z]] 2 . . Then, the second server 40 stores the calculated share [[z]] 2 in the database or transmits it to the client 10 based on an instruction from the client 10.

これにより、第1サーバー30には、平文データxとyとを乗算した計算結果であるzのシェア[[z]]が記憶され、第2サーバー40には、zのシェア[[z]]が記憶される。また、クライアント10は、第1サーバー30からシェア[[z]]を取得し、第2サーバー40からシェア[[z]]を取得して、シェア[[z]]とシェア[[z]]とを加算することで、平文データxとyとを乗算した結果の平文データzを算出することができる。 As a result, the first server 30 stores the share [[z]] 1 of z, which is the calculation result of multiplying the plaintext data x and y, and the second server 40 stores the share [[z]] 1 of z. ] 2 is stored. Further, the client 10 acquires share [[z]] 1 from the first server 30 and share [[z]] 2 from the second server 40, and shares share [[z]] 1 and share [[ z]] 2 , it is possible to calculate the plaintext data z, which is the result of multiplying the plaintext data x and y.

このように、1回の秘匿乗算では、3つの相関乱数a,b,cのシェア[[a]],[[b]],[[c]],[[a]],[[b]],[[c]]が必要とされる。また、データが複数の行(行数n)を有するテーブル構造データである場合に、各行のデータを秘匿乗算する場合には、3つの相関乱数a,b,cのシェア[[a]],[[b]],[[c]],[[a]],[[b]],[[c]]が行数n分必要となる。このように、秘匿乗算では、秘匿乗算の回数やテーブル構造データの行数nが予め分かれば、必要となる乱数の数も分かることとなる。本実施形態では、クライアント10が、乱数を生成する機能を有し、計算を開始する前からこれらの相関乱数のシェアを生成しプールしておくことで、必要に応じて生成した相関乱数をサーバー30,40に送信することもでき、また、後述するように、サーバー30,40の要求に応じて、相関乱数のシェアを生成しサーバー30,40に送信することもできる。 In this way, in one secret multiplication, the shares of three correlated random numbers a, b, c are [[a]] 1 , [[b]] 1 , [[c]] 1 , [[a]] 2 , [[b]] 2 and [[c]] 2 are required. In addition, when the data is table-structured data with multiple rows (number of rows n), when performing secret multiplication on the data in each row, the share of three correlated random numbers a, b, and c [[a]] 1 , [[b]] 1 , [[c]] 1 , [[a]] 2 , [[b]] 2 , [[c]] 2 are required for the number of lines n. In this way, in secure multiplication, if the number of secure multiplications and the number of rows n of the table structure data are known in advance, the number of random numbers required can also be known. In this embodiment, the client 10 has a function of generating random numbers, and generates and pools a share of these correlated random numbers before starting calculation, so that the generated correlated random numbers can be sent to the server as needed. 30, 40, or, as will be described later, a share of correlated random numbers can be generated and transmitted to the servers 30, 40 in response to a request from the servers 30, 40.

(秘匿データ抽出処理)
次に、図6および図7に基づいて、秘匿データ抽出処理について説明する。なお、図6は、第1サーバー30および第2サーバー40で実行される秘匿データ抽出処理を示すフローチャートであり、図7は、秘匿データ抽出処理を説明するための概要図である。本実施形態に係るデータ抽出処理では、SQL文などを用いて、秘密分散したテーブル構造データの中から、一定の条件を満たす行データを抽出する処理である。以下においては、X、Yという数値属性の列データを有する、n行の行データを有するテーブル構造データの中から、X列のデータxがY列のデータyよりも小さい(x<y)という条件を満たす行データにおけるX列データの数値xを抽出する計算を例示して説明する。すなわち、SQL文で記載するところの、“select x from テーブル構造データ where x<y”の計算を例示して説明する。なお、各サーバー30,40には、図7に示すように、計算対象であるテーブル構造データのシェアが予め記憶されているものとする。より具体的には、サーバー30,40は、X列データxのシェア[[x[i]]]およびY列データyのシェア[[y[i]]]を行数nの分だけ記憶しているものとする。以下では、n行あるテーブル構造データの各行のX列データxのシェア[[x[i]]]の数列をシェア[[x]]と称し、n行あるテーブル構造データの各行のY列データyのシェア[[y[i]]]の数列をシェア[[y]]と称す。また、iは整数でテーブル構造データのうちi行目のデータを意味するものとし、0≦i<nとする。
(Confidential data extraction process)
Next, the secret data extraction process will be explained based on FIGS. 6 and 7. Note that FIG. 6 is a flowchart showing the secret data extraction process executed by the first server 30 and the second server 40, and FIG. 7 is a schematic diagram for explaining the secret data extraction process. The data extraction process according to this embodiment is a process of extracting row data that satisfies a certain condition from table structure data whose secrets have been shared, using an SQL statement or the like. In the following, data x in column X is smaller than data y in column Y (x<y) from among table structure data having n rows of row data with column data of numerical attributes X, Y. Calculation for extracting the numerical value x of the X column data in the row data that satisfies the conditions will be described by way of example. That is, the calculation of "select x from table structure data where x<y" described in an SQL statement will be explained as an example. It is assumed that each server 30, 40 stores in advance the share of table structure data to be calculated, as shown in FIG. More specifically, the servers 30 and 40 store the share [[x[i]]] of the X column data x and the share [[y[i]]] of the Y column data y for the number of rows n. It is assumed that In the following, the number sequence of share [[x[i]]] of X column data x in each row of table structure data with n rows is called share [[x]], and the Y column data of each row of table structure data with n rows. The sequence of shares [[y[i]]] of y is called share [[y]]. Further, i is an integer and means the i-th row data of the table structure data, and 0≦i<n.

図6に示す秘匿データ抽出処理は、主に、2つの処理により行われる。すなわち、x<yの大小比較を行う処理と、フィルタリング条件(図6に示す例ではx<y)に合致する行のX列データxを抽出するフィルタリング処理である。大小比較処理においては、比較対象整数の表現ビット数に応じて必要な相関乱数の個数が異なるが、例えば、32ビット整数の場合、1回の比較当たり、1ビットの相関乱数のシェアの組み合わせ([[a]],[[b]],[[c]])が163組必要となる。さらに、テーブル構造データがn行である場合は、n倍の相関乱数のシェアの組み合わせが必要となる。また、フィルタリング処理においては、抽出対象データ(抽出するデータ列のデータ、SQL文ではselect文に記載されるデータ)が32ビット整数1列である場合、1回のフィルタリングあたり、シャッフルと呼ばれる乱数(以下、単にシャッフルと称す)と相関乱数の数列の組み合わせ((r1,r1’,a1,a1’,b1,b1’),(r2,r2’,a2,a2’,b2,b2’))が1組必要となる。なお、シャッフルr1,r1’,r2,r2’は、ランダム置換を構成するn個の数列(乱数列)であり、計算対象となるテーブル構造データの行数が多くなるほど、シャッフルに含まれる乱数の数(乱数列の要素数)は多くなる。また、a1,a1’,b1,b1’ ,a2,a2’,b2,b2’は相関乱数の数列である。本実施形態では、抽出対象がX列データxの1つだけのため、相関乱数はa,b(具体的には、a1,a1’,b1,b1’,a2,a2’,b2,b2’)の組み合わせとなるが、抽出対象の列数が増加すれば、相関乱数の組み合わせもa,b,c・・・と増えていく。このように、秘匿データ抽出処理においては、実行する計算処理に応じて乱数の種類が変わり、また、計算対象となるテーブル構造データの行数nや抽出対象の列数に応じて必要となる乱数の数が変化する。さらに、本実施例においてテーブル構造データの行数は公開されている(秘匿されない)値であるが、フィルタリング結果のテーブル構造データの行数については、当該フィルタリング処理が実行完了するまでは不明である。そのため、データ分析においては、フィルタリング処理後に集計等何らかの演算を実施する場合が多いが、前段のフィルタリング処理が完了するまでは、その後の秘匿計算に必要な乱数を予め見積もってプールしておくことが難しいという問題がある。本実施形態では、クライアント10が必要に応じて乱数を生成しサーバー30,40に提供することで、このような問題を解決することが可能となる。以下に、図6に示す秘匿データ抽出処理のフローチャートに基づいて、本実施形態に係る秘匿データ抽出処理を説明する。 The secret data extraction process shown in FIG. 6 is mainly performed by two processes. That is, a process of comparing the magnitude of x<y, and a filtering process of extracting the X column data x of the row that matches the filtering condition (in the example shown in FIG. 6, x<y). In the size comparison process, the number of correlated random numbers required differs depending on the number of representation bits of the integer to be compared. For example, in the case of a 32-bit integer, the combination of shares of 1-bit correlated random numbers ( 163 sets of [[a]], [[b]], [[c]]) are required. Furthermore, if the table structure data has n rows, a combination of shares of n-times correlated random numbers is required. In addition, in filtering processing, if the data to be extracted (the data of the data string to be extracted, the data written in the select statement in SQL statements) is a string of 32-bit integers, random numbers called shuffle ( (hereinafter simply referred to as shuffle) and the combination of correlated random number sequences ((r1, r1', a1, a1', b1, b1'), (r2, r2', a2, a2', b2, b2')) One set is required. Note that shuffle r1, r1', r2, r2' is a sequence of n numbers (random number sequence) that constitutes random permutation, and the more rows of table structure data to be calculated, the more random numbers included in the shuffle. The number (number of elements in the random number sequence) increases. Further, a1, a1', b1, b1', a2, a2', b2, b2' are a sequence of correlated random numbers. In this embodiment, since there is only one extraction target, the X column data x, the correlation random numbers are a, b (specifically, a1, a1', b1, b1', a2, a2', b2, b2' ), but as the number of columns to be extracted increases, the number of combinations of correlated random numbers also increases, such as a, b, c, and so on. In this way, in the secret data extraction process, the type of random number changes depending on the calculation process to be performed, and the random number required changes depending on the number of rows n of the table structure data to be calculated and the number of columns to be extracted. The number of changes. Furthermore, in this embodiment, the number of rows in the table structure data is a public (non-concealed) value, but the number of rows in the table structure data as a result of filtering is unknown until the filtering process is completed. . Therefore, in data analysis, some calculations such as aggregation are often performed after filtering processing, but until the previous stage of filtering processing is completed, it is recommended to estimate and pool the random numbers required for subsequent confidential calculations in advance. The problem is that it is difficult. In this embodiment, such a problem can be solved by the client 10 generating random numbers as needed and providing them to the servers 30 and 40. The secret data extraction process according to this embodiment will be explained below based on the flowchart of the secret data extraction process shown in FIG.

図6に示すように、ステップS301では、サーバー30,40により、フィルタリング条件の評価が行われる。本実施形態では、計算対象となるテーブル構造データの中から、x<yとなる行データを抽出する計算であるため、サーバー30,40は、自身が記憶するテーブル構造データのシェア、より具体的には、テーブル構造データのX列データxのシェア[[x]]およびY列データyのシェア[[y]]に基づいて、xとyとの大小関係を秘匿計算で評価し、評価結果fのシェア[[f]]を出力として得る。具体的には、テーブル構造データの各行のX列データxのシェア[[x[i]]]と、Y列データyのシェア[[y[i]]]とを用いて、各行におけるxとyの大小関係を秘匿計算で評価する。なお、シェア[[x]]とシェア[[y]]とに基づいて各行のX列データxとY列データyとの大小関係を秘匿計算で評価する方法は、サーバー30,40に格納済みの1ビットの相関乱数のシェアの組み合わせ([[a]],[[b]],[[c]])を使用する公知の方法を用いることができる(たとえば、大畑幸矢および縫田光司、「効率的な秘匿大小比較プロトコルとその応用」、暗号と情報セキュリティシンポジウム(SCIS 2019)予稿集、2019年を参照)。 As shown in FIG. 6, in step S301, the servers 30 and 40 evaluate filtering conditions. In this embodiment, since the calculation is to extract row data where x < y from the table structure data to be calculated, the servers 30 and 40 share the table structure data stored by themselves, To do this, based on the share [[x]] of X column data x and the share [[y]] of Y column data y in the table structure data, the magnitude relationship between x and y is evaluated by secret calculation, and the evaluation result is Get the share [[f]] of f as output. Specifically, using the share [[x[i]]] of the X column data x in each row of the table structure data and the share [[y[i]]] of the Y column data y, x and Evaluate the magnitude relationship of y by secret calculation. Note that the method of evaluating the magnitude relationship between X column data x and Y column data y of each row based on share [[x]] and share [[y]] by secret calculation is already stored in the servers 30 and 40. A known method using a combination of shares of 1-bit correlated random numbers ([[a]], [[b]], [[c]]) can be used (for example, Yukiya Ohata and Koji Nuita , “Efficient secrecy size comparison protocol and its applications”, Proceedings of Symposium on Cryptography and Information Security (SCIS 2019), 2019).

ステップS302では、サーバー30,40により、ステップS301で得たフィルタリング条件評価の評価結果のシェア[[f]]にランダム置換Πを適用した[[Π(f)]](要素数は行数n)が生成される。ここで、ステップS301のフィルタリング条件評価では、テーブル構造データの行ごとに、x<yである場合には1を秘密分散した数値がシェア[[f(i)]]として出力され、x<yでない場合には0を秘密分散した数値がシェア[[f(i)]]として出力される。このように、各行におけるx<yの評価に応じて出力された0または1のシェア[[f]]を、さらにランダム置換したものが[[Π(f)]]となる。なお、上記iはテーブル構造データのi行目のデータであることを示す。また、[[Π(f)]]は、テーブル構造データの全ての行の評価結果である1または0のシェア[[f(i)]]をランダム置換したものであり、要素数はテーブル構造データの行数nとなる。このように、[[Π(f)]]では、評価結果fを秘匿計算でシェア[[f]]として求めることで、フィルタリング条件(x<y)を満たすか否かが不明となるだけではなく、シェア[[f]]にランダム置換を適用することで、シェア[[f]]の何行目のデータが、元のテーブル構造データの何行目のデータに相当するか不明となり、セキュリティを高めることが可能となる。なお、上述したランダム置換は、サーバー30,40に格納済みのシャッフルと相関乱数の数列の組み合わせ((r1,r1’,a1,a1’,b1,b1’),(r2,r2’,a2,a2’,b2,b2’))を使用する公知の方法により実行することができる(たとえば、N.Attrapadung他、”Oblivious Linear Group Actions and Applications”,In Proceedings of CCS 2021, 630‐650頁を参照。)。 In step S302, the servers 30 and 40 apply random permutation Π to the share [[f]] of the evaluation results of the filtering condition evaluation obtained in step S301 [[Π(f)]] P (the number of elements is the number of rows) n) is generated. Here, in the filtering condition evaluation in step S301, for each row of the table structure data, if x<y, a value obtained by secretly sharing 1 is output as a share [[f(i)]], and x<y If not, a value obtained by secret sharing 0 is output as a share [[f(i)]]. In this way, the share [[f]] of 0 or 1 output according to the evaluation of x<y in each row is further randomly permuted to become [[Π(f)]] P. Note that the above i indicates data in the i-th row of the table structure data. In addition, [[Π(f)]] P is a random permutation of the share [[f(i)]] of 1 or 0, which is the evaluation result of all rows of the table structure data, and the number of elements is the same as the table The number of rows of structural data is n. In this way, in [[Π(f)]] P , by calculating the evaluation result f as a share [[f]] by secret calculation, it becomes unclear whether or not the filtering condition (x<y) is satisfied. Instead, by applying random permutation to share [[f]], it becomes unclear which row of data in share [[f]] corresponds to which row of data in the original table structure data, It becomes possible to increase security. Note that the above-mentioned random permutation is a combination of the shuffle and correlated random number sequences stored in the servers 30 and 40 ((r1, r1', a1, a1', b1, b1'), (r2, r2', a2, a2', b2, b2')) (for example, N. Attrapadung et al., "Oblivious Linear Group Actions and Applications", In Proceedings of CCS 2021, 630 -See page 650 ).

なお、図6に示す秘匿データ抽出計算処理は、第1サーバー30および第2サーバー40でそれぞれ実行されるため、図6において、自サーバーで算出したシェアを「P」を用いて示し、相手サーバーで算出したシェアを「Q」を用いて示す(以下においても同様。)。たとえば、フィルタリング条件評価の評価結果は、第1サーバー30が保持する評価結果にランダム置換を適用したシェア[[Π(f)]]と、第2サーバー40が保持する評価結果にランダム置換を適用したシェア[[Π(f)]]とに秘密分散されるが、第1サーバー30が図6に示す秘匿データ抽出処理を行う場合には、評価結果にランダム置換を適用したシェア[[Π(f)]]は、第1サーバー30が保持する評価結果にランダム置換を適用したシェア[[Π(f)]]を示すものとなり、第2サーバー40が図6に示す秘匿データ抽出処理を行う場合には、評価結果にランダム置換を適用したシェア[[Π(f)]]は、第2サーバー40が保持する評価結果にランダム置換を適用したシェア[[Π(f)]]を示すものとなる。 Note that the confidential data extraction calculation process shown in FIG. 6 is executed by the first server 30 and the second server 40, so in FIG. The share calculated in is indicated using "Q" (the same applies below). For example, the evaluation results of the filtering condition evaluation are the share [[Π(f)]] 1 obtained by applying random substitution to the evaluation results held by the first server 30 and the share [[Π(f)]] 1 obtained by applying random substitution to the evaluation results held by the second server 40. The secret is shared between the applied share [[Π(f)]] 2 , but when the first server 30 performs the secret data extraction process shown in FIG. Π(f)]] P represents the share [[Π(f)]] 1 obtained by applying random permutation to the evaluation results held by the first server 30, and the second server 40 stores the confidential data shown in FIG. When performing extraction processing, the share [[Π(f)]] P obtained by applying random substitution to the evaluation results is the share [[Π(f)] P obtained by applying random substitution to the evaluation results held by the second server 40. ]] 2 .

ステップS303では、サーバー30,40により、抽出対象データであるX列データxのシェア[[x]]にランダム置換Πを適用し、シェア[[Π(x)]]が生成される。なお、ステップS303で用いられるX列データxは、テーブル構造データの全行のX列データx(要素数がテーブル構造データの行数nであるデータ)であり、行数nのX列データxのシェア[[x]]をランダム置換したシェア[[Π(x)]]も、何行目のデータが元のテーブル構造データの何行目のデータに相当するか不明となり、要素数はテーブル構造データの行数nとなる。X列データxのシェア[[x]]のランダム置換は、ステップS302と同様の方法で実行することができる。 In step S303, the servers 30 and 40 apply random permutation Π to the share [[x]] of the X-column data x, which is the extraction target data, to generate the share [[Π(x)]] P. Note that the X column data x used in step S303 is the X column data x of all rows of the table structure data (data whose number of elements is the number of rows n of the table structure data), and the X column data x of the number n of rows. For the share [[Π(x)]] P obtained by randomly replacing the share [[x]], it is unclear which row of data corresponds to which row of the original table structure data, and the number of elements is The number of rows in the table structure data is n. Random replacement of the share [[x]] of the X column data x can be performed in the same manner as in step S302.

ステップS304,S305では、図7に示すように、サーバー30,40間の相互通信により、一方のサーバー30,40で行われた計算結果を他方のサーバー30,40に送受信する処理が行われる。すなわち、ステップS304では、サーバー30,40により、ステップS302で生成された評価結果にランダム置換を適用したシェア[[Π(f)]]が、相手側サーバーに出力される。また、ステップS305では、サーバー30,40により、相手側サーバーで生成された評価結果にランダム置換を適用したシェア[[Π(f)]]が受信される。そして、ステップS306では、サーバー30,40により、リスト[[L]]の準備が行われる。リスト[[L]]は、テーブル構造データのうちx<yの条件を満たす行のX列データxのシェアを挿入するためのリストであり、ステップS306の時点では空となっている。 In steps S304 and S305, as shown in FIG. 7, a process of transmitting and receiving calculation results performed by one server 30 and 40 to and from the other server 30 and 40 is performed through mutual communication between the servers 30 and 40. That is, in step S304, the servers 30 and 40 output the share [[Π(f)]] P obtained by applying random permutation to the evaluation result generated in step S302 to the other server. Further, in step S305, the servers 30 and 40 receive the share [[Π(f)]] Q obtained by applying random substitution to the evaluation result generated by the other server. Then, in step S306, the servers 30 and 40 prepare the list [[L]] P . List [[L]] P is a list for inserting the share of X column data x of the row satisfying the condition x<y in the table structure data, and is empty at step S306.

ステップS307~S309は、計算対象であるテーブル構造データの行ごとに行われ、全ての行についてステップS307~S309が行われるまで処理が繰り返される。本実施形態では、テーブル構造データの行数がnであるため、ステップS307~S309の処理がn回繰り返されることとなる。 Steps S307 to S309 are performed for each row of the table structure data to be calculated, and the processing is repeated until steps S307 to S309 are performed for all rows. In this embodiment, since the number of rows in the table structure data is n, the processes of steps S307 to S309 are repeated n times.

具体的には、ステップS307では、サーバー30,40により、ステップS302で生成した評価結果にランダム置換を適用したシェア[[Π(f)]](要素数は行数n)のm個目の要素となるシェア[[Π(f)[m]]]と、ステップS305で受信した評価結果にランダム置換を適用したシェア[[Π(f)]](要素数は行数n)のm個目の要素となるシェア[[Π(f)[m]]]に基づいて、m行目のデータの評価結果の復号が行われる。なお、mはランダム置換後のシェア[[Π(f)]のm行目(行番号m)のデータであることを意味し、元のテーブル構造データの行番号(i行目)の数とは相違する。本実施形態では、ステップS301のフィルタリング条件評価において、x<yを満たすm行目の行データについては、復号結果が1となるように評価結果のシェア[[Π(f)[m]]]および[[Π(f)[m]]]が生成されており、x<yを満たさないm行目の行データについては、復号結果が0となるように評価結果のシェア[[Π(f)[m]]]および[[Π(f)[m]]]が生成されている。よって、ステップS307では、x<yを満たす行データについては復号結果が1として算出され、x<yを満たさない行データについては復号結果が0として算出される。 Specifically, in step S307, the servers 30 and 40 apply random permutation to the evaluation result generated in step S302 to obtain the mth share [[Π(f)]] P (the number of elements is the number of rows n). Share [[ Π (f)[ m ]]] which is an element of The evaluation result of the data in the m-th row is decoded based on the share [[Π(f)[m]]] Q , which is the m-th element of . Note that m means the data in the m-th row (row number m) of the share [[Π(f)] after random replacement, and is the same as the number of row numbers (i-th row) in the original table structure data. are different. In this embodiment, in the filtering condition evaluation in step S301, for the m-th row data that satisfies x<y, the evaluation result is shared [[Π(f)[m]]] so that the decoding result is 1. P and [[Π(f)[m]]] Q have been generated, and for the m-th row data that does not satisfy x < y, the evaluation result share [[Π (f) [m]]] P and [[Π(f) [m]]] P are generated. Therefore, in step S307, the decoding result is calculated as 1 for row data that satisfies x<y, and the decoding result is calculated as 0 for row data that does not satisfy x<y.

ステップS308では、サーバー30,40により、対象となる行データが、フィルタリング条件に適合しているか否かの判断が行われる。上述したように、本実施形態では、x<yを満たす行データについては復号結果が1として算出され、x<yを満たさない行データについては復号結果が0として算出される。そのため、サーバー30,40は、ステップS307で取得した複合結果が1である場合には、フィルタリング条件であるx<yに適合しているとして、ステップS309に進み、一方、ステップS307で取得した複合結果が0である場合には、フィルタリング条件であるx<yに適合していないとして、ステップ310に進む。 In step S308, the servers 30 and 40 determine whether the target row data conforms to the filtering conditions. As described above, in this embodiment, the decoding result is calculated as 1 for row data that satisfies x<y, and the decoding result is calculated as 0 for row data that does not satisfy x<y. Therefore, if the composite result obtained in step S307 is 1, the servers 30, 40 determine that the filtering condition x<y is met and proceed to step S309; If the result is 0, it is determined that the filtering condition x<y is not met, and the process proceeds to step 310.

ステップS309では、対象となる行データにおいて、フィルタリング条件であるx<yに適合しているため、サーバー30,40により、ステップS303で生成されたシャッフル後のm行目の行データにおけるX列データxのシェア[[Π(x)[m]]]が、ステップS306で生成したリスト[[L]]に挿入される。すなわち、本実施形態では、フィルタリング条件に適合した行のX列データxのシェア[[Π(x)[m]]]のみがリスト[[L]]に代入され、フィルタリング条件に適合していない行のX列データxのシェア[[Π(x)[m]]]はリスト[[L]]から排除されることとなる。 In step S309, since the target row data satisfies the filtering condition x<y, the server 30, 40 generates X column data in the shuffled m-th row data generated in step S303. The share [[Π(x)[m]]] P of x is inserted into the list [[L]] P generated in step S306. That is, in this embodiment, only the share [[Π(x)[m]]] P of column X data x in the row that meets the filtering condition is assigned to the list [[L]] P , and The share [[Π(x)[m]]] P of the X-column data x in the row that is not listed will be excluded from the list [[L]] P .

ステップS310では、サーバー30,40により、テーブル構造データの全ての行について、ステップS307~S309の処理を実行したか判断される。テーブル構造データの全ての行について、ステップS307~S309の処理が実行された場合には、ステップS311に進み、サーバー30,40により、秘匿データ抽出処理の計算結果として、リスト[[L]]が出力される。 In step S310, the servers 30 and 40 determine whether the processes in steps S307 to S309 have been executed for all rows of the table structure data. If the processes of steps S307 to S309 have been executed for all rows of the table structure data, the process advances to step S311, and the servers 30 and 40 generate the list [[L]] P as the calculation result of the secret data extraction process. is output.

これにより、第1サーバー30および第2サーバー40は、テーブル構造データの中から、x<yを満たす行データのうちのX列データxのリストのシェア[[L]]を算出し、データベースに記憶することができる。また、クライアント10は、第1サーバー30からリストのシェア[[L]]を取得し、第2サーバー40からリストのシェア[[L]]を取得し、リストのシェア[[L]]とシェア[[L]]とを加算して復号することで、x<yを満たす行データのうちのX列データxのリストLを算出することができる。 As a result, the first server 30 and the second server 40 calculate the share [[L]] P of the list of X column data x among the row data satisfying x<y from the table structure data, and can be memorized. Further, the client 10 obtains list share [[L]] 1 from the first server 30, obtains list share [[L]] 2 from the second server 40, and obtains list share [[L]] By adding 1 and share [[L]] 2 and decoding it, it is possible to calculate a list L of X column data x of the row data satisfying x<y.

このように、本実施形態に係る秘匿データ抽出においては、実行する計算処理に応じて乱数の種類が変わり、また、計算対象となるテーブル構造データの行数nや抽出対象データの列数に応じて必要となる乱数の数が変化する。そのため、特に、フィルタリングのように出力テーブル構造データの行数が変化する計算の後に続いて、別の処理を開始したい場合、前段のフィルタリング処理が完了するまでは、その後の秘匿計算に必要な乱数を予め見積もってプールしておくことが難しい。しかしながら、本実施形態では、クライアント10が、各処理に必要な乱数を生成し、サーバー30,40に提供することで、秘匿データ抽出処理のような必要な乱数の種類や数を予め見積ることが困難な場合も、適切に、秘匿計算に必要な乱数を提供することができる。以下に、クライアント10とサーバー30,40との間で行われる乱数供給処理について説明する。 In this way, in secret data extraction according to this embodiment, the type of random number changes depending on the calculation process to be performed, and also depends on the number of rows n of the table structure data to be calculated and the number of columns of the data to be extracted. The number of random numbers required changes. Therefore, especially when you want to start another process after a calculation in which the number of rows in the output table structure data changes, such as filtering, the random numbers necessary for subsequent confidential calculations are It is difficult to estimate and pool them in advance. However, in this embodiment, the client 10 generates random numbers necessary for each process and provides them to the servers 30 and 40, thereby making it possible to estimate in advance the type and number of random numbers necessary for confidential data extraction processing. Even in difficult cases, it is possible to appropriately provide random numbers necessary for secure calculations. The random number supply process performed between the client 10 and the servers 30 and 40 will be described below.

図8は、本実施形態に係るクライアント側乱数供給処理を示すフローチャートである。また、図9は、本実施形態に係るサーバー側乱数供給処理を示すフローチャートである。さらに、図10は、本実施形態に係る乱数供給処理を説明するための図である。以下においては、まず、図8および図9に基づいて、クライアント側乱数供給処理およびサーバー側乱数供給処理について説明した後に、図10に基づいて、乱数供給処理におけるクライアント10とサーバー30,40との情報の授受について説明する。 FIG. 8 is a flowchart showing client-side random number supply processing according to this embodiment. Further, FIG. 9 is a flowchart showing server-side random number supply processing according to this embodiment. Furthermore, FIG. 10 is a diagram for explaining random number supply processing according to this embodiment. In the following, first, the client-side random number supply process and the server-side random number supply process will be explained based on FIGS. 8 and 9, and then based on FIG. Explain the exchange of information.

図8は、本実施形態に係る乱数供給処理のうち、クライアント10により実行される処理である。図8に示すように、ステップS401では、乱数の見積要求が行われる。具体的には、クライアント10は、第1サーバー30に実行させる秘匿計算の計算情報とともに、秘匿計算において必要となる乱数を見積もるための見積プログラムを実行させるための指示を見積要求として、第1サーバー30に対して出力する。これにより、第1サーバー30は、クライアント10から送信された計算情報の秘匿計算を行うために必要な乱数を見積もる、乱数見積もりプログラムを実行する(後述するステップS502)。なお、本実施形態において、クライアント10は、計算情報として、第1サーバー30および第2サーバー40に秘匿計算させるクエリー情報を送信する。 FIG. 8 shows a process executed by the client 10 in the random number supply process according to this embodiment. As shown in FIG. 8, in step S401, a random number estimate request is made. Specifically, the client 10 sends the first server 30, as an estimate request, calculation information for a secure calculation to be executed by the first server 30, as well as an instruction to execute an estimation program for estimating random numbers required in the secure calculation. Output for 30. As a result, the first server 30 executes a random number estimation program that estimates random numbers necessary to perform confidential calculation of the calculation information transmitted from the client 10 (step S502, which will be described later). Note that in this embodiment, the client 10 transmits, as calculation information, query information that causes the first server 30 and the second server 40 to perform secret calculations.

ステップS402では、第1サーバー30の乱数見積プログラムにより見積もられた乱数見積結果が受信される。そして、ステップS403では、ステップS402で受信した乱数見積結果に基づいて、乱数の生成が行われる。なお、クライアント10による乱数の生成は、公知の方法で行うことができる。続くステップS404では、ステップS403で生成した乱数を、サーバー30,40に供給する処理が行われる。このように、本実施形態では、乱数見積プログラムを第1サーバー30のみに実行させるが、見積結果に基づいて生成した乱数は、第1サーバー30および第2サーバー40に供給される。そして、ステップS405では、第1サーバー30および第2サーバー40に対して、秘匿計算の実行指示が送信される。たとえば、クライアント10は、秘匿計算の内容を記載したSQL文を、当該秘匿計算の実行指示として、第1サーバー30および第2サーバー40に送信することができる。 In step S402, the random number estimation result estimated by the random number estimation program of the first server 30 is received. Then, in step S403, a random number is generated based on the random number estimation result received in step S402. Note that the client 10 can generate random numbers using a known method. In the following step S404, processing is performed to supply the random numbers generated in step S403 to the servers 30 and 40. In this manner, in this embodiment, only the first server 30 executes the random number estimation program, but the random numbers generated based on the estimation results are supplied to the first server 30 and the second server 40. Then, in step S405, a secure calculation execution instruction is transmitted to the first server 30 and the second server 40. For example, the client 10 can send an SQL statement describing the contents of the secure calculation to the first server 30 and the second server 40 as an instruction to execute the secure calculation.

ステップS406では、ステップS404の乱数の供給、ステップS407の問い合わせ情報の送信、または、ステップS411の乱数の送信から一定時間が経過したか否か判断される。一定時間が経過するまでは、ステップS406で待機し、一定期間が経過すると、ステップS407に進む。なお、ステップS404の乱数の供給に代えて、ステップS405の秘匿計算の実行指示から一定時間が経過したか判断する構成としてもよい。 In step S406, it is determined whether a certain period of time has elapsed since the random number was supplied in step S404, the inquiry information was transmitted in step S407, or the random number was transmitted in step S411. The process waits in step S406 until a predetermined period of time has elapsed, and then proceeds to step S407. Note that instead of supplying the random number in step S404, a configuration may be adopted in which it is determined whether a certain period of time has elapsed since the instruction to perform the secret calculation in step S405.

ステップS407では、第1サーバー30に対して、乱数の不足の問い合わせが行われる。問い合わせを受信した第1サーバー30は、現時点で不足している乱数を検出し(後述するステップS509)、必要な乱数の情報を、乱数要求情報としてクライアント10に送信する(後述するステップS510)。ステップS408では、第1サーバー30から送信された乱数要求情報が受信され、続くステップS409では、受信された乱数要求情報に基づいて、乱数が不足しているか否かの判断が行われる。乱数が不足していると判断された場合には、ステップS410に進み、不足している乱数が生成され、ステップS411において、生成した乱数が第1サーバー30および第2サーバー40に送信される。その後、ステップS412に進む。一方、ステップS409において、乱数が不足していないと判断された場合には、ステップS410,S411の処理を行わずに、ステップS412に進む。このように、本実施形態において、クライアント10は、乱数が不足しているかの問い合わせの送信と乱数要求情報の受信は第1サーバー30との間でのみ行い、乱数が不足する場合には、第1サーバー30および第2サーバー40に乱数を供給する。通常、第1サーバー30と第2サーバー40とは同一の種類および数の乱数を用いて同一の種類の秘匿計算を行うため、第1サーバー30で乱数が不足する場合は、第2サーバー40でも、同一の種類および数の乱数が不足することから、第1サーバー30のみに問い合わせを送信する構成とすることで、通信量を削減することが可能となる。 In step S407, an inquiry is made to the first server 30 regarding the lack of random numbers. The first server 30, which has received the inquiry, detects the currently insufficient random numbers (step S509, described later), and transmits information on the necessary random numbers as random number request information to the client 10 (step S510, described later). In step S408, the random number request information transmitted from the first server 30 is received, and in the subsequent step S409, it is determined whether there is a shortage of random numbers based on the received random number request information. If it is determined that the random numbers are insufficient, the process proceeds to step S410, where the missing random numbers are generated, and the generated random numbers are transmitted to the first server 30 and the second server 40 in step S411. After that, the process advances to step S412. On the other hand, if it is determined in step S409 that there is no shortage of random numbers, the process proceeds to step S412 without performing steps S410 and S411. As described above, in this embodiment, the client 10 sends an inquiry as to whether there is a shortage of random numbers and receives random number request information only with the first server 30, and when there is a shortage of random numbers, A random number is supplied to the first server 30 and the second server 40. Normally, the first server 30 and the second server 40 perform the same type of secure calculation using the same type and number of random numbers, so if the first server 30 lacks random numbers, the second server 40 also performs the same type of secure calculation. , there is a shortage of random numbers of the same type and number, so by configuring the inquiry to be sent only to the first server 30, it is possible to reduce the amount of communication.

ステップS412では、秘匿計算が終了したかの判断が行われる。たとえば、クライアント10は、第1サーバー30から秘匿計算が終了した旨の情報を取得することができ、この場合、秘匿計算が終了したと判断することができる。秘匿計算が終了していない場合は、ステップS406に戻り、ステップS406~S411の処理が繰り返される。一方、秘匿計算が終了している場合には、図8に示すクライアント側乱数供給処理を終了する。 In step S412, it is determined whether the secure calculation has ended. For example, the client 10 can obtain information indicating that the secure calculation has ended from the first server 30, and in this case, it can determine that the secure calculation has ended. If the secure calculation has not been completed, the process returns to step S406 and the processes of steps S406 to S411 are repeated. On the other hand, if the secure calculation has been completed, the client-side random number supply process shown in FIG. 8 is completed.

次に、図9に基づいて、サーバー側乱数供給処理について説明する。図9に示すサーバー側乱数供給処理は、本実施形態に係る乱数供給処理のうち、サーバー30,40によりそれぞれ実行される処理である(なお、本実施形態では、ステップS501~S503,S508,S509は第1サーバー30のみが実行する。)。 Next, the server-side random number supply process will be explained based on FIG. 9. The server-side random number supply process shown in FIG. 9 is a process executed by the servers 30 and 40, respectively, among the random number supply processes according to this embodiment (in this embodiment, steps S501 to S503, S508, S509 is executed only by the first server 30).

図9に示すように、ステップS501では、第1サーバー30により、クライアント10から送信された乱数の見積要求が受信される。ステップS502では、第1サーバー30により、ステップS501で受信した見積要求をトリガーとして、乱数見積プログラムが実行される。ここで、クライアント10から送信される乱数の見積要求には、実行予定の秘匿計算の計算情報が含まれており、乱数見積プログラムは、計算情報にある秘匿計算に必要とされる乱数を見積もる。なお、本実施形態において、第1サーバー30は、乱数見積プログラムを記憶部に予め記憶しており、クライアント10の乱数見積要求に含まれる秘匿計算の計算情報に基づいて、乱数見積プログラムを実行する。 As shown in FIG. 9, in step S501, the first server 30 receives a random number estimate request sent from the client 10. In step S502, the first server 30 executes a random number estimate program using the estimate request received in step S501 as a trigger. Here, the random number estimation request sent from the client 10 includes calculation information of the secret calculation scheduled to be executed, and the random number estimation program estimates the random number required for the secret calculation included in the calculation information. Note that in this embodiment, the first server 30 stores a random number estimation program in the storage unit in advance, and executes the random number estimation program based on the calculation information of the confidential calculation included in the random number estimation request from the client 10. .

ステップS503では、第1サーバー30により、ステップS502で見積もりした乱数見積結果がクライアント10に送信される。これにより、クライアント10において見積もりに応じた乱数が生成され(ステップS403)、第1サーバー30および第2サーバー40に生成した乱数が送信される(ステップS404)。そのため、ステップS504において、サーバー30,40により、クライアント10により生成され、送信された乱数が受信されることとなる。 In step S503, the first server 30 transmits the random number estimation result estimated in step S502 to the client 10. As a result, the client 10 generates a random number according to the estimate (step S403), and the generated random number is transmitted to the first server 30 and the second server 40 (step S404). Therefore, in step S504, the random numbers generated and transmitted by the client 10 are received by the servers 30 and 40.

ステップS505では、ステップS504で受信した乱数を用いて、秘匿計算が実行される。ただし、乱数の見積では、秘匿計算において行数が変更するまでの計算に用いられる乱数しか見積もることができないため、秘匿計算の内容によっては、ステップS504で受信した乱数だけでは秘匿計算を完了することができない。そのため、秘匿計算の途中で秘匿計算に必要な乱数の不足が生じる場合があり(ステップS506=Yes)、このような場合、ステップS507に進み、乱数が不足しているために、秘匿計算が一時的に中断される。 In step S505, a secure calculation is performed using the random numbers received in step S504. However, when estimating random numbers, it is possible to estimate only the random numbers used in calculations until the number of rows changes in secure calculations, so depending on the content of secure calculations, secure calculations may not be completed with only the random numbers received in step S504. I can't. Therefore, a shortage of random numbers necessary for the secure calculation may occur during the secure calculation (step S506=Yes). In such a case, the process proceeds to step S507, and the secure calculation is temporarily interrupted due to the lack of random numbers. is interrupted.

本実施形態では、秘匿計算が開始されると、クライアント10は乱数の不足の問い合わせを定期的に第1サーバー30に送信する(ステップS407)。そして、ステップS508では、第1サーバー30により、クライアント10から送信される問い合わせが受信され、続くステップS509では、第1サーバー30により、当該問い合わせに対して、秘匿計算において不足している乱数の種類と数の情報と、秘匿計算の進捗情報とが、乱数要求情報として、クライアント10に送信される。なお、本実施形態において、第1サーバー30は、内部で、不足乱数情報および進捗情報を比較的短い周期で更新しており、クライアント10から問い合わせを受信した時点で最新の不足乱数情報と進捗情報とを、乱数要求情報としてクライアント10に送信する。クライアント10は、第1サーバー30から乱数の要求情報を受信すると、不足している乱数を生成し、第1サーバー30および第2サーバー40の両方に送信する(ステップS410,S411)。これにより、ステップS510では、サーバー30,40により、クライアント10から送信された乱数が受信され、受信した乱数を用いて秘匿計算が継続される。 In this embodiment, when the secure calculation is started, the client 10 periodically sends an inquiry about the shortage of random numbers to the first server 30 (step S407). Then, in step S508, the first server 30 receives the inquiry sent from the client 10, and in the subsequent step S509, the first server 30 receives the inquiry about the type of random number that is missing in the secure calculation. , number information, and confidential calculation progress information are transmitted to the client 10 as random number request information. In this embodiment, the first server 30 internally updates the missing random number information and progress information at a relatively short cycle, and updates the latest missing random number information and progress information at the time of receiving an inquiry from the client 10. is sent to the client 10 as random number request information. Upon receiving the random number request information from the first server 30, the client 10 generates the missing random numbers and sends them to both the first server 30 and the second server 40 (steps S410, S411). As a result, in step S510, the servers 30 and 40 receive the random numbers sent from the client 10, and continue secure calculation using the received random numbers.

また、ステップS511では、サーバー30,40により、秘匿計算が終了したか否かの判断が行われる。秘匿計算が終了していない場合は、ステップS506に戻り、ステップS506~S510の処理が繰り返される。一方、秘匿計算が終了している場合には、図9に示すサーバー側乱数供給処理を終了する。 Furthermore, in step S511, the servers 30 and 40 determine whether or not the secure calculation has ended. If the secure calculation has not been completed, the process returns to step S506 and the processes of steps S506 to S510 are repeated. On the other hand, if the secure calculation has ended, the server-side random number supply process shown in FIG. 9 ends.

次に、図10に基づいて、乱数供給処理における、クライアント10とサーバー30,40との情報の授受について説明する。まず、乱数供給処理が開始されると、時刻T1において、クライアント10により、秘匿計算情報を含む乱数の見積要求が第1サーバー30へと送信される(ステップS401)。これにより、第1サーバー30により、乱数見積プログラムが実行され、秘匿計算情報に含まれる秘匿計算を行うために必要な乱数の見積もりが行われる(ステップS502)。そして、時刻T2では、第1サーバー30からクライアント10に、乱数の見積結果が送信される(ステップS503)。これに対して、クライアント10は、第1サーバー30からの乱数の見積結果に応じた乱数を生成し(ステップS403)、時刻T3で、生成した乱数を第1サーバー30および第2サーバー40に送信する(ステップS404)。そして、時刻T4で、クライアント10から、第1サーバー30および第2サーバー40に秘匿計算の実行が指示され、第1サーバー30および第2サーバー40により、秘匿計算が開始される。 Next, based on FIG. 10, the exchange of information between the client 10 and the servers 30 and 40 in the random number supply process will be described. First, when the random number supply process is started, at time T1, the client 10 transmits a random number estimate request including secure calculation information to the first server 30 (step S401). As a result, the first server 30 executes the random number estimation program, and estimates the random numbers necessary to perform the secure calculation included in the secure calculation information (step S502). Then, at time T2, the random number estimation result is transmitted from the first server 30 to the client 10 (step S503). In response, the client 10 generates a random number according to the random number estimation result from the first server 30 (step S403), and transmits the generated random number to the first server 30 and the second server 40 at time T3. (Step S404). Then, at time T4, the client 10 instructs the first server 30 and the second server 40 to execute the secure calculation, and the first server 30 and the second server 40 start the secure calculation.

また、秘匿計算が開始されて一定期間が経過した時刻T5では、クライアント10により、第1サーバー30に乱数の問い合わせが送信される(ステップS407)。これに対して、第1サーバー30は、時刻T6において、不足している乱数の情報を、進捗情報と共に、乱数要求情報としてクライアント10に送信する(ステップS509)。たとえば、図10に示す例において、時刻T6では、進捗が10%、不足乱数が「None」(不足なし)との乱数要求情報が、第1サーバー30からクライアント10へと送信される。クライアント10は、乱数要求情報における必要な乱数が「None」であるため、クライアント10による乱数の生成および供給は行わない。 Furthermore, at time T5 when a certain period of time has elapsed since the start of the secure calculation, the client 10 transmits a random number inquiry to the first server 30 (step S407). In response, at time T6, the first server 30 transmits the information on the missing random numbers together with progress information to the client 10 as random number request information (step S509). For example, in the example shown in FIG. 10, at time T6, random number request information indicating that the progress is 10% and the missing random number is "None" is transmitted from the first server 30 to the client 10. Since the required random number in the random number request information is "None", the client 10 does not generate or supply a random number.

また、前回の問い合わせから一定期間が経過した時刻T7では、クライアント10により、第1サーバー30に対して乱数の問い合わせが再び送信される(ステップS407)。これに対して、第1サーバー30は、時刻T8において、不足している乱数の情報を、進捗情報と共に、乱数要求情報としてクライアント10に送信する(ステップS509)。時刻T8では、第1サーバー30において、秘匿計算に使用される「A2」という種類の乱数が1000個不足しているものとする。この場合、時刻T8において、第1サーバー30は、進捗が30%、不足乱数が「A2:1000個」との乱数要求情報を、クライアント10に送信する。これにより、時刻T9において、クライアント10は、不足している乱数が「A2:1000個」であるため、種類「A2」の乱数を1000個生成する処理を行い(ステップS410)、生成した種類「A2」の乱数1000個を、第1サーバー30および第2サーバー40に送信する(ステップS411)。なお、本実施形態において、「A2」とは、相関乱数の1種(たとえば32ビット長に対応する相関乱数)を意味するものとする。 Furthermore, at time T7, when a certain period of time has elapsed since the previous inquiry, the client 10 again sends a random number inquiry to the first server 30 (step S407). On the other hand, at time T8, the first server 30 transmits information on the missing random numbers to the client 10 as random number request information together with progress information (step S509). Assume that at time T8, the first server 30 lacks 1000 random numbers of type "A2" used for secure calculation. In this case, at time T8, the first server 30 transmits to the client 10 random number request information indicating that the progress is 30% and the missing random numbers are "A2: 1000". As a result, at time T9, the client 10 performs processing to generate 1000 random numbers of type "A2" (step S410) because the missing random numbers are "A2: 1000", and the generated type " 1000 random numbers of "A2" are transmitted to the first server 30 and the second server 40 (step S411). In this embodiment, "A2" means one type of correlated random number (for example, a correlated random number corresponding to a 32-bit length).

さらに、前回の乱数供給から一定期間が経過した時刻T10でも、クライアント10により、第1サーバー30に乱数の問い合わせが再び送信される(ステップS407)。これに対して、第1サーバー30は、時刻T11において、不足している乱数の情報を、進捗情報と共に、乱数要求情報としてクライアント10に送信する(ステップS509)。時刻T11では、第1サーバー30において、秘匿計算に使用される「SR」という種類の乱数が3個不足しているものとする。この場合、時刻T11において、第1サーバー30は、進捗が50%、不足乱数が「SR:3個」との乱数要求情報を、クライアント10に送信する。これにより、時刻T12において、クライアント10は、不足している乱数が「SR:3個」であるため、種類「SR」の乱数を3個生成する処理を行い(ステップS410)、生成した種類「SR」の乱数3個を、第1サーバー30に送信する(ステップS411)。なお、本実施形態において、「SR」は、n行からなる指定列(columns)をシャッフルするためのシャッフル乱数を意味するものとする。 Furthermore, at time T10 when a certain period of time has passed since the previous random number supply, the client 10 again sends a random number inquiry to the first server 30 (step S407). On the other hand, at time T11, the first server 30 transmits information on the missing random numbers to the client 10 as random number request information together with progress information (step S509). It is assumed that at time T11, the first server 30 lacks three random numbers of the type "SR" used for secure calculation. In this case, at time T11, the first server 30 transmits to the client 10 random number request information indicating that the progress is 50% and the missing random number is "SR: 3 pieces." As a result, at time T12, the client 10 performs processing to generate three random numbers of the type "SR" (step S410) because the missing random numbers are "SR: 3", and the generated type "SR" is generated. SR" are sent to the first server 30 (step S411). Note that in this embodiment, "SR" means a shuffle random number for shuffling designated columns (columns) consisting of n rows.

また、時刻T12以降においても、サーバー30,40およびクライアント10は、サーバー30,40間での秘匿計算が終了するまで、乱数の問い合わせと、問い合わせに対する乱数要求情報の送信と、乱数要求情報に基づく乱数の供給を繰り返し、秘匿計算が終了すると、乱数供給処理を終了する。 Also, after time T12, the servers 30, 40 and the client 10 continue to make inquiries about random numbers, send random number request information in response to inquiries, and send random number requests based on the random number request information until the secure calculation between the servers 30 and 40 is completed. When the random number supply is repeated and the secure calculation is completed, the random number supply process is terminated.

以上のように、本実施形態に係る秘匿計算システム1では、秘匿計算を行う複数のサーバー30,40と、複数のサーバー30,40に秘匿計算に必要な乱数を供給するクライアント10と、を有し、複数のサーバー30,40のうち少なくとも1つの第1サーバー30は、秘匿計算に必要となる乱数の種類および数を含む乱数の要求情報をクライアント10に送信し、クライアント10は、乱数の要求情報を受信した場合に、乱数の要求情報に基づいて、乱数を生成して複数のサーバー30,40に送信する。このように、本実施形態に係る秘匿計算システム1では、クライアント10から第1サーバー30に対して定期的に乱数の供給に関する問い合わせを行い、第1サーバー30からクライアント10に乱数の要求情報を繰り返し送信させることで、乱数が不足しており乱数の供給が必要な場合には、クライアント10が必要な種類の乱数を必要な数だけ生成し秘匿計算を行う全てのサーバー30,40に供給することができるため、秘匿計算の途中で乱数が不足してしまうことを防止することができる。 As described above, the secure calculation system 1 according to the present embodiment includes a plurality of servers 30 and 40 that perform secure calculations, and a client 10 that supplies random numbers necessary for secure calculations to the multiple servers 30 and 40. Then, at least one first server 30 among the plurality of servers 30 and 40 transmits random number request information including the type and number of random numbers necessary for secure calculation to the client 10, and the client 10 transmits the random number request information to the client 10. When the information is received, random numbers are generated based on the random number request information and transmitted to the plurality of servers 30 and 40. In this manner, in the secure calculation system 1 according to the present embodiment, the client 10 periodically makes inquiries regarding the supply of random numbers to the first server 30, and the first server 30 repeatedly requests random number information to the client 10. By transmitting the random numbers, when there is a shortage of random numbers and it is necessary to supply random numbers, the client 10 generates the necessary number of random numbers of the necessary type and supplies them to all the servers 30 and 40 that perform secure calculations. Therefore, it is possible to prevent a shortage of random numbers during secure calculation.

以上、本発明の好ましい実施形態例について説明したが、本発明の技術的範囲は上記実施形態の記載に限定されるものではない。上記実施形態例には様々な変更・改良を加えることが可能であり、そのような変更または改良を加えた形態のものも本発明の技術的範囲に含まれる。 Although preferred embodiments of the present invention have been described above, the technical scope of the present invention is not limited to the description of the above embodiments. Various changes and improvements can be made to the embodiments described above, and forms with such changes and improvements are also included within the technical scope of the present invention.

たとえば、上述した実施形態では、クライアント10とサーバー30,40との通信を制御するための装置としてゲートウェイ20を例示したが、この構成に限定されず、ファイアウォールやルーターなどの通信制御コンポーネントを用いる構成としてもよい。 For example, in the embodiment described above, the gateway 20 is exemplified as a device for controlling communication between the client 10 and the servers 30 and 40, but the configuration is not limited to this, and a configuration using communication control components such as a firewall and a router You can also use it as

また、上述した実施形態では、図3ないし図6において、秘匿乗算処理および秘匿データ抽出処理のアルゴリズムの一例を例示して説明したが、上記アルゴリズムに限定されるものではなく、公知である別のアルゴリズムを用いることもできる。また、アルゴリズムが変わると、必要とされる乱数の数や種類も変化するが、本発明による秘匿計算システム1では、第1サーバー30から要求された種類および数の乱数を、クライアント10が生成することは、どのアルゴリズムを用いた場合でも同様である。 In addition, in the above-described embodiment, an example of the algorithm of the secret multiplication process and the secret data extraction process is illustrated and explained in FIGS. 3 to 6, but the algorithm is not limited to the above algorithm, and other known algorithms Algorithms can also be used. Further, when the algorithm changes, the number and type of random numbers required also change, but in the secure calculation system 1 according to the present invention, the client 10 generates the type and number of random numbers requested by the first server 30. This is true no matter what algorithm is used.

さらに、上述した実施形態では、秘匿計算システム1が、ゲートウェイ20を有する構成を例示したが、ゲートウェイ20を備えない構成とすることもできる。この場合、クライアント10は、ゲートウェイ20を介さずに、第1サーバー30に乱数供給の問い合わせを直接送信することができ、第1サーバー30も、ゲートウェイ20を介さずに、クライアント10の要求に応答して必要な情報(乱数の要求情報や秘匿計算の結果)をクライアント10に送信することができる。 Furthermore, in the embodiment described above, the secure calculation system 1 illustrated a configuration including the gateway 20, but it can also be configured without the gateway 20. In this case, the client 10 can directly send a random number supply inquiry to the first server 30 without going through the gateway 20, and the first server 30 can also respond to the request from the client 10 without going through the gateway 20. Then, necessary information (random number request information and secret calculation results) can be transmitted to the client 10.

加えて、上述した実施形態では、乱数を使用する秘匿計算として、乗算、除算、大小比較、テーブル構造データのフィルタリングおよび並び替えを例示して説明したが、乱数を使用する秘匿計算はこれに限定されない。たとえば、乗算や除算、大小比較のように、行数nに依存しない乱数を必要する秘匿計算として、クエリーのjoin構文に該当する内部結合や、集約関数Avgの平均値の算出、Trim,LTrim,RTrim,Upper,Lower,Replace,Split,ZenToHan,HanToZenなどの文字列操作関数、ContainsやNotContainsなどの文字列評価関数、Argmax,Dotなどの数学演算、LinregFit,LinregPredictなどの分析演算、Expandなどのカラム操作、「&」(AND)や「|」(OR)などの論理演算が挙げられる。また、where句に相当するフィルタリングやorder by句に相当する並び替えなどのように、行数nに依存するシャッフル乱数を必要する秘匿計算として、group by句に相当する合計の算出、MinやMaxに相当する最小値や最大値の算出が挙げられる。 In addition, in the embodiment described above, multiplication, division, magnitude comparison, filtering and sorting of table structure data are illustrated as examples of secure computations using random numbers, but secure computations using random numbers are limited to these. Not done. For example, as secret calculations that require random numbers that do not depend on the number of rows n, such as multiplication, division, and size comparison, inner joins that correspond to the join syntax of queries, calculation of the average value of aggregate function Avg, Trim, LTrim, etc. String manipulation functions such as RTrim, Upper, Lower, Replace, Split, ZenToHan, HanToZen, string evaluation functions such as Contains and NotContains, mathematical operations such as Argmax and Dot, LinregFit, LinregPredi Analytical operations such as ct, columns such as Expand Examples include operations and logical operations such as "&" (AND) and "|" (OR). In addition, calculation of the total corresponding to the group by clause, Min and Max An example of this is calculating the minimum value or maximum value corresponding to .

また、上述した実施形態では、第1サーバー30において、乱数見積プログラムを実行する構成を例示したが、この構成に限定されず、第2サーバー40が乱数見積プログラムを実行する構成としてもよい。 Further, in the above-described embodiment, the first server 30 executes the random number estimation program, but the configuration is not limited to this, and the second server 40 may execute the random number estimation program.

さらに、上述した実施形態では、クライアント10から乱数の問い合わせを行った場合、第1サーバー30は、現在不足している乱数の情報を乱数要求情報としてクライアント10に返信するが、この構成に限定されず、将来不足する予定の乱数も含めて、クライアント10に乱数要求情報として送信する構成とすることができる。たとえば、第1サーバー30は、クライアント10から乱数の問い合わせ(ステップS407)があった場合も、乱数見積プログラムを実行することで、現在不足している乱数だけではなく、現時点で見積もり可能な乱数を見積り、乱数要求情報として送信することができる。特に、クライアント10により乱数が生成されている間、第1サーバー30において乱数が不足している場合は、クライアント10から乱数が供給されるまで、第1サーバー30での秘匿計算は停止した状態となるため、将来不足する乱数も特定し要求することで、秘匿計算を早めることが可能となる。ただし、この場合も、フィルタリングなどで行数が変化してしまう場合には、行数変化後に必要な乱数までは見積もることはできない。 Furthermore, in the above-described embodiment, when the client 10 inquires about random numbers, the first server 30 replies to the client 10 with information about the currently missing random numbers as random number request information; however, the present invention is not limited to this configuration. First, it may be configured to send random number request information to the client 10, including random numbers that are expected to become insufficient in the future. For example, when the first server 30 receives a random number inquiry from the client 10 (step S407), by running the random number estimation program, the first server 30 calculates not only the currently insufficient random numbers but also the random numbers that can be estimated at the present time. Estimates can be sent as random number request information. In particular, if the first server 30 is short of random numbers while the client 10 is generating random numbers, the secure calculation at the first server 30 is stopped until random numbers are supplied from the client 10. Therefore, by identifying and requesting random numbers that will be in short supply in the future, it is possible to speed up the secret calculation. However, even in this case, if the number of rows changes due to filtering or the like, it is not possible to estimate the random number required after the number of rows changes.

また、上述した実施形態では、乱数として、「A2」で表す32ビット長に対応する相関乱数と、「SR」で表すシャッフル乱数を例示したが、乱数の種類は上記に限定されず、64ビット長、128ビット長、1ビット長が32組などの相関乱数や、上記以外のシャッフル乱数を用いる構成とすることもできる。 In addition, in the above-described embodiment, a correlated random number corresponding to a 32-bit length represented by "A2" and a shuffled random number represented by "SR" were exemplified as random numbers, but the types of random numbers are not limited to the above, and are 64-bit long. It is also possible to use a correlated random number having a length of 128 bits, 32 sets of 1 bit length, or a shuffle random number other than the above.

さらに、上述した実施形態では、クライアント10は、乱数が不足しているかの問い合わせを第1サーバー30のみに送信し、問い合わせに応答する乱数要求情報を第1サーバー30から受信する構成を例示したが、この構成に限定されず、クライアント10は、乱数が不足しているかの問い合わせを第1サーバー30および第2サーバー40に送信し、問い合わせに応答する乱数要求情報を第1サーバー30および第2サーバー40から受信する構成としてもよい。 Furthermore, in the embodiment described above, the client 10 sends an inquiry as to whether there is a shortage of random numbers only to the first server 30, and receives random number request information from the first server 30 in response to the inquiry. , without being limited to this configuration, the client 10 sends an inquiry as to whether there is a shortage of random numbers to the first server 30 and the second server 40, and sends random number request information in response to the inquiry to the first server 30 and the second server. The configuration may be such that the information is received from 40.

1…秘匿計算システム
10…クライアント
20…ゲートウェイ
30…第1サーバー
40…第2サーバー
2…インターネット
1...Secret computing system 10...Client 20...Gateway 30...First server 40...Second server 2...Internet

Claims (7)

秘匿計算を実行する複数のサーバーと、前記複数のサーバーに秘匿計算を実行するために必要な乱数を供給するクライアントと、を備える秘匿計算システムであって、
前記クライアントは、ユーザが入力したデータのクエリーを前記複数のサーバーの少なくとも1つに送信するクエリー入力手段と、
受信した必要乱数情報に基づいて乱数を生成し、前記複数のサーバーに送信する乱数供給手段と、を備え、
前記サーバーは、前記クライアントから受信した前記クエリーに基づいて秘匿計算に必要となる乱数の種類および数を見積もり、見積もった乱数の種類および数を必要乱数情報として前記クライアントに送信する乱数見積手段と、
前記クライアントから受信した前記クエリーに基づく秘匿計算を実行するための乱数をプールする乱数プール手段と、
前記クライアントから受信した前記クエリーに基づく秘匿計算を実行し、実行結果を前記クライアントに送信する秘匿計算手段と、
前記秘匿計算手段による秘匿計算の実行において不足する乱数を検知し、前記クライアントの不足乱数照会手段による照会があった際に不足する乱数の種類および数を必要乱数情報として前記クライアントに回答する不足乱数検知手段と、を備え、
前記クライアントが、前記サーバーに前記クエリーに基づく秘匿計算の実行時に不足する乱数の有無を一定間隔で照会し、前記不足乱数検知手段から前記必要乱数情報の回答があった場合には、当該必要乱数情報を前記乱数プール手段に送信する不足乱数照会手段をさらに備える、秘匿計算システム。
A secure calculation system comprising a plurality of servers that execute secure calculations, and a client that supplies random numbers necessary for executing secure calculations to the plurality of servers,
The client includes a query input means for transmitting a query of data input by a user to at least one of the plurality of servers;
Random number supply means for generating random numbers based on the received necessary random number information and transmitting them to the plurality of servers,
The server estimates the type and number of random numbers required for secure calculation based on the query received from the client, and transmits the estimated type and number of random numbers to the client as necessary random number information;
random number pooling means for pooling random numbers for performing a secure calculation based on the query received from the client;
a secure calculation means for executing a secure calculation based on the query received from the client and transmitting the execution result to the client;
A missing random number that detects a missing random number in execution of a secret calculation by the secret calculation means, and replies to the client with the type and number of the missing random number as necessary random number information when an inquiry is made by the missing random number inquiry means of the client. a detection means;
The client inquires of the server at regular intervals as to the presence or absence of a random number that is insufficient when performing a secure calculation based on the query, and if the missing random number detection means returns the necessary random number information, the necessary random number is A secure calculation system further comprising missing random number inquiry means for transmitting information to the random number pool means.
前記秘匿計算手段は、前記不足乱数検知手段が秘匿計算の実行において不足する乱数を検知した場合には、当該不足する乱数を前記乱数供給手段から受信するまで実行中の秘匿計算を一時的に中断する機能を有する、請求項1に記載の秘匿計算システム。 When the missing random number detection means detects a missing random number during execution of a secret calculation, the secret calculation means temporarily suspends the secret calculation that is being executed until the missing random number is received from the random number supply means. The secure calculation system according to claim 1, having the function of: 秘匿計算を実行する複数のサーバーと、前記複数のサーバーに秘匿計算に必要な乱数を供給するクライアントとを有し、前記サーバーが前記クライアントから供給された乱数を用いて前記秘匿計算を行う、秘匿計算システムであって、
前記サーバーは、秘匿計算に使用する乱数が不足しているかを繰り返し検知し、秘匿計算に必要となる乱数が不足する場合に、不足する乱数の種類および数の情報を含む乱数の要求情報を前記クライアントに送信し、
前記クライアントは、前記要求情報を受信した場合に、前記要求情報に基づく種類および数の乱数を前記サーバーに送信する、秘匿計算システム。
A secure method comprising a plurality of servers that perform secure calculations and a client that supplies random numbers necessary for secure calculations to the plurality of servers, and wherein the server performs the secure calculations using the random numbers supplied from the clients. A calculation system,
The server repeatedly detects whether there is a shortage of random numbers used for secure calculations, and when there is a shortage of random numbers necessary for secure calculations, the server sends random number request information including information on the type and number of the missing random numbers to the server. send to client,
The secure computing system is characterized in that, when the client receives the request information, the client transmits a random number of a type and number based on the request information to the server.
秘匿計算を実行するために必要な乱数を供給するクライアントと通信可能に構成された秘匿計算を実行するためのサーバーであって、
前記クライアントは、ユーザが入力したデータのクエリーを複数のサーバーの少なくとも1つに送信するクエリー入力手段と、
受信した必要乱数情報に基づいて乱数を生成し、前記複数のサーバーに送信する乱数供給手段と、を備え、
前記サーバーは、前記クライアントから受信した前記クエリーに基づいて秘匿計算に必要となる乱数の種類および数を見積もり、見積もった乱数の種類および数を必要乱数情報として前記クライアントに送信する乱数見積手段と、
前記クライアントから受信した前記クエリーに基づく秘匿計算を実行するための乱数をプールする乱数プール手段と、
前記クライアントから受信した前記クエリーに基づく秘匿計算を実行し、実行結果を前記クライアントに送信する秘匿計算手段と、
前記秘匿計算手段による秘匿計算の実行において不足する乱数を検知し、前記クライアントの不足乱数照会手段による照会があった際に不足する乱数の種類および数を必要乱数情報として前記クライアントに回答する不足乱数検知手段と、を備えるサーバー。
A server for executing secure calculations configured to be able to communicate with a client that supplies random numbers necessary for executing secure calculations,
The client includes a query input means for transmitting a query of data input by a user to at least one of a plurality of servers;
Random number supply means for generating random numbers based on the received necessary random number information and transmitting them to the plurality of servers,
The server estimates the type and number of random numbers required for secure calculation based on the query received from the client, and transmits the estimated type and number of random numbers to the client as necessary random number information;
random number pooling means for pooling random numbers for performing a secure calculation based on the query received from the client;
a secure calculation means for executing a secure calculation based on the query received from the client and transmitting the execution result to the client;
A missing random number that detects a missing random number in execution of a secret calculation by the secret calculation means, and replies to the client with the type and number of the missing random number as necessary random number information when an inquiry is made by the missing random number inquiry means of the client. A server comprising a detection means.
秘匿計算を実行するための複数のサーバーと通信可能に構成された情報処理装置であって、
ユーザが入力したデータのクエリーを前記複数のサーバーの少なくとも1つに送信するクエリー入力手段と、
受信した必要乱数情報に基づいて乱数を生成し、前記複数のサーバーに送信する乱数供給手段と、を備え、
前記サーバーは、前記情報処理装置から受信した前記クエリーに基づいて秘匿計算に必要となる乱数の種類および数を見積もり、見積もった乱数の種類および数を必要乱数情報として前記情報処理装置に送信する乱数見積手段と、
前記情報処理装置から受信した前記クエリーに基づく秘匿計算を実行するための乱数をプールする乱数プール手段と、
前記情報処理装置から受信した前記クエリーに基づく秘匿計算を実行し、実行結果を前記情報処理装置に送信する秘匿計算手段と、
前記秘匿計算手段による秘匿計算の実行において不足する乱数を検知し、前記情報処理装置の不足乱数照会手段による照会があった際に不足する乱数の種類および数を必要乱数情報として回答する不足乱数検知手段と、を備え、
さらに、前記サーバーに前記クエリーに基づく秘匿計算の実行時に不足する乱数の有無を一定間隔で照会し、前記不足乱数検知手段から前記必要乱数情報の回答があった場合には、当該必要乱数情報を前記乱数プール手段に送信する不足乱数照会手段を備える、情報処理装置。
An information processing device configured to be able to communicate with multiple servers for executing secure calculations,
query input means for transmitting a query of data input by a user to at least one of the plurality of servers;
Random number supply means for generating random numbers based on the received necessary random number information and transmitting them to the plurality of servers,
The server estimates the type and number of random numbers required for secure calculation based on the query received from the information processing device, and transmits the estimated type and number of random numbers to the information processing device as necessary random number information. estimation means,
random number pooling means for pooling random numbers for performing a secure calculation based on the query received from the information processing device;
a secure calculation means for executing a secure calculation based on the query received from the information processing device and transmitting the execution result to the information processing device;
Missing random number detection for detecting missing random numbers in execution of secret calculation by the secret calculation means, and responding with the type and number of missing random numbers as necessary random number information when an inquiry is made by the missing random number inquiry means of the information processing device. equipped with the means and
Furthermore, the server is inquired at regular intervals as to whether there are any missing random numbers when performing secure calculation based on the query, and if the missing random number detection means returns the necessary random number information, the necessary random number information is sent to the server. An information processing device comprising: a missing random number inquiry means for transmitting to the random number pool means.
秘匿計算を実行するための複数のサーバーと通信可能に構成された情報処理装置のプロセッサを、
ユーザが入力したデータのクエリーを前記複数のサーバーの少なくとも1つに送信するクエリー入力手段と、
受信した必要乱数情報に基づいて乱数を生成し、前記複数のサーバーに送信する乱数供給手段と、として機能させるためのコンピュータプログラムであって、
前記サーバーは、前記情報処理装置から受信した前記クエリーに基づいて秘匿計算に必要となる乱数の種類および数を見積もり、見積もった乱数の種類および数を必要乱数情報として前記情報処理装置に送信する乱数見積手段と、
前記情報処理装置から受信した前記クエリーに基づく秘匿計算を実行するための乱数をプールする乱数プール手段と、
前記情報処理装置から受信した前記クエリーに基づく秘匿計算を実行し、実行結果を前記情報処理装置に送信する秘匿計算手段と、
前記秘匿計算手段による秘匿計算の実行において不足する乱数を検知し、前記情報処理装置の不足乱数照会手段による照会があった際に不足する乱数の種類および数を必要乱数情報として回答する不足乱数検知手段と、を備え、
さらに、前記プロセッサを、前記サーバーに前記クエリーに基づく秘匿計算の実行時に不足する乱数の有無を一定間隔で照会し、前記不足乱数検知手段から前記必要乱数情報の回答があった場合には、当該必要乱数情報を前記乱数プール手段に送信する不足乱数照会手段として機能させる、コンピュータプログラム。
A processor of an information processing device configured to be able to communicate with multiple servers for executing secure calculations,
query input means for transmitting a query of data input by a user to at least one of the plurality of servers;
A computer program for functioning as a random number supply means for generating random numbers based on received necessary random number information and transmitting the generated random numbers to the plurality of servers, the computer program comprising:
The server estimates the type and number of random numbers required for secure calculation based on the query received from the information processing device, and transmits the estimated type and number of random numbers to the information processing device as necessary random number information. estimation means,
random number pooling means for pooling random numbers for performing a secure calculation based on the query received from the information processing device;
a secure calculation means for executing a secure calculation based on the query received from the information processing device and transmitting the execution result to the information processing device;
Missing random number detection for detecting missing random numbers in execution of secret calculation by the secret calculation means, and responding with the type and number of missing random numbers as necessary random number information when an inquiry is made by the missing random number inquiry means of the information processing device. equipped with the means and
Furthermore, the processor inquires of the server at regular intervals whether there is a random number that is insufficient when executing a secure calculation based on the query, and if there is a response with the necessary random number information from the missing random number detection means, the corresponding A computer program that functions as a missing random number inquiry means for transmitting necessary random number information to the random number pool means.
秘匿計算を実行する複数のサーバーと、前記複数のサーバーに秘匿計算を実行するために必要な乱数を供給するクライアントと、を用いた秘匿計算方法であって、
前記クライアントが、ユーザが入力したデータのクエリーを前記複数のサーバーの少なくとも1つに送信することと、
前記サーバーが、前記クライアントから受信した前記クエリーに基づいて秘匿計算に必要となる乱数の種類および数を見積もり、見積もった乱数の種類および数を必要乱数情報として前記クライアントに送信することと、
前記クライアントが、受信した必要乱数情報に基づいて乱数を生成して前記複数のサーバーに送信することと、
前記クライアントから受信した前記クエリーに基づく秘匿計算を実行するための乱数をプールすることと、
前記サーバーが、前記クライアントから受信した前記クエリーに基づく秘匿計算を実行し、実行結果を前記クライアントに送信することと、を含み、
前記サーバーが、前記秘匿計算の実行において不足する乱数を検知すると、前記クライアントからの照会があった際に不足する乱数の種類および数を必要乱数情報として回答することと、
前記クライアントが、前記サーバーに前記クエリーに基づく秘匿計算の実行時に不足する乱数の有無を一定間隔で照会し、前記サーバーから前記必要乱数情報の回答があった場合には、当該必要乱数情報に基づいて不足する乱数を生成して前記複数のサーバーに送信することと、をさらに含む、秘匿計算方法。
A secure calculation method using a plurality of servers that perform secure calculations, and a client that supplies random numbers necessary for performing secure calculations to the plurality of servers, the method comprising:
the client sending a query for user-entered data to at least one of the plurality of servers;
The server estimates the type and number of random numbers required for secure calculation based on the query received from the client, and transmits the estimated type and number of random numbers to the client as necessary random number information;
The client generates a random number based on the received necessary random number information and transmits it to the plurality of servers;
pooling random numbers for performing a secure calculation based on the query received from the client;
The server executes a secure calculation based on the query received from the client, and transmits the execution result to the client,
When the server detects a missing random number in executing the secure calculation, the server responds with the type and number of the missing random number as necessary random number information when an inquiry is received from the client;
The client inquires of the server at regular intervals as to whether or not there are insufficient random numbers when performing secure calculation based on the query, and if there is a response from the server with the necessary random number information, then The method further comprises: generating a missing random number and transmitting it to the plurality of servers.
JP2022137457A 2022-08-31 2022-08-31 SECURE COMPUTING SYSTEM, SERVER, INFORMATION PROCESSING DEVICE, COMPUTER PROGRAM AND SECURE COMPUTING METHOD Active JP7171113B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2022137457A JP7171113B1 (en) 2022-08-31 2022-08-31 SECURE COMPUTING SYSTEM, SERVER, INFORMATION PROCESSING DEVICE, COMPUTER PROGRAM AND SECURE COMPUTING METHOD

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2022137457A JP7171113B1 (en) 2022-08-31 2022-08-31 SECURE COMPUTING SYSTEM, SERVER, INFORMATION PROCESSING DEVICE, COMPUTER PROGRAM AND SECURE COMPUTING METHOD

Publications (2)

Publication Number Publication Date
JP7171113B1 JP7171113B1 (en) 2022-11-15
JP2024033698A true JP2024033698A (en) 2024-03-13

Family

ID=84045977

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022137457A Active JP7171113B1 (en) 2022-08-31 2022-08-31 SECURE COMPUTING SYSTEM, SERVER, INFORMATION PROCESSING DEVICE, COMPUTER PROGRAM AND SECURE COMPUTING METHOD

Country Status (1)

Country Link
JP (1) JP7171113B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7325872B1 (en) 2022-12-21 2023-08-15 株式会社ZenmuTech Secure computing system, information processing device, computer program, and access right management method

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08320780A (en) * 1995-05-25 1996-12-03 Hitachi Electron Eng Co Ltd Random number generating device
JP2009042892A (en) * 2007-08-07 2009-02-26 Nippon Telegr & Teleph Corp <Ntt> Data management system, data management method
JP2014140102A (en) * 2013-01-21 2014-07-31 Nippon Telegr & Teleph Corp <Ntt> Secure authentication method
US20150341326A1 (en) * 2014-05-21 2015-11-26 The Board Of Regents, The University Of Texas System System And Method For A Practical, Secure And Verifiable Cloud Computing For Mobile Systems
JP2016510137A (en) * 2013-02-28 2016-04-04 アマゾン・テクノロジーズ・インコーポレーテッド Quality configurable random data service
JP2016178550A (en) * 2015-03-20 2016-10-06 日本電気株式会社 Secret information distribution system, information processor, and information processing program
WO2021149092A1 (en) * 2020-01-20 2021-07-29 日本電気株式会社 Secret computation system, secret computation server device, secret computation method, and secret computation program

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08320780A (en) * 1995-05-25 1996-12-03 Hitachi Electron Eng Co Ltd Random number generating device
JP2009042892A (en) * 2007-08-07 2009-02-26 Nippon Telegr & Teleph Corp <Ntt> Data management system, data management method
JP2014140102A (en) * 2013-01-21 2014-07-31 Nippon Telegr & Teleph Corp <Ntt> Secure authentication method
JP2016510137A (en) * 2013-02-28 2016-04-04 アマゾン・テクノロジーズ・インコーポレーテッド Quality configurable random data service
US20150341326A1 (en) * 2014-05-21 2015-11-26 The Board Of Regents, The University Of Texas System System And Method For A Practical, Secure And Verifiable Cloud Computing For Mobile Systems
JP2016178550A (en) * 2015-03-20 2016-10-06 日本電気株式会社 Secret information distribution system, information processor, and information processing program
WO2021149092A1 (en) * 2020-01-20 2021-07-29 日本電気株式会社 Secret computation system, secret computation server device, secret computation method, and secret computation program

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
石田祐介 他: "秘匿計算における乱数生成サーバーの設計と実装", 2021年 暗号と情報セキュリティシンポジウム予稿集, JPN6022040657, January 2021 (2021-01-01), pages 1 - 8, ISSN: 0004890203 *

Also Published As

Publication number Publication date
JP7171113B1 (en) 2022-11-15

Similar Documents

Publication Publication Date Title
Gai et al. Blend arithmetic operations on tensor-based fully homomorphic encryption over real numbers
CN111512589B (en) Method for fast secure multiparty inner product with SPDZ
CN110601814B (en) Federal learning data encryption method, device, equipment and readable storage medium
CN111510281B (en) Homomorphic encryption method and device
RU2534944C2 (en) Method for secure communication in network, communication device, network and computer programme therefor
Baharon et al. A new lightweight homomorphic encryption scheme for mobile cloud computing
WO2022121623A1 (en) Data set intersection method and apparatus
JP7345612B2 (en) Method and apparatus for increasing entropy of a blockchain using blinded outcome diversification
US11128452B2 (en) Encrypted data sharing with a hierarchical key structure
CN107196919B (en) Data matching method and device
Dolev et al. Accumulating automata and cascaded equations automata for communicationless information theoretically secure multi-party computation
Kamara et al. Parallel homomorphic encryption
CN113239403A (en) Data sharing method and device
CN109995739A (en) A kind of information transferring method, client, server and storage medium
CN111726225A (en) Outsourcing privacy protection intersection calculation method based on secret sharing
JP2024033698A (en) Secure calculation system, server, information processing device, computer program, and secure calculation method
CN110690967B (en) Instant communication key establishment method independent of server security
CN111767411A (en) Knowledge graph representation learning optimization method and device and readable storage medium
US10615961B2 (en) Method and encryption node for encrypting message
CN116502732A (en) Federal learning method and system based on trusted execution environment
KR102080280B1 (en) Virtual private network server
EP3323220B1 (en) Encryption scheme using multiple parties
CN113162760A (en) Secure data sharing calculation method and system based on semi-honest MASCOT protocol
CN113973007A (en) Anonymous query method and system based on broadcast encryption and onion routing and adopting time-controlled encryption
Rong et al. Privacy-preserving scalar product computation in cloud environments under multiple keys

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220831

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20220831

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221026

R150 Certificate of patent or registration of utility model

Ref document number: 7171113

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150