999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Hyperledger Fabric 共識機制優化方案

2021-09-28 07:20:30孟吳同張大偉
自動化學報 2021年8期

孟吳同 張大偉

來源于比特幣[1]的區塊鏈融合了數學、密碼學、計算機科學等多種技術,其去中心化、不可篡改、多方維護等特性使得區塊鏈得到了各個領域的廣泛關注.隨著人們對區塊鏈技術的深入研究和普及推廣,區塊鏈很可能對當今互聯網產生顛覆式的影響.

區塊鏈技術的一個核心問題是在無中心、弱信任的分布式系統中讓各個節點達成共識.所謂共識,簡單來說是讓分布式系統中各個節點對某個值或某種狀態產生相同的看法[2].達成共識的方法就是區塊鏈的核心技術-共識機制.共識機制需要注重安全性、效率和能耗等問題[3],從而保證區塊鏈系統能夠正常運行.目前主流的共識機制有工作量證明(Proof of work,PoW)、權益證明(Proof of stake,PoS)和授權權益證明(Delegated proof of stake,DPoS) 等證明類共識機制,以及實用拜占庭容錯(Practical Byzantine fault tolerance,PBFT)等傳統分布式系統一致性算法[4].不同于前面提到的幾種共識機制,Hyperledger fabric 采用 “背書-排序-驗證” 的方式來達成共識[5].

Hyperledger fabric 將應用層的信任模型同底層的共識協議解耦,拆分共識過程為交易內容合法性驗證和交易順序一致性保證兩個步驟.背書和驗證保證交易內容的合法性,排序保證交易順序的一致性.通過將這兩部分進行解耦[6],智能合約的開發者可以設計更為靈活的信任模型,Hyperledger fabric 網絡也獲得了更快的交易處理速度.但是在Hyperledger fabric 中,背書節點屬于關鍵節點,數量較少卻承擔著對所有交易內容的合法性進行背書的重要任務;并且為了便于交易客戶端識別和驗證,背書節點的身份必須公開.在區塊鏈網絡中身份公開且承載著大量的敏感交易數據,這必然使得背書節點成為敵手的首要攻擊目標.此外,由于每個背書節點都要處理所有的交易,這使其成為系統中交易處理的性能瓶頸,從而導致單個背書節點的處理能力限制了整個區塊鏈網絡的交易速度.

Hyperledger fabric 將應用層信任同底層共識協議相解耦的共識模型非常利于構建基于業務邏輯的共識機制,因此在實際系統中得到了廣泛應用.目前Hyperledger fabric 共識機制的相關研究工作在對背書節點高度信任的假設前提下多側重于排序過程的改進,即對交易順序一致性進行優化[7],而忽視了對于背書節點和共識機制的安全性考量.事實上由于交易安全性高度依賴于固定身份的背書節點,背書節點一旦被惡意攻擊,最終賬本數據的正確性將無從保證.公有鏈系統所面臨的開放式網絡環境使得其共識機制的設計充分考慮了安全性問題,多使用隨機抽取共識節點的方法使敵手難以選擇攻擊目標,從而提高攻擊難度.因此,本文針對聯盟鏈中共識機制的安全性問題,在 “背書-排序-驗證” 共識模型的基礎上引入非交互式可驗證隨機節點抽取方法,提出了一種Hyperledger fabric 共識機制的優化方案:

1) 引入背書節點候選集,使用可驗證隨機函數(Verifiable random functions,VRF)的隨機輸出特性在非交互模式下抽取背書節點,降低背書節點中心化程度,增加系統的抗攻擊能力;

2) 交易客戶端利用可驗證隨機函數的驗證特性來完成背書節點的身份認證,從而在節點隨機抽取過程中確保背書節點身份的真實性和可驗證性;

3) 將原有的一組背書節點為所有交易背書,改進為多組背書節點為交易進行背書,使用并行處理的方式來提高交易處理速度.

本文結構如下:第1 節概述了區塊鏈共識機制需考慮的關鍵問題、可驗證隨機函數的定義及其在區塊鏈共識機制中的應用;第2 節詳細介紹了Hyperledger fabric 的共識機制及其存在的問題;第3節針對Hyperledger fabric 存在的問題提出了具體的優化方案;第4 節對優化方案的安全性和性能進行了分析;第5 節構建了優化方案的原型系統,對方案的性能進行了對比測試;第6 節對本文工作進行了總結.

1 共識機制與可驗證隨機函數

1.1 共識機制

區塊鏈技術本身是基于分布式系統的,因此區塊鏈技術仍然需要解決一些分布式系統中存在的問題.其中最核心的問題是如何高效地就不同節點的數據一致性達成共識,因此需要從安全性和共識速度兩個角度設計共識算法[8].

共識問題受多種系統因素的影響,比如節點數量的多少,是否具有拜占庭節點等.節點數量是區塊鏈系統去中心化程度的直觀表現.節點數量與賬本的安全性成正比,與共識難度成反比.即節點數量越多,賬本的備份也就越多,攻擊者修改賬本的難度越高,數據越安全,但是讓這些節點的賬本保持一致性的難度也越高[9].拜占庭節點的定義來源于拜占庭將軍問題[10],是指系統中因運行故障(如,被惡意攻擊) 而發送錯誤信息的節點.在不具有拜占庭節點的網絡中,僅存在數據丟包和延遲等非惡意行為;而在具有拜占庭節點的網絡中,惡意節點可能會主動發送錯誤信息,以謀取利益.在不考慮非拜占庭節點的情況下,Paxos[11]、Raft[12]等算法可以實現較為高效的共識,但是現實中很難構建一個不存在非拜占庭節點的系統,因此大多數共識算法基于的安全模型中都是存在拜占庭節點的.

