1. 引言
近年来,随着互联网的日益进步,网络攻击手段也变得越来越难以捉摸。传统的被动防御模式已经难以满足基本的网络防御要求。网络安全态势感知作为一种能够基于环境的、动态、整体地洞悉网络安全风险的能力,从全局视角提升对安全威胁的发现识别、理解分析、响应处置能力的一种方式,成为了当下的研究热点。网络安全态势预测是态势感知最重要的一环,可以实现对未来网络运行状况的预测。传统网络安全态势预测一般基于时间序列和集成技术等进行预测。随着深度学习的不断发展,越来越多的学者将神经网络应用到态势预测的问题中来。文献 [1] 提出了基于GA_SVM的网络安全态势预测模型,该算法首先将重构后的网络安全态势数据输入基于SVM网络安全态势预测模型进行训练,然后采用遗传算法获取较优的预测模型参数,解决了传统支持向量机网络安全态势预测模型存在参数选取困难的问题。文献 [2] 利用PSO算法改进了传统RBF神经网络,改进了PSO的惯性权重,在保证全局寻优的同时又增强了局部搜索能力。文献 [3] 提出了基于灰色理论和BP神经的网络安全态势预测方法。依据灰色模型系数的取值大小选择最合适的背景值,并构造了一种新的模型背景值函数。结合GM模型预测网络安全态势,并用BP神经网络对态势预测值进行修正。文献 [4] 提出了基于深度自编码器的网络安全态势预测。通过深度自编码对特征的提取和恢复能力,有效学习到了安全态势数据的稀疏表示,从而提高了安全态势值的预测精度。文献 [5] 提出了基于人工免疫算法的网络安全态势预测,采用了人工免疫算法来优化网络的结构和神经网络的态势预测值,进一步提高了模型的检测率。
由于网络安全态势数据的时序性,本文提出了一种基于PSO-LSTM的网络安全态势预测方法。LSTM可以有效地学习到长序列数据中所包含的信息。而LSTM和其他神经网络一样,模型参数往往要靠人工选择,这就导致模型难以训练。故采用PSO算法优化LSTM网络,合理确定LSTM的模型参数。实验证明,PSO有效提高了LSTM网络的收敛速度和预测精度。
2. 基于PSO-LSTM的网络安全态势感知预测方法
2.1. LSTM算法
循环神经网络(RNN)是一种专门用来处理序列数据的神经网络。和一般神经网络不同的是,它能有效的提取到序列之间的信息。比如单词会因为上下文的不同而导致词义发生变化。但传统循环神经网络面对长序列时容易发生梯度消失以及梯度爆炸的问题。为了解决RNN所存在的问题,LSTM作为它的一种变种被提了出来。
长短时记忆网络(LSTM)主要用于解决RNN中梯度消失和爆炸的问题,因此在面对长序列数据时有着良好的表现。其网络结构如图1所示。
相较于传统RNN只会传递
,LSTM同时还会给下一个时刻传递当前的细胞状态
。也就是说比起RNN,LSTM不仅会告诉下一个时刻当前的细胞状态,同时还会传递隐层的状态,这为后续一系列的门运算提供了基础。
LSTM主要包含了三个门:遗忘门、输入们、输出门。
1遗忘门:这是LSTM的遗忘阶段,主要时为了忘掉长序列数据中不重要的信息。由于激活函数是sigmoid所以输出在0和1之间。其中1表示保留,0表示遗弃。其更新公式如公式1所示:
(1)
2输入门:这是LSTM的选择记忆阶段,这个阶段会将输入有选择性地进行“记忆”。主要是会对输入
进行选择记忆。重要的信息多记一些,不重要的则需要少记。激活函数主要有sigmoid和tanh。公式如2~4所示
(2)
(3)
(4)
3输出门:这是LSTM的输出阶段。这个阶段将要决定哪些信息会被当做当前状态而输出。此阶段结合前面两个阶段给出的信息做出判断。此阶段的激活函数也有两个为sigmoid和tanh。其更新公式如5~6所示:
(5)
(6)
训练LSTM网络可以应用时序性倒传递算法,依据错误修改每次的权重。梯度下降法在循环网络神经网络(RNN)会导致误差梯度随着事件间的时间长度成指数般的消失。但是当设置了LSTM单元时,误差也随着倒回计算,从输出影响回输入阶段的每一个门,直到这个数值被过滤掉。因此正常的倒传递类神经是一个有效训练LSTM区块记住长时间数值的方法。LSTM的内部结构主要就是通过门控状态来控制传输状态,能记住关键的信息,忘记长序列信息中不需要的信息,不同于普通的RNN那样仅仅只有一种记忆叠加方式。这对网络安全态势预测这种长序列数据来说,是一种非常有效的网络。
2.2. PSO算法
粒子群优化(PSO, particle swarm optimization)算法时一种基于生物启发的群体智能优化算法,源于对鸟类捕食的研究。本文采用PSO算法对LSTM中的超参数进行寻优,从而得到整个网络的最优参数组合。
对于一个j的优化问题,种群中共有i个粒子,对于每个粒子都有j维度的速度和位置两个向量。模拟整个鸟群的飞行过程,不断调整第i个粒子的最优位置,最终找到整个粒子群最优的位置。应用于LSTM中,其具体步骤如下所示:
步骤1:初始化算法相关参数,确定种群规模,迭代次数,惯性权重和学习因子的变化区间。
步骤2:随机生成一个三维的种群粒子,每个维度都是我们更新模型的误差参数同时并初始化粒子的位置和速度。所以粒子的维度就是我们需要优化的参数。
步骤3:以LSTM模型的损失函数作为粒子的适应度函数,适应度函数越大说明模型的损失。
函数越大,所以我们要尽量使适应度变小。这样求得的粒子参数组合越好。计算每个粒子的适应度函数,根据适应度函数确定个体最佳位置和群体最佳位置。
步骤4:迭代过程中不断更新粒子的位置和速度,再重新算出每个粒子的适应度函数并更新个体最佳位置和群体最佳位置。
步骤5:当达到迭代次数或粒子的适应度函数趋于稳定时则停止,作为群体最佳位置的粒子为本次求得的最优参数组合,否则转步骤4继续迭代。其流程图如图2所示。
3. 仿真实验及结果分析
3.1. 实验环境和数据集介绍
实验编程语言使用Python,版本为3.7.5。基于tensorflow、sklearn等开源库实现。操作系统使用的是Windows 10、CPU 2.9 GHz、内存6.0 GB的PC机。数据集选用KDD-CUP1999数据集。此数据集是KDD竞赛在1999年所示用的数据。该数据集模拟了美国空军局域网上采集来的9个星期的网络连接数据,分成具有标识的训练数据和未加标识的测试数据。测试数据和训练数据有着不同的概率分布,测试数据包含了一些未出现在训练数据中的攻击类型,这使得入侵检测更具有现实性。
数据集中主要包含5种类别的数据包括正常数据和另外四种攻击数据。四种攻击分别为:Probe、denial of service (DoS),user to root (U2R),and remote to local (R2L)。四类攻击类型又可详细划分为39类具体攻击。NSL-KDD每条样本包含了41个特征属性标签,分别由38个numeric特征和3个nominal特征组成。数据集本身极度不平衡,部分攻击类的样本远远少于正常数据。
3.2. 数据预处理
数据集中包含了连续性和离散型的数据。对于连续性的数据为了避免其量纲的不一致性,需要对其进行归一化处理。计算方法如公式7所示:
(7)
而对于离散型的数据需要对其进行one-hot编码处理。在41个固定的特征属性中,9个特征属性为离散型,对这9个特征进行编码后共得到122维的特征。同时我们采用文献 [6] 中的态势评估方法得到了网络安全态势值,并对其进行归一化,部分态势值如图3所示。
3.3. 评价标准
本文选取均方误差(mean-square error, MSE)对网络安全态势值的预测进行评价。它是衡量真实值与预测值比较常用的一个评价标准。MSE越大,表明算法的准确度越小,相反,MSE越小则表明预测值更加精准。其公式如式8所示:
(8)
其中,
为真实值,
为预测值。
3.4. 结果比对和分析
本文分别与BP、PSO-SVM进行对比。取测试集中编号1~10的数据,分别用三种算法得出了预测值,结果如图4所示。
从图4可以看出,本文所提出的方法与真实数据有着最高的拟合度,数据变化趋势基本一致。BP神经网络的预测效果最差,其无法捕捉到态势数据所存在的序列信息。可见LSTM相比于传统神经网络在态势预测上有较大优势。PSO-SVM显示出了和BP相差不远的精度,由于本文所使用的数据集样本数量巨大,SVM显然无法有效处理。最终,三个算法的均方误差由表1给出。
4. 结论
本文针对传统网络安全态势预测技术预测精度不高的问题,提出了一种基于PSO-LSTM的网络安全态势预测模型。实验表明,相较于BP以及PSO-SVM算法,本文所提出的算法得到了较高精确率。由于本文所使用的数据集不平衡的特性,下一步将探究如何进一步提高攻击不平衡的样本数据的预测精度。