耿嘉炫
(四川大学计算机学院,成都610065)
由于计算机网络技术的不断发展,各种类型的设备都连接到了互联网。网络设备的相互连接给生活带来了便利,从而也导致了大数据时代的到来。同时,设备的激增导致了网络系统的复杂性,从而使其容易受到不同类型的网络攻击。越来越多的攻击事件发生也意味着恶意流量的检测与识别成为了网络安全的一大重要挑战。
作为最有效的防御工具之一,入侵检测系统(IDS)有望抵御攻击者并保护网络安全。通常,IDS的主要功能是监视流经设备的网络流量,以捕获潜在的恶意活动并阻止来自攻击者的恶意流量。在入侵检测场景中,IDS的基本目标是从巨大的网络流量中识别恶意流量。根据检测的性质,IDS主要可分为两类,即基于误用的IDS和基于异常的IDS。前者根据预定义规则(也称为签名)识别恶意流量。即使基于误用的IDS可以有效过滤已知的恶意流量,但在检测未知流量方面却显示出较差的适用性。另外,基于异常的IDS依靠机器学习方法来捕获恶意流量。例如,K-means、神经网络、支持向量机等算法均被用于入侵检测问题上。近年来,深度学习技术在计算机视觉、自然语言处理等领域的成功应用也促使研究人员利用深度学习技术来解决IDS的构建问题。
尽管上述工作取得了令人瞩目的成就,但仍然存在一些明显的缺点。例如,尽管基于深度学习的IDS可以高精度地完成检测任务。不幸的是,此类方法十分耗时,这大大增加了系统的响应时间。更进一步,现有的基于机器学习的IDS大多是通过以下步骤构建的:采用特征选择方法从原始特征集中选择特征,并将所选择的特征输入到所选择的机器学习算法中训练IDS。然而,穷尽特征子集和机器学习算法的所有组合来构造IDS是不切实际的。考虑到这些情况,需要一种更新颖的IDS构造方案。
强化学习在几年前AlphaGo问世时,就已显示出有效的决策能力。考虑到强化学习的试错搜索特性,本文提出了一种新颖的入侵检测方案DQ-IDS用于捕获和识别网络中的恶意流量。基于强化学习DQN算法,将IDS的构建问题转化为决策问题。同时,还调整了奖励函数以适应的相应场景,这样可以迫使智能体逐渐做出最佳的策略。最终,训练好的智能体能够在无需人工干预的情况下选择用于构建IDS的较优特征并用于基于机器学习方法的检测器训练。为了验证DQ-IDS的可行性和有效性,本文基于NSLKDD数据集进行了一系列实验。同样值得注意的是,与基于深度学习方法的IDS相比,利用本文所提出的方法构建的IDS足够轻量,适合现实世界的情况,具有一定的实用价值。实验结果表明,该方法的准确性、误报率和其他评估指标均优于一些现有方法。
关于IDS的研究自计算机网络的兴起便一直存在。在近十年的时间里,有非常多的学者致力于将机器学习和深度学习方法应用到入侵检测的问题上,也就是基于异常的入侵检测。另外,为了进一步增强这些IDS的性能,研究人员还利用了各种特征选择方法。由于本文所提出的DQ-IDS主要是通过分析流经主机的网络流量来捕捉恶意流量的,所以本节将主要讨论使用了各种机器学习和深度学习技术的IDS。此外,在本节中还将讨论有关强化学习的相关研究。
如前面所述,基于机器学习的入侵检测技术主要有3个步骤:数据预处理、特征选择以及检测器训练。就大部分现有的关于IDS的文献而言,许多文献对后面的两个步骤做了相应的研究工作。早在2007年,Munz等[1]就使用数据挖掘技术来对网络流量进行分析。他们提出了一种基于K-means算法的基于流的入侵检测方案。他们主要的关注点在于检测的时间,在当时能够满足实时检测的需求。考虑到传统IDS采用的特征较多的缺点,Staudemeyer等[2]应用决策树算法对原始功能的重要性进行排序,并从网络流量中提取核心特征。进一步而言,他们枚举了几种机器学习算法,最终发现采用MLP构建IDS能达到92.57%的准确率。他们的结果表明,对于大多数攻击而言,实际上许多特征都是多余的。在文献[3]的研究中,研究人员结合了现有的特征选择方法OneR和Relief提出了一种杂交的特征选择方法,以减少网络流量的维数。所提出的模型对流量有了更好的表示,其减少了70.73%的特征维度空间。但是,就恶意流量的检测效果而言,结果并不令人满意。在文献[4]中,提出了一种基于遗传算法的特征选择方法,同时还采用了诸如基于相关的特征选择和信息增益之类的不同特征选择技术来选择特征。最终基于朴素贝叶斯的分类器显示出更好的检测准确性,同时从NSL-KDD数据集中获得的特征数量最少。Moham⁃med等[5]提出了一种旨在降低计算成本的有效IDS构建方案。通过使用两种不同类型的特征选择方法Filter和Wrapper,最终确定了6个特征,并使用LS-SVM算法训练了IDS。实验结果表明,基于KDD99数据集,该方法能将准确率提高到99%以上,同时减少了恶意流量的检测时间。最近,Selvakumar等[6]采用了基于Wrapper和Filter的方法以及萤火虫算法来选择特征。最终,基于KDD99数据集,利用C4.5和贝叶斯网络算法训练了IDS。结果表明,10个特征足以捕获恶意攻击,并且提高了IDS捕获恶意流量的准确性。
近几年来,计算机运算能力的爆炸增长使得深度学习技术进入视野。深度学习技术目前已经在计算机视觉[7-8]、自然语言处理[9-10]等领域展现优越的性能。此外,随着深度学习技术在恶意软件检测等计算机安全方面的应用[11-13],一些学者创新性地将其应用到入侵检测问题上。深度学习方法属于表示学习的范畴,可以从原始特征中学习隐藏的知识。在此基础上,Jin等[14]构建了一个包含4个隐藏层的深度神经网络,并输入大量的流量特征来构建IDS。但是,即使检测能力出众,它在计算时间上的性能是很差的。与传统的深度神经网络相比,循环神经网络具有记忆能力。对于具有时序特性的网络流量而言,循环神经网络可能更适合用于流量的处理。因此Yin等[15]提出了基于RNN的RNN-IDS。他们对RNN中的各种超参数做了调节并对比,最终确定了一个比较好的模型。卷积神经网络在图像处理领域应用广泛。于是,就有研究者[16-18]将流量数据转换成相应的特征图,并用不同结构的网络对这些流量图进行处理,并成功识别恶意流量。值得一提的是,用这种方法建立的IDS可以获得很高的准确率,但是很费时间。为了进一步提升入侵检测的准确率,文献[19-22]在采用深度学习技术处理流量之前先对流量进行了某些特征选择操作,这样能够减少深度学习方法的运算时间。由于深度学习方法的固有优势,即它可以从数据中自动学习特征,从而消除了特征提取过程,极大地简化了训练过程。此外,利用深度学习构建的IDS在侵入检测问题上的准确率、误警率上都有较好的表现。但是,由该方法训练出来的检测模型一般都较大,检测时的运算消耗较高。在一些轻量的设备上是难以部署的,难以适应现实的环境。
上面的文献表明,尽管在构建IDS以捕获恶意流量方面已经取得了成就,但是这些IDS的性能指标(如误报率、计算成本)仍然受到一定限制。因此需要有更加新颖的IDS构建方法,使得检测器能够提取尽可能少的流量特征,在各种检测性能上有一定的提升,同时能够减小运算时间来适应现实世界的场景。作为实现人工智能的一种方法,强化学习理论很早就被提出并进行了扩展性的研究。但是它也是和深度学习一样直到最近才展现出其强大的能力,特别是在决策问题上。文献[23-24]更是将强化学习引入了网络空间安全领域。受这些工作的启发,文献[25]利用强化学习设计卷积神经网络的体系结构以完成图像分类任务。这些开拓性的工作为本文对入侵检测和强化学习的理解做出了贡献。因此,本文扩展到应用强化学习方法来构建一个轻量而高效的IDS。
在DQ-IDS的场景下,智能体期望与环境做交互,并选择最相关的功能以进行后续的训练。这样,网络流量的原始特征可以映射为状态空间。更准确地说,状态空间由智能体在每次交互过程中选择的特征组成。这里考虑了DQ-IDS中状态空间的两种表示方法。在第一种方案中,状态空间可以用One-Hot形式的向量来表示。也就是说,如果智能体选择了初始特征集的第6个特征,那么表示状态空间的向量第6个分量将被设置为1。其他没被选择的特征对应的分量则保持为0。相比之下,第二种方案仅仅考虑了已选择的特征。状态空间向量的长度与设置的最大可选特征长度相关。例如,如果只能选择6个流量特征来训练入侵检测系统,则状态空间的表示则是6维向量。在每一个训练轮次开始时,状态空间的表示都是一个全零的向量。一旦智能体在该轮次的第t步选择了原始特征集的第i个特征,那么状态空间向量的第t个位置将被设为i。不幸的是,第一种状态空间表示方法会在状态空间向量中带来大量零,从而导致稀疏。以这种方式进行的训练可能无法收敛,智能体可能无法连续选择最佳特征。所以第二种的状态空间表示方法将用于智能体的训练过程中。在此设定下,状态空间可以被定义为:
其中,St表示在某个轮次第t步时候的状态,fi、fj以及fk表示已选特征的下标,它们并不相等。
根据强化学习的原理,动作空间是代理可以从中选择的一组可用动作。为了适应DS-IS的主要目的,可以将动作空间A定义如下:
其中a表示所有可供选择的原始特征,i对应特征的索引,Lf表示所设置的最大可选特征数。在每一轮的迭代中,智能体将会根据当前的状态从动作空间中选择出一个动作。需要注意的是,智能体在迭代过程中的动作也受到某些限制。例如被选过的特征将不允许再被选择。这是合理的,因为选择同样的动作也就意味着重复选择特征。重复选择同一功能将特征的冗余,并且同样没有意义。通过在算法中对Q值进行降低可以防止智能体重复选择同一特征。智能体根据该策略不断地通过循环来搜索动作,直到找到可用的动作。
在强化学习中,智能体通过采取某种行动并对环境产生某种影响。同时,环境计算奖励并将反馈返回给智能体。值得注意的是,环境不是评价所智能体所采取的行动是否合理,而是提供正面或负面的奖励。通过回馈的不断刺激,智能体促使做出朝着目标靠近的动作。整个过程不断持续,直至达到目标。这是也强化学习方法区别与传统的机器学习方法的地方。在DQ-IDS场景中,智能体的基本目的是找到特定的特征子集,该子集将被送到基于机器学习的预选算法中以训练IDS,训练好的IDS在入侵检测任务中表现良好。简单来说,入侵检测问题可以视为二分类问题。评估检测任务性能的标准主要包括分类准确性、检测率、召回率、误检率等。为了全面提高检测器的性能,本文考虑了尽可能多的评估指标,并相应设计了以下奖励函数:
其中ra、rp以及rr分别代表了准确率、检测率以及召回率的奖励分量值。需要注意的是,公式中没考虑误警率以及漏警率,这是因为它们和精确率以及召回率是线性相关的。公式给出了ra、rp以及rr的详细设定:
其中,prea,p,r表示使用上一步中所选的特征进行入侵检测任务所获得的准确率、检测率和召回率。该公式是合理的,因为添加某个特征会使IDS的性能变差,这意味着该特征对当前选择的特征集的影响是负面的。因此,需要负奖励来反馈给智能体。此外,超参数ωa、ωp和ωr是准确性、精确率和召回率的权重,这些权重是根据这3个评估指标在IDS中的重要性确定的。ωa、ωp和ωr的详细设定值将在实验章节中给出。
图1直观地给出了DQ-IDS的决策过程。此外,图2还附加描绘了智能体的核心网络结构,即深度Q学习网络。
图2 DS-IDS中智能体的网络结构
图1 DS-IDS决策过程
训练算法中详细介绍了训练过程,在算法中采用了一些比较实用技巧,如探索利用、经验回放策略以及双网络结构,这都能够提升智能体学习的效果。DQ-IDS的训练算法如下:
为了进行公平的比较,本文使用NSL-KDD数据集来测试和验证所提出的DQ-IDS的可行性和有效性。NSL-KDD数据集长期以来一直被用作入侵检测领域的基准数据集。NSL-KDD数据集衍生于KDD99数据集,并在其基础上进行了优化。一方面,NSL-KDD数据集不包含冗余记录,因此生成的IDS将更具有鲁棒性。另一方面,训练和测试集中的样本数量是合理的,这使得训练过程更快更稳定。在NSL-KDD数据集中,每个实例由41个特征组成,其中3个是符号特征,其余是数字特征。每个流量记录都标有它的标签,例如正常或其他恶意类型。由于原始NSL-KDD数据集包含不同类型的特征,因此无法直接将其输入到算法中进行训练。因此,将对其进行如下预处理操作:
(1)特征数值化:如上所述,原始数据集中存在不同数据类型的特征,因此需要对非数字特征进行编码。例如协议特征包含TCP、UDP以及ICMP这3个非数字特征,可以将其映射为0、1、2。对其他的特征也是采取类似的操作。
(2)标签映射:同样,原始数据集中每个实例的标签都是符号值,必须将其转换为相应的值。在检测任务的情况下,正常流量的标签编码为0,对于恶意流量,编码为1。
(3)数据规范化:数值、整数值与浮点值混合在一起,这会使学习变得困难。因此,数值必须被归一化处理。最小值-最大值归一化应用于将数值映射至0-1之间。
表1中显示了检测场景中使用的流量记录的详细分布。
表1 NSL-KDD数据集的分布
本节中所有的实验均是在配有Intel Xeon E5-2698(2.2 GHz)以及16 GB内存的NVIDIA Tesla V100 DGX工作站上开展的。在编程语言方面,Py⁃thon 3.7.3用于原始数据集的预处理,Scikit-learn 0.21.2用于基于机器学习方法的检测器的训练,而ChainerRL 0.7.0用于构建核心的深度Q学习网络以及智能体的训练。除了DQN算法的一些超参数外,还有其他的参数要设置。表2给出了算法中相应的参数及其描述。
表2 DQ-IDS的参数设置
本节中进行了一系列实验,通过数据证明所提出的基于强化学习的DQ-IDS在IDS构建任务上是成功的。DS-IDS的首要目的就是构建一个高效、可行、轻量的IDS,并且能够满足现实环境的需求。因此,为了尽可能全面地评估检测系统的性能,需要考虑尽可能多的评估指标。这里使用了准确率、精确率、召回率、误警率以及漏警率对DQ-IDS生成的IDS进行了评价。此外,对IDS的评价指标还考虑了对于每条流量记录的检测时间,因为在真实环境中IDS是否可以快速响应是至关重要的。
根据强化学习原理,智能体被期望于选择较优流量特征用于训练IDS,所生成的IDS应具有较优的检测性能。因此,智能体在训练过程中从迭代得到的准确率应该随着训练的进行逐步增加的。图3展示的智能体所能获得的准确率与训练迭代轮次的关系。需要说明的,这里对智能体每训练3个轮次才对准确率进行一次采样。从图中可以看到,在训练刚开始的时候,智能体所能获得的准确率较小,这是因为采取探索和利用策略的原因,智能体正在进行探索,做出的可能是随机动作而并不一定是最优的决策动作。随着训练的进行,智能体探索结束并进入利用过程,其采取随机动作的概率将大大减小,所做出的都是最优动作。可以看到,检测准确率呈现总体上升的趋势,这说明智能体从不断的交互过程中学习到了知识,做出了有效决策。
图3智能体所获得的准确率与训练轮次的关系
在第一组实验中,算法池中可供智能体选择的机器学习算法主要包括K近邻(KNN)、决策树(DT)、朴素贝叶斯(NB)、随机森林(RF)、多层感知机(MLP)、AdaBoost、Bagging以及GBDT等。在训练DQ-IDS的智能体过程中,每次将指定算法池中的算法用于IDS的训练。同时,还设置了智能体最大可选动作数,即在每一轮的训练中规定了智能体能够选择的最大特征数。智能体的最大可选动作数的范围是6-10。即对于算法池中的每一种机器学习算法,智能体都会选择6-10个流量特征用于IDS的训练。图4给出了在DQ-IDS的测试过程中基于算法池中的不同机器学习算法并使用由智能体选出的不同数量的流量特征训练得出的IDS的性能指标(准确率)。从图中可以看到,由决策树类型算法所生成的IDS有较好的检测效果,包括决策树以及随机森林等。同时,使用了由智能体选出的9个特征基于决策树算法的IDS有最优的效果,检测的准确率可达88.11%。此外,使用决策树算法生成的检测器检测结果也较为稳定。
表3给出了在智能体测试过程中获得最好检测效果的IDS生成过程所使用的流量特征以及其描述。从表中可以看到,智能体选择的流量特征包含了TCP连接的基本特征如连接的持续时间、协议的类型以及源主机到目标主机的数据字节长度。还包括了关于流量的统计特征如过去两秒内与当前连接具有相同服务的连接数等。这些流量特征覆盖全面,足以捕获流量数据的入侵行为。同时,这些流量特征的选择是合理的。例如,对应于DoS攻击,srv_count特征是该类攻击的一大主要特征。这说明智能体的决策有一定的合理性。
图4在Test+数据集上不同算法使用智能体选择的最好特征训练的检测结果
表3智能体所选的最优特征集合
为了进一步证明DQ-IDS中智能体所做决策的有效性,还进行了第二组实验。在本组实验中,将利用相同的机器学习算法(基于随机森林算法)生成两个不同的IDS,并利用NSL-KDD数据集的Test+数据集对其二者进行测试。第一个IDS采用的是表3中智能体所选取的9个最优特征集合进行训练,而第二个IDS则使用NSL-KDD数据集中所有的41个特征进行训练。实验统计了这两个IDS在入侵检测任务上的各种指标,如准确率、精确率等。相应检测指标的统计与对比结果如表4所示。从表中可以看出,两个IDS在不同的评价指标上都达到了比较好的精度。在各项指标上,由DQ-IDS所生成的IDS均超过了使用全部流量特征生成的IDS。值得一提的是,在单个流量样本的检测时间上,由DQ-IDS所生成的IDS的检测速度大大优于使用了全部41个特征的检测系统,具有很好的实时性。上述结果说明,利用9个流量特征也足以完成入侵检测任务,同时进一步说明DQ-IDS的智能体所做的决策是有效的。
表4 由DQ-IDS所选特征的IDS与特征全选的IDS之间的检测性能比较
在第一组与第二组实验中,DQ-IDS已经展现出其在构建IDS上的能力,由其所构建的IDS有较好的检测效果。在第三组实验中,将复现一些现有的入侵检测方法并生成对应的IDS与DQ-IDS生成的IDS进行对比。同时,为了进行更为公平而全面的比较,将沿用NSL-KDD数据集对IDS的性能进行评估。就对比方法而言,考虑到对比方法的全面性,分别选择了采用了不同特征选择方法和机器学习算法构建IDS的方法[2]以及基于深度学习的入侵检测方法[16,18]。由DQ-IDS所构建的IDS与现有的IDS在NSL-KDD的Test+数据集上的详细性能比较结果如表5所示。
表5由DQ-IDS所构建的IDS与现有入侵检测方法所构建的IDS比较
从表中可以看到,由所提出的DQ-IDS生成的IDS在准确率上均超过了几个现有的方法。更需要注意的是,由所提出的DQ-IDS生成的IDS对恶意流量的检测时间是大大快于基于深度学习方法[16,18]的IDS。同时,虽然基于深度学习方法的IDS检测能力出众,但是由于深度学习固有的特性,即神经元的计算导致了判别时间的增加,这一点难以适应现实环境。此外,在IDS的大小上,由DQ-IDS所生成的IDS大大小于由文献[16]以及文献[18]生成的IDS,可以满足小型网络设备的需求。
本文提出了一个新颖的基于强化学习方法的IDS构建框架DQ-IDS。基于DQN算法,所提出的DQ-IDS能够自动选择地有效的网络流量特征。作为DQ-IDS的核心组件,自学习的智能体能够不断采取动作,并根据当前状态选择最佳特征。这些高度差异化的特征随后可以用于机器学习算法,以训练高效的IDS。实验结果表明,所提出的DQ-IDS不仅可以从流量中提取合理的特征来优化IDS的性能指标,而且还可以大大减小入核心检测器的体积,以满足实际情况。在未来的工作中,将应用其他强化学习算法,例如A3C,来增强IDS的鲁棒性。同时,考虑到强化学习的试错特性,还将把该方法扩展到其他决策任务上。