姜慶臣,莫路鋒,朱雪芬,唐麗華
(1. 浙江農林大學 信息與教育技術中心, 浙江 杭州311300 ;2. 西湖大學 信息中心,浙江 杭州310024)
傳統的分布式數據共享管理模式中,多采用集中模式,通過建立數據中心來集中存儲管理,為確保隱私數據不被外泄,數據中心的管理者通過提高中心節點的防御能力來抵抗各種攻擊,如數據庫加密技術、ACL 、入侵檢測和防御等。而在區塊鏈技術中,數據存儲采用分布式管理模式,沒有統一的管理者,攻擊者很容易攻陷其中一些節點,比如: 節點偽裝、網絡嗅探等。因此傳統的數據中心管理模式無法適應數據共享交換需求,需要對管理模式進行改造。目前,面向去中心化區塊鏈系統日益增多,如醫療健康、資產管理、檔案管理、智能電網等[1-4]。隨著區塊鏈技術的推廣以及對智能合約的支持,研究方向也越來越傾向于去中心化自治系統,并逐步走向去中心化自治組織/ 公司[5]。由于區塊鏈系統與傳統的分布式數據庫在技術、應用等方面也有很大不同,分布式數據庫需要考慮中心節點崩潰性故障,而區塊鏈中節點之間是平等的,但是是不可信的,因而需考慮區塊鏈的容錯性。
本文針對現有的區塊鏈環境下分布式數據管理問題,對區塊鏈技術、智能合約、系統架構、訪問控制、安全與可信性等[5-10]方面進行分析和研究,并從區塊鏈技術與數據庫外聯結合的角度出發,在系統模型、加密算法、一致性共識等方面提出創新性應用研究,從而實現分布式數據庫去中心化,去第三方可信機構交易信任化,避免集中式服務器單點故障和私密數據泄露的風險。
區塊鏈[8-12]是一種基于P2P 網絡中的一組節點,以數據區塊為單位,按照時間順序只可添加的鏈式數據結構,其建立一個去中心或弱中心化的數據庫系統,實現分布式環境下安全高效的共識機制。在區塊鏈系統中,往往把數據與事務以區塊為單位進行存儲,通過區塊鏈共識算法產生區塊,區塊與區塊之間以鏈表的方式進行連接,所有的區塊形成了一個全局順序的鏈表,被稱作全局賬本數據。在不可信的網絡中,每個區塊及前一區塊存儲著一定數量的交易信息以及針對這些交易的Hash值、時間戳等參數,并以Hash 連接方式形成區塊鏈的名稱部分,在效率、安全可信性方面可滿足不同業務邏輯數據處理的要求。由于區塊鏈接時間的不可逆性致使任何試圖篡改歷史區塊的行為很容易被追溯并被其他節點排斥,如: 網絡中的節點通過哈希值驗證自身數據以及前一區塊的數據是否與相應的哈希值一致。
智能合約[11-12]的概念早在1994年就出現了,但一直無法在應用平臺上推廣,直到新興的區塊鏈技術為智能合約提供了契合的執行平臺。智能合約是一種可執行合約條款的計算交易協議,簽署合約的各參與方就合約內容達成一致,能夠自動執行合約條款中的計算機指令。基于區塊鏈技術的智能合約是一種程序化規則和邏輯,是部署在區塊鏈上去中心化、信息共享的程序代碼,將智能合約的代碼和狀態作為一種交易數據保存到區塊中,并實時監測已部署的智能合約動態,當其滿足執行規則時,觸發預設指令。由于程序代碼、狀態、數據均存儲于鏈上,因此智能合約擁有防篡改性強、去中心化程度高等特點,一旦啟動就會自動運行,不需要任何合約簽署方的干預。
目前,已經存在智能合約定義為一組數據交易中的腳本,如以太坊中合約被擴展為圖靈完備的腳本語言;在超級賬本(Hyper Ledger) 中,合約直接用于實現區塊鏈業務等[13]。合約的內容也被寫入區塊鏈全局賬本,全局賬本是區塊鏈中的數據存儲結構,用于存儲所有的交易記錄、合約以及相關的參數加密信息,并通過共識機制定期或觸發方式維持全局一致性,如根據預定義場景的“IF-THEN ” 類型的條件響應規則。本文利用基于區塊鏈技術的智能合約構建分布式數據共享區塊鏈,實現對數據的記錄、存儲以及共享邏輯業務功能。
目前,根據中心化程度和應用場景不同,區塊鏈系統大致分為3 類:公有鏈、私有鏈、聯盟鏈[10,14]。對比主流的區塊鏈實例,結果見表1 。

