近年来,城镇化的不断发展直接带动供水管网规模的扩张,通过将数据采集与监视控制系统、地理信息系统部署在供水系统中,供水系统与互联网相结合,推动了智能智慧城市和智能水务的快速发展.然而,在使用云技术和Web技术赋能供水系统的同时,使得配水系统暴露于网络物理攻击中,随着这些设备的数量和多样性的增加,攻击的风险也随之增加.据美国国土安全部(DHS)报告[1]称,2015年工业控制系统网络应急响应小组(ICS-CERT)收到并响应了25起针对饮用水系统的网络攻击事件,供水系统成为仅次于关键制造业和能源的第三大网络攻击目标.与其他领域相比,只有少数研究考虑了供水管网的攻击检测问题.文献[2]采用了两阶段方法,首先从观察到的(多维)时间序列数据中提取一个四维特征向量,然后构造一个分类器来检测攻击.文献[3]的算法由三个主要的互联模块组成,第一个模块根据供水系统的控制规则来检查数据的一致性,而第二个模块使用统计分析来识别单个水力参数及其组合的异常.文献[4]提出一种攻击者-防御者网络阻断模型,攻击者的目标是在资源有限的情况下阻断网络中最有价值的链接,防御者的目标是最小化网络中的功率损失和未满足的需求,该模型被证明适用于一个供水网络.文献[5]使用了卷积自动编码器模型,输入的原始数据样本依次被传递到卷积层进行特征提取,然后被编码成更紧凑的表示,训练完成后利用该系统对新样本进行解码,构造样本概率,当概率减小时,数据异常的概率增大.文献[6]通过利用区域计量区(DMAs)对C-Town网络进行划分,降低了问题的维度,对于每个DMA,使用正常操作条件的数据来创建循环神经网络,对蓄水池水位、泵流量和泵站的压力进行预测.文献[7]通过分析从系统组件收集的传感器度数来检测对供水系统的网络攻击.文献[8]的两阶段自动检测方法首先基于信号处理理论将快速独立分量分析应用于液压时间序列,并使它们分离成独立分量;然后通过统计控制算法对这些分量进行处理,以自动检测突变,从而找到可能的攻击.文献[9]使用机器学习,在传统技术的基础上提出并测试了一种同时使用基于密度和参数化算法相结合的集成技术.文献[10]提出一个跨层分析平台(CLAP),根据影响水关键基础设施的网络和物理安全事件的关联性,提高对复杂攻击场景的实时检测.文献[11]提出一种基于时间图卷积网络和马氏距离的在线单阶段预测算法,具有较强的检测性能,能够对多个基准攻击进行目标网络组件的定位.文献[12]提出的算法包括三个具体模块,即统计和模式识别模块、主成分分析模块及液压和系统关系模块,用于检测C-Town的网络物理攻击.上述研究表明:在供水系统网络物理攻击检测研究中,基于数据驱动的机器学习算法是解决网络物理攻击检测问题的有效手段.攻击检测算法可以很容易简化为一种异常检测算法,目标是发现物理网络数据中的不规则性.但是在实际应用中,由于大多数供水公司不具有带标签的攻击样本,因此须要设计一种只依赖于正常数据样本来进行攻击检测.为此,本研究设计了一种基于哑铃形深度自编码器(DDAE)的半监督学习检测算法,通过对仿真结果分析以及与其他研究方法对比,验证了本算法的可行性和有效性.1 供水系统网络物理攻击问题1.1 问题描述C-Town是一个基于真实供水网络构建的中型供水网络模型,全年用水量非常规律,没有季节变化.C-Town整个管网节点包括7个蓄水池以及分布在5个泵站(S1~S5)的11个水泵.水泵、阀门和蓄水池水位传感器连接到9个可编程逻辑控制器(PLC),这些PLC位于液压控制组件附近.C-Town的供水管网图如图1所示,图中T1~T7为水箱.10.13245/j.hust.220519.F001图1C-Town供水管网图C-Town供水系统的操作人员已经观察到一些液压元件的异常行为,如蓄水池溢出、水泵转速降低、水泵异常开启或停用,他们怀疑这些异常是由于网络物理攻击干扰了系统操作并篡改了数据采集与监视控制系统(SCADA)记录的读数.本研究的目的是开发一种攻击检测机制,从每小时可用的SCADA数据中检测攻击的存在,攻击检测算法将系统状态分类为安全或受攻击.1.2 数据描述本研究主要设计了一个具有良好稳定性和鲁棒性的网络物理攻击检测算法,为供水公司等提供一种能有效检测供水系统异常技术支持.通过对C-Town模拟供水网络的攻击检测,数据主要包括2014年1月—2015年1月的无攻击供水数据,2017年1月—2017年4月包含攻击的数据,部分描述如表1所示.数据第一列为时间戳,表示读取各传感器的时间,第二、三、四列为每个不同传感器的值,最后一列包含一个二进制标记,用于区分正常情况(ATT_FLAG为0)和受到攻击(ATT_FLAG为1).表1中省略了不同时间戳下不同传感器的数据描述.数据集中传感器的标签(即数据文件的头)是通过下划线将变量前缀与组件标签连接起来形成的.例如,L_T1表示T1的水位,S_PU1表示泵PU1的状态,P_J280表示S1泵站的进水压力(J280位于S1泵站的进水口).10.13245/j.hust.220519.T001表1C-Town供水系统数据描述(部分)时间戳(日/月/年 小时)L_T1S_PU1P_J280ATT_FLAG04/07/16 002.44121.58004/07/16 154.63168.34125/12/16 001.10167.321表2显示了由各PLC控制的水位传感器和控制传感器,表中:V为阀门;PU为泵;PU1(T1)为1号水箱的1号水泵的控制传感器,以此类推.大多数控制水泵的PLC并不直接与控制逻辑中使用的水位传感器相连,而是通过其他PLC接收必要的信息.每个PLC控制给定的执行器也读取其状态(开/关),通过它的流量及吸入和排出压力,每个PLC连接的传感器和控制传感器如表2所示.10.13245/j.hust.220519.T002表2每个PLC连接的传感器和控制传感器PLC传感器控制传感器PLC1—PU1(T1),PU2(T1)PLC2T1—PLC3T2V1(T2),PU4(T3),PU5(T3),PU6(T4),PU7(T4)PLC4——PLC5T3—PLC6—PU8(T5),PU9(—),PU10(T7),PU11(T7)PLC7T4—PLC8T5—PLC9T6—注:—表示该PLC与对应传感器不直接相连.数据集总共包括两个部分,具体说明如下.训练集:采集于智能设备安装前的六个月(2015年9月—2016年2月),包含正常操作下C-Town传感器的每小时观测值.这些数据保证不受攻击,可以用来研究系统的正常运行.测试集:有攻击标记,包含7种不同的攻击场景.数据包括2017年1月—2017年4月的数据,有攻击标记的记为1,其他保证不包含攻击,记为0,如表3所示.10.13245/j.hust.220519.T003表3测试集的攻击列表序号开始(日/月/年 小时)结束(日/月/年 小时)持续时间/h116/01/17 0919/01/17 0670230/01/17 0802/02/17 0065309/02/17 0310/02/17 0931412/02/17 0113/02/17 0731524/02/17 0528/02/17 08100610/03/17 1413/03/17 2180725/03/17 2027/03/17 01302 DDAE攻击检测算法本研究构建了DDAE深度神经网络,用来重建输入样本,该网络可以学习输入数据的压缩的、有意义的特征,从而达到降维或数据生成的目的.DDAE网络包含一个输入层、一个输出层和若干隐藏层,如图2所示.10.13245/j.hust.220519.F002图2DDAE结构图与其他人工神经网络类似,DDAE实现数学映射的参数是连接神经元的突触的权值.DDAE由编码器和解码器组成,编码器将输入转换为编码的特征向量,而解码器则从编码表示构成的压缩特征空间重构原始输入.输入(或输出)层的大小与承载编码表示的最中间隐藏层的大小之比称为压缩因子,压缩因子值越高,重构越粗略.假设X∈χ为一个通用的输入,其中χ为输入的集合;F∈ℱ为代表它的编码,其中ℱ为编码集合;ϕ和ψ分别为编码器和译码器连接权值,可以写为:ϕ:χ→ℱ;(1)ψ:ℱ→χ.(2)自动编码器训练得到的连接权值ϕ和ψ可以最小化所有元素X的重建误差,即X-(ϕ°ψ)X2.(3)对于供水系统而言,由于自动编码器学习了系统的整体表示,因此它隐含了系统变量之间固有的空间和时间关系,并与水力规律交织在一起.自动编码器嵌入这些依赖关系可以对呈现矛盾信息的输入模式做出反应;同时,自动编码器也有能力检测到攻击者试图通过修改SCADA显示数据来隐藏其攻击行为的情况.图3为DDAE检测算法流程图,该检测算法的具体过程如下.10.13245/j.hust.220519.F003图3DDAE检测算法流程图训练过程:步骤1 首先明确实验所建立的算法的输入为43维向量,算法的输出为重构后的43维向量,假设X∈χ为一个通用的输入,F∈ℱ为代表它的编码,ϕ和ψ分别为编码器和解码器;步骤2 输入43维不包含攻击的供水网络数据向量,进入编码器进行编码,得到式(1);步骤3 对数据进行解码重构,得到式(2);步骤4 优化参数,寻找合适的网络结构;步骤5 经过多轮的训练得到的ϕ和ψ可以最小化所有元素X的重建误差,由式(3)得到.测试过程:步骤6 输入43维包含攻击的供水网络数据向量,进入编码器进行编码,得到式(1);步骤7 对数据进行解码重构,得到式(2);步骤8 得到新的重构误差,与重构误差阈值θ进行比较,若大于θ则标记为收到攻击,否则为正常数据.3 实验与分析3.1 实验环境和参数设置本研究所提出的DDAE算法由Tensorflow2.0实现,运行实验的电脑CPU为Intel Core i5-7500,内存8.0 GiB,定义网络隐藏层数为N,压缩因子cf为输入层大小与位于编码器和解码器之间的最内层的比值.所有算法的相关参数设置如下:使用5个隐藏层,cf固定为2.5,重构误差阈值为0.995,神经元的激活函数使用tanh函数.3.2 性能评价指标在异常检测领域,对于检测算法的评价指标还是以F1值和ACC等为主,其中,F1值为召回率和精确率的综合评价指标,ACC为预测正确的样本数占样本总数的比例,但是针对供水管网的攻击检测问题不仅要考虑检测分类的正确性,而且应该考虑检测的及时性.为了评价本研究所构建的检测算法的有效性、及时性等性能,评估标准基于检测时间和分类精度两个方面,通过加权得到综合性能评价指标.a.检测时间.检测时间(TTD)是指算法检测到攻击所需的时间,定义为攻击被检测到的时间td与攻击开始的时间t0之间的差值,即TTD=td-t0.(4)td的值从算法的检测报告中推断出来,它对应攻击进行时被标记为受攻击的第一个时间戳.式(4)得到的值越低,算法性能越好.若检测到攻击,则有0≤TTD≤Δt,式中Δt为攻击总持续时间;若攻击没有被检测到,而它正在进行(或根本没有),则有TTD=Δt.为了便于所有算法模型在不同攻击场景下的比较,性能评分(STTD)定义为STTD=1-1na∑inaTTDiΔti,(5)式中:na为一个数据集中包含的总攻击数;TTDi为第i次攻击检测的时间;Δti为第i次攻击所持续的时间.由式(5)得到的值在0~1之间变化,STTD=1为立即检测到所有攻击的理想情况,STTD=0为没有检测到任何攻击的情况.b.分类精度.算法的准确性取决于其检测到攻击而不产生假警报的能力.在二元分类问题的背景下,识别攻击的能力通常通过真阳性率(TPR)评估,也被称为召回率,其定义为TPR=TP/(TP+FN),式中:TP为真阳性数;FN为假阴性数.真阳性率是被正确分类为受到攻击的时间步长与系统实际受到攻击的总时间步长之间的比值.避免假警报的评估标准是真阴性率(TNR),其定义为TNR=TN/(FP+TN),式中:FP为假阳性数;TN为真阴性数.真阴性率是被算法正确划分为安全条件的时间步数与系统处于安全条件的总时间步数之间的比值.为了便于在所有算法中进行比较,将真阳性率和真阴性率合并为一个单一的分类表现评分SCLF,定义为TPR和TNR的平均值,即SCLF=(TPR+TNR)/2.(6)式(6)既考虑了正确检测,又考虑了误报,因此适用于样本分布偏向两类之一的二分类问题,即供水系统中的无攻击状态.SCLF的值在0~1之间变化,1代表分类完全准确.c.综合性能指标.将检测时间和准确率加权构成综合性能指标(S),其定义为S=γSTTD+(1-γ)SCLF,式中γ为系数.γ和1-γ决定了两个评价分数的相对重要性,由于准确分类与及时发现攻击同等重要,因此γ系数设为0.5.若检测系统检测到供水系统始终处于安全状态,则得分S为0.25(STTD=0,SCLF=0.5);另一方面,若将供水系统总是标记为受到攻击,则S为0.75(STTD=1,SCLF=0.5).这反映了未能发现攻击的后果比发出虚假警报的代价更大,因此S在本质上偏向于识别攻击.3.3 敏感性分析实验在构建好网络结构之后,须要了解性能如何随阈值θ的函数变化,即进行敏感性分析.对平均重建误差的第99个百分位数到第100个百分位数之间的θ值进行测试,以0.1%的增长间隔进行测试,图4显示了当阈值增加时分数的变化.10.13245/j.hust.220519.F004图4阈值敏感性分析由图4可知:当阈值为0.995时,S取得了最好的结果,因此最佳检测阈值可以设置为0.995.同时,本研究对DDAE性能如何随算法开发可用数据量的变化进行了分析,如图5所示,图中R为数据集1总数目的占比.10.13245/j.hust.220519.F005图5数据集敏感性分析在实际应用中,不容易获取不包含异常的长时间数据集.图5显示了DDAE预测分数如何随着数据可用性的函数变化,可以看出:在满足最小可用数据量的要求(此处为训练集总数的30%~40%)情况下,即使使用较小的数据集训练DDAE也可以获得较好的性能.3.4 攻击检测实验测试集中一共存在7个攻击事件,针对每个攻击事件,作出实际攻击与检测攻击的对比时序图,如图6所示,图中横轴表示检测时间(日/月/年).由图6可以看出:该算法能够检测所有的攻击事件;针对攻击3和攻击4,DDAE都能够及时检测到攻击,这意味着检测时间(算法识别攻击所需的时间)为零,体现了DDAE检测的及时性.10.13245/j.hust.220519.F006图6攻击1~7检测效果图对于大部分检测到的攻击,算法往往在实际的攻击正式结束后的几个小时内仍然使系统处于攻击状态,说明算法对于攻击的后续影响也具有一定的检测能力.3.5 对比实验表4展示了所提出的DDAE算法和其他文献算法(LSTM,VAE,二级检测和三级检测)的得分S,以及检测到的攻击数目、TPR和TNR的值.图7展示了五种算法的性能对比图,图8展示了表4提到的五种算法的实际攻击与检测攻击时序对比图.10.13245/j.hust.220519.T004表4攻击检测算法按总分数(S)排序文献算法攻击数目SSTTDSCLFTPRTNR本文DDAE70.9010.9490.8510.8940.792[6]LSTM60.8940.8570.9310.8890.973[5]VAE70.8020.8350.7680.8570.678[3]二级检测70.7730.8850.6600.3290.992[2]三级检测30.5340.4290.6400.3960.88410.13245/j.hust.220519.F007图7五种算法的性能展示10.13245/j.hust.220519.F008图8五种算法在测试集上的实际攻击和检测攻击比较由图7可以看出检测时间和分类精度是体现检测性能的重要部分.从逻辑上讲,在这两个指标上都表现良好的算法会获得更高的综合分数.对于大多数算法,这两个指标之间有很强的相关性.通过对比可以看出:DDAE的S,STTD和TPR都取得了最高的分数,尤其是STTD的分数更是达到了0.949,证明DDAE在及时检测到攻击方面最突出.虽然本研究的TNR相对较低,在一段时间内出现误报,但是在分类的综合准确率方面仅次于文献[6]的模型.而出现TNR较低的原因主要是由于产生误报,降低了TNR.文献[6]提出的算法S为0.894,也可以认为是一个较好的检测算法.该算法准确检测出了大部分攻击,但从图8(a)可以看出该算法未能识别出最后一种攻击.本实验的总分数超过了文献[3]和文献[5-6]的研究成果,但以上三个经典算法的表现仍然明显优于3.2节中描述的总是标记攻击的检测指标(S=0.750),分别为0.894,0.802和0.773.通过图8(b)和图8(c)可以看出文献[3]和文献[5]分别提出的两种检测算法存在相反的问题:一方面,文献[5]的算法过于敏感,虽然能够识别大部分的攻击实例,但是发出了大量的假警报,这也导致该算法的TPR值较高,TNR值最低,只有0.678;另一方面,文献[3]的算法虽然只发出了少量假警报,但是缺乏敏感性,未能在攻击事件的整个持续时间内将系统标记为受到攻击,导致该算法的TNR值非常高,而TPR值总体最低,只有0.329.最后,文献[2]的算法仅检测到三次攻击,总评分S仅为0.534,因此该算法不具应用意义.通过分析得到主要结论如下.a.表4中的三种数据驱动算法都表现出了很好的检测性能,这表明基于数据驱动的方法可以适用于攻击检测问题.b.部分研究者提出了多级检测方法,比较和确认不同模块的检测结果有助于减少分类错误.c.采用基于人工神经网络结构的检测算法比其他算法更适合用来对供水管网进行攻击检测.理论上,即使破坏者试图通过改变部署的一个或几个传感器的SCADA读数来隐藏其攻击行为,也可以通过分析供水网络中各元素之间固有的相互依赖关系来检测到有关异常,由于这种相互依赖关系通常是非线性,因此可以通过人工神经网络一类的非线性模型来达到检测的目的.4 结语针对供水系统攻击检测缺少异常数据集的问题,本研究提出利用不包含攻击的历史数据构建训练集,进而搭建DDAE算法进行检测和结果分析.将构建好的DDAE检测算法与其他四种算法进行比较,比较结果表明:本研究所提出的哑铃形深度自编码器针对网络物理攻击具有良好的检测能力.
使用Chrome浏览器效果最佳,继续浏览,你可能不会看到最佳的展示效果,
确定继续浏览么?
复制成功,请在其他浏览器进行阅读
复制地址链接在其他浏览器打开
继续浏览