巫光福,王影軍
(江西理工大學(xué)信息工程學(xué)院,江西贛州 341000)
在車聯(lián)網(wǎng)(Internet of Vehicles,IoV)環(huán)境下的車輛配備了先進(jìn)的車載傳感器和智能電子設(shè)備,并進(jìn)一步配備無(wú)線通信裝置車載單元(On Board Unit,OBU),能夠有效完成IoV 內(nèi)部成員之間的交互通信。數(shù)據(jù)信息的傳遞和共享主要通過(guò)車對(duì)車(Vehicle to Vehicle,V2V)、車對(duì)路(Vehicle to Road,V2R)和路對(duì)路(Road to Road,R2R)三種方式,利用邊緣計(jì)算技術(shù)對(duì)車輛節(jié)點(diǎn)中的敏感數(shù)據(jù)進(jìn)行局部處理。同時(shí),非敏感信息通過(guò)互聯(lián)網(wǎng)傳輸,實(shí)現(xiàn)基于車輛(Vehicle,V)和路側(cè)單元(Road Side Unit,RSU)的信息交互。
然而,由于大量設(shè)備接入網(wǎng)絡(luò)并請(qǐng)求相應(yīng)的網(wǎng)絡(luò)服務(wù),網(wǎng)絡(luò)帶寬會(huì)被各種智能聯(lián)網(wǎng)設(shè)備占用,導(dǎo)致服務(wù)器處理任務(wù)請(qǐng)求速度慢、效率低下。在過(guò)去的云計(jì)算模式中,將消息處理工作部署在云端,造成消息處理速度慢、數(shù)據(jù)傳輸延遲、占用高帶寬資源,核心網(wǎng)難以滿足高峰時(shí)段回程負(fù)荷的延時(shí)要求。同時(shí),由于云計(jì)算的集中計(jì)算特性,會(huì)進(jìn)一步導(dǎo)致節(jié)點(diǎn)分布不均,惡化數(shù)據(jù)傳輸和信息獲取的過(guò)程。由于IoV 系統(tǒng)通常運(yùn)行在無(wú)線網(wǎng)絡(luò)環(huán)境中,惡意攻擊者可以很容易地截獲、插入、刪除和修改傳輸?shù)男畔?。此外,如果在通信過(guò)程中車輛的身份信息泄露,車輛的位置和運(yùn)行軌跡等私人信息可能會(huì)暴露出來(lái)。因?yàn)榻煌ㄐ畔⒌陌踩院屯暾躁P(guān)系到對(duì)車內(nèi)人員的保護(hù),一旦傳輸?shù)臄?shù)據(jù)出現(xiàn)錯(cuò)誤,就有可能造成交通事故和人員傷亡。鑒于上述安全挑戰(zhàn),通信過(guò)程中的異常延遲問(wèn)題亟待解決,保證信息的安全性和完整性至關(guān)重要。
區(qū)塊鏈技術(shù)是一種共享的分布式賬本技術(shù),它由網(wǎng)絡(luò)中的所有節(jié)點(diǎn)管理、維護(hù)和監(jiān)督。邊緣計(jì)算是在網(wǎng)絡(luò)邊緣執(zhí)行計(jì)算的一種新的范式,它通過(guò)在云計(jì)算和智能設(shè)備之間搭建橋梁來(lái)支持嚴(yán)格的移動(dòng)應(yīng)用需求[1]。IoV 上的車輛節(jié)點(diǎn)和邊緣計(jì)算中的邊緣節(jié)點(diǎn)類似于區(qū)塊鏈中的網(wǎng)絡(luò)節(jié)點(diǎn)。因此,區(qū)塊鏈+邊緣計(jì)算有望為IoV 上的安全威脅和高延遲問(wèn)題提供解決方案。
文獻(xiàn)[2]中針對(duì)移動(dòng)邊緣計(jì)算中資源有限的問(wèn)題,通過(guò)在線學(xué)習(xí)使任務(wù)延遲最小化;文獻(xiàn)[3]中使用多平臺(tái)卸載的智能資源分配算法降低IoV 上計(jì)算任務(wù)的時(shí)延和系統(tǒng)成本,該算法節(jié)省了系統(tǒng)總開(kāi)銷的80%;文獻(xiàn)[4]中提出了一種聯(lián)合通信和計(jì)算資源分配優(yōu)化方案,使用云計(jì)算和邊緣計(jì)算來(lái)提高邊緣云的效率,與傳統(tǒng)的云計(jì)算方案相比,該方案具有更好的時(shí)延性能;文獻(xiàn)[5]中將移動(dòng)邊緣計(jì)算(Mobile Edge Computing,MEC)與云計(jì)算相結(jié)合,通過(guò)決策和資源分配的聯(lián)合優(yōu)化來(lái)實(shí)現(xiàn)計(jì)算卸載問(wèn)題。
與上述研究不同,本文提出了一種新的車聯(lián)網(wǎng)信息安全存儲(chǔ)和共享方案,將區(qū)塊鏈技術(shù)和邊緣計(jì)算技術(shù)有機(jī)地結(jié)合起來(lái)。本文的主要工作如下:
1)虛擬地將車輛節(jié)點(diǎn)和路邊單元節(jié)點(diǎn)作為區(qū)塊鏈的網(wǎng)絡(luò)節(jié)點(diǎn),通過(guò)區(qū)塊鏈傳遞交通信息,保證數(shù)據(jù)的完整性和安全性。私有鏈和聯(lián)盟鏈的結(jié)合使用平衡了分散技術(shù)與弱集中的現(xiàn)實(shí)之間的矛盾。普通車輛將形成基于聯(lián)盟區(qū)塊鏈的車輛網(wǎng)絡(luò),而專用車輛將單獨(dú)形成私有區(qū)塊鏈。
2)采用一種改進(jìn)的基于身份的數(shù)字簽密算法來(lái)避免公鑰證書的缺點(diǎn),并引入了私鑰生成器(Private Key Generator,PKG);采用基于離散中心二項(xiàng)分布的環(huán)簽名方案,減小簽名長(zhǎng)度。
3)在路邊單位和車輛上嵌入邊緣計(jì)算設(shè)備,可以將傳統(tǒng)的云端數(shù)據(jù)交互形式轉(zhuǎn)化為云-邊緣端。私人敏感數(shù)據(jù)將直接通過(guò)本地邊緣設(shè)備進(jìn)行處理,如果需要復(fù)雜的計(jì)算,通過(guò)安全通道傳輸?shù)皆七M(jìn)行處理。
4)提出了一種基于信譽(yù)值的動(dòng)態(tài)分層的實(shí)用拜占庭容錯(cuò)機(jī)制,并在區(qū)塊鏈網(wǎng)絡(luò)中部署智能合約,實(shí)現(xiàn)聲譽(yù)價(jià)值管理。
區(qū)塊鏈?zhǔn)怯蓪?duì)等(Peer to Peer,P2P)網(wǎng)絡(luò)的節(jié)點(diǎn)維護(hù)的分布式數(shù)據(jù)庫(kù)。區(qū)塊鏈技術(shù)已經(jīng)應(yīng)用于IoV。區(qū)塊鏈以多方共識(shí)、主體對(duì)等、安全通信等諸多優(yōu)勢(shì),改善了IoV 的信用安全、成本控制和應(yīng)用環(huán)境,并通過(guò)進(jìn)一步加大身份權(quán)限管理和隱私信息保護(hù)力度,實(shí)現(xiàn)對(duì)非法節(jié)點(diǎn)的識(shí)別和對(duì)非法入侵的有效防范。區(qū)塊鏈技術(shù)使用可編程智能合約自動(dòng)填寫和執(zhí)行合約。區(qū)塊鏈上的所有實(shí)體都可以同步獲取信息并及時(shí)進(jìn)行相應(yīng)的處理,極大地節(jié)省了時(shí)間和管理成本,提高了效率。為了保證交易數(shù)據(jù)的有效性和真實(shí)性,讓更多的節(jié)點(diǎn)參與到共識(shí)過(guò)程中,需要通過(guò)一種機(jī)制來(lái)激發(fā)節(jié)點(diǎn)的積極性。大多數(shù)節(jié)點(diǎn)都經(jīng)過(guò)認(rèn)證,共識(shí)機(jī)制可以防止數(shù)據(jù)寫入?yún)^(qū)塊鏈賬本后被篡改,保證數(shù)據(jù)的真實(shí)性。區(qū)塊鏈分為公有鏈、聯(lián)盟鏈和私有鏈[6]。本文采用聯(lián)盟鏈-私有鏈的雙鏈架構(gòu),將普通車輛節(jié)點(diǎn)加入聯(lián)盟鏈,利用特殊車輛節(jié)點(diǎn)構(gòu)成私有鏈,該架構(gòu)在保證普通車輛正常需求的基礎(chǔ)下,將給予特殊車輛節(jié)點(diǎn)更多優(yōu)待。
邊緣計(jì)算是一個(gè)高度虛擬化的平臺(tái),在終端設(shè)備和云之間提供計(jì)算和存儲(chǔ)等網(wǎng)絡(luò)服務(wù)[7],是云計(jì)算的延伸。邊緣計(jì)算操作的對(duì)象分別為來(lái)自云端的下行數(shù)據(jù)和智能設(shè)備的上行數(shù)據(jù)[8]。邊緣設(shè)備具有相當(dāng)大的計(jì)算能力和閑置資源。如果系統(tǒng)能夠以低延遲的方式處理一些簡(jiǎn)單的邊緣設(shè)備,那么系統(tǒng)就可以像處理實(shí)時(shí)任務(wù)那樣具有低延遲。在IoV 上,車輛內(nèi)部空間得到了極大的改善,越來(lái)越多具有高處理、存儲(chǔ)和計(jì)算能力的電子設(shè)備裝備在車上。同時(shí),為了更好地為車輛服務(wù),在道路兩側(cè)部署了大量高性能的路邊設(shè)備。以上結(jié)果表明,如果對(duì)這種車載設(shè)備和路側(cè)能夠合理使用,IoV 系統(tǒng)的性能將得到提高。
邊緣計(jì)算模型的應(yīng)用具有以下3個(gè)優(yōu)點(diǎn)[9]:
1)在網(wǎng)絡(luò)邊緣處理海量的臨時(shí)數(shù)據(jù),只有計(jì)算復(fù)雜度高的數(shù)據(jù)才會(huì)上傳到云端,極大地減輕了網(wǎng)絡(luò)帶寬和數(shù)據(jù)中心的壓力。
2)在數(shù)據(jù)生產(chǎn)終端附近提供數(shù)據(jù)處理服務(wù),消除了向云計(jì)算中心請(qǐng)求響應(yīng)的步驟,達(dá)到了減少系統(tǒng)延遲、增強(qiáng)服務(wù)響應(yīng)的目的。
3)邊緣計(jì)算可以防止用戶上傳私有數(shù)據(jù),主要是通過(guò)將私有數(shù)據(jù)存儲(chǔ)在網(wǎng)絡(luò)邊緣設(shè)備中,以降低數(shù)據(jù)泄露的風(fēng)險(xiǎn)。此外,邊緣計(jì)算可以基于用戶隱私數(shù)據(jù)提供更個(gè)性化的服務(wù),改善用戶體驗(yàn)。
圖1 顯示了一個(gè)通用的邊緣計(jì)算框架,它可以分為3 層:1)底層由智能設(shè)備組成,包含各種傳感器和本地?cái)?shù)據(jù),這些設(shè)備可以使用短程通信技術(shù)(如無(wú)線、藍(lán)牙)連接到位于上層的邊緣節(jié)點(diǎn)。2)邊緣層是終端、智能設(shè)備和云層之間的媒體層,由路由器、網(wǎng)關(guān)和轉(zhuǎn)換器等邊緣設(shè)備組成,這些邊緣設(shè)備是構(gòu)成邊緣計(jì)算框架的節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)都有足夠的智能來(lái)處理來(lái)自終端設(shè)備的大量數(shù)據(jù)。3)頂層是云層,需要更大計(jì)算能力的節(jié)點(diǎn)將被邊緣層傳輸?shù)皆茖舆M(jìn)行計(jì)算。
圖1 通用邊緣計(jì)算框架Fig.1 General edge computing framework
傳統(tǒng)的IoV 包括運(yùn)輸中心(Transportation Center,TC)、RSU 和V 這3 個(gè)部分:TC 控制車輛信息的登記和交通信息的存儲(chǔ);RSU安裝在道路兩側(cè),主要負(fù)責(zé)響應(yīng)車輛的驗(yàn)證和通信服務(wù);V可通過(guò)其車載單元與其他單元通信。與傳統(tǒng)的IoV不同,本文方案對(duì)交通信息數(shù)據(jù)進(jìn)行了更細(xì)致的處理。本文方案基于有序的區(qū)塊鏈網(wǎng)絡(luò),主要由以下幾個(gè)部分組成:可信云服務(wù)提供商(Trusted Cloud Service,TCS)、TC、PKG、邊緣計(jì)算設(shè)備(Edge Computing Device,ECD)、RSU 和V。TCS 用于存儲(chǔ)車輛運(yùn)行過(guò)程中上傳到網(wǎng)絡(luò)的完整信息,數(shù)據(jù)匯總并存儲(chǔ)在區(qū)塊鏈網(wǎng)絡(luò)中,以確保信息的完整性和不變性。TC 用于注冊(cè)存儲(chǔ)合法的車輛注冊(cè)信息。車輛注冊(cè)信息可用于生成用戶的公鑰,PKG 用于為用戶創(chuàng)建公鑰對(duì)應(yīng)的私鑰。ECD 可以實(shí)時(shí)響應(yīng)終端用戶的服務(wù)請(qǐng)求。
為了保證本系統(tǒng)方案的安全實(shí)施,現(xiàn)給出如下假設(shè):
假設(shè)1 只要私鑰未泄露,那么基于身份的加密算法可以為系統(tǒng)間各實(shí)體的通信提供安全通信信道[10],基于身份的簽名算法可以保證發(fā)送的信息具有不可抵賴性。
假設(shè)2 TCS、PKG 和TC 均具有足夠高的安全級(jí)別,TCS可以有效地保護(hù)已經(jīng)在云端存儲(chǔ)的交通信息數(shù)據(jù),而PKG 和TC 可合理分工,從而對(duì)車輛公私鑰與真實(shí)身份之間的聯(lián)系進(jìn)行保存,單一的機(jī)構(gòu)無(wú)法獲取完整聯(lián)系。
假設(shè)3 分布在道路兩邊的RSU 均配置邊緣計(jì)算設(shè)備,而車輛中也配備了定制的硬件設(shè)備,通過(guò)這些設(shè)備可大幅提高計(jì)算能力。
假設(shè)4 攻擊者無(wú)法在車聯(lián)網(wǎng)系統(tǒng)中控制超過(guò)半數(shù)的車輛[11]。
假設(shè)1 是為了確保交通信息數(shù)據(jù)的完整性、真實(shí)性和不可抵賴性。在車聯(lián)網(wǎng)中,完全的匿名是不被允許的,假設(shè)2 是車聯(lián)網(wǎng)系統(tǒng)匿名性要求和安全性要求的權(quán)衡。當(dāng)發(fā)生事故時(shí),執(zhí)法機(jī)構(gòu)有權(quán)從PKG 和TC 中調(diào)取相關(guān)車輛的信息,以便對(duì)其進(jìn)行追蹤,同時(shí)也能達(dá)到收集證據(jù)的目的。為實(shí)現(xiàn)邊緣計(jì)算框架的部署和隱私數(shù)據(jù)本地化處理,假設(shè)3 是必不可少的,若車輛網(wǎng)的算力越高,信息處理速度就越快,越能滿足智能交通實(shí)時(shí)性需求。由于本文所提系統(tǒng)基于區(qū)塊鏈技術(shù),一旦有人掌控超過(guò)全網(wǎng)一半的車輛,那么系統(tǒng)將無(wú)安全性可言。系統(tǒng)內(nèi)算力越高,代表著攻擊者付出的代價(jià)越大,一旦攻擊者的付出超過(guò)收益,攻擊就顯得毫無(wú)意義,車聯(lián)網(wǎng)系統(tǒng)也因而提升了自身安全級(jí)別。
系統(tǒng)通信模型如圖2 所示,在圖2 中存在兩種車輛,分別是普通車輛Vi和特殊車輛SVi。在V2V通信過(guò)程中,存在單播或多播兩種傳輸機(jī)制,并且只允許車輛參與。V2V 中傳輸?shù)男畔⑼ǔ0ㄋ俣?、方向和交通擁堵?shù)據(jù)等。在進(jìn)行目的性通信時(shí),某一車輛發(fā)出的信息只有特定車輛才能解密閱讀。為確保數(shù)據(jù)的可靠性,發(fā)送方需對(duì)信息進(jìn)行數(shù)字簽名,而接收方則需進(jìn)行相關(guān)驗(yàn)證工作。確認(rèn)數(shù)據(jù)是真實(shí)有效之后,接收車輛將及時(shí)地進(jìn)行數(shù)據(jù)分析,然后根據(jù)分析結(jié)果來(lái)輔助駕駛員行駛,為駕駛員的人身安全提供保障。在車聯(lián)網(wǎng)中,RSU作為一個(gè)固定點(diǎn)存在,只有當(dāng)車輛進(jìn)入某一RSU 的固定無(wú)線通信范圍內(nèi),才可以進(jìn)行V2R。由于RSU之間使用有線通信,所以不存在使用無(wú)線通信諸多限制。為保證特殊車輛更好地執(zhí)行任務(wù),只有特殊車輛主動(dòng)向普通車輛發(fā)出通信請(qǐng)求時(shí),普通車輛才可以與之通信,反之則無(wú)法通信。
圖2 系統(tǒng)通信模型Fig.2 System communication model
RSU 是一個(gè)固定的點(diǎn)且通信范圍有限,這限制了配備有邊緣計(jì)算設(shè)備的RSU的服務(wù)范圍。V2R卸載任務(wù)時(shí)數(shù)據(jù)傳輸速度慢以及邊緣計(jì)算設(shè)備中的計(jì)算任務(wù)需要排隊(duì)等候,均會(huì)使計(jì)算時(shí)延增加。車輛通常處于高速移動(dòng)狀態(tài),可能存在RSU 內(nèi)計(jì)算任務(wù)尚未完成,車輛就已經(jīng)駛離RSU 可通信范圍的狀況。
主動(dòng)式遠(yuǎn)程卸載計(jì)算任務(wù)可解決上述問(wèn)題,通過(guò)合理利用V2V、V2R 和R2R 通信便可實(shí)現(xiàn),具體可見(jiàn)圖3。在本文所述方案中,車輛可通過(guò)多跳V2V 方式主動(dòng)將計(jì)算任務(wù)卸載到某個(gè)遠(yuǎn)方RSU 內(nèi)部的邊緣計(jì)算設(shè)備中進(jìn)行計(jì)算,當(dāng)車輛駛?cè)朐揜SU 通信范圍內(nèi),就可以從RSU 中獲得計(jì)算好的數(shù)據(jù)。圖中的SV1和V1均是使用該方法進(jìn)行復(fù)雜計(jì)算任務(wù)的卸載,兩者的不同之處在于,SV1發(fā)出的卸載請(qǐng)求可以在任意特殊車輛和普通車輛中傳播,而V1發(fā)出的請(qǐng)求只能在普通車輛中傳播。為了能及時(shí)地在目標(biāo)RSU 通信范圍內(nèi)接收到數(shù)據(jù)結(jié)果,車輛需對(duì)多方面信息進(jìn)行評(píng)估,從而預(yù)測(cè)出目標(biāo)RSU 的位置。
圖3 主動(dòng)式遠(yuǎn)程卸載計(jì)算任務(wù)模型Fig.3 Active remote offloading computation task model
本文采用二叉樹(shù)結(jié)構(gòu),樹(shù)上的葉子節(jié)點(diǎn)值是該葉子節(jié)點(diǎn)所包含的全體子節(jié)點(diǎn)組合的總哈希值,根值則是數(shù)據(jù)區(qū)塊中全體交易的總哈希值。區(qū)塊體的作用則是進(jìn)行數(shù)據(jù)存儲(chǔ),數(shù)據(jù)區(qū)塊具體框架如圖4所示。
圖4 數(shù)據(jù)區(qū)塊結(jié)構(gòu)Fig.4 Structure of data block
本文在原有區(qū)塊鏈基礎(chǔ)上,加入了可信的云服務(wù)提供商,詳細(xì)的數(shù)據(jù)以密文或明文形式存儲(chǔ)在安全級(jí)別足夠高的云端存儲(chǔ)器中,而標(biāo)明元數(shù)據(jù)位置的索引列表存儲(chǔ)在區(qū)塊鏈網(wǎng)絡(luò)中。為了給特殊車輛提供更好的隱私服務(wù),與特殊車輛相關(guān)的交通信息的索引列表將存在由特殊車輛組成的私有鏈中。首先,特殊車輛存在于普通車輛構(gòu)成的聯(lián)盟鏈內(nèi);其次,在聯(lián)盟鏈基礎(chǔ)上,特殊車輛構(gòu)成了自身的私有鏈。這也是特殊車輛可以主動(dòng)和普通車輛進(jìn)行通信,而普通車輛無(wú)法主動(dòng)同特殊車輛通信的原因所在。
本文方案中使用的變量說(shuō)明如表1。
表1 變量說(shuō)明Tab.1 Variable description
在本文系統(tǒng)中,當(dāng)有Vi想要加入車聯(lián)網(wǎng)時(shí),需要分別從TC和PKG 獲得相應(yīng)的公私鑰對(duì),并以此作為類似于傳統(tǒng)網(wǎng)絡(luò)中的賬號(hào)和登錄密碼,普通車輛節(jié)點(diǎn)加入流程如圖5 所示。如果Vi未在TC 進(jìn)行登記,那么車輛擁有者需要先將IDi發(fā)送給TC,IDi包括用戶信息和車輛信息,然后TC 會(huì)遍歷B,如果IDi存在于B中,則駁回申請(qǐng)信息,車輛注冊(cè)失敗;如果不存在,則進(jìn)行下一步,TC 隨機(jī)生成xi(xi∈),通過(guò)H1(IDi,xi)可獲得將被發(fā)送給Vi并存儲(chǔ)在L中。如果Vi已經(jīng)在TC登記過(guò),那么車輛擁有者可將發(fā)送給PKG,得到后,PKG 首先遍歷L,若L中存在,則PKG 生成并將其發(fā)送給Vi,然后被存儲(chǔ)在S中,車輛注冊(cè)成功,流程結(jié)束;若L中不存在,則駁回申請(qǐng)信息,車輛注冊(cè)失敗。需注意的是,在本文系統(tǒng)中,對(duì)于普通車輛,一輛車只能綁定一個(gè)用戶,但是同一用戶可以綁定多個(gè)車輛,信譽(yù)分只綁定于用戶的個(gè)人身份信息;對(duì)于特殊車輛,一輛車可以綁定多個(gè)用戶,而用戶必須是擁有特殊編號(hào)的在職人員,SVi加入流程如圖5所示。
圖5 普通車輛節(jié)點(diǎn)加入流程Fig.5 Flowchart of adding ordinary vehicle nodes
3.2.1 簽密過(guò)程
本方案中基于身份的多PKG簽密過(guò)程如下:
設(shè)置1 定義兩個(gè)素?cái)?shù)階均為p的循環(huán)群G1和G2,g為G1的生成元,映射e:G1×G2→G。令H1():{0,1}?→G1,H2():G2→{0,1}t,H3():{0,1}?→為3 個(gè)密碼學(xué)哈希函數(shù),t表示要簽名和加密的消息的位數(shù)。選取基于密鑰k的加密函數(shù)Ek()和解密函數(shù)Dk(),k由計(jì)算獲得,并非固定數(shù)值。設(shè)Ring=(ID1,ID2,…,IDn)表示環(huán)成員的集合,c表示在集合中隨機(jī)均勻選擇的哈希值。系統(tǒng)公共參數(shù)為{G1,G2,p,g,e,t,H1,H2,H3,Ek,Dk}。
設(shè)置2 每個(gè)PKGi(i=1,2,…,n)可以隨機(jī)選擇si∈作為私鑰并計(jì)算出相應(yīng)公鑰Pi=sig。PKGi的公鑰Pi將會(huì)公布出去,而對(duì)應(yīng)的私鑰si則會(huì)被秘密保存。
3.2.2 驗(yàn)證過(guò)程
1)簽名算法的正確性。
綜上可知,RingVerify()以壓倒性的概率輸出“1”。因此該簽名方案滿足正確性。
2)加密算法的正確性。
要想驗(yàn)證V2通過(guò)解簽名獲取的信息是否等于原始信息,只需要計(jì)算式(2)是否成立:
機(jī)密性 假設(shè)對(duì)手A可以通過(guò)有效的概率多項(xiàng)式時(shí)間算法來(lái)對(duì)σ=(c,U1,U2,Ver)進(jìn)行解簽密。這意味著給A三個(gè)值U1=xg,P2=s2g,=bg(需注意,對(duì)于A來(lái)說(shuō),x,s2,b均屬于未知數(shù)),A可以根據(jù)有效的概率多項(xiàng)式時(shí)間算法得出δ的值,推導(dǎo)過(guò)程如式(3):
顯然,這與決策雙線性Diffie-Hellman 問(wèn)題(Decisional Bilinear Diffie-Hellman Problem,DBDHP)相反。
不可偽造性 假設(shè)對(duì)手A可以通過(guò)有效的概率多項(xiàng)式時(shí)間算法生成密文σ?=進(jìn)行解密。這意味著當(dāng)A知道P1=s1g,=ag時(shí)(s1,a未知),A可以根據(jù)有效的概率多項(xiàng)式時(shí)間算法得出V1的私鑰,推導(dǎo)過(guò)程如式(4):
顯然,這與計(jì)算雙線性Diffie-Hellman 問(wèn)題(Computational Bilinear Diffie-Hellman Problem,CBDHP)相反。
如圖6 所示,一個(gè)新的交易產(chǎn)生之后會(huì)向全網(wǎng)進(jìn)行廣播;接著,每個(gè)節(jié)點(diǎn)都會(huì)將收到的交易信息納入進(jìn)一個(gè)區(qū)塊中,并嘗試在自己的區(qū)塊中找到一個(gè)具有難度的隨機(jī)數(shù);然后,如果某一節(jié)點(diǎn)找到符合條件的隨機(jī)數(shù)時(shí),它會(huì)立即公布出這個(gè)隨機(jī)數(shù),以便其他節(jié)點(diǎn)進(jìn)行驗(yàn)證;最后,當(dāng)該區(qū)塊中的交易被驗(yàn)證是有效的且未出現(xiàn)過(guò),區(qū)塊將被添加到最長(zhǎng)有效合法鏈的末端,其他節(jié)點(diǎn)繼續(xù)沿著該區(qū)塊尋找工作量證明。
圖6 數(shù)據(jù)區(qū)塊的生成過(guò)程Fig.6 Process of data block generation
與比特幣網(wǎng)絡(luò)采用的工作量證明(Proof of Work,PoW)共識(shí)機(jī)制相比,實(shí)用拜占庭容錯(cuò)(Practical Byzantine Fault Tolerance,PBFT)算法的共識(shí)時(shí)延低、效率高,可滿足實(shí)時(shí)處理和大量通信的需求。此外,PBFT 算法最大允許f=(n-1)/3 的異常節(jié)點(diǎn)的存在而不影響共識(shí)結(jié)果[12],η為全網(wǎng)總節(jié)點(diǎn)數(shù)。本文基于比特幣網(wǎng)絡(luò)的大體框架,采用PBFT算法達(dá)成共識(shí),詳細(xì)的區(qū)塊生成過(guò)程如下。
3.3.1 信息收集階段
預(yù)選節(jié)點(diǎn)(PreSelected Node,PSN)對(duì)全網(wǎng)進(jìn)行監(jiān)控,將車輛間生成的交通信息按照時(shí)間順序依次存放在本地記錄池中,當(dāng)記錄池中存儲(chǔ)的信息足夠裝滿整個(gè)區(qū)塊時(shí),系統(tǒng)將數(shù)據(jù)打包成區(qū)塊。
3.3.2 構(gòu)建區(qū)塊階段
為了更大限度地利用區(qū)塊鏈網(wǎng)絡(luò),這里將相關(guān)信息的摘要存儲(chǔ)在區(qū)塊體中,完整的信息將存儲(chǔ)在安全級(jí)別足夠高的云存儲(chǔ)器中。為了確保信息的可追溯性和防篡改性,區(qū)塊頭中包含有前一區(qū)塊的哈希值以及時(shí)間戳,而區(qū)塊本身的哈希值則是由組成區(qū)塊的全體數(shù)據(jù)求得。區(qū)塊構(gòu)建完成,進(jìn)行全網(wǎng)廣播,等待共識(shí)流程的實(shí)現(xiàn)。
3.3.3 實(shí)現(xiàn)共識(shí)流程階段
通過(guò)基于動(dòng)態(tài)分層和信譽(yù)值評(píng)估的實(shí)用拜占庭容錯(cuò)機(jī)制(Dynamic-layering and Reputation-evaluation Practical Byzantine Fault Tolerant mechanism,DRPBFT),改進(jìn)了共識(shí)系統(tǒng)中的高延遲問(wèn)題,有效地消除了惡意節(jié)點(diǎn),提高了共識(shí)模型的可信度。接下來(lái)對(duì)DRPBFT進(jìn)行詳細(xì)描述。
DRPBFT 中的信譽(yù)評(píng)估算法主要由獎(jiǎng)勵(lì)機(jī)制和懲罰機(jī)制兩部分所組成。信譽(yù)值主要用來(lái)作為優(yōu)先響應(yīng)車輛信息請(qǐng)求的依據(jù)[13]。有三種行為會(huì)得到獎(jiǎng)勵(lì):Vi誠(chéng)實(shí)主動(dòng)地廣播變更消息、Vi可通過(guò)舉報(bào)傳播虛假信息的車輛來(lái)獲得獎(jiǎng)勵(lì)和Vi積極主動(dòng)地貢獻(xiàn)閑置算力。受到懲罰的行為有兩種:Vi廣播虛假消息和Vi濫用舉報(bào)信息來(lái)誹謗其他車輛。具體的信譽(yù)評(píng)估算法如算法5。
算法5 ReputationEvaluationAlgorithm()。
有以下幾個(gè)因素影響?yīng)勝p機(jī)制和懲罰機(jī)制:
1)T表示真實(shí)消息的層級(jí)。T=1,交通事故信息;T=2,駕駛信息,例如車輛駕駛速度、當(dāng)前位置;T=3,道路狀況,包括道路擁堵、損壞。
2)F表示虛假信息的等級(jí)。F=1,傳播的虛假信息造成交通事故;F=2,傳播的虛假信息造成車輛擁堵;F=3,傳播的虛假信息未造成不良影響。
3)K為傳遞消息的車輛與接收信息的車輛之間的距離。
4)Dv表示接收者附近車輛密度。
5)N表示車輛提供閑置算力的次數(shù)。
在公式中設(shè)置獎(jiǎng)勵(lì)系數(shù)α和懲罰系數(shù)β,以實(shí)現(xiàn)如式(5)~(7)所示的三種獎(jiǎng)勵(lì)機(jī)制和式(8)所示的懲罰機(jī)制:
當(dāng)Vi向全網(wǎng)廣播交通信息時(shí),Vi可先獲得上一次廣播交通信息到本次廣播期間主動(dòng)提供閑置算力的獎(jiǎng)勵(lì),即當(dāng)前信譽(yù)值加上R3(K,Dv,N),然后N從0 開(kāi)始重新計(jì)數(shù)。若車輛只提供閑置算力而不廣播交通信息,則經(jīng)過(guò)規(guī)定時(shí)長(zhǎng)后,自動(dòng)獲得加分。此外,如果沒(méi)有車輛舉報(bào)Vi,則Vi的信譽(yù)值可再加上R1(T,K,Dv)。相反,當(dāng)有人質(zhì)疑并舉報(bào)Vi發(fā)送的交通信息時(shí),TC 有權(quán)利對(duì)質(zhì)疑進(jìn)行仲裁,若質(zhì)疑屬實(shí),質(zhì)疑者可在現(xiàn)有信譽(yù)值基礎(chǔ)上加上R2(F,K,Dv),發(fā)送虛假信息的Vi將接受懲罰。若質(zhì)疑者是惡意誹謗Vi,質(zhì)疑者接受懲罰。
注意,當(dāng)消息接收者為特殊車輛時(shí),傳播虛假信息的車輛將在原有懲罰機(jī)制上扣除更多的分。相應(yīng)的,若積極主動(dòng)地提供特殊車輛所需服務(wù)也會(huì)給予更多的加分,這可以通過(guò)調(diào)整獎(jiǎng)勵(lì)系數(shù)α和懲罰系數(shù)β實(shí)現(xiàn)。輸出的會(huì)及時(shí)進(jìn)行全網(wǎng)公布,假設(shè)<0,TC 有權(quán)將Vi所屬用戶ID放入列表B中,并撤銷所有由該ID 產(chǎn)生的公鑰。用戶若想重新加入到該網(wǎng)絡(luò),必須嚴(yán)格按照法律規(guī)章流程辦事,只有達(dá)到規(guī)定的條件才有機(jī)會(huì)從名單B中出來(lái)。
根據(jù)車輛節(jié)點(diǎn)的信譽(yù)值分成3 個(gè)層級(jí),不同級(jí)別的節(jié)點(diǎn)有不同的權(quán)限:1級(jí)節(jié)點(diǎn)優(yōu)先擔(dān)任代理節(jié)點(diǎn);2級(jí)節(jié)點(diǎn)在1級(jí)節(jié)點(diǎn)不存在時(shí)有機(jī)會(huì)擔(dān)任代理節(jié)點(diǎn),但無(wú)優(yōu)先權(quán);3 級(jí)節(jié)點(diǎn)無(wú)權(quán)擔(dān)任代理節(jié)點(diǎn),但是能夠擔(dān)任共識(shí)節(jié)點(diǎn)。具體節(jié)點(diǎn)權(quán)限分類如表2所示。
表2 節(jié)點(diǎn)權(quán)限分類Tab.2 Node right classification
具體共識(shí)流程如圖7所示。
圖7 DRPBFT共識(shí)過(guò)程Fig.7 Consensus process of DRPBFT
Request 階段Vi向第一層代理發(fā)送,請(qǐng)求聯(lián)盟鏈執(zhí)行請(qǐng)求。為了避免網(wǎng)絡(luò)資源的浪費(fèi),使用組播的方法向各層中的其他節(jié)點(diǎn)傳遞消息。Vi向?個(gè)代表節(jié)點(diǎn)發(fā)送消息。如果區(qū)塊鏈系統(tǒng)的共識(shí)節(jié)點(diǎn)總數(shù)小于或等于?,則不需要分層搜索代理節(jié)點(diǎn)。在這種情況下,PBFT可以直接用于區(qū)塊鏈系統(tǒng)。
Pre-prepare階段 在第1層中,每個(gè)代理節(jié)點(diǎn)代表一個(gè)區(qū)域。每個(gè)Area中有α個(gè)節(jié)點(diǎn),并且可以在Area中執(zhí)行PBFT 算法的Prepare 階段和Commit 階段。代理節(jié)點(diǎn)會(huì)向除Area外的所有節(jié)點(diǎn)發(fā)送消息。當(dāng)Sn接收到該消息時(shí),要確認(rèn)E和Pn是否與其本地?cái)?shù)據(jù)一致、Vi的Request 消息與Prepared 消息是否一致、M的散列數(shù)據(jù)與H是否相同、Prepare消息的Vc是否在指定的區(qū)間(h,H)內(nèi)。
Commit 階段Sn向其他層節(jié)點(diǎn)發(fā)送E,Vc,H,Sn,Pn。每層節(jié)點(diǎn)接受Commit 消息的條件是H一致、E與節(jié)點(diǎn)當(dāng)前的E相同、Pn與本地一致。
Reply階段 節(jié)點(diǎn)將內(nèi)部投票結(jié)果返回給代理節(jié)點(diǎn),代理節(jié)點(diǎn)將該區(qū)域的節(jié)點(diǎn)共識(shí)結(jié)果發(fā)送給Vi。代理節(jié)點(diǎn)必須記錄要返回的層的內(nèi)部結(jié)果。Vi可以根據(jù)接收到的Reply 消息總數(shù)是否大于惡意節(jié)點(diǎn)數(shù)f+1來(lái)確定是否接收到共識(shí)結(jié)果。
根據(jù)不同代理節(jié)點(diǎn)代表的不同層級(jí),Vi和整個(gè)區(qū)塊鏈都能以更高的信譽(yù)度獲得共識(shí)結(jié)果,從而獲得下一輪共識(shí)。至此,共識(shí)流程結(jié)束,全網(wǎng)達(dá)成一致共識(shí),區(qū)塊生成進(jìn)入下一階段。
3.3.4 區(qū)塊生成階段
當(dāng)構(gòu)成的區(qū)塊經(jīng)過(guò)共識(shí)階段達(dá)成共識(shí)后,PSN 對(duì)全網(wǎng)進(jìn)行廣播并使用哈希指針將新生成的區(qū)塊鏈接到區(qū)塊鏈的末尾,該區(qū)塊成為區(qū)塊鏈網(wǎng)絡(luò)的最后1個(gè)區(qū)塊。
1)去中心化。
本文方案采用基于區(qū)塊鏈的分布式存儲(chǔ)方案。該方案并未完全否決受信任的第三方數(shù)據(jù)庫(kù)的作用,完整交通信息的明文或密文存儲(chǔ)在第三方數(shù)據(jù)庫(kù)中,其摘要信息存儲(chǔ)在區(qū)塊鏈網(wǎng)絡(luò)中。區(qū)塊鏈網(wǎng)絡(luò)是基于P2P 網(wǎng)絡(luò)的基礎(chǔ)建立的,這意味著存儲(chǔ)其中的摘要信息可以被復(fù)制,然后分布到全網(wǎng)的各個(gè)節(jié)點(diǎn)。上述措施既降低了系統(tǒng)對(duì)可信數(shù)據(jù)庫(kù)的依賴性,同時(shí)也避免了類似于傳統(tǒng)數(shù)據(jù)庫(kù)單點(diǎn)故障的發(fā)生。
2)有條件的匿名。
Vi使用公鑰作為假名在系統(tǒng)中進(jìn)行通信,其他用戶無(wú)法從中推導(dǎo)出Vi的信息。為了有效地權(quán)衡系統(tǒng)的隱私性和安全性,用戶真實(shí)身份同公鑰的聯(lián)系以高安全級(jí)別存儲(chǔ)在中心管理員(Central Administrator,CA)中。CA可以追蹤用戶發(fā)布的信息,卻無(wú)法破解經(jīng)過(guò)加密的信息,因?yàn)橛脩舻乃借€是由PKG 生成的。當(dāng)發(fā)生爭(zhēng)議時(shí),同時(shí)從CA 和PKG 中調(diào)取用戶的公私鑰信息。一輛車只能擁有一對(duì)公私鑰,如有需要,用戶可主動(dòng)在CA更新公鑰,然后在最近的PKG生成私鑰。
3)機(jī)密性和不可偽造性。
車輛通信階段,車輛在廣播交通信息前需要對(duì)其進(jìn)行數(shù)字簽名,簽密可以在邏輯步驟中執(zhí)行數(shù)字簽名和公鑰加密[14],與先簽名再加密的密碼算法相比,其計(jì)算成本和通信開(kāi)銷更低。通過(guò)檢驗(yàn)數(shù)字簽名的有效性,可以判斷信息來(lái)源于何處,從而保證信息的不可偽造性。通過(guò)使用接收方的公鑰進(jìn)行加密來(lái)實(shí)現(xiàn)信息的機(jī)密性。
4)完整性和不可篡改性。
構(gòu)建區(qū)塊時(shí)需將前一塊的哈希值包含在所構(gòu)建的區(qū)塊中,然后哈希指針將這些區(qū)塊相連[15]。如果其中一個(gè)塊被修改,則此后的所有塊將被重新計(jì)算。因此,單個(gè)節(jié)點(diǎn)對(duì)數(shù)據(jù)庫(kù)的修改無(wú)效。哈希算法保證了數(shù)據(jù)的完整性,通過(guò)將數(shù)據(jù)庫(kù)中讀取的數(shù)據(jù)用相同的哈希算法進(jìn)行摘要處理,再與區(qū)塊鏈上的數(shù)據(jù)摘要進(jìn)行對(duì)比從而確定數(shù)據(jù)是否完整。
本節(jié)對(duì)DRPBFT 進(jìn)行仿真實(shí)驗(yàn)。對(duì)于軟件環(huán)境,在Windows 10系統(tǒng)中使用Python和Go Lang編程語(yǔ)言,虛擬機(jī)系統(tǒng)采用Ubuntu16.04,仿真環(huán)境采用Hyperledger Fabric V1.1,并使用Docker運(yùn)行Hyperledger Fabric。
由于仿真環(huán)境中計(jì)算量有限,隨機(jī)選取40 個(gè)車聯(lián)網(wǎng)網(wǎng)關(guān)節(jié)點(diǎn)進(jìn)行仿真實(shí)驗(yàn)。首先,初始化車輛編號(hào)、任務(wù)編號(hào)和資源類型。隨機(jī)生成一個(gè)開(kāi)始時(shí)間、結(jié)束時(shí)間和任務(wù),隨機(jī)生成每輛車和每項(xiàng)任務(wù)的資源需求,各資源需求的生成曲線服從離散中心二項(xiàng)分布。誤差節(jié)點(diǎn)是隨機(jī)的,但不能超過(guò)13 個(gè)。因?yàn)闈M足3f+1 ≤n,其中n是節(jié)點(diǎn)總數(shù),f是惡意節(jié)點(diǎn)的數(shù)量。每秒事務(wù)數(shù)(Transactions Per Second,TPS)為:
TPS=TRA/ξTime
其中:TRA是事務(wù)數(shù),ξTime是塊時(shí)間。
由圖8可以得出,隨著時(shí)間的增加,PBFT和DRPBFT都獲得了更高的事務(wù)吞吐量;然而隨著時(shí)間的增加,PBFT 的TPS在范圍(97,98)內(nèi)保持相對(duì)穩(wěn)定,DRPBFT 的TPS 持續(xù)增長(zhǎng)??梢宰C明在DRPBFT 中加入的激勵(lì)機(jī)制是有效的,因?yàn)楠?jiǎng)勵(lì)機(jī)制會(huì)對(duì)貢獻(xiàn)了資源的車輛進(jìn)行利潤(rùn)獎(jiǎng)勵(lì),懲罰機(jī)制會(huì)對(duì)惡意節(jié)點(diǎn)進(jìn)行懲罰,保證了車輛節(jié)點(diǎn)能積極地參與共識(shí)過(guò)程,可以有效地消除惡意節(jié)點(diǎn),降低惡意節(jié)點(diǎn)參與一致性的概率,有效地提高了系統(tǒng)的吞吐量。
圖8 PBFT與DRPBFT的TPS比較Fig.8 TPS comparison between PBFT and DRPBFT
從圖9可以看出,隨著節(jié)點(diǎn)數(shù)量的增加,PBFT 和DRPBFT的時(shí)延都有所增加,但是DRPBFT 的時(shí)延在6 s 內(nèi),而PBFT 的時(shí)延在9 s內(nèi),DRPBFT 比PBFT 具有更低的延遲。DRPBFT 可以用更寬松的延遲約束在一個(gè)塊中處理更多事務(wù),因?yàn)榧尤肓朔旨?jí)機(jī)制,能夠提高共識(shí)的效率,有效降低時(shí)延。
圖9 PBFT與DRPBFT的時(shí)延比較Fig.9 Time delay comparison between PBFT and DRPBFT
為了解決車聯(lián)網(wǎng)通信過(guò)程中數(shù)據(jù)安全和高時(shí)延的問(wèn)題,本文提出了一種基于區(qū)塊鏈與云-邊緣計(jì)算混合架構(gòu)的車聯(lián)網(wǎng)信息的安全共享與存儲(chǔ)方案。該方案利用聯(lián)盟鏈-私有鏈的去中心化實(shí)現(xiàn)了通信數(shù)據(jù)的不可篡改性、有條件的匿名性和不可偽造性,并提出了DRPBFT,提高了系統(tǒng)吞吐量,有效降低了時(shí)延,在節(jié)點(diǎn)較多的情況下,車聯(lián)網(wǎng)系統(tǒng)能夠獲得更好的共識(shí)性能。通信過(guò)程使用基于身份的多PKG 簽密算法和基于離散中心二項(xiàng)分布的環(huán)簽名方案實(shí)現(xiàn)了通信數(shù)據(jù)的安全性和完整性,保障了用戶身份的匿名性。該方案通過(guò)邊緣計(jì)算技術(shù)處理私人敏感數(shù)據(jù),并與云計(jì)算技術(shù)相結(jié)合,確保車聯(lián)網(wǎng)系統(tǒng)的實(shí)時(shí)、高效。隨著吞吐量和時(shí)延性能的提升,區(qū)塊鏈的計(jì)算與存儲(chǔ)問(wèn)題也隨之出現(xiàn),這將是我們下一步主要的研究方向。