什么是 MPC?
多方计算 (Multi-party computation,简称 MPC) 是密码学的一个分支,起源于上世纪 80 年代 Andrew C. Yao 的划时代作品。在 MPC 中,一组不信任彼此的各方试图在保持输入数据私密的前提下,共同计算一个函数。
例如,假设一家公司有 n 名员工想知道谁的工资最高,但又不想互相透露自己的实际工资。在这种情况下,工资是私有输入数据,输出则是工资最高的员工姓名。进行这种计算时,使用 MPC 方法可以确保计算过程中不会泄漏任何一个员工的工资。
MPC 的两个主要特征是正确性
与隐私性
:
-
正确性:算法产生的输出结果是正确的(与预期相符)。
-
隐私性:一个参与方持有的秘密输入数据不会泄露给其他参与方。
MPC(多方计算)的基本密码原语描述如下:
-
Shamir Secret Sharing: 将秘密分成多份,只有当至少拥有特定门限数量的份额被组合时才能重构原始秘密。
-
Oblivious Transfer: 允许发送方将两个比特流传输到接收方,但只向一个泄漏选择。
-
Homomorphic Encryption: 可以对密文进行加法+或乘法*,并且在加密的级别上产生加法和乘法的积,而不是明文。
-
Digitally Signed Commitment Schemes: 可以确保数据完整性,防止数据丢失或被篡改。
-
Zero-Knowledge Proof: 允许证明方在不透露知识的情况下,证明他知道如何执行特定计算的变量。