徐蜜雪, 苑 超, 王永娟, 付金華, 李 斌
(數學工程與先進計算國家重點實驗室(信息工程大學),河南 鄭州 450001)
區塊鏈起源于 2008年中本聰發表的比特幣白皮書.比特幣的成功促進了密碼貨幣的發展,從萊特幣開始,成百上千種密碼貨幣出現[1].從2013年開始,越來越多的密碼貨幣愛好者和研究人員開始關注支撐密碼貨幣的區塊鏈.隨著研究的深入,區塊鏈已經不僅應用在以比特幣為代表的加密貨幣中,在數字存證[2]、公益募捐[3]、物聯網[4]、網絡安全[5]等方面都獲得了很好的發展.以比特幣和以太坊(Ethereum)為代表公有鏈[6]發展勢頭迅猛,以超級賬本(hyperledger)[7]為代表的私有鏈[8]和聯盟鏈也獲得了很好的發展.區塊鏈的核心是去中心化、去信任、防篡改、防偽造、可溯源[9],在任何高價值數據的存儲、管理與分享中,區塊鏈都有應用價值.區塊鏈從整體上可分為以可編程貨幣為特征的區塊鏈1.0、以可編程金融為特征的區塊鏈2.0和以可編程社會為代表的區塊鏈3.0.目前,正處于區塊鏈2.0向區塊鏈3.0過渡階段[10].區塊鏈3.0的核心是區塊鏈應用落地,但是目前,區塊鏈應用落地面臨著很多的挑戰,例如安全性和隱私保護的限制、吞吐率的限制、存儲的限制等等.而以IOTA[11]中采用的有向無環圖(directed acyclic graph,簡稱 DAG)[12]為代表的新一代分布式賬本技術正處于快速發展階段,為加快區塊鏈的應用落地提供了借鑒.在區塊鏈快速發展的過程中,安全問題是始終需要面對的問題.私鑰丟失、智能合約代碼漏洞[13]、自私挖礦[14]等已經出現的安全問題都或多或少對區塊鏈的存在與發展帶來了傷害.目前,對區塊鏈安全問題的解決方案大多集中在傳統安全性防御階段,例如算法改進[15-17]、共識算法改進[18]等,這些方案只能在一定程度上緩解區塊鏈的安全問題,并不能從根本上解決.
擬態防御[19]是一種新的網絡安全防御技術,其核心是動態異構冗余,旨在為解決網絡空間不同領域相關應用層次上的基于未知漏洞、后門或病毒木馬等不確定性威脅.目前的區塊鏈可以理解為簡單的同構冗余,每個節點存儲相同的數據,每個共識節點在每一個共識輪采用相同的共識算法,每個節點采用同樣的固定的簽名算法.這種同構的靜態的結構為攻擊者提供了便利,也是目前區塊鏈面臨安全性威脅的根本原因.本文將利用擬態防御技術核心的動態異構冗余架構(dynamic heterogeneous redundancy,簡稱DHR)[20],在區塊鏈原有的同構冗余的基礎上增加動態、異構的成分,從簽名機制和共識機制兩個角度構建動態異構區塊鏈,增強區塊鏈的安全性.這種思想被認為是一種區塊鏈的安全解決方案[21],本文對其進行了更為詳細合理的闡述.
在動態異構共識機制中,每一個共識節點在每一輪共識中通過密碼抽簽技術確定需要采用的共識機制,并完成共識.在傳播共識區塊的同時,需要同時提交共識節點相應的密碼抽簽憑證.根據密碼抽簽憑證判斷此輪的最終共識節點,同時,其他節點對此共識節點的共識區塊和密碼抽簽憑證進行驗證.在動態異構冗余簽名機制中,采用3種不同體制的簽名算法,這3種簽名算法結構不同,難度不同,基于的困難問題也不同.攻擊者即使能夠成功偽造一種簽名算法,也無法使得更改后的數據生效.同時增加了動態的特性,在動態異構冗余簽名機制中,會提前部署更多的簽名算法,例如基于格、基于編碼的后量子簽名算法,一旦有哪種簽名算法被破解,可以隨時更換.
本文第 1節重點介紹動態異構冗余模型,同時對密碼抽簽技術進行簡要介紹.第 2節分別從安全性定義、共識機制、簽名機制和節點處理算法的角度對動態異構區塊鏈的核心內容進行介紹,并給出相應的參數選擇方法,使其滿足定義的安全性.第 3節對第 2節提出的動態異構共識機制和動態異構冗余簽名機制的安全性進一步分析,并給出部分簽名算法效率測試結果.第4節對全文進行總結.
在本文中,H,H1,H2和H3表示4種不同的哈希算法,即H,H1,H2,H3:{0,1}*→{0,1}*.如果A和B都表示二進制串,則A||B表示A和B的級聯.若f表示一個已知值,則F←f表示F取f的值.
動態異構冗余架構是一種基于架構技術的融合式防御方法,其核心思想是引入結構表征的不確定性,使異構冗余架構的執行體具有動態化、隨機化的內在屬性,并在空間上嚴格隔離異構執行體之間的協同途徑或同步機制.DHR理論上要求系統具有視在結構表征的不確定性,包括非周期地從功能等價的異構冗余體池中隨機地抽取若干個元素組成當前服務集,或者重構、重組、重建異構冗余體自身,或者借助虛擬化技術改變冗余執行體內在的資源配置方式或視在運行環境,或者對異構冗余體做預防性或修復性的清洗、初始化等操作,使攻擊者在時空維度上很難有效地再現成功攻擊的場景.
DHR系統一般由輸入代理、異構構件集、動態選擇算法、執行體集和表決器組成(如圖 1所示),其中,異構元素池、異構構件集和策略調度組成執行體集的多維動態重構支撐環節.異構元素池由標準化的軟硬件模塊組成,這些軟硬件模塊按某種規則或者策略組合出m種功能等價、結構不同的構件體,組成異構構件集.異構構件集中的元素,即構件體,我們用Ei表示(i=1,2,…,m).異構構件集的構造可以采用軟硬件模塊的重構、重組、重建、重定義、虛擬化、策略調度等廣義動態化技術措施實現.執行體集由動態選擇算法從異構構件集中選出n個構件體組成,執行體集中的元素稱為執行體,用Aj表示(j=1,2,…,n).任意時刻,DHR架構系統的輸入代理將輸入轉發給執行體集中的各執行體,不同執行體的輸出結果提交給表決器進行表決,得到系統輸出,DHR典型構造如圖1所示.
這種DHR的典型構造可以用DHR(m,n)來描述.
密碼抽簽是一種在分布式網絡中,通過去中心化的方式,利用密碼學技術完成可信、可認證的抽簽選舉的技術.圖靈獎得主Sivio Micali的Algorand區塊鏈協議將密碼抽簽技術運用到了區塊鏈中.在Algorand中,系統需要創建并不斷更新一個參數,稱為種子,種子不可能被攻擊者預測,也不可能被其控制.在每一輪共識過程中,Algorand根據種子公布一個可驗證的隨機函數(verifiable random functions,簡稱VRF).每個用戶利用自己的私鑰執行 VRF,得到一個對應的憑證.憑證滿足一定條件的用戶被認定為此共識輪的驗證者,每個驗證者完成一個區塊,并隨自己的憑證一起公布.此輪中,憑證的字典序最小的驗證者被認定為領導者.最后,所有的驗證者針對領導者的區塊運行拜占庭協議.密碼抽簽在區塊鏈中的應用主要有以下優勢.
· VRF的隨機性質決定了驗證者和領導者的選舉過程很難被預測和操縱;
· 驗證者的選舉過程是秘密進行的,只有當用戶公布自己的憑證時才能證明自己的驗證者身份,但是此時區塊信息已經公布,即使攻擊者可以瞬間腐化驗證者,但是公布的區塊信息已經不能撤回;
· 領導者的產生是在所有的驗證者公布自己的憑證后,通過比較產生的,可以認為是公共選舉產生.
目前,多數區塊鏈可以視為一個靜態同構冗余系統,區塊鏈中的各個節點運用同樣的算法,保存同樣的數據,這樣可以保證單點被攻擊時,整個系統還可以正常運行.但是當所有節點共同依賴的部件,比如簽名算法、共識算法等被攻擊時,整個系統仍然面臨安全威脅.本節將從安全性定義、動態異構共識機制、動態異構冗余簽名機制、共識節點處理算法等4個方面說明擬態區塊鏈應該具有的性質,從而建立擬態區塊鏈系統.
在比特幣系統中,當區塊深度大于6時,可以被認為是大概率安全的.在Algorand系統中,由于采用基于VRF的 PoS,并結合拜占庭容錯協議(Byzantine fault-tolerant algorithm,簡稱 BFT)[22],可以通過設置錯誤參數保證平均 1.9兆年出現一次分叉.擬態區塊鏈的共識機制可以包含傳統公有鏈的工作量證明協議(proof of work,簡稱PoW)、權益證明協議(proof of stake,簡稱PoS),也可以包含小規模節點投票的代表權益證明協議(delegated proof of stake,簡稱DPoS)和BFT,擬態區塊鏈可以使得安全性假設拓展至:存在單一共識機制的分叉攻擊,也可以保證區塊的不可篡改性.state(blockr)表示第r個區塊產生前的總狀態,定義擬態區塊鏈的區塊不可篡改如下.
區塊不可篡改.對區塊鏈某一狀態STATE=state(blockr)和預先設置的可分叉參數ρ,在本區塊后的ρ區塊后STATE不存在于歷史狀態中的概率是可忽略的.
傳統區塊鏈一旦簽名算法出現問題,交易是可以偽造的.以比特幣為例,如果使用的簽名算法 ECDSA被攻擊成功,那么用戶地址對應的比特幣將全部丟失.擬態區塊鏈的簽名機制通過先執行后表決的 DHR模型,使得在安全性假設拓展至:單一簽名算法產生的簽名可偽造的情況下,也可以保證交易的不可偽造.tx表示用戶的某次交易信息,sign(·)表示用戶的簽名,定義動態異構區塊鏈交易的不可偽造如下:
交易不可偽造.對某一已經在鏈上的完整交易信息(tx,sign(H(tx)))和預先設置的可更改參數ρ′(ρ′>ρ),即使某種簽名算法是可偽造的,設tx所在區塊的序列為r,則序列大于r+ρ′的區塊中存在被偽造的交易的概率是可忽略的.
目前,區塊鏈大多只存在一種共識算法,當然也有的區塊鏈采用兩種或者多種共識算法串行運行的機制,例如 Elastico采用工作量證明+拜占庭容錯協議,2-hop采用工作量證明+權益證明機制,Algorand采用權益證明+拜占庭容錯協議等等.共識算法是保證區塊鏈安全的重要因素,現存的共識算法,無論是公有鏈中常用的工作量證明、權益證明,還是聯盟鏈中常用的實用拜占庭容錯算法等的安全性都是在某些假設下保證的.例如工作量證明的安全性要求系統中超過 50%的算力是誠實的,但是已有研究成果說明采取某些措施后,可以得到 50%以上的算力,同時在某些條件下甚至只需要1/3的算力,同樣可以對系統造成嚴重的危害[23,24].
考慮到現有的單個共識機制或者多個共識機制的串行模式都會受到某些攻擊威脅,本文認為,隨機性、動態性是共識機制安全性的根本保證.所以借鑒擬態防御的思想,本文給出的異構共識機制中存在 3種不同的共識算法.同時,動態異構共識機制借用了密碼抽簽技術,在每一共識輪中,每個共識參與者需要根據上一個區塊的哈希值以及目前的區塊序號形成的哈希值的簽名值做一個密碼抽簽憑證,這里的密碼抽簽憑證有兩個功能:一是密碼抽簽憑證最小的用戶在某些勝選的共識算法中具有重要地位,比如PBFT的leader;另外一個功能是根據密碼抽簽憑證確定每個節點在此共識輪中需要采用的共識算法.下面給出動態異構共識機制的具體步驟.
為了更好地描述動態異構共識機制的安全性,對一切與共識不符的行為定義為敵手做出如下假設:
假設1:至少兩種共識參與共識協議的敵手不會超過系統的1/3.
步驟1(確定共識節點).假設此時的共識輪為r,此輪共識的節點數量為nr,sigi(·)表示利用第i個共識參與節點用當前私鑰進行的簽名.

其中,Co1,Co2,Co3表示3種不同的共識算法,這里選定PoW、Casper的PoS和PBFT分別作為3種不同的共識算法.


(2) 以Casper的PoS勝選為例,假設參與投票的PoS權益為rigr,則超過2rigr/3投注率的區塊blockr即作為第r輪最終的區塊,即Blockr←blockr;


圖2給出了動態共識過程.
根據Decker等人的測試結果[25],比特幣中1KB消息的傳播至95%的節點只需要1s,1MB消息傳播到95%的節點不超過1m.而比特幣在線用戶數量超過150萬,根據gossip協議規模和傳播效率的關系,動態異構共識節點在千級時,1MB消息傳播到95%節點不超過6s.
為了給出區塊可分叉參數ρ的值,首先考慮共識協議都至多1/3敵手可以參與節點共識,若區塊共識權益總量為d,設事件X是該區塊共識中敵手的數量,對事件離散化處理后,根據二項分布B(d,1/3)可知:
如果區塊共識是PoW,則敵手生成區塊的平均成功概率滿足:
如果區塊共識是PoS或PBFT,將d看做整數處理,d的值越大,表示離散化程度越高,則敵手生成區塊的平均成功概率滿足:
然后考慮如果存在某個共識算法是可以完全被控制的,即其敵手成功生成區塊的概率為 1,設置一個足夠小的安全參數ε并認為其可以忽略,如果認為共識算法的出現是均勻的,則可分叉參數ρ滿足如下條件:
所以,
設置可分叉參數ρ是滿足條件的最小整數,則得到如下計算結果(見表1).

Table 1 Example of parameters selection表1 參數選取示例
由表1可知,PoS和PBFT敵手攻擊成功概率與共識權益總量分割細度幾乎無關.共識節點數量足夠的大時,可分叉參數ρ的取值只與安全參數ε相關.當ρ設置為 52時,分叉出現的概率即可以忽略不計,所以只需要 52塊后,即可確認區塊不可篡改.
簽名算法的安全性是區塊鏈發展過程中面臨的重要問題.防篡改、防偽造是區塊鏈最重要的特征,但是這些特征的前提是區塊鏈中簽名算法、私鑰生成算法等是安全的.但是現在認為安全的橢圓曲線算法、RSA算法、哈希算法等隨著密碼分析技術、計算技術、量子計算機等的發展,可能會變得不夠安全.IBM和Google等公司不斷宣布關于量子計算機研究的最新進展,2017年,IBM 宣布 50比特的量子計算機原型機也已研制成功,在2018年的美國物理學會上,Google實驗室的公布了最新一代量子處理器Bristlecone,這是一款72位量子位處理器,錯誤率只有1%.最為重要的是,Google實驗室謹慎且樂觀地認為:如果一切運行良好的話,量子霸權將在未來幾個月到來.因此,考慮到未來區塊鏈的安全性,采用抗量子的簽名算法是十分必要的.但是抗量子的簽名算法比基于公鑰的簽名算法復雜度高很多,目前在橢圓曲線算法相對安全的時期換用抗量子的簽名算法會帶來較高的代價.但是一旦量子計算機的性能達到攻擊橢圓曲線算法的能力,將瞬間對區塊鏈系統帶來致命的打擊,因此我們要事先對抗量子簽名算法進行部署準備.
除了量子計算機的威脅外,計算技術、密碼分析技術的發展也對目前的簽名算法帶來威脅,并且一旦某種簽名算法被攻破,則與其采用相同體制,或者基于相同計算難題的簽名算法都將受到威脅.受到擬態防御思想的啟發,對異構冗余系統攻擊的難度大于對同構冗余系統的攻擊難度,同時,對同構冗余系統的攻擊難度又大于對單一系統的攻擊難度.本文認為:目前的區塊鏈系統在系統級是單一系統,雖然從用戶級來看是同構冗余的,為了達到更高的安全等級,本文考慮將單一系統調整為異構冗余系統.這里考慮的異構冗余部分主要集中在簽名算法方面,當然考慮的不是對單一算法的改進,例如環簽名、聚合簽名、門限簽名、多重簽名等,一旦某一種密碼體制受到攻擊,在此密碼體制之上的簽名變種都會受到致命的打擊.本文主要考慮的是采用不同密碼體制的異構冗余.
本文給出了異構簽名算法,其思想簡單,主要是采用 3種簽名算法代替之前的單一的簽名算法.如果考慮對于每一個消息,消息發出者分別利用自己的3個私鑰形成3個簽名,消息的大小為現有系統的3倍,這會影響每個區塊容納消息的數量,進一步影響區塊鏈系統的吞吐率.因此,本節決定采用先執行后表決的 DHR模型,進行交易的輸入腳本中只有一個簽名和該簽名對應的公鑰哈希,輸出腳本中包含 3個簽名對應的公鑰哈希,使得每個消息的大小與現有消息的大小基本相同.在動態異構區塊鏈中的每個節點都擁有 6種簽名算法的公私鑰對,其中 3個公私鑰對{(Pk1,Sk1),(Pk2,Sk2),(Pk3,Sk3)}在現行區塊鏈系統中使用,另外 3個公私鑰對{(Pk4,Sk4),(Pk5,Sk5),(Pk6,Sk6)}作為備用.
為了更好地敘述先決策后表決的DHR模型,需要對交易做出假設.
假設2:公鑰是一次性公鑰;交易類型是1對1交易,且交易后發送方對應地址無余額.
假設是合理的:首先,前向安全的簽名體制公鑰或者 Monero中的一次性公鑰都可以滿足公鑰的一次性;另外,其他交易模型可以根據1對1交易推出.


由于r≥t,ρ′≥ρ,可知r+ρ′≥r+ρ,即在確認攻擊者已經完成攻擊后可以進行決策,這是一種變形的DHR(6,3)構造.不妨設置ρ′為60,則要求用戶在提交交易后110個塊內最好保持可提示狀態,以便于監督是否有敵手通過雙花和分叉對其進行攻擊.動態異構冗余簽名機制還帶來了一個天然的優點,即在交易發布的60個塊內可以撤銷交易,這種撤銷不是通過更改原有數據,而是通過共識添加一個操作,使得撤銷是可以追溯的.
根據動態異構共識機制要求,共識算法產生速度要基本一致,可以通過調整難度參數diff來改變共識的時間,使其保持在穩定狀態;txs是在該階段節點收集到的交易集合.下面結合第2.2節和第2.3節中對于動態異構共識機制和動態異構冗余簽名機制的描述,形成動態異構區塊鏈共識節點處理算法(見表2).

Table 2 Node processing algorithm表2 節點處理算法
· 1/n攻擊
1/n攻擊是指如果攻擊者能夠獲得超過1/n的共識權力,就會導致網絡振蕩、系統崩潰.攻擊者可以通過DoS攻擊來阻止誠信的節點進行正常共識,從而降低自身所需要的共識權重.在擬態區塊鏈中存在 3種不同的共識算法,在動態異構區塊鏈中,共識節點的形成是通過密碼抽簽完成的,且每個共識節點在每個共識輪中要完成的共識任務是不確定的,因此與之前的1/n攻擊相比,在擬態區塊鏈中只擁有單一共識權力的1/n是無法完成攻擊任務的,因此,擬態區塊鏈可以有效地抵御1/n攻擊.
· 類自私挖礦攻擊
自私挖礦攻擊是指共識節點完成共識任務后,并不在第一時間內公布自己的共識區塊,而在此基礎上繼續進行下一輪的共識任務,然后在適當的時候,同時公布自己的多個共識區塊,達到自己獲利以及使其他用戶工作無效的目的.目前,在原始的自私挖礦攻擊的基礎上發展出了多種更加有效的攻擊方法.在擬態區塊鏈中,由于每個共識輪中共識節點的產生是通過密碼抽簽的形式產生,需要大部分共識節點的密碼抽簽憑證的比較.因此,共識過程具有更強的隨機性與不可預測性,而且遇到PoS類和PBFT類的共識,自私挖礦產生的區塊不能被超過2/3共識節點認可,所以可以有效抵御類自私挖礦攻擊.
· 日蝕攻擊
日蝕攻擊通常與 51%攻擊相結合,攻擊者首先發送代幣給接收方,等待交易上鏈后,通過非正常途徑產生大量節點與想要隱瞞的接收方節點鏈接,然后通過強大的共識權力造成區塊分叉,新的區塊包含將原本代幣發送給其他接收方的交易以多次獲利.擬態區塊鏈的下一輪共識與密碼抽簽結果一起公布,只擁有某種強大共識權力的攻擊者不一定會成為下一輪共識節點,而且分叉需要公布大量連續區塊,在難度調節機制中,某類共識塊的連續出現將會提升該類共識塊的出塊難度.因此,擬態區塊鏈可以使得日蝕攻擊更加困難.
· 量子計算機威脅
傳統區塊鏈用的傳統非對稱簽名體系對于量子計算中的 shor算法是不安全的,隨著量子計算機的可計算能力提高,如果不提供一種可以抵抗量子計算的實用策略,區塊鏈上的高價值數據會有很大的安全隱患.但是現有較為安全的后量子非對稱簽名體制公鑰長度過長、簽名速度過慢,對于區塊鏈的性能和存儲都有不利影響.動態異構冗余簽名機制通過將后量子簽名算法公鑰哈希H2(Pk2)存放在區塊上,直到出現問題和需要修改的個例才使用后量子簽名算法,同時實現不安全的簽名算法的快速替換,將可能存在問題的區塊迅速固化.這樣做的好處是:在沒發生問題時,不會使區塊的性能和存儲下降過多.
初始使用的3個簽名機制是SM2算法、基于編碼的CFS簽名算法[26]和傳統RSA算法.其中,本節對SM2算法嵌入了openssl進行了測試,并與比特幣中使用的ECDSA算法做了比較,測試環境見表3.

Table 3 Test environment表3 測試環境
得到如下測試結果,見表4.

Table 4 Test result表4 測試結果
根據各算法的驗證速度可知,擬態區塊鏈快速處理能力受限于SM2算法的驗證時間和共識算法時間.
區塊鏈的安全問題是影響區塊鏈發展的重要問題.從網絡密碼分析的角度看,在算法、協議、實現、使用與系統的各個方面,區塊鏈都存在安全問題.而區塊鏈逐漸被應用在金融、網絡安全等其他核心環境中,在這些環境中,安全性要求都特別高,因此要使得區塊鏈能夠真正得到實際應用,解決其安全性是首要條件.本文從擬態防御的角度出發,分別設計了動態異構共識機制和動態異構冗余簽名機制,從而搭建了擬態區塊鏈架構.對擬態區塊鏈的安全性進行了定義和分析,提出了參數選取方案,并且對簽名機制進行了效率測試.目前,我們的擬態區塊鏈架構的動態異構共識機制還屬于動態異構階段,未來將進一步考慮動態異構冗余架構,增強區塊鏈的安全性.另外,動態異構冗余簽名機制還需要解決后量子密碼算法公鑰量大、算法速度慢的問題,未來會考慮有效的部署方案.