火幣區塊鏈產業專題報告:錢包篇

狹義上數字資產錢包為私鑰存儲工具,廣義上含餘額查詢、發送交易等基本功能。

2018年Q1全球數字資產錢包用戶數約2395萬,同比增長86%,發展迅速。基於火幣研究院調研的31個錢包項目:錢包行業競爭激烈,目前無較好盈利模式;約70%的錢包支持移動客戶端,對網頁端支持度最弱,僅佔26%;61%的錢包為開源項目;65%的錢包提供行情、理財、資訊等附加功能,其中提供交易功能的錢包數最多,約佔75%。

錢包種類繁多,本報告對錢包從連網與否、數據存儲、私鑰存儲、主鏈關係以及私鑰簽名這五方面進行了分類闡述,分析了其在安全性、易用性和功能性等策略上的不同。

為幫助讀者深入理解數字資產錢包,本報告從技術原理出發,詳細闡述了錢包助記詞、Keystore、私鑰、公鑰和地址產生的方法及其相互關係。此外,對於錢包安全也從用戶安全教育和錢包安全設計兩方面進行了深度剖析。

目前錢包產業存在使用門檻高、盈利模式不清晰、功能較為單一等問題,安全事件也時有發生。但未來,錢包作為區塊鏈世界入口的功能將不斷髮展完善,金融屬性也將日趨強化

,有望成為多種資產一體化管理入口、DAPP應用入口、通證使用權、收益權等功能性入口,交易和理財服務也將不斷加強完善。

火幣區塊鏈產業專題報告:錢包篇

第一章 數字資產錢包產業現狀

1.1 錢包產業概述

自中本聰在2008年發表《比特幣白皮書:一種點對點的電子現金系統》以來,加密數字資產市場從無到有,不斷擴大,根據coinmarketcap統計,在2018年7月20日,全球加密數字資產總市值已達2868.20億美元。(Jul 20, 2018 2:50 AM UTC,COINMARKETCAP)在2017年12月17日,比特幣價格達到歷史最高峰19737.40美元后,數字資產熱潮隨之達到頂峰。正是在數字資產大幅興起的背景下,驅動了對數字資產的安全存儲需求,因而數字錢包行業迎來了一個發展契機,大量開發者以及資金開始湧入。根據Statista統計,2018年Q1全球數字資產錢包用戶數為2395萬人,同比增85.80%,環比增長11.34%,增長十分迅猛。

火幣區塊鏈產業專題報告:錢包篇

數字資產錢包最狹義的定義是儲存私鑰工具,廣義上則應該包含數字資產餘額查詢,發送交易等基本功能(廣義上也能把交易所理解成一種錢包,但本文不將其列為討論範圍)。從不同的角度出發,對數字資產錢包的定義和分類都不相同,比如從錢包是否連網來看,可以分為冷錢包和熱錢包,從數據存儲完整性來看又可分為全節點錢包和輕節點錢包等。從未來發展來看,錢包不僅將作為區塊鏈世界的入口,還會承擔數字資產理財管理,交易兌換等擴展性金融功能,其重要性值得數字資產相關從業者關注。

1.2 錢包產業市場分析

錢包作為區塊鏈產業必不可少的一環,隨著區塊鏈產業的發展和擴張也呈現並行加速的現象,越來越多的項目方加入數字資產錢包領域。相較於全球60億人口和40億互聯網用戶來說,數字資產錢包用戶佔比還非常小,未來市場潛力非常巨大,如下圖所示。當然也意味著區塊鏈目前還處於行業發展的初期,數字資產錢包作為行業配套基礎設施也同樣處於行業早期。

火幣區塊鏈產業專題報告:錢包篇

火幣研究院調研和分析了市場上31個數字資產錢包項目(可參考附錄2),並對項目的成立時間、支持的平臺種類、支持的主流數字資產種類、項目代碼是否開源、用戶數量分佈以及融資額分佈做了統計分析,本章所有數據統計均來源於此31個項目樣本。

有數據可查的28個數字資產錢包項目中,其成立的時間分佈如圖1.3所示,該分佈趨勢與BTC價格趨勢有一定的相關性,2014年和2017年成立的項目數相對較多。

火幣區塊鏈產業專題報告:錢包篇

除個別冷錢包無客戶端軟件外,29個數字資產錢包都同時支持多種平臺,如圖1.4所示,其中支持Android平臺的項目最多,約佔74.19%,其次為IOS,對網頁支持的項目最少,只有25.81%。總體來說對手機客戶端的支持度是最好的,PC客戶端的支持度僅佔不到1/3,網頁端的支持度最弱。

火幣區塊鏈產業專題報告:錢包篇

火幣研究院整理和分析了31個錢包對11種主流數字資產以及ERC20類代幣的支持度,如圖1.5所示,約84%的數字資產錢包都支持BTC,68%的錢包支持ETH,對ERC20的支持度為45%,對Stellar的支持度最弱,僅有6%。

火幣區塊鏈產業專題報告:錢包篇

數字資產錢包的安全性是最受關注的話題,特別是私鑰的存儲機制甚為關鍵,約61.29%的項目選擇項目開源,一方面接受各方對其代碼進行監督審查,另一方面也更容易獲得技術極客的幫助,不斷地改進升級,如圖1.6所示。

火幣區塊鏈產業專題報告:錢包篇

