一种面向云计算的网络入侵检测方法及系统转让专利

申请号 : CN201710152993.8

文献号 : CN106899440B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李领治厉柏伸朱艳琴孙涌杨哲

申请人 : 苏州大学

摘要 :

本发明公开了一种网络入侵检测方法及系统,通过生成用于判别网络入侵行为的伪梯度提升决策树集合;根据各伪梯度提升决策树对应的非叶子节点的分类特征,确定各伪梯度提升决策树的权重信息;分别采用伪梯度提升决策树对接收到的网络行为记录进行并行判断,得到独立判断结果;将各独立判断结果分别与对应的权重信息相乘,生成判断网络行为记录是否为网络攻击的最终结果信息。本申请具有简单易解、区分精度高、智能综合处理能力强的特点;同时,还可以在云计算环境下分布式并行生成伪梯度提升决策树,提高了决策树的动态更新运算速度,增加了IDS检测新型入侵事件实时性与准确性。

权利要求 :

1.一种网络入侵检测方法,其特征在于,包括:

生成用于判别网络入侵行为的伪梯度提升决策树集合;其中,计算伪梯度提升决策树的过程包括:采用并行的Bootstrapping抽样方式抽取多个训练数据集;计算所述训练数据集的经验熵、相对于特征的经验条件熵和基于所述特征的信息增益;

根据各伪梯度提升决策树对应的非叶子节点的分类特征,确定各所述伪梯度提升决策树的权重信息;

分别采用所述伪梯度提升决策树对接收到的网络行为记录进行并行判断,得到独立判断结果;

将各所述独立判断结果分别与对应的权重信息相乘,生成判断所述网络行为记录是否为网络攻击的最终结果信息。

2.如权利要求1所述的网络入侵检测方法,其特征在于,所述生成用于判别网络入侵行为的伪梯度提升决策树集合包括:采用并行的方式抽取多个训练数据集,所述训练数据集包含多个在网络行为日志中抽取的记录;

采用并行的方式对每个训练数据集计算伪梯度提升决策树。

3.如权利要求2所述的网络入侵检测方法,其特征在于,所述采用并行的方式对每个训练数据集计算伪梯度提升决策树包括:计算所述训练数据集的经验熵;

计算所述训练数据集相对于特征的经验条件熵;

计算所述训练数据集基于所述特征的信息增益,所述信息增益为使用所述特征分类时的所述经验条件熵与所述经验熵的偏离程度;

根据所述信息增益对所述训练数据集进行分类;

计算所述训练数据集中判别为攻击的记录数量;

根据所述记录数量与预设规则,确定各节点的赋值,将节点与所述赋值作为决策树的一个叶子节点。

4.如权利要求3所述的网络入侵检测方法,其特征在于,所述计算所述训练数据集的经验熵包括:采用 计算所述训练数据集的经验熵;其中,K为训练集D(t)的种类,第k类Dc(t,k)的样本数量为|Dc(t,k)|,|D(t)|为训练集D(t)的样本数量。

5.如权利要求4所述的网络入侵检测方法,其特征在于,所述计算所述训练数据集相对于特征的经验条件熵包括:采用

计算

所述训练数据集相对于特征的经验条件熵H(D(t)|S(j));

其中,J为特征集S中特征的数量,I为第j个特征S(j)的取值的数量;|Ds(t,i,j)|为依据I取值将训练集D(t)划分为I个子集后,第i个子集Ds(t,i,j)的样本数量。

6.如权利要求5所述的网络入侵检测方法,其特征在于,所述计算所述训练数据集基于所述特征的信息增益包括:采用 计算所述训练数据

集基于所述特征的信息增益ΔH(D(t)|S(j))。

7.如权利要求6所述的网络入侵检测方法,其特征在于,所述根据所述信息增益对所述训练数据集进行分类包括:根据所述训练数据集基于特征集所有特征的信息增益,确定信息增益值最大的一个特征S(b);

如果所述信息增益ΔH(D(t)|S(b))小于预设阈值δ,则D(t)不可以基于特征S(b)进行分类,将该集合作为伪梯度提升决策树G(t)一个叶子节点;

如果ΔH(D(t)|S(b))大于或等于所述预设阈值δ,则D(t)可以基于特征S(b)进行分类;

根据S(b)的I个取值将所述训练数据集D(t)划分为I个子集。

8.如权利要求1至7任一项所述的网络入侵检测方法,其特征在于,所述根据各伪梯度提升决策树对应的非叶子节点的分类特征,确定各所述伪梯度提升决策树的权重信息包括:采用 对各所述伪梯度提升决策树的权重信息α(t)进行确定;

其中,S(t)为G(t)分裂属性的特征集合, |S(t)|为S(t)内特征的数量,Fs(t,u)为S(t)内的一个特征S(t,u)在T个决策树上作为分裂属性出现的次数,Ds(t,u)为特征S(t,u)作为G(t)的分裂属性所在的深度。

9.一种网络入侵检测系统,其特征在于,包括:

决策树集合生成模块,用于生成用于判别网络入侵行为的伪梯度提升决策树集合;其中,计算伪梯度提升决策树的过程包括:采用并行的Bootstrapping抽样方式抽取多个训练数据集;计算所述训练数据集的经验熵、相对于特征的经验条件熵和基于所述特征的信息增益;

权值确定模块,用于根据各伪梯度提升决策树对应的非叶子节点的分类特征,确定各所述伪梯度提升决策树的权重信息;

