基于深度森林算法的分布式WSN入侵检测模型

2020-09-15 12:11董瑞洪闫厚华张秋余李学勇
兰州理工大学学报 2020年4期
关键词:分类器节点深度

董瑞洪, 闫厚华, 张秋余, 李学勇

(兰州理工大学 计算机与通信学院, 甘肃 兰州 730050)

随着大数据、云计算和物联网技术的快速发展,需要采集的环境数据也越来越多,对WSN产品的需求将逐步扩大.WSN具有节点成本低廉、部署简单、无需基础设施等特点,WSN产品可以突破传统的监测方法,为环境的监测降低了成本,同时也大幅度缩减了传统监测的繁琐流程,为随机性的研究数据获取提供了便利[1].WSN作为一种新型的网络得到深入的研究和广泛的应用,常见的应用包括用于军事行动、监测环境(如火山探测、农业环境监测)、分布式控制系统、医疗保健和放射源检测[2]等,此外,WSN还可应用于工业领域,如石油泄漏和空气质量的环境监测、管道监测、智能电网监测等[3].由于WSN无线传输和无人值守的特点,它还具有以下缺点:采用不安全的路由协议,所涉及的标准和通信协议不同,节点计算能力有限,互连设备数量多,传统的安全对策无法有效发挥作用[4].因此,WSN的安全性仍然是一个需要持续研究的问题.

入侵检测技术是一种保障安全的重要技术手段,准确识别网络中的各种攻击是入侵检测的关键技术[5].目前,WSN入侵检测主要分为异常检测、误用检测、基于规范的检测和基于混合系统检测[6],如基于自主学习(STL)框架的深度学习方法[7]、卷积神经网络(CNN)[8-9]、递归神经网络[10]、随机森林[11]、朴素贝叶斯[12]和决策树[13]等.Chowdhury等[14]提出了一种改进的深度学习入侵检测方法,该方法首先训练了一种用于入侵检测的深度CNN,然后在CNN中提取不同层次的输出,实现一种线性SVM和1-近邻(1-NN)分类器,可以在不平衡的数据集上增强少数攻击类型的检测率,但是该方法计算复杂度较大,检测效率有待提高.Guasekaran等[15]提出了一种高效的基于遗传算法的拒绝睡眠攻击检测(GA-DoSLD)算法,用来分析节点的错误行为,对拒绝睡眠攻击(Dosl)有很好的检测效率.高妮等[16]提出基于自编码网络的SVM 入侵检测系统,适用于高维空间信息抽取任务,但对R2L、U2R等攻击行为检测性能不高.Alrajeh等[17]提出了一种人工神经网络(ANN),用于检测基于簇的WSN中拒绝服务的能量耗尽攻击,但模型需要较高的计算成本.通过对上述研究工作进行分析,发现现有的WSN入侵检测方法存在实时性不高、检测性能较低、算法计算复杂度较高等问题.传统的入侵检测方法如朴素贝叶斯、决策树、SVM、人工神经网络等检测率较低,无法满足日益严峻的安全威胁,而现有的深度学习方法算法复杂度较高,需要大量的样本训练入侵检测模型.

针对上述研究存在的不足,本文提出一种基于随机森林与深度森林的分布式WSN入侵检测模型.WSN入侵检测模型采用轻量级的随机森林对传感器节点、簇头节点进行异常检测,采用深度森林算法对基站节点进行误用检测.传感器节点和簇头节点采用轻量级随机森林算法构建集成分类器,并调整随机森林参数提升检测器的检测率,在基站采用深度森林对异常行为进一步检测,同时引入动态反馈机制.该模型可以将正常与异常相似度很高的流量进行区分,与现有传统的和基于深度学习的入侵检测方法相比提高了检测准确度,并且可以检测出多种攻击类型.该模型可适用于WSN中训练数据集样本较少的环境中,是一种比较有效、可靠的WSN入侵检测解决方案.

1 相关理论介绍

1.1 N网络拓扑结构

从WSN的网络拓扑结构看,WSN入侵检测可以分为两类,即平面结构和分层结构[12].在平面体系结构中,所有节点在网络结构中功能相同,并参与内部协议.在分层结构中,所有传感器节点都被分组为集群,每个集群由一个簇头和几个普通传感器节点组成.

1.2 随机森林

随机森林(RF)[18]是由多棵决策树组成的集合,随机森林的训练过程可被分解成多棵决策树进行单独训练的过程.

