首页> 中国专利> 一种基于熵和动态线性关系的多级流量异常检测方法

一种基于熵和动态线性关系的多级流量异常检测方法

摘要

本发明涉及一种基于熵和动态线性关系的多级流量异常检测方法;通过分析大量的数据发现属性间的线性关系,对熵值变化程度处于一级阈值和二级阈值之间的时间点进行动态线性关系的检测,降低了实时检测的时延,而分析熵值的变化方向可以识别异常的种类。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-02-21

    授权

    授权

  • 2019-07-23

    实质审查的生效 IPC(主分类):H04L29/06 申请日:20171220

    实质审查的生效

  • 2019-06-28

    公开

    公开

说明书

技术领域

本发明涉及数据传输的技术领域,特别是涉及一种基于熵和动态线性关系的多级流量异常检测方法。

背景技术

目前,分析传输系统中传输的流量,及时检测出系统中存在的异常流量是保障系统安全稳定运行的基础,对流量异常检测进行了大量的研究,现有技术为两种:一是通过历史数据训练并建立网络异常的行为模式,通过分析实时网络流量是否与异常行为模式相匹配来判定网络中是否发生了异常;二是从时间序列的角度出发,观察预先定义的网络流量异常指标的是否在时空域上超过了正常的范围来判定异常的是否发生。由于使用第一种建立的方法只能检测到现有的异常类型,当新异常类型出现时无法检测出,因此局限性较大。

由于网络中的数据量巨大,保证流量异常检测方法的实时性和准确性是研究的重点和难点,而传输系统对实时性的要求比其他系统更高,此外,准确的判定异常的种类也是异常检测方法的要求之一;基于第二种方法,在提高流量异常检测方法的实时性和准确性方面做了大量的研究,忽略了异常种类的判定。

发明内容

本发明为克服上述所述的不足,提供一种提高了异常检测方法的实时性和准确性的基于熵和动态线性关系的多级流量异常检测方法。

为解决上述技术问题,本发明采用的技术方案是:

一种基于熵和动态线性关系的多级流量异常检测方法,包括以下步骤:

S1.设定时间片大小T和时间窗口大小N;计算时间窗口和当前时间点t的流量集合熵值四元组Ht

S2.对熵值序列进行一阶差分计算,差分处理序列定义为H′t

S3.基于步骤S2,设定一级阈值和二级阈值;

S4.判断熵值四元组相对于时间窗口内的N个差分熵值四元组的差值是否超过一级阈值;若是,则进行步骤S8,否则进行步骤S5;

S5.判断熵值四元组相对于时间窗口内的N个差分熵值四元组的差值是否超过二级阈值;若是,则进行步骤S6,否则进行步骤S7;

S6.动态建立四元组之间的线性关系,并判断时间点t时熵值是否偏离线性关系,若是,则进行步骤S8,否则进行步骤S7;

S7.检测当前时间无异常,进行步骤S9;

S8.根据熵值四元组中的分量变化方向识别出异常类型;

S9.滑动时间窗口,进行下一个时间点检测。

在上述方案中,首先设定时间片大小T和时间窗口大小N;计算时间窗口和当前时间点t的流量集合熵值四元组;对熵值序列进行一阶差分计算;如何,设定一级阈值和二级阈值;判断熵值四元组相对于时间窗口内的N个差分熵值四元组的差值是否超过一级阈值;再进一步判断熵值四元组相对于时间窗口内的N个差分熵值四元组的差值是否超过二级阈值;接下来,动态建立四元组之间的线性关系,并判断时间点t时熵值是否偏离线性关系;再检测当前时间无异常,并根据熵值四元组中的分量变化方向识别出异常类型;通过滑动时间窗口,进行下一个时间点检测;通过设定两级动态阈值来提高检测率,降低误检率,并通过分析大量的数据发现属性间的线性关系,对熵值变化程度处于一级阈值和二级阈值之间的时间点进行动态线性关系的检测,降低了实时检测的时延,而分析熵值的变化方向可以识别异常的种类。

