楊顏博,張嘉偉,馬建峰
(1.內蒙古科技大學 信息工程學院,內蒙古自治區 包頭 014040;2.西安電子科技大學 網絡與信息安全學院,陜西 西安 710071)
當前,車輛Ad-Hoc網絡是許多研究者關注的一個熱點方向。通過無線網絡將車輛組成一個Ad-Hoc網絡,利用嵌入式設備感知的數據提升駕駛的安全性。隨著電子信息技術的發展,在未來10~20年間,注冊在案的車輛將達到20億輛[1],即使只有一部分車輛與智能網絡設備結合形成車聯網,也不可避免地會產生海量的數據。為了應對海量數據產生的挑戰,車輛云便由此而生[2]。基于IoT(Internet of Things)的車輛云將智能交通系統、無線傳感器網絡和移動云計算的特點結合起來,通過引入邊緣計算或霧計算技術[3],使得依賴于V2X(Vehicle-to-Vehicle,Vehicle-to-Infrastructure)通信技術的自動駕駛和高級輔助應用成為可能[4]。車聯網在帶來許多便利的同時,其所產生的海量數據會極大地消耗云存儲空間,而且敏感信息也極易從中心化的云泄露。
為解決中心化存儲的問題,文獻[5]引入分布式哈希表(Distributed Hash Tables,DHT)取代中心云存儲車聯網海量數據,同時使用區塊鏈為分布式數據提供便捷的存儲和保護。區塊鏈取代了傳統意義下的“受信任的第三方”[6],在設備將數據上傳到分布式哈希表之前,首先發布“存儲交易”到區塊鏈,表明某設備的數據將存儲在分布式哈希表的地址,區塊鏈驗證交易并記錄設備的身份和存儲地址[7-8]。而當設備從分布式哈希表請求數據時,發布區塊鏈的“訪問交易”,區塊鏈將以“受信任的第三方”身份驗證請求者。如果交易經過驗證并寫入一個塊,存儲數據的分布式哈希表節點將發送數據給請求者。因此,設備和用戶的認證通過區塊鏈可以避免可能被攻擊的“受信任的”服務器[9]。然而,該方案使用的帶有證書的公鑰基礎結構引入大量復雜性,盡管基于身份的加密可以節省證書管理開銷,但其產生的密鑰托管問題一直無法得到很好的解決。同時,數據的機密性和細粒度訪問控制也是車聯網數據存儲中的關鍵問題。
針對這些挑戰性問題,筆者提出一種基于區塊鏈的車聯網分布式數據存儲和保護方案。使用分布式哈希表存儲車聯網大數據,并借助區塊鏈技術完成數據的可信存取。引入無證書密碼體制[10-11]完成車輛身份驗證,并使用區塊鏈作為共享公鑰信息的平臺來克服無證書加密方法中公鑰信息需要預先進行廣播的缺點,車聯網設備可以將其公鑰附加到他的數據訪問請求,同時發送到區塊鏈以及其他設備的身份驗證。使用部分隱藏訪問策略的密文策略屬性基加密(Ciphertext-Policy Attribute-Based Encryption,CP-ABE)技術[12]實現車聯網數據的機密性和細粒度訪問控制。筆者的主要貢獻如下:
(1) 提出了具有隱私保護的車聯網大數據共享方案。該方案實現了高效的數據細粒度訪問控制以及動態車輛撤銷,并且通過部分隱藏訪問策略實現隱私保護,同時基于區塊鏈實現用戶的數據存儲、訪問和撤銷的信任機制。
(2) 通過使用邊緣計算的方式將車聯網設備的計算數據轉發到分布式哈希表中進行存儲。車聯網用戶使用區塊鏈共同創造區塊驗證和記錄交易的公共賬本。分布式哈希表存儲地址可以存儲在區塊鏈中。當用戶或實體從分布式哈希表請求數據時,區塊鏈將決定是否可以授予訪問權限,即請求者的身份驗證由分布式的區塊鏈節點而不是受信任的集中式服務器處理。
(3) 提出了在基于區塊鏈的無證書車聯網系統,通過使用區塊鏈中公共賬本為車聯網系統提供了一種便捷的方式來廣播車輛節點的公鑰,從而克服了無證書密碼系統的缺點。同時,無證書加密大大減少了傳統公鑰證書的冗余,并提供了驗證車聯網設備的有效方法。
在區塊鏈中,用戶共同創造區塊驗證和記錄交易的公共賬本[13-14]。區塊鏈技術奠定了堅實的“信任”基礎,創造了可靠的合作機制,具有廣泛的應用前景[15-16]。其核心技術有:
(1) 去中心化
區塊鏈是一種點對點網絡上的分布式賬本,每個節點也都存儲著完整的賬本信息。每個節點都備份完整的賬本信息,可以避免單節點故障引起的數據丟失。區塊鏈技術不依賴額外的第三方管理機構或硬件設施,沒有中心管制,除了自成一體的區塊鏈本身,通過分布式核算和存儲,各個節點實現了信息自我驗證、傳遞和管理。去中心化是區塊鏈最本質的特征。
(2) 共識機制
共識機制是解決對某個提案達成一致意見的過程,在沒有中心節點的情況下保證各個節點內容的一致性。它維護系統的運作順序與公平性,使每一個互不相干的節點能夠驗證、確認網絡中的數據,進而產生信任,達成共識。
(3) 加密算法
區塊鏈應用中采用了很多現代密碼學的經典算法,包括哈希算法、對稱加密、非對稱加密、數字簽名等,加密算法為區塊鏈的匿名性、不可篡改和不可偽造等特點保駕護航,是一個公鏈是否值得信賴、是否有基本的安全性底線的基礎。
(4) 智能合約
智能合約是以數字形式定義的能夠自動執行條款的合約。它將合同以代碼的形式放到區塊鏈上并在約定的條件下自動執行。智能合約放到區塊鏈上,能有效地防止盜版和篡改。基于區塊鏈技術的智能合約不僅可以發揮智能合約在成本效率方面的優勢,而且可以避免惡意行為對合約正常執行的干擾。將智能合約以數字化的形式寫入區塊鏈中,由區塊鏈技術的特性保障存儲、讀取、執行,整個過程透明,可跟蹤,不可篡改。

