JP7171113B1 - SECURE COMPUTING SYSTEM, SERVER, INFORMATION PROCESSING DEVICE, COMPUTER PROGRAM AND SECURE COMPUTING METHOD - Google Patents

SECURE COMPUTING SYSTEM, SERVER, INFORMATION PROCESSING DEVICE, COMPUTER PROGRAM AND SECURE COMPUTING METHOD Download PDF

Info

Publication number
JP7171113B1
JP7171113B1 JP2022137457A JP2022137457A JP7171113B1 JP 7171113 B1 JP7171113 B1 JP 7171113B1 JP 2022137457 A JP2022137457 A JP 2022137457A JP 2022137457 A JP2022137457 A JP 2022137457A JP 7171113 B1 JP7171113 B1 JP 7171113B1
Authority
JP
Japan
Prior art keywords
random number
client
random numbers
server
secure
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2022137457A
Other languages
Japanese (ja)
Other versions
JP2024033698A (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

Images

Abstract

【課題】秘匿計算に用いる乱数を適切に供給することができる、秘匿計算システム、サーバー、情報処理装置、コンピュータプログラムおよび秘匿計算方法を提供する。【解決手段】クライアント10は、必要乱数情報に基づいて乱数を生成し、複数のサーバー30,40に送信する乱数供給手段を備え、サーバー30,40は、秘匿計算に必要となる乱数の種類および数を見積もり必要乱数情報としてクライアント10に送信する乱数見積手段と、秘匿計算を実行するための乱数をプールする乱数プール手段と、秘匿計算を実行し、実行結果をクライアント10に送信する秘匿計算手段と、秘匿計算手段による秘匿計算の実行において不足する乱数を検知し、クライアント10の不足乱数照会手段による照会があった際に不足する乱数の種類および数を必要乱数情報としてクライアント10に回答する不足乱数検知手段と、を備え、クライアント10が、秘匿計算の実行時に不足する乱数の有無を一定間隔で照会し、不足乱数検知手段から必要乱数情報の回答があった場合には、必要乱数情報を乱数プール手段に送信する不足乱数照会手段をさらに備える。【選択図】図1A secure computation system, a server, an information processing device, a computer program, and a secure computation method capable of appropriately supplying random numbers used for secure computation are provided. A client (10) has random number supply means for generating random numbers based on necessary random number information and transmitting them to a plurality of servers (30, 40). Random number estimating means for estimating the number and transmitting to the client 10 as required random number information, random number pooling means for pooling random numbers for executing the confidential calculation, and confidential calculation means for executing the confidential calculation and transmitting the execution result to the client 10. Then, the lack of random numbers in the execution of the secret calculation by the secret calculation means is detected, and when there is an inquiry by the shortage random number inquiry means of the client 10, the type and number of the lack of random numbers are answered to the client 10 as necessary random number information. and random number detection means, wherein the client 10 inquires at regular intervals whether or not there is a shortage of random numbers during the execution of confidential calculations, and when the lack of random number detection means responds with necessary random number information, the necessary random number information is sent. It further comprises an insufficient random number inquiry means for sending to the random number pool means. [Selection drawing] Fig. 1

Description

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

近年、情報漏洩に対する意識の高まりから、データを暗号化したまま計算する秘匿計算(秘密計算とも言われる。以下同じ。)技術が注目されている。秘匿計算の方法として、主に、暗号鍵を用いる完全準同形暗号式の方法と、データをシェアと呼ばれる暗号化された情報に分割し、分割したシェアを複数のサーバーに分散して格納しておき、各サーバーにおいてそれぞれデータ(シェア)を暗号化したまま計算する、秘密分散式との秘匿計算が知られている。秘密分散式の秘匿計算では、完全準同形暗号式の秘匿計算と比べて、複数サーバー間の通信制御や同期処理が必要で、システム構築難度は高い一方、計算速度が速いという特徴がある。 2. Description of the Related Art In recent years, with increasing awareness of information leakage, a secure computation (also called secure computation; the same shall apply hereinafter) technology for performing computation while encrypting data has attracted attention. As a method of confidential calculation, there is mainly a method of fully homomorphic encryption using an encryption key, and a method of dividing data into encrypted information called shares and storing the divided shares in multiple servers. Secrecy calculation with a secret sharing method is known in which data (shares) are calculated while each server encrypts them. Compared to fully homomorphic cryptography, the secret-sharing method requires communication control and synchronization processing between multiple servers, making it more difficult to build a system, but the calculation speed is faster.

秘密分散式の秘匿計算では、サーバー間で相関を持つ乱数を用いることで、秘匿計算を実現するプロトコルが多く提案されている。相関を持つ乱数を生成する方法としては、秘匿計算を行うサーバー間のみで乱数を生成する方法が知られている。しかしこの場合、公開鍵暗号と、サーバー間での多くの通信回数及び通信量が必要となり、計算速度が低下してしまうという問題があった。
そこで、非特許文献1では、秘匿計算において必要な乱数を生成するための信頼できる第三者として乱数生成サーバーを秘匿計算用のサーバーとは別に設けておき、秘匿計算に必要な乱数を予め見積もっておくことで、秘匿計算において用いられる乱数を予め生成しておく技術が開示されている。このような構成では、相関を持つ乱数を信頼できる第三者の内部で生成できる。その結果、乱数生成において公開鍵暗号とそれに伴う通信が、秘匿計算用サーバー間では不要となり、計算速度が向上する。
また、非特許文献2では、信頼できる第三者の役割をクライアントが担い、クライアントから、秘密情報とともに相関を持つ乱数をサーバーに送信することで、同様に秘匿計算用サーバーの負荷を軽減し、秘匿計算の効率を高める方法が開示されている。
In secret-sharing secure computation, many protocols have been proposed that implement secure computation by using random numbers that are correlated between servers. As a method of generating correlated random numbers, a method of generating random numbers only between servers that perform secure computation is known. However, in this case, public key encryption and a large number of communications between servers and a large amount of communications are required, resulting in a problem of a decrease in computation speed.
Therefore, in Non-Patent Document 1, a random number generation server is provided as a reliable third party for generating the random numbers necessary for the confidential calculation separately from the server for the confidential calculation, and the random numbers necessary for the confidential calculation are estimated in advance. A technique for generating random numbers to be used in secure calculation in advance by storing data is disclosed. In such a configuration, correlated random numbers can be generated internally by a trusted third party. As a result, public key cryptography and accompanying communication are no longer necessary between servers for secure computation in random number generation, and the computation speed is improved.
In addition, in Non-Patent Document 2, the client plays the role of a reliable third party, and the client transmits a random number that has a correlation with secret information to the server, similarly reducing the load on the server for secure calculation, 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 Symposium on Cryptography and Information Security 2021 (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 confidential calculations, random numbers are not required for addition and subtraction, but in addition to multiplication and division, numerical comparisons, filtering calculations for extracting data that meets predetermined conditions from table-structured data, and table-structured data alignment Random numbers are used in cases such as switching. However, when performing confidential calculations on table-structured data, a number of random numbers corresponding to the number of rows in the table-structured data is required. Estimates may not be available in advance. For example, in table-structured data, after extracting (filtering) row data that matches a certain condition, if the extracted data is to be sorted, a random number corresponding to the number of extracted row data is required at the time of sorting. However, the number of required random numbers cannot be estimated because the number of extracted row data is not determined until the extraction of row data is completed. In this way, there are cases where the necessary random numbers cannot be estimated in advance, and there is a risk that the random numbers will run short during the secure calculation. Then, when the random numbers run short, the concealed computation that has been performed so far is interrupted, and there are cases where the computation results cannot be obtained.

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

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

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

本実施形態に係る秘匿計算システムの構成図である。1 is a configuration diagram of a secure computing system according to this embodiment; FIG. 本実施形態に係る乱数供給処理を説明するための概要図である。FIG. 4 is a schematic diagram for explaining random number supply processing according to the present embodiment; 第1サーバーにおける秘匿乗算処理を示すフローチャートである。It is a flowchart which shows the confidential multiplication process in a 1st server. 第2サーバーにおける秘匿乗算処理を示すフローチャートである。It is a flowchart which shows the confidential multiplication process in a 2nd server. 秘匿乗算処理を説明するための概要図である。FIG. 10 is a schematic diagram for explaining a secret multiplication process; 秘匿データ抽出処理を示すフローチャートである。It is a flow chart which shows confidential data extraction processing. 秘匿データ抽出処理を説明するための概要図である。It is a schematic diagram for demonstrating a secret data extraction process. 本実施形態に係るクライアント側乱数供給処理を示すフローチャートである。6 is a flowchart showing client-side random number supply processing according to the present embodiment; 本実施形態に係るサーバー側乱数供給処理を示すフローチャートである。5 is a flowchart showing server-side random number supply processing according to the present embodiment. 本実施形態に係る乱数供給処理におけるクライアントとサーバーとの情報の授受を説明するための図である。FIG. 4 is a diagram for explaining exchange of information between a client and a server in random number supply processing 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 computing system according to the present invention will be described with reference to the drawings. FIG. 1 is a configuration diagram showing a secure computing system 1 according to this embodiment. As shown in FIG. 1, the secure computing system 1 according to this embodiment includes a client 10, a gateway 20, a first server 30, and a second server . Further, as shown in FIG. 1, the client 10 is arranged within a LAN (Local Area Network) where communication is restricted by a gateway 20 . Also, the client 10 and the gateway 20 , the first server 30 and the second server 40 can communicate with each other via the Internet 2 . Although only one client 10 and one gateway 20 are shown in FIG. 1, a plurality of clients 10 and gateways 20 may be provided. In addition, although the example shown in FIG. 1 illustrates a configuration in which two servers 30 and 40 are used to perform secure computation between two parties, the configuration is not limited to this. can be used to perform secure computation.

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

また、本実施形態では、クライアント10が予め必要となる乱数を予測し、秘匿計算が開始される前に乱数をサーバー30,40に送信するのではなく、秘匿計算が開始されると、図2(A)に示すように、クライアント10からサーバー30,40に対して、秘匿計算で不足している乱数があるか問い合わせを行い、当該問い合わせに応答して、図2(B)に示すように、サーバー30,40から乱数の要求情報を送信してもらう。そして、図2(C)に示すように、クライアント10は、受信した要求情報に基づいて乱数を生成し、生成した乱数をサーバー30,40に供給することを特徴としている。なお、図2は、本実施形態に係る乱数供給処理を説明するための概要図である。以下、秘匿計算システム1を構成する各装置について説明する。 Further, in this embodiment, instead of the client 10 predicting the required random numbers in advance and transmitting the random numbers to the servers 30 and 40 before the start of the secure calculation, when the secure calculation starts, the random number shown in FIG. As shown in (A), the client 10 inquires of the servers 30 and 40 whether or not there is a missing random number in the secure calculation. , the servers 30 and 40 send random number request information. Then, as shown in FIG. 2C, the client 10 is characterized by generating random numbers based on the received request information and supplying the generated random numbers to the servers 30 and 40 . FIG. 2 is a schematic diagram for explaining the random number supply process according to this embodiment. Each device constituting the secure computing system 1 will be described 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 has an arithmetic device, a storage device, and a communication device. In the present embodiment, the client 10 transmits a secure computation instruction to the servers 30 and 40 by user operation, and the servers 30 and 40 perform secure computation. Further, in the secure computation system 1 according to the present embodiment, the client 10 transmits a secure computation instruction, and when the servers 30 and 40 start the secure computation, the servers 30 and 40 periodically inquire about the supply of random numbers. 40, and if a random number is required, it also has a function of generating a random number to be used in confidential calculation and supplying the generated random number to the servers 30 and 40. FIG. The details of the random number supply method 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 communications between client 10 and servers 30 and 40 . Specifically, the gateway 20 permits transmission of a connection establishment request from the client 10 to the servers 30 and 40 , but prohibits transmission of a connection establishment request 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 active. In this embodiment, the gateway 20 transmits a connection establishment request from the client 10 to the servers 30 and 40, and after the connection is established, a random number supply inquiry is sent from the client 10 to the servers 30 and 40 using the connection. , in response to this, random number request information is sent from the servers 30 and 40 to the client 10 using the same connection. Also, when the gateway 20 transmits the calculation result of the secure calculation from the servers 30 and 40 to the client 10, the client 10 establishes a connection with the servers 30 and 40 according to the same procedure. 40 transmits the calculation result to the client 10 using the connection based on the instruction of the client 10 .
Such a function of the gateway 20 is a function generally possessed by a gateway, and is a general network configuration introduced to prevent intrusion into the client 10 from outside the LAN. In this embodiment, it can be said that the security computing system 1 according to this embodiment has high versatility for existing systems, because the function and general network configuration that the gateway 20 generally has can be used.

サーバー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 each have an arithmetic device, a storage device, a communication device, and a database, and secret-sharing data is stored in the database as a share. The shares cannot decrypt the plaintext data unless a specific number of secret-sharing shares are gathered. is not leaked, the plaintext data cannot be decrypted and the confidential state can be secured. In this embodiment, the servers 30 and 40 store a server-side program for performing secure computation in the storage device, and the secure computation can be performed by executing the program on the arithmetic device. 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 keep the data secret without decrypting the secret-shared shares. Multi-Party Computation (MPC) is performed to obtain a desired calculation result by performing secure calculation while exchanging the calculation results performed by the servers 30 and 40 with each other. In the secure computation, the servers 30 and 40 receive random numbers from the client 10 and perform secure computation using the received random numbers in secure computation such as multiplication, size comparison, filtering calculation, and data rearrangement.

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

以下においては、まず、図3ないし図6を参照して、サーバー30,40による秘匿計算のうち、乱数を用いる秘匿乗算の一例について説明する。なお、図3は、第1サーバー30で実行される秘匿乗算処理を示すフローチャートであり、図4は、第2サーバー40で実行される秘匿乗算処理を示すフローチャートであり、図5は、秘匿乗算処理を説明するための概要図である。 An example of secure multiplication using random numbers among the secure calculations by the servers 30 and 40 will be described below with reference to FIGS. 3 to 6. FIG. 3 is a flowchart showing the confidential multiplication process executed by the first server 30, FIG. 4 is a flowchart showing the confidential multiplication process executed by the second server 40, and FIG. FIG. 4 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を復号することが可能となる。
(Anonymous multiplication processing)
The confidential multiplication process is a process in which the calculation result can be obtained without knowing any information about the input/output in the integer multiplication of 2 inputs and 1 output. Specifically, it is a calculation process in which two encrypted data are input, a predetermined calculation (predetermined secret multiplication algorithm) described later is performed without decrypting them at all, and the multiplication result is obtained as encrypted data. In the confidential multiplication process, as shown in FIG. 5, shares [[x]] 1 , [[x]] 2 , [[y]] 1 , [ [y]] 2 are stored respectively. In the confidential multiplication process shown in FIGS. 3 to 5, the servers 30 and 40 use the shares of x and y as they are to multiply x×y=z, and the share of z, which is the calculation result, is [[z]] 1 and [[z]] 2 are obtained. In the following description, the share of x stored in the first server 30 is [[x]] 1 , and the share of y is [[y]] 1 . Similarly, let the shares of x stored on the second server 40 be [[x]] 2 and the shares of y be [[y]] 2 . Further, let the share of z stored on the first server 30 be [[z]] 1 and the share of z stored on the second server 40 be [[z]] 2 . The plaintext data and the shared secret share have the following relationship. For example, plaintext data x and its shares [[x]] 1 and [[x]] 2 have a relationship of x = [[x]] 1 + [[x]] 2 and [[x] ] 1 =r and [[x]] 2 =x−r. Here, x and r are integers represented by the remainder ring of 2 l , and r is a uniform random number. l is the number of bits representing the value range of the operation target, l=1 in the case of a 1-bit integer operation, and l=32 in the case of a 32-bit integer operation. Since the plaintext data and the shares have such a relationship, it is 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 secret multiplication process, calculation is performed using three random numbers a, b, and c generated by the client 10 . These three random numbers are correlated random numbers having a relationship of c=a×b. The client 10 secret-shares the random number a to generate random number shares [[a]] 1 and [[a]] 2 , and secret-shares the random number b to generate random number shares [[b]] 1 , [[b] ] 2 , and secret sharing the random number c to generate the random number shares [[c]] 1 , [[c]] 2 . Then, the client 10 transmits shares [[a]] 1 , [[b]] 1 , [[c]] 1 obtained by secret sharing the random numbers a, b, and c to the first server 30 , and the random numbers a, b , c are secret-sharing shares [[a]] 2 , [[b]] 2 , [[c]] 2 to the second server 40 . This allows the first server 30 to 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 a secure multiplication using the shares [[a]] 2 , [[b]] 2 , [[c]] 2 of the random numbers a, b, 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 confidential multiplication process executed by the first server 30 will be described. In the following, the shares [[x]] and [[y]] of the plaintext data x are the primary shares, and the shares [[x' ]] and [[y']] are called secondary shares. First, in step S101, 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 calculated by the first server 30 as the secondary share [[x']]. calculated as 1 . Further, in step S102, the first server 30 subtracts the share [[b]] 1 of the random number b from the primary share [[y]] 1 of the plaintext data y to obtain the secondary share [[y']] 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, mutual communication between the servers 30 and 40 allows the processing of transmitting and receiving the calculation results performed by one of the servers 30 and 40 to and from the other server 30 and 40. will be Specifically, in step S103, the first server 30 calculates the secondary share [[x']] 1 calculated in step S101 and the secondary share [[y']] 1 calculated in step S102 as It is sent to the second server 40 . Also, in step S104, the secondary shares [[x']] 2 and secondary shares [[y']] 2 generated by the second server 40 are received by the first server 30 . The secondary share [[x']] 2 is a 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. Also, the secondary share [[y']] 2 is obtained 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. number. The method of calculating the secondary share [[x']] 2 and the secondary share [[y']] 2 will also be described in the secret multiplication process performed by the second server 40 shown in FIG. 4 to 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 acquired in step S104 to obtain data y' is calculated. Data x' and data y' are data obtained by encrypting plaintext data x and plaintext data y using random numbers a and b, and are meaningless data by themselves.

ステップ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 shares [[a]] 1 , [[ b]] 1 and [[c]] 1 are used to compute the share of z, [[z]] 1 , which is the result of the x×y computation. Specifically, the first server 30 divides the calculation result of x′×y′+x′×[[b]] 1 +y′×[[a]] 1 +[[c]] 1 into the share [[z ]] can be calculated as 1 . The first server 30 then stores the calculated share [[z]] 1 in a 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’]]として算出される。 FIG. 4 is a flow chart showing the confidential multiplication process executed by the second server 40. As shown in FIG. As shown in FIG. 4, first, in step S201, 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 is obtained by the second server 40 as the secondary share. It is calculated as [[x']] 2 . In step S202, the second server 40 obtains the secondary share [[y']] by subtracting the share [[b]] 2 of the random number b from the primary share [[y]] 2 of the plaintext data y. 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, similar to steps S103 and S104 in FIG. is done. That is, in step S203, the secondary share [[x']] 2 calculated in step S201 and the secondary share [[y']] 2 calculated in step S202 are transferred to the first server 40 by the second server 40. 30. As described above, the secondary share [[x']] 2 and the secondary share [[y']] 2 received by the first server 30 in step S104 of FIG. 2 secondary shares [[x′]] and [[y′]] 2 transmitted from 40 . Also, in step S204, the secondary share [[x']] 1 and the secondary share [[y']] 1 generated by the first server 30 are received by the second server 40 . 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. 1 and the secondary share [[y']] is 1 .

そして、ステップS205では、第2サーバー40により、ステップS201で算出した二次シェア[[x’]]と、ステップS204で取得した二次シェア[[x’]]とを加算して、データx’が復号される。また、ステップS206では、第2サーバー40により、ステップS202で算出した二次シェア[[y’]]と、ステップS204で取得した二次シェア[[y’]]とを加算して、データy’が復号される。 Then, in step S205, the secondary share [[x']] 2 calculated in step S201 and the secondary share [[x']] 1 obtained in step S204 are added by the second server 40, Data x' is decoded. In step S206, the secondary share [[y']] 2 calculated in step S202 and the secondary share [[y']] 1 obtained in step S204 are added by the second server 40, 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 data x' calculated in step S205, the data y' calculated in step S206, and the shares [[a]] 2 , [[ Using b]] 2 and [[c]] 2 , the share [[z]] 2 of data z, which is the result of the multiplication x×y, is calculated. Specifically, the second server 40 calculates the share [[z]] 2 as the calculation result of x′×[[b]] 2 +y′×[[a]] 2 +[[c]] 2 . The second server 40 then stores the calculated share [[z]] 2 in a database, or transmits it to the client 10 based on the client 10's instruction.

これにより、第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 of z [[z]] 1 , which is the result of multiplication of plaintext data x and y, and the second server 40 stores the share of z [[z] ] 2 is stored. Also, the client 10 obtains share [[z]] 1 from the first server 30, obtains share [[z]] 2 from the second server 40, and obtains share [[z]] 1 and share [[ By adding z]] 2 , the plaintext data z resulting from the multiplication of the plaintext data x and y can be calculated.

このように、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に送信することもできる。 Thus, in one secret multiplication, the shares of three correlated random numbers a, b, and c [[a]] 1 , [[b]] 1 , [[c]] 1 , [[a]] 2 , [[b]] 2 , [[c]] 2 are required. Further, when the data is table-structured data having a plurality of rows (the number of rows n), when the data of each row is secretly multiplied, the share [[a]] 1 of the three correlation random numbers a, b, and c , [[b]] 1 , [[c]] 1 , [[a]] 2 , [[b]] 2 , and [[c]] 2 for n rows. In this way, in confidential multiplication, if the number of times of confidential multiplication and the number of rows n of the table structure data are known in advance, the required number of random numbers can also be known. In this embodiment, the client 10 has a function of generating random numbers, and by generating and pooling the shares of these correlated random numbers before starting calculation, the generated correlated random numbers are sent to the server as needed. 30, 40, or, as will be described later, upon request of the servers 30, 40, the shares of the correlation random numbers can be generated and sent to the servers 30, 40 as well.

(秘匿データ抽出処理)
次に、図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 processing)
Next, confidential data extraction processing will be described with reference to FIGS. 6 and 7. FIG. 6 is a flow chart 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 the present embodiment is a process of extracting row data that satisfies a certain condition from secret-sharing table structure data using SQL statements or the like. In the following, out of the table structure data having n rows of row data having column data of numerical attributes X and Y, it is said that the data x in the X column is smaller than the data y in the Y column (x<y). An example of calculation for extracting the numerical value x of the X column data in the row data satisfying the condition will be described. That is, the calculation of "select x from table structure data where x<y" described in SQL sentences will be described as an example. It is assumed that each of the servers 30 and 40 stores in advance the share of the 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. shall be Below, the sequence of shares [[x[i]]] of X column data x in each row of n rows of table-structured data is referred to as share [[x]], and Y column data of each row of n rows of table-structured data The sequence of shares of y[[y[i]]] is called shares[[y]]. Also, i is an integer and means the i-th row data in 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, there is a process of comparing x<y and a filtering process of extracting X column data x of rows that match the filtering condition (x<y in the example shown in FIG. 6). In the magnitude comparison process, the number of correlation random numbers required varies depending on the number of representation bits of the integer to be compared. 163 sets of [[a]], [[b]], [[c]]) are required. Furthermore, when the table structure data has n rows, a combination of shares of n times the correlation random numbers is required. In the filtering process, if the data to be extracted (the data in the data string to be extracted, or the data described in the select statement in the SQL statement) is a string of 32-bit integers, a random number called shuffle ( Hereinafter, simply referred to as shuffle) and a combination of correlated random number sequences ((r1, r1', a1, a1', b1, b1'), (r2, r2', a2, a2', b2, b2')) One set is required. The shuffles r1, r1′, r2, r2′ are n number sequences (random number sequences) that constitute random permutation. number (the number of elements in the random number sequence) increases. Also, a1, a1', b1, b1', a2, a2', b2, and b2' are sequences of correlated random numbers. In this embodiment, since the extraction target is only one of 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 increases to a, b, c, and so on. In this way, in the confidential data extraction process, the type of random number changes according to the calculation process to be executed, and the random number required according to the number of rows n of the table structure data to be calculated and the number of columns to be extracted number of changes. Furthermore, in this embodiment, the number of rows of the table-structured data is a disclosed (non-confidential) value, but the number of rows of the table-structured data of the filtering result is unknown until the filtering process is completed. . Therefore, in data analysis, there are many cases where some calculation such as aggregation is performed after the filtering process, but until the filtering process in the previous stage is completed, it is recommended to pre-estimate and pool the random numbers necessary for subsequent confidential calculations. There is a problem of difficulty. In this embodiment, the client 10 generates a random number as necessary and provides it to the servers 30 and 40, thereby solving such a problem. The secret data extraction process according to this embodiment will be described 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, more specifically In the table structure data, based on the share [[x]] of X column data x and the share [[y]] of Y column data y, the magnitude relationship between x and y is evaluated by confidential calculation, and the evaluation result Take as output the share of f [[f]]. 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 The size relation of y is evaluated by confidential calculation. The method of evaluating the size relationship between the X column data x and the Y column data y in each row based on the share [[x]] and the share [[y]] by confidential calculation is already stored in the servers 30 and 40. 1-bit correlated random number share combinations ([[a]], [[b]], [[c]]) can be used (for example, Yukiya Ohata and Koji Nuita , "Efficient Secret Size Comparison Protocols and Their Applications," Symposium on Cryptography and Information Security (SCIS 2019) Proceedings, 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, servers 30 and 40 generate [[Π(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 secret-sharing value of 1 is output as a share [[f(i)]], and x<y Otherwise, a numerical value obtained by secret sharing 0 is output as a share [[f(i)]]. In this way, [[Π(f)]] P is obtained by randomly permuting the 0 or 1 share [[f]] output according to the evaluation of x<y in each row. Note that i indicates that the data is in the i-th row of the table structure data. Also, [[Π(f)]] P is obtained by randomly permuting 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 number of elements in the table It becomes the number of rows of structure data n. In this way, in [[Π(f)]] P , by obtaining the evaluation result f as the share [[f]] in the secure calculation, it becomes unclear whether or not the filtering condition (x<y) is satisfied. By applying random permutation to the share [[f]] instead of Security can be enhanced. Note that the random permutation described above is a combination of sequences of shuffle and correlated random numbers stored in the servers 30 and 40 ((r1, r1', a1, a1', b1, b1'), (r2, r2', a2, a2′, b2, b2′))) (see, for example, N. Attrapadung et al., “Oblivious Linear Group Actions and Applications”, In Proceedings of CCS 2021, pp. 630-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)]]を示すものとなる。 6 are executed by the first server 30 and the second server 40, respectively, so in FIG. The share calculated in 1 is indicated using “Q” (the same shall apply hereinafter). For example, the evaluation result of the filtering condition evaluation is a share [[Π(f)]] obtained by applying random permutation to the evaluation result held by the first server 30 and a share of 1 obtained by applying random permutation to the evaluation result held by the second server 40. However, when the first server 30 performs the secret data extraction process shown in FIG . 6, the share [[ Π(f)]] P indicates the share [[Π(f)]] 1 obtained by applying random permutation to the evaluation result held by the first server 30, and the secret data shown in FIG. When the extraction process is performed, the share [[Π(f)]] P obtained by applying random permutation to the evaluation result is the share [[Π(f) ]] 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 data to be extracted, to generate the share [[Π(x)]] P . 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). The share [[Π(x)]] obtained by randomly permuting the share [[x]] of P is also unclear as to which row of data corresponds to which row of the original table structure data, and the number of elements is It becomes the number of rows n of the table structure data. Random permutation of shares [[x]] of X column data x can be performed in a similar manner to 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, mutual communication between the servers 30 and 40 is performed to transmit/receive the calculation results performed by one server 30/40 to the other server 30/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. In step S305, the server 30 or 40 receives the share [[Π(f)]] Q obtained by applying random permutation to the evaluation result generated by the other server. Then, in step S306, the servers 30 and 40 prepare the list [[L]] P . The list [[L]] P is a list for inserting shares of X column data x of rows satisfying the condition x<y in the table structure data, and is empty at the time of 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 process is repeated until steps S307 to S309 are performed for all rows. In this embodiment, since the number of rows of 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 generate the m - th A share [[Π(f)[m]]] P that is an element of and a share [[Π(f)]] Q obtained by applying random permutation to the evaluation result received in step S305 (the number of elements is the number of rows n) Based on the share [[Π(f)[m]]] Q , which is the m-th element of , the evaluation result of the m-th row data is decoded. Note that m means the data of the m-th row (row number m) of the share [[Π (f)] after random replacement, and the number of row numbers (i-th row) of 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 are 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 or not the target row data conforms to the filtering conditions. As described above, in the present 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 and 40 determine that the filtering condition x<y is satisfied, and proceed to step S309. If the result is 0, it is determined that the filtering condition x<y is not satisfied, 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 X column data in the m-th row data after shuffling generated in step S303 is generated by the servers 30 and 40. The shares of x [[Π(x)[m]]] P are inserted into the list [[L]] P generated in step S306. That is, in this embodiment, only the shares [[Π(x)[m]]] P of the X column data x of the rows that meet the filtering condition are substituted into the list [[L]] P , and the The shares [[Π(x)[m]]] P of the X column data x of the rows that are not in the list will be eliminated 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 of 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 proceeds to step S311, and the servers 30 and 40 generate list [[L]] P 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 the X column data x among the row data that satisfies x<y from the table structure data. can be stored in Also, the client 10 obtains a list share [[L]] 1 from the first server 30, a list share [[L]] 2 from the second server 40, and a list share [[L]] By adding 1 and share [[L]] 2 and decoding, it is possible to calculate a list L of X column data x among row data satisfying x<y.

このように、本実施形態に係る秘匿データ抽出においては、実行する計算処理に応じて乱数の種類が変わり、また、計算対象となるテーブル構造データの行数nや抽出対象データの列数に応じて必要となる乱数の数が変化する。そのため、特に、フィルタリングのように出力テーブル構造データの行数が変化する計算の後に続いて、別の処理を開始したい場合、前段のフィルタリング処理が完了するまでは、その後の秘匿計算に必要な乱数を予め見積もってプールしておくことが難しい。しかしながら、本実施形態では、クライアント10が、各処理に必要な乱数を生成し、サーバー30,40に提供することで、秘匿データ抽出処理のような必要な乱数の種類や数を予め見積ることが困難な場合も、適切に、秘匿計算に必要な乱数を提供することができる。以下に、クライアント10とサーバー30,40との間で行われる乱数供給処理について説明する。 As described above, in the secret data extraction according to the present embodiment, the type of random number changes depending on the calculation process to be executed, and the number of rows n of table structure data to be calculated and the number of columns of extraction target data The number of random numbers required for Therefore, in particular, if you want to start another process after a calculation that changes the number of rows in the output table structure data, such as filtering, the random number is difficult to estimate and pool 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, so that the type and number of random numbers required for the secret data extraction process can be estimated in advance. Even if it is difficult, it is possible to appropriately provide random numbers necessary for secure computation. Random number supply processing 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. Also, FIG. 9 is a flowchart showing server-side random number supply processing according to the present embodiment. Furthermore, FIG. 10 is a diagram for explaining the random number supply process according to this embodiment. 8 and 9, the client-side random number supply process and the server-side random number supply process will be described below, and then, based on FIG. Explain how information is exchanged.

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

ステップ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. Random numbers can be generated by the client 10 by a known method. In subsequent step S404, a process of supplying the random number generated in step S403 to the servers 30 and 40 is performed. Thus, 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, an execution instruction for secure calculation is transmitted to the first server 30 and the second server 40. FIG. For example, the client 10 can transmit an SQL statement describing the details of the secure computation to the first server 30 and the second server 40 as an execution instruction for the secure computation.

ステップS406では、ステップS404の乱数の供給、ステップS407の問い合わせ情報の送信、または、ステップS411の乱数の送信から一定時間が経過したか否か判断される。一定時間が経過するまでは、ステップS406で待機し、一定期間が経過すると、ステップS407に進む。なお、ステップS404の乱数の供給に代えて、ステップS405の秘匿計算の実行指示から一定時間が経過したか判断する構成としてもよい。 In step S406, it is determined whether or not a predetermined time has passed since the random number was supplied in step S404, the inquiry information was sent in step S407, or the random number was sent in step S411. The process waits in step S406 until a certain period of time elapses, and proceeds to step S407 when the certain period of time elapses. Instead of supplying the random number in step S404, it may be configured to determine whether or not a certain period of time has passed since the instruction to execute the confidential 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, the first server 30 is inquired about the lack of random numbers. Upon receiving the inquiry, the first server 30 detects the currently missing random numbers (step S509, which will be described later), and transmits the required random number information to the client 10 as random number request information (step S510, which will be described later). In step S408, the random number request information transmitted from the first server 30 is received, and in subsequent step S409, it is determined whether or not the random number is insufficient based on the received random number request information. If it is determined that the random number is insufficient, the process proceeds to step S410, the missing random number is generated, and in step S411 the generated random number is transmitted to the first server 30 and the second server 40. After that, the process proceeds to step S412. On the other hand, if it is determined in step S409 that the random number is sufficient, the process proceeds to step S412 without performing the processes of steps S410 and S411. As described above, in this embodiment, the client 10 transmits an inquiry as to whether the random numbers are insufficient and receives the random number request information only between the first server 30 and when the random numbers are insufficient, the client 10 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. , random numbers of the same type and number are in short supply.

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

次に、図9に基づいて、サーバー側乱数供給処理について説明する。図9に示すサーバー側乱数供給処理は、本実施形態に係る乱数供給処理のうち、サーバー30,40によりそれぞれ実行される処理である(なお、本実施形態では、ステップS501~S503,S508,S509は第1サーバー30のみが実行する。)。 Next, server-side random number supply processing will be described with reference to FIG. The server-side random number supply process shown in FIG. 9 is a process executed by each of the servers 30 and 40 among the random number supply processes according to the present embodiment (note that steps S501 to S503, S508, and S509 are performed in the present embodiment). 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 estimation request transmitted from the client 10. In step S502, the first server 30 receives the random number estimation request. In step S502, the random number estimation program is executed by the first server 30, triggered by the estimation request received in step S501. Here, the random number estimation request sent from the client 10 includes calculation information of the confidential calculation to be executed, and the random number estimation program estimates the random numbers required for the confidential calculation in the calculation information. In this embodiment, the first server 30 stores a random number estimation program in advance in the storage unit, and executes the random number estimation program based on the calculation information of the confidential calculation included in the random number estimation request of the client 10. .

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

ステップS505では、ステップS504で受信した乱数を用いて、秘匿計算が実行される。ただし、乱数の見積では、秘匿計算において行数が変更するまでの計算に用いられる乱数しか見積もることができないため、秘匿計算の内容によっては、ステップS504で受信した乱数だけでは秘匿計算を完了することができない。そのため、秘匿計算の途中で秘匿計算に必要な乱数の不足が生じる場合があり(ステップS506=Yes)、このような場合、ステップS507に進み、乱数が不足しているために、秘匿計算が一時的に中断される。 In step S505, confidential calculation is performed using the random number received in step S504. However, since random number estimation can only estimate random numbers used in calculations until the number of rows changes in the secure calculation, the secure calculation may not be completed with only the random numbers received in step S504, depending on the content of the secure calculation. can't Therefore, there may be a shortage of random numbers required for the secure calculation during the secure calculation (step S506=Yes). 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 lack 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 subsequent step S509, the first server 30 responds to the inquiry by , and the progress information of the secret calculation are transmitted to the client 10 as random number request information. In the present embodiment, the first server 30 internally updates the missing random number information and the progress information at relatively short intervals, and the latest missing random number information and progress information at the time of receiving the 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 number and transmits it to both the first server 30 and the second server 40 (steps S410, S411). Accordingly, in step S510, the random numbers transmitted from the client 10 are received by the servers 30 and 40, and the secure computation is continued using the received random numbers.

また、ステップS511では、サーバー30,40により、秘匿計算が終了したか否かの判断が行われる。秘匿計算が終了していない場合は、ステップS506に戻り、ステップS506~S510の処理が繰り返される。一方、秘匿計算が終了している場合には、図9に示すサーバー側乱数供給処理を終了する。 Also, in step S511, the servers 30 and 40 determine whether or not the secure computation has ended. If the confidential calculation has not ended, the process returns to step S506 and the processes of steps S506 to S510 are repeated. On the other hand, if the confidential 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, information transfer between the client 10 and the servers 30 and 40 in the random number supply process will be described with reference to FIG. First, when the random number supply process is started, at time T1, the client 10 transmits a random number estimation request including confidential calculation information to the first server 30 (step S401). As a result, the random number estimation program is executed by the first server 30 to estimate the random numbers necessary for performing the secure computation included in the secure computation information (step S502). Then, at time T2, the estimation result of the random number is transmitted from the first server 30 to the client 10 (step S503). In response to this, the client 10 generates a random number according to the estimation result of the random number from the first server 30 (step S403), and at time T3, transmits the generated random number to the first server 30 and the second server 40. (step S404). At time T4, the client 10 instructs the first server 30 and the second server 40 to perform secure computation, and the first server 30 and the second server 40 start secure computation.

また、秘匿計算が開始されて一定期間が経過した時刻T5では、クライアント10により、第1サーバー30に乱数の問い合わせが送信される(ステップS407)。これに対して、第1サーバー30は、時刻T6において、不足している乱数の情報を、進捗情報と共に、乱数要求情報としてクライアント10に送信する(ステップS509)。たとえば、図10に示す例において、時刻T6では、進捗が10%、不足乱数が「None」(不足なし)との乱数要求情報が、第1サーバー30からクライアント10へと送信される。クライアント10は、乱数要求情報における必要な乱数が「None」であるため、クライアント10による乱数の生成および供給は行わない。 At time T5 after a certain period of time has elapsed since the start of the secure calculation, the client 10 sends a random number inquiry to the first server 30 (step S407). In response to this, at time T6, the first server 30 transmits the missing random number information together with the 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 random number shortage is "None" is transmitted from the first server 30 to the client 10. FIG. 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ビット長に対応する相関乱数)を意味するものとする。 Also, at time T7 when a certain period of time has passed since the previous inquiry, the client 10 sends the random number inquiry again to the first server 30 (step S407). In response to this, the first server 30 transmits the missing random number information together with the progress information to the client 10 as random number request information at time T8 (step S509). At time T8, it is assumed that the first server 30 is short of 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 random number shortage is "A2: 1000". As a result, at time T9, the client 10 generates 1000 random numbers of type "A2" because the number of missing random numbers is "A2: 1000" (step S410). A2", 1000 random numbers are sent 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 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)をシャッフルするためのシャッフル乱数を意味するものとする。 Further, at time T10 after a certain period of time has passed since the previous random number supply, the client 10 again sends the random number inquiry to the first server 30 (step S407). In response to this, the first server 30 transmits the missing random number information to the client 10 as random number request information together with the progress information at time T11 (step S509). At time T11, it is assumed that the first server 30 is short of three random numbers of 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 random number shortage is "SR: 3". As a result, at time T12, the client 10 performs processing to generate three random numbers of type "SR" because the missing random number is "SR: 3" (step S410). SR” are sent to the first server 30 (step S411). In this embodiment, "SR" means a shuffle random number for shuffling designated columns consisting of n rows.