對有數據支持的11個項目(數據來源於項目方主動披露或者網上公開信息披露)用戶數量進行分析後,發現各層級用戶體量的項目數比例非常接近,如圖1.7所示。用戶數在1~10萬的項目數略大於用戶數在10萬~100萬以及大於100萬的項目數。

火幣區塊鏈產業專題報告:錢包篇

火幣研究院統計了公佈融資額的10個項目,有60%的項目融資額在1千萬美元到1億美元之間,還有20%的項目融資額超過1億美元,如圖1.8所示。

火幣區塊鏈產業專題報告:錢包篇

1.3 錢包商業模式分析

錢包作為私鑰管理工具,目前還沒有很好的盈利變現模式,基本都處於早期積累用戶和沉澱資金的狀態。 為尋求收入來源,各錢包紛紛推出周邊增值服務,一方面為增加用戶黏性,提高流量入口,另一方面也試圖增加收入來源。如提供理財、資訊、POS挖礦、交易、資產聚合等功能。目前有65%的數字資產錢包項目都提供附加功能,如圖1.9所示。

火幣區塊鏈產業專題報告:錢包篇

經火幣研究院統計分析,在提供附加功能的錢包項目中,提供數字資產交易或兌換服務的錢包數量最多,約佔75%;其次為行情服務,約佔60%;提供資產聚合服務的錢包項目最少,僅佔5%,如圖1.10所示。

火幣區塊鏈產業專題報告:錢包篇

❖交易及兌換類服務

錢包內置數字資產交易功能,有接入中心化交易所平臺的錢包,如BitPie; 也有接入去中心化交易平臺的錢包,如Imtoken;還有接入Bancor機制的自動化交易平臺如Tokenpocket。有的錢包推出的“閃兌”功能,即不同幣種之間按照一定的“匯率”進行互換,其後臺通常也是用了去中心化交易所的模式進行貨幣的兌換。

錢包用戶天然擁有交易需求,如果幣不用提出錢包就可以實現交易,不但減少了用戶提幣轉幣的操作步驟,減少了犯錯的概率,也增強了用戶黏性,為錢包項目的後續轉型提供了很好的發展方向和資金沉澱。不過內置交易所極大地增加了系統的複雜度,為本身對安全性要求較高的錢包類產品引入了更大的風險,用戶資金安全性將受到一定程度挑戰。

❖行情資訊服務

錢包內置豐富的新聞資訊、行情快報、項目簡介、K線圖、大額資金流動監控、代碼活躍度等數字資產市場行情信息。

區塊鏈項目的資訊和行情信息是通證持有者與市場保持同步的需求,也是集聚用戶流量的大入口,錢包產品若能很好地集成資訊行情服務不僅能對現有用戶產生足夠的黏性,還可以帶入更多的增量用戶。不過資訊行情服務需要投入一定的人力財力,會較大地增加產品的運營成本。目前大部分錢包集成的新聞資訊服務並不是很完善,主要以提供行情信息為主。

❖理財服務

錢包內置理財模塊,理財類型包括長期固定收益型,餘幣寶短期靈活型,數字資產P2P融資借貸型,抵押貸款型。目前這些理財模塊有的是接入第三方服務,本身不參與理財服務;有的是為本身平臺的發展提供廉價資金而開發的理財產品,由平臺收益來支付用戶利息;有的則是將平臺募集的數字資產再投入一級或二級市場交易以此來獲取超額收益並支付用戶利息;還有的則是提供P2P的數字資產借貸交易服務,為資產需求方和提供方提供撮合服務。

對於長期持幣的用戶來說,數字資產理財服務切中剛需,持有也能獲得收益,目前各類錢包提供的理財產品年收益率在4%~20%不等。不過區塊鏈行業發展迅速,數字資產市場波動性較大,流動性不佳的理財產品將面臨更大的風險。且目前數字資產理財市場並不成熟,還未出現行業標杆性龍頭企業,風險控制經驗和能力以及兌付能力還待市場考驗。此外數字資產P2P借貸型,若是對借貸人風險難以把控,則很容易造成違約,請投資人注意風險。

❖POS挖礦服務

對於支持POS共識算法的區塊鏈項目,一些錢包提供鎖倉加入POS挖礦服務,挖礦收益將定期發送給用戶。

通常由錢包項目方提供POS挖礦的主節點,符合一定資金要求的數字資產可參與POS挖礦,有固定鎖定時間挖礦,也有支持隨時可贖回的挖礦模式,錢包項目方將從挖礦收益中按比例抽取分成,錢包項目方和用戶都能有較為穩定的額外收益。目前支持POS挖礦較多的幣種有:達世幣DASH,閃電比特幣teBitcoin,小零幣ZCoin,量子鏈Qtum以及超級現金Hcash。

❖資產聚合類服務

通常用戶會在多個交易所和錢包裡持有不同的幣種,不太方便進行集中的管理和收益查詢,此類錢包可為用戶提供資金聚合服務,通過API接口將用戶在多個錢包和交易所的通證持有情況進行彙總聚合,對於API接口服務支持度不佳的平臺也可以採用手動維護進行初始輸入。目前可支持交易所、錢包、ICO資金和法幣資金的信息彙總聚合服務。

目前各大交易所以及錢包平臺種類較多,每個交易所以及錢包支持的數字資產品種都不一樣,因此用戶的資金通常會分散到不同的平臺,不利於集中管理和查詢,因此聚合類服務能較好地滿足用戶查詢的需求,提升用戶活躍度和用戶黏性。這類錢包需要配合眾多交易所、錢包等進行API接口開發,存在一定的開發和維護成本。

