Archipelago

Lec 13安全多方计算(MPC)

讲义完成更新于 2026-09-16

Lec 13 安全多方计算(MPC)

MIT 6.5610 · Lecture 13 · 关键词:MPC、理想/现实范式、Yao 混淆电路、不经意传输、BGW、半诚实/恶意敌手 说明:以标准处理撰写(Yao 1986 / BGW 1988),要点与本课"Secure Multiparty Computation"一致。


TL;DR

  • 安全多方计算(MPC)让互不信任的参与者只获知约定函数的输出,而不暴露各自输入。
  • Yao 混淆电路与不经意传输适合两方计算,BGW 用秘密共享支持多方计算。
  • 半诚实与恶意安全是不同威胁模型;实现成本随对手能力、参与方数量和网络条件变化。

0. 问题

nn 方各持私有输入 x1,…,xnx_1,\dots,x_n,想共同计算 f(x1,…,xn)f(x_1,\dots,x_n),除输出外不泄露各自输入的任何信息。经典例:百万富翁问题(比谁更富而不报具体数额)。


1. 安全定义:理想/现实范式

定义

理想世界:存在可信第三方 TT,各方把输入交给 TT,TT 算 ff 并只返回输出。 现实世界:无 TT,各方按协议交互。 安全:现实世界中敌手能造成的危害,都能被理想世界中的模拟器复现 → 协议"如同存在可信第三方"。

敌手模型:**半诚实(honest-but-curious)**遵守协议但想窥探;**恶意(malicious)**可任意偏离。


2. 两方:Yao 混淆电路(Garbled Circuits)

定理

Yao 协议(两方,半诚实)

  1. 混淆方 把 ff 表示为布尔电路;为每条线的 0/1 各取一个随机标签(label)。对每个门,用输入线标签加密输出线标签,做成乱序的"混淆真值表"。
  2. 混淆方把电路 + 自己输入对应的标签发给对方。
  3. 求值方 通过**不经意传输(OT)**获取自己输入对应的标签(拿到标签却不暴露选择,混淆方也不知对方输入)。
  4. 求值方逐门解密,只能解开对应实际输入的那一行,最终得到输出标签 → 翻译成明文输出。 :::

🔎 不经意传输(Oblivious Transfer, OT):发送方有 (m0,m1)(m_0,m_1),接收方选 bb 得 mbm_b,发送方不知 bb、接收方不知 m1−bm_{1-b}。OT 是 MPC 的"完备原语"(有 OT 即可做任意 MPC)。 标签的随机性保证:求值方每条线只持有一个标签、不知其代表 0 还是 1,故除最终输出外学不到中间值。


3. 多方:BGW(基于秘密共享)

BGW 思路(基于 Shamir 共享)

  • 各方用 Shamir 把自己的输入秘密共享给所有方。
  • 加法门:各方本地把份额相加(Shamir 线性性,免通信)。
  • 乘法门:份额相乘会让多项式次数翻倍 → 需一轮重分享/降次交互来恢复 t−1t-1 次。
  • 电路算完后各方公开输出线的份额,重构得 ff。 :::

🔎 BGW 在信息论意义下安全(半诚实下容忍 t<n/2t<n/2,恶意下 t<n/3t<n/3)。加法免费、乘法要通信 —— 故 MPC 的成本主要看电路中乘法门的数量与深度。


4. 工程视角

  • MPC 应用:联合风控/反欺诈(多银行不共享原始数据)、隐私集合求交(PSI,如隐私通讯录匹配)、门限签名钱包、隐私拍卖、隐私统计。
  • 路线取舍:Yao 常数轮、适合两方布尔电路;BGW/SPDZ 适合多方算术电路。
  • 与 FHE 对比:FHE 单方外包计算但慢;MPC 多方在线交互、通信开销大但常更快。恶意安全需额外的 MAC/承诺/ZK(如 SPDZ)。

5. 安全多方计算小结

  • MPC:多方算 ff 而不泄露各自输入;安全 = 现实可被理想模拟器复现。
  • 两方 Yao:混淆电路 + OT;OT 是 MPC 完备原语。
  • 多方 BGW:Shamir 共享,加法本地、乘法需降次交互。
  • 成本看乘法门;恶意安全需额外机制。

MPC 的安全定义同时规定允许泄露的输出;选错函数,即使协议完美安全也可能暴露个人输入。