您知道區塊鏈錢包是如何管理私鑰的嗎?作為錢包團隊,比特派文浩今天將專門針對這個問題給解答一下。
首先,說說電腦運行的(Windows、MacOS、Linux)錢包,由於處於移動網際網路時代,電腦端錢包的開發團隊並不多,除了比特幣官方的bitcoin-core核心全節點錢包,曾經還有過一款非常流行的叫Multibit的桌面錢包(後來該產品被賣給KeepKey之後就基本上銷聲匿跡了),以及比太桌面版錢包。
由於桌面操作系統的特點:無沙盒保護,任何應用都能訪問其它應用的數據。因此,雖然一開始bitcoin-qt的私鑰是明文存儲在硬盤上的wallet.dat文件中的,但發展到今天,電腦上的錢包一般都會將私鑰加密存儲,否則,一不小心安裝個釣魚軟體,您的幣說不定就沒了。
再說說在線錢包(網站),以blockchain.info為例,他們的方案是將用戶在瀏覽器裡生成的私鑰使用用戶自己的密碼加密存儲在服務器上,這樣服務器管理員由於不知道您的密碼,也就無法得知您的私鑰(除非暴力破解),以此來保障安全。
手機錢包則不同,由於移動端操作系統(iOS、Android)採用了與桌面操作系統完全不同的安全設計:全方位的沙盒保護,任何應用之間都不能互相訪問數據,比如說,微信就不能訪問微博的數據,反過來微博也不能直接訪問微信的數據。
由於手機操作系統有著全方位的沙盒保護,手機錢包一般都會採用不一樣的私鑰存儲方案,大部分手機錢包(比如說bitcoin.org上推薦的那些主流比特幣錢包)在Android系統上都採用的是將私鑰明文存儲在應用程序私有空間的方案,而在iOS系統上,這些手機錢包又是選擇了將私鑰明文存儲在手機本地鑰匙串(Local KeyChain)的方案。一聽到明文私鑰這個詞,很多人可能會嚇了一大跳,但這麼多手機錢包都採用了這種方案,又是為什麼呢?
原因其實很簡單,這是因為區塊鏈錢包領域的主流開發者在這一點上已經達成了普遍的共識,即「錢包的安全不會超出其運行環境」,比如說:
1.電腦錢包的安全不會超出電腦操作系統的安全,比如說,您的電腦如果中了個「惡意按鍵精靈」類型的軟體,它完全可以在您輸入密碼發幣的時候盜取您的加密私鑰及您所輸入的密碼;
2.在線錢包的私鑰是加密存儲在雲端的,這其實只能保證雲端設備的管理員不能獲得您的私鑰(當然,如果您使用的是簡單密碼的話,暴力破解其實很容易),但如果您上網時使用的瀏覽器不安全,或者安裝了一些惡意瀏覽器插件,其實也形同虛設;
3.手機錢包的安全性也要依賴於手機操作系統的安全,只要您的手機系統沒有被攻破,您的資產就是安全的;
有人可能問了,手機丟了怎麼辦?
答案很簡單,別人偷了您的手機後攻破您的手機也是需要時間的,在這段時間裡,請盡快用12個單詞的密語在其它手機上恢復資產,並將其轉移到新的賬戶裡,您的資產就是安全的。
又有人可能會問,那如果用比較長的密碼來強加密,難道不是更安全了嗎?
您說的沒錯,使用比較長的密碼(甚至還應該包括字母、數字、特殊符號)來加密存儲私鑰,的確會更加安全,但強加密其實會大大影響用戶的使用體驗,比如說,用戶每次發幣都需要輸入十幾位甚至更長的密碼,對於一些不常使用錢包的用戶,忘記自己的密碼也是常事,如果設置的又是超長密碼,忘了就可能完蛋了。
考慮到這種情況,大部分手機錢包都未採用加密存儲私鑰的方案,而選擇了依賴手機系統本身的安全架構來為用戶提供安全保障,這種安全性其實並不低於電腦端錢包,當然更加不會低於在線錢包。
可能還會有用戶問,我們打開錢包或者發幣的時候,不是還有個PIN碼嗎?為什麼不能拿PIN碼來加密呢?
答案也很簡單,通常出於易用的目的,PIN碼一般是4-6位數字,用PIN碼來加密區別不大,因為對於現在的電腦科技來說,暴力破解PIN碼加密的私鑰,也就是幾分鐘甚至幾秒鐘的事情,跟文字差不多。
錢包在選擇方案時要在安全和易用之間尋找平衡,bitcoin.org上所推薦的大部分手機錢包都採用了相同的私鑰存儲方案,其實是很合理的,這種方案能很好的保護用戶資產的安全,同時又能讓用戶使用起來盡可能方便。
當然,如果有用戶有超大額的資產需要更加安全、甚至是絕對安全的解決方案,(雖然今天拿比特派來存儲上億資產的用戶也不少),那您應該使用比特護盾、Trezor這類的硬體錢包,因為絕對的安全意味著更高的成本、更複雜的使用方式。
這裡再提醒大家一下,選擇硬體錢包、冷錢包方案的時候,請注意如下幾點:
- 開源,記住是完全的開源(對於硬體錢包來說得是硬體架構及軟體設計全開源),公佈了幾行代碼然後說自己開源的不算;
- 有第三方權威機構審計並推薦(比如bitcoin.org),並且有著比較長時間的安全、可靠、無事故的歷史;
總之,對於大部分用戶來說,手機錢包其實就已經是很好的安全使用和保管區塊鏈資產的工具了,如果需要超大額的冷存儲,用可靠的硬體錢包吧。
最後,再附上Bread Wallet和Bitcoin Wallet的開發者們在github上曾經是如何回答用戶關於私鑰存儲的問題的,供參考:
https://github.com/voisine/breadwallet-ios/issues/11
https://github.com/bitcoin-wallet/bitcoin-wallet/issues/383
精選圖源ShutterStock