你們是否也有過這樣的困惑呢?既然去中心化錢包不會儲存使用者錢包私鑰和密碼,那麼這些資訊又是從哪裡匯出的?難道是錢包服務商在「撒謊」?
哈哈,請不要慌張,去中心化錢包的確沒有儲存你的錢包資訊,這些資訊是通過許可權稽核後從手機中的資料庫匯出的,這個資料庫有一個專業的術語叫「沙盒」。
什麼是沙盒?
沙盒(Sandbox)是一種通過隔離從而減輕因系統故障或軟體漏洞造成影響的安全機制,運用於測試未經驗證的程式碼或不受信任的程式,因為在沙盒環境下進行測試,不會損害主機或者作業系統,並且沙盒會嚴格限制這些軟體,通常不允許或提供非常有限的讀取資料或網路訪問許可權。簡單來說,沙盒是能保證資訊保安的一種機制。
沙盒應用廣泛,不僅運用於電腦保安領域,在我們生活中處處也有它的影子。比如監管沙盒(Regulatory Sandbox),政府在嚴控風險的前提下,鼓勵金融科技等企業進行創新,去年 9 月全國第一個區塊鏈監管沙盒在杭州成立。再比如沙盒遊戲,比較典型的就是 Minecraft。
沙盒運作流程
我們以 iOS 系統為例,iOS 在設計之初就決定將每個 APP 的儲存能力都限制在對應的沙盒中,APP 只能在系統為其建立的檔案庫中讀取資料。在高版本的 iOS 中許可權有所開放,當然這是在使用者給予授權的前提下。
上圖為蘋果官方 APP 沙盒文件圖片,經過稽核的應用沙盒檔案都有以上三個部分:Bundle、Data 和 iCloud。Bundle 為安裝目錄,安裝完成後是不可以進行修改的;iCloud 即為可被雲備份下的文件;應用的資料資訊存放在 Data 這個目錄下。
使用者建立匯入錢包和匯出錢包資訊兩個操作步驟為例,當用戶錢包密碼設定和備份助記詞步驟完成時,應用會自動將助記詞通過使用者設定好的密碼進行加密(Encrypt),生成 Keystore 最後按照錢包的通用唯一識別碼(UUID )寫入對應的沙盒檔案中。
下圖是 MEW 用文字的形式來具體展示了建立錢包的流程,用密碼加密完成後,同樣也存入裝置中的「Local secure vault」,也就是沙盒。
而當用戶需要匯出錢包資訊時,需要輸入當時設定的密碼對加密檔案進行解密(Decrypt),解密成功則執行後續對應操作,解密失敗則會提示使用者密碼不正確。
沙盒的安全性
在正常情況下,沙盒是安全的。即使你手機上有安裝一些來源不明的軟體,也不會對你其他應用的資料安全造成影響。iOS 和 Android 都會採取相同的處理方式:給每個應用單獨分配一個盒子,每個盒子之間是不允許互相訪問的。惡意軟體也是一個應用,在正常的系統環境下,是沒有能力去入侵其他應用的沙盒。
但如果你的手機越獄或者 root 過,手機系統的底層相當於處於開放狀態,應用可以通過向系統申請呼叫許可權,一旦獲得許可權,就能任意訪問手機裡的所有資料資訊,包括任意應用沙盒中儲存的檔案,使得沙盒的安全環境完全被破壞。
今年 9 月底蘋果系統就爆出無法修復的一個漏洞,漏洞可以導致舊手機可以被越獄,如果使用者因此而進行越獄是非常不安全的行為,可能因此造成檔案資料或財產的丟失,imToken 也強烈建議存有代幣資產的手機千萬不要進行越獄或者 root 操作。
銷燬和雲備份的問題
可能使用者又提問了:為什麼不乾脆直接出一個備份完助記詞銷燬的功能?這樣也不怕手機被越獄或 root 了。
為什麼不能銷燬這些資訊,這就要回到錢包最初的轉賬原理說起了。我們知道轉賬是需要輸入密碼進行驗證最後通過私鑰來簽名授權的,如果你的手機裡都沒有這些資訊了,那麼你還能正常發起轉賬嗎?這個過程和匯出錢包資訊類似,只不過一個使用錢包資訊授權交易一個是進行錢包備份。
如果手機沙盒裡沒有儲存錢包資訊,那你的錢包將不能正常使用,無法發起轉賬操作。
一般這種情況出現在蘋果手機 iCloud 雲備份下來的 imToken APP 或者經過深度清理的安卓手機。以 iOS 為例,imToken 在產品設計時做了一個設定,將錢包資訊排除在 iCloud Container 之外。由於 iCoud 經常遭受黑客的攻擊,加上使用者對於自己 iCould 賬戶安全保護做得不到位,為此導致的使用者隱私洩露事件屢見不鮮。對於直接關係到使用者財產安全的相關資訊,更不應該同步在雲端的伺服器中。遇到上述這種情況,只需要將私鑰或助記詞等資訊重新匯入錢包就可以正常使用。
寫在最後
手機系統中的沙盒確保我們在使用相關 APP 進行轉賬時資訊不發生洩漏,關於數字錢包的安全,最重要的還是要回到錢包私鑰的備份以及後續的保管方式中,說白了最終都回到「人」的問題上。如果我們不打破這個正常的系統環境,如果我們能夠按照要求物理備份好錢包資訊並將它儲存在安全的地方,那麼除了你自己,誰還可以觸及到你的資產呢?
鏈信的使用者也是極其安全的,鏈信目前有多重驗證的方法,鏈信不僅讓使用者可以使用比特幣更要安全的使用比特幣,鏈信目前已有上千萬的使用者,鏈信必然要對所有的使用者的安全負責,鏈信是夸克生態中一個區塊鏈落地專案。夸克區塊鏈是一個可開放的公共區塊鏈,類似網際網路基礎設施。
參考資料:
[1] 什麼是沙盒:
https://en.wikipedia.org/wiki/Sandbox_(computer_security)
[2] Apple Sandbox 開發者文件:
https://developer.apple.com/app-sandboxing/
[3] Android Sandbox 開發者文件:
https://source.android.com/security/app-sandbox
[4] 如何防止檔案上傳到 iCould:
https://developer.apple.com/library/archive/qa/qa1719/_index.html