JP2020177223A - Computing device, computing system, and computing method - Google Patents

Computing device, computing system, and computing method Download PDF

Info

Publication number
JP2020177223A
JP2020177223A JP2020026497A JP2020026497A JP2020177223A JP 2020177223 A JP2020177223 A JP 2020177223A JP 2020026497 A JP2020026497 A JP 2020026497A JP 2020026497 A JP2020026497 A JP 2020026497A JP 2020177223 A JP2020177223 A JP 2020177223A
Authority
JP
Japan
Prior art keywords
key
unit
arithmetic
client device
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2020026497A
Other languages
Japanese (ja)
Other versions
JP7017800B2 (en
Inventor
優佑 星月
Yusuke Hoshizuki
優佑 星月
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.)
Axell Corp
Original Assignee
Axell Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Axell Corp filed Critical Axell Corp
Priority to US16/832,628 priority Critical patent/US11611430B2/en
Publication of JP2020177223A publication Critical patent/JP2020177223A/en
Application granted granted Critical
Publication of JP7017800B2 publication Critical patent/JP7017800B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

To prevent the leakage of data and enable a wide range of process to be executed.SOLUTION: Provided is a computing system comprising a client device, and a computing device 30 connected via a bus to a server which is connected via a network. The client device encrypts the data to be processed with an encryption key, transmits it to the server, and decrypts, with a decryption key, the encrypted data of computation result which is transmitted from the server. The computing device 30 includes a key sharing unit 33 for sharing the encryption and decryption keys with the client device confidentially to the outside, a decryption unit 31 for acquiring data based on the data transmitted from the client device and encrypted with the encryption key and decrypting the acquired data with the decryption key, a computation execution unit 32 for executing a prescribed computation on the decrypted data, and an encryption unit 34 for encrypting the data of computation result with the encryption key and outputting the encrypted data of computation result to the server.SELECTED DRAWING: Figure 4

Description

本発明は、データの漏洩を防止でき、広範な処理を実行可能にする技術に関する。 The present invention relates to a technique that can prevent data leakage and enable a wide range of processing.

従来、負荷が大きい処理をサーバで実行させて、その処理結果をクライアント装置で利用するサーバ・クライアントモデルが知られている。 Conventionally, there is known a server / client model in which a server executes a process having a heavy load and uses the process result in a client device.

このサーバ・クライアントモデルを用いると、処理対象のデータをクライアント装置からサーバに送信することになるため、データに含まれる個人情報等の機密性の高いデータが漏洩してしまうことがある。 When this server / client model is used, the data to be processed is transmitted from the client device to the server, so that highly confidential data such as personal information contained in the data may be leaked.

このような問題に対処するために、データを暗号化したまま演算を行う秘匿演算方法を使用することが考えられる。秘匿演算方法としては、大きく分けると、準同型暗号を用いる方法と、MPC(Multi−Party−Computation)を用いる方法とがある。 In order to deal with such a problem, it is conceivable to use a secret calculation method in which the calculation is performed while the data is encrypted. The confidential operation method can be roughly divided into a method using homomorphic encryption and a method using MPC (Multi-Party-Computation).

まず、準同型暗号を用いる方法について説明する。 First, a method using homomorphic encryption will be described.

準同型暗号とは、平文と或る演算に対して、準同型な関係にある暗号文と演算との組が存在する暗号方式である。準同型暗号を厳密に表すと、平文a,bとその二変数関数F(a,b)に対して、暗号化関数をEncとすると、暗号文c1=Enc(a)、暗号文c2=Enc(b)が存在し、Enc(F(a,b))=G(c1,c2)となる関数Gが存在する暗号方式である。 Homomorphic encryption is a cryptosystem in which a set of a ciphertext and an operation having a homomorphic relationship with a plaintext and a certain operation exists. Strictly speaking, homomorphic encryption is defined as plaintext a, b and its bivariate function F (a, b), where ciphertext c1 = Enc (a) and ciphertext c2 = Enc, where the encryption function is Enc. This is a ciphertext in which (b) exists and a function G such that Enc (F (a, b)) = G (c1, c2) exists.

準同型暗号にはいくつか種類があり、F(a,b)=a+bである場合を加法準同型暗号(AHE)と呼ぶ。なお、実際には、F(a,b)=a+b mod nである場合も、扱う平文が十分小さければ実質a+bとみなせるので、加法準同型暗号と呼ばれる。 There are several types of homomorphic encryption, and the case where F (a, b) = a + b is called additive homomorphic encryption (AHE). Actually, even when F (a, b) = a + b mod n, it can be regarded as a real a + b if the plaintext to be handled is sufficiently small, so that it is called an additive homomorphic encryption.

また、F(a,b)=a×bである場合を乗法準同型暗号(MHE)と呼ぶ。なお、実際には、F(a,b)=a×b mod nである場合も、扱う平文が十分小さければ実質a×bとみなせるので、乗法準同型暗号と呼ばれる。 Further, the case where F (a, b) = a × b is called a multiplication homomorphic encryption (MHE). Actually, even when F (a, b) = a × b mod n, it can be regarded as a real a × b if the plaintext to be handled is sufficiently small, so that it is called a multiplication homomorphic encryption.

また、加法と乗法の両方の演算が扱える場合を、完全準同型暗号(FHE)と呼ばれる。この完全準同型暗号は、計算量や鍵長などの点から実用的ではないと現在みなされている。 Further, the case where both addition and multiplication operations can be handled is called fully homomorphic encryption (FHE). This fully homomorphic encryption is currently considered impractical in terms of complexity and key length.

また、演算回数に上限を設けることで、加法と乗法の両方が行え、かつある程度実用的なものとして、Somewhat準同型暗号(SHE)が存在する。 In addition, Somehat homomorphic encryption (SHE) exists as a practical one that can perform both addition and multiplication by setting an upper limit on the number of operations.

例えば、特許文献1には、準同型暗号を用いてデータを暗号化したまま推論を行う技術が開示されている。 For example, Patent Document 1 discloses a technique for performing inference while encrypting data using homomorphic encryption.

一方、MPCとは、複数のコンピュータを用いて通信を行いながら、暗号化されたデータを演算するシステムであり、準同型暗号と比べて多種類の演算を行うことのできるシステムが提案されている。 On the other hand, MPC is a system that calculates encrypted data while communicating using a plurality of computers, and a system that can perform many types of calculations compared to homomorphic encryption has been proposed. ..

特許第6391900号明細書Patent No. 6391900

上記した加法準同型暗号及び乗法準同型暗号を用いた場合には、暗号化したまま行える演算に制約があるという問題点がある。また、完全準同型暗号を用いた場合には、計算量、鍵長が莫大なものであるという問題がある。また、Somewhat準同型暗号を用いた場合には、演算回数に上限があるという問題がある。 When the above-mentioned additive homomorphic encryption and multiplication homomorphic encryption are used, there is a problem that there are restrictions on the operations that can be performed while being encrypted. Further, when the fully homomorphic encryption is used, there is a problem that the amount of calculation and the key length are enormous. Further, when Somehat homomorphic encryption is used, there is a problem that the number of operations is limited.

一方、MPCを用いた場合には、一般的にコンピュータ間の通信速度によって処理性能が制約される問題がある。また、MPCにおいては、複数のコンピュータが結託して悪意を持つことが無いという前提条件を満たす必要があり、現実的な問題として、この前提条件を満たすことが難しいという問題がある。例えば、複数のコンピュータが同時に悪意の有る演算を行えば、暗号を解読することができてしまうので、データが漏洩してしまうことがある。 On the other hand, when MPC is used, there is a problem that the processing performance is generally restricted by the communication speed between computers. Further, in MPC, it is necessary to satisfy the precondition that a plurality of computers do not collude and have malicious intent, and as a practical problem, there is a problem that it is difficult to satisfy this precondition. For example, if a plurality of computers perform malicious operations at the same time, the encryption can be broken, so that data may be leaked.

本発明は、上記事情に鑑みなされたものであり、その目的は、データの漏洩を防止でき、且つ広範な処理を実行することのできる技術を提供することにある。 The present invention has been made in view of the above circumstances, and an object of the present invention is to provide a technique capable of preventing data leakage and performing a wide range of processing.

上記目的を達成するため、第1の観点に係る演算装置は、クライアント装置とネットワークを介して接続される情報処理装置にバスを介して接続される。クライアント装置は、処理対象のデータを第1暗号鍵で暗号化させて、情報処理装置に送信し、情報処理装置から送信された暗号化された処理結果のデータを、第1暗号鍵に対応する第1復号鍵で復号する。そして、演算装置は、鍵共有部と、取得部と、復号部と、演算実行部と、暗号化部と、出力部とを備える。鍵共有部は、クライアント装置との間で第1暗号鍵及び第1復号鍵を外部に秘匿した状態で共有する。取得部は、クライアント装置から送信されたデータに基づく第1暗号鍵で暗号化されているデータを情報処理装置から取得する。復号部は、取得部により取得された第1暗号鍵で暗号化されているデータを第1復号鍵で復号する。演算実行部は、復号部で復号されたデータに対して所定の演算を実行する。暗号化部は、演算実行部による演算結果のデータを第1暗号鍵で暗号化する。出力部は、暗号化された演算結果のデータを情報処理装置に出力する。 In order to achieve the above object, the arithmetic unit according to the first aspect is connected to the information processing device connected to the client device via the network via the bus. The client device encrypts the data to be processed with the first encryption key and transmits it to the information processing device, and the encrypted processing result data transmitted from the information processing device corresponds to the first encryption key. Decrypt with the first decryption key. The arithmetic unit includes a key sharing unit, an acquisition unit, a decryption unit, an arithmetic execution unit, an encryption unit, and an output unit. The key sharing unit shares the first encryption key and the first decryption key with the client device in a secret state. The acquisition unit acquires the data encrypted with the first encryption key based on the data transmitted from the client device from the information processing device. The decryption unit decrypts the data encrypted by the first encryption key acquired by the acquisition unit with the first decryption key. The calculation execution unit executes a predetermined operation on the data decoded by the decoding unit. The encryption unit encrypts the data of the calculation result by the calculation execution unit with the first encryption key. The output unit outputs the encrypted calculation result data to the information processing device.

本発明によれば、データの漏洩を防止でき、且つ広範な処理を実行することができる。 According to the present invention, data leakage can be prevented and a wide range of processing can be executed.

図1は、一実施形態に係る計算機システムの全体構成図である。FIG. 1 is an overall configuration diagram of a computer system according to an embodiment. 図2は、一実施形態に係るクライアント装置の機能構成図である。FIG. 2 is a functional configuration diagram of the client device according to the embodiment. 図3は、一実施形態に係るサーバの機能構成図である。FIG. 3 is a functional configuration diagram of the server according to the embodiment. 図4は、一実施形態に係る演算装置の機能構成図であるFIG. 4 is a functional configuration diagram of the arithmetic unit according to the embodiment. 図5は、一実施形態に係るニューラルネットワークモデルの構成図である。FIG. 5 is a configuration diagram of a neural network model according to an embodiment. 図6は、一実施形態に係る計算機システムの処理動作を示すシーケンス図で ある。FIG. 6 is a sequence diagram showing the processing operation of the computer system according to the embodiment. 図7は、一実施形態に係るコンピュータ装置の構成図である。FIG. 7 is a configuration diagram of a computer device according to an embodiment. 図8は、第1変形例に係る演算装置の機能構成図である。FIG. 8 is a functional configuration diagram of the arithmetic unit according to the first modification. 図9は、第2変形例に係る計算機システムの全体構成図である。FIG. 9 is an overall configuration diagram of a computer system according to the second modification. 図10は、第2変形例に係るクライアント装置が備える鍵共有部の機能構成図である。FIG. 10 is a functional configuration diagram of a key sharing unit included in the client device according to the second modification. 図11は、第2変形例に係る演算装置が備える鍵共有部の機能構成図である。FIG. 11 is a functional configuration diagram of a key sharing unit included in the arithmetic unit according to the second modification.

実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。 The embodiment will be described with reference to the drawings. It should be noted that the embodiments described below do not limit the invention according to the claims, and all of the elements and combinations thereof described in the embodiments are indispensable for the means for solving the invention. Is not always.

まず、一実施形態に係る計算機システムについて説明する。 First, the computer system according to the embodiment will be described.

図1は、一実施形態に係る計算機システムの全体構成図である。 FIG. 1 is an overall configuration diagram of a computer system according to an embodiment.

計算機システム1は、クライアント装置10と、演算システム2とを備える。演算システム2は、サーバ20と、演算装置30とを備える。クライアント装置10と、サーバ20とは、ネットワーク40を介して接続されている。ネットワーク40は、例えば、LAN(Local Area Netowork)や、WAN(Wide Area Network)等である。サーバ20と、演算装置30とは、バス50を介して接続されている。サーバ20は、情報処理装置の一例である。 The computer system 1 includes a client device 10 and a calculation system 2. The arithmetic system 2 includes a server 20 and an arithmetic unit 30. The client device 10 and the server 20 are connected to each other via the network 40. The network 40 is, for example, a LAN (Local Area Network), a WAN (Wide Area Network), or the like. The server 20 and the arithmetic unit 30 are connected via the bus 50. The server 20 is an example of an information processing device.

クライアント装置10は、処理対象のデータを暗号化して演算システム2に送信し、演算システム2から暗号化された処理結果(例えば、推論結果)を受信し、暗号化された処理結果を復号し、処理結果を利用する。演算システム2は、暗号化されたデータを受信し、暗号化されたデータに対して所定の処理(例えば、推論処理)を実行し、暗号化された処理結果をクライアント装置10に送信する。 The client device 10 encrypts the data to be processed and transmits it to the arithmetic system 2, receives the encrypted processing result (for example, the inference result) from the arithmetic system 2, decodes the encrypted processing result, and then decodes the encrypted processing result. Use the processing result. The arithmetic system 2 receives the encrypted data, executes a predetermined process (for example, inference process) on the encrypted data, and transmits the encrypted process result to the client device 10.

図2は、一実施形態に係るクライアント装置の機能構成図である。 FIG. 2 is a functional configuration diagram of the client device according to the embodiment.

クライアント装置10は、表示部11と、暗号化部12と、送信部13と、記憶部14と、鍵共有部15と、復号部16と、受信部17とを含む。 The client device 10 includes a display unit 11, an encryption unit 12, a transmission unit 13, a storage unit 14, a key sharing unit 15, a decryption unit 16, and a reception unit 17.

記憶部14は、処理を実行させる対象データ141と、対象データ141に対して推論処理を実行した結果である処理結果142と、データを復号及び暗号化するための秘密鍵143(第1復号鍵)及び公開鍵144(第1暗号鍵)とを記憶する。本実施形態では、秘密鍵143及び公開鍵144は、例えば、準同型暗号用の鍵である。準同型暗号としては、例えば、Paillier暗号や、lifted−ElGamal暗号等の加法準同型暗号であってもよく、乗法準同型暗号であってもよい。なお、処理結果142は、サーバ20から処理結果が送信された場合に格納されるものであり、サーバ20による推論処理が行われていない対象データ141に対する処理結果については、存在しない。また、記憶部14は、秘密鍵143と公開鍵144とに代えて、通信用共通鍵を記憶してもよい。この場合には、以下の説明において、秘密鍵143と公開鍵144とは、通信用共通鍵と読み替える。すなわち、通信用共通鍵は、秘密鍵143と公開鍵144として機能する。 The storage unit 14 contains the target data 141 to be processed, the processing result 142 which is the result of executing the inference processing on the target data 141, and the private key 143 (first decryption key) for decrypting and encrypting the data. ) And the public key 144 (first encryption key) are stored. In this embodiment, the private key 143 and the public key 144 are, for example, keys for homomorphic encryption. The homomorphic encryption may be, for example, an additive homomorphic encryption such as Paillier encryption or a lifted-ElGamal encryption, or a multiplication homomorphic encryption. The processing result 142 is stored when the processing result is transmitted from the server 20, and the processing result for the target data 141 that has not been inferred by the server 20 does not exist. Further, the storage unit 14 may store the communication common key instead of the private key 143 and the public key 144. In this case, in the following description, the private key 143 and the public key 144 are read as the communication common key. That is, the communication common key functions as a private key 143 and a public key 144.

暗号化部12は、記憶部14に格納されている暗号化されていない対象データ141を、暗号化して、送信部13に渡す。本実施形態では、暗号化部12は、記憶部14に格納されている公開鍵144を用いて対象データ141を暗号化する。送信部13は、暗号化された推論処理の対象データ141をサーバ20に送信する。なお、秘密鍵143及び公開鍵144に代えて、通信用共通鍵を用いる場合には、暗号化部12は、記憶部14に格納されている通信用共通鍵を用いて対象データ141を暗号化する。 The encryption unit 12 encrypts the unencrypted target data 141 stored in the storage unit 14 and passes it to the transmission unit 13. In the present embodiment, the encryption unit 12 encrypts the target data 141 using the public key 144 stored in the storage unit 14. The transmission unit 13 transmits the encrypted target data 141 for inference processing to the server 20. When a communication common key is used instead of the private key 143 and the public key 144, the encryption unit 12 encrypts the target data 141 using the communication common key stored in the storage unit 14. To do.