また、時刻T12以降においても、サーバー30,40およびクライアント10は、サーバー30,40間での秘匿計算が終了するまで、乱数の問い合わせと、問い合わせに対する乱数要求情報の送信と、乱数要求情報に基づく乱数の供給を繰り返し、秘匿計算が終了すると、乱数供給処理を終了する。 After time T12, the servers 30 and 40 and the client 10 continue to inquire about random numbers, transmit random number request information in response to the queries, and The supply of random numbers is repeated, and when the confidential 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 computing system 1 according to the present embodiment includes the plurality of servers 30 and 40 that perform secure computation, and the client 10 that supplies random numbers necessary for secure computation to the multiple servers 30 and 40. At least one of the plurality of servers 30, 40, the first server 30, transmits random number request information including the type and number of random numbers required for secure calculation to the client 10, and the client 10 sends the random number request. When information is received, based on the random number request information, random numbers are generated and transmitted to the plurality of servers 30 and 40 . As described above, in the secure computing system 1 according to this embodiment, the client 10 periodically inquires about the supply of random numbers to the first server 30, and the first server 30 repeats the random number request information to the client 10. By transmitting the random numbers, when the random numbers are insufficient and need to be supplied, the client 10 generates the required number of random numbers of the required type and supplies them to all the servers 30 and 40 that carry out confidential calculations. Therefore, it is possible to prevent the random numbers from running out in the middle of the confidential 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 modifications and improvements can be added to the above-described embodiment examples, and forms with such modifications and improvements are also included in the technical scope of the present invention.

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

また、上述した実施形態では、図3ないし図6において、秘匿乗算処理および秘匿データ抽出処理のアルゴリズムの一例を例示して説明したが、上記アルゴリズムに限定されるものではなく、公知である別のアルゴリズムを用いることもできる。また、アルゴリズムが変わると、必要とされる乱数の数や種類も変化するが、本発明による秘匿計算システム1では、第1サーバー30から要求された種類および数の乱数を、クライアント10が生成することは、どのアルゴリズムを用いた場合でも同様である。 Further, in the above-described embodiments, examples of algorithms for the secret multiplication process and the secret data extraction process have been illustrated in FIGS. Algorithms can also be used. Also, when the algorithm changes, the number and type of random numbers required also change. This is the same regardless of which algorithm is used.

さらに、上述した実施形態では、秘匿計算システム1が、ゲートウェイ20を有する構成を例示したが、ゲートウェイ20を備えない構成とすることもできる。この場合、クライアント10は、ゲートウェイ20を介さずに、第1サーバー30に乱数供給の問い合わせを直接送信することができ、第1サーバー30も、ゲートウェイ20を介さずに、クライアント10の要求に応答して必要な情報(乱数の要求情報や秘匿計算の結果)をクライアント10に送信することができる。 Furthermore, in the above-described embodiment, the secure computing system 1 includes the gateway 20 as an example, but a configuration without the gateway 20 is also possible. 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 also responds to the request of the client 10 without going through the gateway 20. Then, necessary information (random number request information and confidential calculation results) can be sent 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 above-described embodiment, multiplication, division, size comparison, filtering and rearrangement of table structure data are exemplified as secure calculations using random numbers, but secure calculations using random numbers are limited to these. not. For example, as secret calculations such as multiplication, division, and size comparison, which require random numbers that do not depend on the number of rows n, inner joins corresponding to the query join syntax, calculation of the average value of the aggregate function Avg, Trim, LTrim, String manipulation functions such as RTrim, Upper, Lower, Replace, Split, ZenToHan, and HanToZen String evaluation functions such as Contains and NotContains Mathematical operations such as Argmax and Dot Analysis operations such as LinregFit and LinregPredict Columns such as Expand Operations include logical operations such as "&" (AND) and "|" (OR). In addition, as confidential calculations that require shuffle random numbers that depend on the number of rows n, such as filtering corresponding to the where clause and sorting corresponding to the order by clause, calculation of the total corresponding to the group by clause, Min and Max Calculation of minimum and maximum values corresponding to .

また、上述した実施形態では、第1サーバー30において、乱数見積プログラムを実行する構成を例示したが、この構成に限定されず、第2サーバー40が乱数見積プログラムを実行する構成としてもよい。 Further, in the above-described embodiment, the configuration in which the random number estimation program is executed in the first server 30 is illustrated, but the configuration is not limited to this configuration, and the second server 40 may be configured to 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 the random number, the first server 30 returns the currently lacking random number information to the client 10 as random number request information, but the configuration is limited to this. Instead, it can be configured to transmit to the client 10 as random number request information including random numbers that are expected to run short in the future. For example, even when the first server 30 receives a random number inquiry (step S407) from the client 10, by executing the random number estimation program, not only the currently lacking random numbers but also the currently estimable random numbers are obtained. Estimates can be sent as random number request information. In particular, when the random numbers are insufficient in the first server 30 while the client 10 is generating random numbers, the first server 30 stops the secure calculation until the random numbers are supplied from the client 10. Therefore, by specifying and requesting random numbers that will be insufficient in the future, it is possible to expedite secure computation. 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 numbers required after the number of rows changes.

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

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

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

Claims (7)

秘匿計算を実行する複数のサーバーと、前記複数のサーバーに秘匿計算を実行するために必要な乱数を供給するクライアントと、を備える秘匿計算システムであって、
前記クライアントは、ユーザが入力したデータのクエリーを前記複数のサーバーの少なくとも1つに送信するクエリー入力手段と、
受信した必要乱数情報に基づいて乱数を生成し、前記複数のサーバーに送信する乱数供給手段と、を備え、
前記サーバーは、前記クライアントから受信した前記クエリーに基づいて秘匿計算に必要となる乱数の種類および数を見積もり、見積もった乱数の種類および数を必要乱数情報として前記クライアントに送信する乱数見積手段と、
前記クライアントから受信した前記クエリーに基づく秘匿計算を実行するための乱数をプールする乱数プール手段と、
前記クライアントから受信した前記クエリーに基づく秘匿計算を実行し、実行結果を前記クライアントに送信する秘匿計算手段と、
前記秘匿計算手段による秘匿計算の実行において不足する乱数を検知し、前記クライアントの不足乱数照会手段による照会があった際に不足する乱数の種類および数を必要乱数情報として前記クライアントに回答する不足乱数検知手段と、を備え、
前記クライアントが、前記サーバーに前記クエリーに基づく秘匿計算の実行時に不足する乱数の有無を一定間隔で照会し、前記不足乱数検知手段から前記必要乱数情報の回答があった場合には、当該必要乱数情報を前記乱数プール手段に送信する不足乱数照会手段をさらに備える、秘匿計算システム。
A secure computing system comprising: a plurality of servers that perform secure computation; and a client that supplies random numbers necessary for performing secure computation to the plurality of servers,
said client comprises query input means for sending a query of data entered by a user to at least one of said plurality of servers;
random number supply means for generating a random number based on the received required random number information and transmitting it to the plurality of servers;
a 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 required random number information;
random number pooling means for pooling random numbers for performing secure computation based on the query received from the client;
a secure computation means for executing secure computation based on the query received from the client and transmitting an execution result to the client;
Missing random numbers for detecting shortage of random numbers in the execution of secure calculation by the secure calculation means, and replying to the client with the type and number of the shortage of random numbers as necessary random number information when there is an inquiry by the shortage random number inquiry means of the client. a detection means,
The client inquires of the server at regular intervals whether or not there is a shortage of random numbers during the execution of the secure calculation based on the query, and when there is a reply from the shortage random number detection means of the necessary random number information, the necessary random number A secure computing system, further comprising deficient random number inquiry means for sending information to said random number pool means.
前記秘匿計算手段は、前記不足乱数検知手段が秘匿計算の実行において不足する乱数を検知した場合には、当該不足する乱数を前記乱数供給手段から受信するまで実行中の秘匿計算を一時的に中断する機能を有する、請求項1に記載の秘匿計算システム。 When the deficient random number detection means detects a shortage of random numbers during the execution of the secure computation, the secure computation means temporarily interrupts the secure computation being executed until the shortage of random numbers is received from the random number supply means. 2. The secure computing system according to claim 1, having a function of 秘匿計算を実行する複数のサーバーと、前記複数のサーバーに秘匿計算に必要な乱数を供給するクライアントとを有し、前記サーバーが前記クライアントから供給された乱数を用いて前記秘匿計算を行う、秘匿計算システムであって、
前記サーバーは、秘匿計算に使用する乱数が不足しているかを繰り返し検知し、秘匿計算に必要となる乱数が不足する場合に、不足する乱数の種類および数の情報を含む乱数の要求情報を前記クライアントに送信し、
前記クライアントは、前記要求情報を受信した場合に、前記要求情報に基づく種類および数の乱数を前記サーバーに送信する、秘匿計算システム。
and a client that supplies random numbers necessary for the secure calculation to the plurality of servers, wherein the server performs the secure calculation using the random numbers supplied from the client. A computing system,
The server repeatedly detects whether or not the random numbers used for the secure calculation are insufficient, and when the random numbers required for the secure calculation are insufficient, the random number request information including the type and number of the missing random numbers is sent to the server. send to the client,
The secure computing system, wherein the client transmits a type and number of random numbers based on the request information to the server when the request information is received.
秘匿計算を実行するために必要な乱数を供給するクライアントと通信可能に構成された秘匿計算を実行するためのサーバーであって、
前記クライアントは、ユーザが入力したデータのクエリーを複数のサーバーの少なくとも1つに送信するクエリー入力手段と、
受信した必要乱数情報に基づいて乱数を生成し、前記複数のサーバーに送信する乱数供給手段と、を備え、
前記サーバーは、前記クライアントから受信した前記クエリーに基づいて秘匿計算に必要となる乱数の種類および数を見積もり、見積もった乱数の種類および数を必要乱数情報として前記クライアントに送信する乱数見積手段と、
前記クライアントから受信した前記クエリーに基づく秘匿計算を実行するための乱数をプールする乱数プール手段と、
前記クライアントから受信した前記クエリーに基づく秘匿計算を実行し、実行結果を前記クライアントに送信する秘匿計算手段と、
前記秘匿計算手段による秘匿計算の実行において不足する乱数を検知し、前記クライアントの不足乱数照会手段による照会があった際に不足する乱数の種類および数を必要乱数情報として前記クライアントに回答する不足乱数検知手段と、を備えるサーバー。
A server for performing secure computation configured to communicate with a client that supplies random numbers necessary for performing secure computation,
the client includes query input means for sending a query of data entered by a user to at least one of a plurality of servers;
random number supply means for generating a random number based on the received required random number information and transmitting it to the plurality of servers;
a 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 required random number information;
random number pooling means for pooling random numbers for performing secure computation based on the query received from the client;
a secure computation means for executing secure computation based on the query received from the client and transmitting an execution result to the client;
Missing random numbers for detecting shortage of random numbers in the execution of secure calculation by the secure calculation means, and replying to the client with the type and number of the shortage of random numbers as necessary random number information when there is an inquiry by the shortage random number inquiry means of the client. a server comprising a detection means;
秘匿計算を実行するための複数のサーバーと通信可能に構成された情報処理装置であって、
ユーザが入力したデータのクエリーを前記複数のサーバーの少なくとも1つに送信するクエリー入力手段と、
受信した必要乱数情報に基づいて乱数を生成し、前記複数のサーバーに送信する乱数供給手段と、を備え、
前記サーバーは、前記情報処理装置から受信した前記クエリーに基づいて秘匿計算に必要となる乱数の種類および数を見積もり、見積もった乱数の種類および数を必要乱数情報として前記情報処理装置に送信する乱数見積手段と、
前記情報処理装置から受信した前記クエリーに基づく秘匿計算を実行するための乱数をプールする乱数プール手段と、
前記情報処理装置から受信した前記クエリーに基づく秘匿計算を実行し、実行結果を前記情報処理装置に送信する秘匿計算手段と、
前記秘匿計算手段による秘匿計算の実行において不足する乱数を検知し、前記情報処理装置の不足乱数照会手段による照会があった際に不足する乱数の種類および数を必要乱数情報として回答する不足乱数検知手段と、を備え、
さらに、前記サーバーに前記クエリーに基づく秘匿計算の実行時に不足する乱数の有無を一定間隔で照会し、前記不足乱数検知手段から前記必要乱数情報の回答があった場合には、当該必要乱数情報を前記乱数プール手段に送信する不足乱数照会手段を備える、情報処理装置。
An information processing device configured to communicate with a plurality of servers for performing secure computation,
query input means for sending a query of user-input data to at least one of the plurality of servers;
random number supply means for generating a random number based on the received required random number information and transmitting it to the plurality of servers;
The server estimates the type and number of random numbers required for confidential 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 required random number information. means of estimating;
random number pooling means for pooling random numbers for executing secure calculation based on the query received from the information processing device;
a secure computation means for executing secure computation based on the query received from the information processing device and transmitting an execution result to the information processing device;
Insufficient random number detection for detecting a shortage of random numbers in the execution of secure calculation by the secure calculation means, and responding with the type and number of the shortage of random numbers as required random number information when an inquiry is made by the shortage random number inquiry means of the information processing device. comprising means and
Further, the server is queried at regular intervals for the presence or absence of insufficient random numbers when executing confidential calculation based on the query, and when the necessary random number information is answered from the insufficient random number detection means, the necessary random number information is sent. An information processing apparatus comprising insufficient 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 a plurality of servers for executing secure computation,
query input means for sending a query of user-input data to at least one of the plurality of servers;
A computer program for functioning as random number supply means for generating a random number based on the received required random number information and transmitting it to the plurality of servers,
The server estimates the type and number of random numbers required for confidential 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 required random number information. means of estimating;
random number pooling means for pooling random numbers for executing secure calculation based on the query received from the information processing device;
a secure computation means for executing secure computation based on the query received from the information processing device and transmitting an execution result to the information processing device;
Insufficient random number detection for detecting a shortage of random numbers in the execution of secure calculation by the secure calculation means, and responding with the type and number of the shortage of random numbers as required random number information when an inquiry is made by the shortage random number inquiry means of the information processing device. comprising means and
Further, the processor inquires at regular intervals whether or not there is a shortage of random numbers at the time of execution of the secure calculation based on the query to the server, and when there is a reply from the shortage random number detection means of the necessary random number information, A computer program functioning as insufficient random number inquiry means for transmitting necessary random number information to the random number pool means.
秘匿計算を実行する複数のサーバーと、前記複数のサーバーに秘匿計算を実行するために必要な乱数を供給するクライアントと、を用いた秘匿計算方法であって、
前記クライアントが、ユーザが入力したデータのクエリーを前記複数のサーバーの少なくとも1つに送信することと、
前記サーバーが、前記クライアントから受信した前記クエリーに基づいて秘匿計算に必要となる乱数の種類および数を見積もり、見積もった乱数の種類および数を必要乱数情報として前記クライアントに送信することと、
前記クライアントが、受信した必要乱数情報に基づいて乱数を生成して前記複数のサーバーに送信することと、
前記クライアントから受信した前記クエリーに基づく秘匿計算を実行するための乱数をプールすることと、
前記サーバーが、前記クライアントから受信した前記クエリーに基づく秘匿計算を実行し、実行結果を前記クライアントに送信することと、を含み、
前記サーバーが、前記秘匿計算の実行において不足する乱数を検知すると、前記クライアントからの照会があった際に不足する乱数の種類および数を必要乱数情報として回答することと、
前記クライアントが、前記サーバーに前記クエリーに基づく秘匿計算の実行時に不足する乱数の有無を一定間隔で照会し、前記サーバーから前記必要乱数情報の回答があった場合には、当該必要乱数情報に基づいて不足する乱数を生成して前記複数のサーバーに送信することと、をさらに含む、秘匿計算方法。
A secure computation method using a plurality of servers that perform secure computation and a client that supplies random numbers necessary for performing secure computation to the plurality of servers,
the client sending a query for user-entered data to at least one of the plurality of servers;
the server 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 required random number information;
the client generating a random number based on the received required random number information and transmitting the generated random number to the plurality of servers;
pooling random numbers for performing secure computations based on the query received from the client;
said server performing a secure computation based on said query received from said client and sending a result of said execution to said client;
When the server detects a shortage of random numbers in executing the secure calculation, the server responds to an inquiry from the client with the type and number of the shortage of random numbers as required random number information;
The client inquires of the server at regular intervals whether or not there is a shortage of random numbers during the execution of the confidential calculation based on the query, and if the server replies with the necessary random number information, the necessary random number information is used generating and transmitting to the plurality of servers a random number lacking in the
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 true JP7171113B1 (en) 2022-11-15
JP2024033698A 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)

