一种基于业务逻辑的电力业务报文攻击识别方法及系统与流程

文档序号:19831699发布日期:2020-02-04 12:30阅读:245来源:国知局
一种基于业务逻辑的电力业务报文攻击识别方法及系统与流程

本发明涉及智能电网安全技术领域,并且更具体地,涉及一种基于业务逻辑的电力业务报文攻击识别方法及系统。



背景技术:

随着智能电网信息空间与物理空间耦合的不断加深,近年来,由网络攻击导致的电网物理系统故障愈发常见,严重影响了电力系统的正常运行。如2015年底,攻击者通过获取变电站监控系统服务器操作权限进行了恶意倒闸操作,导致乌克兰电网80000个用户停电;2016年以色列电力供应系统受到重大网络攻击迫使电力供应系统离线运行。电网中,用于一次系统或设备参数测量和控制的各类智能终端和装置(本文统称为测控终端)作为沟通信息系统与物理系统的桥梁,当其遭受通过篡改、伪造与重放电力业务报文实施的攻击时,将直接影响电力一次设备的正常运行,如断路器异常开断、定值修改等,从而引发电力事故。因此,如何有效识别电网测控终端可能遭受的电力业务报文攻击成为亟待解决的问题。

目前针对电网测控终端的网络攻击识别研究主要分为如下两类:1)将传统信息网络的网络攻击识别系统直接应用于电网测控终端网络攻击识别,如一些研究通过对非电力业务报文流量进行异常识别与协议白名单来识别攻击,一些研究提出基于自学习通信模式的未知攻击识别方法;2)利用电力专有协议流量特征、规则或报文不同字段的相关性等方式来实现电网测控终端网络攻击识别,如一些研究提出利用goose报文网络流量特征来进行攻击识别,一些研究提出基于iec60870-5-104协议的流量模式检查、各个字段的合法性与相关性检查的攻击识别方法,一些研究通过该方法对使用iec61850协议实现的网络攻击进行识别。上述研究能有效识别arp欺骗、icmpflood和synflood等利用通用网络协议脆弱性实施的网络攻击,以及部分使用iec60870-5-104、iec61850等电力专有协议脆弱性实施的网络攻击,如goose畸形报文攻击等,但无法有效识别电力业务报文攻击。电力业务报文攻击指攻击者通过篡改、伪造与重放电网测控终端传输的业务报文导致电力一次设备误动的攻击,这类攻击通常会改变正常的业务逻辑。



技术实现要素:

本发明提出一种基于业务逻辑的电力业务报文攻击识别方法及系统,以解决如何有效地对电力业务报文攻击进行识别,以确定电网的安全状态的问题。

为了解决上述问题,根据本发明的一个方面,提供了一种基于业务逻辑的电力业务报文攻击识别方法,所述方法包括:

从电力业务报文中获取一个当前状态节点的多点信号值序列和多点信号地址序列,根据所述多点信号地址序列确定与所述当前状态节点对应的控制块,并将所述多点信号值序列添加到所述控制块的状态序列上,获取当前状态序列;

根据所述当前状态序列的多点信号地址序列分别确定与所述当前状态序列对应的危险状态序列集和安全状态序列集;

根据所述当前状态序列、危险状态序列集和安全状态序列集确定所述当前状态序列的威胁度;

将所述当前状态序列的威胁度和预设的安全风险阈值进行比较,并当所述当前状态序列的威胁度大于等于预设的安全风险阈值时,确定电网遭受到了电力业务报文攻击。

优选地,其中根据所述当前状态序列、危险状态序列集和安全状态序列集确定所述当前状态序列的威胁度,包括:

将所述当前状态序列与所述危险状态序列集进行匹配,若所述当前状态序列与所述危险状态序列集匹配成功,则确定所述当前状态序列的威胁度为1;

若所述当前状态序列与所述危险状态序列集匹配不成功,则将所述当前状态序列与所述安全状态序列集进行匹配,若所述当前状态序列与所述安全状态序列集匹配成功,则确定所述当前状态序列的威胁度为0。

优选地,其中根据所述当前状态序列、危险状态序列集和安全状态序列集确定所述当前状态序列的威胁度,包括:

分别计算所述当前状态序列与所述危险状态序列集的第一最小距离,以及所述当前状态序列与所述安全状态序列集的第二最小距离;

根据所述第一最小距离和第二最小距离计算所述当前状态序列的威胁度。

优选地,其中根据所述第一最小距离和第二最小距离计算所述当前状态序列的威胁度,包括:

其中,pthreaten为当前状态序列的威胁度;dblack为第一最小距离;dwhite为第二最小距离。

优选地,其中所述将所述当前状态序列与所述危险状态序列集进行匹配,包括:

步骤11,将当前状态序列status_sequencenow=(s′,pos_sequencenow)中s′=(status1,status2,…,statusn)的最新多点信号值序列statusn添加到缓存状态中,其中,n1的初始值为0,添加后

步骤12,顺序遍历危险状态序列集中的所有规则,若满足n2>n-n1andi≠t,则继续遍历;若满足n2>n-n1andi=t,则表示匹配结束,遍历结束,继续执行安全状态序列集匹配模式;若满足n2<n-n1,则进入步骤13;否则,进入步骤14;

步骤13,将的后n2项保留,则并将n1置为n-n2,则

步骤14,判断是否与bi相同;其中,若相同,则将只保留最后一项,则同时将n1置为n-1,并确定所述当前状态序列与所述危险状态序列集匹配成功,直接确定所述当前状态序列的威胁度为1;否则,返回步骤12继续遍历。

优选地,其中所述将所述当前状态序列与所述安全状态序列集进行匹配,包括:

步骤21,将当前状态序列status_sequencenow=(s′,pos_sequencenow)中s′=(status1,status2,…,statusn)的最新多点信号值序列statusn添加到缓存状态中,其中,n3的初始值为0,添加后

步骤22,顺序遍历安全状态序列集中的所有规则,若满足n4>n-n3andi≠e,则进入步骤26;若满足n4>n-n3andi=e,则表示匹配失败,遍历结束;若满足n4<n-n3,则进入步骤23;否则,进入步骤24;

步骤23,将的后n4项保留,则并将n3置为n-n4,则

步骤24,判断是否与wi相同,若不相同,则返回步骤22,继续遍历;否则,进入步骤25;

步骤25,将只保留最后一项,则同时将n3置为n-1,将init_status置为1,确定所述当前状态序列与所述安全状态序列集匹配成功,直接确定所述当前状态序列的威胁度为0;其中init_status的初始值为0,用于标识是否进行一次安全状态序列完全匹配;

步骤26,若init_status为0,则进入步骤27,反之进入步骤28;

步骤27,init_status为0,判断是否为wi的子集,若是,则确定所述当前状态序列与所述安全状态序列集匹配成功,直接确定所述当前状态序列的威胁度为0;否则,继续遍历安全状态序列集中的其他规则,返回步骤22;

步骤28,判断是否与wi的前n-n1项相同,若是,则确定所述当前状态序列与所述安全状态序列集匹配成功,直接确定所述当前状态序列的威胁度为0;否则,继续遍历安全状态序列集中的其他规则,返回步骤22。

优选地,其中所述方法还包括:

若所述当前状态序列的威胁度小于预设的安全风险阈值,则确定电网未遭受到电力业务报文攻击。

根据本发明的另一个方面,提供了一种基于业务逻辑的电力业务报文攻击识别系统,所述系统包括:

当前状态序列确定单元,用于从电力业务报文中获取一个当前状态节点的多点信号值序列和多点信号地址序列,根据所述多点信号地址序列确定与所述当前状态节点对应的控制块,并将所述多点信号值序列添加到所述控制块的状态序列上,获取当前状态序列;

危险状态序列集和安全状态序列集确定单元,用于根据所述当前状态序列的多点信号地址序列分别确定与所述当前状态序列对应的危险状态序列集和安全状态序列集;

威胁度确定单元,用于根据所述当前状态序列、危险状态序列集和安全状态序列集确定所述当前状态序列的威胁度;

电力业务报文攻击识别单元,用于将所述当前状态序列的威胁度和预设的安全风险阈值进行比较,并当所述当前状态序列的威胁度大于等于预设的安全风险阈值时,确定电网遭受到了电力业务报文攻击。

优选地,其中所述威胁度确定单元,根据所述当前状态序列、危险状态序列集和安全状态序列集确定所述当前状态序列的威胁度,包括:

危险状态序列集匹配模块,用于将所述当前状态序列与所述危险状态序列集进行匹配,若所述当前状态序列与所述危险状态序列集匹配成功,则确定所述当前状态序列的威胁度为1;

安全状态序列集匹配模块,用于若所述当前状态序列与所述危险状态序列集匹配不成功,则将所述当前状态序列与所述安全状态序列集进行匹配,若所述当前状态序列与所述安全状态序列集匹配成功,则确定所述当前状态序列的威胁度为0。

优选地,其中所述威胁度确定单元,根据所述当前状态序列、危险状态序列集和安全状态序列集确定所述当前状态序列的威胁度,包括:

第一最小距离和第二最小距离确定模块,用于分别计算所述当前状态序列与所述危险状态序列集的第一最小距离,以及所述当前状态序列与所述安全状态序列集的第二最小距离;