基於以上提供的各類增值服務,目前主流錢包項目方獲得盈利的幾種方式如表1.1所示。

火幣區塊鏈產業專題報告:錢包篇


第二章 數字資產錢包分類概述

隨著行業的發展,市場上出現的錢包產品越來越多,使用的技術、策略以及側重的功能點都不相同,本章將從五個角度出發,對現有的錢包產品做一個分類梳理和總結。如圖2.1所示,可以從五個角度對錢包進行分類梳理,每一種分類方式其實都體現了該錢包所採用的策略重點,以及其面向的用戶群體。有的體現了安全性、有的堅持易用性、而有些則強調功能。

火幣區塊鏈產業專題報告:錢包篇

2.1按是否連網分類

數字資產錢包本質上是存儲私鑰的工具,私鑰的安全性至關重要,為了將安全性做到極致,出現了不連網的冷錢包,因此可以依據錢包是否連網分為冷錢包和熱錢包。依據火幣區塊鏈研究院調研分析的行業內常見的31種數字資產錢包數據(詳見附錄2),目前冷熱錢包的項目數量佔比如下圖所示,冷熱錢包數量基本符合二八分佈定律。

火幣區塊鏈產業專題報告:錢包篇

❖熱錢包

特點:保持實時連網上線的錢包通常稱為熱錢包。

分析:熱錢包相對於冷錢包使用起來更方便,既可在PC上使用,也可在手機等移動終端使用,還可對錢包內資產隨時進行操作,因此目前83.87%的錢包都為熱錢包模式。但正由於其連網,也給了黑客攻擊的基礎條件,錢包安全性會受到挑戰。不過通常錢包項目方會對存儲的私鑰以及通訊數據包進行加密處理,一定程度上也能避免黑客輕易入侵。

火幣區塊鏈產業專題報告:錢包篇

❖ 冷錢包

特點:冷錢包通常指不連網使用的錢包,也叫離線錢包。根據實現方式的不同,還可以分為硬件錢包和紙錢包。硬件錢包用來生成密鑰和保存密鑰,設備本身不會洩露或者輸出密鑰,而只是在我們按下某個按鈕或者輸入設備密碼後顯示密鑰的保管情況。紙錢包,顧名思義就,就是把密鑰記在紙上,然後把紙鎖在保險櫃裡。

分析:冷錢包將私鑰存儲在完全離線的設備上,相比於熱錢包是更安全的方法,但成本更高易用性更差,比如傳統的硬件錢包Armory,需要一臺不連網的電腦專門用於安裝離線端。雖然冷錢包相對於熱錢包更安全,但是冷錢包也不是絕對安全,可能會遇到硬件損壞,錢包丟失等情況,需要做好備份。

火幣區塊鏈產業專題報告:錢包篇

2.2按數據存儲完整性分類

數字資產錢包通常和區塊鏈節點關係緊密,依據錢包存儲節點賬本數據的完整性可以將其分為全節點錢包和輕錢包,其中輕錢包也包括SPV節點錢包。由於全節點錢包需要下載所有的賬本數據,會佔用大量的存儲空間以及計算資源,不適用於手機等移動終端,也不便於普通用戶使用,故目前市面上約90%的錢包都為輕節點錢包,如下圖所示。

火幣區塊鏈產業專題報告:錢包篇

❖全節點錢包

特點:全節點錢包參與到網絡的的數據維護中同步了區塊鏈上的所有數據,具有更有隱秘、驗證更快等特點。但是由於數據量比較大,會導致擴展性低。

分析:由於需要同步鏈上信息的原因,很多全節點錢包的幣種單一,不能夠支持多種數字資產,一般為官方錢包。此外,全節點錢包需要佔用很大的硬盤空間,並且一直在增長。每次使用前需要先同步區塊數據,會導致易用性變差。

火幣區塊鏈產業專題報告:錢包篇

❖輕錢包

特點:輕錢包是為了解決全節點錢包需要佔據很大的硬盤空間而出現的,不需要存儲完整的區塊數據。雖然輕錢包不會下載新區塊的所有數據,但是它會對數據進行分析後,僅獲取並在本地存儲與自身相關的交易數據,運行時依賴比特幣網絡上的其他全節點,一般在手機端和網頁端運行。

SPV錢包是輕錢包的一種,指的是可以進行簡單支付驗證的錢包。SPV錢包也同步區塊數據內容,但是隻是臨時使用,它從區塊數據中解析出UTXOs,但是並不保存區塊數據。

分析:輕錢包可以有更多的擴展性,一方面可以在幣種上進行擴展,用來很方便地對多種資產進行管理。另一方面可以在運行DAPP。因為它只同步和自己相關的數據,所以很輕便。輕錢包根據實現原理可以分為中心化錢包和去中心化錢包。比如,客戶端錢包,瀏覽器錢包,網頁版錢包等。

火幣區塊鏈產業專題報告:錢包篇

2.3按私鑰存儲方式分類

私鑰是數字資產領域安全的核心,而錢包的本質其實是幫助用戶方便和安全地管理和使用私鑰,因此,私鑰的存儲方式非常關鍵,按照私鑰是否存儲在本地,我們可以將錢包分為中心化錢包和去中心化錢包兩種類型。如下圖調研數據顯示,目前去中心化錢包為主流模式,約佔82.76%。

火幣區塊鏈產業專題報告:錢包篇

❖中心化錢包

