基于LSTM 网络的车载CAN 总线异常检测研究
2020-07-18安童乐王春东
安童乐,王春东,杨 成
(天津理工大学计算机科学与工程学院,天津300384)
CAN(Controller Area Network)总线是目前应用最为广泛的车载网络总线.相比较于汽车病毒在汽车内部系统上的破坏,针对CAN 总线的攻击可以直接控制动力系统、刹车、转向,其导致的后果不堪设想.美国、欧盟、日本等相关机构积极开展智能汽车信息安全研究,如现代汽车信息安全最佳实践[1]和OVERSEE[2]、PRESERVE[3]项目等. 学术界也加大了对车载CAN总线信息安全的研究[4-6],根据研究目标的不同,分为基于加密和认证[7]的、基于异常检测[8-10]的和基于安全框架[11-12]的三个方向.而绝大部分加密认证机制都是在增加一定的总线负载的基础上进行,受CAN 通信实时性要求的约束较大.采用安全框架的防御需要从整体设计网络架构更新固件,具有一定局限性.
异常检测技术已经被广泛地运用来检测网络恶意攻击.在不增加系统开销的基础上选择异常检测机制,既能快速的部署到现有的车载网络,又可作为基于安全框架的第一层防御.
本文以车载CAN 总线异常检测为目标,以CAN协议[13]作为切入点,首先分析了CAN 总线通信特征和现有的攻击方式;然后提出基于LSTM 网络的车载CAN 总线异常检测模型:通过收集CAN 总线中的报文序列,根据当前ID 号计算预测值与实际值之间的误差,实时检测异常报文;最后通过实验证明该模型能有效检测重放攻击和帧伪造.
1 车载CAN 及其面临的安全威胁
1.1 CAN 总线介绍
汽车电子控制单元ECU(Electronic Control Unit)在车内网络中通过CAN 网络进行相互连接,并通过CAN 总线进行通信.
CAN 总线上一个数据帧可携带0~8 个字节的数据,报文可以使用11bit 标准帧ID 或29bit 扩展帧ID.在CAN 协议中,消息的发送通过数据帧的标识符仲裁来确定传输优先级,CAN 数据帧的标准格式如图1 所示.
图1 CAN 数据帧标准格式Fig.1 CAN data frame standard format
1.2 CAN 总线通信特性
CAN 总线上的通信特征主要为下面四个方面.
1)广播传输.由于CAN 总线是单一公共信道[14],而且协议规定所有的节点都可以监听总线消息,所以恶意节点很容易获取总线上的所有消息.
2)无认证机制.CAN 总线上的消息不存在表示消息源和消息目的的字段,这意味着无法判别消息的发送方,无法辨认消息来源于正常节点还是恶意节点.
3)消息无加密.CAN 总线上的几近明文传输,而且消息内容最多只有64bit,很容易被攻击者破解.
4)基于ID 号的消息仲裁.CAN 总线上的消息优先级是通过每个消息的ID 号表示.ID 号越小,其优先级越高.如果一个节点一直发送ID 优先级最小的消息,其他的消息就无法正常发送,会影响CAN 总线的正常使用.显然,这是一种DoS 攻击[15].
1.3 攻击方式
根据上节所述的通信特征,现有对于CAN 总线的攻击主要有五种:帧嗅探、帧注入、DoS 攻击、重放攻击和帧伪造.
1)帧嗅探.由于CAN 总线上传输的消息每个节点都可以监听到,包括网关.所以攻击者很容易通过节点对总线上的数据进行监听.
2)帧注入.CAN 总线上的没有消息认证机制,每个消息的发送方无法进行辨识.简而言之,每个ECU都可以发送任意ID 号的数据,这就为所有的相关攻击提供的便利.
3)DoS 攻击.DoS 攻击主要是基于CAN 总线的消息仲裁机制,ID 号小的数据优先级比较高.如果恶意节点一直发送ID 号最小的消息,CAN 总线就无法正常工作,严重威胁对车辆安全甚至人身安全.
4)重放攻击. 当攻击者从CAN 总线上窃听到消息时,最先想到的攻击方式就是重放攻击,因为重放攻击不需要太多的先验知识,只需要保证在重放数据时,CAN 总线上没有数据传输.例如在汽车高速行驶的过程中一直发送抱死命令,或者发送开关门信息.
5)帧伪造.如果攻击者有较强的先验知识,可以实现对CAN 总线上消息的逆行破解.现有的大部分的通信协议都是汽车厂商自己定义,但消息内容的长度最多只有64 位,汽车的动作有限,通过暴力或彩虹表等互联网破解技术很容易破解.当攻击者已经破解了当前CAN 总线的通信协议,可以很容易伪造消息.其中,帧嗅探和帧注入是其它三种攻击的基础,而DoS 攻击的检测已有研究者进行深入研究[9],所以本文只对重放攻击和帧伪造这两种攻击行为的检测进行研究.
2 长短期记忆网络
长短期记忆(Long Short-Term Memory,LSTM)网络是一种循环神经网络(RNN)[16],由于独特的设计结构,LSTM 网络适合处理和预测时间序列.由于CAN总线是单信道,总线上的所有消息都是序列化的,实际表现出来是时间序列数据,LSTM 对于此类数据的预测处理比较适合,所以本文对于CAN 总线上的重放攻击和帧伪造使用LSTM 算法进行检测.
LSTM 工作原理如下:
LSTM 时刻t的网络结构如下图所示.其中xt是t时刻的输入,ht-1是t-1 时刻隐藏层的输出,ct-1是t-1 时刻历史信息的输出;ft、it和ot分别为t时刻的遗忘门、输入门和输出门;c′t是t时刻通过变换后的新信息,ct是在t时刻更新过后的历史信息,ht是t时刻隐藏层的输出.其具体计算流程如图2 所示.
图2 LSTM 节点计算流程Fig.2 LSTM node calculation process
首先,将t时刻的输入xt和隐藏层的输出ht-1复制四份,并为它们随机初始化不同的权重,计算出遗忘门、输入门和输出门以及通过变换后的新信息.它们的计算公式如下所示,其中W是输入层到隐藏层的参数矩阵,U是隐藏层到隐藏层的自循环参数矩阵,b为偏置参数矩阵,σ 为sigmoid 函数,使得三个门的输出保持0~1 之间.
其次,使用遗忘门ft和输入门it来控制忘记多少历史信息ct-1和保存多少新信息c′t,从而更新内部记忆细胞状态ct,其计算公式如下所示.
最后,使用输出门ot来控制输出多少内部记忆单元ct的信息到隐状态ht,其计算公式如下所示.
3 基于LSTM 的数据异常分类器
3.1 CAN 总线数据域分析
本文使用的数据为业内使用比较广泛的数据集[17],大约共有61.5w 条数据,每条数据包括时间、ID 号、数据内容长度和数据内容四部分.
每一个消息中数据内容部分为0~8 字节,为了便于分析,本文使用8 字节对所有的数据内容进行描述,下面所称数据均为8 字节数据.
对于CAN 总线上的数据,攻击者如果想要攻击,对每一条数据进行逆向破解就很重要.由于每一个厂商对于协议的制定不同,对于协议的破解难度也比较高.在车辆的实际通信中,也有一些基于CAN的上层协议,这些协议将CAN 总线的能力进一步提升,例如ISO-TP 就突破了CAN 一帧只能发送8 个字节的限制. 简而言之,有可能CAN 总线上的相邻的几个数据包表示的是一个内容,但是无法得知到底具体数据包的数量.为了模拟黑盒测试,本文对于数据包的研究是以1 为单位.
不同ID 数据包的内容部分相关性几乎没有,所以本文对于数据包的研究是将同ID 号的数据包看做一个序列,不同的ID 序列有着不同的分类器,但是检测算法都是相同的.
综上所述,本文对于CAN 总线上的数据内容研究是基于下面三个基础:
1)只关注数据内容为8 字节的数据帧;
2)以一条数据包为单位进行数据分析;
3)以同ID 号的数据包为一个分析序列.
3.2 LSTM 检测模型
本文使用LSTM 算法对相同ID 序列进行异常检测,所以在对本条数据进行预测之前,需要对于CAN 总线上的整个数据流进行分类,具体检测流程如图3.
图3 数据异常检测模型Fig.3 Data anomaly detection model
一般检测器作为一个独立的单元存在于CAN总线上,对总线上的数据进行监听.每当检测单元侦测到一个数据包,首先对其ID 号进行识别,从已有的分类器库中选择相应的分类器进行预测模型建立;然后使用以往的ID 序列,对当前应该出现的数据进行预测,得到预测结果;最后将预测结果和检测到结果进行对比,判断此数据包是否为异常数据.如果不为异常数据,则对当前ID 的序列数据进行更新,以备下次使用.
1)数据输入.如前所述,对于每一个当前的数据包,针对ID 选取相应的数据序列.本文使用8 个10进制数字表示数据包中的数据,所以预测模型的输入为形如n×8 的数字矩阵,其中n为分组数量,即所使用的以往数据的数量,8 为每一条数据的内容.
2)分类器设计. 具体的分类器设计如图4 所示,其中,两个Dropout 层主要是为了防止出现过拟合的情况,提高预测模型的泛化能力.数据经过6 层的运算,最后通过Dense 层进行输出,得到一个1×8的数字矩阵,即预测结果.
3)误差度量.通过算法模型得到了一个预测数据,然后就需要和现有数据进行对比,判断当前的数据是否为异常数据.由于数据包中不同字节的数据大小不一致,本文使用绝对值均差对预测误差进行界定.具体的计算方式如下:
其中,d为检测到的实际数据,d′为预测数据.n为数据的长度,本文中为8,di代表了实际的数据域中的第i字节的数据,d′i代表了预测的数据域中的第i字节的数据.
图4 LSTM 分类器设计Fig.4 LSTM classifier design
4 实验设计与结果
4.1 异常数据构造
本文的主要目对重放攻击和帧伪造进行检测.重放攻击比较简单,一般是发送之前搜集到的信息.帧伪造是对数据包的内容部分进行修改,实现过程比较复杂,一般分为两步:1 通过监听目标ID 序列,计算出发送周期,踩点发送高优先级的报文,阻止正常报文的发送;2 发送伪造的报文,达成攻击目的.
本实验主要构造两种异常数据:
1)数值伪造:包括个别位数值修改为最大或最小值,个别位数值设置为随机值.以及一个或多个字段修改为不同时间捕获的相同位置的值,其余位置的数值保持不变.
2)重放攻击:直接发送收集到的当前ID 的数据,不做任何修改.
4.2 实验结果与分析
1)实验设置.本文将同ID 的数据分开,只使用数据内容部分,不同ID 共有24 个.本文将每个ID 序列中的80%的数据作为训练集,20%的数据作为测试集.最后,随机抽取其中20%的数据,注入异常数据,对分类器进行验证.
为了测试不同长度数据对于预测的影响,本文将测试n=1,3,5,8,10 五种不同情况下对于预测结果的影响,并对不同的ID 序列建立不同的分类器.
2)数据内容的伪造和重放. 实验主要针对两种异常数据进行分析,首先对数据值篡改的检测效果进行测试分析,然后对重放攻击的检测效果进行测试分析.使用数据的多少影响算法的时间和效能.直观来看,使用的数据越多,准确率越高,但时间也就越长;使用的数据越少,时间越短,但是准确率也会受到影响,本文也会测试使用不同数据长度进行预测对于算法的影响.
使用数据进行训练时,本文将训练过程分为5类,分别使用长度为1、3、5、8 和10 的数据进行训练和预测.例如,长度为5 时,使用5 个数据包的数据域进行训练,预测下一个数据包的数据域.本文也与RNN 和HMM(隐马尔可夫模型)进行了对比,具体结果如图5 和图6.图中横坐标均为进行预测时使用的数据长度.
图5 不同模型对帧伪造的检测效果Fig.5 Detection effect of different models on frame forgery
从图5 和6 可以看出,三个算法对于重放攻击的检测准确率比对于帧伪造的检测准确率高,这是因为重放攻击所造成的数据域变化不大,预测数据和攻击数据之间的相似度比较高.对于两种攻击行为,LSTM 模型的性能都是最优的,比RNN 的性能好一点,远高于HMM 的性能.而且,当使用的数据长度越来越长时,准确率逐渐变高,这与预期相符合.但是8 到10 之间的性能增长少于之前,证明并非使用的数据量越多越好.
图6 不同模型对重放攻击的检测效果Fig.6 Detection effect of different models on replay attacks
5 结 论
本文通过对车载CAN 总的协议进行分析,根据其通信特点提出使用LSTM 网络对CAN 总线上的重放攻击和帧伪造进行检测.实验表明,LSTM 网络相较于已有的算法有着更好的检测效果.
本文仍存在一些不足,对于数据集中的数据使用不全面,检测结果还有一定的提升空间.下一步的主要目标是提升检测模型的准确率.