优选的,所述的熵值四元组为IP报头中的四种属性的熵值,包括源地址、源端口、目的地址、目的端口的熵值;

所述的步骤S1详细如下:

设定时间片大小T和时间窗口大小N,在时间点t上,聚合流St上的熵值四元组定义为:

Ht=(Hsa,t,Hsp,t,Hda,t,Hdp,t);

其中,Hsa,t、Hsp,t、Hda,t、Hdp,t分别表示源地址、源端口、目的地址、目的端口的熵值。

优选的,所述的源地址的熵值定义为:

其中,nsa为聚合流中流量的总数,Pisa,t为相应源地址出现的概率;

所述的源端口的熵值定义为:

其中,nsp为聚合流中流量的总数,Pisp,t为相应源地址出现的概率;

所述的目的地址的熵值定义为:

其中,nda为聚合流中流量的总数,Pida,t为相应源地址出现的概率;

所述的目的端口的熵值定义为:

其中,ndp为聚合流中流量的总数,Pidp,t为相应源地址出现的概率。

优选的,所述的步骤S2具体如下:

对熵值序列进行一阶差分处理,处理后的序列表示为H′t,其表达式如下:

H′t=Ht-Ht-1

其中,Ht表示时间点t的流量集合熵值四元组,Ht-1表示时间点t-1的流量集合熵值四元组。

优选的,步骤S3具体如下:

计算时间窗口内差分熵值序列的平均值和标准差,作为设定阈值的标准;其中,差分熵值序列的平均值和标准差分别表示为:

一阶差分熵值四元组的平均值表示为:

一阶差分熵值四元组的方差表示为:

其中,设定时间点t上的两级动态阈值λt=(λt1t2),其中,一级阈值设定为三倍标准差,二级阈值设定为两倍标准差;具体分别表示为:λt1=±3δ′t,λt2=±2δ′t

优选的,所述的时间窗口内的N个差分熵值四元组的差值表示为:

ΔHt′=Ht′-Et′=(Hsa,t′,Hsp,t′,Hda,t′,Hdp,t′)-(Esa,t′,Esp,t′,Eda,t′,Hdp,t′)=(ΔHsa,t′,ΔHsp,t′,ΔHda,t′,ΔHdp,t′)

判断熵值四元组的差值与一级阈值与二级阈值的关系,进行相应的步骤操作,其中,基于熵值四元组的差值定义报警触发四元组定义:

alarm(Ht)=(alarm(Hsa,t),alarm(Hsp,t),alarm(Hda,t),alarm(Hdp,t));

其中,alarm(Hsa,t)表示源地址熵值报警触发函数,alarm(Hsp,t)表示源端口熵值报警触发函数,alarm(Hda,t)表示目的地址熵值报警触发函数,alarm(Hdp,t)表示目的端口熵值报警触发函数;

其中alarm(Hsa,t)的定义如下:

上式中δsa,t′表示δ′t中源地址分量,alarm(Hsa,t)=±2,说明源地址熵值变化程度超出了λt1的范围;alarm(Hsa,t)=±1,说明源地址熵值变化程度介于λt1与λt2之间;alarm(Hsa,t)=0,说明时间点t的源地址熵值没有出现明显的波动,不同的异常类型,会引起不同的源地址熵值变化方向,为了方便判断时间点t上出现的是何种异常,设定熵值若相比前N个时间点增加,符号为正,若减少,符号为负;

其中alarm(Hsp,t)的定义如下:

上式中δsp,t′表示δ′t中源端口分量,alarm(Hsp,t)=±2,说明源端口熵值变化程度超出了λt1的范围;alarm(Hsp,t)=±1,说明源端口熵值变化程度介于λt1与λt2之间;alarm(Hsp,t)=0,说明时间点t的源端口熵值没有出现明显的波动,不同的异常类型,会引起不同的源端口熵值变化方向,为了方便判断时间点t上出现的是何种异常,设定熵值若相比前N个时间点增加,符号为正,若减少,符号为负;

其中alarm(Hda,t)的定义如下:

