任條娟 鄭佳瑩 陳友榮 陳秋霞 劉半藤
(1.常州大學,常州 213164;2.浙江樹人大學,杭州 310015)
主題詞:區塊鏈 車聯網 共識機制 安全通信模型
車聯網是智能網聯車輛的核心技術之一。在車聯網中,車輛節點定期向周圍的節點廣播其當前位置、速度和加速度等信息,但這種方式對車輛數據安全構成潛在威脅。現有的車聯網架構都是中心化的,一旦中心化實體被攻擊,將會帶來嚴重的數據安全風險,造成身份、位置等隱私泄露。且隨著物聯網技術的快速發展,車聯網節點數據量劇增,中心實體負載過大,面臨著單點故障的風險。同時,車聯網的高移動性、易變性等特質給車輛通信系統帶來了巨大挑戰。
區塊鏈技術是一種完全分布式的公共數據庫或分類賬,具有去中心化、透明性、防篡改等特點,因此國內外學者提出將區塊鏈技術引入車聯網。如:文獻[1]根據數據類型設計了不同功能的獨立區塊鏈,提出了車輛區塊鏈數據向外傳輸的模型。文獻[2]提出了基于許可的區塊鏈模型,管理所收集的車輛相關數據。文獻[3]增加獎勵機制,并提出一種半分布式對等計算(Peer to Peer,P2P)網絡模型。文獻[4]提出了一種基于區塊鏈的安全數據共享模型,鼓勵車輛廣播公告消息和生成區塊。部分學者以聯盟鏈為基礎,將車輛的存儲和計算轉移至路側單元(Road Side Unit,RSU)。文獻[5]開發了一種P2P 數據共享系統,公開審計和存儲共享數據及其共享記錄。文獻[6]提出了一種基于聯盟區塊鏈的數據安全共享和存儲系統。文獻[7]實現了開放環境下自動駕駛云控服務及相關數據的安全共享。部分學者將區塊鏈網絡劃分區域。文獻[8]將車聯網劃分為若干個區域,每個區域設定一條公有鏈,提出了一種區塊鏈分支算法。文獻[9]、文獻[10]以城市為單位,將車聯網設計為一個聯盟鏈,實現各城市車聯網聯盟鏈之間的數據交換。
本文針對存儲維護困難、通信效率低、實時處理困難等問題,提出一種基于區塊鏈的車聯網節點數據安全 通 信 模 型(Date Security Communication Model,DSCM),包括區塊鏈設計、節點身份認證、改進動態實用拜占庭容錯共識算法、車輛安全通信方法等。根據數據的緊急程度,將數據分成普通數據和緊急數據。考慮到車輛節點的運動情況,提出一種改進實用拜占庭容錯共識算法。
本文以車聯網服務為基礎,借助區塊鏈的思想設計了安全通信模型,包括區塊鏈設計、節點身份認證、改進動態實用拜占庭容錯共識算法和車輛安全通信方法。
如圖1 所示,車聯網區塊鏈由車聯網聯盟鏈和1 個公鏈組成。考慮通信基站的部署,將整個車聯網劃分成蜂窩式區域,每個區域設定1 條區塊鏈,這些區塊鏈共同組成車聯網聯盟鏈,其中車聯網聯盟鏈由各區域中所有的通信基站和車輛節點等車聯網節點組成。同時,所有通信基站(5G)和路側單元等車聯網的邊緣側設備統稱為邊緣節點。車聯網中所有邊緣節點作為共識節點組成車聯網公鏈,實現各區域間緊急數據的共享。

圖1 車聯網數據通信原理
本文將車聯網數據分為普通數據和緊急數據。普通數據包含車輛的基本安全數據,在所在區域內的車輛之間傳輸。緊急數據包含交通事故、道路擁堵狀態等特殊信息,在區域之間傳輸,通過車路通信和云計算的分布式廣播,實現全范圍內的消息共享。但是仍需要解決以下問題:一是如何設計普通數據和緊急數據的區塊結構、數據存儲結構、節點身份認證方式等,并實現車輛數據真實性和完整性的驗證;二是如何有效地實現車輛數據的共識,剔除惡意節點,提高共識效率,縮短共識時間;三是如何實現數據的安全通信。
2.1.1 區塊設計
邊緣節點分布式記錄、存儲路況信息,每個邊緣節點都會存儲聯盟鏈上所有的數據,即使網絡中某些節點遭受攻擊,也不會對數據造成任何威脅,從本質上解決了中心化模式下數據存儲不安全的問題。
圖2所示為主鏈中的區塊結構,區塊主要分為區塊頭和區塊體2個部分。區塊頭中:時間戳表示區塊產生的時間;有效時間表示該區塊的有效期限;當前區塊的哈希值表示整個區塊數據的哈希值;父區塊哈希值表示上一個區塊的哈希值;默克爾樹根哈希值表示區塊體內存儲的所有車輛交易信息的根哈希值。區塊體由交易數據塊組成,交易數據塊由多個數據塊(例如圖中D1~D4)構成,計算每個數據塊哈希值(例如圖中H1~H4、H12、H34),最終計算整個交易區塊體的默克爾樹根(H1234)。每個數據塊中可存儲10 條車輛數據條目(Item),每個區塊的大小不超過1 MB。這種區塊鏈的數據結構使得鏈上每個區塊的信息都可以由前驅節點追溯,并影響后繼節點的信息構成,由密碼學方法保證了惡意攻擊無法篡改信息,確保數據的安全性和完整性。