特點:私鑰不由用戶自持,而是由錢包項目方在鏈下中心化服務器上保管,通常資金也交由服務方託管。

分析:中心化錢包通常也叫Offchain錢包,私鑰和資產都交由錢包進行中心化管理,此種方式的錢包產品用戶不必擔心私鑰丟失而導致資金損失,通常可支持密碼找回功能;不過資金風險會更集中在錢包項目方,中心化服務器一旦被黑客攻克,用戶將遭受不必要的損失。

火幣區塊鏈產業專題報告:錢包篇

❖去中心化錢包

特點:私鑰由用戶自持,資產存儲在區塊鏈上。

分析:去中心化錢包通常也叫Onchain錢包,私鑰的保管都轉交給用戶,若私鑰遺失,錢包將無法幫用戶恢復,資金將永久遺失;但去中心化錢包很難遭受黑客的集中攻擊,用戶也不用擔心錢包服務商出現監守自盜的情況。

火幣區塊鏈產業專題報告:錢包篇

2.4按主鏈關係分類

目前各區塊鏈公鏈都是較為獨立的平臺,平臺和平臺之間缺乏直接的互通,因此各類錢包出現了兩大分化,一種是專門針對某一公鏈平臺的主鏈錢包,通常由平臺項目方或者社區開發提供;另一種則是同時支持多平臺接口的多鏈錢包,支持的資產類型較為多樣。依據火幣區塊鏈研究院整理的數據顯示,主鏈錢包約佔35.48%,支持多鏈的錢包占絕對多數,隨著行業的發展,這一比例可能進一步被拉大。

火幣區塊鏈產業專題報告:錢包篇

❖主鏈錢包

特點: 對於可以定製化發行通證的公鏈我們定義其為平臺類公鏈,此類公鏈上可以運行多種DAPP,平臺專屬錢包不僅是為了滿足平臺類通證正常使用所必備的核心組件,也可以作為一個應用商店,對基於其平臺開發的DAPP進行集中宣發和鏈接跳轉。

分析: 對於平臺類公鏈來說,平臺通證通常具備一定的使用功能,平臺上的各類角色所開展的活動都是圍繞通證來進行,比如說礦工、平臺用戶、存儲節點或者是計算節點等,因此需要錢包來作為各方進行通證存儲和流通的節點。錢包也可以作為平臺類項目是否可用的判斷標準之一。

火幣區塊鏈產業專題報告:錢包篇

❖多鏈錢包

特點: 可支持多種主鏈平臺通證的錢包。

分析: 不同的主鏈通常採用的技術方案都各不相同,如果要支持多種主鏈平臺的通證接入錢包,則需要逐一進行接口開發,有一定的開發難度和工作量。此類錢包對於支持內置交易所和跨鏈互兌業務有著天然的優勢。

火幣區塊鏈產業專題報告:錢包篇

2.5按私鑰簽名方式分類

為了加強數字資產的安全性並配合某些應用場景使用,出現了需要多方私鑰簽名才可使用錢包的策略,因此可將錢包分為單簽名錢包和多簽名錢包。依據火幣調研的統計數據分析,如下圖,支持多簽名的錢包僅佔25.81%,單簽名模式是市場上更受歡迎的方式。

火幣區塊鏈產業專題報告:錢包篇

❖單簽名錢包

特點:只需單個私鑰簽名即可交易。

分析:單簽名模式簡單,用戶可操作性強,但由於只有一個密鑰,風險也更集中,私鑰持有賬戶的單點淪陷——如果丟失或者洩漏私鑰會可能直接導致賬戶中所有的資產的丟失。

火幣區塊鏈產業專題報告:錢包篇

❖多重簽名錢包

特點:必須有2個(或多個)私鑰同時簽名才可以交易。

分析:通常一個私鑰用戶保存,一個交給服務器,如果只有服務器私鑰被盜,黑客沒有本地私鑰,交易時無法簽名的。也可用於公司或者組織內由多方共同管理財產場景下使用,密鑰由多位成員管理,需多數成員完成簽名才可動用資產。多重簽名機制相較於單簽名是更安全了,但易用性卻受到很大的影響,用戶需要理解一些技術細節,還需要多方協同,學習和使用成本高了不少。此外,多重簽名的機制更復雜,也帶來一些安全隱患,如parity錢包的多重簽名機制就被黑客利用,令逾15萬個以太坊被盜。

火幣區塊鏈產業專題報告:錢包篇

第三章 數字資產錢包技術實現原理

3.1技術總覽

數字資產錢包技術實現主要包含三個部分:1.錢包自身設計,如何生成助記詞,keystore和密碼等;2.私鑰、公鑰和地址產生的方法;3.錢包提供商遠程調用各公鏈RPC接口設計;如下圖所示,可總體概括數字資產錢包實現的技術流程:

火幣區塊鏈產業專題報告:錢包篇

眾所周知,私鑰為一串無規律字符串,非常不便於記憶,使用更是不方便,所以從錢包設計的角度,為簡化操作同時又不失安全性,就出現了助記詞的方法。一般情況下,助記詞由一些單詞組成,只要記住這些單詞,按照順序在錢包中輸入,就能打開錢包,下文將詳細闡述其中的原理和方法。

