王夢婷,王 偉,張 強,劉沫萌
西安工程大學 計算機科學學院,西安 710048
車載自組織網絡(vehicular ad hoc network,VANET)是一種連續的自配置式,無需基礎設施的網絡,隨著5G通信技術的發展,VANET的研究已成為人們關注的熱點之一[1]。VANET中車輛的車載單元(OBU)和車輛節點以及路邊單元(RSU)通過使用專用短程通信(DSRC)協議進行通信[2]。通信過程中可能出現許多不同形式的安全攻擊,從而導致VANET通信失敗,造成交通事故。因此通信過程中的信息安全和隱私保護[3]是VANET保障公眾行車安全和提高交通利用率需要解決的問題和挑戰。
根據DSRC協議,每輛車每100~300 ms廣播一次交通安全消息,當RSU覆蓋范圍內有500輛車時,RSU必須每秒驗證約2 500~5 000條消息,因此在交通密集環境中RSU接收到的消息數量十分龐大,這時傳統的認證方法很難及時完成所有消息的認證工作,從而導致很多重要消息因認證時延而丟失[4]。基于此,本文提出一種基于代理車輛的認證方法,利用RSU周邊具有額外計算資源的車輛節點充當代理車輛來協助RSU完成認證工作。在此方法中,首先由代理車輛驗證其他車輛的簽名,然后將驗證結果傳輸給附近的RSU,RSU再驗證代理車輛的輸出,從而達到減輕RSU的認證負擔,提高認證效率,減少信息丟包率,降低計算資源消耗,提高行車安全的目的。
近年來各國學者針對VANET的消息認證問題提出了許多方法,如文獻[5]提出了一種利用RSU作為代理,將OBU簽名的消息進行代理重簽名,從而防止根據簽名追蹤OBU,實現隱私保護的認證方法。文獻[6]利用消息認證碼和密鑰協商協議在車輛和RSU之間創建共享密鑰,提出了一種高效的認證方法。但以上方法均需較大的存儲空間來保存密鑰對和證書。為了解決上述方法存在的證書管理問題,文獻[7]提出了一種基于身份密碼技術的認證方法,該方法使用二進制搜索技術,通過兩個共享密鑰來滿足隱私要求,提高了消息驗證方面的效率,但不能抵抗模擬攻擊。文獻[8]和文獻[9]提出了一個有效的條件隱私保護認證方法。但這些方法存在對無效簽名錯誤接受的問題且易受篡改攻擊。
針對上述方法存在的問題,文獻[10]和文獻[11]提出了不使用雙線性對的認證方法,提高了認證效率,但當RSU覆蓋范圍內出現大量消息需要驗證時,這兩種方法會出現高丟包率以及高延遲。為解決這一問題,文獻[12]提出了一種基于代理車輛的車載網絡認證協議,通過代理車輛協助RSU完成認證工作,進而提高RSU計算速度,減少丟包率,但該方法易受修改攻擊和模擬攻擊。
以上方法雖無需考慮存儲空間問題,但計算能力相對有限,當覆蓋區域存在大量車輛時,無法滿足VANET對簽名與驗證效率的苛刻要求,特別是面向安全應用的消息更需要及時認證與處理。因此本文提出一種基于代理車輛的認證方法,使用橢圓曲線密碼構建安全認證協議,利用RSU周邊具有額外計算資源的車輛節點充當代理車輛,協助RSU完成認證工作[4]。
本文采用典型的VANET網絡模型[13],由可信中心TA、路邊基礎單元RSU和車輛節點組成。
TA:具有高計算能力和通信功能的可信任第三方,擁有最高管理權限。它負責生成系統參數及成員密鑰,并將其預加載到車輛中,當車輛出現任何惡意行為時跟蹤車輛。此外,TA還考慮給具有額外計算能力的車輛的一些“好處”,以促進其作為代理車輛[12]。
RSU:路邊基礎設施節點,與車輛(代理車輛)進行通信,可以檢查接收到的車輛(代理車輛)消息的有效性,并將其發送到交通控制中心[14]。此外,RSU記錄代理車輛的偽身份及其歷史記錄并發送給TA。
車輛:車輛在OBU上配備防篡改裝置(TPD),通過DSRC協議與其他車輛的OBU或RSU相互通信。如果它們有額外的計算資源,可以成為代理工具,為RSU驗證接收到的消息。
(1)消息身份驗證:車輛(代理車輛)和RSU能夠檢查接收到的消息的真實性、完整性和有效性。
(2)身份隱私保護和可追溯性:除TA外,任何第三方都不能通過截獲車輛(代理車輛)發送的消息來識別車輛(代理車輛)的真實身份。但當車輛(代理車輛)出現任何惡意行為時,TA可以從其偽身份中識別車輛(代理車輛)的真實身份[15]。
(3)不可鏈接性:車輛和RSU無法鏈接同一車輛發送的兩條消息。
(4)抵抗攻擊:能夠抵御VANET中常見的安全攻擊,例如模擬攻擊、修改攻擊、重放攻擊等。
本文提出的基于代理車輛的消息認證方法分為五個部分,分別是初始化,匿名身份生成,消息簽名,代理車輛對消息的驗證,RSU對代理車輛輸出的驗證。
在此階段,TA生成系統參數,并加載到車輛的防篡改裝置和RSU中。
(1)TA選擇兩個大質數p和q,并定義橢圓曲線E:y2=x3+ax+b,其中a,b∈Fp,Δ=4a3+27b2≠0。
(2)TA選擇一個階為p,生成元為P的循環加法群G。G由橢圓曲線E上的所有點和無窮遠點O組成。并選擇β∈作為系統私鑰,系統公鑰為Ppub=βP。
(3)TA選擇四個安全哈希函數h(·),k(·),g(·),f(·),其中h(·),k(·),g(·),f(·):{0,1}*→,因此,公共參數para={G,p,q,P,Ppub,h(·),k(·),g(·),f(·)}。
(4)TA選擇βr∈表示RSU的身份ID,其中IDr,1=βrP,IDr,2=ID,IDr=(IDr,1,IDr,2),TA計算RSU與其身份IDr對應的密鑰xr=βr+βf(IDr),并將{para,IDi,β,xr,IDr}放入每輛車的防篡改設備中。
在此階段,車輛通過獲取已注冊的偽身份PIDi隱藏其真實身份IDi,并生成相應的密鑰。車輛vi的防篡改設備從中隨機選擇αi,計算PIDi,1=αiP,PIDi,2=IDi⊕g(αiPpub),從而獲得偽身份PIDi,其中PIDi=(PIDi,1,PIDi.2),計算車輛vi對應偽身份的密鑰xi=αi+βg(PIDi)mod q,將(xi,PIDi)賦予車輛。
利用RSU周邊具有額外計算資源的車輛充當代理車輛,協助RSU完成認證工作。首先計算車輛的額外計算資源,并將有額外資源的車輛作為候補代理車輛,然后從候補車輛中尋找符合標準的代理車輛,如果沒有符合標準的車輛,則按照傳統方法由RSU來驗證車輛的簽名。
代理車輛的選擇在算法1[12]中給出,假設ci是車輛vi的總計算成本,cs是一個消息簽名生成的計算成本,cv是一個簽名驗證的計算成本,u是通過vi簽名的消息總數,y是相互直接通信的車輛數量,ci,r是車輛vi的額外計算資源,p是代理車輛的數量。
算法1代理車輛的選擇

