硬體錢包的種類也是五花八門,並不是所有的硬體錢包都能很好地滿足全部三大標準。我們可以從硬體設備自身特點入手,為硬體錢包做個分類,並分析其安全性。
首先我們可以把硬體錢包分為安卓硬體錢包和晶片硬體錢包。安卓硬體錢包顧名思義,可以理解為一個安卓手機,去掉不必要的組件,加以軟體改造後專門服務於錢包用途。晶片硬體錢包則是國外市場的主流產品,主要是在晶片系統上直接編程錢包核心邏輯,以把錢包種子保管在晶片內部作為其安全特色。
安卓硬體錢包安全性分析
硬體錢包一般都能做到網路隔離,但是安卓不具備系統完整性保護,這就使得它很容易遭受供應鏈攻擊以及邪惡女傭攻擊。另外,安卓系統本身如果沒有做安全性加固,也會出問題。
例如在今年七月的看雪安全峰會上,某款安卓硬體錢包就慘遭破解。該錢包硬體基於MTK方案,使用安卓6.0系統。MTK系統有一個已知的USB漏洞在該錢包中沒有修復,安全研究人員就從USB接口攻入系統,提升權限,修改系統組件,實際上等於破解了這款安卓硬體錢包,因為後面能做的事情就很多了:包括可以修改隨機數生成器,提取錢包種子文件並實行彩虹攻擊或者字典攻擊,修改底層轉帳位址等等。由於缺乏系統完整性保護,這些修改很難被發現,不知情的受害者繼續使用的話,就會遭受損失。
另外,這款安卓硬體錢包的錢包種子保密性也成問題。安卓的文件系統其實是開放的,在技術人員手裡,拆開設備,取得內置儲存器就可以加載文件系統,提取儲存錢包種子的文件。雖然這個文件一般會加密,但是很多用戶不會選擇複雜的密碼,可能就是4位或者6位數字,很容易在普通電腦上完成窮舉破解,這個弱點導致這款錢包無法抵抗邪惡女傭攻擊。
所以我們單單用之前的三大安全標準衡量的話,這款安卓硬體錢包僅僅做到了網路隔離,但可以透過對安卓硬體錢包做一些修改,以增加其錢包的安全性。
這就是所謂的晶片安卓硬體錢包,即把專用晶片放進安卓錢包設備裡面,用於保管錢包種子,這樣就提高了錢包種子的保密性,就算他人拿到設備,也不能直接獲得種子。透過這種方式可以滿足錢包種子加密的安全標準,但即系統完整性保護的標準則仍然沒有達到。這主要是由於安卓系統的先天不足,短期內很難修正。
在這種情況下,晶片安卓硬體錢包的安全性就依賴於郭偉基提出的的「系統攻防假設」。假設錢包系統具備極強的抗攻擊性能,無法被攻擊或者破解。具體到安卓硬體錢包,就是說雖然欠缺系統完整性保護,但是假設安全防護做得足夠好,攻擊者便無法篡改系統。
那麼這個假設到底有多可靠呢?看個案例就明白了。
網路安全大佬John McAfee發佈了Bitfi硬體錢包。該錢包也是基於安卓系統。McAfee自信滿滿,認為以自己的安全攻防實力,可保Bitfi無虞,「固若金湯」,並在2018年7月25日懸賞10萬美金「尋求」駭客攻擊。
結果不到一周,就被一位名叫OverSoft的荷蘭安全研究人員,獲得Bitfi錢包的的訪問權限;並被名為Saleem Rashid的15歲少年,在錢包上玩上了《DOOM》遊戲。後來又有安全專家成功發送簽名交易,等於是遭到了完全的破解。
以McAfee在安全江湖的地位,這基本上宣告了所有以系統攻防假設替代系統完整性保護的錢包系統的安全性缺陷。
本文為巴比特資訊授權刊登,原文標題為「定義加密錢包安全性的『三有一無』要素」