随机森林中的决策树公式表示如下

F(x,δi), (i=1,2,…,n)

(1)

其中:x为输入数据;δi为独立同分布特征向量;n为RF中决策树的数量.

RF的最终结果通过简单多数投票获得:

(2)

其中:c表示预测的结果;F*(x)用于统计多个决策树F(x,δi)中预测票数最多的类型,并作为RF最后输出结果.

图1展示了随机森林分类模型在WSN入侵检测系统中的实现过程.将n个样本的预处理样本Si(i=1,2,…,n)送入随机森林分类器,随机森林通过使用许多特征子集创建n个不同的树Ti(i=1,2,…,n),每个树产生一个分类结果Ri(i=1,2,…,n),分类模型的结果取决于多数投票,最终流量数据样本被分配到投票分数最高的类别.

1.3 深度森林

深度森林(deep forest)方法[19]是基于树的集成方法,具有级联结构(cascade structure),通过对树组成的森林来集成并前后串联起来达到表征学习的效果.深度森林的表征学习能力可以通过对高维输入数据的多粒度扫描进行加强,可使算法具有上下文或结构感知能力.深度森林采用了级联结构,每层都是由完全随机森林和普通随机森林组成,其中每一级级联接收由前一级处理的特征信息,并将处理结果输出到下一级.

图2是深度森林算法的整个流程.首先,输入一个完整的X维度样本,通过长度为Y的采样窗口进行滑动采样,得到Z=(X-Y)+1个特征子样本向量;然后,每个子样本都用于训练完全随机森林分类器和普通随机森林分类器,最后把所有的森林分类器结果组合到本级输出.将变换后的特征向量与上一级生成的类向量相加,分别训练级联森林的2级和3级.重复此过程,进行多层级联直到验证性能趋于一致,最后输出结果.

2 WSN入侵检测模型的实现

本文中WSN数据融合策略是分层聚簇型融合,整个WSN被划分为多个簇区域,簇头由资源丰富的节点担任.在数据融合过程中,簇内感知节点将采集到的数据向上传输到簇头,簇头节点对本簇内的感知数据进行融合处理后转发至基站节点.图3为基于轻量级随机森林和深度森林算法的分布式WSN入侵检测模型流程示意图.

如图3所示,提出的WSN入侵检测模型采用轻量级的随机森林对传感器节点、簇头节点进行异常检测,而在WSN基站采用深度森林算法对流量进行误用检测.采用分层结构的WSN可对网络流量进行分布式检测,能分散能量开销减轻通信负担,可以实现节能.

基于随机森林和深度森林的分布式WSN入侵检测模型主要包括4个步骤.

步骤1:数据预处理阶段.普通传感器节点采集流量数据,调整初始流量数据的格式并将字符型数据数值化为数值型数据.为了提高入侵检测模型的性能,需要对数据归一化操作.

步骤2:训练阶段.簇头CH和传感器节点合作对数据进行处理,使用处理好的训练数据集训练入侵检测模型.在簇头节点部署轻量级随机森林分类器,对采集到的流量数据进行初步分析.由于簇头节点有较强的计算能力,允许使用较多的特征和复杂的检测结构,因此将第一级分类器部署在簇头节点上,如果检测出异常行为则发出报警,否则将簇头节点的流量数据向上传递给基站节点.第二级分类器在基站上发挥作用,簇头与基站协调合作,采用深度森林从大量流量数据中区分出异常入侵行为,对较难识别的攻击和不确定性攻击进一步检测,整个训练过程中通过多次调整模型参数使检测率达到较高的水平.

步骤3:测试阶段.使用测试数据集对分布式WSN入侵检测模型进行测试.如果检测准确率能满足实际应用要求,则停止训练.否则,模型将重复训练步骤2.

步骤4:评估阶段.用于评估训练后的入侵检测模型性能.通常,评价指标包括检测率、误检率和准确率等性能指标.

3 实验结果与分析

实验运行环境:操作系统为Windows10 64位,实验平台为JetBrains PyCharm Community Edition 2018.2.

3.1 实验数据集选取

实验采用WSN数据集WSN-DS[20],该数据集采用模拟器NS-2仿真WSN环境,并模拟出4种攻击类型:黑洞(Blackhole)、灰洞(Grayhole)、洪水(Flooding)和调度(Scheduling)攻击.NS-2模拟参数见表1,WSN-DS数据集中一共有374 661条流量数据,并将数据的60%作为训练数据集,40%作为测试数据集.数据集中各种攻击类型分布如表2所列.

