齊伊寧,秦宣梅*,孫東紅,潘鴻運,李琪,黃永峰,王丹丹
(1.清華大學電子系,北京 100084;2.清華大學網絡科學與網絡空間研究院,北京 100084;3.國家信息中心信息化和產業發展部,北京 100045)
隨著物聯網、云計算和數字化技術發展,人類活動、企業生產、社會交往和國家安全等都被精細記錄,產生越來越多的數據,形成了各行各業的領域大數據。領域大數據從產生、采集、存儲、傳輸、處理、使用到銷毀的全生命周期流轉過程中具有明顯的關聯性[1],這種相互關聯領域大數據也稱為鏈條數據。例如,一個城市的智慧城市評價數據涉及到眾多業務環節,包括基層采集的數據、分析處理數據、執法數據和決策數據等,這些數據由于管理部門的不同,經常是分散存儲管理,有邊端存儲有云端存儲,還有的在上級垂管部門端存儲。又例如,食品安全領域大數據記錄了某食品從農田到餐桌的整個生命周期中不同階段的數據,而且,這些不同階段數據分別存儲在不同加工環節的生產企業、不同流通環節的商家企業和不同食品質檢環節的管理機構等。如果要實現食品安全的全生命周期監管,就必須整合這些分散存儲在不同組織的數據,獲得食品安全全生命周期數據的全鏈條。因此,當前各個領域都記錄了領域在不同時空下發生的各個業務環節數據,這些領域大數據具有生命周期性、信息相關性和內容完整性等特征,這些特征使得領域數據具有典型的鏈條性,以及具有極高利用價值。
由于數據采集和存儲等技術、以及數據權屬管理等限制,使得領域鏈條數據具有高度的分散性和低可用性特點。鏈條數據高分散性是指數據在存儲上歸屬不同平臺,在管理上隸屬不同機構,在資產上權屬不同組織。鏈條數據低可用性是指相對其本身的高價值,數據分散后隔斷了數據相關性和完整性、丟失了許多維度信息,不能充分發揮鏈條數據的真正價值。因此,如何實現領域鏈條數據共享是挖掘數據資產核心價值亟待解決的前沿課題。
要有效的實現鏈條數據共享面臨如下3方面的關鍵技術問題。(1)數據資源確權和可控可計量訪問問題。領域數據的高價值性使得數據即資產的觀念日益深入人心,數據有效共享需要建立健全數據流通交易規則和技術,在確保數據安全前提下,實現數據授權利用、可控訪問以及可計量使用。(2)數據安全與隱私保護問題。數據共享使得數據可能離開用戶控制域、數據的安全和隱私等問題寄托于數據使用者的誠信,因此,數據所有者和管理者因為害怕風險和不安全問題不愿意開放數據使用。(3)數據可用性審計問題。數據即使被授權給消費者合法使用,但數據的使用者無法有效判斷共享數據是否完整和可用,也會降低數據使用意愿[2]。
由于上述3方面的關鍵技術問題存在,嚴重阻礙了領域大數據的安全共享、可信利用和高效挖掘。針對上述問題,本文綜合云計算和區塊鏈技術的特點,提出了一種云計算與區塊鏈相融合的領域數據共享平臺架構,建立了“原始數據不出域、數據可用不可見”的安全可信共享模型,并結合典型應用場景,研發了相應的應用系統,對云鏈融合的共享架構模型和技術進行了驗證和性能分析。
云計算是采用虛擬化和按需服務等技術實現資源(包括計算、存儲、軟件和數據等資源)集中式服務模式。在傳統的云計算架構中,通常以云端作為大型數據中心和計算中心[3]。但隨著第五代移動通信(5G)的到來和物聯網(IoT)技術的發展,面對帶寬消耗、網絡延遲、數據隱私性保護等挑戰[4],中心化的云端只處理計算資源需求大、實時性要求不高的計算任務,于是出現了云邊端協同的邊緣計算架構,邊緣計算在一定程度上緩解了帶寬和實時性問題[5]。但其數據分布在不同管理域,云邊端之間的組織架構不同,給分散的鏈條數據的共享方式和可信計算帶來一些挑戰。
區塊鏈(Blockchain)是一種去中心化、不可篡改、可追溯、多方共同維護的分布式數據庫,能夠將傳統單方維護的僅涉及自己業務的多個孤立數據庫整合在一起,分布式地存儲在多方共同維護的多個節點上[6]。區塊鏈通過集成對等網絡(P2P)協議、非對稱加密、共識機制、塊鏈結構等多種技術,解決了數據可信問題[7]。通過運用區塊鏈,無需借助任何第三方可信機構,互不了解、互不信任的多方可實現可信、對等的價值傳輸[8]。
基于云計算與區塊鏈各自技術特點和優勢,本文設計了一種多云(包括云邊端)與區塊鏈融合系統的體系架構,實現領域鏈條數據的安全可信共享。云鏈融合系統結構如圖1所示。總體架構劃分為3層:客戶端、區塊鏈及云計算平臺;系統通過設計9種接口和相應接口元語數據來實現客戶端-云-鏈之間的協同和交互。

