吴 珊
(咸阳职业技术学院汽车学院,陕西 咸阳 712000)
车载网络的发展为驾驶者提供了更丰富的功能,如汽车导航、辅助驾驶、车辆控制等。但伴随汽车功能的增多,车载网络也面临巨大的安全挑战,如CAN(controller area network,控制器局域网络)总线攻击等。为此,罗峰、盛铭等[1-2]根据汽车CAN总线报文数据域的特性,提出一种基于支持向量机的CAN总线报文异常检测方法,从而有效检测出报文中的异常数据,提高了汽车行驶的安全性;王倩倩、柴艳娜等[3-4]通过研究网联汽车自适应巡航控制系统在隐蔽攻击下的安全性,提出通过神经网络进行入侵检测,结果表明该方法可快速且有效地检测到车载网络的入侵。但上述检测方法采用卷积神经网络(convolutional neural networks,CNN),对计算机硬件的要求高,且检测的准确率还有待进一步提高。为此,本文尝试提出一种更为轻量化的车载网络安全入侵检测方法,并通过实验验证该方法的可行性。
CNN作为深度学习算法的一个重要分支,主要由卷积层、池化层和全连接层构成,可用于图像识别、语音识别等领域。其中,卷积层和池化层组成特征提取器,用于图像特征提取和降维;全连接层为分类器,用于特征的分类。
卷积层主要负责提取图片特征,其重要特点是通过卷积运算增强原信号特征,降低噪声。卷积运算涉及到的主要参数包括卷积核大小、过滤器数量、卷积步长。以二维图像的卷积运算为例,图1中箭头方向为图像运算方向。设输入图像尺寸为5×5,卷积核大小为3×3,步长为1,则卷积核在虚线框内的卷积运算为:2×1+1×1+1×1+3×1+1×1=8。
图1 二维图像卷积运算过程
由图1可知,通过卷积运算可得输出特征图,相较于输入图像,卷积运算后图像尺寸发生了变化。若要得到与输入图像尺寸相同的输出特征图,需在输入图像周围进行填充,具体过程如图2所示。
图2 二维图像卷积运算的填充
图2中,虚线框内即为填充区域。通过填充操作,可得到与原始输入图像尺寸相同的输出特征图。
池化层的主要作用是保留重要特征,删除冗余特征,以减少网络的运算参数,包括平均池化操作和最大池化操作,具体如图3所示。其中,最大池化操作是取池化核内最大值为输出特征图对应点的特征值;平均池化操作是取池化核内所有像素值的平均数作为输出特征图对应点的特征值。通常情况下,CNN网络采用最大池化操作构建池化层,故本文也选用最大池化方式。
图3 最大池化和平均池化示意图
经池化层操作后,特征图按轴展开为一维向量输入全连接层,然后全连接层通过权值矩阵将向量值映射到其对应的类别中,从而实现分类。全连接层的分类函数为:
y(x)=f(W×X+b)
(1)
式中:y(x)为全连层的输出;f(·)表示激活函数;W为权值矩阵;X和b分别为输入向量和偏置向量。
根据CNN的基本原理可知,标准的CNN结构简单、分类效果好。同时,网络结构越复杂,图像识别的质量越高。但在具备以上优点的同时,对处理器的性能提出了更高的要求。因此,基于现有的处理器性能,如何构建更为高效的CNN,成为思考的重点。超分辨率测试序列(visual geometry group,VGG)网络是一种轻量的CNN,通常包括VGG-16和VGG-19两种结构。以VGG-16网络为例,其网络结构如图4所示。VGG-16网络输入224×224×3大小的RGB彩色图像,输出图像为1×1×1,共包含13 800万个参数。相较于标准的CNN,其预测效果更好,计算效率更高。
图4 VGG-16网络结构
由于车载网络入侵检测的数据集大,且数据通常为一维时间序列,因此标准的VGG-16网络难以对车载网络数据进行特征提取和分类。为此进行以下改进:利用地域自适应保真算法(geographical adaptive fidelity,GAF)将车载网络的一维时间序列数据转化为二维矩阵,再转换为图像[5],对VGG-16网络的参数和结构进行改进[6],从而提高VGG-16网络的效率。其中,改进VGG-16网络结构如图5所示。
从图5可知,VGG-16网络的输入序列长度为64个时间步,所以首先采用GAF编码,得到尺寸为64×64×1的图像;然后经过5层卷积层的卷积,使得每层卷积层过滤器减半;最后通过FC100全连接层输出,并通过Sigmoid分类器进行分类,输出结果。
图5 改进VGG-16网络结构
在完成VGG-16网络结构改进的基础上,还需对模型超参数进行设定。本文从VGG网络的损失函数、隐藏层激活函数、Sigmoid分类器、权值初始化等4个方面进行设置,以构建更为高效的CNN车载网络入侵检测模型,具体如下。
2.3.1损失函数
损失函数是通过梯度下降算法实现数据的拟合。由于初始状态下网络的预测值与真实值差异明显,因此需通过网络训练不断调整和优化网络权值参数,以使预测值接近或达到真实值。对此,本文选用交叉熵函数作为损失函数,具体交叉熵函数为:
(2)
2.3.2隐藏层激活函数
为避免VGG-16网络训练过程中出现梯度消失的问题,采用Relu激活函数进行修正[7]:
(3)
式中:x为输入值。
由式(3)可知,Relu函数为分段线性函数。通过这种分段,保证了部分神经元在正向传播时不被激活,使网络具有一定稀疏性,提高了网络的计算效率。
2.3.3Sigmoid分类器
本文采用Sigmoid分类器作为改进VGG-16网络输出层的分类器,具体表达式为:
(4)
2.3.4权值初始化
车载网络入侵检测实验的硬件环境为:处理器选用Intel core i7-9750H,内存为12 GB,硬盘为1 T+256 GB,GPU选用NVIDIA GeForce GTX1650。软件环境为:操作系统为Windows10,深度学习算法框架选择Tensorflow2.2.0,编程工具选择pyts0.11.0。
选用精准率precision、召回率recall、F1值作为入侵检测模型的评价指标,计算方法为 :
(5)
(6)
(7)
式中:TP表示真正例;TN表示真负例;FN表示假负例;FP表示假正例。
实验数据选自某现代Sonata2010款汽车收集的Dos Attack数据集和Fuzzy Attack数据集[9],这些数据集包括正常数据帧和注入攻击的数据帧,具体分布如图6所示。
根据图6可知,Dos Attack数据集中,正常样本占比83.6%,攻击样本占比16.7%;Fuzzy Attack数据集中正常样本占87%,攻击样本占13%。
图6 初始数据分布
为便于后续实验,对Dos Attack数据集和Fuzzy Attack数据集依次进行数据提取、类型转换、编码、序列分割、序列标注、变换等预处理,具体操作步骤如下:
1)分别从Dos Attack数据集和Fuzzy Attack数据集中提取出CAN ID列和flag列,形成子集Dos ID和Fuzzy ID。
2)将Dos ID和Fuzzy ID中的十六进制表示的ID转换为十进浮点数表示,并将其CAN ID值缩至-1~1,将flag中“R”标签编码为0,“T”标签编码为1。
3)将数据集分割为步长64的序列,同时对其进行75%的重叠处理和数据增强。
4)设置序列标签,若序列中没有ID对应的flag为1,则标注为0,即正常序列;若序列中存在一个及以上ID对应的flag为1,则标注为1,即攻击序列。
5)采用GAF编码转换每个CAN ID序列为矩阵,并添加通道轴,形成64×64×1的图像,得到新的Dos Images数据集和Fuzzy Images数据集,其分布如图7所示。由图7可知,Dos Images数据集和Fuzzy Images数据集中的正负样本比例的分布相较于初始数据集,数据的分布更为均匀,不同数据集下正常样本和攻击样本的比例大致控制在7∶3,更为合理。
图7 预处理后数据集样本分布
CNN模型训练参数设置如下:学习率为0.001,min-batch为64,epoch为50,优化器为Adam。
3.5.1算法验证
为验证所提GAF+改进VGG-16网络的车载网络入侵检测模型效果,分别在Dos Images数据集和Fuzzy Images数据集上进行验证,结果如图8所示。由图8可知,改进VGG-16检测模型的收敛速度较快,没有出现过拟合现象。
图8 模型在数据集上的训练和验证曲线
3.5.2算法对比
为进一步验证GAF+改进VGG-16网络的入侵检测模型性能,将传统的Reduced Inception-ResNet入侵检测模型作为对照组进行对比实验[10],结果见表1。由表1可知,本文提出的检测模型在DoS Images数据集和Fuzzy Images数据集上检测的准确率均达到99%以上,且相较于Reduced Inception-ResNet网络模型,F1指标表现更好。由此说明,本文提出的网络检测模型准确率更高。
表1 不同模型在不同数据集上的性能对比
本文提出的GAF+改进VGG-16的入侵检测模型收敛速度较快,且收敛过程中没有出现过拟合的现象。通过对比可以看出,本文提出的入侵检测模型在不同数据集上的检测准确率都可达到99%以上,相较于传统的Reduced Inception - ResNet入侵检测模型,具有更高的识别准确率。由此结果可以说明,本文的改进方案可行。