受信部17は、サーバ20から暗号化された処理結果142を受信して復号部16に渡す。復号部16は、受信部17から渡された暗号化された処理結果142を復号し、復号した処理結果142を記憶部14に格納する。本実施形態では、復号部16は、記憶部14に格納されている秘密鍵143を用いて暗号化された処理結果142を復号する。なお、秘密鍵143及び公開鍵144に代えて、通信用共通鍵を用いる場合には、復号部16は、記憶部14に格納されている通信用共通鍵を用いて暗号化された処理結果142を復号する。 The receiving unit 17 receives the encrypted processing result 142 from the server 20 and passes it to the decoding unit 16. The decryption unit 16 decrypts the encrypted processing result 142 passed from the receiving unit 17, and stores the decrypted processing result 142 in the storage unit 14. In the present embodiment, the decryption unit 16 decrypts the processed result 142 encrypted by using the private key 143 stored in the storage unit 14. When a communication common key is used instead of the private key 143 and the public key 144, the decryption unit 16 encrypts the communication result 142 using the communication common key stored in the storage unit 14. To decrypt.

表示部11は、記憶部14に記憶された処理結果142に基づいて各種情報を表示する。表示部11は、処理結果142をそのまま表示してもよく、処理結果142に基づいて所定の処理を実行し、その実行結果を表示するようにしてもよい。 The display unit 11 displays various information based on the processing result 142 stored in the storage unit 14. The display unit 11 may display the processing result 142 as it is, or may execute a predetermined process based on the processing result 142 and display the execution result.

鍵共有部15は、演算装置30との間で、外部(クライアント装置10及び演算装置30以外)に秘匿した状態で秘密鍵143及び公開鍵144を共有する処理(鍵共有処理)を実行する。すなわち、鍵共有部15は、サーバ20にも知られることなく、秘密鍵143及び公開鍵144をクライアント装置10と演算装置30との間で共有する機能を有する。 The key sharing unit 15 executes a process (key sharing process) of sharing the private key 143 and the public key 144 with the arithmetic unit 30 in a state of being concealed from the outside (other than the client device 10 and the arithmetic unit 30). That is, the key sharing unit 15 has a function of sharing the private key 143 and the public key 144 between the client device 10 and the arithmetic unit 30 without being known to the server 20.

ここで、加法準同型暗号について、加法準同型暗号であるPaillier暗号を例に挙げて説明する。 Here, the additive homomorphic encryption will be described by taking the Paillier cryptosystem, which is an additive homomorphic encryption, as an example.

暗号に係る処理を行う場合には、以下のような各種設定を決定しておく。すなわち、暗号において使用する安全な素数p及びqを用意する。なお、素数の決定における手順や注意点は、RSA暗号と同じでよい。また、N=p×qとする。また、kを1≦k≦N−1の範囲で任意に設定する。g=1+kNとする。ここで、p、qは、秘密鍵、g、Nは、公開鍵、兼システムパラメータである。 When performing processing related to encryption, the following various settings are determined. That is, secure prime numbers p and q used in encryption are prepared. The procedure and precautions for determining the prime number may be the same as for the RSA cipher. Further, N = p × q. Further, k is arbitrarily set in the range of 1 ≦ k ≦ N-1. Let g = 1 + kN. Here, p and q are private keys, and g and N are public keys and system parameters.

例えば、平文データをA、B(0≦A≦N−1、0≦B≦N−1)とすると、それぞれを暗号化した暗号化データe、eは、以下の式(1)、(2)に示すように表される。
=g×r mod N ・・・(1)
=g×r mod N ・・・(2)
ここで、r(0≦r≦N−1)、及びr(0≦r≦N−1)は、乱数である。
For example, assuming that the plaintext data is A and B (0 ≦ A ≦ N-1, 0 ≦ B ≦ N-1), the encrypted data e A and e B in which they are encrypted are obtained by the following equation (1), It is represented as shown in (2).
e A = g A × r 1 N mod N 2 ... (1)
e B = g B × r 2 N mod N 2 ... (2)
Here, r 1 (0 ≦ r 1 ≦ N-1) and r 2 (0 ≦ r 2 ≦ N-1) are random numbers.

Paillier暗号の暗号化データは、平文データ同士の和演算に対応する演算を、暗号化データの乗算として実行可能である。暗号化データの乗算、すなわち、e×eは、式(3)に示すようになる。
×e=g×g×r ×r mod N
=g(A+B)×r ×r mod N・・・(A)
ここで、g=(1+kN)であるので、gのgに(1+kN)を代入して、g=(1+kN)が得られる。また、(1+kN)を二項定理で展開すると、(1+kN)=1+kN+…となる。展開後の式1+kN+…の第二項以降は、全てNの倍数であるため、1+kN+…をNで割ったあまりは1である。したがって、gmodN=1である。そして、g=1であるため、g(A+B)=g(A+B mod N)が成り立つ。すると、式(A)は、g(A+B)=g(A+B mod N)の関係を用いて、下記式のように変形できる。
式(A)=g(A+B mod N)×r ×r mod N
=g(A+B mod N)×(r×r mod N・・・(B)
=r×r mod Nと置いたとき、rもrも乱数なので、rも乱数となる。したがって、式(B)は下記式のように変形できる。
式(B)=g(A+B mod N)×r mod N
=e(A+B mod N)・・・・(3)
式(3)に示すe(A+B mod N)は、復号すると、A+B mod Nとなる。したがって、AおよびBがNに比べて十分小さければ、実質A+Bとみなすことができるため、暗号化データの乗算は、平文データの和演算に対応していることがわかる。
The encrypted data of Paillier cryptosystem can execute the operation corresponding to the sum operation of the plaintext data as the multiplication of the encrypted data. The multiplication of the encrypted data, that is, e A × e B is as shown in the equation (3).
e A x e B = g A x g B x r 1 N x r 2 N mod N 2
= G (A + B) × r 1 N × r 2 N mod N 2 ... (A)
Here, since it is g = (1 + kN), are substituted into g of g N a (1 + kN), g N = (1 + kN) N is obtained. Further, when (1 + kN) N is expanded by the binomial theorem, (1 + kN) N = 1 + kN 2 + ... Since the second and subsequent terms of the expanded equation 1 + kN 2 + ... Are all multiples of N 2 , 1 + kN 2 + ... is divided by N 2 to be 1. Therefore, g N modN 2 = 1. And since g N = 1, g (A + B) = g (A + B mod N) holds. Then, the equation (A) can be transformed as the following equation by using the relation of g (A + B) = g (A + B mod N) .
Equation (A) = g (A + B mod N) × r 1 N × r 2 N mod N 2
= G (A + B mod N) × (r 1 × r 2 ) N mod N 2 ... (B)
When r 3 = r 1 × r 2 mod N is set, both r 1 and r 2 are random numbers, so r 3 is also a random number. Therefore, the equation (B) can be transformed as the following equation.
Equation (B) = g (A + B mod N) × r 3 N mod N 2
= E (A + B mod N) ... (3)
When e (A + B mod N) shown in the formula (3) is decoded, it becomes A + B mod N. Therefore, if A and B are sufficiently smaller than N, it can be regarded as substantially A + B, and it can be seen that the multiplication of the encrypted data corresponds to the sum operation of the plaintext data.

また、Paillier暗号の暗号化データは、平文データと、平文データの整数との乗算に対応する演算を実行可能である。
平文データAと整数Cとの乗算であるA×Cは、AをC回加算するという和演算に対応する。したがって、この和演算のそれぞれについて、暗号化データの乗算を行うことにより、暗号化データに対して平文データAと整数Cとの乗算に対応する演算を実行することができる。
具体的には、e×e×・・・、すなわち暗号化データの累乗(整数C乗)を行えばよいこととなり、式(4)に示すようになる。
×e×・・・=e+・・・=eAC ・・・(4)
式(4)に示すeACは、復号すると、ACとなり、平文データAと整数Cとの乗算の結果となる。したがって、Paillier暗号の同じ暗号化データを累乗する演算が、平文データと、平文データの整数との乗算に対応する演算であることがわかる。
Further, the encrypted data of Paillier cryptosystem can execute an operation corresponding to the multiplication of the plaintext data and the integer of the plaintext data.
A × C, which is a multiplication of plaintext data A and an integer C, corresponds to a sum operation of adding A C times. Therefore, by multiplying the encrypted data for each of the sum operations, it is possible to execute the operation corresponding to the multiplication of the plaintext data A and the integer C on the encrypted data.
Specifically, e A × e A × ... That is, the power of the encrypted data (integer C power) may be performed, and the equation (4) shows.
e A x e A x ... = e A + A + ... = e AC ... (4)
When the e- AC shown in the equation (4) is decoded, it becomes an AC, which is the result of multiplication of the plaintext data A and the integer C. Therefore, it can be seen that the operation of multiplying the same encrypted data of the Paillier cryptosystem is an operation corresponding to the multiplication of the plaintext data and the integer of the plaintext data.

図3は、一実施形態に係るサーバの機能構成図である。 FIG. 3 is a functional configuration diagram of the server according to the embodiment.

サーバ20は、中継部21と、推論処理制御部22と、受信部23と、記憶部24と、送信部25とを備える。推論処理制御部22は、演算制御部の一例である。 The server 20 includes a relay unit 21, an inference processing control unit 22, a reception unit 23, a storage unit 24, and a transmission unit 25. The inference processing control unit 22 is an example of an arithmetic control unit.

中継部21は、クライアント装置10の鍵共有部15と、演算装置30の後述する鍵共有部33、40との間の鍵交換処理における通信を中継する。 The relay unit 21 relays the communication in the key exchange process between the key sharing unit 15 of the client device 10 and the key sharing units 33 and 40 described later of the arithmetic unit 30.

推論処理制御部22は、記憶部24に格納されているモデル情報242に従って、暗号化された対象データ241を暗号化した状態で用いてニューラルネットワークモデルによる推論処理を実行する。そして、推論処理制御部22は、暗号化された状態の推論処理の処理結果142を送信部25に渡す。例えば、推論処理制御部22は、ニューラルネットワークモデルの中の自身が担当する処理レイヤーについては、この処理レイヤーの処理を実行する。そして、推論処理制御部22は、ニューラルネットワークモデル中の演算装置30が担当する処理レイヤーについては、この処理レイヤーを演算処理30に実行させるように制御する。ここで、ニューラルネットワークモデルに含まれる自身が担当する処理レイヤーは、暗号化されたデータのままで実行可能な処理レイヤーである。なお、ニューラルネットワークモデルの構成及び処理レイヤーの例については後述する。 The inference processing control unit 22 executes the inference processing by the neural network model by using the encrypted target data 241 in the encrypted state according to the model information 242 stored in the storage unit 24. Then, the inference processing control unit 22 passes the processing result 142 of the inference processing in the encrypted state to the transmission unit 25. For example, the inference processing control unit 22 executes the processing of the processing layer that it is in charge of in the neural network model. Then, the inference processing control unit 22 controls the processing layer in charge of the arithmetic unit 30 in the neural network model so that the arithmetic processing 30 executes the processing layer. Here, the processing layer in charge of itself included in the neural network model is a processing layer that can be executed as encrypted data. An example of the configuration of the neural network model and the processing layer will be described later.

記憶部24は、暗号化された対象データ241と、推論処理制御部22により実行される推論処理で用いられるニューラルネットワークモデルの各処理レイヤーの構成及び各処理レイヤーで使用する設定値の情報を含むモデル情報242と、を記憶する。対象データ241は、推論処理を実行させる対象のデータである。モデル情報242に含まれる設定値としては、例えば、畳込処理レイヤーで使用されるフィルタの係数や、アフィンレイヤーで用いられる重み等がある。なお、各処理レイヤーで使用する設定値等は、ニューラルネットワークモデルを用いた学習により得られた値を含む。 The storage unit 24 includes encrypted target data 241 and information on the configuration of each processing layer of the neural network model used in the inference processing executed by the inference processing control unit 22 and the setting value used in each processing layer. The model information 242 and the model information 242 are stored. The target data 241 is data for which the inference process is executed. The setting values included in the model information 242 include, for example, the coefficient of the filter used in the convolution processing layer, the weight used in the affine layer, and the like. The setting values and the like used in each processing layer include values obtained by learning using a neural network model.

受信部23は、クライアント装置10から送信される暗号化された対象データ141を受信して記憶部24に格納する。送信部25は、推論処理制御部22によって得られた暗号化されている処理結果142をクライアント装置10に送信する。対象データ241は、暗号化された対象データ141、演算装置30から取得する暗号化された演算結果、及び情報処理装置20において暗号化されたまま処理された暗号化されたデータの少なくとも一つを含むデータである。 The receiving unit 23 receives the encrypted target data 141 transmitted from the client device 10 and stores it in the storage unit 24. The transmission unit 25 transmits the encrypted processing result 142 obtained by the inference processing control unit 22 to the client device 10. The target data 241 includes at least one of the encrypted target data 141, the encrypted calculation result acquired from the calculation device 30, and the encrypted data processed in the information processing device 20 while being encrypted. It is the data to be included.

図4は、一実施形態に係る演算装置の機能構成図である FIG. 4 is a functional configuration diagram of the arithmetic unit according to the embodiment.

演算装置30は、例えば、専用LSI(Large−Scale Integrated circuit)や、ASIC(Application Specific Integrated Circuit)や、FPGA(Field−Programmable Gate Array)により構成されている。本実施形態では、演算装置30は、サーバ20の内部バスに接続されている。演算装置30は、復号部31と、演算実行部32と、鍵共有部33と、暗号化部34と、取得部35と、出力部36とを備える。演算装置30は、例えば、外部の装置(サーバ20等)に対しては暗号化されたデータのみしか出力しないように構成されている。演算装置30は、例えば、全体又は大部分が、処理を実行するハードウェア回路で構成されており、不正にデータを出力するなどの不正動作を起こさせるようにすることが困難(不可能又はほぼ不可能)となっている。したがって、サーバ20によって、演算装置30から処理途中の暗号化されていない状態のデータを取り出すことは、不可能又はほぼ不可能である。なお、演算装置30は、外部の装置に対して少なくとも一部が暗号化されたデータを出力してもよい。 The arithmetic unit 30 is composed of, for example, a dedicated LSI (Large-Scale Integrated Circuit), an ASIC (Application Specific Integrated Circuit), or an FPGA (Field-Programmable Gate Array). In this embodiment, the arithmetic unit 30 is connected to the internal bus of the server 20. The arithmetic unit 30 includes a decryption unit 31, an arithmetic execution unit 32, a key sharing unit 33, an encryption unit 34, an acquisition unit 35, and an output unit 36. The arithmetic unit 30 is configured to output only encrypted data to an external device (server 20 or the like), for example. The arithmetic unit 30 is composed of, for example, a hardware circuit that executes processing in whole or in large part, and it is difficult (impossible or almost impossible) to cause an illegal operation such as illegally outputting data. Impossible). Therefore, it is impossible or almost impossible for the server 20 to retrieve the unencrypted data in the process of processing from the arithmetic unit 30. The arithmetic unit 30 may output data that is at least partially encrypted to an external device.

鍵共有部33は、クライアント装置10との間の鍵共有処理で使用する共有用秘密鍵331(第2復号鍵)及び共有用公開鍵332(第2暗号鍵)を記憶する。本実施形態では、共有用秘密鍵331は、演算装置30の外部から読み取り不能に記憶されている。ここで、外部から読み取り不能な状態としては、ハードウェアの構成に起因して読み取り不能であってもよい。共有用秘密鍵331は、例えば、ハードワイヤード(結線論理)で記憶されていてもよい。鍵共有部33は、クライアント装置10との間で、外部(クライアント装置10及び演算装置30以外)に秘匿した状態で秘密鍵143及び公開鍵144を共有する処理(鍵共有処理)を実行する。具体的には、例えば、鍵共有部33は、共有用公開鍵332をクライアント装置10に送信し、クライアント装置10で共有用公開鍵332により暗号化された秘密鍵143及び公開鍵144を取得する。そして、鍵共有部33は、共有用秘密鍵331により暗号化された秘密鍵143及び公開鍵144を復号して、秘密鍵143及び公開鍵144を取得する。この鍵共有処理によると、クライアント装置10と演算装置30との間の経路では、秘密鍵143及び公開鍵144は暗号化されており、秘匿状態を確保できる。また、共有用秘密鍵331は、演算装置30の外部から読み取り不能であるので、サーバ20から読み出されて取得されることがないので、秘匿状態を厳重に維持することができる。 The key sharing unit 33 stores the shared private key 331 (second decryption key) and the shared public key 332 (second encryption key) used in the key sharing process with the client device 10. In the present embodiment, the shared private key 331 is stored unreadable from the outside of the arithmetic unit 30. Here, the unreadable state from the outside may be unreadable due to the hardware configuration. The shared private key 331 may be stored, for example, in a hard-wired manner (connection logic). The key sharing unit 33 executes a process (key sharing process) of sharing the private key 143 and the public key 144 with the client device 10 in a state of being concealed from the outside (other than the client device 10 and the arithmetic unit 30). Specifically, for example, the key sharing unit 33 transmits the shared public key 332 to the client device 10 and acquires the private key 143 and the public key 144 encrypted by the shared public key 332 in the client device 10. .. Then, the key sharing unit 33 decrypts the private key 143 and the public key 144 encrypted by the shared private key 331, and acquires the private key 143 and the public key 144. According to this key sharing process, the private key 143 and the public key 144 are encrypted in the path between the client device 10 and the arithmetic unit 30, and a secret state can be secured. Further, since the shared private key 331 cannot be read from the outside of the arithmetic unit 30, it is not read from the server 20 and obtained, so that the secret state can be strictly maintained.