傳統分布式一致性算法一般采用協商的方式解決共識問題[13].如1999 年,Castro 等提出的PBFT[14]算法(Practical Byzantine fault tolerance,PBFT)可以在保證活性(Liveness) 和安全性(Safety) 的前提下為節點總數為n的網絡提供(n-1)/3 的容錯性.PBFT 算法共識速度快且易于實現,但是PBFT 算法的消息復雜度(O(N2))會隨節點的增加而增加,因此不適用于大規模節點的場景.

從另一個角度講,拜占庭節點可以理解為被敵手攻擊的節點,減少拜占庭節點的產生,需要增加敵手的攻擊難度.為此,一方面可以增加節點數量,另一方面是增加出塊節點的隨機性[15].傳統分布式一致性算法往往會因為節點數量的增加而帶來巨大的通信量,因此更多共識算法選擇后者來保證安全性.

以工作量證明為例,工作量證明[1](Proof of work,PoW)使用 “挖礦” 的方式隨機選取出塊者.“挖礦”是指每個節點不斷嘗試解決一個求解困難但是驗證容易的數學難題.最快解決該難題的節點會獲得發布下一區塊的權利(記賬權) 以及系統的獎勵.PoW 的隨機性依賴于哈希函數值的均勻分布,但是大量的哈希計算伴隨著巨大的能源消耗,而且這種消耗所用來解決的問題是無意義的[16].同時隨著“礦機”的產生及發展,計算能力逐漸被一些大的礦池壟斷,也對系統安全性產生了威脅.此外PoW共識的效率較低,過長的出塊時間和交易確認時間難以滿足現實需求.

權益證明[17](Proof of stake,PoS)同樣是使用“挖礦”的方式選取出塊者,但是 “挖礦”成功的概率與節點的權益有關,節點持有的權益越大,“挖礦”成功的概率越高,這從整體上加快了區塊的產出速度,提高了共識的效率.同時,在權益證明中計算量不再是 “挖礦”的主要影響因素,從而減少了大量計算帶來的資源浪費.但是PoS 中存在的 “無利害攻擊”,“長程攻擊”等問題使PoS 的安全性備受質疑[18].

在PoS 的基礎上,授權權益證明[19](Delegated poof of stake,DPoS)通過犧牲一定的 “去中心化”特性以實現更高的共識效率.每個節點可以將其持有的權益作為選票投給一名代表,最終投票最多的前N個用戶會構成參與共識的 “委員會”,每一個委員輪流負責對交易進行打包,生成區塊.由于參與共識節點數量的減少,DPoS 具有很高的交易速度.但DPoS 在去中心化過程中所產生的代理節點令敵手的攻擊目標更加明確,從而降低了敵手的攻擊成本.

從上述共識算法可以看出,隨機選取節點可以增加共識機制的安全性,因此隨機選取方式的設計變得尤為關鍵,隨機選取算法既要保證結果的隨機性還要具有較高的運行效率.

1.2 可驗證隨機函數

可驗證隨機函數(Verifiable random function,VRF)[20]是由Silvio 等于1999 年提出的.VRF 本質上是一類具有驗證功能的偽隨機函數.對于一個特定的輸入x以及輸入者的私鑰SK,VRF 會輸出一個隨機數v以及一個證明proof,驗證者可以通過輸出的隨機數、證明和輸入這三部分驗證出隨機數是否是由該輸入產生.這個過程不必暴露輸入者的私鑰,因此是安全的.

VRF 需要滿足三個性質:可驗證性、確定性和隨機性:

1) 可驗證性是指通過proof可以驗證出v是SK和v對應的輸出.

2) 確定性是指在SK和x不變的情況下,輸出的v也是不變的.

3) 隨機性是指在不給定證明proof的情況下,VRF 的輸出v與一個隨機數對于敵手來說兩者之間是概率不可區分的.

參考文獻[20-21],可驗證隨機函數VRF 可具體定義如下:

設G,F,V是多項式時間算法,其中:

1)G是一個概率性算法,其輸入是安全參數k,輸出公鑰PK和私鑰SK;

2)F=(F1,F2)是一個確定性算法,輸入包括x和私鑰SK,輸出為v=F1(x,SK)和proof=F2(x,SK),其中v是VRF 輸出的隨機值,proof是對隨機值的證明;

3)V是一個概率性算法,輸入為:(PK,x,v,proof),輸出為YES 或NO.

設a:N→N∈{*};b,s:N→N 是任意三個poly(k)時間內可計算的函數,并且都以一個k的多項式為上界(除非a∈{0,1}*),其中k為安全參數.我們稱(G,F,V)是輸入長度為a(k)、輸出長度為b(k)、安全性為s(k)的可驗證的偽隨機函數(VRF),如果滿足以下幾條性質:

1) 下面兩條以1-2 -Ω(k) 的概率成立,其中的概率成立,其中

a)定義域-值域正確性:

對于任意x∈{0,1}a(k),F1(SK,x)∈{0,1}b(k)

b)完全可證性:

對于任意x∈{0,1}a(k),如果v=F1(SK,x)且proof=F2(SK,x)那么

2)唯一可證性:

對每一個PK,x,v1,v2,proof1,proof2,其中v1v2,下面的不等式對于i=1 或i=2 都成立:

3)剩余偽隨機性:

T=(TE,TJ)是任意一對算法,滿足第一次輸入為 1k時,TE(·,·) 和TJ(·,·) 總共運行了最多s(k)步,則T在下面的實驗中成功的概率至多為1/2+1/s(k) :

1.3 可驗證隨機函數在共識機制中的應用

可驗證隨機函數在提出之后,一般主要用在密鑰封裝[21]、數字簽名等領域.隨著近年來人們對區塊鏈技術的深入研究,可驗證隨機函數的特性使其開始被應用在共識機制的設計中.

