周啟揚 李飛 章嘉彥 李亞林 宋佳琦
(成都信息工程大學,成都 610225)
主題詞:車聯(lián)網 匿名身份認證 區(qū)塊鏈技術 SM9加密算法
在車聯(lián)網中,汽車作為移動網絡單元需要不斷地向周圍車輛廣播和接收消息[1],網絡規(guī)模巨大、無線信道開放等特點使其更容易遭受隱私和安全威脅[2]。2017年,Kromtech 安全中心發(fā)現(xiàn)原屬于車輛跟蹤設備公司SVR Tracking 的50 多萬條用戶真實身份登錄憑證泄露?!?018年智能網聯(lián)汽車信息安全年度報告》指出,本田、保時捷等多家大型汽車公司以及多個共享汽車公司都存在車輛數(shù)據(jù)交互時用戶真實身份信息泄露的情況,導致出現(xiàn)多起車輛用戶信息被攻擊者破解的事件[3]。
所以,在保證通信安全的同時,還需保證車輛的隱私信息不被泄露或竊取。為此,研究者提出了許多認證方法,其中,匿名身份認證機制很好地彌補了普通認證技術在用戶信息泄露方面的缺陷。
目前,針對車聯(lián)網匿名身份認證的研究中,主要采用4 種方法:基于公鑰基礎設施(Public Key Infrastructure,PKI)的方案[4-5]、基于零知識的匿名認證機制[6]、基于假名的匿名認證技術[7-8]以及基于群簽名的匿名認證機制[9]。上述方案都能在一定程度上保證車輛信息的私密性,但同時也帶來了計算資源、管理、存儲資源開銷過大等問題。
SM9 加密算法是一種采用用戶身份標識生成公私鑰對、不依賴數(shù)字證書的加密算法[10]。算法基于橢圓曲線的雙線映射性質,通過了Cheon[11]、Boneh和Franklin[12]以及Bellare-Rogaway[13]提出的密鑰安全性相關檢測模型[14-15]的檢測。
本文將區(qū)塊鏈技術與匿名身份認證技術、SM9加密算法相結合,提出一種適用于車聯(lián)網的匿名身份認證方案,以解決證書申請頻繁、車載資源利用率不足、證書使用率不高的問題,保證車輛的信息安全。
本文設計的車聯(lián)網區(qū)塊鏈系統(tǒng)架構如圖1所示,由車輛、路側單元(Road Side Unit,RSU)和可信中心(云服務提供商)構成。
其中,可信中心由車輛服務提供商設立的多個記賬節(jié)點采用分布式的結構組成,記賬節(jié)點參與新區(qū)塊的生成。區(qū)塊生成時,記賬節(jié)點選擇機制為:每個節(jié)點處都有一張用于記錄周圍節(jié)點網絡狀態(tài)和工作狀態(tài)的狀態(tài)表,每個節(jié)點定時通知周圍節(jié)點自身工作狀態(tài)值,周圍記賬節(jié)點收到通知后回復確認信息并更新該節(jié)點的工作狀態(tài)值。每個節(jié)點狀態(tài)值的計算公式為:
式中,St為節(jié)點狀態(tài)值;Tj為生成前j個新區(qū)塊所花費的總時間;Tci為生成前j個區(qū)塊中的第i個區(qū)塊所花費的時間。
St越大,表明該記賬節(jié)點工作量越大。當有假名請求時,根據(jù)自身節(jié)點狀態(tài)值是否大于0.9來判斷是否需要將請求轉發(fā)給周圍狀態(tài)值最小的節(jié)點。
為了確保新加入的節(jié)點身份真實可靠,共識機制采用瑞波共識算法,只有請求加入的節(jié)點通過不少于51%的記賬節(jié)點審核時,區(qū)塊鏈系統(tǒng)自動認為該申請節(jié)點通過審核,將該節(jié)點加入記賬節(jié)點,并記錄到區(qū)塊鏈中,否則此次申請無效,可有效防止惡意節(jié)點隨意加入。
本文區(qū)塊鏈的結構設計如圖2所示,分為區(qū)塊頭和區(qū)塊體2 個部分。區(qū)塊頭包含前一區(qū)塊的索引、假名、時間戳和與車輛通信的RSU的編號Uid。車輛信息和假名保存在默克爾(Merkle)樹中,區(qū)塊頭中保存默克爾樹的根節(jié)點信息和后一區(qū)塊的索引。區(qū)塊體中每個葉子節(jié)點記錄著1個車輛假名和其他輔助信息。
圖2 區(qū)塊鏈結構
在部署階段,系統(tǒng)需先定義相關參數(shù):Cid為曲線標識符;Fq為橢圓曲線基域;a、b分別為橢圓曲線方程參數(shù);β為扭曲參數(shù);N為曲線的素因子;Cf為曲線余因子;E(Fq)為定義在Fq上的一個橢圓曲線E;k為E(Fq)相對于N的嵌入次數(shù);P1、P2分別為N階循環(huán)加法群G1、G2的生成元;GT為N階乘法循環(huán)群;e為從G1×G2到GT的雙線性對,eid為e的標識符;[s]P代表加法群G1、G2中元素P的s倍。
然后選擇隨機數(shù)s∈[1,N-1]作為主私鑰,再計算G2中的元素[s]P2得到公鑰Ppub,將Ppub作為主公鑰組成系統(tǒng)主密鑰對(s,Ppub)并向網絡中公布公鑰Ppub。車輛的密鑰對主要由用戶的假名Pid和1 個字節(jié)的私鑰生成函數(shù)識別符hid生成。設車輛Va的假名為Pida,H為密碼輔助函數(shù),則Va的私鑰Ska生成公式為:
車輛Va的公鑰Pka可由系統(tǒng)任一用戶生成:
車輛間加密、隨機密鑰生成流程如下:
a.計算群G1的元素Qa=[H(Pida||hid,N)]P1+Ppub。
b.產生隨機數(shù)r∈[1,N-1]。
c.計算G1中的元素C=[r]Qa,轉換為比特串。
d.計算GT中的元素g=e(Ppub,P2)。
e.計算GT中的元素ω=gr,并將結果轉換為比特串。
f.利用密鑰導出模塊(Key Derivation Function,KDF)函數(shù)K計算生成的隨機秘鑰R1=K(C||ω||Pida,L),L為R1的長度,如果R1不全為0則輸出,否則返回b。
g.輸出(R1,C),之前生成的C為R1對應的密文。
解密流程為:
a.驗證C是否屬于G1,如果不屬于則退出解密。
b.計算群GT中的元素ω′=e(C,Ska)并轉換為比特串。
c.將C轉換為比特串并計算R1′=K(C||ω′||Pida,L),若全為0,則退出。
d.輸出。
2.3.1 改進的身份認證方案
基于假名的身份認證技術中,服務提供商為車輛和RSU進行認證,并給車輛頒發(fā)一定數(shù)量的假名。RSU負責數(shù)據(jù)轉發(fā),車輛利用假名進行通信。該過程如圖3所示。
圖3 基于假名證書的身份認證方案
針對上述方案中證書存儲開銷過大、車輛與RSU通信頻繁,影響車輛通信效率以及假名申請受RSU 部署影響等問題進行改進,如圖4所示。車輛在起動時使用出廠自帶的備用假名。云服務提供商由分布式節(jié)點組成的計算中心和區(qū)塊鏈系統(tǒng)組成,負責計算轉發(fā)申請的RSU部署密度、處理區(qū)塊節(jié)點和假名的生成等功能。
圖4 改進的假名身份認證方案
車輛行駛過程中遇到RSU 稀疏程度不同的區(qū)域時,可信中心下發(fā)的假名數(shù)量n也有差異:
式中,nR為前方距離lR內RSU 的數(shù)量;Sv為車輛正常使用的資源容量;lCi為第i個假名長度;vt為目前車輛的平均速度;T為每個假名使用的安全時間。
2.3.2 區(qū)塊的管理
2.3.2.1 假名的組成
一個假名主要由2 個部分組成:由時間戳得到的4位16 進制哈希值;通過隨機函數(shù)生成的4 位16 進制數(shù)。將這2個部分組合成1個唯一的8位16進制假名,從而防止假名的重復。
2.3.2.2 區(qū)塊的生成
區(qū)塊按照前文的規(guī)則由選定的計算節(jié)點負責生成。當一個區(qū)塊準備生成時,首先獲取前一區(qū)塊的位置,并把本次生成區(qū)塊的位置通知其他計算節(jié)點,再根據(jù)式(4)得到需要生成的假名數(shù)量n,將它們依次存入區(qū)塊體中作為默克爾樹的葉子節(jié)點,生成默克爾樹,得到根節(jié)點。然后將根節(jié)點、假名等數(shù)據(jù)寫入區(qū)塊頭,生成一個完整的區(qū)塊。
2.3.2.3 車輛內部區(qū)塊的刪除
當車輛通過區(qū)塊的申請獲得一個新區(qū)塊時,停止使用舊假名進行通信,當最后一個舊假名通信停止時,刪除車輛內存儲的舊區(qū)塊,同時啟用接收到的新區(qū)塊中的第1個假名進行通信。
2.3.3 假名區(qū)塊申請及車輛間密鑰協(xié)商過程
2.3.3.1 區(qū)塊申請
車輛行駛時,首先選擇存儲于區(qū)塊中的假名和相應的密鑰對進行通信,當一個區(qū)塊中的多個假名均被使用過后,在進入RSU范圍時后開始申請新的區(qū)塊和假名。車輛將存儲在區(qū)塊頭中的假名和第R1個假名PidR1以[Pid||R1||SK1(PidR1)]的形式發(fā)送給RSU(其中SK1為PidR1的私鑰),RSU負責將車輛的消息和自己的Uid發(fā)送給可信區(qū)塊及密鑰管理中心(Key Distribution Center,KDC),KDC查找區(qū)塊頭假名信息找到區(qū)塊,根據(jù)區(qū)塊體中存儲的假名信息找到第R1個假名公鑰并解開加密內容核實PidR1,如果PidR1為該區(qū)塊存儲的第R1個假名,車輛身份即得到證實并根據(jù)Uid周圍RSU分布情況生成數(shù)量為n的新假名,再基于新假名對應生成數(shù)量為n的私鑰,并將假名和私鑰放入新生成的區(qū)塊中,否則將其列為可疑車輛并告知其他節(jié)點。然后KDC用車輛第R1個假名的公鑰PKR1加密隨機數(shù)R2和生成的第R2個假名PidR2以[PKR1(R2||PidR2)]的形式通過RSU發(fā)送給車輛,車輛用第R1個假名的私鑰SK1解開后得到R2,再根據(jù)R2找到第R2個假名并核實,此時便完成了車輛與KDC 的雙向認證。然后車輛再通過RSU發(fā)送R2給KDC,KDC收到后將區(qū)塊通過第R2個假名對應的公鑰PKR2加密發(fā)送給車輛,車輛解密后刪除原區(qū)塊并存儲收到的區(qū)塊,這樣就完成了一次區(qū)塊的申請。
2.3.3.2 密鑰協(xié)商
車輛Va將自己當前假名Pida和通信請求發(fā)送給車輛Vb,車輛Vb根據(jù)SM9 加密流程得到隨機數(shù)R1和對應密文C1,然后將C1和自己當前假名Pidb發(fā)送給Va,Va解開后得到R1和Pidb,然后同樣以SM9 加密流程得到R2和對應密文C2,將確認信息和C2發(fā)送給Vb,Vb解開后得到R2,此時已經完成了Va、Vb間的認證,最后再以R1、R2作為初始密鑰使用高級加密標準算法(Advanced Encryption Standard,AES)對其后兩車間的通信數(shù)據(jù)進行加密、解密,直到通信結束。
目前,基于用戶身份信息的車輛攻擊方式主要有跟蹤和假冒。
當攻擊車輛Vk意圖對用戶車輛Va進行跟蹤攻擊時,Vk需定期獲取Va的身份信息以確保跟蹤目標。Vk選擇目標的成功率為1/Vn,Vn為當前區(qū)域車輛數(shù)量。即使Vk以1/Vn的概率正確跟蹤目標并與Va進行一次通信獲得了Va的車輛信息,下次通信時由于Va的假名發(fā)生了變化,Vk將再次無法準確判斷跟蹤的目標,所以Vk無法連續(xù)跟蹤目標車輛Va。
當車輛Vk意圖仿冒Va的用戶信息對Va進行攻擊時,Vk需要不停獲取Va在行駛過程中使用的假名,即使Vk可以完整監(jiān)聽到Va使用過的假名信息,但由于Va假名使用順序與假名排列順序相關性不強,所以Vk無法獲得Va所使用的假名在區(qū)塊體中的正確排列順序,即使Vk可以截獲Va的區(qū)塊申請信息并仿冒Va進行區(qū)塊的申請,也無法通過KDC的身份認證。
綜上所述,基于區(qū)塊鏈技術的車聯(lián)網匿名身份認證技術可以防范目前車聯(lián)網中常見的攻擊方式,保障用戶的信息安全。
仿真環(huán)境使用英特爾i7 4700HQ 處理器,處理器工作頻率為2.4 GHz,內存容量為8 G,內存工作頻率為2 000 MHz,測試數(shù)據(jù)量為7 萬條。仿真采用了基于VanetMobiSim_NS_2 的車輛換道模型[16-17],主要對假名生成速度、城市和各自郊區(qū)的跟蹤情況與基于OpenSSL假名證書的方法的跟蹤情況進行比較,相關的參數(shù)設定如表1所示。
表1 仿真參數(shù)設定
首先對假名生成速度進行仿真對比,將相同物理環(huán)境的3臺虛擬機部署為擁有3個節(jié)點的分布式服務供應商。將其假名生成速度與基于OpenSSL 的假名證書生成方式進行比較,結果如圖5所示。
從圖5中可以看出,隨著假名請求數(shù)量的增加,2種方式單位耗時不斷增加,但本文方案證書生成效率均優(yōu)于傳統(tǒng)OpenSSL方案。
攻擊者為了正確攻擊到目標車輛,有時可能會根據(jù)車輛假名建立假名集合輔助攻擊。攻擊者選擇攻擊目標后可能使用的攻擊方法分為2種。一是隨機選擇假名跟蹤,攻擊者可能認為假名集中的所有車輛都有相同概率為目標車輛,所以選擇一個假名進行跟蹤,此時假設假名集的大小為PN。則攻擊者選擇正確的概率為p=1/PN。二是統(tǒng)計跟蹤,攻擊者通過統(tǒng)計正在使用的假名和使用過的假名進行權值篩選,近期使用的假名再次使用的概率低,計算選出概率最高的假名作為下一次的攻擊目標。這樣的攻擊方式成功率會明顯提升。
圖5 假名生成速度比較
圖6和圖7分別分析了市區(qū)和郊區(qū)2種工況下攻擊者成功跟蹤車輛的概率隨車輛數(shù)量變化的情況,其中郊區(qū)的跟蹤成功率比市區(qū)高,但隨著單位時間內車輛通過數(shù)量增加,跟蹤成功率均明顯下降。
圖6 市區(qū)車輛跟蹤情況
圖7 郊區(qū)車輛跟蹤情況
由城市和郊區(qū)的跟蹤成功率計算得到平均跟蹤成功率,再將本文方法與使用OpenSSL方法的平均跟蹤成功率進行比較,結果如圖8所示。
從圖8可以看出,使用本文方案的跟蹤成功率是假名證書的30%左右。
由各項仿真結果可以看出,基于區(qū)塊鏈的匿名認證方式是一種效率更高、承載量更大、更能保證用戶和車輛身份信息安全的匿名身份認證方式。
圖8 2種方案跟蹤成功率的比較
本文在總結現(xiàn)有匿名身份認證方式的特點與不足的基礎上,結合SM9加密算法設計了基于區(qū)塊鏈的假名身份認證機制,提出了區(qū)塊鏈結構以及區(qū)塊生成的智能合約,改進了傳統(tǒng)的假名身份認證系統(tǒng)結構,設計了基于SM9加密算法的車輛通信流程。
將區(qū)塊鏈技術應用于匿名身份認證系統(tǒng),解決了傳統(tǒng)匿名身份認證中假名證書申請、存儲和管理方面證書申請頻繁、車載資源利用率不足、證書使用率不高的問題,降低了RSU分布情況對車輛安全性的影響。目前,智能汽車數(shù)量不斷增加,車輛之間通信頻繁,因此對服務提供商的假名區(qū)塊申請請求的傳輸與處理速度有一定的要求。但移動網絡的帶寬在短時間內無法得到全面提升,車輛、RSU、KDC三者之間的通信速度仍會受到一定的限制。所以,如何在保障車輛信息安全的條件下進一步降低證書的申請頻率,提升每個假名的利用率將是后續(xù)的研究方向。