威胁度确定模块,用于根据所述第一最小距离和第二最小距离计算所述当前状态序列的威胁度。

优选地,其中所述威胁度确定模块,根据所述第一最小距离和第二最小距离计算所述当前状态序列的威胁度,包括:

其中,pthreaten为当前状态序列的威胁度;dblack为第一最小距离;dwhite为第二最小距离。

优选地,其中所述危险状态序列集匹配模块,将所述当前状态序列与所述危险状态序列集进行匹配,包括:

步骤11,将当前状态序列status_sequencenow=(s′,pos_sequencenow)中s′=(status1,status2,…,statusn)的最新多点信号值序列statusn添加到缓存状态中,其中,n1的初始值为0,添加后

步骤12,顺序遍历危险状态序列集中的所有规则,若满足n2>n-n1andi≠t,则继续遍历;若满足n2>n-n1andi=t,则表示匹配结束,遍历结束,继续执行安全状态序列集匹配模式;若满足n2<n-n1,则进入步骤13;否则,进入步骤14;

步骤13,将的后n2项保留,则并将n1置为n-n2,则

步骤14,判断是否与bi相同;其中,若相同,则将只保留最后一项,则同时将n1置为n-1,并确定所述当前状态序列与所述危险状态序列集匹配成功,直接确定所述当前状态序列的威胁度为1;否则,返回步骤12继续遍历。

优选地,其中所述安全状态序列集匹配模块,将所述当前状态序列与所述安全状态序列集进行匹配,包括:

步骤21,将当前状态序列status_sequencenow=(s′,pos_sequencenow)中s′=(status1,status2,…,statusn)的最新多点信号值序列statusn添加到缓存状态中,其中,n3的初始值为0,添加后

步骤22,顺序遍历安全状态序列集中的所有规则,若满足n4>n-n3andi≠e,则进入步骤26;若满足n4>n-n3andi=e,则表示匹配失败,遍历结束;若满足n4<n-n3,则进入步骤23;否则,进入步骤24;

步骤23,将的后n4项保留,则并将n3置为n-n4,则

步骤24,判断是否与wi相同,若不相同,则返回步骤22,继续遍历;否则,进入步骤25;

步骤25,将只保留最后一项,则同时将n3置为n-1,将init_status置为1,确定所述当前状态序列与所述安全状态序列集匹配成功,直接确定所述当前状态序列的威胁度为0;其中init_status的初始值为0,用于标识是否进行一次安全状态序列完全匹配;

步骤26,若init_status为0,则进入步骤27,反之进入步骤28;

步骤27,init_status为0,判断是否为wi的子集,若是,则确定所述当前状态序列与所述安全状态序列集匹配成功,直接确定所述当前状态序列的威胁度为0;否则,继续遍历安全状态序列集中的其他规则,返回步骤22;

步骤28,判断是否与wi的前n-n1项相同,若是,则确定所述当前状态序列与所述安全状态序列集匹配成功,直接确定所述当前状态序列的威胁度为0;否则,继续遍历安全状态序列集中的其他规则,返回步骤22。

优选地,其中所述电力业务报文攻击识别单元,还用于:

若所述当前状态序列的威胁度小于预设的安全风险阈值,则确定电网未遭受到电力业务报文攻击。

本发明提供了一种基于业务逻辑的电力业务报文攻击识别方法及系统,包括:确定电网的当前状态序列;根据所述当前状态序列的多点信号地址序列分别确定与所述当前状态序列对应的危险状态序列集和安全状态序列集;根据所述当前状态序列、危险状态序列集和安全状态序列集确定所述当前状态序列的威胁度;以及当所述当前状态序列的威胁度大于等于预设的安全风险阈值时,确定电网遭受到了电力业务报文攻击。本发明通过定义电力业务逻辑的危险状态序列集和安全状态序列集,将误用检测与异常检测方法相结合,对电力业务的威胁度进行评估,并根据威胁度确定电网是否遭受到电力业务报文攻击,实现了对电力业务报文攻击的有效识别,降低了误报率,保障了电力工控系统的安全可靠运行。

附图说明

通过参考下面的附图,可以更为完整地理解本发明的示例性实施方式:

图1为根据本发明实施方式的基于业务逻辑的电力业务报文攻击识别方法100的流程图:

图2为根据本发明实施方式的状态链数据结构图;

图3为根据本发明实施方式的危险状态序列和安全状态序列的数据结构图;以及

图4为根据本发明实施方式的基于业务逻辑的电力业务报文攻击识别系统400的结构示意图。

具体实施方式

现在参考附图介绍本发明的示例性实施方式,然而,本发明可以用许多不同的形式来实施,并且不局限于此处描述的实施例,提供这些实施例是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的范围。对于表示在附图中的示例性实施方式中的术语并不是对本发明的限定。在附图中,相同的单元/元件使用相同的附图标记。

