不要等資產被掏空後 才去了解如何給錢包密鑰「加個安全鎖」...
發表於 2023-01-29 10:47 作者: CertiK中文社區
在Web3.0世界裏,私鑰和助記詞的安全是最重要的。一旦有了它們,人們可以隨意訪問一個人的數字資產,因此它們的丟失或被盜可能會導致用戶的財產受到巨大損失。
隨着Web3.0領域中移動錢包應用程序的興起,了解保護這些密鑰的各種安全機制就顯得至關重要了。
本文總結了Web3.0移動錢包應用程序提供的不同級別的安全保護。通過對當下流行的九個开源移動錢包進行研究,我們從簡單的密碼保護到硬件支持的可信執行環境等方面探討了這幾個流行錢包在實踐中是如何實現對用戶私鑰或助記詞的安全保護的。通過研究,我們發現其中一些安全保護機制可以有效地解決一些常見的私鑰竊取攻擊。然而我們也發現,來自系統層面的威脅(如利用root等)卻在很大程度上被忽略了。
錢包安全核心:私鑰保護
移動錢包應用程序中最重要的的數據就是私鑰和助記詞。
因此,移動錢包應用程序面臨的最嚴重的威脅相應也就是他們的私鑰或助記詞遭泄漏。爲了適當緩解這種威脅,一個設計良好的移動錢包應用程序應該有一個系統的方法來保障私鑰在存儲或者使用階段的安全性。
在上表中,我們總結了Web3.0錢包在安卓移動設備上保護用戶私鑰所使用的常見做法。該表對在安卓移動設備上的錢包用於私鑰和助記詞保護的通用做法進行了總結。每個級別的安全做法都是按照安全級別的提高而按順序列出的,並且包括了其不能完全解決的相應威脅。
通過研究九個流行的开源Web3.0錢包,我們可將它們劃分成不同的安全級別,並更好地了解這些做法在現實世界中的應用方式。
下圖也顯示了這些移動錢包應用程序的名稱和它們在谷歌遊戲商店的下載次數。
錢包安全:從S0到S4
接下來,我們將簡要介紹每種安全做法,以及它們在不同應用程序上的實施方式。其中也包括對每種做法的優點和缺點的討論,以及分析攻擊者如何利用不同的攻擊載荷繞過這些緩解措施。
S0(無存儲保護)
S0級的安全做法是將所有用戶的私人信息儲存在應用程序的存儲空間內,包括私人密鑰和助記詞等。這通常可以防止非特權用戶或應用程序直接訪問存儲文件。
然而,S0級保護根本不對存儲文件進行加密,這意味着用戶的祕密以純文本形式存在於存儲文件中。任何有特權的用戶或應用程序都可以訪問這個存儲文件,並提取用戶的私鑰來完全控制用戶的錢包。
從Protobuf文件恢復比特幣錢包
值得注意的是,在安卓設備上獲得特權權限並不是一件不可能的事。除了用戶主動選擇對其設備進行root,並進一步被惡意應用程序濫用外,網絡犯罪分子利用漏洞獲得權限也是安卓設備上的一個新威脅。
例如,2021年,Lookout威脅實驗室的安全研究人員發現了安卓惡意軟件 “AbstractEmu”。它利用多個漏洞獲得了root權限,並與軟件應用互動。還有360 Alpha Lab的多份報告也顯示了在安卓設備上實現一鍵式遠程攻擊以獲得root權限的比人們想象得更容易。
從Sqlite數據庫恢復簡單的比特幣錢包
爲了證明S0級保護的潛在漏洞,我們進行了一個測試,在一個被root的安卓設備上安裝了當下流行的錢包,如Bitcoin Wallet和Simple Bitcoin。通過root權限,我們能夠輕松地讀取這些錢包的密鑰存儲文件,並提取用戶的助記詞組,如上圖所示。
S1(密碼加密)
S1級別保護錢包安全的做法則是使用用戶定義密碼來加密包含私鑰和助記詞短語的存儲文件,這可以防止非特權用戶或應用程序直接訪問存儲文件。然而,當應用程序啓動時,存儲文件必須被解密,有特權的用戶或應用程序可以趁機侵入錢包並截獲加密密碼。這可以讓他們在獲得加密後的密鑰文件後在本地進行解密或者直接進行暴力破解。
爲了證明使用S1級保護具有潛在漏洞,我們進行了一個測試:在一個被root的安卓設備上安裝了开源錢包Samourai。使用Frida,我們能夠在應用程序啓動時截獲加密密碼,並使用該密碼來進一步訪問用戶的私鑰和助記詞。值得注意的是,盡管Samourai錢包試圖檢測設備是否被root,但在我們的實驗中該檢測行爲並未生效。
Samourai應用注入攻擊演示
S2[Keystore(Trustzone)]
爲了防止密鑰存儲文件的加密密鑰被攻擊者在內存中被截獲,一些錢包應用程序,如Metamask,會使用Android Keystore系統來生成和使用加密密鑰。
Keystore系統由一個可信的應用程序來實現,該應用程序在安卓系統的可信執行環境(TEE)中運行。這個環境與主操作系統隔離,並受到基於硬件的安全功能的保護。通過使用Keystore系統,存儲文件的加密或解密發生在TEE中,降低了加密密鑰被泄露的可能性。
然而,Keystore系統並不提供區塊鏈相關的加密操作API,如交易籤名或驗證。因此,錢包仍然需要在內存中解密用戶的私鑰進行相關籤名驗籤操作,這也令它容易受到特權級攻擊者的攻擊,比如黑客可以轉儲應用程序的內存並提取私鑰。
S3[Keystore(Trustzone)+root檢測]
爲了提高S2級保護的安全性,一些錢包應用程序通過檢查移動設備是否已被root來更進一步保護用戶資產。這種檢測利於確保設備的完整性,因爲被root的設備更容易被攻擊者利用。
例如,Airgap Vault錢包使用Keystore系統來保護用戶的加密密鑰,但也會在運行時檢查設備是否已被root。如果發現設備被root,Airgap Vault錢包會拒絕運行,最大限度地提高保護水平。這一額外的安全層提供了額外的保護,防止潛在的設備被惡意root的風險。
S4(專用可信執行環境 TA Trusted Application)
移動錢包應用程序中最高級別的安全實踐是使用專用的Trusted Execution Environment(TEE)可信執行環境來存儲和處理私鑰信息。這是通過在設備上安裝一個專門的基於TEE的可信應用(TA)來實現的。
例如,這種保護方法目前被三星區塊鏈應用程序在某些高端三星智能手機上使用。這種方法提供了額外的保護,因爲私鑰信息存儲在TEE中並由僅在TEE中被使用,TEE與主操作系統隔離,只能由供應商信任的代碼訪問。即使是有特權的用戶或應用程序也不能直接訪問這些信息。然而,這種方法的局限性在於,它要求智能手機制造商爲錢包开發者提供特定的接口來使用TEE。
移動錢包應用安全
在S3級別的保護中,我們提到root檢測可以和Keystore系統一起使用,以保護用戶的私人信息。請注意,我們認爲root檢測是確保設備保持基本完整性的一個重要方面,應該與任何安全實踐結合起來實施,以確保更高水平的保護。
然而,重要的是:root檢測技術可能有所不同,且不一定有效。例如,雖然Airgap Vault r我們的測試設備已經被root,但Samourai錢包在相同的測試環境下並未成功檢測到設備被root。
此外,這項研究只包括移動設備上的軟件錢包應用程序,沒有任何額外的硬件實現。基於硬件的Web3.0錢包和冷錢包安全都提供了有吸引力的安全功能,它們都值得單獨寫一篇文章來詳細介紹。
在實踐中,我們相信移動錢包應用程序由於其簡單易用的特性將繼續增加其用戶群。但是我們認爲,錢包开發者應該盡可能利用Trustzone設計(大多數安卓移動設備上都有),爲錢包用戶提供最大程度的安全。
總結
在本文中,CertiK的專家團隊分析了Web3.0錢包應用程序在移動設備上面臨的威脅,特別是私人密鑰的存儲和相關的潛在威脅。通過對九個不同的流行錢包應用程序的測試及研究,CertiK的專家團隊揭示了每個應用程序所採用的安全級別,且發現大多數主要的錢包是使用硬件支持的密鑰保護技術來解決密鑰存儲問題的,如安卓上的Keystore系統。
然而我們也注意到,大多數錢包沒有檢查設備完整性,例如是否被root,這可能導致在內存中執行私鑰操作時出現安全問題。除了我們在本文中總結的五個級別的安全實踐外,我們認爲錢包开發者還應該注意如何在安卓系統上充分利用Trustzone設計,以更好地減輕常見風險。我們將在今後的文章中繼續介紹這個話題,並協助开發者更好地保護用戶的資產。
標題:不要等資產被掏空後 才去了解如何給錢包密鑰「加個安全鎖」...
地址:https://www.coinsdeep.com/article/8872.html
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。