2017 年,Gilad 等提出的Algorand[22],將可驗證隨機函數與PBFT 算法相結合.使用可驗證隨機函數選取出塊者,之后采用類似于PBFT 的協議進行若干輪投票,而每一輪的投票者也是通過可驗證隨機函數選出的.該共識算法具有較高的安全性和交易速度.

2018 年Hanke 等提出的Dfinity[23],將全網中節點分為多組委員會,當前負責出塊的委員會中的每個成員使用基于BLS 門限簽名算法[24]的可驗證隨機函數選擇出塊節點,然后通過閾值中繼技術(Threshold relay technology)選出其下一輪負責出塊的委員會,從而達到安全且快速生成區塊的目的.

2017 年Kiayias 等提出的Ouroboros[25]共識算法在PoS 的基礎上,使用秘密共享和追隨中本聰算法選取出塊節點.算法本身雖然經過安全性證明,但是其出塊節點身份可以被提前獲知,可能導致敵手的攻擊,因此2018 年Ouroboros 的第二個版本Praos[26]使用可驗證隨機函數代替原有的選取算法來抽取出塊節點,增強了原有共識機制的安全性.

由此可見,可驗證隨機函數已在區塊鏈領域成為非交互模式下節點身份隨機選取的重要工具.

需要注意的是,Algorand、Dfinity 和Ouroboros Praos 均是公有鏈系統,網絡中的節點身份是對等的,因此他們面臨的問題一般是如何從全網的節點中安全的選出一個出塊節點.而Hyperledger fabric、Corda[27]等聯盟鏈系統則采用分層信任模型,并且達成共識的過程也解耦為應用層信任和底層共識兩部分,需要具有不同職能的節點共同參與.其中一些節點會對交易內容的合法性進行背書,因此在共識過程中承擔著重要任務,我們稱之為關鍵節點,如Hyperledger fabric 中的背書節點和Corda中的Notary 節點.這些節點的身份一般會在區塊鏈網絡構建之初就確定下來,因此攻擊者可以直接確定攻擊目標,一旦攻擊成功,會對整個系統造成嚴重危害.所以這些聯盟鏈系統面臨的問題是如何降低關鍵節點被攻擊的風險.通過借鑒公有鏈中利用可驗證隨機函數抽取節點的方式,將關鍵節點的身份由固定變為隨機抽取的,可以使敵手的攻擊目標不再明確,從而降低關鍵節點被攻擊的風險.

2 Hyperledger Fabric

Hyperledger 是Linux 基金會于2015 年主導發起的開源項目,其子項目Hyperledger fabric 是一個允許多方參與、開發、部署和運行區塊鏈應用的聯盟鏈平臺[7].Hyperledger fabric 旨在創造一個模塊化和可擴展的區塊鏈開發框架,為企業級區塊鏈應用的開發提供解決方案.Hyperledger fabric 區塊鏈系統主要包含以下幾部分組件:

鏈碼(Chaincode):鏈碼是Hyperledger fabric 中的智能合約,它以代碼的形式將復雜的業務邏輯固定在Fabric 系統中.當滿足特定條件時,鏈碼會被執行[28].

客戶端(Client):客戶端是用戶與Hyperledger fabric 網絡的接入點,其上會部署專有的SDK.用戶可使用客戶端發起交易請求,即提案(Proposal).

背書節點(Endorser):在Hyperledger fabric 中,當客戶端想要發起交易時,首先需要為交易得到一定數量的背書(Endorsement),這些背書來自背書節點.背書節點會通過運行鏈碼模擬執行交易,生成讀寫集,之后會為該交易進行背書(對讀寫集進行簽名,并附加自己的身份),以證明該交易已經過背書節點處理[29].

排序節點(Orderer):在Hyperledger fabric 中通過多個排序節點來提供排序服務[30].排序服務接收來自全網的所有交易并將交易按照時間排序打包成塊.排序服務并不參與交易的執行與驗證,因此并不關心交易的具體內容,排序服務的目標是就交易產生的順序達成一致的結果,并將這個結果廣播出去.

提交節點(Committer):提交節點是Hyperledger fabric 網絡中賬本維護的主體.提交節點接收排序服務打包的區塊,驗證區塊中交易的有效性,并據此將有效交易提交到賬本.另外,背書節點也屬于提交節點,背書是其在維護賬本基礎上的額外功能.

2.1 Hyperledger Fabric 共識機制

如圖1 所示,Hyperledger fabric 共識機制如下:

圖1 Hyperledger fabric 共識機制Fig.1 Hyperledger fabric consensus mechanism

1)客戶端創建一個提案,依據背書策略將其發送給相應的背書節點.提案包含了需要調用的鏈碼函數及其參數、時間戳和客戶端簽名等信息;

2)背書節點會驗證客戶端簽名,確保提案是由已認證的客戶端發出.否則終止交易.背書節點執行背書過程,即根據提案使用鏈碼模擬執行交易請求,生成執行結果并附加背書節點的簽名.模擬執行的結果是一組基于當前賬本狀態的讀寫集,也就是說背書過程并不會更改當前賬本的狀態;

3)客戶端驗證背書結果的簽名,確保其來自合法的背書節點.否則終止交易.由于一筆交易可能會需要多個背書節點進行背書,客戶端會收集來自不同節點的背書結果并比較這些結果中的讀寫集是否一致.如果一致則根據背書結果生成交易(Transaction,tx)然后發送給排序服務,否則終止交易.

4)當存在多個排序節點時,Hyperledger fabric 使用Kafka[31]對交易進行排序.排序節點在收到來自客戶端的交易后,會將接收到的交易發送到Kafka 集群中,同時會按照一定的規則從Kafka 集群中讀取一定數量的排序好的交易,然后打包成塊.排序服務對區塊簽名后,將區塊分發給提交節點;