表1 區塊鏈實例對比
在聯盟鏈當中,聯盟成員的加入需要征求其他節點的同意,并按聯盟規則允許授權節點讀寫數據,比較切合緊耦合的企業或組織內部業務庫間各數據共享,同時又兼容一定的開放性、魯棒性、擴展性要求。本文采用PBFT 算法作為區塊鏈中的共識算法,并提出一種面向智能合約數據庫共享(To - Contract Database Share,ToC-DBS) 模式。以下重點介紹該模式的核心構成: 系統架構、抽象定義、合約算法等。
基于智能合約模式下數據共享的基本架構主要有3個方面: 網絡環境、分布式數據源以及權威的第三方,如圖1 所示。

圖1 ToC- DBS 基本架構圖
在分布式環境下存儲大量存在全序關系的數據記錄系統,對數據的操作均存儲在區塊內并以區塊的粒度進行管理,如圖2 所示。

圖2 分布式數據庫系統區塊鏈
節點構成包括前一區塊哈希值(Pre Hash)、共識驗證(Cons Proof)、事務的哈希值(Merkle Root) 等。節點可利用共識驗證字段驗證其存儲的區塊是否滿足共識條件, 并確保網絡中少量節點的惡意行為不會影響區塊鏈的一致性,從而使其支持拜占庭容錯[15-16]。
本文ToC -DBS 架構邏輯分層采用典型的區塊鏈系統分層,分為數據層、網絡層、共識層、激勵層、合約層和事務層[8]。主要在數據層利用Hash算法、Merkle 樹等密碼技術和時間戳技術將區塊鏈的結構化數據、非結構化數據區塊生成時間間隔內所有交易賬單,并以鏈式結構進行分布式存儲,邏輯上受分布式全局賬本統一管理;在共識層采用PBFT機制可以減少不必要的通信負載,提高數據交換的效率;事務層提供實體屬性、訪問策略、策略判決等合約服務。
定義1數據實體集合Pi={ID,(PK,SK),K/V Set -Url,Permission,Pi_Non},i=1 …n,其中,n: 實體數;ID:數據實體標識號;(PK,SK):公私鑰密碼對;K/V Set-Url : 數據對象實體Key -Value 地址;Permission :準入許可;Pi_Non : 隨機數,用于對抗偽裝攻擊。
定義2策略事務集合TRi={id,pk,Tr_Type,ac,T_data,timestamp,sig},i=1 …n,其中,n: 事務數;id :同步策略事務標識;pk:策略事務發布者公鑰;Tr_Type:事務類型;ac : 數據實體操作類型, 如注冊、更新和刪除;T_data : 具體的事務消息數據。根據事務消息數據規模的不同, 采用鏈上與鏈下相結合兩種存儲方法,鏈上存儲數據摘要Hash,鏈下存儲K/V Set-Url ;timestamp : 事務時間戳,記錄開始和結束時間;sig : 事務數據的消息簽名。
定義3策略判斷集合Ti={(Ci,Di),i=1 …n},n為可信數據實體節點的集合。外部節點集合定義:Ck={C1,C2,C3,…,Cn}。定義計算節點的決策集合:Dk={D1,D2,D3,…,Dn},表示T中各節點對外部節點Ck的共識結果,1 代表可信,0 代表不可信。
在新數據集產生后,創建數據實體集:Pi,i=1 …n,需要存儲本地化處理: 用ECC 算法[17-18]加密的公私密鑰對PK (Public Key )、SK (Security Key ) 對數據集文件地址進行Hash 加密,ECC 算法加密Pi后會得到唯一數據集ID (HashID),加密表示式為:SHA256 (PK,Pi)=HashID,然后做數據集密文的哈希值重復性檢查。在本地化業務庫處理后,把公鑰PK給其他相關業務系統,并提供數據集密文URL 地址,完成數據集在區塊鏈上注冊。
由于數據集文件信息中包含多種數據結構的數據,同時,一個業務庫也存在多個數據集同步,在此可用DBi(HashID1,HashID2,…) 標識,在完成數據集校驗和上傳后,密文被分成序列seq1,seq2,…,可儲存在與業務密切相關的其他節點中,這樣即使某個節點出現不可預知性錯誤,也不會影響獲取儲存在其他地方的副本數據。描述性傳輸偽代碼算法如下:

傳輸完成后,還需要通過合約得到用于數據集密文的私鑰SK,完成解密過程和驗證。為防止文件泄露,這里就需要驗證簽名SigDBi,驗證通過后解密方可得到數據集明文,同時,合約執行結束。描述性偽代碼算法如下:

ToC-DBS 模式還需建立訪問控制區塊鏈(Access Control Blockchain,ACB)和日志審計區塊鏈(Log Audit Blockchain,LAB)。ACB 用于記錄訪問控制策略、身份密鑰PK 標識,并設置時間戳,為數據訪問決策提供支撐;LAB 記錄網絡運行的日志數據,為審計和追溯提供證據。
本文根據區塊鏈的遠程證明模型給出的訪問控制和可信證據溯源的基本方法建立雙鏈模式和可信驗證[6,19]。通過對數據集文件進行加密、傳輸和解密驗證等智能合約算法,在PBFT 共識機制下完成數據的共享以及所有權驗證,這樣即便是網絡中存在少量惡意節點, 通過維護統一的高公信力的賬本數據,依然可以確保分布式互連網絡中所有節點數據的一致性、安全和可信性。共識驗證示意如圖3 所示。

圖3 一致性和共識驗證
本文設定實驗環境為: 由5個系統數據庫組成分布式驗證者,100個數據集文件節點,并取區塊大小為1 MB,全部保存完整的區塊鏈數據源HashID值集合以及Merkle Root,信息損失量采用文獻[ 20]的計算方法:
元組信息損失量:

表的信息損失量:

其中,|el| 表示數據集元組數量,1 ≤l≤m;Ni為第i個數值屬性的范圍,MAXNi和MINNi為集合中最大值和最小值;H(TCj) 是merkle 樹的高度,H(∧(∪Cj)) 是具有最小公共祖先的分類樹的高度;n是數據表T元組的數量。當同步樣本量足夠大時,增大同步量對降低數據表的信息損失量無顯著影響,如圖4所示。

圖4 數據共享信息損失量
這種設計方法通過智能合約內的驗證策略對一致性報告進行分析和驗證,其中包括完整性證據、數據集屬性證據以及計算節點合法性等,并且一致性結果在驗證點之間通過日志審計區塊鏈是可追溯的。相比于PoW 和PoS 共識機制,PBFT 共識可避免算力浪費和51% 攻擊的問題。
在實際應用中,如果存在攻擊者竊聽、截獲和篡改通信消息現象,PBFT 驗證共識在算法中保證1/3 以上節點無法被攻擊者控制就可以,當然,這個數字是由共識算法決定的。在數據共享驗證方面,取決于區塊數據的大小和交易規模,數據集在k=100 、|DB|=5 的環境下,PBFT 共識時間占比為STP,共識驗證時間為Tp,則其計算公式為:

其中,TA為全部節點同步共享時間。
采用PBFT 算法的優點主要在于: 首先系統節點少于(n -1)/3個情況下,如數據丟失、宕機等,其容錯效果較好;其次在每次共識過程中保證至少有(2n+1)/3個正常節點,可確保運行環境是相對安全、穩定的。共識時間占比如圖5 所示。

圖5 共識時間占比
系統運行成本可以參照以太坊成本計算模式,整個所需的運行成本包括數據加密CostECC、數據共享Costshare、共識驗證Costid及智能合約CostContract等,計算公式如下:

其中,α 為ECC 數據加密次數,β 為共享同步次數,γ 為共識驗證次數,δ 為智能合約部署或者更新次數。
在忽略合約的部署和調用成本情況下,將數據同步存儲區塊快照操作次數定義為ζ,因此ToC - DBS模式每進行ζ 次數據同步存儲操作時,加密和共識驗證保護合約成本為:

通過對數據共享存儲、加密算法、網絡共識、智能合約等的分析,成本和安全表現如圖6 所示。

圖6 ζ與成本、安全性關系圖
由于分布式數據庫區塊鏈中第三方權威實體通過一定的算法產生或者組織內部授權和監管,其運行成本忽略不計,但可信性高于比特幣等區塊鏈系統。
本文在對區塊鏈和智能合約技術進行分析的基礎上,提出了構建分布式數據共享模式和算法應用,并提供數據的一致性、安全和可信性分析和評估方法。主要內容涉及訪問控制、日志審計、共識機制權威等,該模式能夠有效解決傳統架構下面臨的訪問控制單點化、策略決策中心化的問題,并對成本效率進行了分析,未來還需多方合作進一步完善數據共享的分析和評估方法。