左明慧,鄭成增
(1. 常州工學(xué)院 ,江蘇 常州 213032; 2. 常州工學(xué)院,江蘇 常州 213000)
作為移動(dòng)自組織網(wǎng)絡(luò)最成功的商業(yè)應(yīng)用之一,車(chē)聯(lián)網(wǎng)(Vehicular Ad Hoc Networks, VANETs)[1]已受到廣泛關(guān)注。VANETs提供了車(chē)與車(chē)之間的車(chē)間通信 (Vehicle-to-Vehicle, V2V)和車(chē)與路旁設(shè)施(Vehicle-to-Roadside Infrastructure,V2I)通信,VANETs典型的拓?fù)浣Y(jié)構(gòu)如圖1所示。每個(gè)車(chē)輛安裝車(chē)載單元(On-Board Units)。車(chē)輛遵照專用短距離通信(Dedicated Short Range Communication, DSRC)標(biāo)準(zhǔn)[2]。此外,路側(cè)單元(Road Side Units, RSUs)常固定于路旁,協(xié)助車(chē)輛分發(fā)消息。
圖1 VANETs的拓?fù)浣Y(jié)構(gòu)
增強(qiáng)交通安全,降低交通事故是部署VANETs初衷。VANETs中的車(chē)輛周期地廣播安全消息。依據(jù)DSRC協(xié)議,每個(gè)車(chē)輛每隔100-300 ms廣播安全消息。通常,安全消息(Safety Message, SM)涉及到安全預(yù)警、道路流量信息[3-4]。
然而,車(chē)輛是通過(guò)開(kāi)放的無(wú)線媒介廣播安全消息,安全消息很容易遭受多類安全攻擊,如模仿、修改、身份披露、女巫攻擊等。此外,對(duì)于多類的安全應(yīng)用,車(chē)輛所廣播的安全消息需要包括身份(Identity, ID)、位置、速度等。這就涉及到車(chē)輛隱私[5-8]。依據(jù)SM的信息,攻擊者便能夠跟蹤車(chē)輛的移動(dòng)軌跡,也能竊取車(chē)輛的身份信息。
因此,為了保證網(wǎng)絡(luò)安全,必須要解決兩個(gè)問(wèn)題:(1)保證SM的安全性(Security);使得SM不能被修改,保證SM的完整性;(2)維護(hù)車(chē)輛的隱私,使得車(chē)輛的位置信息、身份不能被泄露。
為此,提出基于哈希消息鑒別碼的安全消息認(rèn)證方案(HMAC-based safety message authentication, HMAC-SMA)方案。HMAC-SMA方案基于身份加密,并利用別名對(duì)消息進(jìn)行簽名,維護(hù)安全消息的隱私。
考慮三層的信任模型,第一層為最高信任層,由信任實(shí)體(Trusted Authority, TA)構(gòu)成,其是信任系統(tǒng)的根基。第二層為次信任層,由TA的代理(Agents of TA, ATAs)構(gòu)成。第三層為低信任層,由RSUs和車(chē)輛構(gòu)成。為了保證通信的安全性,利用安全的有線連接TAs。而RSUs、OBUs利用DSRC協(xié)議進(jìn)行無(wú)線連接,如圖2所示。
圖2 網(wǎng)絡(luò)模型
作為最高信任層,假定TA具有足夠的計(jì)算能力和存儲(chǔ)容量。它主要負(fù)責(zé)產(chǎn)生主私鑰、公鑰和密鑰。同時(shí),它也負(fù)責(zé)為ATAs和車(chē)輛產(chǎn)生私鑰、公鑰。而ATA負(fù)責(zé)給RSU產(chǎn)生私鑰、公鑰對(duì)。部于道路旁邊的RSUs,協(xié)助ATA的車(chē)輛認(rèn)證。
HMAC-SMA算法主要由初始化階段、車(chē)輛身份認(rèn)證和安全消息的認(rèn)證階段構(gòu)成,其中車(chē)輛身份認(rèn)證是指通過(guò)檢測(cè)車(chē)輛身份的合法性,防御攻擊者進(jìn)入系統(tǒng)。
在初始化階段,系統(tǒng)內(nèi)各實(shí)體(TA、ATA、RSU和車(chē)輛)注冊(cè),獲取系統(tǒng)參數(shù),包括初始密鑰、公鑰等。
2.1.1TA注冊(cè)
首先,TA先產(chǎn)生系統(tǒng)的主私密、公私密{mPrk,mPuk}。其中TA利用mPrk給ATAs、RSUs和車(chē)輛產(chǎn)生私鑰,并且此私鑰只有TA知曉。同時(shí),TA產(chǎn)生主安全密碼mSrk,其定義如式(1)所示:
mSrk:=KeyGen(RIDTA,mPrk,TS)
(1)
其中RIDTA表示TA的真實(shí)ID。而TS為時(shí)戳。mSrk主要用于V2V認(rèn)證,為了保證安全,每24小時(shí)更新mSrk。
此外,TA給它的代理ATA產(chǎn)生安全密碼。假定第i個(gè)ATA的安全密碼為SrkAi。最后,當(dāng)TA完成初始化后,便形成TA的參數(shù):
TA_P:{mPrk,mPuk,mSrk,SrkAi}
(2)
2.1.2ATA注冊(cè)
ATA在加入VANETs前,先得向TA注冊(cè)。為此,每個(gè)ATA利用自己的真實(shí)IDRIDAi向TA注冊(cè)。因此,TA依據(jù)式(3)、(4)給第i個(gè)ATA產(chǎn)生公鑰和私鑰對(duì):
(3)
然后,依據(jù)第i個(gè)ATA的私鑰,產(chǎn)生它的安全密碼mSrkAi,如式(4)所示:
mSrkAi:=KeyGen(RIDAi,mPrk,mSrk)
(4)
TA再對(duì)剛注冊(cè)的ATA,更新ATA庫(kù),如式(5)所示:
TA_DB_ATA:={RIDAi,PrkAi,PukAi,SrkAi}
(5)
完成此階段后,第i個(gè)ATA完成了注冊(cè),便形成自己的參數(shù):
ATA_P:{RIDAi,PrkAi,PukAi,SrkAi,mPuk,mSrk}
(6)
2.1.3RSU注冊(cè)
每個(gè)RSU依據(jù)自己的真實(shí)IDRIDR向ATA注冊(cè)。首先,由ATA給RSU產(chǎn)生一對(duì)公鑰、私鑰{PrkR,PukR},如式(7)所示:
(7)
然后,ATA就與TA分享所注冊(cè)的RSU信息,并且,它們更新已注冊(cè)RSU庫(kù):
ATA_DB_RSU:={RIDR,PrkR,PukR}
(8)
TA_DB_RSU:={RIDA,RIDR,PrkR,PukR}
(9)
最后,每個(gè)RSU完成自己的注冊(cè),并形成自己的參數(shù):
RSU_P:={RIDR,PrkR,PukR,mPuk,mSrk}
(10)
2.1.4車(chē)輛注冊(cè)
系統(tǒng)中的每輛車(chē)?yán)米约旱恼鎸?shí)ID和它所在的ATA的區(qū)域編碼ACodeHmATA進(jìn)行注冊(cè)。因此,TA依據(jù)車(chē)輛的真實(shí)ID、ACodeHmATA給車(chē)輛產(chǎn)生主偽身份mPsIDV,此身份用于隱藏自己的真實(shí)身份:
mPsIDV:=Hash{RIDV‖ACodeHmATA‖VTPmPSID}
(11)
其中VTPmPsID表示mPsIDV的有效時(shí)間。
然后,TA依據(jù)式(12)給車(chē)輛產(chǎn)生公鑰、私鑰對(duì):
(12)
隨后,TA將已注冊(cè)的車(chē)輛載入庫(kù),并進(jìn)行更新:
TA_DB_V:={RIDV,mPsIDV,VTPmPSID,
PrkV,PuKV,ACodeHmATA}
(13)
當(dāng)車(chē)輛完成注冊(cè)后,車(chē)輛便可獲取自己的參數(shù):
V_P:={RIDV,mPsIDV,VTPmPSID,
PrkV,PukV,SrkA,mPuk}
(14)
圖3顯示了各實(shí)體的產(chǎn)生公/私鑰的注冊(cè)過(guò)程。為了保護(hù)車(chē)輛的身份ID,對(duì)車(chē)輛身份ID進(jìn)行隱藏,利用偽身份產(chǎn)生公/私鑰。
圖3 各實(shí)體的注冊(cè)過(guò)程示意圖
VANETs中每輛車(chē)需周期地廣播Beacon消息。為此,HMAC-SMA算法利用beacon消息,檢測(cè)車(chē)輛的身份是否合法,而不另設(shè)控制包,降低了系統(tǒng)開(kāi)銷。
首先,車(chē)輛依據(jù)自己偽身份mPsIDV、VTPmPsID和公鑰PuKV,并結(jié)合Hash函數(shù),產(chǎn)生散列消息認(rèn)證碼(Hash Message Authentication Code, HMAC)HCV:
HCV=HMAC(SrkA,mPsIDV‖VTPmPsIDV‖PukV)
(15)
然后,車(chē)輛準(zhǔn)備beacon信號(hào),并對(duì)信號(hào)進(jìn)行簽名,最終形成BSV:
BSV=(mPsIDV‖VTPmPsID‖HCV‖PukV
‖SigPrKV(HCV))
(16)
最后,車(chē)輛每隔100 ms向最近的RSUs廣播BSV信號(hào)。
一旦RSU接收了BSV信號(hào),就對(duì)BSV信號(hào)進(jìn)行認(rèn)證,進(jìn)而對(duì)車(chē)輛身份的認(rèn)證。若BSV未通過(guò)認(rèn)證,則丟棄,并通過(guò)ATA向TA報(bào)告此車(chē)輛。否則,RSU就轉(zhuǎn)發(fā)BSV。認(rèn)證的具體過(guò)程如下:
當(dāng)接收BSV信號(hào),RSU就從BSV中提取mPsIDV、VTPmPsIDV、PukV和SrkA,再依據(jù)式(17)計(jì)算HMAC編碼HC′:
HC′=HMAC(SrkA,mPsIDV‖VTPmPsID‖PukV)
(17)
然后,RSU檢測(cè)HC′是否與HCV相等,如果HC′=HCV,則RSU認(rèn)為所接收的BSV具有完整性,發(fā)送車(chē)輛通過(guò)驗(yàn)證。若HC′!=HCV,則RSU認(rèn)為所接收的BSV受到攻擊者的修改,或者發(fā)送車(chē)輛未受到TA的認(rèn)證。在這種情況下,RSU就丟棄BSV。
為了提高網(wǎng)絡(luò)的安全性,對(duì)每輛車(chē)所發(fā)送的SM進(jìn)行認(rèn)證,同時(shí),也進(jìn)一步對(duì)車(chē)輛身份進(jìn)一步認(rèn)證,提高車(chē)間通信V2V的安全。
為此,SM的發(fā)送車(chē)輛先產(chǎn)生臨時(shí)IDtPsIDV,其專門(mén)用于SM的認(rèn)證,如式(18)所示:
tPsIDV=HMAC(SrkA,sPsIDV‖mPsIDV‖TS)
(18)
然后,對(duì)安全消息MSG進(jìn)行簽名,如式(19)所示:
MSGS=MSG‖HMACmSrk(MSG)‖tPsIDV
‖SIGPrKv(MSG)‖TS
(19)
對(duì)消息MSG進(jìn)行簽名后,形成了消息MSGs。再?gòu)V播MSGs。一旦接收MSGs,車(chē)輛就依據(jù)式(20)計(jì)算HC′,再進(jìn)一步驗(yàn)證MSGs的完整性。
HC′=HMAC(mSrk,MSG)
(20)
如果滿足式(21),則安全消息MSG和車(chē)輛驗(yàn)證成功;否則,認(rèn)為安全消息MSG遭受到攻擊。在這種情況下,接收車(chē)輛就丟棄MSG。
HC′=HMACSrk(MSG)
(21)
提出的HMAC-SMA性能需要滿足身份認(rèn)證、安全消息認(rèn)證和車(chē)輛身份的隱私保護(hù)。
2.2節(jié)分析了身份認(rèn)證。例如,任意一輛車(chē)V向ATA覆蓋范圍內(nèi)的RSU廣播BSV消息。BSV消息包含了基于身份的數(shù)字簽名、偽-IDmPsIDV,而不是車(chē)輛的真實(shí)ID。 數(shù)字簽名和mPsIDV保證了車(chē)輛在V2I通信過(guò)程的節(jié)點(diǎn)認(rèn)證。
此外,2.3節(jié)分析了安全消息的認(rèn)證。任意一條安全消息MSG均包含了HMAC碼,并且其是由mSrk進(jìn)行簽名。因此,只有已認(rèn)證過(guò)的車(chē)輛才具有安全密碼mSrk。同時(shí),安全消息MSG攜帶了發(fā)送車(chē)輛的簽名和臨時(shí)偽身份tPsIDV。因此,HMAC、簽名和臨時(shí)tPsIDV維護(hù)在V2V間的通信車(chē)輛的合法身份。
通過(guò)消息認(rèn)證,確保所接收消息的完整性。2.3節(jié)討論了V2V通信中安全消息。每條安全消息均攜帶了HMAC編碼,而HMAC編碼能夠確保消息真實(shí)性。
每輛車(chē)在通信過(guò)程中采用偽身份、臨時(shí)身份,并沒(méi)有采用真實(shí)身份,這些策略隱藏車(chē)輛的真實(shí)身份,能夠?qū)崿F(xiàn)車(chē)輛身份隱私。
為了更好地分析HMAC-SMA算法性能,利用網(wǎng)絡(luò)仿真軟件NS3、車(chē)流量仿真軟件 SUMO建立仿真平臺(tái),并分析它的網(wǎng)絡(luò)性能??紤]雙向雙車(chē)道的高速場(chǎng)景,車(chē)輛行駛的平均速度為80 km/h。每輛車(chē)的通信半徑為300 m。安全消息為200個(gè)字節(jié),信道帶寬為6 M,車(chē)輛數(shù)從20~100變化。
同時(shí),選擇了文獻(xiàn)[9]提出的PKI-Certi方案、有效條件隱私保護(hù)認(rèn)證(Efficient Conditional Privacy-preserving, ECCP)方案[10]、基于身份消息認(rèn)證(Identity-based message authentication using proxy vehicles, ID-MAP)方案[11]作為參照,并分析它們的性能。其中PKI-Certi方案采用基于證書(shū)的簽名機(jī)制,而ECPP引用基于ID的簽名。ID-MAP引用了batch-驗(yàn)證的隱私保護(hù)策略。
首先分析各算法的通信開(kāi)銷。所謂通信開(kāi)銷是指總的控制包字節(jié)與所傳輸?shù)淖止?jié)數(shù)之比。
表1顯示了HMAC-SMA、ECCP、ID-MAP和PKI-Certi方案的所傳輸?shù)目刂瓢止?jié)數(shù)以及它們包含的字段。從表1可知,HMAC-SMA、ECPP、ID-MAP和PKI-Certi的傳輸?shù)淖止?jié)數(shù)分別為161、172、191和248。相比下,HMAC-SMA算法所傳輸?shù)淖止?jié)數(shù)最低。
表1 各算法所傳輸?shù)淖侄渭白止?jié)數(shù)
圖4顯示了各算法的通信開(kāi)銷。從圖4可知,車(chē)輛數(shù)的增加,加大通信開(kāi)銷。這主要是因?yàn)椋很?chē)輛數(shù)越多,需要傳輸?shù)目刂瓢驮蕉?,相?yīng)的通信開(kāi)銷就越高。此外,從圖4可知,提出的HMAC-SMA的通信開(kāi)銷最低,比ECPP、ID-MAP和PKI-Certi算法分別下降了約2.66%、6.53%和10.15%。原因在于:HMAC-SMA算法在V2I通信間采用基于ID加密,而在V2V通信間采用了HMAC,降低了通信開(kāi)銷。
圖4 通信開(kāi)銷
最后,分析了各算法的執(zhí)行時(shí)間。執(zhí)行時(shí)間越短,算法越簡(jiǎn)單。
從圖5可知,HMAC-SMA算法的執(zhí)行時(shí)間最短。原因在于它的通信開(kāi)銷較低。這歸功于:HMAC-SMA算法在V2V通信階段,采用對(duì)稱加密HMAC策略,降低了系統(tǒng)開(kāi)銷。
圖5 執(zhí)行時(shí)間
針對(duì)車(chē)聯(lián)網(wǎng)的傳輸安全消息的安全問(wèn)題,提出基于哈希消息鑒別碼HMAC的安全消息認(rèn)證方案HMAC-SMA。HMAC-SMA采用對(duì)稱的基于身份加密和非對(duì)稱的HMAC認(rèn)證,一方面保護(hù)車(chē)輛的隱私,另一方面對(duì)安全消息進(jìn)行認(rèn)證,提高了安全消息的安全性。仿真數(shù)據(jù)表明,提出的HMAC-SMA方案能夠滿足VANETs的安全性。相比于同類方案,HMAC-SMA方案降低了通信開(kāi)銷。