什么是安全多方计算?安全多方计算(SecureMultipartyComputation,SMPC)是指如何在没有可信第三方的情况下通过一系列算法,让不同的人达成共识或计算出一个可信的最终结果;在这个环节,每个人都公平公正地付出,不存在作弊现象。当密码学家在网络上创建一些算法游戏时,这个想法就诞生了。一开始,计算机是独立工作的;当Internet出现时,程序员开始研究如何让计算机协同工作。今天,人们会把一堆虚拟机放在一起来寻找正确的结果。但难点在于如何保证这个过程是安全的,同时又没有一个人作弊。几十年来,理论数学家一直在研究多方计算。现在,这些算法可以走出实验室,并在更复杂的网站应用程序、API和服务中找到自己的位置——哪里缺乏信任,哪里就有新的地方。大多数企业堆栈由大量协同工作的代码组成。例如,响应一个网站服务请求,可能需要将机器A上的数据与机器B上存储的数据结合起来,然后在机器C上用模板格式化——同时,这些动作是由一个负载均衡器组成的最后一个K8s节点。就算是笔记本电脑也能跑,相信CPU、显卡、网卡能协同工作。以上例子都需要建立在信任泡沫之上。如果不同机器和软件堆栈层上的人彼此不信任怎么办?也许他们出于某种政治原因需要选边站,或者他们受制于不同的授权要求,或者他们只是互相憎恨。安全的多方计算算法允许人和他们的计算机进行合作,即使他们彼此不信任。这些算法结合了足够的基本审计和加密功能,因此每一方都可以确信结果是正确的,即使他们网络另一端的敌人试图背叛他们并窃取一切-或者,当然,他们所谓的朋友背叛了他们。如何实现安全的多方计算?大多数加密算法由一个人执行,所有数学计算都在某个人或实体的信任泡沫中完成。在作为电子邮件附件发送或在野外存储在未受保护的Internet环境之前,文件可能会在对个人或受密码保护的机器安全的环境中加密。数字签名由防止泄露的隐私机器创建,以便其他人可以相信密钥的所有者创建了签名。安全的多方计算可以结合这些基本算法来寻找更复杂问题的解决方案。安全的多方计算通常使用相同的标准加密或数字签名,但会对其进行调整以扩大其信任泡沫。区块链是数字签名调整后如何将信任泡沫扩大到大量未知人群的一个很好的例子。在许多此类算法中,某种加密货币的所有权与一个密钥相关联,货币的消费是通过添加额外的数字签名来表明所有权的转移来完成的。此类操作通常与其他操作一起在一个大区块中与其他人的数字签名进行验证。聚合后,可以通过数字签名追踪货币的所有权,最终有一天有机会形成一个稳定的经济体系。安全多方计算在理论计算机科学领域有着较为深入的研究。一些早期的算法表明,任何计算都可以进行分区,并且仍然会产生一个似是而非的答案。最早证明任何布尔计算都适用于这个原理。多年来,数学家开发了更复杂、更深入的算法来解决这类问题。安全多方计算的类型已知许多算法可用于安全多方计算。这些算法中最古老的可以追溯到20世纪70年代,当时数学家正在考虑一种长距离扑克游戏。那个时候的长距离扑克是看不出对方有没有在用牌做什么的。因此,他们着手考虑一种可以求解任意布尔函数的算法。下面是几种常见的算法。这些算法可以单独解决一些小问题,也可以组合起来解决更难的问题:?秘密共享:将一条秘密消息分成N部分,这样任意K个子集都可以重构消息的内容。最简单的例子就是截取一条线。直线上的任意两点都可以重建直线并给出截距;在这种情况下,K为2。更复杂的数学可以导致更大的K值。通常这个秘密是一个大文件的关键。一旦这些分裂部分被分配出去,原来的钥匙就会被销毁,必须K人合作才能解锁。?分区选择:此步骤是许多算法的基础,因为它允许一方审计另一方而不会在此过程中泄露机密信息。一方将他们的数据打包成多个数据包。当提交这些数据包时,对方要求密钥随机解包一些数据包。如果解包后的内容一致正确,则解包后的部分将被丢弃,未经审计的数据包将被认为是正确的。这样,双方可以共享信息,但未经审计的部分仍然是保密的。?零知识证明:这是一个更复杂的数字签名版本,需要证明者在不透露证明过程的情况下展示知识。这在更复杂的算法中通常很有用,其中一方可以在不泄露秘密的情况下证明他知道某事。一个更简单的版本通常被称为“位承诺”,并在许多游戏中用作协议。双方都可以抛硬币并随机选择正面和反面。每一方都使用一种单向加密方法(例如SHA)对他们的选择进行加密。首先,双方彼此共享他们的加密消息。双方知道对方的加密数据后,双方展示初始选择的正负结果,决定谁猜对了。双方可以通过一种单向的加密功能来审计对方的结果。?非交互式零知识证明:最早的零知识证明需要两方进行交互,因为一方需要向另一方证明。在那之后,出现了非交互式零知识版本,并得到了像SNARKs或ZK-SNARKS这样的名字。目标是生成包含证明所需的所有信息的小信息包。任何检查过这些包并进行过类似计算的人都会得到相同的结果。这些包通常用作更有效的数字签名,可以证明一些复杂的事实,同时对一些信息保密。一个简单的例子是驾照——它可以证明一个人已经超过购买酒类的年龄,但不需要表明这个人的真实年龄。安全多方计算用例这些算法在许多业务交互中都具有价值,因为根据罗纳德里根的格言,它们允许人们相互信任,同时验证所做的一切。安全多方计算的用例包括:?加密货币:虽然社会是否应该信任由数字货币支持的经济系统仍有疑问,但毫无疑问,加密货币目前的资本化证明了安全多方的力量-党的计算。许多处理如预期的那样顺利进行。许多高影响问题的发生不是因为算法失败,而是因为周围计算系统的泄漏。?游戏:随着人们转向在线游戏娱乐,作弊变得更加容易。让每一方控制自己的本地硬件会邀请作弊者破解游戏软件以发现地图等隐藏信息。有些甚至能够修改数据结构,增加额外的能力或金钱。安全多方计算算法无需额外的可信硬件即可实现此类作弊。?合同谈判:许多企业都有重要的合作伙伴,他们不能完全信任彼此,但必须密切合作。例如,汽车经销商需要与银行合作放贷,与保险公司合作保护资产。一般来说,购买行为需要双方进行大量的文书工作。多方安全计算可以让更多人一起参与交易,但不需要文书协作。?数据收集:人们通常不愿意参与研究,因为他们不想泄露他们的个人信息。许多市场需要有关供需的准确汇总信息。然而,收集这些信息可能很麻烦,因为参与者不想分享他们的原始数据。安全算法可以帮助收集这些信息,同时保护隐私。?自动化市场:传统市场要求人类扮演中立仲裁员的角色——比特币是算法如何取代中间人的一个例子。一直以来,评论密码学都是信息安全的重要基础——不仅依靠加解密功能保证信息的机密性,还通过各种算法保证信息交互的安全。信任问题最终还是可以在数学层面解决,可以通过算法来解决——这也是未来的趋势。传统的安全模型讲究信任,每一个行为都是基于信任,或者说信任的程度;而随着越来越多的实体加入协作,未来的合作将趋向于建立在“不信任”的基础上——这时就需要安全的多方计算来解决信任问题。
