MPC 安全多方计算
安全多方计算 (MPC) 从入门到实践
什么是安全多方计算
安全多方计算(Secure Multi-Party Computation, MPC)是一种密码学协议,允许一组互不信任的参与方,在不泄露各自私有输入的情况下,共同计算某个约定好的函数,并且获得正确的计算结果。形象地说,就是“既能一起算个数,又不用互相看底牌”。
MPC 的概念最早由姚期智在 1982 年通过百万富翁问题提出:两个富翁想比较谁更富有,但不想透露自己的具体资产。这个问题完美诠释了 MPC 的核心诉求——输入隐私与结果正确并存。
为什么需要 MPC
在数字化时代,数据被称为新的石油,但数据孤岛与隐私合规之间的矛盾日益突出。组织之间希望进行联合统计、联合建模或联合查询,但又担心数据泄露与法律风险。MPC 提供了一种根本性的技术出路:
- 数据可用不可见:各方数据始终保留在本地,计算过程中不会以明文形式暴露给任何一方。
- 去中心化信任:无需将数据集中到一个可信第三方,降低单点泄露风险。
- 合规友好:符合 GDPR、个人信息保护法等“最小必要”原则,因为原始数据从未离开。
MPC 的核心思想与基础模块
理解 MPC 需要先掌握几个基础密码学工具,它们如同积木一样被组合使用。
秘密分享
秘密分享(Secret Sharing)将一份秘密拆成若干碎片(份额),单独一个碎片毫无意义,只有凑齐规定数量的碎片才能恢复秘密。最经典的 Shamir 门限方案:将一个秘密 $s$ 拆成 $n$ 份,任意 $t$ 份可重建 $s$,少于 $t$ 份则完全得不到任何信息。
在 MPC 中,每个参与方拿到的不是原始数据,而是数据的碎片。计算过程就在这些碎片上进行,最终通过合并份额得到结果,中间每一步都不会暴露原始值。
不经意传输
不经意传输(Oblivious Transfer, OT)是一种两方协议:发送方拥有多条消息,接收方只想要其中一条,但发送方不知道接收方选了哪一条,接收方也只能获得自己选择的那条,对其它消息一无所知。
OT 是构造更复杂安全计算协议的基础组件,经常被用来实现在不暴露选择位的前提下传输加密数据。
混淆电路
混淆电路(Garbled Circuit)由姚期智提出,是两方安全计算的重要实现方式。它将待计算的函数表示成一个逻辑电路,其中每根线用两个随机标签(分别代表 0 和 1)代替,之后对每个门的真值表进行加密混淆。一方生成这个混淆电路,另一方通过 OT 获取自己输入对应的标签,然后运行电路,最终得到输出标签,再映射回实际结果。
混淆电路的优点是常数轮交互,但通信代价与电路规模成正比。
同态加密
同态加密(Homomorphic Encryption, HE)允许直接在密文上进行运算,运算结果的密文解密后等于对明文直接运算的结果。利用 HE 可以构造一个简单模型:一方加密自己的数据发送给另一方,另一方在自己数据上同样操作,并在密文域完成函数计算,最后将密文结果回传给前者解密。
全同态加密(Fully HE)理论上可以完成任意计算,但性能开销较大,现阶段常用于浅层计算或结合其它 MPC 技术使用。
常见 MPC 协议范式
两方与多方场景
MPC 按参与方数量可分为两方计算(2PC)与多方计算。从协议设计角度,主要分为基于秘密分享的 MPC 和基于混淆电路 / GMW 类型的协议。前者适合算术运算(如线性代数、机器学习中的加法和乘法),后者适合布尔电路(比较、条件判断等)。
实际工程中往往混用多种技术,形成混合协议,在不同子任务上选择最优的底层原语。
非诚实多数与诚实多数
协议的安全性假设决定了它能抵御多少恶意行为:
- 半诚实模型(也称为“被动安全”):参与方会严格遵守协议,但可能试图从收到的消息中推断额外信息。这是较为常见也更容易实现的模型。
- 恶意模型(主动安全):参与方可以任意偏离协议,比如发送错误份额、提前中止等。该模型需要引入承诺、零知识证明等机制来保证计算正确性和公平性。
- 诚实多数假设:只有在多数方诚实的条件下安全性成立。根据是否允许秘密重构的阈值(如 2/3 诚实多数),可以设计开销更低的协议。
初学者应首先理解半诚实安全的 MPC,因其协议逻辑清晰,是学习恶意安全协议的基础。
代表性协议
- SPDZ 系列(SPDZ、MASCOT、Overdrive):基于同态加密和消息认证码(MAC)的恶意安全协议,支持大量算术运算,在机器学习推理上应用广泛。
- ABY / ABY³:混合协议框架,能够在算术分享、布尔分享和混淆电路之间高效转换,支持两方与三方计算。
- 秘密分享 + OT 混合协议:如 SecureNN、Falcon 等,专注于神经网络的安全推断,采用 3 方或 4 方架构,利用半诚实模型和定制化 OT 实现极高效率。
MPC 的典型应用
隐私保护机器学习
联合多家机构(如银行、医院、运营商)的数据训练或推断模型,而不暴露各自原始数据。比如纵向联邦学习中的安全对齐与梯度聚合,均可用 MPC 中的安全加法协议实现。许多隐私计算平台(如 Google 的 Private Join and Compute、蚂蚁的摩斯、FATE 框架)底层都集成了 MPC 协议。
多方保密查询
多方保密查询(Private Set Intersection, PSI)属于 MPC 的特例:各参与方想找出数据集的交集,但不泄露交集以外的任何信息。PSI 可应用于广告转化测量、联系人发现、黑名单共享等。PSI 的协议往往定制优化,大量依赖 OT 和哈希技术。
安全竞标与拍卖
在竞价排名、频谱拍卖等场景中,买方希望自己的出价完全保密,而拍卖方必须正确计算出最高出价。MPC 可以确保只有最终的中标价格被公开,而未中标的出价始终不会泄露。
密钥管理与去中心化签名
MPC 可用于分布式密钥生成和多方签名,让私钥永远不以完整形式出现在任何单一设备上。多家 Web3 托管服务商使用 MPC-TSS(门限签名方案)来管理数字资产,一个交易必须由多个参与方联合计算签名,增强了安全性并防止内部作恶。
安全多方计算的挑战与未来方向
性能与通信开销
尽管 MPC 研究在过去十年取得巨大飞跃,但与明文计算相比,目前仍有 10² 到 10³ 倍以上的额外开销。主要瓶颈在网络通信,而非计算本身。高性能协议的设计目标是在轮数、通信量和计算复杂度之间找到平衡。
编程抽象与可用性
编写 MPC 应用需要较高的密码学工程功底,如同用汇编语言编程。近年来涌现出许多 MPC 编译器与框架,如 MP-SPDZ、EzPC、CrypTFlow、SIRNN 等,允许使用者用类似 Python 或 C 的子集编写程序,框架自动编译为 MPC 协议。提升开发者体验、降低使用门槛是行业推广的关键。
与可信执行环境的互补
MPC 与可信执行环境(TEE,如 Intel SGX)并非相互替代,而是互补。TEE 可以提供极低的性能损耗,但依赖硬件厂商并存在侧信道风险;MPC 纯基于数学假设,信任根更小。混合架构将 TEE 作为加速器,MPC 用于跨 TEE 的安全耦合,是前沿研究方向之一。
标准化与监管认可
MPC 已逐渐被法律和行业规范认可。例如,国际标准化组织(ISO)正在制定安全多方计算标准,中国信通院也有相应的“隐私计算 安全多方计算”性能与安全基准测试。未来,MPC 将成为数据要素流通基础设施的不可或缺的组件。
学习路线与实践推荐
- 理论基础:阅读《密码学协议》相关章节,理解安全定义(模拟范式)、UC 安全等概念。
- 经典论文:姚期智的混淆电路(1986)、Goldreich-Micali-Wigderson (1987) 的 GMW 协议、Beaver 三元组(1992)、SPDZ(2012)。
- 动手实践:
- 用 MP-SPDZ 框架编写一个小程序,对比半诚实和恶意安全模式下的性能。
- 尝试 PySyft 或 FATE 中的秘密分享模块,体验联邦学习里的安全聚合。
- 通过 Obliv-C 或 EMP-toolkit 实现安全比较(百万富翁问题),理解混淆电路的运行过程。
- 社区与资源:关注顶级安全会议(CCS, S&P, USENIX Security, Crypto, Eurocrypt),跟踪 MPC 联盟、相关开源项目 GitHub 仓库。
安全多方计算正处于从学术走向工业落地的关键阶段,掌握其基本原理和实践技能,将为你投身隐私计算、数据安全、Web3 等前沿领域打下坚实基础。