Secure Multi-Party Computation
Secure Multi-Party Computation (SMC) is a cryptography subfield that allows parties to jointly compute a function over their inputs while keeping those inputs private. In simpler terms, multiple parties can collaborate to compute some result without revealing their data to each other. The result is derived so that, ideally, no particular party can determine any information about the others' private inputs.
How Does It Work?
The fundamental idea is to split each sensitive input into multiple "shares" distributed among the participants. When viewed individually, these shares are computed to reveal nothing about the original data. The parties then perform computations on these shares, passing them between each other as needed. After the computation is complete, the shares of the result are combined to reveal the final answer, which is made known to all participating parties (or to whichever parties are designated to receive the output). The individual shares are designed so that the original inputs cannot be reconstructed unless a party has access to all (or a quorum of) the claims.
Examples
-
Secure Voting. SMC can be used to tally votes without exposing who voted for whom.
-
Private Set Intersection. Two companies might want to find out which customers they have in common without revealing their entire customer lists to each other.
-
Medical Research. Multiple hospitals might want to jointly compute statistical data related to disease while preserving the confidentiality of individual patient records.
Protocols and Techniques
- Yao's Garbled Circuits. A technique to represent any function as an obfuscated "circuit" so that one party can evaluate it without learning additional information.
- Secret Sharing Schemes. Like Shamir's Secret Sharing, a secret is divided into parts and distributed among participants.
- Homomorphic Encryption. A kind of encryption that allows computations to be performed on encrypted data without decrypting it.