圖2 區塊結構
2.1.2 數據存儲結構
如圖3所示,為了保證記錄內容可信、未篡改,模型記錄所有數據的哈希值并采用分層結構存儲。其中,數據塊(Data Block)由1個數據頭信息和多個數據條目組成。數據頭信息包含時間戳和數據塊的哈希值,可減少校驗的計算成本,有利于數據塊在區塊鏈網絡中傳播。每一個數據條目中都包含了時間戳t、數據所有者公鑰Pk、元數據、數據哈希(Hash)。其中,元數據為普通數據或緊急數據:普通數據包括車輛的位置、速度、方向、制動狀態、有效時間等車輛自身基本安全信息;緊急數據包括交通事故、道路擁堵狀態、實時路況、有效時間等特殊信息。每條數據的大小不超過1 KB。根據前面3個信息,計算和存儲本條數據的哈希值,方便其他節點的哈希校驗,從而加快節點對區塊的校驗速度,減少搜索空間。

圖3 數據存儲結構
2.1.3 節點數據更新
由于區塊鏈具有無限冗余的特性,每個節點都備份了區塊鏈網絡的所有信息,消耗大量功率,這在車聯網的網絡環境下難以運行和維護。且車輛通信期間會生成大量數據,需要大型數據服務器長時間管理和存儲數據。因此,根據車聯網的實時性和移動性,在每個區塊鏈節點上,都只備份當前區域內區塊鏈網絡的數據。當車輛節點從一個區域移動到另一個區域時,刪除在原有區域的區塊鏈信息,并更新下載當前區域網絡的區塊鏈信息和數據。車輛節點存儲量達到閾值后,則從頭開始判斷區塊的有效期。如圖4所示,如果區塊鏈中有區塊過期,則刪除整個區;如果區塊鏈中區塊未過期而內存不足,為保護區塊的完整性和真實性,先刪除該區塊的數據,只保留區塊的哈希值。

圖4 節點數據更新
2.1.4 數據包格式
車輛發送的數據包含數據所有者公鑰Q、元數據m、數字簽名S、數據哈希值h(m)(SHA256)、時間戳t。如表1所示,應發送的數據包為Msig{Q|S|t|m|h(m)}。

表1 數據格式
用戶的身份驗證和隱私是車聯網中的2 個重要問題,本文采用一種基于云服務器和區塊鏈的節點身份認證方案。如圖5 所示,車聯網節點(車輛節點和邊緣節點)在啟動加入網絡前,發送注冊請求給負責證書簽發的認證中心(Certificate Authority,CA)。云服務器負責存儲和管理節點的出廠信息和真實身份,方便節點注冊時進行身份驗證,并管理CA 頒發的節點假名。當節點在具有真實身份的系統中注冊后,可獲得由CA 頒發的包括假名、一對公私鑰和2 個哈希值的證書。在CA 為節點頒發的證書中,隱藏了節點的真實身份,可以保護節點的隱私,并可根據假名+公鑰的哈希值和真名+證書的哈希值追蹤惡意節點。