除非另有说明,此处使用的术语(包括科技术语)对所属技术领域的技术人员具有通常的理解含义。另外,可以理解的是,以通常使用的词典限定的术语,应当被理解为与其相关领域的语境具有一致的含义,而不应该被理解为理想化的或过于正式的意义。

图1为根据本发明实施方式的基于业务逻辑的电力业务报文攻击识别方法100的流程图。本发明的实施方式提供的基于业务逻辑的电力业务报文攻击识别方法,通过定义电力业务逻辑的危险状态序列集和安全状态序列集,将误用检测与异常检测方法相结合,对电力业务的威胁度进行评估,并根据威胁度确定电网是否遭受到电力业务报文攻击,实现了对电力业务报文攻击的有效识别,降低了误报率,保障了电力工控系统的安全可靠运行。本发明的实施方式提供的基于业务逻辑的电力业务报文攻击识别方法100从步骤101处开始,在步骤101从电力业务报文中获取一个当前状态节点的多点信号值序列和多点信号地址序列,根据所述多点信号地址序列确定与所述当前状态节点对应的控制块,并将所述多点信号值序列添加到所述控制块的状态序列上,获取当前状态序列。

在本发明的实施方式中,为了对当前业务逻辑状态进行安全性评估,需要对业务逻辑进行保存,因此提出使用状态链的数据结构来描述电网业务逻辑,包括业务状态及其变化过程。本发明实施方式的状态链数据结构如图2所示,包含以下7个部分。

(1)单点信号值:则图2中的data字段,用于描述单个fcda(functionallyconstraineddataattribute)项的值。在电网中可以理解为刀闸开关信号或电网一个节点的电压或电流值。

(2)信号地址:则图2中的pos字段,用于描述一个fcda项的位置;在电网中可理解为刀闸或节点的逻辑实例名;在实际计算中可理解为一个变量的名称,用于索引该变量。

(3)多点信号地址序列:则图2中的pos_sequence=(pos1,pos2,…,posn)t字段,在本发明的实施方式中用于描述一个控制块上各个单点信号的信号地址序列。

(4)多点信号值序列:则图2中的status=(data1,data2,…,datan)t字段,在本发明中用于描述一个控制块上各个单点信号值序列。在电网中可理解为多个刀闸的位置或多点电压电流值。

(5)状态节点:定义为node=(status,pos_sequence)。由多点信号地址序列和多点信号值序列组成,用于描述一个控制块的状态。

(6)状态改变:用来描述一个控制块状态中的单个或多个单点信号发生变化。在电网中可以理解为一个刀闸或多个刀闸切换、一处或多处电压电流改变、一处或多处定值改变。

(7)定义status_sequence=(status_value,pos_sequence)为状态序列,其中status_value=(status1,status2,…,statusn),由有限个pos_sequence相同的状态节点顺序链接组成,用于描述一个控制块状态改变的逻辑过程。在电网中可以理解为一组开关的操作逻辑关系、一组电压电流改变的逻辑关系。

在本发明的实施方式中,为了识别当前电网是否遭受电力业务报文攻击,首先需要对当前业务逻辑进行录入,在基于上述状态链的数据结构的前提下,具体录入过程如下:

1.1)从电力业务报文的应用层内容中提取出一个状态节点nodenow=(statusn,pos_sequencenow),其中statusn=(data1,data2,…,datak)t

1.2)根据状态节点nodenow中pos_sequencenow找到对应的控制块状态序列status_sequence=(s,pos_sequence),则满足pos_sequence=pos_sequencenow条件的状态序列,其中s=(status1,status2,…,statusn-1)。

1.3)比较statusn-1是否等于statusn,若相等,过程结束;否则,进入1.4)。

1.4)将statusn链入状态序列status_sequence=(s,pos_sequence)中,得到当前状态序列status_sequencenow=(s′,pos_sequencenow),其中s′=(status1,status2,…,statusn)。

在步骤102,根据所述当前状态序列的多点信号地址序列分别确定与所述当前状态序列对应的危险状态序列集和安全状态序列集。

在本发明的实施方式中,为了对当前业务逻辑状态进行安全性评估,需要将当前业务逻辑状态与已知的危险状态序列或安全状态序列进行对比,通过将当前状态序列与危险状态序列和安全状态序列进行比较,可以快速有效地识别出电力业务报文攻击。本发明的实施方式的危险状态序列和安全状态序列中的数据结构如图3所示。危险状态序列集和安全状态序列集中录入以状态序列的结构表示的不同规则。危险状态序列集定义为其中,为所有满足pos_sequence=pos_sequence1条件的不合法状态序列集合。危险状态序列集定义为其中,为所有满足pos_sequence=pos_sequence1条件的合法状态序列集合。

