黃子鑫,黨建武,王陽萍,雍 玖
(1.蘭州交通大學 光電技術與智能控制教育部重點實驗室,甘肅 蘭州 730070;2.四電BIM工程與智能應用鐵路行業(yè)重點實驗室,甘肅 蘭州 730070;3.蘭州交通大學 電子與信息工程學院,甘肅 蘭州 730070)
近年來,工程建設項目呈現(xiàn)數(shù)量多、體量大、各參建系統(tǒng)組成復雜等特點,使得工程監(jiān)理對項目建設的質量控制難度增大,對監(jiān)理數(shù)據(jù)的可靠性、易獲取性有較高要求,構建信息化監(jiān)理數(shù)據(jù)共享平臺,將有利于解決上述問題。對于監(jiān)理數(shù)據(jù)交互過程產生的大量數(shù)據(jù)流無法使用單臺計算機進行處理,云計算作為一種全新計算方式,利用動態(tài)、可伸縮的計算資源,能夠對數(shù)據(jù)進行有效整合,提高數(shù)據(jù)的利用效率。盡管云計算在數(shù)據(jù)處理方面優(yōu)勢突出,但云環(huán)境下的信息共享平臺受到云端第三方限制,數(shù)據(jù)安全存在隱患,導致提取的數(shù)據(jù)缺少法律效力;由于各項目參建方組織架構零散,很難實現(xiàn)對數(shù)據(jù)的完全信任與共享,使得監(jiān)理方與工程項目各參建方的信息交流困難,監(jiān)理記錄(滯后)與現(xiàn)場實際情況不同步,影響施工質量。
區(qū)塊鏈作為比特幣的底層技術,本質上是一個不可篡改的分布式數(shù)據(jù)庫,其不可篡改、去中心化和可溯源的特性,能夠解決云環(huán)境下的數(shù)據(jù)共享網(wǎng)絡中存在的安全性問題。對于采用區(qū)塊鏈技術的數(shù)據(jù)共享方案進行研究,文獻[1]設計了一個微電網(wǎng)數(shù)據(jù)安全共享方案,通過對傳統(tǒng)權益證明(Proof of Stake,POS)共識作出改進,解決傳統(tǒng)POS共識機制容易分叉的問題,但改進后的共識機制無法滿足大規(guī)模節(jié)點應用場景下的共識需求。文獻[2]提出了一種基于聯(lián)盟區(qū)塊鏈技術的知識共享模型,通過星際文件系統(tǒng)(InterPlanetary File System,IPFS)實現(xiàn)知識數(shù)據(jù)的可靠存儲,并使用智能合約保障數(shù)據(jù)安全,但使用智能合約實現(xiàn)整個知識共享過程的設計導致系統(tǒng)開銷過大,無法應用于大規(guī)模數(shù)據(jù)管理。文獻[3]提出了病人可控、云鏈協(xié)同的病歷共享模型,在病歷共享上通過采用聚類算法對實用拜占庭共識算法加以改進,一定程度上提升了算法效率,但算法容錯性有待提升。文獻[4]提出了基于區(qū)塊鏈的車聯(lián)網(wǎng)數(shù)據(jù)共享模型,用于保障數(shù)據(jù)的安全傳輸,但以計算能力較弱的車輛作為節(jié)點,導致共識效率低下。文獻[5]設計了一種基于區(qū)塊鏈的動力電池數(shù)據(jù)監(jiān)控與共享系統(tǒng),由于未對傳統(tǒng)共識機制進行優(yōu)化,導致系統(tǒng)運行效率低下。
對于采用區(qū)塊鏈技術的工程項目管理領域進行研究,文獻[6]提出了基于區(qū)塊鏈的質量信息管理模型,通過保障質量信息管理的一致性和透明性,避免利益相關者之間的糾紛。文獻[7]針對工程建設質量管理及追溯中存在的問題,提出了基于區(qū)塊鏈技術的多角色參與、全過程追溯的信息管理系統(tǒng)框架。文獻[8]為解決鐵路大數(shù)據(jù)在流轉過程中存在的信任成本高、數(shù)據(jù)安全得不到保證等問題,提出了一種基于區(qū)塊鏈技術的信息共享框架,并對方案可行性進行了分析。文獻[9]對區(qū)塊鏈在工程項目管理領域的適用性進行分析,并根據(jù)應用場景提出了相應的應用方案。文獻[10]針對傳統(tǒng)監(jiān)理行業(yè)管理效率低下、管理不透明和數(shù)據(jù)資料有效性得不到保障的問題,提出了基于區(qū)塊鏈技術的工程監(jiān)理模式,并將其應用在雄安新區(qū)的工程建設上。綜上所述,已有一些研究將區(qū)塊鏈應用于工程項目管理中,但隨著工程規(guī)模的擴大以及建設環(huán)境的復雜化,需要更加高效、可靠的區(qū)塊鏈系統(tǒng)為項目管理提供保障,以上工作尚未針對系統(tǒng)的功能實現(xiàn)、共識效率及安全性問題對區(qū)塊鏈自身關鍵技術進行研究改進。
本文在現(xiàn)有研究的基礎上,提出一種基于區(qū)塊鏈的工程監(jiān)理數(shù)據(jù)共享模型。首先,將各工程建設參與方納入平臺管理構成監(jiān)理數(shù)據(jù)共享聯(lián)盟鏈,為緩解鏈上存儲壓力,采用文件摘要信息鏈上存儲,源文件加密后進行鏈下IPFS存儲的方式實現(xiàn)數(shù)據(jù)的安全存儲;其次,設計智能合約來完成監(jiān)理數(shù)據(jù)的上鏈存儲及查詢操作,保障了操作過程的高效性、透明性;最后,針對傳統(tǒng)實用拜占庭容錯(Practical Byzantine Fault Tolerance,PBFT)算法[11-13]存在缺少節(jié)點以及退出機制、共識效率隨節(jié)點規(guī)模增大而不斷降低等問題,引入節(jié)點信任度評價模型對PBFT共識機制進行改進,并在完成共識后將存證數(shù)據(jù)向全網(wǎng)廣播,進一步保障全網(wǎng)數(shù)據(jù)的一致性。通過對系統(tǒng)的安全性、性能測試結果進行論證分析,得出本方案具有良好的性能與安全性。
基于區(qū)塊鏈的工程監(jiān)理數(shù)據(jù)共享模型能夠有效提高監(jiān)理部門的工作效率,且在保證監(jiān)理數(shù)據(jù)安全的同時,解決監(jiān)理方與各參建單位間因為信任成本高導致的信息交流困難問題?;趨^(qū)塊鏈的工程數(shù)據(jù)共享模型如圖1所示。模型由用戶端、工程數(shù)據(jù)共享聯(lián)盟鏈和IPFS集群3部分組成。
圖1 基于區(qū)塊鏈的工程數(shù)據(jù)共享模型Fig.1 Engineering data sharing model based on blockchain
(1)用戶端
普通用戶在身份認證通過后由客戶端向監(jiān)理數(shù)據(jù)共享聯(lián)盟鏈發(fā)起交易請求,調用相應的合約接口,通過部署完備的智能合約實現(xiàn)監(jiān)理數(shù)據(jù)的存儲及查詢。
(2)監(jiān)理數(shù)據(jù)共享聯(lián)盟鏈
監(jiān)理數(shù)據(jù)共享聯(lián)盟鏈主要包括節(jié)點網(wǎng)絡、共識機制以及智能合約。節(jié)點網(wǎng)絡由參與工程建設的施工方、監(jiān)理方、設計方、建設方以及政府監(jiān)管部門組成。監(jiān)理方項目管理部門承擔系統(tǒng)中管理員的角色,主要包括創(chuàng)建部署區(qū)塊鏈網(wǎng)絡、管理鏈上節(jié)點及賬本、用戶身份注冊以及證書的發(fā)放和管理、智能合約管理。本方案使用改進后的PBFT算法進行交易廣播,參與共識的節(jié)點能夠查詢數(shù)據(jù)并負責執(zhí)行共識算法,未參與共識的節(jié)點負責監(jiān)督共識并將共識結果同步至各自的分布式賬本。智能合約部署于區(qū)塊鏈上,能夠被鏈上節(jié)點查看并調用執(zhí)行預置響應動作,通過智能合約保障數(shù)據(jù)流轉過程中的一致性及透明性。
(3)IPFS集群
IPFS是一個點對點的分布式文件系統(tǒng),有較高的安全性和存儲能力,在本文模型中用于鏈下存儲加密文件數(shù)據(jù),用戶可通過唯一標識文件的Hash地址查找 IPFS 中的對應文件。模型數(shù)據(jù)流說明如下:
① 項目參建單位用戶在將文件分類整理后,將原文件通過項目參與方公鑰加密并存儲到IPFS集群。
② 上傳完成后,IPFS返回數(shù)據(jù)訪問地址到參建單位客戶端。
③ 參建單位用戶將文件相關各方私鑰簽名、文件ID和文件Hash地址等屬性信息進行打包,構造存證信息;通過部署好的智能合約上傳信息至區(qū)塊鏈并加蓋時間戳。
④ 在上鏈完成后,發(fā)回鏈上文件ID到參建單位客戶端。
⑤ 鏈上的普通用戶發(fā)送查詢請求,根據(jù)鏈上文件ID通過智能合約執(zhí)行查詢操作。
⑥ 完成查詢后返回操作狀態(tài)和查詢結果。
⑦ 項目參與方用戶向IPFS發(fā)送文件數(shù)據(jù)獲取請求,將文件的Hash地址發(fā)送至IPFS集群進行查詢。
⑧ IPFS根據(jù)索引查詢得到加密后的文件,發(fā)送至客戶端,查詢者在鏈下通過私鑰解密后得到完整原文件。
考慮到現(xiàn)有區(qū)塊鏈系統(tǒng)工作性能和存儲能力不足,以及中心化數(shù)據(jù)庫存在的數(shù)據(jù)安全問題,本文將采用鏈上存儲結合IPFS的方式來進行存儲機制設計。區(qū)塊鏈與IPFS相結合的安全存儲機制如圖2所示。以監(jiān)理部門進行監(jiān)理數(shù)據(jù)上傳為例,將原文件加密后存儲至IPFS集群,IPFS系統(tǒng)返回文件唯一Hash地址至客戶端, Hash地址作為交易數(shù)據(jù)同文件屬性信息一同存儲至區(qū)塊鏈賬本。若對原文件數(shù)據(jù)進行修改,由于 IPFS產生 Hash 地址與文件唯一對應,對原文件的更改會導致其對應Hash地址的改變,而上傳至區(qū)塊鏈中的 Hash 地址不可被篡改,通過對比檢測,保證了監(jiān)理數(shù)據(jù)的不可篡改。在存儲性能上,由于Hash地址占用存儲空間較小,相較于將原文件存儲至區(qū)塊鏈,本方案能夠有效緩解鏈上的存儲壓力。
圖2 區(qū)塊鏈與IPFS相結合的安全存儲機制Fig.2 Secure storage mechanism combining blockchain and IPFS
為解決傳統(tǒng)監(jiān)理數(shù)據(jù)共享系統(tǒng)存在的執(zhí)行過程不透明、執(zhí)行標準不統(tǒng)一的問題,本方案采用智能合約實現(xiàn)監(jiān)理數(shù)據(jù)交互過程中的各項功能,智能合約的核心算法邏輯包含監(jiān)理方數(shù)據(jù)存儲以及數(shù)據(jù)查詢2部分。
2.2.1 監(jiān)理數(shù)據(jù)存儲合約
監(jiān)理數(shù)據(jù)存儲合約用于將文件摘要信息存儲上鏈。用戶發(fā)送存儲申請,在數(shù)據(jù)存儲的過程中調用已部署完備的RPC,為確保鏈下存儲數(shù)據(jù)的機密性,管理員使用項目參與方的聯(lián)合密鑰K加密文件數(shù)據(jù),并將加密后的數(shù)據(jù)發(fā)送至IPFS進行存儲,成功存儲后IPFS端會返回數(shù)據(jù)的訪問地址CID。最后,將原文件Hash值h以及用戶私鑰簽名文件s等相關屬性信息打包,構造存證信息并執(zhí)行上鏈操作,具體算法如下。
算法1監(jiān)理數(shù)據(jù)存儲合約輸入:用戶私鑰SK,文件名N,文件內容C,時間戳Timestamp輸出:交易哈希Tx_Hash,狀態(tài)值R1. function EvidenceStorage (input list)2. h←Hash(C)3. s←Sign(SK,C)4. M←Encryption(C,K)∥ 原文件加密5. cid←StoreToIPFS(M) ∥ 密文上傳至IPFS6. t←ConstructTx(N,h,s,cid,Timestamp) ∥構造交易7. Tx_Hash←BrocastTx(t) ∥廣播交易8. if Tx_Hash is Null9. R ← fail10. else11. R ← success12. return {Tx_Hash,R}13. end function
2.2.2 監(jiān)理數(shù)據(jù)查詢合約
監(jiān)理數(shù)據(jù)查詢合約用于為鏈上用戶提供存儲數(shù)據(jù)查詢功能。用戶向區(qū)塊鏈發(fā)送查詢請求,通過文件ID進行索引,文件ID是文件的唯一特征值,完成查詢后將結果返回給用戶。為避免查詢量增加導致的性能下降問題,本方案中監(jiān)理方節(jié)點通過維護一張Hash表(TABLE)來實現(xiàn)基于文件ID進行的查詢。
表中存儲文件ID到文件屬性值(索引)的映射。TABLE具體結構如下所示:
TABLE={KEY:id,VLAUE:(TimeStamp,name,register,hash,owner,cid)}
通過調用size方法判斷是否查詢到文件數(shù)據(jù),若查詢成功,則返回第一條存儲記錄,若失敗則返回默認字符串。具體算法如下。
算法2監(jiān)理數(shù)據(jù)查詢合約輸入:鏈上文件id輸出:文件相關屬性集合env(文件名name,登記人register,文件哈希hash,時間戳timestamp,所有者owner, 索引值cid)1. function SelectEvidence (String id)2. t←getTableContract(C)3. c←newCondition(id) ∥以id為查詢主鍵4. q←InvokeSelect(t ,c)5. If (q.size > 0) ∥ 判斷該id對應的證據(jù)記錄是否存在6. env←q.getResult[0] ∥獲取第一條存證記錄7. else8. env← empty9. return env10. end function
針對傳統(tǒng)PBFT算法在監(jiān)理數(shù)據(jù)共享系統(tǒng)應用中存在的缺陷,例如存在主節(jié)點選取隨意、共識效率隨節(jié)點規(guī)模增大而不斷降低等問題。本文結合監(jiān)理數(shù)據(jù)共享的應用場景,引入節(jié)點信任度評價模型對PBFT進行改進??紤]到全節(jié)點參與完成一次共識,系統(tǒng)中廣播的通信量較大,導致通信復雜度高、共識效率差。改進后的PBFT算法依據(jù)節(jié)點行為評價值對節(jié)點進行篩選,選取可靠的共識節(jié)點及主節(jié)點參與共識,通過縮小共識群組規(guī)模降低通信復雜度,在保證共識安全的前提下,有效地提升了共識效率。算法流程如圖3所示。
圖3 算法流程Fig.3 Algorithm flow chart
對節(jié)點歷史共識行為進行評價,按歷史評價值大小降序排列節(jié)點,在新一輪請求開始前選定共識節(jié)點群組及主節(jié)點。確定共識群組后執(zhí)行共識協(xié)議,若在規(guī)定時間內完成共識則將新區(qū)塊寫入?yún)^(qū)塊鏈,否則通過視圖切換協(xié)議更改主節(jié)點。根據(jù)節(jié)點此輪共識行為評價對節(jié)點信任度進行更新,并對所有節(jié)點執(zhí)行信任度恢復機制。根據(jù)更新后節(jié)點信任度值重新對節(jié)點進行等級劃分,選取可靠節(jié)點進行下一輪共識,循環(huán)至客戶端停止發(fā)送請求。
2.3.1 節(jié)點信任度評價模型
信任模型最早由Marsh系統(tǒng)論述,基于節(jié)點共識行為對其信任進行度量。在本文模型中,對于節(jié)點行為的監(jiān)測參考文獻[14]的方法,即完成共識后允許參與共識的節(jié)點根據(jù)節(jié)點歷史交互情況相互進行行為評價,在評價過程中,由與其進行信息交互的節(jié)點進行標記,具體節(jié)點行為分類如表1所示。若節(jié)點i在規(guī)定時間內向節(jié)點j發(fā)送消息,且此消息與j接收到的大部分消息一致,則認為節(jié)點i共識行為正常,標記為正常節(jié)點;若節(jié)點j在規(guī)定時間內未收到節(jié)點i發(fā)送的消息,或節(jié)點i拒收節(jié)點j發(fā)送的確認消息,則認為節(jié)點i離線,標記為宕機節(jié)點;若節(jié)點j收到的大部分消息與節(jié)點i發(fā)送的消息不一致,則認為節(jié)點i是惡意行為,標記為惡意節(jié)點,且一旦被標記為惡意節(jié)點,后續(xù)節(jié)點的行為評價將無法更改標記。根據(jù)節(jié)點行為標記對節(jié)點進行信任度評價值計算,信任度評價值將作為節(jié)點等級劃分的依據(jù)。
表1 節(jié)點行為分類Tab.1 Node behavior classification
(1)節(jié)點歷史信任度評價
節(jié)點歷史信任度評價值通過節(jié)點在上一輪請求前的歷史共識行為進行計算,通過節(jié)點歷史行為評價可以預測節(jié)點在將來共識過程中的活躍程度,有效防止節(jié)點在共識前刻意隱藏共識行為并伺機破壞共識,節(jié)點i的靜態(tài)信任度評價Qi可以表示為:
Qi=Si-kEi,
(1)
式中,Si為節(jié)點i歷史共識行為中誠實行為的次數(shù);Ei為節(jié)點i歷史行為中作惡次數(shù);k為權重。節(jié)點的信任度歷史評價值隨節(jié)點歷史行為中作惡次數(shù)增加而減小。
(2)節(jié)點近期信任度評價
節(jié)點近期信任度評價值依據(jù)節(jié)點在上一次共識中的行為進行計算,近期的共識行為作為評價節(jié)點的重要依據(jù),使信任模型能夠滿足對正常參與共識節(jié)點進行獎勵,容忍偶發(fā)故障節(jié)點,嚴厲懲罰作惡節(jié)點,信任度評價計算如下:
Mi=Si(t)-k2Di(t)-k4Ei(t),
(2)
式中,Si(t)表示節(jié)點在第t次共識中節(jié)點是否是正常行為,若表現(xiàn)為正常行為,則Si(t)=1,否則Si(t)=0;Di(t)表示節(jié)點第t次共識中是否有故障行為,若表現(xiàn)為故障行為,Di(t)=1,若無故障行為,Di(t)=0;Ei(t)表示節(jié)點第t次共識中是否有惡意行為,若表現(xiàn)為惡意行為,Ei(t)=1,若無惡意行為,Ei(t)=0。權重按指數(shù)級別設置,節(jié)點一但作惡,Mi迅速下降,使得系統(tǒng)能夠及時對惡意節(jié)點做出反應。
(3)節(jié)點信任度動態(tài)更新
完成視圖切換后,根據(jù)節(jié)點歷史信任度值以及近期信任度值對群組內節(jié)點信任度進行動態(tài)更新,更新后的節(jié)點信任度值計算如下:
Ri=Rinit+α×Qi+β×Mi(i=1,2,…,n),
(3)
式中,Ri是節(jié)點綜合信任度值,0 2.3.2 節(jié)點信用等級劃分 為確保系統(tǒng)具有較高的共識效率,本方案根據(jù)信任度值對節(jié)點進行信用等級劃分,選擇部分信任度值較高的節(jié)點參與共識,并保證主節(jié)點的安全可靠。節(jié)點等級劃分閾值如表2所示,Rg為優(yōu)先節(jié)點集合閾值,信任度值滿足Rg 表2 節(jié)點等級劃分閾值Tab.2 Threshold of node level classification 表3 節(jié)點權限分類Tab.3 Node permission classification 2.3.3 節(jié)點信任度恢復 信用恢復機制通過節(jié)點已獲得的信任度值來調節(jié)獎罰程度,用于對信任度值過高或過低的節(jié)點進行信任恢復,防止節(jié)點因為信任度過高而產生惰性行為,或者因信任度過低被永久隔離出共識群組。信用恢復機制可以在一定程度上降低系統(tǒng)中心化風險以及加速共識群組內成員流動,避免趨于集中化。信用恢復定義如下: Ri=Ri-[h/T]×γ(Ri>Rg), (4) Ri=Ri+[h/T]×γ(Ri (5) 式中,h為節(jié)點距離上一次共識的時間;Rg為B組上限閾值;T為設置的復蘇周期,是一個常數(shù);γ是設置的信用恢復權值。T,γ均可根據(jù)具體業(yè)務調整,為避免節(jié)點在成功參與共識后的信任度值出現(xiàn)負增長,T,γ的取值應滿足T>γ。若節(jié)點的信用值Ri>Rg,對其信任度值逐步進行回收,一旦節(jié)點信任度值達到上限閾值或擔任過主節(jié)點,在下一輪共識開始時該節(jié)點信任度值會被重置為B組上限閾值Rg;若節(jié)點的信用值Ri 2.3.4 廣播結果與數(shù)據(jù)同步 共識算法用于保證系統(tǒng)內所有節(jié)點達到一致的共識狀態(tài),對于傳統(tǒng)PBFT算法,達成共識后在回復階段,所有參與共識的節(jié)點會返回響應到客戶端,客戶端根據(jù)接收到的響應結果數(shù)量判斷是否保存共識。在建設工程監(jiān)理數(shù)據(jù)共享的應用背景下,共識的目的是保障工程監(jiān)理數(shù)據(jù)的存證效力,需要各工程建設參與方共同維護。基于文獻[15]并結合本文研究背景對回復階段進行改進,在完成共識后將數(shù)據(jù)向全網(wǎng)廣播,使未參與共識的節(jié)點同步數(shù)據(jù),共識節(jié)點對數(shù)據(jù)同步過程進行監(jiān)督,共同維護鏈上數(shù)據(jù)的一致性,且一定程度上降低了縮小共識群組范圍帶來的系統(tǒng)中心化風險。一致性協(xié)議執(zhí)行流程如圖4所示。 圖4 一致性協(xié)議執(zhí)行流程Fig.4 Consistency protocol execution process 請求階段(Request):用戶通過客戶端向主節(jié)點發(fā)送提案申請,在對請求數(shù)據(jù)格式及數(shù)字簽名驗證通過后構造提案信息。提案信息格式為 預準備階段(Pre-Prepare):主節(jié)點將提案信息構造成預準備信息并發(fā)送至各副本節(jié)點。預準備信息格式為 準備階段(Prepare):各副本節(jié)點接收主節(jié)點預準備信息,驗證通過后進入準備階段,生成準備信息并發(fā)送至其他節(jié)點,將預準備信息與準備信息寫入自己信息日志,準備信息格式為 確認階段(Commit):當副本節(jié)點收到2f+1個與預準備消息一致的準備消息后,表明共識完成。主節(jié)點將包含請求信息的區(qū)塊連接至區(qū)塊鏈,副本節(jié)點進行賬本同步,并向除自己外的其他節(jié)點發(fā)送確認消息 回復階段(Reply):共識完成后,主節(jié)點向全網(wǎng)節(jié)點廣播共識結果,參與共識的節(jié)點對廣播消息進行監(jiān)督,未參與共識的節(jié)點進行賬本同步。 本文提出基于區(qū)塊鏈的監(jiān)理方數(shù)據(jù)共享模型,需要保障數(shù)據(jù)的安全可靠,且由于本文共識算法的改進借鑒了POS的設計思路,將基于節(jié)點共識行為的信譽值作為權益,需要對常見的權益累積攻擊及賄賂攻擊進行攻擊成本分析。 3.1.1 數(shù)據(jù)安全分析 由于區(qū)塊鏈特殊的數(shù)據(jù)結構,通過計算數(shù)據(jù)Hash值生成Merkle樹并將Merkle根存儲在區(qū)塊頭部,若對鏈上數(shù)據(jù)進行更改會引起區(qū)塊Hash值的變化,可通過Hash值檢驗判斷鏈上數(shù)據(jù)是否被修改。結合Hash算法防碰撞的特性,改動數(shù)據(jù)并重新計算區(qū)塊Hash需要耗費巨大計算量,保證了鏈上數(shù)據(jù)的安全。 對于數(shù)據(jù)鏈下存儲安全,本文采用IPFS存儲數(shù)據(jù),能夠避免因單節(jié)點宕機造成的數(shù)據(jù)丟失,保護了數(shù)據(jù)的完整性。使用項目參與方公鑰加密上傳數(shù)據(jù)后再存儲至IPFS,使得只有與文件數(shù)據(jù)相關的項目參與方才可使用其私鑰解密,保護了數(shù)據(jù)的機密性。在工程監(jiān)理應用場景中,數(shù)據(jù)由監(jiān)理方上傳,同建設各參與方進行信息交互,整個過程由智能合約執(zhí)行,有效保護了數(shù)據(jù)在傳輸過程中的安全。 3.1.2 攻擊成本分析 (1) 權益累計攻擊 權益累計攻擊來源于POS 共識機制中的幣齡累計攻擊,攻擊者通過在共識階段累積信譽值并伺機對系統(tǒng)進行攻擊。在基于動態(tài)信任度的PBFT共識算法中,節(jié)點的信譽值并非隨共識次數(shù)的增加而無限制增長。文中提出的信任度恢復機制能夠限制高信譽值節(jié)點的信譽值累積速度,并通過設置上限閾值增加信譽值累積難度,節(jié)點一旦進行惡意行為,系統(tǒng)會對節(jié)點進行處罰,且信譽值的下降幅度是任何理性節(jié)點所不能承受的。故在改進后的PBFT中,節(jié)點很難通過積累信譽值對系統(tǒng)發(fā)動攻擊,有效避免了權益中心化問題。 (2) 賄賂攻擊 賄賂攻擊者在共識前“懸賞”共識組內節(jié)點在其提供的支鏈上進行打包記賬,當作惡節(jié)點獲得記賬權后,攻擊者便可以使區(qū)塊鏈產生分叉。由于鏈上的所有節(jié)點均是利益持有者,節(jié)點作惡會受到處罰并被限制參與共識,一段時間內組織不再為其分配利益。由于節(jié)點信任度動態(tài)評價中對作惡節(jié)點嚴厲處罰,節(jié)點的懲罰損失遠大于惡意行為所獲得的利益,且攻擊者無法確定每次參與出塊的節(jié)點,故進行賄賂攻擊是不可行的。使用文獻[16]提出的量化分析方法對本文模型進行分析。 (6) (7) (8) 式(6)代表節(jié)點N在前n次共識中積累的信譽值,假設節(jié)點在接下來的x次共識中連續(xù)作惡。信譽度更新為式(7)。式(8)是節(jié)點N在誠實正常行為后進行惡意行為的信任度與之前誠實行為的信任度所占比例。可以看出,在作惡行為后,系統(tǒng)對節(jié)點作出嚴厲處罰,信譽度下降幅度較大,一但節(jié)點被隔離出共識組,在一段時間內將不能參加共識。 為了分析改進后PBFT算法的性能,通過建立仿真平臺對其進行實驗測試,該平臺由10~50個節(jié)點組成,并設置占總節(jié)點數(shù)20%的拜占庭節(jié)點。為了實驗的準確性,減弱網(wǎng)絡環(huán)境對算法性能造成的影響,在實驗中將共識節(jié)點部署在同一網(wǎng)絡下的3臺主機上,具體的環(huán)境配置如表4所示。本文實驗結合2.3.1參數(shù)設置需求對公式中的參數(shù)進行設置。由于無法保障新加入節(jié)點的可靠性,為避免新加入節(jié)點參與主節(jié)點選舉,Rinit需要滿足Rinit 表4 軟硬件環(huán)境配置Tab.4 Hardware and software environment configuration 3.2.1 共識時延測試 共識時延指客戶端發(fā)送請求到系統(tǒng)執(zhí)行完成所需要的時間,是衡量區(qū)塊鏈性能的重要指標[17-18]。本文將進行2組實驗,環(huán)境設置為節(jié)點數(shù)量規(guī)模由10遞增至50,進行20次共識,以及設置節(jié)點數(shù)量為30,共識次數(shù)由1增加到40,分別測試2種算法在不同實驗環(huán)境下的共識時延變化,2組實驗均取多次結果的平均值作為算法的共識時延值。測試結果如圖5和圖6所示。 圖5 算法交易時延隨節(jié)點數(shù)量規(guī)模變化對比Fig.5 Comparison of algorithmic transaction latency varying with node number 圖6 算法交易時延隨共識輪數(shù)增加變化對比Fig.6 Comparison of algorithmic transaction latency varying with increase of number of consensus rounds 可以看出,當節(jié)點數(shù)量規(guī)模逐步增加時,2種算法的交易時延均隨網(wǎng)絡節(jié)點數(shù)量的增加而不斷增大。由于存在節(jié)點行為評價過程,改進后的PBFT算法共識時延在共識節(jié)點數(shù)量較少時與傳統(tǒng)PBFT算法差距較小,但隨節(jié)點數(shù)量的上升,改進后的PBFT共識算法共識時延小于傳統(tǒng)PBFT算法且始終保持較大優(yōu)勢;隨著共識輪數(shù)的增加,改進后PBFT算法的交易時延趨于穩(wěn)定且遠小于傳統(tǒng)PBFT算法。在共識時延方面,改進后的共識算法明顯優(yōu)于傳統(tǒng)PBFT算法。 3.2.2 吞吐量測試 吞吐量是單位時間內系統(tǒng)所能處理的事物數(shù)量,其大小反映了系統(tǒng)處理交易的能力,計算如下: TPS=transcations/Δt, (9) 式中,transcations為系統(tǒng)在出塊間隔內處理的總交易量;Δt為出塊間隔。吞吐量測試同樣選擇在節(jié)點數(shù)量由10遞增至50,進行20次共識,以及設置節(jié)點數(shù)量為30,共識次數(shù)由1增加到40的2組實驗環(huán)境中測試,每次實驗的事件量設置為10 000,2組實驗均取多次測試結果平均值作為算法吞吐量測試結果,與傳統(tǒng)PBFT算法的吞吐量對比如圖7和圖8所示。 圖7 算法吞吐量隨節(jié)點數(shù)量規(guī)模變化對比Fig.7 Comparison of algorithm throughput varying with node number 圖8 算法吞吐量隨共識輪數(shù)增加變化對比Fig.8 Comparison of algorithm throughput varying with increase of number of consensus rounds 可以看出,若節(jié)點規(guī)模增大,2種算法的吞吐量都隨著點數(shù)的增加呈降低趨勢,但改進后算法吞吐量要明顯高于原機制中的系統(tǒng)吞吐量;同樣,當共識輪數(shù)增加,改進后PBFT算法吞吐量要明顯高于傳統(tǒng)PBFT算法。從吞吐量上看,改進后的算法在共識過程中擁有更好的性能。 3.2.3 容錯性能測試 改進后的PBFT存在基于節(jié)點信任度的分組機制,隨共識輪數(shù)的增加,改進后算法能夠將系統(tǒng)中拜占庭節(jié)點逐步排除出共識節(jié)點組,因此共識節(jié)點群組中拜占庭節(jié)點數(shù)量占比會逐漸降低,一定程度上提高了系統(tǒng)的容錯性。實驗設置節(jié)點數(shù)量為30,其中有20%拜占庭節(jié)點,隨著共識輪數(shù)的增加,共識群組中拜占庭節(jié)點數(shù)量對比如圖9所示。 圖9 拜占庭節(jié)點數(shù)量對比Fig.9 Comparison of Byzantine node number 傳統(tǒng)PBFT中拜占庭節(jié)點數(shù)量占比始終保持20%不變[19],而對于改進后的PBFT算法,進行30輪共識后,群組中拜占庭節(jié)點占比下降到0,且趨于穩(wěn)定??梢钥闯?,在長期運行的條件下,改進后的共識算法通過基于節(jié)點信任度的分組機制將拜占庭節(jié)點排除出共識群組,提升了參與共識節(jié)點的可靠性,大幅降低拜占庭節(jié)點被選為主節(jié)點的概率,相較于傳統(tǒng)PBFT算法能夠容忍更多的錯誤節(jié)點,滿足應用平臺的需求。 針對傳統(tǒng)的中心化存儲方式存在數(shù)據(jù)易被篡改的問題,基于區(qū)塊鏈的數(shù)據(jù)存證平臺能夠有效保障數(shù)據(jù)安全[20-22],但需要高效率的共識以滿足監(jiān)理方與建設參與方之間的數(shù)據(jù)交互需求。從共識效率、吞吐量和算力需求3方面將本文方案與文獻[23-24]中基于區(qū)塊鏈的數(shù)據(jù)共享方案進行對比分析,結果如表6所示。 表6 對比分析結果Tab.6 Comparative analysis results 文獻[23]基于比特幣區(qū)塊鏈系統(tǒng)進行模型設計,能夠保證數(shù)據(jù)共享過程中的數(shù)據(jù)存儲安全,方案使用工作量證明(Proof of Work,POW)機制來防止惡意節(jié)點對區(qū)塊鏈的攻擊,但POW用計算能力競爭的方式選取主節(jié)點,相較于PBFT算法共識效率低、算力需求大[19]。文獻[24]提出了基于區(qū)塊鏈技術的鐵路數(shù)據(jù)匯集共享體系架構,通過基于聯(lián)盟鏈的PBFT共識算法解決了POW算法高能耗的問題,但依據(jù)3.2.1的算法測試結果,傳統(tǒng)PBFT的共識效率及算法安全性相較改進后算法更低。通過對比可以看出,本文所提方案在共識效率、吞吐量和算力需求幾方面相較其他方案更優(yōu)秀。 本文提出了一個基于區(qū)塊鏈的監(jiān)理方數(shù)據(jù)共享模型,解決了工程監(jiān)理數(shù)據(jù)共享中存在的數(shù)據(jù)安全以及信息交互困難的問題,并對該模型架構及數(shù)據(jù)流程進行介紹;利用智能合約完成對監(jiān)理數(shù)據(jù)的存儲和查詢,對核心算法邏輯進行說明;提出了一種基于節(jié)點信任度評價的PBFT共識機制,在保障共識安全的同時提高了節(jié)點間共識效率;通過仿真實驗對所提出模型進行安全性及性能進行分析,相比其他模型,本文模型在保障數(shù)據(jù)安全的基礎上有更好的性能,可以滿足監(jiān)理方工程監(jiān)理數(shù)據(jù)共享的實際需要。在后續(xù)工作中將結合數(shù)字簽名技術進一步保障用戶隱私安全,并制定更詳細的訪問控制機制來保障數(shù)據(jù)流轉過程中的數(shù)據(jù)安全。3 實驗及理論分析
3.1 安全性分析
3.2 性能測試及結果分析
4 結束語