定義加密錢包安全性的“三有一無”要素
一、加密錢包的必要性
近年來區塊鏈技術的迅速發展,使得加密資產逐漸走入大眾的視線。目前2000多億美元的加密資產市值,超過2000種的加密資產,側面反映著全球加密資產規模正在高速增長。
英國一名早期挖礦者 “ 丟失 ”7500 枚比特幣,如今高達 3 億多人民幣。
2009年英國威爾士一名32歲的IT工作者詹姆士•豪威爾斯參與電腦挖比幣。2013年無意間扔掉了硬碟,其宣稱意外丟失的硬碟中儲存著7500枚比特幣私鑰,當前市值高達3億多人民幣,至今尚未尋回。基於早期加密資產沒有適合的儲存方式,導致儲存在硬碟的私鑰也存在丟失的風險。
加密資產儲存成為加密資產投資者不可忽視的需求。
2018年9月份,人民網轉載一篇《加密資產交易平臺再現被盜,安全問題成隱患》文章。近年來,已經發生了眾多的盜幣事件,主要集中在加密資產管理平臺被攻擊、智慧合約漏洞、個人金鑰丟失或竊取等方面。如今個人金鑰如何儲存成為加密資產投資者不可忽視的問題。 如果準備長期投資加密資產,建議投資者將所持幣種存在軟體錢包中,金額較大的,則要準備硬體錢包,即冷錢包,以防止交易平臺被盜竊而帶來損失。
加密資產的快速發展激發了對加密資產的安全儲存需求,加密錢包也應運而生。為了方便使用者記錄地址和私鑰,官方會同時釋出全節點錢包;同時有些第三方公司為了進一步提高使用者體驗,相繼開發了加密錢包軟體,它們並不同步所有的區塊資料,因此稱其為輕錢包。這兩種數字錢包都屬於熱錢包。
冷錢包也稱為硬體錢包,由於私鑰不接觸網路,相對安全性較高。不過由於業務場景的快速迭代以及推廣需求,無論熱錢包還是冷錢包都會有一些安全隱患會被忽視。
二、軟體錢包的主要風險
軟體錢包可理解為下載的錢包APP,並可直接用於轉賬加密資產的軟體。一個加密錢包軟體的使用,包含了以下三點安全要素。
1. 網路安全
從軟體啟動到進行交易的一套完整的過程,其中涉及業務的過程中需要連線網路,安全資料等都存在一定的風險。
2. 軟體功能的核心資料安全
傳統軟體的功能如核心程式碼未加密,軟體自身無校驗,中間人資料劫持等。
3. 業務場景安全
針對錢包軟體的獨有業務場景,如助記詞的不安全儲存,交易密碼設定弱口令,貨幣價格走勢資料被替換等也將會給使用者在使用錢包的安全上造成很大的危害。
資料來源:360安全
由於軟體錢包自身安全效能的不完善,以及頻頻出現黑客攻擊事件。硬體錢包逐步成為了很多加密資產投資者青睞的資產儲存產品。
三、硬體錢包的安全性要素
硬體錢包是一種實體裝置,私鑰儲存在裝置內的受保護區域中。到目前為止硬體錢包還沒有發生過重大錢包漏洞或者大規模資產丟失事件。相對而言,硬體錢包安全係數比軟體錢包要高。 對此,密深 科技 首席科學家 郭偉基認為,一款真正意義上安全的錢包 主要 包涵了 三方面的安全性 要素 : 網路 隔離,系統完整性保護,錢包種子保密。
1.網路 隔離
即是給私鑰建立了一個隔離環境。現有的手機和電腦與外界通過網路連線,私鑰很容易遭到黑客從網路發動的遠端攻擊,這時候就需要硬體錢包專門保管私鑰或者錢包種子。
2.系統完整性 保護
指的是硬體錢包系統能夠保護自身關鍵部件不受非法篡改。任何系統都存在被攻擊的可能性,在攻擊發生的時候,具備系統完整性保護能力的硬體錢包能夠發現攻擊並作出相應的安全響應。
目前針對系統完整性保護缺失的攻擊主要有供應鏈攻擊和邪惡女傭攻擊。所謂供應鏈攻擊,指的是硬體錢包在生產或者運輸過程中被他人修改過,植入惡意軟體或者篡改系統邏輯。舉個例子,如果一款基於安卓系統的錢包使用了安卓提供的隨機數產生器,而該隨機數產生器被更換為黑客可以預測的偽隨機數產生器,那麼該錢包產生的全部種子、私鑰都是黑客可以預測的。而黑客要完成收割,甚至都不需要受害人的錢包聯網。如果缺乏系統完整性保護,不能發現此類攻擊,使用者的資金就有被完全收割的風險。
邪惡女傭攻擊,英文叫做Evil Maid Attack,主要指的是錢包裝置可能短暫被他人控制。如果裝置缺乏系統完整性保護,那麼這段時間就有可能被利用來植入惡意軟體,例如底層邏輯被替換掉,實際轉賬地址變為黑客指定的地址,或者在收到某些指令後顯示錢包種子的助記詞,等等。
3.錢包種子保密
網路隔離和系統完整性保護提供的安全很重要,但仍然是不夠的。如果攻擊者拿到了物理裝置,還要保證攻擊者無法從裝置裡提取錢包種子資訊,而一般的軟體錢包或者類軟體錢包很難保障這一點。
這三個安全效能都是相對普遍適用的,不管什麼樣的錢包系統,都可以用這三條標準去衡量其安全性。軟體錢包由於其先天限制,很難滿足這些要求。相比之下,硬體錢包則具備比較好的安全基礎。
四、硬體錢包的分類和安全性分析
硬體錢包的種類也是五花八門,並不是所有的硬體錢包都能很好地滿足全部三條標準。我們可以從硬體裝置自身特點入手給硬體錢包做個分類並分析其安全性。
首先我們可以把硬體錢包 分為安卓硬體錢包和晶片硬體錢包。 安卓硬體錢包顧名思義,可以理解為一個安卓手機,去掉不必要的部件,加以軟體改造後專門服務於錢包用途。晶片硬體錢包則是國外市場的主流產品,主要是在晶片系統上直接程式設計錢包核心邏輯,以把錢包種子保管在晶片內部作為其安全特色。
1.安卓硬體錢包安全性分析
硬體錢包一般都能做到網路隔離,但是安卓不具備系統完整性保護,這就使得它很容易遭受供應鏈攻擊以及邪惡女傭攻擊。另外,安卓系統本身如果沒有做安全性加固,也會出問題。
例如在今年七月的看雪安全峰會上,某款安卓硬體錢包就慘遭破解。該錢包硬體基於MTK方案,使用安卓6.0系統。MTK系統有一個已知的USB漏洞在該錢包中沒有修復,安全研究人員就從USB介面攻入系統,提升許可權,修改系統部件,實際上等於破解了這款安卓硬體錢包,因為後面能做的事情就很多了:包括可以修改隨機數產生器,提取錢包種子檔案並實行彩虹攻擊或者字典攻擊,修改底層轉賬地址等等。由於缺乏系統完整性保護,這些修改很難被發現,不知情的受害者繼續使用的話就會遭受損失。
另外,這款安卓硬體錢包的錢包種子保密性也成問題。安卓的檔案系統其實是開放的,在技術人員手裡,拆開裝置,取得內建儲存器就可以載入檔案系統,提取儲存錢包種子的檔案。雖然這個檔案一般會加密,但是很多使用者不會選擇複雜的密碼,可能就是4位或者6位數字,很容易在普通計算機上完成窮舉破解,這個弱點導致這款錢包無法抵抗邪惡女傭攻擊。
所以我們單單用之前的三條安全標準衡量的話,這款安卓硬體錢包僅僅做到了網路隔離 , 但可以通過對安卓硬體錢包做一些修改,以增加其錢包的安全性。
這就是所謂的 晶片安卓硬體錢包,即把 專用 晶片放進安卓錢包 裝置 裡面 ,用於保管錢包種子 , 這 樣提高了 錢包種子的保密性,就算 他人 拿到裝置 也 不能直接獲得種子 。 通過這種方式可以滿足錢包種子加密的安全標準,但即系統完整性保護的標準則仍然沒有達到。這主要是由於安卓系統的先天不足,短期內很難修正。
在這種情況下,晶片安卓硬體錢包的安全性就依賴於郭偉基提出的的“ 系統攻防假設 ” 。 假設錢包系統具備極強的抗攻擊效能,無法被攻擊或者破解。具體到安卓硬體錢包,就是說雖然欠缺系統完整性保護,但是假設安全防護做得足夠好,攻擊者便無法篡改系統。
那麼這個假設到底有多可靠呢?看個案例就明白了。
網路安全大佬John McAfee釋出了Bitfi硬體錢包。該錢包也是基於安卓系統。McAfee自信滿滿,認為以自己的安全攻防實力,可保Bitfi無虞,“固若金湯”,並在2018年7月25日懸賞10萬美金“尋求”黑客攻擊。
結果不到一週,就被一位名叫OverSoft的荷蘭安全研究人員獲得Bitfi錢包的的根訪問許可權;並被名為Saleem Rashid的15歲少年在錢包上玩上了《DOOM》遊戲。後來又有安全專家成功傳送簽名交易,等於是遭到了完全的破解。
以McAfee在安全江湖的地位,這基本上宣告了所有以系統攻防假設替代系統完整性保護的錢包系統的安全性缺陷。
2.晶片 硬體 錢包的安全性分析
晶片硬體錢包擁有獨立的SOC晶片,所有的硬體系統都在SOC晶片上運作。外觀一般只有螢幕和簡單的按鈕。螢幕顯示的保證是展示資料是真實的,簡單按鈕確認交易操作。
內部系統中裝載了引導韌體和業務韌體。引導韌體是基礎設計,出廠時已經定好,不能篡改,負責業務韌體的完整性檢查以及升級;業務韌體負責具體的業務邏輯,可以升級以支援更多幣種或者修復安全隱患,修改需要簽名確認。
在其安全性分析當中可以看到:
第一條,網路隔離。這條一般都能滿足,問題不大。
第二條,系統完整性保護。這條通過對業務韌體進行數字簽名驗證完成。引導韌體可以檢查簽名以決定是否載入執行業務韌體,任何篡改都會被發現。
第三條,錢包種子保密。晶片硬體錢包一般把種子存放在晶片內部的快閃記憶體區域,常規手段無法讀取。在使用的時候,私鑰可能會在記憶體中短暫地出現,但是用完一般都會立刻刪除並且用隨機資料覆蓋掉,這就提供了比較好的保密性。基於這三條標準,晶片硬體錢包相比軟體錢包和安卓硬體錢包都有更高的安全性。
總結來看,錢包系統的安全性可以歸結為“三有一無”,三有即必須具備網路隔離、系統完整性保護、錢包種子保密這三條安全特性。一無,就是“無系統攻防假設”,特意指出錢包系統的安全性不能建立在系統攻防假設上,尤其不能以系統攻防假設替代系統完整性保護。