(1)當代理車輛個數為0時計算車輛vi的額外計算資源ci,r=ci-ucs。
(2)如果ci,r>0,則車輛vi是潛在的代理車輛。計算平均值cm。
(3)如果ci,r>cm,則vi被選為代理車輛vp,i,并且vp,i可以驗證的簽名數量為
由于代理車輛的數量很少,因此對協議的效率沒有影響。算法1可以在沒有TA的幫助下由每輛車運行。
在此階段,代理車輛會驗證接收的消息的完整性和發送者的身份。代理車輛首先通過時間戳Ti檢查接收的消息的新鮮度和偽身份的有效性。如果消息是新鮮且偽身份有效,則代理車輛計算gi=g(PIDi),hi=h(mi,PIDi,Ti,Ri),1≤i≤n,并選擇向量A=(a1,a1,…,ai),其中ai是安全參數γ在[1,2γ]中的整數。在VANET場景中,γ值通常設置為80[16]。檢查等式(1)是否成立。


同理可證明等式(2)正確。
在此階段,RSU驗證從代理車輛收到的結果,當檢測到錯誤結果時撤消對應代理車輛的資格。
首先RSU通過等式(4)驗證代理車輛的簽名(Rp,sp)是否有效,如果有效,RSU進行下一步;否則,拒絕該消息。

