周楠,杜紅珍
(寶雞文理學(xué)院數(shù)學(xué)與信息科學(xué)學(xué)院,陜西寶雞 721013)
車載自組網(wǎng)(Vehicle Ad hoc Network,VANET)簡稱車載網(wǎng),不僅能為車輛用戶提供安全性服務(wù),還可提供娛樂等增值類服務(wù),在智能交通中發(fā)揮著重要作用。
近年來,基于區(qū)塊鏈技術(shù)獨(dú)有的優(yōu)良特性,已經(jīng)有不少研究者嘗試將區(qū)塊鏈技術(shù)運(yùn)用到VANET中。如文獻(xiàn)[1]在加密過程用到了區(qū)塊鏈中的Merkle樹結(jié)構(gòu)。文獻(xiàn)[2]使用了區(qū)塊鏈技術(shù)中的分布式技術(shù)存儲(chǔ)數(shù)據(jù),以實(shí)現(xiàn)車輛的隱私及交通信息的完整性。文獻(xiàn)[3]則用到了區(qū)塊鏈技術(shù)的不可篡改性和可擴(kuò)展性等。
無證書公鑰密碼體制(Certificateless Public Key Crypotography,CLPKC)摒棄了基于傳統(tǒng)公鑰基礎(chǔ)設(shè)施[4-5]和基于身份[6-7]的證書管理和密鑰托管的弊端。已有的無證書簽名方案[8-11]大都涉及雙線性對(duì)的大量使用,存在成本高、效率低等問題,甚至有些方案[12-14]不滿足最基本的安全性需求。
基于上述研究,文中基于區(qū)塊鏈技術(shù)提出了一個(gè)適用于VANET 的無證書簽名方案,并進(jìn)行了嚴(yán)格的安全性分析和性能分析。結(jié)果表明,在隨機(jī)預(yù)言機(jī)模型下,文中方案可證明是安全的,且滿足車載網(wǎng)的安全和隱私相關(guān)需求。
文中對(duì)傳統(tǒng)VANET 系統(tǒng)模型進(jìn)行了改進(jìn)。在新的系統(tǒng)模型中,可信機(jī)構(gòu)為密鑰生成中心(Key Generation Center,KGC)。引入不同結(jié)構(gòu)的Merkle 樹分別作為區(qū)塊鏈BC-1 和區(qū)塊鏈BC-2 鏈接,在VANET 系統(tǒng)中用于存儲(chǔ)不同的數(shù)據(jù)。其中,BC-1用于存儲(chǔ)車輛用戶生成的偽身份和對(duì)應(yīng)的未撤銷的參數(shù),BC-2 用于存儲(chǔ)驗(yàn)證后被撤銷的偽身份?;趨^(qū)塊鏈的車載網(wǎng)系統(tǒng)模型如圖1 所示。
圖1 基于區(qū)塊鏈的車載網(wǎng)系統(tǒng)模型
雙線性對(duì)、CDH 問題及ECDL問題詳見文獻(xiàn)[13]。
輸入安全參數(shù)k,(G1,+)和(G2,·)是兩個(gè)q階循環(huán)群,P為G1群生成元,雙線性對(duì)e:G1×G1→G2。KGC隨機(jī)取,計(jì)算系統(tǒng)公鑰:
選取五個(gè)安全哈希函數(shù),分別定義如下:
最后,秘密保存主密鑰s,公布系統(tǒng)參數(shù):
給定用戶Vi的真實(shí)身份RIDi,KGC 計(jì)算θi=s-1H0(RIDi),將(RIDi,H0(RIDi))作為Vi的數(shù)據(jù)存儲(chǔ)以便追蹤。隨機(jī)選取,計(jì)算hi=H1(RIDi,Ppub),ωi=λiH0(RIDi),xi=s-1+hiλi。通過安全信道將部分私鑰PSKi=(xi,θi,ωi)發(fā)送給車輛用戶Vi。
接收到部分私鑰PSKi后,Vi先驗(yàn)證從KGC 接收到的部分私鑰是否滿足等式若等式成立,則接收部分私鑰,否則請(qǐng)求重新發(fā)送部分私鑰。隨機(jī)取秘密值,用戶私鑰為SKi=(xi,yi),計(jì)算Xi=xiPpub2和Yi=yiPpub2,將PKi=(Xi,Yi)作為自身公鑰。
對(duì)待簽名消息Mi,Vi隨機(jī)選取zi∈Zq*,計(jì)算Zi=ziPpub2。在時(shí)間段ti內(nèi),Vi計(jì)算ji=H2(Mi,PIDi,PKi,ti,Zi),ηi=H3(Mi,PIDi,Ppub,ti,Zi),Γi=H4(Mi,PIDi,PKi,Ppub,Zi),δi=(zi+ηixi)Ppub1+jiyiΓi。
(Zi,δi)即為ti時(shí)間段內(nèi)偽身份PIDi的用戶在消息Mi上的簽名。Vi將消息/簽名數(shù)組(Mi,(Zi,δi))及PIDi,ti廣播到RSU。
RSU 接收到(Mi,PIDi,Zi,δi,ti)后,先檢查時(shí)間戳ti是否有效,若有效,可搜索區(qū)塊鏈BC-1 和BC-2 以獲得偽身份PIDi,確保收到的PIDi存在于BC-1,而非BC-2,這表示已將PIDi分配給Vi,并且尚未撤銷。
1)單個(gè)簽名驗(yàn)證
接收到Vi的數(shù)組(Mi,(Zi,δi)) 及PIDi,ti后,RSU進(jìn)行哈希運(yùn)算得ji、ηi和Γi。驗(yàn)證e(δi,Ppub2)=e((Zi+ηiXi),Ppub1)·e(Γi,jiYi)是否成立,若成立,則接受簽名(Zi,δi);否則,RSU 將拒絕這個(gè)簽名。
2)批量簽名驗(yàn)證
接收到不同車輛用戶(V1,V2,…,Vn)的消息簽名組(M1,PID1,Z1,δ1,t1),(M2,PID2,Z2,δ2,t2),…,(Mn,PIDn,Zn,δn,tn) 后,RSU 驗(yàn) 證 等 式是否成立;若成立,則接受Mi上簽名(Zi,δi)(i=1,2,…,n),否則拒絕簽名。
若某用戶Vi發(fā)生違法犯罪行為,KGC 可追蹤其真實(shí)身份,撤銷其偽身份PIDi并存儲(chǔ)在區(qū)塊鏈BC-2 中。KGC 用s搜索滿足e(PIDi,sTi)=e(H0(RIDi),P+PIDi) 的信息(RIDi,Ti),KGC 在數(shù)據(jù)庫中找到H0(RIDi),使e(PIDi,sTi)=e(H0(RIDi),P+PIDi) 成立,即揭露了Vi的真實(shí)身份PIDi。最終,撤銷Vi偽身份并將其存儲(chǔ)在區(qū)塊鏈BC-2 中。
無證書簽名安全模型見文獻(xiàn)[13]。
定理1 在隨機(jī)預(yù)言機(jī)模型下,假設(shè)敵手A1在多項(xiàng)式時(shí)間t內(nèi),最多進(jìn)行qHi(i=0,1,2,3,4) 次哈希詢問,qk次部分私鑰詢問,qs次私鑰詢問,qp次公鑰詢問,qps次偽身份詢問,qsig次簽名詢問,以不可忽略的優(yōu)勢ε贏得Game1,則存在一多項(xiàng)式算法C 在內(nèi),以不可忽略的優(yōu)勢解決CDH 難題,其中,tm表示在群G1中進(jìn)行一次點(diǎn)乘運(yùn)算所需的時(shí)間。
證明:輸入某CDH 的任意實(shí)例,令P∈G1,X=aP,Y=bP,C 與A1進(jìn)行Game1 中的交互,利用A1作為子程序計(jì)算出abP。C 需維護(hù)列表L0、L1、L2、L3、L4、Lk用于記錄A1在Game1 進(jìn)行的詢問,初始狀態(tài)記錄為空。
1)C 運(yùn)行系統(tǒng)建立算法,令Ppub1=X,發(fā)送params={q,P,G1,G2,e,Ppub,H0,H1,H2,H3,H4}給A1。C選擇索引1 ≤j≤qH0,qH0表示對(duì)預(yù)言機(jī)H0進(jìn)行的最大詢問次數(shù)。
2)A1與C 進(jìn)行一下交互詢問。
H0詢問:C 維護(hù)列表L0=(RIDi,di)。若存在相應(yīng)記錄,則返還記錄值;否則,隨機(jī)選取di∈G1添加到表L0,并返還di給A1。
H1詢問:C 維護(hù)表L1=(RIDi,Ppub,ei)。若存在相應(yīng)記錄,則返還記錄值;否則,隨機(jī)選取添加到表L1,并返還ei給A1。
H2詢問:C 維護(hù)L2=(Mi,PIDi,PKi,ti,Zi,fi)。若存在相應(yīng)記錄,則返還記錄值;否則隨機(jī)取添加到表L2,并返還fi給A1。
H3詢問:C 維護(hù)L3=(Mi,PIDi,Ppub,ti,Zi,gi)。若存在相應(yīng)記錄,則返還記錄值;否則隨機(jī)取添加到表L3,并返還gi給A1。
H4詢問:C 維護(hù)L4=(Mi,PIDi,PKi,Ppub,Zi,ki)。若有相應(yīng)記錄,則返還記錄值;否則,隨機(jī)取ki∈G1添加到表L4,并返還ki給A1。
部分私鑰詢問:C 維護(hù)列表Lk=(RIDiPSKi,SKi,PKi,PIDi) 。當(dāng)i≠j時(shí),若有相應(yīng)記錄,則返還記錄值;否則,C 查詢表L0和L1,隨機(jī)取,ωi∈G1,計(jì)算θi=xidi-ωiei,添加元組PSKi=(xi,θi,ωi)到列表Lk中,并返還PSKi給A1;當(dāng)i=j時(shí),終止程序。
偽身份詢問:C 維護(hù)Lk=(RIDi,PSKi,SKi,PKi,PIDi)。若存在相應(yīng)記錄,則返還記錄值;否則,C 隨機(jī)取計(jì)算,添加PIDi到Lk,返還PIDi。
公鑰詢問:C 維護(hù)Lk=(RIDi,PSKi,SKi,PKi,PIDi) 。若存在相應(yīng)記錄,則返還記錄值;否則,C 進(jìn)行部分私鑰查詢獲得xi,隨機(jī)取yi∈Z*q,計(jì)算Xi=xiPpub2,Yi=yiPpub2,添加PKi=(Xi,Yi)到Lk,返還(Xi,Yi)給A1。
私鑰詢問:C 維護(hù)Lk=(RIDi,PSKi,SKi,PKi,PIDi)。當(dāng)i≠j時(shí),若存在相應(yīng)記錄,則返還記錄值;否則,C進(jìn)行公鑰查詢生成公私鑰對(duì)(SKi,PKi),添加(RIDi,PSKi,SKi,PKi,PIDi) 到Lk,返還(xi,yi);當(dāng)i=j時(shí),終止程序。
替換公鑰詢問:A1選擇新公鑰,并發(fā)送。C 查看Lk是否存在記錄PKi,若存在,令,SKi=⊥;否則,添加(RIDi,PSKi,,⊥,PIDi)到Lk。
簽名詢問:C 由公鑰詢問得(SKi,PKi) 。當(dāng)i≠j時(shí),C 隨機(jī)取,計(jì)算Zi=ziPpub2,fi=H2(Mi,PIDi,PKi,ti,Zi),gi=H3(Mi,PIDi,Ppub,ti,Zi),ki=H4(Mi,PIDi,PKi,Ppub,Zi),δi=(zi+gixi)Ppub1+fiyiki,返還(Zi,δi)。
3)A1輸出一個(gè)在消息上的偽造簽名。若,則C 終止程序;否則,由分叉引理[14]C 和A1選擇不同哈希函數(shù)H3進(jìn)行與上述相同的模擬交互過程,得到另外一個(gè)有效簽名。于是有:
A1在此Game1 中獲勝,當(dāng)且僅當(dāng)以下事件同時(shí)發(fā)生。
E1:是在消息上生成的有效簽名;
E2:A1沒有查詢過的部分私鑰;
E3:A1沒有查詢過的簽名。
由P(E1)=ε,知,C 利用A1解決CDH 難題的優(yōu)勢為。
定理2 在隨機(jī)預(yù)言機(jī)模型下,假設(shè)敵手A2能在多項(xiàng)式時(shí)間t內(nèi),最多進(jìn)行qHi(i=0,1,2,3,4)次哈希詢問,qs次私鑰詢問,qps次偽身份詢問,qp次公鑰詢問,qsig次簽名詢問,以不可忽略的優(yōu)勢ε贏得Game2,則存在一個(gè)多項(xiàng)式算法C,在多項(xiàng)式時(shí)間內(nèi),能以不可忽略的優(yōu)勢解決CDH 難題,其中,tm表示在群G1中進(jìn)行一次點(diǎn)乘運(yùn)算所需的時(shí)間。
證明:輸入某CDH 的任意實(shí)例,令P∈G1,X=aP,Y=bP,C 與A2進(jìn)行Game2 中的交互,利用A2作為子程序計(jì)算出abP。C 需要維護(hù)表L0、L1、L2、L3、L4、Lk,用于記錄A2在Game2 中的詢問,初始狀態(tài)記錄為空。
1)C 運(yùn)行系統(tǒng)建立算法,令Ppub1=sP,將主密鑰s和params={q,P,G1,G2,e,Ppub,H0,H1,H2,H3,H4) 發(fā)送給A2。
2)A2與C 進(jìn)行一下交互詢問。
由于H0、H1、H2、H3偽身份詢問和簽名詢問與定理1 中類似,不再贅述。
H4詢問:C 維護(hù)L4=(Mi,PIDi,PKi,Ppub,Zi,ki)。若存在相應(yīng)記錄,則返還記錄值;否則,隨機(jī)取,令ki=τiY=τi(bP),并添加到L4,返還ki給A2。
私鑰詢問:C 維護(hù)Lk=(RIDi,PSKi,SKi,PKi,PIDi)。當(dāng)i≠j時(shí),若存在相應(yīng)記錄,則返還記錄值;否則,C 隨機(jī)取,計(jì)算Yi=yiPpub2,將SKi=(xi,yi),PKi=(Xi,Yi) 添加到Lk中,返還(xi,yi) ;當(dāng)i=j時(shí),終止程序。
公鑰詢問:C 維護(hù)Lk=(RIDi,PSKi,SKi,PKi,PIDi)。當(dāng)i≠j時(shí),若存在相應(yīng)記錄,則返還記錄值;否則,C隨機(jī)取,計(jì)算Yi=yiPpub2,添加SKi、PKi到Lk,返還(Xi,Yi);當(dāng)i=j時(shí),令Yi=yiX,添加(RIDi,PSKi,⊥,PKi,PIDi)到Lk,返還(Xi,Yi)給A2。
3)A2輸出一個(gè)在消息上的偽造簽名。若,則C 終止程序;否則,。計(jì)算出。由CDH 的難解性可知方案在A2攻擊下是安全的。
與定理1 類似,可得C 利用A2解決CDH 難題的優(yōu)勢為。
3.2.1 認(rèn)證性及消息完整性
由定理1 和定理2 可知,方案滿足簽名的認(rèn)證性及消息完整性需求。
3.2.2 匿名性
因PIDi=γiθi=γis-1H0(RIDi),Vi的偽身份PIDi由s和隨機(jī)數(shù)γi生成,僅KGC 和Vi知道s。又因γi是隨機(jī)選取的,即便敵手獲得Vi偽身份PIDi,也無法求得θi。且敵手還須從H0(RIDi)計(jì)算出RIDi,基于哈希函數(shù)的單向性,方案可提供匿名性保護(hù)。
3.2.3 可追蹤性
若某車輛發(fā)生違法犯罪行為,KGC 使用密鑰s搜索使e(PIDi,sTi)=e(H0(RIDi),P+PIDi)成立的(RIDi,Ti)。基于區(qū)塊鏈的特性,在區(qū)塊鏈BC-1 中可以獲得(PIDi,Ti)。此外,KGC 可在數(shù)據(jù)庫中找到滿足等式e(PIDi,sTi)=e(H0(RIDi),P+PIDi)的H0(RIDi),也就揭露了Vi的真實(shí)身份RIDi。KGC 隨之撤銷Vi的偽身份PIDi,并存儲(chǔ)在區(qū)塊鏈BC-2 中。最終,KGC 查出違法犯罪車輛用戶Vi的真實(shí)身份RIDi。
文中主要從安全性和計(jì)算量兩個(gè)方面對(duì)方案進(jìn)行性能分析。
在安全性方面,考慮方案能否提供認(rèn)證性和消息完整性,為車輛用戶提供匿名性保護(hù)及抵抗兩類敵手的攻擊,文獻(xiàn)[14-16]方案未涉及雙線性對(duì)運(yùn)算,故不作比較。安全性分析如表1 所示。
表1 安全性分析
由表1 可知,文獻(xiàn)[9]不滿足可追蹤性;文獻(xiàn)[12]方案無法抵抗敵手A2;文獻(xiàn)[13]方案不能抵抗敵手A1和A2;而文中方案滿足所有安全及隱私需求。
在計(jì)算量方面,文中采用文獻(xiàn)[13]中的實(shí)驗(yàn)結(jié)果,方案涉及運(yùn)算分別用Tbp、Tsm、Tpa表示運(yùn)行一次雙線性對(duì)運(yùn)算、一個(gè)群上標(biāo)量乘運(yùn)算和一個(gè)點(diǎn)加運(yùn)算所需時(shí)間,運(yùn)算所需基礎(chǔ)執(zhí)行時(shí)間如表2 所示。
表2 基礎(chǔ)執(zhí)行時(shí)間
如表3 所示,相比于文獻(xiàn)[9]和[12]方案,文中方案在簽名和驗(yàn)證方面都具有一定優(yōu)勢,簽名階段耗時(shí)減少了1.349 4 ms,驗(yàn)證階段由于減少了雙線性對(duì)和群上標(biāo)量乘運(yùn)算的使用,使得耗時(shí)分別減少了7.906 8 ms 和1.345 ms,方案總耗時(shí)分別減少了9.256 2 ms 和2.694 4 ms,且總耗時(shí)最短,僅為26.419 2 ms。另外,雖然在計(jì)算量方面,文中方案不及文獻(xiàn)[13]方案,但考慮到簽名方案安全的重要性,文中方案能在保證安全性的前提下,一定程度上減少了簽名方案的計(jì)算量和耗時(shí),因此,與同類方案比具有一定優(yōu)勢。
表3 計(jì)算復(fù)雜度對(duì)比
針對(duì)車載網(wǎng)存在的不安全、成本高和效率低等問題,文中引入?yún)^(qū)塊鏈技術(shù)對(duì)傳統(tǒng)車載網(wǎng)系統(tǒng)進(jìn)行了改進(jìn),并基于此模型構(gòu)造了一個(gè)安全的適用于車載網(wǎng)的無證書簽名方案,在隨機(jī)預(yù)言機(jī)模型下嚴(yán)格證明了方案的不可偽造性。性能分析結(jié)果表明,文中方案與同類型方案相比,在安全性和計(jì)算量上具有一定的優(yōu)勢,適用于車載網(wǎng)的實(shí)際應(yīng)用。