你們是否也有過這樣的困惑呢?既然去中心化錢包不會保存用戶錢包私鑰和密碼,那么這些信息又是從哪里導出的?難道是錢包服務商在「撒謊」?
哈哈,請不要慌張,去中心化錢包的確沒有保存你的錢包信息,這些信息是通過權(quán)限審核后從手機中的數(shù)據(jù)庫導出的,這個數(shù)據(jù)庫有一個專業(yè)的術(shù)語叫「沙盒」。
什么是沙盒?
沙盒(Sandbox)是一種通過隔離從而減輕因系統(tǒng)故障或軟件漏洞造成影響的安全機制,運用于測試未經(jīng)驗證的代碼或不受信任的程序,因為在沙盒環(huán)境下進行測試,不會損害主機或者操作系統(tǒng),并且沙盒會嚴格限制這些軟件,通常不允許或提供非常有限的讀取數(shù)據(jù)或網(wǎng)絡訪問權(quán)限。簡單來說,沙盒是能保證信息安全的一種機制。
沙盒應用廣泛,不僅運用于計算機安全領域,在我們生活中處處也有它的影子。比如監(jiān)管沙盒(Regulatory Sandbox),政府在嚴控風險的前提下,鼓勵金融科技等企業(yè)進行創(chuàng)新,去年 9 月全國第一個區(qū)塊鏈監(jiān)管沙盒在杭州成立。再比如沙盒游戲,比較典型的就是 Minecraft。
沙盒運作流程
我們以 iOS 系統(tǒng)為例,iOS 在設計之初就決定將每個 APP 的存儲能力都限制在對應的沙盒中,APP 只能在系統(tǒng)為其創(chuàng)建的文件庫中讀取數(shù)據(jù)。在高版本的 iOS 中權(quán)限有所開放,當然這是在用戶給予授權(quán)的前提下。
上圖為蘋果官方 APP 沙盒文檔圖片,經(jīng)過審核的應用沙盒文件都有以上三個部分:Bundle、Data 和 iCloud。Bundle 為安裝目錄,安裝完成后是不可以進行修改的;iCloud 即為可被云備份下的文檔;應用的數(shù)據(jù)信息存放在 Data 這個目錄下。
用戶創(chuàng)建導入錢包和導出錢包信息兩個操作步驟為例,當用戶錢包密碼設置和備份助記詞步驟完成時,應用會自動將助記詞通過用戶設置好的密碼進行加密(Encrypt),生成 Keystore 最后按照錢包的通用唯一識別碼(UUID )寫入對應的沙盒文件中。
下圖是 MEW 用文字的形式來具體展示了創(chuàng)建錢包的流程,用密碼加密完成后,同樣也存入設備中的「Local secure vault」,也就是沙盒。
而當用戶需要導出錢包信息時,需要輸入當時設置的密碼對加密文件進行解密(Decrypt),解密成功則執(zhí)行后續(xù)對應操作,解密失敗則會提示用戶密碼不正確。
沙盒的安全性
在正常情況下,沙盒是安全的。即使你手機上有安裝一些來源不明的軟件,也不會對你其他應用的數(shù)據(jù)安全造成影響。iOS 和 Android 都會采取相同的處理方式:給每個應用單獨分配一個盒子,每個盒子之間是不允許互相訪問的。惡意軟件也是一個應用,在正常的系統(tǒng)環(huán)境下,是沒有能力去入侵其他應用的沙盒。
但如果你的手機越獄或者 root 過,手機系統(tǒng)的底層相當于處于開放狀態(tài),應用可以通過向系統(tǒng)申請調(diào)用權(quán)限,一旦獲得權(quán)限,就能任意訪問手機里的所有數(shù)據(jù)信息,包括任意應用沙盒中存儲的文件,使得沙盒的安全環(huán)境完全被破壞。
今年 9 月底蘋果系統(tǒng)就爆出無法修復的一個漏洞,漏洞可以導致舊手機可以被越獄,如果用戶因此而進行越獄是非常不安全的行為,可能因此造成文件資料或財產(chǎn)的丟失,imToken 也強烈建議存有代幣資產(chǎn)的手機千萬不要進行越獄或者 root 操作。
銷毀和云備份的問題
可能用戶又提問了:為什么不干脆直接出一個備份完助記詞銷毀的功能?這樣也不怕手機被越獄或 root 了。
為什么不能銷毀這些信息,這就要回到錢包最初的轉(zhuǎn)賬原理說起了。我們知道轉(zhuǎn)賬是需要輸入密碼進行驗證最后通過私鑰來簽名授權(quán)的,如果你的手機里都沒有這些信息了,那么你還能正常發(fā)起轉(zhuǎn)賬嗎?這個過程和導出錢包信息類似,只不過一個使用錢包信息授權(quán)交易一個是進行錢包備份。
如果手機沙盒里沒有存儲錢包信息,那你的錢包將不能正常使用,無法發(fā)起轉(zhuǎn)賬操作。
一般這種情況出現(xiàn)在蘋果手機 iCloud 云備份下來的 imToken APP 或者經(jīng)過深度清理的安卓手機。以 iOS 為例,imToken 在產(chǎn)品設計時做了一個設置,將錢包信息排除在 iCloud Container 之外。由于 iCoud 經(jīng)常遭受黑客的攻擊,加上用戶對于自己 iCould 賬戶安全保護做得不到位,為此導致的用戶隱私泄露事件屢見不鮮。對于直接關系到用戶財產(chǎn)安全的相關信息,更不應該同步在云端的服務器中。遇到上述這種情況,只需要將私鑰或助記詞等信息重新導入錢包就可以正常使用。
寫在最后
手機系統(tǒng)中的沙盒確保我們在使用相關 APP 進行轉(zhuǎn)賬時信息不發(fā)生泄漏,關于數(shù)字錢包的安全,最重要的還是要回到錢包私鑰的備份以及后續(xù)的保管方式中,說白了最終都回到「人」的問題上。如果我們不打破這個正常的系統(tǒng)環(huán)境,如果我們能夠按照要求物理備份好錢包信息并將它保存在安全的地方,那么除了你自己,誰還可以觸及到你的資產(chǎn)呢?