基于拉普拉斯特征映射学习的隐匿FDI 攻击检测
2021-12-01石家宇
石家宇 陈 博 俞 立
智能电网作为下一代电力系统,通过采用先进的数字信息和通信技术能够实现电网各个环节重要运行参数的在线监测和实时信息掌控,并在此基础上整合物联网技术和大数据分析,实现了更环保、更安全和更高效的电力管理[1].在发电侧,由于电能无法大量存储,控制中心需要密切监控电网运行参数,以控制电网中的发电与电能消耗相平衡.在电网侧,系统也需要估计系统的运行状态,将其用于最优潮流算法以制定发电方案,实现经济上的最优调度.因此需要有大量的信息控制设备和通信传感网络接入电网,实时发送各个节点的测量值到控制中心,确保电力系统的高效经济可靠运行.但是通信设施的接入,也让智能电网面临着潜在的网络攻击风险,成为军事或恐怖活动的目标,例如2015 年12 月的乌克兰电网攻击事件,造成了30 个变电站被关闭,约有23 万人无法用电[2].特别地,隐匿虚假数据入侵(False data injection,FDI)攻击可以绕过电力系统中传统的坏数据检测机制,通过篡改测量数据,使得对电力系统的状态估计不准确,进而干扰控制中心决策以扰乱电力市场正常秩序,存在重大的经济和安全隐患[3].
FDI 攻击自2009 年提出以来[4],便受到了国内外学者的广泛关注.针对不同的FDI 攻击场景提出了相应的保护策略和攻击检测方案.在保护策略方面,主要是通过放置相量测量单元(Phasor measurement units,PMU)来增强通信安全.注意到PMU 是配备有全球定位系统(Global positioning system,GPS)技术的测量设备,通过与GPS时间同步,PMU 能够为电网中地理上分散的节点提供精确的同步相量测量,使得攻击者更难以篡改PMU 收集的测量数据[5].然而,高昂的成本却制约着大规模地部署PMU,因此如何找到放置PMU 的关键位置以最大限度地减少PMU 的数量对于保护电力系统免受FDI 攻击起着重要的作用.为此,Kim 等[5]提出了一种关键节点保护机制,通过选择关键节点实施保护以尽可能提高攻击者的攻击成本.文献[6]从图论的角度分析智能电网的结构,提出了一种启发式算法来寻找最佳的测量保护集,达到防御效果.与此同时,在攻击检测方面,Liu 等[7]利用状态测量的时间相关性,以及FDI 攻击的稀疏性来检测广义上的FDI 攻击[8].文献[9]提出了一种分布式状态估计方法,根据估计结果的偏差判断是否遭受FDI 攻击,且能够准确定位被篡改的状态变量.对于具有特殊结构的隐匿FDI 攻击,文献[10−13]则将其看作是一个统计学习问题,把历史数据作为训练样本,根据攻击向量会让正常测量值与被攻击测量值产生“距离”上的变化这一特征[10],采用机器学习方法对测量值做分类,以实现隐匿FDI 攻击检测的目的.具体地,Ozay 等[10]采用了感知机,k 近邻,支持向量机等经典机器学习方法验证其检测效果.Esmalifalak 等[11]提出了分布式的支持向量机(Support vector machine,SVM)方法,验证了机器学习方法在隐匿FDI 攻击检测中的有效性.除了传统的机器学习方法,深度学习因其具有自动提取原始数据特征,能够提取更深层更抽象特征信息的特性,也受到了许多学者的关注.文献[12]便提出了一种基于深度学习的检测机制,采用深度信念网络(Deep belief networks,DBN)作为检测模型,并结合条件高斯−伯努利受限玻尔兹曼 机(Conditional Gaussian-Bernoulli restricted Boltzmann machines,CGBRBM)提取高维时间特征,以降低训练深度神经网络的复杂度与训练时间,仿真结果表明该方法比神经网络和SVM 的检测方法有更高的检测精度.文献[13]则针对交流状态估计中的隐匿FDI 攻击,提出了一种结合小波变换和深度神经网络的检测机制,其中小波变换提取空间上的相关性,深度神经网络则提取时域中的特征.为了得到更好的训练结果,文献[13]构造了20 万个训练样本以保证样本能够包含所有隐匿FDI 攻击特征,最终的训练结果能够很好地提取系统在时域和空间域上的特征,达到了满意的检测精度,但在训练过程中也耗费了大量的时间与计算资源.
虽然传统机器学习方法在检测隐匿FDI 攻击方面取得了一些进展,但都是在训练集和测试集具有高度相似性的前提下得到的,因此当测试集与训练集出现较大差异时,传统机器学习方法将很大可能出现差的学习效果.而且电力系统往往是高度复杂的,其历史数据的维度往往是几百甚至几千维,这使得传统机器学习方法面临“维数灾难”的问题,训练结果容易出现过拟合,进而限制了泛化能力.而近年来的深度学习方法的性能虽然不受维数的限制,但也存在训练时间长、占用大量计算资源的缺陷.因此,在利用机器学习方法检测隐匿FDI 攻击中,通过降维避免训练结果过拟合,减少模型训练时间显得尤为重要.为此,本文提出了基于拉普拉斯特征映射降维的神经网络检测学习机制,通过拉普拉斯特征映射方法来提取攻击向量的信息,将测量数据预先降维处理,再用于训练神经网络得到合适的检测模型.在MATPOWER 中的IEEE 57-bus 上进行了实验验证,并与没有降维预处理的神经网络训练结果,深度神经网络训练结果以及利用主成分分析降维预处理后的训练结果做了对比.实验结果表明,在智能电网的大规模量测数据压缩降维方面,拉普拉斯特征映射相比主成分分析能够很好地提取低维特征,所提出的方法不仅可以有效地检测出隐匿FDI 攻击,而且其泛化性能优于单独使用神经网络和深度神经网络的检测方法.
1 问题描述
1.1 系统状态估计
电力系统中的状态估计是指根据各个总线上仪表的测量数据估计系统的状态,其中测量包括总线电压、总线有功和无功功率,状态变量包括总线电压和电压相角,其交流潮流模型的表达形式为:
其中,x∈RD为电网的状态变量,即节点电压和相角变量,z∈RN为测量向量,是传感器的测量数据,n ∈RN是测量噪声,h(x) 则表示测量值与状态变量之间的非线性关系,其形式由电网的拓扑结构及总线上的参数决定[14].在这里我们假设噪声服从均值为0,协方差矩阵为 Λ 的高斯分布,且系统的状态在一段时间内的变化是缓慢的,因此可以通过在操作点附近泰勒展开,将非线性的交流模型做线性近似,得到直流潮流模型,其数学描述为:
其中,H∈RN×D是测量雅可比矩阵,则状态向量估计可以通过加权最小二乘估计求解得到[15]:
1.2 隐匿FDI 攻击原理
FDI 攻击是指攻击者通过篡改传感器中的测量数据使得系统产生错误的状态估计,进而使控制中心做出错误决策.当电网遭受到攻击时,量测方程(2)变为:
其中,a∈RN为攻击向量.针对攻击信号a,常用的检测方法就是坏数据检测(Bad data detection,BDD)[15],即:
当测量残差超过一定阈值γ >ϵ0,就判断为受到攻击,其中ϵ0为需要设定的阈值.
从BDD 检测机制来看,如果攻击者知道系统的拓扑结构H,可以构造隐匿FDI 攻击向量a=Hc在不改变测量残差的情况下对系统状态估计造成影响[4].当遭遇隐匿FDI 攻击时,由式(5)可得:
从上式可以看出测得的残差γ的大小只受噪声影响,传统的BDD 检测方法并不能检测出隐匿虚假数据入侵攻击.
然而要构造这类攻击也并不容易,攻击者需要掌握电网系统的各种电气参数和拓扑信息 (H雅可比矩阵),或者掌握系统所有的测量信息,利用主成分分析(PCA)构造攻击向量[16].即使攻击者能够掌握这些信息,也会受到各种资源等因素的限制,只能篡改部分测量设备的数据.因此在这里我们定义I={i1,···,ik}表示攻击者无法篡改的测量的下标集合,为对应的补集,则雅可比矩阵H可以拆分为HI和两部分,HI表示集合I中下标对应的行,则为补集中下标对应的行,从而隐匿FDI攻击可以表示为如下形式:
通过上述分析,攻击者可以构建针对直流状态估计的攻击向量,且不会被基于残差的坏数据检测方法检测到.因此如何设计一种隐匿FDI 攻击的检测方法是本文要解决的问题.
2 基于拉普拉斯特征映射降维学习的检测机制
由第1.2 节可知,隐匿FDI 攻击可以绕过传统的坏数据检测,故如何基于机器学方法训练分类器以识别系统是否受到攻击为这一问题提供了可行的解决思路.然而,随着电网规模的不断扩大,测量数据的维数也成倍增长,进而导致机器学习 检测方法面临维数灾难挑战,使得训练结果存在陷入过拟合的风险.为了克服上述缺点,本文提出了如图1 所示的检测机制:
图1 基于拉普拉斯特征映射降维学习的检测机制Fig.1 Detection mechanism based on Laplacian eigenmaps
首先我们采用拉普拉斯特征映射对历史数据进行降维预处理,从而提取低维流形特征,使降维后的数据相比原始数据更易处理,然后借助于神经网络学习方法训练分类器以实现隐匿FDI 攻击信号的检测.
2.1 基于拉普拉斯特征映射的机器学习检测
拉普拉斯特征映射(Laplacian eigenmaps,LE)是一种非线性的降维方法,用局部的角度去构建数据之间的关系,可以反映出数据内在的流形结构[17].它的直观思想是希望相互间有关系的点在降维后的空间中尽可能地靠近,其最小化的目标函数是:
通过最小化目标函数(8),保证了相近的z(i)和z(j)映射后u(i)和u(j)两点仍能够保持相近.目标函数经过整理后可以表示为如下二次型的形式:
其中,u=(u(1),u(2),···,u(m))T,m表示样本集中的样本数量,L=D∑−W为拉普拉斯矩阵,D是一个对角矩阵,满足Dii=jwij,W是一个对称邻接矩阵,且拉普拉斯矩阵L是半正定的.
最终需要求解如下最小化问题:
其中,约束uTDu=1 避免了缩放的影响,最小化目标函数的向量u由广义特征值问题的最小特征值解给出[16]:
求解得到的非零特征值所对应的特征向量就是降维后的输出.
通过上述方法将训练样本降维处理,选择最大的两个广义特征值对应的广义特征向量作为低维流形特征.然后基于低维流形特征,建立如图2 所示的三层神经网络,有输入层、隐藏层和输出层组成[18].
图2 神经网络示意图Fig.2 Neural network
其中,输入层有2 个神经元组成,为原始数据降维后得到的u=(u1,u2)T.隐藏层由5 个神经元组成,通过下式计算得到:
其中,ωh对应每个隐藏层神经元的偏置,ωhi对应输入ui到神经元th的权重,σ则是激活函数σ(x)=最后输出层有2 个神经元组成,当他们的输出值大于0.5 时,分别表示受到攻击与未受到攻击两种检测结果,其表达式为:
其中,υj为对应输出的偏置,υjh为对应输入th到输出yˆj的权重.最后通过求解以下最优化问题来训练得到权重ωhi,υjh和偏置ωh,υj:
其中,ykj为样本xk的标签.综上所述,最终的检测算法步骤归纳如下:
算法 1.
步骤1.收集历史测量数据
步骤2.拉普拉斯特征映射降维预处理
1) 构建邻接矩阵W
ifz(j)在z(i)的k个邻居中
2) 特征映射
求解广义特征问题
Lu=λDu
得到降维处理后的样本
u=(u(1),u(2),···,u(m))T
步骤3.BP 算法训练神经网络
在0 附近初始化权重ωhi,υjh和偏置ωh,υj
b)计算输出层梯度
c)计算隐藏层梯度
d)更新权重ωhi,υjh和偏置ωh,υj
Until 达到停止条件
步骤4.将新的测量放入历史数据降维处理,作为神经网络检测模型的输入,得到检测结果.
3 仿真
本文利用IEEE 57-Bus 系统模型验证所提出隐匿FDI 攻击检测方法的优点和有效性,即:采用LE 降维、PCA 降维的样本集分别训练了神经网络检测模型,以及未降维预处理的样本集训练了神经网络与深度神经网络模型并做对比与分析,其中系统的测量雅可比矩阵H来自MATPOWER 工具箱[19].通过对MATPOWER 中的案例进行潮流计算得到电网的系统状态x∈RD,并用于计算得到系统的量测z∈RN. IEEE 57-Bus 系统如图3 所示,其中状态维数D=113,测量维数N=217,这些测量信息将作为本文提出学习算法的训练样本.
图3 IEEE 57-Bus 系统Fig.3 IEEE 57-Bus system
3.1 仿真设置
在实验中,我们考虑攻击者可以访问系统中的k个测量,可以理解为电网系统中,这k个测量存在被FDI 攻击的隐患,而其余的测量受到保护.例如:在这k个节点配备了PMU,则测量信息不易被篡改.事实上,由于成本限制,电网系统不能在每个节点上设置PMU;与此同时,攻击者往往也只能够入侵电网中的部分测量,因此这种假设符合实际情况.注意到当k ≤104 时,意味着系统中受保护的节点超过状态的维数,从被攻击者的角度,防御方完全可以选取合适的量测节点,使得HIc=0 只有零解,让攻击者无法构造隐匿FDI 攻击[10].因此,在实验中我们选取了k=190,170,150,130四种攻击场景做了仿真验证.且为了令构造的攻击向量更有“实际意义”,能够对智能电网系统造成有效的影响,我们还对攻击引起的状态向量变化做了进一步地限制.
其中,c为隐匿FDI 攻击对系统状态的影响,即隐匿FDI攻击要对智能电网系统中至少一个状态造成超过大小为τ的篡改.由于在现实中针对电力系统的网络攻击案例并不多见,且很难得到真实的数据,因此我们还不能确定τ值的大小,对此我们在仿真实验中设置了τ=1,5,10,15 这4 种情况来分别检验所提出方法的有效性.
此外,为了验证检测模型的泛化能力,我们设置了不同的环境噪声 N(0,σ) ,σ=0.01,0.25,0.50,0.75,1.00.通过求解HIc=0,构造隐匿攻击向量a,并针对不同的τ,k和σ重复1 000 次来分别生成训练和测试样本Z=[z(1),···,z(m)]T.训练和测试的样本中分别包含500个被攻击的样本和500 个未被攻击的样本.根据前文式(7)的隐匿FDI 攻击构造方法,我们设置环境噪声σ=0.01,状态变化阈值τ=10,得到一个篡改了18 个测量数据的隐匿FDI 攻击,其对系统状态估计的影响如图4所示.
由图4 可以看到所构造的隐匿FDI 攻击对系统中的部分状态估计产生了很大的影响.例如:节点20,30,50,51 以及52 的电压相角都出现了不同大小的偏差,而系统的残差几乎没有变化,攻击前的残差为0.0688,攻击后的残差为0.0895.其中节点30 的状态变化如图5 所示,从第20 分钟开始受到隐匿FDI 攻击,攻击持续时间为十分钟.
图4 隐匿FDI 攻击对系统状态估计的影响Fig.4 The effect of stealthy FDI attack on system state estimation
图5 节点30 的状态变化曲线Fig.5 The state curve of node 30
进一步地,在不同环境噪声下的系统被隐匿FDI 攻击前后的平均残差变化如图6 所示,被攻击后的残差变化很小,可见利用残差检测的方法对隐匿FDI 攻击是无效的,且环境噪声变化对残差的影响也很显著.
图6 不同环境噪声下的残差变化Fig.6 Residual change under different environmental noise
3.2 降维预处理
将样本集进行拉普拉斯特征映射降维处理,取最小的两个非零特征值对应的广义特征向量,数据降维后的二维空间分布如图7 所示.
图7 LE 降维后的样本点分布Fig.7 Sample distribution after LE dimension reduction
此外,我们也比较了PCA 降维的效果,采用PCA 方法选择协方差矩阵最大的两个特征值对应的特征向量,将高维数据压缩到二维,降维后的样本点分布如图8 所示.
图8 PCA 降维后的样本点分布Fig.8 Sample distribution after PCA dimension reduction
由图7 和图8 可以看到直接用PCA 方法将数据降到二维丢失了许多主成分信息,降维后样本点是杂糅在一起的,而应用拉普拉斯特征映射降维后,正常的测量数据都聚集在一起,且与被攻击样本有明显的分离,便于机器学习方法找到决策平面.拉普拉斯特征映射降维方法之所以能够很好地区分数据点,是因为两类数据间的距离存在如下的关系[10]:
其中,S表示正常样本的集合,表示被攻击样本的集合,zi,分别为正常测量和被攻击的测量,ai为攻击向量,可以看出被攻击的样本和未被攻击的样本存在一定的距离‖a‖2.拉普拉斯特征映射在构建邻接图的时候也抓取了这些信息,只要选取合适的邻居个数k,就可以使得所有未被攻击的样本点之间有一个非零的权重,且与被攻击的样本无连接.最后通过求解优化问题,使得S中的样本降维后尽可能接近,而且尽可能不包含S¯中的样本,因此具有区 分异常点的特性.
3.3 仿真结果分析
本文采用接受者操作特征(Receiver operating characteristic,ROC)曲线中的假阳性率(False positive Rate,FPR)和准确率(Accuracy,ACC)作为评价各个算法优劣的指标,FPR和ACC计算方式如下:
其中,TP、FP、TN和FN分别表示正确分类的被攻击样本、错误分类的正常样本、正确分类的正常样本和错误分类的被攻击样本.FPR表示正常样本被误分为被攻击的概率,定义为误报率,ACC则为所有样本被正确分类的概率,定义为检测精度.我们希望检测精度高的同时,发生误报的概率也尽可能的低,因为即使是1 %的误报率,在不断生成的测量数据面前,也会产生频繁的误报,对电网控制带来很大影响,所以我们的目标是ACC指标尽可能高,而FPR指标尽可能低,或者为零.
这里取噪声方差为σ=0.01 ,状态变化阈值τ=10,生成原始样本集,用于训练深度神经网络和一个三层的神经网络,并将LE 降维处理后和PCA 降维处理后的样本集分别训练神经网络,其中深度神经网络我们采用了长短时记忆网络(Long short-term memory,LSTM)[20],由输入特征数为217 的输入层,具有100 个隐藏单元的双向LSTM 层,大小为9 的全连接层,softmax 层和分类层5 层结构组成.则它们的迭代收敛效果如图9 所示.由此图可知发现,基于拉普拉斯特征映射降维的神经网络均方误差最小,与深度神经网络的均方误差一致,且收敛速度要比深度神经网络快很多,与而基于主成分分析的神经网络收敛效果不明显,均方误差较大.
图9 收敛效果Fig.9 Convergence performance
然后将训练好的检测模型在另外的测试样本中检验检测精度与误报率,通过多次的训练并测试,得到各个算法的ROC 曲线如图10−11 所示.
图10 四种检测机制在不同隐患测量数k 下的检测精度ACCFig.10 Detection accuracy of four detection mechanisms
图11 四种检测机制在不同隐患测量数k 下的误报率FPRFig.11 The false positive rate of four detection mechanisms
从图10−11 可以看出,基于神经网络的检测方法有较高的检测精度,精度可以达到90 %左右,但是误报率达到了8 %左右,这意味着平均每 100次检测,会错误报警8次,因此在实际当中不能将神经网络方法直接用于隐匿FDI 攻击检测.而采用PCA 降维预处理的训练结果,由于丢掉了大部分主成分信息,检测效果反而下降明显,其误报率也达到了30 %以上.此外,深度神经网络具有很高的检测精度,均达到了98 %以上,且误报率都在0.3 %以下.最后本文的检测机制的检测精度均达到了95 %以上,且误报率均在0.5 %以下,最少能达到0.1 %,相比神经网络的方法,基于LE 降维学习方法的检测精度提升明显,且十分接近深度神经网络的检测效果.
此外,为了验证检测模型的泛化能力,我们在隐患测量数k=150,状态变化阈值τ=10 的情景下,用上述训练得到的检测模型分别对不同噪声环境下的测试样本做了检测,其中PCA 降维预处理的检测模型由于测试精度不高,便不再讨论其泛化性能,检测结果如图12−13 所示.
图12 四种检测方法在不同环境噪声中的检测精度ACC 变化Fig.12 Detection accuracy of three detection mechanisms in different environmental noises
图13 四种检测方法在不同环境噪声中的误报率FPR 变化Fig.13 False positive rate of three detection mechanisms in different environmental noises
从图12−13 中的仿真结果可以看出,单纯神经网络检测方法的性能易受到环境噪声变化的影响,噪声变大时,检测精度下降明显,误报率也在7 %以上.深度神经网络的检测精度也在噪声变大时,出现了一定幅度的下降,但也保持了90 %以上的检测精度和5 %以下的误报率.而本文提出的检测机制几乎不受噪声变化的影响,随着噪声增大,检测精度并没有显著下降,仍均有95 %以上的检测精度,误报率也不超过0.8 %.因此,与神经网络方法相比,所提出的LE 降维学习方法具有更好的泛化性能和鲁棒性.
最后,考虑到状态变化阈值的选取对检测结果会有明显的影响,我们在隐患测量数k=150,噪声方差为σ=0.01的情景下,用上述训练得到的检测模型对不同的τ值的测试样本做了检测,检测结果如图14 所示.
图14 阈值 τ 对检测精度的影响Fig.14 The effect of threshold τ on detection accuracy
从图14 可以看出,系统状态量篡改的幅值越大,检测效率也越高,而当攻击改变的状态量较小时,三种方法的检测精度都有显著的降低,其中本文提出的检测机制受阈值影响最小,可见本文所提出方法具有很好的鲁棒性.
4 结语
本文针对电力系统中隐匿FDI 攻击信号的检测问题,利用拉普拉斯特征映射将历史数据映射到低维空间,然后通过构建合适的神经网络结构以建立相应的检测模型,从而形成基于拉普拉斯特征映射降维学习的隐匿FDI 攻击信号检测机制.最后通过IEEE 57-Bus 模型验证了这种检测机制的有效性.仿真结果表明采用拉普拉斯特征映射方法能够使正常的测量数据与受攻击的数据很好地分离;相比于神经网络方法,这种检测机制能明显提升检测精度,达到与深度神经网络接近的检测效果.进一步的,相比于深度神经网络,本文的方法不仅能有相似的检测精度,并且在训练时间上花费更少,且具有更好的泛化能力.