圖5 節點身份認證
車輛節點可從一個區域快速移動到另一個區域,為移動節點。新加入網絡的節點稱為新生節點。考慮到車輛的移動性,通過隨機組成的隨時間動態變化的驗證組成員,快速驗證新生節點和移動節點的證書。其中,驗證組成員由所有區域內隨機挑選的數量為M的邊緣節點和數量為N的移動節點組成。其中,已經入選成為驗證組成員的節點在下次隨機組合過程中將不會被考慮,直到所有可能的組合都遍歷過。
在區塊鏈網絡中,車聯網節點會在其通信列表中保存一定時間內通信過的節點信息,該列表為信任列表。若列表中的節點信息超出時間范圍,則會被刪除。信任列表可在邊緣節點之間和邊緣節點與車輛節點之間更新。當車輛節點移動到另一個區域時,則該節點當前所在區域內的區域代表節點向前一個區域及其周圍區域(不包括當前區域)發送驗證請求。其中,驗證組中只要在1個邊緣節點或n個車輛節點的可通信列表中可查詢到該車輛節點信息,即認為通過該區域的驗證。若該車輛節點通過跨區之前所在區域的驗證,且在周圍區域(不包括當前區域和前一個區域)中未能通過,則表明該車輛節點具有唯一性,即認為該車輛節點的身份驗證成功,可以參與數據通信。若未能滿足上述情況,則該車輛節點參與數據通信的權利被取消,一段時間后重復上述驗證過程,直到完成該車輛節點的身份驗證。車輛節點第一次加入網絡時,該區域的區域代表節點向其他區域的驗證組發送驗證請求,若在各個區域中都未通過驗證,則證明該車輛節點的唯一性,即認為該車輛節點的身份驗證成功,否則不能參與數據的通信。
總之,通過云服務器的身份認證和節點間的身份認證,才能允許車聯網節點進行有效的數據通信,從而減少傳統認證方案中對CA 的依賴,有效檢測和防止惡意節點加入,并保護節點的身份隱私。
實用拜占庭容錯(Practical Byzantine Fault Tolerance,PBFT)算法提出的一致性協議、視圖切換協議和檢查點協議,可實現數據更新和容錯恢復,使區塊在全網達成一致。相比工作量證明(Proof of work,PoW)機制,該機制不僅在效率上能滿足交易短時間內響應的需求,還解決了每個節點的歷史消息存儲問題,且當惡意節點入侵時可容錯恢復。但是,由于車聯網中節點可快速移動且實時產生較多的數據,需要快速達到共識。因此,在PBFT 共識機制的基礎上,提出由區域內部共識機制與多區域共識機制組成的動態區域共識機制。
區域內部共識機制在分區策略的基礎上,在邊緣節點中隨機確定區域代表節點,并在區域代表節點中選出主節點。主節點的選舉方法是為p=v·f(R),其中p為主節點編號,v為視圖編號(當前區塊數量),R為區域內邊緣節點的總數量,f()為取余函數。其他區域代表節點作為副本節點。其中,若主節點存在惡意行為,則在副本節點中重新挑選主節點。根據主節點,區域內部共識機制采用PBFT原有的一致性協議完成區塊共識。
多區域共識機制同樣依賴于前面各項機制。但考慮到在多區域共識機制下,參與區塊共識的區域代表節點數量遠超出區域內部共識機制的節點數量,為提高共識機制的效率,縮短數據更新時間,簡化了一致性協議和視圖切換協議。如圖6 所示,在簡化一致性協議中,各區域的主節點組成主節點群,發送預準備消息到其他區域代表節點,區域代表節點接收并處理預準備消息,向主節點群發送認可消息。若主節點群收到的認可消息數量超過f2(f2為區域代表節點數量的1/3),則統一發送認可消息到其他區域代表節點進行驗證。若區域代表節點驗證通過,則將驗證消息發送給主節點群。若主節點群收到的驗證成功消息數量超過f2,則共識達成,并將區塊寫入車聯網公鏈。而簡化視圖切換協議主要針對當主節點為惡意節點時,選取副本節點的其中一個節點取代當前主節點,繼續完成當前共識。該方法不僅可避免惡意節點成為主節點構建區塊而導致交易延遲的風險,而且區塊構建效率滿足車聯網的需求。

圖6 簡化一致性協議
考慮車聯網數據中存在普通數據和緊急數據,提出不同數據的安全通信方法。車與車之間交換車輛自身的常規數據屬于普通消息,主要通過本區域的車車通信實現;當出現緊急數據時,需要將這些數據廣播給其他區域的車輛,則需要通過車路通信實現,即邊緣節點可直接將緊急數據廣播給附近的車輛節點,同時將緊急數據發送給云服務器,云服務器統籌并通過大數據查找其他感興趣區域內的邊緣節點,邊緣節點再將緊急數據發送給其所在區域內附近的車輛節點[11]。數據安全通信的流程如圖7所示。
與傳統的車聯網通信方案中的安全和隱私保護不同,車聯網聯盟區塊鏈技術可確保數據存儲和共享期間的安全并實現隱私保護。聯盟區塊鏈可確保數據可追溯性,智能合約的自動執行可保護數據安全共享。車聯網聯盟鏈的分布式特征可抵御集中式數據存儲帶來的數據安全風險。本文采用對照分析的方法評估基于區塊鏈的車聯網節點數據安全通信模型。如表2 所示為通信模型比較結果,與現有研究成果中的其他解決方案的對比,DSCM 模型基于聯盟鏈和改進PBFT,具有區域劃分、數據分類、數據更新等特點,專為車聯網通信問題設計。現存車聯網通信安全問題及相應解決方案如表3 所示,從安全隱私、效率、數據管理、用戶參與度等角度,分析了目前車聯網安全通信存在的問題,并介紹了DSCM模型中相應的解決方案及優勢,從而解決了隱私泄露、數據篡改、內存冗余、用戶參與度低等問題。

圖7 數據安全通信的流程

表2 通信模型比較
本文借助區塊鏈技術,解決了現有的車聯網架構中心實體負載過大和數據安全風險高等問題。首先提出了基于區塊鏈的車聯網節點數據安全通信模型(DSCM),根據車聯網的實時性和移動性設計普通數據和緊急數據的區塊結構,采用數字簽名方法驗證數據和區塊的完整性和真實性。其次,采用一種基于云服務器和驗證組的節點身份認證方案,解決用戶的身份驗證和隱私問題。接著,在PBFT 共識機制的基礎上,提出動態實用拜占庭容錯共識算法,保證車聯網區塊鏈快速共識。最后,通過與其他通信模型進行比較,說明了DSCM模型具有快速共識、數據安全、隱私保護、輕量級存儲、高效通信等特點,更適用于目前的車聯網通信環境。

表3 現存車聯網節點通信安全問題及解決方案