周楠,杜紅珍
(寶雞文理學院數學與信息科學學院,陜西寶雞 721013)
車載自組網(Vehicle Ad hoc Network,VANET)簡稱車載網,不僅能為車輛用戶提供安全性服務,還可提供娛樂等增值類服務,在智能交通中發揮著重要作用。
近年來,基于區塊鏈技術獨有的優良特性,已經有不少研究者嘗試將區塊鏈技術運用到VANET中。如文獻[1]在加密過程用到了區塊鏈中的Merkle樹結構。文獻[2]使用了區塊鏈技術中的分布式技術存儲數據,以實現車輛的隱私及交通信息的完整性。文獻[3]則用到了區塊鏈技術的不可篡改性和可擴展性等。
無證書公鑰密碼體制(Certificateless Public Key Crypotography,CLPKC)摒棄了基于傳統公鑰基礎設施[4-5]和基于身份[6-7]的證書管理和密鑰托管的弊端。已有的無證書簽名方案[8-11]大都涉及雙線性對的大量使用,存在成本高、效率低等問題,甚至有些方案[12-14]不滿足最基本的安全性需求。
基于上述研究,文中基于區塊鏈技術提出了一個適用于VANET 的無證書簽名方案,并進行了嚴格的安全性分析和性能分析。結果表明,在隨機預言機模型下,文中方案可證明是安全的,且滿足車載網的安全和隱私相關需求。
文中對傳統VANET 系統模型進行了改進。在新的系統模型中,可信機構為密鑰生成中心(Key Generation Center,KGC)。引入不同結構的Merkle 樹分別作為區塊鏈BC-1 和區塊鏈BC-2 鏈接,在VANET 系統中用于存儲不同的數據。其中,BC-1用于存儲車輛用戶生成的偽身份和對應的未撤銷的參數,BC-2 用于存儲驗證后被撤銷的偽身份。基于區塊鏈的車載網系統模型如圖1 所示。