5)當提交節點收到區塊后,會對區塊進行驗證.提交節點使用讀寫集合的讀集部分來檢查交易的有效性,如果一筆交易通過了有效性驗證,提交節點會使用寫集更新狀態數據庫.

當各個提交節點完成以上操作后,可以視為對該客戶端發起的交易達成了共識.在這一過程中,背書策略和背書過程確保了交易(鏈碼)按照業務邏輯信任模型正確執行;排序服務確保了節點對交易順序的一致性達成共識;提交節點根據相同的規則對每筆交易的數據進行驗證,從而在交易內容的合法性上達成共識.由此可見,Hyperledger fabric 通過 “背書-排序-驗證” 的共識機制有效地將應用層的信任模型同底層的共識協議相解耦,從而實現了更為靈活的信任模型和更高的交易吞吐量.

2.2 存在的問題

Hyperledger fabric 將節點的身份進行劃分,在一定程度上簡化了交易流程提高了交易速度,但是也使系統產生了一些較為 “中心化”的節點–背書節點.Hyperledger fabric 背書的目的是為了在保證交易合法性的同時,提高交易處理的速度[32].因為如果去除背書環節,則各個節點為了達成共識,都需要執行提案(即調用鏈碼),這樣會限制交易的處理速度.而通過一部分背書節點提前去執行提案,再讓所有的節點只對結果進行檢驗,則可以在犧牲一定安全性的條件下達到較高的交易處理速度[33].

但這一共識機制存在如下2 方面的問題:

1) 首先,背書節點在區塊鏈網絡搭建之初就已經確定且客戶端必須能夠識別并信任,因此其身份必須公開且可驗證.其次,背書節點在提案執行過程中會直接處理敏感的交易數據.上述兩點必然導致背書節點會成為攻擊者的首要目標;

2) 背書節點的數量相較于全部節點數量而言占比極少,部分系統中的背書節點數僅為個位數,而這些節點卻要處理系統中的全部交易,這就導致了明顯的交易速度瓶頸.同時,客戶端與背書節點是多對一的關系,當客戶端產生大量交易時,背書節點可能難以及時并發處理,造成交易處理時間增加,甚至導致背書節點的崩潰.

上述問題產生的根本原因在于Hyperledger fabric 在共識過程中缺少對背書節點的動態隨機選取過程.

3 改進方案

為了解決Hyperledger fabric 共識機制在安全和性能兩方面的問題,我們在背書節點的確認中引入動態隨機選取過程,以實現節點身份的隱藏和節點數量的動態擴展.但在這一過程中,同時需解決如下2 個問題:

1) 背書節點隨機選擇的過程應是非交互式的,以降低系統的通信和計算開銷,減少選擇過程對交易性能的影響;

2) 選擇后的背書節點身份必須能夠被客戶端識別和信任,即選擇算法應同時具有身份認證功能,以避免節點身份偽裝攻擊的問題.

在基于Fabric 基本共識機制框架的基礎上,我們設計了一種非交互、可驗證的隨機化背書節點優化方案.優化方案引入了背書節點候選集,通過可驗證隨機函數在候選集中隨機選取交易背書節點完成交易背書.方案的改進一方面實現了交易背書前背書節點的身份隱私保護;另一方面也動態隨機擴展了交易背書節點的數量,提高了交易處理能力.

3.1 優化后的共識機制

優化后的共識機制如圖2 所示:

圖2 優化后的Hyperledger fabric 共識機制Fig.2 Optimized hyperledger fabric consensus mechanism

1)客戶端生成提案proposal 〈req,s〉sig,其中req為交易數據,包括希望調用的chaincode 及其參數.s為客戶端選擇的隨機值,作為節點身份抽取算法的種子.客戶端對proposal 簽名后將其發送給背書節點候選集.交易發送成功后,客戶端會啟動一個計時器;

2) 各個候選背書節點收到客戶端的proposal 后,首先根據簽名驗證proposal 的完整性,驗證失敗則終止交易.候選背書節點執行背書節點身份抽取算法 (v,proof,result)=V RFResult(s,SK),并根據result判斷自己是否為背書節點.

3)如果確定自己是背書節點,執行提案并生成讀寫集rw_set 以及背書簽名edm.隨后生成提案響應信息:proposal_response 〈 rw_set,edm,(v,proof) 〉sig.

背書節點身份抽取算法VRFResult流程如下:

a)根據輸入生成隨機數及其證明

(v,proof)=F(s,SK)

b)返回抽簽結果

依據r計算抽取結果并與閾值λ進行比較,其中hash()為密碼雜湊算法,hashlen是hash 算法的輸出長度,如果,返回 (r,proof,yes);否則返回 (r,proof,no).

4)在計時器結束前的這段時間內,客戶端持續收集來自不同背書節點的proposal_response 并根據簽名驗證proposal_response 的完整性,驗證失敗則終止交易.使用背書節點身份驗證算法V RFVerify(PK,r,proof.result)驗證該節點是否為合法的背書節點.如果不是則丟棄其該背書結果.在合法的proposal_response 中,如果大部分(超過一半)讀寫集一致,則根據這些背書結果生成交易tx 〈 r_w_set,{edm}k〉sig.其中{edm}k表示來自k個合法背書節點的簽名.客戶端將交易tx 簽名后發送給排序節點.

背書節點身份驗證算法流程如下:

a) 驗證隨機數合法性

bool=V(s,r,PK)

b)返回驗證結果

如果隨機數合法且滿足閾值條件,認定其為背書節點.如果bool&,返回yes;否則返回no.

需要注意的是由于背書節點身份抽取是一個概率算法,可能存在一筆交易沒有對應的背書節點的情況,因此需要設置適當的閾值λ來降低這種情況產生的概率,以第5.2 節中的實驗為例,背書點候選集中節點數量為10,λ=0.4 時,不產生背書節點的概率為:Pr=(0.4)10≈0.01 %,即10 000 筆交易中可能會有1 筆交易沒有背書節點為其背書.同時,如果設置的計時器超時后仍然沒有收到背書節點的proposal_response,可以選擇對proposal 進行重發,這樣就使得不產生背書節點的概率進一步降低.

