本发明涉及通信技术领域,尤其是一种基于BP神经网络的应用于软件定义网络(SDN)的入侵检测方法。
背景技术:
随着网络应用复杂度的日益提高,网络攻击方法层出不穷,入侵手段也不断更新,对网络安全机制提出了更高的要求。目前广泛采用的被动网络安全机制对网络攻击难以有效的应对,而入侵检测技术作为—种主动防御技术,弥补了传统安全技术的不足。入侵检测主要通过监控网络系统的状态、行为以及使用状况,来检测网络系统的异常行为及蓄意入侵者利用安全缺陷对系统进行的主动攻击,并采取相应的措施。入侵检测通过提取网络状态特性组成的输入数据序列,经由内部的映射机制,把输入映射到输出分类向量,来确定是否存在入侵,其核心是寻找到一个从输入到输出之间的最佳的映射函数。而人工神经网络本身具有非线性映射能力,能够通过对连续或离散的输入进行非线性映射进行信息处理.因此,人工神经网络非常适用于入侵检测问题的求解。
当前发展迅速的软件定义网络为数据通信提供了一种全新的架构,其松耦合的网络平面架构方式及控制平面具备的全局网络视图为入侵检测技术的发展和实施带来了新的挑战,同时也提供了新的机遇。
技术实现要素:
本发明目的在于提供一种基于BP神经网络技术的网络入侵检测方法,本方法动态构建用于网络入侵检测的BP神经网络,实现了入侵检测的动态部署和灵活调整,提高软件定义网络的安全性。
为实现上述目的,本发明采用了以下技术方案,一种基于BP神经网络的软件定义网络入侵检测方法,包括如下步骤:
(1)利用软件定义网络控制平面的全局网络视图和软件定义网络的工作状态、入侵检测需求及网络安全策略,确定BP神经网络的输入层神经元数量和输出层神经元数量;
(2)根据BP神经网络的输入层神经元数量和输出层神经元数量,确定BP神经网络的隐含层神经元数量;
(3)根据BP神经网络的初始化参数构建初始BP神经网络;所述的初始参数包括输入层神经元数量、输出层神经元数量和隐含层神经元数量;
(4)对初始BP神经网络进行训练,得到用于入侵检测的BP神经网络;
(5)在当前入侵检测周期,根据软件定义网络的工作状态和负载情况,在软件定义网络中选择全部或部分网络节点进行实时的入侵检测;
(6)根据入侵检测结果完成对参与入侵检测的网络节点的数据流表配置,并通过软件定义网络的控制平面将数据流表下发到参与入侵检测的网络节点;
(7)等待进入下一入侵检测周期,将下一入侵检测周期更新为当前入侵检测周期,重复执行步骤(5)和步骤(6)。
其中,所述的步骤(4)具体包括以下步骤:
(401)在初始BP神经网络中输入训练集,并设定初始BP神经网络的初始链接权值、初始阈值和学习率;所述的训练集的训练样本个数与输入层神经元数量相同,链接权值包括输入层与隐含层之间的链接权值和隐含层与输出层之间的链接权值,阈值包括隐含层神经元的阈值和输出层神经元的阈值;
(402)根据训练集和学习率进行多次训练,输出BP神经网络各神经元之间的链接权值及阈值,得到用于入侵检测的BP神经网络。
其中,步骤(401)中初始链接权值及初始阈值是在(0,1)范围内随机设定的;η为学习率,η∈(0,1)。
其中,所述的步骤(402)具体包括步骤:
(a)根据当前参数和输入的训练样本,计算针对该训练样本的输出向量、输出层神经元的梯度项和隐含层神经元的梯度项;所述的参数包括链接权值、阈值和学习率,参数的初始值为初始链接权值、初始阈值和学习率;
(b)根据训练样本的输出向量、输出层神经元的梯度项和隐含层神经元的梯度项更新当前BP神经网络中输入层与隐含层之间的链接权值、隐含层与输出层之间的链接权值、隐含层神经元的阈值和输出层神经元的阈值;
(c)判断步骤(b)得到的各链接权值和各阈值是否满足预定收敛条件,如果满足预定收敛条件,则结束本流程;否则,返回步骤(a),进行下一轮训练过程。
其中,步骤(b)具体为:
Δviq=ηeqxi,viq=viq+Δviq
Δwqj=ηgjbq,wqj=wqj+Δwqj
Δγq=-ηeq,γq=γq+Δγq
Δθj=-ηgj,θj=θj+Δθj
式中,eq为隐含层第q个神经元的梯度项,gj为输出层第j个神经元的梯度项,bq为隐含层第q个神经元的输出,xi为输入层第i个神经元的输入,viq为输入层与隐含层之间的链接权值,wqj为隐含层与输出层之间的链接权值,γq为隐含层神经元的阈值,θj为输出层神经元的阈值,Δviq为输入层第i个神经元与隐含层第q个神经元之间链接权值的修正值,Δwqj为隐含层第q个神经元与输出层第j个神经元之间链接权值的修正值,Δγq为隐含层第q个神经元输出阈值的修正值,Δθj为输出层第j个神经元输出阈值的修正值。
其中,步骤(c)中预定收敛条件为:
其中,ε∈(0,1),为预设收敛阈值;为第k个训练样本在本轮计算中的预期输出向量中的第j个分量,为第k个训练样本在本轮计算中得到的输出向量中的第j个分量,m为输入层神经元数量、l为得到的输出向量的长度;Ek为BP神经网络在训练样本上的均方差。
其中,步骤(5)所述的入侵检测过程,具体包括以下步骤:
(501)从流经参与入侵检测的网络节点的数据中提取网络特征值向量;
(502)隐含层中的神经元接收网络特征值向量,并通过计算产生隐含层的输出结果特征值向量;
(503)输出层中的神经元接收来自于隐含层的输出结果特征值向量,并通过计算产生最终的检测结果向量。
其中,所述的步骤(502)具体为:
其中,vij为输入层神经元i与隐含层神经元j之间的链接权值,为输入层神经元i归一化后的第k个网络特征值;为隐含层中第j个神经元输出的第k个输出结果特征值,m为BP神经网络输入层神经元数量,为第k个训练样本的预期输出向量中的第j个分量。
其中,所述的步骤(503)具体为:
其中,wjl为隐含层神经元j与输出层神经元l之间的链接权值,为来自隐含层神经元的输出结果特征值;h为隐含层神经元的数量,为输出层神经元l的第k个特征变量的加权和,为输出层神经元l的检测结果特征向量中的第k个特征值。
与现有技术相比较,本发明的优点在于:
1、利用软件定义网络架构的特点,将传统网络中集成到网络系统中的入侵检测机制实现为与软件定义网络系统松耦合的应用层网络服务,通过网络控制平面的全局网络视图,动态构建用于网络入侵检测的BP神经网络,实现了入侵检测的动态部署和灵活调整。
2、作为入侵检测核心的BP神经网络能够根据网络状态动态调整参数并离线训练,避免了训练过程对软件定义网络性能的影响。
附图说明
图1为本发明方法的执行流程图。
图2为本发明方法的系统结构框图。
图3为本发明方法所采用的三层BP网络示意图。
具体实施方式
下面结合附图对本发明的实施方式进行说明。
如图1、图2和图3所示,本发明所述入侵检测方法,包括如下步骤:
(1)利用软件定义网络控制平面的全局网络视图,并根据当前软件定义网络的工作状态、入侵检测需求及网络安全策略,确定BP神经网络的下列初始参数:
根据入侵检测的特征属性,确定BP神经网络输入层神经元数量m;
根据入侵检测输出类型,确定BP神经网络输出层神经元数量n;
(2)根据BP神经网络的输入层神经元数量和输出层神经元数量,利用下式确定BP神经网络隐含层神经元数量h
其中,m为BP神经网络输入层神经元数量;n为BP神经网络输出层神经元数量;α∈[1,10],为调节常数;
(3)根据所确定的BP神经网络的初始化参数m,n和h,构建初始BP神经网络;
(4)对初始BP神经网络进行训练,得到用于入侵检测的BP神经网络;具体包括步骤:
(401)在初始BP神经网络中输入具有m个训练样本的训练集及选定的学习率,并在(0,1)范围内随机初始化BP神经网络中所有神经元之间的链接权值和阈值;
其中,训练集D={(xk,yk)},k=1,2,…,m,即输入xi拥有d个属性,输出为n维实值向量;学习率为η,η∈(0,1);
(402)根据训练集和学习率进行多次训练,输出BP神经网络各神经元之间的链接权值及阈值,最终确定用于入侵检测的BP神经网络,具体过程如下:对所有训练样本(xk,yk)∈D,重复执行以下操作:
(a)根据当前参数和输入的训练样本,利用下式计算当前训练样本的输出向量
其中,wqj为隐含层与输出层之间的链接权值,bq为隐含层第q个神经元的输出,θj为输出层神经元的阈值,为第k个训练样本在本轮计算中得到的输出向量中的第j个分量;f为Sigmoid函数。
(b)利用下式计算输出层神经元的梯度项gj:
其中,为第k个训练样本在本轮计算中的预期输出向量中的第j个分量。
(c)利用下式计算隐含层神经元的梯度项eq:
其中,l为得到的输出向量的长度;
(d)利用下式更新当前BP神经网络中的输入层与隐含层之间的链接权值viq、隐含层与输出层之间的链接权值wqj、隐含层神经元的阈值γq与输出层神经元的阈值θj:
Δviq=ηeqxi,viq=viq+Δviq
Δwqj=ηgjbq,wqj=wqj+Δwqj
Δγq=-ηeq,γq=γq+Δγq
Δθj=-ηgj,θj=θj+Δθj
其中,xi为输入层第i个神经元的输入,Δviq为输入层第i个神经元与隐含层第q个神经元之间链接权值的修正值,Δwqj为隐含层第q个神经元与输出层第j个神经元之间链接权值的修正值,Δγq为隐含层第q个神经元输出阈值的修正值,Δθj为输出层第j个神经元输出阈值的修正值。
(e)判断步骤(d)得到的各链接权值和各阈值是否满足以下条件,如果满足以下条件,则更新过程结束,进入下一阶段;否则回到(a)进行下一轮训练过程;
其中,ε∈(0,1),为选定的目标函数收敛阈值;Ek为BP神经网络在训练样本(xk,yk)上的均方差。
(5)BP网络训练结束后,在软件定义网络系统中部署入侵检测服务,在当前入侵检测周期,根据软件定义网络的当前运行状态和负载情况,选择全部或部分网络节点进行实时入侵检测;
入侵检测过程如下:
(a)软件定义网络中包含BP神经网络输入层神经元i(i=1,2,…,m)的节点,对流经该节点的数据包执行以下操作:
i.检测所有到达的数据包,并根据检测周期T内的检测结果,更新各网络特征变量值
ii.采用线性转换归一化算法归一化各网络特征变量值;
iii.将网络特征值向量发送到隐含层中的各神经元节点。
(b)BP神经网络隐含层中的神经元j(j=1,2,…,h)执行以下操作:
i.接收来自于输入层神经元i(i=1,2,…,m)的网络特征值向量
ii.对所有中的第k(k=1,2,…,d)项网络特征值进行如下计算:
其中,vij为输入层神经元i与隐含层神经元j之间的链接权值;
iii.将最终获取的输出结果特征值向量发送到输出层的各神经元;
(c)BP神经网络输出层中的神经元l(l=1,2,…,n)执行以下操作:
i.接收来自于隐含层神经元j(j=1,2,…,h)的输出结果特征值向量
ii.对所有中的第k(k=1,2,…,d)项输出结果特征值进行如下计算:
其中,wjl为隐含层神经元j与输出层神经元l之间的链接权值;检测结果向量
iii.将检测结果特征向量发送到决策执行单元。
(6)网络决策单元根据接收到的入侵检测结果确定并下发网络执行策略:
根据入侵检测结果完成对参与入侵检测的网络节点的数据流表配置,并通过软件定义网络的控制平面将数据流表下发到数据平面中的参与入侵检测的网络节点;
(7)等待进入下一入侵检测周期,将下一入侵检测周期更新为当前入侵检测周期,重复执行步骤(5)和步骤(6)。