(3) 判定性線性假設。對于任意隨機多項式算法,已知(g,gxi,gx2,gx1x3,gx2x4),則區分gx3+x4和隨機元素Z∈G1是很困難的,其中,x1∈Zp,x2∈Zp,x3∈Zp,x4∈Zp。
圖1展示了車聯網數據分布式共享系統的架構。整個系統由6個模塊組成:分布式存儲哈希表(DHT),區塊鏈網絡(BC),密鑰生成中心(KGC),邊緣節點(MN),數據所有者(DO)和數據消費者(DP)。

圖1 系統模型
車聯網數據分布式共享系統具體描述如下:
(1) 密鑰生成中心,用于初始化整個系統,生成系統公共參數和主密鑰,并且為每個IoT用戶設備生成和分發密鑰。
(2) 分布式存儲哈希表,用于為數據共享服務提供海量分布式的存儲空間,可以方便地通過具體的存儲地址進行數據存取。本文匯總的分布式存儲哈希表中,特別設計了一個公共的存儲區域,該區域維護一個用于存儲所有用戶的公共轉換密鑰的密鑰池。
(3) 區塊鏈網絡,用于接受用戶的數據存儲和數據訪問、用戶撤銷請求,并通過相應的交易和一致性共識協議來決定是否接受請求,同時區塊鏈網絡還記錄用戶加密數據的訪問策略,并且保證訪問策略不被篡改。
(4) 邊緣節點,用于獲取車聯網終端設備的數據并聚集后,通過區塊鏈網絡申請存儲到分布式存儲哈希表中,同時在終端用戶設備請求數據時,通過區塊鏈網絡從分布式存儲哈希表中獲取對應的共享數據以及公共區域中的相應用戶的公共轉換密鑰,進行外包解密后,傳遞至對應的車聯網終端用戶設備中進行本地數據解密。
(5) 數據所有者,即車聯網終端用戶設備,包括用戶設備(例如,用戶手機,筆記本電腦等)和各種車載傳感器設備(例如,車載計算機,輪胎傳感器,車載智能儀表等),數據所有者用于生成各種數據,加密后經過邊緣節點向區塊鏈網絡申請外包存儲至分布式存儲哈希表中。
(6) 數據消費者,也是車聯網終端用戶設備,在有需要的時候,通過邊緣節點向區塊鏈網絡請求分享相應的數據并得到邊緣節點返還的部分解密結果,通過驗證該結果的正確性后在本地恢復共享數據明文。
在筆者提出的車聯網數據分布式共享系統中,密鑰生成中心是完全信任的實體;區塊鏈網絡被認為是可信的分布式第三方實體;分布式存儲哈希表和邊緣節點被認為是半可信實體,它們會忠實執行協議的流程,但是會對具體的數據信息產生好奇,可能會泄露敏感數據,包括數據以及訪問策略中包含的隱私信息,以及對于邊緣節點外包解密的懶惰操作或者返回之前的結果;數據所有者被認為是完全可信的實體,而數據消費者被認為存在惡意的數據消費者,通過串謀攻擊等手段非法訪問共享數據,并且泄露訪問策略中的隱私信息。
本節給出所提方案的機密性和隱私性安全模型,這兩個模型描述如下。
(1) 機密性。該模型定義為一個敵手A和挑戰者C之間的游戲,其中敵手可以多次詢問用戶屬性密鑰,轉換密鑰,解密和用戶撤銷。該安全游戲定義如下:
① 系統建立。挑戰者C運行Setup算法生成系統公共參數和主密鑰,并將系統公共參數發送給敵手A。同時,挑戰者C建立一個列表L用于管理轉換密鑰。
② 詢問1。敵手A適應性地發布用戶屬性密鑰詢問、轉換密鑰詢問、解密詢問和用戶撤銷詢問、對于詢問中的每一個屬性集合Si,挑戰者C生成對應的用戶屬性密鑰AKi和轉換密鑰TKi,存入列表L。如果列表L存在敵手A查詢的元組,則返回給敵手A;否則,返回空。對于解密詢問,如果敵手A查詢的元組不存在,挑戰者C也返回空。對于用戶撤銷詢問,挑戰者C同時更新列表L。
③ 挑戰者應答。敵手A輸出兩個等長消息m0,m1和一個挑戰訪問策略(M*,ρ*,{sρ*(i)}),該挑戰訪問策略與詢問1中的所有屬性集合Si都不匹配。接著,挑戰者C隨機選擇b∈{0,1},并根據挑戰訪問策略(M*,ρ*,{sρ*(i)})產生消息mb的密文CT*且返回給敵手A。
④ 詢問2。敵手A繼續發布用戶屬性密鑰詢問和轉換密鑰詢問,這些詢問中的屬性集合同樣不滿足挑戰訪問策略。之后,挑戰者C的響應類似于詢問1。
⑤ 猜測。敵手A輸出對b的猜測b′,如果b=b′,則敵手A贏得該安全游戲。
(2) 隱私性。該模型也定義為一個敵手A和挑戰者C之間的如下游戲:
① 系統建立。挑戰者C運行Setup算法生成系統公共參數和主密鑰,并將系統公共參數發送給敵手A。
② 詢問1。敵手A適應性地發布用戶屬性密鑰詢問、轉換密鑰詢問、解密詢問和用戶撤銷詢問。對于詢問中的每一個屬性集合Si,挑戰者C生成對應的用戶屬性密鑰AKi和轉換密鑰TKi,存入列表L。如果列表L存在敵手A查詢的元組,則返回給敵手A;否則,返回空。對于解密詢問,如果敵手A查詢的元組不存在,挑戰者C也返回空。對于用戶撤銷詢問,挑戰者C同時更新列表L。
③ 挑戰者應答。敵手A輸出一個消息m以及兩個挑戰訪問策略(M*,ρ*,{sρ*(i)}0)和(M*,ρ*,{sρ*(i)}1),這兩個挑戰訪問策略與詢問1中的所有屬性集合Si都不匹配。接著,挑戰者C隨機選擇b∈{0,1},并根據挑戰訪問策略(M*,ρ*,{sρ*(i)}b′)產生消息m的密文CT*且返回給敵手A。
④ 詢問2。敵手A繼續發布用戶屬性密鑰詢問和轉換密鑰詢問,這些詢問中的屬性集合同樣不滿足兩個挑戰訪問策略。之后,挑戰者C的響應類似于詢問1。
⑤ 猜測。敵手A輸出對b的猜測b′,如果b=b′,則敵手A贏得該安全游戲。
上述兩個安全游戲中,敵手A的優勢定義為AdvA=|Pr[b=b′]-1/2|,Pr表示概率。
定義1如果任意隨機多項式時間的敵手最多以一個可忽略的優勢贏得上述安全游戲,則筆者所提方案的機密性和隱私性在選擇明文攻擊下是不可區分性(INDistinguishability under Chose-Plaintext Attack,IND-CPA)安全的。
在筆者設計的車聯網數據分布式共享系統中,車聯網中的車輛中部署了大量的終端設備。這些設備會產生大量數據,其中包含大量敏感數據(例如,位置隱私數據,用戶隱私數據,車輛狀況數據,車輛信任數據等)。為了減輕本地存儲負擔以及完成數據共享,終端設備將這些數據加密并指定對應的訪問策略以保證細粒度訪問控制和機密性。接著,這些數據會被存儲至分布式存儲平臺中進行共享,在有需要的時候,車輛終端設備會訪問這些共享的數據。然而,訪問策略中往往包含了許多隱私數據,例如用戶隱私,位置隱私等。根據系統威脅模型,為了保護訪問策略中的數據隱私,筆者采用了部分隱藏訪問策略的數據細粒度訪問控制方案來實現車聯網數據共享。車聯網中的每輛車被認為是一個移動的邊緣節點,它收集車輛內部署的終端設備的數據,將這些數據匯集后,通過區塊鏈網絡存儲至分布式存儲哈希表中。而在終端設備有需要時,向區塊鏈網絡請求數據訪問,并對這些加密數據進行外包解密,將部分解密的結果返回給對應的終端設備進行本地解密,以減輕資源受限的終端設備的計算負擔。筆者使用了可驗證的外包解密技術來實現該需求。另外,在系統初始化時,每個車輛終端設備需要進行注冊,由密鑰生成中心為每個終端設備產生密鑰,以便其請求存儲和訪問數據時,對具體的區塊鏈交易數據進行簽名和驗證。為了減輕對于密鑰生成中心的信任依賴以防止密鑰托管問題,本方案采用了文獻[17]中的無證書公鑰方法來為每個終端設備生成公鑰和私鑰對。說明:文中不涉及區塊鏈具體實現細節,只是使用了抽象的形式化表示方法。
3.2.1 系統初始化階段