5)排序節點監聽并接收全網所有交易,并將交易打包成區塊block 〈{tx}m〉sig,{tx}m表示區塊中包含的m個有序交易.排序節點對block 簽名后將其進行廣播;

6)提交節點收到blcok 后首先驗證簽名檢查區塊完整性,之后對讀寫集進行驗證,并依此更新賬本.當各個提交節點完成以上操作后,可以視為對該客戶端發起的交易達成了共識.

3.2 可驗證隨機函數的設計

3.2.1 VRF 方案設計

本文依據IETF 提出的VRF 標準草案[34]設計了基于橢圓曲線的可驗證隨機函數,方案設計主要分為三部分:

1)公私鑰對生成函數G

設橢圓曲線的基點為O,階數為n,公私鑰對生成算法如下:

A1:選擇隨機數k∈ [1,n-1];

A2:生成一對橢圓曲線密鑰,其中私鑰為k,公鑰為Y=kO;

2)隨機數和證明生成函數F

輸入:消息m,私鑰k

輸出:隨機數v,證明proof

B1:選擇隨機數r∈ [1,n-1];B2:使用散列函數h1計算H=h1(m),將消息m映射到橢圓曲線上一點H;B3:計算rH,rO;B4:使用散列函數h2將輸入編碼成一個整數s,并且

B5:計算

B6:計算

B7:使用函數h3將橢圓曲線上的點編碼成一個整數,獲得隨機數v=h3(V),證明proof為(V;t;s).

3)驗證函數V

輸入:消息m′,證明proof′

輸出:合法性(validorinvalid)

C1:使用散列函數h1將消息m′映射到橢圓曲線上一點H′;

C2:計算

C3:計算

C4:如果s=s′,則表明隨機數有效,驗證通過,輸出valid;否則表明隨機數無效,驗證不通過,輸出invalid.

3.2.2 VRF 方案分析

由第2.2 節可知,VRF 需要滿足三個性質:可驗證性、確定性和隨機性.下面將從這三個方面對設計的的可驗證隨機函數進行分析:

1)可驗證性

如果proof未被篡改,且m′=m,則

2)唯一性和隨機性

VRF 得到隨機數的過程分為三步,首先是使用一個從有限域到橢圓曲線上的散列函數h1將消息m映射到橢圓曲線上一點H,然后使用私鑰k計算得到kH,最后將kH編碼成一個整數value作為最終輸出的隨機數.可以看出,計算value是一個確定的過程.在這個過程中k是不變的整數,h3一個編碼函數對于相同的輸入總能保證相同的輸出.因此value的確定性和隨機性取決于h1函數的性質.Boneh[35]等提出了一種從有限域映射到橢圓曲線上點的散列函數構造方法,并且證明了構造方法的正確性.使用這種方法構造的的h1具有散列函數的性質[36].散列函數的輸出唯一性保證了對于相同m,H=h1(m)也是相同的,因此value也是確定的,即滿足了唯一性.散列函數均勻分布的性質保證了H=h1(m)與橢圓曲線上隨機一點對于敵手來說是概率不可區分的,即保證了H的隨機性,從而保證了value的隨機性.

4 改進方案分析

4.1 安全性分析

改進方案的關鍵點在于將Hyperledger fabric 中的背書節點由固定配置改為隨機選取.選取方式為使用可驗證隨機函數,根據輸出隨機數的所在區間確定候選節點是否為背書節點.這一方案在增加身份抽取隨機性、保護節點身份隱私、提供節點身份認證和降低背書被攻擊風險方面都提供了更好的安全性.

首先,由第3.2.2 節中隨機性的分析可知,可驗證隨機函數的輸出具有良好的隨機性,因此確保了在非交互模式下抽取背書節點的隨機性,降低了背書節點的中心化程度;同時,在私鑰未泄露的情況下,觀察者無法計算背書節點身份抽取的結果,確保了共識過程啟動時背書節點的身份隱私;此外,客戶端可以使用可驗證隨機函數的公鑰對節點的身份進行驗證,由第3.2.2 節中可驗證性的分析可知,這一特性確保了背書節點身份的真實性和可驗證性,防止敵手冒充背書節點.

在原始方案中,客戶端會將接收到的所有背書結果進行對比,只有全部相同的情況下才會繼續交易.因此,即使敵手只成功攻擊了一個背書節點,客戶端也會因為得到的背書結果不一致而終止交易,即使將判定策略改為超過一半的背書結果一致則背書結果有效,這種情況下,背書節點中惡意節點數超過一半時,敵手可以完全控制交易的背書結果,從而影響交易內容正確性.而在優化方案中,客戶端不再需要得到全部背書節點的背書結果,使得攻擊者影響交易的概率降低.同樣是攻擊成功一個候選背書節點,如果敵手試圖影響交易,則需要背書節點候選集中只產生一個背書節點,且該節點就是被敵手攻擊成功的節點,其成功概率為:

其中λ為抽取背書節點時的閾值,n為背書節點集的數量.以實驗為例,當n=10,λ=0.4 時攻擊成功一個背書節點,攻擊者可以影響交易的概率為:

所以控制了k個候選背書節點的敵手,成功影響交易的概率為:

在n=10,λ=0.4;k,i∈ (0,n]的情況下,敵手攻擊成功的概率變化如圖3 所示:

圖3 敵手攻擊成功的概率Fig.3 Probability of successful enemy attack