圖1 面向領域數據共享的云鏈融合系統模型
云計算平臺:領域鏈條數據分散存儲在不同機構的云計算平臺中。通過云-鏈協同計算和存儲接口承擔計算可信度要求高的計算任務和存儲管理領域原始數據。
客戶端:客戶端包括數據提供者、消費者和審計者等。數據提供者通過客戶端對數據進行上傳、更新、共享等操作,首先提供共享數據密文到云,制定訪問策略,計算中間密鑰密文,生成訪問元數據上傳到區塊鏈。數據使用者從區塊鏈獲得授權,從云獲得數據密文進行解密。為了驗證數據的完整性,數據審計者為所要求審計的數據塊分別產生相應的隨機數,打包為挑戰請求上傳到區塊鏈進行數據完整性審計。
區塊鏈:不同云計算平臺和客戶端都是組成區塊鏈的節點,這些節點共同存儲、管理和維護云鏈融合系統的領域大數據。區塊鏈智能合約根據制定的策略抽取備份元數據,編碼成區塊鏈全局唯一標識存儲在狀態數據庫中,以便對共享的領域數據進行尋址,區塊鏈中部署的屬性令牌管理合約、外包加密合約以及預解密合約負責收集用戶屬性集、驗證用戶的屬性是否滿足屬性策略,以及進行外包加密和預解密。最后通過完整性驗證合約從分布式賬本中提取被審計數據塊的元數據,然后與云平臺提交的完整性證明做雙線性對驗證,如果驗證通過,則證明數據完整;否則不完整。
云鏈融合協同機制:云計算與區塊鏈的協同機制是兩者融合的基礎。本文從3個層面設計了兩者協同機制,如圖2所示,包括:計算協同、存儲協同和交互協同等。為此分別設計客戶端-云接口、客戶端-鏈接口、云-鏈接口等3類接口方法來實現云鏈協同機制。具體來說,客戶端-云接口包括密文數據上傳接口和密文數據下載接口,客戶端-鏈接口包括用戶注冊接口和元數據管理接口,云-鏈接口包括云注冊接口、元數據傳輸接口、外包加解密計算接口和完整性元數據傳輸接口。

圖2 云鏈融合機制及其接口方式
云鏈存儲協同對云鏈融合架構下的數據進行了分工存儲、合作管理。其中,云平臺以文件的形式存儲用戶的具體數據,而區塊鏈只存儲用于數據管理的元數據、用戶請求等抽象數據。云鏈存儲協同方法還對日志進行了分級管理,其中,記錄用戶對數據進行讀寫操作的操作日志存儲在區塊鏈中,而記錄用戶對數據進行查詢操作的查詢日志存儲在用戶本地。通過云鏈存儲協同方法,注冊在區塊鏈中的管理元數據對分布在多云環境中的原始數據等進行操作管理和安全防護,重點保障了云上數據和鏈上記錄的一致性。
云鏈計算協同對云鏈融合架構下的計算任務進行了分工。其中,云平臺使用哈希算法為用戶上傳的數據計算數據摘要,作為數據標識;區塊鏈承擔了數據查找、日志生成、身份驗證和權限管理等計算開銷小但可信度要求高的計算任務。由于每個數據讀寫操作都對應一個區塊鏈中的交易,因此其數據操作日志生成的效率與區塊鏈交易的吞吐量相關,在海量高速大數據的環境中建議采用性能較好的聯盟區塊鏈如Hyperledger Fabric進行部署,以滿足大多數場景的需求。云鏈計算協同方法還利用區塊鏈的事件監聽機制,在云端監聽區塊鏈中的用戶請求/元數據是否正確,以確定云中的操作是否可以執行。云鏈協同計算提高了云計算的安全性,也為區塊鏈減輕了計算負擔。
云鏈交互協同是云鏈融合架構中的標準化數據管理接口,為用戶和云平臺參與云鏈協同的存儲和計算提供了支撐。云鏈協同接口包括云平臺和用戶之間的接口(“云-用戶接口”)、區塊鏈和用戶之間的接口(“鏈-用戶接口”)和云平臺和區塊鏈之間的接口(“云-鏈接口”)。其中,按照接口中封裝的底層函數的不同,“云-用戶接口”又可分為數據傳輸接口和傳輸建立接口兩個子類型,“鏈-用戶接口”和“云-鏈接口”又可分為交易接口、事件接口和監聽接口三個子類型。
基于上述云鏈融合機制,本文采用Hyperledger Fabric聯盟鏈和Hadoop等開源代碼,實現了一套面向領域數據安全可信共享的云鏈融合系統。在系統中,重點設計了云鏈融合的共享數據標識編碼與解析協議,云鏈融合機制下的訪問控制方法和數據完整性審計方法。
在云鏈融合機制下,為了統一管理存儲在不同云上的共享數據,首先需要制定一套標識編碼規則,通過標識完成對共享數據的唯一標記、對共享數據信息的記錄和維護。相應地,為了實現共享數據尋址,需要制定一套標識解析方法,按照統一的解析步驟完成對標識的解析,最終定位共享數據在云端的存儲位置。
共享數據的標識編碼為二級結構,如圖3所示,包含短標識和長標識。以短標識為鍵、長標識為值生成鍵值對,存儲在Fabric狀態數據庫中。短標識包括全局域唯一標識和用戶域唯一標識兩個部分,用戶域唯一標識用于增加命名自主性,構建的短標識用于在區塊鏈網絡中對數據進行唯一標記。長標識為描述數據的所有元數據的合集,基本的元數據包括:數據在云中存儲位置(URL)、擴展字段。其中,擴展字段可為空,可以方便用戶進行擴展。由于長標識中的字段都可以更新,當數據物理位置發生變化時,只需要更新長標識中存儲的URL,就能實現用原有的短標識對新的物理位置進行尋址,使得標識編碼具有數據物理位置可遷移的特性。長短標識的鍵-值對存儲形式為快速尋址提供了保障。

