李思涌 吴书汉 孙 伟
(中山大学电子与信息工程学院 广州 510275)
随着数字化智能化社会的发展,智能联网汽车近年受到广大消费者的青睐,据国际数据公司IDC预测,2025年全球网联汽车销售规模将达到7830万辆.为了给驾驶者提供更加舒适、便捷、智能化的驾驶体验,新一代汽车在驾驶器内部加装了更多的电子元器件,包括实现自动驾驶所需要的各类传感器,以及提供更多娱乐功能所需要的多媒体设备,这使车内电子控制单元(electronic control unit, ECU)的数量激增.同时,大部分新一代汽车具备了接入互联网的能力,也可以通过蓝牙、WiFi等通信手段与手机APP匹配连接.但是复杂的车内网络和外部网络接口带来了新的安全隐患.攻击者可以通过多种方式接入车内网络,窃听网络通信并随意注入恶意信息,达到控制车辆或扰乱车辆正常行驶的目的[1-4].
控制器局域网(controller area network, CAN)是一种串行通信网络,在具有极其简单的结构的同时又能够保证网络节点之间通信的实时性和可靠性.但是由于CAN通信协议在设计时并没有考虑任何的安全机制,非常容易遭受恶意攻击.目前针对CAN总线的入侵检测系统(intrusion detection system, IDS)种类繁多,总体可以分为基于传统方法与基于机器学习的入侵检测系统2大类.本文将提出一种基于机器学习的入侵检测算法,结合了卷积神经网络(convolutional neural networks, CNN)与长短时记忆(long short term memory, LSTM)网络进行特征提取与学习,并融合了注意力机制以最大程度利用时序数据的特性.
CAN总线的物理结构极为简单,仅包括2根线路,分别命名为CAN_L和CAN_H,这种结构如图1所示:
图1 CAN总线结构
车内网络中的ECU作为节点并联在CAN总线上,并通过广播互相通信,即任一节点发送的消息帧都可以被网络上的所有节点接收.节点通过过滤器判断是否需要处理收到的消息帧.
CAN通信技术规范提供了2种消息帧格式,分别是CAN2.0A的标准帧和CAN2.0B的扩展帧.图2示出符合CAN2.0A规范的标准帧的部分构成:
图2 CAN2.0A标准帧格式
其含义及作用如下.
1) ID:标识符.长度为11b,通常记为3位十六进制数,如“0x123”.ID在消息帧的过滤和冲突仲裁中发挥重要作用.由于CAN总线采用广播传输机制而非寻址机制,因此每个节点需要使用标识符筛选自己需要的消息帧,并标记自己发送的消息帧,以便接收方正确识别.CAN总线在多个节点同时发送信息产生冲突时进行仲裁而非取消发送,通过位仲裁的方式,由高位向低位比较ID的二进制值,且指定“0”的优先级高于“1”,即ID数值越小的帧拥有越高的优先级,确保高优先级报文可以尽快发送.
2) DLC:数据长度代码.表明数据域长度的值,长度为4b,合法值范围为0~8,对应数据域的长度为0~64b.
3) 数据域,消息帧实际传输的有效内容.最长为64b,通常记为16位十六进制数.数据域是消息帧中长度最长也是最重要的部分,其中包含物理信号、检验信号、状态信号、计数信号等,有很大的利用价值.然而,不同ID的消息帧包含的信号完全由车企自由划定,并且配置文件出于安全考虑无法公开.因此对研究者而言,数据域的内容在没有先验知识的情况下观察起来非常困难.
随着智能汽车功能的不断拓展,车内网络已经具备连接至外部网络的能力.这也为攻击者提供了机会,他们可以通过外部网络接口进入车内网络进行监听或者注入攻击[5-7].Miller等人[8]成功通过WiFi端口攻入了Jeep Cherokee车型的内部网络,夺取了车辆重要功能的控制权限,如刹车和引擎控制,导致Jeep公司召回了140万辆相关汽车.Hoppe等人[9]通过对CAN总线实施特定类型的攻击,成功控制车窗升降、警示灯闪烁和ABS等功能.Woo等人[10]通过发布恶意的手机APP连接至车内网络,成功实现远程攻击车辆.
不论是通过外部接口接入网络还是挟持控制车内ECU,攻击者都是通过注入恶意消息帧的方式攻击CAN总线.在已知的攻击模式中共有4种方式,具体如下:
1) 泛洪攻击.正如前文所述,在CAN总线冲突仲裁中,ID值越小的帧优先级越高,因此ID为“0x000”的消息帧具有最高的优先级.如果攻击者持续高频率地注入ID为“0x000”的消息帧,CAN总线将长时间处于占用状态,从而使通信陷入瘫痪.
2) 模糊攻击.通常在攻击者没有事先获取目标车辆CAN总线信息的情况下进行.在这种攻击中,攻击者会生成完全随机的ID和数据域值组合成数据帧,然后将其高频率地注入到CAN总线上.模糊攻击常常被用来探测CAN总线上的潜在漏洞,同时也可以用来干扰或扰乱目标车辆的正常运行.
3) 伪造攻击.该攻击模式下,攻击者常常选择2~3个合法ID进行帧注入,数据域为全0或随机值.伪造攻击可以引发某些特定的车辆异常.
4) 重放攻击.攻击者在监听CAN总线正常通信时,截取一段通信并直接重新注入至总线.重放攻击是一种针对性非常强的攻击,可以通过重放对应通信来强制复现目标活动.同时重放攻击也是检测难度最大的一种攻击,因为其与正常通信相似度非常高,混入正常通信中难以辨别.
Kang等人[11]首次提出了基于深度神经网络(deep neural network, DNN)的CAN总线入侵检测技术.在该方法中,每条消息帧的64b数据域内容被作为网络的输入特征向量,经过神经网络最终输出二分类结果,检测是否发生入侵.Amato等人[12]对基于DNN的方法进行了更加深入的研究,分析了不同的隐藏层层数(即网络深度)对检测性能的影响.
Wasicek等人[13]提出了一种基于人工神经网络(artificial neural network, ANN)的入侵检测技术.在训练阶段,他们利用有关信息帧数据域的先验知识,提取出具有相关性的数据,处理后形成特征向量.文中使用具有瓶颈结构的ANN,以特征向量为输入,以重构输入的特征向量为输出,并以输出向量和原始输入向量的差值构建损失函数.
Taylor等人[14]首次提出LSTM的CAN通信异常检测方法.文中将当前帧的64b数据域内容xi作为网络的输入向量,经过2层全连接层后,进一步通过2层堆叠的LSTM网络,最终得到输出向量.输出向量yi同为64b,是对xi+1的预测.Hossain等人[15]深入探讨了LSTM网络与DNN组合的网络架构在CAN入侵检测的性能表现.
Hanselmann等人[16]提出了名为CANet的方法,该方法针对特定ID的消息帧中的信号进行检测.这些特定ID构成1个集合,其中每个ID都有1个对应的子LSTM网络.这些子网络的目标是重构原始输入中考察ID的对应信号,并计算损失以检测异常.
本文提出了一种基于带注意力机制的卷积-长短期记忆神经网络的CAN总线入侵检测方法.本节将首先简要介绍LSTM神经网络的原理,随后阐述数据预处理方法,最后概述模型的结构思路.
CAN总线的通信数据自带时序性的特性,因此基于循环神经网络(recurrent neural network, RNN)的方法在近年的研究中被证明在CAN总线入侵检测任务中表现出良好的性能.其中,基于LSTM网络的方法尤其显著有效.
LSTM网络是对传统RNN的改进,主要解决传统RNN的梯度消失或梯度爆炸问题,其中引入了3种门控结构,分别为输入门、遗忘门和输出门,每个门的输入均为当前时刻输入与上个时刻输出的组合,体现其记忆性.内部状态通过固定权重的自连接边在相邻时刻中传播,其中包含的信息可以无衰减和无增长地传播至下一时刻.
CAN总线的传输速度可以高达1Mbps,但并非所有传输内容都对入侵检测具有重要意义,许多信息对入侵检测并没有实际意义.尽管如前文所述,数据域内容的含义通常不清楚,难以精确解释,但本文仍希望从数据域中学习CAN总线通信的某些模式.因此,本文同时考虑消息帧的ID部分和数据域部分,采用基于二进制转换的方法构建CAN数据图像,如图3所示:
图3 CAN数据转化为图像方法
首先,提取所有消息帧的ID及数据域部分,形成一个时间序列.对于每条消息帧,将其3位十六进制的ID和16位十六进制的数据域部分进行二进制转换.如果数据域长度不足64b,则进行高位补0操作,从而得到一个长度为76b(12b+64b)的编码向量,完成对单条消息帧的编码.对于消息帧序列,将每条消息帧对应的编码向量按顺序堆叠,达到预定的行数时,便生成了相应的CAN数据图像.
本文提出的带注意力机制的CNN-LSTM模型如图4所示,由CNN单元、LSTM单元、全局注意力单元、分类单元4部分构成.
图4 网络结构
在每个时间步长,CAN数据图像首先通过CNN单元提取特征.CNN单元由多层网络构成,包括2维卷积层、激活函数,通过多层卷积逐渐抽取更抽象特征的层次结构,最后通过池化层与全连接层,将提取的特征输出.需要注意的是,前期预实验结果表明,过多的池化层会导致信息损失,影响模型性能,因此本文CNN单元中没有在第1个卷积层后加入池化.CNN网络的具体参数如表1所示.
预处理后输入模型的CAN图像大小为76×76,输入时间序列长度为5张CAN图像,通道数为1,训练批次大小为64.2个卷积层的卷积核大小均为(3,3),加入Padding操作维持输出图像大小不变,使用LeakyReLU作为激活函数.
经过CNN网络提取的特征图展平为1维向量后,进入LSTM网络,提取信息后将每个时刻的LSTM单元隐藏状态输出,其中使用Dropout操作连接防止模型过拟合.在全局注意力单元,使用3个全连接层分别作为注意力权重矩阵Wq,Wk,Wv,接收LSTM单元输出的特征向量,通过各个全连接层得到每个时间步长的注意力向量q,k,v,通过自注意力公式
分类单元使用一系列全连接层与激活函数,将时间序列的注意力向量作分类处理,最终通过softmax层输出分类概率,其中再次使用dropout连接进一步防止模型过拟合,LSTM单元、全局注意力单元、分类单元具体参数如表2所示:
表2 LSTM网络及相关网络参数
LSTM网络在每一时间步长接收CNN网络184832维度的特征为输入,产生128维度输出,与注意力权重矩阵Wq,Wk,Wv相乘并通过自注意力公式得到当前步长的128维向量,将5个时间步长的向量相加后,进入第1个线性层,生成512维度的向量,再通过1个线性层经过softmax激活函数得到二分类结果.
本文实验在安装有Intel®CoreTMi7-10980XE CPU@3.00GHz和NVIDIA GeForce GTX3090(24GB) GPU的PC平台上,基于PyTorch框架进行训练和测试.实验中,LSTM单元层数为5层,隐藏层维度为128,其中dropout=0.2;全局注意力单元中,全连接层维度为128,即注意力点数为128;epoch=150,初始学习率为1E-05,使用Adam优化器进行模型迭代优化.
实验使用“CAR HACKING:ATTACK& DEFENSE CHALLENGE 2020”中的数据集[17],该数据集分别采集自车辆停止状态及行驶状态,实验中使用驾驶状态的数据集.本文从混淆矩阵、接受者操作特性曲线(receiver operating characteristic curve, ROC)、混淆矩阵等多方面的指标衡量算法的性能.在分类结果中,标签“0”代表正常样本,标签“1”代表异常样本,即入侵.
实验得到的混淆矩阵结果如图5所示.可以看出,虽然存在一些误报和漏报的情况,但是从主对角线的值来看,不管是正常样本还是异常样本,本文提出的模型都能较好地分辨.
图5 混淆矩阵结果
ROC曲线和对应的AUC(area under curve)值如图6所示,其中ROC曲线较为接近直角,AUC值分别为0.9274与0.9253,接近1,证明分类器的性能比较优越.
图6 ROC曲线结果
为了探究自注意力机制的作用,本文还进行了消融实验,考察将网络中的全局注意力单元去除后模型性能发生的变化.实验使用平均召回率(recall)、特异性(specificity)、精准率(precision)、F1、准确率(accurate)值作为指标观察模型性能的变化.
实验结果如图7所示,可以看出无注意力机制下模型的性能每项指标都在下降.
图7 消融实验结果
同时,本文还将提出的模型与残差神经网络ResNet-18和长短期记忆神经网络LSTM进行了性能对比.其中:ResNet-18模型由18个卷积层和全连接层组成,并去除了不适用于时序数据的BN(batch normalization)层,该模型直接将5张CAN图像拼合作为输入;LSTM模型则由隐藏层维度128的LSTM单元堆叠5层组成,该模型直接将5张CAN图像展平为二进制数据构成的向量作为输入.2个模型最后均接入同样参数的全连接层进行分类.
实验结果如图8所示,可以看出本文模型对比2种经典模型,性能有较为可观的进步.
图8 模型性能对比结果
本文首先介绍了CAN总线的基础知识,包括CAN总线通信规则、CAN消息帧标准格式等,并列举了针对CAN总线的4种攻击模式.然后,介绍了当前最具代表性的基于机器学习方法.接着介绍了本文提出的使用基于注意力机制的CNN-LSTM网络的车内CAN总线入侵检测算法,给出了数据预处理的详细过程和网络的具体结构与参数.最后通过真车采集的数据集进行实验,结果证明本文模型在真实数据集下有较好的表现,能够有效检测针对CAN总线的入侵,并通过实验证明注意力机制在模型中的重要作用,同时验证了本文模型在性能上的优越性.