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