由圖3 可知,敵手攻擊成功的概率會隨控制節點數量的增加而提高,并且變化趨勢呈指數增長.雖然當敵手控制了全部候選背書節點時,攻擊成功的概率會接近100 % (可能會有不產生背書節點的情況,因此概率不是100 %,而是1-λn),但是當敵手未完全控制背書候選節點時,仍然可以保證敵手以一個較低的概率攻擊成功,因此可以通過設置λ與n,來滿足不同強度的安全需求.

4.2 性能分析

4.2.1 交易處理速度

由第2.2 節可知,在輸入x相同的情況下,如果可驗證隨機函數的私鑰不同,則輸出的隨機數也不相同.因此,對于接受同一筆交易,不同的節點生成的隨機數是不同的,最終背書節點候選集中部分節點會成為該節點的背書節點,而剩余節點可能成為其他交易的背書節點.從整體上看,可驗證隨機函數的輸出隨機性確保了交易被均勻的分發給了所有的候選節點,這樣就減少了每個節點的工作量,從而提高了交易的并發處理能力.

4.2.2 交易延遲

交易延遲是指一筆交易從發起到確認經歷的時間.在Hyperledger Fabric 中,交易延遲的時間是指從客戶端發起提案,經過背書、排序,最終被提交到賬本所花費的時間[37].本文中影響交易延遲的第一個因素是優化方案增加了抽取背書節點以及驗證節點身份的過程,很明顯可驗證隨機函數的算法效率會對交易的處理產生影響,進而影響交易延遲,因此需要通過實驗對方案設計的可驗證隨機函數的算法效率進行測試.影響交易延遲的另一個因素是優化方案對背書過程進行了調整.在假設可驗證隨機函數對交易延遲的影響忽略不計的前提下,從交易流程上看,優化方案與原始方案僅在背書過程中有所不同,所以從兩種方案交易處理速度可以推斷出二者的交易延遲差異不大.

4.2.3 通信成本

PBFT 共識算法中所有N個節點均以廣播的形式發送數據,因此導致了 O (N2) 量級的通信成本,Hyperledger fabric 中客戶端與背書節點之間、客戶端與排序節點之間是點對點形式的雙向通信,排序節點與提交節點之間是廣播形式的單向通信,因此通信成本為 O (N) 量級.從整體流程上看,優化方案與原始方案在各個階段的通信方式保持一致,因此通信成本同樣為 O (N) 量級,并不會帶來額外的通信開銷.

4.2.4 與其他共識機制的比較

除了優化方案與原始方案的比較外,本文也將優化后的Hyperledger fabric 共識機制與Algorand、Definity 和Ouroboros Praos 這三種基于可驗證隨機函數的共識機制進行了對比分析.

由于Hyperledger fabric 是一個聯盟鏈系統,而Algorand、Definity 和Ouroboros Praos 則是公有鏈系統,二者的應用場景、構建方法和共識原理都是不同的.Hyperledger fabric 的共識機制采取了將應用層信任模型同底層共識協議相解耦的方式,因此不便于直接從性能效率方面同公有鏈共識算法進行比較.所以本文從算法特性的角度對這幾種共識機制進行比較分析.如表1 所示,本文對比分析了這幾種共識機制中可驗證隨機函數的作用、共識原理、資源消耗以及容錯能力.

表1 優化方案與其他共識機制的對比Table 1 Comparison of optimization scheme with other consensus mechanisms

在Hyperledger fabric 共識機制的應用層信任模型中背書節點是固定的且身份公開,這是導致Fabric 背書節點易受攻擊的原因.因此Fabric 需要解決的重點問題是如何可驗證地隨機選取背書節點.優化方案正是基于此問題,使用可驗證隨機函數選取背書節點,增加敵手的攻擊難度.Algorand、Definity、Ouroboros Praos,他們需要解決的問題都是如何在全網節點中安全的選取一個出塊節點.具體而言,Algorand 是在全網中選取一個出塊節點,再選取委員會對區塊進行多輪投票,最終達成共識;Dfinity 將全網中節點分為多組委員會,在當前負責出塊的委員會中選取出塊節點.Ouroboros同樣是在全網中選取出塊節點.

從共識原理上看,作為公鏈共識算法的Algorand、Definity、Ouroboros Praos 并無應用層信任模型的概念,仍是在系統層共識機制的基礎上進行的改進.Algorand 使用的是一個變種的PBFT 算法(文獻[22]中稱為BBA 算法),Definity 底層直接使用PoS 算法,Ouroboros Praos 則是一個經過了安全證明的PoS 共識模型.PBFT 和PoS 共識機制將交易內容和交易順序同時交給出塊節點完成,這導致Algorand、Definity 和Ouroboros Praos 共識模型是緊耦合的,并且限制了共識機制的優化.Hyperledger fabric 優化方案將應用層的信任模型同底層共識算法相解耦,應用層背書策略和交易合法性驗證可根據具體應用進行定制.而對于交易順序一致性則交給排序節點完成,而排序節點本身并不關心交易內容是否合法,因此可以選擇不同算法去完成交易順序的共識,比如可以把當前的kafka 替換為raft 算法.這樣Hyperledger fabric 優化方案可以根據場景的不同選擇不同的排序算法,從而具有較高的靈活性.

在資源消耗方面,基于PBFT 的Algorand 不存在 “挖礦” 的過程,所以不會有大量計算消耗,但是投票過程中的多輪交互會導致較高的通信成本.基于PoS 的Dfinity 和Ouroboros Praos 仍然會有“挖礦” 的過程,所以還是會導致資源浪費.Hyperledger fabric 優化方案同樣不存在 “挖礦” 的過程,并且只有排序節點發送區塊的過程是全網廣播的,其他過程都是部分節點間的交互,因此資源消耗很少.