また、鍵共有部33は、取得した秘密鍵143を復号部31に設定し、取得した公開鍵144を暗号化部34に設定する。なお、秘密鍵143及び公開鍵144に代えて、通信用共通鍵を用いる場合には、鍵共有部33は、取得した通信用共通鍵を復号部31及び暗号化部34に設定する。 Further, the key sharing unit 33 sets the acquired private key 143 in the decryption unit 31 and sets the acquired public key 144 in the encryption unit 34. When a communication common key is used instead of the private key 143 and the public key 144, the key sharing unit 33 sets the acquired communication common key in the decryption unit 31 and the encryption unit 34.

取得部35は、サーバ20から渡される暗号化されているデータを取得する。そして、復号部31は、サーバ20から渡される暗号化されているデータを、設定されている秘密鍵143により復号する。なお、サーバ20から渡される暗号化されているデータは、クライアント装置10から送信された暗号化された対象データに基づく、暗号化されているデータである。すなわち、サーバ20から渡される暗号化されているデータは、クライアント装置10から送信された暗号化された対象データそのままの場合や、暗号化された対象データに対して何らかの処理が行われた後の暗号化されているデータである。復号部31は、復号したデータを演算実行部32に渡す。なお、取得部35は、暗号化されているデータとともに、処理で使用する設定値をサーバ20から受け取るようにし、受け取った設定値を演算実行部32に設定又は通知するようにしてもよい。なお、秘密鍵143及び公開鍵144に代えて、通信用共通鍵を用いる場合には、復号部31は、サーバ20から渡される暗号化されているデータを、設定されている通信用共通鍵により復号する。 The acquisition unit 35 acquires the encrypted data passed from the server 20. Then, the decryption unit 31 decrypts the encrypted data passed from the server 20 with the set private key 143. The encrypted data passed from the server 20 is encrypted data based on the encrypted target data transmitted from the client device 10. That is, the encrypted data passed from the server 20 is the same as the encrypted target data transmitted from the client device 10, or after some processing is performed on the encrypted target data. It is encrypted data. The decoding unit 31 passes the decoded data to the calculation execution unit 32. The acquisition unit 35 may receive the set value used in the process from the server 20 together with the encrypted data, and may set or notify the operation execution unit 32 of the received set value. When a communication common key is used instead of the private key 143 and the public key 144, the decryption unit 31 uses the set communication common key to convert the encrypted data passed from the server 20. Decrypt.

演算実行部32は、復号部31から渡された復号されたデータに対して所定の処理を実行する。ここでの所定の処理は、ニューラルネットワークモデルにおける暗号化されたデータのままでは実行不可能な処理レイヤーを含む処理である。演算実行部32は、演算結果を暗号化部34に渡す。 The calculation execution unit 32 executes a predetermined process on the decoded data passed from the decoding unit 31. The predetermined processing here is a processing including a processing layer that cannot be executed as the encrypted data in the neural network model. The calculation execution unit 32 passes the calculation result to the encryption unit 34.

暗号化部34は、演算実行部32から渡された演算結果を、設定された公開鍵144で暗号化して、暗号化したデータをサーバ20の推論処理制御部22に渡す。なお、秘密鍵143及び公開鍵144に代えて、通信用共通鍵を用いる場合には、暗号化部34は、演算実行部32から渡された演算結果を、設定された通信用共通鍵で暗号化して、暗号化したデータをサーバ20の推論処理制御部22に渡す。 The encryption unit 34 encrypts the operation result passed from the operation execution unit 32 with the set public key 144, and passes the encrypted data to the inference processing control unit 22 of the server 20. When a communication common key is used instead of the private key 143 and the public key 144, the encryption unit 34 encrypts the calculation result passed from the calculation execution unit 32 with the set communication common key. The encrypted data is encrypted and passed to the inference processing control unit 22 of the server 20.

次に、ニューラルネットワークモデルの一例について説明する。 Next, an example of the neural network model will be described.

図5は、一実施形態に係るニューラルネットワークモデルの構成図である。 FIG. 5 is a configuration diagram of a neural network model according to an embodiment.

ニューラルネットワークモデル3は、推論処理制御部22による推論処理の構成を示すニューラルネットワークモデルであり、例えば、処理対象とする画像データが何を表しているか、例えば、人、犬、猫等の何を表しているかを推論する推論処理を実行して処理結果を出力するための畳込みニューラルネットワーク(CNN)のモデルである。 The neural network model 3 is a neural network model showing the configuration of inference processing by the inference processing control unit 22, for example, what the image data to be processed represents, for example, what a person, a dog, a cat, or the like represents. This is a model of a convolutional neural network (CNN) for executing inference processing for inferring whether or not it is represented and outputting the processing result.

ニューラルネットワークモデル3は、複数の処理レイヤー4により構成されている。具体的には、ニューラルネットワークモデル3は、畳込レイヤー4−1、活性化レイヤー4−2、プーリングレイヤー4−3、活性化レイヤー4−n−2、アフィンレイヤー4−n−1、及びSoftMaxレイヤー4−n等を含む。畳込レイヤー4−1は、画像データについて畳込処理を実行する。活性化レイヤー4−2は、前レイヤーからの入力データに対して活性化処理を実行する。プーリングレイヤー4−3は、前レイヤーから入力されたデータについてダウンサンプリング処理を実行する。活性化レイヤー4−n−2は、前レイヤーからの入力データに対して活性化処理を実行する。アフィンレイヤー4−n−1は、前レイヤーからの入力データに対してアフィン変換処理を実行する。SoftMaxレイヤー4−nは、前レイヤーからの入力データに対してソフトマックス(SoftMax)関数による処理を実行する。活性化処理を行う活性化レイヤーとしては、例えば、ReLU関数(Rectified Linear Unit Rectifier:正規化線形関数)による活性化処理を行う活性化レイヤーがある。 The neural network model 3 is composed of a plurality of processing layers 4. Specifically, the neural network model 3 includes a convolution layer 4-1, an activation layer 4-2, a pooling layer 4-3, an activation layer 4-n-2, an affine layer 4-n-1, and SoftMax. Includes layers 4-n and the like. The convolution layer 4-1 executes the convolution process on the image data. The activation layer 4-2 executes the activation process on the input data from the previous layer. The pooling layer 4-3 executes the downsampling process on the data input from the previous layer. The activation layer 4-n-2 executes the activation process on the input data from the previous layer. The affine layer 4-n-1 executes the affine transformation process on the input data from the previous layer. The SoftMax layer 4-n executes a process by the softmax (SoftMax) function on the input data from the previous layer. As the activation layer that performs the activation process, for example, there is an activation layer that performs the activation process by the ReLU function (Rectified Liner Unit Rectifier: normalized linear function).

本実施形態では、畳込みレイヤー4−1の演算処理については、加法準同型暗号による暗号化データをそのまま用いて処理を行うことができるものとなっている。また、その他のレイヤー4については、暗号化されたデータをそのまま用いて処理することができないものとなっている。 In the present embodiment, the arithmetic processing of the convolution layer 4-1 can be performed by using the encrypted data by the additive homomorphic encryption as it is. Further, the other layers 4 cannot be processed by using the encrypted data as it is.

このようなニューラルネットワークモデル3について、推論処理制御部22は、暗号化されたデータのままで演算できる処理レイヤーは、予め決められた設定に従って、サーバ20と演算装置30とのいずれかに実行させる。また、推論処理制御部22は、暗号化されたデータのままで演算できない処理レイヤーは、演算装置30に実行させる。したがって、暗号化されたデータのままで演算できる処理レイヤーは、設定によって、全てをサーバ20側で実行するようにすることも、一部をサーバ20側で実行するようにすることも、すべてを演算装置30側で実行させるようにすることもできる。なお、演算装置30で処理レイヤーを実行させるためには、例えば、演算装置30の演算実行部32に、演算装置30側で実行させる全ての処理レイヤー4を実行するための回路を構成しておけばよい。この場合、処理レイヤー4で使用する変数等の設定値については、予め固定的に設定してもよく、処理に際して、推論処理制御部22から演算装置30に渡して設定するようにしてもよい。 With respect to such a neural network model 3, the inference processing control unit 22 causes either the server 20 or the arithmetic unit 30 to execute a processing layer that can be calculated with the encrypted data as it is, according to a predetermined setting. .. Further, the inference processing control unit 22 causes the arithmetic unit 30 to execute a processing layer that cannot be calculated with the encrypted data as it is. Therefore, depending on the settings, the processing layer that can perform operations with the encrypted data can either be executed entirely on the server 20 side or partly executed on the server 20 side. It is also possible to execute it on the arithmetic unit 30 side. In order to execute the processing layer in the arithmetic unit 30, for example, the arithmetic execution unit 32 of the arithmetic unit 30 should be configured with a circuit for executing all the processing layers 4 to be executed on the arithmetic unit 30 side. Just do it. In this case, the setting values of the variables and the like used in the processing layer 4 may be fixedly set in advance, or may be passed from the inference processing control unit 22 to the arithmetic unit 30 during processing.

次に、計算機システム1における処理動作について説明する。 Next, the processing operation in the computer system 1 will be described.

図6は、一実施形態に係る計算機システムの処理動作を示すシーケンス図である。 FIG. 6 is a sequence diagram showing the processing operation of the computer system according to the embodiment.

クライアント装置10の鍵共有部15は、ユーザから所定の対象データに対する処理の指示を受け取ると、共有用公開鍵の要求を、サーバ20を介して演算装置30に送信する(ステップS101,S102)。これに対して、演算装置30の鍵共有部33は、共有用公開鍵332を、サーバ20を介してクライアント装置10に送信する(ステップS103,S104)。 When the key sharing unit 15 of the client device 10 receives a processing instruction for the predetermined target data from the user, the key sharing unit 15 transmits a request for the shared public key to the arithmetic unit 30 via the server 20 (steps S101 and S102). On the other hand, the key sharing unit 33 of the arithmetic unit 30 transmits the shared public key 332 to the client device 10 via the server 20 (steps S103 and S104).

クライアント装置10の鍵共有部15は、共有用公開鍵332を受信し、共有用公開鍵332を使用して、秘密鍵143及び公開鍵144を暗号化する(ステップS105)。次いで、クライアント装置10の鍵共有部15は、暗号化した秘密鍵143及び公開鍵144を、サーバ20を介して演算装置30に送信する(ステップS106,S107)。 The key sharing unit 15 of the client device 10 receives the shared public key 332 and uses the shared public key 332 to encrypt the private key 143 and the public key 144 (step S105). Next, the key sharing unit 15 of the client device 10 transmits the encrypted private key 143 and the public key 144 to the arithmetic unit 30 via the server 20 (steps S106 and S107).

演算装置30の鍵共有部33は、暗号化された秘密鍵143及び公開鍵144を受信し、共有用秘密鍵331を用いて暗号化された秘密鍵143及び公開鍵144を復号して、秘密鍵143及び公開鍵144を得る。そして、鍵共有部33は、秘密鍵143を復号部31に設定するとともに、公開鍵144を暗号化部34に設定する(ステップS108)。このようなステップS101〜S108により、クライアント装置10と演算装置30との間で外部に秘匿した状態で秘密鍵143及び公開鍵144の共有が完了する。 The key sharing unit 33 of the arithmetic unit 30 receives the encrypted private key 143 and the public key 144, decrypts the encrypted private key 143 and the public key 144 using the shared private key 331, and secretly performs the secret. Obtain key 143 and public key 144. Then, the key sharing unit 33 sets the private key 143 in the decryption unit 31 and sets the public key 144 in the encryption unit 34 (step S108). By such steps S101 to S108, the sharing of the private key 143 and the public key 144 is completed between the client device 10 and the arithmetic unit 30 in a state of being concealed from the outside.

次いで、クライアント装置10の暗号化部12は、公開鍵144を用いて、対象データ141を暗号化し、送信部13に渡す(ステップS109)。次いで、送信部13は、暗号化された対象データをサーバ20に送信する(ステップS110)。 Next, the encryption unit 12 of the client device 10 encrypts the target data 141 using the public key 144 and passes it to the transmission unit 13 (step S109). Next, the transmission unit 13 transmits the encrypted target data to the server 20 (step S110).

サーバ20では、暗号化された対象データを受信部23が受信して記憶部24に格納する。そして、推論処理制御部22が対象データに対する推論処理を開始する(ステップS111)。 In the server 20, the receiving unit 23 receives the encrypted target data and stores it in the storage unit 24. Then, the inference processing control unit 22 starts the inference processing for the target data (step S111).

この推論処理においては、サーバ20が実行するレイヤーの処理については、推論処理制御部22は、暗号化されたデータをそのまま使用して演算を実行する(ステップS112)。 In this inference process, the inference process control unit 22 executes an operation using the encrypted data as it is for the layer process executed by the server 20 (step S112).

一方、演算装置30で実行する1以上の処理レイヤーの処理については、推論処理制御部22は、暗号化されている処理用のデータ、すなわち、暗号化されている対象データ又は、直前のレイヤーによる処理結果のデータを演算装置30に送信する(ステップS113)。演算装置30では、暗号化されている処理用のデータを受信すると、復号部31が秘密鍵143を用いて処理用データを復号して演算実行部32に渡す。演算実行部32は、復号された処理用データに対して所定の演算を実行し、演算処理後のデータを暗号化部34に渡す(ステップS115)。暗号化部34は、演算処理後のデータを、公開鍵144を用いて暗号化し(ステップS116)、暗号化された演算処理後のデータをサーバ20に送信する(ステップS117)。 On the other hand, regarding the processing of one or more processing layers executed by the arithmetic unit 30, the inference processing control unit 22 uses the encrypted processing data, that is, the encrypted target data or the immediately preceding layer. The processing result data is transmitted to the arithmetic unit 30 (step S113). When the arithmetic unit 30 receives the encrypted processing data, the decoding unit 31 decodes the processing data using the private key 143 and passes it to the arithmetic execution unit 32. The calculation execution unit 32 executes a predetermined operation on the decrypted processing data, and passes the data after the calculation processing to the encryption unit 34 (step S115). The encryption unit 34 encrypts the data after the arithmetic processing using the public key 144 (step S116), and transmits the encrypted data after the arithmetic processing to the server 20 (step S117).

このようにして推論処理を実行する全てのレイヤーの処理が実行されることにより推論処理が終了し、暗号化されている処理結果が得られることとなる。 By executing the processing of all layers that execute the inference processing in this way, the inference processing is completed and the encrypted processing result is obtained.

推論処理が終了すると、サーバ20の推論処理制御部22は、暗号化されている処理結果を送信部25に渡す。そして、送信部25は、暗号化されている処理結果をクライアント装置10に送信する(ステップS118)。 When the inference processing is completed, the inference processing control unit 22 of the server 20 passes the encrypted processing result to the transmission unit 25. Then, the transmission unit 25 transmits the encrypted processing result to the client device 10 (step S118).

クライアント装置10では、暗号化されている処理結果を受信部17が受信して、復号部16に渡す。また、復号部16は、受け取った暗号化されている処理結果を秘密鍵143で復号して記憶部14に格納する。そして、表示部11は、処理結果に基づいて情報を表示する(ステップS119)。 In the client device 10, the receiving unit 17 receives the encrypted processing result and passes it to the decoding unit 16. Further, the decryption unit 16 decrypts the received encrypted processing result with the private key 143 and stores it in the storage unit 14. Then, the display unit 11 displays the information based on the processing result (step S119).

以上説明したように、計算機システム1の処理において、サーバ20は、暗号化したままでデータを処理するので、データが漏洩することを防止できる。また、演算装置30内では、データが復号されて処理されるが、サーバ20から演算装置30内の暗号化されていないデータを取り出すことは不可能であるので、データが漏洩することを防止できる。 As described above, in the processing of the computer system 1, the server 20 processes the data in the encrypted state, so that it is possible to prevent the data from being leaked. Further, although the data is decrypted and processed in the arithmetic unit 30, it is impossible to retrieve the unencrypted data in the arithmetic unit 30 from the server 20, so that it is possible to prevent the data from leaking. ..

上記したクライアント装置10及びサーバ20は、それぞれコンピュータ装置により構成することができる。 The client device 10 and the server 20 described above can each be configured by a computer device.

図7は、一実施形態に係るコンピュータ装置の構成図である。なお、本実施形態では、クライアント装置10及びサーバ20は、別々のコンピュータ装置で構成されているが、これらコンピュータ装置は、一部の構成を除き同様な構成を有するものとすることができる。したがって、以下の説明では、便宜的に図7に示すコンピュータ装置を用いて、クライアント装置10及びサーバ20を構成するコンピュータ装置について説明することとする。 FIG. 7 is a configuration diagram of a computer device according to an embodiment. In the present embodiment, the client device 10 and the server 20 are composed of separate computer devices, but these computer devices can have the same configuration except for a part of the configurations. Therefore, in the following description, the computer device constituting the client device 10 and the server 20 will be described for convenience using the computer device shown in FIG. 7.