根據密鑰之間是否有關聯可把錢包分為兩類:

  • 非確定性錢包(nondeterministic wallet):每個密鑰都是從隨機數獨立生成,密鑰彼此之間無關聯,這種錢包也被稱為“Just a Bunch Of Keys(一堆密鑰)”,簡稱JBOK錢包。
  • 確定性錢包(deterministic wallet):所有密鑰都是從一個主密鑰派生出來,這個密鑰即為種子(Seed)。該類型錢包中所有密鑰都相互關聯,通過原始種子可以找到所有密鑰。確定性錢包中使用了很多不同的密鑰推導方法,最常用的是使用樹狀結構,稱為分級確定性錢包或者HD (hierarchical deterministic)錢包。

比特幣錢包(Bitcoin Core)生成密鑰對之間沒有直接關聯,屬於nondeterministic wallet,這種類型的錢包如果想備份導入是比較麻煩的,用戶必須逐個操作錢包中的私鑰和對應地址,如下圖包含的為鬆散結構的隨機密鑰集合的非確定性錢包:

火幣區塊鏈產業專題報告:錢包篇

Deterministic wallet基於BIP32(Bitcoin Improvement Proposal32)/BIP39/BIP44標準實現,通過一個共同的種子維護n多私鑰,種子推導私鑰採用不可逆哈希算法,在需要備份錢包私鑰時,只備份這個種子即可(大多數情況下的種子是通過BIP44生成了助記詞,方便抄寫),在支持BIP32,BIP39,BIP44標準的錢包只需導入助記詞即可導入全部的私鑰,如下圖種子派生密鑰的確定性錢包:

火幣區塊鏈產業專題報告:錢包篇

上面提到了BIP32,BIP39,BIP44標準,概括來說BIP32標準定義了種子使用HMAC-SHA512生成根私鑰,並導出子私鑰,這是HD錢包的主要標準;BIP39 標準定義了錢包助記詞和種子生成規則; BIP44標準定義了節點佈局,用於多幣種和多賬戶錢包;除此之外,還有BIP43標準用於定義多用途HD錢包結構。具體可以前往https://github.com/bitcoin/bips學習。

3.2錢包設計框架

3.2.1生成助記詞(BIP39標準)

助記詞庫有2048個詞,用11位可全部定位詞庫中所有的詞(2^11=2048),作為詞的索引,故一個詞用11位表示,助記詞的個數可為(熵+校驗和)/11,值為12,15,18,21,24。規定熵的位數必須是32的整數倍,所以熵的長度取值為128到256之間取32的整數倍值,分別為128,160,192,224,256;校驗和的長度為熵的長度/32位,所以校驗和長度可為4,5,6,7,8位。

火幣區塊鏈產業專題報告:錢包篇

生成助記詞的具體步驟如圖3.4所示:

1)生成長度為128〜256位(bits)的隨機序列(熵),以128位為例;

2)取熵SHA256哈希後的前n位作為校驗和(n= 熵長度/32),圖為128/32=4;

3)隨機序列(熵) + 校驗和拼合為一個字符串,圖為128+4=132;

4)把步驟3得到的結果每11位切割,圖為 132/11 =12個字符串;

5)步驟4得到的每個字符串匹配預先定義的2048 個詞庫裡的單詞;

6)步驟5得到的結果就是助記詞串,這是一個有順序的單詞組,也就是我們一直說的助記詞。

火幣區塊鏈產業專題報告:錢包篇

3.2.2通過助記詞生成種子(BIP39標準)

助記詞由長度為128到256位的隨機序列(熵)匹配詞庫而來,隨後採用PBKDF2(Password-Based Key Derivation Function 2)推導出更長的種子(seed)。生成的種子被用來生成構建deterministic Wallet和推導錢包密鑰。

在密碼學中,Key stretching技術被用來增強弱密鑰的安全性,增加了暴力破解 (Brute-force attack)對每個可能密鑰嘗試攻破的時間,增強了攻擊難度。各種編程語言原生庫都提供了key stretching的實現。PBKDF2是常用的 key stretching算法中的一種。基本原理是通過一個為隨機函數(例如 HMAC 函數),把明文和鹽值作為輸入參數,然後重複進行運算最終產生密鑰。

如圖3.5所示:

1)PBKDF2有兩個參數:助記詞和鹽。鹽的目的是提升進行暴力攻擊時的困難度,可以參見BIP-39標準。鹽由字符串常數“助記詞"與可選的用戶提供的密碼字符串連接組成;

2)PBKDF2使用HMAC-SHA512作為隨機算法+2048次哈希重複計算,最終得到BIP32 種子,512 位(64字節)是期望得到的種子長度。即DK = PBKDF2(PRF, Password, Salt, c, dkLen),其中,PRF是一個偽隨機函數,例如HASH_HMAC函數,它會輸出長度為hLen的結果;Password是用來生成密鑰的原文密碼;Salt是一個加密用的鹽值;c是進行重複計算的次數;dkLen是期望得到的密鑰的長度;DK是最後產生的密鑰。

火幣區塊鏈產業專題報告:錢包篇

3.2.3從種子中創造HD錢包(BIP32標準)

HD錢包從單個根種子(root seed)中創建,為128到256位的隨機數,任何兼容HD錢包的根種子也可重新創造整個HD錢包,所以擁有HD錢包的根種子就等於擁有了所有密鑰,方便存儲、導入及導出。

具體主密鑰以及HD錢包的主鏈碼生成過程如圖3.6所示,根種子通過不可逆HMAC-SHA512算法推算出512位的哈希串,左256位是主私鑰Master Private Key (m),右256位是主鏈碼Master Chain Code;鏈碼chain code作為推導下級密鑰的熵。

火幣區塊鏈產業專題報告:錢包篇

