来源 | 鉴源实验室
目前机器学习是研究车辆网络入侵检测技能的热门方向,通过引入机器学习算法来识别车载总线上的网络报文,可实现对车辆已知/未知威胁的入侵检测。这种基于机器学习的非常检测技能普适性较强,无需对适配车型进行定制化开拓,但存在非常样本采集数量大和演习难度高的问题。本文将结合个人履历对基于机器学习的汽车CAN总线非常检测方法展开详细先容。
01车载非常检测流程
基于机器学习的车载非常检测的整体流程如图1所示,个中关键环节包括输入数据、数据预处理、演习及测试算法、评估及优化。
图1 基于机器学习的车载非常检测整体流程
02数据源
针对特定车型进行数据的采集,形成有特点的定制化数据集,并用此数据集进行智能算法的演习与验证。在实际运用中,工程师可以直接采取公开数据集作为模型演习的数据,也可以通过实际采集车辆真实数据来获取数据集。
公开数据集:公开数据集CAR-HACKING DATASET[1]中供应了汽车黑客数据,如图2所示,个中包括 DoS 攻击、模糊攻击、驱动齿轮欺骗攻击和RPM仪表欺骗攻击四种类别的数据。该数据集是通过在实行注入攻击时利用真实车辆的OBD-II端口记录CAN流量来构建的。其数据集特色包括Timestamp,CAN ID,DLC(数据长度码),data(CAN数据字段),Flag(T或R,T代表注入信息,R代表正常信息)。公开数据集一样平常是经由公开验证的,更具有通用性和代表性,便于进行不同算法非常检测效果的比对。
图2 CAR-HACKING DATASET[1]
实车数据集:数据源还可以通过实车采集的办法获取,通过向车内注入特定的攻击,并利用CAN采集工具对实车数据中的报文数据进行采集,采集时须要把稳采集韶光要尽可能均匀。由此得到的实车数据集更加真实,个中可能包含一些公开数据集无法覆盖的非常场景。此外,实车数据采集得到的数据集常日还须要进行预处理事情。
2.1 数据预处理
机器学习算法模型的质量很大程度取决于数据的质量。原始数据每每不利于模型的演习,因此须要进行数据预处理以提高数据的质量,使其更好地适用模型。数据预处理过程一样平常包括特色选取、数据标准化及特色编码,如图3所示。在实际车载非常检测运用中,终极选用的数据预处理方法常日会根据智能算法的不同而有所差异。
图3 数据处理过程
2.2 特色选取
CAN报文的特色及描述如表1所示。记录每一条数据的韶光标识Time,每一条报文的序号为CAN ID,相同CAN ID报文涌现的韶光间隔为period。Payload部分常日将十六进制的信息转换为十进制,根据CAN报文的特点,将payload划分为8个特色位(byte0,byte1, byte2, byte3, byte4, byte5, byte6, byte7),它们全部分布在0~255之间。
一样平常输入数据格式为Dataframe格式,对应的特色是Dataframe的列名称。在进行不同算法的演习时,选取包含指定特色值(某些列)的Dataframe进行后续数据标准化的操作。
表1 CAN报文特色
2.3 数据标准化
车载网络报文的数据旗子暗记(数据payload部分)具有不同的量纲和取值范围,通过标准化,在不改变样本数据分布的同时,使得这些数值旗子暗记能够进行比较。对付利用梯度低落的模型,数值型数据进行标准化可以削弱不同特色对模型的影响差异,使得梯度低落能更快地找到最优解,同时结果更可靠。对付决策树这类不通过梯度低落而利用信息增益比的算法,则不须要进行数据标准化,整体流程如图4所示。
标准化对样本的payload特色分别进行打算使其知足正态分布,Z= (x- μ)/σ。一样平常情形下,标准化与数据分布干系,具有更强的统计意义,在车载入侵检测数据的处理上更加通用得当。对付须要数据标准化的算法,利用Scikit-learn中
preprocessing.StandardScaler(df)函数,df为须要标准化的数据(只含有payload部分的Dataframe),得到标准化后的数据特色编码或直接进行演习。
图4 数据标准化流程
2.4 特色编码
车载网络报文中,数据场以外还存在一部分报文内容,如CAN ID。对付很多机器学习算法,分类器每每默认数据是连续的,并且是有序的,因此须要对此类特色进行编码。对付维度较低的特色可以直策应用独热编码。对付维度较高的特色,可以利用二进制编码。
独热编码是用等同于状态数量的维度进行编码,每种状态下的独热编码只有个中一位为1,别的均为0。编码后的特色互斥,每次只有一个激活,有利于模型处理数据。
输入数据集,如CAN ID经由one_hot(df)函数,将输入数据进行one-hot编码。一个CAN ID将变为163的向量,如图5所示。该向量将作为演习模型的输入,进行后续的模型演习事情。
图5 CAN ID 特色编码[1]
03算法演习及测试
3.1 数据集划分
输入数据集以7:1.5:1.5的比例划分成演习集、验证集和测试集。演习集数据只用来演习模型,其数据不涌如今算法测试中。验证集紧张是用来反响演习得到模型的干系效果,也会在其上进行算法模型的优化与调试,反复验证直到达到最佳效果。测试集紧张表现模型的终极效果,测试集数据也是用来评价模型的数据,测试集数据不涌如今算法演习中。
数据集划分流程如图6所示,首先输入数据采取Scikit-learn中
model_selection.train_test_split()函数,此函数可以将数据集先划分成7:3的演习集和测试数据,然后再将测试数据集划分成5:5的验证集与测试集。
图6 数据集划分流程
3.2 SMOTE采样
对付采集到的车载网络数据,攻击报文数量远少于正常报文,造成了样本种别不平衡。机器学习中每每假定演习样本各种别是同等数量,即各种样本数目是均衡的。一样平常来说,不平衡样本会导致演习模型侧重样本数目较多的种别,而“轻视”样本数目较少种别,这样模型在测试数据上的泛化能力就会受到影响。通过SMOTE[2](合成少数类过采样技能),在少数种别样本之间进行插值天生新的样本,如图7。比较随机过采样,SMOTE大大降落了过拟合的可能。
图7 SMOTE采样事理 [2]
在演习模型前对各种别的演习数据进行SMOTE过采样的操作,SMOTE过采样流程如图8。利用imblearn.over_sampling中的SMOTE().fit_resample(X,Y)函数,个中X为输入须要演习的报文凑集,Y为X中每一条报文的种别。经由SMOTE处理,各种别的报文数量会变得一样多,可以进行下一步的操作。
图8 SMOTE采样流程
3.3 模型演习
模型演习是从标签化演习数据集中推断出函数的机器学习任务。常用的模型演习算法包括RNN(Recurrent Neural Network,循环神经网络)、LSTM(Long Short-Term Memory,是非期影象网络)、GRU(Gated Recurrent Units,门控循环神经网络)、DCNN(Dynamic Convolution Neural Network,深度卷积神经网络)、SVM(Support Vector Machine,支持向量机)、DT(Decision Tree,决策树)、RF(Random Forest,随机森林)、XGBoost(Extreme Gradient Boosting,极度梯度提升)、Stacking(集成学习算法)、Clustering(聚类)等。
04评估与优化
模型的总体优化流程如图9所示,对模型测试的结果进行评估,根据评估的结果进一步优化模型。下面详细阐述评估指标和优化办法。
4.1 评估指标
方案利用均匀准确率、P-R曲线、F-score对模型进行评价。均匀准确率是判断入侵检测算法利害的最直不雅观的评价标准。P-R曲线和F-score能更加直不雅观地反响入侵检测模型在特天命据集上的表现。本方案选择均匀准确率作为模型在验证集上的评价指标,在超参数调优时,根据均匀准确率选择更优超参数组合。本方案选择F-score作为模型在测试集上的评价指标,评价终极的模型效果。
图9 模型优化流程
a)准确率 Accuracy
准确率公式为:
Accuracy = (TP + TN) / (TP + TN + FP + FN)
个中,TP(true positive)是正例,代表被模型精确地预测为正类别的样本。例如,模型推断出某条报文是攻击报文,而该报文确实是攻击报文。TN(true negative)为假正例,代表被模型精确地预测为负类别的样本。例如,模型推断出某条报文不是攻击报文,而该报文确实不是攻击报文。FN (false negative)是假负例,代表被模型缺点地预测为负类别的样本。例如,模型推断出某条报文不是攻击报文(负种别),但该条报文实在是攻击报文。FP(false positive)为假正例,代表被模型缺点地预测为正类别的样本。例如,模型推断出某条报文是攻击报文(正种别),但该条报文实在不是攻击报文。
准确率是指分类精确的样本占总样本个数的比例。在不同类别的样本比例非常不屈衡时,占频年夜的种别将成为影响准确率的紧张成分。导致模型整体准确率很高,但是不代表对小占比类别的分类效果很好。因此,利用均匀准确率,即每个种别下的样本准确率的算术均匀作为模型评估的指标。
在超参数选择阶段,算法会根据各个超参数的准确率Accuracy,进行选择。选择准确率最高的超参数作为模型利用的超参数。
b)P-R曲线和F-score
精确率P = TP / (TP+FP),指分类精确的正样本个数占分类器剖断为正样本的样本个数的比例。召回率R = TP / (TP+FN),指分类精确的正样本个数占真正的正样本个数的比例。通过F-score进行定量剖析,同时考虑了精确率和召回率。
F-score =(1+β^2 )PR/(β^2P+R)
智能剖析利用F1-score作为指标,评价终极模型在测试集上的表现效果。
4.2 模型优化
入侵检测利用到的机器学习和神经网络模型包含大量的超参数,超参数直接影响了模型的利害,探求超参数的最优取值是至关主要的问题。通过超参数优化方法和K折交叉验证,找到最优的超参数,使模型能够准确地判断报文类型。
a)K折交叉验证
K折交叉验证用于模型调优,测试模型预测未用于估计的新数据的能力,找到使得模型泛化性能最优的超参值。详细事理如图10,将演习数据分成K份,用个中的(K-1)份演习模型,剩余的1份数据用于评估模型。循环迭代K次,并对得到的K个评估结果取均匀值,得到终极的结果。
图10 K折交叉验证事理[3]
K值越小,模型越偏差越低、方差越高,随意马虎涌现过拟合。K值越大,则偏差提高,方差降落,且打算开销增大。在演习中我们一样平常选择k=5。利用下面函数进行K折交叉验证划分,sklearn.model_selection.KFold(n_splits=5,shuffle=True,random_state=999).split(df),个中n_splits为交叉验证的折数,shuffle表示是否打乱数据,random_state为随机种子,df为演习数据。
b)超参数优化
超参数优化方法紧张有:网格搜索和贝叶斯优化。
网格搜索:以穷举的办法遍历所有可能的参数组合,网格搜索在1维、2维、3维的搜索空间表现相对来说不错,很随意马虎覆盖到空间的大部分,而且耗时不大。利用sklearn.model_selection中的GridSearchCV ()进行超参数选择和交叉验证。
贝叶斯优化:网格搜索和随机搜索没有利用已搜索点的信息,利用这些信息辅导搜索过程可以提高结果的质量以及搜索的速率。贝叶斯优化利用之前已搜索点的信息确定下一个搜索点,用于求解维数不高的黑盒优化问题。它的实质实在是一种回归模型,即利用回归模型预测的函数值来选择下一个搜索点。利用hyperopt中的fmin()函数进行贝叶斯优化,给出最优模型参数。
以演习集的交叉验证结果作为性能度量。根据模型的超参数数量、取值范围、性能影响等成分,选择不同的超参数优化方法,对模型进行参数优化。
05小结
面向智能网联汽车无线通信系统、车载娱乐系统、驾驶赞助系统以及范例智能网联场景,机器学习作为车载网络入侵检测中至关主要的一项技能,可实现对已知/未知攻击行为的特色识别检测,终极助力车端和云端安全联动,保障车载网络的信息安全。
参考文献:
[1] Seo, Eunbi, Hyun Min Song, and Huy Kang Kim. "GIDS: GAN based intrusion detection system for in-vehicle network." 2018 16th Annual Conference on Privacy, Security and Trust (PST). IEEE, 2018.
[2] He H, Garcia E A. Learning from imbalanced data[J]. IEEE Transactions on knowledge and data engineering, 2009, 21(9): 1263-1284.
[3] Ashfaque J M, Iqbal A. Introduction to support vector machines and kernel methods[J]. publication at https://www. researchgate. net/publication/332370436, 2019.