姜慶臣,莫路鋒,朱雪芬,唐麗華
(1. 浙江農(nóng)林大學 信息與教育技術中心, 浙江 杭州311300 ;2. 西湖大學 信息中心,浙江 杭州310024)
傳統(tǒng)的分布式數(shù)據(jù)共享管理模式中,多采用集中模式,通過建立數(shù)據(jù)中心來集中存儲管理,為確保隱私數(shù)據(jù)不被外泄,數(shù)據(jù)中心的管理者通過提高中心節(jié)點的防御能力來抵抗各種攻擊,如數(shù)據(jù)庫加密技術、ACL 、入侵檢測和防御等。而在區(qū)塊鏈技術中,數(shù)據(jù)存儲采用分布式管理模式,沒有統(tǒng)一的管理者,攻擊者很容易攻陷其中一些節(jié)點,比如: 節(jié)點偽裝、網(wǎng)絡嗅探等。因此傳統(tǒng)的數(shù)據(jù)中心管理模式無法適應數(shù)據(jù)共享交換需求,需要對管理模式進行改造。目前,面向去中心化區(qū)塊鏈系統(tǒng)日益增多,如醫(yī)療健康、資產(chǎn)管理、檔案管理、智能電網(wǎng)等[1-4]。隨著區(qū)塊鏈技術的推廣以及對智能合約的支持,研究方向也越來越傾向于去中心化自治系統(tǒng),并逐步走向去中心化自治組織/ 公司[5]。由于區(qū)塊鏈系統(tǒng)與傳統(tǒng)的分布式數(shù)據(jù)庫在技術、應用等方面也有很大不同,分布式數(shù)據(jù)庫需要考慮中心節(jié)點崩潰性故障,而區(qū)塊鏈中節(jié)點之間是平等的,但是是不可信的,因而需考慮區(qū)塊鏈的容錯性。
本文針對現(xiàn)有的區(qū)塊鏈環(huán)境下分布式數(shù)據(jù)管理問題,對區(qū)塊鏈技術、智能合約、系統(tǒng)架構、訪問控制、安全與可信性等[5-10]方面進行分析和研究,并從區(qū)塊鏈技術與數(shù)據(jù)庫外聯(lián)結合的角度出發(fā),在系統(tǒng)模型、加密算法、一致性共識等方面提出創(chuàng)新性應用研究,從而實現(xiàn)分布式數(shù)據(jù)庫去中心化,去第三方可信機構交易信任化,避免集中式服務器單點故障和私密數(shù)據(jù)泄露的風險。
區(qū)塊鏈[8-12]是一種基于P2P 網(wǎng)絡中的一組節(jié)點,以數(shù)據(jù)區(qū)塊為單位,按照時間順序只可添加的鏈式數(shù)據(jù)結構,其建立一個去中心或弱中心化的數(shù)據(jù)庫系統(tǒng),實現(xiàn)分布式環(huán)境下安全高效的共識機制。在區(qū)塊鏈系統(tǒng)中,往往把數(shù)據(jù)與事務以區(qū)塊為單位進行存儲,通過區(qū)塊鏈共識算法產(chǎn)生區(qū)塊,區(qū)塊與區(qū)塊之間以鏈表的方式進行連接,所有的區(qū)塊形成了一個全局順序的鏈表,被稱作全局賬本數(shù)據(jù)。在不可信的網(wǎng)絡中,每個區(qū)塊及前一區(qū)塊存儲著一定數(shù)量的交易信息以及針對這些交易的Hash值、時間戳等參數(shù),并以Hash 連接方式形成區(qū)塊鏈的名稱部分,在效率、安全可信性方面可滿足不同業(yè)務邏輯數(shù)據(jù)處理的要求。由于區(qū)塊鏈接時間的不可逆性致使任何試圖篡改歷史區(qū)塊的行為很容易被追溯并被其他節(jié)點排斥,如: 網(wǎng)絡中的節(jié)點通過哈希值驗證自身數(shù)據(jù)以及前一區(qū)塊的數(shù)據(jù)是否與相應的哈希值一致。
智能合約[11-12]的概念早在1994年就出現(xiàn)了,但一直無法在應用平臺上推廣,直到新興的區(qū)塊鏈技術為智能合約提供了契合的執(zhí)行平臺。智能合約是一種可執(zhí)行合約條款的計算交易協(xié)議,簽署合約的各參與方就合約內容達成一致,能夠自動執(zhí)行合約條款中的計算機指令?;趨^(qū)塊鏈技術的智能合約是一種程序化規(guī)則和邏輯,是部署在區(qū)塊鏈上去中心化、信息共享的程序代碼,將智能合約的代碼和狀態(tài)作為一種交易數(shù)據(jù)保存到區(qū)塊中,并實時監(jiān)測已部署的智能合約動態(tài),當其滿足執(zhí)行規(guī)則時,觸發(fā)預設指令。由于程序代碼、狀態(tài)、數(shù)據(jù)均存儲于鏈上,因此智能合約擁有防篡改性強、去中心化程度高等特點,一旦啟動就會自動運行,不需要任何合約簽署方的干預。
目前,已經(jīng)存在智能合約定義為一組數(shù)據(jù)交易中的腳本,如以太坊中合約被擴展為圖靈完備的腳本語言;在超級賬本(Hyper Ledger) 中,合約直接用于實現(xiàn)區(qū)塊鏈業(yè)務等[13]。合約的內容也被寫入?yún)^(qū)塊鏈全局賬本,全局賬本是區(qū)塊鏈中的數(shù)據(jù)存儲結構,用于存儲所有的交易記錄、合約以及相關的參數(shù)加密信息,并通過共識機制定期或觸發(fā)方式維持全局一致性,如根據(jù)預定義場景的“IF-THEN ” 類型的條件響應規(guī)則。本文利用基于區(qū)塊鏈技術的智能合約構建分布式數(shù)據(jù)共享區(qū)塊鏈,實現(xiàn)對數(shù)據(jù)的記錄、存儲以及共享邏輯業(yè)務功能。
目前,根據(jù)中心化程度和應用場景不同,區(qū)塊鏈系統(tǒng)大致分為3 類:公有鏈、私有鏈、聯(lián)盟鏈[10,14]。對比主流的區(qū)塊鏈實例,結果見表1 。
表1 區(qū)塊鏈實例對比
在聯(lián)盟鏈當中,聯(lián)盟成員的加入需要征求其他節(jié)點的同意,并按聯(lián)盟規(guī)則允許授權節(jié)點讀寫數(shù)據(jù),比較切合緊耦合的企業(yè)或組織內部業(yè)務庫間各數(shù)據(jù)共享,同時又兼容一定的開放性、魯棒性、擴展性要求。本文采用PBFT 算法作為區(qū)塊鏈中的共識算法,并提出一種面向智能合約數(shù)據(jù)庫共享(To - Contract Database Share,ToC-DBS) 模式。以下重點介紹該模式的核心構成: 系統(tǒng)架構、抽象定義、合約算法等。
基于智能合約模式下數(shù)據(jù)共享的基本架構主要有3個方面: 網(wǎng)絡環(huán)境、分布式數(shù)據(jù)源以及權威的第三方,如圖1 所示。
圖1 ToC- DBS 基本架構圖
在分布式環(huán)境下存儲大量存在全序關系的數(shù)據(jù)記錄系統(tǒng),對數(shù)據(jù)的操作均存儲在區(qū)塊內并以區(qū)塊的粒度進行管理,如圖2 所示。
圖2 分布式數(shù)據(jù)庫系統(tǒng)區(qū)塊鏈
節(jié)點構成包括前一區(qū)塊哈希值(Pre Hash)、共識驗證(Cons Proof)、事務的哈希值(Merkle Root) 等。節(jié)點可利用共識驗證字段驗證其存儲的區(qū)塊是否滿足共識條件, 并確保網(wǎng)絡中少量節(jié)點的惡意行為不會影響區(qū)塊鏈的一致性,從而使其支持拜占庭容錯[15-16]。
本文ToC -DBS 架構邏輯分層采用典型的區(qū)塊鏈系統(tǒng)分層,分為數(shù)據(jù)層、網(wǎng)絡層、共識層、激勵層、合約層和事務層[8]。主要在數(shù)據(jù)層利用Hash算法、Merkle 樹等密碼技術和時間戳技術將區(qū)塊鏈的結構化數(shù)據(jù)、非結構化數(shù)據(jù)區(qū)塊生成時間間隔內所有交易賬單,并以鏈式結構進行分布式存儲,邏輯上受分布式全局賬本統(tǒng)一管理;在共識層采用PBFT機制可以減少不必要的通信負載,提高數(shù)據(jù)交換的效率;事務層提供實體屬性、訪問策略、策略判決等合約服務。
定義1數(shù)據(jù)實體集合Pi={ID,(PK,SK),K/V Set -Url,Permission,Pi_Non},i=1 …n,其中,n: 實體數(shù);ID:數(shù)據(jù)實體標識號;(PK,SK):公私鑰密碼對;K/V Set-Url : 數(shù)據(jù)對象實體Key -Value 地址;Permission :準入許可;Pi_Non : 隨機數(shù),用于對抗偽裝攻擊。
定義2策略事務集合TRi={id,pk,Tr_Type,ac,T_data,timestamp,sig},i=1 …n,其中,n: 事務數(shù);id :同步策略事務標識;pk:策略事務發(fā)布者公鑰;Tr_Type:事務類型;ac : 數(shù)據(jù)實體操作類型, 如注冊、更新和刪除;T_data : 具體的事務消息數(shù)據(jù)。根據(jù)事務消息數(shù)據(jù)規(guī)模的不同, 采用鏈上與鏈下相結合兩種存儲方法,鏈上存儲數(shù)據(jù)摘要Hash,鏈下存儲K/V Set-Url ;timestamp : 事務時間戳,記錄開始和結束時間;sig : 事務數(shù)據(jù)的消息簽名。
定義3策略判斷集合Ti={(Ci,Di),i=1 …n},n為可信數(shù)據(jù)實體節(jié)點的集合。外部節(jié)點集合定義:Ck={C1,C2,C3,…,Cn}。定義計算節(jié)點的決策集合:Dk={D1,D2,D3,…,Dn},表示T中各節(jié)點對外部節(jié)點Ck的共識結果,1 代表可信,0 代表不可信。
在新數(shù)據(jù)集產(chǎn)生后,創(chuàng)建數(shù)據(jù)實體集:Pi,i=1 …n,需要存儲本地化處理: 用ECC 算法[17-18]加密的公私密鑰對PK (Public Key )、SK (Security Key ) 對數(shù)據(jù)集文件地址進行Hash 加密,ECC 算法加密Pi后會得到唯一數(shù)據(jù)集ID (HashID),加密表示式為:SHA256 (PK,Pi)=HashID,然后做數(shù)據(jù)集密文的哈希值重復性檢查。在本地化業(yè)務庫處理后,把公鑰PK給其他相關業(yè)務系統(tǒng),并提供數(shù)據(jù)集密文URL 地址,完成數(shù)據(jù)集在區(qū)塊鏈上注冊。
由于數(shù)據(jù)集文件信息中包含多種數(shù)據(jù)結構的數(shù)據(jù),同時,一個業(yè)務庫也存在多個數(shù)據(jù)集同步,在此可用DBi(HashID1,HashID2,…) 標識,在完成數(shù)據(jù)集校驗和上傳后,密文被分成序列seq1,seq2,…,可儲存在與業(yè)務密切相關的其他節(jié)點中,這樣即使某個節(jié)點出現(xiàn)不可預知性錯誤,也不會影響獲取儲存在其他地方的副本數(shù)據(jù)。描述性傳輸偽代碼算法如下:
傳輸完成后,還需要通過合約得到用于數(shù)據(jù)集密文的私鑰SK,完成解密過程和驗證。為防止文件泄露,這里就需要驗證簽名SigDBi,驗證通過后解密方可得到數(shù)據(jù)集明文,同時,合約執(zhí)行結束。描述性偽代碼算法如下:
ToC-DBS 模式還需建立訪問控制區(qū)塊鏈(Access Control Blockchain,ACB)和日志審計區(qū)塊鏈(Log Audit Blockchain,LAB)。ACB 用于記錄訪問控制策略、身份密鑰PK 標識,并設置時間戳,為數(shù)據(jù)訪問決策提供支撐;LAB 記錄網(wǎng)絡運行的日志數(shù)據(jù),為審計和追溯提供證據(jù)。
本文根據(jù)區(qū)塊鏈的遠程證明模型給出的訪問控制和可信證據(jù)溯源的基本方法建立雙鏈模式和可信驗證[6,19]。通過對數(shù)據(jù)集文件進行加密、傳輸和解密驗證等智能合約算法,在PBFT 共識機制下完成數(shù)據(jù)的共享以及所有權驗證,這樣即便是網(wǎng)絡中存在少量惡意節(jié)點, 通過維護統(tǒng)一的高公信力的賬本數(shù)據(jù),依然可以確保分布式互連網(wǎng)絡中所有節(jié)點數(shù)據(jù)的一致性、安全和可信性。共識驗證示意如圖3 所示。
圖3 一致性和共識驗證
本文設定實驗環(huán)境為: 由5個系統(tǒng)數(shù)據(jù)庫組成分布式驗證者,100個數(shù)據(jù)集文件節(jié)點,并取區(qū)塊大小為1 MB,全部保存完整的區(qū)塊鏈數(shù)據(jù)源HashID值集合以及Merkle Root,信息損失量采用文獻[ 20]的計算方法:
元組信息損失量:
表的信息損失量:
其中,|el| 表示數(shù)據(jù)集元組數(shù)量,1 ≤l≤m;Ni為第i個數(shù)值屬性的范圍,MAXNi和MINNi為集合中最大值和最小值;H(TCj) 是merkle 樹的高度,H(∧(∪Cj)) 是具有最小公共祖先的分類樹的高度;n是數(shù)據(jù)表T元組的數(shù)量。當同步樣本量足夠大時,增大同步量對降低數(shù)據(jù)表的信息損失量無顯著影響,如圖4所示。
圖4 數(shù)據(jù)共享信息損失量
這種設計方法通過智能合約內的驗證策略對一致性報告進行分析和驗證,其中包括完整性證據(jù)、數(shù)據(jù)集屬性證據(jù)以及計算節(jié)點合法性等,并且一致性結果在驗證點之間通過日志審計區(qū)塊鏈是可追溯的。相比于PoW 和PoS 共識機制,PBFT 共識可避免算力浪費和51% 攻擊的問題。
在實際應用中,如果存在攻擊者竊聽、截獲和篡改通信消息現(xiàn)象,PBFT 驗證共識在算法中保證1/3 以上節(jié)點無法被攻擊者控制就可以,當然,這個數(shù)字是由共識算法決定的。在數(shù)據(jù)共享驗證方面,取決于區(qū)塊數(shù)據(jù)的大小和交易規(guī)模,數(shù)據(jù)集在k=100 、|DB|=5 的環(huán)境下,PBFT 共識時間占比為STP,共識驗證時間為Tp,則其計算公式為:
其中,TA為全部節(jié)點同步共享時間。
采用PBFT 算法的優(yōu)點主要在于: 首先系統(tǒng)節(jié)點少于(n -1)/3個情況下,如數(shù)據(jù)丟失、宕機等,其容錯效果較好;其次在每次共識過程中保證至少有(2n+1)/3個正常節(jié)點,可確保運行環(huán)境是相對安全、穩(wěn)定的。共識時間占比如圖5 所示。
圖5 共識時間占比
系統(tǒng)運行成本可以參照以太坊成本計算模式,整個所需的運行成本包括數(shù)據(jù)加密CostECC、數(shù)據(jù)共享Costshare、共識驗證Costid及智能合約CostContract等,計算公式如下:
其中,α 為ECC 數(shù)據(jù)加密次數(shù),β 為共享同步次數(shù),γ 為共識驗證次數(shù),δ 為智能合約部署或者更新次數(shù)。
在忽略合約的部署和調用成本情況下,將數(shù)據(jù)同步存儲區(qū)塊快照操作次數(shù)定義為ζ,因此ToC - DBS模式每進行ζ 次數(shù)據(jù)同步存儲操作時,加密和共識驗證保護合約成本為:
通過對數(shù)據(jù)共享存儲、加密算法、網(wǎng)絡共識、智能合約等的分析,成本和安全表現(xiàn)如圖6 所示。
圖6 ζ與成本、安全性關系圖
由于分布式數(shù)據(jù)庫區(qū)塊鏈中第三方權威實體通過一定的算法產(chǎn)生或者組織內部授權和監(jiān)管,其運行成本忽略不計,但可信性高于比特幣等區(qū)塊鏈系統(tǒng)。
本文在對區(qū)塊鏈和智能合約技術進行分析的基礎上,提出了構建分布式數(shù)據(jù)共享模式和算法應用,并提供數(shù)據(jù)的一致性、安全和可信性分析和評估方法。主要內容涉及訪問控制、日志審計、共識機制權威等,該模式能夠有效解決傳統(tǒng)架構下面臨的訪問控制單點化、策略決策中心化的問題,并對成本效率進行了分析,未來還需多方合作進一步完善數(shù)據(jù)共享的分析和評估方法。