以上過程再結合BIP43,BIP44,對HD錢包還能實現諸如多幣種、多賬戶、多用途等功能。

3.2.4 keystore和密碼基本功能

迴歸到用戶體驗,助記詞的方式仍然很複雜的,現有的密碼操作方式才是用戶最為熟悉的方式。因此錢包還提供了keystore讓用戶導出密鑰文件進行保存,Keystore會存儲在使用的設備裡,這樣每次登錄只用輸入相應密碼即可。Keystore是私鑰經過加密過後的一個文件,需要用戶設置的密碼才能打開文件。即使keystore文件被盜,只要用戶設置的密碼夠長夠隨機,短時間內私鑰也不會洩露,有充足的時間轉移地址裡的數字資產到其他地址。

3.3私鑰、公鑰和地址產生的方式

從私鑰推導出公鑰、再從公鑰推導出公鑰哈希都是單向的,採用不可逆算法,也就是常聽到的橢圓曲線算法:如圖3.7所示。

火幣區塊鏈產業專題報告:錢包篇

整體的公鑰和地址生成過程如圖3.8所示:

1)通過隨機數生成私鑰;

2)私鑰經過SECP256K1算法處理生成了公鑰;

3)同SHA256一樣,RIPEMD160也是一種Hash算法,經過一次SHA256 + 一次RIPEMD160哈希運算,由公鑰計算得到公鑰哈希;

4)將一個字節的地址版本號連接到公鑰哈希頭部,進行兩次SHA256運算,將結果的前4字節作為公鑰哈希的校驗值,連接在其尾部;

5)將第4步結果使用BASE58進行編碼,即得到錢包地址。

火幣區塊鏈產業專題報告:錢包篇

從字節層面拆開來看,公鑰的詳細生成流程如圖3.9所示:

1)私鑰是32字節(256位)的隨機數;

2)在私鑰頭部加上版本號;

3)在私鑰尾部加上壓縮標誌;

4)將私鑰進行兩次SHA256哈希運算,取兩次哈希結果的前4字節作為校驗碼,添加到壓縮標誌之後;

5)將2,3,4步得到的隨機數用BASE58進行編碼,就可以得到WIF(Wallet import Format)私鑰(用於錢包之間導入導出私鑰,是用戶較為常見的密鑰格式)。

6)私鑰經過橢圓曲線乘法運算,可以得到公鑰。公鑰是橢圓曲線上的點,並具有x和y座標。

火幣區塊鏈產業專題報告:錢包篇

從字節層面拆開來看,錢包地址的詳細生成流程如圖3.10所示:

1)將公鑰通過SHA256哈希算法處理得到32字節的哈希值;

2)後對得到的哈希值通過RIPEMD-160算法來得到20字節的公鑰哈希Hash160;

3)把版本號+公鑰哈希Hash160組成的21字節數組進行雙次SHA256哈希運算;

4)將哈希值的前4個字節作為校驗和,放在21字節數組末尾;

5)對組成25位數組進行Base58編碼,最後得到錢包地址。

火幣區塊鏈產業專題報告:錢包篇

3.4 恢復錢包的N種方式

瞭解了錢包的基本技術原理以及助記詞、Keystore、私鑰、公鑰和地址的關係後,遇到私鑰丟失等情況我們就可以有條不紊地進行錢包找回工作了,如圖3.11所示,只要不是私鑰、密碼、助記詞同時全部丟失,你還有N種方法可以恢復錢包。

火幣區塊鏈產業專題報告:錢包篇



第四章 數字資產錢包安全分析

對區塊鏈行業來說,安全將是永恆的話題,錢包涉及到用戶資產的核心,其安全性更是不容忽視。近兩年來,數字資產錢包安全事件不斷,parity錢包的兩個安全事件則直接導致約24萬個以太坊的損失,2018多款冷熱錢包也都爆出安全問題,如圖4.1所示。

火幣區塊鏈產業專題報告:錢包篇

數字資產錢包的安全性不僅要從底層設計上就進行全面考慮,對於大部分去中心化錢包來說,對用戶的安全教育也是非常重要的內容,如圖4.2所示。

火幣區塊鏈產業專題報告:錢包篇

4.1 用戶習慣安全引導

對於去中心化錢包,私鑰交由用戶保存,如何幫助用戶正確地理解和使用密鑰、助記詞等成為錢包項目方重點關注的內容。目前主流錢包採用圖文教程、答題考試、視頻講解等方式來幫助用戶理解錢包的各種基本概念、提醒用戶正確地保管助記詞、私鑰和本機密碼等。建議通過相對原始的方法來手動記錄,遠離截圖、複製等一切電腦操作,養成良好的上網習慣,將風險降到最低。

4.2 錢包安全設計

4.2.1網絡傳輸安全

❖MITM中間人攻擊防禦,即雙向校驗

中間人攻擊MITM(Man-in-the-middle attack):指攻擊者與通訊的兩端分別創建獨立的聯繫,並交換其所收到的數據,使通訊的兩端認為他們正在通過一個私密的連接與對方直接對話,但事實上整個會話都被攻擊者完全控制。

雖然大部分數字錢包應用都會使用HTTPS協議和服務端進行通訊,但是中間人攻擊方法上是可以通過在用戶終端中安裝一個數字證書的方式拿到HTTPS協議裡面的內容。

