从MPC网络聊到币安MPC钱包的实现

从MPC网络聊到币安MPC钱包的实现

⭐️什么是MPC

MPC(multiple-part compute),中文名多方计算。 概述:简单来说,mpc是一种加密学的技术协议,由多方数据输入得到一个输出结果,但同时又能很好的保护输入的隐私性(怎么跟zk算法的概念有点类似...)

⭐️类比:

  • 假如我们公司有3个员工,现在需要统计3个员工的工资平均值,但又不想暴露员工的薪资。我们该如何做?
张三 李四 王五
2000u 3000u 4000u

传统方式直接2000+3000+4000=9000,9000/3=3000。得出平均工资为3000u 在这里面,我们输入是一个隐私,结果是固定的。所以我们可以把每个人的工资打散。但保证每个人的工资的加和等于他的原本工资,然后进行计算,也能得到9000这个总薪资。9000/3=3000。结果仍然是正确的。

张三 李四 王五
4000u 1000u -1000u
-2000u 2000u 5000u
A列 B列 C列
2000u 5000u -2000u
-1000u 4000u 1000u

可以看出,打散后的薪资总数,仍然等于9000u。这就意味着我们可以得出正确的结果,但从输入端来看,这里的薪资A、B、C三列来说,薪资完全是隐私的,没法推断出张三李四王五的薪资是多少。那这个打散薪资并计算的过程,我们就可以看做一个MPC网络所需要做的事。

⭐️应用:

  • 我们试想一下,假如市政府想要修一条路,那他需要必然一些道路的数据。而对于一些地图应用如高德地图、打车软件如滴滴而言,这些企业拥有着精确且大量的数据。但对于这些企业而言,这些数据又属于企业的隐私。那么,mpc算法在这个过程的是可以发挥作用的,我们可以利用mpc算法来保护输入数据的隐私,又提供给市政府一个精确的输出。

⭐️门限秘密共享:

  • 门限共享秘密算法在密码学上指得是:将一个秘钥进行分片,设定一个门限值,如果达到或超过这个门限值的分片,我们即可采用逆门限共享算法来恢复出来一份完整的秘钥。例如,我们将一个秘钥分为3份,设定一个门限值为2,当搜集到任意2个秘钥分片的时候,即可采用逆门限共享算法来恢复出来完整秘钥。

⭐️跟门限秘密共享有什么区别:

  • 在区块链的应用上,MPC用于保护秘钥的分片的输入,通过mpc网络的计算,得到一个签名结果。而门限秘密共享仅仅关注的是秘钥的分片和恢复的过程,并不考虑签名。
  • 此外,完整的MPC网络中,超过门限值也无法恢复出来完整的私钥。但在门限秘密共享算法中,超过门限值可以恢复出来完整的私钥。

⭐️跟多签有什么区别:

  • MPC看起来和多签有点类似,都是通过聚合多个部分来达到签名的目的,但实际上,两者的底层逻辑是不一样的。
  • 以Ethereum的智能合约多签为例,多签是采用合约进行控制,聚合多个人,使用各自的私钥进行联合签名,达到阈值后即可签名一笔交易。而MPC不一样,MPC仅针对的是一个人的私钥进行分片,达到阈值的分片计算后得到签名,全程操作的是一个概念上的私钥。
  • 所以说,MPC这种方案,在忽略网络计算消耗的情况下,普遍而言消耗的资源会比多签要低,因为它全程只操纵一个私钥,整体的数据量肯定更低。
  • 但在安全性上相比,就见仁见智了,多签全程在链上执行,且多签人是确定的,很好定位到是谁签署了这一笔交易。而MPC是链下的方案,签名节点是隐私的。在发生作恶追责时,MPC就无法定位到责任人了。

⭐️Binance的解决方案分析:

  • 币安的web3钱包采用的是MPC的解决方案。如下图所示,该钱包无须备份助记词、无须管理私钥

1.png - 那这个mpc钱包是如何实现的呢?查阅币安web3钱包的文档可知,在创建钱包时,应用会为我们生成三个秘钥分片。一份由币安服务器保管,一份由用户设备保管,一份由icloud(或google)保管。在这个mpc钱包中,门限值为2/3,即任意取得两方秘钥,即可控制钱包。

2.png - 那么,又有问题来了,icloud等云服务器,理论上只有存储能力,并没有计算能力。那这个mpc系统是怎样进行签名的呢?币安钱包在处理这个问题时构思很巧妙,它在计算交易签名时,只采用了币安服务器、本地设备两方进行mpc计算并签名,这样是满足2/3的阈值的。 - 那么,又引出了一个问题,既然固定死了币安服务器+用户设备两方联合进行mpc计算并签名,cloud并不参与mpc签名过程,那要这个cloud又有什么用的?实际上,cloud这个设计,是设计用来恢复私钥用的,并不参与mpc的计算。也就是说,假如用户清除设备导致本地私钥丢失,那他还能从币安服务器和icloud中的两个秘钥分片恢复出来私钥。

image.png - 那么,此处又有一个问题了,mpc网络的设计不是全程不泄漏私钥吗?那为什么能恢复出来私钥?实际上,币安这个web3钱包并不是纯粹的mpc网络。他是融合了mpc+门限共享秘密算法的缝合怪。币安钱包通过这个巧妙的构思,结合了mpc网络安全可靠去中心化的优点,又防止了本地私钥丢失,无法签名交易且秘钥丢失无法找回的弊端。

全部评论(0)