趙倩
摘 ? ?要
本文針對區(qū)塊鏈技術(shù)中的共識算法的一種——PBFT算法(實用拜占庭算法)進行研究,主要探究該算法在用戶隱私數(shù)據(jù)保護與查找問題方面的作用。筆者從區(qū)塊鏈技術(shù)作用機制與原理入手,以拜占庭算法為基礎(chǔ),與實用拜占庭算法相比較,深入剖析了實用拜占庭算法在區(qū)塊鏈共識機制當(dāng)中的作用機理,并通過數(shù)據(jù)實例進行驗證,充分證明了實用拜占庭算法在區(qū)塊鏈技術(shù)中的廣闊使用前景。
關(guān)鍵詞:PBFT ?實用拜占庭算法 ?區(qū)塊鏈 ?用戶隱私
中圖分類號:TP309;TP311.1
1.區(qū)塊鏈技術(shù)簡介
區(qū)塊鏈最大的特點是“去中心化”,而目前區(qū)塊鏈技術(shù)的主要用途是充當(dāng)數(shù)字加密貨幣分布式賬本,是數(shù)字加密貨幣得以順暢運行的底層核心技術(shù)。目前較流行的虛擬貨幣比特幣正式在該技術(shù)的支持下來構(gòu)建整體系統(tǒng)的。除了比特幣外,近年來還涌現(xiàn)了其他新的虛擬貨幣以及完全不同應(yīng)用領(lǐng)域,比如能源領(lǐng)域等。它們的共性依然是對區(qū)塊鏈技術(shù)的深層使用,因此,區(qū)塊鏈技術(shù)的研究和應(yīng)用得以進一步擴展,與此同時,也暴露出了一些問題,最典型的就是數(shù)據(jù)隱私問題。由于“去中心化”這個特征既成就了區(qū)塊鏈特有的共識機制,但也容易造成用戶數(shù)據(jù)隱私的泄露問題,且隨著在多類應(yīng)用中的深入使用,數(shù)據(jù)隱私泄露問題越發(fā)嚴(yán)重。以比特幣交易為例,在這種虛擬貨幣的交易過程中會產(chǎn)生海量的數(shù)據(jù)記錄,這就給某些意圖不軌的人帶來的機會,他們會利用數(shù)據(jù)中的規(guī)律來推算交易參與者的身份信息和地理位置信息,進而將這些信息關(guān)聯(lián)起來,盜取用戶的比特幣。而在如能源應(yīng)用等領(lǐng)域若發(fā)生信息泄露,則會給國家?guī)砭薮蟮纳踔翞?zāi)難性的損失。由此可見,區(qū)塊鏈技術(shù)的數(shù)據(jù)隱私安全問題至關(guān)重要。
關(guān)于區(qū)塊鏈的數(shù)據(jù)安全問題,目前常用的解決方法有以下幾種:
第一種是節(jié)點認(rèn)證機制,即在區(qū)塊鏈特有的節(jié)點中植入一定的加密規(guī)則,這樣就可以防止非法節(jié)點的訪問,這種機制的特征是僅針對0惡意節(jié)點的區(qū)塊鏈有效,一旦發(fā)生惡意節(jié)點訪問,則防護無力。
第二種是混幣機制,這種機制的目的是及時檢測出已存在的惡意節(jié)點,并且用數(shù)據(jù)混淆的理念增強交易單的數(shù)據(jù)復(fù)雜度,進而降低惡意節(jié)點獲取區(qū)塊鏈數(shù)據(jù)庫規(guī)律的可能性。
第三種是零知識證明技術(shù),這種技術(shù)的主要作用就是信息認(rèn)證,但是認(rèn)證耗時較長,效率不高。
第四種是物聯(lián)網(wǎng)數(shù)據(jù)保護技術(shù),該技術(shù)的基本原理與區(qū)塊鏈技術(shù)相吻合,即去中心化,通過對存儲數(shù)據(jù)區(qū)塊化處理并加密,來提高數(shù)據(jù)的安全性。但缺點就是計算量過大,實用型不佳。
2. PBFT算法簡介
除了上述數(shù)據(jù)隱私保護機制外,本文從區(qū)塊鏈數(shù)據(jù)隱私保護與數(shù)據(jù)查找取用便捷的角度提出了一種數(shù)據(jù)安全方案,即基于PBFT算法的區(qū)塊鏈用戶隱私數(shù)據(jù)保護與查找機制。實用拜占庭容錯算法即Practical Byzantine Fault Tolerance(簡稱PBFT),是對拜占庭容錯算法Byzantine Fault Tolerance(即BFT)的優(yōu)化方案。實用拜占庭算法的分布式安全性以抵抗攻擊者主觀攻擊意愿和攻擊抵抗能力來看是所有共識算法當(dāng)中最強大的 。
在區(qū)塊鏈網(wǎng)絡(luò)環(huán)境中,有運行正常的節(jié)點,有信息有誤的節(jié)點,還有惡意節(jié)點。共識算法的核心是在正常的節(jié)點間形成對網(wǎng)絡(luò)狀態(tài)的共識。通常,這些信息有誤節(jié)點被稱為拜占庭節(jié)點,而正常的節(jié)點即為非拜占庭節(jié)點。
拜占庭系統(tǒng)普遍采用的假設(shè)條件包括:
1)拜占庭節(jié)點的行為可以是任意的,拜占庭節(jié)點之間可以共謀;
2)節(jié)點之間的錯誤是不相關(guān)的;
3)節(jié)點之間通過異步網(wǎng)絡(luò)連接,網(wǎng)絡(luò)中的消息可能丟失、亂序并延時到達(dá),但大部分協(xié)議假設(shè)消息在有限的時間里能傳達(dá)到目的地;
4)服務(wù)器之間傳遞的信息,第三方可以嗅探到,但是不能篡改、偽造信息的內(nèi)容和驗證信息的完整性。
原始的拜占庭容錯系統(tǒng)缺乏實用性,還需要額外的時鐘同步機制支持,算法的復(fù)雜度也是隨節(jié)點增加而指數(shù)級增加。而實用拜占庭容錯系統(tǒng)(PBFT)降低了拜占庭協(xié)議的運行復(fù)雜度 ,從指數(shù)級別降低到多項式級別(Polynomial)。實用拜占庭容錯算法的特征在于可搜索加密,主要思想就是對重要信息的加密和密文進行搜索,在不耗費過多計算量的同時,還能確保區(qū)塊鏈數(shù)據(jù)的安全。其具體計算邏輯與算法演示在后面進行詳述。
在進行基于PBFT算法的區(qū)塊鏈用戶隱私數(shù)據(jù)保護與查找機制的有效性論證之前,首先要明確區(qū)塊鏈技術(shù)自身基本的架構(gòu)。區(qū)塊鏈架構(gòu)分為數(shù)據(jù)層、網(wǎng)絡(luò)層、共識層、合約層和應(yīng)用層5個基本層,各層次職能獨立、協(xié)同分工,進而實現(xiàn)基于區(qū)塊鏈技術(shù)的各類應(yīng)用的正常運行。區(qū)塊鏈的基本架構(gòu)模型如圖1所示。
如圖1所示,最底層數(shù)據(jù)層的職能就是存儲數(shù)據(jù)和取用數(shù)據(jù),這里的數(shù)據(jù)主要指交易數(shù)據(jù)。每當(dāng)完成一個交易,則與此次交易相關(guān)的所有數(shù)據(jù)都會被數(shù)據(jù)層封裝,以單個區(qū)塊的形式傳輸?shù)教囟〝?shù)據(jù)庫。通常,一個單獨的數(shù)據(jù)區(qū)塊中一定會有時間數(shù)據(jù)、哈希值、以及與交易數(shù)據(jù)有關(guān)的各個文本文件等。
3.PBFT算法共識計算步驟與優(yōu)勢
本文采用PBFT技術(shù)是區(qū)塊鏈共識算法中的一種 ,目前流行的區(qū)塊鏈共識算法主要有強一致性共識算法和最終一致性共識算法兩大分支,而PBFT算法屬于前一個分支,特點就是相對最終一致性共識算法,這類算法的安全性更高,對數(shù)據(jù)隱私的保護力度更強,但是算法較復(fù)雜,相對耗費的計算量較大。
采用PBFT算法需要經(jīng)歷客戶端、主節(jié)點和從節(jié)點三種角色的共識,假設(shè)PBFT算法可以接納的非法節(jié)點為f,假設(shè)從節(jié)點的個數(shù)為n,則從節(jié)點個數(shù)與非法節(jié)點的關(guān)系表達(dá)式為:n=3f+1。
每一個客戶端的請求共需要經(jīng)過5個階段,通過采用兩次兩兩交互的方式在服務(wù)器達(dá)成一致之后再執(zhí)行客戶端的請求。由于客戶端不能從服務(wù)器端獲得任何服務(wù)器運行狀態(tài)的信息,PBFT中主節(jié)點是否發(fā)生錯誤只能由服務(wù)器監(jiān)測。如果服務(wù)器在一段時間內(nèi)都不能完成客戶端的請求,則會觸發(fā)視圖更換協(xié)議。其中C為客戶端,N0~N3表示服務(wù)節(jié)點, N0為主節(jié)點,N3為故障節(jié)點。整個協(xié)議的基本過程是:
1)客戶端發(fā)送請求,激活主節(jié)點的服務(wù)操作。
2)當(dāng)主節(jié)點接收請求后,啟動三階段的協(xié)議以向各從節(jié)點廣播請求。
(2.1)序號分配階段,主節(jié)點給請求賦值一個序列號n,廣播序號分配消息和客戶端的請求消息m,并將構(gòu)造PRE-PREPARE消息給各從節(jié)點;
(2.2)交互階段,從節(jié)點接收PRE-PREPARE消息,向其他服務(wù)節(jié)點廣播PREPARE消息;
(2.3)序號確認(rèn)階段,各節(jié)點對視圖內(nèi)的請求和次序進行驗證后,廣播COMMIT消息,執(zhí)行收到的客戶端的請求并給客戶端以響應(yīng)。
3)客戶端等待來自不同節(jié)點的響應(yīng),若有m+1個響應(yīng)相同,則該響應(yīng)即為運算的結(jié)果。
進行共識計算的步驟如圖2 、圖3所示。
運用PBFT算法的優(yōu)勢是,計算過程中爭奪出塊的機會這一關(guān)鍵步驟所消耗的計算資源較少,可以快速獲得共識成功;PBFT算法的另外一個優(yōu)點則在于爭奪出塊機會時,不會依賴區(qū)塊鏈中各節(jié)點的權(quán)益分量,這個優(yōu)勢不僅能節(jié)約運算耗費,還能同時保證數(shù)據(jù)的隱私安全。
4. 可搜索加密
區(qū)塊鏈技術(shù)的去中心化和分布式特征決定了區(qū)塊鏈中的數(shù)據(jù)不會采用明文存儲,而是先加工所有數(shù)據(jù)封裝加密,以單位區(qū)塊的模式存入分布式數(shù)據(jù)庫。這種存儲方式對于單個區(qū)塊數(shù)據(jù)來說安全性高,但是對于整體數(shù)據(jù)的查找、取用等來說,就加大了難度。
為了解決分布式存儲模式下數(shù)據(jù)的使用便捷性,可搜索加密技術(shù)應(yīng)運而生。目前,常用的可搜索加密技術(shù)有兩種,分別是對稱可搜索和非對稱可搜索。假設(shè)加密密鑰為A,解密密鑰為B,則對稱可搜索技術(shù)中,A=B,而非對稱可搜索技術(shù)中,A≠B。兩者的不同之處在于前者適用于私鑰用戶,而后者適用于公鑰用戶。
可搜索加密的技術(shù)特征是對已經(jīng)完成加密的文件和數(shù)據(jù)進行搜索,所以在搜索的過程中,運算過程需要向系統(tǒng)出示搜索信號標(biāo)簽,相對來說,這種以來標(biāo)簽進行搜索的信息查找方式安全性更好。
可搜索加密技術(shù)的數(shù)據(jù)查找運算執(zhí)行過程如圖4所示。
5. 應(yīng)用測試
為了驗證上述算法的有效性,本文對存儲在區(qū)塊鏈中的某虛擬貨幣數(shù)據(jù)進行查找,總共選用了3000個關(guān)鍵詞,且都是加密狀態(tài)。測試時以100為啟始查找數(shù)量,之后按照一定規(guī)律遞增,來檢驗運用本文所論述的方法查找數(shù)據(jù)所耗費的時間,測試結(jié)果如表1所示。
將表1中的數(shù)據(jù)進行分析,可以得到如圖5所示的查找耗時隨著關(guān)鍵詞個數(shù)增加而延長的趨勢。
由表1和圖4綜合分析可知,運用本文所論述的基于PEFT算法的區(qū)塊鏈用戶隱私數(shù)據(jù)保護與查找技術(shù),在可搜索加密的支撐下,一方面能夠保證區(qū)塊鏈數(shù)據(jù)的安全效果,另一方面,且便于用戶查找,查找耗時與所查找個數(shù)正相關(guān)。
6. 小節(jié)
本文提出并論述了基于PBFT算法的區(qū)塊鏈用戶隱私數(shù)據(jù)保護與查找機制,在可搜索加密的支撐下,能夠有效地確保區(qū)塊鏈中用戶隱私數(shù)據(jù)的安全需求,防止數(shù)據(jù)被惡意泄露,且在數(shù)據(jù)加密情況下,用戶查找取用數(shù)據(jù)更便捷。此方法可應(yīng)用于基于區(qū)塊鏈底層技術(shù)的不同應(yīng)用,具有較好的社會價值。
參考文獻(xiàn)
[1]Alexandre Pólvora,Susana Nascimento,Joana S. Louren?o,F(xiàn)abiana Scapolo. Blockchain for industrial transformations: A forward-looking approach with multi-stakeholder engagement for policy advice[J]. Technological Forecasting & Social Change,2020,157.
[2]陳子豪,李強.基于K-medoids的改進PBFT共識機制[J].計算機科學(xué),2019,46(12):101-107.
[3]王德文,王莉鑫.基于實用拜占庭容錯算法的多能源交互主體共識機制[J].電力系統(tǒng)自動化,2019,43(09):41-52
[4]Seyed Mojtaba Hosseini Bamakan,Amirhossein Motavali,Alireza Babaei Bondarti. A survey of blockchain consensus algorithms performance evaluation criteria[J]. Expert Systems With Applications,2020,154.
[5]Vincent Gramoli. From blockchain consensus back to Byzantine consensus[J]. Future Generation Computer Systems,2020,107.
[6]Dolan,Kavanaugh,Korinek,Sandler. Off the Chain: Blockchain Technology—An Information Organization System[J]. Technical Services Quarterly,2019,36(3).
[7]戴鵬.基于實用拜占庭共識算法(PBFT)的區(qū)塊鏈模型的評估與改進[D].北京郵電大學(xué),2019.
[8]儲勁松.基于PBFT算法的動態(tài)共識機制研究[D].江蘇大學(xué),2019.
[9]蔡曉晴,鄧堯,張亮,史久琛,陳全,鄭文立,劉志強,龍宇,王堃,李超,過敏意.區(qū)塊鏈原理及其核心技術(shù)[J/OL].計算機學(xué)報,2019:1-51
[10]朱巖,王巧石,秦博涵,王中豪.區(qū)塊鏈技術(shù)及其研究進展[J].工程科學(xué)學(xué)報,2019,41(11):1361-1373.
[11]方軼,鄧建球,叢林虎,劉崇屹.一種基于環(huán)簽名的PBFT區(qū)塊鏈共識算法改進方案[J].計算機工程,2019,45(11):32-36.
[12]余麗靜.網(wǎng)絡(luò)異常情況下的拜占庭容錯算法研究[J].計算機光盤軟件與應(yīng)用,2013,16(15):144-145.
[13]王稼香.拜占庭容錯算法在Web Services服務(wù)提供上的研究與應(yīng)用[D].山東大學(xué),2009.
[14]鄭敏,王虹,劉洪,譚沖.區(qū)塊鏈共識算法研究綜述[J].信息網(wǎng)絡(luò)安全,2019(07):8-24.
[15]武岳,李軍祥.區(qū)塊鏈共識算法演進過程[J/OL].計算機應(yīng)用研究:1-9.
[16]李芳,李卓然,趙赫.區(qū)塊鏈跨鏈技術(shù)進展研究[J].軟件學(xué)報,2019,30(06):1649-1660.
[17]張亮,劉百祥,張如意,江斌鑫,劉一江.區(qū)塊鏈技術(shù)綜述[J].計算機工程,2019,45(05):1-12.
[18]甘俊,李強,陳子豪,張超.區(qū)塊鏈實用拜占庭容錯共識算法的改進[J].計算機應(yīng)用,2019,39(07):2148-2155.
[19]Tom Hill. Blockchain for research: Review[J]. Learned Publishing,2018,31(4).
[20]趙振龍.帶有主動恢復(fù)的拜占庭容錯算法在區(qū)塊鏈中的應(yīng)用[D].浙江大學(xué),2018.
[21]雷長劍,林亞平,李晉國,趙江華.志愿云環(huán)境下的拜占庭容錯研究[J].計算機工程,2016,42(05):1-7.
[22]張曉霞,張鳳登,陳愨,張大慶.分布式WSN系統(tǒng)中的拜占庭故障算法研究[J].工業(yè)控制計算機,2014,27(01):70-72.
[23]劉讓,張鳳登.FlexRay時鐘同步拜占庭故障容錯算法研究[J].軟件導(dǎo)刊,2020,19(01):68-74.