郭健,龔銀燕
湖南省教育考試院, 湖南 長沙 410012;湖南科技大學(xué), 湖南 湘潭 411201
車聯(lián)網(wǎng)是物聯(lián)網(wǎng)在交通領(lǐng)域的細(xì)分應(yīng)用[1],指的是通過互聯(lián)網(wǎng)、傳感器、通信和人工智能等技術(shù)將人與車、車與車、車與路和車與城市基礎(chǔ)設(shè)施聯(lián)系起來的一種物聯(lián)網(wǎng)應(yīng)用技術(shù)[2]。車聯(lián)網(wǎng)不僅可以推動智慧城市的發(fā)展[3-4],還能夠減少交通事故的發(fā)生,提高車輛交通的安全性[5]。車輛可以向路側(cè)單元(RSU)發(fā)送自身的控制信息、車速信息、維護(hù)信息等信息,RSU 可以根據(jù)這些信息對交通信息進(jìn)行預(yù)測、對車輛的狀態(tài)進(jìn)行監(jiān)測和更好地對路線進(jìn)行規(guī)劃等。然而,車聯(lián)網(wǎng)的開放性也帶來了許多安全問題[6-7],比如車輛隱私數(shù)據(jù)的泄露和道路安全問題。
隨著物聯(lián)網(wǎng)的發(fā)展,網(wǎng)絡(luò)安全防護(hù)面臨諸多新問題[8]。為保障車聯(lián)網(wǎng)的安全,提出一個能夠滿足匿名性、消息不可區(qū)分性、不可跟蹤性、抵抗合謀攻擊等安全性質(zhì)的群簽名是很有必要的[9]。由于車輛行駛速度較快,群組成員的加入離開十分頻繁,為了減少簽名時間,更快速地處理RSU 接收到的大量的簽名的消息,所提出的方案需要能夠快速地進(jìn)行群成員的加入和撤銷,還需要能夠?qū)邮盏降南⑦M(jìn)行快速驗證。
目前提出的群簽名算法中,成員能夠?qū)崿F(xiàn)動態(tài)加入,但是成員的撤銷問題未能得到很好的解決。趙臻等提出群公鑰是基于群成員而生成的,因此當(dāng)有成員要撤銷時,需要重新生成新的群公鑰[9]。劉世啟等通過選擇與自身行駛狀態(tài)最為相似的車輛進(jìn)行假名的交換,能夠抵抗攻擊者的跟蹤,但是假名交換之后仍需要進(jìn)行驗證激活,該過程增大了通信和計算開銷[10]。鄭明輝等提出一種由群管理者進(jìn)行群公鑰管理的追責(zé)的群簽名身份驗證協(xié)議,但是該群簽名不能進(jìn)行定期更新,容易受到跟蹤攻擊[11]?;谌汉灻纳矸蒡炞C雖然可以保證簽名者的身份不被泄露,但是成員的撤銷通常會導(dǎo)致群公鑰發(fā)生變化,另外,對大量消息的快速驗證問題也未能得到解決。
為了快速地對RSU 接收到的簽名消息進(jìn)行驗證,可以將批量驗證的思想應(yīng)用于車聯(lián)網(wǎng)中。Rahman et al.提出了一種基于組的匿名隱私身份驗證協(xié)議來實現(xiàn)批量驗證,該方法比原有的基于樹的驗證協(xié)議安全級別更高[12]。為解決批量驗證標(biāo)簽時通信開銷大的問題,Yang et al.提出了一種基于對稱密鑰和位沖突的高效驗證組協(xié)議,該方法可以解決多個標(biāo)簽一次性驗證的沖突問題[13]。宋成等提出了一種基于非線性對的批量認(rèn)證方案,通過可信中心生成假名,擺脫了對防篡改機制的依賴[14]。Azees et al.提出了一種可以避免惡意車輛的批量驗證協(xié)議,還設(shè)置了一個追蹤機制,可以追蹤濫用資源的車輛或者路邊設(shè)備[15]。郭楠等通過匿名憑證、零知識證明等技術(shù)提供了一種匿名認(rèn)證手段,并使用可信第三方來恢復(fù)身份[16]。
針對車聯(lián)網(wǎng)隱私保護(hù)且對簽名消息快速驗證的需求,我們提出了一種基于Schnorr 的群簽名批量驗證協(xié)議,Schnorr 是一種零知識協(xié)議,能夠在不暴露任何私人信息的前提下完成證明其身份的有效性。群公鑰是基于各個RSU 的私鑰和當(dāng)前的RSU 產(chǎn)生的隨機數(shù)生成的,因此,群成員能夠?qū)崿F(xiàn)快速的加入與撤銷。它還能夠?qū)崿F(xiàn)單個消息的驗證、同一成員的不同消息的批量驗證和不同成員的消息的批量驗證。
方案設(shè)計三個實體:TA、車輛、RSU。TA 負(fù)責(zé)為車輛和路邊設(shè)備生成公私鑰對,RSU 負(fù)責(zé)收集道路上的車輛所發(fā)送的交通信息和其簽名,并對消息簽名進(jìn)行驗證。協(xié)議有五個階段,分別是系統(tǒng)初始化階段、車輛注冊階段、群組建立階段、消息發(fā)送階段、消息驗證階段。具體的協(xié)議過程如下所示。
TA 選擇兩個大素數(shù)p,、q,其中q|(p- 1),隨機選擇一個g∈,滿足gq≡1modp。接著TA 隨機選擇TAx∈作為其私鑰,并計算其公鑰TAy=gxmodp。TA 將其公鑰進(jìn)行廣播。
車輛在跟RSUj進(jìn)行消息共享驗證之前需要通過TA 進(jìn)行注冊以獲得合法的車聯(lián)網(wǎng)身份,車輛通過安全通道向TA 進(jìn)行注冊,具體的注冊過程如下。
Step1:車輛Vi向TA 發(fā)送一個注冊請求{request,VID} ,其中VID是Vi的真實身份。
Step2:TA 接收注冊請求消息{request,VID} ,對車輛Vi的VID進(jìn)行驗證,若通過,在車輛ID 索引表中進(jìn)行檢索,驗證此Vi是否已經(jīng)注冊過,若未進(jìn)行注冊,則TA 為其生成一個在車聯(lián)網(wǎng)中的身份ID,生成一個隨機數(shù)xi∈作為Vi的私鑰,計算其公鑰yi=gximodp。TA 將{VIDi,IDi,xi,yi,Pr}在其數(shù)據(jù)庫中進(jìn)行保存,其中是所有RSUj的公共公鑰,并將{VIDi,IDi,xi,yi,Pr}發(fā)送給車輛Vi。
為了RSUj對接收到的消息進(jìn)行批量驗證,RSUj需要對其范圍內(nèi)的車輛進(jìn)行群組建立。假設(shè)在RSUj的管轄范圍內(nèi)有n個用戶等待加入群組。
Step1:RSUj向周圍廣播{Pubj},Pubj為RSUj的公鑰。
Step2:車輛生成隨機數(shù)ni∈,則:
向RSUj發(fā)送加入群組請求{req i,ni,yi}。
Step3:RSUj接收{(diào)reqi,ni,yi},對消息進(jìn)行驗證以確認(rèn)車輛Vi的合法身份,RSUj計算:
RSUj檢查reqi==reqi',如果相等則代表車輛Vi的身份合法,可以加入群組中,否則為非法車輛,不可以加入其中。其中X為m個RSU所共享的私鑰,有
將Yj作為該群組的公鑰。RSUj生成一個隨機數(shù),把車輛的公鑰yi和隨機數(shù)vi作為一條記錄存入RSUj的群組索引表中,則:
將{Yj,S i,Vei}發(fā)送給車輛Vi,其中Si是用于車輛數(shù)字簽名的信息,Vei用于給車輛驗證消息的來源是RSUj。
Step5:車輛接收從RSUj發(fā)送的消息{Yj,S i,Vei},通過驗證Vei來驗證該消息的合法性,則:
檢查Vei==Vei',若相等,則此消息是來自RSUj的合法消息。
加入群組的車輛會將交通信息通過其私鑰和群公鑰簽名之后發(fā)送給其所在范圍內(nèi)的RSUj,RSUj會對其進(jìn)行驗證,下面是消息發(fā)送階段的詳細(xì)過程。
車輛Vi通過Y j,Si和其私鑰來生成消息簽名,設(shè)mi是vi需要共享給RSUj的有關(guān)交通的信息。v i生成一個隨機數(shù)k∈,則:
δ={f i,u i,wi}作為mi的簽名,C i用于給RSUj驗證車輛Vi的身份。V i將{δi,Ci,mi}發(fā)送給RSUj。
支持用戶通過賬號訪問該系統(tǒng),系統(tǒng)中的用戶需要擁有不同權(quán)限。對于不同角色的用戶,只允許執(zhí)行在其權(quán)限范圍內(nèi)的各種操作。
1.5.1 單個數(shù)字簽名驗證
RSUj可以根據(jù){δi,Ci,mi}驗證消息的合法性,以下是驗證消息合法性的算法過程,即對單個消息的驗證。
Step1:RSUj接收{(diào)δi,C i,mi},根據(jù)Ci驗證Vi是否已經(jīng)加入群組中,則:
根據(jù)和C i計算得到V i的公鑰yi:
RSUj檢查′是否已經(jīng)加入群組,若已經(jīng)加入,則進(jìn)行下一步的簽名驗證,否則需進(jìn)行群組加入。
Step2:RSUj通過的值找到相對應(yīng)的隨機數(shù)vi,進(jìn)行如下的計算判斷mi是否合法:
1.5.2 數(shù)字簽名的批量驗證
RSUj還能對接收到的多個消息簽名做批量的簽名驗證。假設(shè){δ1,C1,m1},{δ2,C2,m2},…,{δn,C n,mn}是RSUj在時間t內(nèi)收到的n個簽名消息。批量驗證的過程如下所示。
輸入:{δ1,C1,m1},{δ2,C2,m2},…,{δn,C n,mn}。
Step1:RSUj計算得到車輛iV的公鑰
end
end
當(dāng){δ1,C1,m1},{δ2,C2,m2},…,{δn,C n,mn}都來自同一個成員,即假設(shè)計算得到的車輛公鑰都為yi',i'是1,2,… ,n中的某一個值,那么公式可以簡化為:
2.1.1 非形式化分析
本小節(jié)主要對方案匿名性、可追溯性和消息不可偽造性進(jìn)行分析。
匿名性:車輛vi生成一個數(shù)字簽名{δi,Ci,mi},其中Ci是由群公鑰、V i的私鑰生成,RSUj能夠根據(jù)群私鑰對其進(jìn)行解密,得到Vi的公鑰。由于離散對數(shù)問題的困難性,攻擊者無法通過竊聽到的yi、、Yj判斷Ci與yi的聯(lián)系,從而能夠?qū)崿F(xiàn)數(shù)字簽名的身份匿名性。
可追溯性:若車輛發(fā)生交通違法行為或交通事故,RSUj可以根據(jù)群私鑰Xj、隨機數(shù)ai,計算=g-Xjmodp和yi=×Ci得到車輛的公鑰yi。RSUj可以通過TA查詢車輛的真實身份,能夠?qū)崿F(xiàn)事故或違法行為追責(zé)功能。
消息的不可偽造性:攻擊者無法偽造一條能夠驗證是車輛iV生成的消息。假設(shè)攻擊者為ζ,下面將對不同的情況進(jìn)行消息不可偽造性分析。
情況1:攻擊者ζ通過車輛Vi的公鑰yi=gximodp得到Vi的私鑰xi,這樣ζ就能夠根據(jù)私鑰ix偽造iV的任意簽名,但是由于離散對數(shù)問題的困難性,攻擊者無法完成私鑰的提取。
情況2:攻擊者ζ接收到車輛Vi的簽名消息{δi,Ci,mi}和群公鑰Yj,試圖偽造一個簽名消息{δe,Ce,me}。ζ隨機選擇k e∈,計算,可以令但是由于ζ不知道車輛Vi的私鑰,且ke與k不同,mi和me不同,基于哈希函數(shù)的抗碰撞性的特點,ue和ui也是不同的,所以無法偽造不成立。因此此簽名消息是不成立的。
2.1.2 形式化分析
通過使用Scyther 進(jìn)行形式化分析,Scyther是一款用于安全協(xié)議分析和驗證的軟件工具。用戶可以使用Scyther 的圖形和命令行界面來創(chuàng)建協(xié)議模型,通過驗證,Scyther 可以分析模型中可能存在的漏洞,并給出詳細(xì)攻擊流程,可供用戶進(jìn)行協(xié)議的漏洞查補。圖1 是此方案的Scyther 驗證結(jié)果??梢缘贸鼋Y(jié)論,此方案是滿足所需的安全性的。
圖1 Scyther 驗證結(jié)果
我們所提出的方案既能支持同一成員的不同消息的批量驗證,也能支持不同成員的消息的批量驗證。在本小節(jié)會比較不同的方案的計算復(fù)雜度。為方便計算,假設(shè)eT為一次冪運算的時間,hT代表一次哈希運算的時間,T p為線性配對的時間。加法運算、乘法運算和異或運算的時間可以忽略不計。此方案的批量驗證的消耗時間與其他方案的消耗時間如表1 所示。其中Type1 批量驗證指的是對同一簽名者的不同消息進(jìn)行驗證,Type2 批量驗證指的是對不同簽名者的消息的批量驗證。
表1 計算復(fù)雜度比較
如表1 所示,我們的方案使用的是計算復(fù)雜度較小的冪運算和哈希運算,而非文獻(xiàn)[15]中使用到的計算開銷大的雙線性對運算。文獻(xiàn)[15]中采用2GHz GPU 4GB RAM 處理器,模擬了100個簽名消息,得到Tp的平均運算時間是1.6ms,hT的平均運算時間是2.7ms,eT的平均運算時間是0.6ms。本文的方案完成單個消息驗證只需要5eT的時間,即3ms,而文獻(xiàn)[14]和文獻(xiàn)[15]的單個消息驗證時間分別為8.4ms 和6.2ms。我們的方案在單個消息驗證時具有較低的計算開銷。
圖2 揭示了Type1 批量驗證時的消息個數(shù)與所消耗時間的關(guān)系,能夠看出,隨著消息個數(shù)n的增加,本文方案的計算開銷增長得是最緩慢的,即本文方案相較于其他方案能夠更加高效地對多個消息進(jìn)行批量驗證。
圖2 Type1 型批量驗證
此外,圖3 揭示了Type2 批量驗證時的消息個數(shù)與所消耗時間的關(guān)系,同樣,本文方案相較于另外兩個方案更加高效快速。
圖3 Type2 型批量驗證
針對車聯(lián)網(wǎng)匿名性和消息快速驗證的要求,我們提出了一個基于群簽名的批量驗證協(xié)議。方案能夠?qū)崿F(xiàn)群成員的快速加入和撤銷,群成員的撤銷不會影響到其他成員的群公鑰。通過安全分析表明,此方案能夠滿足消息的匿名性、消息的不可偽造性和車輛成員的可追溯性。另外通過實驗表明,我們的方案在進(jìn)行Type1 型和Type2 型批量驗證時的計算開銷都比較低。這對車聯(lián)網(wǎng)的匿名消息快速驗證具有重要的理論意義和應(yīng)用價值。