在步骤103,根据所述当前状态序列、危险状态序列集和安全状态序列集确定所述当前状态序列的威胁度。

优选地,其中根据所述当前状态序列、危险状态序列集和安全状态序列集确定所述当前状态序列的威胁度,包括:

将所述当前状态序列与所述危险状态序列集进行匹配,若所述当前状态序列与所述危险状态序列集匹配成功,则确定所述当前状态序列的威胁度为1;

若所述当前状态序列与所述危险状态序列集匹配不成功,则将所述当前状态序列与所述安全状态序列集进行匹配,若所述当前状态序列与所述安全状态序列集匹配成功,则确定所述当前状态序列的威胁度为0。

优选地,其中根据所述当前状态序列、危险状态序列集和安全状态序列集确定所述当前状态序列的威胁度,包括:

分别计算所述当前状态序列与所述危险状态序列集的第一最小距离,以及所述当前状态序列与所述安全状态序列集的第二最小距离;

根据所述第一最小距离和第二最小距离计算所述当前状态序列的威胁度。

优选地,其中所述计算所述当前状态序列与所述危险状态序列集的第一最小距离,包括:

其中,dblack为第一最小距离;当前状态序列为status_sequencenow=(s′pos_sequencenow),s′=(status1,status2,…,statusn);危险状态序列集为对于如果否则columns′表示矩阵s′的列数,bi(status_value)表示bi状态序列中status_value值,bi(status_value)[0,…,columns′-1]表示bi(status_value)矩阵的第0列到columns′-1列;表示矩阵的第i列,函数d(a,b)表示求行向量a=(x1,x2,…,xn)与b=(y1,y2,…,yn)的欧几里得距离,则

优选地,其中所述计算所述当前状态序列与所述安全状态序列集的第二最小距离,包括:

其中,dwhite为第二最小距离;当前状态序列为status_sequencenow=(s′pos_sequencenow),s′=(status1,status2,…,statusn);安全状态序列集对于如果否则columns′表示矩阵s′的列数,wi(status_value)表示wi状态序列中status_value值,则wi(status_value)[0,…,columns′-1]表示wi(status_value)矩阵的第0列到columns′-1列;表示矩阵的第i列,函数d(a,b)表示求行向量a=(x1,x2,…,xn)与b=(y1,y2,…,yn)的欧几里得距离,则

优选地,其中根据所述第一最小距离和第二最小距离计算所述当前状态序列的威胁度,包括:

其中,pthreaten为当前状态序列的威胁度;dblack为第一最小距离;dwhite为第二最小距离。

优选地,其中所述将所述当前状态序列与所述危险状态序列集进行匹配,包括:

步骤11,将当前状态序列status_sequencenow=(s′,pos_sequencenow)中s′=(status1,status2,…,statusn)的最新多点信号值序列statusn添加到缓存状态中,其中,n1的初始值为0,添加后

步骤12,顺序遍历危险状态序列集中的所有规则,若满足n2>n-n1andi≠t,则继续遍历;若满足n2>n-n1andi=t,则表示匹配结束,遍历结束,继续执行安全状态序列集匹配模式;若满足n2<n-n1,则进入步骤13;否则,进入步骤14;

步骤13,将的后n2项保留,则并将n1置为n-n2,则

步骤14,判断是否与bi相同;其中,若相同,则将只保留最后一项,则同时将n1置为n-1,并确定所述当前状态序列与所述危险状态序列集匹配成功,直接确定所述当前状态序列的威胁度为1;否则,返回步骤12继续遍历。

优选地,其中所述将所述当前状态序列与所述安全状态序列集进行匹配,包括:

步骤21,将当前状态序列status_sequencenow=(s′,pos_sequencenow)中s′=(status1,status2,…,statusn)的最新多点信号值序列statusn添加到缓存状态中,其中,n3的初始值为0,添加后

步骤22,顺序遍历安全状态序列集中的所有规则,若满足n4>n-n3andi≠e,则进入步骤26;若满足n4>n-n3andi=e,则表示匹配失败,遍历结束;若满足n4<n-n3,则进入步骤23;否则,进入步骤24;

步骤23,将的后n4项保留,则并将n3置为n-n4,则

步骤24,判断是否与wi相同,若不相同,则返回步骤22,继续遍历;否则,进入步骤25;

步骤25,将只保留最后一项,则同时将n3置为n-1,将init_status置为1,确定所述当前状态序列与所述安全状态序列集匹配成功,直接确定所述当前状态序列的威胁度为0;其中init_status的初始值为0,用于标识是否进行一次安全状态序列完全匹配;

