程騰 劉強 石琴 王川宿 張星
(1.合肥工業(yè)大學(xué),自動駕駛汽車安全技術(shù)安徽省重點實驗室 安徽省智慧交通車路協(xié)同工程研究中心,合肥 230009;2.奇瑞汽車股份有限公司,蕪湖 241000)
主題詞:車載自組織網(wǎng)絡(luò) 匿名身份認(rèn)證 區(qū)塊鏈 組密鑰分發(fā) 信息安全
車載自組織網(wǎng)絡(luò)(Vehicular Ad-hoc NETwork,VANET)是以車輛為節(jié)點構(gòu)建的移動通信網(wǎng)絡(luò),可以有效改善道路交通狀況[1-2]。在VANET 中,車輛間及車輛與路端間需交換車輛位置、速度等隱私數(shù)據(jù)[3-4],但該網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)極易發(fā)生變化,且易受到安全攻擊,如分布式拒絕服務(wù)(Distributed Denial of Service,DDoS)[5]、女巫(Sybil)攻擊[6],最終造成隱私數(shù)據(jù)泄露[7-8]。
VANET 場景下,車端的計算能力相對較弱,基于大數(shù)因子分解的公鑰與私鑰的加密方式難以適用[9-10]。相較于大數(shù)因子分解,基于離散對數(shù)問題的橢圓曲線算法[11-13]雖然令計算開銷大幅降低,但是仍難以適應(yīng)VANET 復(fù)雜場景下低延時的需求?;跀?shù)字證書的身份認(rèn)證方式的拓展性較差,管理、維護成本較高,且存在認(rèn)證機構(gòu)(Certification Authority,CA)安全性等問題[14-16]。匿名身份認(rèn)證僅實現(xiàn)隱私保護,對于匿名車輛的信息無法做到可追溯、可撤銷[17-18]。
現(xiàn)階段,密鑰分發(fā)方案主要包括集中式密鑰分發(fā)方案和分布式密鑰分發(fā)方案。Jiao等[19]提出基于邏輯樹的分布式組密鑰計算方法,結(jié)合組密鑰的更新算法,文獻[20]對樹的結(jié)構(gòu)進行了更新。但上述方案均建立在理想條件下,尚未考慮實際VANET的復(fù)雜場景。Shawky等[21]利用智能合約,實現(xiàn)了分布式組密鑰的分發(fā)。但在組成員更新時,路端需向合約提交一筆交易,因其使用非對稱加解密,計算開銷較大。為保證數(shù)據(jù)的隱私和安全,文獻[22]提出適用于物聯(lián)網(wǎng)的認(rèn)證和密鑰管理方案。鑒于VANET是一種特殊的物聯(lián)網(wǎng),傳統(tǒng)物聯(lián)網(wǎng)的安全方案的適用性有待商榷。
集中式密鑰分發(fā)方案的組密鑰由密鑰分配中心(Key Distribution Center,KDC)選擇和分發(fā),用戶僅需保存與KDC之間的會話密鑰[23-24]。文獻[25]提出基于無證書身份認(rèn)證的組密鑰分發(fā)策略,但未考慮路端設(shè)備的合法性。文獻[26]提出的方案實現(xiàn)了匿名與隱私保護,但未提及組密鑰的更新方法。集中式密鑰分發(fā)方案在大規(guī)模的網(wǎng)絡(luò)條件下,KDC需要保存大量密鑰,通信量的增加將導(dǎo)致其負(fù)擔(dān)過重。
為彌補量子密服平臺的缺陷,本文提出一種匿名身份認(rèn)證與組密鑰分發(fā)方案,完成匿名車輛的注銷與追溯,同時將計算開銷轉(zhuǎn)移到路端,降低量子密服平臺的通信量,從而實現(xiàn)組密鑰的高效分發(fā)。
本文提出的車聯(lián)網(wǎng)(Vehicle-to-Everything,V2X)通信場景中,車路云的架構(gòu)如圖1 所示,主要由密服平臺、路側(cè)單元(Road Side Unit,RSU)、車輛和區(qū)塊鏈組成。車輛和RSU 均可與密服平臺建立點對點通信,路端與車輛、車輛與車輛之間通過PC5廣播通信。密服平臺由身份認(rèn)證服務(wù)器(AUthentication Server Function,AUSF)、KDC與CA構(gòu)成。AUSF主要負(fù)責(zé)車輛匿名憑證的生成與區(qū)塊鏈的維護,KDC 主要負(fù)責(zé)車端預(yù)充注密鑰的無線更新和路端設(shè)備量子組密鑰參數(shù)的管理,CA負(fù)責(zé)路端設(shè)備證書的頒發(fā)及撤銷列表的維護。
圖1 系統(tǒng)架構(gòu)
V2X場景中,車端已預(yù)先充注一定數(shù)量的量子會話密鑰與量子完整性驗證密鑰。前期車路、車云之間不互信,雙方在真正通信前均需進行身份互認(rèn),路端與云端通過安全信道連接。本文使用的符號與定義如表1 所示。
表1 符號定義
本文提出的方案包括5 個階段:初始化階段、注冊階段、組密鑰分發(fā)階段、組密鑰更新階段以及撤銷與追溯階段。初始化階段主要完成區(qū)塊鏈、路端與車輛的初始化。注冊階段主要完成車輛匿名憑證的生成與車輛信息的記錄。車輛與云端進行身份認(rèn)證,獲取車輛的匿名憑證,密服平臺生成智能合約并將合約地址告知路端。完成注冊后,各車輛與路端通過計算得到一定數(shù)量的匿名憑證和與之對應(yīng)的智能合約的地址。組密鑰分發(fā)階段,路端通過智能合約完成對車輛的身份認(rèn)證,獲得預(yù)充注到車輛內(nèi)部的量子密鑰。路端計算組密鑰參數(shù)并使用量子密鑰對密鑰進行加密,組播給當(dāng)前合法車輛。在組密鑰更新階段,為保障組通信的前向安全與后向安全,即防止車輛加入或離開路端的組后仍可解密之前的信息,從而進行組密鑰更新。追溯與撤銷階段實現(xiàn)對特定車輛的信息追溯與信息撤銷。
3.1.1 唯一ID的賦予
車載單元(On Board Unit,OBU)的硬件安全模塊(Hardware Security Module,HSM)中儲存OBU 的唯一標(biāo)識VID與預(yù)充注的密鑰。同理,路側(cè)單元的HSM 中儲存有RSU的唯一標(biāo)識RID。
3.1.2 車輛的密鑰預(yù)充注流程
量子密服平臺在OBU的HSM中預(yù)充注一定數(shù)量的QSK與QIK,同時預(yù)充注了n個用于接收組密鑰的QSK。量子密服平臺識別OBU內(nèi)部預(yù)充注的密鑰,并將密鑰與密鑰標(biāo)識匹配。
3.1.3 CA為路端設(shè)備頒發(fā)數(shù)字證書
CA 為第三方(車輛與路端均認(rèn)可)的認(rèn)證中心,根據(jù)路端的唯一標(biāo)識為路端頒發(fā)數(shù)字證書,數(shù)字證書內(nèi)包含路端的公鑰信息。
3.1.4 區(qū)塊鏈初始化
將區(qū)塊鏈設(shè)置為私有鏈,量子密服平臺為其管理者,且擁有唯一部署智能合約的權(quán)限。RSU均為區(qū)塊鏈的節(jié)點,并被賦予調(diào)用智能合約的權(quán)限。
如圖2 所示,注冊階段,車輛與云端的密服平臺進行交互,生成車輛的匿名憑證:
a.車輛i從HSM 獲取身份唯一標(biāo)識VIDi,量子隨機數(shù)發(fā)生器產(chǎn)生n個真隨機數(shù)RNi-c,獲取當(dāng)前時間,并使用車端預(yù)充注的量子會話密鑰進行加密。同時,使用另一個預(yù)充注的量子完整性驗證密鑰針對加密后的消息計算消息驗證碼Mac,形成消息體M1:{QSKtag,QIKtag,EQSK(VIDi,{RNi-c}i=1n,Tv′),HMACQIK(EQSK(VIDi,{RNi-c}i=1n,Tv′)),Tv},并將其發(fā)送至云端。
b.AUSF 收到車輛的身份認(rèn)證請求后,首先根據(jù)時間戳判斷消息的有效性。如果時間差過大,則不處理收到的消息。根據(jù)收到的消息中的QSKtag與QIKtag找到對應(yīng)QSK與QIK,計算消息驗證碼Mac′以驗證消息的完整性。若消息完整,則使用QSK對消息進行解密,得到車輛的唯一標(biāo)識VIDi與車端產(chǎn)生的隨機數(shù){RNi-c}i=1n。AUSF對解密得到的VINi與數(shù)據(jù)庫中查詢獲得的VINi進行比較,如果兩者相等,則產(chǎn)生n個隨機數(shù){RNc-i}i=1n,對解密后得到的隨機數(shù)RNi-c進行“加1”操作。通過ANCi=H(VINi,RNi-c,RNc-i)計算車輛的n個匿名憑證,云端為車輛的n個匿名憑證生成n個智能合約與各智能合約的唯一標(biāo)識,并將唯一標(biāo)識POS與各匿名憑證的哈希值告知車端,通知車端已上傳至區(qū)塊鏈,量子密服平臺從車輛預(yù)充注的密鑰中選擇一個QSK與QIK,并得到對應(yīng)的QSKtag與QIKtag,對消息內(nèi)容加密并計算Mac,得到M2:{QSKtag,QIKtag,EQSK({RNi-c+1,RNc-i,H(ANCi),POS}i=1n,Ts′),HMACQIK(EQSK({RNi-c+1,RNc-i,H(ANCi),POS}i=1n,Ts′)),Ts}發(fā)送給車輛。
c.車端收到密服平臺反饋的消息,通過判斷時間戳與本地的時間差進行后續(xù)處理。車端i根據(jù)消息中QSKtag與QIKtag在車端的安全介質(zhì)內(nèi)找到對應(yīng)的QSK與QIK,計算Mac驗證消息的完整性。若所獲消息完整,則使用QSK進行解密,得到云端返回的{RNi-c+1,RNc-i}i=1n。車輛i計算得到相應(yīng)的n個匿名憑證ANCi=H(VIDi,RNi-c,RNc-i),并計算收到的POS的哈希值。車端組裝消息,告知云端計算結(jié)果,即n對ANCi和POS,將車端組裝消息M3:{QSKtag,QIKtag,EQSK(VIDi,{H(ANCi),H(POS)}i=1n,Tv′),HMACQIK(E,QSK(VIDi,{H(ANCi),H(POS)}i=1n,Tv′)),Tv}發(fā)送至云端。
d.量子密服平臺首先根據(jù)時間戳判斷消息的有效性,決定是否進行進一步處理。AUSF 根據(jù)所獲消息的QSKtag與QIKtag,在云端的安全介質(zhì)內(nèi)找到對應(yīng)QSK與QIK,計算Mac′以驗證消息的完整性。若消息完整,則使用QSK對消息進行解密,進而得到ANCi的哈希值與相應(yīng)POS的哈希值。將通過云端計算步驟b 得到的POS的哈希值與原始消息對比,相同則認(rèn)為車輛已完成匿名憑證的計算,并獲得POS。至此,初始化完成。
如圖3所示,組密鑰分發(fā)階段車輛將與路端交互得到組密鑰。流程為:
圖3 組密鑰分發(fā)流程
a.路端在特定范圍內(nèi)廣播所屬唯一標(biāo)識RID與數(shù)字證書DC,即M4:{RID,DC}。
b.車輛駛?cè)肼范送ㄐ欧秶?,通過PC5廣播接收路端設(shè)備的數(shù)字證書,并驗證路端身份的合法性。測試車輛確認(rèn)路端的身份,車輛向路端廣播自身的匿名憑證與參數(shù),即M5:{EPK(ANCi,POS,Tv′),Tv}。
c.路端首先根據(jù)時間戳判斷消息的有效性,決定是否進行進一步處理。路端使用私鑰SK對消息解密,對比Tv與Tv′。通過解密得到的POS找到并調(diào)用智能合約,反饋預(yù)充注在車輛中的密鑰QSK,則可認(rèn)證車端身份合法性。路端隨機數(shù)發(fā)生器產(chǎn)生一個隨機數(shù)作為GSP-1,將調(diào)用智能合約所得對稱密鑰QSK對GSP-1進行加密。RSU循環(huán)上述過程,完成所有車輛的認(rèn)證。路端計算當(dāng)前所有合法車輛的匿名憑證的哈希值作為GSP-2,使用私鑰對消息進行簽名得到σ,拼接時間戳后,將Ts組播給當(dāng)前所有車輛。消息內(nèi)容為M6:{GSP-2,{H(ANCi),QSKtag,EQSK(GSP-1,Ts′)}i=1n,σ,Ts}。
d.車端接收組播消息,檢查特定的匿名憑證的哈希值,存在即為驗證成功,反之驗證失敗。驗證成功的車輛截取消息GSP-2,憑借路端證書獲得的公鑰對簽名進行驗證。對消息解密得到GSP-1,根據(jù)得到的組密鑰GSP-1與GSP-2計算出組密鑰GSK=H(GSP-1,GSP-2)。
由于路端設(shè)備固定,路端廣播通信范圍內(nèi)的車輛會持續(xù)更新。將路端廣播通信范圍內(nèi)的車輛視為一個組,路端設(shè)備管理的組所面臨的車輛更新可分為新成員加入和組成員離開2種情況。
新成員加入過程的組密鑰更新流程為:
a.當(dāng)新的車輛完成初始化,準(zhǔn)備加入當(dāng)前路端設(shè)備管理的組以獲得組通信服務(wù)時,為保證前向安全與后向安全,需對組通信加密的密鑰進行更新。路端對新加入車輛j發(fā)送的信息進行處理,通過POS找到智能合約,并對其進行調(diào)用,若返回H(RNc-i)與密鑰QSK,則認(rèn)為車端身份合法。其中,GSP-1 保持不變,路端通過調(diào)用智能合約所得密鑰QSK對GSP-1加密。新加入車輛身份認(rèn)證完成后,路端將重新計算當(dāng)前所有合法車輛的匿名憑證的哈希值作為GSP-2,并使用私鑰對消息進行簽名得到σ,拼接時間戳后,將Ts組播給當(dāng)前所有車輛,即{GSP-2,{H(ANCi),QSKtag,EQSK(GSP-1,Ts′)}i=11,σ,Ts}。
b.對于新加入車輛,執(zhí)行組密鑰獲取階段步驟d。對于組內(nèi)原有成員,僅需重新獲得GSP-2,進而計算GSK。
組成員離開過程的組密鑰更新流程為:
a.路端判斷當(dāng)前車輛是否為當(dāng)前組成員,若已確認(rèn),路端將重新生成GSP-1,并對之前調(diào)用智能合約得到的密鑰進行加密。此時,重新計算當(dāng)前組內(nèi)剩余合法車輛的匿名憑證的哈希值為GSP-2,并使用私鑰對參數(shù)進行簽名得到σ,拼接時間戳后,將Ts組播給當(dāng)前所有車輛,即{GSP-2,{H(ANCi),QSKtag,EQSK(GSP-1,Ts′)}i=1n-1,σ,Ts}。
b.組內(nèi)剩余車輛接收組播消息,通過檢索匿名憑證判斷當(dāng)前位置。組內(nèi)剩余車輛截取消息GSP-2,利用路端證書獲得的公鑰對簽名進行驗證,QSKtag找到密鑰QSK,進行解密得到GSP-1。由組密鑰GSP-1 與GSP-2得到組密鑰GSK=H(GSP-1,GSP-2)。
3.5.1 撤銷
如圖4 所示,路端或者車輛獲取當(dāng)前時間,隨即向量子密服平臺上傳車輛信息,并使用QSK加密得到(ANCi,POS),計算出Mac發(fā)送至量子密服平臺。云端的身份認(rèn)證服務(wù)器收到車輛的身份認(rèn)證請求后,首先根據(jù)時間戳判斷消息的有效性,決定是否進行進一步處理。云端的身份認(rèn)證服務(wù)器根據(jù)收到的QSKtag與QIKtag,在云端的安全介質(zhì)內(nèi)找到對應(yīng)的QSK與QIK,計算Mac′以驗證消息的完整性。如果消息完整,則繼續(xù)使用QSK對消息解密,得到車輛的ANCi與POS,AUSF 獲取ANCi對應(yīng)的VID,判斷車輛信息是否泄漏。如果車輛信息發(fā)生泄露,量子密服平臺立即銷毀VID對應(yīng)的智能合約,從而實現(xiàn)車輛的撤銷。
圖4 撤銷流程
3.5.2 追溯
監(jiān)管機構(gòu)欲根據(jù)車輛的匿名憑證獲取車輛的具體行程,量子密服平臺憑借匿名憑證檢索其真實身份VID,憑借VID找到其智能合約,通過智能合約的事件日志查看具體行程,同時反饋給監(jiān)管機構(gòu),從而實現(xiàn)車輛信息全生命周期可追溯。
Scyther 能夠?qū)f(xié)議模型進行建模、分析和驗證,檢測協(xié)議中可能存在的安全漏洞和缺陷。建模時,需要對協(xié)議的安全屬性進行聲明,描述協(xié)議應(yīng)滿足的安全屬性,包括協(xié)議執(zhí)行過程中的行為,例如身份認(rèn)證、密鑰交換、消息完整性、機密性等。通過聲明和驗證這些安全屬性,檢測協(xié)議中可能存在的漏洞和攻擊,確保協(xié)議的正確性和安全性[27]。本文涉及的安全屬性包括:
a.機密性(Secret),用于指定協(xié)議或系統(tǒng)中的機密信息,包括加密密鑰、密碼等。為保護信息安全,僅支持授權(quán)后訪問使用。
b.活性(Alive),用于驗證協(xié)議或系統(tǒng)的活性(Liveness)。若該系統(tǒng)或協(xié)議具有活性屬性,則將于特定時間點執(zhí)行特定操作或產(chǎn)生特定響應(yīng)。
c.弱一致性(Weakagree),為協(xié)議安全屬性,指兩個或多個實體在協(xié)議的某個點上是否達(dá)成一致。在Scyther 中,該屬性用于檢查協(xié)議中的實體是否達(dá)成共識,并不需要與其決策完全相同。
d.不一致性(Niagree),同樣為協(xié)議安全屬性,指兩個或多個實體在協(xié)議的某個點上是否不能達(dá)成一致。在Scyther 中,該屬性用于檢查協(xié)議中的實體是否不能達(dá)成共識。
在本方案建模過程中,共有3種角色,即車端V、路端R與量子密服平臺S。車端V與量子密服平臺S生成匿名憑證的流程驗證結(jié)果如圖5 所示,車端V 與路端R的組密鑰分發(fā)流程的驗證結(jié)果如圖6所示??梢钥闯?,3種角色均可實現(xiàn)機密性、活性、弱一致性、不一致性屬性,這意味著實現(xiàn)了相互認(rèn)證。形式驗證的結(jié)果表明,本文的組密鑰分發(fā)方案具有安全性。
圖5 注冊流程驗證
圖6 組密鑰分發(fā)驗證
為定量驗證本文方案的實用性,將提出的方案與文獻[21]、文獻[28]的方案進行對比。假設(shè)車路間組密鑰分發(fā)場景中共有n輛汽車和1個路端設(shè)備。網(wǎng)絡(luò)通信中維護連接所消耗的資源遠(yuǎn)大于內(nèi)容存儲消耗的資源,故本文未使用傳統(tǒng)方案中計算參與者通信傳輸所需的數(shù)據(jù)量,而選擇比較發(fā)送的消息數(shù)量。表2所示為組密鑰分發(fā)過程中車、路之間的消息發(fā)送流程與建立的總連接數(shù)量。
表2 不同方案信令開銷 輪次
為保證計算開銷的準(zhǔn)確性,在內(nèi)存8 GB 的I5-7300HQ 平臺上計算不同操作所需時間,通過累加方式計算耗時。由于單次操作的耗時較短,計算存在較大誤差,本文循環(huán)100 000 次,計算平均耗時。假定所有方案使用的哈希算法為SHA-256,消息驗證采用哈希運算消息認(rèn)證碼(Hash-based Message Authentication Code,HMAC),橢圓曲線密碼體制(Elliptic Curve Cryptosystem,ECC)使用相同的橢圓曲線,對稱加密算法為SM4,非對稱加密使用SM2 算法。本文借助OpenSSL 庫計算各操作的計算開銷,測試代碼已上傳到https://gitee.com/liuqiang112358/timetest。具體計算開銷如表3所示。
表3 不同操作計算開銷 μs
計算車輛與路端完成組密鑰分發(fā)過程中所有交通參與者的通信開銷,結(jié)果如表4與圖7所示。
表4 方案對比 μs
圖7 路端計算開銷
綜上所述,相較于文獻[21]、文獻[28],本文方案信令開銷減少近50%,相較于文獻[28],車端的計算開銷約縮短44%,路端計算開銷僅約為該方案的20%,在多車組密鑰分發(fā)階段與組密鑰更新階段相較于使用區(qū)塊鏈方案更具優(yōu)勢。
本文根據(jù)車路所處的環(huán)境與通信方式,結(jié)合車端與云端的量子隨機數(shù)發(fā)生器和量子密鑰,設(shè)計了一套適用于車路協(xié)同場景的匿名身份認(rèn)證方案與組密鑰分發(fā)方案,實現(xiàn)了車輛的隱私保護與組密鑰的更新。通過在區(qū)塊鏈上部署智能合約,降低了量子密服平臺的計算開銷,彌補了量子密服平臺集中式密鑰分發(fā)的缺陷,并實現(xiàn)了惡意車輛注銷與信息的可追溯。當(dāng)組成員更新頻繁時,可有效減少量子密服平臺的計算開銷,同時保證V2V通信的前向安全與后向安全。