基于神经网络的电网假数据注入攻击检测方法研究
2020-12-09蒋正威孙伟乐赵友国隋向阳
蒋正威,张 超,孙伟乐,赵友国,隋向阳
(1.国网浙江省电力有限公司,杭州 310007;2.国网浙江省电力有限公司杭州供电公司,杭州 310009;3.东方电子股份有限公司,山东 烟台 264000)
0 引言
智能电网融合了大数据、人工智能和网络通信等技术,具备更强的感知、通信和决策能力,显著提升了电力系统的灵活性和可靠性。智能电网高度依赖运行数据进行决策,而恶意网络攻击,如FDIA(假数据注入攻击)等可以篡改SCADA(数据采集与监控系统)中的量测数据,进而影响智能电网状态估计的结果,严重威胁智能电网运行的经济性与安全性。在常见的网络攻击方式中,FDIA 是对电网状态估计威胁最大的一种[1-2]。与分布式拒绝服务攻击和网络拥塞攻击等其他攻击方式不同,FDIA 可以绕过传统的基于残差的假数据识别机制[3]。在现有的状态估计程序中,FDIA 可以反复实施而无法被检测,因此需要研究更为先进的检测方法以防范由FDIA 所产生的网络威胁。
FDIA 的产生机制和检测方法是当前国内外学者关注的研究热点之一。FDIA 的产生机制是根据已知的全部或部分电网拓扑和参数信息,产生满足电网拓扑约束的注入攻击,因此可以绕过传统基于残差的坏数据检测。早期的FDIA 产生机制针对直流(潮流方程为线性方程)状态估计,系统模型分析相对简单,如文献[4-5];近来,多种方法被用来模拟交流状态估计中假数据的产生机制,如文献[6-7],其中,文献[7]研究了部分拓扑信息已知条件下交流状态估计的注入攻击产生机制。多个学科的分析方法被用于直流或交流状态估计中的FDIA 检测,比较有代表性的有统计学方法[8]、卡尔曼滤波[9]、稀疏优化[10]、状态预测[11]、网络理论[12]、时间序列[13]和机器学习[14]等。在上述的研究成果中,文献[8-14]都是针对直流状态估计中的假数据注入攻击,而这类方法是否能够有效检测出交流状态估计中的假数据注入攻击仍有待验证;此外,针对已知系统拓扑信息的假数据注入攻击,文献[14]利用卷积神经网络对空间数据特征识别的优势进行攻击检测,通过算例发现深度学习神经网络相较于其他类型的方法对于电力系统空间拓扑信息被攻击者掌握后的假数据注入攻击有更好的检测能力。然而,对于文献[7]中已知部分拓扑信息条件下针对交流状态估计产生的FDIA,上述方法的有效性仍待验证(部分拓扑信息可能使卷积神经网络对空间数据特征识别的优势难以有效发挥)。
尽管相关方法已经实现了对直流状态估计中FDIA 的检测,但随着电网拓扑结构越来越复杂,数据采集量越来越多,上述方法无法有效应对所有可能的攻击场景(如交流状态估计情况下的有效性待验证)。为进一步提高FDIA 检测的准确性,本文提出基于DWT(离散小波变换)和DNN(深度神经网络)的FDIA 检测方法。其中DNN 本质属于循环神经网络,能够从数据的时间特征出发弥补卷积神经网络仅关注数据空间特征的不足。
1 问题描述
1.1 状态估计和残差检测
电网状态估计的本质是利用传感器所感知的系统运行状态的采样信息来估计系统实际运行状态。典型的采样信息包括节点电压幅值、节点注入功率和输电线路潮流。基于上述采样信息和交流潮流方程h(·),可以构建采样信息z 与实际运行状态x 之间的函数关系:
式中: e 代表附加的采样噪声,其方差用R 表示。状态估计的目的是根据式(1)的函数关系找到一组实际运行状态x 的估计值,该过程等价于求解下面的加权最小二乘问题:
式中: 权重矩阵W=diag{R-1}。一般通过迭代近似来求解式(2),常用的方法有牛顿-拉夫逊算法。以加权最小二乘方法得到的状态估计值是在白噪声条件下的最优估计,因此可以避免附加采样噪声对系统运行状态的干扰。当传感器发生故障而采集到坏数据时,目前的电力系统均采用基于残差的坏数据检测方法: 比较采样信息z 与状态估计值所对应的采样值之间的残差大小,当残差的范数(事先给定的阈值)时,则认为状态估计结果受到了坏数据的干扰,否则认为状态估计结果可信。
1.2 FDIA 产生机制
FDIA 的目的是误导调控中心对系统实际运行状态的感知,使调控中心基于被攻击后的状态估计结果做出错误决策,为达到误导调控中心的目的,FDIA 将传输到调控中心的采样信息恶意篡改为za=z+Δz。若实施FDIA 的攻击者已知电网全局拓扑信息h(·),则假数据中的Δx与Δz 满足:
在上述情况下,传统坏数据残差检验的结果为:
可见,FDIA 可以绕过传统基于残差的坏数据检测,实施上述这种FDIA 的具体过程详见文献[6]。然而,已知全局拓扑信息h(·)对于FDIA的实施者来说过于理想化,实际情况中FDIA 的实施者很可能只利用到部分拓扑信息,考虑到上述更加实际的攻击场景,文献[7]提出了仅利用系统部分拓扑信息的FDIA 产生方法。
文献[7]基于给定的部分节点相角差来构建满足基尔霍夫电流定律的FDIA。特别是受攻击节点与未受攻击节点相角差已知时,很容易计算出受攻击节点对应的注入功率,据此可以篡改SCADA采集信息中的节点注入功率值。按照上述思想,文献[7]提出了构造攻击交流系统状态估计的FDIA算法,流程为:
(1)初始化受攻击系统的电压幅值、相角向量[V,θ]T=[V0,θ0]T。
(2)根据当前电压幅值、相角[V,θ]T计算出受攻击的采样信息[P,Q,p,q]T(分别为节点注入有功、无功功率,线路有功、无功潮流)。
(3)检查受攻击的采样信息是否满足运行范围约束,若满足约束则输出受攻击的采样信息作为FDIA;否则继续下一步。
(4)更新电压幅值、相角为[V,θ]T+[ΔV,Δθ]T,其中变化量[ΔV,Δθ]T要通过求解优化问题来获取。回到步骤(2)。
在步骤(4)中提到的优化问题具体为(其中所有变量均为向量):
式中: 目标函数中的Si为松弛变量;∂P/∂V 对应潮流方程雅可比矩阵的相应部分;G 为系数矩阵,将节点电压相角转换为线路两端相角差。优化式(5)的详细内容参考文献[7]。通过求解上述优化问题,可以得到变化量[ΔV,Δθ]T来逐步迭代得到FDIA,这种形式的FDIA 不仅可以绕过基于残差的坏数据检测,还能够绕过一些基于直流模型状态估计的FDIA 检测方法[7]。
2 基于DWT 和DNN 的FDIA 检测方法
根据前文所述,构造满足基尔霍夫定律的FDIA 可以绕过基于残差的坏数据检测,而且这种具有空间相关性的FDIA 很难在仅利用单一时刻采样信息的条件下被检测出来。考虑到一段时间内电力系统同步采样信息是一组具有时间-空间相关性的矩阵,这种时间相关性在暂态和动态过程中尤为明显,因此利用同步采样信息的时间相关性作为实施FDIA 检测的突破口是可行的[16]。
2.1 FDIA 检测流程
FDIA 检测模型一般分为训练和检测两个环节,训练的目的是确定DNN 中的有关参数用以实现FDIA 的在线检测,因此这两个环节在过程上是相似的,区别在于训练环节先确定DNN 中未知参数,检测环节利用训练好的DNN 进行在线检测,即实现有/无FDIA 的二分类问题。
图1 为本文所提出的FDIA 检测方法流程。该检测方法以电网终端将采集到的运行状态信息z 为输入(比如节点电压幅值和相角),输入信息首先上传到SCADA 中的状态估计模块,计算得到系统运行状态估计值,若估计值在残差检测环节未发现假数据,则存入状态历史数据库(历史数据库一般存储容量有限,本文假设其容量上限为60 个时刻的状态估计值,并按照时间顺序由新数据覆盖原始数据)。虚线框内为本文所提的FDIA检测主要步骤: 状态历史数据库中近期60 个采样时刻的状态估计值经小波变换提取时-频特征后,作为空间特征数据又存入特征历史数据库,接下来再从特征历史数据库中提取近期n 个(数量越多则检测准确度越高,但会带来更大计算负担)空间特征数据输入到基于深度神经网络的攻击检测环节,提取其中的时间特征,并进行有/无FDIA 的分类并输出检测结果(有,输出1;无,输出0)。
2.2 状态特征提取器模型
小波变换是状态特征提取环节所采用的数字信号处理方法,该方法能够提取时间序列的时-频特征,适用于非平稳输入信号。
连续时间小波变换[15]可表示为:
图1 FDIA 检测模型
式中: x(t)为输入连续时间信号;ψ(t)为母小波函数;a 和b 分别为缩放因子和位置参数,代表时-频多尺度特征。
DWT[15]将时间序列x(t)在缩放因子a=2j和位置参数b=2j×k(j,k 均为整数)时进行小波变换。常用的多尺度DWT 可以将长度为2M的时间序列x(t)分解成至多M 层的小波函数:
式中: φjk(t)=2-j/2φ(2-jt-k),φ(t)为尺度函数又称父小波函数;ajk和djk为相应的近似系数。
本文选择对于数据特征具有鲁棒性的db 或sym 族小波函数来进行小波变换,可供选择的参数有两组,分别是滤波器长度为4,尺度数为4或滤波器长度为16,尺度数为2。两组参数的最优性通过算例进行分析。
在本文中,多个采样时刻下状态估计所得到的节点电压幅值和相角(设系统中节点总数为N)估计值组成了时间序列x(t),利用多尺度DWT可以得到相应的小波分解。由于每个具体时刻t 都有一系列的近似系数ajk和小波系数djk,直接采用近似系数来表征状态估计值的时-频特性存在数据量过于庞大的问题。文献[16]采用小波变换中近似系数的统计特征作为分类器的特征输入,验证了以近似系数统计特征实施分类的可行性,故本文在此基础上采用所有时刻ajk和djk的均值与方差作为输入时间序列的时-频特征进行提取。根据式(7)可知,小波分解中系数总数为16,考虑到多时段系数的均值和方差,以及节点数,每个节点检测的电压幅值和相角,上述变量数量相乘后总计为64N 个特征信息将作为下节中攻击检测器模型的单时段的特征输入,即ft。
2.3 攻击检测器模型
攻击检测环节采用现有的DNN 单元来构造RNN(循环神经网络),目的是通过学习DWT 提取的时-频空间特征进而学习出数据的时间特征,并以此来检测是否存在FDIA。RNN 是一种考虑时间-空间数据特征的典型网络,在本文中由两种类型的网络层组成,分别是GRU(门循环单元)和全连接层。两种网络层通过串联组成多层神经网络,具体结构见图2。
图2 DNN 结构
图2 中构建的攻击检测器有五层网络,分别为:
(1)数据输入层
由图1 中的特征历史数据库提取多段历史特征,即上文中ajk和djk的均值与方差的历史数据,作为神经网络的输入,构造数据输入层。每个时段的特征输入ft都包含64N 个特征信息,ω 个时段特征输入对应ft,ft-1,…,具体时段数的选择可通过训练过程进行参数调整。
(2)GRU 结构层1
GRU 是长短时记忆网络的一种变体,构造更为简单,在训练大量数据时具有用时少、收敛快的优点。GRU 用来提取数据输入层的时序特征,令{ft-ω-1,…,ft}代表GRU 的输入,{gt-ω-1,…,gt}代表输出,则二者关系为:
式中: sigm 代表sigmoid 函数作为激活函数。在式(8)—式(10)中,除输入、输出外,其余参数均为GRU 中学习而来的参数。
在GRU 结构层1 中首先输入来自上一层的64Nω 的特征,因此本层的神经元数量可设置为1024,以此可以学习出特征数据中的时间特征。
(3)GRU 结构层2
将上一层GRU 的输出作为本层GRU 的输入,其余结构与步骤(2)中一致,神经元数量也为1024,多层GRU 可以从输入数据中提取更为抽象的特征。
(4)全连接层1
本层的神经元数量为512,此外,数据输入层的输入在经过两层GRU 以后,其时间-空间特征更为抽象,但是过多的参数训练可能导致过拟合问题。本层引入随机淘汰机制,淘汰率为30%,随机剔除部分特征防止过拟合的发生。
(5)全连接层2
本层神经元数量为128,该层在上一层基础上继续随机剔除部分特征以防止过拟合,淘汰率为30%,并输出检测结果。
两个全连接层能够实现从特征到判断结果的映射,其输入-输出关系表示为:
式中:x 和y 分别代表全连接层的输入(特征)和输出(判断结果,0 代表无攻击,1 代表有攻击),其余参数通过学习获取;actv 代表此处的激活函数。
DNN 环节中的参数通过大量训练集数据进行调整,在参数确定以后可直接按照图1 中的流程进行FDIA 在线检测,具体过程不再赘述。
3 算例分析
算例分析采用IEEE 118 节点系统来验证本文所提的FDIA 检测方法的有效性。随机产生系统正常运行工况200 000 次,运行工况之间的变化由系统动态仿真过程实现,在100 个工况下注入已知全局拓扑的FDIA,具体见式(3);另外在400 个工况下注入部分拓扑已知的FDIA,具体见式(5),训练集与测试集按照2∶1 进行分配。计算条件为一台具有Intel Pentium G3260 3.3 GHz CPU 和4G 内存的双核计算机。由于小波分析程序成熟,本文采用基于MATLAB 平台的小波分析工具箱处理每个状态变量对应的一维离散时间序列的小波分析,相关过程参考MATLAB 工具箱说明。
3.1 FDIA 检测有效性分析
首先验证本文所提检测方法的有效性。针对2.3 节中输入层特征数据的时间窗口宽度ω=5,采样周期为60 ms。
表1 所示分析结果验证了本文所提的FDIA检测方法的有效性。无论测试集还是训练集,本文的FDIA 检测方法的正确率均达到90%以上,因此可由测试集与训练集正确率的比较说明本文中的DNN 避免了过拟合问题。表1 中的正判错误率代表原本没有攻击的情况被错判为有攻击,反判错误率与之相反。从训练时间来看,DNN 需要7 633 s 的训练时间是整个过程中最耗时的部分,因此DNN 的训练部分只能离线进行,而在线检测耗时极短,平均只需要12 ms。
表1 FDIA 检测方法的检测结果 %
3.2 方法比较分析
文献[9-10]研究了直流状态估计中FDIA 的检测方法,所针对的FDIA 是在已知全局拓扑信息条件下产生的。将本文中使用的测试集分别运用于文献中的检测方法,获得检测正确率分别为70.25%和80.68%,均低于本文所提的FDIA 检测方法。
因为交流状态估计中考虑了线损和传输线路的电压降,所以交流状态估计比直流状态估计更为准确。一方面,准确的交流状态估计导致FDIA攻击的产生难度增加;另一方面,这也使得攻击向量的可识别性降低,这种低可识别性的FDIA攻击更容易越过直流FDIA 检测机制(直流FDIA针对的直流状态估计本身与实际状态值存在较大偏差,因此只能检测出距离实际状态值更远的FDIA 攻击)。
4 结语
本文针对已知部分拓扑信息的FDIA 提出了基于DWT 和DNN 的检测方法。该方法从多时段状态估计结果中提取时-频特征,并利用DNN 对特征进行进一步的抽象并判断是否受到FDIA 的攻击。仿真分析结果表明本文所提方法能够有效检测出状态估计是否受到FDIA 的影响。
下一步的研究工作主要是减少DNN 训练集的样本数量,并加快训练速度。