コンピュータ装置100は、例えば、CPU(Central Processin Unit)101(プロセッサ)と、メインメモリ102と、GPU(Graphics Processing Unit)103と、リーダライタ104と、通信インターフェース(通信I/F)105と、補助記憶装置106と、入出力インターフェース(入出力I/F)107と、表示装置108と、入力装置109とを備える。CPU101、メインメモリ102、GPU103、リーダライタ104、通信I/F105、補助記憶装置106、入出力I/F107、及び表示装置108は、バス110を介して接続されている。クライアント装置10と、サーバ20とは、それぞれコンピュータ装置100に記載の構成要素の一部または全てを適宜選択して構成される。本実施形態では、サーバ20を構成するコンピュータ装置100においては、バス110を介して演算装置30が接続されている。なお、演算装置30は、コンピュータ装置100の構成要素の一部またはすべてを適宜選択して構成してもよい。また、CPU101は、例えば、ASIC及びFPGAなどの他の種類のプロセッサでもよい。 The computer device 100 includes, for example, a CPU (Central Processing Unit) 101 (processor), a main memory 102, a GPU (Graphics Processing Unit) 103, a reader / writer 104, a communication interface (communication I / F) 105, and auxiliary. It includes a storage device 106, an input / output interface (input / output I / F) 107, a display device 108, and an input device 109. The CPU 101, the main memory 102, the GPU 103, the reader / writer 104, the communication I / F 105, the auxiliary storage device 106, the input / output I / F 107, and the display device 108 are connected via the bus 110. The client device 10 and the server 20 are configured by appropriately selecting some or all of the components described in the computer device 100, respectively. In the present embodiment, in the computer device 100 constituting the server 20, the arithmetic unit 30 is connected via the bus 110. The arithmetic unit 30 may be configured by appropriately selecting some or all of the components of the computer device 100. Further, the CPU 101 may be another type of processor such as an ASIC and an FPGA.

ここで、メインメモリ102又は補助記憶装置106の少なくとも一方が、クライアント装置10の記憶部14、サーバ20の記憶部24として機能する。なお、メインメモリ102又は補助記憶装置106の少なくとも一方が、後述する演算装置30の記憶部として機能してもよい。また、メインメモリ102又は補助記憶装置106の少なくとも一方が、後述する演算装置60の記憶部60Bとして機能してもよい。さらに、メインメモリ102又は補助記憶装置106の少なくとも一方が、後述する演算装置70の記憶部70Bとして機能してもよい。 Here, at least one of the main memory 102 and the auxiliary storage device 106 functions as the storage unit 14 of the client device 10 and the storage unit 24 of the server 20. At least one of the main memory 102 and the auxiliary storage device 106 may function as a storage unit of the arithmetic unit 30 described later. Further, at least one of the main memory 102 and the auxiliary storage device 106 may function as the storage unit 60B of the arithmetic unit 60 described later. Further, at least one of the main memory 102 and the auxiliary storage device 106 may function as the storage unit 70B of the arithmetic unit 70 described later.

クライアント装置10を構成するコンピュータ装置100において、CPU101は、補助記憶装置106に格納された処理プログラムを実行することにより、例えば、表示部11、暗号化部12、鍵共有部15、復号部16、及び後述する鍵共有部60の制御部60Aとして機能してもよい。サーバ20を構成するコンピュータ装置100において、CPU101は、補助記憶装置106に格納された処理プログラムを実行することにより、例えば、推論処理制御部22として機能してもよい。なお、サーバ20を構成するコンピュータ装置100のCPU101は、クライアント装置10を構成するコンピュータ装置100のCPU101よりも処理性能が良いものとしてもよい。なお、CPU101は、演算装置30の復号部31、演算実行部32、鍵共有部33、暗号化部34、及び後述する鍵共有部70の制御部70Aとして機能してもよい。 In the computer device 100 constituting the client device 10, the CPU 101 executes the processing program stored in the auxiliary storage device 106, for example, the display unit 11, the encryption unit 12, the key sharing unit 15, and the decryption unit 16. It may also function as the control unit 60A of the key sharing unit 60 described later. In the computer device 100 constituting the server 20, the CPU 101 may function as, for example, the inference processing control unit 22 by executing the processing program stored in the auxiliary storage device 106. The CPU 101 of the computer device 100 constituting the server 20 may have better processing performance than the CPU 101 of the computer device 100 constituting the client device 10. The CPU 101 may function as a decoding unit 31, an arithmetic execution unit 32, a key sharing unit 33, an encryption unit 34, and a control unit 70A of the key sharing unit 70 described later.

メインメモリ102は、例えば、RAM、ROM等であり、CPU101に実行されるプログラム(処理プログラム等)や、各種情報を記憶する。補助記憶装置106は、例えば、HDD(Hard DISK Drive)、SSD(Solid State Drive)等の非一時的記憶デバイス(不揮発性記憶デバイス)であり、CPU101で実行されるプログラムや、各種情報を記憶する。クライアント装置10を構成するコンピュータ装置100では、メインメモリ102は、例えば、対象データ141、処理結果142、秘密鍵143、及び公開鍵144を記憶する。サーバ20を構成するコンピュータ装置100では、メインメモリ102は、例えば、対象データ241やモデル情報242を記憶する。 The main memory 102 is, for example, a RAM, a ROM, or the like, and stores a program (processing program or the like) executed by the CPU 101 and various information. The auxiliary storage device 106 is a non-temporary storage device (nonvolatile storage device) such as an HDD (Hard Disk Drive) or SSD (Solid State Drive), and stores a program executed by the CPU 101 and various information. .. In the computer device 100 constituting the client device 10, the main memory 102 stores, for example, the target data 141, the processing result 142, the private key 143, and the public key 144. In the computer device 100 constituting the server 20, the main memory 102 stores, for example, the target data 241 and the model information 242.

GPU103は、例えば、画像処理等の特定の処理の実行に適しているプロセッサであり、例えば、並列的に行われる処理の実行に適している。本実施形態では、GPU103は、CPU101の指示に従って所定の処理を実行する。 The GPU 103 is a processor suitable for executing a specific process such as image processing, and is suitable for executing a process performed in parallel, for example. In this embodiment, the GPU 103 executes a predetermined process according to the instruction of the CPU 101.

リーダライタ104は、記録媒体111を着脱可能であり、記録媒体111からのデータの読み出し、及び記録媒体111へのデータの書き込みを行う。記録媒体111としては、例えば、SDメモリーカード、FD(フロッピーディスク:登録商標)、CD、DVD、BD(登録商標)、フラッシュメモリ等の非一時的記録媒体(不揮発性記録媒体)がある。本実施形態においては、記録媒体111に、処理プログラムを格納しておき、リーダライタ104により、これを読み出して、利用するようにしてもよい。また、クライアント装置10を構成するコンピュータ装置100において、記録媒体111に、処理対象データを格納しておき、リードライタ104により、これを読み出して記憶部14に格納するようにしてもよい。 The reader / writer 104 has a removable recording medium 111, and reads data from the recording medium 111 and writes data to the recording medium 111. Examples of the recording medium 111 include a non-temporary recording medium (nonvolatile recording medium) such as an SD memory card, an FD (floppy disk: registered trademark), a CD, DVD, a BD (registered trademark), and a flash memory. In the present embodiment, the processing program may be stored in the recording medium 111, read by the reader / writer 104, and used. Further, in the computer device 100 constituting the client device 10, the data to be processed may be stored in the recording medium 111, read by the reader driver 104, and stored in the storage unit 14.

通信I/F105は、ネットワーク40に接続されており、ネットワーク40に接続された他の装置との間でのデータの送受信を行う。クライアント装置10の送信部13、受信部17、及び鍵共有部15、サーバ20の受信部23、送信部25、及び中継部21は、それぞれを構成するコンピュータ装置100の通信I/F105及びCPU101によって構成される。通信I/F105は、演算装置30において、取得部35と、出力部36として機能してもよい。 The communication I / F 105 is connected to the network 40 and transmits / receives data to / from another device connected to the network 40. The transmission unit 13, the reception unit 17, the key sharing unit 15, the reception unit 23, the transmission unit 25, and the relay unit 21 of the client device 10 are each composed of the communication I / F 105 and the CPU 101 of the computer device 100 constituting the client device 10. It is composed. The communication I / F 105 may function as an acquisition unit 35 and an output unit 36 in the arithmetic unit 30.

入出力I/F107は、例えば、マウス、キーボード等の入力装置109と接続されている。クライアント装置10を構成するコンピュータ装置100において、入出力I/F107は、入力装置109を用いた、クライアント装置10のユーザによる操作入力を受け付ける。また、サーバ20を構成するコンピュータ装置100において、入出力I/F107は、入力装置109を用いた、サーバ20の管理者による操作入力を受け付ける。入出力I/F107は、演算装置30において、取得部35と、出力部36として機能してもよい。 The input / output I / F 107 is connected to an input device 109 such as a mouse or a keyboard, for example. In the computer device 100 constituting the client device 10, the input / output I / F 107 receives an operation input by the user of the client device 10 using the input device 109. Further, in the computer device 100 constituting the server 20, the input / output I / F 107 receives an operation input by the administrator of the server 20 using the input device 109. The input / output I / F 107 may function as an acquisition unit 35 and an output unit 36 in the arithmetic unit 30.

表示装置108は、例えば、液晶ディスプレイ等のディスプレイ装置であり、各種情報を表示出力する。表示装置18は、例えば、クライアント装置10において、表示部11として機能する。 The display device 108 is, for example, a display device such as a liquid crystal display, and displays and outputs various information. The display device 18 functions as a display unit 11 in the client device 10, for example.

次に、変形例に係る計算機システムについて説明する。 Next, the computer system according to the modified example will be described.

図8を参照して、第1変形例について説明する。
図8は、第1変形例に係る演算装置の機能構成図である。なお、実施形態に係る演算装置30と同様の構成には、同一の符号を付し、重複する説明を省略する。
A first modification will be described with reference to FIG.
FIG. 8 is a functional configuration diagram of the arithmetic unit according to the first modification. The same components as those of the arithmetic unit 30 according to the embodiment are designated by the same reference numerals, and duplicate description will be omitted.

変形例に係る演算装置30Aは、上記した演算装置30において、演算実行部32に代えて演算実行部38を備え、復号部31に代えて復号部37を備えている。
復号部37は、復号部31の機能に加えて、取得部35を介して推論処理制御部22から実行する演算の種類の指定を受け付けて、演算実行部38に渡す。なお、処理レイヤーの指定は、複数の処理レイヤーの指定であってもよい。
The arithmetic unit 30A according to the modified example includes the arithmetic execution unit 38 in place of the arithmetic execution unit 32 and the decoding unit 37 in place of the decoding unit 31 in the arithmetic unit 30 described above.
In addition to the functions of the decoding unit 31, the decoding unit 37 receives the designation of the type of operation to be executed from the inference processing control unit 22 via the acquisition unit 35, and passes it to the operation execution unit 38. The processing layer may be specified by a plurality of processing layers.

演算実行部38は、処理レイヤー4に対応する処理を実行するハードウェア回路で構成された複数の演算部381、382等を有する。演算実行部38は、復号部37から渡された演算の種類の指定に対応する処理を実行する演算部381を選択し、復号部37から渡されるデータを選択した演算部に入力する。なお、復号部37から複数の演算の種類の指定を受け付けた場合には、その指定に対応する演算部を順次選択し、前の処理レイヤーを実行する演算部による処理結果のデータを、次の処理レイヤーの演算部への入力とする。 The calculation execution unit 38 has a plurality of calculation units 381, 382, etc. configured by a hardware circuit that executes processing corresponding to the processing layer 4. The calculation execution unit 38 selects a calculation unit 381 that executes a process corresponding to the designation of the type of calculation passed from the decoding unit 37, and inputs the data passed from the decoding unit 37 to the selected calculation unit. When a plurality of operation type designations are received from the decoding unit 37, the calculation units corresponding to the specifications are sequentially selected, and the processing result data by the calculation unit that executes the previous processing layer is input to the next. Input to the calculation unit of the processing layer.

なお、変形例に係る演算装置30Aを利用する場合には、サーバ20の推論処理制御部22は、演算処理30Aに対して処理レイヤーの処理を実行させるとき、その処理レイヤーに対応する演算の種類の指定を演算装置30Aに送信する機能を備えている。また、上記の演算の種類の指定に代えて、処理レイヤーを指定してもよい。この場合には、演算実行部38は、処理レイヤーの指定に対応する処理を実行する演算部を選択する。 When using the arithmetic unit 30A according to the modification, the inference processing control unit 22 of the server 20 causes the arithmetic processing 30A to execute the processing of the processing layer, and the type of operation corresponding to the processing layer. It has a function of transmitting the designation of to the arithmetic unit 30A. Further, instead of specifying the type of operation described above, a processing layer may be specified. In this case, the calculation execution unit 38 selects a calculation unit that executes the processing corresponding to the designation of the processing layer.

図9から図11を参照して、第2変形例について説明する。
第2変形例では、クライアント装置10と演算装置30との間で、共有用秘密鍵331及び共有用公開鍵332に代えて、共有用共通鍵を用いて秘密鍵143及び公開鍵144を共有する。すなわち、第2変形例では、クライアント装置10と演算装置30とが、それぞれ共有用共通鍵を記憶する。そして、クライアント装置10は、共有用共通鍵を用いて秘密鍵143及び公開鍵144を暗号化して、暗号化した秘密鍵143及び公開鍵144を演算装置30に送信する。演算装置30は、暗号化された秘密鍵143及び公開鍵144を受信して、共有用共通鍵を用いて暗号化された秘密鍵143及び公開鍵144を復号する。以上により、クライアント装置10及び演算装置30とは、秘密鍵143及び公開鍵144を共有する。
A second modification will be described with reference to FIGS. 9 to 11.
In the second modification, the private key 143 and the public key 144 are shared between the client device 10 and the arithmetic unit 30 by using the shared common key instead of the shared private key 331 and the shared public key 332. .. That is, in the second modification, the client device 10 and the arithmetic unit 30 each store the shared common key. Then, the client device 10 encrypts the private key 143 and the public key 144 using the shared common key, and transmits the encrypted private key 143 and the public key 144 to the arithmetic device 30. The arithmetic unit 30 receives the encrypted private key 143 and the public key 144, and decrypts the encrypted private key 143 and the public key 144 using the shared common key. As described above, the client device 10 and the arithmetic unit 30 share the private key 143 and the public key 144.

なお、第2変形例において、秘密鍵143及び公開鍵144に代えて、通信用共通鍵を用いてもよい。すなわち、クライアント装置10は、共有用共通鍵を用いて通信用共通鍵を暗号化して、暗号化した通信用共通鍵を演算装置30に送信する。演算装置30は、暗号化された通信用共通鍵を受信して、共有用共通鍵を用いて暗号化された通信用共通鍵を復号する。この場合には、以下の説明において、秘密鍵143と公開鍵144とは、通信用共通鍵と読み替える。 In the second modification, a communication common key may be used instead of the private key 143 and the public key 144. That is, the client device 10 encrypts the communication common key using the shared common key, and transmits the encrypted communication common key to the arithmetic unit 30. The arithmetic unit 30 receives the encrypted communication common key and decrypts the encrypted communication common key using the shared common key. In this case, in the following description, the private key 143 and the public key 144 are read as the communication common key.

第2変形例は、クライアント装置10と演算装置30との間において、外部に秘匿した状態で上述の共有用共通鍵を共有する方法に特徴を有するものである。以下の説明においては、第2変形例の特徴であるクライアント装置10と演算装置30との間における共有用共通鍵の共有の手法を説明する。なお、実施形態に係るクライアント装置10及び演算装置30と同様の構成には、同一の符号を付し、重複する説明を省略する。 The second modification is characterized in a method of sharing the above-mentioned shared common key between the client device 10 and the arithmetic unit 30 in a state of being concealed from the outside. In the following description, a method of sharing the shared common key between the client device 10 and the arithmetic unit 30, which is a feature of the second modification, will be described. The same components as those of the client device 10 and the arithmetic unit 30 according to the embodiment are designated by the same reference numerals, and duplicate description will be omitted.

図9は、第2変形例に係る計算機システムの全体構成図である。
クライアント装置10は、公開鍵66を記憶する。また、演算装置30は、秘密鍵75を記憶する。なお、演算装置30は、第2変形例においては、後述する処理により作成される共有用共通鍵を用いて秘密鍵143及び公開鍵144をクライアント装置10との間で共有するため、共有用秘密鍵331と共有用公開鍵332とを記憶しなくてもよい。
FIG. 9 is an overall configuration diagram of a computer system according to the second modification.
The client device 10 stores the public key 66. Further, the arithmetic unit 30 stores the private key 75. In the second modification, the arithmetic unit 30 shares the private key 143 and the public key 144 with the client device 10 by using the shared common key created by the process described later, so that the shared secret is shared. It is not necessary to store the key 331 and the shared public key 332.

図10は、第2変形例に係るクライアント装置が備える鍵共有部の機能構成図である。
図10を参照して、第2変形例に係るクライアント装置10が備える鍵共有部60について説明する。なお、実施形態に係るクライアント装置10と同様の構成は、図示を省略する。
FIG. 10 is a functional configuration diagram of a key sharing unit included in the client device according to the second modification.
The key sharing unit 60 included in the client device 10 according to the second modification will be described with reference to FIG. The configuration similar to that of the client device 10 according to the embodiment is not shown.

