加密货币世界,是一个黑暗森林,风险非常高,安全永远是第一位的!怎么强调安全都不为过,但是常常被用户忽视。
对很多老手,安全风险都是有预期的,也就是认知中是知道他所做的事情,有哪些方面的安全风险,但仍然由于人性的弱点,对安全重视不够而丢掉自己的加密资产。
常规的交易风险,如剧烈的市场波动、合约爆仓、流动性不足等,交易平台(CEX / DEX)风险,新公链/新应用代码漏洞风险,欺诈风险,这些本文不做讨论。这些风险,大多是市场化的风险,高风险带着可能的高收益。
钱包私钥(或助记词)泄露,这个风险可是基本没有啥收益可言。本文重点讨论【钱包安全】,或者叫【私钥安全】,又或者叫【助记词安全】。
无论比特币,还是以太坊,还是其他公链,基本都遵循BIP32、BIP39、BIP44标准。
BIP32,定义了分层确定性钱包(Hierarchical Deterministic Wallets,简称“HD Wallets”),如下图,父私钥可以派生出子私钥,也就是父私钥能控制其自身以及其派生的子私钥控制的所有资产。
BIP39,定义了私钥种子(Seed,也叫钱包种子)和助记词库的编码。私钥种子的原始形式是二进制串,人很难交互,通过编码成单词,既方便人备份,也方便人传递。
开发人员需要详细了解标准,普通用户确不需要了解的那么多细节。简单起见,先从用户视角说清楚助记词、私钥、钱包地址三者之间的关系。
一个助记词(Mnemonic),编码成一个钱包种子(Seed),对应着N多个私钥(Private Key);一个私钥对应一个钱包地址(Address),如下图。
比特币每次在发送的时候,都会有一个新地址接收剩余余额,这些地址都是相同的私钥种子(Seed)派生的钱包地址,都受同一个助记词控制,只要你掌握着助记词,你就掌握着所有这些地址的资产,你在接受别人付款的时候,原来的地址继续用于收款,没有任何影响。
从安全角度分类,钱包分热钱包、冷钱包。知道上面助记词、私钥、钱包地址之间的关系后,很好定义热钱包和冷钱包。
热钱包,就是私钥是触网(互联网)的,比如各种钱包软件(包括手机钱包软件、电脑钱包软件、浏览器插件钱包软件),使用的时候导入助记词,那么你这个助记词对应的钱包,就是一种热钱包状态使用了。热钱包因为联网了,助记词和私钥就有更高的泄露风险。因此在使用热钱包的时候,你默认其安全性就是较低的,最好不要放你损失不起的资产量。
冷钱包,就是私钥和网络隔离永不触网。也就是助记词在离线情况下生成,并离线保存,并始终和网络隔绝。所以关键点就是,离线生成、离线保存。常见的冷钱包有纸钱包、脑钱包、硬件钱包离线手机钱包等。所谓纸钱包,就是把助记词记录到纸上保存。脑钱包,就是通过各种办法,通过大脑记忆,辅助记住助记词,经验说明,依靠记忆的是很不靠谱的。硬件钱包,是私钥存储在特殊硬件中,不触网,就算链接电脑或手机使用的时候,也是将信息送入硬件钱包,钱包返回经过签名的信息,助记词和私钥本身只在硬件钱包里,没有触网。
比特币钱包,现在链上活动比较少,主要就是转账,存储比特币等,建议用户直接用硬件钱包,比特币官网推荐硬件钱包,推荐的几个硬件钱包品牌,都是老牌子,可以到各自官网去购买。不推荐非官网渠道购买。其中Ledger,钱包软件支持得是最多的,支持的加密货币种类也是最多的。
如果是节点需求,或者开发需求,可以在比特币官网推荐钱包页面进行选择自己需要的钱包体验。
以太坊,以及支持以太坊虚拟机(EVM)的公链,钱包较多。但是现在使用最多的,应属MetaMask,其支持浏览器插件和连接硬件钱包,手机端现在功能比较基础。几乎所有的Dapp,都会支持MetaMask,所以基本能覆盖你的绝大多数需求。如果你有其他需求,可以参考以太坊官网推荐钱包,建议至少打开三个过滤选项,Open-source,Non-custodial,Hardware support,其他过滤项,根据自己情况选择体验。
其他非EVM兼容公链,可以公链官网查看支持的钱包,本文会在文末列出知名公链主要钱包。
钱包安全,本质是私钥安全,更本质是助记词安全。从上文的介绍中,我们很容易得出助记词安全中,【助记词生成】和【助记词使用】两个环节中,需要注意的安全事项。本节重点讨论【助记词备份】的安全建议。同时参考下图,以获得一个概览。
我们已经知道,除了输入助记词到使用的设备中,我们还需要备份助记词。保护备份这个事情本身,就是一个非常重要而较有挑战的事情。要知道,为了帮助人们安全地保管自己的32字节的熵,整整一个行业发展起来。
一方面,如果你的备份只有一份,因丢失、被盗、损坏、其他原因无法获得等因素,导致私钥丢失。这就是所谓的“单点故障”问题,为了清除单点故障,我们需要多份备份,至少应该有两份。如果使用中的设备可以随时导出助记词,那么这个设备中的助记词,可以算一份备份,否则不能算。
另一方面,如果你的备份很容易被攻击者获得(然后窃取你的数字资产),那么多个备份增加冗余的同时减弱了健壮性,让攻击者更容易获得备份。
备份机密信息,避免单点故障、保持健壮性,都是两个关键问题,几乎所有的受攻击场景都可以归集于这两个问题。参考下面表格,可以检查你的备份方案,在哪个象限,以及如何改进。
列举一些常见备份方案的缺陷
在线保存,攻击者更容易通过网络获得,健壮性弱
脑钱包、复杂自定义机制,更容易遗忘,而导致单点故障
备份没有告诉家人,只有一个备份,都会导致单点故障
纸钱包,集中保存,保存地被损坏或入侵,也更容易单点故障
根据历史经验总结,离线保存,能大大增强健壮性;在离线保存的前提下,更多的威胁,是来自于单点故障,所以大家要非常重视这个问题。
在你的备份方案中,你需要假设你存放备份之处有可能被入侵,会导致你的备份丢失(自己不可获得)或被盗(攻击者获得),并在你的脑海里做这样的模拟攻击,来检查你的备份方案的安全性。一般用户,可以考虑一次攻击后,还有一道屏障,可供你在发现被攻击后及时处理,以避免损失。高级用户,如大量资产用户、平台或交易所等,需要考虑更多的安全屏障。下面介绍一些不同等级备份方案,供你参考。
我们先看看一些常见的应该避免的助记词备份方案。
将助记词存储到网络服务器或联网的设备中,如
将助记词拍照片
将数据同步到云盘
将助记词作为聊天记录发送保存
这些方式都是极其危险的备份方式。
使用“脑钱包”,将自己易于记忆的信息,主动选择一组助记词来作为种子。其实人类是非常匮乏的熵来源。黑产界都会有庞大数量的密码库、助记词库,一直都处在他们的监视之下,一有资产出现,会被立即转走,俗称“撞库”攻击。
有的把助记词分成几个片段,分开保存,但是攻击者获取部分片段,可以展开暴力破解,因为暴力破解难度达到了可完成的程度。
有的自创助记词备份方案,各种算法,但有时候过于复杂,或者没有几个人知道相关信息,也没和你的家人分享,极容易导致单点故障,最终没法获得助记词。
有的会把助记词随机排序,或者随机穿插一些单词。由于助记词有内置校验和(最后一词是用于校验和的),根据已知的有限单词,进行暴力破解,并不困难。
将助记词记在脑子里,是一种非常不靠谱的方案。临时应急记住助记词还可以理解,作为长期策略备份助记词,极易引入单点故障问题。
你可能会忘记助记词
你可能因受伤而想不起来助记词
你可能会死亡,你的继承人无法获得助记词
你可能会被胁迫泄露助记词
助记词密语(passphrase),本质上是 24 词恢复短语之外的附加密码,你使用该钱包时,必须输入这个密码,这常被称为“第25词密语”。攻击者也必须同时知道助记词和这个密码,才能窃取你的数字资产。这本质上跟2/2多签钱包具有相同的安全模型。但是,你要知道在多签钱包中2/2多签是很冷门的,因为它引入了两个单点故障,两部分中任何一部分丢失,你的资产都将丢失。忘记密语而丢失资产也是十分常见的。如果你要选择这种方案,那么清除单点故障,是你必须解决的问题,通常可以增加备份副本,来避免单点故障。
Trezor的Shamir备份,是一种经过严格审查的SSS标准。该方案缺点之一是没有得到广泛支持。需要通过Trezor Model T硬件钱包生成备份和恢复,其他支持该标准的钱包有Keystone和electrum。
助记词异或(Seed XOR),是一个绝佳方案。它是将一个24词的助记词,变成两个或多个助记词,这些助记词都是兼容BIP39标准的助记词,也就是说都是有效的钱包助记词。这些助记词,任意组合,通过异或运算组合出的钱包助记词,也都是有效的钱包助记词。你在备份的时候,将你真正使用的助记词,分解成两个或多个助记词,然后将分解后的助记词备份到你喜欢的物理介质上(推荐钢板)。你要恢复的时候,将分解成的所有助记词做异或运算,得到真正使用的助记词。该方案既能带来“第25词密语”和简单分片的安全模型(其实异或运算,每个助记词都保留着同样高水平的熵,安全性更高),又能降低复杂度和合理的推诿说辞(因为每个部分,都是一个有效的钱包助记词)。请注意,该方案本质上,仍然是N/N(如,2/2,3/3)多签模型。需要通过多分解几组,避免单点故障问题,以便你在丢失一块助记词,仍然能恢复你真正使用的助记词。需要关注更细节的,请参考Seed XOR更详细的介绍。当你彻底弄明白这个数学运算(一点都不复杂),你可以通过在草稿纸上做数学运算,进行分解/恢复操作。当然对于没有一点儿二进制计算基础的用户,还是借助COLDCARD硬件钱包来完成分解/恢复吧,购买COLDCARD Mk3就够了,其他不需要购买。
多重签名,是一种理想的密钥方案。M/N(M<N)多签钱包,表示N个密钥中,同时获得任意M个密钥,就可以操作钱包资产,而少于M个密钥被攻击者获取,都不能窃取你的数字资产。例如,1/2多签,两把密钥中任意一把都可以打开,这可以避免单点故障,但是健壮性会削弱。2/3多签,三把密钥中任意两把一起可以打开,该模式比较常用。3/5多签,五把密钥中任意三把一起可以打开,比2/3更多冗余,也是比较常用的。M/N多签的优点(特指1<M<N时),就是它在避免单点故障和保持健壮性两个方面的表现都比较优秀。N/N多签,正如上面提到的,可以增强健壮性,但同时引入更多单点故障,因此比较冷门,如果坚持要用,需充分考虑多副本备份清除单点故障问题。另外,比特币本身支持多签,以太坊(含多数EVM兼容链)可以通过Gnosis Safe智能合约实现多签钱包。
虽然硬件钱包,都会附带几张纸质卡片,并指引你将助记词抄写在卡片上,但这真不是一个好建议,至少对于你要用于存放较多资金的主钱包助记词,绝对不是好建议。现在普遍推荐用金属钢板记录助记词,淘宝上也有很多这样的产品,也不贵,国外细心者还做了测评,点击这里看详情。当然你在购买的时候,收货地址避免使用你家地址或其他存放助记词的地址,取而代之应该使用附近别的代收点,以免地址泄露。
如果某处存放了物理攻击者窃取资金的全部密钥信息,会引入单点故障。你需要将备份分散在物理上安全且难以找到的地方。有的会考虑保险柜,或存到银行保险柜。总之,异地,首先是防止单点故障,其次是在有多签特性的方案中避免削弱健壮性。所以,异地原则,建议一个地方只存放一份信息。
以上是梳理了数字货币钱包安全的逻辑,需要你理解后,根据需要来设计自己的钱包助记词安全。
作为普通用户,主钱包建议最低做到:使用硬件钱包,助记词备份做到离线、两份副本、钢板、异地各存放一份副本。
资金量比较大的用户,主钱包建议最低做到:使用硬件钱包,助记词备份做到离线、多副本、钢板、多签、异地各存放一份信息。
资金量巨大的用户,当请专业团队提供更全面的安全方案建议。
1、Ledger
2、Trezor
3、BitBox02
4、Keystone
5、OneKey
Ethereum(含EVM兼容链):MetaMask
Solana:Phantom
Cosmos系:Keplr
Elrond:官方网页钱包
Flow:Lilico
Near:官方网页钱包
Klaytn:官方网页钱包
Thorchain:XDEFI