Algorand、Definity 和Ouroboros Praos 都是支持拜占庭容錯的,他們的容錯能力分別為n=3f+1、n=2f+1、n=2f+1.其中,n表示全網節點數,f代表惡意節點的數量.Hyperledger fabric 對共識模型進行了解耦,并且具有不同的節點類型,所以要從不同的角度去分析其容錯能力.在交易內容一致性的層面并沒有提供拜占庭容錯的能力,他只支持對排序節點的一般故障容錯,如數據丟失或延遲.對于惡意排序節點發送的錯誤數據,并不具備容錯能力.而在交易內容合法性的層面,如果客戶端是惡意節點,其偽造的交易由于不具有正確的背書最終不會驗證通過,從這一點上看,Hyperledger fabric 對于客戶端是支持拜占庭容錯的.但是如果背書節點是惡意節點,客戶端會因為收到不同的數據而終止交易,所以這一點上看,Hyperledger fabric 對于背書節點是不支持拜占庭容錯的.優化方案使用可驗證隨機函數抽取背書節點,客戶端不再接受非背書節點發送的數據,這樣就減少了交易被終止的情況.所以從整體上而言,優化方案提升了原始方案的容錯能力.優化方案中背書節點的容錯能力取決于背書節點的數量m和抽取閾值λ的設定.

總的來說,相較于其他基于可驗證隨機函數的共識機制來說,優化方案具有更靈活的架構和更低的資源消耗,并且具有高于Fabric 原始方案的容錯能力.

5 實驗測試

5.1 實驗設計

本文依照Hyperledger fabric 的架構構建了一個區塊鏈系統.系統對Hyperledger fabric 的交易流程進行了模擬,特別的是,系統中可以使用固定和隨機兩種方式選取背書節點,即系統可以分別按照原始方案和優化方案進行交易.本文的實驗環境是一臺12 核CPU、16 GB 內存和2 TB 機械硬盤的服務器.實驗使用Docker 技術將節點以容器的形式部署在服務器上.系統的網絡拓撲如圖4 所示,系統中有四類節點:客戶端、候選背書節點、排序節點和提交節點.節點通過網絡互連,既可以進行廣播通信,又可以進行點對點通信.本實驗中的節點設置如下:100 個客戶端,10 個候選背書節點,1 個排序節點,100 個提交節點.客戶端之間相互獨立,可以同時發起交易.當系統使用原始方案時,所有的候選背書節點都需要對提案進行背書,使用優化方案時,會增加背書節點的抽取過程(抽取的閾值λ=0.4),客戶端也會相應增加驗證背書節點身份的過程.除此之外,原始方案與優化方案的排序和提交策略保持一致.實驗使用Golang1.9 實現了原始方案與優化方案的業務邏輯.其中可驗證隨機函數的實現基于Golang 中的crypto 包,使用的橢圓曲線為curve-p256,使用的hash 函數為sha-256.通過對兩種方案的性能測試比較,本節將從安全性、可靠性、交易處理速度、交易延遲和通信成本五個方面對優化方案進行分析.

圖4 實驗網絡拓撲圖Fig.4 Network topology of experiment

5.2 實驗結果與分析

5.2.1 安全性

在安全性方面,實驗主要對惡意節點對背書過程的攻擊風險方面進行了測試對比分析.原有共識機制存在的主要問題是背書節點中只要存在一個惡意節點就會導致交易背書過程中斷,交易失敗.如第4.1 節中的分析所述,即使將判定策略改為 “超過一半的背書結果一致則背書結果有效”,當背書節點中惡意節點數超過一半時,敵手仍然能夠成功控制交易流程.改進方案則通過使用VRF 隨機抽取背書節點,增加敵手影響交易流程的難度,降低了背書過程被攻擊的風險.

為此,測試方案選擇在候選節點數n=10 和惡意節點數k=5 的條件下進行測試,結果如表2 所示.實驗結果表明,對于原始方案,背書節點中惡意節點數超過一半時,敵手會以100 %的概率成功控制了交易流程.而使用優化方案后,只有惡意節點被選為背書節點并且惡意節點數超過選中背書節點數一半以上時,惡意攻擊才能成功控制交易流程,導致交易失敗.實驗中10 000 次交易情況下敵手攻擊成功的概率為6.86 %,與第4.1 節中的計算值7.1 %基本接近,由此可見優化方案中敵手攻擊成功的概率明顯低于原始方案,這也證明了優化方案相較于原始方案的安全性提升.

表2 敵手攻擊成功次數Table 2 Number of successful attacks by adversary

5.2.2 可靠性

由第4.1 節中的分析可知,由于引入了VRF 進行節點身份隨機抽取時可能出現抽取結果為0 個背書節點的情況,影響系統的可靠性.為此優化方案在客戶端使用計時重傳機制來解決這一問題,當客戶端在固定時間內未接收到有效的背書響應時會重新發起交易.實驗對這種情況進行了驗證,并且對使用計時重傳機制后進行了再次驗證,結果如表3所示.從實驗結果可以看出,當交易次數較多時,會出現無背書節點的情況,但是這種情況發生的概率還是很低的.使用計時重傳機制后,無背書節點情況發生的次數明顯降低,事實上重傳后仍無背書節點情況發生的概率為λ2n,基本可以將無背書節點的情況忽略不計.

表3 無背書節點情況發生次數Table 3 Frequency of nonoccurence of endorsing peer

5.2.3 交易處理速度

與Hyperledger fabric 原始的共識機制相比,本方案通過將交易的背書分攤給多個節點,降低背書節點需要背書的交易數量.考慮一種特殊情況:假設兩筆交易對應的的背書節點之間并不存在交集,則這兩筆交易可以同時進行背書,可以視為對交易的并行處理.不出現這種情況,從整體而言,每個背書節點不需要依次處理所有的交易,而是只是其中一部分,一批交易所需的背書時間僅取決于分配交易數最多的背書節點,這樣改進方案的背書時間相較于原有方案有所縮短,從而提高交易的處理速度.

