MPC(多方安全计算,Multi-Party Computation)是一种密码学技术,允许多个参与方在不泄露各自私密输入数据的前提下,共同完成一个计算,并得到正确的计算结果。
一、什么是 MPC?
定义:
**多方安全计算(MPC)是一种加密协议,允许多个参与者在输入保持私密的情况下,**安全地进行联合计算,并仅暴露计算结果,而不暴露任何中间信息或原始数据。
二、通俗理解:一群人合算工资平均值,但不想互相知道对方工资
设想有 3 个人想知道他们的平均工资,但每个人不想暴露自己的工资数额。
- 使用 MPC,他们可以各自将工资进行“加密切片”,发送到多个计算方;
- 每个计算方只处理自己的“片段”,得不到完整数据;
- 最终协同计算出平均值,但没有任何一方知道原始工资是多少。
这就是 MPC —— 你参与了计算,但不知道别人输入了什么。
三、MPC 的核心目标
目标 | 含义 |
---|
隐私保护 | 输入数据对其他参与者完全保密 |
正确性保证 | 输出结果正确可信,即使有人作恶 |
抗欺诈 | 可以检测/惩罚故意提交错误信息者 |
分布式信任 | 不依赖中心方,避免单点泄露风险 |
四、MPC 的常见技术实现方式
技术方法 | 说明 |
---|
秘密共享(Secret Sharing) | 把敏感数据切分成若干“碎片”,分发给多个参与方,任何一个都无法还原原始值 |
同态加密(Homomorphic Encryption) | 数据在加密状态下完成计算 |
加法掩码/盲化(Additive Masking) | 用随机值“掩盖”原始数据,多个随机值抵消后还原真实结果 |
Yao’s Garbled Circuits | 把整个计算转化成加密逻辑电路,参与方协同完成 |
Oblivious Transfer(OT) | 用于私密数据的传输机制,不泄露传输内容或意图 |
五、MPC 与零知识证明(ZKP)的区别
维度 | MPC | ZKP |
---|
目的 | 一起算结果,不泄露彼此数据 | 我知道答案,不告诉你,但能证明我知道 |
参与者 | 多方都参与计算 | 通常是 1 个证明者 + 1 个验证者 |
应用类型 | 联合建模、联合分析 | 验证、隐私支付、链上证明 |
使用场景 | 隐私计算(医疗、金融)、联合 KYC | 匿名支付、Rollup 扩容、身份证明 |
六、MPC 的区块链与隐私应用场景
场景 | 示例 |
---|
多签钱包 | MPC 替代传统私钥,3 个设备计算出签名,任何单一节点都无法控制资产(如 Fireblocks) |
链上隐私交易 | 多方计算隐私数据,生成中间加密状态参与合约或交易 |
联合风控 / KYC | 银行之间联合判断客户风险,但彼此不泄露用户数据 |
跨链签名 / DeFi 钱包 | 在多个链间实现分布式签名,如 Threshold、Lit Protocol |
医疗数据建模 | 医院之间共享病人特征,联合训练 AI 模型,保护患者隐私 |
七、MPC 的优缺点
优点 | 描述 |
---|
高隐私 | 数据始终在密文中处理,无信息泄露 |
抗单点风险 | 数据片段分散存储/计算,防止中心泄露 |
安全可信 | 即使部分参与者作恶也能容错(通过门限设定) |
缺点 | 描述 |
---|
计算复杂度高 | 通信轮次多,效率低于传统计算 |
部署门槛高 | 需协调多个节点,环境复杂 |
不适合链上运行 | 通信成本高,适合链下协作计算后上链 |
八、主流 MPC 项目与工具
项目/平台 | 用途 |
---|
Fireblocks | MPC 钱包服务商,面向机构 |
ZenGo | MPC 钱包应用,用户无需私钥 |
MPyC | Python 中实现 MPC 的教学/研究工具 |
SEAL | 微软开发的同态加密工具 |
Partisia Blockchain | 以 MPC 为核心的隐私区块链 |
Lit Protocol | 去中心化 MPC 签名与访问控制平台 |
Nucypher | 加密代理,支持访问控制与 MPC 组合使用 |
九、小结
项目 | 内容 |
---|
名称 | 多方安全计算(MPC) |
本质 | 多方参与、不泄露数据的联合计算协议 |
核心机制 | 秘密共享、同态加密、盲化、混淆电路等 |
典型应用 | MPC 钱包、跨链签名、隐私数据分析、联合建模 |
与 ZKP 区别 | MPC 侧重联合计算,ZKP 侧重可信证明 |