上式中δda,t′表示δ′t中目的地址分量,alarm(Hda,t)=±2,说明目的地址熵值变化程度超出了λt1的范围;alarm(Hda,t)=±1,说明目的地址熵值变化程度介于λt1与λt2之间;alarm(Hda,t)=0,说明时间点t的目的地址熵值没有出现明显的波动,不同的异常类型,会引起不同的目的地址熵值变化方向,为了方便判断时间点t上出现的是何种异常,设定熵值若相比前N个时间点增加,符号为正,若减少,符号为负;

其中alarm(Hdp,t)的定义如下:

上式中δdp,t′表示δ′t中目的端口分量,alarm(Hdp,t)=±2,说明目的端口熵值变化程度超出了λt1的范围;alarm(Hdp,t)=±1,说明目的端口熵值变化程度介于λt1与λt2之间;alarm(Hdp,t)=0,说明时间点t的目的端口熵值没有出现明显的波动,不同的异常类型,会引起不同的目的端口熵值变化方向,为了方便判断时间点t上出现的是何种异常,设定熵值若相比前N个时间点增加,符号为正,若减少,符号为负。

优选的,所述的线性关系具体如下:

分析正常情况下大量的历史流量,源地址的熵值和目的地址的熵值具有正线性关系,源端口的熵值和目的端口的熵值之间具有负线性关系,且随时时间的变化,线性关系会发生变化;为了保证线性关系中参数αt和βt的实时性,提高检测率,本发明采用动态的方式设定αt和βt,时间窗口设定为N,当前检测的时间点为t,假设t之前的N个时间点内不存在异常流量,对该N个时间点的熵值建立线性关系,具体如下:

计算源地址和目的地址熵值的线性关系,设时间点t建立的线性关系定义为:

Hsa,t=αt·Hda,ttt

其中

计算参数αt和βt的值,根据建立的线性关系求出的熵值即为线性预测值当观测值与预测值之差的平方和为最小值时,得到的最佳的线性模型;设观测值与预测值之差的平方和记为Q:

其中,Hsa,t′表示根据线性关系得出的在时间窗口内的源地址熵值;t-1≥t′≥t-N,因Q为非负值,所以Q的极小值即为最小值,分别对αt和βt求一阶偏导可得:

估计出αt和βt后,计算出方差大小:

设定判断偏离线性关系的阈值为θt=±3δt;当时间点t的熵值实际值与根据线性关系得出的预测值之间的差异超过所设定的阈值范围时,判断时间点t存在异常流量。

优选的,所述的步骤S9具体如下:

时间窗口向前滑动,其中,时间窗口的滑动分为两种情况:

1、当前时间点t不存在异常

当检测时间点t+1时,若时间点t不存在异常,那么时间窗口向前滑动一个时间点,滑动后的时间窗口内的N个一阶差分熵值四元组作为检测时间点t+1是否存在异常的基准。

2、当前时间点t存在异常

若当前检测到时间点t存在异常,为了避免时间窗口内的正常模式被异常点破坏,此时时间窗口不再向前滑动,依旧使用时间点t-N至时间点t-1的一阶差分熵值四元组为时间点t+1设定阈值;若时间点t+1不存在异常,时间窗口的右边界向右滑动两个时间点,左边界向左滑动一个时间点,窗口内不包含时间点t的值;若时间点t+1存在异常,时间窗口仍然不向前滑动。

与现有技术相比,本发明的有益效果是:本方案通过分析大量的数据发现属性间的线性关系,对熵值变化程度处于一级阈值和二级阈值之间的时间点进行动态线性关系的检测,降低了实时检测的时延,而分析熵值的变化方向可以识别异常的种类。

附图说明

图1为一种基于熵和动态线性关系的多级流量异常检测方法的流程示意图。

图2为时间窗口滑动方式的示意图。

图3为熵值四元组的熵值序列的示意图。

图4为注入攻击流量后熵值四元组的熵值序列的示意图。

图5为注入攻击流量后熵值四元组线性关系的示意图。

