陳葳葳,曹 利,邵長虹
(南通大學(xué)信息科學(xué)技術(shù)學(xué)院,江蘇南通 226001)
(*通信作者電子郵箱cl@ntu.edu.cn)
車聯(lián)網(wǎng)(Internet of Vehicles,IOV)是由車輛自組網(wǎng)(Vehicular Ad-Hoc Network,VANET)和移動互聯(lián)網(wǎng)組成的開放異構(gòu)網(wǎng)絡(luò),通過車、路、管理平臺的實時關(guān)聯(lián)與感知實現(xiàn)智能交通,并提供交通安全、信息娛樂等服務(wù)。在車聯(lián)網(wǎng)中,車輛必須周期性地廣播交通車輛的身份、當(dāng)前位置、速度等相關(guān)信息給其周圍的所有車輛,惡意車輛可以通過分析消息與發(fā)送者的關(guān)系,獲取車輛駕駛者的隱私(身份、位置等)信息,對車輛用戶的隱私造成潛在的威脅,可引發(fā)偽裝攻擊、消息篡改、竊聽等一系列安全問題[1-3]。而身份的合法性認證是開放交通環(huán)境中車聯(lián)網(wǎng)其他一切應(yīng)用安全的基礎(chǔ),身份認證不僅包括對接入車輛身份合法性的校驗,以保證通信雙方身份的真實性,同時還需保護用戶的隱私,以匿名方式進行。車聯(lián)網(wǎng)身份認證需考慮的其他特性有:1)因車輛運動速度快、路側(cè)單元(Road Side Unit,RSU)覆蓋范圍小,車輛需要頻繁進行身份驗證,高效的身份驗證成為關(guān)鍵;2)認證節(jié)點RSU 大多獨立化,無人操作和管理,攻擊者可以輕易訪問認證設(shè)備,一旦認證節(jié)點遭到攻擊或數(shù)據(jù)被篡改,將會嚴(yán)重影響交通安全。因此,研究如何適應(yīng)車聯(lián)網(wǎng)自身特點的身份認證方案,消除車聯(lián)網(wǎng)推廣應(yīng)用的安全障礙,受到國內(nèi)外學(xué)者的廣泛關(guān)注。
車聯(lián)網(wǎng)目前普遍采用公鑰基礎(chǔ)設(shè)施(Public Key Infrastructure,PKI)認證機制,通過為車輛分發(fā)唯一編號并提供證書頒發(fā)機構(gòu)(Certification Authority,CA)證書進行身份認證,缺點是由于認證節(jié)點的中心化導(dǎo)致中心節(jié)點任務(wù)繁重、無法代理且易攻陷,此短板效應(yīng)會引起用戶敏感信息等數(shù)據(jù)泄露[4-6],且無法有效保護用戶身份隱私?;诖?,國內(nèi)外學(xué)者提出車聯(lián)網(wǎng)環(huán)境下基于假名的身份認證、基于環(huán)簽名的認證和基于PKI 系統(tǒng)的匿名認證等方法。文獻[7]利用假名機制研究公務(wù)用車通信協(xié)議,協(xié)議結(jié)合了同態(tài)密鑰協(xié)商和數(shù)字簽名等技術(shù)以管理和使用假名,確保公務(wù)用車的通信安全和隱私保護,但無法抵制身份的濫用和對中心節(jié)點的依賴。文獻[8]在PKI 系統(tǒng)的基礎(chǔ)上設(shè)計了一種車聯(lián)網(wǎng)安全通信與隱私保護機制。車輛使用可信中心機構(gòu)(Trusted Authority,TA)中心為其計算的公鑰進行通信,即使匿名密鑰泄露也不會導(dǎo)致用戶身份的泄露,但缺乏適合車聯(lián)網(wǎng)環(huán)境的移動路由。文獻[9]中提出了證書和假名機制結(jié)合的隱私保護方案。TA 為認證機構(gòu)頒發(fā)證書,認證機構(gòu)再為每一個用戶頒發(fā)假名授權(quán)證書,構(gòu)建了智能傳輸系統(tǒng)的隱私框架,但網(wǎng)絡(luò)性能無法滿足車聯(lián)網(wǎng)頻繁認證的需求。文獻[10]利用路邊單元(Road Side Unit,RSU)批認證提出基于身份的高效匿名批認證方案。車輛根據(jù)TA 參數(shù)產(chǎn)生假名進行通信,實現(xiàn)匿名性和高效認證,但是存在RSU 認證工作頻繁、負荷過大等問題。文獻[11]利用離散對數(shù)難題(Discrete Logarithm Problem,DLP)提出一種高效條件隱私保護方案。結(jié)合TA 提供參數(shù)計算所得假名存放于防篡改設(shè)備,有效實現(xiàn)匿名性,但是未闡明密鑰分配和防篡改設(shè)備的使用問題。環(huán)簽名方案是車輛簽名信息時將自己的私鑰與其他車輛的公鑰混合,形成環(huán)簽名,以混淆方式防止自己身份的泄露。文獻[12]利用格困難問題設(shè)計環(huán)簽名方案,實現(xiàn)了無條件匿名性,保障其在量子攻擊下的安全性,但格簽名的長度有待優(yōu)化。文獻[13]利用環(huán)簽名和基于身份的加密技術(shù)對車輛間的通信進行認證,但缺乏對復(fù)雜網(wǎng)絡(luò)環(huán)境的實驗分析。文獻[14]利用分布式車輛公鑰基礎(chǔ)設(shè)施提出隱私保護方案,采用票據(jù)為應(yīng)用服務(wù)提供匿名訪問和認證,但是隨著車輛數(shù)目的增多,票據(jù)處理的時延成為問題。文獻[15]利用多假名保護、消息分片、編碼和緩存機制解決了車輛-基礎(chǔ)設(shè)施(Vehicle-to-Infrastructure,V2I)通信過程中車輛隱私泄露問題,消除了多條轉(zhuǎn)發(fā)路徑上的消息關(guān)聯(lián)性,但是沒有考慮RSU的可靠性問題。
綜合以上研究成果,車聯(lián)網(wǎng)因?qū)φJ證效率和隱私保護的特殊要求,傳統(tǒng)的身份認證仍存在諸多問題有待解決。車聯(lián)網(wǎng)數(shù)據(jù)是典型的時空數(shù)據(jù),包括時間和空間兩個維度,采用傳統(tǒng)的集中式方式處理雖然具有一定的便捷性,但不能充分滿足時空數(shù)據(jù)存儲及查詢等要求,而區(qū)塊鏈(Block Chain)技術(shù)采用去中心化的分布式存儲機制,并通過共識機制等技術(shù)來保證數(shù)據(jù)的安全性,適合作為車聯(lián)網(wǎng)安全問題的新型解決方案。區(qū)塊鏈技術(shù)于2008 年被中本聰提出,其本質(zhì)是一個對等網(wǎng)絡(luò)的分布式賬本數(shù)據(jù)庫。一個完整的區(qū)塊鏈系統(tǒng)包含數(shù)據(jù)加密、數(shù)字簽名、時間戳等技術(shù),以及作為支持的對等網(wǎng)絡(luò)(Peer-to-Peer,P2P)和維護系統(tǒng)的共識算法、采礦和工作量證明、匿名交易機制和Merkle樹快速檢索等相關(guān)技術(shù),為區(qū)塊鏈上的交易、驗證等功能提供了技術(shù)支撐和運行動力。目前,區(qū)塊鏈以其特有的安全機制,在很多領(lǐng)域得到應(yīng)用。很多學(xué)者將車聯(lián)網(wǎng)安全問題與區(qū)塊鏈技術(shù)相結(jié)合,進行了一些研究。文獻[16]基于車聯(lián)網(wǎng)通信(Wireless Access in Vehicular Environment,WAVE)協(xié)議設(shè)計了去中心化的車聯(lián)網(wǎng)數(shù)據(jù)交換系統(tǒng),利用區(qū)塊鏈網(wǎng)絡(luò)分布特征廣播與存儲數(shù)據(jù),實現(xiàn)了車與車的數(shù)據(jù)交換,但位置隱私保護問題有待解決。文獻[17]結(jié)合區(qū)塊鏈技術(shù)設(shè)計出車聯(lián)網(wǎng)身份認證系統(tǒng)框架,解決汽車與多服務(wù)器、路邊單元之間的認證問題,但是由于車輛數(shù)量較多,通信頻繁,缺乏高效、快速的共識機制。文獻[18]中提出了以區(qū)塊鏈為模型解決在車聯(lián)網(wǎng)中傳播重要信息的方案,區(qū)塊鏈存儲節(jié)點可信度達成車輛間信任機制,但事件傳播延時有待改善。
針對車聯(lián)網(wǎng)的特性與中心化認證系統(tǒng)的缺陷,本文提出一種基于區(qū)塊鏈技術(shù)的車聯(lián)網(wǎng)匿名身份認證方案。通過區(qū)塊鏈技術(shù)和智能合約的結(jié)合,實現(xiàn)身份存儲、認證的高效與可靠;利用公鑰密碼體制及數(shù)字簽名技術(shù)實現(xiàn)信息傳輸?shù)谋C苄院屯暾?;采用臨時公鑰進行匿名通信,實現(xiàn)身份隱私的保護。
區(qū)塊鏈?zhǔn)且环N按照時間順序?qū)?shù)據(jù)區(qū)塊以鏈條的方式組合而成的特定數(shù)據(jù)結(jié)構(gòu),并以密碼學(xué)方式保證的不可篡改和不可偽造的去中心化共享總賬。
區(qū)塊鏈結(jié)構(gòu)如圖1 所示,每一個數(shù)據(jù)區(qū)塊主要由區(qū)塊頭和區(qū)塊體組成。區(qū)塊頭用來記錄當(dāng)前區(qū)塊的元數(shù)據(jù),主要封裝了當(dāng)前版本號、前一個區(qū)塊的地址、當(dāng)前區(qū)塊的目標(biāo)哈希值、Merkle根等。前一區(qū)塊的地址,用于將當(dāng)前區(qū)塊與前一區(qū)塊相連,形成鏈條。目標(biāo)哈希值、隨機數(shù)、時間戳等用于共識機制。區(qū)塊體記錄具體的數(shù)據(jù),數(shù)據(jù)結(jié)構(gòu)為Merkle樹,數(shù)據(jù)記錄在葉子節(jié)點,非葉子節(jié)點的值為所有葉子節(jié)點數(shù)據(jù)的哈希值而不是具體數(shù)據(jù),降低了區(qū)塊容量,便于同步與備份。區(qū)塊體中數(shù)據(jù)經(jīng)過哈希運算得到Merkle 根,一個葉子節(jié)點數(shù)據(jù)的改動將會導(dǎo)致根節(jié)點數(shù)據(jù)的變化,達到快速查詢和校驗的目的。
車聯(lián)網(wǎng)的安全需求與區(qū)塊鏈技術(shù)特征(去中心化、防篡改及可追溯性)不謀而合。車聯(lián)網(wǎng)中所有節(jié)點權(quán)利平等,并且有較好的容錯能力。利用區(qū)塊鏈技術(shù)在海量分布式節(jié)點間建立信任關(guān)系,能解決中心化低效率與數(shù)據(jù)不安全等問題。利用區(qū)塊鏈的哈希函數(shù)的單向性、數(shù)字簽名不可否認等性質(zhì)將車聯(lián)網(wǎng)相關(guān)數(shù)據(jù)存儲至區(qū)塊鏈,若攻擊者妄圖篡改數(shù)據(jù),不僅要修改當(dāng)前區(qū)塊的哈希值,還要修改所有區(qū)塊的哈希值,極大增加了攻擊難度和成本。區(qū)塊鏈帶有時間戳數(shù)據(jù),將區(qū)塊按照時間順序關(guān)聯(lián),方便檢索交易從發(fā)布源頭到最新狀態(tài)的整個變化流程,可以滿足車聯(lián)網(wǎng)快速認證的需求。
圖1 區(qū)塊鏈結(jié)構(gòu)Fig.1 Structure of Blockchain
區(qū)塊鏈技術(shù)為適應(yīng)社會的需求,不斷演進,目前發(fā)展到第三代:第一代以比特幣網(wǎng)絡(luò)為代表,以分布式賬本模式存儲交易,交易具有不可篡改、不可否認的特性,但其共識機制導(dǎo)致的時延無法滿足車聯(lián)網(wǎng)實時需求;第二代是以以太坊為代表的區(qū)塊鏈技術(shù),在比特幣網(wǎng)絡(luò)的基礎(chǔ)上改進了區(qū)塊結(jié)構(gòu),并設(shè)計了智能合約,可以實現(xiàn)交易的自動化處理,具有了可擴展的特性,將區(qū)塊鏈底層技術(shù)推廣至應(yīng)用層,適合車聯(lián)網(wǎng)的安全應(yīng)用解決方案;第三代有向無環(huán)圖(Directed Acyclic Graph,DAG)區(qū)塊鏈結(jié)構(gòu)正在起步階段,采用全新的區(qū)塊數(shù)據(jù)結(jié)構(gòu)、大幅增加區(qū)塊鏈網(wǎng)絡(luò)吞吐量,但技術(shù)尚未成熟。本文方案的研究對象為車聯(lián)網(wǎng),具有開放性、自組織、變化快的特性,及身份認證時延小、可追溯、隱私保護的需求,所以采用第二代聯(lián)盟鏈技術(shù)作為研究平臺。方案選擇Hyperledger 作為驗證平臺,主要是基于其開源性,方便實現(xiàn)區(qū)塊鏈共識機制的修改,并通過智能合約實現(xiàn)相關(guān)訪問控制。
本文以開源Hyperledger 聯(lián)盟鏈為原型設(shè)計了一種車聯(lián)網(wǎng)匿名快速身份認證模型,該認證模型可實現(xiàn):1)保證RSU認證系統(tǒng)的可靠性和健壯性;2)車輛在進行通信時,不使用真實身份關(guān)聯(lián)的公私鑰,實現(xiàn)匿名性;3)通信過程中消息全程加密,保障信息的完整性和保密性。
車聯(lián)網(wǎng)基本結(jié)構(gòu)見圖2,主要由三個主體部分構(gòu)成:
1)交通管理中心(Trust Center,TC)是IOV 中最高權(quán)威機構(gòu),與路邊單元(RSU)通過有線連接,主要負責(zé)交通參與者初始化,核心信息保存等;
2)路邊單元(RSU)分布在十字路口及道路兩旁,提供車輛接入、身份驗證等相關(guān)服務(wù);
3)車載單元(On Board Unit,OBU)安裝在車輛嵌入式設(shè)備中,作為車輛的通信模塊,與周圍車輛交互信息。
車聯(lián)網(wǎng)聯(lián)盟鏈認證信任模型如圖3 所示:行駛車輛的OBU 接入附近的路側(cè)單元RSU 并產(chǎn)生臨時身份密鑰對,RSU作為記賬節(jié)點,將車輛合法身份信息記錄和臨時身份密鑰對進行映射處理,記入?yún)^(qū)塊鏈,為車輛實現(xiàn)匿名通信提供憑證,各RSU組成聯(lián)盟鏈網(wǎng)絡(luò)。
圖3 認證模型Fig.3 Model of authentication
根據(jù)以上系統(tǒng)架構(gòu)和信任模型,本文提出基于聯(lián)盟鏈的高效匿名認證協(xié)議。協(xié)議在傳統(tǒng)PKI 認證的基礎(chǔ)上,利用RSU 構(gòu)建認證的聯(lián)盟區(qū)塊鏈,實現(xiàn)本區(qū)域行駛車輛的快速認證。假定區(qū)域內(nèi)RSU是可信設(shè)備,且已由TA注冊證書。方案流程如圖4 所示:首先,車輛經(jīng)過TA 中心線下注冊,生成公私鑰,頒發(fā)證書。車輛上路時,OBU自行生成用于隱私保護的臨時公私鑰對,然后申請入網(wǎng)并向RSU 注冊臨時公私鑰對。若OBU 通過PKI 機制完成初次身份驗證,RSU 就生成臨時公鑰與證書公鑰的映射關(guān)系,完成行駛中臨時認證注冊,并觸發(fā)聯(lián)盟區(qū)塊鏈的智能合約,將該次映射關(guān)系記載入?yún)^(qū)塊,各RSU達成共識后,發(fā)布至區(qū)塊鏈。RSU 通過檢索區(qū)塊鏈中的信息快速驗證通信車輛彼此的身份,車輛行駛中使用臨時公私鑰與其他車輛進行匿名雙向通信。
圖4 協(xié)議流程Fig.4 Process of protocol
2.2.1 Token結(jié)構(gòu)
匿名通信中,車輛采用臨時公鑰代替TA 公鑰進行通信。為便于區(qū)塊鏈的檢索和臨時公鑰PToken的管理,方案生成Token 進行身份信息的關(guān)聯(lián),并把Token 記入?yún)^(qū)塊鏈。Token主要由區(qū)域號、時間戳與PToken組成,其中PToken為Token 中標(biāo)識符,結(jié)構(gòu)如圖5所示。
圖5 Token結(jié)構(gòu)Fig.5 Structure of Token
區(qū)域號:車輛注冊TA 所屬區(qū)域行政區(qū)劃代碼,便于車輛身份的查詢,區(qū)域號格式與國家行政區(qū)劃代碼類似,由6 位構(gòu)成,其中:1~2位表示省編碼,3~4位表示市編碼,5~6位表示區(qū)縣編碼。
標(biāo)識符:利用EIGamal 算法,結(jié)合TA 公開參數(shù)和私鑰計算得公鑰,生成標(biāo)識符M,私鑰和離散對數(shù)難題的結(jié)合保證其唯一性、不可偽造性。
時間戳:規(guī)定其有效期,時間戳過期則無法使用。當(dāng)檢測到過期的Token,自動觸發(fā)智能合約,刪除Token 與公鑰的映射關(guān)系。時間戳還用于判斷出塊時間,在認證時,實現(xiàn)相應(yīng)區(qū)塊的快速定位。
2.2.2 區(qū)塊結(jié)構(gòu)
區(qū)塊體記錄車輛經(jīng)過注冊、更新、撤銷后公鑰和Token 的映射關(guān)系,以MPT(Merkle Patricia Tree)的形式存儲。區(qū)塊頭存儲根節(jié)點的哈希值、生成時間等。
MPT 結(jié)構(gòu)中每一個節(jié)點的所有子孫都有相同的前綴,節(jié)點對應(yīng)的key 由根節(jié)點到該節(jié)點路徑上的所有節(jié)點key 值前后拼接而成,存儲key-value 數(shù)據(jù)結(jié)構(gòu)。方案中key 定義為Token,value 定義為Token 對應(yīng)公鑰。RSU 以區(qū)域號歸納智能合約打包的映射關(guān)系,生成MPT。因在同一個地區(qū)注冊車輛的Token 區(qū)域號一致,故查詢時可快速匹配到省市縣組成的分支路徑,提高查詢效率,實現(xiàn)快速認證。區(qū)塊結(jié)構(gòu)如圖6所示。
圖6 區(qū)塊結(jié)構(gòu)Fig.6 Structure of block
2.2.3 PBFT共識機制和智能合約
區(qū)塊鏈普遍采用工作量證明(Proof of Work,POW)共識機制達成共識,不適合車聯(lián)網(wǎng)實時快速認證的需求。本文方案中,各區(qū)域RSU 組成聯(lián)盟鏈網(wǎng)絡(luò),改用實用拜占庭容錯(Practical Byzantine Fault Tolerance,PBFT)算法共識機制,縮短出塊時間以滿足車聯(lián)網(wǎng)快速達成共識的需求,同時可容忍小于1/3 個無效或者惡意節(jié)點。PBFT 的算法流程如下:設(shè)共有3n+1 個記賬節(jié)點。首先,RSUi節(jié)點接收車輛注冊請求并認證其身份,其次RSUi節(jié)點通過廣播將請求發(fā)送至全網(wǎng)RSU 節(jié)點。所有節(jié)點都執(zhí)行認證并將結(jié)果發(fā)回RSUi節(jié)點。RSUi需要等待n+1 個不同節(jié)點返回相同的結(jié)果,作為整個操作的最終結(jié)果。PBFT 共識機制下的交易吞吐量可以達到200~2 000 TPS(Transactions Per Second),實現(xiàn)毫秒級的確認時間,無分叉可能,同時抵抗女巫攻擊。
為了將OBU 的臨時公鑰與證書公鑰的映射關(guān)系即時計入聯(lián)盟鏈,方案采用智能合約技術(shù),智能合約可以看作是運行在分布式賬本上的計算機程序,完成規(guī)則預(yù)設(shè),無需第三方干涉處理,適應(yīng)場景需求變換,監(jiān)督合約的條款以檢查合規(guī)性。本文方案采用智能合約實現(xiàn):
1)車輛生成Token 后,觸發(fā)智能合約實現(xiàn)Token 與公鑰的映射;
2)Token 時間戳失效,將觸發(fā)智能合約,將Token 與公鑰的映射刪除;
3)行駛中車輛身份驗證的請求行為觸發(fā)智能合約,對區(qū)塊鏈上的Token快速檢索;
4)對惡意節(jié)點的判定將觸發(fā)智能合約,將其加入撤銷列表。
智能合約主要功能實現(xiàn)偽代碼:
方案中假設(shè)底層采用短程通信(Dedicated Short Range Communication,DSRC)技術(shù)和802.11P 協(xié)議。802.11P 標(biāo)準(zhǔn)對DSRC 標(biāo)準(zhǔn)中的物理層(PHYsical,PHY)和介質(zhì)訪問控制層(Media Access Control,MAC)的內(nèi)容進行了規(guī)范,能為車車和車路之間提供高速的無線廣播通信服務(wù),具有數(shù)據(jù)傳輸速率高、傳輸時延短的特點,且支持點對點或點對多點通信。所以在本文方案中,當(dāng)OBU 接入車聯(lián)網(wǎng)時候,首先接收的是RSU 的廣播信息,屬于一點對多點通信。而在認證過程中OBU和RSU的多次握手,采用的是點對點通信方式。
基于區(qū)塊鏈的匿名快速認證可分為:預(yù)注冊(線下注冊、線上注冊)和快速認證兩部分。表1 為本文方案中使用的符號說明。
表1 本文方案所使用符號Tab.1 Symbols of proposed scheme
初始參數(shù)由TA 權(quán)威中心(如車管所)產(chǎn)生。TA 選擇滿足雙線性映射特性的群G1 和G2;選擇隨機數(shù)作為主密鑰,其中代表正整數(shù)集中素數(shù);計算系統(tǒng)公鑰Ppub=sp;提取群中素數(shù)α、q,n=aq。公開的參數(shù)有{G1,G2,n,α,Ppub}。
2.3.1 預(yù)注冊
預(yù)注冊包含線下注冊和線上注冊兩部分。
線下注冊:部署RSU 前,TA 為每一個官方采購的RSU 頒發(fā)證書CertR。車輛線下注冊時,TA 核實其材料真實性,為其頒發(fā)證書,并記錄公鑰與車主真實身份的映射關(guān)系。具體為:官方采購RSU 設(shè)備后,TA 用RSA 算法生成RSU 私鑰SR和公鑰PR,頒發(fā)證書CertR。證書中包含:RSU 的公鑰、證書有效期、TA 私鑰的簽名、RSU 所部署的區(qū)域編號NR等信息。RSU存儲TA 公共參數(shù)、其證書和公、私鑰。車主提交真實身份材料經(jīng)核實后,TA 利用RSA 算法生成車輛私鑰Svi和公鑰Pvi,頒發(fā)證書Certvi。證書中包含:車輛的公鑰、證書有效期、TA用私鑰的簽名和TA 所在區(qū)域號等信息。OBU 存儲TA 公共參數(shù)、車輛的證書和公、私鑰。TA 記錄包含:車輛公鑰與車主身份材料的映射關(guān)系,據(jù)此可以追溯違規(guī)車輛車主的真實身份;RSU 證書與RSU 編號NR映射關(guān)系。若有RSU 損壞,TA 可以根據(jù)RSU證書中的區(qū)域編號查找損壞設(shè)備,實時維修。
線上注冊:區(qū)域內(nèi)RSU構(gòu)成聯(lián)盟鏈網(wǎng)絡(luò),RSU廣播自己的證書信息。當(dāng)車輛上路后進入初始RSU 的廣播范圍,OBU 自行生成公私鑰對{PToken,SToken},將PToken、證書中的區(qū)域號附上時間戳組成Token,向RSU 發(fā)送對該Token 的注冊請求。RSU進行初次身份PKI認證,驗證通過后觸發(fā)智能合約,生成車輛的Token與公鑰的映射關(guān)系,同時返回Success消息,若認證不通過返回False消息。RSU根據(jù)新注冊的Token更新本地區(qū)塊中的MPT,使用PBFT 共識機制,RSU 間達成共識,完成記賬。通過驗證和注冊請求的OBU 在后繼行駛過程中采用聯(lián)盟鏈認證。線上注冊算法的流程如圖7所示。
圖7 線上注冊流程Fig.7 Process of online registration
1)RSU→OBU:{CertR,SignSR(CertR)}。
RSU廣播自己的證書和簽名。
2)OBU→RSU:EPR(V1,SignSvi(V1))。
①車輛接收到RSU 廣播信息,驗證RSU 身份,并生成隨機數(shù),利用EIGamal 算法生成私鑰SToken,然后計算出公鑰,加上區(qū)域號和時間戳信息,生成本次的Token。
②OBU 用SToken簽名車輛證書,與Token、證書形成注冊請求內(nèi)容:V1=Certvi,Token,SignSToken(Certvi),并對其簽名SignSvi(V1),用RSU公鑰加密后發(fā)給RSU。
3)RSU→OBU:EPvi(Success,SignSR(Success))||EPvi(False,SignSR(False))。
①RSU 用私鑰解密OBU 注冊請求,先利用PKI 驗證車輛的證書和簽名,保證公鑰不在撤銷列表;接著驗證Token里的區(qū)域號是否與車輛證書中的一致。驗證通過,提取PToken,驗證SToken的簽名,確保是PToken擁有者發(fā)出的注冊請求。
②驗證通過后,簽名車輛注冊的消息區(qū)塊鏈網(wǎng)絡(luò)同步,由本區(qū)域RSU 分別驗證,返回半數(shù)以上條成功結(jié)果后,智能合約觸發(fā)Search()功能模塊:區(qū)塊鏈檢索。檢索算法為:Search()先由時間戳計算出塊時間,定位到相應(yīng)區(qū)塊;然后根據(jù)Token 區(qū)域號先找到其省級所在分支,再按照市縣行政代號匹配分支路徑。若PToken是初次注冊,執(zhí)行registed()函數(shù),生成車輛公鑰與Token的映射關(guān)系。
③RSU 用私鑰簽名注冊結(jié)果,注冊成功返回:EPvi(Success,SignSR(Success));若有一條驗證未通過,返回失敗消息:EPvi(False,SignSR(False))。
④RSU 根據(jù)新注冊的Token 更新區(qū)塊中的MPT,并通過PBFT共識機制快速添加至區(qū)塊鏈。
4)車輛用私鑰解密RSU 響應(yīng)消息,驗證其簽名,根據(jù)注冊結(jié)果判斷是否獲得PToken的使用權(quán)。
2.3.2 快速認證
車輛OBUi、OBUj在完成線上注冊后,若需要彼此通信,就可發(fā)起快速身份認證。OBUi向OBUj發(fā)送身份信息:Token 和時間戳,并對其簽名。OBUj根據(jù)接收的信息可向附近任何一個RSU 請求認證OBUi的身份。若認證成功,雙方用對稱密鑰進行通信,否則中斷連接。具體流程如圖8所示。
圖8 快速認證過程Fig.8 Process of fast authentication
1)OBUi→OBUj:Tokeni,T,SignSTokeni(Tokeni,T)。
OBUi將自己的Tokeni、時間戳T簽名后發(fā)給OBUj。
2)OBUj→RSU:EPR(V2)。
OBUj將OBUi身份信息附加自己的Tokenj組成認證請求:V2=Tokeni,T,SignSTokeni(Tokeni,T),Tokenj,用RSU 公鑰加密發(fā)送給RSU。
3)RSU→OBUj:EPTokenj(R2,SignSR(R2))。
①RSU 用私鑰解密后觸發(fā)智能合約,調(diào)用Search()函數(shù)檢索區(qū)塊鏈,查看區(qū)塊鏈中是否記載Tokeni、Tokenj,若都存在并且Token 時間戳都未過期,提取PTokeni驗證STokeni的簽名,驗證通過后檢測消息中時間戳T是否有效。
②上述條件均滿足返回認證成功:R2=Success,T。否則返回認證失?。篟2=False,T。簽名消息SignSR(R2),提取PTokenj加密發(fā)送給OBUj。
4)RSU→OBUi:EPTokeni(PTokenj,SignSR(PTokenj))。
RSU 將OBUj的PTokenj簽名,并用OBUi公鑰加密傳給OBUi。
5)OBUj→OBUi:EPTokeni(S2,SignSTokenj(S2))。
①OBUj驗證RSU 簽名后,得到Success 消息便提取Tokeni中的PTokeni,生成對稱密鑰key。key為臨時會話密鑰。
②封裝對稱密鑰key、時間戳,和key加密的隨機數(shù)r4:S2=key,T,Ekey(r4),簽名SignSTokenj(S2)并用PTokeni加密發(fā)送給OBU。
6)OBUi→OBUj:Ekey(r4,Information,r5)。
①OBUi收到消息4)后用私鑰解密驗證,并接收RSU 發(fā)來的PTokenj;
②用PTokenj解密獲得OBUj發(fā)來的key,并驗證簽名和時間戳,提取隨機數(shù)r4;
③生成隨機數(shù)r5,將通信消息與隨機數(shù)r4、r5 封裝,使用臨時會話密鑰key加密發(fā)送給OBUj;
7)OBUj解密消息并驗證簽名,檢測隨機數(shù)r4(以保證通信對方身份并已拿到key),驗證通過,接受信息。
為了測試方案的可行性,利用Hyperledger Fabric 1.4 工具進行車聯(lián)網(wǎng)身份部署,模擬快速認證過程。因?qū)嶒灜h(huán)境限制,假設(shè)車聯(lián)網(wǎng)節(jié)點預(yù)注冊部分已經(jīng)完成,安全性將在后面分析,實驗主要完成區(qū)塊鏈的共識建立和身份快速驗證。在本地虛擬機中部署5 個虛擬節(jié)點,用來實現(xiàn)不同的RSU 構(gòu)建區(qū)塊鏈。實驗開始時,調(diào)用智能合約,模擬預(yù)注冊階段OBU 身份驗證后生成的Token,身份信息被RSU 打包,采用PBFT 算法達成共識,經(jīng)過節(jié)點間的共識認證后生成區(qū)塊,存入?yún)^(qū)塊鏈;各節(jié)點進行數(shù)據(jù)的更新操作。實驗過程中涉及的測試工具及對應(yīng)作用如表2所示。
表2 測試工具及其作用Tab.2 Testing tools and their functions
按照上述方式搭建仿真平臺,本文仿真驗證了5 個RSU節(jié)點30 min內(nèi)在區(qū)塊鏈網(wǎng)絡(luò)中的共識情況。通過分析節(jié)點的在線情況、打包次數(shù)、是否進行區(qū)塊更新操作,檢測RSU 節(jié)點在區(qū)塊鏈網(wǎng)絡(luò)運行的可行性,結(jié)果如表3 所示。實驗結(jié)果表明,參與共識的節(jié)點均100%在線,打包次數(shù)分布平均,且各節(jié)點對網(wǎng)絡(luò)中區(qū)塊持續(xù)更新,在網(wǎng)絡(luò)暢通情況下無掉線、停滯、阻塞等現(xiàn)象出現(xiàn),實驗結(jié)果說明了方案在區(qū)塊鏈上的可用性及正確性。
表3 正確性實驗結(jié)果Tab.3 Experimental results of correctness
為驗證PBFT共識算法在本文方案的可行性,實驗設(shè)計查詢請求發(fā)送速率為100、200 TPS(Transactions Per Second)的兩種網(wǎng)絡(luò)環(huán)境,檢測各自共識時延情況,得到兩組的最大、平均及最小共識時延。實驗數(shù)據(jù)如圖9 所示,表明Hyperledger fabric 中在發(fā)送請求速率不超過200 TPS 時,平均時延均在40 ms 左右,達到毫秒級的共識速度,滿足車聯(lián)網(wǎng)環(huán)境下實時認證的通信時延要求。
圖9 PBFT算法時延Fig.9 Time delay of PBFT algorithm
方案采用聯(lián)盟區(qū)塊鏈分布式賬本模式,可以抵御拒絕服務(wù)攻擊,防止中心化單點故障對車聯(lián)網(wǎng)認證系統(tǒng)帶來的破壞。利用區(qū)塊鏈智能合約的自動觸發(fā)性,及MPT 區(qū)塊結(jié)構(gòu)易于檢索的特點,相較于傳統(tǒng)公鑰基礎(chǔ)設(shè)施(PKI)模式,能有效縮短車聯(lián)網(wǎng)身份認證過程的時延。實驗驗證了不同假名請求數(shù)量與時延的關(guān)系,結(jié)果如圖10 所示,與傳統(tǒng)PKI 模式、文獻[14]的假名授權(quán)身份認證方案進行比較,隨著假名請求量的增加,本文方案匿名身份認證方法時延增長最慢,更為高效。
圖10 時延對比Fig.10 Comparison of delay
3.2.1 防偽裝攻擊
采用公鑰密碼體制EIGamal 算法保證密鑰安全性,有效防止偽裝攻擊,證明如下:
OBU 生成私鑰Svi<q-1,計算公鑰Pvi=。設(shè)明文X,隨機選擇整數(shù)y<q。
攻擊者為了恢復(fù)私鑰,會計算Svi=dlogα,q(Pvi);或為了恢復(fù)一次性密鑰Y,選擇隨機數(shù)y計算離散對數(shù)y=dlogα,qC1。基于離散對數(shù)難題,當(dāng)q≥300,q-1 至少有一個大的素因子時無法推算出私鑰;沒有合法車輛的PToken私鑰無法偽造身份,致使無法進行Token 注冊。同理沒有RSU 私鑰無法偽裝RSU認證車輛身份。
3.2.2 有條件的匿名性
利用聯(lián)盟區(qū)塊鏈創(chuàng)建賬戶的自發(fā)性特性,車輛可以自行生成多個Token,進行多身份混淆,一定程度上實現(xiàn)匿名。聯(lián)盟區(qū)塊鏈采用分布式存儲,實現(xiàn)車輛身份數(shù)據(jù)的永久存儲,同時區(qū)塊內(nèi)部信息由車輛簽名,不可否認,便于身份的追溯,具體說明如下:
方案使用PToken代替用戶與真實身份相關(guān)聯(lián)的公鑰進行通信。除RSU 外無人知道車輛公鑰信息。若遇到惡意車輛,RSU 可以激活智能合約revoke()函數(shù),將其對應(yīng)公鑰加入撤銷列表,使之無法注冊Token 進行通信。對于違規(guī)車輛(如超速、壓線等,但仍然有權(quán)利生成Token),RSU 通過智能合約的Search()函數(shù)找到對應(yīng)公鑰并上交至TA,TA 可以查詢到車輛的真實身份,實現(xiàn)追溯性。最壞情況下:車輛公鑰泄露,因為RSU 不存儲車輛的真實身份也不會導(dǎo)致車主身份隱私的泄露。
3.2.3 通信數(shù)據(jù)和存儲數(shù)據(jù)的完整性和保密性
1)通信數(shù)據(jù)的保密性和完整性證明。
OBU用自己的私鑰簽名消息X。OBU 先計算Hash值:x=H(X),OBU 選取隨機整數(shù)ri,滿足1 ≤ri≤q-1 且gcd(ri,q-1)=1。
a)計算S1=;
b)計算ri-1mod (q-1);
c)計算S2=ri-1(m-SviS1)mod (q-1);
d)簽名為(S1,S2)。
RSU可用OBU的公鑰解密:
a)計算:V1=αxmodq;
b)計算:V2=(Pvi)S1(S1)S2modq。
若V1=V2,簽名合法。證明如下:
假設(shè)V1=V2
只有擁有私鑰的OBU 才可以對消息簽名,用OBU 公鑰即可驗證,保證消息的完整性。OBU 使用RSU 公鑰加密消息,加密過程同上,僅擁有私鑰的RSU 才可解密消息,故保證消息的保密性。
2)存儲數(shù)據(jù)的保密性和完整性分析。
聯(lián)盟區(qū)塊鏈中數(shù)據(jù)除可信節(jié)點RSU 可知外,鏈外節(jié)點沒有權(quán)限無法訪問,實現(xiàn)了車輛身份信息的保密性存儲;
聯(lián)盟區(qū)塊鏈技術(shù)利用哈希函數(shù)不可逆和極難碰撞的特性,將區(qū)塊用哈希指針進行串連,實現(xiàn)鏈中數(shù)據(jù)的無法篡改,保證鏈中存儲的車輛身份信息的完整性。
3.2.4 防重放攻擊
車與車通信過程使用詢問-握手的方式,通信消息附上時間戳和隨機數(shù),并將相關(guān)參數(shù)保存在本地,通過驗證時間戳和隨機數(shù)來保證消息是最新且未被篡改的。
身份認證是車聯(lián)網(wǎng)技術(shù)的基礎(chǔ),隱私保護是車聯(lián)網(wǎng)的關(guān)鍵。本文提出基于區(qū)塊鏈的快速匿名身份認證方案,方案基于PKI 體制——TA 為車輛、RSU 頒發(fā)證書,保證通信雙方的真實性;利用分布式體系結(jié)構(gòu)實現(xiàn)匿名性——車輛可自行生成多個PToken代替與真實身份關(guān)聯(lián)的公鑰進行服務(wù)請求和通信,PToken由全網(wǎng)認證,保證其有效性;采用智能合約的自動化——RSU 認證完車輛的身份后,觸發(fā)智能合約打包Token 和車輛公鑰映射數(shù)據(jù),Token 過期后觸發(fā)智能合約刪除映射關(guān)系;利用區(qū)塊鏈不可篡改、可追溯、魯棒性等特性——區(qū)塊鏈上保存Token 與車輛的身份映射,保證數(shù)據(jù)的可追溯性和完整性。此外,區(qū)塊使用MPT 樹形數(shù)據(jù)結(jié)構(gòu)縮短檢索區(qū)塊使用時間;利用實用拜占庭容錯共識機制提高共識效率;通信過程采用非對稱密碼體系,保證數(shù)據(jù)在傳輸過程中的安全性。車聯(lián)網(wǎng)跨域認證也可以基于相同的思路實現(xiàn),限于篇幅,沒有展開論述。