判断模块,用于分别采用所述伪梯度提升决策树对接收到的网络行为记录进行并行判断,得到独立判断结果;

结果生成模块,用于将各所述独立判断结果分别与对应的权重信息相乘,生成判断所述网络行为记录是否为网络攻击的最终结果信息。

10.如权利要求9所述的网络入侵检测系统,其特征在于,所述决策树集合生成模块包括:并行抽取单元,用于采用并行的方式抽取多个训练数据集,所述训练数据集包含多个在网络行为日志中抽取的记录;

并行计算单元,用于采用并行的方式对每个训练数据集计算伪梯度提升决策树。

说明书 :

一种面向云计算的网络入侵检测方法及系统

技术领域

[0001] 本发明涉及网络安全与云计算技术领域,特别是涉及一种面向云计算的网络入侵检测方法及系统。

背景技术

[0002] 近年来,以网络入侵为代表的信息安全事件层出不穷,入侵者以互联网为工具窃取信息、散播木马和病毒、恶意消耗资源,给用户造成了巨大的损失,也极大得影响和破坏了互联网的进一步推广和使用。设计和使用入侵检测(IDS)方法对网络应用进行监控,及时发现和控制恶意网络入侵,成为网络安全的一个重要屏障。
[0003] 在当前的网络入侵检测技术中,基于决策树分类算法的IDS以其结构简单、结果易于理解而且区分检测精度较高等优势,一直以来都受到了普遍的关注。但是,独立的决策树忽略了属性之间的相互关系,具有组合属性的入侵事件在这类IDS中常常被漏掉。另外,一般决策树并未考虑到所选属性对后继分支及整棵树的影响,容易陷入局部最优,从而对网络正常的数据流产生误判。梯度提升决策树(GBDT)采用迭代的方法累加多棵决策树的判别结果求取最终答案,可以有效的解决一般决策树应用于IDS产生的上述问题。GBDT对于有不同的特征组合的情况拥有不同的判别式,与数据包多特征组合形成攻击的网络安全问题相符合。GBDT应用于IDS中可以智能的综合处理用户的网络行为,甚至可以根据用户的特征分析判断出训练数据集中没有出现的入侵事件,大大提升了决策树算法的入侵检测能力。
[0004] 梯度提升决策树GBDT虽然在网络入侵行为判别方面优势明显,但是它根据数据集训练生成的过程是通过迭代方式完成的,更新运算的过程难以在云计算的环境下并行实现。为了最后的决策树集成,采样运算需要不断根据前一次的迭代错误来修正本次的数据采样比例,每一轮的决策树生成运算都依赖于上一轮的关键信息。这种迭代方式应用于训练问题比较单一的IDS系统时,分布式云计算的优势不能得到发挥。另外,IDS系统需要需要训练的GBDT数量巨大,抽样数据集的中需要抽样的数据也要尽可能大,在分布式云计算环境下,GBDT算法的这种迭代抽样方式会增加处理的时间。随着云计算在网络安全领域的逐步推广,设计一种在并行分布式的环境下可以实施入侵检测判别的GBDT算法是必要的。

发明内容

