周 浩,马建峰,刘志全,3,4,王立波,吴永东,范文杰
(1.暨南大学 信息科学技术学院,广东 广州 510632;2.西安电子科技大学 网络与信息安全学院,陕西 西安 710071;3.广东省网络与信息安全漏洞研究重点实验室,广东 广州 510643;4.数力聚(北京)科技有限公司,北京 100020)
如今,由于车联网(Vehicular Ad-hoc NETworks,VANET)在提高道路安全和交通效率方面的巨大潜力,其已经成为一个备受关注的研究领域[1]。VANET的主要思想是车辆和路侧单元 (Road Side Unit,RSU) 采用先进的无线通信技术,以单跳或多跳的方式实现车辆到车辆(Vehicle-to-Vehicle,V2V)和车辆到路侧单元(Vehicle-to-RSU,V2R)的通信,最终形成一个高度动态的自组织网络[2]。然而,由于大规模、开放式、分布式、稀疏以及高动态等特性,VANET对于恶意行为和攻击是脆弱的。例如,恶意车辆可能散布大量的虚假紧急消息(紧急消息[3]是指报告严重交通事故(如撞车)的消息,消息接收车辆需要在极短时间内对该类消息作出反应,因此要求具有比普通消息信任评估更低的时延)以欺骗其他车辆,进而对道路交通的安全性和可靠性造成极大威胁[4]。因此,研究如何让车辆低时延且精准地完成紧急消息评估是非常必要的。
OSTERMAIER等[5]提出基于投票决策的方法对消息进行评估,但未考虑消息提供车辆是否可信。SHRESTHA等[6]首先通过集中式服务器管理并确定每个车辆的信任级别,以车辆的信任级别来计算消息可信度,然后通过投票结果判断消息是否可信。但由于其采用了集中式的信任管理模型,因此存在单点故障的缺陷。
随着区块链技术[7]的蓬勃发展,其去中心化、分布式存储以及存储数据不可篡改等特征引起了研究人员关注,LU等[8]提出了一种基于区块链的匿名信誉系统,该系统通过车辆的信誉评分确定广播消息的信任等级,并通过奖惩机制管理车辆信誉。LIU等[9]提出了一个基于区块链的车联网信任管理方案,利用隐马尔可夫模型对消息进行信任评估,提高了虚假消息的检测准确率。YANG等[10]提出了一种基于区块链的分布式车联网信任管理系统,其中车辆使用贝叶斯推理模型验证从相邻车辆接收的消息。张海波等[11]提出了一种基于区块链的车联网声誉管理方法,通过改进的三值主观逻辑算法评估车辆的声誉值,并利用声誉阈值识别恶意车辆。尽管上述方案基于区块链技术,实现了车联网中车辆信任值的安全分布式存储,并通过提出的信任评估模型得到了较高的消息信任评估准确率,但都没有考虑在紧急消息评估的场景下,信任值查询时延和信任评估时延如何适应该场景下车联网对时延的高要求。
针对上述方案在面向车联网中紧急消息评估场景下存在的问题,笔者提出一种车联网中区块链辅助的紧急消息信任评估方案。贡献如下:
(1) 采用超级账本(Hyperledger Fabric)[12]联盟链,建立区块链网络,实现了车辆信任值的安全分布式存储。
(2) 设计了一种基于智能合约及缓存策略的信任值查询算法,能够有效降低车辆信任值查询时延。
(3) 通过设计的信任值查询算法,显著降低了车辆信任值的查询时延,从而使得以车辆信任值、车辆位置和消息新鲜度为参考因子的评估方法[13]能够适应紧急消息场景对时延的要求。
如图1所示,系统架构主要由4部分组成:区块链网络、车辆注册中心(Vehicle Registration Center,VRC)、路侧单元及车辆。
(1) 区块链网络的主要通信节点有客户端节点、对等节点以及排序节点。其中客户端节点是用户与区块链网络交互的接入点,向指定对等节点发送交易提案,以获得背书(背书是指对交易提案进行担保并签名)。对等节点是区块链网络的主要节点,负责维护账本(包括一条记录所有交易的区块链和一个记录交易中所有变量当前值的键值对数据库,该数据库也称世界状态)和智能合约、响应客户端的交易提案(响应过程中对等节点会对交易提案签名)以及验证区块内容。所有的对等节点都维护一个共同的账本。排序节点负责对客户端获得背书的交易提案进行排序,并生成区块发送给对等节点。客户端节点与区块链网络的交互过程如图2所示。
图2 客户端与区块链网络交互过程
(2) 车辆注册中心是为车辆提供入网登记服务的机构,负责为车辆分发身份标识、密钥及密码算法等。同时其也是区块链网络上的客户端节点,能够与区块链网络进行交互(查询、更新账本)。
(3) 路侧单元具备一定的计算资源和存储资源,负责处理来自车辆的请求。同时其同样作为区块链网络的客户端节点,能够与区块链网络进行交互。
(4) 车辆配备了智能车辆单元(On Board Unit,OBU),具有感知、计算和存储等功能。车辆通过车辆到车辆、车辆到路侧单元的方式分别与其他车辆、路侧单元通信(本方案中通信过程均进行了加密处理)。
各节点在数字证书认证机构(Certificate Authority,CA)获取认证证书,加入区块链网络。此外,车辆注册中心、路侧单元节点初始化时钟以及一套安全的数字签名方案DS,如式(1)所示:
DS=(KeyGen,Sign,Verify) ,
(1)
其中,KeyGen、Sign及Verify分别表示密钥生成算法、数字签名算法及验证算法。当新的车辆申请加入车联网时,将在车辆注册中心处注册。车辆注册中心首先为其分发身份标识IDi,并将车辆记为Vi,接着通过KeyGen算法为车辆Vi生成公钥Pkvi和私钥Skvi,并以离线的方式在车辆单元中安装可信平台模块(Trusted Platform Module,TPM)。可信平台模块中秘密地嵌入了车辆Vi的私钥Skvi、可信时钟、坐标提取算法、数字签名算法Sign、验证算法Verify以及各种密码算法(如哈希算法),且笔者假设可信平台模块安全可信。当车辆完成注册后,车辆注册中心与区块链进行交互,将车辆的初始信息写入账本中。
(2)
(3)
(4)
2.4.1 车辆信任值查询
(5)
(6)
2.4.2 缓存策略及信任值查询算法
在本方案中,为了降低车辆信任值查询时延,笔者为路侧单元设计了两种缓存策略。
(7)
(8)
算法1预缓存策略下缓存信任值算法。
输入:路侧单元覆盖范围内车辆{ID1,…,IDn}
输出:缓存结果
① for IDj∈{ID1,…,IDn} do
② if isnotinCache(IDj) then
③//调用智能合约进行查询
④Tj=Chaincode.get(IDj)
⑤//将车辆信任值写入缓存
⑥ Cache.write=(IDj,Tj,Etime)
⑦ end if
⑧ end for
算法2缓存中查询信任值算法。
输入:车辆IDj
输出:车辆信任值Tj
① if isempty(IDj) then
② return empty
③ else
④//直接读取缓存内容
⑤Tj=Cache.get(IDj)
⑥ returnTj
⑦ end if
算法3查询后缓存策略下信任值查询算法。
输入:车辆IDj
输出:车辆信任值Tj
① if isempty(IDj) then
② return empty
③ else if isinCache(IDj) then
④//直接读取缓存内容
⑤Tj=Cache.get(IDj)
⑥ else if isinBlockchain(IDj) then
⑦//调用智能合约进行查询
⑧Tj=Chaincode.get(IDj)
⑨ else
⑩ return empty
2.5.1 紧急消息信任评估
(9)
其中,参数λ和θ分别为广播车辆信任值和环境信任值在本次消息可信度中所占的权重,λ+θ=1。环境信任值Tenv反映的是本次通信中,广播车辆所广播消息的真实情况。考虑环境信任值受消息的新鲜度和消息生成的地理位置的影响,即消息生成的时间离事故发生的时间越久,环境信任值越低;消息生成的地理位置离事故发生的地理位置越远,环境信任值越低。Tenv表示如式(10)所示:
Tenv=Tt/2+Td/2 ,
(10)
(11)
(12)
其中,γ是预设参数,控制Tt和Td的变化率。Δt-tThr表示消息新鲜度与消息有效时间阈值之间的差值,Δd-dThr表示消息生成位置与事故发生位置的距离与消息有效距离阈值之间的差值。
(13)
2.5.2 车辆信任值更新
(14)
(15)
在现有研究方案中,HMM(Hidden Markov Model)[9]方案以智能合约查询区块链上信任值,以隐马尔可夫模型进行信任评估。BIM(Bayesian Inference Model)[10]方案以区块链存储信任值,以广播车辆距事故地的距离作为信任评估的参考因子,并通过加权聚合计算消息可信度。BIM方案和HMM方案均使用区块链分布式存储车辆信任值,且信任评估均面向车联网中的消息信任评估,即场景与笔者所提方案类似,且本方案在上述方案的基础上分别进行了优化,因此选择上述方案作为对比方案,以验证本方案的优越性。
实验基于Windows10操作系统、11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40 GHz和16 GB内存,智能合约部署至Hyperledger Fabric区块链平台,使用Go语言与平台进行交互,使用Python语言进行仿真实验。实验设置车辆数100,广播消息数分为10组,每组100条,实验重复100次取均值。本方案的部分仿真实验参数如表1所示。
表1 部分仿真参数表
为验证本方案在信任值查询时的低时延性,笔者模拟发生交通事故的场景,对比了本方案、HMM方案以及BIM方案在事故发生时车辆信任值的查询时延,平均结果如图3所示。图3中,本方案预缓存策略曲线和本方案查询后缓存策略曲线分别表示本方案采用预缓存策略和查询后缓存策略的信任值查询时延变化情况。查询后缓存和预缓存策略下,车辆一次信任值查询平均时延分别为4.405 2 ms和1.900 0 ms;在HMM和BIM方案下,车辆一次信任值查询的平均时延分别为9.469 5 ms和169.203 0 ms。前两者查询效率分别较HMM方案提升约53.5%和79.9%,较BIM方案提升约97.4%和98.9%。且预缓存策略相比查询后缓存策略查询效率提升约56.9%。由此可见,借助于所提的缓存策略,本方案的信任值查询效率有显著提升。
图3 4种方案在不同数据组别下的信任值查询时延对比
此外,笔者还设计了实验,比较两种缓存策略下,发起信任值查询请求车辆占比分别为1%、5%、10%、20%、30%、40%、50%时,路侧单元收到查询请求前后的存储空间开销变化。
从图4、图5可以看到,在路侧单元收到查询请求前,查询后缓存策略和预缓存策略下路侧单元的存储空间开销分别稳定在2 MB和16 MB左右。在路侧单元收到查询请求后,查询后缓存策略下路侧单元的存储空间开销随着发起信任值查询请求车辆占比的增加而增加,且发起信任值查询请求车辆占比越高,路侧单元在查询后缓存策略下的存储空间开销越接近于预缓存策略下的存储空间开销;预缓存策略下路侧单元的存储空间开销依然稳定在16 MB左右。且从图5可以看到,当发起信任值查询请求车辆占比分别为1%和50%时,查询后缓存策略下路侧单元存储空间开销相比预缓存策略减少了13.67 MB和4.08 MB,存储空间节省86.2%和23.7%。
图4 路侧单元收到查询请求前各请求车辆占比下存储开销情况
图5 路侧单元收到查询请求后各请求车辆占比下存储开销情况
因此,综合考虑两种策略下路侧单元的信任值查询效率与存储空间开销,当发起信任值查询请求车辆占比较低时,路侧单元适用查询后缓存策略;当发起信任值查询请求车辆占比较高时,路侧单元适用预缓存策略。
为验证本方案信任评估的精准性,笔者分别在恶意车辆占比为0%、10%、20%、30%、40%等情形下(结合现实因素,笔者不考虑恶意车辆占比50%及以上的情况)进行实验,对比本方案、HMM方案以及BIM方案在信任评估时的准确率,平均结果如图6所示。从图6可看到,各恶意车辆占比下,本方案消息信任评估准确率相比于BIM方案,分别提高了2.25%、3.47%、4.71%、1.01%、1.77%;相比于HMM方案,分别降低了2%、降低了1.3%、持平、提升了0.8%、降低了0.2%。由此得出,本方案在消息信任评估准确率方面优于BIM方案。尽管相比HMM方案准确率仍有待提高,但本方案的准确率足以满足实际场景需求,而且HMM方案在信任评估时,需要对近期广播的历史消息进行训练分析,这会带来较高的消息信任评估时延。消息信任评估时延是消息信任评估过程中的一个重要指标,因此,笔者设计实验,对比本方案、HMM方案以及BIM方案在信任评估时的时延,平均结果如图7所示。本方案完成1次消息信任评估的时延为0.470 2 ms,HMM方案为503.048 0 ms,BIM方案为0.449 5 ms。本方案的信任评估时间较HMM方案节省约99.9%,与BIM方案相近。
图6 不同恶意车辆占比下3种方案的消息信任评估准确率
图7 3种方案的消息信任评估时延对比
此外,由于文中所选对比方案均使用区块链实现分布式信任值存储,且本方案的系统评估时间满足车联网时延要求,因此,笔者不考虑引入区块链前后对系统评估时间的影响。
笔者提出一种车联网中区块链辅助的紧急消息信任评估方案。在该方案中,笔者首先利用区块链技术分布式存储车辆信任数据,实现了数据的可信存储;接着提出两种缓存策略,并结合智能合约分别设计信任值查询算法,实现了信任值的低时延查询;最后基于所提查询算法,引入车辆历史信任值并结合车辆位置以及消息新鲜度作为紧急消息信任评估的参考因子,实现了低时延且高精准的信任评估。与现有方案相比,所提方案的信任值查询效率提升了79.9%~98.9%,信任评估准确率提升了约4.71%。在下一步工作中,笔者将进一步提升信任评估准确率,以及平衡两种缓存策略下路侧单元查询效率与存储空间开销之间的矛盾。