表1 NS-2模拟参数

表2 实验数据集WSN-DS分布

为了充分验证提出模型的性能,实验采用了NSL-KDD数据集[21],是KDD′99数据集的改进版本.NSL-KDD数据集包含许多攻击行为,可分为4类:DoS、Probe、R2L和U2R.在WSN中的攻击类型包括黑洞、虫洞和确认欺骗攻击等,可以归类为Probe攻击,因为这类攻击在开始攻击之前先做了一个探测步骤.欺骗、篡改、重放路由信息攻击等可被归类为R2L,该类攻击是利用网络弱点进行攻击.WSN内部攻击可归为U2R,洪水攻击和资源消耗攻击可以归为DOS攻击[22].

在模型训练之前,首先需要对NSL-KDD数据集进行预处理,将特征protocol_type、service和attackclass进行数值化.然后,将数据集分成5个类:Normal、Probe、DoS、U2R和R2L,分别映射到数值0~4上.最后,需要对src_bytes和dst_bytes字段列的值进行归一化,将范围映射到[0,1].其中,将正常流量用数值0表示,类型{1,2,3,4}分别表示其他不同的攻击类型.NSL-KDD数据集的具体数据分布见表3.

表3 NSL-KDD数据集数据分布

流量数据归一化可以消除不同维度数据之间的差异,为了保证训练结果的可靠性,将这些特征规范化到[0,1].本文采用如下式的最小-最大值归一化方法处理数据:

x∈[xmin,xmax]

(3)

其中:x为属性值;xmin为最小属性值;xmax为最大属性值;f(x)为归一化函数.

3.2 实验性能指标

为了测量WSN入侵检测模型的性能,采用检测率(TPR)、虚警率(FPR)、准确率(Acc)、精确度(P)指标进行测量:

TPR=TP/(TP+FN)

(4)

FPR=FP/(FP+TN)

(5)

P=TP/(TP+FP)

(6)

Acc=(TP+TN)/(TP+FN+FP+TN)

(7)

其中:TPR表示真实值为正常的样本中,预测为正常样本的概率;FPR表示真实值为异常的样本中,预测为正常样本的概率;P表示预测为正常的样本中,正确预测为正常样本的概率;Acc表示预测结果的准确度;表4为TP、FP、TN和FN的定义.

表4 TP、FP、TN和FN的定义

3.3 簇头节点部分实验结果分析

由于传感器节点能量与计算资源有限,如果在传感器节点上应用强分类器,将会耗费大量的时间和能量.采用层次结构有助于在一阶分类器中容易筛选出大多数的攻击流量数据,从而提高模型的检测率和降低响应时间.本文采用轻量级的随机森林对传感器节点、簇头节点进行异常检测.

轻量级随机森林算法要调整的参数主要是决策树的数量M、A、样本抽样类型B、随机森林深度D和最小样本分割T.其中:M通常数量越大效果越好,但是计算时间也会随之增加,当决策树的数量过多,算法的效果并不会很显著地变好,因此需要在检测性能和计算复杂度之间找到平衡,使之更加适用于传感器节点和簇头节点;A是分割节点时考虑的特征的随机子集的大小,需要调整到合适的大小,算法性能才会最优.提出的轻量级随机森林算法复杂度为O(5*N*log(N)),N是样本数.

从表5可以看出,提出的WSN入侵检测模型对WSN中出现的攻击Blackhole、Grayhole、Flooding、Scheduling的检测率分别达到了98.56%、94.50%、93.80%、97.07%,对正常状态Normal的检测率达到了99.83%.对Blackhole、Grayhole、Flooding、Scheduling的误检率分别达到了0.10%、0.15%、0.03%、0.006%,对正常状态Normal的误检率仅为2.26%.由实验结果可知,提出的WSN入侵检测模型在第一层检测中可以识别大多数WSN攻击行为,并且可以识别出多种攻击类型.

表5 WSN入侵检测模型性能

实验采用交叉验证策略对算法中的超参数进行优化,选取超参数的最优值后,分别用KDDTrain+_20Percent和KDDTest+对其进行训练和测试中的第一层入侵检测性能.关键超参数模型优化过程中的数值见表6,其中:M取值为5时,模型的分类效果较好,同时保证算法复杂度较小;A取值为10,表示随机子集的特征大小是10;样本抽样类型B取值为1,表示样本抽样是有放回抽取;随机森林深度D为-1,表示依据实际流量数据进行调节;最小样本分割T取值为2.由表6可知,对比不同决策树个数情况,选取出轻量级随机森林的最优参数,分别用KDDTrain+_20Percent和KDDTest+对其进行了训练和测试,此时准确度Acc为82.43%,P达到了100%.