安全的數字錢包需要能夠對終端裡面全部的數字證書的合法性進行掃描、對網絡傳輸過程中的代理設置進行檢查並能夠保障基礎的網絡通訊環境的安全性。在數字錢包的開發中,在網絡傳輸層面是否使用雙向校驗的方式進行通訊驗證是衡量一個數字錢包應用安全性的重要評判標準。

❖RPC接口調用權限安全

錢包本身只是區塊鏈世界的接口軟件,正如前文介紹的很多都是使用RPC調用相應接口,這樣調用過程對數據傳輸的權限控制是數據通訊時的安全之本,對代碼和各種場景的設計要非常仔細。

遠程過程調用(RemoteProcedureCall,RPC)時安全策略:如在錢包節點Geth上啟用遠程過程調用訪問時,千萬不要允許帶有解鎖賬戶功能的遠程過程調用的外部訪問等。

4.2.2客戶端文件管理安全

文件安全主要考慮的是安裝在用戶端的文件是加密並不可被破解的,以及對用戶的一些禁止性操作或者增加對某些風險操作的不便利性來降低用戶造成的風險。

❖安裝包安全性

確保軟件安裝包的安全和不可被反編譯、破解來植入非法操作等。

❖抵禦終端不良程序對關鍵文件的訪問

加密數字資產錢包最核心的文件—私鑰/助記詞是存儲在終端設備上的,無論是PC端還是移動端,終端設備如果出現不安全的現象,對於私鑰/助記詞來說是有非常高的安全風險的。

一個安全的數字錢包,在設計之初就避免因為運行環境而導致的私鑰/助記詞存在被盜可能,比如增加用戶操作要訪問到核心文件時必須進行人臉識別或者短信確認的功能等。

❖終端關鍵文件加密方式

對終端關鍵文件採用高安全的加密方式,防止普通程序訪問,或者即使關鍵文件被複製出去,第三方也不能輕易破解的功能。如Wallet.dat加密問題。

❖終端關鍵文件備份過程顯示方式

用戶難免對關鍵文件有備份的需求,在設計錢包時需考慮實際安全操作性採取限制直接導出關鍵文件的操作,或者允許導出關鍵文件,但是解密方法以不能進行任何操作的顯示方式,供用戶手動記錄。

❖助記詞等關鍵信息生成和管理

對於錢包的核心關鍵信息,如助記詞、私鑰、Keystore的生成和管理需充分考慮安全性。這三者的設計原則和思路基本相同,以助記詞為例:為確保客戶端生成助記詞,不能經過任何雲端或者服務器,這是去中心化錢包的核心,任何訪問助記詞的過程都需要用戶主動確認,如上面提到的人臉識別或者短信確認的功能等。

對助記詞的顯示採用不能進行任何操作的顯示方式,供用戶手動記錄。

❖導入其他錢包生成的私鑰和助記詞安全

導入其他錢包生成的私鑰和助記詞安全的思路可以從重新創建新的核心文件的方式來降低非法程序入侵的風險;也可以同時用人臉識別或者短信確認的功能等。

4.2.3開發擴展安全

考慮到錢包作為區塊鏈的接口端,對應用擴展需求很重要,所以設計上需嚴格控制開放端口的權限,確保通訊只是公鑰簽名。同時對應用程序要嚴格審查是否具備抗篡改能力的核心技術能力,以及應用運行過程中的內存安全、反調試能力等。

除此之外,考慮到用戶密碼忘記的風險,可以考慮採用多籤方式增加各種應用場景,如密碼找回功能等。

第五章 存在的問題及產業發展趨勢

5.1現有產品存在的問題

❖安全問題時有發生

由於業務場景的快速迭代以及推廣需求,無論熱錢包還是冷錢包都會有一些安全隱患會被忽視。安全性和使用便捷性之間的衝突短時間無法解決。市面上的數字資產錢包良莠不齊,部分開發團隊在以業務優先的原則下,暫時對自身錢包產品的安全性並未做到足夠的防護,導致黑客有機可乘,類似Parity錢包、Ledger錢包等漏洞事件時有發生。

❖支持幣種少,功能單一

市面上的錢包雖種類繁多,功能卻普遍單一,支持的數字資產種類也十分有限。用戶在管理數字資產時,通常需要在多種錢包之間來回切換,不僅影響了用戶體驗,也帶來了不少風險。

❖使用門檻較高,易用性不強

目前新進入數字資產市場的用戶仍傾向於將資產放在交易所,一方面是由於交易便捷性的需要,另一方面也表明錢包對於普通用戶來說仍然[SP1] 有較高的使用門檻,錢包仍需進一步優化業務流程,改進技術,提高使用便捷性,更需要加強用戶教育,幫助用戶正確、安全地使用錢包。

❖盈利模式仍在探索

目前大多數錢包的盈利模式仍在探索,變現能力不強,錢包項目的生存壓力較大。相較於熱錢包,賣設備的冷錢包有更強的變現能力,不過其設計研發的前提投入較大,庫存積壓的風險也較高,受市場整體行情影響較大。

5.2 數字資產錢包發展趨勢

一方面,錢包是用戶與區塊鏈交互的界面,可視為現實世界通往區塊鏈世界的一個重要入口;另一方面,錢包的本質是私鑰管理工具,與區塊鏈及數字資產息息相關,資產屬性強烈。未來數字資產錢包的發展也將緊緊圍繞著這兩點特性不斷豐富和擴展。隨著行業的發展和演進,勢必有些錢包將在某一領域進行技術和資源上的深耕形成行業高壁壘,有的則將朝著全面和綜合性的方向進行業務優化和資源聚合。

