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 PDFInfo
- 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
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 179
- 230000010365 information processing Effects 0.000 title claims abstract description 35
- 238000004590 computer program Methods 0.000 title claims abstract description 8
- 238000000034 method Methods 0.000 claims abstract description 90
- 238000011176 pooling Methods 0.000 claims abstract description 21
- 238000001514 detection method Methods 0.000 claims abstract description 17
- 230000002950 deficient Effects 0.000 claims 2
- 230000008569 process Effects 0.000 description 66
- 238000000547 structure data Methods 0.000 description 32
- 238000001914 filtration Methods 0.000 description 26
- 238000012545 processing Methods 0.000 description 20
- 238000011156 evaluation Methods 0.000 description 19
- 230000002596 correlated effect Effects 0.000 description 16
- 238000013075 data extraction Methods 0.000 description 15
- 238000004891 communication Methods 0.000 description 12
- 230000000875 corresponding effect Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 230000004044 response Effects 0.000 description 9
- 238000004422 calculation algorithm Methods 0.000 description 5
- 238000000605 extraction Methods 0.000 description 4
- 239000012634 fragment Substances 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008707 rearrangement Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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
In addition, in Non-Patent
秘匿計算においては、加算や減算では乱数は不要であるが、乗算や除算に加えて、数値の大小比較、テーブル構造データのから所定の条件に合うデータを抽出するフィルタリング計算、テーブル構造データの並び替えなどを行う場合などに乱数が用いられる。しかしながら、テーブル構造データについて秘匿計算を行う場合には、テーブル構造データの行数に応じた数の乱数が必要となり、秘匿計算の途中で計算対象とする行数が変化する場合には、乱数の見積もりを予め行えない場合がある。たとえば、テーブル構造データにおいて、一定の条件に合致する行データを抽出(フィルタリング)した後に、抽出したデータを並び替える場合には、並び替え時に、抽出した行データの数に応じた乱数が必要となるところ、行データの抽出が完了するまでは、抽出後の行データの数が確定しないため必要な乱数の数を見積もることができない。このように、必要とする乱数を予め見積もれない場合があり、秘匿計算の途中で乱数が不足してしまうおそれがあった。そして、乱数が不足してしまうと、今まで行われていた秘匿計算が中断され、演算結果を得ることができない場合もあった。 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は、本実施形態に係る秘匿計算システム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
本実施形態では、サーバー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
また、本実施形態では、クライアント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
クライアント10は、ユーザが操作するパソコンなどの情報端末装置であり、演算装置、記憶装置、および通信装置を有する。本実施形態では、ユーザの操作により、クライアント10からサーバー30,40に秘匿計算の指示が送信され、これにより、サーバー30,40で秘匿計算が行われる。また、本実施形態に係る秘匿計算システム1において、クライアント10は、秘匿計算の指示を送信し、サーバー30,40で秘匿計算が開始されると、定期的に乱数の供給に関する問い合わせをサーバー30,40に対して行い、乱数が必要である場合には、秘匿計算で使用される乱数を生成し、生成した乱数をサーバー30,40に供給する機能も有する。なお、クライアント10からサーバー30,40への乱数供給方法の詳細については後述する。
The
ゲートウェイ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の既存システムへの汎用性は高いと言える。
Such a function of the
サーバー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
さらに、サーバー30,40は、秘匿演算で必要となる乱数を見積るためのプログラムを記憶部に記憶しており、当該乱数見積プログラムを実行することで、秘匿計算に必要な乱数を予め見積もることができる。具体的には、サーバー30,40は、クライアント10から実行する秘匿計算の計算情報を取得し、乱数見積プログラムを実行することで、クライアント10から取得した計算情報にある秘匿計算を行う場合の乱数を見積もる。計算情報は、サーバー30,40で実行される秘匿計算を示す情報であれば特に限定されないが、本実施形態では、クライアント10から出力されるクエリー情報(たとえばwhere句を有するselect構文など)が計算情報として、クライアント10から送信され、サーバー30,40により取得される。なお、当該乱数見積プログラムで見積可能な乱数は、計算対象となるテーブル構造データの行数が変化する前の計算で使用される乱数であり、行数が変化した後の計算で使用される乱数までは見積もることができない。たとえば、秘匿乗算ではテーブル構造データの行数は変化しないため、2回の秘匿乗算を行う場合も、これらの計算で使用される乱数を見積もることができるが、行数が変化するフィルタリング計算(where句)を行った後に秘匿乗算を行う計算では、フィルタリング後の秘匿乗算で使用する乱数までは見積もることができない。
Furthermore, the
以下においては、まず、図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
(秘匿乗算処理)
秘匿乗算処理は、2入力1出力の整数乗算において、入出力に関する情報を一切知ることなく、その演算結果を得ることができる処理である。具体的には、2つの暗号化データを入力とし、それらを一切復号することなく後述する所定の演算(所定の秘匿乗算アリゴリズム)を実施し、乗算結果を暗号化データとして得る演算処理である。秘匿乗算処理では、図5に示すように、サーバー30,40に、平文データx,yを秘密分散したシェア[[x]]1,[[x]]2,[[y]]1,[[y]]2がそれぞれ記憶されている。図3ないし図5に示す秘匿乗算処理では、サーバー30,40により、x,yのシェアをそのまま用いて、x×y=zの乗算を行い、計算結果であるzのシェア[[z]]1,[[z]]2を得る場面を例示して説明する。なお、以下においては、第1サーバー30に記憶されているxのシェアを[[x]]1、yのシェアを[[y]]1とする。同様に、第2サーバー40に記憶されているxのシェアを[[x]]2、yのシェアを[[y]]2とする。さらに、第1サーバー30に記憶されるzのシェアを[[z]]1とし、第2サーバー40に記憶されるzのシェアを[[z]]2とする。なお、平文データと、秘密分散されたシェアとは、以下のような関係を有している。たとえば、平文データxと、そのシェアである[[x]]1,[[x]]2は、x=[[x]]1+[[x]]2の関係にあり、[[x]]1=rおよび[[x]]2=x-rの関係にある。ここで、xとrは2lの剰余環で表現される整数であり、rは一様乱数となる。lは演算対象の値域を表すビット数であり、1ビット整数の演算の場合はl=1、32ビット整数の演算の場合はl=32となる。平文データとシェアとがこのような関係にあるため、[[x]]1+[[x]]2により平文データ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
秘匿乗算処理では、クライアント10により生成された3つの乱数a,b,cを用いて計算が行われる。なお、これら3つの乱数はc=a×bの関係にある相関乱数である。クライアント10は、乱数aを秘密分散して乱数シェア[[a]]1,[[a]]2を生成し、乱数bを秘密分散して乱数シェア[[b]]1,[[b]]2を生成し、乱数cを秘密分散して乱数シェア[[c]]1,[[c]]2を生成する。そして、クライアント10は、乱数a,b,cを秘密分散したシェア[[a]]1,[[b]]1,[[c]]1を第1サーバー30に送信し、乱数a,b,cを秘密分散したシェア[[a]]2,[[b]]2,[[c]]2を第2サーバー40へと送信する。これにより、第1サーバー30は、乱数a,b,cのシェア[[a]]1,[[b]]1,[[c]]1を用いて秘匿乗算を実行することができ、また、第2サーバー40は、乱数a,b,cのシェア[[a]]2,[[b]]2,[[c]]2を用いて秘匿乗算を実行することができる。
In the secret multiplication process, calculation is performed using three random numbers a, b, and c generated by the
まず、図3を参照して、第1サーバー30で実行される秘匿乗算処理について説明する。なお、以下においては、平文データxのシェア[[x]],[[y]]を一次シェア、一次シェア[[x]],[[y]]に基づいて算出されたシェア[[x’]],[[y’]]を二次シェアと称す。まず、ステップS101では、第1サーバー30により、平文データxの一次シェア[[x]]1から乱数aのシェア[[a]]1を引いた数が、二次シェア[[x’]]1として算出される。また、ステップS102では、第1サーバー30により、平文データyの一次シェア[[y]]1から乱数bのシェア[[b]]1を引いた数が、二次シェア[[y’]]1として算出される。
First, with reference to FIG. 3, the confidential multiplication process executed by the
また、ステップS103およびS104では、図5に示すように、サーバー30,40間の相互通信により、一方のサーバー30,40で行われた計算結果を他方のサーバー30,40と送受信する処理が行われる。具体的には、ステップS103では、第1サーバー30により、ステップS101で算出した二次シェア[[x’]]1と、ステップS102で算出した二次シェア[[y’]]1とが、第2サーバー40へと送信される。また、ステップS104では、第1サーバー30により、第2サーバー40で生成された二次シェア[[x’]]2および二次シェア[[y’]]2が受信される。なお、二次シェア[[x’]]2は、第2サーバー40において、平文データxの一次シェア[[x]]2から乱数aのシェア[[a]]2を引いて求めた数である。また、二次シェア[[y’]]2は、第2サーバー40において算出された、平文データyの一次シェア[[y]]2から乱数bのシェア[[b]]2を引いて求めた数である。二次シェア[[x’]]2および二次シェア[[y’]]2の算出方法については、後述する図4に示す、第2サーバー40で実行される秘匿乗算処理でも説明する。
Further, in steps S103 and S104, as shown in FIG. 5, mutual communication between the
続いて、ステップS105では、第1サーバー30により、ステップS101で算出した二次シェア[[x’]]1と、ステップS104で取得した二次シェア[[x’]]2とが加算され、データx’が算出される。また、ステップS106では、第1サーバー30により、ステップS102で算出した二次シェア[[y’]]1と、ステップS104で取得した二次シェア[[y’]]2とが加算され、データy’が算出される。なお、データx’およびデータy’は、平文データxおよび平文データyを乱数aおよび乱数bを用いて暗号化したデータであり、それ単独で意味をなさないデータとなる。
Subsequently, in step S105, the
ステップS107では、第1サーバー30により、ステップS105で算出したデータx’、ステップS106で算出したデータy’、クライアント10から受信した乱数a,b,cのシェア[[a]]1,[[b]]1,[[c]]1を用いて、x×yの計算結果であるzのシェア[[z]]1が算出される。具体的には、第1サーバー30は、x’×y’+x’× [[b]]1+y’× [[a]]1+[[c]]1の計算結果を、シェア[[z]]1として算出することができる。そして、第1サーバー30は、算出したシェア[[z]]1を、データベースに記憶し、あるいは、クライアント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
また、図4は、第2サーバー40で実行される秘匿乗算処理を示すフローチャートである。図4に示すように、まず、ステップS201では、第2サーバー40により、平文データxの一次シェア[[x]]2から乱数aのシェア[[a]]2を引いた数が二次シェア[[x’]]2として算出される。また、ステップS202では、第2サーバー40により、平文データyの一次シェア[[y]]2から乱数bのシェア[[b]]2を引いた数が、二次シェア[[y’]]2として算出される。
FIG. 4 is a flow chart showing the confidential multiplication process executed by the
ステップS203およびS204では、図3のステップS103,S104と同様に、サーバー30,40間の相互通信により、一方のサーバー30,40で行われた計算結果を他方のサーバー30,40に送受信する処理が行われる。すなわち、ステップS203では、第2サーバー40により、ステップS201で算出した二次シェア[[x’]]2と、ステップS202で算出した二次シェア[[y’]]2とが、第1サーバー30へと送信される。なお、上述したように、図3のステップS104で第1サーバー30が受信する二次シェア[[x’]]2および二次シェア[[y’]]2は、このステップS203で第2サーバー40から送信される二次シェア[[x’]]2および二次シェア[[y’]]2である。また、ステップS204では、第2サーバー40により、第1サーバー30で生成された二次シェア[[x’]]1および二次シェア[[y’]]1が受信される。なお、二次シェア[[x’]]1および二次シェア[[y’]]1は、上述した図3のステップS103において第1サーバー30により送信された二次シェア[[x’]]1および二次シェア[[y’]]1である。
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
そして、ステップS205では、第2サーバー40により、ステップS201で算出した二次シェア[[x’]]2と、ステップS204で取得した二次シェア[[x’]]1とを加算して、データx’が復号される。また、ステップS206では、第2サーバー40により、ステップS202で算出した二次シェア[[y’]]2と、ステップS204で取得した二次シェア[[y’]]1とを加算して、データ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
ステップS207では、第2サーバー40により、ステップS205で算出したデータx’、ステップS206で算出したデータy’、クライアント10から受信した乱数a,b,cのシェア[[a]]2,[[b]]2,[[c]]2を用いて、乗算x×yの計算結果であるデータzのシェア[[z]]2が算出される。具体的には、第2サーバー40は、x’×[[b]]2+y’×[[a]]2+ [[c]]2の計算結果をシェア[[z]]2として算出する。そして、第2サーバー40は、算出したシェア[[z]]2を、データベースに記憶し、あるいは、クライアント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
これにより、第1サーバー30には、平文データxとyとを乗算した計算結果であるzのシェア[[z]]1が記憶され、第2サーバー40には、zのシェア[[z]]2が記憶される。また、クライアント10は、第1サーバー30からシェア[[z]]1を取得し、第2サーバー40からシェア[[z]]2を取得して、シェア[[z]]1とシェア[[z]]2とを加算することで、平文データxとyとを乗算した結果の平文データzを算出することができる。
As a result, the
このように、1回の秘匿乗算では、3つの相関乱数a,b,cのシェア[[a]]1,[[b]]1,[[c]]1,[[a]]2,[[b]]2,[[c]]2が必要とされる。また、データが複数の行(行数n)を有するテーブル構造データである場合に、各行のデータを秘匿乗算する場合には、3つの相関乱数a,b,cのシェア[[a]]1,[[b]]1,[[c]]1,[[a]]2,[[b]]2,[[c]]2が行数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
(秘匿データ抽出処理)
次に、図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
図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
図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
ステップS302では、サーバー30,40により、ステップS301で得たフィルタリング条件評価の評価結果のシェア[[f]]にランダム置換Πを適用した[[Π(f)]]P(要素数は行数n)が生成される。ここで、ステップS301のフィルタリング条件評価では、テーブル構造データの行ごとに、x<yである場合には1を秘密分散した数値がシェア[[f(i)]]として出力され、x<yでない場合には0を秘密分散した数値がシェア[[f(i)]]として出力される。このように、各行におけるx<yの評価に応じて出力された0または1のシェア[[f]]を、さらにランダム置換したものが[[Π(f)]]Pとなる。なお、上記iはテーブル構造データのi行目のデータであることを示す。また、[[Π(f)]]Pは、テーブル構造データの全ての行の評価結果である1または0のシェア[[f(i)]]をランダム置換したものであり、要素数はテーブル構造データの行数nとなる。このように、[[Π(f)]]Pでは、評価結果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,
なお、図6に示す秘匿データ抽出計算処理は、第1サーバー30および第2サーバー40でそれぞれ実行されるため、図6において、自サーバーで算出したシェアを「P」を用いて示し、相手サーバーで算出したシェアを「Q」を用いて示す(以下においても同様。)。たとえば、フィルタリング条件評価の評価結果は、第1サーバー30が保持する評価結果にランダム置換を適用したシェア[[Π(f)]]1と、第2サーバー40が保持する評価結果にランダム置換を適用したシェア[[Π(f)]]2とに秘密分散されるが、第1サーバー30が図6に示す秘匿データ抽出処理を行う場合には、評価結果にランダム置換を適用したシェア[[Π(f)]]Pは、第1サーバー30が保持する評価結果にランダム置換を適用したシェア[[Π(f)]]1を示すものとなり、第2サーバー40が図6に示す秘匿データ抽出処理を行う場合には、評価結果にランダム置換を適用したシェア[[Π(f)]]Pは、第2サーバー40が保持する評価結果にランダム置換を適用したシェア[[Π(f)]]2を示すものとなる。
6 are executed by the
ステップS303では、サーバー30,40により、抽出対象データであるX列データxのシェア[[x]]にランダム置換Πを適用し、シェア[[Π(x)]]Pが生成される。なお、ステップS303で用いられるX列データxは、テーブル構造データの全行のX列データx(要素数がテーブル構造データの行数nであるデータ)であり、行数nのX列データxのシェア[[x]]をランダム置換したシェア[[Π(x)]]Pも、何行目のデータが元のテーブル構造データの何行目のデータに相当するか不明となり、要素数はテーブル構造データの行数nとなる。X列データxのシェア[[x]]のランダム置換は、ステップS302と同様の方法で実行することができる。
In step S303, the
ステップS304,S305では、図7に示すように、サーバー30,40間の相互通信により、一方のサーバー30,40で行われた計算結果を他方のサーバー30,40に送受信する処理が行われる。すなわち、ステップS304では、サーバー30,40により、ステップS302で生成された評価結果にランダム置換を適用したシェア[[Π(f)]]Pが、相手側サーバーに出力される。また、ステップS305では、サーバー30,40により、相手側サーバーで生成された評価結果にランダム置換を適用したシェア[[Π(f)]]Qが受信される。そして、ステップS306では、サーバー30,40により、リスト[[L]]Pの準備が行われる。リスト[[L]]Pは、テーブル構造データのうちx<yの条件を満たす行のX列データxのシェアを挿入するためのリストであり、ステップS306の時点では空となっている。
In steps S304 and S305, as shown in FIG. 7, mutual communication between the
ステップ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)]]P(要素数は行数n)のm個目の要素となるシェア[[Π(f)[m]]]Pと、ステップS305で受信した評価結果にランダム置換を適用したシェア[[Π(f)]]Q(要素数は行数n)のm個目の要素となるシェア[[Π(f)[m]]]Qに基づいて、m行目のデータの評価結果の復号が行われる。なお、mはランダム置換後のシェア[[Π(f)]のm行目(行番号m)のデータであることを意味し、元のテーブル構造データの行番号(i行目)の数とは相違する。本実施形態では、ステップS301のフィルタリング条件評価において、x<yを満たすm行目の行データについては、復号結果が1となるように評価結果のシェア[[Π(f)[m]]]Pおよび[[Π(f)[m]]]Qが生成されており、x<yを満たさないm行目の行データについては、復号結果が0となるように評価結果のシェア[[Π(f)[m]]]Pおよび[[Π(f)[m]]]Pが生成されている。よって、ステップS307では、x<yを満たす行データについては復号結果が1として算出され、x<yを満たさない行データについては復号結果が0として算出される。
Specifically, in step S307, the
ステップ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
ステップS309では、対象となる行データにおいて、フィルタリング条件であるx<yに適合しているため、サーバー30,40により、ステップS303で生成されたシャッフル後のm行目の行データにおけるX列データxのシェア[[Π(x)[m]]]Pが、ステップS306で生成したリスト[[L]] Pに挿入される。すなわち、本実施形態では、フィルタリング条件に適合した行のX列データxのシェア[[Π(x)[m]]]Pのみがリスト[[L]] Pに代入され、フィルタリング条件に適合していない行のX列データxのシェア[[Π(x)[m]]]Pはリスト[[L]] Pから排除されることとなる。
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
ステップS310では、サーバー30,40により、テーブル構造データの全ての行について、ステップS307~S309の処理を実行したか判断される。テーブル構造データの全ての行について、ステップS307~S309の処理が実行された場合には、ステップS311に進み、サーバー30,40により、秘匿データ抽出処理の計算結果として、リスト[[L]] Pが出力される。
In step S310, the
これにより、第1サーバー30および第2サーバー40は、テーブル構造データの中から、x<yを満たす行データのうちのX列データxのリストのシェア[[L]] Pを算出し、データベースに記憶することができる。また、クライアント10は、第1サーバー30からリストのシェア[[L]]1を取得し、第2サーバー40からリストのシェア[[L]]2を取得し、リストのシェア[[L]]1とシェア[[L]]2とを加算して復号することで、x<yを満たす行データのうちのX列データxのリストLを算出することができる。
As a result, the
このように、本実施形態に係る秘匿データ抽出においては、実行する計算処理に応じて乱数の種類が変わり、また、計算対象となるテーブル構造データの行数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
図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
ステップ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
ステップ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
ステップ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
次に、図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
図9に示すように、ステップS501では、第1サーバー30により、クライアント10から送信された乱数の見積要求が受信される。ステップS502では、第1サーバー30により、ステップS501で受信した見積要求をトリガーとして、乱数見積プログラムが実行される。ここで、クライアント10から送信される乱数の見積要求には、実行予定の秘匿計算の計算情報が含まれており、乱数見積プログラムは、計算情報にある秘匿計算に必要とされる乱数を見積もる。なお、本実施形態において、第1サーバー30は、乱数見積プログラムを記憶部に予め記憶しており、クライアント10の乱数見積要求に含まれる秘匿計算の計算情報に基づいて、乱数見積プログラムを実行する。
As shown in FIG. 9, in step S501, the
ステップ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
ステップ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
また、ステップS511では、サーバー30,40により、秘匿計算が終了したか否かの判断が行われる。秘匿計算が終了していない場合は、ステップS506に戻り、ステップS506~S510の処理が繰り返される。一方、秘匿計算が終了している場合には、図9に示すサーバー側乱数供給処理を終了する。
Also, in step S511, the
次に、図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
また、秘匿計算が開始されて一定期間が経過した時刻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
また、前回の問い合わせから一定期間が経過した時刻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
さらに、前回の乱数供給から一定期間が経過した時刻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
また、時刻T12以降においても、サーバー30,40およびクライアント10は、サーバー30,40間での秘匿計算が終了するまで、乱数の問い合わせと、問い合わせに対する乱数要求情報の送信と、乱数要求情報に基づく乱数の供給を繰り返し、秘匿計算が終了すると、乱数供給処理を終了する。
After time T12, the
以上のように、本実施形態に係る秘匿計算システム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
以上、本発明の好ましい実施形態例について説明したが、本発明の技術的範囲は上記実施形態の記載に限定されるものではない。上記実施形態例には様々な変更・改良を加えることが可能であり、そのような変更または改良を加えた形態のものも本発明の技術的範囲に含まれる。 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
また、上述した実施形態では、図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
加えて、上述した実施形態では、乱数を使用する秘匿計算として、乗算、除算、大小比較、テーブル構造データのフィルタリングおよび並び替えを例示して説明したが、乱数を使用する秘匿計算はこれに限定されない。たとえば、乗算や除算、大小比較のように、行数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
さらに、上述した実施形態では、クライアント10から乱数の問い合わせを行った場合、第1サーバー30は、現在不足している乱数の情報を乱数要求情報としてクライアント10に返信するが、この構成に限定されず、将来不足する予定の乱数も含めて、クライアント10に乱数要求情報として送信する構成とすることができる。たとえば、第1サーバー30は、クライアント10から乱数の問い合わせ(ステップS407)があった場合も、乱数見積プログラムを実行することで、現在不足している乱数だけではなく、現時点で見積もり可能な乱数を見積り、乱数要求情報として送信することができる。特に、クライアント10により乱数が生成されている間、第1サーバー30において乱数が不足している場合は、クライアント10から乱数が供給されるまで、第1サーバー30での秘匿計算は停止した状態となるため、将来不足する乱数も特定し要求することで、秘匿計算を早めることが可能となる。ただし、この場合も、フィルタリングなどで行数が変化してしまう場合には、行数変化後に必要な乱数までは見積もることはできない。
Furthermore, in the above-described embodiment, when the
また、上述した実施形態では、乱数として、「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
1…秘匿計算システム
10…クライアント
20…ゲートウェイ
30…第1サーバー
40…第2サーバー
2…インターネット
DESCRIPTION OF
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.
前記サーバーは、秘匿計算に使用する乱数が不足しているかを繰り返し検知し、秘匿計算に必要となる乱数が不足する場合に、不足する乱数の種類および数の情報を含む乱数の要求情報を前記クライアントに送信し、
前記クライアントは、前記要求情報を受信した場合に、前記要求情報に基づく種類および数の乱数を前記サーバーに送信する、秘匿計算システム。 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
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)
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)
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)
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 |
-
2022
- 2022-08-31 JP JP2022137457A patent/JP7171113B1/en active Active
Patent Citations (5)
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)
Title |
---|
石田祐介 他,秘匿計算における乱数生成サーバーの設計と実装,2021年 暗号と情報セキュリティシンポジウム予稿集,2021年01月,pp.1-8 |
Cited By (1)
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 |