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.
(完)
文章末尾固定信息