實驗分別對原有的Hyperledger fabric 共識機制和優化后的共識機制進行了仿真,通過模擬構建兩種方案中的交易系統,將兩種方案的交易處理速度進行了對比.其中系統參數設置為:背書節點候選集數量為10,閾值λ為0.4.實驗結果如圖5 所示.

從圖5 中的實驗結果可以看出,優化后的方案在交易處理速度方面相較于原始方案有了明顯提高.特別是當交易數較大時,雖然隨著交易數量的增加二者的交易時間都呈現上升趨勢,但是優化方案仍能比原始方案的時間少約50 %,優化方案的交易處理速度提升明顯.

圖5 原有方案與優化方案交易時間對比Fig.5 The comparison of transaction time between original scheme and optimized scheme

5.2.4 交易延遲

本文針對第5.2.2 節中提到的影響交易延遲的兩個因素,分別進行了測試.

第一個是對本文設計的可驗證隨機函數的性能測試.本文實現的可驗證隨機函數主要分為三部分,生成密鑰、生成隨機數和證明、驗證隨機數和證明.實驗對方案設計的可驗證隨機函數進行了多次測試,各部分算法的運行時間如表4 所示:

表4 可驗證隨機函數各部分算法運行時間Table 4 Running time of each part of the VRF algorithm

由實驗結果可知,可驗證隨機函數各部分算法的運行時間均在毫秒級,并且相較于第5.2.3 節中處理交易所需的總時間,基本可以忽略其對交易處理速度的影響.在此基礎上,本文對兩種方案的交易延遲進行了測試,實驗結果如圖6 所示.原始方案和優化方案的交易延遲時間都會隨著交易數量的增加而增長,這是由于交易數量超過處理上限后,需要排隊等待節點處理.可以看出,在相同交易數量的情況下,優化方案的交易延遲明顯低于原始方案.

圖6 原有方案與優化方案交易延遲對比Fig.6 The comparison of transaction delay between original scheme and optimized scheme

5.2.5 通信成本

本文將一筆交易從發出到確認這段時間內,區塊鏈網絡產生的所有報文的報文數量和報文大小作為這筆交易的通信成本.實驗分別測試了原有方案與優化方案下,一筆交易和多筆交易時的通信成本,實驗結果如圖7 所示.原始方案中,每個背書節點都會將背書信息發送給客戶端,而在優化方案中,未被選中的候選背書節點將不再執行此操作,因此在本實驗中,優化方案的報文數量和總報文大小均小于原始方案,這表明使用優化方案可以在一定程度上降低通信成本.

圖7 原有方案與優化方案通信成本對比Fig.7 The comparison of communication cost between original scheme and optimization scheme

6 總結

本文針對Hyperledger fabric 原有共識機制存在的問題,提出了一種基于可驗證隨機函數的背書節點隨機選取的優化方案,并對優化后的共識機制從安全性、通信成本和交易性能等方面進行了分析比對和實驗測試.實驗結果表明,優化后的共識機制在保證通信成本基本不變的前提下,具有更高的安全性、更低的交易延遲和更快的交易處理速度.

主站蜘蛛池模板: 亚洲欧洲自拍拍偷午夜色| 国产精品一区二区在线播放| 99热在线只有精品| 一级全免费视频播放| 欧美色图第一页| 5555国产在线观看| 欧美天堂久久| 蜜臀av性久久久久蜜臀aⅴ麻豆| 色婷婷国产精品视频| 亚洲欧美一级一级a| 在线观看亚洲精品福利片| 青青草国产在线视频| 日本在线欧美在线| 91蜜芽尤物福利在线观看| AⅤ色综合久久天堂AV色综合| 高清国产在线| 18禁黄无遮挡网站| 日韩高清中文字幕| 国产高清免费午夜在线视频| 久热精品免费| 性做久久久久久久免费看| 国产综合色在线视频播放线视| 欧美亚洲一区二区三区在线| 久久狠狠色噜噜狠狠狠狠97视色| 午夜成人在线视频| 亚洲精品视频免费看| 88国产经典欧美一区二区三区| 久久精品这里只有精99品| 久久国产精品电影| 国产精品页| 国产精品三级专区| 四虎精品黑人视频| аⅴ资源中文在线天堂| 91精品专区| 日本不卡在线播放| 欧美日韩v| 欧美日韩福利| 国产精品视频a| 日本手机在线视频| 久久国产av麻豆| 国产网站免费看| 成人在线观看一区| 91人妻在线视频| 亚洲福利一区二区三区| 久久精品国产国语对白| 视频一区视频二区中文精品| 波多野结衣一区二区三区AV| 成人一级黄色毛片| 中国丰满人妻无码束缚啪啪| 午夜日b视频| 日韩天堂视频| 亚洲码在线中文在线观看| 国产后式a一视频| 国产精品久久久久久影院| 亚洲性视频网站| 亚洲天堂免费在线视频| 亚洲经典在线中文字幕| 内射人妻无套中出无码| 国产一区二区三区夜色| 996免费视频国产在线播放| 日韩欧美中文字幕在线韩免费| 亚洲成人黄色在线| 青草午夜精品视频在线观看| 亚洲欧美色中文字幕| 99re这里只有国产中文精品国产精品| 熟妇人妻无乱码中文字幕真矢织江| 高h视频在线| 九九免费观看全部免费视频| 国产99免费视频| 全免费a级毛片免费看不卡| 国产成人91精品免费网址在线| 亚洲AV成人一区国产精品| 欧美精品伊人久久| av在线人妻熟妇| 在线日本国产成人免费的| 国产欧美日韩va另类在线播放| 精品综合久久久久久97超人该| 中文字幕 91| 日韩成人在线一区二区| 精品伊人久久久久7777人| 日本午夜影院| 国产精品99一区不卡|