WO2025187037A1 - データ共有装置およびデータ共有方法 - Google Patents
データ共有装置およびデータ共有方法Info
- Publication number
- WO2025187037A1 WO2025187037A1 PCT/JP2024/009008 JP2024009008W WO2025187037A1 WO 2025187037 A1 WO2025187037 A1 WO 2025187037A1 JP 2024009008 W JP2024009008 W JP 2024009008W WO 2025187037 A1 WO2025187037 A1 WO 2025187037A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- execution environment
- user
- isolated execution
- isolated
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
Definitions
- This disclosure relates to a data sharing device and a data sharing method.
- Data sovereignty refers to the right of data owners to control and manage their own data, as well as the right to have it subject to the laws and governance of the country in which it is collected.
- Another issue is that if a user or system operator has malicious intent, they could change the programs or data managed by them, rewrite the data usage conditions after they have agreed to them, or leak data to the outside.
- This disclosure has been made in light of the above and aims to fully protect users' data sovereignty.
- a data sharing device is a data sharing device that provides data sharing between users, and includes a connection unit that connects to a data distribution infrastructure and forms an agreement between users on sharing conditions, including the data to be shared and terms of use, and an execution unit that launches a safe, isolated execution environment using an image of the execution environment that includes a program that operates in accordance with the sharing conditions, and receives and processes data within the isolated execution environment in accordance with the sharing conditions.
- One aspect of the data sharing method disclosed herein is a data sharing method that provides data sharing between users, in which a computer connects to a data distribution infrastructure, forms an agreement between users on sharing conditions, including the data to be shared and terms of use, launches a secure, isolated execution environment using an image of the execution environment that includes a program that operates in accordance with the sharing conditions, and receives and processes data within the isolated execution environment in accordance with the sharing conditions.
- This disclosure ensures that users' data sovereignty is fully protected.
- FIG. 1 is a diagram illustrating an example of the configuration of a data distribution infrastructure.
- FIG. 2 is a diagram illustrating an example of the configuration of the connection unit.
- FIG. 3 is a sequence diagram showing an example of the flow of a data sharing process.
- FIG. 4 is a sequence diagram showing an example of the flow of a data sharing process.
- FIG. 5 is a diagram illustrating an example of the configuration of the data distribution infrastructure.
- FIG. 6 is a sequence diagram showing an example of the flow of a data sharing process.
- FIG. 7 is a sequence diagram showing an example of the flow of data sharing processing on the data provider side.
- FIG. 8 is a sequence diagram showing an example of the flow of a data transmission process between users.
- FIG. 9 is a sequence diagram showing an example of the flow of data sharing processing on the data user side.
- FIG. 10 is a diagram illustrating an example of the hardware configuration of each device and each unit of the data distribution platform.
- FIG. 1 An example of the configuration of a data distribution infrastructure 100 will be described with reference to Fig. 1.
- the data distribution infrastructure 100 in Fig. 1 is a centralized type, but the data distribution infrastructure may also be a decentralized type.
- User A is a person who belongs to Company A. User A uses connection unit 200A of data distribution infrastructure 100 to communicate with other users connected to data distribution infrastructure 100.
- User B is a person who belongs to Company B. User B uses connection unit 200B of data distribution infrastructure 100 to communicate with other users connected to data distribution infrastructure 100.
- Connection units 200A and 200B hold an identification ID that enables mutual authentication with the data distribution platform 100, and credentials that prove this. For example, if the data distribution platform 100 uses a centralized authentication server, connection units 200A and 200B use an identifier such as a URI as the identification ID, and hold, as credentials, a certificate issued by a Certificate Authority (CA) operated by an organization trusted by the data distribution platform. If decentralized authentication is performed on the data distribution platform, connection units 200A and 200B hold a decentralized identifier (DID), and verifiable credentials (VC) signed by an organization trusted by the data distribution platform.
- DID decentralized identifier
- VC verifiable credentials
- connection units 200A and 200B use the data distribution infrastructure 100 via connection units 200A and 200B to reach an agreement on data sharing.
- the transmission/reception units 220A and 220B share the data between users A and B in accordance with policies managed by connection units 200A and 200B.
- the transmission/reception unit 220A retrieves user A's shared data from data storage unit 300A and transmits it to the transmission/reception unit 220B, which then stores the shared data in the data storage unit 300B.
- FIG. 2 shows an example of the configuration of connection units 200A and 200B.
- Connection units 200A and 200B include an asset definition management unit 201, a policy definition management unit 202, a contract definition management unit 203, a contract negotiation function unit 204, a contract agreement management unit 205, a policy application unit 206, and an authentication function unit 210.
- the Eclipse Dataspace Component an open source connector implementation, can be used as connection units 200A and 200B.
- Connection units 200A and 200B may include transmission/reception units 220A and 220B, or execution units 230A and 230B, which will be described later.
- connection units 200A and 200B will be explained with reference to the sequence diagrams in Figures 3 and 4.
- step S101 user A defines assets, such as identifiers, addresses, credentials required for data access, and descriptive and attribute information about the data (or data sets) that their company may share with other companies, and registers these assets in the asset definition management unit 201 of connection unit 200A.
- assets such as identifiers, addresses, credentials required for data access, and descriptive and attribute information about the data (or data sets) that their company may share with other companies, and registers these assets in the asset definition management unit 201 of connection unit 200A.
- step S102 user A defines the data usage conditions for sharing their company's assets with other companies as a policy and registers it in the policy definition management unit 202 of the connection unit 200A.
- Data usage conditions can include the scope of asset disclosure (company name, required qualifications, country/region, etc.), whether the assets may be extracted from the other company's system with which the data is shared, what conditions the other company may meet to analyze the assets using a program, the number of times, period, and type of execution environment the other company may perform analysis processing on the assets, and the period until the other company deletes the data.
- step S103 user A defines a contract that combines their company's assets and policies, and registers it in the contract definition management unit 203 of the connection unit 200A.
- the contract includes asset definitions and policy definitions, and is information for sharing with other companies information about which assets (data) are available to other companies under what policies (data usage conditions).
- data usage conditions data usage conditions.
- step S104 user A publishes the contract as a contract proposal so that other companies can see it.
- User A can decide the scope of the contract proposal to be made public.
- the data distribution infrastructure is centralized, user A uses the function of contract negotiation function unit 204 of connection unit 200A to register the contract proposal in catalog server 120 provided in data distribution infrastructure 100, making the contract visible to other companies' connection units 200B.
- the data distribution infrastructure is decentralized, user A registers the contract proposal in a decentralized information sharing mechanism that allows contract proposals to be shared between each user's connection units 200A and 200B, making the contract visible to other companies' connection units 200B.
- connection unit 200B uses connection unit 200B to view the contract proposal published by user A. If the data distribution infrastructure is centralized, connection unit 200B views user A's contract proposal stored on catalog server 120. If the data distribution infrastructure is decentralized, connection unit 200B views user A's contract proposal using a mechanism for mutually exchanging and propagating catalogs between each user's connection unit 200A and 200B.
- connection unit 200B uses connection unit 200B to initiate encrypted communication with user A's connection unit 200A in order to negotiate a contract in response to user A's contract proposal.
- the authentication function unit 210 of connection unit 200B requests a token from the authentication server 110 provided in the data distribution infrastructure 100, and the authentication server 110 issues a token after confirming that connection unit 200B holds a legitimate certificate.
- Connection unit 200B then transmits the token to the authentication function unit 210 of connection unit 200A.
- Connection unit 200A verifies the signature of the token and authenticates connection unit 200B.
- connection unit 200A requests a token from the authentication server 110, and the authentication server 110 issues a token after confirming that connection unit 200A holds a legitimate certificate.
- Connection unit 200A then transmits the token to authentication function unit 210 of connection unit 200B.
- Connection unit 200B checks the signature of the token and authenticates connection unit 200A. If the data distribution infrastructure 100 is decentralized, connection unit 200B transmits its own DID and VC to connection unit 200A. Connection unit 200A uses the DID and VC to authenticate connection unit 200B. Similarly, connection unit 200A transmits its own DID and VC to connection unit 200B. Connection unit 200B uses the DID and VC to authenticate connection unit 200A. Note that authentication may also be performed using only VC or only Verifiable Presentation (VP).
- VP Verifiable Presentation
- step S107 user B uses the contract negotiation function unit 204 of connection unit 200B to request contract negotiation regarding the contract proposal published by user A from user A's connection unit 200A.
- step S108 the contract negotiation function unit 204 of the connection unit 200A verifies that the contents of the received contract negotiation request meet the conditions regarding the asset disclosure scope (company name, required qualifications, country/region, etc.) specified in the policy. If the conditions are met, the contract negotiation function unit 204 of the connection unit 200A notifies the contract negotiation function unit 204 of the connection unit 200B that negotiation and agreement have been established.
- the asset disclosure scope company name, required qualifications, country/region, etc.
- the contract negotiation function unit 204 of each connection unit 200A, 200B records the contents of the agreed-upon contract in the contract agreement management unit 205 of each connection unit 200A, 200B.
- step S111 the policy application unit 206 of the connection unit 200A instructs the transmission/reception unit 220A of user A to send and receive data based on the asset definition and policy definition included in the contract recorded in the contract agreement management unit 205 of the connection unit 200A.
- step S112 the policy application unit 206 of the connection unit 200B instructs the transmission/reception unit 220B of user B to send and receive data based on the asset definition and policy definition included in the contract recorded in the contract agreement management unit 205 of the connection unit 200B. Note that the processing from step S112 onwards may be initiated in response to an instruction to the connection unit 200B from user B or a server owned by user B, without the processing of step S111 being executed.
- step S113 user B's transceiver unit 220B requests data from user A's transceiver unit 220A.
- step S114 user A's transceiver unit 220A obtains data from user A's data storage unit 300A and transmits the data to user B's transceiver unit 220B.
- step S115 user B's transmission/reception unit 220B stores the data received from user A's transmission/reception unit 220A in user B's data storage unit 300B.
- Transmission/reception units 220A, 220B can be configured as an API server or API client.
- Data storage units 300A, 300B can be configured as a database, object storage, an API server of another system, etc.
- user A who provides data, can define data usage conditions as a policy and provide the data only after reaching an agreement with user B, the recipient of the data.
- policy application unit 206 of connection unit 200B instructs transmission/reception unit 220B to comply with the policy (data usage conditions).
- user B's policy application unit 206 and transmission/reception unit 220B are systems managed by user B, if user B is malicious, he or she can modify the programs of policy application unit 206 or transmission/reception unit 220B so that the policy is not complied with. If this continues, after user A sends data to user B, user A will not be able to control the use of that data, and user A's data sovereignty will not be adequately protected.
- the transmission/reception units 220A and 220B connected to the connection units 200A and 200B are configured as execution units 230A and 230B that provide an isolated execution environment. Only one of the transmission/reception units 220A and 220B may be configured as the execution unit 230A and 230B.
- An isolated execution environment is an environment built using technology known as Trusted Execution Environment (TEE), in which programs can be executed in a secure state isolated from other programs running within the same system, thanks to the memory encryption functionality of hardware such as CPUs and GPUs.
- TEE Trusted Execution Environment
- Using an isolated execution environment protects the data and programs processed within the isolated execution environment from the users who manage the isolated execution environment and the system operators who operate it, making it possible to analyze data in a manner that is confidential from users and system operators.
- Execution units 230A and 230B start the isolated execution environment by directly executing an enclave image, software container image, or virtual machine image (hereinafter collectively referred to as "execution environment image") that has been restricted to prevent external communication, login, and command execution other than the input and output of predetermined information, so that even the user managing the isolated execution environment or the system operator cannot view or tamper with the data within the isolated execution environment.
- execution environment image virtual machine image
- the agreed-upon contract details assert and policy information, data usage conditions described in the policy, etc.
- the policy execution program can interpret the asset definitions and policy definitions included in the contract to obtain the necessary information, request data according to the asset definitions, and process the data according to the policy definitions.
- the policy execution program may monitor the behavior of other programs running within the isolated execution environment and restrict behavior that deviates from the asset and policy definitions.
- the TEE function of the hardware such as the CPU and GPU operating as execution units 230A and 230B is enabled to prevent the user managing the isolated execution environment, the system operator, or other programs running within the same system from viewing or tampering with data even if they directly access the memory.
- This enables the isolated execution environment to be started in a state where the information in the memory used by the isolated execution environment is always encrypted with an encryption key that can only be viewed by programs within the isolated execution environment.
- the information required for processing within the isolated execution environment is added to the asset definitions and policy definitions used for contract negotiation and agreement in the data distribution platform.
- Examples of information required for processing within the isolated execution environment include hash values required to verify assets (data, programs, parameters, etc.) acquired in the isolated execution environment, hash values of decryption keys for decrypting acquired assets, and public keys for verifying signatures on acquired assets, which are included in advance in the asset definitions or policy definitions in the data distribution platform.
- the specifications for the isolated execution environment and information on programs and applications to be executed within the isolated execution environment may also be included in the asset definitions and policy definitions.
- users A and B can agree on specific details regarding what data and processing will actually be performed within the isolated execution environment when they reach an agreement through contract negotiations on the data distribution platform. Furthermore, if the logs output by the isolated execution environment also include assets and policies in the same format, it will be easy to verify afterward that the content processed within the isolated execution environment is indeed based on the contract agreed upon by users A and B in advance.
- execution by the isolated execution environment means execution by a program running within the isolated execution environment, and refers to execution by the hardware that constitutes execution units 230A and 230B.
- step S201 when a new contract agreement is reached, the policy application unit 206 of user A's connection unit 200A instructs user A's execution unit 230A to start a new isolated execution environment and input the contract and the asset and policy information contained in the contract into that isolated execution environment.
- step S202 the execution unit 230A starts the isolated execution environment. Inside the isolated execution environment, a policy execution program with pre-defined behavior exists as part of the execution environment image.
- step S203 once the new contract agreement has been reached, the policy application unit 206 of user B's connection unit 200B instructs user B's execution unit 230B to start a new isolated execution environment and input the contract and the asset and policy information contained in the contract into that isolated execution environment.
- step S204 the execution unit 230B starts the isolated execution environment. Inside the isolated execution environment, a policy execution program with pre-defined behavior exists as part of the execution environment image.
- user B's isolated execution environment e.g., policy execution program
- User B's connection unit 200B may send the data request at the time the contract agreement is concluded.
- the asset information may include not only data, but also a highly confidential data processing program owned by user B that is necessary to process the data, as well as additional data and parameters required to run the data processing program.
- steps S203, S204, and S205 may be executed before steps S201 and S202 are executed, and step S202 may be executed in response to a data request in step S205.
- step S206 user A's isolated execution environment (e.g., policy execution program) retrieves highly confidential data from data storage unit 300A based on the asset information.
- Asset information can include not only data, but also a highly confidential data processing program owned by user A that is necessary to process the data, as well as additional data and parameters required to run the data processing program.
- User A's isolated execution environment processes the data in accordance with the policy (data usage conditions).
- the data usage conditions can include any necessary constraints, such as anonymizing the data, filtering it, or converting it into synthetic data, within User A's isolated execution environment.
- the constraint application program required to implement these can be executed within the isolated execution environment.
- step S208 after confirming that the data usage conditions are met, user A's isolated execution environment transmits the data to user B's isolated execution environment. Note that even without a request from user B, that is, even if no data request is received in step S205, after the contract is agreed upon, user A's isolated execution environment may execute the processing of steps S206 and S207 and transmit the data.
- User B's isolated execution environment processes the received data in accordance with the data usage conditions.
- the data usage conditions can include any necessary constraints, such as anonymizing the data within User B's isolated execution environment, filtering it, converting it into synthetic data, limiting the data processing method or number of times it can be processed, or deleting pre-analysis raw data when the retention period expires.
- the constraint application program required to implement these constraints can be executed within the isolated execution environment.
- step S210 after confirming that the data usage conditions are met, User B's isolated execution environment sends the processed data to User B's data storage unit 300B.
- the execution units 230A and 230B may discard the isolated execution environment, including the received data.
- Data processing may be shared between the isolated execution environments of users A and B, or all data processing may be performed in user A's isolated execution environment, or all data processing may be performed in user B's isolated execution environment. If all data processing is performed in one environment, the side not performing data processing may be equipped with transmission/reception units 220A and 220B instead of execution units 230A and 230B.
- This embodiment can also be applied to use cases in which multiple users share different data with user B, and the data is processed using a single policy and in a single isolated execution environment.
- the policy execution program by executing a policy execution program in an isolated execution environment that processes data in compliance with the asset definitions and policy definitions included in the agreed-upon contract, even if user B or the system operator is malicious, the policy execution program cannot be modified to prevent compliance with the policy. This means that even after user A sends data to user B, user A can control the use of that data according to the policy, protecting user A's data sovereignty.
- the user cannot confirm whether the other party's isolated execution environment is created from an image of an execution environment that ensures data confidentiality, whether a policy execution program exists in the image of the execution environment, and whether the TEE function is enabled.
- remote attestation is performed on the isolated execution environment.
- users A and B Before sending data from user A's isolated execution environment to user B's isolated execution environment, users A and B perform remote attestation on each other's isolated execution environment.
- Remote attestation may be performed by either user A or B alone, or by both users reciprocally.
- user A may perform remote attestation on user A's isolated execution environment, or user B may perform remote attestation on user B's isolated execution environment, to confirm that information has not been tampered with by the system operator.
- remote attestation for isolated execution environments: remote attestation for the isolated execution unit, and remote attestation for the image of the execution environment including the policy execution program.
- Remote attestation for isolated execution units refers to remote attestation for isolated execution units protected by the TEE function, such as enclaves, software containers, and virtual machines.
- the TEE function verifies whether the hardware (CPU, GPU, etc.) on which it is launched, the virtual machine's firmware, initial file system, operating system (Linux kernel, etc.), and the first program execution command launched on the operating system are all those agreed upon in advance between users, by comparing their hash values, etc.
- the TEE function collects information to verify this, creates an attestation report, and signs it with confidential information (such as a private key) held by the TEE function.
- the execution units 230A and 230B isolated execution environment
- Remote attestation of an image in an execution environment refers to a remote attestation of an image that is launched immediately after the firmware, initial file system, operating system (such as the Linux kernel), or the first program execution command launched on the operating system has been executed.
- the TEE function obtains the hash value of the image immediately before it is launched, creates an attestation report containing that hash value, and signs it with confidential information held by the TEE function.
- the execution units 230A and 230B isolated execution environments provide the attestation report to the user who manages the isolated execution environment.
- a user can request that the other user present an attestation report and verify the signature and hash value contained in the attestation report to confirm that the isolated execution environment and execution environment image previously agreed upon between the users are being used.
- the signature on the attestation report can be verified using information (public keys, certificates, etc.) made public by the manufacturers of hardware such as CPUs and GPUs.
- Connection units 200A, 200B or execution units 230A, 230B may also check the other user's attestation report.
- the user can confirm whether the image of the execution environment used to create the isolated execution environment is trustworthy, whether the policy execution program exists in the execution environment image, whether the policy execution program has not been tampered with, and whether the TEE function is enabled.
- remote attestation is performed on a contract entered into an isolated execution environment.
- users A and B Before data is sent from user A's isolated execution environment to user B's isolated execution environment, users A and B perform remote attestation on the contents of the contract entered into the other user's isolated execution environment (such as asset and policy information and data usage conditions described in the policy).
- Remote attestation may be performed by either user A or B alone, or by both users reciprocally.
- user A may perform remote attestation on user A's isolated execution environment, or user B may perform remote attestation on user B's isolated execution environment, to confirm that information has not been tampered with by the system operator.
- Remote attestation of the contents of a contract entered into the isolated execution environment is performed within the isolated execution environment by comparing the hash value of the contents of the contract immediately before processing.
- a program that has already performed remote attestation within the isolated execution environment collects assets and policies and calculates the hash value.
- the TEE function creates an attestation report that includes the hash value and signs it with confidential information held by the TEE function.
- the isolated execution environment provides the attestation report to the user who manages the isolated execution environment.
- a user can confirm that the contents of the contract entered into the isolated execution environment are those previously agreed upon between the users.
- the signature on the attestation report can be verified using information (public keys, certificates, etc.) published by the manufacturers of CPUs, GPUs, and other hardware.
- the user can confirm whether the contract entered into the other party's isolated execution environment is the same as the one included in the contract agreement.
- remote attestation of execution history is performed. Users A and B perform remote attestation on highly confidential data processed in each other's isolated execution environment and the data output as a result of that processing. Remote attestation may be performed by either User A or B alone, or by both users reciprocally.
- Remote attestation of highly confidential data processed within the isolated execution environment and the data output as a result of that processing is confirmed within the isolated execution environment by comparing the hash values of the highly confidential data and the processing results.
- a program that has already performed remote attestation within the isolated execution environment calculates the hash values of the highly confidential data and the processing results.
- the TEE function creates an attestation report including the hash values and signs it with confidential information held by the TEE function.
- the isolated execution environment provides the attestation report to the user who manages the isolated execution environment.
- a user can confirm that the data processed in the isolated execution environment is the agreed-upon, highly confidential data, and that the processing content was also the agreed-upon processing.
- the signature on the attestation report can be verified using information (public keys, certificates, etc.) made public by the manufacturers of hardware such as CPUs and GPUs.
- Hash values can be calculated in several ways: by calculating a single hash value for all highly confidential data and the data output as a result of that processing; by calculating multiple hash values for different types of data, such as input and output, and then combining or concatenating these values; or by calculating a hash value for each piece of data or file, then calculating a further hash value for this list, and providing this list to the user along with the attestation report. By dividing the hash value into multiple parts, even if the user performing the remote attestation only knows a portion of the data, it is possible to verify the hash values for that portion.
- the generation of the hash value can also include the hash value of the constraint application program, which is necessary to execute the constraints included in the data usage conditions. This makes it possible to confirm that the constraint application program has been agreed upon in advance between users A and B.
- remote attestation is performed on highly confidential data and processing results in an isolated execution environment, and an attestation report is provided to the other party, allowing the user to confirm that the data processed in the other party's isolated execution environment is agreed-upon data and that the processing content is agreed-upon processing.
- data input to the isolated execution environment is encrypted.
- a pair of public and private keys is generated within User A's isolated execution environment, and User A stores the data encrypted with the public key in the data storage unit 300A.
- the encrypted data stored in Data Storage Unit 300A can only be decrypted using the private key present in the isolated execution environment, and the data can be protected from leakage along the communication path from Data Storage Unit 300A to the isolated execution environment.
- step S301 the execution unit 230A starts an isolated execution environment based on instructions from the policy application unit 206 of the connection unit 200A.
- step S302 the isolated execution environment performs attestation.
- step S303 the attested program (such as a policy execution program) generates a pair of public and private keys within the isolated execution environment.
- the isolated execution environment sends an attestation report including the public key to user A.
- the TEE function creates an attestation report including the public key and signs it with confidential information (such as a private key) held by the TEE function.
- the isolated execution environment then sends the attestation report including the public key to user A.
- Signature verification for the attestation report can be performed using information (such as public keys and certificates) made public by manufacturers of hardware such as CPUs and GPUs.
- User A may obtain the public key from the isolated execution environment separately from the attestation report. In this case, by including the hash value of the public key in the attestation report, user A can confirm that the public key was generated within the isolated execution environment.
- step S305 user A stores the data encrypted using the public key in data storage unit 300A.
- step S306 the isolated execution environment retrieves the encrypted data from data storage unit 300A.
- step S307 the isolated execution environment decrypts the encrypted data using the private key it holds. After decrypting the encrypted data, the isolated execution environment processes the data and sends it to user B.
- data can be encrypted and decrypted using the following procedure.
- User A generates a new common key and encrypts the data using the common key, while also encrypting only the common key with the public key.
- User A stores both the data encrypted with the common key and the common key encrypted with the public key in data storage unit 300A.
- the isolated execution environment obtains both the data encrypted with the common key and the common key encrypted with the public key, decrypts the common key with the private key, and decrypts the data with the decrypted common key. This makes it impossible to decrypt the data without using the private key that exists in the isolated execution environment.
- data sent and received between users is encrypted.
- a pair of public and private keys is generated within User B's isolated execution environment, and User A's isolated execution environment transmits data encrypted with that public key.
- encrypted data transmitted from User A's isolated execution environment can only be decrypted with the private key present in User B's isolated execution environment, and the data can be protected from leakage along the communication path from User A's isolated execution environment to User B's isolated execution environment.
- step S401 the execution unit 230A starts an isolated execution environment based on instructions from the policy application unit 206 of the connection unit 200A.
- step S402 the isolated execution environment performs attestation.
- step S403 the execution unit 230B starts up an isolated execution environment based on instructions from the policy application unit 206 of the connection unit 200B.
- step S404 the isolated execution environment performs attestation.
- step S405 the attested program (such as a policy execution program) generates a public key and private key pair within User B's isolated execution environment.
- step S406 user B's isolated execution environment sends an attestation report including the public key to user A's isolated execution environment.
- the TEE function creates an attestation report including the public key and signs it with confidential information (such as a private key) held by the TEE function.
- User B's isolated execution environment then sends the attestation report including the public key to user A's isolated execution environment.
- a program in user A's isolated execution environment can verify the signature on the attestation report to confirm that the public key was generated within the isolated execution environment.
- Signature verification for the attestation report can be performed using information (such as public keys and certificates) made public by manufacturers of hardware such as CPUs and GPUs.
- User A may obtain the public key from user B's isolated execution environment separately from the attestation report. In this case, including the hash value of the public key in the attestation report can confirm that the public key was generated within the isolated execution environment.
- step S407 user A's isolated execution environment retrieves data from data storage unit 300A.
- User A's isolated execution environment may process the data in accordance with the data usage conditions.
- steps S408 and S409 when user A's isolated execution environment sends data to user B's isolated execution environment, it encrypts the data using the public key and sends the encrypted data to user B's isolated execution environment.
- step S410 user B's isolated execution environment decrypts the encrypted data using the private key it holds. After decrypting the encrypted data, the isolated execution environment processes the data and stores the processed data in data storage unit 300B.
- data can be encrypted and decrypted using the following procedure.
- User A's isolated execution environment generates a new common key and encrypts the data using the common key, while also encrypting only the common key with the public key.
- User A's isolated execution environment sends both the data encrypted with the common key and the common key encrypted with the public key to User B's isolated execution environment.
- User B's isolated execution environment receives both the data encrypted with the common key and the common key encrypted with the public key, decrypts the common key with the private key, and decrypts the data with the decrypted common key. This makes it impossible to decrypt the data without using the private key that exists in User B's isolated execution environment.
- a public key/private key pair is generated within User A's isolated execution environment, the public key is sent to User B's isolated execution environment, and User A's isolated execution environment then signs the data to be sent to User B's isolated execution environment with the private key.
- User B's isolated execution environment can verify the signature using the public key to confirm that the received data has not been tampered with. The authenticity of the public key can be verified by including this public key information in the attestation report.
- user B can generate a public key and private key pair outside the isolated execution environment, send the private key or both the public key and private key to user B's isolated execution environment, and then send the public key to user A's isolated execution environment. Even if user B does not have an isolated execution environment, by sending the public key to user A's isolated execution environment, encrypted data received from user A's isolated execution environment can be decrypted with the private key held by user B and stored in data storage unit 300B. Note that because the environment in which the public key and private key pair is generated is not within the isolated execution environment, depending on the required security requirements, a mechanism may be needed to protect the public key and private key pair from tampering by malicious system operators.
- a pair of public and private keys is generated within User B's isolated execution environment, and User A's isolated execution environment then encrypts data with that public key and sends it to User B's isolated execution environment.
- This protects highly confidential data from leaks along the communication path from User A's isolated execution environment to User B's isolated execution environment.
- the attestation report for User B's isolated execution environment includes information about the public key, User A can verify the validity of the public key.
- data output from the isolated execution environment is encrypted.
- a pair of public and private keys is generated in user B's data storage unit 300B, and user B's isolated execution environment transmits data encrypted with that public key.
- the encrypted data transmitted from the isolated execution environment can only be decrypted using the private key held by data storage unit 300B, and the data can be protected from leakage along the communication path from the isolated execution environment to data storage unit 300B.
- step S501 the execution unit 230B starts an isolated execution environment based on instructions from the policy application unit 206 of the connection unit 200B.
- step S502 the isolated execution environment performs attestation.
- step S503 data storage unit 300B generates a pair of public and private keys.
- the pair of public and private keys may be generated by a device other than data storage unit 300B, and the private key may be stored in data storage unit 300B.
- step S504 the data storage unit 300B sends the public key to the isolated execution environment.
- steps S505 and S506 when the program in the isolated execution environment sends data to data storage unit 300B, it encrypts the data using the public key and sends the encrypted data to data storage unit 300B.
- step S507 the data storage unit 300B decrypts the encrypted data using the private key it holds and stores it.
- the public key and private key pair is generated in data storage unit 300B, and the environment in which the public key and private key pair is generated is not within the isolated execution environment. Therefore, depending on the security requirements, a mechanism may be required to protect the public key and private key pair from being tampered with by malicious system operators.
- a public key/private key pair is generated within the isolated execution environment, the public key is sent to data storage unit 300B, and the data to be sent to data storage unit 300B is signed with the private key.
- Data storage unit 300B can verify the received data has not been tampered with by verifying the signature using the public key. The authenticity of the public key can be verified by including this public key information in the attestation report.
- a pair of public and private keys is generated in data storage unit 300B, and user B's isolated execution environment encrypts data using that public key and transmits it to data storage unit 300B. This protects highly confidential data from leaks along the communication path from user B's isolated execution environment to data storage unit 300B.
- first embodiment may be freely combined with the second to seventh embodiments.
- connection units 200A, 200B, transmission/reception units 220A, 220B, execution units 230A, 230B, and data storage units 300A, 300B used in the data distribution infrastructure 100 may be devices owned by each company, virtual machines on the cloud, or provided as a cloud application service (SaaS).
- SaaS cloud application service
- a combination of devices, virtual machines on the cloud, and cloud application services may be used for each company or each unit.
- the first example is an example in which data is sent and received between Company A's factory and Company B's factory based on an agreed-upon contract.
- Data storage unit 300A may be a database that stores data collected from Company A's factory.
- Data storage unit 300B may be a database that allows data to be viewed from Company B's factory.
- Data is sent from Company A's factory to Company B's factory. At that time, data is sent and received based on the data usage conditions agreed upon in contract negotiations.
- the second example is an example in which data is sent and received between Company A's cloud and Company B's cloud based on an agreed-upon contract.
- Data storage unit 300A may be a database that stores data collected from Company A's factory.
- Data storage unit 300B may be a database that allows data to be viewed from Company B's factory.
- Data is sent from Company A's cloud to Company B's cloud. At that time, data is sent and received based on the data usage conditions agreed upon in contract negotiations.
- the third example is an example in which data is sent and received between Company A's factory and Company B's cloud application service based on an agreed-upon contract.
- Data storage unit 300A may be a database that stores data collected from Company A's factory.
- Data storage unit 300B may be a database that allows data to be viewed from Company B's factory.
- Data is sent from Company A's factory to Company B's cloud application service. At that time, data is sent and received based on the data usage conditions agreed upon in contract negotiations.
- the fourth example is an example in which data is sent and received between Company A's cloud application service and Company B's cloud application service based on an agreed-upon contract.
- Data storage unit 300A may be a database that stores data collected from Company A's factory.
- Data storage unit 300B may be a database that allows data to be viewed from Company B's factory.
- Data is sent from Company A's cloud application service to Company B's cloud application service. At that time, data is sent and received based on the data usage conditions agreed upon in contract negotiations.
- any of the embodiments by applying the technology disclosed herein and sending data from user A's execution unit 230A to user B's execution unit 230B, when the data provided by user A is processed in execution unit 230B, it is possible to process the data in a confidential state by encrypting it so that it is kept secret from the system operator and user B.
- User A can control data usage so that only pre-agreed processing is performed in execution unit 230B.
- User A can also verify that the isolated execution environment, data usage conditions, and execution history of execution unit 230B have not been tampered with by performing remote attestation.
- the program for analyzing data may be sent in secret from user A, the data provider, to user B's execution unit 230B for use, or it may be sent by user B, the data user, to execution unit 230B for use.
- user B can obtain only the analysis results of user A's data by execution unit 230B, but cannot view the data sent by user A to execution unit 230B as is.
- the devices, clouds, or cloud application services used by Company B may be connected to devices, clouds, or cloud application services used by multiple companies, not just Company A, and with the agreement of all companies, including Company A, data from multiple companies may be analyzed across the board, allowing User B to obtain the analysis results.
- Each device and unit of the data distribution infrastructure 100 described above can be, for example, a general-purpose computer system equipped with a central processing unit (CPU) 901, memory 902, storage 903, communication device 904, input device 905, and output device 906, as shown in FIG. 10.
- CPU central processing unit
- memory 902 memory 902, storage 903, communication device 904, input device 905, and output device 906, as shown in FIG. 10.
- each device and unit of the data distribution infrastructure 100 is realized by the CPU 901 executing a predetermined program loaded onto memory 902.
- This program can be recorded on a non-transitory computer-readable recording medium such as a magnetic disk, optical disk, or semiconductor memory, or can be distributed via a network.
- DESCRIPTION OF SYMBOLS 100 Data distribution infrastructure 110 Authentication server 120 Catalog server 200A, 200B Connection unit 201 Asset definition management unit 202 Policy definition management unit 203 Contract definition management unit 204 Contract negotiation function unit 205 Contract agreement management unit 206 Policy application unit 210 Authentication function unit 220A, 220B Transmission/reception unit 230A, 230B Execution unit 300A, 300B Data storage unit
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bioethics (AREA)
- Multi Processors (AREA)
- Storage Device Security (AREA)
Abstract
接続部200A,200Bは、データ流通基盤に接続してユーザー間で共有するアセットとポリシーを含むコントラクトの合意を形成する。実行部230A,230Bは、コントラクトに従って動作するポリシー実行プログラムを含む実行環境のイメージを用いて隔離された安全な隔離実行環境を起動し、隔離実行環境内でコントラクトに従ってデータを受信して処理する。隔離実行環境、実行環境のイメージ、隔離実行環境に入力されたコントラクト、隔離実行環境で受信したデータ、および隔離実行環境での処理結果の少なくともいずれかをリモートアテステーションする。
Description
本開示は、データ共有装置およびデータ共有方法に関する。
近年、ネットワークサービスやInternet of Things (IoT)の普及により様々なデータが収集されている。各企業で収集されたデータを相互に持ち寄って分析することで、データの有効活用を図ることができる。企業間でのデータの共有を促進する技術として、データ主権を担保しつつ安全にデータを共有するデータ流通基盤が提供されている。データ主権とは、データ所有者が自分のデータを制御および管理する権利、並びにデータが収集された国における法律やガバナンスの対象とする権利を意味する。
非特許文献1のデータ流通基盤では、ユーザー間で合意が形成されると、その合意に沿ってユーザー間でデータが共有される。
"IDS Reference Architecture Model Version 4", International Data Spaces Association, https://docs.internationaldataspaces.org/knowledge-base/ids-ram-4.0
しかしながら、従来のデータ流通基盤では、データ利用制御を行う技術的な仕組みが確立されておらず、一度他者に渡ったデータはそれ以降制御することができないという問題があった。
また、ユーザーやシステム運用事業者に悪意があれば、ユーザーやシステム運用事業者が管理する部分のプログラムやデータを変更したり、合意後にデータ利用条件を書き換えたり、データを外部に漏洩させたりできるという課題があった。
本開示は、上記に鑑みてなされたものであり、ユーザーのデータ主権を十分に保護することを目的とする。
本開示の一態様のデータ共有装置は、ユーザー間でのデータ共有を提供するデータ共有装置であって、データ流通基盤に接続してユーザー間で共有するデータと利用条件を含む共有条件の合意を形成する接続部と、前記共有条件に従って動作するプログラムを含む実行環境のイメージを用いて隔離された安全な隔離実行環境を起動し、前記隔離実行環境内で前記共有条件に従ってデータを受信して処理する実行部とを有する。
本開示の一態様のデータ共有方法は、ユーザー間でのデータ共有を提供するデータ共有方法であって、コンピュータが、データ流通基盤に接続してユーザー間で共有するデータと利用条件を含む共有条件の合意を形成し、前記共有条件に従って動作するプログラムを含む実行環境のイメージを用いて隔離された安全な隔離実行環境を起動し、前記隔離実行環境内で前記共有条件に従ってデータを受信して処理する。
本開示によれば、ユーザーのデータ主権を十分に保護できる。
[データ流通基盤]
図1を参照し、データ流通基盤100の構成の一例について説明する。図1のデータ流通基盤100は中央集権型であるが、データ流通基盤は分散型であってもよい。
図1を参照し、データ流通基盤100の構成の一例について説明する。図1のデータ流通基盤100は中央集権型であるが、データ流通基盤は分散型であってもよい。
ユーザーAはA社に所属する人である。ユーザーAはデータ流通基盤100の接続部200Aを用いてデータ流通基盤100に接続している他のユーザーと通信を行う。
ユーザーBはB社に所属する人である。ユーザーBはデータ流通基盤100の接続部200Bを用いてデータ流通基盤100に接続している他のユーザーと通信を行う。
各ユーザーA,Bはあらかじめデータ流通基盤100のユーザーとして登録する。接続部200Aと接続部200Bは、データ流通基盤100で相互認証が可能となる識別IDとそれを証明するクレデンシャルを保持している。例えばデータ流通基盤100が中央集権型の認証サーバーを用いる場合は、接続部200A,200Bは、識別IDとしてURIのような識別子を用い、クレデンシャルとして、データ流通基盤が信用する組織が運用するCertificate Authority(CA)が発行する証明書を保持する。データ流通基盤で分散型の認証を行う場合は、接続部200A,200Bは、Decentralized Identifier(DID)、およびデータ流通基盤が信用する組織によって署名されたVerifiable Credentials(VC)などを保持する。
ユーザーA,Bは、接続部200A,200Bを用いてデータ流通基盤100を利用し、データの共有について合意を形成する。ユーザーA,B間で合意が形成されると、接続部200A,200Bで管理されるポリシーに従って、送受信部220A,220Bは、ユーザーA,B間でデータを共有する。送受信部220Aは、ユーザーAの共有データをデータ記憶部300Aから取得して送受信部220Bへ送信し、送受信部220Bは、共有データをデータ記憶部300Bに格納する。
図2は、接続部200A,200Bの構成の一例を示す図である。接続部200A,200Bは、アセット定義管理部201、ポリシー定義管理部202、コントラクト定義管理部203、コントラクト交渉機能部204、コントラクト合意管理部205、ポリシー適用部206、および認証機能部210を備える。接続部200A,200Bとして、オープンソースのコネクタ実装であるEclipse Dataspace Componentを利用できる。接続部200A,200Bは、送受信部220A,220Bを備えてもよいし、後述の実行部230A,230Bを備えてもよい。
以下、図3と図4のシーケンス図を参照し、接続部200A,200Bを用いたデータ共有処理の流れの一例について説明する。
ステップS101にて、ユーザーAは、自社が他社に共有する可能性のあるデータ(もしくはデータセット)の識別子、アドレス、データアクセス時に必要となるクレデンシャル、データに関する説明情報や属性情報などをアセットとして定義し、接続部200Aのアセット定義管理部201に登録する。
ステップS102にて、ユーザーAは、自社のアセットを他社に共有する際のデータ利用条件をポリシーとして定義し、接続部200Aのポリシー定義管理部202に登録する。データ利用条件としては、アセットの開示可能範囲(企業名、必要な資格、国・地域など)、アセットはデータ共有先の他社のシステムから外に取り出してよいか、他社がどのような条件を満たすプログラムで分析してよいか、他社がアセットに対する分析処理を行うことができる回数、期間、および実行環境の種別、および他社がデータを削除するまでの期間などを定めることができる。
ステップS103にて、ユーザーAは、自社のアセットと自社のポリシーを組み合わせたコントラクトを定義し、接続部200Aのコントラクト定義管理部203に登録する。コントラクトは、アセット定義とポリシー定義を含み、どのアセット(データ)に対してどのようなポリシー(データ利用条件)のもとで他社が利用可能かどうかという情報を他社に共有するための情報である。なお、コントラクトを他社に公開する場合は、アセットについては、アセットに含まれるデータ(もしくはデータセット)の識別子、アドレス、データアクセス時に必要となるクレデンシャルなどは公開せず、データに関する説明情報や属性情報などのみを公開することができる。
ステップS104にて、ユーザーAは、コントラクトを他社が見ることができるように、コントラクト提案として公開する。コントラクト提案の公開範囲はユーザーAが決めることができる。データ流通基盤が中央集権型の場合は、ユーザーAは接続部200Aのコントラクト交渉機能部204の機能を用いて、コントラクト提案をデータ流通基盤100が備えるカタログサーバー120に登録することで、コントラクトを他社の接続部200Bが見ることができる状態にする。データ流通基盤が分散型の場合は、各ユーザーの接続部200A,200B同士でコントラクト提案を共有することができる分散型の情報連携の仕組みにコントラクト提案を登録することで、コントラクトを他社の接続部200Bが見ることができる状態にする。
ステップS105にて、ユーザーBは、接続部200Bを利用して、ユーザーAが公開したコントラクト提案を閲覧する。データ流通基盤が中央集権型の場合は、接続部200Bはカタログサーバー120上に蓄積されているユーザーAのコントラクト提案を閲覧する。データ流通基盤が分散型の場合は、接続部200Bは、各ユーザーの接続部200A,200B間で相互にカタログを交換し伝搬しあう仕組みを用いて、ユーザーAのコントラクト提案を閲覧する。
ステップS106にて、ユーザーBは、ユーザーAのコントラクト提案に対してコントラクト交渉を行うため、接続部200Bを用いて、ユーザーAの接続部200Aに対して暗号通信を開始する。具体的には、データ流通基盤100が中央集権型の場合は、接続部200Bの認証機能部210はデータ流通基盤100が備える認証サーバー110に対してトークンを要求し、認証サーバー110は接続部200Bが正当な証明書を保持していることを確認したうえでトークンを発行する。そして、接続部200Bは接続部200Aの認証機能部210へ当該トークンを送信する。接続部200Aは当該トークンの署名を確認し、接続部200Bを認証する。同様に、接続部200Aの認証機能部210は認証サーバー110に対してトークンを要求し、認証サーバー110は接続部200Aが正当な証明書を保持していることを確認したうえでトークンを発行する。そして、接続部200Aは接続部200Bの認証機能部210へ当該トークンを送信する。接続部200Bは当該トークンの署名を確認し、接続部200Aを認証する。データ流通基盤100が分散型の場合は、接続部200Bは接続部200Aに対して自身のDIDとVCを送信する。接続部200Aは当該DIDとVCを用いて、接続部200Bを認証する。同様に、接続部200Aは接続部200Bに対して自身のDIDとVCを送信する。接続部200Bは当該DIDとVCを用いて、接続部200Aを認証する。なお、VCのみ、あるいは、Verifiable Presentation (VP)のみを用いて認証してもよい。
ステップS107にて、ユーザーBは、接続部200Bのコントラクト交渉機能部204を用いて、ユーザーAの接続部200Aに対して、ユーザーAが公開したコントラクト提案に関するコントラクト交渉を要求する。
ステップS108にて、接続部200Aのコントラクト交渉機能部204は、受け付けたコントラクト交渉要求の内容がポリシーで定めるアセットの開示可能範囲(企業名、必要な資格、国・地域など)に関する条件を満たしていることを確認する。条件を満たしている場合、接続部200Aのコントラクト交渉機能部204は、接続部200Bのコントラクト交渉機能部204に対して交渉成立と合意の成立を通知する。
ステップS109,S110にて、接続部200A,200Bそれぞれのコントラクト交渉機能部204は、接続部200A,200Bそれぞれのコントラクト合意管理部205に対して、合意したコントラクトの内容を記録する。
合意が形成されると、図4の処理でデータが共有される。
ステップS111にて、接続部200Aのポリシー適用部206は、接続部200Aのコントラクト合意管理部205に記録されたコントラクトに含まれるアセット定義とポリシー定義に基づき、ユーザーAの送受信部220Aにデータの送受信の指示を行う。
ステップS112にて、接続部200Bのポリシー適用部206は、接続部200Bのコントラクト合意管理部205に記録されたコントラクトに含まれるアセット定義とポリシー定義に基づき、ユーザーBの送受信部220Bにデータの送受信の指示を行う。なお、ステップS111の処理が実行されずに、ユーザーBまたはユーザーBが有するサーバーなどから接続部200Bに対する指示を契機に、ステップS112以降の処理が開始されてもよい。
ステップS113にて、ユーザーBの送受信部220Bは、ユーザーAの送受信部220Aに対してデータを要求する。
ステップS114にて、ユーザーAの送受信部220AはユーザーAのデータ記憶部300Aからデータを取得し、ユーザーBの送受信部220Bへ当該データを送信する。
ステップS115にて、ユーザーBの送受信部220Bは、ユーザーAの送受信部220Aから受信したデータをユーザーBのデータ記憶部300Bへ格納する。
送受信部220A,220BはAPIサーバーやAPIクライアントで構成することができる。データ記憶部300A,300Bは、データベース、もしくは、オブジェクトストレージ、他システムのAPIサーバー、などのいずれかで構成することができる。
[第1の実施形態]
データ流通基盤100では、データを提供するユーザーAはデータ利用条件をポリシーとして定義し、データ提供先のユーザーBと合意した上でデータを提供することができる。データを受信したユーザーBの接続部200Bのポリシー適用部206は、当該ポリシー(データ利用条件)を遵守するように、送受信部220Bに指示する。しかし、ユーザーBのポリシー適用部206、送受信部220Bは、ユーザーBが管理するシステムであるため、ユーザーBに悪意があれば、ポリシーを遵守しないようにポリシー適用部206や送受信部220Bのプログラムを変更することができる。このままでは、ユーザーAがユーザーBにデータを送信した後は、ユーザーAはそのデータの利用を制御することはできず、ユーザーAのデータ主権を十分に保護することができない。
データ流通基盤100では、データを提供するユーザーAはデータ利用条件をポリシーとして定義し、データ提供先のユーザーBと合意した上でデータを提供することができる。データを受信したユーザーBの接続部200Bのポリシー適用部206は、当該ポリシー(データ利用条件)を遵守するように、送受信部220Bに指示する。しかし、ユーザーBのポリシー適用部206、送受信部220Bは、ユーザーBが管理するシステムであるため、ユーザーBに悪意があれば、ポリシーを遵守しないようにポリシー適用部206や送受信部220Bのプログラムを変更することができる。このままでは、ユーザーAがユーザーBにデータを送信した後は、ユーザーAはそのデータの利用を制御することはできず、ユーザーAのデータ主権を十分に保護することができない。
そこで、図5に示すように、接続部200A,200Bに接続された送受信部220A,220Bを、隔離実行環境を提供する実行部230A,230Bとして構成する。送受信部220A,220Bのいずれか一方のみを実行部230A,230Bとして構成してもよい。
隔離実行環境は、Trusted Execution Environment (TEE)という技術を用いて構築される環境であり、CPU,GPU等のハードウェアが具備するメモリ暗号化機能により同一システム内で動作する他のプログラムとは隔離された安全な状態でプログラムを実行できる環境である。隔離実行環境を用いることで、当該隔離実行環境を管理するユーザーや、当該隔離実行環境を運用するシステム運用事業者からも、隔離実行環境内で処理されるデータやプログラムを保護し、ユーザー自身やシステム運用事業者から秘匿した状態でデータを分析することが可能となる。
実行部230A,230Bは、隔離実行環境を管理するユーザー自身やシステム運用事業者すら隔離実行環境内のデータを見たり改ざんしたりすることができないように、あらかじめ決められた情報の入出力以外には外部からの通信、ログイン、命令実行ができないように制限を施したエンクレイブのイメージ、ソフトウェアコンテナのイメージ、または、仮想マシンのイメージ(以下、これらを総称して「実行環境のイメージ」と称する)をそのまま実行して隔離実行環境を起動する。隔離実行環境の起動時には、合意されたコントラクトの内容(アセットとポリシーの情報、およびポリシーに記述されたデータ利用条件など)が入力される。
隔離実行環境の内部には、実行環境のイメージに含まれる形で、あらかじめ動作が決められたポリシー実行プログラムが存在している。ポリシー実行プログラムは、コントラクトに含まれるアセット定義およびポリシー定義をデータ解釈して必要な情報を取得でき、アセット定義に従ってデータを要求し、ポリシー定義に従ってデータを処理する。ポリシー実行プログラムは、隔離実行環境内で実行される他のプログラムの動作を監視し、アセット定義およびポリシー定義を外れる動作を制限してもよい。ポリシー実行プログラムが隔離実行環境の内部で動作することにより、コントラクト交渉で合意したデータ利用条件が遵守される。ポリシー実行プログラムは、隔離実行環境で守られるため、ポリシー実行プログラムを変更することはできない。
また、隔離実行環境を管理するユーザー自身やシステム運用事業者、および同一システム内で動作する他のプログラムがメモリを直接閲覧してもデータを見たり改ざんしたりすることができないように、実行部230A,230Bとして動作するCPU,GPU等のハードウェアのTEE機能を有効にする。これにより、隔離実行環境は、隔離実行環境が使用するメモリ内の情報が、常に、隔離実行環境内のプログラムでしか閲覧できないような暗号鍵で暗号化された状態となるように起動される。
さらに、データ流通基盤におけるコントラクト交渉・コントラクト合意に用いられるアセット定義およびポリシー定義の中に、隔離実行環境内で処理に必要な情報の内容を追加する。隔離実行環境内で処理に必要な情報の例としては、隔離実行環境で取得したアセット(データ、プログラム、およびパラメータ等)を検証するために必要となるハッシュ値、取得したアセットを復号するための復号鍵のハッシュ値、および取得したアセットの署名を検証するための公開鍵を、あらかじめデータ流通基盤におけるアセット定義またはポリシー定義に含めておくことなどが挙げられる。アセット定義およびポリシー定義の中に隔離実行環境の仕様、隔離実行環境内で実行するプログラムやアプリケーションの情報を含めてもよい。
ユーザーA,Bは、あらかじめ隔離実行環境の仕様を定めておくことで、データ流通基盤におけるコントラクト交渉によってお互いに合意した内容が、実際に隔離実行環境内におけるどのようなデータに対するどのような処理に対する合意であるか、を具体的に指定して合意することができるようになる。また、隔離実行環境が出力するログにも同じ形式のアセットおよびポリシーを含めると、事後に隔離実行環境内で処理された内容が、確かにユーザーA,Bが事前に合意したコントラクトに基づくものであることを容易に確認することが可能となる。
これまで、データ流通基盤におけるコントラクト交渉・コントラクト合意に用いられるアセットおよびポリシーの内容およびその処理方法と、TEEを用いて構築される隔離実行環境を提供するサービスまたはソフトウェアがデータの処理に用いるアセットおよびポリシーの内容およびその処理方法は、それぞれの利用目的のために独立して定められていた。そのため、データ流通基盤で用いられるアセットおよびポリシーの情報は、隔離実行環境を実行するときに、隔離実行環境で用いられるアセットおよびポリシーの書式に合わせる必要があった。データ流通基盤におけるコントラクト交渉・コントラクト合意の時点では、アセットおよびポリシーに記載された内容が、隔離実行環境において、実際にどのようなデータに対するどのような処理として実行されるかを、ユーザーが具体的に指定することは難しかった。データ流通基盤のアセットおよびポリシーに隔離実行環境の処理に必要な情報を追加することで、コントラクト交渉・コントラクト合意の時点で、隔離実行環境での処理を具体的に指定することができる。
図6のシーケンス図を参照し、コントラクト合意後のデータ共有処理の流れの一例を説明する。なお、以降の記載で、隔離実行環境が実行するというのは、隔離実行環境内で動作するプログラムが実行するということであり、実行部230A,230Bを構成するハードウェアが実行するということである。
ステップS201にて、ユーザーAの接続部200Aのポリシー適用部206は、新たなコントラクト合意が結ばれた時点で、ユーザーAの実行部230Aに対して、新たな隔離実行環境の起動と、当該隔離実行環境に対してコントラクトおよび当該コントラクトに含まれるアセットとポリシーの情報の入力を指示する。
ステップS202にて、実行部230Aは、隔離実行環境を起動する。隔離実行環境の内部には、実行環境のイメージに含まれる形で、あらかじめ動作が決められたポリシー実行プログラムが存在している。
ステップS203にて、ユーザーBの接続部200Bのポリシー適用部206は、新たなコントラクト合意が結ばれた時点で、ユーザーBの実行部230Bに対して、新たな隔離実行環境の起動と、当該隔離実行環境に対してコントラクトおよび当該コントラクトに含まれるアセットとポリシーの情報の入力を指示する。
ステップS204にて、実行部230Bは、隔離実行環境を起動する。隔離実行環境の内部には、実行環境のイメージに含まれる形で、あらかじめ動作が決められたポリシー実行プログラムが存在している。
ステップS205にて、ユーザーBの隔離実行環境(例えばポリシー実行プログラム)は、アセットの情報に基づいて、ユーザーAの隔離実行環境に対してデータ要求を送信する。コントラクト合意が結ばれた時点でユーザーBの接続部200Bがデータ要求を送信してもよい。アセットの情報としては、データだけでなく、当該データを処理するために必要なユーザーBが有する秘匿性の高いデータ処理プログラムや、当該データ処理プログラムを動作させるために必要な追加データやパラメータを指定することもできる。
なお、ステップS201、S202の処理が実行される前に、ステップS203、S204、S205の処理が実行されて、ステップS205のデータ要求を契機に、ステップS202の処理が実行されてもよい。
ステップS206にて、ユーザーAの隔離実行環境(例えばポリシー実行プログラム)は、アセットの情報に基づいて、データ記憶部300Aから秘匿性の高いデータを取得する。アセットの情報としては、データだけでなく、当該データを処理するために必要なユーザーAが有する秘匿性の高いデータ処理プログラムや、当該データ処理プログラムを動作させるために必要な追加データやパラメータを指定することもできる。
ステップS207にて、ユーザーAの隔離実行環境は、ポリシー(データ利用条件)に従ってデータを処理する。データ利用条件には、ユーザーAの隔離実行環境内でデータを匿名化したり、フィルタしたり、合成データに変換するなど、必要な制約条件を記載することができる。それらを実行するために必要な制約条件適用プログラムを隔離実行環境内で実行することができる。
ステップS208にて、ユーザーAの隔離実行環境は、データ利用条件を満たすことを確認した後、ユーザーBの隔離実行環境に対してデータを送信する。なお、ユーザーBからの要求なしに、つまりステップS205でデータ要求を受信しなくても、コントラクト合意後、ユーザーAの隔離実行環境がステップS206,S207の処理を実行し、ユーザーAの隔離実行環境がデータを送信する場合もありうる。
ステップS209にて、ユーザーBの隔離実行環境は、データ利用条件に従って受信したデータを処理する。データ利用条件には、ユーザーBの隔離実行環境内でデータを匿名化したり、フィルタしたり、合成データに変換したり、データの処理方法や処理回数を制限したり、分析前の生データの保持期限が来たら消去するなど、必要な制約条件を記載することができる。それらを実行するために必要な制約条件適用プログラムを隔離実行環境内で実行することができる。
ステップS210にて、ユーザーBの隔離実行環境は、データ利用条件を満たすことを確認した後、ユーザーBのデータ記憶部300Bに対して処理後のデータを送信する。
データ処理後、実行部230A,230Bは、受信したデータを含めて隔離実行環境を破棄してもよい。
ユーザーA,Bの隔離実行環境のそれぞれでデータ処理を分担して行ってもよいし、ユーザーAの隔離実行環境で全てのデータ処理を行ってもよいし、ユーザーBの隔離実行環境で全てのデータ処理を行ってもよい。いずれかで全てのデータ処理を行う場合、データ処理を行わない側は、実行部230A,230Bではなく、送受信部220A,220Bを備えてもよい。
なお、本実施形態は、複数のユーザーが、ユーザーBに対してそれぞれ異なるデータを共有しつつ、それらを単一のポリシー、単一の隔離実行環境で処理するといったユースケースにも応用できる。
以上説明したように、本実施形態によれば、合意したコントラクトに含まれるアセット定義およびポリシー定義を遵守してデータを処理するポリシー実行プログラムを隔離実行環境内で実行することにより、ユーザーBに悪意がある場合や、システム運用事業者に悪意がある場合でも、ポリシーを遵守しないようにポリシー実行プログラムを変更することはできない。これにより、ユーザーAがユーザーBにデータを送信した後でも、ユーザーAはそのデータの利用をポリシーによって制御することが可能となり、ユーザーAのデータ主権を保護できる。
また、コントラクトに含まれるアセット定義およびポリシー定義に隔離実行環境の処理に必要な情報を含めることで、ユーザーは、隔離実行環境におけるデータ処理の内容を具体的に指定することができる。また、隔離実行環境が、データ流通基盤と同じ形式のアセットおよびポリシーを含むログを出力することで、隔離実行環境内で処理された内容が合意したコントラクトに基づくものであることを容易に確認することが可能となる。
[第2の実施形態]
第1の実施形態では、ユーザーは、相手の隔離実行環境が、データの秘匿が担保された実行環境のイメージから作られるか否か、実行環境のイメージにポリシー実行プログラムが存在しているか否か、および、TEE機能が有効であるかどうか、を確認することができない。
第1の実施形態では、ユーザーは、相手の隔離実行環境が、データの秘匿が担保された実行環境のイメージから作られるか否か、実行環境のイメージにポリシー実行プログラムが存在しているか否か、および、TEE機能が有効であるかどうか、を確認することができない。
第2の実施形態では、隔離実行環境のリモートアテステーションを実施する。ユーザーAの隔離実行環境からユーザーBの隔離実行環境へデータを送信する前に、ユーザーA,Bは相手の隔離実行環境のリモートアテステーションを実施する。リモートアテステーションは、ユーザーA,Bのどちらか片方だけが実施してもよいし、両方で相互に実施してもよい。また、システム運用事業者に悪意がある場合に、システム運用事業者によって情報が改ざんされていないかを確認するため、ユーザーA自身がユーザーAの隔離実行環境に対してリモートアテステーションを実行してもよいし、ユーザーB自身がユーザーBの隔離実行環境に対してリモートアテステーションを実行してもよい。
隔離実行環境のリモートアテステーションには、隔離実行単位に関するリモートアテステーションと、ポリシー実行プログラムを含む実行環境のイメージに関するリモートアテステーション、の2種類が存在する。
隔離実行単位に関するリモートアテステーションとは、エンクレイブ、ソフトウェアコンテナ、仮想マシンなどの、TEE機能が保護する隔離実行単位に関するリモートアテステーションである。例えば、仮想マシンの場合は、TEE機能が起動するハードウェア(CPU,GPUなど)、仮想マシンのファームウェア、初期ファイルシステム、オペレーティングシステム(Linuxカーネルなど)、オペレーティングシステム上で最初に起動されるプログラム実行コマンドなどが、あらかじめユーザーの間で合意済みのものを使用しているかどうかを、そのハッシュ値の照合等により確認する。TEE機能がこれらを確認するための情報を収集してアテステーションレポートを作成し、TEE機能が保持する秘密情報(秘密鍵など)によって署名する。実行部230A,230B(隔離実行環境)が、アテステーションレポートを隔離実行環境を管理するユーザーに提供する。
実行環境のイメージに関するリモートアテステーションとは、ファームウェア、初期ファイルシステム、オペレーティングシステム(Linuxカーネルなど)、オペレーティングシステム上で最初に起動されるプログラム実行コマンドなどが実行された直後に起動されるイメージに関するリモートアテステーションである。TEE機能が、イメージが起動される直前に当該イメージのハッシュ値を取得して、そのハッシュ値を含むアテステーションレポートを作成し、TEE機能が保持する秘密情報によって署名する。実行部230A,230B(隔離実行環境)が、隔離実行環境を管理するユーザーにアテステーションレポートを提供する。
ユーザーは、相手のユーザーに対してアテステーションレポートの提示を要求し、アテステーションレポートに含まれる署名とハッシュ値などを検証することで、あらかじめユーザーの間で合意済みの隔離実行環境と実行環境のイメージを使用していることを確認できる。アテステーションレポートに対する署名の検証は、CPU,GPU等のハードウェアを製造するメーカーが公開する情報(公開鍵や証明書など)を用いて検証することができる。接続部200A,200Bや実行部230A,230Bが相手のアテステーションレポートの確認を行ってもよい。
これまで、TEEを用いて構築される隔離実行環境に対するリモートアテステーションは、当該隔離実行環境を利用するユーザーが実施する利用形態が一般的であった。このような利用形態では、ユーザーは、自身の利用する隔離実行環境が適切に隔離された環境であることを検証することができるが、当該ユーザーが他のユーザーに対してそれを証明することや、他のユーザーがそれを検証することができなかった。
以上説明したように、本実施形態によれば、隔離実行環境のアテステーションを実施し、相手にアテステーションレポート提供することにより、ユーザーは、隔離実行環境を構築するための実行環境のイメージが信頼できるか、実行環境のイメージにポリシー実行プログラムが存在しているか、ポリシー実行プログラムが改変されていないか、およびTEE機能が有効であるかを確認することができる。
[第3の実施形態]
第1、第2の実施形態では、ユーザーは、相手の隔離実行環境内に入力されたコントラクトに含まれるアセットとポリシーの情報、およびポリシーに記述されたデータ利用条件が、ユーザー間で合意されたコントラクトに含まれていたものと同一であるか否かを確認することができない。
第1、第2の実施形態では、ユーザーは、相手の隔離実行環境内に入力されたコントラクトに含まれるアセットとポリシーの情報、およびポリシーに記述されたデータ利用条件が、ユーザー間で合意されたコントラクトに含まれていたものと同一であるか否かを確認することができない。
第3の実施形態では、隔離実行環境に入力されたコントラクトのリモートアテステーションを実施する。ユーザーAの隔離実行環境からユーザーBの隔離実行環境へデータが送信される前に、ユーザーA,Bは、相手の隔離実行環境内に入力されたコントラクトの内容(アセットとポリシーの情報、およびポリシーに記述されたデータ利用条件など)に対するリモートアテステーションを実施する。リモートアテステーションは、ユーザーA,Bのどちらか片方だけが実施してもよいし、両方で相互に実施してもよい。また、システム運用事業者に悪意がある場合に、システム運用事業者によって情報が改ざんされていないかを確認するため、ユーザーA自身がユーザーAの隔離実行環境に対してリモートアテステーションを実行してもよいし、ユーザーB自身がユーザーBの隔離実行環境に対してリモートアテステーションを実行してもよい。
ユーザー間でお互いの公開鍵または証明書を事前に共有しておき、合意したコントラクトの内容について、相互に署名を作成し、合意済みのコントラクトとセットで相互に共有する。そして、当該コントラクトおよび署名を受信したユーザーは、その署名を合意相手の他ユーザーの公開鍵で検証する。これにより、そのコントラクトおよびコントラクトに含まれるアセットとポリシーの情報、および、ポリシーに書かれたデータ利用条件等が、確かに合意相手の他ユーザーが合意したものであることを確認することができる。
隔離実行環境に入力されたコントラクトの内容に対するリモートアテステーションでは、隔離実行環境内において、処理直前のコントラクトの内容のハッシュ値を照合することにより確認する。隔離実行環境内ですでにリモートアテステーション済みのプログラム(ポリシー実行プログラムなど)が、アセットやポリシーを収集してハッシュ値を計算する。TEE機能が、ハッシュ値を含むアテステーションレポートを作成し、TEE機能が保持する秘密情報によって署名する。隔離実行環境は、アテステーションレポートを隔離実行環境を管理するユーザーに提供する。
ユーザーは、相手のユーザーに対してアテステーションレポートの提示を要求し、アテステーションレポートに含まれる署名とハッシュ値などを検証することで、隔離実行環境内に入力されたコントラクトの内容が、あらかじめユーザーの間で合意済みのものを使用していることを確認できる。アテステーションレポートに対する署名の検証は、CPU,GPU等のハードウェアを製造するメーカーが公開する情報(公開鍵や証明書など)を用いて検証することができる。
以上説明したように、本実施形態によれば、隔離実行環境に入力されたコントラクトに対するリモートアテステーションを実施し、相手にアテステーションレポートを提供することにより、ユーザーは、相手の隔離実行環境に入力されたコントラクトがコントラクト合意に含まれていたものと同一であるかを確認することができる。
[第4の実施形態]
第1ないし第3の実施形態では、ユーザーは、相手の隔離実行環境で実行された処理が、ユーザー間で合意されたコントラクトに含まれるアセットに対して、合意されたコントラクトに含まれるポリシーの内容に従って処理が行われたことを事後に確認できない。
第1ないし第3の実施形態では、ユーザーは、相手の隔離実行環境で実行された処理が、ユーザー間で合意されたコントラクトに含まれるアセットに対して、合意されたコントラクトに含まれるポリシーの内容に従って処理が行われたことを事後に確認できない。
第4の実施形態では、実行履歴のリモートアテステーションを実施する。ユーザーA,Bは、相手の隔離実行環境内で処理された秘匿性の高いデータと、その処理結果として出力されたデータについて、リモートアテステーションを実施する。リモートアテステーションは、ユーザーA,Bのどちらか片方だけが実施してもよいし、両方で相互に実施してもよい。
隔離実行環境内で処理された秘匿性の高いデータと、その処理結果として出力されたデータに対するリモートアテステーションでは、隔離実行環境内において、秘匿性の高いデータと処理結果のハッシュ値を照合することにより確認する。隔離実行環境内ですでにリモートアテステーション済みのプログラム(ポリシー実行プログラムなど)が、秘匿性の高いデータと処理結果のハッシュ値を計算する。TEE機能が、ハッシュ値を含むアテステーションレポートを作成し、TEE機能が保持する秘密情報によって署名する。隔離実行環境は、アテステーションレポートを隔離実行環境を管理するユーザーに提供する。
ユーザーは、相手のユーザーに対してアテステーションレポートの提示を要求し、アテステーションレポートに含まれる署名とハッシュ値などを検証することで、隔離実行環境で処理されたデータが合意済みの秘匿性の高いデータであり、処理内容も合意済みの処理であることを確認できる。アテステーションレポートに対する署名の検証は、CPU,GPU等のハードウェアを製造するメーカーが公開する情報(公開鍵や証明書など)を用いて検証することができる。
なお、ハッシュ値の計算においては、秘匿性の高いデータと、その処理結果として出力されたデータの全体に対する1個のハッシュ値を計算するという方法、入力や出力などの種類に分けて複数のハッシュ値を計算して組み合わせたり連結したりする方法、あるいは、データやファイルなどの単位でそれぞれのハッシュ値を計算して、そのリストに対してさらにハッシュ値を計算し、当該リストをアテステーションレポートと合わせてユーザーに提供する方法がある。ハッシュ値を複数に分けることで、リモートアテステーションを実施するユーザーがその中の一部しか知りえていない場合でも、その部分に関するハッシュ値の照合を行うことが可能となる。また、ハッシュ値の生成において、データ利用条件に含まれる制約条件を実行するために必要な、制約条件適用プログラムのハッシュ値を含むこともできる。これにより、制約条件適用プログラムがあらかじめユーザーA,B間で合意済みのものとなっていることを確認できる。
以上説明したように、本実施形態によれば、隔離実行環境において、秘匿性の高いデータと処理結果に対するリモートアテステーションを実施し、相手にアテステーションレポートを提供することにより、ユーザーは、相手の隔離実行環境で処理されたデータが合意済みのデータであり、処理内容が合意済みの処理であることを確認できる。
[第5の実施形態]
ユーザーAの隔離実行環境の内部には、アセットの情報に基づいて、データ記憶部300Aから秘匿性の高いデータが入力される。しかし、通常のデータ入力方法では、たとえ鍵交換による暗号化通信を行ったとしても、システム運用事業者に悪意がある場合は、データ記憶部300Aから隔離実行環境の内部への通信経路において、秘匿性の高いデータが漏洩してしまう可能性がある。なぜなら、ユーザーAの隔離実行環境はユーザーA,Bの間で新たなコントラクト合意が結ばれた時点で起動されるものであり、当該隔離実行環境がユーザーA,Bによって合意された正しいデータ送信相手の隔離実行環境であることを、データ送信元となるデータ記憶部300Aが、データ送信のタイミングでは確認することができないためである。
ユーザーAの隔離実行環境の内部には、アセットの情報に基づいて、データ記憶部300Aから秘匿性の高いデータが入力される。しかし、通常のデータ入力方法では、たとえ鍵交換による暗号化通信を行ったとしても、システム運用事業者に悪意がある場合は、データ記憶部300Aから隔離実行環境の内部への通信経路において、秘匿性の高いデータが漏洩してしまう可能性がある。なぜなら、ユーザーAの隔離実行環境はユーザーA,Bの間で新たなコントラクト合意が結ばれた時点で起動されるものであり、当該隔離実行環境がユーザーA,Bによって合意された正しいデータ送信相手の隔離実行環境であることを、データ送信元となるデータ記憶部300Aが、データ送信のタイミングでは確認することができないためである。
第5の実施形態では、隔離実行環境に入力されるデータを暗号化する。ユーザーAの隔離実行環境内で公開鍵と秘密鍵の組を生成し、ユーザーAはその公開鍵で暗号化したデータをデータ記憶部300Aに格納する。これにより、データ記憶部300Aに格納された暗号化データは、隔離実行環境内に存在する秘密鍵でしか復号できないため、データ記憶部300Aから隔離実行環境への通信経路において、当該データを漏洩から保護できる。
図7のシーケンス図を参照し、コントラクト合意後の、ユーザーAの隔離実行環境がデータを取得する処理の流れの一例について説明する。
ステップS301にて、接続部200Aのポリシー適用部206の指示に基づき、実行部230Aは隔離実行環境を起動する。
ステップS302にて、隔離実行環境はアテステーションを実施する。
ステップS303にて、アテステーション済みのプログラム(ポリシー実行プログラムなど)は、隔離実行環境内で公開鍵と秘密鍵の組を生成する。
ステップS304にて、隔離実行環境は公開鍵を含むアテステーションレポートをユーザーAに送信する。具体的には、TEE機能がその公開鍵を含むアテステーションレポートを作成し、TEE機能が保持する秘密情報(秘密鍵など)によって署名する。隔離実行環境は、ユーザーAに対して、公開鍵を含むアテステーションレポートを送信する。ユーザーAは、アテステーションレポートの署名を検証することで、公開鍵が隔離実行環境内で生成された公開鍵であることを確認できる。アテステーションレポートに対する署名検証は、CPU,GPU等のハードウェアを製造するメーカーが公開する情報(公開鍵や証明書など)を用いて検証することができる。ユーザーAは、アテステーションレポートとは別に隔離実行環境から公開鍵を取得してもよい。この場合、アテステーションレポートに公開鍵のハッシュ値を含めることで、公開鍵が隔離実行環境内で生成された公開鍵であることを確認できる。
ステップS305にて、ユーザーAは、データ記憶部300Aに対して、公開鍵を用いて暗号化したデータを格納する。
ステップS306にて、隔離実行環境は暗号化データをデータ記憶部300Aから取得する。
ステップS307にて、隔離実行環境は、保持する秘密鍵で暗号化データを復号する。暗号化データを復号後、隔離実行環境はデータを処理し、ユーザーBにデータを送信する。
なお、公開鍵で暗号化できるデータの量は限られている場合があるが、データの暗号化および復号を以下の手順とすればよい。ユーザーAは、新たに共通鍵を生成して、データを共通鍵を用いて暗号化するとともに、共通鍵のみを公開鍵で暗号化する。ユーザーAは、共通鍵で暗号化済みのデータと、公開鍵で暗号化済みの共通鍵の両方をデータ記憶部300Aに格納する。隔離実行環境は、共通鍵で暗号化済みのデータと公開鍵で暗号化済みの共通鍵の両方を取得し、秘密鍵で共通鍵を復号し、復号した共通鍵でデータを復号する。これにより、隔離実行環境内に存在する秘密鍵を用いることなくデータを復号することはできない。
以上説明したように、本実施形態によれば、隔離実行環境内で公開鍵と秘密鍵の組を生成し、公開鍵で暗号化したデータをデータ記憶部300Aに格納することで、データ記憶部300AからユーザーAの隔離実行環境への通信経路において、秘匿性の高いデータを漏洩することなく保護できる。また、ユーザーAの隔離実行環境のアテステーションレポートが公開鍵の情報を含むことで、ユーザーAは公開鍵の正当性を検証できる。
[第6の実施形態]
ユーザーBの隔離実行環境の内部には、アセットの情報に基づいて、ユーザーAの隔離実行環境から秘匿性の高いデータが入力される。しかし、通常のデータ入力方法では、たとえ鍵交換による暗号化通信を行ったとしても、システム運用事業者に悪意がある場合は、ユーザーAの隔離実行環境からユーザーBの隔離実行環境への通信経路において、秘匿性の高いデータが漏洩してしまう可能性がある。なぜなら、ユーザーBの隔離実行環境はユーザーA,Bの間で新たなコントラクト合意が結ばれた時点で起動されるものであり、当該隔離実行環境がユーザーA,Bによって合意された正しいデータ送信相手の隔離実行環境であることを、データ送信元となるユーザーAの隔離実行環境が、データ送信のタイミングでは確認することができないためである。
ユーザーBの隔離実行環境の内部には、アセットの情報に基づいて、ユーザーAの隔離実行環境から秘匿性の高いデータが入力される。しかし、通常のデータ入力方法では、たとえ鍵交換による暗号化通信を行ったとしても、システム運用事業者に悪意がある場合は、ユーザーAの隔離実行環境からユーザーBの隔離実行環境への通信経路において、秘匿性の高いデータが漏洩してしまう可能性がある。なぜなら、ユーザーBの隔離実行環境はユーザーA,Bの間で新たなコントラクト合意が結ばれた時点で起動されるものであり、当該隔離実行環境がユーザーA,Bによって合意された正しいデータ送信相手の隔離実行環境であることを、データ送信元となるユーザーAの隔離実行環境が、データ送信のタイミングでは確認することができないためである。
第6の実施形態では、ユーザー間で送受信されるデータを暗号化する。ユーザーBの隔離実行環境内で公開鍵と秘密鍵の組を生成し、ユーザーAの隔離実行環境はその公開鍵で暗号化したデータを送信する。これにより、ユーザーAの隔離実行環境から送信される暗号化データは、ユーザーBの隔離実行環境内に存在する秘密鍵でしか復号できないため、ユーザーAの隔離実行環境からユーザーBの隔離実行環境への通信経路において、当該データを漏洩から保護できる。
図8のシーケンス図を参照し、コントラクト合意後の、ユーザーAの隔離実行環境からユーザーBの隔離実行環境へデータを送信する処理の一例について説明する。
ステップS401にて、接続部200Aのポリシー適用部206の指示に基づき、実行部230Aは隔離実行環境を起動する。
ステップS402にて、隔離実行環境はアテステーションを実施する。
ユーザーB側も同様に、ステップS403にて、接続部200Bのポリシー適用部206の指示に基づき、実行部230Bは隔離実行環境を起動する。
ステップS404にて、隔離実行環境はアテステーションを実施する。
ステップS405にて、アテステーション済みのプログラム(ポリシー実行プログラムなど)は、ユーザーBの隔離実行環境内で公開鍵と秘密鍵の組を生成する。
ステップS406にて、ユーザーBの隔離実行環境は公開鍵を含むアテステーションレポートをユーザーAの隔離実行環境に送信する。具体的には、TEE機能がその公開鍵を含むアテステーションレポートを作成し、TEE機能が保持する秘密情報(秘密鍵など)によって署名する。ユーザーBの隔離実行環境は、ユーザーAの隔離実行環境に対して、公開鍵を含むアテステーションレポートを送信する。ユーザーAの隔離実行環境内のプログラムは、アテステーションレポートの署名を検証することで、公開鍵が隔離実行環境内で生成された公開鍵であることを確認できる。アテステーションレポートに対する署名検証は、CPU,GPU等のハードウェアを製造するメーカーが公開する情報(公開鍵や証明書など)を用いて検証することができる。ユーザーAは、アテステーションレポートとは別にユーザーBの隔離実行環境から公開鍵を取得してもよい。この場合、アテステーションレポートに公開鍵のハッシュ値を含めることで、公開鍵が隔離実行環境内で生成された公開鍵であることを確認できる。
ステップS407にて、ユーザーAの隔離実行環境は、データ記憶部300Aからデータを取得する。ユーザーAの隔離実行環境は、データ利用条件に従いデータを処理してもよい。
ステップS408,S409にて、ユーザーAの隔離実行環境は、ユーザーBの隔離実行環境にデータを送信する際、公開鍵を用いてデータを暗号化し、暗号化データをユーザーBの隔離実行環境に送信する。
ステップS410にて、ユーザーBの隔離実行環境は、保持する秘密鍵で暗号化データを復号する。暗号化データを復号後、隔離実行環境はデータを処理し、処理後のデータをデータ記憶部300Bに格納する。
なお、公開鍵で暗号化できるデータの量は限られている場合があるが、データの暗号化および復号を以下の手順とすればよい。ユーザーAの隔離実行環境は、新たに共通鍵を生成して、データを共通鍵を用いて暗号化するとともに、共通鍵のみを公開鍵で暗号化する。ユーザーAの隔離実行環境は、共通鍵で暗号化済みのデータと、公開鍵で暗号化済みの共通鍵の両方をユーザーBの隔離実行環境に送信する。ユーザーBの隔離実行環境は、共通鍵で暗号化済みのデータと公開鍵で暗号化済みの共通鍵の両方を受信し、秘密鍵で共通鍵を復号し、復号した共通鍵でデータを復号する。これにより、ユーザーBの隔離実行環境内に存在する秘密鍵を用いることなくデータを復号することはできない。
ユーザーAの隔離実行環境からユーザーBの隔離実行環境へ送信されるデータを改ざんされないようにするためには、ユーザーAの隔離実行環境内で公開鍵と秘密鍵の組を生成し、公開鍵をユーザーBの隔離実行環境へ送信しておき、ユーザーAの隔離実行環境は、ユーザーBの隔離実行環境へ送信するデータに対して秘密鍵で署名する。ユーザーBの隔離実行環境は、公開鍵を用いて署名を検証することで、受信したデータが改ざんされていないことを確認できる。アテステーションレポートにこの公開鍵の情報を含めることで、公開鍵の正当性を検証できる。
実施方法のバリエーションとして、ユーザーBが隔離実行環境外で公開鍵と秘密鍵の組を生成しておき、秘密鍵または公開鍵と秘密鍵の両方をユーザーBの隔離実行環境の中へ送信し、公開鍵をユーザーAの隔離実行環境へ送信する、という方法も可能である。ユーザーBが隔離実行環境を有しない場合でも、公開鍵をユーザーAの隔離実行環境へ送信することで、ユーザーAの隔離実行環境から受信した暗号化データをユーザーBの保持する秘密鍵で復号し、データ記憶部300Bに格納できる。なお、公開鍵と秘密鍵の組を生成する環境が隔離実行環境内ではないため、必要とするセキュリティ要件によっては、公開鍵と秘密鍵の組を悪意のあるシステム運用事業者によって改ざんされないように保護する仕組みが必要となる場合がある。
以上説明したように、本実施形態によれば、ユーザーBの隔離実行環境内で公開鍵と秘密鍵の組を生成し、ユーザーAの隔離実行環境がその公開鍵で暗号化したデータをユーザーBの隔離実行環境に送信することで、ユーザーAの隔離実行環境からユーザーBの隔離実行環境への通信経路において、秘匿性の高いデータを漏洩することなく保護できる。また、ユーザーBの隔離実行環境のアテステーションレポートが公開鍵の情報を含むことで、ユーザーAは公開鍵の正当性を検証できる。
[第7の実施形態]
ユーザーBの隔離実行環境の内部からは、アセットの情報に基づいて、ユーザーAの隔離実行環境から送信された秘匿性の高いデータが出力される。しかし、通常のデータ入力方法では、たとえ鍵交換による暗号化通信を行ったとしても、システム運用事業者に悪意がある場合は、ユーザーBの隔離実行環境からユーザーBのデータ記憶部300Bへの通信経路において、秘匿性の高いデータが漏洩してしまう可能性がある。なぜなら、ユーザーBの隔離実行環境はユーザーA,Bの間で新たなコントラクト合意が結ばれた時点で起動されるものであり、データ送信元となるユーザーBの隔離実行環境が、データ送信相手が正しいユーザーBのデータ記憶部300Bであることを、データ送信のタイミングでは確認することができないためである。
ユーザーBの隔離実行環境の内部からは、アセットの情報に基づいて、ユーザーAの隔離実行環境から送信された秘匿性の高いデータが出力される。しかし、通常のデータ入力方法では、たとえ鍵交換による暗号化通信を行ったとしても、システム運用事業者に悪意がある場合は、ユーザーBの隔離実行環境からユーザーBのデータ記憶部300Bへの通信経路において、秘匿性の高いデータが漏洩してしまう可能性がある。なぜなら、ユーザーBの隔離実行環境はユーザーA,Bの間で新たなコントラクト合意が結ばれた時点で起動されるものであり、データ送信元となるユーザーBの隔離実行環境が、データ送信相手が正しいユーザーBのデータ記憶部300Bであることを、データ送信のタイミングでは確認することができないためである。
第7の実施形態では、隔離実行環境から出力されるデータを暗号化する。ユーザーBのデータ記憶部300Bで公開鍵と秘密鍵の組を生成し、ユーザーBの隔離実行環境はその公開鍵で暗号化したデータを送信する。これにより、隔離実行環境から送信される暗号化データは、データ記憶部300Bの保持する秘密鍵でしか復号できないため、隔離実行環境からデータ記憶部300Bへの通信経路において、当該データを漏洩から保護できる。
図9のシーケンス図を参照し、コントラクト合意後の、ユーザーBの隔離実行環境からデータ記憶部300Bへデータを送信する処理の一例について説明する。
ステップS501にて、接続部200Bのポリシー適用部206の指示に基づき、実行部230Bは隔離実行環境を起動する。
ステップS502にて、隔離実行環境はアテステーションを実施する。
ステップS503にて、データ記憶部300Bは公開鍵と秘密鍵の組を生成する。データ記憶部300B以外の装置で公開鍵と秘密鍵の組を生成し、秘密鍵をデータ記憶部300Bに保持させてもよい。
ステップS504にて、データ記憶部300Bは公開鍵を隔離実行環境へ送信する。
ステップS505,S506にて、隔離実行環境のプログラムは、データ記憶部300Bにデータを送信する際、公開鍵を用いてデータを暗号化し、暗号化データをデータ記憶部300Bに送信する。
ステップS507にて、データ記憶部300Bは保持する秘密鍵で暗号化データを復号し、格納する。
なお、データ記憶部300Bで公開鍵と秘密鍵の組を生成しており、公開鍵と秘密鍵の組を生成する環境が隔離実行環境内ではないため、必要とするセキュリティ要件によっては、公開鍵と秘密鍵の組を悪意のあるシステム運用事業者によって改ざんされないように保護する仕組みが必要となる場合がある。
隔離実行環境からデータ記憶部300Bへ送信されるデータを改ざんされないようにするためには、隔離実行環境内で公開鍵と秘密鍵の組を生成し、公開鍵をデータ記憶部300Bへ送信しておき、データ記憶部300Bへ送信するデータに対して秘密鍵で署名する。データ記憶部300Bは、公開鍵を用いて署名を検証することで、受信したデータが改ざんされていないことを確認できる。アテステーションレポートにこの公開鍵の情報を含めることで、公開鍵の正当性を検証できる。
以上説明したように、本実施形態によれば、データ記憶部300Bで公開鍵と秘密鍵の組を生成し、ユーザーBの隔離実行環境がその公開鍵で暗号化したデータをデータ記憶部300Bに送信することで、ユーザーBの隔離実行環境からデータ記憶部300Bへの通信経路において、秘匿性の高いデータを漏洩することなく保護できる。
なお、第1の実施形態に対して、第2の実施形態から第7の実施形態を自由に組み合わせてもよい。
[実施例]
データ流通基盤100で使用する接続部200A,200B、送受信部220A,220B、実行部230A,230B、およびデータ記憶部300A,300Bは、各会社が有する装置であってもよいし、クラウド上の仮想マシンであってもよいし、クラウドアプリケーションサービス (SaaS)として提供されるものであってもよい。各会社もしくは各部について、装置、クラウド上の仮想マシン、およびクラウドアプリケーションサービスなどを組み合わせて用いてもよい。以下、いくつかの実施例について説明する。
データ流通基盤100で使用する接続部200A,200B、送受信部220A,220B、実行部230A,230B、およびデータ記憶部300A,300Bは、各会社が有する装置であってもよいし、クラウド上の仮想マシンであってもよいし、クラウドアプリケーションサービス (SaaS)として提供されるものであってもよい。各会社もしくは各部について、装置、クラウド上の仮想マシン、およびクラウドアプリケーションサービスなどを組み合わせて用いてもよい。以下、いくつかの実施例について説明する。
第1の実施例は、A社の工場とB社の工場の間で、合意コントラクトに基づいてデータを送受信する実施例である。
A社の工場にユーザーAの接続部200A、実行部230A、データ記憶部300Aがあり、B社の工場にユーザーBの接続部200B、実行部230B、データ記憶部300Bがある。データ記憶部300AはA社の工場から収集したデータを蓄積するデータベースであってもよい。データ記憶部300BはB社の工場からデータを閲覧可能なデータベースであってもよい。
A社の工場からB社の工場に対してデータが送信される。その際、コントラクト交渉で合意したデータ利用条件に基づいてデータの送受信を行う。
第2の実施例は、A社のクラウドとB社のクラウドの間で、合意コントラクトに基づいてデータを送受信する実施例である。
A社の契約するクラウド上にユーザーAの接続部200A、実行部230A、データ記憶部300Aがあり、B社の契約するクラウド上にユーザーBの接続部200B、実行部230B、データ記憶部300Bがある。データ記憶部300AはA社の工場から収集したデータを蓄積するデータベースであってもよい。データ記憶部300BはB社の工場からデータを閲覧可能なデータベースであってもよい。
A社のクラウドからB社のクラウドに対してデータが送信される。その際、コントラクト交渉で合意したデータ利用条件に基づいてデータの送受信を行う。
第3の実施例は、A社の工場とB社のクラウドアプリケーションサービスの間で、合意コントラクトに基づいてデータを送受信する実施例である。
A社の工場にユーザーAの接続部200A、実行部230A、データ記憶部300Aがあり、B社のクラウドアプリケーションサービス上にユーザーBの接続部200B、実行部230B、データ記憶部300Bがある。データ記憶部300AはA社の工場から収集したデータを蓄積するデータベースであってもよい。データ記憶部300BはB社の工場からデータを閲覧可能なデータベースであってもよい。
A社の工場からB社のクラウドアプリケーションサービスに対してデータが送信される。その際、コントラクト交渉で合意したデータ利用条件に基づいてデータの送受信を行う。
第4の実施例は、A社のクラウドアプリケーションサービスとB社のクラウドアプリケーションサービスの間で、合意コントラクトに基づいてデータを送受信する実施例である。
A社のクラウドアプリケーションサービス上にユーザーAの接続部200A、実行部230A、データ記憶部300Aがあり、B社のクラウドアプリケーションサービス上にユーザーBの接続部200B、実行部230B、データ記憶部300Bがある。データ記憶部300AはA社の工場から収集したデータを蓄積するデータベースであってもよい。データ記憶部300BはB社の工場からデータを閲覧可能なデータベースであってもよい。
A社のクラウドアプリケーションサービスからB社のクラウドアプリケーションサービスに対してデータが送信される。その際、コントラクト交渉で合意したデータ利用条件に基づいてデータの送受信を行う。
いずれの実施例においても、本開示の技術を適用し、ユーザーAの実行部230AからユーザーB場の実行部230Bに対してデータを送信することで、実行部230BにおいてユーザーAが提供したデータを処理する時点では、当該データをシステム運用事業者やユーザーBから暗号化により秘匿した状態で処理することが可能となる。ユーザーAは、実行部230Bにおいて行われるデータ処理について、事前に合意している処理内容のみが行われるようにデータの利用制御を行うことができる。また、ユーザーAは、実行部230Bの隔離実行環境、データ利用条件、および実行履歴についてリモートアテステーションを実施することにより、不正に改ざんされていないことを検証できる。
実施例のバリエーションとして、データを分析するプログラムが、データ提供者であるユーザーAからユーザーBの実行部230Bに秘匿されて送られて使われる場合と、データ利用者であるユーザーB自身が実行部230Bに送信して使われる場合がある。
また、ユーザーA,B間で合意の下、ユーザーBは、実行部230BによるユーザーAのデータの分析結果だけを取得することができるが、ユーザーAが実行部230Bに送信したデータをそのままでは閲覧できない、というような利用方法も可能である。
さらに、B社の利用する装置、クラウド、またはクラウドアプリケーションサービスが、A社だけでなく、複数社の利用する装置、クラウド、またはクラウドアプリケーションサービスと接続されており、A社を含むすべての複数社の合意の下、複数社のデータを横断的に分析し、ユーザーBは分析結果を取得できてもよい。
上記説明したデータ流通基盤100の各装置および各部には、例えば、図10に示すような、中央演算処理装置(CPU)901と、メモリ902と、ストレージ903と、通信装置904と、入力装置905と、出力装置906とを備える汎用的なコンピュータシステムを用いることができる。このコンピュータシステムにおいて、CPU901がメモリ902上にロードされた所定のプログラムを実行することにより、データ流通基盤100の各装置および各部が実現される。このプログラムは磁気ディスク、光ディスク、半導体メモリなどの、コンピュータが読み取り可能な非一時的な記録媒体に記録することも、ネットワークを介して配信することもできる。
100 データ流通基盤
110 認証サーバー
120 カタログサーバー
200A,200B 接続部
201 アセット定義管理部
202 ポリシー定義管理部
203 コントラクト定義管理部
204 コントラクト交渉機能部
205 コントラクト合意管理部
206 ポリシー適用部
210 認証機能部
220A,220B 送受信部
230A,230B 実行部
300A,300B データ記憶部
110 認証サーバー
120 カタログサーバー
200A,200B 接続部
201 アセット定義管理部
202 ポリシー定義管理部
203 コントラクト定義管理部
204 コントラクト交渉機能部
205 コントラクト合意管理部
206 ポリシー適用部
210 認証機能部
220A,220B 送受信部
230A,230B 実行部
300A,300B データ記憶部
Claims (8)
- ユーザー間でのデータ共有を提供するデータ共有装置であって、
データ流通基盤に接続してユーザー間で共有するデータと利用条件を含む共有条件の合意を形成する接続部と、
前記共有条件に従って動作するプログラムを含む実行環境のイメージを用いて隔離された安全な隔離実行環境を起動し、前記隔離実行環境内で前記共有条件に従ってデータを受信して処理する実行部とを有する、
データ共有装置。 - 請求項1に記載のデータ共有装置であって、
前記実行部は、前記隔離実行環境、前記実行環境のイメージ、前記共有条件、前記隔離実行環境内で受信したデータ、および前記隔離実行環境での処理結果の少なくともいずれかの信頼性を検証する、
データ共有装置。 - 請求項1に記載のデータ共有装置であって、
前記隔離実行環境内で公開鍵と秘密鍵の組を生成し、前記公開鍵で暗号化されたデータを受信して前記秘密鍵で復号する、
データ共有装置。 - 請求項1に記載のデータ共有装置であって、
前記隔離実行環境内で公開鍵を受信し、前記公開鍵で暗号化したデータを送信する、
データ共有装置。 - ユーザー間でのデータ共有を提供するデータ共有方法であって、
コンピュータが、
データ流通基盤に接続してユーザー間で共有するデータと利用条件を含む共有条件の合意を形成し、
前記共有条件に従って動作するプログラムを含む実行環境のイメージを用いて隔離された安全な隔離実行環境を起動し、
前記隔離実行環境内で前記共有条件に従ってデータを受信して処理する、
データ共有方法。 - 請求項5に記載のデータ共有方法であって、
前記隔離実行環境、前記実行環境のイメージ、前記共有条件、前記隔離実行環境内で受信したデータ、および前記隔離実行環境での処理結果の少なくともいずれかの信頼性を検証する、
データ共有方法。 - 請求項5に記載のデータ共有方法であって、
前記隔離実行環境内で公開鍵と秘密鍵の組を生成し、前記公開鍵で暗号化されたデータを受信して前記秘密鍵で復号する、
データ共有方法。 - 請求項5に記載のデータ共有方法であって、
前記隔離実行環境内で公開鍵を受信し、前記公開鍵で暗号化したデータを送信する、
データ共有方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/JP2024/009008 WO2025187037A1 (ja) | 2024-03-08 | 2024-03-08 | データ共有装置およびデータ共有方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/JP2024/009008 WO2025187037A1 (ja) | 2024-03-08 | 2024-03-08 | データ共有装置およびデータ共有方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| WO2025187037A1 true WO2025187037A1 (ja) | 2025-09-12 |
| WO2025187037A8 WO2025187037A8 (ja) | 2025-10-02 |
Family
ID=96990232
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/JP2024/009008 Pending WO2025187037A1 (ja) | 2024-03-08 | 2024-03-08 | データ共有装置およびデータ共有方法 |
Country Status (1)
| Country | Link |
|---|---|
| WO (1) | WO2025187037A1 (ja) |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2021205651A1 (ja) * | 2020-04-10 | 2021-10-14 | 日本電信電話株式会社 | 情報処理システム、情報処理方法、データ処理装置、およびプログラム |
| WO2022044281A1 (ja) * | 2020-08-28 | 2022-03-03 | 日本電信電話株式会社 | 処理装置、処理方法およびプログラム |
-
2024
- 2024-03-08 WO PCT/JP2024/009008 patent/WO2025187037A1/ja active Pending
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2021205651A1 (ja) * | 2020-04-10 | 2021-10-14 | 日本電信電話株式会社 | 情報処理システム、情報処理方法、データ処理装置、およびプログラム |
| WO2022044281A1 (ja) * | 2020-08-28 | 2022-03-03 | 日本電信電話株式会社 | 処理装置、処理方法およびプログラム |
Also Published As
| Publication number | Publication date |
|---|---|
| WO2025187037A8 (ja) | 2025-10-02 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN110968743B (zh) | 针对隐私数据的数据存储、数据读取方法及装置 | |
| EP3574622B1 (en) | Addressing a trusted execution environment | |
| WO2022073264A1 (en) | Systems and methods for secure and fast machine learning inference in trusted execution environment | |
| KR102443857B1 (ko) | 암호화키를 사용한 신뢰 실행 환경의 어드레싱 기법 | |
| US9846778B1 (en) | Encrypted boot volume access in resource-on-demand environments | |
| KR102489790B1 (ko) | 서명키를 사용한 신뢰 실행 환경의 어드레싱 기법 | |
| TWI701929B (zh) | 密碼運算、創建工作密鑰的方法、密碼服務平台及設備 | |
| JP2021504865A (ja) | ゲートウェイ装置に接続された非ipエンドポイントデバイスと接続されたサービスとの間のデータ転送を安全にするためのシステム及び方法 | |
| JP2021505098A (ja) | トランザクションコネクタ及びブローカサービスを使用してブロックチェーンネットワークのバージョン化されたブロックとしてデバイスライフサイクルトランザクションを記録するためのシステム及び方法 | |
| JP2024501752A (ja) | 鍵付きハッシュメッセージ認証コードの鍵マテリアルとしての属性ベースの暗号化鍵ユーザ認証および認可 | |
| JP2010514000A (ja) | 電子装置にプログラム状態データをセキュアに記憶するための方法 | |
| CN110235134B (zh) | 使用洁净室供应来寻址可信执行环境 | |
| WO2024139273A1 (zh) | 联邦学习方法、装置、可读存储介质及电子设备 | |
| US11640480B2 (en) | Data message sharing | |
| US10516655B1 (en) | Encrypted boot volume access in resource-on-demand environments | |
| JP2006174466A (ja) | データ処理における暗号化技術の信用できる信頼性の高い実施 | |
| US20230376574A1 (en) | Information processing device and method, and information processing system | |
| CN114861144A (zh) | 基于区块链的数据权限处理方法 | |
| Hanaoui et al. | Security requirements and model for mobile agent authentication | |
| WO2025187037A1 (ja) | データ共有装置およびデータ共有方法 | |
| US11405201B2 (en) | Secure transfer of protected application storage keys with change of trusted computing base | |
| EP4478228A1 (en) | Method for improving data security | |
| US20250211451A1 (en) | Secure architecture for 3rd-party management of organizational application resources | |
| CN116170140B (zh) | 用户密钥保护方法、设备、存储介质和系统 | |
| EP3793130A1 (en) | Secure decentralized cloud computing with privacy controls |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 24928510 Country of ref document: EP Kind code of ref document: A1 |