常用的插件钱包,如 metamask,工作原理是通过 BIP 39 协议生成种子-助记词-公私钥,每次交易也需要私钥明文参与。
而 MPC 钱包则仅有私钥分片,且保存在不同的设备上;所以 MPC 钱包在签名交易的过程中不会暴露明文私钥,即使用户的设备被入侵,黑客也无法获取完整私钥。但还有一个后置风险摆在用户面前......
近期钱包的私钥安全再一次成为了舆论焦点。在今年 3 月初,大量拥有 ARB 空投的地址被泄露私钥,引发了一场科学家的“横财盛宴”;早前,一位行业 OG 的推特发出警示:“发现一种新型盗币方式,在国外的 KTV 里,诈骗团伙悄悄把 KTV 的共享充电宝改装了并植入了恶意程序,客人在 KTV 里唱歌、喝酒消费啥的一待就是大半天,手机很容易没电,然后就去借充电宝,结果你以为充电宝在给自己手机充电,结果是在读取手机里的数据、窃取钱包里的私钥。”
普通的web3.0 玩家如何在链上黑暗森林中保护自己的钱包资产,避免悲剧发生?
目前逐渐普及的解决方案是 MPC 钱包,但其工作原理如何?使用后就真的彻底安全了吗?本文将为大家精准科普。
首先,MPC(Multi-party Computation)多方计算,是清华大学姚期智教授在 1982 年提出的零知识证明技术路径,在实际应用场景中,涵盖大量现代密码学技术,如 RSA、ElGamal 和 ECDSA 等公钥密码学算法,及 Shamir 秘密共享协议等。这些技术的结合使得 MPC 具有高度的安全性和可扩展性,并确保以下的安全诉求:
分布式加密可使得数据被分割为多份,分别存储在不同的参与方处,从而避免数据泄露风险;
零知识证明可以证明某个事实的真实性,而无需透露与该事实相关的其他信息;
秘密共享则可以将信息分发给多个参与方,从而确保信息整体不会被任何一方独立控制。
将 MPC 概念应用在钱包产品中,目前行业的通用方法是:
每个钱包的管理人(参与方)都会持有一个密钥分片;
并在需要交易时,由一定数量的参与方合作,并且在 TEE(一种可信的加密执行环境)中才能重建出完整的私钥,并完成签名过程。
这种业务流程使交易的过程中不会暴露明文私钥。即使用户存放密钥分片的设备被入侵,黑客也无法获取完整私钥,从而提升安全性。
不难发现,通过 MPC 技术实现的多签钱包,和 Safe(即 Gnosis)等通过智能合约实现的多签钱包相比,核心差别为:智能合约多签钱包通过私钥(区块链地址)参与实现多重签名,依然存在参与方私钥被窃取的风险;而MPC 钱包的参与方并不掌握完整私钥,而是通过密钥分片实现门限签名(Threshold Signature Scheme),从而消除了单点风险。
但资产就从此彻底安全了吗?显然不!
MPC 钱包虽然实现了签名流程的安全,但将一个后置风险【分片安全管理策略】摆了在用户面前。
MPC 钱包的私钥分片管理策略,目前市场有三种主流:【自托管模式】【混合托管模式】【中心化托管模式】。其中,【自托管模式】最贴合硬核的 crypto native 理念:需要用户自行管理助记词和所有密钥分片,一旦助记词、所有保存分片设备全部丢失,则资产将在链上陷入沉睡;而【混合托管模式】【中心化托管模式】策略虽然可以实现例如陌生设备 recover、社交恢复等功能,但因为分片托管方无法 100% 消除人性作恶的风险,所以安全性和 CEX 一样,严重依赖创始人的信誉。
于是,用户在选择 MPC 钱包时将面临鱼与熊掌的难题: 1、选择【自托管模式】产品,然后用更多精力和成本保护助记词;2、选择【混合托管模式】和【中心化托管模式】产品,享受接近web2.0 的使用体验,但必须信任产品运营方不会作恶。
综上所述,MPC 钱包的安全性除了与签名流程相关,也与密钥分片的管理策略相关。
【自托管模式】更适合企业级用户:追求彻底安全、且有足够的人力和资源确保自己的助记词和储存分片的设备不会全部同时丢失;而【混合托管模式】【中心化托管模式】则更适合普通web3.0 玩家:资金体量小、且持仓分散,对中心化场景有刚需,所以习惯相信人性(即使遭遇类似 FTX 的灾难,损失也相对较少)。
但笔者认为,当用户将资金从中心化机构提取,无论个人抑或团队都必然希望获得更高的安全级别,【混合托管模式】【中心化托管模式】与用户的意愿显然是矛盾的。而以太坊的 EIP-4337 的发布,意味着将来 DAPP 可以通过账户抽象的技术路径,为用户提供支持社交登录、社交恢复等接近web2.0 产品体验的服务,而基于其特殊的使用场景(链游、社交等),用户对安全性的敏感度亦相对较低;这种业务模式对【混合托管模式】和【中心化托管模式】的产品市场必将造成极大冲击,甚至可能让这类产品在 EIP-4337 正式落地后被彻底淘汰。