圖3 云鏈融合的共享數據標識編碼結構
共享數據標識注冊和解析協議流程如圖4所示。標識注冊者發起注冊請求,區塊鏈依據標識編碼規則,自動編碼生成全局唯一的二級標識,將短標識返回給注冊者。當標識注冊者使用短標識為參數,向區塊鏈發起數據查詢請求,智能合約對二級標識分級解析,返回長標識用于對云端共享數據的尋址。

圖4 共享數據的標識編碼與解析協議
為了實現領域數據的可控可計量的安全共享,本文提出一種云鏈融合機制下的輕量級加解密的屬性基加密訪問控制方法。具體方法是:利用區塊鏈承擔外包計算任務,保證計算結果的可靠性;基于提出的外包加密算法,數據所有者端只需輕量級加密計算就可以加密生成密文;基于提出的外包解密算法,數據使用者端只需輕量級解密計算就可以解密獲得明文。根據上述實現原理,論文提出了云鏈融合機制下的訪問控制協議。
訪問協議流程如圖5所示,整個協議分為4個階段:系統初始化、基于智能合約的屬性令牌發放、云鏈融合機制下的共享數據加密存儲和基于智能合約的數據解密訪問。每個階段分為鏈上和鏈下兩個部分計算,表示為Onchain.[alg_name]和Offchain.[alg_name],其中alg_name是定義的算法名稱。具體協議過程如下。

圖5 云鏈融合機制下的訪問控制協議
(1)系統初始化
該階段通過部署智能合約和設置一組參數(MSK,MPK)來初始化系統。鏈下生成參數,將公共參數上傳至區塊鏈。

第2步:提交SetPubKey_tx交易請求設置公共參數,交易格式如公式(1):

其中,SetPubKey表示智能合約中定義的公共參數設置函數的函數名,MPK為公共參數。網絡上的任意節點可以通過調用合約,觸發GetPubKeyTx交易查詢公共參數。
(2)屬性令牌發放
證書機構CA從區塊鏈獲取用戶公鑰upk和屬性集S,生成用戶屬性令牌上傳至區塊鏈。



第2步:鏈上發起SetToken_tx交易請求設置用戶屬性令牌,可以表示為下式(6):

其中,SetToken表示智能合約中定義的屬性令牌設置函數的函數名,UserId表示用戶身份標識,k表示用戶的屬性令牌。可以特別指定SetToken函數只能由CA調用。交易執行完成后,屬性授權過程就會被安全地記錄在區塊鏈上。
(3)共享數據加密存儲
本文采用混合加密方法,即利用公共參數對原數據進行對稱加密,利用屬性基加密機制加密對稱密鑰,然后,將生成的數據密文上傳至云,密鑰密文上傳至區塊鏈。密鑰密文的生成和上鏈過程具體描述如下:

令CTKEY=(ct0,ct1,…,ctm,ct'),其中,cti∈I=(cti,1,cti,2,cti,3),具體的計算如公式(7):

其中,Mi,j表示矩陣M的第(i,j)個元素。
最后,輸出密鑰密文CTKEY=(ct0,ct1,…,ctm,ct'),記錄在區塊鏈上。
(4)共享數據解密訪問
數據使用者訪問數據,發起訪問交易,從區塊鏈獲取中間密文,鏈下執行最終解密。
第1步:鏈上預解密交易格式為Onchain.PreDec_tx=(‘PreDec’,Index,UserId),其中,PreDec表示智能合約中定義的預解密算法的函數名,Index表示元數據索引,UserId表示用戶身份標識。用戶發起PreDec_tx交易請求,觸發預解密合約中的PreDec算法,該算法首先獲取預加密合約生成的管理元數據(CTKEY,dataHash),從屬性令牌管理合約獲取用戶屬性令牌k,然后執行預解密,生成中間密文CT'KEY。


生成的midKEY為中間密文。該交易執行完成后,被作為訪問記錄存在區塊鏈上。這樣,用戶的訪問過程被記錄在區塊鏈上,為數據所有者生成訪問報告。
第2步:數據使用者鏈下執行最終解密,從區塊鏈獲得返回的中間密文結果,利用私鑰u解密對稱密鑰KEY。對稱密鑰可以按公式(11)計算:

最后,用對稱密鑰KEY解密出原數據,dataHash用于驗證云提供的原數據的完整性。
通過以上4個步驟,在云鏈融合系統中,在云上存儲原數據密文,基于智能合約進行外包加密和預解密計算,數據所有者端只需輕量級加密計算就可以加密生成密文,同時,數據使用者端只需輕量級解密計算就可以解密獲得明文,從而實現了基于智能合約的共享數據輕量級訪問控制方法。同時,通過不同粒度(如數據塊、對象和文件等)共享數據加密和訪問控制策略,就可以實現共享的可計量訪問。

(1)準備階段
第1步,密鑰生成算法:KeyGen(1λ)→(pk,sk)

第2步,標簽生成算法:TagGen(sk,pk,F)→Φ
用來對用戶數據文件進行分塊,并生成元數據。給定用戶文件F,將用戶數據文件分為n塊,表示為F={m1,m2,…,mn},對每一數據塊可按公式(12)計算其標簽:

生成Φ={σi}1≤i≤n作為元數據。
(2)挑戰階段
挑戰生成算法:GenChal(F)→chal

(3)響應階段
完整性證明生成算法:ProofGen(chal,F,Φ,pk)→P
云服務器收到挑戰信息chal后,隨機選擇系數r← Zp,并計算公式(13)和(14):

最終得到完整證明P={μ,σ}并將結果以交易提案形式發回審計者。
(4)證明階段
審計驗證過程:ProofCheck(P,Φ)→{true,false}
根據本文提出的云鏈融合的共享數據系統模型和實現技術,研發了一套基于Hyperledger Fabric和公共云平臺的實驗原型系統,該系統通過Hyperledger Fabric區塊鏈智能合約為用戶提供安全可信的共享數據管理服務,包括:用戶管理、數據存儲、數據查詢、數據共享、數據審計、屬性基加密訪問控制等。下面測試分析了該原型系統在共享數據注冊和檢索、訪問控制、完整性審計方面的性能。
實驗選擇阿里和亞馬遜云等公共云為多源數據共享環境,區塊鏈智能合約的測試使用Hyperledger Caliper[11],每項性能測試重復100次取平均值;鏈下程序的測試使用測試代碼進行,每項測試重復10次取平均值。
共享數據注冊指不同云計算的擬定共享數據通過智能合約在云鏈融合系統的區塊鏈鏈表中登記共享數據元信息的過程。實驗測試系統中共享數據注冊的效率,圖6(a)中橫坐標為數據大小,縱坐標為時間開銷。黑色“x”點為平均時間,上下的紅色“-”點表示最大值和最小值。實驗結果顯示,共享數據注冊的時間開銷與數據大小呈正相關。由于審計過程需要將數據分塊,并將數據塊標簽存在區塊鏈上,隨著數據量的增加,數據長記錄中的數據標簽會增長,因此使得整個數據記錄的長度增加,從而需要更多的時間開銷。平均每增大1GB數據,數據注冊的時間開銷會增加0.25秒。由于區塊鏈中交易排序存在隨機性以及節點間通信時存在網絡波動,相同大小數據發布的時間開銷在一定范圍內波動,并隨著交易大小的增加波動的范圍有所增加。
共享數據檢索指智能合約在區塊鏈上查詢數據記錄。實驗測試平臺中數據查詢的效率。圖6(b)中橫坐標為數據大小,縱坐標為時間開銷。黑色“x”點為平均時間,上下的紅色“-”點表示最大值和最小值。實驗結果顯示,數據查詢的時間開銷與數據大小呈正相關。隨著數據量的增加,數據長記錄中的數據標簽會增長,因此使得整個數據記錄的長度增加,因此需要更多的時間開銷。平均每增大1GB數據,數據查詢的時間開銷會增加0.07秒。

圖6 共享數據注冊和檢索性能測試
數據訪問控制方法主要劃分為預加密、外包加密、預解密、最終解密4個計算任務,其中外包加密和預解密計算由智能合約完成,預加密和最終解密由客戶端本地完成。為了評估輕量級加解密性能,實驗對比FAME[9]方法測試客戶端加解密效率。FAME是一種快速的屬性基加密方案。提出的訪問控制方法在云鏈融合的架構下基于區塊鏈實現了加解密外包計算。實驗采用256-bit BN橢圓曲線生成密鑰,基于gofe[12]實現FAME方法。類似于FAME方法,實驗中的加密算法采用最復雜的訪問策略,即表示為"attr1AND attr2AND···AND attrn",這樣就需要具有所有n個屬性才能解密。
實驗首先測試了不同屬性數目下客戶端鏈下加解密計算性能,如圖7(a)所示,隨著屬性數目從2開始線性增長至20,FAME方法中客戶端的加密時間呈線性增長趨勢,提出的方法客戶端加密時間基本維持一個常數。解密階段客戶端的計算效率如圖7(b)所示,FAME方法和提出方法的解密時間與屬性數目無關,提出方法的解密時間約為18.8 ms。由于提出方法基于區塊鏈進行外包計算,有效降低了鏈下客戶端的加解密計算復雜度。

圖7 共享數據訪問控制的鏈下計算性能
為了測試交易和智能合約的性能,實驗采用區塊鏈性能測試工具Caliper測試區塊鏈交易延遲性能指標。圖8展示了并發交易數目固定時屬性數量對交易的平均響應時間的影響。屬性數量從2增長到20,交易響應時間隨著交易數量的增長呈現線性增長趨勢。由于預加密函數計算任務資源消耗最大,其平均響應時間最長。雖然共識機制會導致外包計算產生一定的響應延遲,但文獻[13]表明在主流的部署配置中,Fabric可以實現超過每秒3500個交易的吞吐量,交易延遲低于1秒,可以很好地擴展到100個以上對等節點。

圖8 共享數據訪問控制的鏈上計算性能
數據審計過程包括生成挑戰、生成證明和完整性驗證3個子過程。在云鏈融合的數據共享系統中,生成挑戰和完整性驗證由區塊鏈的智能合約完成,生成證明由云服務完成。實驗測試系統的共享數據審計效率。圖9中橫坐標為審計的數據塊數,縱坐標為時間開銷。藍色“x”點表示生成挑戰的時間開銷,綠色圓點表示生成證明的時間開銷,黑色“*”點表示完整性驗證的時間開銷。實驗結果顯示,隨著數據審計塊數的增加,3個子過程操作的時間開銷都有所增加。但是由于3個子過程的計算復雜度不同,時間開銷增長的速度有所不同。其中生成挑戰部分計算復雜度最低,因此時間開銷相對穩定;完整性驗證部分計算復雜度最高,且在區塊鏈上實現,因此時間開銷的增長最為明顯,且相對其他二者,其時間開銷的增長較不穩定。

圖9 共享數據審計性能
各個領域存量數據分散在不同云存儲系統中,考慮數據所有權和隱私等問題,未來增量數據勢必繼續分散在各個機構的數據中心。因此,領域數據的分散性是其固有特性。為了實現這些分散領域大數據的安全和可信共享,本文提出了一種區塊鏈和云計算的融合機制來管理這些分散數據,支撐“原始數據不出域、數據可用不可見”的領域數據共享模式。通過設計共享數據標識編碼和解析協議,實現共享數據的定位和尋址;通過設計一種基于區塊鏈智能合約機制的輕量級屬性基加密訪問控制算法,實現共享數據的“可控可計算”;通過建立一種基于云鏈融合機制的數據完整性審計算法,保障數據的可信共享。以上述模型和算法為基礎,本文研發了相應實際原型系統,測試分析了其性能,驗證了模型和算法的可行性和先進性。