李 楠
(福州軟件職業(yè)技術(shù)學(xué)院 軟件工程系,福建 福州350003)
車聯(lián)網(wǎng)是新興的移動(dòng)自組織網(wǎng)絡(luò),它是物聯(lián)網(wǎng)技術(shù)在交通領(lǐng)域的一大應(yīng)用研究,旨在通過(guò)信息的傳遞,對(duì)車輛進(jìn)行有效控制,實(shí)現(xiàn)道路交通的智能化管理。網(wǎng)絡(luò)中的車輛、道路、行人,在無(wú)線或有線網(wǎng)絡(luò)中,按照特定的通信協(xié)議進(jìn)行安全信息交換[1],使得行駛安全得以提升,交通擁堵情況得以緩解。車聯(lián)網(wǎng)中的節(jié)點(diǎn)每隔一段時(shí)間就會(huì)向周邊節(jié)點(diǎn)發(fā)送車輛具體位置、行駛速度、行駛方向等車輛自身狀態(tài)信息,周邊節(jié)點(diǎn)車輛通過(guò)接收到的信息,就可以輔助駕駛員對(duì)路況做出預(yù)判,從而通過(guò)及時(shí)調(diào)整車輛行駛狀態(tài),排除安全隱患,通過(guò)調(diào)整車輛行駛路線,選擇最優(yōu)行駛線路,優(yōu)化了道路使用情況。由此,車聯(lián)網(wǎng)技術(shù)的應(yīng)用將來(lái)必然會(huì)在提高人們出行效率和確保行車安全方面做出巨大貢獻(xiàn),正因如此,越來(lái)越多專家學(xué)者致力于突破車聯(lián)網(wǎng)應(yīng)用中的各個(gè)技術(shù)難題,可以說(shuō)它是未來(lái)交通發(fā)展的方向。同時(shí),在車聯(lián)網(wǎng)技術(shù)的各類探索中,如何確保信息的安全又是一個(gè)至關(guān)重要的技術(shù)焦點(diǎn)。
車聯(lián)網(wǎng)面臨的一大不容忽視的問(wèn)題,就是信息安全。車聯(lián)網(wǎng)的通信基礎(chǔ)主要是無(wú)線網(wǎng),這種通信媒介又恰恰受到攻擊者的“青睞”。一旦攻擊者入侵之后,就可以通過(guò)對(duì)信息的攔截、篡改、重放、刪除等手段,使車聯(lián)網(wǎng)的數(shù)據(jù)安全受到嚴(yán)重威脅。比如,攻擊者可以通過(guò)攔截竊取到車輛位置、車主身份、車主喜好等隱私數(shù)據(jù);攻擊者可以通過(guò)修改真實(shí)消息,誤導(dǎo)交通;攻擊者還可以通過(guò)偽造合法身份,發(fā)送虛假消息,擾亂正常交通秩序。如果攻擊者通過(guò)虛假身份發(fā)送偽造的信息[2],刪除傳輸中的安全信息,或者截取并惡意修改信息,網(wǎng)絡(luò)中的節(jié)點(diǎn)收到經(jīng)過(guò)網(wǎng)絡(luò)傳播的被攻擊的虛假消息,有可能做出錯(cuò)誤的行為決策,降低消息的可信度,干擾正常的交通秩序,甚至影響到人們的出行安全。
基于車輛節(jié)點(diǎn)數(shù)量多,大量的消息、復(fù)雜的認(rèn)證計(jì)算過(guò)程,會(huì)造成消息在時(shí)間上的滯后,這是當(dāng)下車聯(lián)網(wǎng)消息認(rèn)證方案普遍存在的痛點(diǎn),也是關(guān)鍵研究點(diǎn)。短距離無(wú)線通信協(xié)議DSRC規(guī)定,節(jié)點(diǎn)廣播一條信息的時(shí)間間距大約是200 ms。假設(shè)在有效通信范圍內(nèi)的網(wǎng)絡(luò)中至少存在100個(gè)車輛節(jié)點(diǎn),則單個(gè)節(jié)點(diǎn)每隔1 s將收到至少500條消息。而且,節(jié)點(diǎn)收到的消息數(shù)量還會(huì)隨著車輛密度的增大而增加。當(dāng)車輛硬件設(shè)備的數(shù)據(jù)處理能力無(wú)法及時(shí)處理車輛接收的大量數(shù)據(jù),就會(huì)造成消息滯后,因消息的超時(shí)響應(yīng)導(dǎo)致消息的有效利用率大大降低。所以,如何提高簽名認(rèn)證算法的效率,使車輛節(jié)點(diǎn)盡快解析消息,是很多學(xué)者在研究的課題。
車聯(lián)網(wǎng)的核心技術(shù)就是在車輛節(jié)點(diǎn)之間高效、準(zhǔn)確、安全地傳遞信息。就消息通信安全性來(lái)說(shuō),普遍通過(guò)消息簽名與認(rèn)證的方法來(lái)保障。同時(shí),基于車輛網(wǎng)中龐大的通信節(jié)點(diǎn)數(shù)量和硬件通信設(shè)備有限的處理能力,消息處理帶來(lái)的時(shí)間延遲不容忽視[3]。而車輛的移動(dòng)性和車聯(lián)網(wǎng)的應(yīng)用場(chǎng)景,又對(duì)消息的實(shí)時(shí)性提出很高的要求。對(duì)于節(jié)點(diǎn)而言,滯后的消息即是無(wú)用的消息。本文提出一種新型高效的簽名認(rèn)證算法——基于消息池的安全認(rèn)證算法,旨在提高系統(tǒng)的簽名認(rèn)證速率,減少時(shí)延。
車聯(lián)網(wǎng)通信模型通常由車輛、RSU和TA三部分節(jié)點(diǎn)組成,其中,RSU代表分布在道路旁的通信裝置,TA代表?yè)碛袕?qiáng)大計(jì)算和通信能力的可信權(quán)威機(jī)構(gòu)。表1列出了算法中的主要符號(hào)及其含義。
表3.1 符號(hào)及其定義
在車聯(lián)網(wǎng)模型M中假設(shè)有n個(gè)車輛節(jié)點(diǎn),表示為V={v_i,i∈{1,2,…,n}},其中v_i代表M中的車輛節(jié)點(diǎn)。同時(shí),假設(shè)在車聯(lián)網(wǎng)中的所有車輛已經(jīng)安裝好兩個(gè)硬件設(shè)備:一個(gè)是OBU,用于通信,它負(fù)責(zé)發(fā)送消息和接收消息;另一個(gè)是TPD,用于存儲(chǔ)及處理數(shù)據(jù),防止信息被篡改。TA是可信權(quán)威機(jī)構(gòu),在M中假設(shè)有一個(gè)TA,負(fù)責(zé)為M中的所有車輛節(jié)點(diǎn)注冊(cè)合法身份,給通信設(shè)備必要參數(shù)的初始化配置,同時(shí)輔助節(jié)點(diǎn)對(duì)信息簽名認(rèn)證。為了驗(yàn)證消息的合法有效,必須實(shí)現(xiàn)消息的可溯源,TA會(huì)為每個(gè)車輛節(jié)點(diǎn)生成一個(gè)唯一的身份標(biāo)識(shí)碼RID和一組初始化參數(shù),這些數(shù)據(jù)將被保存在車輛節(jié)點(diǎn)的防篡改設(shè)備里。TPD也被默認(rèn)為可靠和安全的設(shè)備。RSU則通過(guò)有線或無(wú)線網(wǎng)絡(luò),在TA和車輛節(jié)點(diǎn)間傳遞信息。RSU的通信范圍與數(shù)據(jù)數(shù)理能力較強(qiáng),它負(fù)責(zé)收集各方車輛發(fā)來(lái)的消息,提交給交通管理部門(mén)作為臨時(shí)管制和信號(hào)燈設(shè)置等交通管理決策的數(shù)據(jù)依據(jù)。
在車聯(lián)網(wǎng)中,車與RSU承擔(dān)消息發(fā)送者和消息接收者雙重角色。消息發(fā)送者要先對(duì)消息進(jìn)行數(shù)字簽名,然后發(fā)送消息;消息接收者則在接收消息后,認(rèn)證消息。把消息發(fā)送者標(biāo)記為SV,消息接收者標(biāo)記為NV。用mmid={bmid,SVRID,tmid}標(biāo)識(shí)一條消息元素構(gòu)成,其中,bmid表示主體消息,SVRID表示消息來(lái)源節(jié)點(diǎn)的身份編號(hào),tmid表示此信息的有效時(shí)限。多條消息在節(jié)點(diǎn)中以隊(duì)列的結(jié)構(gòu)存儲(chǔ),按照消息到達(dá)節(jié)點(diǎn)的先后順序,新消息永遠(yuǎn)放在隊(duì)首,則隊(duì)尾存放的是到達(dá)時(shí)間最久且最快被NV處理的消息。根據(jù)tmid消息在隊(duì)列中的到期時(shí)間,一旦消息在隊(duì)列里停留超時(shí),我們就對(duì)消息作失效處理,丟棄消息。
2.2.1 消息簽名與認(rèn)證的流程
消息發(fā)送者SV先用私鑰加密準(zhǔn)備發(fā)送的消息mmid,生成數(shù)字簽名Smid。接著,消息mmid和對(duì)應(yīng)的簽名Smid—同被SV廣播給M內(nèi)的各節(jié)點(diǎn)。得到消息mmid的節(jié)點(diǎn)NV先用網(wǎng)絡(luò)公布的公鑰和對(duì)應(yīng)的認(rèn)證算法對(duì)Smid進(jìn)行解析,判斷接收到的消息在傳輸?shù)倪^(guò)程中是否遭受過(guò)篡改等攻擊,以確保消息的真實(shí)性、完整性和有效性。如果認(rèn)證通過(guò),則消息mmid則被認(rèn)為是有效的,并進(jìn)一步分析應(yīng)用,否則該消息將會(huì)被作無(wú)效處理。
橢圓曲線算法ECC與經(jīng)典的RSA算法相比,具有如下優(yōu)點(diǎn):安全性高、計(jì)算量小、占用存儲(chǔ)空間少、低網(wǎng)絡(luò)帶寬,本文介紹的算法也是基于ECC的。
2.2.2 算法設(shè)計(jì)依據(jù)
車聯(lián)網(wǎng)中傳播的信息分為三類:控制信息、常規(guī)信息和事故信息。其中,常規(guī)信息占比最大,通常車輛節(jié)點(diǎn)每隔固定時(shí)長(zhǎng)就把自己的行駛狀態(tài)數(shù)據(jù)廣播一次,包括車輛所處位置、行進(jìn)速度、行進(jìn)方向等。顯而易見(jiàn),同一路段,特別是擁擠路段,相同方向車輛的行駛速度相同的幾率很大。一旦車輛節(jié)點(diǎn)發(fā)生事故,就會(huì)生成事故信息對(duì)外廣播,附近車輛節(jié)點(diǎn)如果收到該事故信息,就能夠提前避開(kāi)事故路段,選擇其他更優(yōu)的路段通行。據(jù)交通部門(mén)統(tǒng)計(jì),兩車刮擦、兩車或多車追尾,是事故中最為常見(jiàn)的情況。這就會(huì)造成多個(gè)車輛節(jié)點(diǎn)在相近時(shí)間內(nèi)發(fā)送相同的事故消息的情況。綜上所述,一個(gè)消息接收者在短時(shí)間內(nèi)收到不同發(fā)送者發(fā)送的相同路況消息的概率極高。
本文設(shè)計(jì)的算法思想就是在接收者節(jié)點(diǎn)設(shè)置消息池,消息池中的消息根據(jù)到期時(shí)間形成隊(duì)列。當(dāng)接收者接收一條消息時(shí),先將消息與消息池中的消息比對(duì)(不比對(duì)消息發(fā)送者、到期時(shí)間等附加信息),若接收到的新消息已經(jīng)存在消息池,就跳過(guò)認(rèn)證步驟,認(rèn)為其為可信消息,將新消息中的到期時(shí)間更新到消息池中的原有消息中;若接收到的新消息在消息池中不存在,則進(jìn)行認(rèn)證,認(rèn)證通過(guò),將該消息加入到消息池。當(dāng)消息池容量滿時(shí),根據(jù)到期時(shí)間,清除消息隊(duì)列中已經(jīng)到期或即將到期的消息內(nèi)容。
2.2.3 具體算法設(shè)計(jì)
認(rèn)證算法主要包含以下幾個(gè)部分:
(1)初始化系統(tǒng)。由權(quán)威機(jī)構(gòu)TA生成系統(tǒng)參數(shù):
1)TA在有限數(shù)據(jù)集Fp上,借助大素?cái)?shù)p,構(gòu)造出一個(gè)非奇異的橢圓曲線E,表示為
E:y2=x3+ax+b(mod p),a,b∈Fp。
2)TA從集合G中選取一個(gè)q階生成元P,G是一個(gè)涵蓋了E上任意點(diǎn)和無(wú)限遠(yuǎn)點(diǎn)O的加法群,P≠O。P是生成公鑰和私鑰的關(guān)鍵。
3)TA選取一個(gè)隨機(jī)數(shù)s作為認(rèn)證算法的主密鑰,s∈z*,并計(jì)算出公鑰Ppub=s×P,這個(gè)公鑰對(duì)車聯(lián)網(wǎng)M中的全部節(jié)點(diǎn)和中心服務(wù)器RSU公開(kāi)。
4)TA選取三個(gè)單向的哈希函數(shù),分別表示為
H1:G→Zq,H2:G→Zq,H3:{0,1}*×{0,1}*×G{0,1}*→Zq。
經(jīng)過(guò)以上系統(tǒng)初始化過(guò)程后,TA會(huì)產(chǎn)生一系列的系統(tǒng)參數(shù),表示為params={p,g,a,b,P,Ppub,H1,H2,H3}。在車輛向TA申請(qǐng)合法身份的同時(shí),TA就把這個(gè)參數(shù)集合一并發(fā)給車輛,存儲(chǔ)到車輛的防篡改設(shè)備TPD中,在驗(yàn)證消息完整性時(shí)使用。車聯(lián)網(wǎng)中所有節(jié)點(diǎn)的系統(tǒng)參數(shù)是相同的。
(2)注冊(cè)節(jié)點(diǎn)。注冊(cè)節(jié)點(diǎn)指的是每個(gè)節(jié)點(diǎn)要主動(dòng)向TA申請(qǐng)一個(gè)合法且唯一不可抵賴的身份編號(hào),以及系統(tǒng)初始化產(chǎn)生的系統(tǒng)參數(shù)。為了使車聯(lián)網(wǎng)中的消息都可以溯源,也確保車輛節(jié)點(diǎn)在車聯(lián)網(wǎng)中正常收發(fā)消息,加入到該網(wǎng)絡(luò)中的每一個(gè)節(jié)點(diǎn)都需要完成節(jié)點(diǎn)注冊(cè)。在這個(gè)環(huán)節(jié)中,TA按一定規(guī)則為某節(jié)點(diǎn)生成身份標(biāo)識(shí)RID以及配套的密碼PAD、系統(tǒng)初始化參數(shù)集合params和認(rèn)證算法的主密鑰s,全部存儲(chǔ)在節(jié)點(diǎn)的TPD里面。一個(gè)節(jié)點(diǎn)一旦完成注冊(cè),它所發(fā)送的消息才是可溯源的,也才擁有發(fā)送消息的資格。
(3)生成密鑰及匿名身份。消息簽名所使用的重要參數(shù)就是密鑰及節(jié)點(diǎn)的身份ID[4],如果使用節(jié)點(diǎn)的真實(shí)身份ID作為參數(shù)對(duì)消息進(jìn)行簽名,結(jié)合所傳遞的車輛狀態(tài)信息,使節(jié)點(diǎn)的行車路線、行車習(xí)慣等容易受到竊取、追蹤等攻擊,也增加了車主的安全隱患?;谶@一隱私保護(hù)的考慮,所以使用的是匿名身份進(jìn)行消息簽名,而非使用真實(shí)身份。同時(shí),作為防篡改設(shè)備,充分信任每個(gè)節(jié)點(diǎn)安裝的TPD是安全可靠的。基于TPD的安全性能這一前提,TPD才能負(fù)責(zé)生成私鑰這一關(guān)鍵工作。防篡改設(shè)備TPD會(huì)選擇一個(gè)隨機(jī)數(shù),以及車輛的真實(shí)身份RID計(jì)算得出車輛的匿名身份ID。通過(guò)下面公式,得出車的匿名身份AID
由式(1)即得到車的匿名身份ID,寫(xiě)成AID={AID1,AID2}。然后,PKG結(jié)合車vRID的匿名身份AID與共享的主密鑰s,通過(guò)以下公式計(jì)算得出vRID的私鑰數(shù)據(jù)
(4)生成消息簽名。消息簽名是指消息發(fā)送者將消息使用上一步生成的私鑰,采用橢圓曲線簽名算法進(jìn)行加密后發(fā)送,為后續(xù)接收者驗(yàn)證消息的完整性,也確保了消息發(fā)送者的不可抵賴性??紤]到消息的安全性,要求車聯(lián)網(wǎng)中的節(jié)點(diǎn)在發(fā)送消息前必須先對(duì)消息進(jìn)行簽名,未經(jīng)簽名的消息是不會(huì)被接收者采信的。用S_mid來(lái)表示消息b_mid的數(shù)字簽名,計(jì)算公式為
其中,λi=ri×P,vi∈zq*是一個(gè)隨機(jī)數(shù)。車vRID對(duì)消息進(jìn)行數(shù)字簽名處理完,就可以將消息以廣播的形式發(fā)送車聯(lián)網(wǎng)內(nèi)各個(gè)節(jié)點(diǎn),將該消息表示為
(5)消息池過(guò)濾。消息池過(guò)濾的作用是,考慮到車輛的移動(dòng)性和路況的實(shí)時(shí)變化,通過(guò)篩選淘汰需要認(rèn)證的消息數(shù)量來(lái)節(jié)省時(shí)間,從而提高消息的時(shí)效性。在驗(yàn)證消息完整性前,節(jié)點(diǎn)先將tmid與當(dāng)前時(shí)間作比較,判斷消息是否在有效期內(nèi)。若系統(tǒng)當(dāng)前時(shí)間超過(guò)tmid,表示該消息已過(guò)期,則丟棄該消息。接著判斷消息是否在消息池中,如果在,就跳過(guò)認(rèn)證步驟,認(rèn)為其為可信消息,同時(shí)用當(dāng)前所驗(yàn)證的新消息的到期時(shí)間tmid替換到消息池中原有消息的tmid字段,并將消息移至消息池中消息隊(duì)列隊(duì)首,從而確保隊(duì)尾永遠(yuǎn)是時(shí)效性最差的消息,若消息池滿,則淘汰處于隊(duì)列隊(duì)尾的消息;若接收到的新消息bmid在消息池中不存在,則進(jìn)行認(rèn)證步驟。
(6)消息認(rèn)證。該步驟是指消息接收者使用共享公鑰驗(yàn)證所收到的消息的可靠性,既驗(yàn)證消息完整性和消息發(fā)送者的真實(shí)合法身份,也能解決偽造、篡改、否認(rèn)等問(wèn)題[5]。給定一個(gè)接收到的消息mmid={bmid,AID,tmid,λi,Smid},節(jié)點(diǎn)(車或RSU)將使用已有的系統(tǒng)參數(shù)params={p,g,a,b,P,Ppub,H1,H2,H3}通過(guò)認(rèn)證算法對(duì)該消息進(jìn)行認(rèn)證。使用下面公式來(lái)認(rèn)證消息
如果式(4)成立,則表示消息是真實(shí)完整的,將消息加入消息池隊(duì)列隊(duì)首,否則丟棄該消息。在上述(2)節(jié)點(diǎn)注冊(cè)階段,每個(gè)節(jié)點(diǎn)都被分配了系統(tǒng)參數(shù)集合params,并且λi=ri×P,Ppub=s×P,AID1=δ1×P。網(wǎng)絡(luò)中的每個(gè)合法用戶都可以根據(jù)已知參數(shù)結(jié)合認(rèn)證算法驗(yàn)證所接收到的消息。
基于消息是通過(guò)網(wǎng)絡(luò)傳播這一特性,消息所要應(yīng)對(duì)網(wǎng)絡(luò)攻擊與威脅的挑戰(zhàn)越發(fā)嚴(yán)峻。節(jié)點(diǎn)所發(fā)送的消息難免要遭遇到各式各樣的網(wǎng)絡(luò)攻擊。而消息的安全傳輸是消息有效性的保障,是一切基于消息的車聯(lián)網(wǎng)應(yīng)用研究的大前提。消息簽名與認(rèn)證算法都是基于ECDSA(橢圓曲線數(shù)字簽名認(rèn)證)實(shí)現(xiàn)的,該算法的安全性已被大量專家學(xué)者論證。目前數(shù)學(xué)家們認(rèn)為,對(duì)于大素?cái)?shù)來(lái)說(shuō)是幾乎不可能計(jì)算出離散對(duì)數(shù)的,也就是說(shuō)攻擊者不可能偽造出一個(gè)假消息蒙騙接收者。所以,本文方案使消息具有可認(rèn)證性,允許接收者完全能夠使用認(rèn)證算法篩選出真實(shí)、完整、有效的信息。
車聯(lián)網(wǎng)中節(jié)點(diǎn)密度大,加上節(jié)點(diǎn)收發(fā)消息的時(shí)間間隔短,使得車聯(lián)網(wǎng)中單位時(shí)間內(nèi)傳播的消息總量非常多。出于消息的時(shí)效性考慮,節(jié)點(diǎn)必須迅速檢驗(yàn)篩選大量消息。如果按原有的認(rèn)證方法,節(jié)點(diǎn)只能逐一驗(yàn)證得到的消息,驗(yàn)證速度慢,導(dǎo)致節(jié)點(diǎn)容易錯(cuò)過(guò)許多實(shí)時(shí)性強(qiáng)的消息。我們選取時(shí)下業(yè)界普遍認(rèn)可的多種簽名認(rèn)證算法[3]和本文提出的簽名認(rèn)證方案,分析了不同簽名認(rèn)證算法在同一時(shí)間內(nèi)對(duì)多個(gè)簽名的認(rèn)證效率。經(jīng)過(guò)比較,當(dāng)對(duì)n個(gè)消息的簽名進(jìn)行認(rèn)證時(shí),本文提出的基于消息池的車聯(lián)網(wǎng)信息認(rèn)證算法的運(yùn)算效率要好于當(dāng)前流行且公認(rèn)的CPAS、IBV算法。我們也做了大量的模擬實(shí)驗(yàn),使用IBV、CPAS等多種算法同時(shí)對(duì)若干條簽名進(jìn)行認(rèn)證,本文介紹的算法方案執(zhí)行總時(shí)間最少,且消息數(shù)量越多,時(shí)間優(yōu)勢(shì)就越明顯,因此本文設(shè)計(jì)并提出的算法是安全高效的。