从被钓鱼到冷钱包:我用三个真实案例换来的钱包安全指南

· 钱包对比

2023年3月,我认识的一个NFT玩家在Blur上挂单卖图。他点了一个“批量挂单”的链接,钱包授权了SetApprovalForAll,结果价值40多个ETH的猴子被转走。他后来复盘发现,那个链接的域名只差一个字母——blurr.io。就这么一个字母,两年的利润没了。

另一个朋友更冤。他把助记词抄在一张纸上,拍照存进了iCloud备忘录里,想着“加密一下”。结果邮箱被撞库,攻击者顺着iCloud翻到了那张图。钱包里的12个ETH和几枚铭文在20分钟内清空。

这两个案例的共性是什么?不是技术漏洞,是操作习惯。

热钱包:方便和风险是同一条曲线

MetaMask我用了五年,现在只放“零花钱”——大概0.5 ETH等值的资产,够我交互几个dApp就行。为什么?因为浏览器插件钱包的攻击面太大了。你装的每一个插件都可能读取页面内容,你点的每一个签名请求都可能是陷阱。

说个具体操作。MetaMask的签名请求分两种:eth_sign和personal_sign。前者是危险信号,它签的是任意哈希,骗子可以拿这个签名构造一笔转账。后者相对安全,但也不是绝对。我给自己定的规矩是:看到eth_sign直接拒绝,没有例外。MetaMask现在默认禁用了这个接口,但你最好手动确认一下——设置→高级→确保“Eth_sign”是关闭状态。

还有一个容易被忽略的点:授权管理。你在Uniswap上第一次交易时,会先approve一个代币。很多人approve的是“无限额度”。这意味着如果Uniswap合约被攻破,你的全部代币都可能被转走。我每两周会去revoke.cash扫一遍,把不用的授权全撤掉。操作很简单:连接钱包→它会列出所有活跃授权→逐个点revoke。gas费大概0.5到2美元一笔,但比被清空强。

冷钱包:不是买了就安全

我2021年买了一台Ledger Nano X,当时觉得“硬件钱包=绝对安全”。后来发现,这东西的安全边界取决于你怎么用。

有个常见的误区:很多人把助记词抄下来,然后拍照存手机里,或者存到密码管理器里。Ledger官方明确说过,助记词只能手抄在纸上或刻在金属板上,不能以任何数字形式存储。我自己的做法是:抄两份,一份放家里保险柜,一份放父母家的抽屉里。金属助记词板我买了Cryptosteel Capsule,大概80美元,防火防水,摔不坏。

另一个坑是固件更新。Ledger会定期推固件,修复漏洞。但更新时有个细节:必须通过Ledger Live官方软件更新,不能在第三方网站上下载固件。2020年有个案例,一个用户从钓鱼网站下载了“Ledger Live更新包”,输入助记词后资产全没了。真正的Ledger Live只会让你在设备上确认更新,绝不会要求你在电脑上输入助记词。

说个实战场景。你用Ledger在Uniswap上交易,流程是这样的:连接钱包→在网页上发起交易→Ledger屏幕显示交易详情→你在设备上按物理按钮确认。关键在第三步:你必须核对Ledger屏幕上显示的收款地址和金额。有一种攻击叫“地址替换”,恶意软件会篡改你电脑上显示的地址,但改不了Ledger屏幕上的。如果你不看屏幕直接按确认,钱就转给骗子了。我每次都会核对前6位和后4位字符,多花10秒钟,但值得。

多签钱包:大额资产的最后一道防线

如果你持有超过5万美元的加密资产,单签钱包就不太够了。私钥一旦泄露或丢失,没有补救机制。多签钱包(比如Safe,原Gnosis Safe)要求多个私钥共同签名才能动资金。

我自己的配置是2/3多签:三个私钥,任意两个签名才能转账。三个私钥分别存在Ledger、Trevor(另一台硬件钱包)和一台离线电脑上。这样即使一个私钥泄露,资产也不会丢;即使一台设备坏了,我还能用另外两个恢复。

创建Safe多签的步骤不复杂:访问safe.global→连接钱包→设定签名人地址和阈值→部署。部署成本大概50到100美元等值的ETH(取决于gas费)。之后每次转账,需要发起交易→其他签名人用各自的钱包确认→执行。多了一步协调,但安全感完全不一样。

有个细节要注意:Safe的签名人地址不要用同一个助记词派生出的多个地址。有些人图省事,用同一个Ledger生成三个地址当三个签名人,这等于单签——助记词一泄露,三个地址全丢。每个签名人必须是独立的助记词、独立的设备。

几个能救命的习惯

讲真,钱包安全没什么高深技术,全是笨功夫。我总结了几条自己坚持在做的:

第一,分仓。 热钱包只放交互用的零钱,冷钱包存大额,多签存“不动仓”。三层结构,各司其职。

第二,每次交互前看一眼域名。 我收藏了常用的dApp网址,从不通过搜索引擎或推特链接进入。blurr.io那种事,多看一秒就能避免。

第三,小额测试。 任何新地址、新链、新协议,先转一笔最小金额(比如5美元),确认到账后再转大额。我2022年跨链到Arbitrum时,第一笔只转了0.01 ETH,结果因为桥的合约有问题卡了6小时。如果直接转大额,那6小时我大概会睡不着。

第四,定期“体检”。 每月花20分钟做三件事:revoke.cash撤授权、检查钱包连接记录(在钱包设置里能看到最近连接过哪些网站)、确认助记词备份还在原位。

最后一个案例。去年有个读者私信我,说他助记词丢了,但记得大概的12个单词,问我能不能暴力破解。我告诉他:12个单词的排列组合是12!,大约4.79亿种,加上BIP39的词表校验,实际有效组合也远超任何个人算力。他最后没找回来。这事的教训是:备份不是“以后再说”的事,是买钱包当天就要做完的事。

钱包这东西,用对了是工具,用错了是漏斗。别等漏了才想起来补。