3.2.2 用戶注冊階段

(2) 轉換密鑰生成TKeyGen(PK,AKu)。該算法由密鑰生成中心執行。輸入系統公共參數PK,用戶的屬性密鑰AKu,該算法隨機選擇zu∈Zp作為該用戶的秘密轉換密鑰TKs=zu,計算公共轉換密鑰TKp={K1=(D1)1/zu,K2=(D2)1/zu,Ki,1=(Di,1)1/zu,Ki,2=(Di,2)1/zu,Ki,3=(Di,3)1/zu,Ki,4=(Di,4)1/zu,Ki,5=(Di,5)1/zu}。最后,密鑰生成中心將秘密轉換密鑰TKs通過安全通道傳送給用戶,將公共轉換密鑰TKp通過區塊鏈傳送給分布式存儲哈希表的公共存儲區域的用戶密鑰池KP=KP∪KPu,其中KPu={uid,S,TKp}。
(3) 用戶公私鑰對生成SKeyGen(PK,IDA)。該算法由用戶和密鑰生成中心一起執行。輸入系統公共參數PK,用戶身份標識IDA,密鑰生成中心產生一個部分秘密密鑰PSKA,并且將Rsp=IDA‖PSKA‖Sig(IDA‖PSKA,SKK)傳遞給用戶IDA。用戶使用密鑰生成中心的公鑰PKK驗證該消息的正確性后接受PSKA。接著,用戶IDA在本地生成自己的私鑰LSKA和公鑰PKA,并且根據PSKA,LSKA生成自己的私鑰SKA。由于只有用戶IDA自己知道LSKA,因此可以避免其私鑰SKA的托管泄露問題。
3.2.3 數據加密階段