Cited By (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 (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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

Family Cites Families (2)

* 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

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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年 暗号と情報セキュリティシンポジウム予稿集,2021年01月,pp.1-8

Cited By (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

Also Published As

Publication number Publication date
JP2024033698A (en) 2024-03-13

Similar Documents

Publication Publication Date Title
CN111512589B (en) Method for fast secure multiparty inner product with SPDZ
CN110572253B (en) Method and system for enhancing privacy of federated learning training data
KR102354456B1 (en) Post-quantum asymmetric key cryptosystem with one-to-many distributed key management based on prime modulo double encapsulation
Borisov et al. DP5: A private presence service
RU2534944C2 (en) Method for secure communication in network, communication device, network and computer programme therefor
JP6559774B2 (en) Cryptographic system provided for key sharing
CN104168265B (en) A kind of anonymous communication method based on distributed hashtable network
Emura et al. Generic constructions of secure‐channel free searchable encryption with adaptive security
Baharon et al. A new lightweight homomorphic encryption scheme for mobile cloud computing
JP6770075B2 (en) Encrypted message search method, message sending / receiving system, terminal, program
CN106453318A (en) Data transmission system and method based on security module
US11128452B2 (en) Encrypted data sharing with a hierarchical key structure
CN104158880A (en) User-end cloud data sharing solution
JP7171113B1 (en) SECURE COMPUTING SYSTEM, SERVER, INFORMATION PROCESSING DEVICE, COMPUTER PROGRAM AND SECURE COMPUTING METHOD
Kamara et al. Parallel homomorphic encryption
Mandal et al. A cryptosystem based on vigenere cipher by using mulitlevel encryption scheme
Abusukhon et al. Efficient and secure key exchange protocol based on elliptic curve and security models
JP6879311B2 (en) Message transmission system, communication terminal, server device, message transmission method, and program
CN110690967B (en) Instant communication key establishment method independent of server security
Bai et al. NttpFL: Privacy-preserving oriented no trusted third party federated learning system based on blockchain
López‐Ramos et al. An application of group theory in confidential network communications
Pareek et al. Provably secure group key management scheme based on proxy re-encryption with constant public bulletin size and key derivation time
CN108768994A (en) Data matching method, device and computer readable storage medium
US20050157874A1 (en) Cryptography for secure dynamic group communications
CN113162760A (en) Secure data sharing calculation method and system based on semi-honest MASCOT protocol

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