本申请涉及智能电网安全领域,具体涉及一种用于电力终端的异常数据的检测方法,同时涉及一种用于电力终端的异常数据的检测装置。
背景技术:
能源是人类生存发展的重要物质资源,在第二次工业革命后,电力成为人类社会使用的主要能源之一。在电力系统中,电网的主要作用是分配电能和传输电能。在21世纪网络时代,电网作为能源基础设施也必然离不开信息化,信息化在具有高度灵活性的同时,也带来了很多威胁和不确定性。可远程访问和控制的实时scada,可远程访问和控制的plc在给我们带来便利的同时,也给恶意攻击者以可乘之机。为了保障电网的安全运行,需要研究针对电力工控系统的攻击检测、识别和防范方法。
技术实现要素:
本申请提供一种用于电力终端的异常数据的检测方法,解决了针对电力工控系统的攻击检测、识别和防范方法的需求。
本申请提供一种用于电力终端的异常数据的检测方法,其特征在于,包括:
获取电力终端的流量历史数据,并对所述数据进行预处理;
根据所述数据的先验知识,构造电力终端数据特点的特征;
将电力终端数据分为训练集和测试集,对神经网络进行训练;
将需要预测的电力终端数据作为输入数据,通过所述经过训练的神经网络输出所述需要预测的电力终端数据是正常数据或是异常数据。
优选的,所述获取电力终端的流量历史数据,并对所述数据进行预处理,包括:
采集电力终端的流量历史数据;
提取所述电力终端的历史流量数据中的tcp协议内容数据和电力工控协议内容数据;
将采集到的数据记为d,其中数据行数为m,数据列数为n,其中正样本数据为p,负样本数据为n。
优选的,在对所述数据进行预处理的步骤之后,还包括:
使用分箱法对所述tcp协议内容数据和电力工控协议内容数据进行去噪处理。
优选的,在使用分箱法对所述tcp协议内容数据和电力工控协议内容数据进行去噪处理的步骤之后,还包括:
若所述tcp协议内容数据和电力工控协议内容数据组成的数据集中,正负样本数据不均衡,具体的,通过下面的方法平衡数据集中的样本数量,
若数据集中负样本数据种类大于正样本数据种类,则对数据进行过采样处理,
若数据集中负样本数据种类小于正样本数据种类,则数据进行欠采样处理,
优选的,所述根据所述数据的先验知识,构造电力终端数据特点的特征,包括:
计算固定源ip地址到因定目的ip地址中的报文长度;
计算固定源ip地址到固定目的ip地址中工控报文长度;
计算固定源ip地址到固定目的ip地址中不同协议格式控制域八位位组1的值;
计算计算固定源ip地址到固定目的ip地址中不同协议格式报文数量;
计算固定源ip地址到固定目的ip地址中不同协议格式控制域八位位组2的值;
计算数据中不同协议格式报文数量;
计算固定源ip地址到固定目的ip地址中不同协议格式控制域八位位组3的值;
计算固定源ip地址到固定目的ip地址中不同协议格式报文数量;
计算固定源ip地址到固定目的ip地址中不同协议格式控制域八位位组4的值;
计算工控协议报文长度占报文总长度的比例。
优选的,所述将电力终端数据分为训练集和测试集,对神经网络进行训练,包括:
具体的可以使用tensorflow工具,搭建lstm神经网络架构;
可以将所述数据集按照1:5的比例分为训练集d_tr和测试集d_val;
使用训练集对所述lstm神经网络进行训练,使用测试集对训练完成的lstm神经网络进行测试。
优选的,所述具体的可以使用tensorflow工具,搭建lstm神经网络架构,具体的包括:
初始化序贯模型;
设置所述lstm神经网络的输入维数为训练集维数,设置输出维数;
设置所述lstm神经网络的全连接层的输入节点数,使用的激活函数relu,所述激活函数表达式为为:f(x)=max(0,x)。
优选的,所述可以将所述数据集按照1:5的比例分为训练集d_tr和测试集d_val,还包括:
将训练集和测试集平均数一致e(d_tr)≈e(d_val),训练集和测试集中位数一致var(d_tr)≈var(d_val),训练集和测试集方差一致m(d_tr)≈m(d_val)。
优选的,所述将需要预测的电力终端数据作为输入数据,通过所述经过训练的神经网络输出所述需要预测的电力终端数据是正常数据或是异常数据,包括:
将需要预测的电力终端报文数据记为d_ts,把电力终端报文输入lstm神经网络;
所述lstm神经网络办出所述报文数据属于正样本的概率p(d_ts|label=1)和负样本的概率值p(d_ts|label=0);
若预测为正样本的概率值大于预测为负样本的概率值,则输出该样本为正常数据,否则输出该样本为异常数据。
本申请同时提供一种用于电力终端的异常数据的检测装置,其特征在于,包括:
数据获取单元,用于获取电力终端的流量历史数据,并对所述数据进行预处理;
特征构造单元,用于根据所述数据的先验知识,构造电力终端数据特点的特征;
训练单元,用于将电力终端数据分为训练集和测试集,对神经网络进行训练;
输出单元,用于将需要预测的电力终端数据作为输入数据,通过所述经过训练的神经网络输出所述需要预测的电力终端数据是正常数据或是异常数据。
本申请提供一种用于电力终端的异常数据的检测方法,通过对电力终端的流量历史数据进行数据挖掘分析,实现对电力终端异常数据的检测。通过数据预处理、特征提取、搭建神经网络模型、训练神经网络模型,搭建机器学习模型。再利用该模型对电力终端的异常数据进行判断,快速准确发现电力终端的异常数据。
附图说明
图1是本申请实施例提供的一种用于电力终端的异常数据的检测方法流程示意图;
图2是本申请实施例涉及的lstm神经网络搭建流程图;
图3是本申请实施例涉及的电力终端异常数据预测流程示意图;
图4是本申请实施例涉及的电力终端的异常数据的检测方法的详细过程示意图;
图5是本申请实施例涉及的一种用于电力终端的异常数据的检测装置示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
请参看图1,图1是本申请提供的一种用于电力终端的异常数据的检测方法流程示意图,下面结合图1对本申请实施例提供的方法进行详细说明。
步骤s101,获取电力终端的流量历史数据,并对所述数据进行预处理。
采集电力终端的流量历史数据,提取所述电力终端的历史流量数据中的tcp协议内容数据和电力工控协议内容数据,在本实施例中,提取的是iec60870-5-104协议内容。
将采集到的数据记为d,其中数据行数为m,数据列数为n,其中正样本数据为p,负样本数据为n。对于提取出的电力终端tcp协议内容数据,包括,src:报文源ip地址;dst:报文目标ip地址;src_port:报文源端口号;dst_port:报文目标端口号;seq:序列号的值;ack:首部确认标志值;len:报文长度;flag:报文标志值;check_sum:16位校验和值)和提取出的电力工控协议内容数据(包括,protocol_type:协议类型;protocol_format:协议格式;data:工控协议报文长度;control_domain_1:控制域八位位组1的值;control_domain_2:控制域八位位组2的值;control_domain_3:控制域八位位组3的值;control_domain_4:控制域八位位组4的值。然后,使用分箱法对所述tcp协议内容数据和电力工控协议内容数据进行去噪处理,即通过临近值的均值替代噪声值,实现对电力终端报文数据的去噪。
若所述tcp协议内容数据和电力工控协议内容数据组成的数据集中,正负样本数据不均衡,具体的,通过下面的方法平衡数据集中的样本数量,
若数据集中负样本数据种类大于正样本数据种类,则对数据进行过采样处理,即通过随机复制样本中少数类来增加样本实例数量,具体的,在本方法中负样本为少数类,则
若数据集中负样本数据种类小于正样本数据种类,则数据进行欠采样处理,即通过随机消除占多数的样本来平衡类分布,具体的,
步骤s102,根据所述数据的先验知识,构造电力终端数据特点的特征。
具体的步骤如下:
计算固定源ip地址到因定目的ip地址中的报文长度;
计算固定源ip地址到固定目的ip地址中工控报文长度;
计算固定源ip地址到固定目的ip地址中不同协议格式控制域八位位组1的值;
计算计算固定源ip地址到固定目的ip地址中不同协议格式报文数量;
计算固定源ip地址到固定目的ip地址中不同协议格式控制域八位位组2的值;
计算数据中不同协议格式报文数量;
计算固定源ip地址到固定目的ip地址中不同协议格式控制域八位位组3的值;
计算固定源ip地址到固定目的ip地址中不同协议格式报文数量;
计算固定源ip地址到固定目的ip地址中不同协议格式控制域八位位组4的值;
计算工控协议报文长度占报文总长度的比例。
步骤s103,将电力终端数据分为训练集和测试集,对神经网络进行训练。
具体的可以使用tensorflow工具,搭建lstm神经网络架构,搭建流程请参看图2,首先初始化序贯模型。然后,设置所述lstm神经网络的输入维数据为训练集维数,设置输出维数,具体的,添加一个lstm神经网络层,其输入维数为训练集维数,输出维数为32。具体的,model.add(lstm(16,input_shape=(1,x_train.shape[2]))),其中x_train为训练集。
设置所述lstm神经网络的全连接层的输入节点数,使用的激活函数relu,所述激活函数表达式为为:f(x)=max(0,x)。包括:添加一个全连接层(dense),设置dense输入节点数为32,激活函数activation=’relu’,relu(therectifiedlinearunit)激活函数表达式为:f(x)=max(0,x)。具体的,model.add(dense(units=32,activation=’relu’))。
接下来再添加一个全连接层(dense),设置dense层输入节点32,激活函数activation=’softmax’,即为归一化指数函数。具体的model.add(dense(cat_num,activation=’softmax’)),式中cat_num为上层神经元输入维数。
最后对模型进行编译,设置评价方法为’accuracy’,优化方式为’adam’,损失函数为’binary_crossentropy’,即使用对数损失。具体的,model.complie(loss=’binary_crossentropy’,optimizer=‘adam’,metrics=[‘accuracy’])。完成搭建lstm神经网络架构。
在搭建完lstm网络模型后,可以将所述数据集按照1:5的比例分为训练集d_tr和测试集d_val,保证训练集和测试集中数据分布一致;将训练集和测试集平均数一致e(d_tr)≈e(d_val),训练集和测试集中位数一致var(d_tr)≈var(d_val),训练集和测试集方差一致m(d_tr)≈m(d_val)。
针对lstm神经网络进行训练,设置循环次数epoch=10。具体的,model.fit(x_train,y_train,validation_data=(x_test,y_test),epoch=10)。式中,x_train和y_train分别为训练集中的特征和标签列;x_test和y_test分别为测试集中特征和标签列。完成对神经网络模型的训练。
步骤s104,将需要预测的电力终端数据作为输入数据,通过所述经过训练的神经网络输出所述需要预测的电力终端数据是正常数据或是异常数据。
将需要预测的电力终端报文数据记为d_ts,把电力终端报文输入lstm神经网络;所述lstm神经网络办出所述报文数据属于正样本的概率p(d_ts|label=1)和负样本的概率值p(d_ts|label=0);若预测为正样本的概率值大于预测为负样本的概率值,则输出该样本为正常数据,否则输出该样本为异常数据,具体的使用所述经过训练的神经网络输出所述需要预测的电力终端数据是正常数据或是异常数据的流程请参看图3,从图3中可以看出,输出一条需要预测的电力终端报文数据记为d_ts,通过所述经过训练的神经网络,若最终根据lstm神经网络办出所述报文数据属于正样本的概率小于属于正样本的概率,则输出该样本为异常数据。
从获取电力终端的流量历史数据,到搭建lstm神经网络并对所述神网络进行训练,最终通过所述lstm神经网络输出需要预测的电力终端数据是正常数据或是异常数据的详细过程请参看图4.
与本申请提供的一种用于电力终端的异常数据的检测方法,相对应的,本申请同时提供一种用于电力终端的异常数据的检测装置500,其特征在于,包括:
数据获取单元510,用于获取电力终端的流量历史数据,并对所述数据进行预处理;
特征构造单元520,用于根据所述数据的先验知识,构造电力终端数据特点的特征;
训练单元530,用于将电力终端数据分为训练集和测试集,对神经网络进行训练;
输出单元540,用于将需要预测的电力终端数据作为输入数据,通过所述经过训练的神经网络输出所述需要预测的电力终端数据是正常数据或是异常数据。
本申请提供的一种用于电力终端的异常数据的检测方法,通过对电力终端的流量历史数据进行数据挖掘分析,实现对电力终端异常数据的检测。通过数据预处理、特征提取、搭建神经网络模型、训练神经网络模型,搭建机器学习模型。再利用该模型对电力终端的异常数据进行判断,快速准确发现电力终端的异常数据。
以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员依然可以对本发明的具体实施方式进行修改或者等同替换,而这些未脱离本发明精神和范围的任何修改或者等同替换,其均在申请待批的本发明的权利要求保护范围之内。