クライアント装置10は、鍵共有部15に代えて、鍵共有部60を備える。
鍵共有部60は、制御部60Aと記憶部60Bとを備える。制御部60Aは、検証部61と、生成部62と、作成部63と、暗号化部64と、復号部65とを含む。また、記憶部60Bは、公開鍵66と、共有用共通鍵67とを記憶する。なお、共有用共通鍵67は、演算装置30との鍵共有処理の結果として記憶される。
The client device 10 includes a key sharing unit 60 instead of the key sharing unit 15.
The key sharing unit 60 includes a control unit 60A and a storage unit 60B. The control unit 60A includes a verification unit 61, a generation unit 62, a creation unit 63, an encryption unit 64, and a decryption unit 65. Further, the storage unit 60B stores the public key 66 and the shared common key 67. The shared common key 67 is stored as a result of the key sharing process with the arithmetic unit 30.

公開鍵66は、演算装置30に記憶されている秘密鍵75に対応する公開鍵である。公開鍵66は、例えば、演算装置30の開発者及び製造者を含む開発者等が演算装置30に秘密鍵75を記憶させたとき、演算装置30の使用者であるクライアントに配布される。公開鍵66は、例えば、クライアント装置10で推論処理を実行するアプリケーションが起動されたときに呼び出される、DLL(Dynamic Link Library)に埋め込まれて配布されてもよい。なお、公開鍵66は、秘密鍵75に対応する復号鍵でもよい。
共有用共通鍵67は、演算装置30との間で、鍵共有を実行することにより、外部に秘匿した状態で共有される鍵であり、実施形態における共有用秘密鍵331及び共有用公開鍵332として機能する。
The public key 66 is a public key corresponding to the private key 75 stored in the arithmetic unit 30. The public key 66 is distributed to a client who is a user of the arithmetic unit 30, for example, when a developer including the developer and the manufacturer of the arithmetic unit 30 stores the private key 75 in the arithmetic unit 30. The public key 66 may be embedded in a DLL (Dynamic Link Library) that is called when an application that executes inference processing is started on the client device 10 and distributed. The public key 66 may be a decryption key corresponding to the private key 75.
The shared common key 67 is a key shared with the arithmetic unit 30 in a state of being concealed from the outside by executing key sharing, and the shared private key 331 and the shared public key 332 in the embodiment. Functions as.

図11は、第2変形例に係る演算装置が備える鍵共有部の機能構成図である。
図11を参照して、第2変形例に係る演算装置30が備える鍵共有部70について説明する。なお、実施形態に係る演算装置30と同様の構成は、図示を省略する。
演算装置30は、鍵共有部33に代えて、鍵共有部70を備える。
鍵共有部70は、制御部70Aと記憶部70Bとを備える。制御部70Aは、生成部71と、作成部72と、暗号化部73と、復号部74とを含む。また、記憶部70Bは、秘密鍵75と、共有用共通鍵76とを記憶する。なお、共有用共通鍵76は、クライアント装置10との鍵共有処理の結果として記憶される。
FIG. 11 is a functional configuration diagram of a key sharing unit included in the arithmetic unit according to the second modification.
The key sharing unit 70 included in the arithmetic unit 30 according to the second modification will be described with reference to FIG. The configuration similar to that of the arithmetic unit 30 according to the embodiment is not shown.
The arithmetic unit 30 includes a key sharing unit 70 instead of the key sharing unit 33.
The key sharing unit 70 includes a control unit 70A and a storage unit 70B. The control unit 70A includes a generation unit 71, a creation unit 72, an encryption unit 73, and a decryption unit 74. Further, the storage unit 70B stores the private key 75 and the shared common key 76. The shared common key 76 is stored as a result of the key sharing process with the client device 10.

秘密鍵75は、演算装置30の外部から読み取り不可能な状態で記憶部70Bに記憶される。秘密鍵75は、例えば、演算装置30の開発者及び製造者を含む開発者等により決定され、演算装置30の製造時にハードワイヤードなどの耐タンパ性を有する記憶方法を用いて、記憶部70Bに記憶されてもよい。共有用共通鍵76は、クライアント装置10との間で鍵共有を実行することにより、外部に秘匿した状態で共有される鍵であり、実施形態における共有用秘密鍵331及び共有用公開鍵332として機能する。すなわち、クライアント装置10に記憶される共有用共通鍵67と、演算装置30に記憶される共有用共通鍵76とは同じ値である。 The private key 75 is stored in the storage unit 70B in a state where it cannot be read from the outside of the arithmetic unit 30. The private key 75 is determined by, for example, the developer of the arithmetic unit 30 and a developer including the manufacturer, and is stored in the storage unit 70B by using a storage method having tamper resistance such as hard wire when the arithmetic unit 30 is manufactured. It may be remembered. The shared common key 76 is a key that is shared in a state of being kept secret from the outside by executing key sharing with the client device 10, and is used as the shared private key 331 and the shared public key 332 in the embodiment. Function. That is, the shared common key 67 stored in the client device 10 and the shared common key 76 stored in the arithmetic unit 30 have the same values.

図2から図4、並びに図10及び図11を参照して、クライアント装置10と演算装置30との間で実行される共有用共通鍵の鍵共有処理について説明する。以下の説明において、クライアント装置10と演算装置30とは、有限巡回群を定義する各種パラメータと、ハッシュ関数などとを共有しているものとする。 The key sharing process of the shared common key executed between the client device 10 and the arithmetic unit 30 will be described with reference to FIGS. 2 to 4, 10 and 11. In the following description, it is assumed that the client device 10 and the arithmetic unit 30 share various parameters defining a finite cyclic group, a hash function, and the like.

演算装置30において、生成部71は、ランダムな一時鍵aを生成する。一時鍵aは、整数の中からランダムに選択された値である。作成部72は、一時鍵aと生成元Gとを用いて離散対数問題が困難な有限巡回群の元として公開鍵aGを作成する。生成元Gは、例えば、楕円曲線群の基点G(ベースポイント)である。以下の説明では、有限巡回群が楕円曲線群であるものとして説明する。なお、有限巡回群が有限体乗法群である場合には、有限巡回群の生成元は生成元gであり、公開鍵gmodnが作成される。nは、素数である。一時鍵aは、第1整数の一例である。また、公開鍵aGは、第1公開鍵の一例である。 In the arithmetic unit 30, the generation unit 71 generates a random temporary key a. The temporary key a is a value randomly selected from integers. The creation unit 72 creates the public key aG as a source of a finite cyclic group in which the discrete logarithm problem is difficult by using the temporary key a and the generating source G. The generating source G is, for example, the base point G (base point) of the elliptic curve group. In the following description, the finite cyclic group will be described as an elliptic curve group. Note that the finite cyclic group in the case of finite multiplicative group a finite cyclic group of origin is generated based g, public key g a modn is created. n is a prime number. The temporary key a is an example of a first integer. The public key aG is an example of the first public key.

作成部72は、公開鍵aGにハッシュ関数Hを適用して、ハッシュ値H(aG)を求める。さらに、作成部72は、ハッシュ値H(aG)と秘密鍵75とを用いて、電子署名sを作成する。電子署名sは、例えば、ハッシュ値H(aG)を、秘密鍵75で暗号化した値である。なお、有限巡回群が有限体乗法群である場合には、ハッシュ値は、H(gmodn)である。 The creation unit 72 applies the hash function H to the public key aG to obtain the hash value H (aG). Further, the creating unit 72 creates the electronic signatures s by using the hash value H (aG) and the private key 75. The digital signature s is, for example, a value obtained by encrypting the hash value H (aG) with the private key 75. Note that when a finite cyclic group is finite multiplicative group hash value is H (g a modn).

出力部36は、サーバ20を介してクライアント装置10に公開鍵aGと電子署名sとを送信する。具体的には、出力部36は、サーバ20に公開鍵aGと電子署名sとを出力し、サーバ20の中継部21がクライアント装置10に公開鍵aGと電子署名sとを送信する。
クライアント装置10において、受信部17は、公開鍵aGと電子署名sとを受信する。検証部61は、公開鍵aGにハッシュ関数を適用してハッシュ値H(aG)を求める。そして、検証部61は、ハッシュ値H(aG)と、電子署名s及び公開鍵66とを用いて署名の検証を実行する。
The output unit 36 transmits the public key aG and the electronic signature s to the client device 10 via the server 20. Specifically, the output unit 36 outputs the public key aG and the electronic signature s to the server 20, and the relay unit 21 of the server 20 transmits the public key aG and the electronic signature s to the client device 10.
In the client device 10, the receiving unit 17 receives the public key aG and the electronic signature s. The verification unit 61 applies a hash function to the public key aG to obtain the hash value H (aG). Then, the verification unit 61 executes signature verification using the hash value H (aG), the electronic signature s, and the public key 66.

電子署名sを用いた署名の検証の一例を説明する。検証部61は、公開鍵aGにハッシュ関数Hを適用する。また、検証部61は、公開鍵66で電子署名sを復号する。そして、検証部61は、公開鍵aGにハッシュ関数Hを適用した値と、電子署名sを復号した値とが等しいとき、公開鍵aGの正当性を確認する。公開鍵aGが正当であるとは、公開鍵aGが秘密鍵75を保有する演算装置30で作成されたことを保証することである。なお、署名の検証には、例えば、RSA、DSA(Digital Signature Algorithm)、またはECDSA(Elliptic Curve Digital Signature Algorithm)などの署名アルゴリズムを用いてもよい。 An example of signature verification using electronic signatures s will be described. The verification unit 61 applies the hash function H to the public key aG. Further, the verification unit 61 decrypts the electronic signatures s with the public key 66. Then, the verification unit 61 confirms the validity of the public key aG when the value obtained by applying the hash function H to the public key aG and the value obtained by decrypting the electronic signatures s are equal to each other. The legitimacy of the public key aG is to guarantee that the public key aG is created by the arithmetic unit 30 holding the private key 75. For signature verification, for example, a signature algorithm such as RSA, DSA (Digital Signature Algorithm), or ECDSA (Elliptic Curve Digital Signature Algorithm) may be used.

生成部62は、電子署名sにより公開鍵aGの正当性が確認されたとき、一時鍵bを生成する。一時鍵bは、整数の中からランダムに選択された値である。そして、作成部63は、一時鍵bと生成元Gとを用いて離散対数問題が困難な有限巡回群の元として公開鍵bGを作成する。なお、有限巡回群が有限体乗法群である場合には、有限巡回群の生成元は生成元gであり、公開鍵gmodnが作成される。一時鍵bは、第2整数の一例である。また、公開鍵bGは、第2公開鍵の一例である。 The generation unit 62 generates the temporary key b when the validity of the public key aG is confirmed by the electronic signature s. The temporary key b is a value randomly selected from integers. Then, the creation unit 63 creates the public key bG as the source of the finite cyclic group in which the discrete logarithm problem is difficult by using the temporary key b and the generating source G. When the finite cyclic group is a finite multiplicative group, the generator of the finite cyclic group is the generator g, and the public key g b mode is created. The temporary key b is an example of a second integer. The public key bG is an example of the second public key.

作成部63は、さらに、一時鍵bと公開鍵aGとを乗算した値にハッシュ関数Hを適用して共有用共通鍵67としてH(b×aG)を作成する。なお、有限巡回群が有限体乗法群である場合には、共有用共通鍵67としてH((gmodn)modn))が作成される。また、共有用共通鍵67は、単にb×aGとしてもよい。
送信部13は、公開鍵bGを演算装置30に送信する。具体的には、送信部13は、サーバ20に公開鍵bGを送信し、サーバ20の中継部21が演算装置30に公開鍵bGを入力する。
The creation unit 63 further applies the hash function H to the value obtained by multiplying the temporary key b and the public key aG to create H (b × aG) as the shared common key 67. Note that when a finite cyclic group is finite multiplicative group, H ((g a modn) b modn)) is created as sharing a common key 67. Further, the shared common key 67 may be simply b × aG.
The transmission unit 13 transmits the public key bG to the arithmetic unit 30. Specifically, the transmission unit 13 transmits the public key bG to the server 20, and the relay unit 21 of the server 20 inputs the public key bG to the arithmetic unit 30.

演算装置30において、取得部35は、公開鍵bGを取得する。すなわち、取得部35は、クライアント装置10で電子署名sにより公開鍵aGの正当性が確認されたとき、クライアント装置10で作成された公開鍵bGを取得する。
そして、作成部72は、一時鍵aと公開鍵bGとにハッシュ関数Hを適用して共有用共通鍵76としてH(a×bG)を作成する。なお、有限巡回群が有限体乗法群である場合には、共有用共通鍵76としてH((gmodn)modn))が作成される。また、共有用共通鍵76は、単にa×bGとしてもよい。
In the arithmetic unit 30, the acquisition unit 35 acquires the public key bG. That is, when the validity of the public key aG is confirmed by the electronic signatures on the client device 10, the acquisition unit 35 acquires the public key bG created by the client device 10.
Then, the creation unit 72 applies the hash function H to the temporary key a and the public key bG to create H (a × bG) as the shared common key 76. When the finite cyclic group is a finite multiplicative group, H ((g b mode) a mode)) is created as a shared common key 76. Further, the shared common key 76 may be simply a × bG.

上述の処理により、クライアント装置10と演算装置30とは、外部に秘匿した状態で共有用共通鍵を共有する。すなわち、サーバ20及びその他の装置は、公開鍵aG及び公開鍵bGを取得しても、公開鍵aG及び公開鍵bGは離散対数問題が困難なため、公開鍵aG及び公開鍵bGから一時鍵a及び一時鍵bを求めることができない。また、サーバ20及びその他の装置は、電子署名sを取得しても、電子署名sから一時鍵a及び一時鍵bを求めることができない。したがって、一時鍵a及び一時鍵bが得られないサーバ20及びその他の装置は、a×bG及びb×aGを求めることができないので、共有用共通鍵を取得することが不可能である。 By the above processing, the client device 10 and the arithmetic unit 30 share the shared common key in a state of being kept secret from the outside. That is, even if the server 20 and other devices acquire the public key aG and the public key bG, the public key aG and the public key bG are difficult to have a discrete logarithmic problem. Therefore, the temporary key a from the public key aG and the public key bG. And the temporary key b cannot be obtained. Further, the server 20 and other devices cannot obtain the temporary key a and the temporary key b from the electronic signatures even if the electronic signatures are acquired. Therefore, the server 20 and other devices that cannot obtain the temporary key a and the temporary key b cannot obtain a × bG and b × aG, so that it is impossible to acquire the shared common key.

また、サーバ20及びその他の装置は、一時鍵a´を生成し、公開鍵aGを別の値a´Gにすり替えてクライアント装置10に送信する。さらに、サーバ20及びその他の装置は、クライアント装置10から公開鍵bGを取得して不正な共有用共通鍵a´×bGを作成する。これにより、サーバ20及びその他の装置は、クライアント装置10との間で不正な共有用共通鍵a´×bGを共有する不正行為が考えられる。 Further, the server 20 and other devices generate a temporary key a', replace the public key aG with another value a'G, and transmit it to the client device 10. Further, the server 20 and other devices acquire the public key bG from the client device 10 and create an illegal shared common key a'x bG. As a result, it is conceivable that the server 20 and other devices share an illegal shared common key a'xbG with the client device 10.

この場合でも、サーバ20及びその他の装置は、秘密鍵75を有していないため、別の値a´Gに対応する電子署名s´を作成することができない。すると、クライアント装置10は、別の値a´Gが正当なものであると確認できないため、サーバ20に公開鍵bGを送信することがないし、不正な共有用共通鍵a´×bGを正当なものとして作成することもない。したがって、サーバ20及びその他の装置は、不正な共有用共通鍵a´×bGを用いて、クライアント装置10から送信される暗号化データを復号することも不可能である。 Even in this case, since the server 20 and other devices do not have the private key 75, the electronic signature s'corresponding to another value a'G cannot be created. Then, since the client device 10 cannot confirm that another value a'G is valid, the public key bG is not transmitted to the server 20, and the illegal shared common key a'x bG is valid. It is not created as a thing. Therefore, the server 20 and other devices cannot decrypt the encrypted data transmitted from the client device 10 by using the illegal shared common key a'xbG.

以上により、第2変形例に係るクライアント装置10と演算装置30とは、サーバ20及びその他の装置の中間者攻撃を防ぐための処理として、複雑な演算と複数回の通信とが発生するDH−EKEなどの煩雑な処理をすることなく、共有用共通鍵を共有することができる。 As described above, the client device 10 and the arithmetic unit 30 according to the second modification are DH- in which a complicated arithmetic and a plurality of times of communication are generated as a process for preventing a man-in-the-middle attack of the server 20 and other devices. The common key for sharing can be shared without complicated processing such as EKE.

共有用共通鍵を共有した後の秘密鍵143及び公開鍵144の共有処理について説明する。なお、以下の処理において、秘密鍵143及び公開鍵144に代えて、通信用共通鍵を用いる場合には、秘密鍵143と公開鍵144とを、通信用共通鍵と読み替える。
クライアント装置10において、暗号化部64は、共有用共通鍵67を用いて、秘密鍵143及び公開鍵144を暗号化する。送信部13は、暗号化した秘密鍵143及び公開鍵144を演算装置30に送信する。具体的には、送信部13は、サーバ20に暗号化した秘密鍵143及び公開鍵144を送信し、サーバ20の中継部21が演算装置30に暗号化した秘密鍵143及び公開鍵144を入力する。
The sharing process of the private key 143 and the public key 144 after sharing the shared common key will be described. In the following processing, when a communication common key is used instead of the private key 143 and the public key 144, the private key 143 and the public key 144 are read as the communication common key.
In the client device 10, the encryption unit 64 encrypts the private key 143 and the public key 144 using the shared common key 67. The transmission unit 13 transmits the encrypted private key 143 and the public key 144 to the arithmetic unit 30. Specifically, the transmission unit 13 transmits the encrypted private key 143 and the public key 144 to the server 20, and the relay unit 21 of the server 20 inputs the encrypted private key 143 and the public key 144 to the arithmetic unit 30. To do.