其次,算法選擇隨機向量γ=(s,γ2,…,γn),其中γi∈RZp。對于訪問策略矩陣中的每一行Mi,該算法計算τi=γ·Mi作為訪問策略中每一個屬性的秘密分享部分。該算法同時還為每一行隨機選擇ti,1,…,ti,l,t1,2,…,tl,2,r1,…,rl,它們均屬于集合RZp,并計算:
最后,數據加密算法輸出最終的訪問策略部分隱藏的密文CT={(M,ρ),Cs,σ,C0,C1,{Ci,1,Ci,2,Ci,3,Ci,4,Ci,5,Ci,6}i∈[l]}。
(2) 該終端用戶生成密文后,需要產生一個區塊鏈交易作為數據存儲請求,通過邊緣節點發送給區塊鏈網絡。該交易的格式為TA={PKA,IDA,CT,Addr,SigA},其中PKA,IDA是用戶的公鑰和身份表示,CT是其產生的密文(包含訪問策略和對稱加密密文),Addr是申請存入的分布式存儲哈希表的地址,SigA是用戶對該交易信息的簽名。之后,用戶IDA將該交易廣播到區塊鏈網絡中。區塊鏈網絡中的各節點驗證用戶IDA及其公鑰PKA的一致性,同時驗證簽名SigA的正確性。根據區塊鏈共識協議,區塊鏈節點通過該交易后,交易信息會記錄到新的區塊中,同時將密文CT上傳到指定地址的分布式存儲哈希表中進行外包存儲和數據共享。
3.2.4 數據訪問階段
(1) 當數據消費者IDB請求訪問共享數據時,產生一個區塊鏈交易TB={PKB,IDB,Addr,SigB},通過邊緣節點廣播至區塊鏈網絡中。區塊鏈網絡節點收到該交易并校驗成功后,會從指定地址Addr獲取密文CT,并從分布式存儲哈希表的公共存儲空間Addr0中獲取對應用戶IDB的公共轉換密鑰TKp,且判斷TKp中的屬性集合是否符合CT中的部分隱藏訪問策略。如果符合,則將所有信息返回給IDB所在邊緣節點進行外包解密;否則,流程中斷。