其次RSU通過時間戳Ti檢查接收到的消息的新鮮度以及偽身份的有效性。如果消息是新鮮且偽身份有效,則RSU進行下一步;否則,拒絕該消息。
最后RSU通過等式(5)檢查代理車輛生成的接收結果的正確性。如果等式(5)成立,則檢查批處理結果的正確性。

如果等式(5)不成立或等式(5)成立且b=0,則RSU認為代理車輛是非法的,并要求TA撤銷該代理車輛。
本文采用橢圓曲線密碼構建安全認證協議,其中橢圓曲線離散對數問題(ECDLP)是給定群G,對于任意x∈,使得等式Q=xP成立是困難的[17]。如果ECDLP問題是困難的,那么在隨機預言機模型中,針對VANET提出的基于代理車輛的消息認證方法就是安全的。即得到的簽名在隨機預言模型中針對自適應選擇的消息和身份攻擊是不可偽造的。
給定ECDLP問題的一個實例Q=xP,假設存在一個攻擊者A可以偽造消息簽名,構造另一個挑戰者C,C是一個隨機預言機,可以對A的詢問做出相應的回答,并最終輸出答案x。本文將通過一個挑戰游戲[18]來證明本方法的安全性。游戲過程如下:
(1)初始化:C設置Ppub=Q,并生成系統參數para={G,p,q,P,Ppub},在系統參數上調用A,進行查詢并做出回答。
(2)k(·)查詢:A查詢Tk[·]列表,若存在(mi,Ti,PIDi,Wi),則C返回其值;否則,C選擇Tk[mi,Ti,PIDi,Wi]←,并將k(mi,Ti,PIDi,Wi)→A。
(3)f(·)查詢:A查詢Tf[·]列表,若存在IDr=(IDr,1i,IDr,2),則C返回其值;否則,C選擇Tf[IDr]←,并將f(IDr)→A。
(4)密鑰查詢:A查詢身份ID,C設置IDr,2=ID,并從Z*q中選擇兩個隨機數f和xr,計算IDr,1=xr P+fPpub。如果Tf[·]列表中已經存在Tf[IDr,1,IDr,2],則C停止游戲;否則,設置Tf[IDr,1,IDr,2]←f,并將與RSU的身份對應的密鑰(xr,IDr,1)返回給A。
(5)簽名查詢:A以身份IDr查詢消息(mi,si,1,Ti,PIDi)的簽名,C從中選擇兩個隨機數ki和si,2,并計算Wi=-si,2P+(ki+si,1)(IDr,1+f(IDr,1,IDr,2)Ppub),如果Tk[·]列表中已經存在Tk[mi,Ti,PIDi,Wi],則C停止游戲(說明簽名已經偽造);否則,設置Tk[mi,Ti,PIDi,Wi]←ki,并將與消息(mi,si,1,Ti,PIDi)對應的簽名(si,2,ki,Wi)返回給A。
最后A輸出偽造簽名(si,2,ki,Wi)。根據分叉引理[19],對消息(mi,si,1,Ti,PIDi,Wi)用不同的哈希表重復以上過程,A可以生成兩個有效的偽造簽名,如等式(7)、等式(8):