步骤26,若init_status为0,则进入步骤27,反之进入步骤28;

步骤27,init_status为0,判断是否为wi的子集,若是,则确定所述当前状态序列与所述安全状态序列集匹配成功,直接确定所述当前状态序列的威胁度为0;否则,继续遍历安全状态序列集中的其他规则,返回步骤22;

步骤28,判断是否与wi的前n-n1项相同,若是,则确定所述当前状态序列与所述安全状态序列集匹配成功,直接确定所述当前状态序列的威胁度为0;否则,继续遍历安全状态序列集中的其他规则,返回步骤22。

在本发明的实施方式中,在确定了危险安全状态序列集和安全状态序列集后,确定威胁度的步骤包括:

s1,进行危险状态序列集的匹配,若匹配成功,则确定当前状态序列的威胁度为1;反之,进入s2:

s2,进行安全状态序列集的匹配,若匹配成功,则确定当前状态序列的威胁度为0;反之,进入s3:

s3,确定第一最小距离和第二最小距离,并根据所述第一最小距离和第二最小距离确定安全状态序列的威胁度。

在步骤104,将所述当前状态序列的威胁度和预设的安全风险阈值进行比较,并当所述当前状态序列的威胁度大于等于预设的安全风险阈值时,确定电网遭受到了电力业务报文攻击。

优选地,其中所述方法还包括:

若所述当前状态序列的威胁度小于预设的安全风险阈值,则确定电网未遭受到电力业务报文攻击。

在本发明的实施方式中,基于当前状态序列的威胁度pthreaten判断当前电网是否遭受攻击。为了降低本发明的误报率,定义安全风险阈值xsafe,其中,xsafe默认置为0.25。安全风险阈值xsafe的值可以根据实际需要进行设定,并不局限于本申请提到的0.25。当pthreaten>xsafe时,认为当前状态序列status_sequencenow=(s′,pos_sequencenow)中的pos_sequencenow值对应的电网遭受到了电力业务报文攻击;否则,认为电网处于未遭受电力业务报文攻击,处于安全状态。

以下具体举例说明本发明的实施方式

假设攻击者攻击的状态块具有三个fcda,每个fcda的地址信息如下:

pos1=″(appid=0x0001)-(dataset=devicef001/lln0$goose1)-(alldata.1)″,

pos2=″(appid=0x0001)-(dataset=devicef001/lln0$goose1)-(alldata.2)″,

pos3=″(appid=0x0001)-(dataset=devicef001/lln0$goose1)-(alldata.3)″,

对应的控制块状态为:status1=(0,0,0)t,status2=(0,0,1)t,…,status8=(1,1,1)t。设定入侵检测方法的安全风险阈值xsafe为0.25。

在确定电网遭受电力业务报文攻击时,具体实施方式如下:

步骤(1),状态链录入:假定已录入的状态序列为status_sequence1=(s1,pos_sequence),其中s1=(status1,status2),pos_sequence=(pos1,pos2,pos3)t,现从应用层报文中提取一个状态节点nodenow=(status5,pos_sequence),将提取的状态节点加入到已录入的状态序列中,则状态序列由status_sequence1变为status_sequence2=(s2,pos_sequence),其中s2=(status1,status2,status5)。

步骤(2),确定当前状态序列的危险状态序列集ublacklist/pos_sequence={b1},其中b1={status1,status3,status7}和安全状态序列集uwhitelist/pos_sequence={w1,w2}。

步骤(3),对当前状态序列进行危险状态序列集的匹配,若匹配,则确定威胁度为1;若发现不匹配,则转入步骤(4)。具体步骤如下:

3.1)将status_sequence2中s2中最新状态status5添加到缓存状态s″blacklist/pos_sequence=(status1,status2)中,添加后s″blacklist/pos_sequence=(status1,status2,status5)。

3.2)顺序遍历危险状态序列集中具有相同pos_sequence的规则,则遍历ublacklist/pos_sequence={b1},其中b1具有3个状态,s″blacklist/pos_sequence具有3种状态,转3.3)。

3.3)将b1与s2比对,发现不匹配,继续遍历,转3.4)。

3.4)ublacklist/pos_sequence遍历结束,转步骤(4)。

步骤(4),对当前状态序列进行危安全状态序列匹配模式,若匹配,则确定威胁度为0;若不匹配,转入步骤(5)。具体过程如下:

4.1)将当前状态序列status_sequence2中s2中最新状态status5添加到缓存状态s″whitelist/pos_sequence=(status1,status2)中,添加后缓存状态序列为s″whitelist/pos_sequence=(status1,status2,status5)。

