安全的多方计算有助于确保加密货币交易安全,此外,它还有其他新兴用例。
什么是安全多方计算?
术语“安全多方计算”(Secure Muti-party Computation,简称MPC,亦可简称SMC或SMPC)是指一组算法,这些算法允许人们通过网络协同工作,并安全地获取结果或计算值,且确保这一数值的正确性。
数学描述为:有n个参与者P1,P2,…Pn,要以一种安全的方式共同计算一个函数,这里的安全是指输出结果的正确性和输入信息、输出信息的保密性。
安全多方计算问题首先由华裔计算机科学家、图领奖获得者姚期智教授于1982年提出,也就是为人熟知的百万富翁问题:两个争强好胜的富翁Alice和Bob在街头相遇,如何在不暴露各自财富的前提下比较出谁更富有?
简单来说,安全多方计算协议作为密码学的一个子领域,其允许多个数据所有者在互不信任的情况下进行协同计算,输出计算结果,并保证任何一方均无法得到除应得的计算结果之外的其他任何信息。换句话说,SMPC技术可以获取数据使用价值,却不泄露原始数据内容。
数十年来,理论数学家一直在研究多方计算。现在,研究人员研发出了这种算法,并在更复杂的开发中的Web应用程序、API和服务中发挥作用。如今,在不信任环境中也出现了这种算法的使用。
大多数企业堆栈或多或少地都有运行这种算法,员工协同工作并朝着同一个方向努力。一个Web服务查询可以数据组合完成回答,通过将存储在一台设备上的数据与存储在由模板控制的第三台设备格式化的另一台设备上的数据组合,所有这些都由在负载均衡器后面运行的Kubernetes集群管理器进行编排。即使相互连接的台式机也可以利用CPU芯片与显卡和网卡的强大功能协同工作,为同一用户提供服务。
所有这些案例都是在可信环境中运作的。如果软件堆栈的不同设备和彼此不信任的人员运行又当如何?SMPC算法使员工即使在彼此不信任的情况下也能协同工作。最基本的审计和加密功能的紧密结合,即使戴着伪装面具的攻击者试图窃取数据或者企业出现内鬼,最后输出的数据也将是正确的和安全的。
安全多方计算的工作原理
大多数加密算法由一名人员操作运行,所有数学计算由该人或在该组织的可信环境中完成。文件可能会在受密码保护的个人设备上进行安全加密,然后再通过电子邮件发送或存储在公开的互联网上。数字签名是由私人设备使用防止泄露的密钥创建的,因此其他人会相信只有密钥的所有者才能创建签名。
SMPC可以利用这些基本算法来找到政治上更复杂问题的解决方案。虽然他们经常使用相同的标准加密或数字签名,但他们在可信环境中协调应用它们。
加密货币使用的区块链是一个很好的案例,以协调的方式应用基本数字签名,以在互不相识的人之间建立更强的信任关系。在这些算法中,特定加密货币的所有权与密钥所有者有关,通过添加数字签名将所有权转移到其他人的密钥。通常,这些交易会通过其他人的数字签名与大区块中的其他交易进行认证。综上所述,这个数字签名网络可跟踪货币的所有权,并且有朝一日可能成为稳定经济的基础。
安全多方计算在理论计算机科学领域也有更精确的定义。一些最早的算法证明,可以将任意计算拆分并获取安全可信的答案。最早的证据表明它可以用于任何表示为布尔门序列的任意计算。多年来,数学家开发了更复杂、更专注的算法来解决问题。
安全多方计算的类型
在SMPC保护伞下考虑了许多不同的算法组合。最早的算法是在1970年代首次发布的,当时数学家们正在寻找一种方法来进行远距离玩游戏,比如扑克之类的,且要保证在发牌过程中双方都无法作弊。此后,这类游戏逐渐演变出解决任意布尔函数的优质算法。
以下常见算法可以单独用于解决较小的问题,也可以结合使用以解决更复杂的挑战。
(1) 秘密共享
一个秘密值被分成N个部分,这样K的任何子集都足以重建秘密。最简单的示例,在一行的Y轴截距中对秘密进行编码。线上的N个点是随机选择的。任何两个都足以重建轴并恢复Y轴截距,在本例中K=2。更复杂的数学可以使用更大的K值。隐藏的秘密通常是更大文件的私钥。一旦数据泄露,原始密钥被破坏,就必须有K人共同努力才能将其解锁。
(2) 剪切和选择
这个基本步骤是许多算法的基础,因为它允许一方在不泄露秘密信息的情况下审计另一方。一方以某种方式给他们的几个数据包加扰值。当这些出现时,另一方将通过询问解密这些数据包的密钥来随机选择一些数据包进行审计。如果双方一致且数据正确,则无需审计这些未加扰值的数据包,且可以假定未经审核的数据包是正确的。双方可以承诺共享信息,同时保护这些未经审计的数据。
(3) 零知识证明
存在一些更复杂的数字签名版本,此类证明的创建者可以在不透露数值本身的情况下展示内容信息。这些在更复杂的算法中通常很有用,因为一方可以在不透露的情况下做出秘密选择。
一个简单的版本通常被称为“比特承诺”,它是许多游戏中的协议。双方可以通过随机选择正面或反面硬币,从而越过“不安全的线”。每一方都使用一种单向函数,如安全哈希算法 (SHA),以额外的随机性来扰乱他们的选择以确保保密。
首先,两者彼此共享已添加噪音数据版本。双方都知道两个加扰值后,可揭示他们的正面或反面的原始随机值。如果它们匹配,则一方获胜,如果值不匹配,则另一方获胜。双方可以通过重新计算单向函数来相互审计。
(4) 非交互式零知识证明
最早的零知识证明需要两方进行交互,因为一方会向另一方证明某些陈述。后来,出现了非交互式版本,并被命名为SNARKs或ZK-SNARKS。目标是生成一小部分包含证明的所有信息的位。任何人都可以事后检查捆绑包,执行类似的计算,并得出相同的结论。
通过证明复杂的事实,同时还保持一些信息的私密性,这些捆绑包通常充当更强大的数字签名。一个简单的例子可能是驾照证明一个人年满21岁并且有资格购买酒类,但是无需透露其实际年龄或生日。
安全的多方计算用例
这些算法在许多商业交易中都很有用,因为它们允许人们相互信任,正如Ronald Reagan的座右铭,“彼此信任且可以验证他们所做的一切”。用例包括:
(1) 加密货币
虽然社会是否应该将经济信任于数字货币的争论仍然存在,但毫无疑问,市值证明了SMPC的潜力。绝大多数交易如双方预期的那样继续顺利进行。许多显著问题不是由算法失败引起的,而是由计算机系统的泄漏引起的。
(2) 游戏玩法
随着人们逐渐转向网络娱乐场所,作弊变得更加容易。本地硬件的控制方让作弊者闯入游戏软件寻找隐藏的数据,比如地图。有些人甚至可能会摆弄数据结构以增加额外收入。SMPC算法可以帮助防止这种作弊,而无需特殊的可信硬件。
(3) 合同谈判
许多企业经常与一些重要的合作伙伴密切合作,但不能完全信任对方。例如,汽车经销商与银行合作贷款,保险公司为资产提供担保。传统上,购买需要大量文书工作,因为每一方都试图保护自己。SMPC可减少繁琐的文书工作且可完成交易。
(4) 数据收集
人们往往不愿参与研究,因为他们不想透露私人信息。许多市场依赖于有关需求和供应的准确汇总数据。然而,收集这些信息可能很棘手,因为参与者不想分享他们的个人原始数字。安全算法可以帮助以保护隐私的方式收集这些信息。
(5) 自动化市场
传统市场通常依赖于充当仲裁者的中立角色。比特币区块链只是算法如何取代交易中间人的一个例子。