无论智能合约钱包还是个人账户钱包,私钥都拥有对钱包的绝对控制权,一旦私钥丢失我们的钱包就完全暴露在风险之下
原文作者:Ggg, Redline DAO
原文来源:Redline DAO
摘要
- “Not your key, not your coin”,无论智能合约钱包还是个人账户钱包,私钥都拥有对钱包的绝对控制权,一旦私钥丢失我们的钱包就完全暴露在风险之下
- 私钥是钱包的基础,助记词是私钥的恢复方案,也是目前的钱包发展阻碍所在
- MPC和社交恢复带来的无助记词方案是Mass Adoption的基础
- 未来钱包的更多可能性,关于EIP-4337的期待
Text
正文
2010年,以太坊创始人Vitalik Buterin在魔兽世界中有一个术士的账号,有一天暴雪决定将术士角色大削,移除了生命虹吸法术的法伤部分。他哭着睡着了,并且在那一天意识到集中服务器会带来怎样的恐怖,于是他决定退出,创建了去中心化网络以太坊。2022年11月,世界上最大的衍生品交易所FTX被曝挪用用户资金,创始人SBF被巴哈马警方逮捕,准备移交美国受审。
从13年前被暴雪莫名背刺的术士玩家,到今天维权的FTX受害用户,我们越来越认识到“Not your key, not your coin”这句话的重要性:即使有第三方的审计/监管机构,中心化的服务器仍然可以肆意篡改、粉饰数据,而在去中心化网络上,链上账本透明且无法篡改,只要我们拥有自己账户的私钥,便拥有对个人资产的绝对控制权。
去中心化是美妙的,但代价呢?
生活在区块链网络中的我们,是个人资产的第一负责人。大部分的用户选择在选择链上钱包时,最关键的权衡是,我愿意为我的资产承担多大的风险以及多大的责任?以传统金融机构为例:
回到web3,我们在web3中存放资产有两种方式,托管钱包和非托管钱包,而在此之前我们需要对钱包的原理进行一个简要的介绍:
钱包与私钥账户的生成即私钥的创建过程。在以太坊上,有两种账户类型:EOA 账号(External Owned Account,外部账户)和合约账户(通过EOA账户部署在链上的智能合约):
EOA address
2. 而智能账户则是通过EOA账户在链上部署的一段EVM编码,可以实现不同的功能。但是和EOA账户不一样的是,合约账户没有私钥,不能主动执行,它只能被EOA账户发起调用,也正因此,智能合约钱包的最终控制权 = 部署合约使用的EOA账户私钥,在这个层面上理解,智能合约账户也是被私钥控制的。只要钱包地址是合约,那就是智能合约钱包。
Apecoin Contract Address
3.账户创建之后,我们参与任何链上活动,都离不开私钥的参与。
在去中心化的网络中,并没有一个类似银行这样的信任机构存在,要想在两个节点之间达成交易,就必须实现一种在零信任的情况下安全交易的机制。
我们假设小明和小红希望达成一笔交易,一种创建交易的方法是小红声称小明给了他1万块钱,显然这是不可信的;
还有一种创建交易的方法是:小明声称他给了小红一万块钱,只要能验证这个声明确实是小明作出的,并且小明真的有1万块钱,那么这笔交易就被认为是有效的。
钱包的安全性,门槛与抗审查性钱包的一切都围绕着私钥构建。钱包本质上是一个1.创建私钥,2.保管私钥,3.使用私钥,4.备份私钥,5.恢复私钥的工具,目前的主流私钥备份/恢复方案便是助记词,即在注册钱包时出现的12/24个单词组合:
由于私钥是我们与区块链网络进行交互的唯一凭证,我们的责任在于保管好我们的钱包私钥和助记词。最安全的创建账户方式当然是在一个离线的环境,自己通过代码运行随机数(私钥)和SHA256算法生成自己的地址,但是无疑这个门槛太高,并不适用与绝大部分的用户。所以在钱包的选择上,用户需要考虑三点:安全性,门槛和抗审查性:
钱包类别主要分为两种:非托管钱包和中心化的托管钱包。
交易所钱包如Coinbase/Binance等则采取了托管钱包的方式,不同之处在于,Coinbase内显示的账户不是用户持有自己的私钥,而只是Coinbase程序里显示的记账数字而非Etherscan上显示的链上资产,可以理解为用户信任Coinbase,将资产托管给Coinbase而非自己拥有,所以coinbase的账户也无法和Uniswap等dAPP进行交互
Source: Binance总体而言,托管钱包中,项目方代为保管助记词,注册和恢复钱包的门槛低,但是钱包的安全取决于项目方而非用户自身,且项目方拥有钱包的实际控制权;非托管钱包的助记词掌握在用户手中,注册和恢复钱包的门槛高,但是安全性和抗审查性都很高。
助记词方案的缺陷
随着WEB3不断向前发展,越来越多的需求和应用场景随之出现,链上的生态蓬勃发展,尤其是2021年的Defi Summer吸引了大批原本只在交易所交易的用户将资产迁移至链上,截至2022年3月,MetaMask月活用户已经达到3000万,但同时,助记词作为目前最主流的助记词账户恢复方案,成为了黑客的主要攻击目标:对于普通用户而言,最常见的钱包被盗事件便是助记词在剪贴板被复制,或者遇到了钓鱼网站被窃取了储存于本地的私钥文件。
继续以Metamask作为例子,黑客可以在两个地方获得保存的助记词和私钥:
i.在Windows上的储存位置,Metamask的私钥保存地址:C:\Users\USER_NAME\AppData\Local\Google\Chrome\User Data\Default\Local Extension Settings\nkbihfbeogaeaoehlefnkodbefgpgknn。ii.在Mac上的储存位置:Library>Application Support>Google>Chrome>Default>Local Extension Settings>nkbihfbeogaeaoehlefnkodbefgpgknn
b.即Metamask的安全性取决于Chrome的安全性,一旦Chrome的防火墙被黑客攻破,黑客便可以获得用户的地址私钥,转移所有资产。这也是为什么硬件钱包在安全性上优于Metamask等插件钱包。
Metamask以外,部分非托管钱包,甚至达不到高抗审查性,如Solana上的Slope钱包被盗事件:Slope 的移动应用在创造Phantom钱包时,通过 TLS 向他们的 Sentry 服务器发送助记词,这些助记词随后以明文形式存储,这意味着任何可以访问 Sentry 的人都可以访问用户私钥。
除此之外,还有更多的钱包安全事故值得我们反省:
EOA账户被盗
沈波钱包被盗原因为助记词泄露,被盗时使用的钱包为 Trust Wallet,被盗金额包括约 3823 万枚 USDC、1607 枚 ETH、72 万枚 USDT 和 4.13 枚 BTC。
Profanity 的设计目的,是帮助人们生成一个具有特殊视觉效果的账号,比如以特殊字符开头或者结尾的账号,另一方面,一些开发者使用它来生成开头为很多个 0 的账号。
Profanity 在获取到第一个 32 位私钥 SeedPrivateKey 以后,为了碰撞出需要的账号地址,会通过一个固定的算法不断迭代这个私钥,最多 200 万次(数值来源于 1inch 披露的文章)。当 PublicKey 已知时,我们可以通过穷举SeedPrivateKey和 Iterator 来得到 SeedPrivateKey,计算量大概为 2^32 乘以 200 万次,算力大的显卡在几天甚至几个小时内就能完成。
合约账户被盗
根据慢雾的调查报告:黑客地址(0xf358..7036)已经获得了 ParaSwap Deployer 和 QANplatform Deployer 的私钥权限。黑客从 ParaSwap Deployer 中提取了 1000 美元,并将其转入转出 QANplatform 部署者地址作为测试。我们使用 AML 平台对 0xf358..7036 进行分析后发现,黑客还盗取了 The SolaVerse Deployer 及多个其他靓号地址。截止目前,黑客已经窃取了超过 17 万美元的资金。
黑客虚构了不存在的公司,通过 Linkedin 和 WhatsApp 勾搭了 Axie 的高级工程师,利用新工作机会引诱他,还安排了面试,最后开出丰厚的待遇,但 offer 文件有毒,于是成功侵入 Axie 系统,盗窃工程师部署合约的EOA地址私钥。
助记词方案除了是黑客的主要攻击目标以外,同时也是阻止新用户进入WEB3的高门槛。
保管一张写有12个单词的白纸这件事情本身听起来就很不靠谱且不web3:我们期待着生活在metaverse 的未来,但是我们的账户安全却靠一张宋代发明的白纸。至此,这两个步骤足以劝退大部分的web2玩家,毕竟在web2的世界里,大部分注册流程都可以使用google账号/ios账号一键登录。
无助记词的账户恢复新方案
为了降低钱包的门槛,吸引更多的用户进入WEB3,我们需要使用如Web2的社交账号登录方案,而不损失钱包的安全性和抗审查性。由此,我们需要更便捷且安全的的账户恢复方案,目前的一切讨论都指向一个终局:无助记词。目前的无助记词有两种实现方案:MPC方案和社交恢复方案。
MPC方案MPC方案是在创建EOA钱包时,多方共同创建私钥碎片。2019年,在CRYPTO 2019上公布了《基于安全多方计算的两方椭圆曲线数字签名》的论文,正式将MPC的实现带入大家的视野。MPC即安全多方计算(Secure Multi-Party Computation)。
MPC方案做到了在账户创建,使用,保存,备份和恢复都没有出现完整的私钥,通过多方共同生成/持有私钥碎片以及”t out of n“的 TSS 门限签名方案,达到了比Metamask等单点生成/持有私钥钱包更高的便捷性。安全性和抗审查性:与传统的助记词方案相比,大大提高了用户使用的安全性,甚至可以媲美硬件钱包
社交恢复方案社交恢复方案部署在智能合约账户上,智能合约钱包可以理解为用EOA账户在链上部署了一个用于管理资金的合约,和普通的智能合约相同,部署者的EOA钱包拥有对于智能合约的控制权。
EIP-2929提案之后过了两年,2021年Vitalik首次在论坛里提出了社交恢复的钱包应用案例:
a.创建私钥
账户抽象钱包在私钥的创建上和 Metamask 无异。
b.保管私钥
由于控制合约的 EOA 钱包只是作为“签名私钥”使用,并可以通过监护人转移控制权,所以用户不需要特意保管助记词。
c.使用私钥○ 合约钱包同样是转账/交易,因为需要调用合约,所以会比 MPC 钱包和传统钱包更贵;
○ 但也因为是调用合约,所以支持使用 USDC/USDT 等非 Native token(如 ETH是 Ethereum 上用于支付 gas fee 的 native token)支付,这无疑会大大降低 Web3 新玩家的交互难度:原理上,项目方在同一个交易里,将用户的 USDC swap 成 ETH 之后代为支付 gas fee。
d.备份私钥账户抽象钱包的私钥备份步骤用“监护人”代替,然而这是反直觉并且高成本的:
①用户初次使用web3,希望注册钱包,却需要寻找三个已经在web3内有EOA钱包的可信任的好友,让他们付出gas fee成为自己的监护人;
②若用户希望补偿好友的gas fee,用新创建的钱包进行三次转账,则创建一个钱包,一共需要给出6次gas fee,而MPC钱包创建账户是无成本的。e.恢复私钥
如果用户丢失了他们的签名密钥,这时可以申请使用社交恢复功能。用户需联系他们的监护人,让他们签署一项特殊的交易(用户或监护人支付gas fee),将钱包合约中注册的签名公钥更改为一个新的签名即可。这就简单多了:监护人可以通过访问一个网页,比如 security.loopring,查看恢复请求并签名。
然而,在私钥的安全性上,没有达到MPC钱包的高度:
MPC方案 v.s. 社交恢复方案:安全性,门槛,抗审查性
Mass Adoption的未来:Web3钱包
有了无助记词账户恢复方案之后,我们可以期待新一代的Web3钱包,即可以使用邮箱注册和登录的钱包。在我们挑选了MPC钱包和账户抽象钱包的代表项目来分别做分析:用户准入上他们都达到了无助记词的低门槛,我们从安全性和抗审查性分别对他们做评估——
#Bitizen
在MPC钱包中,抗审查性和便捷性做得比较彻底的Bitizen钱包采用了2/3的TSS方案,让我们从钱包的安全性和抗审查性对其进行分析:
#Unipass
账户抽象钱包以Unipass为例,Unipass采取了智能合约+MPC钱包的方式,结合两种方案的优点:
Source: Unipass
低门槛 —> 高应用性
低门槛钱包并不是钱包应用的终点,目前的Web3基础设施与Web2的传统金融相比仍有一定距离。Visa 提供的自动扣款和定期自动付款功能为用户带来了巨大的便捷,但在以太坊上实现仍具有一定难度。账户抽象账户可能会是下一个高应用性的区块链钱包叙事:Visa 发布文章「自我托管钱包的自动支付(Auto Payments for Self-Custodial Wallets)」,探索利用账户抽象钱包Argent在StarNet网络上实现自动可编程支付,允许用户使用自我托管钱包自动付款而无需签署每笔交易。而账户抽象钱包具体是如何实现的呢?这个概念实际起源已久。
账户抽象 - 从EIP-2938到EIP-4337随着EIP-4337的提出,账户抽象这个话题重新回到大家的视线。社交恢复方案和账户抽象(将智能合约作为EOA钱包使用,即账户抽象)早于EIP-1271已经提出,并且由Argent等钱包在StarkNet等Layer2完成了落地应用,最近社区热议的EIP-4337方案(账户抽象)有何不同呢?从2015年的EIP-86到最近热点EIP-4337,开发者们的核心的思路围绕着“合约即为钱包”,帐户抽象使用户能够以直观的方式与主网进行交互。从而使用户对账户的关键权限进行精准控制。由于EOA账户的代码已经被规定,无法在EOA钱包上进行模块化和功能化的设计,比如增加批量转账/社交恢复等功能,所以大家将突破口放在了智能合约上。与EIP-4337最为接近的提案是EIP-2938,EIP-2938同样定义了一个新的智能合约运作协议,但是需要在共识层进行了修改,开发者们难以对其进行维护,而EIP-4337 的主要创新点在于主网就不需要进行共识级别的协议更改。
拥抱 Web3 的未来
老生常谈一句,web2用户48亿人,web3用户在22年刚刚超过了1亿,我们仍处在区块链发展的早期蛮荒阶段。
回到文章开头的那个问题:“我愿意为我的资产承担多大的风险以及多大的责任?”,能不能既不用记住我的私钥,也能保证我的钱包不丢失?
一直都有听到传统的VC质问:有没有什么场景,是只有web3可以做到而web2做不到的?我们认为,Web3 钱包就其中一个打脸传统 Web2 的例子:只有在 Web3 的去中心化网络中,我们才能期待一个满足抗审查性,安全性和用户体验的好钱包,用户既不用承担风险,也不用承担责任。而这样的钱包出现,也是 47 亿 Web2 用户拥抱 Web3 未来的重要基础:钱包是不仅是 Web3 第一个入口,更是链上域名(如ENS),灵魂绑定代币(Soul-Bounded Token),链上声誉系统(Decentralized Identifiers)等发展的基础,如果没有安全的钱包环境,Web3 Lego的搭建就没有稳固的根基。
我们需要更认真地思考,熊市开枪的机会不多,MPC给我们看到了EOA钱包更易用更安全的未来,并且能够适配目前所有的EVM链,智能合约的接入dAPP还有很长一段路要走,社交恢复方案目前看着鸡肋,但是智能合约的未来可能性让人期待,我们究竟要押宝在谁身上,我们会用真金白银交上这份答卷。
2022是加密货币黑暗的一年,但是我们依旧相信未来是光明的。我们是魔兽世界里觉醒的术士,我们希望创造一个这样的世界:在这个世界里,没有人能拿走我们的生命虹吸(除非提案投票通过)。