图6为检测率和误检率的示意图。

具体实施方式

附图仅用于示例性说明,不能理解为对本专利的限制;为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。下面结合附图和实施例对本发明的技术方案做进一步的说明。

实施例1:

一种基于熵和动态线性关系的多级流量异常检测方法,其流程示意图如图1所示:包括以下步骤:

S1.设定时间片大小T和时间窗口大小N;计算时间窗口和当前时间点t的流量集合熵值四元组Ht

S2.对熵值序列进行一阶差分计算,差分处理序列定义为Ht′;

S3.基于步骤S2,设定一级阈值和二级阈值;

S4.判断熵值四元组相对于时间窗口内的N个差分熵值四元组的差值是否超过一级阈值;若是,则进行步骤S8,否则进行步骤S5;

S5.判断熵值四元组相对于时间窗口内的N个差分熵值四元组的差值是否超过二级阈值;若是,则进行步骤S6,否则进行步骤S7;

S6.动态建立四元组之间的线性关系,并判断时间点t时熵值是否偏离线性关系,若是,则进行步骤S8,否则进行步骤S7;

S7.检测当前时间无异常,进行步骤S9;

S8.根据熵值四元组中的分量变化方向识别出异常类型;

S9.滑动时间窗口,进行下一个时间点检测。

在本实施例中,首先设定时间片大小T和时间窗口大小N;计算时间窗口和当前时间点t的流量集合熵值四元组;对熵值序列进行一阶差分计算;如何,设定一级阈值和二级阈值;判断熵值四元组相对于时间窗口内的N个差分熵值四元组的差值是否超过一级阈值;再进一步判断熵值四元组相对于时间窗口内的N个差分熵值四元组的差值是否超过二级阈值;接下来,动态建立四元组之间的线性关系,并判断时间点t时熵值是否偏离线性关系;再检测当前时间无异常,并根据熵值四元组中的分量变化方向识别出异常类型;通过滑动时间窗口,进行下一个时间点检测;通过设定两级动态阈值来提高检测率,降低误检率,并通过分析大量的数据发现属性间的线性关系,对熵值变化程度处于一级阈值和二级阈值之间的时间点进行动态线性关系的检测,降低了实时检测的时延,而分析熵值的变化方向可以识别异常的种类。

在本实施例中,所述的熵值四元组为IP报头中的四种属性的熵值,包括源地址、源端口、目的地址、目的端口的熵值;

所述的步骤S1详细如下:

设定时间片大小T和时间窗口大小N,在时间点t上,聚合流St上的熵值四元组定义为:

Ht=(Hsa,t,Hsp,t,Hda,t,Hdp,t);

其中,Hsa,t、Hsp,t、Hda,t、Hdp,t分别表示源地址、源端口、目的地址、目的端口的熵值。

在本实施例中,源地址的熵值定义为:

其中,nsa为聚合流中流量的总数,Pisa,t为相应源地址出现的概率;

所述的源端口的熵值定义为:

其中,nsp为聚合流中流量的总数,Pisp,t为相应源地址出现的概率;

所述的目的地址的熵值定义为:

其中,nda为聚合流中流量的总数,Pida,t为相应源地址出现的概率;

所述的目的端口的熵值定义为:

其中,ndp为聚合流中流量的总数,Pidp,t为相应源地址出现的概率。

在本实施例中,步骤S2具体如下:

对熵值序列进行一阶差分处理,处理后的序列表示为H′t,其表达式如下:

Ht′=Ht-Ht-1

其中,Ht表示时间点t的流量集合熵值四元组,Ht-1表示时间点t-1的流量集合熵值四元组。

在本实施例中,步骤S3具体如下:

计算时间窗口内差分熵值序列的平均值和标准差,作为设定阈值的标准;其中,差分熵值序列的平均值和标准差分别表示为:

一阶差分熵值四元组的平均值表示为:

一阶差分熵值四元组的方差表示为:

其中,设定时间点t上的两级动态阈值λt=(λt1t2),其中,一级阈值设定为三倍标准差,二级阈值设定为两倍标准差;具体分别表示为:λt1=±3δ′t,λt2=±2δ′t

在本实施例中,时间窗口内的N个差分熵值四元组的差值表示为:

ΔHt′=Ht′-Et′=(Hsa,t′,Hsp,t′,Hda,t′,Hdp,t′)-(Esa,t′,Esp,t′,Eda,t′,Hdp,t′)=(ΔHsa,t′,ΔHsp,t′,ΔHda,t′,ΔHdp,t′)

判断熵值四元组的差值与一级阈值与二级阈值的关系,进行相应的步骤操作,其中,基于熵值四元组的差值定义报警触发四元组定义:

alarm(Ht)=(alarm(Hsa,t),alarm(Hsp,t),alarm(Hda,t),alarm(Hdp,t));

其中,alarm(Hsa,t)表示源地址熵值报警触发函数,alarm(Hsp,t)表示源端口熵值报警触发函数,alarm(Hda,t)表示目的地址熵值报警触发函数,alarm(Hdp,t)表示目的端口熵值报警触发函数;

其中alarm(Hsa,t)的定义如下:

上式中δsa,t′表示δ′t中源地址分量,alarm(Hsa,t)=±2,说明源地址熵值变化程度超出了λt1的范围;alarm(Hsa,t)=±1,说明源地址熵值变化程度介于λt1与λt2之间;alarm(Hsa,t)=0,说明时间点t的源地址熵值没有出现明显的波动,不同的异常类型,会引起不同的源地址熵值变化方向,为了方便判断时间点t上出现的是何种异常,设定熵值若相比前N个时间点增加,符号为正,若减少,符号为负;

其中alarm(Hsp,t)的定义如下:

上式中δsp,t′表示δ′t中源端口分量,alarm(Hsp,t)=±2,说明源端口熵值变化程度超出了λt1的范围;alarm(Hsp,t)=±1,说明源端口熵值变化程度介于λt1与λt2之间;alarm(Hsp,t)=0,说明时间点t的源端口熵值没有出现明显的波动,不同的异常类型,会引起不同的源端口熵值变化方向,为了方便判断时间点t上出现的是何种异常,设定熵值若相比前N个时间点增加,符号为正,若减少,符号为负;

其中alarm(Hda,t)的定义如下:

上式中δda,t′表示δ′t中目的地址分量,alarm(Hda,t)=±2,说明目的地址熵值变化程度超出了λt1的范围;alarm(Hda,t)=±1,说明目的地址熵值变化程度介于λt1与λt2之间;alarm(Hda,t)=0,说明时间点t的目的地址熵值没有出现明显的波动,不同的异常类型,会引起不同的目的地址熵值变化方向,为了方便判断时间点t上出现的是何种异常,设定熵值若相比前N个时间点增加,符号为正,若减少,符号为负;

其中alarm(Hdp,t)的定义如下:

上式中δdp,t′表示δ′t中目的端口分量,alarm(Hdp,t)=±2,说明目的端口熵值变化程度超出了λt1的范围;alarm(Hdp,t)=±1,说明目的端口熵值变化程度介于λt1与λt2之间;alarm(Hdp,t)=0,说明时间点t的目的端口熵值没有出现明显的波动,不同的异常类型,会引起不同的目的端口熵值变化方向,为了方便判断时间点t上出现的是何种异常,设定熵值若相比前N个时间点增加,符号为正,若减少,符号为负。

在本实施例中,线性关系具体如下:

分析正常情况下大量的历史流量,源地址的熵值和目的地址的熵值具有正线性关系,源端口的熵值和目的端口的熵值之间具有负线性关系,且随时时间的变化,线性关系会发生变化;为了保证线性关系中参数αt和βt的实时性,提高检测率,本发明采用动态的方式设定αt和βt,时间窗口设定为N,当前检测的时间点为t,假设t之前的N个时间点内不存在异常流量,对该N个时间点的熵值建立线性关系,具体如下:

计算源地址和目的地址熵值的线性关系,设时间点t建立的线性关系定义为:

Hsa,t=αt·Hda,ttt

其中

计算参数αt和βt的值,根据建立的线性关系求出的熵值即为线性预测值当观测值与预测值之差的平方和为最小值时,得到的最佳的线性模型;设观测值与预测值之差的平方和记为Q:

其中,Hsa,t′表示根据线性关系得出的在时间窗口内的源地址熵值;t-1≥t′≥t-N,因Q为非负值,所以Q的极小值即为最小值,分别对αt和βt求一阶偏导可得:

估计出αt和βt后,计算出方差大小:

设定判断偏离线性关系的阈值为θt=±3δt;当时间点t的熵值实际值与根据线性关系得出的预测值之间的差异超过所设定的阈值范围时,判断时间点t存在异常流量。

在本实施例中,步骤S9具体如下:

时间窗口向前滑动,其中,时间窗口的滑动分为两种情况:

1、当前时间点t不存在异常

当检测时间点t+1时,若时间点t不存在异常,那么时间窗口向前滑动一个时间点,滑动后的时间窗口内的N个一阶差分熵值四元组作为检测时间点t+1是否存在异常的基准。

2、当前时间点t存在异常

若当前检测到时间点t存在异常,为了避免时间窗口内的正常模式被异常点破坏,此时时间窗口不再向前滑动,依旧使用时间点t-N至时间点t-1的一阶差分熵值四元组为时间点t+1设定阈值;若时间点t+1不存在异常,时间窗口的右边界向右滑动两个时间点,左边界向左滑动一个时间点,窗口内不包含时间点t的值;若时间点t+1存在异常,时间窗口仍然不向前滑动。

实施例2:

在本实施例中,采集271万条数据作为背景流量,在此背景流量中注入模拟生成的3万条异常流量数据作为实验对象,模拟生成的3万条流量中包含了DDoS攻击、flashcrowd、端口扫描、蠕虫病毒和网络扫描5种异常类型。

实验中都将T设定为1min,当时间窗口N设定为不同数值时,观察方法检测率和误检率的变化。在正常情况下熵值四元组的熵值序列如图3所示:其中图3(a)、图3(b)、图3(c)、图3(d)分别表示正常情况下源地址、源端口、目的地址、目的端口熵值的时间序列值。图中横坐标表示时间点,纵坐标表示熵值大小,无异常流量时,前后时间点的熵值序列虽有波动,但无突变点,但当异常发生时,熵值序列上会产生突变点,如图4所示。

其中,图4是注入攻击流量后的熵值时间序列图,其中图4(a)、图4(b)、图4(c)、图4(d)分别表示注入攻击流量情况下源地址、源端口、目的地址、目的端口熵值的时间序列值。从图4中得出部分异常点较为明显,可以使用较明显的阈值直接检测出,时间点328发生了端口扫描异常,熵值序列有明显的突变。部分异常点并不明显,单一属性熵值的变化与正常时间点相差不太,因此无法设定一个合理的阈值检测这部分异常点,需要通过检测多个属性熵值之间的线性关系来确定是否存在异常。

在本实施例中,注入攻击流量后熵值四元组线性关系的示意图如图5所示:其中,图5(a)表示注入攻击流量后地址熵值线性关系、图5(b)表示注入攻击流量后目的端口熵值线性关系。偏离线性关系的异常点可从源地址与目的地址熵值线性关系图和源端口与目的端口线性关系图中看出。

实施例3:

在本实施例中,对该检测方法进行检测和误检,其中,检测率Pdete和误检率Pfalse定义为:

当时间窗口N设置为不同大小时,检测率和误检率的变化如图6所示,随时间窗口N的增大,检测率虽有所波动,但保持在较为稳定的水平,且较高,而误检率在时间窗口小于15时大幅减小,之后逐渐减小。由于时间窗口越大,本发明的计算量越大,时延增加,为了平衡时延和准确性,当N=30时,本发明的检测率较高,误检率较低,且不会产生太大的时延。

显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号