基于单分类支持向量机的CAN总线异常检测方法

2020-05-25 10:15盛铭陈凌珊汪俊杰杜红亮
汽车技术 2020年5期
关键词:报文总线向量

盛铭 陈凌珊 汪俊杰 杜红亮

(1.上海工程技术大学,上海 201620;2.上海汽车集团股份有限公司商用车技术中心,上海 201108)

主题词:车联网 车载CAN总线 异常检测 单分类支持向量机

1 前言

智能客车除基本的电控系统外,还增加了驾驶辅助系统,如行人碰撞防护、胎压监测等,所有控制器均通过CAN 总线进行通信,客车上的电子设备如远程监控智能通信终端(Telematics BOX,T-BOX)、胎压检测单元等都可能成为黑客入侵的途径[1]。

国内外学者对车载网络的异常检测进行了相关研究。于赫采用决策树的方法对CAN报文的数据场进行了研究[2]。Taylor 等提出了长短期记忆(Long Short-Term Memory)神经网络对报文的ID 进行研究[3]。Marchetti 等提出了CAN 报文实时序列的监测方法,对实车总线CAN 报文ID 的生成序列进行了研究[4]。Theissler提出了集成式异常检测系统,采用投票的方式应用不同的机器学习模型,以提高模型的鲁棒性[5]。杨宏采用支持向量机二分类算法进行了CAN总线攻击与防御检测技术研究[6]。Ji等通过不同攻击方式的试验对4种异常检测的方法进行了对比[7]。Wang C等对层级实时记忆(Hierarchical Temporal Memory,HTM)神经网络模型进行了研究[8]。

上述研究均采用二分类方法,即随机生成与正常数据同样大小的异常数据,经过二分类模型训练达到分类效果。但随机生成的异常样本不具备代表性,车上的许多故障是未知的或不容易被注入的,导致这种方法会产生错误的决策函数。因此,本文提出单分类支持向量机异常检测算法,仅对正常样本进行训练,采用试验的方式攻击实车总线,验证所提出方法的可行性。

2 智能客车网络安全隐患

为分析目前智能客车所面临的网络安全隐患,采集了即将上市的某品牌智能公交车在多工况试验下的总线报文数据。选择上海公交线路徐闵线作为试验路线,该公交线路起点为闵行站,经过32 站到达肇家浜路东安路终点站。采集路段包含城市公路及内、外环等多种复杂路况,且包含了车辆几乎所有运行模式下的数据,满足数据集采集目标的需要。采集的城市工况部分原始数据经可视化处理后车速变化曲线如图1所示,油门踏板开度曲线如图2所示。

图1 城市工况行驶车速

图2 城市工况油门踏板开度

车速信号的报文将根据总线通信协议转发给仪表控制器,驾驶员根据仪表的显示信息进行驾驶决策;油门踏板开度信号将发送至整车控制器,整车控制器据此控制电机输出扭矩。若攻击者篡改了上述信号的数据,将威胁车辆行驶安全。

3 基于单分类支持向量机的网络入侵检测模型

3.1 单分类支持向量机算法

单分类问题指操作模型的训练样本只有1类,异常检测中即为正类。Scholkopf 等人提出了单分类支持向量机(One-Class Support Vector Machine,OCSVM)[9-10],基于支持向量机(Support Vector Machine,SVM)的分离超平面和最大分类间隔等思想,将一分类问题等价为特殊的二分类问题。Xiao Y等提出了基于OCSVM的针对异常检测的2种高斯核参数选取方法,提高了模型的准确性[11]。Chandan等提出局部多核学习的方式对单分类的异常样本进行检测[12]。

设训练样本x1,x2,…,xn∈X均为正类,其中n为训练样本的个数,X为输入空间;设Φ(x)为输入空间X到特征空间F的特征向量。OCSVM 将原点视为异常样本,并寻找一个超平面以最大间隔将原点和训练样本映射分开。超平面的公式为f(x)=w·Φ(x)-ρ=0,其中w和ρ分别为f(x)的法向量和截距。OCSVM的优化问题表示为:

式中,v(0,1]为预先定义的百分比参数估计;δi为松弛变量。

松弛变量是在超平面无法正确分类或能正确分类但会造成过拟合的问题上产生的,引入松弛变量将允许训练模型出现一些分类上的错误,增强模型的泛化能力。参数v是间隔误差分数的上界和支持向量分数相对于训练样本总数的下界,在模型精度和过拟合问题上进行平衡。式(1)的拉格朗日双关问题为:

式 中,α=[α1α2…αn]T为双关变量;K为核矩阵,(K)ij=k(xi,xj)=(Φ(xi)·Φ(xj)T);k(xi,xj)为核函数。

核函数是为了解决SVM线性不可分问题所提出的函数映射关系,核函数将样本从原始空间X映射到更高的特征空间,使样本在此空间内线性可分,达到分类效果。本文基于高斯核进行异常样本检测:

式(3)中,S参数定义了单一训练样本对其他样本的影响,取值较大会使其他样本受更大的影响,同时也描述了模型的复杂度,其值越高,模型复杂度越高。

v和S对算法的准确率和泛化能力起决定性作用,本文采用交叉验证和网格搜索的方式对两者进行匹配选择。

3.2 CAN总线报文的OCSVM模型生成

3.2.1 智能公交CAN总线特性分析

智能公交的CAN总线根据功能分为8路CAN,其中最重要的为动力CAN,包含4 个控制器,即整车控制器(Vehicle Control Unit,VCU)、电机控制器(Motor Control Unit,MCU)、电池管理控制器和高压部件辅助控制器。此网段的报文ID周期分布如图3所示。

图3 该网段下不同ID的频数