C輸 出(si,2-si,2′)(fki-f′ki′)-1作 為ECDLP問 題 的解。但因為ECDLP問題的難解性,C根據輸出的結果無法推斷出正確的簽名值發送給攻擊者A。因此,在隨機預言機模型中,提出的基于代理車輛的消息認證方法是安全可靠且防止偽造的。
(1)消息身份驗證:代理車輛通過驗證車輛的簽名si,1和si,2,來檢查消息的完整性和車輛身份的有效性,并通過等式(1)和等式(2)對多個消息進行批量驗證;RSU通過等式(4)驗證代理車輛的簽名(Rp,sp),從而判斷代理車輛身份的合法性,通過等式(5)驗證代理車輛生成的批量處理結果的正確性。因此本文方法可以保證發送者身份的有效性和消息的完整性以及正確性。
本文方法是基于ECDSA實現的消息認證算法,而ECDSA的安全性取決于離散對數問題的難解性,由上述證明可知,沒有惡意車輛可以偽造有效的消息簽名,即代理車輛的簽名(Rp,sp)和si,1和si,2是不可偽造的。因此本文方法提供消息身份驗證。
(2)身份隱私保護:車輛在發送消息時其真實身份IDi可以通過車輛的防篡改裝置轉化為偽身份PIDi,其中PIDi,1=αi P,PIDi,2=IDi⊕g(αi Ppub)。因此要從PIDi中提取車輛的真實IDi,攻擊者需要求解αi Ppub,在未知αi的情況下求解橢圓曲線離散對數問題是困難的,且不知道TA的密鑰β以及每輛車的偽身份及其對應的密鑰都是隨機變化的,所以沒有人能夠從其偽身份PIDi中找到車輛的真實身份。故除TA外,車輛和RSU都不能從發送的或接收的消息中獲取車輛的真實身份,因此本文方法可以實現用戶隱私保護。
(3)可追溯性:TA可以從車輛的偽身份PIDi中找出車輛的真實身份IDi。因為TA使用其密鑰β可以計算出IDi=PIDi,2⊕g(βPIDi,1)。因此出現任何惡意行為時,TA可以從其消息中跟蹤到車輛的真實身份。
(4)不可鏈接性:由于同一車輛生成的兩個不同的消息是由不同的偽身份及其對應的密鑰進行簽名的,每個偽身份之間不相關且使用不同的αi,因此,車輛和RSU無法鏈接同一輛車發送的兩個消息。
(5)抗攻擊性:本文是基于ECDSA實現的消息認證方法且簽名si,1和si,2具有不可偽造性,因此本文提出的認證方法除了保證消息完整性外還可以抵抗常見的安全攻擊。例如利用時間戳Ti來保證消息的新鮮度并避免重放攻擊。
VANET車間通信具有瞬時性特征,因而通信過程中的計算開銷、通信開銷是認證協議設計時最重要的指標,本章將對本文提出的方法進行性能分析。
為了比較相關方法的計算成本,使用MIRACL庫[20]計算密碼運算的執行時間,使用到的操作系統為IOS10.14.5操作系統,CPU頻率為1.80 GHz,內存為8 GB。相關密碼運算的符號及其時間如表1所示。

表1 密碼運算操作表Table 1 Cryptographic operation table
假設每個代理車輛最多可以驗證300條消息,驗證期間的流量密度為n,則代理車輛的數量m=n/300。
本文方法中RSU驗證單個消息的成本約為5Tmul,RSU驗證由m個代理車輛發送的n條消息的成本約為5mTmul,代理車輛的計算成本包括批量驗證300條消息的時間和生成一個簽名花費的時間,總計306Tmul。
文獻[10]與文獻[11]中RSU驗證n個消息的成本約為(n+2)Tmul。
文獻[12]中RSU驗證單個消息的成本約為2Tmul+5Tp+Tmtp,RSU驗證由m個代理車輛發送的n條消息的成本約為(2mTmul+(2m+3)Tp+Tmtp)。代理車輛的計算成本總計300(4Tmul+5Tp+Tmtp)。
當n=3 000時,具體的計算開銷見表2,其中NA表示不適用。由表2可知當RSU覆蓋區域中有大量車輛時,本文方法與其他方案相比RSU的計算開銷分別減少了76%、98%,代理車輛的計算開銷減少了92.6%,計算開銷更小,具有更好的性能。