[0005] 本发明的目的是提供一种网络入侵检测方法及系统,以解决现有入侵检测技术误判率高、运算速度较低的问题。
[0006] 为解决上述技术问题,本发明提供一种网络入侵检测方法,包括:
[0007] 生成用于判别网络入侵行为的伪梯度提升决策树集合;
[0008] 根据各伪梯度提升决策树对应的非叶子节点的分类特征,确定各所述伪梯度提升决策树的权重信息;
[0009] 分别采用所述伪梯度提升决策树对接收到的网络行为记录进行并行判断,得到独立判断结果;
[0010] 将各所述独立判断结果分别与对应的权重信息相乘,生成判断所述网络行为记录是否为网络攻击的最终结果信息。
[0011] 可选地,所述生成用于判别网络入侵行为的伪梯度提升决策树集合包括:
[0012] 采用并行的方式抽取多个训练数据集,所述训练数据集包含多个在网络行为日志中抽取的记录;
[0013] 采用并行的方式对每个训练数据集计算伪梯度提升决策树。
[0014] 可选地,所述采用并行的方式对每个训练数据集计算伪梯度提升决策树包括:
[0015] 计算所述训练数据集的经验熵;
[0016] 计算所述训练数据集相对于特征的经验条件熵;
[0017] 计算所述训练数据集基于所述特征的信息增益,所述信息增益为使用所述特征分类时的所述经验条件熵与所述经验熵的偏离程度;
[0018] 根据所述信息增益对所述训练数据集进行分类;
[0019] 计算所述训练数据集中判别为攻击的记录数量;
[0020] 根据所述记录数量与预设规则,确定各节点的赋值,将节点与所述赋值作为决策树的一个叶子节点。
[0021] 可选地,所述计算所述训练数据集的经验熵包括:
[0022] 采用 计算所述训练数据集的经验熵;其中,K为训练集D(t)的种类,第k类Dc(t,k)的样本数量为|Dc(t,k)|,|D(t)|为训练集D(t)的样本数量。
[0023] 可选地,所述计算所述训练数据集相对于特征的经验条件熵包括:
[0024] 采用
[0025]
[0026] 计算所述训练数据集相对于特征的经验条件熵H(D(t)|S(j));
[0027] 其中,J为特征集S中特征的数量,I为第j个特征S(j)的取值的数量;|Ds(t,i,j)|为依据I取值将训练集D(t)划分为I个子集后,第i个子集Ds(t,i,j)的样本数量。
[0028] 可选地,所述计算所述训练数据集基于所述特征的信息增益包括:
[0029] 采用 计算所述训练数据集基于所述特征的信息增益ΔH(D(t)|S(j))。
[0030] 可选地,所述根据所述信息增益对所述训练数据集进行分类包括:
[0031] 根据所述训练数据集基于特征集所有特征的信息增益,确定信息增益值最大的一个特征S(b);
[0032] 如果所述信息增益ΔH(D(t)|S(b))小于预设阈值δ,则D(t)不可以基于特征S(b)进行分类,将该集合作为伪梯度提升决策树G(t)一个叶子节点;
[0033] 如果ΔH(D(t)|S(b))大于或等于所述预设阈值δ,则D(t)可以基于特征S(b)进行分类;根据S(b)的I个取值将所述训练数据集D(t)划分为I个子集。
[0034] 可选地,所述根据各伪梯度提升决策树对应的非叶子节点的分类特征,确定各所述伪梯度提升决策树的权重信息包括:
[0035] 采用 对各所述伪梯度提升决策树的权重信息α(t)进行确定;
[0036] 其中,S(t)为G(t)分裂属性的特征集合, |S(t)|为S(t)内特征的数量,Fs(t,u)为S(t)内的一个特征S(t,u)在T个决策树上作为分裂属性出现的次数,Ds(t,u)为特征S(t,u)作为G(t)的分裂属性所在的深度。
[0037] 本发明还提供了一种网络入侵检测系统,包括:
[0038] 决策树集合生成模块,用于生成用于判别网络入侵行为的伪梯度提升决策树集合;
[0039] 权值确定模块,用于根据各伪梯度提升决策树对应的非叶子节点的分类特征,确定各所述伪梯度提升决策树的权重信息;
[0040] 判断模块,用于分别采用所述伪梯度提升决策树对接收到的网络行为记录进行并行判断,得到独立判断结果;
[0041] 结果生成模块,用于将各所述独立判断结果分别与对应的权重信息相乘,生成判断所述网络行为记录是否为网络攻击的最终结果信息。
[0042] 可选地,所述决策树集合生成模块包括:
[0043] 并行抽取单元,用于采用并行的方式抽取多个训练数据集,所述训练数据集包含多个在网络行为日志中抽取的记录;
[0044] 并行计算单元,用于采用并行的方式对每个训练数据集计算伪梯度提升决策树。
[0045] 本发明所提供的网络入侵检测方法及系统,通过生成用于判别网络入侵行为的伪梯度提升决策树集合;根据各伪梯度提升决策树对应的非叶子节点的分类特征,确定各伪梯度提升决策树的权重信息;分别采用伪梯度提升决策树对接收到的网络行为记录进行并行判断,得到独立判断结果;将各独立判断结果分别与对应的权重信息相乘,生成判断网络行为记录是否为网络攻击的最终结果信息。本申请具有简单易解、区分精度高、智能综合处理能力强的特点;同时,还可以在云计算环境下分布式并行生成伪梯度提升决策树,提高了决策树的动态更新运算速度,增加了IDS检测新型入侵事件实时性与准确性。

附图说明

[0046] 为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0047] 图1为本发明所提供的网络入侵检测方法的一种具体实施方式的流程图;
[0048] 图2为本发明所提供的网络入侵检测方法的另一种具体实施方式中采用并行的方式对每个训练数据集计算伪梯度提升决策树的过程示意图;
[0049] 图3为本发明实施例的整体构架示意图;
[0050] 图4为本发明实施例依据训练数据集D(t)生成一个伪梯度提升决策树G(t)的流程图;
[0051] 图5为本发明实施例训练集D(t)经验熵H(D(t))的计算流程图;
[0052] 图6为本发明实施例训练集D(t)相对于特征S(j)的经验条件熵H(D(t)|S(j))的计算流程图;
[0053] 图7为本发明实施例伪梯度提升决策树G(t)权重α(t)的计算流程图;
[0054] 图8为本发明实施例各个伪梯度提升决策树G(t)综合检测网络攻击的流程图;
[0055] 图9为本发明实施例在云计算SPARK平台上与随机森林方法进行的测试与比较图;
[0056] 图10为本发明实施例提供的网络入侵检测系统的结构框图。

具体实施方式

