齊伊寧,秦宣梅*,孫東紅,潘鴻運(yùn),李琪,黃永峰,王丹丹
(1.清華大學(xué)電子系,北京 100084;2.清華大學(xué)網(wǎng)絡(luò)科學(xué)與網(wǎng)絡(luò)空間研究院,北京 100084;3.國家信息中心信息化和產(chǎn)業(yè)發(fā)展部,北京 100045)
隨著物聯(lián)網(wǎng)、云計算和數(shù)字化技術(shù)發(fā)展,人類活動、企業(yè)生產(chǎn)、社會交往和國家安全等都被精細(xì)記錄,產(chǎn)生越來越多的數(shù)據(jù),形成了各行各業(yè)的領(lǐng)域大數(shù)據(jù)。領(lǐng)域大數(shù)據(jù)從產(chǎn)生、采集、存儲、傳輸、處理、使用到銷毀的全生命周期流轉(zhuǎn)過程中具有明顯的關(guān)聯(lián)性[1],這種相互關(guān)聯(lián)領(lǐng)域大數(shù)據(jù)也稱為鏈條數(shù)據(jù)。例如,一個城市的智慧城市評價數(shù)據(jù)涉及到眾多業(yè)務(wù)環(huán)節(jié),包括基層采集的數(shù)據(jù)、分析處理數(shù)據(jù)、執(zhí)法數(shù)據(jù)和決策數(shù)據(jù)等,這些數(shù)據(jù)由于管理部門的不同,經(jīng)常是分散存儲管理,有邊端存儲有云端存儲,還有的在上級垂管部門端存儲。又例如,食品安全領(lǐng)域大數(shù)據(jù)記錄了某食品從農(nóng)田到餐桌的整個生命周期中不同階段的數(shù)據(jù),而且,這些不同階段數(shù)據(jù)分別存儲在不同加工環(huán)節(jié)的生產(chǎn)企業(yè)、不同流通環(huán)節(jié)的商家企業(yè)和不同食品質(zhì)檢環(huán)節(jié)的管理機(jī)構(gòu)等。如果要實(shí)現(xiàn)食品安全的全生命周期監(jiān)管,就必須整合這些分散存儲在不同組織的數(shù)據(jù),獲得食品安全全生命周期數(shù)據(jù)的全鏈條。因此,當(dāng)前各個領(lǐng)域都記錄了領(lǐng)域在不同時空下發(fā)生的各個業(yè)務(wù)環(huán)節(jié)數(shù)據(jù),這些領(lǐng)域大數(shù)據(jù)具有生命周期性、信息相關(guān)性和內(nèi)容完整性等特征,這些特征使得領(lǐng)域數(shù)據(jù)具有典型的鏈條性,以及具有極高利用價值。
由于數(shù)據(jù)采集和存儲等技術(shù)、以及數(shù)據(jù)權(quán)屬管理等限制,使得領(lǐng)域鏈條數(shù)據(jù)具有高度的分散性和低可用性特點(diǎn)。鏈條數(shù)據(jù)高分散性是指數(shù)據(jù)在存儲上歸屬不同平臺,在管理上隸屬不同機(jī)構(gòu),在資產(chǎn)上權(quán)屬不同組織。鏈條數(shù)據(jù)低可用性是指相對其本身的高價值,數(shù)據(jù)分散后隔斷了數(shù)據(jù)相關(guān)性和完整性、丟失了許多維度信息,不能充分發(fā)揮鏈條數(shù)據(jù)的真正價值。因此,如何實(shí)現(xiàn)領(lǐng)域鏈條數(shù)據(jù)共享是挖掘數(shù)據(jù)資產(chǎn)核心價值亟待解決的前沿課題。
要有效的實(shí)現(xiàn)鏈條數(shù)據(jù)共享面臨如下3方面的關(guān)鍵技術(shù)問題。(1)數(shù)據(jù)資源確權(quán)和可控可計量訪問問題。領(lǐng)域數(shù)據(jù)的高價值性使得數(shù)據(jù)即資產(chǎn)的觀念日益深入人心,數(shù)據(jù)有效共享需要建立健全數(shù)據(jù)流通交易規(guī)則和技術(shù),在確保數(shù)據(jù)安全前提下,實(shí)現(xiàn)數(shù)據(jù)授權(quán)利用、可控訪問以及可計量使用。(2)數(shù)據(jù)安全與隱私保護(hù)問題。數(shù)據(jù)共享使得數(shù)據(jù)可能離開用戶控制域、數(shù)據(jù)的安全和隱私等問題寄托于數(shù)據(jù)使用者的誠信,因此,數(shù)據(jù)所有者和管理者因?yàn)楹ε嘛L(fēng)險和不安全問題不愿意開放數(shù)據(jù)使用。(3)數(shù)據(jù)可用性審計問題。數(shù)據(jù)即使被授權(quán)給消費(fèi)者合法使用,但數(shù)據(jù)的使用者無法有效判斷共享數(shù)據(jù)是否完整和可用,也會降低數(shù)據(jù)使用意愿[2]。
由于上述3方面的關(guān)鍵技術(shù)問題存在,嚴(yán)重阻礙了領(lǐng)域大數(shù)據(jù)的安全共享、可信利用和高效挖掘。針對上述問題,本文綜合云計算和區(qū)塊鏈技術(shù)的特點(diǎn),提出了一種云計算與區(qū)塊鏈相融合的領(lǐng)域數(shù)據(jù)共享平臺架構(gòu),建立了“原始數(shù)據(jù)不出域、數(shù)據(jù)可用不可見”的安全可信共享模型,并結(jié)合典型應(yīng)用場景,研發(fā)了相應(yīng)的應(yīng)用系統(tǒng),對云鏈融合的共享架構(gòu)模型和技術(shù)進(jìn)行了驗(yàn)證和性能分析。
云計算是采用虛擬化和按需服務(wù)等技術(shù)實(shí)現(xiàn)資源(包括計算、存儲、軟件和數(shù)據(jù)等資源)集中式服務(wù)模式。在傳統(tǒng)的云計算架構(gòu)中,通常以云端作為大型數(shù)據(jù)中心和計算中心[3]。但隨著第五代移動通信(5G)的到來和物聯(lián)網(wǎng)(IoT)技術(shù)的發(fā)展,面對帶寬消耗、網(wǎng)絡(luò)延遲、數(shù)據(jù)隱私性保護(hù)等挑戰(zhàn)[4],中心化的云端只處理計算資源需求大、實(shí)時性要求不高的計算任務(wù),于是出現(xiàn)了云邊端協(xié)同的邊緣計算架構(gòu),邊緣計算在一定程度上緩解了帶寬和實(shí)時性問題[5]。但其數(shù)據(jù)分布在不同管理域,云邊端之間的組織架構(gòu)不同,給分散的鏈條數(shù)據(jù)的共享方式和可信計算帶來一些挑戰(zhàn)。
區(qū)塊鏈(Blockchain)是一種去中心化、不可篡改、可追溯、多方共同維護(hù)的分布式數(shù)據(jù)庫,能夠?qū)鹘y(tǒng)單方維護(hù)的僅涉及自己業(yè)務(wù)的多個孤立數(shù)據(jù)庫整合在一起,分布式地存儲在多方共同維護(hù)的多個節(jié)點(diǎn)上[6]。區(qū)塊鏈通過集成對等網(wǎng)絡(luò)(P2P)協(xié)議、非對稱加密、共識機(jī)制、塊鏈結(jié)構(gòu)等多種技術(shù),解決了數(shù)據(jù)可信問題[7]。通過運(yùn)用區(qū)塊鏈,無需借助任何第三方可信機(jī)構(gòu),互不了解、互不信任的多方可實(shí)現(xiàn)可信、對等的價值傳輸[8]。
基于云計算與區(qū)塊鏈各自技術(shù)特點(diǎn)和優(yōu)勢,本文設(shè)計了一種多云(包括云邊端)與區(qū)塊鏈融合系統(tǒng)的體系架構(gòu),實(shí)現(xiàn)領(lǐng)域鏈條數(shù)據(jù)的安全可信共享。云鏈融合系統(tǒng)結(jié)構(gòu)如圖1所示??傮w架構(gòu)劃分為3層:客戶端、區(qū)塊鏈及云計算平臺;系統(tǒng)通過設(shè)計9種接口和相應(yīng)接口元語數(shù)據(jù)來實(shí)現(xiàn)客戶端-云-鏈之間的協(xié)同和交互。
圖1 面向領(lǐng)域數(shù)據(jù)共享的云鏈融合系統(tǒng)模型
云計算平臺:領(lǐng)域鏈條數(shù)據(jù)分散存儲在不同機(jī)構(gòu)的云計算平臺中。通過云-鏈協(xié)同計算和存儲接口承擔(dān)計算可信度要求高的計算任務(wù)和存儲管理領(lǐng)域原始數(shù)據(jù)。
客戶端:客戶端包括數(shù)據(jù)提供者、消費(fèi)者和審計者等。數(shù)據(jù)提供者通過客戶端對數(shù)據(jù)進(jìn)行上傳、更新、共享等操作,首先提供共享數(shù)據(jù)密文到云,制定訪問策略,計算中間密鑰密文,生成訪問元數(shù)據(jù)上傳到區(qū)塊鏈。數(shù)據(jù)使用者從區(qū)塊鏈獲得授權(quán),從云獲得數(shù)據(jù)密文進(jìn)行解密。為了驗(yàn)證數(shù)據(jù)的完整性,數(shù)據(jù)審計者為所要求審計的數(shù)據(jù)塊分別產(chǎn)生相應(yīng)的隨機(jī)數(shù),打包為挑戰(zhàn)請求上傳到區(qū)塊鏈進(jìn)行數(shù)據(jù)完整性審計。
區(qū)塊鏈:不同云計算平臺和客戶端都是組成區(qū)塊鏈的節(jié)點(diǎn),這些節(jié)點(diǎn)共同存儲、管理和維護(hù)云鏈融合系統(tǒng)的領(lǐng)域大數(shù)據(jù)。區(qū)塊鏈智能合約根據(jù)制定的策略抽取備份元數(shù)據(jù),編碼成區(qū)塊鏈全局唯一標(biāo)識存儲在狀態(tài)數(shù)據(jù)庫中,以便對共享的領(lǐng)域數(shù)據(jù)進(jìn)行尋址,區(qū)塊鏈中部署的屬性令牌管理合約、外包加密合約以及預(yù)解密合約負(fù)責(zé)收集用戶屬性集、驗(yàn)證用戶的屬性是否滿足屬性策略,以及進(jìn)行外包加密和預(yù)解密。最后通過完整性驗(yàn)證合約從分布式賬本中提取被審計數(shù)據(jù)塊的元數(shù)據(jù),然后與云平臺提交的完整性證明做雙線性對驗(yàn)證,如果驗(yàn)證通過,則證明數(shù)據(jù)完整;否則不完整。
云鏈融合協(xié)同機(jī)制:云計算與區(qū)塊鏈的協(xié)同機(jī)制是兩者融合的基礎(chǔ)。本文從3個層面設(shè)計了兩者協(xié)同機(jī)制,如圖2所示,包括:計算協(xié)同、存儲協(xié)同和交互協(xié)同等。為此分別設(shè)計客戶端-云接口、客戶端-鏈接口、云-鏈接口等3類接口方法來實(shí)現(xiàn)云鏈協(xié)同機(jī)制。具體來說,客戶端-云接口包括密文數(shù)據(jù)上傳接口和密文數(shù)據(jù)下載接口,客戶端-鏈接口包括用戶注冊接口和元數(shù)據(jù)管理接口,云-鏈接口包括云注冊接口、元數(shù)據(jù)傳輸接口、外包加解密計算接口和完整性元數(shù)據(jù)傳輸接口。
圖2 云鏈融合機(jī)制及其接口方式
云鏈存儲協(xié)同對云鏈融合架構(gòu)下的數(shù)據(jù)進(jìn)行了分工存儲、合作管理。其中,云平臺以文件的形式存儲用戶的具體數(shù)據(jù),而區(qū)塊鏈只存儲用于數(shù)據(jù)管理的元數(shù)據(jù)、用戶請求等抽象數(shù)據(jù)。云鏈存儲協(xié)同方法還對日志進(jìn)行了分級管理,其中,記錄用戶對數(shù)據(jù)進(jìn)行讀寫操作的操作日志存儲在區(qū)塊鏈中,而記錄用戶對數(shù)據(jù)進(jìn)行查詢操作的查詢?nèi)罩敬鎯υ谟脩舯镜?。通過云鏈存儲協(xié)同方法,注冊在區(qū)塊鏈中的管理元數(shù)據(jù)對分布在多云環(huán)境中的原始數(shù)據(jù)等進(jìn)行操作管理和安全防護(hù),重點(diǎn)保障了云上數(shù)據(jù)和鏈上記錄的一致性。
云鏈計算協(xié)同對云鏈融合架構(gòu)下的計算任務(wù)進(jìn)行了分工。其中,云平臺使用哈希算法為用戶上傳的數(shù)據(jù)計算數(shù)據(jù)摘要,作為數(shù)據(jù)標(biāo)識;區(qū)塊鏈承擔(dān)了數(shù)據(jù)查找、日志生成、身份驗(yàn)證和權(quán)限管理等計算開銷小但可信度要求高的計算任務(wù)。由于每個數(shù)據(jù)讀寫操作都對應(yīng)一個區(qū)塊鏈中的交易,因此其數(shù)據(jù)操作日志生成的效率與區(qū)塊鏈交易的吞吐量相關(guān),在海量高速大數(shù)據(jù)的環(huán)境中建議采用性能較好的聯(lián)盟區(qū)塊鏈如Hyperledger Fabric進(jìn)行部署,以滿足大多數(shù)場景的需求。云鏈計算協(xié)同方法還利用區(qū)塊鏈的事件監(jiān)聽機(jī)制,在云端監(jiān)聽區(qū)塊鏈中的用戶請求/元數(shù)據(jù)是否正確,以確定云中的操作是否可以執(zhí)行。云鏈協(xié)同計算提高了云計算的安全性,也為區(qū)塊鏈減輕了計算負(fù)擔(dān)。
云鏈交互協(xié)同是云鏈融合架構(gòu)中的標(biāo)準(zhǔn)化數(shù)據(jù)管理接口,為用戶和云平臺參與云鏈協(xié)同的存儲和計算提供了支撐。云鏈協(xié)同接口包括云平臺和用戶之間的接口(“云-用戶接口”)、區(qū)塊鏈和用戶之間的接口(“鏈-用戶接口”)和云平臺和區(qū)塊鏈之間的接口(“云-鏈接口”)。其中,按照接口中封裝的底層函數(shù)的不同,“云-用戶接口”又可分為數(shù)據(jù)傳輸接口和傳輸建立接口兩個子類型,“鏈-用戶接口”和“云-鏈接口”又可分為交易接口、事件接口和監(jiān)聽接口三個子類型。
基于上述云鏈融合機(jī)制,本文采用Hyperledger Fabric聯(lián)盟鏈和Hadoop等開源代碼,實(shí)現(xiàn)了一套面向領(lǐng)域數(shù)據(jù)安全可信共享的云鏈融合系統(tǒng)。在系統(tǒng)中,重點(diǎn)設(shè)計了云鏈融合的共享數(shù)據(jù)標(biāo)識編碼與解析協(xié)議,云鏈融合機(jī)制下的訪問控制方法和數(shù)據(jù)完整性審計方法。
在云鏈融合機(jī)制下,為了統(tǒng)一管理存儲在不同云上的共享數(shù)據(jù),首先需要制定一套標(biāo)識編碼規(guī)則,通過標(biāo)識完成對共享數(shù)據(jù)的唯一標(biāo)記、對共享數(shù)據(jù)信息的記錄和維護(hù)。相應(yīng)地,為了實(shí)現(xiàn)共享數(shù)據(jù)尋址,需要制定一套標(biāo)識解析方法,按照統(tǒng)一的解析步驟完成對標(biāo)識的解析,最終定位共享數(shù)據(jù)在云端的存儲位置。
共享數(shù)據(jù)的標(biāo)識編碼為二級結(jié)構(gòu),如圖3所示,包含短標(biāo)識和長標(biāo)識。以短標(biāo)識為鍵、長標(biāo)識為值生成鍵值對,存儲在Fabric狀態(tài)數(shù)據(jù)庫中。短標(biāo)識包括全局域唯一標(biāo)識和用戶域唯一標(biāo)識兩個部分,用戶域唯一標(biāo)識用于增加命名自主性,構(gòu)建的短標(biāo)識用于在區(qū)塊鏈網(wǎng)絡(luò)中對數(shù)據(jù)進(jìn)行唯一標(biāo)記。長標(biāo)識為描述數(shù)據(jù)的所有元數(shù)據(jù)的合集,基本的元數(shù)據(jù)包括:數(shù)據(jù)在云中存儲位置(URL)、擴(kuò)展字段。其中,擴(kuò)展字段可為空,可以方便用戶進(jìn)行擴(kuò)展。由于長標(biāo)識中的字段都可以更新,當(dāng)數(shù)據(jù)物理位置發(fā)生變化時,只需要更新長標(biāo)識中存儲的URL,就能實(shí)現(xiàn)用原有的短標(biāo)識對新的物理位置進(jìn)行尋址,使得標(biāo)識編碼具有數(shù)據(jù)物理位置可遷移的特性。長短標(biāo)識的鍵-值對存儲形式為快速尋址提供了保障。
圖3 云鏈融合的共享數(shù)據(jù)標(biāo)識編碼結(jié)構(gòu)
共享數(shù)據(jù)標(biāo)識注冊和解析協(xié)議流程如圖4所示。標(biāo)識注冊者發(fā)起注冊請求,區(qū)塊鏈依據(jù)標(biāo)識編碼規(guī)則,自動編碼生成全局唯一的二級標(biāo)識,將短標(biāo)識返回給注冊者。當(dāng)標(biāo)識注冊者使用短標(biāo)識為參數(shù),向區(qū)塊鏈發(fā)起數(shù)據(jù)查詢請求,智能合約對二級標(biāo)識分級解析,返回長標(biāo)識用于對云端共享數(shù)據(jù)的尋址。
圖4 共享數(shù)據(jù)的標(biāo)識編碼與解析協(xié)議
為了實(shí)現(xiàn)領(lǐng)域數(shù)據(jù)的可控可計量的安全共享,本文提出一種云鏈融合機(jī)制下的輕量級加解密的屬性基加密訪問控制方法。具體方法是:利用區(qū)塊鏈承擔(dān)外包計算任務(wù),保證計算結(jié)果的可靠性;基于提出的外包加密算法,數(shù)據(jù)所有者端只需輕量級加密計算就可以加密生成密文;基于提出的外包解密算法,數(shù)據(jù)使用者端只需輕量級解密計算就可以解密獲得明文。根據(jù)上述實(shí)現(xiàn)原理,論文提出了云鏈融合機(jī)制下的訪問控制協(xié)議。
訪問協(xié)議流程如圖5所示,整個協(xié)議分為4個階段:系統(tǒng)初始化、基于智能合約的屬性令牌發(fā)放、云鏈融合機(jī)制下的共享數(shù)據(jù)加密存儲和基于智能合約的數(shù)據(jù)解密訪問。每個階段分為鏈上和鏈下兩個部分計算,表示為Onchain.[alg_name]和Offchain.[alg_name],其中alg_name是定義的算法名稱。具體協(xié)議過程如下。
圖5 云鏈融合機(jī)制下的訪問控制協(xié)議
(1)系統(tǒng)初始化
該階段通過部署智能合約和設(shè)置一組參數(shù)(MSK,MPK)來初始化系統(tǒng)。鏈下生成參數(shù),將公共參數(shù)上傳至區(qū)塊鏈。
第2步:提交SetPubKey_tx交易請求設(shè)置公共參數(shù),交易格式如公式(1):
其中,SetPubKey表示智能合約中定義的公共參數(shù)設(shè)置函數(shù)的函數(shù)名,MPK為公共參數(shù)。網(wǎng)絡(luò)上的任意節(jié)點(diǎn)可以通過調(diào)用合約,觸發(fā)GetPubKeyTx交易查詢公共參數(shù)。
(2)屬性令牌發(fā)放
證書機(jī)構(gòu)CA從區(qū)塊鏈獲取用戶公鑰upk和屬性集S,生成用戶屬性令牌上傳至區(qū)塊鏈。
第2步:鏈上發(fā)起SetToken_tx交易請求設(shè)置用戶屬性令牌,可以表示為下式(6):
其中,SetToken表示智能合約中定義的屬性令牌設(shè)置函數(shù)的函數(shù)名,UserId表示用戶身份標(biāo)識,k表示用戶的屬性令牌??梢蕴貏e指定SetToken函數(shù)只能由CA調(diào)用。交易執(zhí)行完成后,屬性授權(quán)過程就會被安全地記錄在區(qū)塊鏈上。
(3)共享數(shù)據(jù)加密存儲
本文采用混合加密方法,即利用公共參數(shù)對原數(shù)據(jù)進(jìn)行對稱加密,利用屬性基加密機(jī)制加密對稱密鑰,然后,將生成的數(shù)據(jù)密文上傳至云,密鑰密文上傳至區(qū)塊鏈。密鑰密文的生成和上鏈過程具體描述如下:
令CTKEY=(ct0,ct1,…,ctm,ct'),其中,cti∈I=(cti,1,cti,2,cti,3),具體的計算如公式(7):
其中,Mi,j表示矩陣M的第(i,j)個元素。
最后,輸出密鑰密文CTKEY=(ct0,ct1,…,ctm,ct'),記錄在區(qū)塊鏈上。
(4)共享數(shù)據(jù)解密訪問
數(shù)據(jù)使用者訪問數(shù)據(jù),發(fā)起訪問交易,從區(qū)塊鏈獲取中間密文,鏈下執(zhí)行最終解密。
第1步:鏈上預(yù)解密交易格式為Onchain.PreDec_tx=(‘PreDec’,Index,UserId),其中,PreDec表示智能合約中定義的預(yù)解密算法的函數(shù)名,Index表示元數(shù)據(jù)索引,UserId表示用戶身份標(biāo)識。用戶發(fā)起PreDec_tx交易請求,觸發(fā)預(yù)解密合約中的PreDec算法,該算法首先獲取預(yù)加密合約生成的管理元數(shù)據(jù)(CTKEY,dataHash),從屬性令牌管理合約獲取用戶屬性令牌k,然后執(zhí)行預(yù)解密,生成中間密文CT'KEY。
生成的midKEY為中間密文。該交易執(zhí)行完成后,被作為訪問記錄存在區(qū)塊鏈上。這樣,用戶的訪問過程被記錄在區(qū)塊鏈上,為數(shù)據(jù)所有者生成訪問報告。
第2步:數(shù)據(jù)使用者鏈下執(zhí)行最終解密,從區(qū)塊鏈獲得返回的中間密文結(jié)果,利用私鑰u解密對稱密鑰KEY。對稱密鑰可以按公式(11)計算:
最后,用對稱密鑰KEY解密出原數(shù)據(jù),dataHash用于驗(yàn)證云提供的原數(shù)據(jù)的完整性。
通過以上4個步驟,在云鏈融合系統(tǒng)中,在云上存儲原數(shù)據(jù)密文,基于智能合約進(jìn)行外包加密和預(yù)解密計算,數(shù)據(jù)所有者端只需輕量級加密計算就可以加密生成密文,同時,數(shù)據(jù)使用者端只需輕量級解密計算就可以解密獲得明文,從而實(shí)現(xiàn)了基于智能合約的共享數(shù)據(jù)輕量級訪問控制方法。同時,通過不同粒度(如數(shù)據(jù)塊、對象和文件等)共享數(shù)據(jù)加密和訪問控制策略,就可以實(shí)現(xiàn)共享的可計量訪問。
(1)準(zhǔn)備階段
第1步,密鑰生成算法:KeyGen(1λ)→(pk,sk)
第2步,標(biāo)簽生成算法:TagGen(sk,pk,F)→Φ
用來對用戶數(shù)據(jù)文件進(jìn)行分塊,并生成元數(shù)據(jù)。給定用戶文件F,將用戶數(shù)據(jù)文件分為n塊,表示為F={m1,m2,…,mn},對每一數(shù)據(jù)塊可按公式(12)計算其標(biāo)簽:
生成Φ={σi}1≤i≤n作為元數(shù)據(jù)。
(2)挑戰(zhàn)階段
挑戰(zhàn)生成算法:GenChal(F)→chal
(3)響應(yīng)階段
完整性證明生成算法:ProofGen(chal,F,Φ,pk)→P
云服務(wù)器收到挑戰(zhàn)信息chal后,隨機(jī)選擇系數(shù)r← Zp,并計算公式(13)和(14):
最終得到完整證明P={μ,σ}并將結(jié)果以交易提案形式發(fā)回審計者。
(4)證明階段
審計驗(yàn)證過程:ProofCheck(P,Φ)→{true,false}
根據(jù)本文提出的云鏈融合的共享數(shù)據(jù)系統(tǒng)模型和實(shí)現(xiàn)技術(shù),研發(fā)了一套基于Hyperledger Fabric和公共云平臺的實(shí)驗(yàn)原型系統(tǒng),該系統(tǒng)通過Hyperledger Fabric區(qū)塊鏈智能合約為用戶提供安全可信的共享數(shù)據(jù)管理服務(wù),包括:用戶管理、數(shù)據(jù)存儲、數(shù)據(jù)查詢、數(shù)據(jù)共享、數(shù)據(jù)審計、屬性基加密訪問控制等。下面測試分析了該原型系統(tǒng)在共享數(shù)據(jù)注冊和檢索、訪問控制、完整性審計方面的性能。
實(shí)驗(yàn)選擇阿里和亞馬遜云等公共云為多源數(shù)據(jù)共享環(huán)境,區(qū)塊鏈智能合約的測試使用Hyperledger Caliper[11],每項(xiàng)性能測試重復(fù)100次取平均值;鏈下程序的測試使用測試代碼進(jìn)行,每項(xiàng)測試重復(fù)10次取平均值。
共享數(shù)據(jù)注冊指不同云計算的擬定共享數(shù)據(jù)通過智能合約在云鏈融合系統(tǒng)的區(qū)塊鏈鏈表中登記共享數(shù)據(jù)元信息的過程。實(shí)驗(yàn)測試系統(tǒng)中共享數(shù)據(jù)注冊的效率,圖6(a)中橫坐標(biāo)為數(shù)據(jù)大小,縱坐標(biāo)為時間開銷。黑色“x”點(diǎn)為平均時間,上下的紅色“-”點(diǎn)表示最大值和最小值。實(shí)驗(yàn)結(jié)果顯示,共享數(shù)據(jù)注冊的時間開銷與數(shù)據(jù)大小呈正相關(guān)。由于審計過程需要將數(shù)據(jù)分塊,并將數(shù)據(jù)塊標(biāo)簽存在區(qū)塊鏈上,隨著數(shù)據(jù)量的增加,數(shù)據(jù)長記錄中的數(shù)據(jù)標(biāo)簽會增長,因此使得整個數(shù)據(jù)記錄的長度增加,從而需要更多的時間開銷。平均每增大1GB數(shù)據(jù),數(shù)據(jù)注冊的時間開銷會增加0.25秒。由于區(qū)塊鏈中交易排序存在隨機(jī)性以及節(jié)點(diǎn)間通信時存在網(wǎng)絡(luò)波動,相同大小數(shù)據(jù)發(fā)布的時間開銷在一定范圍內(nèi)波動,并隨著交易大小的增加波動的范圍有所增加。
共享數(shù)據(jù)檢索指智能合約在區(qū)塊鏈上查詢數(shù)據(jù)記錄。實(shí)驗(yàn)測試平臺中數(shù)據(jù)查詢的效率。圖6(b)中橫坐標(biāo)為數(shù)據(jù)大小,縱坐標(biāo)為時間開銷。黑色“x”點(diǎn)為平均時間,上下的紅色“-”點(diǎn)表示最大值和最小值。實(shí)驗(yàn)結(jié)果顯示,數(shù)據(jù)查詢的時間開銷與數(shù)據(jù)大小呈正相關(guān)。隨著數(shù)據(jù)量的增加,數(shù)據(jù)長記錄中的數(shù)據(jù)標(biāo)簽會增長,因此使得整個數(shù)據(jù)記錄的長度增加,因此需要更多的時間開銷。平均每增大1GB數(shù)據(jù),數(shù)據(jù)查詢的時間開銷會增加0.07秒。
圖6 共享數(shù)據(jù)注冊和檢索性能測試
數(shù)據(jù)訪問控制方法主要劃分為預(yù)加密、外包加密、預(yù)解密、最終解密4個計算任務(wù),其中外包加密和預(yù)解密計算由智能合約完成,預(yù)加密和最終解密由客戶端本地完成。為了評估輕量級加解密性能,實(shí)驗(yàn)對比FAME[9]方法測試客戶端加解密效率。FAME是一種快速的屬性基加密方案。提出的訪問控制方法在云鏈融合的架構(gòu)下基于區(qū)塊鏈實(shí)現(xiàn)了加解密外包計算。實(shí)驗(yàn)采用256-bit BN橢圓曲線生成密鑰,基于gofe[12]實(shí)現(xiàn)FAME方法。類似于FAME方法,實(shí)驗(yàn)中的加密算法采用最復(fù)雜的訪問策略,即表示為"attr1AND attr2AND···AND attrn",這樣就需要具有所有n個屬性才能解密。
實(shí)驗(yàn)首先測試了不同屬性數(shù)目下客戶端鏈下加解密計算性能,如圖7(a)所示,隨著屬性數(shù)目從2開始線性增長至20,F(xiàn)AME方法中客戶端的加密時間呈線性增長趨勢,提出的方法客戶端加密時間基本維持一個常數(shù)。解密階段客戶端的計算效率如圖7(b)所示,F(xiàn)AME方法和提出方法的解密時間與屬性數(shù)目無關(guān),提出方法的解密時間約為18.8 ms。由于提出方法基于區(qū)塊鏈進(jìn)行外包計算,有效降低了鏈下客戶端的加解密計算復(fù)雜度。
圖7 共享數(shù)據(jù)訪問控制的鏈下計算性能
為了測試交易和智能合約的性能,實(shí)驗(yàn)采用區(qū)塊鏈性能測試工具Caliper測試區(qū)塊鏈交易延遲性能指標(biāo)。圖8展示了并發(fā)交易數(shù)目固定時屬性數(shù)量對交易的平均響應(yīng)時間的影響。屬性數(shù)量從2增長到20,交易響應(yīng)時間隨著交易數(shù)量的增長呈現(xiàn)線性增長趨勢。由于預(yù)加密函數(shù)計算任務(wù)資源消耗最大,其平均響應(yīng)時間最長。雖然共識機(jī)制會導(dǎo)致外包計算產(chǎn)生一定的響應(yīng)延遲,但文獻(xiàn)[13]表明在主流的部署配置中,F(xiàn)abric可以實(shí)現(xiàn)超過每秒3500個交易的吞吐量,交易延遲低于1秒,可以很好地擴(kuò)展到100個以上對等節(jié)點(diǎn)。
圖8 共享數(shù)據(jù)訪問控制的鏈上計算性能
數(shù)據(jù)審計過程包括生成挑戰(zhàn)、生成證明和完整性驗(yàn)證3個子過程。在云鏈融合的數(shù)據(jù)共享系統(tǒng)中,生成挑戰(zhàn)和完整性驗(yàn)證由區(qū)塊鏈的智能合約完成,生成證明由云服務(wù)完成。實(shí)驗(yàn)測試系統(tǒng)的共享數(shù)據(jù)審計效率。圖9中橫坐標(biāo)為審計的數(shù)據(jù)塊數(shù),縱坐標(biāo)為時間開銷。藍(lán)色“x”點(diǎn)表示生成挑戰(zhàn)的時間開銷,綠色圓點(diǎn)表示生成證明的時間開銷,黑色“*”點(diǎn)表示完整性驗(yàn)證的時間開銷。實(shí)驗(yàn)結(jié)果顯示,隨著數(shù)據(jù)審計塊數(shù)的增加,3個子過程操作的時間開銷都有所增加。但是由于3個子過程的計算復(fù)雜度不同,時間開銷增長的速度有所不同。其中生成挑戰(zhàn)部分計算復(fù)雜度最低,因此時間開銷相對穩(wěn)定;完整性驗(yàn)證部分計算復(fù)雜度最高,且在區(qū)塊鏈上實(shí)現(xiàn),因此時間開銷的增長最為明顯,且相對其他二者,其時間開銷的增長較不穩(wěn)定。
圖9 共享數(shù)據(jù)審計性能
各個領(lǐng)域存量數(shù)據(jù)分散在不同云存儲系統(tǒng)中,考慮數(shù)據(jù)所有權(quán)和隱私等問題,未來增量數(shù)據(jù)勢必繼續(xù)分散在各個機(jī)構(gòu)的數(shù)據(jù)中心。因此,領(lǐng)域數(shù)據(jù)的分散性是其固有特性。為了實(shí)現(xiàn)這些分散領(lǐng)域大數(shù)據(jù)的安全和可信共享,本文提出了一種區(qū)塊鏈和云計算的融合機(jī)制來管理這些分散數(shù)據(jù),支撐“原始數(shù)據(jù)不出域、數(shù)據(jù)可用不可見”的領(lǐng)域數(shù)據(jù)共享模式。通過設(shè)計共享數(shù)據(jù)標(biāo)識編碼和解析協(xié)議,實(shí)現(xiàn)共享數(shù)據(jù)的定位和尋址;通過設(shè)計一種基于區(qū)塊鏈智能合約機(jī)制的輕量級屬性基加密訪問控制算法,實(shí)現(xiàn)共享數(shù)據(jù)的“可控可計算”;通過建立一種基于云鏈融合機(jī)制的數(shù)據(jù)完整性審計算法,保障數(shù)據(jù)的可信共享。以上述模型和算法為基礎(chǔ),本文研發(fā)了相應(yīng)實(shí)際原型系統(tǒng),測試分析了其性能,驗(yàn)證了模型和算法的可行性和先進(jìn)性。