表2 計算開銷比較Table 2 Comparison of calculation overhead ms
對于280的安全級別,假定q為160 bit或20 Byte,G中每個元素為40 Byte。時間戳Ti的大小為4 Byte。假設每個代理車輛最多可以驗證300條消息,驗證期間的流量密度為n,則代理車輛的數量m=n/300,在比較中,不考慮消息的大小。
在文獻[12]中,車輛發送給代理車輛的消息是(PIDi,1,PIDi,2,Ti,si,1,si,2),其中PIDi,1,PIDi,2,si,1和si,2∈G,故其大小為40×4+4=164 Byte,因此發送300條消息的通信開銷為164(300)Byte;代理車輛發送到RSU的消息為(PIDp,1,PIDp,2,Tp,sp,1,σ1,σ2,PIDi,1,PIDi,2,Ti),其 中PIDp,1,PIDp,2,PIDi,1,PIDi,2,sp,1,σ1和σ2∈G。因此,m輛代理車輛傳輸的消息的大小為204m+84n(單位:Byte)。

當n=3 000時,本文方法與文獻[12]中車輛向代理車輛發送的消息大小分別為61 200 Byte和49 200 Byte,代理車輛發送到RSU的消息大小分別為373 840 Byte和254 040 Byte。文獻[10]與文獻[11]中車輛發送到RSU的消息大小為432 000 Byte。與文獻[12]相比,本文方法的通信開銷略有增加,但安全性更高。因此與其他方案相比,本文方法具有更好的通信開銷。
在仿真中使用ns-2和VanetMobiSim[20]移動性模型生成工具來估計這些方案在實際環境中的平均消息延遲和平均丟失率。設置仿真場景參數為:道路總長15 km,4條行車道,5個RSU,每個RSU傳輸范圍為1 000 m,車輛傳輸范圍為300 m,且車輛每300 ms廣播一條消息,最小車距40 m。代理車輛最大數量20輛。
圖1是四種方案在仿真中平均消息延遲與車輛數量的關系。隨著車輛數量的增加,四種方案的平均消息延遲的值均在增加,但本文方法的值始終最小,因此仿真結果表明,本文方法通過RSU進行消息驗證的速度更快,能夠在車輛數量較多或交通密集環境中減少消息延遲,提高性能。

圖1 平均消息延遲的比較Fig.1 Comparison of average message latency
圖2是四種方案在仿真中平均消息丟失率與車輛數量的關系。由于同一通信區域內車輛之間頻繁傳輸所引起的沖突,所以隨著車輛數量的增加,四種方法的平均消息丟失率有所上升,但本文方法通過借助代理車輛來協助RSU驗證消息,使得消息驗證速度更快,所以在交通密集環境中,丟棄的消息數減少,接收的消息數增加,因此本文方法的平均消息丟失率較其他三個方案更小,仿真結果表明,本文方案能夠降低消息丟失率,提高性能。

圖2 平均消息丟失率比較Fig.2 Comparison of average message loss rates
圖3是四種方案在仿真中通信開銷與消息數量的關系。在本文方法與文獻[12]中,車輛直接與代理車輛進行通信,且這種通信開銷分布在車輛之間,而文獻[10]與文獻[11]的通信開銷都施加在RSU上,因此較文獻[10]與文獻[11]相比,本文方法的通信開銷更小;較文獻[12]相比,本文方法通信開銷雖有所增加但安全性更高。仿真結果表明,本文方案能夠降低RSU的通信開銷。

圖3 通信開銷的比較Fig.3 Comparison of communication overhead
在VANET網絡的部署應用中,當RSU的覆蓋區域出現大量車輛時,傳統認證方案難以滿足VANET的要求,往往容易導致RSU產生較高丟包率和較高延遲。本文為了解決這些安全弱點從代理車輛協助認證角度,提出了一種新的用于VANET的基于代理車輛的消息認證方案。一方面,為了提高RSU驗證效率,本文使用了代理車輛協助認證的技術方法來提高RSU驗證效率;另一方面,本文采用橢圓曲線密碼構建安全協議,降低了運算的復雜性。安全分析證明本文方法滿足VANET的安全要求。實驗結果表明,同其他方法相比,本文方法產生了較低的計算成本和通信成本。但在消息數量十分巨大的情況下,如何通過增加消息的優先級,保證重要且緊急的消息被優先處理,這是在未來研究工作中需要繼續思考與改進的。