本文目录导读:

选择安全多方计算(MPC)协议并不是一个“一刀切”的问题,正确的选择取决于你的具体业务场景、性能要求、安全假设以及参与者之间的关系。
下面我将从几个核心维度帮你梳理如何选择,并给出主流协议的对比和决策流程。
第一步:明确你的核心需求(选择前的灵魂三问)
在查看技术细节之前,先对齐以下三个关键问题:
- 参与方数量:是两方(2PC),还是多方(nPC,n≥3)?
- 安全模型:你假设对手有多强大?
- 半诚实(Semi-honest):参与者会按规定执行协议,但试图从协议交互中推断额外信息。大多数商业场景、可信度较高的内部合作可选用此模型,性能极高。
- 恶意(Malicious):参与者可能任意偏离协议,试图破坏或窃取数据。高安全监管、匿名性要求极高或涉及大额金融交易时必选,性能开销大,但安全性强。
- 性能瓶颈:你更在意计算速度还是通信开销?
- 计算敏感:例如在移动端或嵌入式计算资源受限。
- 通信敏感:例如参与者网络延迟高、带宽低(如跨洲合作)。
第二步:核心主流协议对比
下面以参与方数量和安全模型为主线,对比最常用的三类协议:
姚氏混淆电路(Yao‘s Garbled Circuits)
- 最佳场景:两方、半诚实模型。
- 核心原理:一方(生成者)将计算逻辑编码为加密的“电路”,另一方(评估者)通过不经意传输获得密钥并解密结果。
- 优点:
- 理论上支持任意布尔函数。
- 轮数固定(通常是常数轮或O(1))。
- 缺点:
- 通信开销巨大(传输整个电路)是主要瓶颈。
- 扩展性差:扩展到多方非常复杂(会退化为GMW)。
- 适合:两方低频计算(如百万元素求交集),且网络带宽较好。
秘密共享(Secret Sharing)类协议(如SPDZ / BMR / GMW)
- 最佳场景:多方(2-100+方),尤其适合定制化算术逻辑(如加法、乘法)。
- 核心原理:数据以碎片形式存在各参与方处,协作计算。
- 子类对比:
- GMW:布尔电路框架,两方到多方都能工作,但对大电路效率极低(每个门都要不经意传输)。
- SPDZ系列(SPDZ / MASCOT / Overdrive):现代最主流的恶意安全框架,预处理模式巧妙将在线计算复杂度降到极低(仅需广播少量消息),深度优化后的SPDZ是恶意安全多方百万次乘法交互的主流选择。
- ABY系列(ABY / ABY2.0 / ABY3):混合框架,灵活切换布尔/算术共享,两方/三方性能极佳。
- 优点:支持恶意安全;通信量较低(相对混淆电路);三角形拓扑可做线性扩展。
- 缺点:预处理阶段计算量大(需要大量不经意传输或同态加密生成Beaver三元组)。
- 适合:多方聚合统计、机器学习的推理/训练、金融风控等。
同态加密(Homomorphic Encryption,HE)混合方案(如FHE-SPDZ / TFHE)
- 最佳场景:参与方不能做太多交互(如仅一方执行计算),或计算负载极度不均。
- 核心原理:数据被加密后直接运算,无需解密。
- 与传统MPC的关系:同态加密常作为工具嵌入MPC(而非独立替代方案),完全同态加密(FHE)性能仍不足以支持大量复杂运算。
- 混合方式:用FHE做SPDZ的预处理阶段(生成三元组),在线阶段统一用秘密共享,这是目前抵抗恶意攻击性能较高的方案之一。
- 适合:不可信云端外包计算,或作为MPC中的加速组件。
第三步:根据你的具体场景推荐(决策树)
场景A:两方,半诚实,计算低频(如安全求交集、比较大小)
- 推荐:Yao’s Garbled Circuits 或 ABY。
- 理由:轮数固定(极少)、线路清晰、工具链成熟(如Emp-toolkit),若网络好,选Yao;若需混合算术,选ABY。
场景B:三方(或n于3~10),半诚实,服务器部署,高吞吐量(如联合统计、模型训练)
- 推荐:ABY3(三方) 或 SPDZ-light / TrickySPDZ(多方)。
- 理由:ABY3是三方优化的半诚实方案,低通信、高吞吐;SPDZ类扩展性强,预处理可离线完成(在线速度极快)。
场景C:多方(4-20+),必须抵抗恶意攻击,安全性为第一优先级(如金融/医疗合规审计)
- 推荐:SPDZ系列(尤其结合TFHE/高性能预处理)。
- 理由:目前唯一大规模商用的恶意安全可选架构,Prio、Google的Private Join等生产系统底层就是SPDZ类变体。
- 注:预处理性能开销巨大,需提前规划硬件(多核CPU/GPU加速同态运算)。
场景D:移动端/物联网端多方计算(资源极度受限)
- 推荐:LLK(混淆电路优化版) 或 基于混淆索引的PSI(Private Set Intersection)。
- 理由:电池和带宽受限,传统MPC性能不可行,必须选用通信极度精简的PSI求交(只需传一次数据),或轻量级函数加密。
场景E:超大规模计算(参与方上千,数据量极巨)
- 当前工程边界:目前公开库通常能处理百万级数据量的安全加法,但对大型迭代计算(如深度神经网络)仍极困难。
- 推荐:联邦学习 + 安全聚合(如Secure Aggregation / Bonawitz协议),本质是经过深度定制的MPC(使用秘密共享组合加性噪声),牺牲通用性换取性能。
第四步:工程落地建议
- 不要自己手写核心加密原语:使用成熟库(如
EMP-toolkit(C++,性能强)、MP-SPDZ(学术通用评价好)、Crypten(Facebook/Python友好)、ABY系列)。 - 半诚实能解决就别选恶意:将安全假设从恶意降到半诚实,性能可 提升50-100倍。
- 预处理一定是最先优化的瓶颈:实测中,预处理(三元组生成/混淆电路预计算)往往消耗90%以上的总时间,在高速网络上,预处理可提前离线完成,在线交互仅需几毫秒。
- 并行加速:SPDZ、ABY等协议的乘法、不经意传输都天然支持SIMD(单指令多数据流)和GPU加速,充分利用多核CPU/GPU。
总结选择矩阵
| 需求 | 参与方 | 安全模型 | 推荐协议 | 核心瓶颈 | 适用场景 |
|---|---|---|---|---|---|
| 性能优先 | 2 | 半诚实 | Yao's GC | 通信(电路大小) | 双方求交、比大小 |
| 性能优先 | 3-20 | 半诚实 | ABY3 / SPDZ-lite | 计算(三元组生成) | 联合统计、联合建模 |
| 安全优先 | ≥3 | 恶意 | SPDZ-FHE / Overdrive | 预处理计算(同态运算) | 金融风控、医疗合规 |
| 极小通信 | 2 | 半诚实 | 混淆索引PSI | 通信(仅一次传输) | 移动端数字钱包匹配 |
| 大规模多方 | ≥1000 | 半诚实 | 安全聚合(Bonawitz) | 轮数 & 同步 | 联邦学习梯度聚合 |
最后一步:如果仍未明确,建议直接从 SPDZ 或 ABY 框架入手(两者CCS/S&P安全评级高),并用 C++/Python 跑一个小型基准测试(2-3方、几百条数据、简单任务如求和/求交),实测性能和误差。任何理论对比都不如一次真实网络下的压测有效。