US-20260128854-A1 - SECURE COMPUTATION USING MULTI-PARTY COMPUTATION AND A TRUSTED EXECUTION ENVIRONMENT
Abstract
Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for using cryptography, secure MPC, and a TEE to perform computations in ways that preserve data privacy and protect the security of data of each party that is involved in the computation process. In one aspect, a first MPC system of a cluster of MPC systems receives, from a computing system, a first secret share of input data. The first MPC system sends, to an application running in a TEE separate from the cluster of MPC systems, first secret shares of a set of data items generated based at least in part on the first secret share of the input data. The application is configured to generate secret shares of application output data. The first MPC system performs, in collaboration with the one or more second MPC systems of the cluster, one or more secure multi-party computations.
Inventors
- Gang Wang
- Marcel M. Moti Yung
Assignees
- GOOGLE LLC
Dates
- Publication Date
- 20260507
- Application Date
- 20221130
- Priority Date
- 20220408
Claims (20)
- 1 . A computer-implemented method comprising: receiving, from a computing system and by a first multi-party computation (MPC) system of a cluster of MPC systems, a first secret share of input data; sending, by the first MPC system and to an application running in a trusted execution environment (TEE) separate from the cluster of MPC systems, first secret shares of a set of data items generated based at least in part on the first secret share of the input data, wherein the application is configured to generate secret shares of application output data, the secret shares of the application output data generated based on one or more computations using plaintext values of the set of data items, the plaintext values of the set of data items being generated using (i) the first secret shares of the set of data items and (ii) respective second secret shares of the set of data items provided by one or more second MPC systems of the cluster; performing, by the first MPC system in collaboration with the one or more second MPC systems of the cluster, one or more secure multi-party computations using: (i) the first secret share of the input data, (ii) a respective second secret share of the input data received by each of the one or more second MPC systems, (iii) a first secret share of the output data received from the application by the first MPC system, and (iv) a respective second secret share of the output data received from the application by each of the one or more second MPC systems; and sending, by the first MPC system, a first secret share of result data resulting from the one or more secure multi-party computations to at least one of (i) the computing system or (ii) one or more additional computing systems different from the computing system.
- 2 . The computer-implemented method of claim 1 , wherein the computing system generates plaintext result data by combining the first secret share of the result data with a respective secret share of the result data received from each of the one or more second MPC systems.
- 3 . The computer-implemented method of claim 1 , wherein the application is configured to: compute plaintext values of the set of data items by combining the first secret shares of the set of data items with respective second secret shares of the set of data items received from the one or more second MPC systems; perform one or more computations using at least the plaintext values of the second set of data items; generate secret shares of application output data generated based on the one or more computations; provide the first secret share of the application output data to the first MPC system; and provide, to each second MPC system, the respective second secret share of the application output data for the second MPC system.
- 4 . The computer-implemented method of claim 1 further comprising: receiving, from the computing system by the first MPC system, a respective encrypted second secret share of the input data for each of the one or more second MPC systems; and providing, by the first MPC system to each second MPC system, the respective encrypted second secret share of the input data for the second MPC system.
- 5 . The computer-implemented method of claim 4 , wherein the first MPC system receives the first secret share of the input data and the respective encrypted second secret share of the input data for each of the one or more second MPC systems in a composite request sent from the computing system.
- 6 . The computer-implemented method of claim 1 , wherein sending, by the first MPC system, a first secret share of result data resulting from the one or more secure multi-party computations to the computing system comprises sending a composite message comprising the first secret share of the result data and respective encrypted second secret shares of the result data received from the one or more second MPC systems.
- 7 . The computer-implemented method of claim 1 , wherein sending, by the first MPC system, the first secret shares of the set of the data items to the application comprises sending, to the application, a composite message comprising the first secret shares of the set of data items and respective encrypted second secret shares of the set of data items received from the one or more second MPC systems.
- 8 . The computer-implemented method of claim 7 , further comprising: receiving, from the application by the first MPC system, the first secret share of the application output data and a respective encrypted second secret share of the application output data for each of the one or more second MPC systems; and providing, to each second MPC system, the respective encrypted second secret shares of the application output data.
- 9 . The method of claim 1 , further comprising verifying trustworthiness of the application running in the TEE prior to sending the first secret shares of the first set of data items to the application.
- 10 . The method of claim 1 , wherein the one or more computations performed by the application comprise (i) one or more vector dot product computations, (ii) one or more sorting operations, or (iii) a combination of (i) and (ii).
- 11 . The method of claim 1 , further comprising generating the first secret shares of the set of data items based on the first secret share of the input data and additional data stored by the first MPC system.
- 12 . A system comprising: one or more processors; and one or more storage devices storing instructions that, when executed by the one or more processors, cause the one or more processor to perform operations comprising: receiving, from a computing system and by a first multi-party computation (MPC) system of a cluster of MPC systems, a first secret share of input data; sending, by the first MPC system and to an application running in a trusted execution environment (TEE) separate from the cluster of MPC systems, first secret shares of a set of data items generated based at least in part on the first secret share of the input data, wherein the application is configured to generate secret shares of application output data, the secret shares of the application output data generated based on one or more computations using plaintext values of the set of data items, the plaintext values of the set of data items being generated using (i) the first secret shares of the set of data items and (ii) respective second secret shares of the set of data items provided by one or more second MPC systems of the cluster; performing, by the first MPC system in collaboration with the one or more second MPC systems of the cluster, one or more secure multi-party computations using: (i) the first secret share of the input data, (ii) a respective second secret share of the input data received by each of the one or more second MPC systems, (iii) a first secret share of the output data received from the application by the first MPC system, and (iv) a respective second secret share of the output data received from the application by each of the one or more second MPC systems; and sending, by the first MPC system, a first secret share of result data resulting from the one or more secure multi-party computations to at least one of (i) the computing system or (ii) one or more additional computing systems different from the computing system.
- 13 . A non-transitory computer readable storage medium carrying instructions that, when executed by one or more processors, cause the one or more processors to perform operations comprising: receiving, from a computing system and by a first multi-party computation (MPC) system of a cluster of MPC systems, a first secret share of input data; sending, by the first MPC system and to an application running in a trusted execution environment (TEE) separate from the cluster of MPC systems, first secret shares of a set of data items generated based at least in part on the first secret share of the input data, wherein the application is configured to generate secret shares of application output data, the secret shares of the application output data generated based on one or more computations using plaintext values of the set of data items, the plaintext values of the set of data items being generated using (i) the first secret shares of the set of data items and (ii) respective second secret shares of the set of data items provided by one or more second MPC systems of the cluster; performing, by the first MPC system in collaboration with the one or more second MPC systems of the cluster, one or more secure multi-party computations using: (i) the first secret share of the input data, (ii) a respective second secret share of the input data received by each of the one or more second MPC systems, (iii) a first secret share of the output data received from the application by the first MPC system, and (iv) a respective second secret share of the output data received from the application by each of the one or more second MPC systems; and sending, by the first MPC system, a first secret share of result data resulting from the one or more secure multi-party computations to at least one of (i) the computing system or (ii) one or more additional computing systems different from the computing system.
- 14 . (canceled)
- 15 . The system of claim 12 , wherein the operations further comprise: generating plaintext result data by combining the first secret share of the result data with a respective secret share of the result data received from each of the one or more second MPC systems.
- 16 . The system of claim 12 , wherein the application is configured to: compute plaintext values of the set of data items by combining the first secret shares of the set of data items with respective second secret shares of the set of data items received from the one or more second MPC systems; perform one or more computations using at least the plaintext values of the second set of data items; generate secret shares of application output data generated based on the one or more computations; provide the first secret share of the application output data to the first MPC system; and provide, to each second MPC system, the respective second secret share of the application output data for the second MPC system.
- 17 . The system of claim 12 , wherein the operations further comprise: receiving, from the computing system by the first MPC system, a respective encrypted second secret share of the input data for each of the one or more second MPC systems; and providing, by the first MPC system to each second MPC system, the respective encrypted second secret share of the input data for the second MPC system.
- 18 . The system of claim 12 , wherein sending, by the first MPC system, a first secret share of result data resulting from the one or more secure multi-party computations to the computing system comprises sending a composite message comprising the first secret share of the result data and respective encrypted second secret shares of the result data received from the one or more second MPC systems.
- 19 . The non-transitory computer readable storage medium of claim 13 , wherein the operations further comprise: generating plaintext result data by combining the first secret share of the result data with a respective secret share of the result data received from each of the one or more second MPC systems.
- 20 . The non-transitory computer readable storage medium of claim 13 , wherein the application is configured to: compute plaintext values of the set of data items by combining the first secret shares of the set of data items with respective second secret shares of the set of data items received from the one or more second MPC systems; perform one or more computations using at least the plaintext values of the second set of data items; generate secret shares of application output data generated based on the one or more computations; provide the first secret share of the application output data to the first MPC system; and provide, to each second MPC system, the respective second secret share of the application output data for the second MPC system.
Description
TECHNICAL FIELD This specification is related to cryptography and data security. BACKGROUND Secure multi-party computation (MPC) is a family of cryptographic protocols that prevents access to data by distributing computations across multiple parties such that no individual party can access another party's data or intermediate computed values, while outputs are released only to designated parties. The MPC computing systems typically perform the computations using secret shares or other encrypted forms of the data and secure exchange of information between the parties. A Trusted Execution Environment (TEE) is a computing environment where the code that is executed and the data that is being accessed is isolated and protected in terms of confidentiality and integrity. A TEE can be implemented using both computer hardware and software. For example, a TEE can include a hardware isolation mechanism and software, e.g., an operating system, executing on the hardware isolation mechanism. SUMMARY In general, one innovative aspect of the subject matter described in this specification can be embodied in methods including the operations of receiving, from a computing system and by a first multi-party computation (MPC) system of a cluster of MPC systems, a first secret share of input data; sending, by the first MPC system and to an application running in a trusted execution environment (TEE) separate from the cluster of MPC systems, first secret shares of a set of data items generated based at least in part on the first secret share of the input data, where the application is configured to generate secret shares of application output data, the secret shares of the application output data generated based on one or more computations using plaintext values of the set of data items, the plaintext values of the set of data items being generated using (i) the first secret shares of the set of data items and (ii) respective second secret shares of the set of data items provided by one or more second MPC systems of the cluster; performing, by the first MPC system in collaboration with the one or more second MPC systems of the cluster, one or more secure multi-party computations using: (i) the first secret share of the input data, (ii) a respective second secret share of the input data items received by each of the one or more second MPC systems, (iii) a first secret share of the output data received from the application by the first MPC system, and (iv) a respective second secret share of the output data received from the application by each of the one or more second MPC systems and sending, by the first MPC system, a first secret share of result data resulting from the one or more secure multi-party computations to at least one of (i) the computing system or (ii) one or more additional computing systems different from the computing system. Other implementations of this aspect include corresponding apparatus, systems, and computer programs, configured to perform the aspects of the methods, encoded on computer storage devices. These and other implementations can each optionally include one or more of the following features. In some aspects, the computing system generates plaintext result data by combining the first secret share of the result data with a respective secret share of the result data received from each of the one or more second MPC systems. In some aspects, the application is configured to compute plaintext values of the set of data items by combining the first secret shares of the set of data items with respective second secret shares of the set of data items received from the one or more second MPC systems; perform one or more computations using at least the plaintext values of the second set of data items; generate secret shares of application output data generated based on the one or more computations; provide the first secret share of the application output data to the first MPC system; and provide, to each second MPC system, the respective second secret share of the application output data for the second MPC system. In some aspects, the first MPC system receives a respective encrypted second secret share of the input data for each of the one or more second MPC systems from the computing system and provides, to each second MPC system, the respective encrypted second secret share of the input data for the second MPC system. In some aspects, the first MPC system receives the first secret share of the input data and the respective encrypted second secret share of the input data for each of the one or more second MPC systems in a composite request sent from the computing system. In some aspects, sending, by the first MPC system, a first secret share of result data resulting from the one or more secure multi-party computations to the computing system includes sending a composite message including the first secret share of the result data and respective encrypted second secret shares of the result data received from th