計算出部分外包解密結果F后,邊緣節點將該結果以及密文CT傳遞給終端用戶進行本地解密。
(3) 用戶數據解密Decryptlocal(PK,F,CT,TKs)。該算法由終端用戶在本地終端設備執行。輸入系統公共參數PK,部分解密結果F以及密文CT。

其次,用戶驗證公式σ=H2(R′‖Cs)是否成立。如果該等式不成立,則中斷流程;如果等式成立,則外包解密正確執行,用戶根據所得到的對稱加密密鑰k*解密Cs,從而恢復數據明文m=Decs(k*,Cs)。
3.2.5 用戶撤銷階段
用戶撤銷UserRevoke(KP,uid)。當系統要撤銷一個用戶uid時,密鑰生成中心產生一個交易信息TK=(PKK,IDK,uid,Addr0,SigK),其中Addr0表示分布式存儲哈希表的公共存儲區域。密鑰生成中心然后將該交易作為撤銷請求發布到區塊鏈網絡中。該交易通過后,會將被撤銷用戶uid發送到分布式存儲哈希表的公共存儲區域中的用戶密鑰存儲池KP中,從KP中刪除uid的相關記錄,并且得到更新后的KP′。當被撤銷用戶再次申請訪問數據時,邊緣節點將無法得到公共轉換密鑰和屬性集合,即無法進行安全外包解密,因此,被撤銷用戶無法再次訪問之前和之后系統共享的數據,從而保證了前向和后向的安全。
定理1如果雙線性群上的(q-1)假設和判定性線性假設成立,則方案是不可區分性安全和隱私安全的。
證明 使用規約法,將本文方案(簡記為Σ1)的安全性規約到文獻[18]的方案(簡記為Σ0)上。假設存在一個敵手A可以以不可忽略的優勢ε在挑戰訪問策略(M*,ρ*,{sρ*(i)})下攻破Σ1,則可以構建一個模擬器B以同樣的優勢攻擊Σ0。
(1) 初始化。模擬器B獲取敵手A發來的挑戰訪問策略(M*,ρ*,{sρ*(i)}),并轉發給Σ0的挑戰者C。