4.2)遍历危险状态序列集中具有相同pos_sequence的规则,则uwhitelist/pos_sequence={w1,w2},首先遍历w1={status1,status2,status8},其中w1有3种状态,具有3种状态,转4.3)。

4.3)s″whitelist/pos_sequence与w1进行规则比对,s″whitelist/pos_sequence与w1不匹配,继续遍历。

4.4)遍历w2,其中w2={status1,status2,status4,status5}有4种状态,s″whitelist/pos_sequence=(status1,status2,status5)具有3种状态,转4.5)。

4.5)init_status为0(假定为0),则转4.6)。

4.6)s″whitelist/pos_sequence与w2进行规则比对,w2不是s″whitelist/pos_sequence子集,遍历结束,转入步骤(5)。

步骤(5),对该状态序列进行相似度匹配,得到威胁度pthreaten。具体步骤如下:

5.1)根据pos_sequence找到对应的控制块的危险状态序列集ublacklist/pos_seauence={b1}和安全状态序列集uwhitelist/pos_sequence={w1,w2}。

5.2)对于b1∈ublacklist/pos_sequence,其中

5.3)计算当前状态序列status_sequence2与危险状态序列集ublacklist/pos_sequence的最小距离为dblack=1。

5.4)对于w1∈uwhitelist/pos_sequence,其中对于w2∈uwhitelist/pos_sequence,其中

5.5)计算当前状态序列status_sequence与安全状态序列集uwhitelist/pos_sequence的最小距离为dwhite=2。

5.6)计算威胁度转步骤(6)。

步骤(6),将计算得到的威胁度和预设的安全风险阈值进行比较,pthreaten>xsafe,则确定当前状态序列status_sequence中的pos_sequence值对应的电网正在遭受电力业务报文攻击。

图4为根据本发明实施方式的基于业务逻辑的电力业务报文攻击识别系统400的结构示意图。如图4所示,本发明的实施方式提供的基于业务逻辑的电力业务报文攻击识别系统400,包括:当前状态序列确定单元401、危险状态序列集和安全状态序列集确定单元402、威胁度确定单元403和电力业务报文攻击识别单元404。

优选地,所述当前状态序列确定单元401,用于从电力业务报文中获取一个当前状态节点的多点信号值序列和多点信号地址序列,根据所述多点信号地址序列确定与所述当前状态节点对应的控制块,并将所述多点信号值序列添加到所述控制块的状态序列上,获取当前状态序列。

优选地,所述危险状态序列集和安全状态序列集确定单元402,用于根据所述当前状态序列的多点信号地址序列分别确定与所述当前状态序列对应的危险状态序列集和安全状态序列集。

优选地,所述威胁度确定单元403,用于根据所述当前状态序列、危险状态序列集和安全状态序列集确定所述当前状态序列的威胁度。

优选地,其中所述威胁度确定单元403,包括:危险状态序列集匹配模块和安全状态序列集匹配模块。

所述危险状态序列集匹配模块,用于将所述当前状态序列与所述危险状态序列集进行匹配,若所述当前状态序列与所述危险状态序列集匹配成功,则确定所述当前状态序列的威胁度为1。

所述安全状态序列集匹配模块,用于若所述当前状态序列与所述危险状态序列集匹配不成功,则将所述当前状态序列与所述安全状态序列集进行匹配,若所述当前状态序列与所述安全状态序列集匹配成功,则确定所述当前状态序列的威胁度为0。

优选地,其中所述危险状态序列集匹配模块,将所述当前状态序列与所述危险状态序列集进行匹配,包括:

步骤11,将当前状态序列status_sequencenow=(s′,pos_sequencenow)中s′=(status1,status2,…,statusn)的最新多点信号值序列statusn添加到缓存状态中,其中,n1的初始值为0,添加后

步骤12,顺序遍历危险状态序列集中的所有规则,若满足n2>n-n1andi≠t,则继续遍历;若满足n2>n-n1andi=t,则表示匹配结束,遍历结束,继续执行安全状态序列集匹配模式;若满足n2<n-n1,则进入步骤13;否则,进入步骤14;

步骤13,将的后n2项保留,则并将n1置为n-n2,则

步骤14,判断是否与bi相同;其中,若相同,则将只保留最后一项,则同时将n1置为n-1,并确定所述当前状态序列与所述危险状态序列集匹配成功,直接确定所述当前状态序列的威胁度为1;否则,返回步骤12继续遍历。

优选地,其中所述安全状态序列集匹配模块,将所述当前状态序列与所述安全状态序列集进行匹配,包括:

步骤21,将当前状态序列status_sequencenow=(s′,pos_sequencenow)中s′=(status1,status2,…,statusn)的最新多点信号值序列statusn添加到缓存状态中,其中,n3的初始值为0,添加后

