安全多方计算(Secure Multi-Party Computation):指多个参与者在不泄露各自隐私数据情况下,利用隐私数据参与保密计算,共同完成某项计算任务。
该技术能够满足人们利用隐私数据进行保密计算的需求,有效解决数据的“保密性”和“共享性”之间的矛盾。多方安全计算包括多个技术分支,也可以认为是一堆协议集,主要包括:
秘密共享:将秘密以适当的方式拆分,拆分后的每一个份额由不同的参与者管理,单个参与者无法恢复秘密信息,只有若干个参与者一同协作才能恢复秘密消息。更重要的是,当其中任何相应范围内参与者出问题时,秘密仍可以完整恢复。
同态加密:一种允许在加密之后的密文上直接进行计算,且计算结果解密后和明文的计算结果一致的加密算法。这个特性属性对于保护信息的安全具有重要意义,利用同态加密技术可以先对多个密文进行计算之后再解密,不必对每一个密文解密而花费高昂的计算代价;利用同态加密技术可以实现无密钥方对密文的计算,密文计算无须经过密钥方,既可以减少通信代价,又可以转移计算任务,由此可平衡各方的计算代价,利用同态加密技术可以实现让解密方只能获知最后的结果,而无法获得每一个密文的消息,可以提高信息的安全性。
不经意传输:一种可保护隐私的双方通信协议,消息发送者从一些待发送的消息中发送某一条给接收者,但并不知道接收者具体收到了哪一条消息。不经意传输协议是一个两方安全计算协议,协议使得接收方除选取的内容外,无法获取剩余数据,并且发送方也无从知道被选取的内容。
零知识证明:证明者能够在不向验证者提供任何有用信息的情况下,使验证者相信某个论断是正确的。
混淆电路:双方进行安全计算的布尔电路。混淆电路将计算电路中的每个门都加密并打乱,确保加密计算的过程中不会对外泄露计算的原始数据和中间数据。双方根据各自的输入依次进行计算,解密方可得到最终的正确结果,但无法得到除结果以外的其他信息,从而实现双方的安全计算。
安全多方计算的优点:
1.基于密码学安全,其安全性有严格密码理论证明,不以信任任何参与方、操作人员、系统、硬件或软件为基础;
2.各个参与方对其拥有的数据拥有绝对的控制权;
3.保障基本数据和信息不会泄露,同时计算准确度高;
4.支持可编程通用计算。
在安全多方计算中,程序的输入(更准确地说,是模拟电路的输入,因为安全多方计算不能处理if声明和条件循环)通过Shamir秘密共享算法被分成若干份信息,并且每一份信息分别分发给一位参与者。Shamir秘密共享算法可以用来把任意数据切分成N份,并且只需其中任意K份就能恢复出原始数据,但任意(K-1)份都无法恢复出原始数据。在运行算法时,用户可以算则N和K的值,比如3取2、10取5和1000取501。然后,可以根据切分出来的信息以去中心化的形式来评估电路,从而使得计算完成时每个人都有一份计算结果。但在计算过程中的任何时刻,所有人都对计算状况一无所知。最后,所有的信息都被整合在一起来揭示结果。
这个算法的运行时间是O(n**3),也就是说,它用来评估一个计算的计算步数与参与者数量的三次方大致成正比。比如,在10个节点的情况下,对应1000步计算;而在1000个节点的情况下,对应10亿步计算。一个简单的10亿步计算在普通个人电脑上运行完大约需要10秒,二服务器可以在零点几秒的时间内运行完。因此,在满足计算可行性的前提下,当前节点数量的极限值大约为1000。
结果表明,安全多方计算可以被用来生成区块链的地址和签署交易。地址的生成协议很简单:
每个人生成一个随机数作为私钥;
每个人计算对应于私钥的公钥;
每个人展示自己的公钥,并使用Shamir秘密共享算法来计算一把可以由这1000把已被展示的公钥中的501把密钥重构的公钥;
地址依据那把公钥生成;
由于公钥可以被整数进行加减乘除运算,这种算法的有效性与预期惊人地完全一致。如果每个人都以相同的方式用1000把密钥中的501把合成一个私钥,则这个密钥将能够花费被发送到它对应公钥所产生的地址里面的资金。
这个方法之所以有效,是因为Shamir秘密共享算法其实只是一个代数公式。也就是说,它仅需要进行加减乘除运算,并且人们在公钥上计算这个公式就像用这个公式计算地址一样简单。因此,无论在私钥转换成公钥的过程之前还是之后使用这一代数都没有关系。签署交易可以用类似的方法完成,只是过程会复杂一些。
相较于多重签名的优势:
假设由1000台可被信任的计算机,令每一台计算机都生成一把私钥,并在它们当中生成一个满足1000取501的多重签名地址。为了使用它里面的资金,只需要使用其中任意501个节点的签名构造一笔交易,然后把这笔交易广播到区块链中。在比特币网络中,这里有一个明显的问题:这笔交易将过于庞大。每个签名大约有70 byte,因此501个签名将有35 KB,而比特币网络默认拒绝脚本超过10 KB的交易,因此这笔交易很难被网络所接受。
安全多方计算可以解决这个问题。
安全多方计算的美妙之处在于,它的应用范围超越了区块链。可以同样方便地用于去中心化组织和公司的运营,甚至人工智能算法。