(3) 詢問1。敵手A適應性地發布用戶屬性密鑰詢問、轉換密鑰詢問、解密詢問和用戶撤銷詢問。對于詢問中的每一個不滿足于挑戰訪問策略(M*,ρ*,{sρ*(i)})的屬性集合Si,B將其發送到Σ0。隨后,B根據收到的密鑰AK*={K1*,K2*,{Kj,1*,Kj,2*,Kj,3*,Kj,4*,Kj,5*}j∈Si}生成對應的用戶屬性密鑰AKi,并隨機選擇一個秘密轉換秘鑰TKs,i=z*,同時根據AKi計算對應的轉換密鑰TKp,i,將元組(S,AKi,TKs,i,TKp,i)存入列表L。如果列表L存在敵手A查詢的元組,則返回給敵手A;否則,返回空。對于解密詢問,如果敵手A查詢的元組不存在,則B也返回空。對于用戶撤銷詢問,B同時更新列表L。
(4) 挑戰者應答。敵手A輸出兩個等長消息m0,m1和一個挑戰訪問策略(M*,ρ*,{sρ*(i)}),該挑戰訪問策略與詢問1中的所有屬性集合Si都不匹配。接著,B將其發送至C,得到一個挑戰者密文CT*并返回給敵手A。
(5) 詢問2。敵手A繼續發布類似于詢問1的請求給B。之后,B的響應類似于詢問1。
(6) 猜測。敵手A輸出對b的猜測bA,如果b=bA,則模擬器B輸出器猜測為0,意味著C的輸出是一個確定的q-1問題的輸出,且猜測正確的概率為ε+1/2;否則,B輸出1,即C返回的密文是隨機數且猜測正確的概率為1/2。B能夠猜測C的密文的優勢為
AdvB=1/2×(ε+1/2)+1/2×1/2-1/2=ε/2。
因此,如果A能夠以不可忽略的優勢攻破方案Σ1,則B可以以優勢ε/2攻破方案Σ0。如果(q-1)假設和判定性線性假設成立,則與之相矛盾。因此,筆者提出方案的機密性是IND-CPA安全的。該方案的隱私性安全證明類似于機密性證明。
使用Java語言實現了方案原型,并且在一臺安裝有安卓操作系統版本10的華為P30手機仿真平臺上作為用戶端進行了測試。該實驗中,使用JPBC的開發包實現雙線性群的各種操作,以AES作為對稱加密算法進行仿真實驗,同時使用一臺安裝有Windows 10操作系統的惠普電腦作為服務器端,以一臺安裝有Windows 10操作系統的Thinkpad 翼480電腦作為邊緣節點進行聯網運行仿真測試。實驗分別對不同個數的文件解密時間、不同用戶數情況下的用戶密鑰產生時間以及用戶密鑰和密文的空間占用大小進行了實際測試和分析。
5.2.1 文件解密性能評估
圖2描述了本文方案和文獻[18]中的方案在不同文件個數情況下的文件解密時間消耗對比。


