原作者:Kane Wang,SafeHeron &的合伙人;技术副总裁
近日,以太坊创始人Vitalik就MPC钱包和智能合约钱包的优缺点发表了自己的看法,如下图:
Vitalik认为基于MPC的EOA钱包存在根本性缺陷,因为密钥无法撤销,甚至重新共享也无法解决这个问题。重新共享后,旧共享者仍然可以恢复私钥,所以智能合约钱包是唯一的选择。
这也引发了社会上对MPC钱包和智能合约钱包的又一次热议。在发帖之前,也有朋友问过我关于Vitalik的MPC的负面评论。个人认为,这个问题的讨论最终演变成了立场讨论,在应用场景和业务场景不一致的前提下讨论是没有对错的。
与其陷入紧张的局面,不如厘清这个争议:维塔利克指出的revoke keys到底是什么,适用于什么场景?MPC钱包的私钥碎片化管理机制和智能合约钱包的私钥管理机制有什么区别?
(1)什么是撤销密钥?
例如,当使用智能合约钱包时,假设钱包地址是Address1,用户A使用私钥SK_A,用户B使用SK_B来管理智能合约钱包。使用钱包转账时,用户A和用户B都需要授权。
如果用户想改变钱包的管理权限,比如用户A和B原来管理钱包,现在想在不改变钱包地址的情况下为用户C和D管理钱包,撤销用户A和B的管理权限..通过智能合约,可以撤销用户A和B对应的私钥SK_A和SK_B的管理权限,将对应的管理权限修改为用户C和D使用的私钥SK_C和SK_D..
私钥SK_A和SK_B仍然可以被签名,不能被撤销,但是通过智能契约的可编程特性,验证转移权限的方式由验证私钥SK_A和SK_B变为验证SK_C和sk _ d,从使用钱包的角度,我们可以认为私钥SK_A和SK_B管理契约钱包的权限被撤销了。
(2)什么是MPC的私钥分片和私钥分片刷新?
安全多方计算(MPC/PC)是一种链下密码技术,与具体的区块链无关。MPC协议可以在签名算法级实现t/n多重签名。通过多方计算,在私钥生成、使用、刷新和重新分段的过程中,保证密钥可用但不可见。因此,MPC可以直接管理EOA,或者结合智能合约钱包管理资产。
一般来说,通过MPC管理钱包时,需要分布式生成私钥片段,比如2/2方分别生成私钥片段KeyShare_A和KeyShare_B,对应的钱包地址为Address2。
转账时使用分布式签名,使用KeyShare_A和KeyShare_B执行签名协议,授权钱包转账。
私钥片段刷新是指在保持wallet Address2不变的情况下,这组私钥片段KeyShare_A和KeyShare_B通过分布式刷新协议后,持有私钥片段的双方可以分别得到一组新的私钥片段key share _ A’和key share _ B’,然后就可以用key share _ A’和key share _ B’来授权钱包转账。但是KeyShare_A和KeyShare_B仍然可以使用。
私钥片段的重新共享类似于刷新,但与刷新不同的是可以通过重新共享来修改阈值。例如,在对应于2/2的一组私钥片段KeyShare_A和KeyShare_B执行再共享协议之后,阈值被修改为3/3。双方和新参与者分别得到一组新的私钥片段,即key share _ A’、key share _ B’和key share _ C’。对于一组新的私钥片段,在签名之前,这三个私钥片段必须一起实现分布式签名协议。但是KeyShare_A和KeyShare_B仍然可以按照2/2阈值使用。
值得一提的是,在上述四个过程中,其背后的原始私钥只存在于数学意义上,并没有实际出现在所有的过程中,各方都无法获得其他参与者的私钥碎片。
(3)什么场景下3)MPC钱包不能撤销密钥?
首先需要明确MPC密码协议和MPC钱包是两个概念。MPC钱包通过设计密钥分区分配和门限管理机制+MPC密码协议来构建钱包。智能合约钱包可以理解为使用可编程智能合约设计私钥管理机制+签名算法来构建钱包。而且,智能合约中使用的签名算法可以是单私钥签名算法,也可以是基于MPC的门限签名算法。
根据MPC-TSS协议,由于密码学的特性,比如第二个问题中解释的重分片和刷新,重分片和刷新后仍然可以使用原来的私钥片段KeyShare_A和KeyShare_B,并且在MPC协议层面,每组私钥片段都不能被撤销;这和第一个问题类似,智能合约钱包的认证模式从私钥SK_A和SK_B切换到私钥SK_C和SK_D,密码学中的私钥SK_A和SK_B仍然可用,不可撤销。
那么什么情况下MPC钱包不能撤销密钥呢?比如MPC钱包设计的门槛是2/2,管理模式是用户A和用户B,分别持有KeyShare_A和KeyShare_B。如果要更改此wallet的管理权限,用户C和用户D通过MPC刷新/重新分区协议获得KeyShare_A '和KeyShare_B '。虽然用户C和D在刷新重新分片后可以管理钱包,但是从使用钱包的角度来看,用户A和B作为曾经的碎片持有者,仍然可以管理钱包,也就是说这个MPC钱包不能撤销密钥。
(4)在什么场景下4)MPC钱包可以撤销密钥?
以个人钱包Zengo为例,底部签名门限为2/2,用户持有私钥片KeyShare_A,Zengo持有私钥片Keyshare _ b..如果客户怀疑自己的私钥碎片KeyShare_A被盗,理论上讲,在保持钱包地址不变的前提下,用户可以向Zengo请求密钥刷新,双方分别得到KeyShare_A '和KeyShare_B '。刷新成功后,Zengo物理删除KeyShare_B,拒绝使用KeyShare_B继续参与后续签名,只使用KeyShare_B ',用户使用Keyshare _ a,从使用wallet的角度来看,由于KeyShare_A和KeyShare_B '无法计算出正确的签名,此时攻击者窃取的KeyShare_A已经被撤销。
以企业钱包Safeheron为例。底部的签名阈值是3/3。当成员1参与签名时,私钥碎片的分布是成员本地手机设备中的KeyShare_A,可信计算环境下Safeheron cloud中的KeyShare_B,可信计算环境下可信第三方云中的KeyShare_C。当成员1怀疑自己的私钥片KeyShare_A被盗时,在保持钱包地址不变的前提下,成员1可以向云端请求密钥刷新,类似于Zengo场景。刷新成功后,三方分别获得新的私钥片key share _ A’、key share _ B’和key share _ C’。在云可信执行环境下,物理删除KeyShare_B和KeyShare_C,此时从使用wallet的角度撤销KeyShare_A。
如果企业在管理过程中需要用成员2替换成员1来共同管理资产,此时云可信执行环境会删除成员1对应的两个私钥片KeyShare_B和KeyShare_C。添加成员2后,团队创建者将为成员2激活一组新的私钥片KeyShare_A2、KeyShare_B2和KeyShare_C2,成员2的私钥分发与成员1相同。此时,从使用wallet的角度来看,成员1的KeyShare_A被撤销,成员2被添加以KeyShare_A2参与团队资产管理。
在总结和澄清了这场讨论中的争议点之后,我们就相对容易理解Vitalik的回答了。个人认为,在上面第三个问题提到的场景中,维塔利克的观点是没有问题的,但维塔利克的回答是片面的。就回答本身而言,并不是所有的MPC钱包在使用时都不能撤销密钥,各种MPC钱包方案也各不相同。MPC钱包和智能合约钱包解决问题的侧重点不同,MPC钱包更倾向于解决多链、通用、多签的资产安全管理问题。
而且MPC钱包和智能合约钱包并不是对立的。结合线下MPC和线上智能合约钱包的优势,相信未来可以看到很多创新的MPC+智能合约产品和解决方案。
本网站声明:网站内容来源于网络。如有侵权,请联系我们,我们会及时处理。
温馨提示:注:内容来源均采集于互联网,不要轻信任何,后果自负,本站不承担任何责任。若本站收录的信息无意侵犯了贵司版权,请给我们来信,我们会及时处理和回复。
原文地址"mpc钱包技术团队,Safeheron合伙人回应Vitalik评MPC:MPC与智能约钱包并非竞争关系":http://www.ljycsb.cn/qukuailian/212208.html。

微信扫描二维码投放广告
▲长按图片识别二维码