❖區塊鏈世界入口功能發展並強化

資產種類增加,一體化管理入口。當數字資產種類越來越多,用戶急需統一化的平臺幫助用戶管理眾多類型的資產。而由於目前中心化數字資產交易存在的流動性分割現狀,用戶需要在不同的交易所註冊登錄不同的賬戶進行查詢和交易,過程繁瑣,而且未來也很難改善此類現狀,因此錢包將成為資產聚合的首選方案。資產一體化管理可將用戶在多個錢包和交易所的通證持有情況進行彙總並提供統一的彙總、查詢、分析以及交易等服務。未來支持多平臺跨鏈兌換等功能的發展,也將滿足用戶流動性多樣化需求。

DAPP應用入口。互聯網時代,如同各類App作為用戶感受移動互聯網的窗口。未來,區塊鏈時代,各類Dapp也將成為用戶直接參與區塊鏈的主要方式。由於用戶與Dapp的交互需要消耗數字資產,而錢包作為協助用戶管理各類數字資產工具,其重要性不言而喻,可能會成為新時代應用商店,成為區塊鏈3.0時代真正超級流量入口。

通證使用權、收益權等功能性入口。未來隨著區塊鏈項目的落地,以及通證的功能屬性越來越強,錢包作為區塊鏈世界的入口將承載著非常關鍵的角色。用戶只有自己直接掌管著私鑰,才能行使通證所代表的各種功能和權力,例如EOS投票權、獲得POS挖礦收益等。未來通證經濟模式下還將誕生更多的通證實際使用場景,例如各類行為挖礦、分紅,權力憑證等。錢包提供的直接便捷渠道,將會釋放出通證除交易以外的功能潛力,更好的促進通證經濟發展。

❖金融屬性強化,服務和產品不斷豐富

交易屬性日漸增強。錢包用戶天然擁有交易需求,如果幣不用提出錢包就可以實現交易,不但減少了用戶提幣轉幣的操作步驟,減少了犯錯的概率,也增強了用戶黏性,為錢包項目的後續轉型提供了很好的發展方向和資金沉澱。另外,去中心化交易所的發展也會促進去中心化錢包的發展,這對Onchain錢包有天然優勢。

理財服務不斷完善。

作為資產沉澱的平臺,數字資產錢包不僅僅是工具、是流量入口更是資金入口和金融服務平臺。圍繞資產開展一系列理財服務將是未來錢包發展重點。目前已有一些數字資產錢包開始佈局各類理財和資金託管服務,但是該領域還在非常早期階段,和傳統的資管服務很不一樣,風控、盈利模式、資金安全等很多問題還需一一解決,產品設計也需結合區塊鏈資產特點進行重新規劃和考慮。

附錄1:常見名詞

1. 密鑰:是指某個用來完成加密、解密、完整性驗證等密碼學應用的秘密信息。在對稱密碼中,加密和解密用的密鑰是同一個。而在非對稱密碼中,加密和解密用的鑰匙不同,根據是否公開可分為公鑰和私鑰。

2. 私鑰:在非對稱密碼中,加密和解密用的鑰匙不同。根據是否公開,可分為公鑰和私鑰。公鑰和私鑰成對生成和使用。其中由用戶自己保管、不對外公開的,稱為私鑰。

3. 公鑰:在非對稱密碼中,可對外公開並傳遞的密鑰稱為公鑰。

4. 地址:通常由公鑰產生。公鑰經過多種加密算法、哈希算法等生成用戶錢包地址,類似傳統金融中的銀行卡號。

5. 數字簽名:類似寫在紙上的普通的物理簽名,轉移資產的時候需要用戶簽名才能啟動。多重簽名,則是地址允許多個用戶用一個公鑰單獨發送部分地址,共同管理資產。

6. 助記詞:將難以記憶的私鑰通過加密算法轉換成一組常見單詞。私鑰與助記詞之間可以互相轉換。

7. Keystore:通過加密算法加密過後的私鑰,通常以文件格式儲存。

8. 冷錢包:離線錢包,在沒有連網環境下使用的,統稱冷錢包。

9. 腦錢包:腦錢包的主要原理是用可預測的算法把口令轉換成一對公私鑰,用戶通過輸入自行編寫的一串字符串,即可與一個篤定的密鑰生成一一對應的映射,是一種密鑰生成方式。

10. 硬件錢包:用專業的硬件存儲數字資產,將數字資產私鑰單獨儲存在一個芯片中,與互聯網隔離,即插即用。

11. 紙錢包:將私鑰或助記詞以字符串、二維碼等形式記錄在紙張上來進行保存和使用的方法。

12. 熱錢包:即連網又稱在線錢包,處於連接互聯網狀態,私鑰存儲能被網絡直接訪問的錢包。

13. 重錢包:全節點錢包,保存私鑰的同時,需同步所有區塊鏈數。

14. 輕錢包:不保存所有區塊的數據,只保存跟自己相關的數據的錢包。

15. 去中心化錢包:用區塊鏈網絡上其他全節點,不用保存所有區塊數據,需保存和同步與自己相關的數據,無需第三方管理存儲你的私鑰,私鑰由本人控制。

16. 中心化錢包:用戶無私鑰,數據均完全依賴運行提供錢包產品的中心化的第三方。


附錄2:31個調研項目清單

火幣區塊鏈產業專題報告:錢包篇

本文由區塊鏈那些事兒發佈 2018年8月9日


分享到:


相關文章: