注:本文摘自轩辕实验室成员程乾阳的硕士毕业论文《基于机器学习的CAN总线入侵检测方法》第四章
1. 对抗生成网络
1.1 GAN介绍
生成对抗网络(GAN)由Goodfellow等人在2014年首次提出,在过去几年里受到了广泛关注。GANs学习的过程是一个对抗过程,其包含两个模型:生成器模型和鉴别器模型。其中,生成器的目标是学习特定数据集数据的分布,而鉴别器的目标是区分数据是来自真实数据服从的实际分布还是来自生成器所学习的分布。在图像领域,GAN的鉴别器被用于区分真实图像和合成图像,而生成器被用于生成自然逼真的图像。GAN模型学习时的对抗过程可以被看作是零和或极小极大博弈,其中生成器努力欺骗鉴别器,而鉴别器努力不被生成器欺骗。事实上,在安全领域,攻防的过程也是一种对抗的过程,攻击者想要发掘更隐蔽的攻击手段来逃过防御者的检测,而防御者想要通过更高效的检测算法来检测更隐蔽的攻击。从这个角度看,生成对抗网络天然适用于入侵检测领域。1.2 GAN原理
公式1.1为GAN的价值函数对应的优化问题,也是最终要通过训练解决的问题:



图1:GAN架构图
1.3 基于GAN的入侵检测
针对CAN总线的很多攻击都是通过向总线中注入恶意帧实现的,这会改变CAN帧序列原有的模式。因此,从CAN帧序列的角度来看,攻击都具有一定的相似性,如DoS攻击和模糊攻击都需要向总线中大量注入恶意帧来到达更好的攻击效果。但有时攻击者为了增加防御的难度,可能会使用某些攻击的变体,这使得攻击又具有一定的多样性。在攻防的过程中,防御方不断更新防御系统来发现和阻断攻击,攻击者不断更新攻击技术来绕过防御系统,这使得攻击更具隐蔽性。在CAN报文检测中,攻击的隐蔽性体现在攻击报文和正常报文的相似度,与正常报文越相似的报文越难被检测。GAN模型中的生成器可以看做攻击者,它将随机向量转化为异常数据,输入向量的随机性为生成的异常数据增加一定的多样性;判别器需要对生成的异常数据和实际的正常数据分类。在原始GAN中,生成器努力生成看上去正常的攻击数据来欺骗判别器,这与攻击的隐蔽性不谋而合。在多样性和隐蔽性之外,为了增加生成数据与攻击数据的相似性,可以引入基于深度神经网络的分类器。通过监督学习在已知攻击的数据集上训练,使其可以识别已知攻击,但无法识别未知攻击。类似于半监督GAN,除了原有的判别器外,再引入,同时重构GAN的损失函数:

用于在训练过程中保持生成器生成数据与攻击数据的相似性。此时,判别器的训练和原始GAN完全一样;Dpre由预训练阶段迁移而来,在对抗过程中不再更新;生成器G在训练时既需要生成与已知攻击有一定相似性的数据又要骗过判别器D,缩小了G生成图片的潜在空间,这使得训练后的判别器对已知攻击和已知攻击的变体都有较强的识别能力。此外,Dpre可以作为已知攻击检测的补充,可以与判别器D协同地完成检测。在训练时权重不能选得太大,而Dpre的训练要注意过度训练带来的过拟合。太大和过拟合都会降低判别器D对未知攻击的检测能力。本文使用GAN的一种变体DCGAN构建入侵检测模型,分类器和使用相同结构的卷积神经网络,其结构如图2。
图2:分类器示意图

图3:生成器示意图
在使用原始数据集的每一行数据为十六进制的CAN帧,GAN输入的实际样本要求是二维矩阵。因此,需要对数据进行预处理和特征重构,本文使用时间片划分和词向量的方式来构建GAN的输入特征,使用小批量梯度下降法训练模型。具体的预处理和特征构建过程会在之后的文章中介绍。基于GAN的入侵检测系统(GAN-IDS)的构建过程如下:

2.1 GBDT算法概述
GBDT即“GradientBoost Decision Tree”,是一个应用很广泛的算法,可以用于分类、回归任务,其在包括KDD在内的很多著名数据集上都表现不俗,其发明者是Friedman。GBDT本质上是一种基于决策树的集成学习算法,它将多个弱分类器通过加法组合在一起,形成强分类器,减少了单个弱分类器错误分类的影响。决策树作为一种常用的简单算法,虽然具有模型复杂度低、分类快速等特点,但实际使用时常常出现容易过拟合、稳定性差等问题。而对于Boosting,Bagging等基于决策树的集成模型,学习得到的最终模型包含几十甚至几百棵决策树,通过让众多不同的决策树共同参与决策来增强模型鲁棒性。这类集成模型的思想类似于三个臭皮匠顶一个诸葛亮。Boosting以及另外一种被称为随机森林的算法在过去很多年的一些重量级会议上备受关注。GBDT是最基本的Boosting算法之一,有很多新的基于决策树的集成模型都可以看做这种算法的延伸。2.2 基于GBDT的入侵检测
原始的Boosting算法在训练过程中会根据分类结果为数据集中的每个样本点分配权值来控制训练。训练开始时,为样本点分配相同权值,每次迭代中都会更新每个样本的权值。在每轮迭代时,根据分类结果,减少被正确分类的样本点的权值,增加被错误分类的样本点的权值。这样频繁分错类的样本的权值会不断增加,从而将这些难分类的样本点从样本集中分辨出来。在后续训练中,这些样本会被重点关注,每次迭代得到的新样本集会用于下次迭代时弱分类器的训练。经过多轮迭代,模型会训练出与迭代轮数数量相同的弱分类器,将这些弱分类器通过加权组合成最终的分类器。梯度上升算法(Gradient Boost)与传统的Boosting不同,它们的区别在于梯度上升算法每一次迭代的目的是降低上一次迭代后的残差。为了消除残差,梯度上升算法会不断在残差减少的梯度方向上建立一个弱分类器。所以在梯度上升算法中,新的弱分类器的训练目标在于减少模型残差,而不是样本的权值。对CAN报文的异常检测本身是一个二分类问题,分类问题一般使用对数损失函数。和很多分类模型一样,将GBDT用于二分类问题需要借助sigmoid函数来构造分类模型,选择交叉熵作为损失函数。那么GBDT对单样本(xi,yi)的预测结果可以以概率的方式表达为:


负梯度刚好为真实标签和预测概率之间的残差。
基于GBDT的入侵检测系统(GBDT-IDS)构建过程如下:


数据处理的详细过程会在之后的文章中详细介绍,基于GBDT的入侵检测模型使用基于信息熵的特征提取方法来构建输入特征。2.3 分类回归树
分类回归树 (CART,Classification and RegressionTree) 被广泛用于分类和回归问题。GBDT中的决策树使用CART回归树。CART回归树以最小化均方误差作为确定划分特征和划分点的准则,将CART
假设最终回归树共个叶子节点,即样本集被划分到K个不同叶子节点,回归树可以写为:

CART回归树的学习过程如下:

CAN报文为十六进制的字符数据,通过基于信息熵的特征提取方法转化为连续数值, 基于信息熵的特征提取方法会在之后的文章中介绍。
3. 孤立森林
3.1 孤立森林概述
异常探测是许多不同领域的常见问题,包括金融和天体物理学等。由于对数据进行标记通常是非常耗时的,有些异常检测任务可能根本无法获取标签数据。因而对于实践者来说,无监督的方法是相当实用的。现有的离群点检测技术有很多,如随机森林、支持向量机,孤立森林。孤立森林算法在某种意义上是独特的,它相当明确地隔离异常,而不是分析正常实例。这个算法对于较小的数据集也非常有效。孤立森林算法适用于连续数据且为无监督异常检测方法,它由多棵孤立树组成。使用表示孤立树,则孤立树的定义具体可以描述为:iTree基于二叉树的数据结构,构建时完全随机地选择分割特征和特征值,采用不放回抽样。如果N是iTree的非叶子节点,那么N会有左右子节点Nl和Nr。构建iTree时每次分割选择特征f和该特征上的一个随机值v,把小于v的数据分到左节点Nl,大于v的数据分到右节点Nr。3.2 基于孤立森林的入侵检测
和传统的异常检测算法一样,孤立森林将分布上相对孤立的离群点作为异常。在分布上,这类异常点附近样本点的密度小,分布稀疏,远离分布密集的样本点群。在样本空间中,一个点落在稀疏区域的可能很小,因此可以把这样的小概率事件作为异常。孤立森林每次选择一个特征维度,在该维度上将样本切分为两部分,经过多次切割可以将样本分割成多部分。在选中的特征维度上取值越相近越不容易在该次分割中被分到不同部分。因此样本点密集区域的点很难通过分割被隔离,这类样本点想要被划分出来单独作为一个区域(区域内没有其他点)需要较多的分割而离群点需要的分割次数则相对少。孤立森林使用二叉树保存分割的过程,一个点在孤立树中的深度反映了这个点被隔离需要的分割次数。



4. 检测系统框架
对于这种已知的攻击手段,可以对攻击进行仿真来获取攻击数据。只要在模拟攻击过程中,对注入的攻击数据进行标记就可以将异常与正常数据区分开来,进而借助有监督的学习建立入侵检测模型。但事实上,随着汽车电子的发展和攻击者对CAN总线研究的深入,对CAN总线的攻击必然存在已知技术的变种和全新的攻击技术。防御方建立入侵检测系统时还需要考虑一些未知攻击存在的威胁。对于未知攻击,防御方很难事先明确异常数据与合法数据的具体差别,只能借助一些无监督的学习模型建立检测系统。因此,只采用单一模型的入侵检测系统会存在以下两方面的缺陷:本文中的CAN总线入侵检测模型分别考虑对已知攻击和未知攻击的威胁,将监督学习和无监督学习有机结合建立组合模型。如图4,检测器A通过监督学习使用攻击数据训练得到,而检测器B通过无监督学习使用正常数据训练得到。检测时,待测数据在处理后先输入检测器A,如果检测出异常则直接报警,否则将数据输入检测器B;如果检测器B检测出异常则直接报警,否则正常返回。本章提出四种入侵检测模型中,基于GBDT模型的入侵检测算法以及GAN的预训练分类器Dpre可以作为监督学习检测器A。孤立森林为无监督学习且在学习小数据集时表现良好,而GAN模型的对抗过程类似于CAN总线安全的攻击和防御场景,在未知攻击的场景下具有较好表现。本文使用孤立森林和GAN最终训练到的判别器Dk作为的检测器B。

图4:检测流程示意图
根据模型类别不同,可以将四种模型组成两种不同组合。GBDT和孤立森林两种集成学习算法作为一个组合,GAN的分类器Dpre和Dk两个深度学习模型作为一种组合。之后的文章会在使用攻击数据分别对GBDT、孤立森林和GAN调参和评估后,按上述组合评估最终的复合入侵检测系统。
参考文献
[1] GOODFELLOWI, POUGET-ABADIE J, MIRZA M,et al. Generative adversarial nets[C]//Advances inneural information processing systems. 2014: 2672 – 2680.[2] ODENA A.Semi-supervised learning with generative adversarial networks[J]. arXivpreprint arXiv:1606.01583, 2016[3] FRIEDMAN JH. Greedy function approximation: a gradient boosting machine[J]. Annals ofstatistics, 2001 : 1189 – 1232.[4] LIU F T,TING K M, ZHOU Z-H. Isolation Forest[C]//2008 Eighth IEEE InternationalConference on Data Mining. 2008:413-422