通过监督控制合成抗网络攻击的弹性第三方监控系统
摘要
为了实现工业控制系统在网络攻击下的安全运行,我们开发了一种具有弹性的第三方监控系统,该系统注重自身检测功能的抗攻击能力和现场设备的持续运行。该系统由用于正常控制和备用控制的可编程逻辑控制器(PLC)组成。正常PLC控制现场设备,当正常PLC受到攻击后,备用PLC接管控 制。本文旨在基于时间离散事件系统和监督控制理论对系统进行建模,并实现系统化的备用控制设计。
关键词
工业控制系统(ICS),控制系统安全,第三方监控系统,备用控制,时间离散事件系统
一、引言
工业控制系统(ICS)通过网络化提高了便利性,但也面临着网络攻击的威胁[1]。2010年,“震网病毒”攻击了伊朗一处铀浓缩设施,摧毁了数千台离心机,这是一起针对工业控制系统的网络攻击事件[2]。2016年,针对乌克兰重要电力供应系统的“CrushOverride”攻击导致了大范围停电[3]。2019年,一家美国线缆制造商感染了“Maze”勒索软件,导致生产和运输出现问题[4]。备用控制方法是一种保护工业控制系统免受此类网络攻击的安全措施[5‐7]。该方法在事故发生时保持系统中断局部化,从而持续系统运行。备用控制功能由异常检测功能和切换系统结构的保护功能组成。前者检测功能通过将系统行为与正常模型进行比较来检测异常;后者功能则将控制系统与外部网络隔离,并切换至本地控制,以最小化损害。
本研究旨在构建一种弹性第三方监控系统,能够在正常控制与备用控制之间进行切换。本文提出了一种考虑可用性的弹性第三方监控系统。可用性是指抵抗以持续运行和检测功能为目标的网络攻击的能力。所提出的系统由三种检测功能、一个控制用可编程逻辑控制器(PLC)和一个备用控制用可编程逻辑控制器(PLC)组成。
当前作者的前期研究展示了针对机械臂控制[8‐9]的实现方法。先前的研究[8]探讨了使用时间自动机对第三方系统进行建模。所构建的模型存在一个问题,即可能状态的组合包含一个不良事件序列。为解决该问题,我们聚焦于满足在正常与降级运行中该事件序列控制规范的监督控制。监督控制是一种用于离散事件系统的控制方法,其中监督器限制目标系统的行为以满足给定的控制规范[10]。先前的研究[8]使用了时间自动机,但将监督控制应用于时间自动机并不容易。本文采用将时间流逝视为一个事件的时间离散事件系统(TDES)的监督控制方法[11]。我们对第三方监控系统进行建模,并研究监督控制在备用控制中的应用。
本研究中的监督器是一种用于监控整个系统的集成监控功能。通过根据控制规范去除不期望的事件序列,系统模型具备了带有监督器的功能,从而保证系统的运行。也就是说,即使切换到降级操作后,系统仍可按照该模型运行。这使得在将此模型应用于实际系统时,能够快速实现异常检测和降级操作。
II. 问题设定
图1展示了了一个用于实现第三方监控设备的实验控制系统。工程PC通过控制网络编写顺序程序并监控正常PLC的控制状态。控制网络的协议为Modbus/TCP。正常PLC通过以太网与工程PC相连。由正常PLC控制的机械臂按顺序执行八种动作,如图2所示。机械臂连接有LED灯,这些LED灯随着各关节电机的动作而亮起,从而区分八种动作。备用PLC与控制网络断开连接,无法通过控制网络对其写入程序或监控其运行状态。机械臂、LED灯、控制PLC和备用PLC通过数字信号I/O端口连接,以监控各项操作的状态。由于与正常控制相隔离,备用PLC执行第三方监控。写入正常PLC和备用PLC的顺序程序均采用梯形图(LD)实现。
我们模拟了一种导致控制器失去功能的拒绝服务攻击。在该攻击场景中,一台感染了恶意软件的工程PC向正常PLC发送大量数据包,暂时将以太网充斥,导致正常PLC的可用性遭到破坏。本文将PLC可用性的破坏定义为由于机械臂动作延迟或停止而导致的连续动作中断。
备用控制表明,控制系统检测到由于拒绝服务攻击导致的异常,备用PLC接管了控制。备用PLC使得无法通过正常控制网络切换控制程序和观察机械臂的控制状态。尽管便利性降低,但机械臂的可用性得到了保护,因为拒绝服务攻击无法到达备用PLC。
III. 第三方监控的异常检测
执行备用控制的第一步是检测异常。第三方监控系统具有三个用于异常检测和可视化[8‐9]的检测功能,如图1所示。正常PLC控制机械臂,并为其自身和备用PLC输出一个1秒时钟。备用PLC监视其输出,并在检测到异常输出或在一定时间内未能检测到输出时,将该情况识别为异常状态。
检测功能n1 :正常PLC向备用PLC输出一个1秒时钟。LED1通常每秒开启一次。当发生网络攻击时,来自正常PLC的1秒时钟会被中断,因此我们可以通过检查LED1来确定其是否处于正常状态。
检测功能2 :当备用PLC从正常PLC接收到1秒时钟输入时,其处于正常状态,因此LED2不会点亮。当发生异常时,LED2会被点亮,以便操作员易于识别。
检测功能3 :操作员可以通过LED灯以及机械臂各电机的运动实时识别异常位置。
IV. 第三方监控系统的建模
当异常发生时,备用控制PLC需要掌握机械臂的运动阶段以实现快速控制切换,但与此同时,备用PLC仅能从正常PLC获取时钟信息。本文考虑基于控制系统模型,利用时钟信息对运行阶段进行估计。具体而言,我们使用离散事件系统(TDES)对第三方监控系统进行建模,并研究可应用于系统设计的估计方法。
A. 建模
本文中,用于建模第三方监控系统的信息是表示每个可编程逻辑控制器(PLC)CPU操作的时序图。该时序图表示每个PLC检测距离(LD)的时钟和触点信息。触点信息是每个PLC LD输出线圈[开启、关]的状态,用两个值[1, 0]表示。利用上述信息,我们通过自动机对每个PLC的CPU操作进行建模。建模步骤如下:
I. 为基于检测距离工作的检测功能1至3制作时序图。
II. 为每个时序图构建模型。
III. 添加一个用于备用控制的模型。
IV. 通过综合步骤I和III中建立的模型,推导出整个第三方监控系统的模型。
B. 时间离散事件系统
我们描述了一个用有限自动机[11]表示的第三方监控系统模型
G=(X,Σ, δ, X0, Xm),
其中X是有限状态集,Σ是有限事件集,偏函数δ: X × Σ∗ → X 是状态转移函数,X0是初始状态,Xm ⊆ X 是有限标记状态集。事件集Σ被划分为Σ= Σa ∪{tick}∪ Σf,其中Σa对应于无时间系统中的通常事件集。附加事件tick表示一个时间单位的流逝。令Σ∗为Σ中元素的有限字符串集合,包括空字符串ε。该tick的控制可通过引入可强制事件Σf ⊆ Σ来实现。可强制事件Σf是指可以优先于tick被触发的事件。
C. 检测功能1的建模
检测功能1的检测距离LD的操作基于图3。当施加控制输入I0时,定时器T11运行1秒。当T11开启时,T09也被激活1秒。通过重复此操作,Q10输出一个秒时钟。LD的控制变量的详细信息见表1。
表1 梯形图规范1
| 功能 | 地址 | 动作 |
| — | — | — |
| 输入 | I00 | 启动开关 |
| 定时器 | TML T09 | 1秒定时器 |
| 定时器 | TML T11 | 1秒定时器 |
| 输出 | Q10 | LED的1秒时钟 |
图3中检测距离(LD)的操作由图4的时序图表示。在图4中,[AH, 2, AL, 1]表示线圈的状态[开启、关],并分别取位值[1,0]。该时序图由图5所示的自动机 G1=(X1, Σ1, δ1, X01, Xm1)建模。初始状态由→表示,标记状态由双圆圈表示。事件集为 Σ1= Σa ∪{tick1},且 Σa={m1, m2}。Σa表示时序图中的下降(复位)或上升(置位)时钟。此外,从一个状态到另一个状态的经过时间使用tick1作为正常PLC的内部时钟来表示。
D. 检测功能2的建模
检测功能2的梯形图的操作基于图6与表2中的控制变量。备用PLC的输入I00来自正常PLC的输出Q10。只要时钟信号到达备用PLC的输入端,就认为其处于正常状态;但如果正常PLC的输出在2秒内被检查或未被检查,则启动定时器T00或T02,并开启Q00作为异常输出。
表2 梯形图规范2
| 功能 | 地址 | 动作 |
| — | — | — |
| 输入 | I00 | 来自控制可编程逻辑控制器的输入 |
| 定时器 | TML T00 | 2秒定时器 |
| 定时器 | TML T02 | 2秒定时器 |
| 内存 Bit | M01 | 内部继电器 |
| 内存 Bit | M02 | 内部继电器 |
该LD的操作可转换为图7所示的时序图。在图7中,[AN, 3, AF]对应正常、正常或异常以及回退转换状态,并分别取位值[0, 1, 2]。在正常状态下,时序图在[0, 1]的两个值之间来回循环;在异常状态下,其值超过上限1。再经过1秒后,当达到上限2时,系统进入回退状态。备用PLC允许异常状态持续1秒。
该控制行为可以用自动机G2=(X2, Σ2, δ2, X02, Xm2)建模,如图8所示。事件集为Σ2 = Σa ∪ {tick1, tickab} ∪ Σf,其中Σa = {n1, n2}。tick1是PLC的内部时钟,tickab是允许的异常时间。强制事件集表示为Σf = {n2}。事件n1在图7的时序图中复位来自正常PLC的输出。如果正常PLC处于正常状态,则备用PLC可观测到的事件序列为{tick1 n1}的重复。另一方面,如果正常PLC变为异常,则触发tickab。此发生无法禁止,因此Σuc = {tickab}。将异常判定逻辑表述如下:
tickab = ticko − tick1 =
{ 0: Normal condition
1: Abnormal condition }
这里,ticko是备用PLC观察到的实际测量值,在正常状态下为ticko = 1,在异常状态下为ticko = 2。由于tick1的标准值为1秒,因此在正常情况下上述公式得出tickab = 0,在异常情况下得出tickab = 1。然后,模型G2将在异常发生时允许一个循环内发生一次tickab。之后,强制事件n2通过中断备用PLC向降级操作的切换来切换继电器。综上所述,从异常发生到降级操作的事件序列为{tick1 tickab, n2}。
E. 检测功能3的建模
检测功能3的LD操作如图9所示。该LD控制机械臂的各个伺服电机。定时器T00通过启动开关I00的输入在指定时间启动,当定时器T00从开启切换到关时,定时器T01在指定时间启动。该定时器操作按顺序从T00到T08依次重复。各控制变量的指定时间及详细信息见表3。此控制动作在图10的时序图中表示。State1~State8对应于机械臂的运动阶段。
表3 检测距离 规格3
| 功能 | 地址 | 动作 |
| — | — | — |
| 输入 | I00 | 启动开关 |
| 定时器 | TML T00 | 3秒定时器 |
| 定时器 | TML T01 | 4秒定时器 |
| 定时器 | TML T02 | 7秒计时器 |
| 定时器 | TML T03 | 3秒定时器 |
| 定时器 | TML T04 | 3秒定时器 |
| 定时器 | TML T05 | 3秒定时器 |
| 定时器 | TML T06 | 6秒计时器 |
| 定时器 | TML T07 | 5秒计时器 |
| 定时器 | TML T08 | 3秒定时器 |
| 内存 | M00~M10 | 内部继电器 |
| 输出 | Q00~Q07 | 伺服电机输出 |
该时序图由图11中的自动机 G3=(X3, Σ3, δ3, X03, Xm3)建模。事件集为Σ3 = Σa ∪ {tick1} ∪ Σf,其中N1~N9表示伺服电机处于开启状态,对应的位值为1。事件集Σa = {a1, a2, ⋯, a8}表示伺服电机的切换,该电机会复位先前电机的输出并设置当前电机的输出。通过强制事件集Σf = {a1, a2, ⋯, a8},可以在任何经过时间切换电机。
F. 回退条件
作为回退条件,我们在检测到异常后,通过备用PLC增加机械臂的持续运行。我们还在备用PLC中添加了一秒时钟操作。备用PLC中的时钟操作由图12中的自动机G4=(X4, Σ4, δ4, X04, Xm4)建模。事件集为Σ4 = Σa ∪ {tick2},且Σa = {m1, m2}。在图5中,Σa = {m1, m2}表示时序图中时钟的下降(复位)和上升(置位)。由于备用PLC中的时钟与正常PLC分开考虑,我们使用tick2。状态[ÃH, ÃL]表示时钟的[开启、关]状态,并分别取位值[1, 0]。考虑到由备用PLC对机械臂进行控制转移,我们通过图13中的自动机G5=(X5, Σ5, δ5, X05, Xm5)对备用机械臂动作进行建模。G5具有与G3相同的结构。该事件集为Σ5 = Σa ∪ {tick2} ∪ Σf。F1~F9表示伺服电机的开启状态。事件Σa = {a1, a2, ⋯, a8}表示伺服电机的切换,该切换会复位先前电机的输出并设置当前电机的输出。强制事件集合Σf = {a1, a2, ⋯, a8}允许电机在任何经过时间进行切换。
G. 各模型的合成
为了获得完整的系统模型,我们根据同步组合[12],从G1到G5合成多个自动机模型。Gi=(Xi, Σi, δi, X0i, Xmi)(i=1, 2, ⋯, n)的同步组合定义为
∥i=1^n Gi = (X, Σ, δ, X0, Xm)
其中,状态集、事件集、初始状态集和标记状态集表示为
X = X1 × X2 × ⋯ × Xn,
Σ = ⋃Σi (i=1 to n),
X0 = (X01, X02, ⋯, X0n),
Xm = (X1m × X2m × ⋯ × Xnm)。
对于任意x = (x1, x2, ⋯, xn) ∈ X和任意σ ∈ Σ,δ(x, σ)!的条件如下:
∀i ∈ {1,2,…n}: σ ∈ Σi ⟹ δi(xi, σ)!
其中!表示可定义。在这种情况下,切换目标状态δ(x, σ) = (x1′, x2′, …, xn′)被定义为
∀i ∈ {1,2,…n}: xi′ = { δi(xi, σ), if σ ∈ Σi; xi, otherwise }。
图14展示了通过同步组合 P = G1 ∥ G2 ∥ G3 ∥ G4 ∥ G5构建的第三方监控系统的被控对象模型P = (XP, ΣP, δP, X0P, XmP)。该系统模型可分为正常控制区域和降级控制区域。每个状态由(A, AF, AN, Ã, N, F)表示,其中A为AH或AL,且Ã为ÃH或ÃL。
V. 监督控制
A. 监督控制与降级控制
监督控制是一种观察被控对象事件并根据需要对其进行限制以满足控制规范的控制方法。为了将该控制方法用作备用控制,我们首先考虑完全观测(Σo = ΣP)的情况,即监督器能够观测到所有事件集中的事件。这对应于以下事实:备用PLC在备用控制中充当监督器的角色,且备用控制的控制规范处于备用PLC能够掌握正常PLC的时间信息和事件信息的范围内。
离散事件系统(TDES)的监督控制需要将系统划分为两个不考虑时间因素的事件集:事件集Σa和事件集{tick}。系统P中的事件集为ΣP = Σa ∪ {tick} ∪ Σf 和 Σa = {n1, n2, m1, m2, a1, a2, ⋯, a8}。Σa被划分为一个可控事件Σc和一个不可控事件Σuc。系统P具有Σuc = {tickab},这表明从监督器判断系统处于异常状态到切换至备用状态之间所经历的时间是不可控的。监督控制通过生成语言L(P) = { s ∈ ΣP∗ | δ(x0p, s)! }描述P的行为,该语言由从初始状态x0p可能发生的事件序列组成;同时通过标记语言Lm(P) = { s ∈ L(P) | δ(x0p, s) ∈ XmP }描述行为,该语言由从初始状态x0p转移到标记状态xmp ∈ XmP的事件序列组成。在备用控制中,当检测到异常后,控制系统仍继续运行,并将系统运行的结束视为一项任务。系统P需要一个控制规范,要求达到Lm(P)中的标记状态。
B. 控制规范
备用控制根据观测信息(Σo)调整在被控对象P中发生的事件序列以满足控制规范。模型G1~G5的控制规范由模型R1~R5给出。图15和图16中的R1和R4保证了正常PLC和备用PLC的时序行为。图17中的R2允许发生一个tickab的单个循环。图18和图19中的R3和R5显示了正常PLC和备用PLC对机械臂的控制时间,这些时间等同于表3中的定时器值。作为控制规范的定时器值使我们能够解决循环问题,并实现原始的机械臂规范。
整个控制规范的模型也是通过同步组合 R = R1 ∥ R2 ∥ R3 ∥ R4 ∥ R5推导得出的,如图20所示。在模型R中,可以从初始状态到标记状态(即控制系统运行的结束状态)绘制出一条单一路径。在被控对象模型P中,时间事件的数量{tick}以及事件发生的顺序未被确定,因此无法避免活锁和死锁。这表明在检测到异常后,无法停止机械臂或切换到备用控制。另一方面,在模型R中,正常控制和备用控制期间从初始状态到标记状态的所有事件序列都是确定的,因此操作不会中途停止。
C. 受控被控对象模型
模型R展示了备用控制中第三方监控系统的基于时序图的操作限制。由于难以严格描述整个系统的时序图,我们通过在R中给出表示时序图行为的控制规范,将监督器模型表示为有限自动机。由监督器S控制的受控对象P被称为S/P。监督器被形式化地定义为函数S(s): L(P) → 2^ΣP。令Km ⊆ Lm(P)表示从控制规范模型R的标记状态到达初始状态的所有事件集合。设计S以满足Lm(S/P) = Km即为备用控制问题。我们在标记语言Km中给出控制规范。这是备用控制中的事件集合,其中若无异常,系统在到达标记状态前保持正常控制,一旦出现异常,则切换至备用控制。
当异常发生时,系统仍可运行至最终状态。这种控制行为为R,其中Lm(R) = Km ⊆ Lm(P)。由于存在一个满足Lm(R) = Km的有限自动机R,因此监督器S可用一个有限自动机R建模,其中Lm(P ∥ R) = Lm(S/P)。这就是P和R具有相同事件ΣP的原因。该受控被控对象模型是各个可编程逻辑控制器时序图操作的综合,通过将此模型转换为检测距离,备用PLC便具备了监督器的功能。
VI. 结论
本文研究了一种基于离散事件系统(TDES)和监督控制的第三方监控系统设计方法,该系统能够根据检测功能的时序图在正常与降级运行之间进行切换。首先,我们综合生成与检测功能时序图相对应的有限自动机模型,并对包含降级操作在内的整个系统进行建模。其次,我们考虑监督控制,使得备用PLC能够满足第三方监控系统事件序列的控制规范。通过实现一个行为与监督器模型时序图相同的检测距离(LD),备用PLC可以识别异常,并在正常控制与备用控制之间进行切换。
2892

被折叠的 条评论
为什么被折叠?