步骤22,顺序遍历安全状态序列集中的所有规则,若满足n4>n-n3andi≠e,则进入步骤26;若满足n4>n-n3andi=e,则表示匹配失败,遍历结束;若满足n4<n-n3,则进入步骤23;否则,进入步骤24;

步骤23,将的后n4项保留,则并将n3置为n-n4,则

步骤24,判断是否与wi相同,若不相同,则返回步骤22,继续遍历;否则,进入步骤25;

步骤25,将只保留最后一项,则同时将n3置为n-1,将init_status置为1,确定所述当前状态序列与所述安全状态序列集匹配成功,直接确定所述当前状态序列的威胁度为0;其中init_status的初始值为0,用于标识是否进行一次安全状态序列完全匹配;

步骤26,若init_status为0,则进入步骤27,反之进入步骤28;

步骤27,init_status为0,判断是否为wi的子集,若是,则确定所述当前状态序列与所述安全状态序列集匹配成功,直接确定所述当前状态序列的威胁度为0;否则,继续遍历安全状态序列集中的其他规则,返回步骤22;

步骤28,判断是否与wi的前n-n1项相同,若是,则确定所述当前状态序列与所述安全状态序列集匹配成功,直接确定所述当前状态序列的威胁度为0;否则,继续遍历安全状态序列集中的其他规则,返回步骤22。

优选地,其中所述威胁度确定单元403,还包括:第一最小距离和第二最小距离确定模块以及威胁度确定模块。

所述第一最小距离和第二最小距离确定模块,用于分别计算所述当前状态序列与所述危险状态序列集的第一最小距离,以及所述当前状态序列与所述安全状态序列集的第二最小距离。

所述威胁度确定模块,用于根据所述第一最小距离和第二最小距离计算所述当前状态序列的威胁度。

优选地,其中所述第一最小距离和第二最小距离确定模块利用如下方式计算所述当前状态序列与所述危险状态序列集的第一最小距离,包括:

其中,dblack为第一最小距离;当前状态序列为status_sequencenow=(s′pos_sequencenow),s′=(status1,status2,…,statusn);危险状态序列集为对于如果否则columns′表示矩阵s′的列数,bi(status_value)表示bi状态序列中status_value值,bi(status_value)[0,…,columns′-1]表示bi(status_value)矩阵的第0列到columns′-1列;表示矩阵的第i列,函数d(a,b)表示求行向量a=(x1,x2,…,xn)与b=(y1,y2,…,yn)的欧几里得距离,则

优选地,其中所述第一最小距离和第二最小距离确定模块,利用如下方式计算所述当前状态序列与所述安全状态序列集的第二最小距离,包括:

其中,dwhite为第二最小距离当前状态序列为status_sequencenow=(s′,pos_sequencenow),s′=(status1,status2,…,statusn);;安全状态序列集对于如果否则columns′表示矩阵s′的列数,wi(status_value)表示wi状态序列中status_value值,则wi(status_value)[0,…,columns′-1]表示wi(status_value)矩阵的第0列到columns′-1列;表示矩阵的第i列,函数d(a,b)表示求行向量a=(x1,x2,…,xn)与b=(y1,y2,…,yn)的欧几里得距离,则

优选地,其中所述威胁度确定模块,根据所述第一最小距离和第二最小距离计算所述当前状态序列的威胁度,包括:

其中,pthreaten为当前状态序列的威胁度;dblack为第一最小距离;dwhite为第二最小距离。

优选地,所述电力业务报文攻击识别单元404,用于将所述当前状态序列的威胁度和预设的安全风险阈值进行比较,并当所述当前状态序列的威胁度大于等于预设的安全风险阈值时,确定电网遭受到了电力业务报文攻击。

优选地,其中所述电力业务报文攻击识别单元404,还用于:若所述当前状态序列的威胁度小于预设的安全风险阈值,则确定电网未遭受到电力业务报文攻击。

本发明的实施例的基于业务逻辑的电力业务报文攻击识别系统400与本发明的另一个实施例的基于业务逻辑的电力业务报文攻击识别方法100相对应,在此不再赘述。

已经通过参考少量实施方式描述了本发明。然而,本领域技术人员所公知的,正如附带的专利权利要求所限定的,除了本发明以上公开的其他的实施例等同地落在本发明的范围内。

通常地,在权利要求中使用的所有术语都根据他们在技术领域的通常含义被解释,除非在其中被另外明确地定义。所有的参考“一个/所述/该[装置、组件等]”都被开放地解释为所述装置、组件等中的至少一个实例,除非另外明确地说明。这里公开的任何方法的步骤都没必要以公开的准确的顺序运行,除非明确地说明。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1