圖1 基于區塊鏈的車載網系統模型
雙線性對、CDH 問題及ECDL問題詳見文獻[13]。
輸入安全參數k,(G1,+)和(G2,·)是兩個q階循環群,P為G1群生成元,雙線性對e:G1×G1→G2。KGC隨機取,計算系統公鑰:
選取五個安全哈希函數,分別定義如下:
最后,秘密保存主密鑰s,公布系統參數:
給定用戶Vi的真實身份RIDi,KGC 計算θi=s-1H0(RIDi),將(RIDi,H0(RIDi))作為Vi的數據存儲以便追蹤。隨機選取,計算hi=H1(RIDi,Ppub),ωi=λiH0(RIDi),xi=s-1+hiλi。通過安全信道將部分私鑰PSKi=(xi,θi,ωi)發送給車輛用戶Vi。
接收到部分私鑰PSKi后,Vi先驗證從KGC 接收到的部分私鑰是否滿足等式若等式成立,則接收部分私鑰,否則請求重新發送部分私鑰。隨機取秘密值,用戶私鑰為SKi=(xi,yi),計算Xi=xiPpub2和Yi=yiPpub2,將PKi=(Xi,Yi)作為自身公鑰。
對待簽名消息Mi,Vi隨機選取zi∈Zq*,計算Zi=ziPpub2。在時間段ti內,Vi計算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時間段內偽身份PIDi的用戶在消息Mi上的簽名。Vi將消息/簽名數組(Mi,(Zi,δi))及PIDi,ti廣播到RSU。
RSU 接收到(Mi,PIDi,Zi,δi,ti)后,先檢查時間戳ti是否有效,若有效,可搜索區塊鏈BC-1 和BC-2 以獲得偽身份PIDi,確保收到的PIDi存在于BC-1,而非BC-2,這表示已將PIDi分配給Vi,并且尚未撤銷。
1)單個簽名驗證
接收到Vi的數組(Mi,(Zi,δi)) 及PIDi,ti后,RSU進行哈希運算得ji、ηi和Γi。驗證e(δi,Ppub2)=e((Zi+ηiXi),Ppub1)·e(Γi,jiYi)是否成立,若成立,則接受簽名(Zi,δi);否則,RSU 將拒絕這個簽名。
2)批量簽名驗證
接收到不同車輛用戶(V1,V2,…,Vn)的消息簽名組(M1,PID1,Z1,δ1,t1),(M2,PID2,Z2,δ2,t2),…,(Mn,PIDn,Zn,δn,tn) 后,RSU 驗 證 等 式是否成立;若成立,則接受Mi上簽名(Zi,δi)(i=1,2,…,n),否則拒絕簽名。
若某用戶Vi發生違法犯罪行為,KGC 可追蹤其真實身份,撤銷其偽身份PIDi并存儲在區塊鏈BC-2 中。KGC 用s搜索滿足e(PIDi,sTi)=e(H0(RIDi),P+PIDi) 的信息(RIDi,Ti),KGC 在數據庫中找到H0(RIDi),使e(PIDi,sTi)=e(H0(RIDi),P+PIDi) 成立,即揭露了Vi的真實身份PIDi。最終,撤銷Vi偽身份并將其存儲在區塊鏈BC-2 中。
無證書簽名安全模型見文獻[13]。
定理1 在隨機預言機模型下,假設敵手A1在多項式時間t內,最多進行qHi(i=0,1,2,3,4) 次哈希詢問,qk次部分私鑰詢問,qs次私鑰詢問,qp次公鑰詢問,qps次偽身份詢問,qsig次簽名詢問,以不可忽略的優勢ε贏得Game1,則存在一多項式算法C 在內,以不可忽略的優勢解決CDH 難題,其中,tm表示在群G1中進行一次點乘運算所需的時間。
證明:輸入某CDH 的任意實例,令P∈G1,X=aP,Y=bP,C 與A1進行Game1 中的交互,利用A1作為子程序計算出abP。C 需維護列表L0、L1、L2、L3、L4、Lk用于記錄A1在Game1 進行的詢問,初始狀態記錄為空。
1)C 運行系統建立算法,令Ppub1=X,發送params={q,P,G1,G2,e,Ppub,H0,H1,H2,H3,H4}給A1。C選擇索引1 ≤j≤qH0,qH0表示對預言機H0進行的最大詢問次數。
2)A1與C 進行一下交互詢問。
H0詢問:C 維護列表L0=(RIDi,di)。若存在相應記錄,則返還記錄值;否則,隨機選取di∈G1添加到表L0,并返還di給A1。
H1詢問:C 維護表L1=(RIDi,Ppub,ei)。若存在相應記錄,則返還記錄值;否則,隨機選取添加到表L1,并返還ei給A1。
H2詢問:C 維護L2=(Mi,PIDi,PKi,ti,Zi,fi)。若存在相應記錄,則返還記錄值;否則隨機取添加到表L2,并返還fi給A1。
H3詢問:C 維護L3=(Mi,PIDi,Ppub,ti,Zi,gi)。若存在相應記錄,則返還記錄值;否則隨機取添加到表L3,并返還gi給A1。
H4詢問:C 維護L4=(Mi,PIDi,PKi,Ppub,Zi,ki)。若有相應記錄,則返還記錄值;否則,隨機取ki∈G1添加到表L4,并返還ki給A1。
部分私鑰詢問:C 維護列表Lk=(RIDiPSKi,SKi,PKi,PIDi) 。當i≠j時,若有相應記錄,則返還記錄值;否則,C 查詢表L0和L1,隨機取,ωi∈G1,計算θi=xidi-ωiei,添加元組PSKi=(xi,θi,ωi)到列表Lk中,并返還PSKi給A1;當i=j時,終止程序。
偽身份詢問:C 維護Lk=(RIDi,PSKi,SKi,PKi,PIDi)。若存在相應記錄,則返還記錄值;否則,C 隨機取計算,添加PIDi到Lk,返還PIDi。
公鑰詢問:C 維護Lk=(RIDi,PSKi,SKi,PKi,PIDi) 。若存在相應記錄,則返還記錄值;否則,C 進行部分私鑰查詢獲得xi,隨機取yi∈Z*q,計算Xi=xiPpub2,Yi=yiPpub2,添加PKi=(Xi,Yi)到Lk,返還(Xi,Yi)給A1。
私鑰詢問:C 維護Lk=(RIDi,PSKi,SKi,PKi,PIDi)。當i≠j時,若存在相應記錄,則返還記錄值;否則,C進行公鑰查詢生成公私鑰對(SKi,PKi),添加(RIDi,PSKi,SKi,PKi,PIDi) 到Lk,返還(xi,yi);當i=j時,終止程序。
替換公鑰詢問:A1選擇新公鑰,并發送。C 查看Lk是否存在記錄PKi,若存在,令,SKi=⊥;否則,添加(RIDi,PSKi,,⊥,PIDi)到Lk。
簽名詢問:C 由公鑰詢問得(SKi,PKi) 。當i≠j時,C 隨機取,計算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輸出一個在消息上的偽造簽名。若,則C 終止程序;否則,由分叉引理[14]C 和A1選擇不同哈希函數H3進行與上述相同的模擬交互過程,得到另外一個有效簽名。于是有:
A1在此Game1 中獲勝,當且僅當以下事件同時發生。
E1:是在消息上生成的有效簽名;
E2:A1沒有查詢過的部分私鑰;
E3:A1沒有查詢過的簽名。
由P(E1)=ε,知,C 利用A1解決CDH 難題的優勢為。
定理2 在隨機預言機模型下,假設敵手A2能在多項式時間t內,最多進行qHi(i=0,1,2,3,4)次哈希詢問,qs次私鑰詢問,qps次偽身份詢問,qp次公鑰詢問,qsig次簽名詢問,以不可忽略的優勢ε贏得Game2,則存在一個多項式算法C,在多項式時間內,能以不可忽略的優勢解決CDH 難題,其中,tm表示在群G1中進行一次點乘運算所需的時間。
證明:輸入某CDH 的任意實例,令P∈G1,X=aP,Y=bP,C 與A2進行Game2 中的交互,利用A2作為子程序計算出abP。C 需要維護表L0、L1、L2、L3、L4、Lk,用于記錄A2在Game2 中的詢問,初始狀態記錄為空。
1)C 運行系統建立算法,令Ppub1=sP,將主密鑰s和params={q,P,G1,G2,e,Ppub,H0,H1,H2,H3,H4) 發送給A2。
2)A2與C 進行一下交互詢問。
由于H0、H1、H2、H3偽身份詢問和簽名詢問與定理1 中類似,不再贅述。
H4詢問:C 維護L4=(Mi,PIDi,PKi,Ppub,Zi,ki)。若存在相應記錄,則返還記錄值;否則,隨機取,令ki=τiY=τi(bP),并添加到L4,返還ki給A2。
私鑰詢問:C 維護Lk=(RIDi,PSKi,SKi,PKi,PIDi)。當i≠j時,若存在相應記錄,則返還記錄值;否則,C 隨機取,計算Yi=yiPpub2,將SKi=(xi,yi),PKi=(Xi,Yi) 添加到Lk中,返還(xi,yi) ;當i=j時,終止程序。
公鑰詢問:C 維護Lk=(RIDi,PSKi,SKi,PKi,PIDi)。當i≠j時,若存在相應記錄,則返還記錄值;否則,C隨機取,計算Yi=yiPpub2,添加SKi、PKi到Lk,返還(Xi,Yi);當i=j時,令Yi=yiX,添加(RIDi,PSKi,⊥,PKi,PIDi)到Lk,返還(Xi,Yi)給A2。
3)A2輸出一個在消息上的偽造簽名。若,則C 終止程序;否則,。計算出。由CDH 的難解性可知方案在A2攻擊下是安全的。
與定理1 類似,可得C 利用A2解決CDH 難題的優勢為。
3.2.1 認證性及消息完整性
由定理1 和定理2 可知,方案滿足簽名的認證性及消息完整性需求。
3.2.2 匿名性
因PIDi=γiθi=γis-1H0(RIDi),Vi的偽身份PIDi由s和隨機數γi生成,僅KGC 和Vi知道s。又因γi是隨機選取的,即便敵手獲得Vi偽身份PIDi,也無法求得θi。且敵手還須從H0(RIDi)計算出RIDi,基于哈希函數的單向性,方案可提供匿名性保護。
3.2.3 可追蹤性
若某車輛發生違法犯罪行為,KGC 使用密鑰s搜索使e(PIDi,sTi)=e(H0(RIDi),P+PIDi)成立的(RIDi,Ti)。基于區塊鏈的特性,在區塊鏈BC-1 中可以獲得(PIDi,Ti)。此外,KGC 可在數據庫中找到滿足等式e(PIDi,sTi)=e(H0(RIDi),P+PIDi)的H0(RIDi),也就揭露了Vi的真實身份RIDi。KGC 隨之撤銷Vi的偽身份PIDi,并存儲在區塊鏈BC-2 中。最終,KGC 查出違法犯罪車輛用戶Vi的真實身份RIDi。
文中主要從安全性和計算量兩個方面對方案進行性能分析。
在安全性方面,考慮方案能否提供認證性和消息完整性,為車輛用戶提供匿名性保護及抵抗兩類敵手的攻擊,文獻[14-16]方案未涉及雙線性對運算,故不作比較。安全性分析如表1 所示。

