图1正常状态下的CANID序列及其对应的GASF特征图Fig.1CANIDsequencesinnormalstateandcorrespondingGASFfeaturemap
图2DoS攻击时的CANID序列及其对应的GASF特征图Fig.2CANIDsequencesduringDoSattackandcorrespondingGASFfeaturemap
CNN主要由卷积层、池化层和全连接层组成。卷积层和池化层在一起作为特征提取器,提取图片中的显著特征。全连接层作为分类器,对特征提取器提取到的特征进行解释和分类。
卷积层利用不同大小的卷积核,通过滑动窗口的方式对输入的图像进行卷积操作,通过激活函数提取出图像中的纹理、色彩等重要特征。卷积层越深,提取到的特征越抽象。卷积运算公式为
式(5)中:xlj为位于第l个卷积层的第j个特征图;f为非线性激活函数;n为输入特征图的个数;klij为卷积核的权值矩阵;(·)为点积运算;blj为当前输出特征图对应的偏置值。
图3最大池化和平均池化Fig.3Maxpoolingandaveragepooling
全连接层对经过卷积和池化操作得到的特征图进行解释和分类,其计算公式为
y(x)=f(WX+b)。(6)
图4简化的VGG网络架构Fig.4ReducedVGGnetworkarchitecture
式(6)中:W为权值矩阵;X为输入向量;b为偏置向量;f为激活函数。
激活函数就是神经网络中神经元运行的函数,如果没有激活函数,神经元的输入端到输出端的映射只能是线性映射,激活函数的使用使得神经元具有非线性映射能力,这对神经网络学习、理解复杂的非线性函数具有十分重要的意义。通过使用不同类型的激活函数,模型能够学习到不同的分类和回归方法。
在梯度反向传播过程中,由于使用链式法则进行求导,会产生一系列连乘运算,如果使用饱和激活函数,则在训练深度神经网络时会导致梯度消失或梯度爆炸等问题。为了避免这些问题的发生,本研究使用的算法在所有的隐藏层均使用Relu激活函数修正线性单元。Relu函数计算复杂度低,梯度不会饱和,使用该函数的模型收敛速度快。Relu函数公式为
sigmoid分类器常用于输出层,其取值范围为(0,1),它可以将一个实数映射到(0,1)区间内,可以用来做二分类,其函数公式为:
σ(t)=1/(1+exp(-t))。(8)
式(8)中:t为一个标量。在输出层使用sigmoid函数时,其分类函数如下:
式(9)~(10)中:p为输出的概率值;x为输入向量;θ为权值向量;y为输出的类别。当概率p>0.5时,分类为正样本;当p≤0.5时,分类为负样本。
图5CAN入侵检测模型架构Fig.5ArchitectureofCANintrusiondetectionmodel
表1原始数据集中数据分布Table1Datadistributioninoriginaldataset
表2原始数据集属性及其含义Table2Attributesandimplicationsoforiginaldataset
图6DoS攻击数据集中正常帧ID的时序分布Fig.6IDtimingdistributionfornormalframeinDoSattackdataset
图7fuzzy攻击数据集中正常帧ID的时序分布Fig.7IDtimingdistributionfornormalframeinfuzzyattackdataset
数据的预处理步骤如下:
1)数据集提取。分别从DoS攻击和fuzzy攻击数据集中提取出CANID和flag列作为本试验的数据集,形成DoSID和fuzzyID数据子集。
2)数据类型转换和编码。将两个数据子集中原本由十六进制表示的ID转换为十进制表示,并进行归一化,同时将flag中所有的“R”标签编码为0,所有的“T”标签编码为1。
表3分割后的数据集中数据分布Table3Datadistributioninsegmenteddataset
5)分离训练集和测试集。分别从DoS攻击和fuzzy攻击图片数据集中分离出对应的训练样本和测试样本,测试样本所占的比例为30%。
图8DoS攻击图片数据集中的正常样本和异常样本Fig.8NormalandabnormalsamplesinDoSattackimagedataset
图9fuzzy攻击图片数据集中的正常样本和异常样本Fig.9Normalandabnormalsamplesinfuzzyattackimagedataset
由于入侵检测的目的是尽量多地检测出攻击行为,同时降低误报率。因此本试验采用假阴性率(falsenegativerate,FNR)和错误率(errorrate,ER)对模型的分类性能进行评估。此外,在与其他模型进行对比过程中,也对精准率(precision)、召回率(recall)和F1值(F1-score)进行评价。
本研究使用目前主流的深度框架tensorflow实现模型的构建,试验硬件环境如下:处理器为Inter(R)Core(TM)i7-9750H,处理器主频为2.60GHz,内存为8.00GB,显卡为NVIDIAGeForceGTX16504GB,操作系统为Windows10。软件环境为python3.6.5,tensorflow2.2.0,pyts0.11.0。此外,本研究设计的模型在训练集上共迭代100次,批次大小设为64,优化器为自适应矩估计,损失函数为交叉熵。
表4CNN入侵检测模型的性能评估结果Table4PerformanceevaluationresultsforCNNintrusiondetectionmodel%
图10模型在DoS攻击和fuzzy攻击图片数据集上的训练及验证曲线Fig.10TrainingandvalidationcurveofproposedmodelonimagedatasetforDoSattackandfuzzyattack
表5模型在DoS攻击数据集上的准确度对比结果Table5AccuracycomparisonofeachmodelonDoSattackdataset%
表6模型在fuzzy攻击数据集上的准确度对比结果Table6Accuracycomparisonofeachmodelonfuzzyattackdataset%
本研究分析了汽车CAN总线网络中存在的安全威胁,以及针对这些威胁提出的防御方法。通过对针对汽车攻击的数据集——HCRL数据集的研究,进一步分析了CANID的周期特征,将CANID序列利用GASF转换为图片,并设计简化的VGG网络模型对图片进行分类,进而检测出含有攻击帧的序列。试验结果表明,本研究提出的特征提取与转换及卷积神经网络模型对汽车的DoS攻击和fuzzy攻击具有较好的检测性能,能够有效降低误报率,提高检测精度,且与Song等[10]使用的模型相比,本研究提出的模型结构更加简单,参数更少。在接下来的研究中,我们将考虑重新设计数据集,使得连续两个样本之间有重叠的部分,以增加训练样本的数量,同时设计更优的网络架构,进一步提高模型的检测性能。