刘伎昭,董跃钧
(中原工学院 计算机学院,河南 郑州 450007)
车联网使用专用短距离通信技术(dedicated short-range communications,DSRC)和5G技术,实现车-车之间、车-路边基础设施之间和车-后台管理中心之间的自组织、多跳无线通信,通过GPS、雷达、摄像头等车载传感器感知车辆运动状态和道路环境信息,实现交通安全、智能导航等丰富的上层应用[1]。
车联网使用紧急消息广播机制实现交通安全类应用[2]。车辆在行驶过程中通过车载传感器感知异常事件的发生,如湿滑路面、交通事故、交通拥堵等,产生紧急消息并通过无线信道广播至周边车辆,提醒驾驶员及时做出反应。由于车联网具有自组织、无中心的架构,任意车辆节点均可以发送此类消息,并且现场通常没有可信第三方对消息真实性进行验证,给网络带来安全隐患:出于自私性或者恶意攻击的目的,具有合法网络身份的内部敌手可以伪造紧急消息,声称虚假的交通事故或拥堵事件。由于内部敌手通常拥有CA(certificate authority)分发的密钥、证书等安全参数,能够为发出的消息产生合法签名,接收到紧急消息的车辆无法通过签名评价消息的真实性,因此可能受到虚假消息的误导,做出紧急避让、绕行等动作,影响正常的交通秩序,甚至导致交通事故。现有的虚假消息检测方法可以分为节点为中心的方案[3]和数据为中心的方案[4]。节点为中心的方案通过收集、记录和评价每个车辆节点的历史行为,使用声誉或者信任值量化车辆节点可信的程度。如Chen等[5]提出了隐私保护的声誉机制,根据发送者的声誉值确定是否接受紧急消息。数据为中心的方案不记录车辆节点的历史行为,而是评价数据本身的可信程度。Zaidi等[6]提出了基于统计的入侵检测系统,根据交通流理论建立交通模型,检测攻击者发送的虚假消息。
基于交通流理论的研究显示,道路交通具有较强的空间相关性[7],发生交通事故等异常事件时,部分车道被事故车辆堵塞,来自于上游的交通流合并到未堵塞的车道,局部道路容量下降,造成上、下游区域车辆动态的异常变化:上游车辆采取减速、变道等避让动作,下游区域车辆密度降低、速度增加,从而导致局部区域交通参数(车辆速度、相对速度、时距等)统计规律的变化,这种变化可以用来推断真实的交通状态,检测虚假的紧急消息。本文提出一种基于空间推理的虚假消息检测方法,针对收到的紧急消息,利用上、下游车辆节点作为观测者,采集车载传感器数据并计算交通参数,基于决策树算法建立空间推理模型,对交通参数进行分类,评价真实的交通状态,推断告警消息声称的紧急事件是否真实发生。使用仿真实验评价了本文方法的准确性,结果显示该方法的检测率和误检率获得了显著提升。
车联网由车辆节点、路边基础设施(road side unit,RSU)、后台管理中心(如认证中心CA)组成。车辆节点通过车载传感器获取自身以及前、后方邻近车辆的位置、方向、距离、速度等信息,感知异常交通事件(如交通事故、不良路面、拥堵等)并广播紧急消息通知相关车辆。一个交通事故告警的场景如图1所示,车辆发送一条告警消息m=(p,t,e,sigpid)声称发生交通事故并造成一个车道堵塞,其中p和t为事故发生的位置和时间,e是事件类型,sigpid是车辆使用假名pid对消息的签名。位于位置p上、下游的车辆称为观测车辆,利用车载传感器的数据对位置p的交通状态进行推断,评价事件e的真实性,检测发送虚假消息的攻击者。
图1 网络模型
车联网中内部敌手注入伪造的紧急消息,发起虚假消息攻击。假设内部敌手拥有CA分发的假名、证书等安全参数,能够为消息生成合法签名。假设攻击现场存在合谋的敌手,合谋敌手具有完全的虚假消息检测的知识,通过阈下信道进行通信协调各自的攻击行为,在检测过程中注入虚假数据,使检测系统产生错误的结果。
如图2所示,虚假消息检测过程由3个主要部分组成:①证据采集:观测车辆从车载传感器采集数据,计算交通参数;②证据交换:观测车辆之间进行通信,交换证据并计算交通参数的统计数值;③空间推理,基于决策树算法建立推理模型,将交通参数统计值作为输入,推断目的位置的真实交通状态,报告检测到的攻击。
图2 算法流程
当前检测车辆记为vi,从车载传感器采集数据,获取邻近车辆的相对位置及实时速度,并计算如下参数:
车辆间距:vi与前方车辆vi-1之间的距离,记为sd。
车辆相对速度:vi与前方车辆vi-1实时速度的差值,记为rs。
车辆时距:车辆间距sd与vi的实时速度之间的比值,记为td。
检测车辆计算的交通参数被用作证据,推断目标位置的交通状态。
为扩大观测范围,增强检测准确性,观测区域内每个车辆使用安全路由协议将自己的证据分享给上、下游区域内其它观测车辆,消息格式为(sd,rs,td,sigpid)。同时也接收其它观测车辆发送的证据,并且计算这些交通参数的统计数值:
(1)上、下游路段中平均车辆间距的差值,记为
(1)
式中:m和n分别是上、下游路段中观测车辆的数量。
(2)上游路段中车辆相对速度的标准差,记为
(2)
(3)上游路段中车辆时距的标准差,记为
(3)
根据交通流理论[8],将道路交通划分为两种状态:正常状态和车道堵塞状态。正常状态指道路中没有堵塞,车辆在任意位置都处于相同的运动模式。堵塞状态指道路中部分车道被交通事故、道路施工等事件堵塞,从上游抵达的车辆改变自由行驶的模式,采取刹车、变道等动作避免发生碰撞;同时,由于堵塞位置车辆流量降低,下游区域呈现低密度、高速度特征。真实交通环境中,交通参数的变化受道路形状、交通规则、交通压力等多因素影响,与交通状态之间通常呈现非线性关系[9],因此选择决策树算法建立推理模型。决策树是一种以实例为基础的归纳学习分类方法,能够快速处理高维、非线性数据。使用历史交通数据对模型进行训练,车辆节点预存储训练后的模型,针对收到的告警消息,将上、下游观测车辆收集的交通参数作为输入,对数据进行分类,推断目标位置的真实交通状态。
假设历史交通数据X=(x1,…,xi,…,xk)包含k个样本数据,其中xi=(sd,rs,td),sd,rs和td为属性。另有样本标签L=(l1,…,li,…,lk),其中li=0或li=1分别表示相应的数据x属于正常或者车道堵塞状态。训练样本可以归为正常状态样本和堵塞状态样本,记为X={X1,X2}。使用Quinlan等提出的基于分治策略的C4.5递归决策树生成方法[10],使用信息熵衡量样本集合的信息纯度,数据集合X的信息熵为
(4)
(5)
式中:Gain(X,a)是样本集X基于划分点t二分后的信息增益。对于训练集的多个属性,信息增益越大,获得的“纯度”提升越大。
车联网中每个车辆节点预存储训练完成的决策树,收到紧急消息后,运行检测算法评价消息真实性。如果推断结果与紧急消息声称的事件不符,则视为发现攻击,将紧急消息及其发送者的身份信息报告后台管理中心。算法的完整过程见表1。
表1 虚假消息检测算法
基于仿真实验评价本文方法的性能,并与文献[11]提出的基于心跳信息的虚假消息检测方法进行对比分析。交通场景使用微观交通仿真软件SUMO v0.19.0(simulation of urban mobility)建立。仿真使用一条单向、三车道直线型高速公路(如图3所示),长度为1公里,设置了3种不同类型的车辆,长度分别为5 m、7 m和10 m,最大速度分别为19 m/s、17 m/s、15 m/s。车辆从左侧进入道路,流量为840辆/小时。将本文提出的方法在网络仿真软件NS2中实现,将SUMO产生的车辆移动轨迹作为输入运行网络仿真,车辆节点无线传输距离设置为250 m。决策树的训练基于Python和scikit-learn软件包实现,其它参数设置见表2。
表2 仿真参数设置
图3 交通场景
仿真使用3个交通场景:无事故场景、单车道堵塞事故场景和双车道堵塞事故场景。在单/双车道堵塞场景中,在道路500 m处设置静止的车辆堵塞了右侧及中间车道,模拟交通事故造成的车道堵塞现象,上、下游区域长度均为150 m。首先将3个交通场景分别运行600 s时长,上、下游区域内的车辆每隔1 s收集传感器数据,并计算交通参数作为训练样本对决策树进行训练,训练完成的模型存储在每个车辆节点中,用于实时检测过程。
图4给出了训练数据集中3个交通场景的交通参数,其中x,y和z轴分别代表diff_sd,std_rs_up和std_td_up这3个属性,从图中可见3种场景的交通参数呈现较为清晰的分界,说明选择的交通参数能够较好地表征交通状态之间的差异。同时,从图中可以发现正常状态和车道堵塞状态之间难以使用线性边界进行分类,说明了分类任务的非线性特性,需要使用决策树等非线性方法确定分类边界。
图4 交通参数
基于C4.5决策树算法使用训练样本对推理模型进行了训练,生成的决策树如图5所示。为防止过拟合,对决策树进行了剪枝处理,最大深度限制为4,分支的最小样本数限制为5。
图5 决策树
使用训练完成的决策树进行虚假消息检测,使用检测率和误检率对检测准确性进行评价,检测率定义指虚假消息被成功检测的概率,误检率定义为虚假消息被漏检的概率和真实消息被检测为虚假消息的概率之和。为评价系统的抗合谋攻击能力,定义攻击者比例为上、下游路段中合谋攻击者的数量与此区域中车辆总数的比值。图6和图7给出了不同攻击者比例下本文方法的检测率和误检率,并与基于心跳消息的方法进行了对比。从图6可以看出,随着攻击者比例增加,两种方法的检测率逐渐下降,但在所有的攻击者比例下本文方法的检测率均高于基于心跳消息的方法。本文方法在合谋攻击者不大于25%时能够获得98%以上的检测率。这主要是由于本文方法利用了上、下游区域内的车辆节点,而基于心跳消息的方法中只有上游车辆节点能提供有效数据。由于检测车辆数量更大,成功实施合谋攻击需要的攻击者数量越多。在40%的合谋者比例下,本文方法和基于心跳消息的方法的检测率分别为50%和19%,说明本文方法获得了更强的抗合谋攻击能力。
图6 检测率
图7 误检率
图7显示了同样的趋势。与基于心跳消息的方法相比,本文方法获得了更低的误检率。在25%合谋节点比例下,本文方法的误检率为4.5%,而基于心跳消息的方法的误检率达到了25.5%。
针对车联网中内部敌手发起的虚假消息攻击,车辆受到误导可能采取错误的驾驶动作,不但影响系统可靠性,而且对交通安全造成隐患。本文利用交通数据具有较强空间相关性的特点,提出一种空间推理的分布式检测方法,位于现场上、下游的车辆彼此合作测量交通参数,利用C4.5决策树算法对交通数据进行分类,推断真实的交通状态,检测攻击者。使用仿真实验对提出的方法进行了评价,结果显示该方法的检测率、误检率均显著优于现有的基于心跳消息的方法,并且能够获得更强的抗合谋攻击能力。