表1 安全性分析
由表1 可知,文獻[9]不滿足可追蹤性;文獻[12]方案無法抵抗敵手A2;文獻[13]方案不能抵抗敵手A1和A2;而文中方案滿足所有安全及隱私需求。
在計算量方面,文中采用文獻[13]中的實驗結果,方案涉及運算分別用Tbp、Tsm、Tpa表示運行一次雙線性對運算、一個群上標量乘運算和一個點加運算所需時間,運算所需基礎執行時間如表2 所示。

表2 基礎執行時間
如表3 所示,相比于文獻[9]和[12]方案,文中方案在簽名和驗證方面都具有一定優勢,簽名階段耗時減少了1.349 4 ms,驗證階段由于減少了雙線性對和群上標量乘運算的使用,使得耗時分別減少了7.906 8 ms 和1.345 ms,方案總耗時分別減少了9.256 2 ms 和2.694 4 ms,且總耗時最短,僅為26.419 2 ms。另外,雖然在計算量方面,文中方案不及文獻[13]方案,但考慮到簽名方案安全的重要性,文中方案能在保證安全性的前提下,一定程度上減少了簽名方案的計算量和耗時,因此,與同類方案比具有一定優勢。

表3 計算復雜度對比
針對車載網存在的不安全、成本高和效率低等問題,文中引入區塊鏈技術對傳統車載網系統進行了改進,并基于此模型構造了一個安全的適用于車載網的無證書簽名方案,在隨機預言機模型下嚴格證明了方案的不可偽造性。性能分析結果表明,文中方案與同類型方案相比,在安全性和計算量上具有一定的優勢,適用于車載網的實際應用。