表6 参数优化

3.4 基站部分实验结果分析

基站部分采用深度森林从大量流量数据中区分出异常入侵行为,只需将流量类别识别为正常流量和攻击流量两种状态.其中机器学习算法包括J48、Naive Bayes、NB tree、Mutilayer percepetion和Random forest等,同时采用深度学习算法如Autoencoder SVM、RNN等进行入侵检测.如图4所示,本文对比了用于入侵检测的多种算法的准确率(Acc).实验采用NSL-KDD数据集对模型进行性能评价.

从图4可以看出,本文提出方法的准确率略低于Autoencoder SVM方法,而高于其他方法,原因是本文提出的模型采用级联森林和多粒度扫描构建深度森林提高模型学习能力,模型能学习更加重要的流量特征.其中,比RNN略高2.02%,同时相比传统的机器学习方法如J48、Naive Bayes、NB tree、Random forest等也有更好的准确率.实验证明,本文提出的入侵检测模型不仅比传统的机器学习方法检测效果好,同时比一些深度学习方法也能保持较高的检测效率.

此外,本文还将NSL-KDD数据集中的Normal、Probe、DoS、U2R和R2L分别标记为0~4,则实验采用KDDTrain+_20Percent对本文模型进行训练,采用KDDTest+数据集进行测试,结果如图5所示.

如图5所示,本文对比了入侵检测的多种算法的准确率,包括J48、Naive Bayes、Mutilayer percepetion、SVM,深度学习算法如CNN、Autoencoder SVM.可以看出,本文中的准确率略低于CNN方法和Autoencoder SVM方法,相比传统的机器学习方法有更好的准确率.原因是本文模型相比其他方法可学习到更重要的流量特征,学习能力较强.实验采用KDDTrain+_20Percent对本文模型进行训练,其他入侵检测方法采用全部的KDDTrain+数据集进行训练,采用同样的测试数据集KDDTest+进行测试.实验证明,本文提出的模型学习能力较强,在训练数据比较少的情况下,仍然能得到较高的检测准确率,适用于WSN训练数据集样本较少的环境.

表7为本文模型与其他方法的实时性对比,可以看出,本文模型序列训练所需时间为1 261.06 s,相比其他方法的训练所需时间少,可见本文提出的方法复杂度较小,测试时间为89.57 s,则平均一条流量数据检测时间为89.57/125 973=7.11×10-4s,因此本文模式的检测实时性较高.

表7 实时性对比

4 结语

本文提出了一种基于随机森林和深度森林算法的分布式WSN入侵检测模型,该模型采用轻量级随机森林对传感器节点和簇头结果进行异常检测,采用深度森林在基站节点进行误用检测.基于分布式的WSN入侵检测方法有助于在一阶和二阶分类器中容易筛选出大多数的攻击流量数据,从而提高了模型的检测率,降低了响应时间.而且分布式检测分散了能量开销,减轻了通信负担.该模型能有效提高入侵检测的准确性和识别多种攻击类型的能力.实验结果表明,本文方法在NSL-KDD数据集上实现了更高的准确率,该方法比传统的机器学习方法如J48、Naive Bayes、Mutilayer percepetion、SVM等有更好的性能,相比深度学习方法如RNN,本文方法的检测准确率高2.02%.同时证明在训练数据比较少的情况下,提出的模型仍然能保持较高的检测准确度,适用于WSN中训练数据集样本较少的环境.不足之处是该模型对多分类的检测能力有待进一步提高.在未来的研究中,会将深度学习技术作为特征提取方法进一步提高对多种攻击和新型攻击的检测性能.

猜你喜欢
分类器节点深度
四增四减 深度推进
深度思考之不等式
学贯中西(6):阐述ML分类器的工作流程
基于图连通支配集的子图匹配优化算法
基于朴素Bayes组合的简易集成分类器①
结合概率路由的机会网络自私节点检测算法
面向复杂网络的节点相似性度量*
采用贪婪启发式的异构WSNs 部分覆盖算法*
基于动态分类器集成系统的卷烟感官质量预测方法
简约教学 深度学习