2022年底,全球第二大的交易所 FTX
由于挪用用户资产亏空而暴雷,在短短几天时间内就宣告破产而倒闭。而实际最受伤的是资产托管在FTX未来得及提现的用户,他们存在FTX的资产基本上就归零了(参考 Mt.Gox 被黑客攻击而破产)。
这个事件让我大为震惊。在我之前的认知中觉得加密资产存放在Top 3中心化交易所内是问题不大的,以为“大而不倒”而值得信赖。现在 FTX “大但瞬间倒塌“ 的事实狠狠打脸了,完全颠覆了我的认知。不得不考虑将存放在交易所的资产提到钱包自己管理。
自己管理加密资产,第一件事就是找到一个足够安全的钱包。对于网络安全从业背景的我来说,听过太多太多软钱包被盗而损失资产的案例,所以首先排除了软件钱包,然后就把眼睛转向了硬件钱包。
对于硬件钱包,我之前是不懂的。近来自己研究了一番硬件钱包原理,分析了其潜在的安全隐患,并购买了硬件钱包真实体验了一把。没有实践就没有发言权,自己亲自体验了一遍之后得出结论:硬件钱包整体上安全隐患很小,谨慎使用的话可以安全保管好资金。
一、硬件钱包原理
在区块链里,私钥 = 加密资产。
私钥是钱包最最最重要的东西,有了私钥(而不管是谁拥有)就有了钱包100%的控制权,可以做任何事情(转账、授权、交易等)。
接下来围绕私钥介绍硬件钱包之所以被认为是“安全”的原理。
1.1 私钥生成
私钥是一个随机数(Bitcoin 256-bit),一般使用十六进制(0x0~0xF)表示。其范围是从1~2^256+1(115792089237316195423570985008687907852837564279074904382605163141518161494337),所以安全不用担心其他人可以猜出你的私钥。
而地址是由私钥单向推导出来的,而根据地址是不可能推导出来私钥(数学难题保证)。
另外,私钥其实是不太符合人类记忆模型的,所以就有了“助记词(mnemonic code)”来方便记忆:其实就跟以前地下工作者用的密码本一样,也跟“A for alpha, B for Brave, C for Charlie ”的原理类似。BIP39(Bitcoin Improvement Proposal 39)定义了2048个单词的列表,每个单词都有编号,然后把这些数字按照一些复杂的算法拼起来就可以还原出来私钥。
更多关于私钥、公钥、地址相关的细节内容可以参考我之前的文章。
-
秘钥和地址 —— 极简比特币教程
-
私钥——极简比特币教程
-
公钥——极简比特币教程
1.2 私钥存储
私钥在产生之后,其需要在钱包内存储,软件钱包的做法是加密私钥缓存在本地文件中,而硬件钱包的做法更安全:使用单独的安全芯片(SE)存储私钥,确保私钥不出芯片、不触网。
安全芯片主要是指安全单元 (Secure Element) , SE 是一台微型计算机,通过特有的安全元器件和芯片操作系统(COS)实现数据安全存储、加解密运算等功能。
对于硬件钱包来说,安全芯片的“安全”体现在:
-
私钥存在安全芯片。芯片内部逻辑无法被篡改;
-
私钥只进不出。芯片只提供写入私钥的接口,无读出私钥接口;
-
私钥在芯片内部加密存储。即使设备丢失,黑客也极难通过逆向工程破解出安全芯片内的私钥。
1.3 私钥使用
私钥存储在安全芯片内,但是钱包需要使用私钥对交易数据进行签名,以完成钱包业务功能。硬件钱包的做法是通过调用芯片接口(一般采用 I2C 或 SPI 通信),把需要签名的数据传输给安全芯片,安全芯片返回签名后的数据,实现了在不对外暴露私钥的情况下,完成交易签名,从而保证了私钥安全(这里只是简要描述签名流程,实际情况会有多次的鉴权验证等操作)。
如下为硬件钱包转账交易过程示意图,可以清晰的看到私钥是不会出芯片的。
二、硬件钱包安全隐患
硬件钱包在原理上整体可以确保私钥安全,但是并不是万无一失,加上使用过程中的人为因素,硬件钱包也并不“安全”。硬件安全使用过程中潜在的安全隐患:
-
钱包生产者作恶。如果钱包生产者想作恶,那么其有太多太多的方式可以获取到钱包私钥。如生成私钥使用伪随机算法、钱包内(安全芯片外)备份私钥、预留后门 等等。这完全取决于钱包生产者的动机,也是硬件钱包本身而言面临的最大风险。
-
钱包供应链攻击。钱包硬件组件、固件在生产、运输过程中都有可能被攻击,进而有可能导致私钥泄露。
-
助记词被盗。不管是离线纸质助记词,还是保存在电子设备上的助记词被盗,攻击者都可以轻易恢复出私钥,获取到钱包控制权;
-
助记词丢失。用户如果同时丢失了备份助记词 和 硬件钱包,那么就无法恢复钱包了,钱包中的资产也永久封印在了区块链上。
-
硬件钱包丢失。由于私钥存储在硬件钱包内,黑客有有两种方式攻击钱包:1. 破解钱包PIN码(不过一般只有10次尝试机会,连续错误10次硬件钱包会重置);2.拆解钱包,提取固件,使用逆向工程破解得到私钥(难度极大,成功可能性极低)。
-
授权非法合约。使用过程中,硬件钱包交互非法合约请求钱包某些权限,如果使用者不了解权限,或者未仔细查看申请的权限列表,则可能导致过度授权,导致钱包被盗。
-
助记词碰撞攻击。攻击者根据钱包遵守的BIP规范(如BIP39)做爆破碰撞攻击:如从BIP39的2048个单词池中随机选取12/18/24个单词,根据算法恢复对应的私钥,如果这种爆破碰撞到已存储资产的钱包,则可转移走钱包资产。这个攻击发生的可能性极低(所有类型的钱包都存在此中隐患),风险可以忽略不计。
三、硬件钱包安全使用建议
使用硬件钱包保管加密资产并不是绝对安全、可以一劳永逸。我们需要小心谨慎的挑选硬件钱包、备份助记词、安全使用,才能最大程度的保护好自己的加密资产。
-
挑选硬件钱包(原则)
-
使用安全芯片
-
软、硬件代码开源(部分,或全部)
-
钱包经CC认证,安全等级EAL5(及以上)
-
发行时间长、使用广泛、无安全事故的厂商
-
备份助记词(原则)
-
离线备份,纸质或专用设备
-
异地备份
-
打乱助记词顺序
-
混入自定义单词
-
手抄助记词,切勿截图、剪切板复制等
-
安全使用
-
专包专用,尤其是囤币一定使用单独硬件钱包
-
double check交互地址
-
谨慎授权
如果你无意去广泛、深入了解,可以从当前主流的硬件钱包Ledger、Trezor中进行选择。
四、写在最后
区块链世界的格言:Not your keys, not your coins。自己掌握钱包的私钥(助记词),才是真正拥有加密资产的所有权,才能远离中心化加密组织跑路、暴雷、被黑等事件给你带来的资产损失。
愿你在读完这篇文章之后有更足的底气使用硬件钱包,祝你好运!Enjoy blockchain.
(完)
评论