演算装置30において、取得部35は、暗号化された秘密鍵143及び公開鍵144を取得する。そして、復号部74は、共有用共通鍵76を用いて暗号化された秘密鍵143及び公開鍵144を復号する。これにより、クライアント装置10及び演算装置30とは、秘密鍵143及び公開鍵144を共有する。 In the arithmetic unit 30, the acquisition unit 35 acquires the encrypted private key 143 and the public key 144. Then, the decryption unit 74 decrypts the private key 143 and the public key 144 encrypted by using the shared common key 76. As a result, the private key 143 and the public key 144 are shared with the client device 10 and the arithmetic unit 30.

なお、秘密鍵143及び公開鍵144を演算装置30からクライアント装置10に送信して、秘密鍵143及び公開鍵144を共有する場合には、以下の処理を実行する。
演算装置30において、暗号化部73は、共有用共通鍵76を用いて、秘密鍵143及び公開鍵144を暗号化する。出力部36は、サーバ20を介してクライアント装置10に暗号化した秘密鍵143及び公開鍵144を送信する。具体的には、出力部36は、サーバ20に暗号化した秘密鍵143及び公開鍵144を出力し、サーバ20の中継部21がクライアント装置10に暗号化した秘密鍵143及び公開鍵144を送信する。
When the private key 143 and the public key 144 are transmitted from the arithmetic unit 30 to the client device 10 and the private key 143 and the public key 144 are shared, the following processing is executed.
In the arithmetic unit 30, the encryption unit 73 encrypts the private key 143 and the public key 144 by using the shared common key 76. The output unit 36 transmits the encrypted private key 143 and public key 144 to the client device 10 via the server 20. Specifically, the output unit 36 outputs the encrypted private key 143 and public key 144 to the server 20, and the relay unit 21 of the server 20 transmits the encrypted private key 143 and public key 144 to the client device 10. To do.

クライアント装置10において、受信部17は、暗号化された秘密鍵143及び公開鍵144を受信する。復号部65は、共有用共通鍵67を用いて暗号化された秘密鍵143及び公開鍵144を復号する。これにより、クライアント装置10及び演算装置30とは、秘密鍵143及び公開鍵144を共有する。
なお、上述の説明において、説明の簡単化のため、暗号化部64及び復号部65とは、暗号化部12及び復号部16と別に設けられるものとして説明したが、暗号化部12と復号部16とが、それぞれ暗号化部64と復号部65として機能してもよい。また、暗号化部73及び復号部74とは、暗号化部34及び復号部31と別に設けられるものとして説明したが、暗号化部34と復号部31とが、それぞれ暗号化部73と復号部74として機能してもよい。
In the client device 10, the receiving unit 17 receives the encrypted private key 143 and the public key 144. The decryption unit 65 decrypts the private key 143 and the public key 144 encrypted by using the shared common key 67. As a result, the private key 143 and the public key 144 are shared with the client device 10 and the arithmetic unit 30.
In the above description, for the sake of simplicity, the encryption unit 64 and the decryption unit 65 have been described as being provided separately from the encryption unit 12 and the decryption unit 16, but the encryption unit 12 and the decryption unit have been described. 16 may function as an encryption unit 64 and a decryption unit 65, respectively. Further, although the encryption unit 73 and the decryption unit 74 have been described as being provided separately from the encryption unit 34 and the decryption unit 31, the encryption unit 34 and the decryption unit 31 are provided separately from the encryption unit 34 and the decryption unit 31, respectively. It may function as 74.

上記の第2変形例の手法でも問題ない場合が多いが、秘密鍵75を全デバイスに書き込んで配布するのでは、記憶部70Bに耐タンパ性を持たせるなどの対策が必要であり、秘密鍵75が安全に記憶できないことがある。この場合には、開発者等は、演算装置30ごとに一時鍵aを決定し、演算装置30の電子署名sを求め、工場出荷時に秘密鍵75に代えて、一時鍵aと電子署名sとを演算装置30の記憶部70Bに書き込んでもよい。すなわち、記憶部70Bは、一時鍵aと電子署名sとを記憶する。なお、記憶部70Bは、クライアント装置10との鍵共有処理の結果として共有用共通鍵76を記憶する。 In many cases, there is no problem with the method of the second modification described above, but if the private key 75 is written and distributed to all devices, it is necessary to take measures such as making the storage unit 70B tamper resistant, and the private key. The 75 may not be safely memorized. In this case, the developer or the like determines the temporary key a for each arithmetic unit 30, obtains the electronic signature s of the arithmetic unit 30, and replaces the private key 75 with the temporary key a and the electronic signature s at the time of shipment from the factory. May be written in the storage unit 70B of the arithmetic unit 30. That is, the storage unit 70B stores the temporary key a and the electronic signature s. The storage unit 70B stores the shared common key 76 as a result of the key sharing process with the client device 10.

具体的には、演算装置30において、記憶部70Bは、一時鍵a、公開鍵aG及び秘密鍵75を用いて開発者等により作成された電子署名sと、一時鍵aとを記憶する。作成部72は、一時鍵aと生成元Gとを用いて離散対数問題が困難な有限巡回群の元として公開鍵aGを作成する。そして、出力部36は、サーバ20を介してクライアント装置10に公開鍵aGと、電子署名sとを出力する。 Specifically, in the arithmetic unit 30, the storage unit 70B stores the electronic signature s created by the developer or the like using the temporary key a, the public key aG, and the private key 75, and the temporary key a. The creation unit 72 creates the public key aG as a source of a finite cyclic group in which the discrete logarithm problem is difficult by using the temporary key a and the generating source G. Then, the output unit 36 outputs the public key aG and the electronic signature s to the client device 10 via the server 20.

クライアント装置10において、検証部61は、電子署名sにより公開鍵aGの正当性が確認されたとき、ランダムな一時鍵bと公開鍵aGとを用いて共有用共通鍵67を作成する。また、作成部63は、一時鍵bと生成元Gとを用いて離散対数問題が困難な有限巡回群の元として公開鍵bGを作成する。そして、送信部13は、サーバ20を介して公開鍵bGを演算装置30に送信する。 In the client device 10, when the validity of the public key aG is confirmed by the electronic signatures, the verification unit 61 creates a shared common key 67 using a random temporary key b and the public key aG. Further, the creation unit 63 creates the public key bG as the source of the finite cyclic group in which the discrete logarithm problem is difficult by using the temporary key b and the generating source G. Then, the transmission unit 13 transmits the public key bG to the arithmetic unit 30 via the server 20.

演算装置30において、取得部35は、クライアント装置10から、公開鍵bGを取得する。作成部72は、前記憶部70Bに記憶されている一時鍵aと公開鍵bGとを用いて共有用共通鍵76を作成する。 In the arithmetic unit 30, the acquisition unit 35 acquires the public key bG from the client device 10. The creation unit 72 creates the shared common key 76 by using the temporary key a and the public key bG stored in the pre-storage unit 70B.

さらに、一時鍵aを演算装置30ごとに固定する構成の別構成を説明する。開発者等は、演算装置30ごとに一時鍵aを決定し、演算装置30の電子署名sを求め、一時鍵aと生成元Gとを用いて作成された離散対数問題が困難な有限巡回群の元として公開鍵aGを作成する。そして、開発者等は、工場出荷時に秘密鍵75に代えて、一時鍵aと電子署名sと公開鍵aGとを演算装置30の記憶部70Bに書き込む。すなわち、記憶部70Bは、一時鍵aと電子署名sと公開鍵aGとを記憶する。なお、記憶部70Bは、クライアント装置10との鍵共有処理の結果として共有用共通鍵76を記憶する。 Further, another configuration in which the temporary key a is fixed for each arithmetic unit 30 will be described. The developer or the like determines a temporary key a for each arithmetic unit 30, obtains the electronic signature s of the arithmetic unit 30, and creates a finite cyclic group in which the discrete logarithm problem is difficult, which is created by using the temporary key a and the generating source G. Create a public key aG as the source of. Then, the developer or the like writes the temporary key a, the electronic signature s, and the public key aG in the storage unit 70B of the arithmetic unit 30 instead of the private key 75 at the time of shipment from the factory. That is, the storage unit 70B stores the temporary key a, the electronic signature s, and the public key aG. The storage unit 70B stores the shared common key 76 as a result of the key sharing process with the client device 10.

具体的には、演算装置30において、記憶部70Bは、一時鍵a及び生成元Gを用いて開発者等により作成された公開鍵aGと、一時鍵a、公開鍵aG及び秘密鍵75を用いて開発者等により作成された電子署名sと、一時鍵aとを記憶する。そして、出力部36は、サーバ20を介してクライアント装置10に公開鍵aGと、電子署名sとを出力する。したがって、記憶部70Bに公開鍵aGを記憶する構成においては、演算装置30は、一時鍵aと生成元Gとを用いて離散対数問題が困難な有限巡回群の元として公開鍵aGを作成する作成部72を備えなくてもよい。 Specifically, in the arithmetic unit 30, the storage unit 70B uses a public key aG created by a developer or the like using the temporary key a and the generation source G, and the temporary key a, the public key aG, and the private key 75. The electronic signature s created by the developer or the like and the temporary key a are stored. Then, the output unit 36 outputs the public key aG and the electronic signature s to the client device 10 via the server 20. Therefore, in the configuration in which the public key aG is stored in the storage unit 70B, the arithmetic unit 30 creates the public key aG as a source of a finite cyclic group in which the discrete logarithm problem is difficult by using the temporary key a and the generating source G. The creation unit 72 may not be provided.

クライアント装置10において、検証部61は、電子署名sにより公開鍵aGの正当性が確認されたとき、ランダムな一時鍵bと公開鍵aGとを用いて共有用共通鍵67を作成する。また、作成部63は、一時鍵bと生成元Gとを用いて離散対数問題が困難な有限巡回群の元として公開鍵bGを作成する。そして、送信部13は、サーバ20を介して公開鍵bGを演算装置30に送信する。 In the client device 10, when the validity of the public key aG is confirmed by the electronic signatures, the verification unit 61 creates a shared common key 67 using a random temporary key b and the public key aG. Further, the creation unit 63 creates the public key bG as the source of the finite cyclic group in which the discrete logarithm problem is difficult by using the temporary key b and the generating source G. Then, the transmission unit 13 transmits the public key bG to the arithmetic unit 30 via the server 20.

演算装置30において、取得部35は、クライアント装置10から、公開鍵bGを取得する。作成部72は、前記憶部70Bに記憶されている一時鍵aと公開鍵bGとを用いて共有用共通鍵76を作成する。 In the arithmetic unit 30, the acquisition unit 35 acquires the public key bG from the client device 10. The creation unit 72 creates the shared common key 76 by using the temporary key a and the public key bG stored in the pre-storage unit 70B.

以上のように、一時鍵aを演算装置30ごとに固定し、秘密鍵75に代えて、一時鍵aと、電子署名sとを記憶部70Bに記憶する構成を用いて鍵共有処理を実行することにより、外部へ秘密鍵75が漏洩することを防止することができる。なお、第1変形例の構成に、第2変形例の構成を組み合わせて構成してもよい。すなわち、第1変形例のクライアント装置10の鍵共有部15に代えて、第2変形例の鍵共有部60を適用し、第1変形例の演算装置30の鍵共有部33に代えて、第2変形例の鍵共有部70を適用してもよい。 As described above, the temporary key a is fixed for each arithmetic unit 30, and the key sharing process is executed using the configuration in which the temporary key a and the electronic signature s are stored in the storage unit 70B instead of the private key 75. This makes it possible to prevent the private key 75 from leaking to the outside. The configuration of the first modification may be combined with the configuration of the second modification. That is, the key sharing unit 60 of the second modification is applied instead of the key sharing unit 15 of the client device 10 of the first modification, and the key sharing unit 33 of the arithmetic unit 30 of the first modification is replaced with the first. 2 The key sharing unit 70 of the modified example may be applied.

なお、本発明は、上述の実施形態及び変形例に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。 The present invention is not limited to the above-described embodiments and modifications, and can be appropriately modified and implemented without departing from the spirit of the present invention.

例えば、上記実施形態では、クライアント装置10が演算装置30から共有用公開鍵332を取得するようにしていたが、予め共有用公開鍵332を取得してクライアント装置10に格納している場合には、ステップS101〜S104の処理を実行しなくてもよい。 For example, in the above embodiment, the client device 10 acquires the shared public key 332 from the arithmetic unit 30, but when the shared public key 332 is acquired in advance and stored in the client device 10. , It is not necessary to execute the processes of steps S101 to S104.

また、クライアント装置10と演算装置30との間の秘密鍵143及び公開鍵144の共有方法は、上記に限られず、別のアルゴリズム、例えば、DH−EKE(Diffie−Hellman Encrypted Key Exchange)を用いてもよい。 Further, the method of sharing the private key 143 and the public key 144 between the client device 10 and the arithmetic unit 30 is not limited to the above, and another algorithm, for example, DH-EKE (Diffie-Hellman Encrypted Key Exchange) is used. May be good.

また、上記実施形態又は変形例において、推論処理制御部22は、暗号化されたデータのままで演算できる処理レイヤーについて、サーバ20と演算装置30(30A)とのいずれに実行させるかを設定に従って決めるようにしていた。本発明はこれに限られず、例えば、サーバ20の処理負荷や、演算装置30(30A)の処理負荷の少なくとも一方を検出し、この処理負荷に基づいて、サーバ20と演算装置30(30A)とのいずれに処理レイヤーを実行させるかを決定するようにしてもよい。例えば、推論処理制御部22は、サーバ20の処理負荷が所定以上の場合に、暗号化されたデータのままで演算できる処理レイヤーについて、演算装置30(30A)に実行させてもよい。また、推論処理制御部22は、演算装置30(30A)の処理負荷が所定以上である場合に、暗号化されたデータのままで演算できる処理レイヤーについて、サーバ20で実行させてもよい。これにより、サーバ20や、演算装置30(30A)の処理負荷を抑制することができる。 Further, in the above embodiment or a modification, the inference processing control unit 22 determines whether the server 20 or the arithmetic unit 30 (30A) executes the processing layer that can perform the calculation with the encrypted data as it is, according to the setting. I was trying to decide. The present invention is not limited to this, and for example, at least one of the processing load of the server 20 and the processing load of the arithmetic unit 30 (30A) is detected, and based on this processing load, the server 20 and the arithmetic unit 30 (30A) You may decide which of the above is to execute the processing layer. For example, the inference processing control unit 22 may cause the arithmetic unit 30 (30A) to execute a processing layer that can perform an operation with the encrypted data as it is when the processing load of the server 20 is a predetermined value or more. Further, the inference processing control unit 22 may execute the processing layer on the server 20 that can perform the calculation with the encrypted data as it is when the processing load of the arithmetic unit 30 (30A) is equal to or more than a predetermined value. As a result, the processing load of the server 20 and the arithmetic unit 30 (30A) can be suppressed.

また、上記実施形態又は変形例において、演算装置30(30A)の演算実行部32(38)に、簡易な演算式を実行可能なマイクロプロセッサを備えてもよい。この場合には、推論処理制御部22は、演算装置30(30A)に実行させる演算式を送信し、簡易な演算式を実行可能なマイクロプロセッサに演算式に対応する処理を実行させてもよい。このようにすると、演算装置30(30A)において、回路として構成していなかった演算についても処理することができるようになる。 Further, in the above embodiment or a modification, the arithmetic execution unit 32 (38) of the arithmetic unit 30 (30A) may be provided with a microprocessor capable of executing a simple arithmetic expression. In this case, the inference processing control unit 22 may transmit an arithmetic expression to be executed by the arithmetic unit 30 (30A) and cause a microprocessor capable of executing a simple arithmetic expression to execute a process corresponding to the arithmetic expression. .. In this way, the arithmetic unit 30 (30A) can process the arithmetic that was not configured as a circuit.

また、演算システム2で実行する処理に対応するニューラルネットワークモデルの構成は、上記した例に限られず、より多くの処理レイヤーを有してもよく、上記した例と異なる処理を実行する処理レイヤーを含んでいてもよい。 Further, the configuration of the neural network model corresponding to the processing executed by the arithmetic system 2 is not limited to the above example, and may have more processing layers, and a processing layer that executes processing different from the above example may be provided. It may be included.

また、上記実施形態及び変形例では、演算システム2においてニューラルネットワークモデルに対応する処理を実行する例を示していたが、本発明はこれに限られず、例えば、ニューラルネットワークモデルに対応していない処理を実行するようにしてもよい。 Further, in the above-described embodiment and modification, an example of executing a process corresponding to the neural network model in the arithmetic system 2 has been shown, but the present invention is not limited to this, and for example, a process not corresponding to the neural network model. May be executed.

また、上記実施形態及び変形例においては、準同型暗号として、加法準同型暗号を例にしていたが、本発明はこれに限られず、乗法準同型暗号や、完全準同型暗号や、SomeWhat準同型暗号としてもよい。 Further, in the above-described embodiment and modification, the additive homomorphic encryption is used as an example of the homomorphic encryption, but the present invention is not limited to this, and the multiplication homomorphic encryption, the complete homomorphic encryption, and the SomeWhat homomorphic encryption are used. It may be encrypted.

また、上記実施形態及び変形例においては、準同型暗号により暗号化したデータを対象に処理を行う例を示していたが、他の暗号方式により暗号化されたデータを対象に処理を行うようにしてもよい。 Further, in the above-described embodiment and modification, an example in which data encrypted by homomorphic encryption is processed is shown, but data encrypted by another encryption method is processed. You may.

また、上記実施形態及び変形例においては、推論処理を実行する例を示していたが、これに限られず、本発明は、推論処理とは異なる処理を実行する場合にも適用することができる。 Further, in the above-described embodiment and modification, an example of executing the inference process is shown, but the present invention is not limited to this, and the present invention can be applied to the case of executing a process different from the inference process.

1…計算機システム、2…演算システム、10…クライアント装置、20…サーバ、30,30A…演算装置、31,37…復号部、32,38…演算実行部、33、40、50…鍵共有部、34…暗号化部 1 ... Computer system, 2 ... Arithmetic system, 10 ... Client device, 20 ... Server, 30, 30A ... Arithmetic device, 31, 37 ... Decryption unit, 32, 38 ... Arithmetic execution unit, 33, 40, 50 ... Key sharing unit , 34 ... Encryption unit

Claims (23)

クライアント装置とネットワークを介して接続される情報処理装置にバスを介して接続される演算装置であって、
前記クライアント装置は、処理対象のデータを第1暗号鍵で暗号化させて、前記情報処理装置に送信し、前記情報処理装置から送信された暗号化された処理結果のデータを、前記第1暗号鍵に対応する第1復号鍵で復号し、
前記演算装置は、
前記クライアント装置との間で前記第1暗号鍵及び前記第1復号鍵を外部に秘匿した状態で共有する鍵共有部と、
前記クライアント装置から送信されたデータに基づく前記第1暗号鍵で暗号化されているデータを前記情報処理装置から取得する取得部と、
前記取得部により取得された前記第1暗号鍵で暗号化されているデータを前記第1復号鍵で復号する復号部と、
前記復号部で復号されたデータに対して所定の演算を実行する演算実行部と、
前記演算実行部による演算結果のデータを前記第1暗号鍵で暗号化する暗号化部と、
前記暗号化された前記演算結果のデータを前記情報処理装置に出力する出力部と、
を備えることを特徴とする演算装置。
An arithmetic unit connected to an information processing device connected to a client device via a network via a bus.
The client device encrypts the data to be processed with the first encryption key and transmits the data to the information processing device, and the encrypted processing result data transmitted from the information processing device is subjected to the first encryption. Decrypt with the first decryption key corresponding to the key,
The arithmetic unit
A key sharing unit that shares the first encryption key and the first decryption key with the client device in a secret state.
An acquisition unit that acquires data encrypted with the first encryption key based on data transmitted from the client device from the information processing device, and an acquisition unit.
A decryption unit that decrypts the data encrypted by the first encryption key acquired by the acquisition unit with the first decryption key, and a decryption unit.
An operation execution unit that executes a predetermined operation on the data decoded by the decoding unit, and
An encryption unit that encrypts the data of the operation result by the operation execution unit with the first encryption key,
An output unit that outputs the encrypted data of the calculation result to the information processing device, and
An arithmetic unit characterized by comprising.
前記演算実行部は、
異なる演算を実行可能な複数の演算部を有し、
前記取得部は、前記情報処理装置から前記データに対して実行する演算の指示を取得し、
前記演算実行部は、前記演算の指示に対応する演算を実行する演算部を選択し、選択した演算部により、前記データに対する演算を実行する
ことを特徴とする請求項1に記載の演算装置。
The calculation execution unit
It has multiple arithmetic units that can execute different arithmetic,
The acquisition unit acquires an instruction for an operation to be executed on the data from the information processing device, and obtains an instruction for calculation.
The arithmetic unit according to claim 1, wherein the arithmetic execution unit selects an arithmetic unit that executes an arithmetic corresponding to an instruction of the arithmetic, and executes an arithmetic on the data by the selected arithmetic unit.
前記情報処理装置は、前記演算装置に実行させる演算についての演算式を前記演算装置に送信し、
前記演算装置の前記演算実行部は、
前記情報処理装置から受信した演算式を実行する
ことを特徴とする請求項1に記載の演算装置。
The information processing device transmits a calculation formula for a calculation to be executed by the calculation device to the calculation device.
The arithmetic execution unit of the arithmetic unit
The arithmetic unit according to claim 1, wherein the arithmetic expression received from the information processing apparatus is executed.
前記演算装置は、第2復号鍵を外部から読出不能に記憶し、
前記クライアント装置から、前記第2復号鍵に対応する第2暗号鍵により暗号化された前記第1暗号鍵及び前記第1復号鍵を受信して、前記第2復号鍵を用いて前記暗号化された前記第1暗号鍵及び前記第1復号鍵を復号することにより、前記第1暗号鍵及び第1復号鍵を共有する
ことを特徴とする請求項1から請求項3のいずれか一項に記載の演算装置。
The arithmetic unit stores the second decryption key so that it cannot be read from the outside.
The first encryption key and the first decryption key encrypted by the second encryption key corresponding to the second decryption key are received from the client device, and the encryption is performed using the second decryption key. The method according to any one of claims 1 to 3, wherein the first encryption key and the first decryption key are shared by decrypting the first encryption key and the first decryption key. Computational device.
前記鍵共有部は、
ランダムな第1整数を生成する生成部と、
前記第1整数と生成元とを用いて離散対数問題が困難な有限巡回群の元として第1公開鍵を作成する作成部と、
を備え、
前記出力部は、
前記情報処理装置を介して前記クライアント装置に前記第1公開鍵を送信し、
前記取得部は、
ランダムな第2整数と前記第1公開鍵とを用いて共有用共通鍵を作成する前記クライアント装置から、前記第2整数と前記生成元とを用いて前記クライアント装置で作成された離散対数問題が困難な有限巡回群の元である第2公開鍵と、前記クライアント装置において前記共有用共通鍵を用いて暗号化された前記第1暗号鍵及び前記第1復号鍵とを取得し、
前記作成部は、
前記第1整数と前記第2公開鍵とを用いて共有用共通鍵を作成し、
前記復号部は、前記作成部により作成された前記共有用共通鍵を用いて前記暗号化された前記第1暗号鍵及び前記第1復号鍵を復号する
ことを特徴とする請求項1から請求項3のいずれか一項に記載の演算装置。
The key sharing unit is
A generator that generates a random first integer,
A creation unit that creates a first public key as an element of a finite cyclic group in which the discrete logarithm problem is difficult using the first integer and the generator.
With
The output unit
The first public key is transmitted to the client device via the information processing device.
The acquisition unit
From the client device that creates a shared common key using a random second integer and the first public key, there is a discrete logarithm problem created by the client device using the second integer and the generator. The second public key, which is the source of the difficult finite patrol group, and the first encryption key and the first decryption key encrypted by the client device using the shared common key are acquired.
The creation part
A shared common key is created using the first integer and the second public key.
Claims 1 to 1, wherein the decryption unit decrypts the encrypted first encryption key and the first decryption key using the shared common key created by the preparation unit. The arithmetic unit according to any one of 3.
前記鍵共有部は、さらに、
秘密鍵を記憶する記憶部
を備え、
前記作成部は、さらに、
前記秘密鍵と前記公開鍵のハッシュ値とを用いて電子署名を作成し、
前記出力部は、
前記情報処理装置を介して前記クライアント装置に前記電子署名を出力し、
前記取得部は、
前記クライアント装置で前記電子署名により前記第1公開鍵の正当性が確認されたとき、前記クライアント装置で作成された前記第2公開鍵と、前記暗号化された前記第1暗号鍵及び前記第1復号鍵とを取得する
ことを特徴とする請求項5に記載の演算装置。
The key sharing unit further
Equipped with a storage unit that stores the private key
The creation unit further
A digital signature is created using the private key and the hash value of the public key.
The output unit
The electronic signature is output to the client device via the information processing device.
The acquisition unit
When the validity of the first public key is confirmed by the electronic signature on the client device, the second public key created by the client device, the encrypted first encryption key, and the first public key are used. The arithmetic unit according to claim 5, wherein the decryption key is acquired.
前記鍵共有部は、
第1整数と、前記第1整数、第1公開鍵及び秘密鍵を用いて作成された電子署名と、を記憶する記憶部と、
前記第1整数と生成元とを用いて離散対数問題が困難な有限巡回群の元として第1公開鍵を作成する作成部と、
を備え、
前記出力部は、
前記情報処理装置を介して前記クライアント装置に前記電子署名と、前記第1公開鍵とを出力し、
前記取得部は、
前記電子署名の検証を実行して前記第1公開鍵の正当性が確認されたとき、ランダムな第2整数と前記第1公開鍵とを用いて共有用共通鍵を作成する前記クライアント装置から、前記第2整数と前記生成元とを用いて前記クライアント装置で作成された離散対数問題が困難な有限巡回群の元である第2公開鍵と、前記クライアント装置において前記共有用共通鍵を用いて暗号化された前記第1暗号鍵及び前記第1復号鍵とを取得し、
前記作成部は、
前記第1整数と前記第2公開鍵とを用いて共有用共通鍵を作成し、
前記復号部は、前記作成部により作成された前記共有用共通鍵を用いて前記暗号化された前記第1暗号鍵及び前記第1復号鍵を復号する
ことを特徴とする請求項1から請求項3のいずれか一項に記載の演算装置。
The key sharing unit is
A storage unit that stores a first integer and an electronic signature created by using the first integer, the first public key, and the private key.
A creation unit that creates a first public key as an element of a finite cyclic group in which the discrete logarithm problem is difficult using the first integer and the generator.
With
The output unit
The electronic signature and the first public key are output to the client device via the information processing device.
The acquisition unit
When the validity of the first public key is confirmed by executing the verification of the electronic signature, the client device that creates a shared common key using the random second integer and the first public key Using the second public key, which is the source of the finite circuit group in which the discrete logarithm problem is difficult, created by the client device using the second integer and the generator, and the shared common key in the client device. Obtain the encrypted first encryption key and the first decryption key,
The creation part
A shared common key is created using the first integer and the second public key.
Claims 1 to 1, wherein the decryption unit decrypts the encrypted first encryption key and the first decryption key using the shared common key created by the preparation unit. The arithmetic unit according to any one of 3.
前記鍵共有部は、
第1整数と、前記第1整数、第1公開鍵及び秘密鍵を用いて作成された電子署名と、前記第1整数及び生成元を用いて作成された離散対数問題が困難な有限巡回群の元である第1公開鍵とを記憶する記憶部
を備え、
前記出力部は、
前記情報処理装置を介して前記クライアント装置に前記電子署名と、前記第1公開鍵とを出力し、
前記取得部は、
前記電子署名の検証を実行して前記第1公開鍵の正当性が確認されたとき、ランダムな第2整数と前記第1公開鍵とを用いて共有用共通鍵を作成する前記クライアント装置から、前記第2整数と前記生成元とを用いて前記クライアント装置で作成された離散対数問題が困難な有限巡回群の元である第2公開鍵と、前記クライアント装置において前記共有用共通鍵を用いて暗号化された前記第1暗号鍵及び前記第1復号鍵とを取得し、
前記作成部は、
前記第1整数と前記第2公開鍵とを用いて共有用共通鍵を作成し、
前記復号部は、前記作成部により作成された前記共有用共通鍵を用いて前記暗号化された前記第1暗号鍵及び前記第1復号鍵を復号する
ことを特徴とする請求項1から請求項3のいずれか一項に記載の演算装置。
The key sharing unit is
A finite cyclic group with a first integer, an electronic signature created using the first integer, the first public key, and a private key, and a discrete logarithmic problem created using the first integer and the generator. Equipped with a storage unit that stores the original first public key
The output unit
The electronic signature and the first public key are output to the client device via the information processing device.
The acquisition unit
When the validity of the first public key is confirmed by executing the verification of the electronic signature, the client device that creates a shared common key using the random second integer and the first public key Using the second public key, which is the source of the finite circuit group in which the discrete logarithm problem is difficult, created by the client device using the second integer and the generator, and the shared common key in the client device. Obtain the encrypted first encryption key and the first decryption key,
The creation part
A shared common key is created using the first integer and the second public key.
Claims 1 to 1, wherein the decryption unit decrypts the encrypted first encryption key and the first decryption key using the shared common key created by the preparation unit. The arithmetic unit according to any one of 3.
前記共有用共通鍵は、
前記第1整数と前記第2公開鍵とを用いた値にハッシュ値を適用した値である
ことを特徴とする請求項5から8のいずれか一項に記載の演算装置。
The shared common key is
The arithmetic unit according to any one of claims 5 to 8, wherein the value is a value obtained by applying a hash value to a value using the first integer and the second public key.
クライアント装置とネットワークを介して接続される情報処理装置にバスを介して接続される演算装置であって、
前記クライアント装置は、処理対象のデータを通信用共通鍵で暗号化させて、前記情報処理装置に送信し、前記情報処理装置から送信された暗号化された処理結果のデータを、前記通信用共通鍵で復号し、
前記演算装置は、
前記クライアント装置との間で前記通信用共通鍵を外部に秘匿した状態で共有する鍵共有部と、
前記クライアント装置から送信されたデータに基づく前記通信用共通鍵で暗号化されているデータを前記情報処理装置から取得する取得部と、
前記取得部により取得された前記通信用共通鍵で暗号化されているデータを前記通信用共通鍵で復号する復号部と、
前記復号部で復号されたデータに対して所定の演算を実行する演算実行部と、
前記演算実行部による演算結果のデータを前記通信用共通鍵で暗号化する暗号化部と、
前記暗号化された前記演算結果のデータを前記情報処理装置に出力する出力部と、
を備えることを特徴とする演算装置。
An arithmetic unit connected to an information processing device connected to a client device via a network via a bus.
The client device encrypts the data to be processed with the communication common key, transmits the data to the information processing device, and transmits the encrypted processing result data transmitted from the information processing device to the communication common. Decrypt with key,
The arithmetic unit
A key sharing unit that shares the communication common key with the client device in a secret state from the outside.
An acquisition unit that acquires data encrypted with the communication common key based on data transmitted from the client device from the information processing device, and an acquisition unit.
A decryption unit that decrypts data acquired by the acquisition unit and encrypted with the communication common key with the communication common key, and a decoding unit.
An operation execution unit that executes a predetermined operation on the data decoded by the decoding unit, and
An encryption unit that encrypts the data of the operation result by the operation execution unit with the communication common key,
An output unit that outputs the encrypted data of the calculation result to the information processing device, and
An arithmetic unit characterized by comprising.
前記演算実行部は、
異なる演算を実行可能な複数の演算部を有し、
前記取得部は、前記情報処理装置から前記データに対して実行する演算の指示を取得し、
前記演算実行部は、前記演算の指示に対応する演算を実行する演算部を選択し、選択した演算部により、前記データに対する演算を実行する
ことを特徴とする請求項10に記載の演算装置。
The calculation execution unit
It has multiple arithmetic units that can execute different arithmetic,
The acquisition unit acquires an instruction for an operation to be executed on the data from the information processing device, and obtains an instruction for calculation.
The arithmetic unit according to claim 10, wherein the arithmetic execution unit selects an arithmetic unit that executes an arithmetic corresponding to an instruction of the arithmetic, and executes an arithmetic on the data by the selected arithmetic unit.
前記情報処理装置は、前記演算装置に実行させる演算についての演算式を前記演算装置に送信し、
前記演算装置の前記演算実行部は、
前記情報処理装置から受信した演算式を実行する
ことを特徴とする請求項10に記載の演算装置。
The information processing device transmits a calculation formula for a calculation to be executed by the calculation device to the calculation device.
The arithmetic execution unit of the arithmetic unit
The arithmetic unit according to claim 10, wherein the arithmetic expression received from the information processing apparatus is executed.
前記演算装置は、第2復号鍵を外部から読出不能に記憶し、
前記クライアント装置から、前記第2復号鍵に対応する第2暗号鍵により暗号化された前記通信用共通鍵を受信して、前記第2復号鍵を用いて前記暗号化された前記通信用共通鍵を復号することにより、前記通信用共通鍵を共有する
ことを特徴とする請求項10から請求項12のいずれか一項に記載の演算装置。
The arithmetic unit stores the second decryption key so that it cannot be read from the outside.
The communication common key encrypted with the second encryption key corresponding to the second decryption key is received from the client device, and the communication common key encrypted with the second decryption key is used. The arithmetic apparatus according to any one of claims 10 to 12, wherein the common key for communication is shared by decrypting the above.
前記鍵共有部は、
ランダムな第1整数を生成する生成部と、
前記第1整数と生成元とを用いて離散対数問題が困難な有限巡回群の元として第1公開鍵を作成する作成部と、
を備え、
前記出力部は、
前記情報処理装置を介して前記クライアント装置に前記第1公開鍵を送信し、
前記取得部は、
ランダムな第2整数と前記第1公開鍵とを用いて共有用共通鍵を作成する前記クライアント装置から、前記第2整数と前記生成元とを用いて前記クライアント装置で作成された離散対数問題が困難な有限巡回群の元である第2公開鍵と、前記クライアント装置において前記共有用共通鍵を用いて暗号化された前記通信用共通鍵とを取得し、
前記作成部は、
前記第1整数と前記第2公開鍵とを用いて共有用共通鍵を作成し、
前記復号部は、前記作成部により作成された前記共有用共通鍵を用いて前記暗号化された前記通信用共通鍵を復号する
ことを特徴とする請求項10から請求項12のいずれか一項に記載の演算装置。
The key sharing unit is
A generator that generates a random first integer,
A creation unit that creates a first public key as an element of a finite cyclic group in which the discrete logarithm problem is difficult using the first integer and the generator.
With
The output unit
The first public key is transmitted to the client device via the information processing device.
The acquisition unit
From the client device that creates a shared common key using a random second integer and the first public key, there is a discrete logarithm problem created by the client device using the second integer and the generator. The second public key, which is the source of the difficult finite cyclic group, and the communication common key encrypted by the client device using the shared common key are acquired.
The creation part
A shared common key is created using the first integer and the second public key.
Any one of claims 10 to 12, wherein the decryption unit decrypts the encrypted common key for communication by using the common key for sharing created by the preparation unit. The arithmetic unit described in.
前記鍵共有部は、さらに、
秘密鍵を記憶する記憶部
を備え、
前記作成部は、さらに、
前記秘密鍵と前記公開鍵のハッシュ値とを用いて電子署名を作成し、
前記出力部は、
前記情報処理装置を介して前記クライアント装置に前記電子署名を出力し、
前記取得部は、
前記クライアント装置で前記電子署名により前記第1公開鍵の正当性が確認されたとき、前記クライアント装置で作成された前記第2公開鍵と、前記暗号化された前記通信用共通鍵とを取得する
ことを特徴とする請求項14に記載の演算装置。
The key sharing unit further
Equipped with a storage unit that stores the private key
The creation unit further
A digital signature is created using the private key and the hash value of the public key.
The output unit
The electronic signature is output to the client device via the information processing device.
The acquisition unit
When the validity of the first public key is confirmed by the electronic signature on the client device, the second public key created by the client device and the encrypted common key for communication are acquired. The arithmetic unit according to claim 14, characterized in that.
前記鍵共有部は、
第1整数と、前記第1整数、第1公開鍵及び秘密鍵を用いて作成された電子署名と、を記憶する記憶部と、
前記第1整数と生成元とを用いて離散対数問題が困難な有限巡回群の元として第1公開鍵を作成する作成部と、
を備え、
前記出力部は、
前記情報処理装置を介して前記クライアント装置に前記電子署名と、前記第1公開鍵とを出力し、
前記取得部は、
前記電子署名の検証を実行して前記第1公開鍵の正当性が確認されたとき、ランダムな第2整数と前記第1公開鍵とを用いて共有用共通鍵を作成する前記クライアント装置から、前記第2整数と前記生成元とを用いて前記クライアント装置で作成された離散対数問題が困難な有限巡回群の元である第2公開鍵と、前記クライアント装置において前記共有用共通鍵を用いて暗号化された前記通信用共通鍵とを取得し、
前記作成部は、
前記第1整数と前記第2公開鍵とを用いて共有用共通鍵を作成し、
前記復号部は、前記作成部により作成された前記共有用共通鍵を用いて前記暗号化された前記通信用共通鍵を復号する
ことを特徴とする請求項10から請求項12のいずれか一項に記載の演算装置。
The key sharing unit is
A storage unit that stores a first integer and an electronic signature created by using the first integer, the first public key, and the private key.
A creation unit that creates a first public key as an element of a finite cyclic group in which the discrete logarithm problem is difficult using the first integer and the generator.
With
The output unit
The electronic signature and the first public key are output to the client device via the information processing device.
The acquisition unit
When the validity of the first public key is confirmed by executing the verification of the electronic signature, the client device that creates a shared common key using a random second integer and the first public key Using the second public key, which is the source of the finite cyclic group in which the discrete logarithmic problem is difficult, created by the client device using the second integer and the generator, and the shared common key in the client device. Obtain the encrypted common key for communication and
The creation part
A shared common key is created using the first integer and the second public key.
Any one of claims 10 to 12, wherein the decryption unit decrypts the encrypted common key for communication by using the common key for sharing created by the preparation unit. The arithmetic unit described in.
前記鍵共有部は、
第1整数と、前記第1整数、第1公開鍵及び秘密鍵を用いて作成された電子署名と、前記第1整数及び生成元を用いて作成された離散対数問題が困難な有限巡回群の元である第1公開鍵とを記憶する記憶部
を備え、
前記出力部は、
前記情報処理装置を介して前記クライアント装置に前記電子署名と、前記第1公開鍵とを出力し、
前記取得部は、
前記電子署名の検証を実行して前記第1公開鍵の正当性が確認されたとき、ランダムな第2整数と前記第1公開鍵とを用いて共有用共通鍵を作成する前記クライアント装置から、前記第2整数と前記生成元とを用いて前記クライアント装置で作成された離散対数問題が困難な有限巡回群の元である第2公開鍵と、前記クライアント装置において前記共有用共通鍵を用いて暗号化された前記通信用共通鍵とを取得し、
前記作成部は、
前記第1整数と前記第2公開鍵とを用いて共有用共通鍵を作成し、
前記復号部は、前記作成部により作成された前記共有用共通鍵を用いて前記暗号化された前記通信用共通鍵を復号する
ことを特徴とする請求項10から請求項12のいずれか一項に記載の演算装置。
The key sharing unit is
A finite cyclic group with a first integer, an electronic signature created using the first integer, the first public key, and a private key, and a discrete logarithmic problem created using the first integer and the generator. Equipped with a storage unit that stores the original first public key
The output unit
The electronic signature and the first public key are output to the client device via the information processing device.
The acquisition unit
When the validity of the first public key is confirmed by executing the verification of the electronic signature, the client device that creates a shared common key using a random second integer and the first public key Using the second public key, which is the source of the finite cyclic group in which the discrete logarithm problem is difficult, created by the client device using the second integer and the generator, and the shared common key in the client device. Obtain the encrypted common key for communication and
The creation part
A shared common key is created using the first integer and the second public key.
Any one of claims 10 to 12, wherein the decryption unit decrypts the encrypted common key for communication by using the common key for sharing created by the preparation unit. The arithmetic unit described in.
前記共有用共通鍵は、
前記第1整数と前記第2公開鍵とを用いた値にハッシュ値を適用した値である
ことを特徴とする請求項14から17のいずれか一項に記載の演算装置。
The shared common key is
The arithmetic unit according to any one of claims 14 to 17, wherein the value is a value obtained by applying a hash value to a value using the first integer and the second public key.
クライアント装置とネットワークを介して接続される情報処理装置と、前記情報処理装置にバスを介して接続される演算装置と、を備える演算システムであって、
前記クライアント装置は、処理対象のデータを第1暗号鍵で暗号化させて、前記情報処理装置に送信し、前記情報処理装置から送信された暗号化された処理結果のデータを、前記第1暗号鍵に対応する第1復号鍵で復号し、
前記演算装置は、
前記クライアント装置との間で前記第1暗号鍵及び前記第1復号鍵を外部に秘匿した状態で共有する鍵共有部と、
前記クライアント装置から送信されたデータに基づく前記第1暗号鍵で暗号化されているデータを前記情報処理装置から取得する取得部と、
前記取得部により取得されたデータを前記第1復号鍵で復号する復号部と、
前記復号部で復号されたデータに対して所定の演算を実行する演算実行部と、
前記演算実行部による演算結果のデータを前記第1暗号鍵で暗号化する暗号化部と、
前記暗号化された前記演算結果のデータを前記情報処理装置に出力する出力部と、を有し、
前記情報処理装置は、
前記クライアント装置から前記第1暗号鍵で暗号化されたデータを受信する受信部と、
前記データに対して実行する処理中の、少なくとも暗号化されたデータのままで実行不能な演算について、前記演算装置の前記演算実行部に実行させることにより、前記処理の結果を算出する演算制御部と、
前記処理の結果を前記クライアント装置に送信する送信部と、
を備えることを特徴とする演算システム。
An arithmetic system including an information processing device connected to a client device via a network and an arithmetic device connected to the information processing device via a bus.
The client device encrypts the data to be processed with the first encryption key and transmits the data to the information processing device, and the encrypted processing result data transmitted from the information processing device is subjected to the first encryption. Decrypt with the first decryption key corresponding to the key,
The arithmetic unit
A key sharing unit that shares the first encryption key and the first decryption key with the client device in a secret state.
An acquisition unit that acquires data encrypted with the first encryption key based on data transmitted from the client device from the information processing device, and an acquisition unit.
A decoding unit that decodes the data acquired by the acquisition unit with the first decoding key, and
An operation execution unit that executes a predetermined operation on the data decoded by the decoding unit, and
An encryption unit that encrypts the data of the operation result by the operation execution unit with the first encryption key,
It has an output unit that outputs the encrypted data of the calculation result to the information processing apparatus.
The information processing device
A receiving unit that receives data encrypted with the first encryption key from the client device, and
An arithmetic control unit that calculates the result of the processing by causing the arithmetic execution unit of the arithmetic unit to execute at least an operation that cannot be executed with the encrypted data during the processing to be executed on the data. When,
A transmitter that transmits the result of the process to the client device,
An arithmetic system characterized by being equipped with.
前記第1暗号鍵及び前記第1復号鍵は、準同型暗号方式に従う鍵であり、
前記情報処理装置の前記演算制御部は、
前記処理中の暗号化されたデータに対してそのまま実行できる演算の少なくとも一部を実行する
ことを特徴とする請求項19に記載の演算システム。
The first encryption key and the first decryption key are keys that follow a homomorphic encryption method.
The arithmetic control unit of the information processing device
The arithmetic system according to claim 19, wherein at least a part of an arithmetic that can be executed as it is is executed on the encrypted data being processed.
前記データに対して実行する処理は、畳込み演算を行う畳込レイヤーと、畳込レイヤーによる演算結果に対して活性化演算を実行する活性化レイヤーとを含むニューラルネットワークモデルによって実現される推論処理であり、
前記演算制御部は、少なくとも畳込レイヤーの演算を実行し、
前記演算装置の演算実行部は、前記活性化レイヤーの演算を実行する
ことを特徴とする請求項20に記載の演算システム。
The process executed for the data is an inference process realized by a neural network model including a convolution layer that performs a convolution operation and an activation layer that executes an activation operation on the calculation result of the convolution layer. And
The calculation control unit executes at least the calculation of the convolution layer,
The arithmetic system according to claim 20, wherein the arithmetic execution unit of the arithmetic unit executes an arithmetic of the activation layer.
前記演算制御部は、
前記処理中の自情報処理装置と、前記演算装置とのいずれでも実行可能な演算について、前記情報処理装置の処理負荷と前記演算装置の処理負荷との少なくとも一方に基づいて、いずれで実行させるかを制御する
ことを特徴とする請求項19に記載の演算システム。
The arithmetic control unit
Which of the self-information processing apparatus during the processing and the arithmetic unit can execute the arithmetic based on at least one of the processing load of the information processing apparatus and the processing load of the arithmetic unit. The arithmetic system according to claim 19, wherein the arithmetic system is controlled.
クライアント装置とネットワークを介して接続される情報処理装置と、前記情報処理装置にバスを介して接続される演算装置と、を備える演算システムにおける演算装置による演算方法であって、
前記クライアント装置は、処理対象のデータを第1暗号鍵で暗号化させて、前記情報処理装置に送信し、前記情報処理装置から送信された暗号化された処理結果のデータを、前記第1暗号鍵に対応する第1復号鍵で復号し、
前記演算装置は、
前記クライアント装置との間で前記第1暗号鍵及び前記第1復号鍵を外部に秘匿した状態で共有し、
前記クライアント装置から送信されたデータに基づく前記第1暗号鍵で暗号化されているデータを前記情報処理装置から取得し、
取得されたデータを前記第1復号鍵で復号し、
復号されたデータに対して所定の演算を実行し、
演算結果のデータを前記第1暗号鍵で暗号化し、
前記暗号化された前記演算結果のデータを前記情報処理装置に出力する
演算方法。
It is a calculation method by a calculation device in a calculation system including an information processing device connected to a client device via a network and a calculation device connected to the information processing device via a bus.
The client device encrypts the data to be processed with the first encryption key and transmits the data to the information processing device, and the encrypted processing result data transmitted from the information processing device is subjected to the first encryption. Decrypt with the first decryption key corresponding to the key,
The arithmetic unit
The first encryption key and the first decryption key are shared with the client device in a secret state.
Data encrypted with the first encryption key based on the data transmitted from the client device is acquired from the information processing device.
Decrypt the acquired data with the first decryption key,
Performs a predetermined operation on the decrypted data and
The calculation result data is encrypted with the first encryption key,
A calculation method for outputting the encrypted data of the calculation result to the information processing apparatus.
JP2020026497A 2019-04-15 2020-02-19 Arithmetic logic unit, arithmetic system, and arithmetic method Active JP7017800B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US16/832,628 US11611430B2 (en) 2019-04-15 2020-03-27 Arithmetic apparatus, arithmetic system and arithmetic method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2019077259 2019-04-15
JP2019077259 2019-04-15