由图3可以看出,整车报文完全按照通信协议周期发送,若总线被以增加ID或丢弃ID的方式入侵,可采用统计学信息熵的方式检测ID数据量异常。但若ID的发送周期不变,只改变其数据,上述方法将不适用。选取周期最短的电机报文(周期为10 ms)进行分析,此ID包含64 bit二进制数据,共分为8个字节,此ID下第3个字节的数据分布如图4所示。

图4 电机报文第3个字节的数据分布

由图4 可以看出,该字节的信号波动遵循一定规律,是完全按照通信协议的信号列表来传输数据的,因此降低了训练模型的复杂度,以数据的8 个字节作为8个特征来训练OCSVM模型。

3.2.2 模型生成

将所采集的整车运行数据进行处理,共包含209万个报文数据,把数据按ID进行分类,把每个ID分成8个特征进行训练,训练过程如图5所示。

图5 单分类支持向量机CAN总线异常检测训练过程

3.2.3 交叉验证

为避免过拟合问题,将数据集分为训练集和测试集分别进行训练和验证。交叉验证的过程如图6所示。

图6 交叉验证流程

本次交叉验证把数据集分为10个等份,其中9份作为训练集,另外1份作为验证集。循环10次,直至验证集分别取到10个不同的数据集。通过此步骤得出的参数可以有效避免过拟合,将此参数直接用于训练集训练数据,可得到最佳效果。图7所示为用不同组合的v和S进行匹配时训练集、测试集及异常集的预测准确率。

图7 训练集、测试集及异常集的预测准确率

由图7 可得出最佳参数组合,决定取v=0.001、S=0.000 1训练数据,以检测CAN总线上的异常数据。

3.2.4 ID训练结果

基于以上的分析与验证,用训练好的参数分别对31 个ID 在v=0.001、S=0.000 1 条件下进行训练,结果如图8 所示,训练集、测试集和异常集的准确率均在97%以上,所以OCSVM算法适用于车载网络异常检测。

图8 单分类支持向量机对不同ID的训练结果

4 试验与结果分析

基于以上训练结果,采用试验的方式进行验证,用仿真节点攻击真实的车载网络,试验环境如图9 所示。实车中控台上有3块液晶显示器,从左至右分别为触摸控制屏、液晶仪表及驾驶辅助360°环境监控显示屏,用CANoe 模拟被入侵的ECU,通过Vector 公司的双通道CAN 总线硬件接口VN1630 与整车车载诊断系统(On Board Diagnostics,OBD)连接,实现总线入侵。

图9 实车试验环境

4.1 网络入侵实现

4.1.1 篡改客车仪表显示信息

试验中模拟2个节点(仪表控制器和电机控制器)对总线进行攻击。液晶仪表实时显示客车运行时的部分重要信息,信号大多由VCU从其他控制器转发而来,故模拟VCU节点向仪表发送能改变显示信息的报文,报文ID不变,只改变其数据域,篡改数据信息如表1所示。

表1 篡改仪表信息发送数据

按照通信协议在ID和发送周期不变的情况下向总线上发送如表1所示的3条报文信息,分别更改了挡位信息和车速信息,具体效果如图10所示。

图10 篡改信息后仪表的响应

从图10 可看出,在空挡的情形下行驶车速为45 km/h,这不符合客观常识,影响驾驶员的决策。

4.1.2 篡改实车控制信号

利用总线工具CANoe 通过CAN 卡VN1640 与实车总线相连对电机节点的报文进行仿真发送,不改变报文定义的周期,只改变报文下的数据,CANoe 节点仿真界面如图11所示。

图11 CANoe节点仿真界面

统计出正常电机节点的数据发送规律,模仿其数据发送方式,做如下尝试:只改变其中1个字节的数据,保持其他7个字节按规律发送数据;改变其中2个字节的数据,保持其他6个字节按规律发送数据;随机生成8个字节的数据。表2所示为按照上述3种方式设计的数据发送方式。

表2 篡改电机信息发送数据

如表2所示,按照总线通信协议下的电机节点所发送的报文,在不改变链路层的前提下,即不影响该节点与其他节点的网络通信,只改变其数据场,也就是改变传感器传来的数据,使其他节点接收到错误的传感器信息,也就达到了网络入侵的标准。表3 所示为入侵前、后从CANoe中检测到的总线通信状态统计结果。

表3 入侵前、后总线状态对比

由表3 可知,入侵后总线上无错误帧,表明仿真节点与实车节点在链路层通信上是吻合的,仪表也未报出CAN总线通信障及电机节点丢失故障,表明入侵成功。

4.2 算法验证

为了对算法进行验证,采集了电机入侵环境数据,把处理后的数据放入训练好的模型中,部分结果整理如表4 所示。对数据进行标签化处理,以便验证测试结果,标签1 表示正常数据,标签-1 均为表2 所示的异常入侵数据,结果见表4。通过标签与预测值的对比发现,3 种数据改写方式都被异常检测模型分类为异常类,证明了模型的有效性。

表4 整理后的试验数据

5 结束语

本文研究了智能客车CAN 总线异常检测方法,采集了上海市徐闵线公交车实际运行数据,采用单分类支持向量机对数据模型进行训练,交叉验证修正模型参数,各ID 模型检测准确率均高于97%。实车试验结果表明,此方法对异常值检测有很好的效果。

猜你喜欢
报文总线向量
基于J1939 协议多包报文的时序研究及应用
以太网QoS技术研究及实践
向量的分解
基于Python的汽车CAN总线报文格式转换系统的设计与实现
关于CAN总线的地铁屏蔽门控制思路论述
基于报文类型的限速值动态调整
向量垂直在解析几何中的应用
向量五种“变身” 玩转圆锥曲线
Q&A热线
PCI9030及其PCI总线接口电路设计