为何当今还无法构建完美安全的多方应用?
1. 引言
本文将探讨为什么构建安全的多方应用——即在保护各方输入隐私的前提下,对这些输入进行函数计算——在当下仍不可行。
本文将以多边贸易信用清算(Multi-party Trade Credit Set-off,MTCS)为例,展示为什么多方安全计算(multi-party computation,MPC)和全同态加密(fully homomorphic encryption,FHE)等技术,仍然无法实现完美的安全性,原因在于:
- 安全性与活性之间存在根本性的权衡。
目前的解决方案依赖“委托安全模型”,但这并不理想。那么,是否有办法为这个问题打补丁,还是只能等待不可区分混淆(iO)出现?
2. 多边贸易信用清算
多边贸易信用清算(MTCS)是由某个服务提供方运行的流程,该方从一个企业网络中收集贸易信用数据(即企业之间的付款义务),并识别系统中可以相互抵消的债务循环。这一过程可以为参与者带来流动性收益,使其在无需依赖高成本贷款的情况下清偿债务。
MTCS 前后的贸易信用网络:
本文提出了一种保护企业敏感数据(如债务金额和交易对象)的 MTCS 协议。研究成果发表于2024年论文《通过图匿名化与网络单纯形在 MPC 中实现多边贸易信用清算(Multilateral Trade Credit Set-off in MPC via Graph Anonymization and Network Simplex)》,作者包括 Enrico Bottazzi、Chan Nam Ngo 与 Masato Tsutsumi。开源代码见:
- https://github.com/enricobottazzi/mtcsPy(Python)
在该论文中,详细阐述了如何“降低了安全最小成本流算法的渐进轮复杂度”。本文的重点则是将该特定应用的特征抽象为任意安全多方应用的共性,分析 FHE 或 MPC 等技术在实现时因安全性与活性冲突所带来的不完美安全模型。
不过也不必绝望:本文会介绍一些临时补救方案,直到不可区分混淆(indistinguishability obfuscation)真正实现,它将彻底打破这一权衡,使得构建完全安全的多方应用成为可能。
3. 安全多方应用
安全多方应用是一类应用,它在多个参与方提供的私密输入上执行某个函数计算,并确保这些输入对其他参与方保持保密:
- 每一方除了能从自己的输入和函数输出中推导出的内容之外,不应获得额外信息。
- 值得注意的是,这一定义与实现该应用所用的技术无关。
在现实中,此类应用通常依赖某个第三方来执行函数运算,并信任该第三方不会泄露数据或进行恶意操作。MTCS 也是如此:Slovenia(斯洛文尼亚)自 1991 年起就在全国范围运行这一机制。
- 企业每月将发票提交给一个政府机构,该机构拥有完整的贸易信用图,并负责执行清算。
- 但参与率很低(2022 年仅 1500 家企业,占总数的 0.2%),这表明企业可能更愿意将自己的敏感信用数据留在自己手中,尽管参与 MTCS 可带来显著好处。
本文接下来将尝试构建不依赖单一受信第三方的安全多方应用。
依赖受信第三方的 MTCS:
4. 用 MPC 构建安全多方应用
MPC 允许 n n n 个参与方在不泄露各自输入的前提下共同计算一个函数。在最安全的形式中,每个输入会被切分为 n n n 份,任意 n−1 n-1 n−1 份都无法还原原始信息。函数计算过程通过“盲算”实现,每进行一次乘法运算就需要各参与方之间进行一次信息交换。在最强的安全假设下,只要有一个参与方是诚实的,隐私和计算正确性就能得到保障。对企业来说,这种机制理想得不能再理想:
- 只要我守住自己的份额,其他人就无从得知我的信息。
然而,魔鬼藏在细节中!
- 对于 n n n 个参与方的协议,需要存在 n ∗ ( n − 1 ) / 2 n * (n-1) / 2 n∗(n−1)/2 条通信通道以正确执行计算,这使得系统在面对上万家企业的网络时效率极低(因而不具实用性)。
- 更严重的是,这些通信通道在协议执行过程中必须持续保持活跃,以保证最终产出。一旦有恶意参与者在执行中途掉线,其他参与方就无法恢复结果,协议将彻底失败。
5. 使用 FHE 构建安全多方应用
当希望对加密数据进行计算时,全同态加密(FHE)是另一个可行的方案。FHE 的思维模型非常直接:
- 任何不受信的服务器都可以在不了解原始数据内容的前提下,对加密数据执行函数 f f f。
与信息论安全的 MPC 不同:
- FHE 的数据隐私依赖于某个数学难题的计算难度来保障。
- 此外,还可以在服务器操作之上加上一层 zkSNARK,从而在额外的计算代价下获得计算正确性的保证。
但FHE有一个关键问题:
- FHE 仍然需要有人持有解密密钥。
将解密密钥交由某个单一实体保管并不是一个好主意,因为这样一来,该实体就获得了对所有加密数据的“上帝视角”访问权限。一个更安全的做法是由参与的 n n n 个企业共同执行一次分布式密钥生成(DKG)仪式,使用生成的加密密钥对所有数据进行加密,将函数 f f f 的计算外包给服务器,然后企业再次聚合,利用各自的密钥份额共同解密输出,并将结果交付给目标接收方企业。
- 解密过程必须通过 MPC 协议完成。
然而,这又回到了之前遇到的问题:
- 只要有一个企业因疏忽或恶意而丢失了解密密钥份额,整个协议就会陷入停滞。
6. 委托安全模型
“只信任你自己”的完美安全模型,在需要 n n n 个协议参与方频繁互动的场景中存在明显局限。考虑到一个安全的 MTCS 协议应支持成千上万家企业,这种级别的安全代价对于实际部署来说过于高昂。Sora 将此问题描述为安全性与活性之间的权衡。
下图源自Introduction to Indistinguishability/Ideal Obfuscation (iO):
其中:
- 横轴代表基于活性假设的成功概率。
实际上,在《通过图匿名化与网络单纯形在 MPC 中实现多边贸易信用清算(Multilateral Trade Credit Set-off in MPC via Graph Anonymization and Network Simplex)》论文中提出的解决方案也没有实现完美的安全模型。在该论文中采用了一种客户端-服务器的 MPC 协议,其中计算(以及对应的安全性)被委托给三台服务器。在最强的安全假设下,只要其中至少有一台服务器是诚实的,企业数据的隐私性就能得到保障。
但企业本身对服务器管理员私下串通、汇总份额、重建数据的行为几乎无能为力。更糟的是,这类恶意行为并无即时检测机制,因此服务器若出现违规行为,也很难追责。
通过 MPC 实现的 MTCS:
7. 临时补丁与最终目标
当前存在一些“补丁”方案,旨在在“非完美”安全多方应用中,部分提升其安全性。
- 1)最容易实施的一种依赖于社会结构——挑选那些彼此利益冲突的代表作为代理,以降低他们串通作恶的可能性。
- 如,在《通过图匿名化与网络单纯形在 MPC 中实现多边贸易信用清算(Multilateral Trade Credit Set-off in MPC via Graph Anonymization and Network Simplex)》论文中,提出了一种委托安全模型,三个服务器的管理方分别是国家商会、税务局和一个支付处理机构。
- 2)一个更高级的方案是要求服务器在可信执行环境(TEE)中运行其计算逻辑,从而增加一层安全保护:
- 若服务器想重构密钥份额,必须首先攻破 TEE 的防护机制。
- 3)更理论化的做法是采用叛徒追踪——CRYPTO 2024 论文 Accountability for Misbehavior in Threshold Decryption via Threshold Traitor Tracing 系统,为服务器的不当行为引入可追责机制。
多方安全应用的最终目标是不可区分混淆(indistinguishability obfuscation, iO)。
- iO 有望打破“安全性 vs 活性”的根本性权衡,它能消除在解密或输出重构阶段对交互的依赖。
- 具体来说,可以在一次可信设置仪式中,将 FHE 密钥嵌入一个混淆后的程序中:
- 只要有一名参与者是诚实的,该密钥就无法被任何人提取。
- 该混淆程序的功能是:接受一个 FHE 密文及其相应的证明,验证其是否符合预定义的应用逻辑;一旦验证成功,程序将输出密文的解密结果。
- 由于这个混淆程序是公开的,任何人都可以使用它执行解密,无需再依赖持有密钥的各方之间进行任何交互。
尽管目前尚无可用于生产环境的 iO 实现,但它对多方安全应用的潜在影响是革命性的。PSE 目前正在组建一个新团队,探索基于最新研究的全新路径,以实现实用化的 iO。
参考资料
[1] PSE 研究员 Enrico Bottazzi 2025年1月14日博客 Why We Can’t Build Perfectly Secure Multi-Party Applications (yet)