Publications (2)

Publication Number Publication Date
JP2020177223A true JP2020177223A (en) 2020-10-29
JP7017800B2 JP7017800B2 (en) 2022-02-09

Family

ID=72935664

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020026497A Active JP7017800B2 (en) 2019-04-15 2020-02-19 Arithmetic logic unit, arithmetic system, and arithmetic method

Country Status (1)

Country Link
JP (1) JP7017800B2 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023218514A1 (en) * 2022-05-10 2023-11-16 日本電信電話株式会社 Calculation result distribution device, calculation result protection system, and calculation result distribution method
US11956353B2 (en) 2021-12-01 2024-04-09 Eaglys Inc. Machine learning device, machine learning system, and machine learning method

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015072583A (en) * 2013-10-02 2015-04-16 オリンパス株式会社 Image processing device, image processing method, and imaging apparatus

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018041340A (en) 2016-09-08 2018-03-15 富士通株式会社 Information processing system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015072583A (en) * 2013-10-02 2015-04-16 オリンパス株式会社 Image processing device, image processing method, and imaging apparatus

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
鈴木 大輔: "FPGA搭載サーバにおける秘匿アクセラレーション", 2019年 暗号と情報セキュリティシンポジウム予稿集, JPN6021029566, 15 January 2019 (2019-01-15), JP, pages 1 - 8, ISSN: 0004562179 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11956353B2 (en) 2021-12-01 2024-04-09 Eaglys Inc. Machine learning device, machine learning system, and machine learning method
WO2023218514A1 (en) * 2022-05-10 2023-11-16 日本電信電話株式会社 Calculation result distribution device, calculation result protection system, and calculation result distribution method

Also Published As

Publication number Publication date
JP7017800B2 (en) 2022-02-09

Similar Documents

Publication Publication Date Title
US10616213B2 (en) Password manipulation for secure account creation and verification through third-party servers
JP4774492B2 (en) Authentication system and remote distributed storage system
JP6763378B2 (en) Cryptographic information creation device, cryptographic information creation method, cryptographic information creation program, and verification system
EP2962185B1 (en) Random number generator and stream cipher
US8509449B2 (en) Key protector for a storage volume using multiple keys
US11611430B2 (en) Arithmetic apparatus, arithmetic system and arithmetic method
CA2983163A1 (en) Generating cryptographic function parameters from compact source code
JP2016035554A (en) Compact fuzzy private matching using full homomorphic encryption scheme
JP6962578B2 (en) Cryptographic processing system, cryptographic processing device, cryptographic processing program, and cryptographic processing method
JP4776906B2 (en) Signature generation method and information processing apparatus
US9917695B2 (en) Authenticated encryption method using working blocks
US9338000B2 (en) Device and method for generating keys with enhanced security for fully homomorphic encryption algorithm
CN112491529B (en) Data file encryption and integrity verification method and system used in untrusted server environment
JP7017800B2 (en) Arithmetic logic unit, arithmetic system, and arithmetic method
EP3010173B1 (en) Key storage device, key storage method, and program therefor
CN117082493A (en) Star networking data transmission method, star networking data transmission device, computer equipment and storage medium
CN107040370B (en) Apparatus for generating code implementing modular exponentiation
US8219810B2 (en) Method and system for facilitating throttling of interpolation-based authentication
JP5850888B2 (en) Information storage system, information storage device, method thereof, and program
CN113645022A (en) Method and device for determining privacy set intersection, electronic equipment and storage medium
JP2017038336A (en) Decryption method
CN117118730A (en) Proxy re-encryption data sharing method and system with anti-masquerading attack function
JP5752751B2 (en) Decryption system, terminal device, signature system, method thereof, and program
Ruan et al. Building blocks of the security and management engine
EP3010172A1 (en) System enabling licensed processing of encrypted information

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201028

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210709

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210803

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210915

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220121

R150 Certificate of patent or registration of utility model

Ref document number: 7017800

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250