張中霞,王明文
西南交通大學(xué) 數(shù)學(xué)學(xué)院,成都611756
2009 年,一名自稱為Satoshi Nakamoto 的黑客創(chuàng)造了一個(gè)點(diǎn)對(duì)點(diǎn)的去中心化金融系統(tǒng)——比特幣[1]。不同于傳統(tǒng)的法幣,比特幣不需要中心控制機(jī)構(gòu),利用一種稱為區(qū)塊鏈的創(chuàng)新技術(shù),允許用戶在不依賴中心化金融機(jī)構(gòu)的情況下在線轉(zhuǎn)賬,并使用區(qū)塊鏈網(wǎng)絡(luò)中的所有節(jié)點(diǎn)記錄每筆交易[2]。經(jīng)過(guò)多年發(fā)展,比特幣已成為全球個(gè)人和企業(yè)最廣泛使用的數(shù)字貨幣之一[3]。隨著比特幣價(jià)值的增加,其潛在的安全威脅和攻擊者也相應(yīng)增加[4]。比特幣網(wǎng)絡(luò)處理所有權(quán)的方式是用戶需有一個(gè)比特幣地址和比特幣錢(qián)包來(lái)證明其所有權(quán)。每一個(gè)比特幣都屬于一個(gè)比特幣地址,并具有特定的價(jià)值。與地址相關(guān)的比特幣只能通過(guò)對(duì)應(yīng)的私鑰使用[5],地址用來(lái)接收比特幣,而私鑰花費(fèi)地址上對(duì)應(yīng)的比特幣余額。比特幣錢(qián)包是一組私鑰和公鑰的集合,通過(guò)私鑰可以實(shí)現(xiàn)資金的成功轉(zhuǎn)賬,所以比特幣錢(qián)包是攻擊者控制個(gè)人比特幣的一個(gè)單點(diǎn)故障點(diǎn)或攻擊載體。近年來(lái),比特幣錢(qián)包被盜事件屢屢發(fā)生,引起廣泛關(guān)注[6]。這種安全威脅來(lái)自于存儲(chǔ)在比特幣錢(qián)包中的私鑰。若攻擊者獲得了用戶私鑰,即獲得了對(duì)比特幣錢(qián)包的訪問(wèn)權(quán),就可以使用該私鑰控制用戶的比特幣[7]。私鑰是加密錢(qián)包的核心組件,被用來(lái)證明用戶對(duì)比特幣的所有權(quán),如果私鑰丟失,所有權(quán)也會(huì)丟失。
錢(qián)包方案對(duì)區(qū)塊鏈系統(tǒng)的安全性非常重要,各種錢(qián)包方案也相繼被提出,如文獻(xiàn)[8]提出的使用藍(lán)牙技術(shù)的硬件錢(qián)包方案,文獻(xiàn)[9]提出的分層確定性錢(qián)包等。但在現(xiàn)有研究中,對(duì)各類錢(qián)包方案進(jìn)行分類總結(jié)的研究尚不多見(jiàn)。文獻(xiàn)[10]分析了Bitcoin core、SPV、托管錢(qián)包這三種錢(qián)包方案面臨的攻擊及安全性,但缺乏對(duì)三種錢(qián)包方案的具體介紹也未給出錢(qián)包方案的發(fā)展趨勢(shì)。綜上,對(duì)區(qū)塊鏈錢(qián)包方案的研究工作具有十分重要的意義,因此本文對(duì)各類區(qū)塊鏈錢(qián)包方案進(jìn)行研究總結(jié),分析目前幾種較流行的錢(qián)包方案,給出各種錢(qián)包方案在安全性、便利性、性能等方面的優(yōu)勢(shì)與不足,并指出未來(lái)錢(qián)包方案的發(fā)展趨勢(shì)。
區(qū)塊鏈作為一種分布式共享記賬本應(yīng)用,其賬戶和錢(qián)包發(fā)揮著重要作用。賬戶被用于對(duì)分布式網(wǎng)絡(luò)上發(fā)生的交易狀態(tài)和結(jié)果進(jìn)行記錄,錢(qián)包則用來(lái)存儲(chǔ)用戶的私鑰。由于在區(qū)塊鏈網(wǎng)絡(luò)上進(jìn)行的是價(jià)值的傳遞,所以對(duì)賬戶、錢(qián)包以及交易過(guò)程的保護(hù)顯得至關(guān)重要。區(qū)塊鏈網(wǎng)絡(luò)作為一種價(jià)值轉(zhuǎn)移網(wǎng)絡(luò),其應(yīng)用涉及到數(shù)字貨幣資產(chǎn)等價(jià)值權(quán)屬的轉(zhuǎn)移,因此賬戶、錢(qián)包以及交易過(guò)程的安全性要求顯得更為嚴(yán)格,其安全性由密碼學(xué)進(jìn)行保證。
所謂公鑰密碼體制,就是用兩個(gè)相關(guān)的密鑰,能夠?qū)⒓用芎徒饷艿哪芰Ψ珠_(kāi)。公開(kāi)的密鑰用于加密,叫做公鑰,而另一個(gè)保密的密鑰用于解密,叫做私鑰。公鑰密碼體制具有一個(gè)重要的性質(zhì),即已知公鑰和密碼算法,求解出私鑰在計(jì)算上是不可行的。在公鑰密碼體制中,若用戶A 要想向用戶B 發(fā)送消息m,如圖1 所示,只需要用用戶B 的公鑰PKB進(jìn)行加密,而用戶B 用自己的私鑰SKB進(jìn)行解密即可獲得消息m。反之,如果用戶B要和用戶A 進(jìn)行通信,則可以用用戶A 的公鑰進(jìn)行加密,用戶A收到密文后,用自己的私鑰進(jìn)行解密。如圖1所示。
圖1 公鑰密碼體制
公鑰密碼體制應(yīng)該滿足以下幾點(diǎn):
(1)發(fā)送方A 用B 的公鑰加密m 產(chǎn)生的密文c 在計(jì)算上是容易的,即:
c=ξPKB[m]
(2)接收方B能夠用自己的私鑰對(duì)c解密,即:
m=DSKB[c]
(3)攻擊者用B 的公鑰求解私鑰在計(jì)算上不可行,用密文c和公鑰求解私鑰也不可行。
在比特幣系統(tǒng)中,采用橢圓曲線加密算法[8]作為公鑰密碼方案。
比特幣系統(tǒng)采用公鑰密碼體制,由私鑰產(chǎn)生公鑰,私鑰一般由隨機(jī)數(shù)產(chǎn)生。目前大多數(shù)錢(qián)包采用種子生成私鑰,錢(qián)包恢復(fù)過(guò)程由種子完成,錢(qián)包不用備份私鑰,只需備份種子即可。由種子生成私鑰的過(guò)程如下[9]:
(1)隨機(jī)生成128到258位的隨機(jī)數(shù),稱為熵。
(2)熵經(jīng)過(guò)SHA256 哈希處理后,取前面的幾位(熵長(zhǎng)/32)與熵組成新序列,并將序列的11 位作為一部分,與已有的單詞的字典做對(duì)應(yīng),生成的有順序的單詞組就是助記詞。
(3)助記詞通過(guò)密鑰延伸函數(shù),生成種子。
(4)種子經(jīng)過(guò)哈希算法,生成私鑰。
圖2給出了具體流程。
圖2 私鑰生成
在區(qū)塊鏈網(wǎng)絡(luò)中,用戶賬戶通過(guò)用戶地址進(jìn)行索引,而用戶地址由該用戶的公鑰通過(guò)某種計(jì)算得出。
在比特幣網(wǎng)絡(luò)中,其用戶地址的生成過(guò)程如下:
(1)隨機(jī)選取整數(shù)作為私鑰d。
(2)用橢圓曲線加密算法[11]計(jì)算私鑰所對(duì)應(yīng)的公鑰D。
(3)計(jì)算出D 的SHA-256 哈希值,用這個(gè)結(jié)果計(jì)算RIPEMD-160 哈希值,并在最后的值前面加入一字節(jié)地址版本號(hào)。
(4)取上一步結(jié)果,計(jì)算SHA-256哈希值,再用結(jié)果計(jì)算SHA-256哈希值。
(5)取上一步結(jié)果的前4個(gè)字節(jié),把這4個(gè)字節(jié)加在第(5)步的結(jié)果后面,作為校驗(yàn)。
(6)用base58 表示法對(duì)上一步結(jié)果進(jìn)行變換,得到最后的用戶地址。
從地址產(chǎn)生的過(guò)程,得到地址與私鑰、公鑰的關(guān)系,如圖3所示。
圖3 地址與私鑰關(guān)系
在圖3 中,由公鑰不能導(dǎo)出私鑰,同理,由公鑰哈希也不能得到公鑰[11],換句話說(shuō),由地址不能得到比特幣的公鑰以及私鑰。在比特幣網(wǎng)絡(luò)中,每一個(gè)比特幣都屬于一個(gè)比特幣地址,并具有特定的價(jià)值。與地址相關(guān)的比特幣只能通過(guò)對(duì)應(yīng)的私鑰使用。私鑰一旦丟失無(wú)法找回。下面,將介紹各種比特幣錢(qián)包對(duì)于私鑰儲(chǔ)存的安全性。
區(qū)塊鏈系統(tǒng)中的交易具有不可逆性,貨幣一旦丟失或被盜無(wú)法追回,貨幣的儲(chǔ)存關(guān)系用戶資產(chǎn)的安全性,而能唯一證明貨幣所有權(quán)的是私鑰。對(duì)于貨幣的管理實(shí)則是對(duì)私鑰的管理。區(qū)塊鏈錢(qián)包為管理和儲(chǔ)存私鑰誕生,主要功能是管理用戶的交易地址、發(fā)起轉(zhuǎn)賬交易、查看交易記錄。每個(gè)用戶有一個(gè)包含多個(gè)密鑰的錢(qián)包。錢(qián)包只包含私鑰/公鑰對(duì)的密鑰鏈。用戶用密鑰簽名交易,從而證明他們擁有交易輸出。貨幣以交易輸出的形式存儲(chǔ)在區(qū)塊鏈中[12]。
第一個(gè)區(qū)塊鏈錢(qián)包是個(gè)完整的客戶端,由中本聰[1]在2009年開(kāi)發(fā)比特幣協(xié)議時(shí)同時(shí)開(kāi)發(fā),名為Bitcoin-Qt。Bitcoin-Qt的私鑰以純文本的形式儲(chǔ)存在電腦硬盤(pán)驅(qū)動(dòng)器的wallet.dat 文檔里,沒(méi)有密碼保護(hù),沒(méi)有導(dǎo)入和導(dǎo)出私鑰的方式,私鑰由Python 腳本生成。隨著錢(qián)包的發(fā)展,Bitcoin-Qt 更名為Bitcoin core,新增了加密錢(qián)包功能,能將儲(chǔ)存私鑰的文件加密并導(dǎo)入和導(dǎo)出私鑰。但Bitcoin core 存在明顯的缺陷,其數(shù)據(jù)量過(guò)大,且私鑰管理不方便。為解決上述問(wèn)題,SPV 錢(qián)包和HD 錢(qián)包應(yīng)運(yùn)而生,SPV 只保留區(qū)塊鏈的一部分,數(shù)據(jù)量少,交易速度快,HD能夠有效管理多個(gè)私鑰,但兩項(xiàng)錢(qián)包技術(shù)都犧牲了安全性。
比特幣的開(kāi)發(fā)者一直致力于嘗試使用不同的方案開(kāi)發(fā)出安全有效的比特幣密鑰管理軟件。上述錢(qián)包都屬于線上軟件錢(qián)包,安全性低,且用戶可能因個(gè)人私鑰管理不當(dāng)導(dǎo)致資產(chǎn)丟失。為此,硬件錢(qián)包、托管錢(qián)包、門(mén)限錢(qián)包技術(shù)相繼出現(xiàn)[13]。硬件錢(qián)包離線產(chǎn)生私鑰,解決了軟件錢(qián)包線上安全性問(wèn)題,但便攜性差;托管錢(qián)包將私鑰交于第三方管理,能防止個(gè)人保管不當(dāng)丟失資產(chǎn)情況,但一定程度上違背了區(qū)塊鏈去中心的思想;門(mén)限錢(qián)包私鑰分割處理,安全性高,且其門(mén)限特性可彌補(bǔ)三類錢(qián)包的安全缺陷,是錢(qián)包可發(fā)展方向。下面是對(duì)四類錢(qián)包的具體介紹。
第一個(gè)軟件錢(qián)包是中本聰在2009 年開(kāi)發(fā)的,名為Bitcoin-Qt,后改名為Bitcoin core。錢(qián)包將私鑰和用戶數(shù)據(jù)儲(chǔ)存在電腦的Berkeley 數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)用C 語(yǔ)言編寫(xiě),并用二進(jìn)制儲(chǔ)存關(guān)鍵數(shù)據(jù),默認(rèn)情況下,這個(gè)數(shù)據(jù)庫(kù)是不加密的,但用戶可以通過(guò)菜單選項(xiàng)“設(shè)置->加密錢(qián)包”來(lái)選擇加密。除了錢(qián)包中的比特幣私鑰和公鑰外,該數(shù)據(jù)庫(kù)還存儲(chǔ)各種用戶數(shù)據(jù),如聯(lián)系人(基本上是標(biāo)簽和公共地址之間的關(guān)聯(lián))和錢(qián)包的交易歷史。Bitcoin core還允許用戶將錢(qián)包文件備份到磁盤(pán)上的某個(gè)位置[14]。
Bitcoin core 是款‘重'錢(qián)包,錢(qián)包保留了完整的區(qū)塊鏈。且錢(qián)包能夠管理比特幣、交易、記錄查詢、節(jié)點(diǎn)維護(hù),也被稱為全節(jié)點(diǎn)錢(qián)包。圖4是全節(jié)點(diǎn)的結(jié)構(gòu)圖。圖中挖礦用虛線標(biāo)記是因中本聰客戶端中未包含這項(xiàng)功能。
圖4 全節(jié)點(diǎn)邏輯結(jié)構(gòu)
圖4 中Bitcoin core保留了完整區(qū)塊鏈,其優(yōu)點(diǎn)如下:
(1)完整的客戶端提供高級(jí)的管理和獨(dú)立性可直接獨(dú)立驗(yàn)證所有交易[15],不依賴任何服務(wù)器或第三方,便攜性高。
(2)終端用戶可以驗(yàn)證軟件的二進(jìn)制是否對(duì)應(yīng)源包,從而防止源版本和二進(jìn)制版本之間微小的、未檢測(cè)到的惡意差異[10]。這種類型的開(kāi)發(fā)消除了開(kāi)放源碼開(kāi)發(fā)過(guò)程中的透明度差距,所以,Bitcoin core安全性高。
(3)可防止礦商欺騙,因其能檢查接收的每一塊交易并確保該塊中的一切是完全有效的——允許信任該塊,無(wú)需信任創(chuàng)建礦商。這有效防止礦商欺騙Bitcoin core 用戶接受違反2 100 萬(wàn)比特幣上限或違反其他重要規(guī)則的區(qū)塊。其他錢(qián)包的用戶沒(méi)有這種安全級(jí)別,易接受偽造交易或被劫持區(qū)塊鏈。表1 給出了Bitcoin core和其他錢(qián)包的安全性比較。
表1 錢(qián)包安全性分析
Bitcoin core 因‘重'屬性——保留完整區(qū)塊鏈,使其也存在如下問(wèn)題:
(1)錢(qián)包每次交易會(huì)帶上大量的數(shù)據(jù)賬本,首次使用需一次性下載約20 GB的數(shù)據(jù),每月還需額外下載5~10 GB,且第一次啟動(dòng)Bitcoin core大約需要4 h,每天大約需要5 min來(lái)更新,速度較慢。用戶獲取賬戶余額,要求Bitcoin core必須在線,用戶必須等待,直到下載完整的區(qū)塊鏈副本。由于區(qū)塊鏈的大小,這可能需要幾個(gè)小時(shí)到幾天來(lái)完成。所以錢(qián)包僅適合高端用戶使用。
(2)比特幣每次交易后都會(huì)盡可能使用新的地址。為防止地址對(duì)應(yīng)的私鑰丟失,在Bitcoin core錢(qián)包中,每次使用后都會(huì)將錢(qián)包文件加上日期進(jìn)行備份。當(dāng)Bitcoin core 錢(qián)包創(chuàng)建了大數(shù)量的錢(qián)包地址時(shí),這些地址對(duì)應(yīng)的私鑰管理就成為了問(wèn)題。Bitcon core不能有效管理私鑰。
基于上述問(wèn)題,提出了下面兩種解決方案:
(1)SPV技術(shù)
針對(duì)Bitcoin core 數(shù)據(jù)量大、速度慢的問(wèn)題,開(kāi)發(fā)者提出了SPV 錢(qián)包技術(shù)。SPV 錢(qián)包是將錢(qián)包的部分功能剝離出來(lái),只是一個(gè)支付驗(yàn)證,而對(duì)于完整的交易驗(yàn)證由核心節(jié)點(diǎn)完成,錢(qián)包在不下載區(qū)塊鏈的情況下驗(yàn)證交易是否是區(qū)塊的一部分,所以SPV錢(qián)包交易速度快。圖5給出了SPV錢(qián)包的原理。
圖5 SPV錢(qián)包的原理
過(guò)程如下:
①下載完整的區(qū)塊頭數(shù)據(jù)(很大減少了賬本數(shù)據(jù)量)。
②若想驗(yàn)證支付交易,則需算出交易的哈希值txHash。
③搜索txHash所在位置的區(qū)塊,驗(yàn)證這個(gè)區(qū)塊的區(qū)塊頭有沒(méi)有在賬本數(shù)據(jù)中。
④找到這個(gè)區(qū)塊中用來(lái)計(jì)算merkle根的哈希值。
⑤計(jì)算merkle根。
⑥若上一步得到的結(jié)果與這個(gè)區(qū)塊的merkle 根相等,則支付交易存在。
由上述原理,得SPV錢(qián)包只需連接到區(qū)塊鏈中的完整節(jié)點(diǎn)(大約3 000 個(gè)完整節(jié)點(diǎn)中的一個(gè)),并將區(qū)塊頭而不是所有區(qū)塊儲(chǔ)存在本地。在交易期間,錢(qián)包向連接的遠(yuǎn)程節(jié)點(diǎn)請(qǐng)求交易信息,包括交易的副本和merkle樹(shù),通過(guò)儲(chǔ)存在merkle樹(shù)結(jié)構(gòu)中的信息計(jì)算和驗(yàn)證交易的有效性[15]。SPV 錢(qián)包節(jié)省了存儲(chǔ)空間和帶寬,能夠保障錢(qián)交易速度,但錢(qián)包存在明顯缺陷:
①錢(qián)包只能得出支付交易是否被發(fā)起,不能確定交易最終是否會(huì)進(jìn)入主鏈。
②安全性低。使用SPV錢(qián)包時(shí),攻擊者可以在使用私鑰時(shí)竊取私鑰,因?yàn)镾PV錢(qián)包只用加密方式保護(hù)其私鑰。如果攻擊者對(duì)存儲(chǔ)在本地?cái)?shù)據(jù)庫(kù)中的區(qū)塊頭進(jìn)行攻擊[16],則不能確保驗(yàn)證結(jié)果的準(zhǔn)確性。除此之外,若攻擊者篡改了交易的地址,比特幣將會(huì)直接轉(zhuǎn)入攻擊者的錢(qián)包。
對(duì)于以上問(wèn)題,Dai 等在文獻(xiàn)[17]提出了一種基于Trustzone 的區(qū)塊鏈輕量級(jí)錢(qián)包,Trustzone 將系統(tǒng)的硬件和軟件源分為安全和不安全兩部分,所有敏感操作在安全部分進(jìn)行。通過(guò)在安全執(zhí)行環(huán)境中驗(yàn)證事務(wù)來(lái)保護(hù)驗(yàn)證過(guò)程。并通過(guò)加密使本地塊頭對(duì)于Rich OS 系統(tǒng)直接不可讀。圖6 是錢(qián)包的具體結(jié)構(gòu),方案通過(guò)隔離,保護(hù)了私鑰和區(qū)塊頭,解決了SPV安全性低的問(wèn)題,但也存在缺陷,即很多設(shè)備不支持Trustzone技術(shù)。
(2)HD技術(shù)
針對(duì)Bitcoin core 不能管理多個(gè)私鑰,分層確定性錢(qián)包(簡(jiǎn)稱HD 錢(qián)包)的提出解決了這一難題。HD 錢(qián)包屬于確定性錢(qián)包的一種,通過(guò)種子生成多個(gè)私鑰。種子是隨機(jī)生成的數(shù)字,數(shù)字包含了索引號(hào)或者可生成私鑰的鏈碼。種子可收回所有已產(chǎn)生的私鑰,只需在初始創(chuàng)建時(shí)簡(jiǎn)單備份[12],只要有種子就能找回私鑰。錢(qián)包[9]能夠通過(guò)生成子私鑰的偽隨機(jī)序列維護(hù),減輕了維護(hù)的負(fù)擔(dān)。在HD錢(qián)包中,主私鑰d與子私鑰di存在如下關(guān)系:di=Hash(i,d)
其中Hash是加密的哈希函數(shù)。
圖6 基于Trustzone的區(qū)塊鏈輕量級(jí)錢(qián)包
如2.2 節(jié)所述,種子由助記詞通過(guò)密鑰延伸函數(shù)得到,為512位,而由種子到私鑰的具體生成過(guò)程如下:
①將512 位的種子分成左右兩部分,左邊是256 位的母密鑰,右邊是256位的鏈碼,如圖7所示。
圖7 母密鑰產(chǎn)生過(guò)程
②將索引、母密鑰、鏈碼合在一起后使用HMACSHA512函數(shù)散列得到512位的散列。
③將散列分成左右兩部分,右邊是256 位的子鏈的鏈碼,左邊是256 位,以及索引號(hào)被加載在母密鑰上產(chǎn)生子密鑰,如圖8所示。
圖8 子密鑰產(chǎn)生過(guò)程
由圖8,可知母私鑰加上母鏈碼可得到子私鑰,同理,母公鑰加上鏈碼也可得到子公鑰,無(wú)需私鑰。在HD錢(qián)包中,若用戶創(chuàng)建和發(fā)布主公鑰,任何人可以通過(guò)主公鑰計(jì)算子公鑰序列,但由主公鑰不足以恢復(fù)私鑰。錢(qián)包的主私鑰生成逐層的子私鑰,除此,主公鑰也能生成子公鑰,圖9 是主密鑰與子密鑰的關(guān)系圖,需注意,主公鑰生成子公鑰的過(guò)程不需要私鑰的參與。
圖9 主密鑰與子密鑰關(guān)系
HD 錢(qián)包將私鑰和公鑰隔離。在HD 錢(qián)包中,主私鑰由一個(gè)隨機(jī)數(shù)生成,而子私鑰由主私鑰通過(guò)一個(gè)確定且不可逆算法來(lái)產(chǎn)生。HD錢(qián)包的優(yōu)勢(shì)如下:
①交易后,不用備份新增的地址的私鑰,只需要備份主私鑰即可,節(jié)約儲(chǔ)存空間且可管理多個(gè)私鑰。
②便捷性高,如只需要主公鑰或某子公鑰,即可查看下級(jí)數(shù)據(jù)。不僅如此,HD 還能根據(jù)上述的特點(diǎn)設(shè)定不同層級(jí)權(quán)限,可以查看余額情況等。
但HD 錢(qián)包的分層特點(diǎn),使錢(qián)包存在安全缺陷,各私鑰之間具有了固定的關(guān)系,攻擊者能夠通過(guò)任何一個(gè)子私鑰加上主公鑰恢復(fù)主私鑰。
為解決這一問(wèn)題,文獻(xiàn)[9]提出了一種新的HD 錢(qián)包。使用陷門(mén)哈希函數(shù)來(lái)發(fā)送簽名,不直接給任何人私鑰進(jìn)行簽名。且對(duì)任何子節(jié)點(diǎn)隱藏私鑰,可以防止關(guān)聯(lián)攻擊。錢(qián)包提供了兩個(gè)公鑰之間的不可鏈接性,實(shí)現(xiàn)了用戶匿名、公鑰派生和高可擴(kuò)展性。文獻(xiàn)[18]提出新的HD 錢(qián)包來(lái)對(duì)抗這種攻擊。在主公鑰大小為O(m)的情況下,泄露少于m 個(gè)主私鑰是安全的。這是因?yàn)殄X(qián)包采用的不是一個(gè)主私鑰,而是m 個(gè)。若泄露m 個(gè)秘密,則方案不可行。
HD 錢(qián)包的最大安全性問(wèn)題是各私鑰之間的關(guān)聯(lián)性,因此,如何隱藏這種關(guān)聯(lián)性需要進(jìn)一步的研究。
3.1.1 Electrum
第一款采用HD 技術(shù)的錢(qián)包是Electrum,對(duì)比與全節(jié)點(diǎn)錢(qián)包Bitcoin core,采用了SPV 技術(shù),是目前流行的一種輕量級(jí)錢(qián)包[18]。
Electrum 與Bitcoin core 的區(qū)別在于:在Electrum中,數(shù)據(jù)以JSON格式存儲(chǔ)在文件中;關(guān)鍵材料被存儲(chǔ)為基于文本的數(shù)據(jù),默認(rèn)情況下,Electrum 中的私有數(shù)據(jù)(種子和主私有密鑰)采用AES-256-CBC 加密[18],私鑰只會(huì)在簽署交易時(shí)被短暫解密。Electrum 使用分層確定性錢(qián)包,所有密鑰都來(lái)自單個(gè)主密鑰對(duì)。在錢(qián)包初始化之后,37 個(gè)密鑰對(duì)將被預(yù)先計(jì)算并顯示在錢(qián)包的“地址”選項(xiàng)卡中。此外,在錢(qián)包初始化期間,Electrum 生成13 單詞的種子,從這些種子中派生出錢(qián)包中的主私鑰(以及所有私鑰)。種子短語(yǔ)類似BIP39,但不完全BIP39 兼容。該種子可由用戶記憶,并允許用戶利用種子恢復(fù)錢(qián)包中的所有值。
Electrum錢(qián)包的優(yōu)勢(shì)在于:
(1)速度非???,占用空間少。采用SPV技術(shù),與處理比特幣系統(tǒng)最復(fù)雜部分的高性能服務(wù)器一起使用,只需下載區(qū)塊鏈的一部分。
(2)支持HD技術(shù),能有效管理多個(gè)私鑰。所以Elec‐trum 是低資源使用的錢(qián)包。但Electrum 也包含了SPV和HD錢(qián)包的缺陷:
①不能有效地保護(hù)自己的私鑰、交易、本地區(qū)塊頭,操作系統(tǒng)可以輕易竊取他們的隱私信息。
②使用需連接SPV查詢服務(wù)器,服務(wù)器可將用戶的支付歷史聯(lián)系記錄用戶的IP地址。
Electrum安全性低。如文獻(xiàn)[19]中,通過(guò)離線暴力破解了Electrum 錢(qián)包。作者使用欺騙引擎(Cheat Engine)提出關(guān)鍵字,并嘗試單詞列表中12 個(gè)種子密碼可能的組合,利用觸發(fā)器從提取的數(shù)據(jù)集中創(chuàng)建可能的組合,最后用多個(gè)虛擬機(jī)加速離線蠻力攻擊,成功地破解了Electrum 錢(qián)包。一旦找到密碼,就可以恢復(fù)錢(qián)包中包含的所有比特幣。即使從未出現(xiàn)過(guò)對(duì)比特幣錢(qián)包的訪問(wèn),這種恢復(fù)也是可能的,因此,Electrum 錢(qián)包的安全性存在問(wèn)題,如何提高安全性,需要進(jìn)一步的研究。
3.1.2 軟件錢(qián)包總結(jié)
軟件錢(qián)包無(wú)論全節(jié)點(diǎn)錢(qián)包Bitcoin core 還是輕節(jié)點(diǎn)Electrum 等其他錢(qián)包,都將密鑰存儲(chǔ)在本地可訪問(wèn)文件中,有幾個(gè)優(yōu)點(diǎn):(1)用戶沒(méi)有額外的認(rèn)知負(fù)擔(dān),只有軟件才能訪問(wèn)文件。(2)密鑰的大小比較小,可將無(wú)數(shù)的密鑰存儲(chǔ)在磁盤(pán)上。(3)軟件可自動(dòng)生成密鑰并創(chuàng)建交易,無(wú)需額外的輸入或操作。
但同時(shí)軟件錢(qián)包還會(huì)產(chǎn)生幾個(gè)威脅[20]:任何可以訪問(wèn)用戶應(yīng)用程序文件夾的應(yīng)用程序都可以讀取存儲(chǔ)私有密匙的文件。惡意軟件作者可能會(huì)利用這種管理方法,訪問(wèn)本地文件會(huì)導(dǎo)致對(duì)手能立即訪問(wèn)受害者的資金。2011年,Symantec發(fā)現(xiàn)了第一個(gè)竊取私人密鑰的惡意軟件[21],隨后又發(fā)現(xiàn)了許多類似的惡意軟件。此外,錢(qián)包用戶可能會(huì)無(wú)意地共享本地存儲(chǔ)的文件(如通過(guò)共享網(wǎng)絡(luò),離線備份或共享網(wǎng)絡(luò)驅(qū)動(dòng)器)或不小心刪除文件導(dǎo)致資產(chǎn)丟失。
某些軟件錢(qián)包允許用用戶選擇的密碼或口令對(duì)本地存儲(chǔ)的錢(qián)包文件進(jìn)行加密。但有密碼保護(hù)的錢(qián)包只針對(duì)底層存儲(chǔ)設(shè)備的物理盜竊,如文件需密碼的強(qiáng)力破解才會(huì)被盜[20]。但若合理地假設(shè)存在一個(gè)擊鍵記錄模塊,則有密碼保護(hù)的錢(qián)包與沒(méi)有加密的錢(qián)包只是細(xì)微的區(qū)別。有密碼保護(hù)的錢(qián)包多了可恢復(fù)性和可用性,減輕了物理盜竊。但若忘記密碼,同樣失去錢(qián)包的余額,因沒(méi)有恢復(fù)的機(jī)制。且用戶必須在進(jìn)行新交易時(shí)輸入密碼解鎖錢(qián)包,有密碼保護(hù)的錢(qián)包可能會(huì)誤導(dǎo)用戶以為密碼本身提供進(jìn)入資金的途徑,不管儲(chǔ)存錢(qián)包設(shè)備在哪,這與基于網(wǎng)絡(luò)的網(wǎng)上銀行的傳統(tǒng)思維模式是一致的,但實(shí)際用戶無(wú)法通過(guò)簡(jiǎn)單地輸入加密密碼在新設(shè)備上存取資金,除非錢(qián)包文件也轉(zhuǎn)移到新設(shè)備。
綜上,軟件錢(qián)包將私鑰儲(chǔ)存在本地設(shè)備,錢(qián)包始終受到來(lái)自網(wǎng)絡(luò)的安全威脅,且錢(qián)包用戶易因個(gè)人操作導(dǎo)致資產(chǎn)丟失。針對(duì)以上問(wèn)題,開(kāi)發(fā)者提出硬件錢(qián)包和托管錢(qián)包技術(shù)。
為了進(jìn)一步保護(hù)比特幣私鑰免受基于惡意軟件的威脅,將私鑰離線存儲(chǔ)在某種形式的移動(dòng)媒體上,比如USB盤(pán),這類保護(hù)技術(shù)稱為硬件錢(qián)包技術(shù)。硬件錢(qián)包解決了軟件錢(qián)包面臨的網(wǎng)絡(luò)攻擊問(wèn)題,且可使用傳統(tǒng)的物理安全技術(shù)(如,將驅(qū)動(dòng)器存儲(chǔ)在防火保險(xiǎn)箱中)進(jìn)一步提高安全性。硬件錢(qián)包的主要特點(diǎn)如下:
(1)安全性高
私鑰離線產(chǎn)生,與網(wǎng)絡(luò)隔離,且永遠(yuǎn)不會(huì)離開(kāi)錢(qián)包[13],避免了惡意軟件攻擊,且傳統(tǒng)物理手段可提高安全性,是較安全的私鑰儲(chǔ)存方式。
(2)便攜性差
錢(qián)包需與比特幣網(wǎng)絡(luò)連接的設(shè)備組合使用,如用戶電腦、智能手機(jī)等。且設(shè)備連接到比特幣網(wǎng)絡(luò)發(fā)送交易,但不能簽署交易。當(dāng)交易發(fā)生時(shí),硬件錢(qián)包對(duì)其進(jìn)行簽名并將其發(fā)送回設(shè)備,設(shè)備再將簽名后的交易廣播到比特幣網(wǎng)絡(luò)中,過(guò)程較繁瑣,速度較慢。具體交易如圖10 所示。離線存儲(chǔ)使軟件無(wú)法立即使用錢(qián)包,除非附近有離線存儲(chǔ)媒體,否則用戶無(wú)法直接花費(fèi)貨幣。如較流行的TREZOR 硬件錢(qián)包[22],交易如圖11 所示,每次都需USB 連接電腦配合網(wǎng)頁(yè)或是客戶端使用,操作繁瑣,存在黑客攻擊的風(fēng)險(xiǎn)。
圖10 硬件錢(qián)包交易過(guò)程
圖11 TREZOR交易過(guò)程
為解決硬件錢(qián)包便攜性問(wèn)題,文獻(xiàn)[8]中,Bamert 等提出BlueWallet,該錢(qián)包系統(tǒng)通過(guò)使用藍(lán)牙與創(chuàng)建無(wú)簽名交易的實(shí)體進(jìn)行通信,能夠構(gòu)建一個(gè)具有低功耗的設(shè)備,圖12 是藍(lán)牙錢(qián)包系統(tǒng)概述圖。BlueWallet簽署比特幣交易,授權(quán)比特幣的轉(zhuǎn)移,無(wú)需連接到比特幣網(wǎng)絡(luò)。錢(qián)包允許在簽名之前獨(dú)立檢查事物細(xì)節(jié),因而可直接作為電子錢(qián)包和銷售點(diǎn)結(jié)合使用,成為現(xiàn)金和信用卡的替代品。BlueWallet 最大程度簡(jiǎn)化硬件錢(qián)包的鏈接流程,提高了便攜性,通訊速度快,且避免了黑客攻擊風(fēng)險(xiǎn)。但由于交易是由不受信任的一方創(chuàng)建的,必須在Blue‐Wallet 中實(shí)現(xiàn)額外的安全措施,以盡量減少用戶所招致的風(fēng)險(xiǎn),文獻(xiàn)中并沒(méi)有提出解決方案。
硬件錢(qián)包雖然永不觸網(wǎng),能夠杜絕來(lái)自網(wǎng)絡(luò)的攻擊,保證敏感信息的安全。但是在交易時(shí)始終需要中間設(shè)備進(jìn)行鏈接,不夠便攜,且在生成和顯示錢(qián)包地址[23]時(shí),攻擊者可通過(guò)中間人攻擊將加密貨幣轉(zhuǎn)移到一個(gè)虛假地址。即使是BlueWallet,也不能抵抗中間人攻擊。因此,研究如何抵抗中間人攻擊和如何提高便攜性是硬件錢(qián)包的主要發(fā)展方向。
軟件錢(qián)包和硬件錢(qián)包都存在用戶因個(gè)人保管問(wèn)題導(dǎo)致資產(chǎn)丟失的風(fēng)險(xiǎn),托管錢(qián)包的出現(xiàn)解決了這個(gè)難題。所謂托管錢(qián)包[20],是指錢(qián)包由三方服務(wù)器(web 服務(wù))進(jìn)行保管,用戶不用自己控制私鑰,私鑰被存儲(chǔ)在第三方的服務(wù)器中,意味著用戶對(duì)第三方服務(wù)器的高度信任。錢(qián)包web 服務(wù)通過(guò)標(biāo)準(zhǔn)的web 身份驗(yàn)證機(jī)制(如密碼或雙因素身份驗(yàn)證)為用戶提供對(duì)事務(wù)性功能的訪問(wèn),用戶使用比特幣只需訪問(wèn)第三方,與普通的服務(wù)器一樣,需輸入口令和驗(yàn)證碼,在得到身份驗(yàn)證后向服務(wù)器發(fā)送請(qǐng)求。
錢(qián)包優(yōu)勢(shì)在于:貨幣可隨時(shí)提取,便攜性高;允許以法定貨幣買賣比特幣的貨幣交換服務(wù);且用戶不用擔(dān)心忘記私鑰或助記詞,降低了資產(chǎn)因個(gè)人事務(wù)丟失的風(fēng)險(xiǎn)。托管錢(qián)包安全性較低,原因在于:
(1)外部網(wǎng)絡(luò)攻擊。服務(wù)器因持有大量比特幣易成為攻擊點(diǎn),造成單點(diǎn)故障。目前已經(jīng)出現(xiàn)了許多攻擊托管錢(qián)包的事件,造成了大量的比特幣的損失[24-25]。Mt.Gox 的崩潰[26]就是失敗的一個(gè)例子。公司丟失了65 萬(wàn)比特幣,Mt Gox破產(chǎn)了,用戶無(wú)法收回他們的錢(qián)。
(2)內(nèi)部人員攻擊。錢(qián)包不能防止第三方服務(wù)器的欺騙,第三方可攜款潛逃,或?qū)ν庑Q被黑客攻破。
針對(duì)(1),一種應(yīng)對(duì)盜竊的措施是托管錢(qián)包只將一小部分資金放在網(wǎng)上(稱為熱儲(chǔ)存),而將大部分資金儲(chǔ)存在網(wǎng)下的冷庫(kù)中。但這樣做的缺點(diǎn)是,如果熱存儲(chǔ)量耗盡,會(huì)導(dǎo)致用戶事務(wù)延遲。因此,如何提高托管錢(qián)包的安全性值得研究。
針對(duì)上述的軟件錢(qián)包、硬件錢(qián)包和托管錢(qián)包的安全缺陷,研究者提出門(mén)限錢(qián)包技術(shù)。軟件錢(qián)包、硬件錢(qián)包和托管錢(qián)包的私鑰都集中儲(chǔ)存在一個(gè)位置,易造成單點(diǎn)安全風(fēng)險(xiǎn)。而門(mén)限錢(qián)包技術(shù)是將密鑰進(jìn)行分割,簽名必須由超過(guò)門(mén)限閾值的一組計(jì)算機(jī)授權(quán)。具體來(lái)說(shuō),方案將秘密分成了n 個(gè)部分,而每個(gè)部分由一個(gè)參與者保管,t 個(gè)或多于t 個(gè)的參與者可以重構(gòu)秘密,而少于t 個(gè)的參與者無(wú)法得到關(guān)于秘密的任何信息,這種方案被稱為(t,n)秘密分割門(mén)限方案,t就是閾值。具體如圖13所示。
在圖13 中,將私鑰在各參與者間共享,任意一個(gè)參與者不能獲得有關(guān)私鑰的任何信息,從而能夠有效避免單點(diǎn)故障問(wèn)題。除非攻擊多于t 個(gè)參與者并成功獲得其秘密份額,否則不能獲得完整的私鑰。
圖13 秘密分割重構(gòu)圖
門(mén)限方案大多基于Shamir 秘密分割思想實(shí)現(xiàn),Shamir采用拉格朗日插值多項(xiàng)式[27],具體如下:(1)可信的第三方隨機(jī)選擇t-1次多項(xiàng)式方程為:f(x)=a0+a1x+a2x2+…+at-1xt-1mod q其中ai∈Z(q),i=1,2,…,t-1。
Shamir門(mén)限方案只能做加法運(yùn)算,乘法和求逆運(yùn)算將增加多項(xiàng)式的階。但比特幣系統(tǒng)使用ECDSA 密鑰,若想采用門(mén)限方案來(lái)保護(hù)錢(qián)包賬戶的安全,唯一方法是使用ECDSA 門(mén)限簽名算法,該方法需要用到乘法和求逆運(yùn)算。比特幣雖有一個(gè)內(nèi)置的“多簽名”功能來(lái)進(jìn)行分割控制,使用這種功能會(huì)嚴(yán)重?fù)p害參與者的機(jī)密性和匿名性,最終導(dǎo)致ECDSA門(mén)限簽名算法使用較弱定義。如文獻(xiàn)[28]中,雖然t 個(gè)參與者就可以重構(gòu)密碼,但要求n ≥2t-1才能完成簽名,實(shí)現(xiàn)起來(lái)有一定難度。為解決這個(gè)問(wèn)題,Gennaro 提出了一種高效、優(yōu)化的閾值DSA算法[29],是第一個(gè)通用的閾值DSA 方案,只需要n=t-1就能完成簽名。該方案是唯一一個(gè)完全兼容比特幣的方案,而且它的效率足夠高,可以成為任何需要閾值簽名方案的用例的真正候選方案。
前面的門(mén)限秘密共享系統(tǒng)將信息分發(fā)到一組服務(wù)器上,但接下來(lái)的問(wèn)題是用戶如何對(duì)這些服務(wù)器進(jìn)行身份驗(yàn)證。在所有服務(wù)器上重用相同的密碼只會(huì)增加密碼的安全漏洞,而讓每個(gè)服務(wù)器記住不同的強(qiáng)密碼是不現(xiàn)實(shí)的。
為了解決這個(gè)問(wèn)題,Bagherzandi 等人首次提出了密鑰保護(hù)秘密分享(Password-Protected Secret Sharing,PPSS)方案[30],PPSS 是一種線上門(mén)限方案。文獻(xiàn)[30]中,PPSS 解決方案在初始化和重構(gòu)期間假定用戶和每個(gè)服務(wù)器之間存在經(jīng)過(guò)PKI 身份驗(yàn)證的通道。在初始化階段,秘密與密碼以及一些服務(wù)器信息一起處理,以便在n 個(gè)獨(dú)立的服務(wù)器之間分發(fā)秘密,最后,每個(gè)服務(wù)器上只存儲(chǔ)公共信息。在重構(gòu)階段,用戶可以僅使用自己的密碼與任意t+1個(gè)誠(chéng)實(shí)服務(wù)器進(jìn)行交互,就能恢復(fù)自己的秘密。如果公共信息被更改,那么密碼的知識(shí)就足以檢測(cè)到它。
PPSS協(xié)議[31-32]滿足下面兩個(gè)性質(zhì):
(1)用戶可以使用與初始化階段相同的密碼執(zhí)行重構(gòu)協(xié)議,從而檢索數(shù)據(jù),并且只要至少有t+1個(gè)可靠的服務(wù)器可用,就保證能夠成功。
(2)攻擊者即使控制了多達(dá)t 臺(tái)服務(wù)器,除了使用另一臺(tái)服務(wù)器進(jìn)行在線字典攻擊外,也無(wú)法了解有關(guān)該秘密的任何信息。
性質(zhì)(1)保證了即使對(duì)手入侵所有服務(wù)器,并提供一致但虛假的公共信息,也不能讓用戶重構(gòu)和接受與用戶最初存儲(chǔ)的秘密不同的秘密。除此之外,只要用戶不中斷與至少t+1誠(chéng)實(shí)服務(wù)器的通信,性質(zhì)(2)就能保證秘密的恢復(fù)[33]。
PPSS 方案很快吸引了研究者們的注意。但大多PPSS 方案都采用證明協(xié)議防止分發(fā)者或成員間的欺騙行為,而證明協(xié)議計(jì)算量大,使PPSS 方案算法較復(fù)雜,在通信上耗費(fèi)巨大。為此,Jarecki 等人在文獻(xiàn)[34]中提出的PPSS 方案,在輪通信中是最優(yōu)的。而Jarecki 等人在文獻(xiàn)[31]中就文獻(xiàn)[34]提出的方案進(jìn)行了改進(jìn),不僅降低了計(jì)算成本,還在保持最佳輪通信的基礎(chǔ)上,進(jìn)一步降低了通信上面的耗費(fèi)。Abdalla 等人在文獻(xiàn)[33]中僅通過(guò)與每個(gè)服務(wù)器進(jìn)行一輪通信就有效地實(shí)現(xiàn)了健壯性,還避免了任何復(fù)雜的零知識(shí)證明。這是因?yàn)樗麄兊姆桨覆恍枰裎墨I(xiàn)[34]中那樣,在每個(gè)服務(wù)器的單獨(dú)計(jì)算中區(qū)分正確和錯(cuò)誤的共享,與文獻(xiàn)[31]中給出的零知識(shí)證明后一種解決方案相比,其方案在秘密重構(gòu)過(guò)程中只需要在最后進(jìn)行一次全局檢查,大大降低了通信成本。
綜上所述,門(mén)限方案對(duì)于錢(qián)包賬戶的保護(hù)的重要性已經(jīng)引起了研究者的廣泛關(guān)注。門(mén)限方案用于賬戶保護(hù)時(shí)需要兼容ECDSA 算法,但現(xiàn)有的門(mén)限方案普遍存在算法復(fù)雜度太高,擴(kuò)展性差的特點(diǎn)。如何解決這個(gè)問(wèn)題是今后門(mén)限方案發(fā)展需要攻克的難題。而PPSS方案是一種線上的門(mén)限錢(qián)包方案,是在線存儲(chǔ)有價(jià)值的秘密的理想方案,是未來(lái)研究的重點(diǎn)方向。
區(qū)塊鏈錢(qián)包按私鑰產(chǎn)生方式分為硬件錢(qián)包、軟件錢(qián)包、托管錢(qián)包和門(mén)限錢(qián)包。本文從私鑰存儲(chǔ)方式、錢(qián)包的優(yōu)缺點(diǎn)、實(shí)用性等方面對(duì)各類區(qū)塊鏈錢(qián)包進(jìn)行分析總結(jié)。表2是各類錢(qián)包比較表。
(1)硬件錢(qián)包是專為儲(chǔ)存私鑰和進(jìn)行支付的硬件設(shè)備,其特點(diǎn)如下:優(yōu)點(diǎn),安全性高,私鑰離線產(chǎn)生,且永不觸網(wǎng),杜絕了因網(wǎng)絡(luò)攻擊造成的貨幣丟失。缺點(diǎn),便攜性差,每次交易需與區(qū)塊鏈網(wǎng)絡(luò)連接的設(shè)備鏈接,交易過(guò)程繁瑣。硬件錢(qián)包適用于對(duì)安全性要求高且對(duì)便攜性無(wú)特殊要求的用戶。硬件錢(qián)包中主流有TREZOR 錢(qián)包、藍(lán)牙錢(qián)包等。TREZOR錢(qián)包并沒(méi)有解決硬件錢(qián)包便攜性差的問(wèn)題,每次需使用USB 連接網(wǎng)頁(yè)或者客戶端進(jìn)行交易,且存在黑客攻擊風(fēng)險(xiǎn)。而藍(lán)牙錢(qián)包一定程度上改善了TREZOR 錢(qián)包的問(wèn)題,錢(qián)包引入藍(lán)牙技術(shù),使用藍(lán)牙通訊,提高了通訊速度且簡(jiǎn)化鏈接過(guò)程。但藍(lán)牙技術(shù)引入增加了錢(qián)包的成本,且藍(lán)牙錢(qián)包只是改善了硬件錢(qián)包的便攜性,每次仍需鏈接設(shè)備交易,本質(zhì)上仍存在硬件錢(qián)包便攜性問(wèn)題。且現(xiàn)有的硬件錢(qián)包對(duì)中間人攻擊并沒(méi)有好的解決方案。
表2 錢(qián)包比較表
(2)軟件錢(qián)包是桌面錢(qián)包,私鑰儲(chǔ)存在本地設(shè)備,其特點(diǎn)如下:優(yōu)點(diǎn),個(gè)人完全控制自己的幣,不依賴于第三方;便攜性高,與區(qū)塊鏈網(wǎng)絡(luò)連接,可直接進(jìn)行交易。缺點(diǎn),因其私鑰在本地設(shè)備且與網(wǎng)絡(luò)連接,容易受到網(wǎng)絡(luò)攻擊造成資產(chǎn)損失;且普通用戶缺乏專業(yè)知識(shí),可能因保管不當(dāng)造成資產(chǎn)丟失。軟件錢(qián)包適用于要求便攜性的用戶。軟件錢(qián)包主要分為全節(jié)點(diǎn)錢(qián)包和輕錢(qián)包。全節(jié)點(diǎn)錢(qián)包如Bitcoin core 能直接進(jìn)行完整的交易驗(yàn)證,是軟件錢(qián)包中較安全的錢(qián)包,但每次使用會(huì)帶上大量的賬本數(shù)據(jù),且不能有效管理多個(gè)私鑰,僅適合高端用戶。HD 錢(qián)包能夠管理多個(gè)私鑰,只需備份主私鑰即可獲得子私鑰,方便審計(jì),但錢(qián)包私鑰間具有固定關(guān)系,易遭到關(guān)聯(lián)攻擊。輕錢(qián)包是指采用SPV技術(shù)的錢(qián)包,SPV無(wú)需下載區(qū)塊鏈即可進(jìn)行驗(yàn)證交易,比全節(jié)點(diǎn)錢(qián)包交易速度快,但SPV不能確定交易最終是否進(jìn)入主鏈,安全性低。主流的輕錢(qián)包——Electrum 錢(qián)包,采用了SPV 和HD 技術(shù),交易速度極快且能有效管理多個(gè)私鑰,但其也有SPV和HD的缺陷,不能有效保護(hù)自己的私鑰、事務(wù)和本地塊頭。
(3)托管錢(qián)包將私鑰存儲(chǔ)在錢(qián)包服務(wù)商的服務(wù)器上,其優(yōu)點(diǎn)在于能夠避免用戶因個(gè)人保管不當(dāng)導(dǎo)致私鑰丟失或被盜竊。缺點(diǎn)是丟失了區(qū)塊鏈去中心化的特點(diǎn),且大量貨幣儲(chǔ)存在同個(gè)地方,易成為攻擊對(duì)象,造成單點(diǎn)故障。托管錢(qián)包如Bixin、HyperPay 等適用于缺乏專業(yè)知識(shí)且個(gè)人保管存在問(wèn)題的用戶。
(4)門(mén)限錢(qián)包將私鑰分割儲(chǔ)存,簽名必須由超過(guò)門(mén)限閾值的一組計(jì)算機(jī)授權(quán)。除非攻擊多于閾值的參與者并成功獲得他們的秘密份額,否則不能獲得關(guān)于私鑰的任何信息。錢(qián)包特點(diǎn)如下:優(yōu)點(diǎn),基于門(mén)限特性,安全性高,能夠抵抗網(wǎng)絡(luò)攻擊。缺點(diǎn),算法復(fù)雜度高且不可擴(kuò)展,計(jì)算耗費(fèi)大。
綜上所述,傳統(tǒng)的錢(qián)包方案,如硬件錢(qián)包、軟件錢(qián)包、托管錢(qián)包,都將私鑰集中存儲(chǔ)在一個(gè)地方,存在單點(diǎn)風(fēng)險(xiǎn)。而門(mén)限分割儲(chǔ)存私鑰使門(mén)限錢(qián)包成為了錢(qián)包保護(hù)最有效的方案。門(mén)限錢(qián)包中的線上錢(qián)包方案——PPSS方案,是在線存儲(chǔ)有價(jià)值的秘密的理想方案,是未來(lái)研究的重點(diǎn)方向。
為了研究錢(qián)包的安全性問(wèn)題,區(qū)分了內(nèi)部人員攻擊和外部網(wǎng)絡(luò)攻擊進(jìn)行討論。
如表3 所示,軟件錢(qián)包易因個(gè)人保管不當(dāng)導(dǎo)致資產(chǎn)丟失,托管錢(qián)包存在服務(wù)商攜款潛逃的風(fēng)險(xiǎn),所以兩款錢(qián)包既易遭受外部網(wǎng)絡(luò)攻擊,又不能抵抗內(nèi)部人員攻擊。硬件錢(qián)包由于不接觸網(wǎng)絡(luò),能夠抵抗外部網(wǎng)絡(luò)攻擊,對(duì)于內(nèi)部人員攻擊是物理安全——如,用戶可以將私人密鑰存儲(chǔ)在一個(gè)帶視頻監(jiān)控的上鎖的保險(xiǎn)箱中。但硬件錢(qián)包、軟件錢(qián)包和托管錢(qián)包都存在共同的安全隱患,即其私鑰都集中儲(chǔ)存在一個(gè)位置,因此容易造成單點(diǎn)故障。門(mén)限錢(qián)包將私鑰分割共享,避免了單點(diǎn)風(fēng)險(xiǎn),采用證明機(jī)制防止內(nèi)部人員欺騙,且門(mén)限特性能夠抵御外部網(wǎng)路攻擊,所以是最安全的方案。
表3 錢(qián)包安全分析表
此外,門(mén)限錢(qián)包技術(shù)可以協(xié)助傳統(tǒng)錢(qián)包方案的安全性。如在硬件錢(qián)包中引入門(mén)限技術(shù)來(lái)補(bǔ)充物理安全措施,用戶將密鑰分散存儲(chǔ)在不同的位置,而不是存儲(chǔ)在單個(gè)位置,即使單個(gè)位置被盜取,也不能獲取私鑰的任何信息,從而增加硬件錢(qián)包的安全性。同理,門(mén)限方案也可以用來(lái)保護(hù)軟件錢(qián)包不受外部攻擊者的攻擊。將軟件錢(qián)包的私鑰分開(kāi)存儲(chǔ)在多個(gè)地方,攻擊者即使攻破本地設(shè)備也不能盜取貨幣,能提高軟件錢(qián)包的安全性。此外,門(mén)限技術(shù)也能用于托管錢(qián)包,存在兩種形式:第一,服務(wù)商自身提供門(mén)限技術(shù),即用戶將私鑰儲(chǔ)存在服務(wù)商處,服務(wù)商再將私鑰分割,這能抵抗外部網(wǎng)絡(luò)攻擊,但不能防止內(nèi)部人員攻擊。第二,用戶將私鑰分割存儲(chǔ)在多個(gè)服務(wù)商,每個(gè)服務(wù)商僅獲得子份額,能防止服務(wù)商攜款潛逃且能抵御網(wǎng)絡(luò)攻擊。
綜上,門(mén)限錢(qián)包安全性最高,且能與硬件錢(qián)包、軟件錢(qián)包及托管錢(qián)包結(jié)合使用,彌補(bǔ)其安全缺陷,提高安全性。門(mén)限錢(qián)包方案是今后研究錢(qián)包賬戶安全的主流方向。
表2 中,給出了4 類錢(qián)包的具體應(yīng)用?,F(xiàn)有的錢(qián)包應(yīng)用中,軟件錢(qián)包和硬件錢(qián)包的發(fā)展較完善,市面上推出的大多應(yīng)用都屬于這兩類,如較流行的Electrum、TREZOR等;托管錢(qián)包的發(fā)展受到其中心化特點(diǎn)的一定影響;而門(mén)限錢(qián)包方案是較新提出的技術(shù),其研究方案不多,完善的方案更少,所以其應(yīng)用極少,有待發(fā)展。若用戶資產(chǎn)豐厚,建議選用安全性較高的硬件錢(qián)包,如TREZOR、藍(lán)牙錢(qián)包等;若用戶考慮便攜性問(wèn)題,可選擇軟件錢(qián)包,如Electrum 等。若用戶擔(dān)心個(gè)人保管不當(dāng)?shù)膯?wèn)題,可選用托管錢(qián)包類型,如Bixin、HyperPay等。
區(qū)塊鏈技術(shù)發(fā)展日新月異,錢(qián)包安全保護(hù)的重要性持續(xù)提升。但是,目前的錢(qián)包保護(hù)方案都存在一些缺陷,需要繼續(xù)進(jìn)行研究,如:
(1)硬件錢(qián)包每次使用需要繁瑣的鏈接過(guò)程,便攜性差的問(wèn)題阻礙了錢(qián)包的發(fā)展,且對(duì)于內(nèi)部人員攻擊是物理安全,如何同時(shí)提高硬件錢(qián)包的便攜性、安全性值得研究。
(2)軟件錢(qián)包直接與區(qū)塊鏈網(wǎng)絡(luò)連接,容易受到網(wǎng)絡(luò)的各種攻擊。軟件錢(qián)包全節(jié)點(diǎn)錢(qián)包交易過(guò)慢,而輕錢(qián)包采用SPV 技術(shù),交易快但安全性面臨威脅,如何保障軟件錢(qián)包交易速度的基礎(chǔ)上提高安全性需進(jìn)一步研究。
(3)托管錢(qián)包需解決的問(wèn)題是安全性,錢(qián)包既不能防止內(nèi)部人員欺騙,又不能抵御網(wǎng)絡(luò)攻擊,安全性面臨威脅。
(4)門(mén)限錢(qián)包雖是目前保護(hù)錢(qián)包賬戶安全有效的方法,但同時(shí)能兼容ECDSA 算法的方案大多存在計(jì)算量大的問(wèn)題,每次分發(fā)需計(jì)算份額且需驗(yàn)證正確性,而對(duì)于驗(yàn)證過(guò)程大多文獻(xiàn)都采用復(fù)雜的零知識(shí)證明協(xié)議,如文獻(xiàn)[28-32]。所以研究如何簡(jiǎn)化門(mén)限方案,減少計(jì)算上的耗費(fèi)顯得十分重要。
基于上述問(wèn)題,提出幾項(xiàng)未來(lái)的研究方向:
(1)針對(duì)硬件錢(qián)包便攜性和安全性,藍(lán)牙技術(shù)能簡(jiǎn)化鏈接過(guò)程,門(mén)限技術(shù)將私鑰分割儲(chǔ)存,能提高錢(qián)包對(duì)于內(nèi)部攻擊的安全性,采用藍(lán)牙技術(shù)和門(mén)限技術(shù)相結(jié)合,提高便攜性的同時(shí)安全性也得到提高,是值得研究的方向。
(2)軟件錢(qián)包最大的問(wèn)題是安全,引入門(mén)限思想,將軟件錢(qián)包的私鑰分割儲(chǔ)存,攻擊者即使攻擊用戶的電腦也不能獲取私鑰信息。對(duì)于輕錢(qián)包的SPV交易問(wèn)題,主要是如何保護(hù)驗(yàn)證過(guò)程,trustzone 是不錯(cuò)的解決方案,敏感信息在trustzone部分進(jìn)行,有效保護(hù)了SPV 的驗(yàn)證過(guò)程,但很多設(shè)備部支持trustzone 技術(shù),若能代替trust‐zone 技術(shù)的方案,并將此方案與門(mén)限思想結(jié)合,能大大提高輕錢(qián)包的安全性。所以,門(mén)限思想是軟件錢(qián)包安全性方面具有意義的研究方向。
(3)托管錢(qián)包引入門(mén)限技術(shù),既能防止服務(wù)商攜款潛逃,又能抵御網(wǎng)絡(luò)攻擊。如何使門(mén)限技術(shù)與托管錢(qián)包相結(jié)合,值得研究。
(4)門(mén)限技術(shù)計(jì)算量大在于使用的驗(yàn)證機(jī)制,大多方案采用復(fù)雜的零知識(shí)證明。需要研究在效率、性能、易用性方面更好的通信驗(yàn)證機(jī)制,替代現(xiàn)有的零知識(shí)證明等匿名通信證明機(jī)制。
區(qū)塊鏈錢(qián)包系統(tǒng)是區(qū)塊鏈應(yīng)用中以數(shù)字貨幣為代表的數(shù)字資產(chǎn)所有權(quán)的唯一證明,是區(qū)塊鏈系統(tǒng)中至關(guān)重要的一個(gè)安全環(huán)節(jié)。硬件錢(qián)包將密鑰保存在離線的物理存儲(chǔ)介質(zhì)中,防止惡意軟件攻擊,但用戶必須保留一個(gè)額外的設(shè)備來(lái)進(jìn)行事務(wù)處理。軟件錢(qián)包不需要額外設(shè)備就可進(jìn)行交易,所以使用上比硬件錢(qián)包便捷,但硬件錢(qián)包相對(duì)于軟件錢(qián)包來(lái)說(shuō)較安全。托管錢(qián)包利用高度可信的第三方服務(wù)器為用戶提供密鑰托管服務(wù),用戶不再需要自己保管錢(qián)包,這在本質(zhì)上破壞了區(qū)塊鏈的去中心化,同時(shí)第三方托管服務(wù)器也容易受到集中的安全攻擊。門(mén)限錢(qián)包將密鑰分散存儲(chǔ)在多個(gè)設(shè)備中,使用密鑰時(shí)需要多個(gè)設(shè)備共同參與,即使遭遇攻擊也不會(huì)泄露完整的密鑰,所以不會(huì)影響用戶的使用,但該方案算法復(fù)雜度高且不可擴(kuò)展。密鑰保護(hù)秘密分享PPSS方案作為一種線上的門(mén)限錢(qián)包方案,是未來(lái)值得重點(diǎn)關(guān)注的研究方向。