[0057] 为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0058] 本发明所提供的网络入侵检测方法的一种具体实施方式的流程图如图1所示,该方法包括:
[0059] 步骤S101:生成用于判别网络入侵行为的伪梯度提升决策树集合;
[0060] 具体地,可以采用并行的方式生成用于判别网络入侵行为的伪梯度提升决策树集合G。
[0061] 在云平台的网络行为日志D中,采用并行方式抽取T个训练数据集D(t)。抽取方法采用Bootstrapping方式,每个训练数据集合包含N条在网络行为日志中抽取的记录。依据这T个训练数据集D(t),使用云计算方式并行独立地求取T个伪梯度提升决策树G(t)。其中,以一个训练数据集为基础,按照如下方法求取一个伪梯度提升决策树G(t)。
[0062] 假设训练集D(t)可以分为K类,其中第k类Dc(t,k)的样本数量为|Dc(t,k)|。训练集D(t)的样本数量表示为|D(t)|,则D(t)的经验熵H(D(t))可以按照公式计算。
[0063] 特征集S有J个特征,其中的第j个特征S(j)有I个可能的取值。依据I取值可以将训练集D(t)划分为I个子集,其中的第i个子集Ds(t,i,j)的样本数量为|Ds(t,i,j)|。则特征S(j)相对于训练集D(t)的经验条件熵H(D(t)|S(j))可以按照公式
[0064]
[0065] 计算。
[0066] 这样可以按照公式
[0067] 得到训练集D(t)基于特征S(j)的信息增益ΔH(D(t)|S(j))。
[0068] 按照上述方法,求取D(t)基于特征集S中所有J个特征的信息增益,得到信息增益值最大的一个特征为S(b),D(t)基于S(b)的信息增益满足公式给出的条件。
[0069] 如果ΔH(D(t)|S(b))小于等于给定的阈值δ,则表示D(t)不可以基于特征S(b)分类,而S(b)是特征集S中信息增益值最大的一个特征,所以D(t)不可以基于S进行分类。D(t)为同一类,将该集合为伪梯度提升决策树G(t)一个叶子节点,返回。
[0070] 如果ΔH(D(t)|S(b))大于或者等于给定的阈值δ,则表示D(t)可以基于特征S(b)分类。根据S(b)的I个取值再将训练集D(t)划分为I个子集,计算其中样本数量最大的子集为Ds(t,a,b),即Ds(t,a,b)满足公式:
[0071]
[0072] 将Ds(t,a,b)作为训练集D(t),{S-S(b)}作为特征集S,按照上述相同的方法进行分类。用递归的方式重复上述步骤,得到一个伪梯度提升决策树G(t)。
[0073] 采用云计算并行方式对其他T-1个训练数据集D(t)使用上述相同的方法,独立生成T-1个伪梯度提升决策树G(t)。这样,用于判别网络入侵行为的伪梯度提升决策树集合G内的所有决策树G(t)并行生成完毕。
[0074] 步骤S102:根据各伪梯度提升决策树对应的非叶子节点的分类特征,确定各所述伪梯度提升决策树的权重信息;
[0075] 决策树集合G内的T个决策树G(t)将共同使用,来判别一条网络行为是否为攻击。各个G(t)的判别结果可能不同,当它们的判别结果互相冲突时候,需要设定各个树G(t)的权重α(t)。依据树G(t)的不同权重综合计算不同的判别结果,确定网络行为是否为攻击。
[0076] 非叶子节点是数据集进行分裂的节点,该节点分类所使用的特征即为该节点的分裂属性,决策树的权重α(t)由整个树的分裂属性决定。假定作为G(t)分裂属性的特征为集合为S(t),则S(t)为特征集S的子集,即 S(t)内特征的数量为|S(t)|,S(t)内的某一个特征S(t,u)在T个决策树上作为分裂属性出现的次数为Fs(t,u)。S(t,u)对G(t)分裂属性的影响还与它所在的位置有关,不同深度的分裂属性提供的信息熵增益不同,越靠近根节点分裂属性权重越大。若特征S(t,u)作为G(t)的分裂属性所在的深度为Ds(t,u),则决策树G(t)的权重α(t)可以用公式 进行求解。
[0077] 各决策树权重α(t)的计算过程相互对立,也采用云计算的方式并行求解。
[0078] 步骤S103:分别采用所述伪梯度提升决策树对接收到的网络行为记录进行并行判断,得到独立判断结果;
[0079] 步骤S104:将各所述独立判断结果分别与对应的权重信息相乘,生成判断所述网络行为记录是否为网络攻击的最终结果信息。
[0080] 决策树集合G内的T个决策树G(t)及其权重,分别驻守在云平台的T个虚拟计算设备上,对接收的网络行为记录进行并行独立的判断,然后将判断结果乘以权重α(t)后交给中心虚拟设备综合判断,得出最终判断结果。若x为一条网络行为记录,通过决策树G(t)后的判别结果为R(t,x),则R(t,x)的可能取值有三个:+1(表示判别为网络攻击)、-1(表示判别为不是网络攻击)、0(表示不能判别)。所有决策树G(t)并行独立判断完毕后,使用公式综合判断该条网络行为记录x是否为网络攻击。
[0081] 本发明所提供的网络入侵检测方法,通过生成用于判别网络入侵行为的伪梯度提升决策树集合;根据各伪梯度提升决策树对应的非叶子节点的分类特征,确定各伪梯度提升决策树的权重信息;分别采用伪梯度提升决策树对接收到的网络行为记录进行并行判断,得到独立判断结果;将各独立判断结果分别与对应的权重信息相乘,生成判断网络行为记录是否为网络攻击的最终结果信息。本申请具有简单易解、区分精度高、智能综合处理能力强的特点;同时,还可以在云计算环境下分布式并行生成伪梯度提升决策树,提高了决策树的动态更新运算速度,增加了IDS检测新型入侵事件实时性与准确性。
[0082] 在上述实施例的基础上,本发明所提供的网络入侵检测方法生成用于判别网络入侵行为的伪梯度提升决策树集合可以具体包括:
[0083] 采用并行的方式抽取多个训练数据集,所述训练数据集包含多个在网络行为日志中抽取的记录;
[0084] 采用并行的方式对每个训练数据集计算伪梯度提升决策树。
[0085] 具体地,参照图2,采用并行的方式对每个训练数据集计算伪梯度提升决策树的过程又可以进一步包括:
[0086] 步骤S201:计算所述训练数据集的经验熵;
[0087] 作为一种具体实施方式,可以采用 计算所述训练数据集的经验熵;其中,K为训练集D(t)的种类,第k类Dc(t,k)的样本数量为|Dc(t,k)|,|D(t)|为训练集D(t)的样本数量。
[0088] 步骤S202:计算所述训练数据集相对于特征的经验条件熵;
[0089] 具体地,可以采用
[0090]
[0091] 计算所述训练数据集相对于特征的经验条件熵H(D(t)|S(j));
[0092] 其中,J为特征集S中特征的数量,I为第j个特征S(j)的取值的数量;|Ds(t,i,j)|为依据I取值将训练集D(t)划分为I个子集后,第i个子集Ds(t,i,j)的样本数量。
[0093] 步骤S203:计算所述训练数据集基于所述特征的信息增益,所述信息增益为使用所述特征分类时的所述经验条件熵与所述经验熵的偏离程度;
[0094] 采用 计算所述训练数据集基于所述特征的信息增益ΔH(D(t)|S(j))。
[0095] 步骤S204:根据所述信息增益对所述训练数据集进行分类;
[0096] 根据所述训练数据集基于特征集所有特征的信息增益,确定信息增益值最大的一个特征S(b);
[0097] 如果所述信息增益ΔH(D(t)|S(b))小于预设阈值δ,则D(t)不可以基于特征S(b)进行分类,将该集合作为伪梯度提升决策树G(t)一个叶子节点;
[0098] 如果ΔH(D(t)|S(b))大于或等于所述预设阈值δ,则D(t)可以基于特征S(b)进行分类;根据S(b)的I个取值将所述训练数据集D(t)划分为I个子集。
[0099] 步骤S205:计算所述训练数据集中判别为攻击的记录数量;
[0100] 步骤S206:根据所述记录数量与预设规则,确定各节点的赋值,将节点与所述赋值作为决策树的一个叶子节点。
[0101] 图3是本发明实施例一种面向云计算的网络入侵检测方法的系统构架,该构架基于PaaS云计算平台设计。下面基于该系统架构,对本发明实施例所提供的网络入侵检测方法进行进一步详细阐述。各个虚拟节点使用并行方式在网络行为日志D中独立抽取N条记录,组成训练数据集D(t),抽取方法采用Bootstrapping方式。每个虚拟节点以自己的训练数据集合为依据,在云平台上并行独立的生成一个伪梯度提升决策树G(t)。综合判定节点依据各个决策树的分裂属性的频率与层次,计算各个伪梯度提升决策树G(t)的权重α(t)。决策树集合G生成完毕后,就可以对接收到的网络行为记录进行实时判定。各个决策树G(t)将并行判定后的结果乘以权重α(t),提交给综合判定节点,确定该网络行为是否为网络入侵。
[0102] 图4是本发明实施例一种面向云计算的网络入侵检测方法中,任意虚拟节点t依据一个训练数据集D(t)生成一个伪梯度提升决策树G(t)的方法示意图,以下通过具体步骤进行详细说明:
[0103] 步骤S301,完成一系列参数的初始化。主要包括:给训练数据集D(t)、特征集S中的所有元素赋值,指定阈值δ、λ0、λ1的值,将循环变量j的初始值置为1、信息增益最大值Δ的初始值置为0。
[0104] 步骤S302,计算训练集D(t)的经验熵H(D(t))。H(D(t))反应了训练样本集最终分类结果的信息熵,它是经验熵计算的参考依据,图5给出了它的详细计算过程。
[0105] 步骤S303,计算训练集D(t)相对于特征S(j)的经验条件熵H(D(t)|S(j))。H(D(t)|S(j))反应了训练样本集使用特征S(j)进行分类时,所得结果的信息熵,图6给出了它的详细计算过程。
[0106] 步骤S304,计算训练集D(t)基于特征S(j)的信息增益ΔH(D(t)|S(j))。ΔH(D(t)|S(j))反应了使用特征S(j)分类时的经验条件熵H(D(t)|S(j))与经验熵H(D(t))的偏离程度。它的值越大,说明使用S(j)分类后各个样本之间的差别越大,再进行分类的必要性越大。ΔH(D(t)|S(j))是H(D(t)|S(j))与H(D(t))之差,使用公式进行计算。
[0107] 步骤S305,判别ΔH(D(t)|S(j))是否大于当前的信息增益最大值Δ。如果成立,则将Δ取ΔH(D(t)|S(j))的值,并将j的值记录到变量b中,然后转到步骤S306;否则,直接转到步骤S306。
[0108] 步骤S306,判断特征集S中的J个特征是否使用完毕。如果成立,则转到步骤S307;否则,j=j+1,取下一个特征,转到步骤S303循环执行。
[0109] 步骤S307,判断信息增益最大值ΔH(D(t)|S(b))是否小于等于给定的阈值δ。如果成立,则说明该训练集D(t)各个样本之间的差别不大了,没有必要进行分类,转到步骤S312;否则,说明D(t)需要进行分类,转到步骤S308。
[0110] 步骤S308,将S(b)作为决策树G(t)的一个非叶子节点值存储。决策树非叶子节点的值就是该节点进行分支所使用的判断依据,即进行分类所使用的特征S(b)。
[0111] 步骤S309,将D(t)使用增益最大的特征S(b)划分成多个子集。若特征S(b)的可选值数量是I,则子集的数量也为I,其中的第i个子集表述为Ds(t,i,b)。将相关参数初始化i=1,|Ds(t,a,b)|=0。
[0112] 步骤S310,求D(t)的所有I个子集中样本数量最大的子集为Ds(t,a,b)。判断第i个子集的样本数量|Ds(t,i,b)|是否大于|Ds(t,a,b)|。如果成立,则|Ds(t,a,b)|=|Ds(t,i,b)|,并将i的值记录到变量a中,然后循环本步骤,计算下一个子集的样本数量;否则直接循环本步骤。所有I个子集循环完毕后,得到样本数量最大的子集为Ds(t,a,b),转到步骤310。
[0113] 步骤S311,将Ds(t,a,b)作为训练集D(t),将{S-S(b)}作为特征集S,重复上述步骤,用递归的方式G(t)的下一级子树。首先,重新进行参数初始化,即令D(t)=Ds(t,a,b),S={S-S(b)},J=J-1,j=1,Δ=0。然后,再转到步骤S302。
[0114] 步骤S312,计算D(t)中判别为攻击的记录数量h。判断训练集D(t)中的每一条网络行为记录,将其中是网络攻击的记录进行统计,得到网络攻击的数量h。
[0115] 步骤S313,判断h/|D(t)|的值。若该值大于λ1,表明训练集D(t)中攻击记录比较多,节点赋值为+1,判别为网络攻击行为;若该值小于λ0,表明训练集D(t)中攻击记录比较少,节点赋值为-1,判别为非网络攻击行为;若该值大于λ0且小于λ1,表明训练集D(t)中攻击记录难以归类,节点赋值为0,该特征进行网络行为判断的依据时结果不明确,为疑似攻击。
[0116] 步骤S314,将节点连同其所赋的值作为决策树G(t)的一个叶子节点直接返回。
[0117] 图5是本发明实施例一种面向云计算的网络入侵检测方法与系统中,训练集D(t)的经验熵H(D(t))的计算方法示意图(即图4的步骤S302),以下通过具体步骤进行详细说明:
[0118] 步骤S3021,统计训练集D(t)的样本数量|D(t)|。训练数据集D(t)在步骤S301中已经赋值,记录D(t)中的元素数量到|D(t)|即可。
[0119] 步骤S3022,获取D(t)分出的K个类别,得到其K个子集Dc。各个子集Dc(t,k)是样本训练集D(t)的最终分类结果,本发明所得的分类结果就是以Dc为标准进行衡量和训练的。
[0120] 步骤S3023,参数初始化。将信息熵初值sum置为0,将k值置为1,为接下来的运算做好准备。
[0121] 步骤S3024,计算属于第k类子集的样本在训练集D(t)中的比例r(k)。先统计第k类子训练集Dc(t,k)的样本数量|Dc(t,k)|,然后计算|Dc(t,k)|与|D(t)|的比例,即:r(k)=|Dc(t,k)|/|D(t)|。
[0122] 步骤S3025,计算累加系数的相反数-u。根据公式(1),这里的累加系数u相反数可以根据上一步骤中的r(k)求得,即:-u=r(k)*log r(k)。
[0123] 步骤S3026,将系数u累加到sum中。为了进行累加求和,令sum=sum+u。然后将循环系数再累加1次,即:k=k+1。
[0124] 步骤S3027,检查k是否大于K。如果成立,表示K个子集Dc已经全部计算完毕,直接转到步骤S1028;否则,转到步骤S3024。
[0125] 步骤S3028,将sum作为训练集D(t)的经验熵值H(D(t))返回。
[0126] 图6是本发明实施例一种面向云计算的网络入侵检测方法与系统中,训练集D(t)相对于特征S(j)的经验条件熵H(D(t)|S(j))的计算方法(即图4的步骤S303),以下通过具体步骤进行详细说明:
[0127] 步骤S3031,参数初始化。这里S(j)可能的取值有I个,则先准备I个训练集的子集Ds,并每个子集Ds(t,i,j)都置为空;还要将循环系数i、e等的初值都设置为1。
[0128] 步骤S3032,判断训练集D(t)中的第e个元素的特征S(j)值d(e)|s(j)=s(i,j)是否成立。d(e)表示训练集D(t)中的第e个元素,d(e)|s(j)表示该元素的特征S(j)的值,s(i,j)表示特征S(j)的第i个取值。如果成立,则转到步骤S3033;否则,跳过S3033,直接转到步骤S3034。
[0129] 步骤S3033,令Ds(t,i,j)=Ds(t,i,j)+d(e)。该步骤表示将d(e)添加到子集Ds(t,i,j)中,即d(e)添加到训练集D(t)按照特征S(j)分类的第i个子集Ds(t,i,j)中。
[0130] 步骤S3034,判断循环系数e是否小于D(t)中的元素数量|D(t)|。如果成立,表示集合中的所有元素都做了判别,符合步骤S3032中的判别条件的元素都放入到了子集Ds(t,i,j)中,转到步骤S3035;否则,表示D(t)中还有元素,将循环系数e累加1次,即e=e+1,转到步骤S3032。
[0131] 步骤S3035,判断循环系数i是否小于S(j)的可能取值数量I。如果成立,则表示S(j)的所有可能取值已经判断完毕,D(t)中的所有元素都按照特征S(j)放入到相应子集Ds中,令循环系数i置为初值1,累加和sum置为初值0,转到步骤S3036;否则,表示S(j)还有取值未做判断,则循环系数i累加1次,即i=i+1,转到步骤S3032。
[0132] 步骤S3036,计算属于第i类子集Ds(t,i,j)的样本在训练集D(t)中的比例r(i)。先统计依旧特征S(j)分类后第i个子集Ds(t,i,j)的样本数量|Ds(t,i,j)|,然后计算|Ds(t,i,j)|与|D(t)|的比例,即:r(i)=|Ds(t,i,j)|/|D(t)|。
[0133] 步骤S3037,计算累加系数v。根据公式
[0134]
[0135] 这里的累加系数v可以根据上一步骤中的r(i)与步骤S302中的经验熵H(D(t))求得,即:v=r(i)*H(D(t))。
[0136] 步骤S3038,将系数v累加到sum中。为了进行累加求和,令sum=sum+v。然后将循环系数再累加1次,即:i=i+1。
[0137] 步骤S3039,检查i是否大于I。如果成立,表示I个子集Ds已经全部计算完毕,直接转到步骤S3030;否则,转到步骤S3036。
[0138] 步骤S3030,将sum作为训练集D(t)相对于特征S(j)的经验条件熵H(D(t)|S(j))返回。
[0139] 图7是本发明实施例一种面向云计算的网络入侵检测方法与系统中,G中各个伪梯度提升决策树G(t)的权重α(t)的计算方法示意图,以下通过具体步骤进行详细说明:
[0140] 步骤S401,初始化数组L(t,u),并令参数t=1。计算权重α(t)前,先要将决策树G(t)的非叶子节点值遍历出来,放到数组L(t,u)中。数组L(t,u)中存放的元素是一个包括.s和.layer两个分量的结构体,L(t,u).s分量的类型是特征,表示非叶子节点存放的特征值;L(t,u).layer该节点在G(t)上的深度。L(t,u)数组初始化后,各个元素的两个分量都被置为0。
[0141] 步骤S402,初始化函数Trav(G(t),j),并令参数u,j=1。Trav(G(t),j)是使用递归方法遍历G(t)的函数,j是子树根节点在G(t)上的深度,这里G(t)根节点的深度为1,u是循环系数。该函数在遍历G(t)的过程中,将非叶子节点的值和深度,分别存放到数组L(t,u)相应元素的.s和.layer两个分量中。
[0142] 步骤S403,开始执行函数Trav(G(t),j),判断当前节点是否为非叶子节点。如果成立,则转到步骤S404;否则,该函数直接返回。
[0143] 步骤S404,L(t,u).s=Node,L(t,u).layer=j;u=u+1,j=j+1。即将当前节点所存储的特征值赋给分量L(t,u).s,当前j值赋给分量L(t,u).layer,并将循环系数加1。
[0144] 步骤S405,函数递归遍历左子树,即使执行函数Trav(G(t)->left,j)。
[0145] 步骤S406,函数递归遍历右子树,即使执行函数Trav(G(t)->right,j)。
[0146] 函数Trav(G(t),j)执行完毕,决策树G(t)也就遍历完毕了,非叶子节点的值和深度存放到数组L中。
[0147] 步骤S407,判断t
[0148] 步骤S408,为执行权重计算,重新进行参数初始化,令循环系数u=1,累加和sum=0。
[0149] 步骤S409,统计数组L中值与L(t,u).s相同的元素数量Fs。任意特征在一个树G(t)中最多出现一次,所以Fs小于等于T。只要在数组L的一行中查找到这个特征,Fs加1,然后在下一行中查找;如果该行中没有找到这个特征,Fs就不需要加1了。
[0150] 步骤S410,将L(t,u).layer赋值给Ds。.layer向量中存储的即为该节点的深度,直接赋值给Ds即可。
[0151] 步骤S411,根据公式 将Fs/(Ds*T)累加到求和参数sum中。
[0152] 步骤S412,判断当前元素是否是L中第t行最后的元素。当该元素为最后元素时,下一个元素的.layer分量为0。如果成立,则转到步骤S413;否则,令u=u+1,转到步骤S409。
[0153] 步骤S413,α(t)=sum,即当前sum值即为G(t)权重α(t)的值。
[0154] 步骤S414,判断t
[0155] 步骤S415,将α(t)作为计算结果返回,所有决策树G(t)的权重计算完毕。
[0156] 图8是本发明实施例一种面向云计算的网络入侵检测方法与系统中,接收到一条网络行为记录x后,通过各个伪梯度提升决策树G(t)综合判断其是否为网络攻击的方法示意图,以下通过具体步骤进行详细说明:
[0157] 步骤S501,云平台接收到一条网络行为记录x后,进行参数初始化,令t=1,累加和sum=0。
[0158] 步骤S502,使用决策树G(t)对x进行判别,得到结果为R(t,x)。网络行为x到达G(t)后,从根节点开始,依据各个非叶子节点上的特征逐级进行判断,直到到达叶子节点。所得到的叶子节点值:+1、0或-1,即为判别结果R(t,x)的值。
[0159] 步骤S503,计算累加系数β(t),根据公式 该系数值即为α(t)*R(t,x)。
[0160] 步骤S504,判断t
[0161] 步骤S505,所有决策树的判别结果求解完毕,将T个累加系数β(t)全部累加求和,然后取整,得到结果即为最终判别结果。如果最终判别结果大于等于+1,则网络行为判别为攻击;如果最终判别结果小于等于-1,则网络行为判别为非攻击;如果最终判别在-1和+1之间,则网络行为判别为疑似攻击。
[0162] 步骤S506,将最终的综合判别结果返回,转到步骤S501,对下一条网络行为进行判断。
[0163] 上述所有使用循环方式进行的伪梯度提升决策树G(t)生成、权重α(t)计算、多决策树网络行为判别等过程,各运算之间相互独立,都可以使用云计算方式并行实现。
[0164] 图9是本发明的实施例的一种面向云计算的网络入侵检测方法与系统,在云计算SPARK平台上与随机森林方法进行的比较与测试。本测试中将网络入侵行为指令细分为13个小类,将数据向量表示为[hostid,uid,pid,commandfile,calldirectory,cmd1Vec,cmd2Vec,...,cmd13Vec,labelid],分别代表用户登录IP、Linux主机用户id、进程id、调用程序主目录、用户当前工作目录、以及13种对应的命令向量(表示用户执行过的命令行为)和类别标签。
[0165] 本发明的伪梯度提升决策树算法与随机森林法和都采用Bootstrapping抽样,形成用于训练的数据集和用于验证的袋外数据集,并分别在不同数据规模上进行多次测试。实验比较RF和PBDT在分配不同迭代次数的情况下,进行了10次测试,取得平均值作为实验结果。图9中两种算法都采用了不同的迭代次数,可以看出:在使用阈值迭代,迭代次数达到一定值后,本发明在网络行为事务量大于18万件以后,才会有较少的误差率;在网络行为事务量较少的时候,本发明的优势得不到展示。在决策树充分迭代后,本发明充分利用不同弱决策树之间的经验,从而达到加速学习的效果,误差下降速度明显快于随机森林法,并在随机森林法前约1.5个训练数据级别就达到拟合状态。本发明在网络行为事务量较小时,袋外误差的波动范围也较大,随着数据量规模增大,误差率不断减小。随机森林决策树之间信息不共享,训练数据量增大对随机森林误差率的稳定性没有影响;而对于本发明,随着网络行为事务量的提升,在拥有足够迭代次数时,目标函数的个数得到减小,误差率下降速率要比随机森林快。
[0166] 综上所述,本发明实施例通过伪梯度提升决策树算法,减少了网络行为判断的误差率,提高了入侵检的准确率。同时,该方法在云计算平台上实施,并行独立的生成各个决策树,利用各决策树并行对网络行为进行判断,大大减少了决策树生成、更新和网络入侵检测的时间,提高了系统应用部署的可扩展性。
[0167] 下面对本发明实施例提供的网络入侵检测系统进行介绍,下文描述的网络入侵检测系统与上文描述的网络入侵检测方法可相互对应参照。
[0168] 图10为本发明实施例提供的网络入侵检测系统的结构框图,参照图10网络入侵检测系统可以包括:
[0169] 决策树集合生成模块100,用于生成用于判别网络入侵行为的伪梯度提升决策树集合;
[0170] 权值确定模块200,用于根据各伪梯度提升决策树对应的非叶子节点的分类特征,确定各所述伪梯度提升决策树的权重信息;
[0171] 判断模块300,用于分别采用所述伪梯度提升决策树对接收到的网络行为记录进行并行判断,得到独立判断结果;
[0172] 结果生成模块400,用于将各所述独立判断结果分别与对应的权重信息相乘,生成判断所述网络行为记录是否为网络攻击的最终结果信息。
[0173] 作为一种具体实施方式,本发明所提供的网络入侵检测系统中,所述决策树集合生成模块可以具体包括:
[0174] 并行抽取单元,用于采用并行的方式抽取多个训练数据集,所述训练数据集包含多个在网络行为日志中抽取的记录;
[0175] 并行计算单元,用于采用并行的方式对每个训练数据集计算伪梯度提升决策树。
[0176] 本实施例的网络入侵检测系统用于实现前述的网络入侵检测方法,因此网络入侵检测系统中的具体实施方式可见前文中的网络入侵检测方法的实施例部分,例如,决策树集合生成模块100,权值确定模块200,判断模块300,结果生成模块400,分别用于实现上述网络入侵检测方法中步骤S101,S102,S103和S104,所以,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再赘述。
[0177] 本发明与现有的网络入侵检测技术相比,主要有以下几个优点:
[0178] (1)减少了网络入侵检测的时间。本发明中的所有伪梯度提升决策树无论生成还是工作,都通过云计算方式并行完成。无论训练集多大,在云平台上都可以在一个决策树的生成周期内完成所有决策树的训练,所有决策树也在一个判断周期内同时完成一条网络行为记录的判断。与使用顺序生成多个决策树,通过迭代累加方法进行网络入侵判断的GBDT相比,本发明大大减少了网络入侵检测的反应时间。
[0179] (2)提高了网络入侵检测的准确性。本发明中,入侵检测不是使用一个决策树判别,而是使用一个伪梯度提升决策树的集合综合判别完成。多个不同的伪梯度提升决策树使用信息熵相互关联,在云平台上并行生成,其准确性高于多个完全独立的决策树,其数量又不像GBDT那样会受到运算时间的限制。伪梯度提升决策树集合生成时间短,可以根据网络最新状况不断更新训练集,以更新集合内的决策树。使用大数量动态更新的伪梯度提升决策树进行入侵检测,有效提高了网络行为判断的准确性。
[0180] (3)有利于IDS在不同网络上的部署。本发明中,所有决策树在云平台上并行生成、更新和判别,对单个物理设备的运算性能没有很高要求,集合中的决策树数量由用户根据自身云平台的运算能力决定。用户对IDS检测准确性要求越高,决策树数量和云平台的节点数量就要越多。本发明与云平台的弹性部署能力相适应,有利于IDS在不同需求和性能的网络上部署。
[0181] 本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0182] 专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0183] 结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
[0184] 以上对本发明所提供的网络入侵检测方法以及系统进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。