PROGRAM EXECUTION SYSTEM, DATA PROCESSING DEVICE, DATA RETAINING DEVICE, PROGRAM EXECUTION METHOD, AND PROGRAM
Patent Information
- Application Number
- JP2024033659
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2024-03-06
- Publication Date
- 2025-03-11
- Estimated Expiration
- 2040-11-13
Smart Images

Figure 0007643609000001 
Figure 0007643609000002 
Figure 0007643609000003
Abstract
Description
[Technical field]
[0001] The present invention relates to a confidential execution technology in the field of information and communications. [Background technology]
[0002] Examples of conventional technologies for performing calculations while keeping data and programs secret from cloud service providers include Confidential Computing (Non-Patent Document 1) and Confidential VM (Prior Art Document 2). These technologies make it possible to isolate and keep confidential highly confidential data, for example, while the data is being processed in the cloud.
[0003] However, these conventional techniques do not take into consideration the risk of data and programs leaking to each other when the data and programs are in the possession of different users. [Prior art documents] [Non-patent literature]
[0004] [Non-Patent Document 1] Microsoft Azure Confidential Computing official page: https: / / docs.microsoft.com / ja-jp / azure / confidential-computing / overview [Non-Patent Document 2] Google Confidential VM official page https: / / cloud.google.com / compute / confidential-vm / docs?hl=ja Summary of the Invention [Problem to be solved by the invention]
[0005] The present invention has been made in consideration of the above points, and aims to provide technology that prevents data from being leaked to the program provider and prevents the program from being leaked to the data holder when a data processing device equipped with a secret computation mechanism processes data of a data holder using a program from a program provider. [Means for solving the problem]
[0006] According to the disclosed technology, there is provided a program execution system including a data holding device and a data processing device having a secure area, the data holding device transmits encrypted data encrypted with a common key to the data processing device; the data processing device obtains data by decrypting the encrypted data with the common key in the secure area; obtaining the program by decrypting the encrypted program received from the program providing device using a second common key different from the common key; For the above data The above Executing a program and encrypting the execution result with the public key of the data storage device or the common key; the data processing device transmits the encrypted execution result to the data holding device; The data holding device acquires the execution result by decrypting the encrypted execution result using a private key or the common key. A program execution system is provided. Effect of the Invention
[0007] According to the disclosed technology, when a data processing device equipped with a secret computation mechanism processes data of a data holder using a program of a program provider, technology is provided that prevents data from being leaked to the program provider and prevents the program from being leaked to the data holder. [Brief description of the drawings]
[0008] [Figure 1] 1 is a system configuration diagram according to an embodiment of the present invention. [Diagram 2] FIG. 2 is a functional configuration diagram of a data processing device. [Diagram 3] FIG. 13 is a diagram showing an image of processing in a secure area. [Figure 4] FIG. 4 is a sequence diagram showing a process flow in the first embodiment. [Diagram 5] FIG. 11 is a sequence diagram showing a process flow in the second embodiment. [Figure 6] FIG. 13 is a sequence diagram showing a process flow in the third embodiment. [Figure 7] FIG. 2 illustrates an example of a hardware configuration of the apparatus. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0009] Hereinafter, an embodiment of the present invention (the present embodiment) will be described with reference to the drawings. The embodiment described below is merely an example, and the embodiment to which the present invention is applied is not limited to the following embodiment. In the following description, a program is represented as P, data to be processed by P is represented as D, and the processing result of D by P is represented as P(D).
[0010] (System Configuration)
[0011] An example of the configuration of a program execution system according to an embodiment of the present invention is shown in Fig. 1. As shown in Fig. 1, the program execution system according to the present embodiment includes a data processing device 100, a data holding device 200, and a program providing device 300.
[0012] The data processing device 100, the data holding device 200, and the program providing device 300 may each be a physical machine (computer) or a virtual machine on the cloud. Also, the data holding device 200 and the program providing device 300 may each be a function (e.g., a web browser) that operates on a physical machine or a virtual machine.
[0013] In this embodiment, the data processing device 100 has a Trusted Execution Environment (TEE) function (which may be called a secret computing mechanism or a confidential computing mechanism) that executes data processing in isolation from an existing OS. In this embodiment, for example, SGX from Intel (registered trademark) is assumed as this function, but this is only an example, and the present invention is applicable to any TEE function. For example, the present invention is also applicable to SEV from AMD (registered trademark), TrustZone (registered trademark) from Arm (registered trademark), etc.
[0014] 1, a secure channel 400 is established between the data processing device 100 and the data holding device 200, and between the data processing device 100 and the program providing device 300, allowing data and programs to be transmitted and received safely. This secure channel is established, for example, by a remote attestation protocol called Remote Attestation in SGX. However, this is just an example, and the secure channel may be established by any means.
[0015] In this embodiment, a program P is transmitted from the program providing device 300 to the data processing device 100, data D is transmitted from the data holding device 200 to the data processing device 100, the data processing device 100 processes the data D using the program P, and provides the execution result P(D) to the data holding device 200.
[0016] The data processing device 100 uses its secure computing mechanism to prevent the program P and data D from leaking outside the secure area (for example, onto the cloud where the data processing device 100 is operating). In addition, in this embodiment, a mechanism is realized that prevents the program P from leaking to the data holding device 200 and prevents the data D from leaking to the program providing device 300.
[0017] As a result, in the program execution system of this embodiment, in a use case in which the secure computing mechanism is applied to data distribution, a data holder (data holding device 200) having highly confidential data D and a program author (program providing device 300) having highly confidential program P can combine and execute the data / program while keeping them secret from each other.
[0018] (Example of configuration of data processing device) 2 shows an example of the functional configuration of the data processing device 100. As shown in FIG. 2, the data processing device 100 includes a secure area 110, a communication unit 120, a data storage unit 130, and a data processing unit 140.
[0019] The secure area 110 is a protected area where confidentiality is maintained, and the contents of the data and programs therein cannot be known from the outside. Outside the secure area 110, normal data storage, data processing (program execution), and transmission and reception can be performed. Access control can also be performed by the communication unit 120.
[0020] Data storage and data processing (program execution) are possible while maintaining confidentiality in the secure area 110. In FIG. 2, a secure data storage unit 111 and a secure processing unit 112 are shown as functional units that perform these functions in the secure area 110.
[0021] The secure area 110 itself can be realized by existing technology. Any existing technology may be used to realize the secure area 110. For example, the secure area 110 may be realized as a separate chip that is independent in terms of hardware from the main CPU and memory, or the secure area 110 may be realized in terms of software by utilizing encryption technology and authentication technology. As a technology for realizing the secure area 110 in terms of software, for example, there is the above-mentioned SGX, and in this embodiment, it is assumed that SGX is used as an example.
[0022] The secure area 110 may be called an Enclave. As will be described later, the secure area 110 in this embodiment is activated (generated) by executing a TA (Trusted Application) in the data processing device 100.
[0023] 3 shows an image of data processing in secure area 110. In this embodiment, "Enc" means encryption. For example, Enc(D) is encrypted data.
[0024] As shown in FIG. 3, the data processing device 100 receives Enc(D) from the data holding device 200 and receives Enc(P) from the program providing device 300.
[0025] In secure area 110, Enc(D) and Enc(P) are decrypted to obtain D and P. Furthermore, in secure area 110, P(D) is calculated, and then Enc(P(D)) is calculated. Enc(P(D)) is transmitted to data holding device 200. In this manner, a combination of calculation in secure area 110 and encrypted communication realizes a mechanism that prevents program P from being leaked to data holding device 200 and prevents data D from being leaked to program providing device 300.
[0026] Examples 1 to 3 will be described below as examples of the processing flow in this embodiment. In each of the following examples, it is assumed that a mechanism of Remote Attestation is used in generating (sharing) a common key. More specifically, a protocol in which a mechanism for verifying the data processing device 100 is inserted into the Elliptic Curve Diffie-Hellman key exchange protocol (ECDHKE) is used. In this embodiment, this is called ECDHE with Attestation.
[0027] In the verification of the data processing device 100, a third-party verification organization (e.g., IAS (Intel Attestation Service)) is involved. However, the process of generating a common key with the involvement of the third-party verification organization is an existing technology known as Remote Attestation. Therefore, in the explanation of the first to third embodiments, only an overview of the process related to Remote Attestation is provided, and the parts related to the present invention are explained in detail.
[0028] In the following description, HA is a host application, for example a program such as a standard input / output program. HA is a program that operates outside the secure area 110 in the data processing device 100. PKp and SKp are the public key and private key of the program providing device 300, respectively. PKd and SKd are the public key and private key of the data holding device 200, respectively. Enc(A,B) means information obtained by encrypting A with B (key). H(A) means the hash value of A. Sig(H(A),B) means a signature for A by B (private key). MAC(A,B) is a message authentication code for A using B (common key).
[0029] Example 1 First, a first embodiment will be described with reference to Fig. 4. As a premise of the processing flow in Fig. 4, the data holding device 200 holds D, PKd, and SKd, and the program providing device 300 holds HA, TA, P, PKp, and SKp. Note that the TA and HA may be provided in advance to the program providing device 300 by the operator of the data processing device 100 in SDK or library format so that the program providing device 300 can package P together with the TA and HA.
[0030] In addition, in the first embodiment, it is assumed that the data processing device 100 provides Web services to each user (data storage device 200, program providing device 300), and it is assumed that user authentication (each user) and server authentication (data processing device 100) used in general Web services have been performed.
[0031] In S101, the data processing device 100 and the program providing device 300 each generate (calculate) a common key Kt using ECDHE with attestation.
[0032] In S102, the program providing device 300 transmits Enc(TA,Kt), PKp, MAC(PKp,Kt), Sig(H(Enc(TA,Kt)),SKp) to the data processing device 100.
[0033] The data processing device 100 verifies the signature from the information received in S102, decrypts the TA using Kt, and obtains PKp. In S103, the data processing device 100 starts (generates) the secure area 110 by executing the TA.
[0034] The method by which the data processing device 100 obtains the PKp is not limited to the above-mentioned method. For example, the PKp may be obtained from an external trusted server that manages public keys.
[0035] In S104, the data processing device 100 and the program providing device 300 each generate and store a common key Kp using ECDHE with attestation. In the data processing device 100, the common key Kp is generated in the secure area 110, and the common key Kp is stored in the secure area 110.
[0036] In S105, the data processing device 100 and the data holding device 200 each generate and hold a common key Kd using ECDHE with attestation. In the data processing device 100, the common key Kd is generated in the secure area 110, and the common key Kd is held in the secure area 110.
[0037] Note that, prior to S103, the data processing device 100 has verified the signature of the program providing device 300, but has not verified the signature for the data retention device 200. Therefore, prior to executing S105, the data processing device 100 may execute access control to determine whether the secure area 110 is permitted to exchange keys with the data retention device 200. For example, by using an access list describing the data retention devices 200 permitted by the program providing device 300, key exchange can be performed only with data retention devices 200 permitted by the program providing device 300.
[0038] In S106, program providing device 300 encrypts P with Kp. In S107, program providing device 300 transmits Enc(P,Kp), SIG(H(Enc(P,Kp)),SKp) to data processing device 100.
[0039] In S108, the data processing device 100 verifies the signature, decrypts P with Kp in the secure area 110, and stores P.
[0040] In S109, the data holding device 200 encrypts D with Kd. In S110, the data holding device 200 transmits Enc(D, Kd), PKd, and MAC(PKd, Kd) to the data processing device 100.
[0041] In S111, the data processing device 100 verifies the MAC, decrypts D with Kd in the secure area 110, and calculates P(D).
[0042] In S112, the data processing device 100 discards D held in the secure area 110. This discarding may be done immediately after P has finished processing D. P may also be discarded in the same way as D.
[0043] In S113, the data processing device 100 encrypts P(D) held in the secure area 110 using PKd to obtain HybEnc(P(D), PKd).
[0044] In S114, the data processing device 100 transmits HybEnc(P(D),PKd) to the data holding device 200. In S115, the data processing device 100 discards P(D). This may be done immediately after HybEnc(P(D),PKd) is generated or immediately after HybEnc(P(D),PKd) is transmitted. HybEnc(P(D),PKd) may be stored for auditing, backup, or the like.
[0045] In S116, the data holding device 200 decrypts P(D) using SKd, thereby enabling the data holding device 200 to obtain P(D).
[0046] In the above example, P(D) is encrypted and decrypted based on the public key by using PKd and SKd, but instead, P(D) may be encrypted and decrypted by using Kd. That is, it may be done as follows.
[0047] In S113, the data processing device 100 encrypts P(D) held in the secure area 110 using Kd to obtain Enc(P(D), Kd).
[0048] In S114, the data processing device 100 transmits Enc(P(D), Kd) to the data holding device 200. In S115, the data processing device 100 discards P(D). This may be done immediately after generating Enc(P(D), Kd) or immediately after transmitting Enc(P(D), Kd). Enc(P(D), Kd) may be stored for auditing, backup, or the like.
[0049] In S116, the data holding device 200 decrypts P(D) using Kd, thereby enabling the data holding device 200 to obtain P(D).
[0050] In the above process flow, the communication unit 120 of the data processing device 100 may block communications other than those via the secure area 110 related to P or D. In particular, download communications to devices other than the data holding device 200 may be blocked.
[0051] According to the first embodiment, mainly from the viewpoint of the program author (program providing device 300), P and D are kept secret from the data processing device 100, P is kept secret from the data holder (data holding device 200), and the execution result of P(D) can be provided to the data holder (data holding device 200) without the program author (program providing device 300) knowing D and P(D).
[0052] Example 2 Next, a second embodiment will be described with reference to Fig. 5. As a premise of the processing flow in Fig. 5, the data holding device 200 holds D, PKd, and SKd, and the program providing device 300 holds HA, TA, P, PKp, and SKp. Note that the TA and HA may be provided in advance to the program providing device 300 by the operator of the data processing device 100 in SDK or library format so that the program providing device 300 can package P together with the TA and HA.
[0053] In addition, in the second embodiment, it is assumed that the data processing device 100 provides Web services to each user (data storage device 200, program providing device 300), and it is assumed that user authentication (each user) and server authentication (data processing device 100) used in general Web services have been performed.
[0054] In S201, the data holding device 200 transmits HybEnc(D, PKd) obtained by encrypting D with PKd to the data processing device 100. In S202, the program providing device 300 transmits HybEnc(P, PKp) obtained by encrypting P with PKp to the data processing device 100.
[0055] HybEnc(D,PKd) and HybEnc(P,PKp) are each stored in the storage (data storage unit 130 outside secure area 110) of data processing device 100. Note that HybEnc(D,PKd) and HybEnc(P,PKp) may be stored in data processing device 100 offline.
[0056] In S203, the data processing device 100 and the program providing device 300 each generate (calculate) a common key Kt using ECDHE with attestation.
[0057] In S204, the program providing device 300 transmits Enc(TA,Kt), PKp, MAC(PKp,Kt), Sig(H(Enc(TA,Kt)),SKp) to the data processing device 100.
[0058] The data processing device 100 obtains PKp from the information received in S204, and decrypts TA using Kt. In S205, the data processing device 100 starts (generates) the secure area 110 by executing TA.
[0059] The method by which the data processing device 100 obtains the PKp is not limited to the above-mentioned method. For example, the PKp may be obtained from an external trusted server that manages public keys.
[0060] In S206, the data processing device 100 and the program providing device 300 each generate and store a common key Kp using ECDHE with attestation. In the data processing device 100, the common key Kp is generated in the secure area 110, and the common key Kp is stored in the secure area 110.
[0061] In S207, the data processing device 100 and the data holding device 200 each generate and hold a common key Kd using ECDHE with attestation. In the data processing device 100, the common key Kd is generated in the secure area 110, and the common key Kd is held in the secure area 110.
[0062] Note that, prior to S205, the data processing device 100 has verified the signature of the program providing device 300, but has not verified the signature for the data retention device 200. Therefore, prior to executing S207, the data processing device 100 may execute access control to determine whether the secure area 110 is permitted to exchange keys with the data retention device 200. For example, by using an access list that lists the data retention devices 200 permitted by the program providing device 300, key exchange can be performed only with data retention devices 200 permitted by the program providing device 300.
[0063] In S208, program providing device 300 encrypts SKp with Kp. In S209, program providing device 300 transmits Enc(SKp,Kp), SIG(H(Enc(SKp,Kp)),SKp) to data processing device 100.
[0064] In S210, the data processing device 100 performs signature verification, decrypts SKp with Kp in the secure area 110, and decrypts P from HybEnc(P, PKp) with SKp. After completing the decryption using SKp, the data processing device 100 discards SKp.
[0065] In S211, the data holding device 200 encrypts SKd with Kd. In S212, the data holding device 200 transmits Enc(SKd, Kd), PKd, and MAC(PKd, Kd) to the data processing device 100.
[0066] In S213, the data processing device 100 performs signature verification, decrypts SKd with Kd in the secure area 110, and decrypts D from HybEnc(D, PKd) with SKd. After completing the decryption using SKd, the data processing device 100 discards SKd. Also, the secure area 110 holds PKd.
[0067] In S214, the data processing device 100 calculates P(D) in the secure area 110. In S215, the data processing device 100 discards D held in the secure area 110. This discarding may be done immediately after P finishes processing D. Also, P may be discarded in the same way as D.
[0068] In S216, the data processing device 100 encrypts P(D) held in the secure area 110 using PKd to obtain HybEnc(P(D), PKd).
[0069] In S217, the data processing device 100 transmits HybEnc(P(D),PKd) to the data holding device 200. In S218, the data processing device 100 discards P(D). This may be done immediately after HybEnc(P(D),PKd) is generated or immediately after HybEnc(P(D),PKd) is transmitted. HybEnc(P(D),PKd) may be stored for auditing, backup, or the like.
[0070] In S219, the data holding device 200 decrypts P(D) using SKd, thereby enabling the data holding device 200 to obtain P(D).
[0071] In the above example, P(D) is encrypted and decrypted based on the public key by using PKd and SKd, but instead of this, P(D) may be encrypted and decrypted using a common key (herein called a second common key, Kd2) shared between the data processing device 100 and the data holding device 200. That is, it may be done as follows.
[0072] In S216, the data processing device 100 encrypts P(D) held in the secure area 110 using Kd2 to obtain Enc(P(D), Kd2).
[0073] In S217, the data processing device 100 transmits Enc(P(D), Kd2) to the data holding device 200. In S218, the data processing device 100 discards P(D). This may be done immediately after generating Enc(P(D), Kd2) or immediately after transmitting Enc(P(D), Kd2). Enc(P(D), Kd2) may be stored for auditing, backup, or the like.
[0074] In S219, the data holding device 200 decrypts P(D) using Kd2, thereby enabling the data holding device 200 to obtain P(D).
[0075] In the above example, D and P are encrypted with a public key in S201 and S202, but instead of this, D and P may be encrypted with a common key. That is, the following may be done.
[0076] In S201, the data holding device 200 transmits Enc(D, Kd2), which is obtained by encrypting D with Kd2, to the data processing device 100. In S202, the program providing device 300 transmits Enc(P, Kp2), which is obtained by encrypting P with Kp2, to the data processing device 100.
[0077] Enc(D, Kd2) and Enc(P, Kp2) are each stored in the storage (data storage unit 130 outside the secure area 110) of the data processing device 100. Note that Enc(D, Kd2) and Enc(P, Kp2) may be stored in the data processing device 100 offline.
[0078] In this case, there is no need to transmit the private key / public key from the program providing device 300 / data holding device 200 to the data processing device 100. However, in a process similar to the process for transmitting and receiving SKp described in S208 to S210, Kp2 is transmitted from the program providing device 300 to the data processing device 100, and the data processing device 100 acquires Kp2. Also, in a process similar to the process for transmitting and receiving SKd described in S211 to S213, Kd2 is transmitted from the data holding device 200 to the data processing device 100, and the data processing device 100 acquires Kd2.
[0079] After the secure area is started in S205, the data processing device 100 decrypts D with Kd2 and decrypts P with Kp2. In S214, the data processing device 100 calculates P(D) in the secure area 110. In S215, the data processing device 100 discards D held in the secure area 110. This discarding may be done immediately after the processing of D by P is completed. P may also be discarded in the same way as D.
[0080] In S216, the data processing device 100 encrypts P(D) held in the secure area 110 using Kd2 to obtain Enc(P(D), Kd2).
[0081] In S217, the data processing device 100 transmits Enc(P(D), Kd2) to the data holding device 200. In S218, the data processing device 100 discards P(D). This may be done immediately after generating Enc(P(D), Kd2) or immediately after transmitting Enc(P(D), Kd2). Enc(P(D), Kd2) may be stored for auditing, backup, or the like.
[0082] In S219, the data holding device 200 decrypts P(D) using Kd2, thereby enabling the data holding device 200 to obtain P(D).
[0083] In the above process flow, the communication unit 120 of the data processing device 100 may block communications other than those via the secure area 110 related to P or D. In particular, download communications to devices other than the data holding device 200 may be blocked.
[0084] As in the first embodiment, according to the second embodiment, mainly from the viewpoint of the program author (program providing device 300), P and D are kept secret from the data processing device 100, P is kept secret from the data holder (data holding device 200), and the execution result of P(D) can be provided to the data holder (data holding device 200) without the program author (program providing device 300) knowing D and P(D).
[0085] Furthermore, according to the second embodiment, P and D are encrypted and stored in advance in the data processing device 100, so that desired data processing can be achieved by simply sending small-sized keys (SKp, SKd) to the data processing device 100. As a result, even if the size of the program P or data D is large, the user waiting time, such as the upload time, does not increase.
[0086] Furthermore, since cloud storage in a cloud, which is assumed as an example of a specific implementation form of the data processing device 100, can be used as a storage location for the encrypted P and D, the service related to Example 2 can be easily provided to users who use cloud storage.
[0087] Example 3 Next, a third embodiment will be described with reference to Fig. 6. As a premise of the processing flow in Fig. 6, the data holding device 200 holds D, PKd, and SKd, and the program providing device 300 holds HA, TA, P, PKp, and SKp. Note that the TA and HA may be provided in advance to the program providing device 300 by the operator of the data processing device 100 in SDK or library format so that the program providing device 300 can package P together with the TA and HA.
[0088] In addition, in the third embodiment, it is assumed that the data processing device 100 provides Web services to each user (data storage device 200, program providing device 300), and it is assumed that user authentication (each user) and server authentication (data processing device 100) used in general Web services have been performed.
[0089] In S301, the data holding device 200 transmits HybEnc(D,PKd) obtained by encrypting D with PKd to the data processing device 100. In S302, the program providing device 300 transmits HA, TA including an interpreter, HybEnc(P,PKp) obtained by encrypting P with PKp, and a signature with SKp, "HA+TA(including interpreter)+HybEnc(P,PKp)&Sig(H(TA+HybEnc(P,PKp)),SKp)" to the data processing device 100.
[0090] HybEnc(D,PKd) and "HA+TA(including interpreter)+HybEnc(P,PKp)&Sig(H(TA+HybEnc(P,PKp)),SKp)" are each stored in the storage (data storage unit 130 outside secure area 110) of data processing device 100. Note that HybEnc(D,PKd) and "HA+TA(including interpreter)+HybEnc(P,PKp)&Sig(H(TA+HybEnc(P,PKp)),SKp)" may be stored in data processing device 100 offline.
[0091] Here, the above-mentioned interpreter will be explained. In the third embodiment, the TA (including the interpreter) and HybEnc(P, PKp) are configured as a set, so when the secure area 110 is started (initialized) by the TA (including the interpreter), P is fixed in an encrypted state to the secure area 110 together with the interpreter included in the TA. As will be described later, in the secure area 110, P is decrypted by SKp, interpreted by the interpreter, and executed.
[0092] One possible technique for using an interpreter in a secure area is to insert a program into the secure area after the secure area has started up. However, this technique leaves the possibility of an unauthorized program being inserted and executed. In contrast, the technique of the third embodiment only decrypts, interprets, and executes the encrypted P that is paired with the TA (including the interpreter), eliminating the possibility of an unauthorized program being executed.
[0093] In S303, the program providing device 300 transmits PKp and Sig(PKp, SKp) to the data processing device 100.
[0094] The data processing device 100 verifies the signature from the information received in S303 and obtains PKp. In S304, the data processing device 100 executes the TA (including the interpreter) stored in the storage to start (generate) the secure area 110. The interpreter is built into the secure area 110. In addition, the encrypted P is fixed.
[0095] The method by which the data processing device 100 obtains the PKp is not limited to the above-mentioned method. For example, the PKp may be obtained from an external trusted server that manages public keys.
[0096] In S305, the data processing device 100 and the program providing device 300 each generate and store a common key Kp using ECDHE with attestation. In the data processing device 100, the common key Kp is generated in the secure area 110, and the common key Kp is stored in the secure area 110.
[0097] In S306, the data processing device 100 and the data holding device 200 each generate and hold a common key Kd using ECDHE with attestation. In the data processing device 100, the common key Kd is generated in the secure area 110, and the common key Kd is held in the secure area 110.
[0098] Note that, prior to S304, the data processing device 100 has verified the signature of the program providing device 300, but has not verified the signature for the data retention device 200. Therefore, prior to executing S306, the data processing device 100 may execute access control to determine whether the secure area 110 is permitted to exchange keys with the data retention device 200. For example, by using an access list that lists the data retention devices 200 permitted by the program providing device 300, key exchange can be performed only with data retention devices 200 permitted by the program providing device 300.
[0099] In S307, the program providing device 300 encrypts SKp with Kp. In S308, the program providing device 300 transmits Enc(SKp,Kp) and SIG(H(Enc(SKp,Kp)),SKp) to the data processing device 100.
[0100] In S309, the data processing device 100 decrypts SKp with Kp in the secure area 110, and decrypts P from HybEnc(P, PKp) with SKp. After completing the decryption using SKp, the data processing device 100 discards SKp.
[0101] In S310, the data holding device 200 encrypts SKd with Kd. In S311, the data holding device 200 transmits Enc(SKd, Kd), PKd, and MAC(PKd, Kd) to the data processing device 100.
[0102] In S312, the data processing device 100 verifies the MAC, decrypts SKd with Kd in the secure area 110, and decrypts D from HybEnc(D, PKd) with SKd. After completing the decryption using SKd, the data processing device 100 discards SKd. Also, the secure area 110 holds PKd.
[0103] In S313, the data processing device 100 calculates P(D) in the secure area 110. In S314, the data processing device 100 discards D held in the secure area 110. This discarding may be done immediately after P finishes processing D. Also, P may be discarded in the same way as D.
[0104] In S315, the data processing device 100 encrypts P(D) held in the secure area 110 using PKd to obtain HybEnc(P(D), PKd).
[0105] In S316, the data processing device 100 transmits HybEnc(P(D),PKd) to the data holding device 200. In S317, the data processing device 100 discards P(D). This may be done immediately after HybEnc(P(D),PKd) is generated or immediately after HybEnc(P(D),PKd) is transmitted. HybEnc(P(D),PKd) may be stored for auditing, backup, or the like.
[0106] In S318, the data holding device 200 decrypts P(D) using SKd, thereby enabling the data holding device 200 to obtain P(D).
[0107] In the above example, P(D) is encrypted and decrypted based on the public key by using PKd and SKd, but instead of this, P(D) may be encrypted and decrypted using a common key (herein called a second common key, Kd2) shared between the data processing device 100 and the data holding device 200. That is, it may be done as follows.
[0108] In S315, the data processing device 100 encrypts P(D) held in the secure area 110 using Kd2 to obtain Enc(P(D), Kd2).
[0109] In S316, the data processing device 100 transmits Enc(P(D), Kd2) to the data holding device 200. In S317, the data processing device 100 discards P(D). This may be done immediately after generating Enc(P(D), Kd2) or immediately after transmitting Enc(P(D), Kd2). Enc(P(D), Kd2) may be stored for auditing, backup, or the like.
[0110] In S318, the data holding device 200 decrypts P(D) using Kd2, thereby enabling the data holding device 200 to obtain P(D).
[0111] In the above example, D and P are encrypted with a public key in S301 and S302, but instead of this, D and P may be encrypted with a common key. That is, the following may be done.
[0112] In S301, the data holding device 200 transmits Enc(D, Kd2) obtained by encrypting D with Kd2 to the data processing device 100. In S302, the program providing device 300 transmits "HA+TA(including interpreter)+Enc(P, Kp2)" including HA, TA including an interpreter, and Enc(P, Kp2) obtained by encrypting P with Kp2 to the data processing device 100. Note that a signature may be affixed to "HA+TA(including interpreter)+Enc(P, Kp2)".
[0113] Enc(D, Kd2) and "HA+TA (including interpreter)+Enc(P, Kp2)" are each stored in the storage (data storage unit 130 outside secure area 110) of data processing device 100. Note that Enc(D, Kd2) and "HA+TA (including interpreter)+Enc(P, Kp2)" may be stored in data processing device 100 offline.
[0114] In this case, there is no need to transmit the private key / public key from the program providing device 300 / data holding device 200 to the data processing device 100. However, in a process similar to the process for transmitting and receiving SKp described in S307 to S309, Kp2 is transmitted from the program providing device 300 to the data processing device 100, and the data processing device 100 acquires Kp2. Also, in a process similar to the process for transmitting and receiving SKd described in S310 to S312, Kd2 is transmitted from the data holding device 200 to the data processing device 100, and the data processing device 100 acquires Kd2.
[0115] After the secure area is started in S304, the data processing device 100 decrypts D with Kd2 and decrypts P with Kp2. In S313, the data processing device 100 calculates P(D) in the secure area 110. In S314, the data processing device 100 discards D held in the secure area 110. This discarding may be done immediately after the processing of D by P is completed. P may also be discarded in the same way as D.
[0116] In S315, the data processing device 100 encrypts P(D) held in the secure area 110 using Kd2 to obtain Enc(P(D), Kd2).
[0117] In S316, the data processing device 100 transmits Enc(P(D), Kd2) to the data holding device 200. In S317, the data processing device 100 discards P(D). This may be done immediately after generating Enc(P(D), Kd2) or immediately after transmitting Enc(P(D), Kd2). Enc(P(D), Kd2) may be stored for auditing, backup, or the like.
[0118] In S318, the data holding device 200 decrypts P(D) using Kd2, thereby enabling the data holding device 200 to obtain P(D).
[0119] In the above process flow, the communication unit 120 of the data processing device 100 may block communications other than those via the secure area 110 related to P or D. In particular, download communications to devices other than the data holding device 200 may be blocked.
[0120] As in the first embodiment, according to the third embodiment, mainly from the viewpoint of the program author (program providing device 300), P and D are kept secret from the data processing device 100, P is kept secret from the data holder (data holding device 200), and the execution result of P(D) can be provided to the data holder (data holding device 200) without the program author (program providing device 300) knowing D and P(D).
[0121] Furthermore, according to the third embodiment, as in the second embodiment, P and D are encrypted and stored in advance in the data processing device 100, so that desired data processing can be achieved simply by sending small-sized keys (SKp, SKd) to the data processing device 100. As a result, even if the size of the program P or data D is large, the user waiting time, such as the upload time, does not increase.
[0122] Furthermore, since cloud storage in a cloud, which is assumed as an example of a specific implementation form of the data processing device 100, can be used as a storage location for the encrypted P and D, the service related to Example 3 can be easily provided to users who use cloud storage.
[0123] In addition, as an interpreter in a secure area, a configuration in which a program is inserted later can be considered to increase the degree of freedom of programs in the secure area. However, this configuration increases the possibility that a malicious program will be inserted and executed in the secure area.
[0124] On the other hand, according to the technology of the third embodiment, P freely created by the program provider can be fixed within the secure area 110 when the secure area 110 is started up, so that it is possible to maintain the freedom of the program while reducing the possibility of inserting a malicious program later.
[0125] (Hardware configuration example) The data processing device 100, the data holding device 200, and the program providing device 300 can all be realized by, for example, having a computer execute a program. This computer may be a physical computer or a virtual machine on the cloud. The data processing device 100, the data holding device 200, and the program providing device 300 are collectively referred to as "devices."
[0126] That is, the device can be realized by executing a program corresponding to the processing performed by the device, using hardware resources such as a CPU and memory built into a computer. The program can be recorded on a computer-readable recording medium (such as a portable memory) and stored or distributed. The program can also be provided via a network such as the Internet or email.
[0127] Fig. 7 is a diagram showing an example of the hardware configuration of the computer. The computer in Fig. 7 has a drive device 1000, an auxiliary storage device 1002, a memory device 1003, a CPU 1004, an interface device 1005, a display device 1006, an input device 1007, an output device 1008, and the like, all of which are connected to one another via a bus BS. Note that some of these devices may not be included. For example, if no display is performed, the display device 1006 may not be included.
[0128] The program for realizing the processing on the computer is provided by a recording medium 1001 such as a CD-ROM or a memory card. When the recording medium 1001 storing the program is set in the drive device 1000, the program is installed from the recording medium 1001 to the auxiliary storage device 1002 via the drive device 1000. However, the program does not necessarily have to be installed from the recording medium 1001, but may be downloaded from another computer via a network. The auxiliary storage device 1002 stores the installed program as well as necessary files, data, etc.
[0129] The memory device 1003 reads out and stores the program from the auxiliary storage device 1002 when an instruction to start the program is received. The CPU 1004 realizes the functions related to the device in accordance with the program stored in the memory device 1003. The interface device 1005 is used as an interface for connecting to a network, and functions as a transmitting unit and a receiving unit. The display device 1006 displays a GUI (Graphical User Interface) or the like according to a program. The input device 1007 is composed of a keyboard and mouse, buttons, a touch panel, or the like, and is used to input various operation instructions. The output device 1008 outputs the results of calculations.
[0130] (Examples of application areas) The technology described in this embodiment is applicable to various use cases, examples of which are listed below.
[0131] Traffic flow simulator (http: / / www.jste.or.jp / sim / models / index.html) - People flow simulator (https: / / info.hitachi-ics.co.jp / product / h_flow / ) Heart Simulator (https: / / blog.global.fujitsu.com / jp / 2018-05-10 / 01 / ) Brain Simulator (https: / / bicr.atr.jp / cbi / research-ja / %E8%84%B3%E6%B4%BB%E5%8B%95%E8%A8%88%E6%B8%AC%E3%83%87%E3%83%BC%E3%82%BF%E3%82%B7%E3%83%9F%E3%83%A5%E3%83%AC%E3%83%BC%E3%82%BF / ) ·Materials property simulator (https: / / www.jsol-cae.com / product / material / jocta / ) Robot simulator (http: / / www.idec-fs.com / robodk / ) FPGA simulator (https: / / www.intel.co.jp / content / www / jp / ja / software / programmable / quartus-prime / model-sim.html) Space Simulator (http: / / www.astro.phys.s.chiba-u.ac.jp / netlab / astro / index2.html) · Virtual Pets (https: / / www.discoverychannel.jp / 0000007144 / ) · Speech synthesis (https: / / cloud.google.com / text-to-speech?hl=ja)
[0132] (Effects of the embodiment) As described above, the technology of this embodiment provides a technology that prevents data from being leaked to the program provider and prevents the program from being leaked to the data holder when data of a data holder is processed using a program of a program provider by a data processing device equipped with a secret computation mechanism.
[0133] (Summary of the embodiment) This specification discloses at least the following program execution system, data processing device, program execution method, and program. (Section 1) A program execution system including a data storage device, a program providing device, and a data processing device having a mechanism for performing secure computation in a secure area, the data storage device transmits encrypted data encrypted with a first common key to the data processing device, and the program providing device transmits an encrypted program encrypted with a second common key to the data processing device; the data processing device, in the secure area, obtains data by decrypting the encrypted data with the first common key, obtains the program by decrypting the encrypted program with the second common key, executes the program on the data, and encrypts a result of the execution with a public key of the data storage device or the first common key; the data processing device transmits the encrypted execution result to the data holding device; The data storage device acquires the execution result by decrypting the encrypted execution result using a private key or the first common key. Program execution system. (Section 2) A program execution system including a data storage device, a program providing device, and a data processing device having a mechanism for performing secure computation in a secure area, the data processing device stores in advance encrypted data encrypted with a first public key, which is a public key of the data storage device, and an encrypted program encrypted with a second public key, which is a public key of the program providing device; The data storage device transmits an encrypted first private key encrypted with a first common key to the data processing device, and the program providing device transmits an encrypted second private key encrypted with a second common key to the data processing device; the data processing device, in the secure area, obtains a first secret key by decrypting the encrypted first secret key with the first common key, obtains data by decrypting the encrypted data with the first secret key, obtains a second secret key by decrypting the encrypted second secret key with the second common key, obtains a program by decrypting the encrypted program with the second secret key, executes the program on the data, and encrypts a result of the execution with a public key of the data storage device; the data processing device transmits the encrypted execution result to the data holding device; The data storage device acquires the execution result by decrypting the encrypted execution result using a private key. Program execution system. (Section 3) The data processing device executes an application including an interpreter to start up a secure area including the encrypted program, and the interpreter interprets the decrypted program. 3. A program execution system as set forth in claim 2. (Section 4) The data processing device executes the program in the secure area and then discards the data and the execution result. A program execution system according to any one of claims 1 to 3. (Section 5) A data processing device in a program execution system including a data storage device, a program providing device, and a data processing device having a mechanism for performing a secure computation in a secure area, a receiving means for receiving encrypted data encrypted with a first common key from the data holding device and receiving an encrypted program encrypted with a second common key from the program providing device; a processing means for, in the secure area, acquiring data by decrypting the encrypted data with the first common key, acquiring a program by decrypting the encrypted program with the second common key, executing the program on the data, and encrypting a result of the execution with a public key of the data storage device or the first common key; a transmission means for transmitting the encrypted execution result to the data holding device; A data processing device comprising: (Section 6) A data processing device in a program execution system including a data storage device, a program providing device, and a data processing device having a mechanism for performing a secure calculation in a secure area, a storage means for storing encrypted data encrypted with a first public key, which is a public key of the data storage device, and an encrypted program encrypted with a second public key, which is a public key of the program providing device; a receiving means for receiving from said data storage device an encrypted first private key encrypted with a first common key, and for receiving from said program providing device an encrypted second private key encrypted with a second common key; a processing means for, in said secure area, obtaining a first secret key by decrypting said encrypted first secret key with said first common key, obtaining data by decrypting said encrypted data with said first secret key, obtaining a second secret key by decrypting said encrypted second secret key with said second common key, obtaining a program by decrypting said encrypted program with said second secret key, executing said program on said data, and encrypting a result of the execution with a public key of said data storage device; a transmission means for transmitting the encrypted execution result to the data holding device; A data processing device comprising: (Section 7) A program execution method in a program execution system including a data storage device, a program providing device, and a data processing device including a mechanism for performing secure computation in a secure area, comprising: the data storage device transmits encrypted data encrypted with a first common key to the data processing device, and the program providing device transmits an encrypted program encrypted with a second common key to the data processing device; the data processing device, in the secure area, obtains data by decrypting the encrypted data with the first common key, obtains the program by decrypting the encrypted program with the second common key, executes the program on the data, and encrypts a result of the execution with a public key of the data storage device or the first common key; the data processing device transmits the encrypted execution result to the data holding device; The data storage device acquires the execution result by decrypting the encrypted execution result using a private key or the first common key. How to run a program. (Section 8) A program for causing a computer to function as each of the means in the data processing device according to claim 5 or 6.
[0134] Although the present embodiment has been described above, the present invention is not limited to such a specific embodiment, and various modifications and variations are possible within the scope of the gist of the present invention described in the claims. [Explanation of symbols]
[0135] 100 Data processing device 200 Data retention device 300 Program providing device 110 Secure Area 111 Secure Data Storage 112 Secure Processing Unit 120 Communications Department 130 Data storage unit 140 Data Processing Unit 1000 Drive Device 1001 Recording media 1002 Auxiliary storage 1003 Memory device 1004 CPU 1005 Interface device 1006 Display device 1007 Input Device 1008 Output device
Claims
1. A program execution system including a data storage device and a data processing device having a secure area, the data holding device transmits encrypted data encrypted with a common key to the data processing device; the data processing device, in the secure area, obtains data by decrypting the encrypted data with the common key, obtains a program by decrypting an encrypted program received from a program providing device with a second common key different from the common key, executes the program on the data, and encrypts a result of the execution with a public key of the data holding device or the common key; the data processing device transmits the encrypted execution result to the data holding device; The data holding device acquires the execution result by decrypting the encrypted execution result using a private key or the common key. Program execution system.
2. A program execution system including a data storage device and a data processing device having a secure area, The data processing device stores encrypted data encrypted with a public key of the data storage device in advance, The data storage device transmits an encrypted private key encrypted with a common key to the data processing device; the data processing device, in the secure area, obtains a private key by decrypting the encrypted private key with the common key, obtains data by decrypting the encrypted data with the private key, executes a program on the data, and encrypts a result of the execution with a public key of the data storage device or the common key; the data processing device transmits the encrypted execution result to the data holding device; The data holding device acquires the execution result by decrypting the encrypted execution result using a private key or the common key. Program execution system.
3. The data processing device executes an application including an interpreter to start up a secure area including the program, and the interpreter interprets the program.
3. The program execution system according to claim 2.
4. The data processing device executes the program in the secure area and then discards the data and the execution result.
4. The program execution system according to claim 1.
5. A data processing device in a program execution system including a data holding device and a data processing device having a secure area, a receiving means for receiving encrypted data encrypted with a common key from the data holding device; a processing means for, in the secure area, acquiring data by decrypting the encrypted data with the common key, acquiring a program by decrypting an encrypted program received from a program providing device with a second common key different from the common key, executing the program on the data, and encrypting a result of the execution with a public key of the data holding device or the common key; a transmission means for transmitting the encrypted execution result to the data holding device; A data processing device comprising:
6. A data processing device in a program execution system including a data holding device and a data processing device having a secure area, a storage means for storing encrypted data encrypted with the public key of the data storage device; a receiving means for receiving an encrypted private key encrypted with a common key from the data holding device; a processing means for, in said secure area, obtaining a private key by decrypting said encrypted private key with said common key, obtaining data by decrypting said encrypted data with said private key, executing a program on said data, and encrypting a result of said execution with a public key of said data storage device or said common key; a transmission means for transmitting the encrypted execution result to the data holding device; A data processing device comprising:
7. A data storage device in a program execution system including a data processing device having a secure area, the data storage device comprising: a transmission means for transmitting encrypted data encrypted with a common key to said data processing device; a receiving means for receiving, in the secure area of the data processing device, data by decrypting the encrypted data with the common key, and a program by decrypting an encrypted program received from a program providing device with a second common key different from the common key, executing the program on the data, and receiving an execution result encrypted with a public key of the data storage device or the common key; a decryption means for acquiring the execution result by decrypting the execution result using a private key or the common key; A data holding device comprising:
8. A data storage device in a program execution system including a data processing device having a secure area, the data storage device comprising: a transmission means for transmitting an encrypted private key encrypted with a common key to said data processing device; a receiving means for receiving an execution result obtained by decrypting the encrypted data with a private key obtained by decrypting the encrypted private key with the common key in the secure area of the data processing device, and encrypting the execution result with a public key of the data storage device or the common key; a decryption means for acquiring the execution result by decrypting the execution result using a private key or the common key; A data holding device comprising:
9. A program execution method in a program execution system including a data holding device and a data processing device including a secure area, comprising: the data holding device transmits encrypted data encrypted with a common key to the data processing device; the data processing device, in the secure area, obtains data by decrypting the encrypted data with the common key, obtains a program by decrypting an encrypted program received from a program providing device with a second common key different from the common key, executes the program on the data, and encrypts a result of the execution with a public key of the data holding device or the common key; the data processing device transmits the encrypted execution result to the data holding device; The data holding device acquires the execution result by decrypting the encrypted execution result using a private key or the common key. How to run a program.
10. A program for causing a computer to function as each of the means in the data processing device according to claim 5 or 6.
11. A program for causing a computer to function as each of the means in the data holding device according to claim 7 or 8.
Citation Information
Patent Citations
Application protection device, application protection method, and application protection program
JP2007334821A
SYSTEM AND METHOD FOR A SECURE ELECTRONIC TRANSACTION PLATFORM - Patent application
JP2021533435A
System and method for secure electronic transaction platform
WO2019227208A1