(a) 文件個數為1

(b) 文件個數為2 (c) 文件個數為3

(d) 文件個數為4
圖2分別對應文件個數1到4的解密時間。從4幅圖中,可以看到本方案中的文件解密時間基本保持平穩。4幅圖中的方案[18]的解密時間,在文件個數保持一定的情況下,跟隨訪問策略中的復雜度的增大而增加;而且隨著文件個數的增長,在同樣的訪問策略復雜度情況下,解密時間也在增長。因此,本方案的解密時間消耗遠低于文獻[18]的方案而且保持不變,原因在于筆者采用了外包解密方法,提升了解密效率。
5.2.2 密鑰生成性能評估
圖3刻畫了本文方案和文獻[18]方案的密鑰生成時間消耗情況對比。在密鑰生成實驗中,對不同的用戶個數下的密鑰生成時間進行了測量。圖3(a)和圖3(b)分別對用戶個數為1和2的密鑰生成時間進行對比。可以看到,本文方案的時間消耗略高于文獻[18]的方案,主要原因在于本文方案在用戶密鑰生成過程中,不僅僅對屬性密鑰進行分發,同時對無證書公私鑰對進行分配,因此增加了額外的密鑰生成時間,但是從圖3中可以看出,這個額外時間消耗非常小。

(a) 用戶個數為1

(b) 用戶個數為2

(a) 用戶密鑰大小

(b) 用戶密文大小
5.2.3 密鑰和密文存儲空間評估
對于用戶側持有的密鑰和生成的密文所消耗的存儲空間,圖4進行了具體的描述。圖4(a)刻畫了兩個方案的用戶密鑰大小隨著用戶屬性集大小的變化情況。從圖4(a)中可以很明顯地看到,當用戶屬性集增大時,文獻[18]方案中的密鑰空間占用也在增大;而在文中方案中,由于使用了外包解密,用戶只持有秘密轉換密鑰和無證書私鑰,因此用戶密鑰大小是常數,而且遠小于文獻[18]方案的。圖4(b)則刻畫了兩個方案的密文占用空間對比,可以很明顯看到,文中方案的密文大小略大于文獻[18]方案的。這是由于本方案在生成密文后,還需要生成區塊鏈的簽名,對于密文的大小有了額外的空間消耗,但是在固定的屬性集大小情況下,文中方案的密文空間占用幾乎與文獻[18]方案的相同。
針對車聯網中的隱私數據共享問題,筆者提出了一種基于區塊鏈的具有隱私保護的高效車聯網數據分布式共享方法。該方法基于區塊鏈解決數據存儲、訪問和用戶撤銷中的信任問題,同時基于無證書密碼體系實現區塊鏈交易的簽名和認證以及降低用戶密鑰泄露風險,而區塊鏈又可以為車聯網節點提供公鑰廣播,從而克服了無證書密碼系統的缺點。該方法同時結合邊緣計算設備提出了一種高效的部分隱藏訪問策略的數據細粒度訪問控制方案,不僅提供了高效數據訪問機制,而且支持了大量車輛的動態加入和撤銷。另外,通過將數據存儲在分布式共享系統中,避免了集中式存儲帶來的問題。大量實驗分析對比證明了該方法的高效性和實用性。