王梦婷,王 伟,张 强,刘沫萌
西安工程大学 计算机科学学院,西安 710048
车载自组织网络(vehicular ad hoc network,VANET)是一种连续的自配置式,无需基础设施的网络,随着5G通信技术的发展,VANET的研究已成为人们关注的热点之一[1]。VANET中车辆的车载单元(OBU)和车辆节点以及路边单元(RSU)通过使用专用短程通信(DSRC)协议进行通信[2]。通信过程中可能出现许多不同形式的安全攻击,从而导致VANET通信失败,造成交通事故。因此通信过程中的信息安全和隐私保护[3]是VANET保障公众行车安全和提高交通利用率需要解决的问题和挑战。
根据DSRC协议,每辆车每100~300 ms广播一次交通安全消息,当RSU覆盖范围内有500辆车时,RSU必须每秒验证约2 500~5 000条消息,因此在交通密集环境中RSU接收到的消息数量十分庞大,这时传统的认证方法很难及时完成所有消息的认证工作,从而导致很多重要消息因认证时延而丢失[4]。基于此,本文提出一种基于代理车辆的认证方法,利用RSU周边具有额外计算资源的车辆节点充当代理车辆来协助RSU完成认证工作。在此方法中,首先由代理车辆验证其他车辆的签名,然后将验证结果传输给附近的RSU,RSU再验证代理车辆的输出,从而达到减轻RSU的认证负担,提高认证效率,减少信息丢包率,降低计算资源消耗,提高行车安全的目的。
近年来各国学者针对VANET的消息认证问题提出了许多方法,如文献[5]提出了一种利用RSU作为代理,将OBU签名的消息进行代理重签名,从而防止根据签名追踪OBU,实现隐私保护的认证方法。文献[6]利用消息认证码和密钥协商协议在车辆和RSU之间创建共享密钥,提出了一种高效的认证方法。但以上方法均需较大的存储空间来保存密钥对和证书。为了解决上述方法存在的证书管理问题,文献[7]提出了一种基于身份密码技术的认证方法,该方法使用二进制搜索技术,通过两个共享密钥来满足隐私要求,提高了消息验证方面的效率,但不能抵抗模拟攻击。文献[8]和文献[9]提出了一个有效的条件隐私保护认证方法。但这些方法存在对无效签名错误接受的问题且易受篡改攻击。
针对上述方法存在的问题,文献[10]和文献[11]提出了不使用双线性对的认证方法,提高了认证效率,但当RSU覆盖范围内出现大量消息需要验证时,这两种方法会出现高丢包率以及高延迟。为解决这一问题,文献[12]提出了一种基于代理车辆的车载网络认证协议,通过代理车辆协助RSU完成认证工作,进而提高RSU计算速度,减少丢包率,但该方法易受修改攻击和模拟攻击。
以上方法虽无需考虑存储空间问题,但计算能力相对有限,当覆盖区域存在大量车辆时,无法满足VANET对签名与验证效率的苛刻要求,特别是面向安全应用的消息更需要及时认证与处理。因此本文提出一种基于代理车辆的认证方法,使用椭圆曲线密码构建安全认证协议,利用RSU周边具有额外计算资源的车辆节点充当代理车辆,协助RSU完成认证工作[4]。
本文采用典型的VANET网络模型[13],由可信中心TA、路边基础单元RSU和车辆节点组成。
TA:具有高计算能力和通信功能的可信任第三方,拥有最高管理权限。它负责生成系统参数及成员密钥,并将其预加载到车辆中,当车辆出现任何恶意行为时跟踪车辆。此外,TA还考虑给具有额外计算能力的车辆的一些“好处”,以促进其作为代理车辆[12]。
RSU:路边基础设施节点,与车辆(代理车辆)进行通信,可以检查接收到的车辆(代理车辆)消息的有效性,并将其发送到交通控制中心[14]。此外,RSU记录代理车辆的伪身份及其历史记录并发送给TA。
车辆:车辆在OBU上配备防篡改装置(TPD),通过DSRC协议与其他车辆的OBU或RSU相互通信。如果它们有额外的计算资源,可以成为代理工具,为RSU验证接收到的消息。
(1)消息身份验证:车辆(代理车辆)和RSU能够检查接收到的消息的真实性、完整性和有效性。
(2)身份隐私保护和可追溯性:除TA外,任何第三方都不能通过截获车辆(代理车辆)发送的消息来识别车辆(代理车辆)的真实身份。但当车辆(代理车辆)出现任何恶意行为时,TA可以从其伪身份中识别车辆(代理车辆)的真实身份[15]。
(3)不可链接性:车辆和RSU无法链接同一车辆发送的两条消息。
(4)抵抗攻击:能够抵御VANET中常见的安全攻击,例如模拟攻击、修改攻击、重放攻击等。
本文提出的基于代理车辆的消息认证方法分为五个部分,分别是初始化,匿名身份生成,消息签名,代理车辆对消息的验证,RSU对代理车辆输出的验证。
在此阶段,TA生成系统参数,并加载到车辆的防篡改装置和RSU中。
(1)TA选择两个大质数p和q,并定义椭圆曲线E:y2=x3+ax+b,其中a,b∈Fp,Δ=4a3+27b2≠0。
(2)TA选择一个阶为p,生成元为P的循环加法群G。G由椭圆曲线E上的所有点和无穷远点O组成。并选择β∈作为系统私钥,系统公钥为Ppub=βP。
(3)TA选择四个安全哈希函数h(·),k(·),g(·),f(·),其中h(·),k(·),g(·),f(·):{0,1}*→,因此,公共参数para={G,p,q,P,Ppub,h(·),k(·),g(·),f(·)}。
(4)TA选择βr∈表示RSU的身份ID,其中IDr,1=βrP,IDr,2=ID,IDr=(IDr,1,IDr,2),TA计算RSU与其身份IDr对应的密钥xr=βr+βf(IDr),并将{para,IDi,β,xr,IDr}放入每辆车的防篡改设备中。
在此阶段,车辆通过获取已注册的伪身份PIDi隐藏其真实身份IDi,并生成相应的密钥。车辆vi的防篡改设备从中随机选择αi,计算PIDi,1=αiP,PIDi,2=IDi⊕g(αiPpub),从而获得伪身份PIDi,其中PIDi=(PIDi,1,PIDi.2),计算车辆vi对应伪身份的密钥xi=αi+βg(PIDi)mod q,将(xi,PIDi)赋予车辆。
利用RSU周边具有额外计算资源的车辆充当代理车辆,协助RSU完成认证工作。首先计算车辆的额外计算资源,并将有额外资源的车辆作为候补代理车辆,然后从候补车辆中寻找符合标准的代理车辆,如果没有符合标准的车辆,则按照传统方法由RSU来验证车辆的签名。
代理车辆的选择在算法1[12]中给出,假设ci是车辆vi的总计算成本,cs是一个消息签名生成的计算成本,cv是一个签名验证的计算成本,u是通过vi签名的消息总数,y是相互直接通信的车辆数量,ci,r是车辆vi的额外计算资源,p是代理车辆的数量。
算法1代理车辆的选择
(1)当代理车辆个数为0时计算车辆vi的额外计算资源ci,r=ci-ucs。
(2)如果ci,r>0,则车辆vi是潜在的代理车辆。计算平均值cm。
(3)如果ci,r>cm,则vi被选为代理车辆vp,i,并且vp,i可以验证的签名数量为
由于代理车辆的数量很少,因此对协议的效率没有影响。算法1可以在没有TA的帮助下由每辆车运行。
在此阶段,代理车辆会验证接收的消息的完整性和发送者的身份。代理车辆首先通过时间戳Ti检查接收的消息的新鲜度和伪身份的有效性。如果消息是新鲜且伪身份有效,则代理车辆计算gi=g(PIDi),hi=h(mi,PIDi,Ti,Ri),1≤i≤n,并选择向量A=(a1,a1,…,ai),其中ai是安全参数γ在[1,2γ]中的整数。在VANET场景中,γ值通常设置为80[16]。检查等式(1)是否成立。
同理可证明等式(2)正确。
在此阶段,RSU验证从代理车辆收到的结果,当检测到错误结果时撤消对应代理车辆的资格。
首先RSU通过等式(4)验证代理车辆的签名(Rp,sp)是否有效,如果有效,RSU进行下一步;否则,拒绝该消息。
其次RSU通过时间戳Ti检查接收到的消息的新鲜度以及伪身份的有效性。如果消息是新鲜且伪身份有效,则RSU进行下一步;否则,拒绝该消息。
最后RSU通过等式(5)检查代理车辆生成的接收结果的正确性。如果等式(5)成立,则检查批处理结果的正确性。
如果等式(5)不成立或等式(5)成立且b=0,则RSU认为代理车辆是非法的,并要求TA撤销该代理车辆。
本文采用椭圆曲线密码构建安全认证协议,其中椭圆曲线离散对数问题(ECDLP)是给定群G,对于任意x∈,使得等式Q=xP成立是困难的[17]。如果ECDLP问题是困难的,那么在随机预言机模型中,针对VANET提出的基于代理车辆的消息认证方法就是安全的。即得到的签名在随机预言模型中针对自适应选择的消息和身份攻击是不可伪造的。
给定ECDLP问题的一个实例Q=xP,假设存在一个攻击者A可以伪造消息签名,构造另一个挑战者C,C是一个随机预言机,可以对A的询问做出相应的回答,并最终输出答案x。本文将通过一个挑战游戏[18]来证明本方法的安全性。游戏过程如下:
(1)初始化:C设置Ppub=Q,并生成系统参数para={G,p,q,P,Ppub},在系统参数上调用A,进行查询并做出回答。
(2)k(·)查询:A查询Tk[·]列表,若存在(mi,Ti,PIDi,Wi),则C返回其值;否则,C选择Tk[mi,Ti,PIDi,Wi]←,并将k(mi,Ti,PIDi,Wi)→A。
(3)f(·)查询:A查询Tf[·]列表,若存在IDr=(IDr,1i,IDr,2),则C返回其值;否则,C选择Tf[IDr]←,并将f(IDr)→A。
(4)密钥查询:A查询身份ID,C设置IDr,2=ID,并从Z*q中选择两个随机数f和xr,计算IDr,1=xr P+fPpub。如果Tf[·]列表中已经存在Tf[IDr,1,IDr,2],则C停止游戏;否则,设置Tf[IDr,1,IDr,2]←f,并将与RSU的身份对应的密钥(xr,IDr,1)返回给A。
(5)签名查询:A以身份IDr查询消息(mi,si,1,Ti,PIDi)的签名,C从中选择两个随机数ki和si,2,并计算Wi=-si,2P+(ki+si,1)(IDr,1+f(IDr,1,IDr,2)Ppub),如果Tk[·]列表中已经存在Tk[mi,Ti,PIDi,Wi],则C停止游戏(说明签名已经伪造);否则,设置Tk[mi,Ti,PIDi,Wi]←ki,并将与消息(mi,si,1,Ti,PIDi)对应的签名(si,2,ki,Wi)返回给A。
最后A输出伪造签名(si,2,ki,Wi)。根据分叉引理[19],对消息(mi,si,1,Ti,PIDi,Wi)用不同的哈希表重复以上过程,A可以生成两个有效的伪造签名,如等式(7)、等式(8):
C输 出(si,2-si,2′)(fki-f′ki′)-1作 为ECDLP问 题 的解。但因为ECDLP问题的难解性,C根据输出的结果无法推断出正确的签名值发送给攻击者A。因此,在随机预言机模型中,提出的基于代理车辆的消息认证方法是安全可靠且防止伪造的。
(1)消息身份验证:代理车辆通过验证车辆的签名si,1和si,2,来检查消息的完整性和车辆身份的有效性,并通过等式(1)和等式(2)对多个消息进行批量验证;RSU通过等式(4)验证代理车辆的签名(Rp,sp),从而判断代理车辆身份的合法性,通过等式(5)验证代理车辆生成的批量处理结果的正确性。因此本文方法可以保证发送者身份的有效性和消息的完整性以及正确性。
本文方法是基于ECDSA实现的消息认证算法,而ECDSA的安全性取决于离散对数问题的难解性,由上述证明可知,没有恶意车辆可以伪造有效的消息签名,即代理车辆的签名(Rp,sp)和si,1和si,2是不可伪造的。因此本文方法提供消息身份验证。
(2)身份隐私保护:车辆在发送消息时其真实身份IDi可以通过车辆的防篡改装置转化为伪身份PIDi,其中PIDi,1=αi P,PIDi,2=IDi⊕g(αi Ppub)。因此要从PIDi中提取车辆的真实IDi,攻击者需要求解αi Ppub,在未知αi的情况下求解椭圆曲线离散对数问题是困难的,且不知道TA的密钥β以及每辆车的伪身份及其对应的密钥都是随机变化的,所以没有人能够从其伪身份PIDi中找到车辆的真实身份。故除TA外,车辆和RSU都不能从发送的或接收的消息中获取车辆的真实身份,因此本文方法可以实现用户隐私保护。
(3)可追溯性:TA可以从车辆的伪身份PIDi中找出车辆的真实身份IDi。因为TA使用其密钥β可以计算出IDi=PIDi,2⊕g(βPIDi,1)。因此出现任何恶意行为时,TA可以从其消息中跟踪到车辆的真实身份。
(4)不可链接性:由于同一车辆生成的两个不同的消息是由不同的伪身份及其对应的密钥进行签名的,每个伪身份之间不相关且使用不同的αi,因此,车辆和RSU无法链接同一辆车发送的两个消息。
(5)抗攻击性:本文是基于ECDSA实现的消息认证方法且签名si,1和si,2具有不可伪造性,因此本文提出的认证方法除了保证消息完整性外还可以抵抗常见的安全攻击。例如利用时间戳Ti来保证消息的新鲜度并避免重放攻击。
VANET车间通信具有瞬时性特征,因而通信过程中的计算开销、通信开销是认证协议设计时最重要的指标,本章将对本文提出的方法进行性能分析。
为了比较相关方法的计算成本,使用MIRACL库[20]计算密码运算的执行时间,使用到的操作系统为IOS10.14.5操作系统,CPU频率为1.80 GHz,内存为8 GB。相关密码运算的符号及其时间如表1所示。
表1 密码运算操作表Table 1 Cryptographic operation table
假设每个代理车辆最多可以验证300条消息,验证期间的流量密度为n,则代理车辆的数量m=n/300。
本文方法中RSU验证单个消息的成本约为5Tmul,RSU验证由m个代理车辆发送的n条消息的成本约为5mTmul,代理车辆的计算成本包括批量验证300条消息的时间和生成一个签名花费的时间,总计306Tmul。
文献[10]与文献[11]中RSU验证n个消息的成本约为(n+2)Tmul。
文献[12]中RSU验证单个消息的成本约为2Tmul+5Tp+Tmtp,RSU验证由m个代理车辆发送的n条消息的成本约为(2mTmul+(2m+3)Tp+Tmtp)。代理车辆的计算成本总计300(4Tmul+5Tp+Tmtp)。
当n=3 000时,具体的计算开销见表2,其中NA表示不适用。由表2可知当RSU覆盖区域中有大量车辆时,本文方法与其他方案相比RSU的计算开销分别减少了76%、98%,代理车辆的计算开销减少了92.6%,计算开销更小,具有更好的性能。
表2 计算开销比较Table 2 Comparison of calculation overhead ms
对于280的安全级别,假定q为160 bit或20 Byte,G中每个元素为40 Byte。时间戳Ti的大小为4 Byte。假设每个代理车辆最多可以验证300条消息,验证期间的流量密度为n,则代理车辆的数量m=n/300,在比较中,不考虑消息的大小。
在文献[12]中,车辆发送给代理车辆的消息是(PIDi,1,PIDi,2,Ti,si,1,si,2),其中PIDi,1,PIDi,2,si,1和si,2∈G,故其大小为40×4+4=164 Byte,因此发送300条消息的通信开销为164(300)Byte;代理车辆发送到RSU的消息为(PIDp,1,PIDp,2,Tp,sp,1,σ1,σ2,PIDi,1,PIDi,2,Ti),其 中PIDp,1,PIDp,2,PIDi,1,PIDi,2,sp,1,σ1和σ2∈G。因此,m辆代理车辆传输的消息的大小为204m+84n(单位:Byte)。
当n=3 000时,本文方法与文献[12]中车辆向代理车辆发送的消息大小分别为61 200 Byte和49 200 Byte,代理车辆发送到RSU的消息大小分别为373 840 Byte和254 040 Byte。文献[10]与文献[11]中车辆发送到RSU的消息大小为432 000 Byte。与文献[12]相比,本文方法的通信开销略有增加,但安全性更高。因此与其他方案相比,本文方法具有更好的通信开销。
在仿真中使用ns-2和VanetMobiSim[20]移动性模型生成工具来估计这些方案在实际环境中的平均消息延迟和平均丢失率。设置仿真场景参数为:道路总长15 km,4条行车道,5个RSU,每个RSU传输范围为1 000 m,车辆传输范围为300 m,且车辆每300 ms广播一条消息,最小车距40 m。代理车辆最大数量20辆。
图1是四种方案在仿真中平均消息延迟与车辆数量的关系。随着车辆数量的增加,四种方案的平均消息延迟的值均在增加,但本文方法的值始终最小,因此仿真结果表明,本文方法通过RSU进行消息验证的速度更快,能够在车辆数量较多或交通密集环境中减少消息延迟,提高性能。
图1 平均消息延迟的比较Fig.1 Comparison of average message latency
图2是四种方案在仿真中平均消息丢失率与车辆数量的关系。由于同一通信区域内车辆之间频繁传输所引起的冲突,所以随着车辆数量的增加,四种方法的平均消息丢失率有所上升,但本文方法通过借助代理车辆来协助RSU验证消息,使得消息验证速度更快,所以在交通密集环境中,丢弃的消息数减少,接收的消息数增加,因此本文方法的平均消息丢失率较其他三个方案更小,仿真结果表明,本文方案能够降低消息丢失率,提高性能。
图2 平均消息丢失率比较Fig.2 Comparison of average message loss rates
图3是四种方案在仿真中通信开销与消息数量的关系。在本文方法与文献[12]中,车辆直接与代理车辆进行通信,且这种通信开销分布在车辆之间,而文献[10]与文献[11]的通信开销都施加在RSU上,因此较文献[10]与文献[11]相比,本文方法的通信开销更小;较文献[12]相比,本文方法通信开销虽有所增加但安全性更高。仿真结果表明,本文方案能够降低RSU的通信开销。
图3 通信开销的比较Fig.3 Comparison of communication overhead
在VANET网络的部署应用中,当RSU的覆盖区域出现大量车辆时,传统认证方案难以满足VANET的要求,往往容易导致RSU产生较高丢包率和较高延迟。本文为了解决这些安全弱点从代理车辆协助认证角度,提出了一种新的用于VANET的基于代理车辆的消息认证方案。一方面,为了提高RSU验证效率,本文使用了代理车辆协助认证的技术方法来提高RSU验证效率;另一方面,本文采用椭圆曲线密码构建安全协议,降低了运算的复杂性。安全分析证明本文方法满足VANET的安全要求。实验结果表明,同其他方法相比,本文方法产生了较低的计算成本和通信成本。但在消息数量十分巨大的情况下,如何通过增加消息的优先级,保证重要且紧急的消息被优先处理,这是在未来研究工作中需要继续思考与改进的。