近年来,随着互联网的发展,网络攻击技术和手段日新月异,各种网络安全事件充斥网络空间。传统的网络安全设备往往只关注某一方面的安全问题,不能从整体上反映网络的安全状况。在此背景下,网络安全态势评估技术应运而生,它能整体上感知网络的安全状况,为网络管理人员提供决策帮助。
自Base[1]提出网络安全态势感知的概念以来,网络安全态势评估一直是态势感知研究的重点[2],但相关理论仍不完善,还没有一种态势评估方法在实际网络环境中发挥出至关重要的作用。目前,找出一种高效的态势评估方法成为态势感知研究的重点。
Keramati等[3]提出一种使用通用漏洞评分系统的评分平均值和路径长度的比值来计算攻击可达性的评估方法,该方法可以定量分析网络安全并计算网络上的损失。汪永伟等[4]提出基于改进证据理论的态势评估方法,通过相异计算对证据重要性修正后进行态势融合获取网络态势值。Szwed等[5]提出基于模糊认知图的评估方法,该方法利用模糊认知图获取网络中重要资产的依赖关系并进行危害程度评估。上述方法具有较强的主观性且数据来源较为单一,存在较大的虚假报警率且评估的误差较大。
陈丽莎[6]提出结合反向传播(Back Propagation, BP)神经网络与查找法的态势评估方法,运用BP神经网络(Back Propagation Neural Network, BPNN)评估网络的威胁性、稳定性、容灾性和脆弱性,然后使用等级矩阵得到网络的态势等级。Zhang等[7]对比基于BP神经网络和基于径向基(Radial Basis Function, RBF)网络的态势预测方法,实验结果表明BP神经网络的预测效率较高。黄亮亮[8]提出基于粒子群优化(Particle Swarm Optimization, PSO)优化RBF网络的方法实现网络安全态势预测,设计PSO-RBF网络模型对历史数据分析并映射出未来的网络态势值。上述方法均是基于神经网络且数据来源多样,使得研究结果客观性较强,但网络的训练时间过长且评估结果的精度不足。
针对现有基于神经网络的网络安全态势评估方法效率低的问题,本文提出一种基于布谷鸟搜索优化BP神经网络(Cuckoo Search optimized Back Propagation Neural Network,CSBPNN)的网络安全态势评估方法,该方法在训练阶段收敛速度快,评估阶段精度高。与基于BP神经网络和基于遗传算法优化BPNN的网络安全态势评估方法相比,所提方法具有较快的评估速度和较高的精度。
1 CSBPNN评估模型 1.1 设计思想利用BP神经网络强大的非线性映射能力解决态势评估中态势数据与态势值关系不确定的问题,从态势数据中发现规律,推理出态势值,使网络安全态势评估系统更灵活。针对随机初始化BP神经网络的权值和阈值容易造成网络收敛速度慢、陷入局部极小值等问题,本文使用布谷鸟搜索(Cuckoo Search, CS)算法优化BP神经网络的权值和阈值,获得最优的权值和阈值使CSBPNN模型评估结果更准确。
1.2 态势评估模型设计BP神经网络作为前馈型网络的一种,是目前应用最为广泛的网络[9]。权值和阈值随机分配下的BP神经网络的训练时间一般较长,经过训练得到的权值和阈值也可能并非最优,本文采用CS算法寻找最优的权值和阈值。CS算法是群智能技术的典型搜索算法,为BP神经网络参数优化提供了一种新的研究工具[10],对CS算法与PSO算法、人工蜂群(Artificial Bee Colony, ABC)算法进行了比较研究,结果表明CS算法寻找基准测试函数全局最优值的时间复杂度比PSO和ABC算法低且获取最优值的成功率高[11]。
本文结合网络安全态势评估的特点,设计了CSBPNN模型,如图 1所示。
该模型由态势数据输入、态势映射和态势输出部分组成,各部分的功能设计如下。
1) 态势数据输入。分时段收集网络中节点的态势相关数据,每段时间收集的数据(态势数据1,态势数据2,…,态势数据n)作为态势输入部分的一组输入数据。
2) 态势数据映射。该部分由三层组成:输入层、隐含层和输出层。输入层从态势输入部分获取输入数据,这些数据经过隐含层的运算得到隐含层的输出,然后经过输出层的运算得到输出层的输出,态势数据映射完成。
输入层的节点数与输入数据数相同;输出层的节点数与态势评估结果数相同;隐含层数可以根据需要进行设置,但是层数越多、网络越复杂,则训练时间越长,不能满足实际应用的需求,因此,采用一个隐含层并增加隐含层节点个数的设计方式,既可满足实际应用的需求又能提高网络的准确度。采用试凑法设置隐含层节点的个数,首先使用经验公式设置较少的隐节点,然后每次增加等量的隐节点,在使用同一样本集的前提下,选取训练误差最小时对应的节点数。初始隐节点数m为:
$ m = \sqrt {n + l} + \delta $ | (1) |
其中:n代表输入层节点个数;l代表输出层节点个数;δ代表 0~10的常数;当(n+l)的开方是小数时,在满足精度要求的前提下,选取尽可能少的隐含层节点数m[9]。
设输入层有i个节点,隐含层有j个节点,输出层有k个节点;输入层到隐含层之间有连接权值wij,隐含层有阈值θj;隐含层到输出层有连接权值vjk,输出层有阈值rk;第j个隐含层节点的输出值yj,第k个输出层节点的输出值yk,则:
$ {{y_i} = f\left( {\sum\limits_{i = 1}^n {{w_{ij}}} \times {x_i} - {\theta _j}} \right)} $ | (2) |
$ {{y_k} = f\left( {\sum\limits_{j = 1}^n {{w_{jk}}} \times {y_i} + {r_k}} \right)} $ | (3) |
式(2) 和(3) 中,f(x)为sigmoid函数,sigmoid函数是标准的BP神经网络传递函数,它与生物神经元信息处理的真实反映非常相似且有一个简单的导数,对开放学习算法十分有用;xi为输入层输入。
3) 态势数据输出。接收态势映射部分传递过来的值,该值即为某时段网络的态势值。
2 网络安全态势评估 2.1 布谷鸟编码及适应度函数设计网络安全态势评估的目的是完成态势数据集到态势结果集的映射,主要包括态势数据的感知、获取和评估计算,给出对网络安全状况的判断性结果。在本文的态势评估方法中,首先解决的是布谷鸟编码和适应度函数设计两个问题。
1) 布谷鸟编码方式。浮点数编码直观且具有编码长度易控制、编码精度高且大空间搜索能力强等特点,有利于处理多维及高精度连续函数,并可降低计算复杂性、提高运算效率,故本文采用浮点数编码。
设网络的输入层节点数M,隐含层节点数I,输出层节点数J,输入层到隐含层矩阵W,隐含层到输出层权值矩阵V,隐含层阈值矩阵θ,输出层阈值矩阵r。所有权值和阈值共同编码成一只布谷鸟,则布谷鸟的编码为:
$ {W_{11}}{W_{21}} \ldots {W_{M1}}{V_{11}}{V_{21}} \ldots {V_{1J}}{\theta _1} \ldots {W_{1I}}{W_{2I}} \ldots {W_{MI}}{V_{I1}}{V_{I2}} \ldots {V_{IJ}}{\theta _I}{r_1} \ldots {r_J} $ | (4) |
2) 适应度函数设计。适应度是衡量群体中个体好坏的依据,适应度值越高代表该个体越接近最优解。适应度函数的设计方案有3种:第1种是直接将目标函数作为适应度函数;第2种是对目标函数作一次加运算;第3种是对目标函数作一次加运算后取倒数。本文结合BP神经网络总误差越小越好的特点选用第3种设计方案。设BP神经网络的总误差E小于ε;I是隐含节点总数;M是输入节点总数;第k个输出节点的期望输出为dk和实际输出yk,则:
$ E = \frac{1}{2}\sum\limits_{i = 1}^I {\sum\limits_{m = 1}^M {{{[{d_k} - {y_k}]}^2}} } \le \varepsilon $ | (5) |
本文选用的第3种适应度函数设计方案表示为:
$ F\left( {w,v,\theta ,r} \right) = {10^{ - 3}}/\left[ {\sum\limits_{i = 1}^I {\sum\limits_{m = 1}^M {{{({d_k} - {y_k})}^2}} } } \right] $ | (6) |
此外,本文的态势评估方法还考虑了参数设计的问题。由于种群规模和发现概率是CS算法的两个重要参数,当种群规模从5变化到50再到500,发现概率从0变化到0.1再到0.5的过程中,收敛率先变大再趋于稳定[10]。当种群规模设置较大时,收敛率略有提高但消耗了更多的时间和资源。Yi等[12]对CS算法选取不同的种群规模和发现概率进行实验验证,当种群规模为50,发现概率为0.1时,预测的准确率达到最高。综上所述,种群规模选取50,发现概率选取0.1。
2.2 网络安全态势评估流程设计基于CSBPNN的网络安全态势评估流程如图 2所示。
基于CSBPNN的网络安全态势评估步骤设计如下。
步骤1 收集网络中各节点的态势相关数据,剔除不完整的数据,获取流量、数据包等网络参数进行处理,产生CSBPNN模型的输入数据。
步骤2 随机产生n只布谷鸟X0=(x1(0), x2(0), …, xn(0))T。对n只布谷鸟进行编码,将上一步获取的态势数据代入适应度函数,得到布谷鸟的适应度。选择适应度最优的布谷鸟xi(0)。
步骤3 保留上一代最优的布谷鸟xi(0),按照式(7) 更新布谷鸟的位置Xt=(x1(t), x2(t), …, xn(t))T。布谷鸟的位置更新公式为:
$ x_i^{t + 1} = {\rm{ }}x_i^t + {\rm{ }}\alpha \oplus Levy\left( \lambda \right) $ | (7) |
其中:α=O(L/10) 是莱维飞行的步长大小和方向;L是搜索空间范围;⊕是点对点乘积;xit是第t代的第i只布谷鸟的位置,Levy(λ)是莱维分布。Levy(λ)可表示为:
$ Levy\left( \lambda \right) \sim u = {t^{ - \lambda }};1 < \lambda < 3 $ | (8) |
计算这一代布谷鸟的适应度,找到最优的布谷鸟xi(t)。
步骤4 随机产生一个在[0, 1]区间的小数m,比较m和发现概率p的大小。如果m < p,则按照式(7) 更新布谷鸟的位置,计算并比较新的布谷鸟和原布谷鸟的适应度,保留适应度较大的布谷鸟,得到更新后的布谷鸟Xt+1=(x1(t+1), x2(t+1), …, xn(t+1))T;如果m≥p,则保留原来的布谷鸟。
步骤5 判断最优布谷鸟是否满足条件或者迭代代数是否达到要求,如果是,则将最优布谷鸟解码获取最优的权值、阈值,赋给CSBPNN模型;反之,则执行步骤3。
步骤6 将态势输入数据作为CSBPNN模型的输入,将态势值作为CSBPNN模型的输出,用足够多的样本训练CSBPNN模型,完成态势数据到态势值的映射。
步骤7 将态势指标数据输入到具有评估能力的CSBPNN模型中,经过映射得到网络的态势值。
3 实验结果与分析 3.1 实验环境和步骤 3.1.1 实验环境本文搭建的实验环境如图 3所示,包括8台主机、5个网络组件和snort入侵检测系统,其中4台主机模拟服务器,服务器具体配置参数见表 1。图 3中用户和攻击者均可访问该网络中的主机[13]。
本文实验步骤设计如下:
1) 正常用户持续访问Host1(IIS Web Server)、Host3(FTP Server)和Host5(Main Database);
2) 攻击者利用漏洞CVE-2013-5793对Main Database进行攻击;
3) 攻击者利用漏洞CVE-2011-0762对FTP Server进行攻击;
4) 攻击者利用漏洞CVE-2006-2753对Main Database进行攻击;
5) 攻击者利用漏洞CVE-2004-2650对IIS Web Server进行攻击;
6) 攻击者利用漏洞CVE-2013-5908对Main Database进行攻击。
重复上述步骤,将snort收集的数据包记录在数据库名为snortdb的MySQL数据库中。实验结束后分时段获取网络数据并进行处理,作为态势输入数据。
漏洞攻击威胁终端的可用性,而主机可用性依赖于CPU、内存、磁盘空间的使用情况、网络带宽、网络连接使用率和进程/线程的增减等[14]。通过分析数据包的变化情况可发现这些攻击,因此本文选取与数据包相关的态势数据指标(如表 2所示)。
本文参考国家互联网应急中心网络安全基本态势指数,并结合网络的威胁、漏洞等要素特点,将网络安全态势划分为优、良、中、差、危五个等级并用[0, 1)、[1, 2.5)、[2.5, 6)、[6, 8)、[8, 10) 五个区间进行定量描述。
本文实验模拟的是漏洞攻击,实验中设置的漏洞都用通用漏洞评分系统(Common Vulnerability Scoring System, CVSS)进行评分,使用漏洞的CVSS基础分作为网络的安全态势值,旨在验证所提出的CSBPNN方法的可行性和高效性。收集并处理得到100组数据,其中80组作为训练数据,20组作为测试数据,部分数据样本如表 3所示。
本文使用Matlab R2012b软件的神经网络工具箱实现提出的CSBPNN模型。Matlab运行平台配置如下:处理器Intel Core i5-3570 CPU @3.40 GHz 3.40 GHz,已安装内存(RAM):4.00 GB(3.89 GB可用)。CSBPNN模型包括布谷鸟搜索最优权值阈值部分和BP神经网络构造两部分。在布谷鸟寻优部分,选取布谷鸟种群规模n=50,设定发现概率p=0.1,最大迭代代数为50;在BP神经网络部分,由于输入的态势数据分别是传输控制协议(Transmission Control Protocol, TCP)包分布、TCP包字节数比重、用户数据报协议(User Datagram Protocol, UDP)包分布、UDP包字节数比重、互联网控制报文协议(Internet Control Message Protocol, ICMP)包分布、ICMP包字节数比重、流入流量变化率、流出流量变化率,则设定输入层节点数8,隐含层节点数通过式(1) 选取4,经试凑得节点数6,输出层输出为态势值,输出节点数1,传递函数为标准的sigmoid函数,最大迭代次数设定为1 000。
3.3 实验结果与分析图 4显示CS算法在寻找最优布谷鸟过程中的适应度变化曲线。
从图 4可以看出,CS算法仅采用较小的种群规模,经迭代20次,适应度就收敛于最优。这表明CS算法仅消耗很小的资源便达到最优,CS算法达到了预期的效果,是高效可行的。
使用Matlab软件实现基于遗传算法优化BP神经网络(Genetic Algorithm optimized Back Propagation Neural Network, GABPNN)的态势评估方法和基于BPNN的态势评估方法[15],并与本文方法进行评估对比。当CSBPNN、BPNN和GABPNN训练完成时迭代次数分别为57,1000和104次。从结果可以得出,CSBPNN的迭代次数分别比BPNN和GABPNN少943和57次。由此可知,CSBPNN态势评估方法的收敛速度较快。
在Matlab软件中完成3种模型的训练后,对实验网络后面时段的态势进行评估。将剩余的20个样本数据输入到CSBPNN模型的输入部分,经过态势映射得到网络当前的态势值。同样,应用GABPNN方法和BPNN方法对这20组数据进行评估计算。将3种方法获取的20组网络安全态势值和网络的实际态势值(即漏洞的CVSS评分)比较(详见图 5)。
从图 5可以看出,除样本8和样本15以外,本文方法对其他样本的评估结果更加接近网络实际的态势值。评估结果的平均相对误差M为:
$ M = \frac{1}{n}\sum\limits_{i = 1}^n {\frac{{\left| {{y_k} - {d_k}} \right|}}{{{d_k}}}} \times 100\% $ |
其中:yk和dk为评估模型的输出值和期望输出值;n为测试样本集。经计算得到BPNN、GABPNN和CSBPNN三种方法评估相对的误差分别为12.14%、7.97%和4.08%。CSBPNN网络安全态势评估方法的相对误差比BPNN和GABPNN分别低8.06和3.89个百分点,所提方法准确度较好,能够更加精准地描述网络的安全态势。
综上所述,CSBPNN比BPNN和GABPNN具有更快的收敛速度、更强的逼近能力以及更高的评估精度。
4 结语近年来,神经网络以其强大的非线性映射能力在态势评估中发挥着重要作用,一些智能算法相继被用于神经网络来提高态势评估的准确性和效率,本文提出CSBPNN方法使用CS算法对BP神经网络的参数进行优化,得到用于态势评估的CSBPNN模型,将网络安全态势数据输入到CSBPNN中映射出网络的安全态势值。该方法能有效解决现有网络安全态势评估方法效率低的问题。未来可以通过调整CS算法的步长参数等方式使算法的收敛速度和解的质量进一步提高,使CSBPNN态势评估方法达到更好的评估效果。
[1] | BASS T. Intrusion detection systems & multisensor data fusion[J]. Communications of the ACM, 2000, 42(4): 99-105. |
[2] | 王坤, 邱辉, 杨豪璞. 基于攻击模式识别的网络安全态势评估方法[J]. 计算机应用, 2016, 36(1): 194-198. (WANG K, QIU H, YANG H P. Network security situation evaluation method based on attack pattern recognition[J]. Journal of Computer Applications, 2016, 36(1): 194-198. DOI:10.11772/j.issn.1001-9081.2016.01.0194) |
[3] | KERAMATI M, AKBARI A, KERAMATI M. CVSS-based security metrics for quantitative analysis of attack graphs[C]//ICCKE 2013:Proceedings of the 2013 International Conference on Computer and Knowledge Engineering. Piscataway, NJ:IEEE, 2013:178-183. |
[4] | 汪永伟, 刘育楠, 赵荣彩, 等. 基于改进证据理论的态势评估方法[J]. 计算机应用, 2014, 34(2): 491-495. (WANG Y W, LIU Y N, ZHAO R C, et al. Situation assessment method based on improved evidence theory[J]. Journal of Computer Applications, 2014, 34(2): 491-495.) |
[5] | SZWED P, SKRZYNSKI P. A new lightweight method for security risk assessment based on fuzzy cognitive maps[J]. International Journal of Applied Mathematics and Computer Science, 2014, 24(1): 213-225. |
[6] |
陈丽莎. 大规模网络安全态势评估模型研究[D]. 成都: 电子科技大学, 2008: 27-49. CHEN L S. Research on the model of large-scale network security situation awareness[D]. Chengdu:University of Electronic Science and Technology of China, 2008:27-49. |
[7] | ZHANG Y X, JIN S Y, CUI X, et al. Network security situation prediction based on BP and RBF neural network[C]//ISCTCS 2013:Proceedings of the 2013 International Standard Conference on Trustworthy Computing and Services. Berlin:Springer, 2013:659-665. |
[8] |
黄亮亮. 网络安全态势评估与预测方法的研究[D]. 兰州: 兰州大学, 2016: 36-41. HUANG L L. The study of assessment and prediction methods for network security situation[D]. Lanzhou:Lanzhou University, 2016:36-41. |
[9] |
吴昌友. 神经网络的研究及应用[D]. 哈尔滨: 东北农业大学, 2007: 8-28. WU C Y. The research and application on neural network[D]. Harbin:Northeast Agriculture University, 2007:8-28. |
[10] | YANG X S. Nature-Inspired Metaheuristic Algorithms[M]. 2nd ed. Bristol, UK: Luniver Press, 2010: 105-114. |
[11] | CIVICIOGLU P, BESDOK E. A conceptual comparison of the cuckoo-search, particle swarm optimization, differential evolution and artificial bee colony algorithms[J]. Artificial Intelligence Review, 2013, 39(4): 315-346. DOI:10.1007/s10462-011-9276-0 |
[12] | YI J H, XU W H, CHEN Y T. Novel back propagation optimization by cuckoo search algorithm[J]. The Scientific World Journal, 2014, 2014(1): Article ID 878262. |
[13] |
韦勇. 网络安全态势评估模型研究[D]. 合肥: 中国科学技术大学, 2009: 65-69. WEI Y. Research on network security situation awareness model[D]. Hefei:University of Science and Technology of China, 2009:65-69. |
[14] | 陶敬, 马小博, 赵娟, 等. 基于资源可用性的主机异常检测[J]. 电子科技大学学报, 2007, 36(s3): 1449-1452. (TAO J, MA X B, ZHAO J, et al. A method for host abnormal detection based on resource availability[J]. Journal of University of Electronic Science and Technology of China, 2007, 36(s3): 1449-1452.) |
[15] | 王小川. MATLAB神经网络43个案例分析[M]. 北京: 北京航空航天大学出版社, 2013: 1-32. (WANG X C. MATLAB Neural Network 43 Case Analysis[M]. Beijing: Beihang University Press, 2013: 1-32.) |