一种改进TPOT的工控入侵检测方法
2022-05-09杨瑞君何立君
杨瑞君,何立君,程 燕
1(上海应用技术大学 计算机科学与信息工程学院,上海 201418)
2(华东政法大学 刑事法学院,上海 201620)
1 引 言
随着《中国制造2025》和“工业4.0”的提出,工业控制系统在不断地引入互联网技术,也逐渐向智能化,工业互联网化转型.自主机器人、大数据、物联网、增强现实都得到了大力的发展,在电力、石油甚至是核能源都部署有大量的工控系统.但是这些工控系统在部署之初主要是为了实现其功能性和应用性,工控系统成了容易被攻击的对象,其安全防护需持续加强,如部署防火墙、入侵检测系统等,而这些防护手段也成为了攻击对象,其中入侵检测系统受攻击程度更多[1].传统工控入侵检测技术是误用入侵检测技术[2],通过对工控数据包进行特征分析、规则匹配及模式识别等方法,与已知的入侵特点进行比较,判断其是否为攻击行为.但是,该技术难以检测到未知的攻击类型.为此,人们将机器学习等人工智能技术引入到异常入侵检测中[3],通过对正常行为和攻击行为特征进行训练,构建入侵检测模型,从而可以检测到未知攻击行为.随着模型的不断精进,异常检测技术会消耗更多的系统资源,而且现阶段的攻击行为越来越智能化,检测未知攻击行为的能力在一定程度上也受到了限制.为适应智能化攻击,人们在工控系统等真实场景下,基于真实数据集使用自动机器学习方法,如TPOT等[4],更有效地构建异常入侵检测模型,以提高检测能力.
使用TPOT等自动机器学习方法构建入侵检测模型时,需要耗费大量的时间进行迭代优化.为此,本文提出D-TPOT框架,使用分块算法和动态任务调度方法进行分布式优化管道和模型构建,从而更快地建立起更有效的工控入侵检测模型.
2 相关工作
近年来,随着人工智能的发展,越来越多的研究人员将机器学习应用到网络攻击行为识别中,提出了新的攻击检测方法.Wei Liang等人[5]提出了一种基于多特征数据聚类优化模型的工业网络入侵检测算法,提高了工业网络中多特征数据异常行为检测的检测率和实时性.何戡等人[6]提出一种针对XGBoost算法的包裹式特征选择方法,在简化数据集的同时突出不同特征在入侵检测中的重要性,提高了入侵检测的效率.Asuka等人[7]提出了一种基于LSTM模型的入侵检测方法,该方法检测攻击报文所需的时间更短.张松青等[8]提出一种基于半监督机器学习的工控网络入侵检测技术,一定程度上提升了异常流量的检测能力.刘海燕等人[9]提出基于分布式及协同式网络入侵检测技术,能够更好的应用在大数据背景下的网络入侵检测技术.王华忠等[10]人针对工控入侵检测模型训练时间长、检测率低的问题,提出一种改进的鲸鱼算法(IWOA)来优化 SVM 工控系统入侵检测模型,用于提高检测正确率和检测速度.Kundu等[11]人提出自动机器恶意软件检测,应用自动机器学习的技术从新的角度审视了入侵检测的模型构建,能够在已知最佳的超参数设置下识别出性能明显优于模型性能的超参数集,并且模型的识别效果也有明显提升.Olson等人[12]首次提出了基于树的管道优化工具(Tree-based Pipeline Optimization Tool,TPOT),用于自动化构建机器学习模型,但自动化构建的机器学习模型需要大量的时间.
使用改进的分布式D-TPOT,旨在不降低最终模型质量的情况下,减少评估管道和构建入侵检测模型的时间.通过分块算法和动态任务调度的方法,并行优化机器学习管道,自动地选择机器学习模型以及超参调优,产生有效的入侵检测模型.将工控系统攻击行为识别问题的特点与该改进方法相结合,在保证攻击行为识别准确度最大化的同时减少流程的复杂度和模型构建时间.
3 改进的分布式D-TPOT设计
在本节中将描述对TPOT所做的改进.首先,描述TPOT的构建.然后,使用方法分块算法和动态任务调度方法对TPOT改进.最后,描述改进后D-TPOT的结构.
3.1 TPOT构建方式
基于树的管道优化工具TPOT是对机器学习的特征处理、特征选择、特征分解、模型选择、参数优化及模型评估等一系列过程实现自动化运行处理.
为了构建和优化机器学习管道,TPOT使用了基于树的遗传编程,用遗传规划树来表示管道.管道中的操作以算子的形式进行运算,主要有以下4种算子:特征预处理算子、特征分解算子、特征选择算子、模型选择算子[13].通过这4种管道算子,可以组合成一个灵活的管道结构,TPOT将管道实现为树型结构的集成,如图1所示,阴影部分区域的步骤将由TPOT通过管道的方式进行自动化执行,不同的算子组成了树中的节点,每个基于树的管道都将数据集的一个或多个子集作为树的叶子的开始,然后将其发送到4类管道操作算子中,对其进行数据预处理、特征分解、特征选择、模型选择.
图1 TPOT自动机器学习流程Fig.1 TPOT automatic machine learning process
3.2 改进的分布式D-TPOT描述
在TPOT优化过程中,大部分时间用于评估机器学习管道.每个机器学习管道都是在整个数据集上进行评估的,这会花费大量时间.分布式D-TPOT 的目的是通过并行处理各个管道的优化过程来减少评估管道的时间.该改进方法主要是采用分块算法和动态任务调度进行分布式处理.
3.2.1 分块算法优化描述
分块算法[14]是将一个序列分成若干块,维护块内的信息.该方法将N个元素的序列进行分块,一般设置一个上限B块,每一块至多有M个元素,这样一般会分成约N/B块(最后一个块除外).实质上分块算法通过分成多块后在每块上打标记以实现快速区间修改,区间查询的一种算法.从结构树的角度分析,分块其实是一种只有3层的树,第1层为整个序列N,第2层为B=sqrt(N)个块,第3层是每个块中分别有M=sqrt(N)个元素.TPOT管道分块结构如图2所示.
图2 分块结构图Fig.2 Structure of blocks
分块算法对TPOT的初始管道优化进行改进,利用分块的方法,将初始TPOT的N个管道分块,每一块具有M=sqrt(N)个元素,于是块数B=sqrt(N)块.对单块M=sqrt(N)个元素进行操作时,其时间复杂度为 O(sqrt(N));对B=sqrt(N)块进行操作时,其时间复杂度为 O(sqrt(N)).根据推导大O阶方法,原始管道总的时间复杂度为O(N),改进后的分块管道计算时间复杂度为O(sqrt(N)),能够减少平方根级的时间.若对该N个管道进行K次操作,原始管道总的时间复杂度为O(K*N),分块后的管道计算时间复杂度为O(K*sqrt(N)).
运用分块算法的思想对TPOT改进,将原始管道进行适当的划分,并在划分后的每一块上预处理部分信息,从而得到最优时间复杂度,在一定程度上减少TPOT在管道运算上的运行时间,从而更快的找到相对最优的入侵检测模型.
3.2.2 动态任务调度描述
动态任务调度是指在多个任务之间调度资源,减少内存负载并快速处理已完成的任务,然后将其他任务分配给计算机,从而最大程度地减少计算机的空闲时间.
本文中动态任务调度使用有向无环图(Directed Acyclic Graph,简称DAG)的方法来规划、控制和表示计算任务[15].DAG的含义是从无依赖关系的节点到单个终端节点进行逻辑上的单向遍历.DAG任务调度对分块算法划分后的TPOT管道算子进行并行优化,同时每一块中同一组管道内算子进行优化后,不会重复优化,从而能够节省大量时间[16].DAG计算任务调度时间可表示为:D=(V,E,W,C),其中各字符表示的含义如表1所示.
表1 DAG时间计算中各符号含义Table 1 Symbols in DAG time calculation
在同构环境中,其DAG总时间为最长路径上节点的计算时间和每边的通信时间之和.一般来说,采用BL降序调度算法意味着对关键路径上的节点进行优先级调度,因为关键路径上的节点在一定程度上决定了整个程序的执行速度.在异构环境中,因为每个处理器计算能力和处理器之间链路的通信能力不同,所以,用Mp和Mc来衡量各个节点优先程度[17],用 BL*表示:
(1)
源点的最早开始时间为0,即ESPpj(ni)=0.那么任务ni的完成时间为:
(2)
ni为nj的直接前驱节点,即ni∈pred(nj);px为执行ni的处理单元;py为执行nj的处理单元.ni的数据到达nj的时间为:
(3)
计算从开始节点到结束节点最长时间,其中nq是处理器py最后执行的任务.
ESPpy(ni)=Max{ATpy(ni,nj),FTpy(nq)}
(4)
DAG有向无环图用于规划和编排TPOT中不同管道算子的复杂任务.每当一个管道训练完成时,DAG动态任务调度可以快速地协调分块后的管道,使得管道内各算子进入下一阶段的训练,避免长时间空闲等待,从而减少构建最佳入侵检测模型的运行时间.算法1描述了D-TPOT构建工控入侵检测模型的过程.
算法1.D-TPOT模型
输入:经过特征工程和数据处理的数据集Dtrain,Dtest.
输出:对Dtest的预测结果Rtest.
步骤1.对Dtrain进行随机抽样,输入到TPOT初始管道中.
步骤2.对TPOT初始管道N进行分块,分为sqrt(N)块,每块中包含sqrt(N)个元素.
步骤3.使用DAG任务调度的方法,使分块后的管道并行运行,训练模型.
步骤4.通过对比得到最佳检测模型M.
步骤5.将Dtest输入到M进行攻击行为预测,得到Rtest.
3.3 改进的D-TPOT架构
D-TPOT架构包含4个步骤,如图3所示.STEP 1:收集数据集并对数据进行数据处理.STEP 2:将数据处理后的训练集导入到TPOT,构建模型管道.STEP 3:此步骤为改进的关键步骤,首先利用分块算法将初始TPOT管道进行分块,然后,再利用动态任务调度方法对分块后的管道进行分布式优化各管道及管道内算子,优化完成后,排名最靠前的即为最佳工控入侵检测模型.STEP 4:利用最佳模型和测试集验证入侵检测效果,计算工控入侵检测模型的准确率、精确率、召回率、F1_Score、F2_Score、F3_Score,同时对比D-TPOT和TPOT构建最佳模型花费的时间.
图3 D-TPOT模型流程Fig.3 Process of D-TPOT model
4 实验设计
4.1 数据集
本文使用公开的数据集KDD99进行仿真实验,该数据集是从一个模拟的美国空军局域网上采集来的9个星期的网络连接数据,数据包含41个特征和1个标识[18].其中训练集包含49万条数据,22种攻击方式;测试集包含31万条数据,37种攻击方式.攻击方式总共分为4个大类分别是拒绝服务攻击、扫描、远程非法访问、越权访问;虽然本文使用的D-TPOT方法工处理,首先对特征“service”合并稀疏特征,发现ntp_u,urh_i,tftp_u,red_i对应的标签都是“normal”,将它们4个合并;pm_dump,http_2784,harvest,aol,http_8001对应的标签都是“satan”,将它们5个合并.然后,对特征“service”进行独热编码用来处理离散特征.
4.2 实验环境
实验仿真设备配置为Inter Core i5-4210M,NVIDA GTX950M 2G DDR3独显,2块4G DDR3内存条.实验运行环境采用Jupyter和Python3.8.本文所进行的实验,全部使用以上硬件设备与软件.
4.3 评价指标
实验模型评估时,使用召回率(recall)、精确率(precision)、准确率(accuracy)、F_measure指标进行评估[19],假定正常访问行为数据为正样本,攻击行为数据为负样本.
TP:正常行为被预测为正常行为.
FN:正常行为被预测为攻击行为.
FP:攻击行为被预测为正常行为.
TN:攻击行为被预测为攻击行为.
(5)
(6)
(7)
准确率、精确率、召回率、F_measure越接近于1说明效果越好,越接近于0说明效果越差.事实上,三者之间并没有必然的关系.但是,在实际应用中,三者会出现一定的制约关系,所以需要引用F_measure指标:
(8)
若精确率和召回率比重一样,θ值设为1,这就是常用的F1_score.在进行工控系统的安全防护时,倾向于尽可能拦截到所有攻击行为,因此就需要将召回率的比重增加.令θ=2和θ=3,利用F_measure函数构造F2_score、F3_score评估方式.虽然增加召回率的比重会导致拦截到正常的访问行为,但是能有效检测攻击入侵行为,避免留下工控系统安全隐患.
5 实验结果与模型分析
5.1 管道迭代次数相同,每一代保留管道数不同
随着保留管道数的增加,TPOT与D-TPOT得到最佳入侵检测模型的时间逐渐增加,入侵检测效果也略有增加.在相同条件下,无论保留管道数为多少,TPOT与D-TPOT得到的入侵检测模型识别攻击行为的效果相差无几,但D-TPOT得到最佳模型的时间总是比TPOT得到最佳模型的时间至少能缩短一半的时间.如图4所示.
图4 TPOT与D-TPOT构建模型时间对比1Fig.4 Comparison of model construction time between TPOT and D-TPOT 1
例如,当generations=10,population_size=40时,与训练集相比,在测试集中新增15种攻击方式后的评估结果,如表2所示,从准确率、精确率、召回率、F1_Score、F2_Score、F3_Score这6种评估指标来看,D-TPOT构建的检测模型均优于TPOT构建的检测模型效果,各项指标提升的检测效果在0.1%以内.从构建模型时间这一指标对比,D-TPOT得到最佳入侵检测模型的时间比TPOT要少3.5个小时.
表2 TPOT与D-TPOT所得模型检测对比Table 2 Comparison of TPOT and D-TPOT model detection
与SVM、LR、KNN、NB、AdaBoost这些常见的机器学习模型相比,D-TPOT也具有明显好于其他模型的入侵检测效果.如图5所示,按照F3_Score综合类型评估标准,每个入侵检测模型的F3_Score平均值.
图5 F3_Score评估柱状图Fig.5 F3_Score evaluation bar chart
5.2 每一代保留管道数相同,管道迭代次数不同
随着管道迭代次数的增加,在第20次管道迭代之后,TPOT与D-TPOT得到的入侵检测模型的检测效果基本上没有很大的变化,得到最佳入侵检测模型的时间逐渐增加,所以,每代管道保留数设置为population_size=20.相同条件下,无论管道迭代次数为多少,TPOT与D-TPOT构建的工控入侵检测模型识别攻击行为的评估指标略有提升,两种构建模型的评估效果持平,保证了评估质量,但D-TPOT构建工控入侵检测模型的时间总是比TPOT节省一半以上的时间,如图6所示.
图6 TPOT与D-TPOT构建模型时间对比2Fig.6 Comparison of model construction time between TPOT and D-TPOT 2
例如,当generations=30,population_size=20时,与训练集相比,在测试集中新增15种攻击方式后的评估结果,如表3所示,从准确率、精确率、召回率、F1_Score、F2_Score、F3_Score这6种评估指标来看,D-TPOT构建的检测模型均优于TPOT构建的检测模型效果,各项指标提升的检测效果在0.2%以内.从构建模型时间这一指标对比,D-TPOT得到最佳入侵检测模型的时间比TPOT要少10.6个小时,节省了3.3倍的时间.说明D-TPOT在不改变模型质量的前提下,能够快速地构建工控入侵检测模型.
表3 TPOT与D-TPOT所得模型检测对比Table 3 Comparison of TPOT and D-TPOT model detection
与SVM、LR、KNN、NB、AdaBoost这些常见的机器学习模型相比,D-TPOT也具有明显好于其他模型的效果,如图7所示,按照F3_Score综合类型评估标准,随着管道迭代次数的增加,D-TPOT与TPOT曲线基本重合,都高于其它模型的评估标准.
图7 F3_Score评估曲线Fig.7 Evaluation curve of F3_Score
通过模型的分析对比,选择管道遗传迭代次数30次,保留管道数为20个时,训练集24700条,测试集15550条,将D-TPOT与原始TPOT、SVM、LR、KNN、NB、AdaBoost这6种算法得到的入侵检测模型进行评估,实验结果如表4所示.
表4 D-TPOT最佳模型与其他模型指标对比Table 4 D-TPOT best model compared with other model indicators
由以上结果可知,利用分布式D-TPOT构建入侵检测模型具有很好的效果.训练集有22种攻击方法,在测试集中又增加了15种攻击方式的情况下,得到正确率:92.89%、精确率:94.66%、召回率:92.89%.由此可知,对于未知的攻击行为,分布式TPOT构建的模型依然能够很好的识别出攻击行为.由F_measure评估方式可知F1_score:91.24%、F2_score:92.07%、F3_score:92.45%,说明随着recall值的权重增加,D-TPOT构建的模型也更好地识别出攻击行为,防止入侵行为的遗漏.同时,D-TPOT构建的入侵检测模型从各种评估指标来看,均属于最佳指标.另外,通过多次D-TPOT构建入侵检测模型,同类型的评估指标,评估效果相差不到1%,说明D-TPOT自动机器学习方法构建的入侵检测模型鲁棒性也很强,将该模型部署在工控防护系统上也更加稳定.
6 结束语
目前工控系统的应用已经十分普及,工控系统网络在外网的暴露度也逐渐增多,也使得工控系统脆弱性逐渐显现出来.本文从自动机器学习这一角度去构建工控入侵检测的模型,根据工控系统环境的特殊性,通过基于树的管道构建工具TPOT,融合分块算法和动态任务调度的方法,改进出D-TPOT自动化构建工控入侵检测模型的技术,该技术能够省去很多人力、物力、和时间,可以让该领域专家有时间去做更有意义的事.另外,D-TPOT构建的入侵检测模型对未知的攻击行为能够有效的识别,并且将遗漏攻击行为的概率降低到了7.55%,这对于未来更具欺骗的工控网络安全攻击行为有更好的防范作用和重要意义.但是,由于D-TPOT自动机器学习通过管道算子构建模型的过程,其实是一个遍历与迭代相互交织的过程,想要得到良好的结果仍需要机器运行一定的时间,进一步研究缩短自动机器学习运行时间的问题,将更有利于该技术在工控系统入侵检测中的应用.