通过运行时强制执行的工业控制系统安全

通过运行时强制执行的工业控制系统安全

原文
2022-Industrial Control Systems Security via Runtime Enforcement
申明
版权归原文作者及出版单位所有,如有侵权请联系删除。

​ 随着工业4.0的到来,工业设施和关键基础设施正在转变为一个由异构物理和网络组件(如可编程逻辑控制器)组成的生态系统,它们之间的相互联系越来越紧密,因此暴露在网络物理攻击之下,即网络空间的安全漏洞可能对工业控制系统的物理过程产生不利影响。

​ 在本文中,我们提出了一种基于运行时强制执行的正式方法,以确保控制器网络的规范性,这些控制器可能被串通的恶意软件所破坏,这些恶意软件可能在本地篡改执行器命令、传感器读数和控制器间的通信。我们的方法依靠Ligatti等人的编辑自动机的一个特设子类来执行,这些控制器用Hennessy和Regan的定时进程语言表示。我们设计了一种合成算法,给定一个可观察动作的字母表P和定时正确性属性 ,返回一个监控器,该监控器在 ,执行任何具有字母表P的(潜在损坏的)控制器时执行该属性,并遵守该属性。我们的监控器通过纠正和抑制被破坏的控制器的不正确的动作,以及通过生成完整的动作来缓解当被检查的控制器不能以正确的方式进行检查时,自主权。除了传统的要求,如透明性和健全性,所提出的执行机制还享有被监控的控制器的死锁和发散自由,以及在处理控制器网络时的可扩展性。最后,我们在一个非简单的案例研究中测试了所提出的执行机制,该案例来自于工业水处理系统,其中控制器被注入了不同的恶意软件 ,具有不同的恶意目标。

1 简介

​ 工业控制系统(ICS)是物理的和工程的系统,其运作由一个计算和通信核心来监控、协调、控制和整合[57]。它们代表了安全关键应用的关键基础设施的骨干,如电力分配、核电 ,以及水供应。工业4.0中不断增长的连接性和集成性引发了针对ICS的网络物理攻击[32]的数量急剧增加,即网络空间的安全漏洞对物理流程产生了不利影响。一些臭名昭著的例子是。(i) Stuxnet蠕虫病毒,它对伊朗纳坦兹核设施中的核离心机的西门子PLC进行了重新编程[36];(ii) 对乌克兰电力的CRASHOVERRIDE攻击网,又称Industroyer[62];(三)最近TRITON/TRISIS恶意软件,针对沙特阿拉伯的一家石化厂[19]。
在这里插入图片描述

图1 一个被破坏的PLC网络:y表示真实的传感器测量值,ya是被坏的传感器测量值,ua损坏的执行器指令,ca表示损坏的控制器间通信。

​ 用户定义的逻辑程序,称为用户程序,它执行简单的重复过程,称为扫描周期(IEC 61131-3 [1])。每个扫描周期包括三个阶段:(i)读取物理过程的传感器测量值;(ii)执行控制器代码,计算物理过程应该如何发展;(iii)向执行器设备传输命令,以按要求管理物理过程。由于其在控制工业过程中的敏感作用,成功利用PLC会对ICS产生严重的后果。事实上,尽管现代控制器提供了安全机制,只允许上传合法的irmware,但运行的代码通常可以被任何有网络或USB访问控制器的人改变(见图1)。

​ 已公布的扫描数据显示了数以千计的PLC是如何从互联网上直接访问以提高效率的[56]。因此,尽管控制器有责任,但它很容易受到几种类型的攻击的攻击,包括PLC-Blaster蠕虫[63],梯形逻辑炸弹[28],以及PLC PIN控制攻击[5]。已经提出了额外的可信硬件组件来增强PLC架构的安全性[48, 50]。例如,McLaughlin[48]提出了一个基于政策的执行机制,以调解由PLC传输到物理工厂的执行器命令。Mohan等人[50]提出了一个不同的架构,在这个架构中,每个PLC都在监控器的监视下运行,监控器负责寻找与安全行为有关的偏差。这两种结构都是通过基于仿真的技术来验证的。然而,据我们所知,只有在最近几年,正式的方法才被用来为ICS的安全导向架构建模和正式实施。运行时执行[22, 43, 60]是一种形式化的验证/确认技术,旨在纠正受监督系统(SuS)可能的错误执行。它采用了一种监视器[23],作为SuS和与之交互的环境之间的代理。在运行时,监控器通过替换、压制或插入代表系统的可观察到的动作,将SuS表现出的任何不正确的执行行为转化为正确的行为。执行的有效性取决于以下两个一般原则的实现[43, 60]。

​ • 透明度,也就是说,执行不能改变SuS的正确执行。

​ • 健全性,也就是说,必须防止SuS的不正确执行。

​ 在本文中,我们提出了一种基于运行时执行的正式方法,以确保可能被串通的恶意软件破坏的控制器网络符合规范,这些恶意软件可能会篡改执行器命令并且影响传感器读数和控制器之间的通信。正如Pearce等人[53]所指出的,使用运行时强制执行来确保安全,可以认为是行为监控误用和异常检测模型[17]与自动恢复机制相结合。

在这里插入图片描述

图2 一个受监控的控制器网络。

​ 我们的目标是使用基于Ligatti等人的编辑自动机[43]的一个子类的安全代理来执行可能被破坏的控制器。这些自动机将由可执行的定时正确性属性合成,形成受监控的控制器网络,如图2所示。拟议的执行将同时享有透明度和健全性,并具有以下特点。

​ • 无死锁,也就是说,执行不应该引入死锁。

​ • 分歧自由,也就是说,执法不应引入分歧。

​ • 缓解不正确的/恶意的活动。

​ • 可扩展性,也就是说,执行机制应该扩展到控制器网络。

​ 显然,当控制器被破坏时,这些目标只能通过引入一个物理上独立的安全代理来实现,正如McLaughlin和Mohan等人[48, 50]所主张的那样,它没有任何互联网或USB接入,并通过安全通道与被监控的控制器连接。这看起来就像我们只是把问题转移到了保证代理的安全上。然而,事实并非如此,因为代理只需要执行系统的定时正确性属性,而控制器则依靠通过互联网或USB端口的潜在危险通信来完成控制物理过程的全部工作。因此,控制系统的任何升级都是对控制器而不是对安全代理进行的。当然,决不允许对安全代理进行运行时的重新配置,因为它的执行应该基于工厂本身的物理学,而不是控制器的代码(只允许定期的在线更新,以考虑到可能的系统漂移)。

贡献。首先,我们定义了攻击者模型和攻击者在强制ICS架构中的目标,如图2中描述的那样。然后,我们引入一种正式的语言来指定控制器程序。为了这个目的,我们采用了过程计算,这是并发理论中一种成功而广泛的形式化方法,用于表示复杂的系统,如移动系统[16,29]和网络物理系统[37,42],并用于许多领域,包括安全协议的验证[3,4]和网络物理攻击的安全分析[40,41]。因此,我们根据Hennessy和Regan的定时进程语言(TPL)[30],设计了一个简单的定时进程计算,用于指定控制器、初始状态执行器和通信监控控制器的网络。

​ 然后,我们设计了一种简单的描述语言来表达定时的正确性属性,这些属性应该在被监控的控制器的扫描周期(可能是无界的)中保持不变。这将使我们能够对控制器的实现进行抽象,专注于一般的属性,这些属性甚至可能被完全不同的控制器所共享。在这方面,我们可以求助于文献中现有的几种用于监测定时并发系统的逻辑之一,特别是网络物理系统(见,例如,[9,24])。然而,控制器的特殊迭代行为使我们相信,我们采用了可以被inite自动机识别的正则表达式子类,其循环总是包含至少一个初始状态;这是可以被初始状态的Ligatti等人的编辑自动机执行的最大一类正则属性(见Beauquier等人的工作[10])。在第5节中,我们用这种正则属性来表达控制器的一大类正确性属性。

​ 在设计了描述控制器属性的形式化语言后,我们提供了一个合成函数,该函数给定了一个可观察动作(传感器读数、执行器命令和控制器间通信)的字母表P和一个结合P的事件的确定性规则属性 ,返回一个编辑自动装置P 。由此产生的执行机制将确保前面提到的所需特征:透明。稳健性、确定性保存、无死锁、无发散、缓解和可扩展性。然后,我们提出了一个非微不足道的案例研究,它取自工业水处理系统的背景,并按以下方式实施。(i) 物理工厂在Simulink[47]中模拟;(ii) 开源PLC在OpenPLC[8]中实现并在Raspberry Pi上执行;(iii) 执行器在连接的FPGA上运行。在这种情况下,我们测试了我们的执行机制,在PLC中注入五种不同的恶意软件,旨在造成三种不同的物理扰动:水箱过低、阀门损坏和泵损坏。

​ 概要。第2节描述了攻击者模型和攻击者目标。第3节给出了受监控的控制器的形式语言。第4节定义了案例研究。第5节提供了一种表达控制器行为的规则属性语言;它还包含了该语言中可表达的属性分类。第6节包含了从正则属性合成监控器的算法,以及主要结果。第7节讨论了案例研究在受到五种不同的攻击时的实施情况。第8节专门讨论相关工作。第9节得出结论并讨论了未来的工作。技术证明可以在附录中找到。

2 攻击者模式和攻击目标

​ 我们针对ICS的基于执行的架构(见图2)假设物理上独立的安全代理机构通过安全通道连接到控制器,没有互联网或USB接入。在这种安全架构中,攻击者基本上可以在PLC的用户程序中注入任意代码。因此,攻击者在PLC上有以下能力:(i)伪造/删除执行器命令,(ii)读取/修改来自工厂的传感器读数,(iii)伪造/删除控制器之间的通信。注入同一现场通信网络的不同PLC中的恶意软件可以相互协作/通信,以实现共同的目标,并可能控制PLC网络通信。

​ 本文所假设的攻击者有以下两个局限。

​ • 不允许在网络层面或传感器设备内部对传感器信号进行恶意更改,因为攻击者被认为只驻扎在PLC中。然而,这样的传感器攻击可以由我们的攻击者进行łlocallyž模拟,她可以按照自己的意愿修改PLC的用户程序,从而涉及到传感器的测量。

​ • 攻击者从不违反被攻击的PLC的最大周期限制,即完成一个PLC扫描周期所需的最大时间[1]。这样的违反会导致PLC立即关闭,防止更复杂的攻击[63]。

因此,攻击者的目标可以恢复到影响受控物理过程的运行时间演变,可能会向监督控制网络传输虚假的测量结果。

3 一种用于受监控的控制器的正式语言

​ 在这一节中,我们将介绍监控控制器的定时微积分(Timed Calculus of Monitored Controllers),即TCMC,作为一种抽象的形式化语言来表达控制器的网络,它与每个控制器的网络接口上的编辑自动机集成在一起,以监控/纠正它们与系统其他部分的交互作用。基本上,TCMC扩展了Hennessy和Regan的定时过程语言(TPL)[30],带有监控编辑自动机。像TPL一样,时间在离散的时间段内进行,并以嘀嗒声作为分隔。

​ 让我们从一些初步的符号开始。我们用s,sk∈Sens来命名传感器信号;a,ak ∈Act来表示执行器命令;c,ck∈ Chn代表通道;z,zk代表通用名称。

​ 控制者。在我们的设定中,控制器是一个非确定性的顺序计时过程,通过三个主要阶段进行演变:感应传感器信号、与其他控制器通信和执行。为方便起见,我们使用五个不同的句法类别来区分控制器的五个主要状态:Ctrl为初始状态。SlEEP为睡眠状态,Sens为感应状态,Com为通讯状态,Act为执行状态。在初始状态下,控制器是一个递归过程,等待信号稳定,以便开始感应阶段。

在这里插入图片描述

​ 描述一个控制器的主要过程包括一些通过方程形式定义的递归过程X= tick.,其中 W∈ Sleep;这里, 是一个过程变量,可能在中出现(自由)。为了方便起见,我们的控制器总是至少有一个初始的定时动作 勾,以确保有时间保护的递归,从而避免了不希望出现的 "Zeno "行为[31]:两个 "Tick " 动 作之间的未定时动作的数量始终是有限的。然后,在一个确定的睡眠期后,当传感器信号稳定后,就可以开始感应阶段。在感应阶段,控制器等待一定数量的可接受的传感器信号。如果这些信号在当前时隙中没有到达,那么控制器将超时移动到下一个时隙(我们采用TPL结构⌊-⌋-来超时)。其语法如下。
在这里插入图片描述

​ 表示非确定性选择的标准构造,sk≠sℎ ,为 k,ℎ ∈ I。一旦感知阶段结束,控制器就开始计算,这可能取决于与其他国家的通信。管理不同的物理过程的控制器。控制器之间的通信主要有两个原因:要么接收关于其他物理子过程状态的通知,要么要求对不在他们控制范围内的物理过程进行操作。与TPL一样,我们采用基于信道的握手点对点通信模式。注意,为了避免饥饿,通信总是处于超时状态。通信阶段的语法是。
在这里插入图片描述

​ 其中⌊L ∈ 。⌋ 表示超时下的非确定性输入选择, ≠ℎ 为 ,ℎ ∈ ,而⌊.⌋ 表示在超时情况下沿通道 的输出。在执行阶段,控制器最终将一连串的命令传送给执行器,然后,它发出一个虚拟的系统信号结束,表示扫描周期的结束。此后,整个扫描周期可以重新开始。请注意,虽然嘀嗒声是对(离散的)时间流逝的模拟,但 结 束 声具有不同的粒度,因为它们是一个扫描周期的结束信号。从形式上看。

在这里插入图片描述

在这里插入图片描述

​ 备注1(扫描周期时间和最大周期限制)。PLC的扫描周期必须在一个特定的时间内完成,称为最大周期限制,这取决于所控制的物理过程;如果这个时间违反了限制,控制器就会停止并抛出一个异常[63]。因此,信号 结 束必须在控制器的最大周期限制之前发生。我们实际上是在假设我们的控制器在最大周期限制的一半以内成功完成扫描周期的情况下工作。这个假设保证了我们,即使控制器完全不可靠,监控器插入了整个安全轨迹,产生的强制扫描周期总是在违反最大周期限制之前结束。请注意,通过简单地计算两个后续的结束符之间出现的最大数量的嘀嗒符,很容易静态地得出我们的微积分中表达的扫描周期的最大持续时间。

​ 表1中的操作语义是沿着Hennessy和Regan的TPL[30]的思路。在下文中,我们使用元变量,对所有(可观察的)控制器动作的集合进行范围化。Sens ∪Act ∪Chn ∪Chn ∪{tick} ∪{ 结 束}。1这些动作分别表示:传感器读数、执行器命令、通道传输、通道接收、时间的推移和扫描周期的结束。请注意,在我们的抽象水平上,我们只表示PLC的可观察行为:内部计算没有在PLC中建模;尽管,我们确实有-动作来表达两个PLC之间的通信,读者会在表2中注意到这一点。

​ 备注2(攻击者模型和 结 束信号 )。在我们对PLC的抽象表述中, 结 束信号并不是真正的PLC程序的一部分(可能被破坏),而是一个表示扫描周期结束的系统信号。因此,根据我们的攻击者模型,我们假设这个虚构的信号不能被攻击者放弃或伪造。受监控的控制器。我们的执行核心依赖于(定时)初始状态的Ligatti等人的编辑自动机[43],即一类特殊的自动机,专门设计用于允许/抑制/插入通用系统中的动作,以保持其正确的行为。其语法如下。

在这里插入图片描述

​ 特殊自动机go将承认被监控系统的任何行动。编辑自动机L ∈ 。E执行一个行动 ,然后继续作为E ,对于任何 ∈ ,与 inite。这里,符号 的范围是:(i) ,允许动作 ,(ii)−,抑制动作 ,以及(iii) ≺12 ,对于1 ≠2 ,在动作2 之前插入动作1。递归自动机X是通过X=E形式的方程来定义的,其中自动机变量X可以是在E中出现(自由)。

在这里插入图片描述

我们的编辑自动机的操作语义是通过以下过渡规则给出的.

在这里插入图片描述

​ 我们的监控控制器,写成E⊲⊳{J},包括一个控制器,对于 ∈ Ctrl∪ Sleep∪ Comm∪Act,和一个编辑自动机E,执行,根据以下过渡规则,提出的行为in the style of Martinelli and Matteucci [45]:

在这里插入图片描述

​ 规则(Allow)用于允许被检查的控制器发出的可观察的行动。通过应用规则(抑制),由(可能被破坏的)控制器发出的不正确的动作 ,即转化为(沉默的) 。规则(插入)被用来在控制器的动作1之前插入一个动作2 。在这里,我们希望强调,像Ligatti等人[43]一样,我们对确定性的(因此是可实现的)执行感兴趣。通过下面的技术定义,我们从执行者的行动中提取:(i)控制器的触发行动,以及(ii)结果的输出行动。

​ 定义1.让 是编辑自动机的任意动作,我们写 trigger ( ) 表示触发 的控制器动作,定义为: trigger ( a) = a,trigger (−a) = a和 trigger ( a1≺a2 ) =a2 。同样,我们写 out (t) 表示由t规定的输出动作,定义为:out (a ) = a, out (a− ) = a和out ( ≺12 ) =1 。 最后,我们可以将监控控制器的概念概括为一个平行监控控制器的现场通信网络,每个控制器都作用于不同的执行器,并通过通道交换信息。这些网络是通过一个简单的语法来正式定义的。

在这里插入图片描述

​ 表2中定义的操作语义。请注意,被监控的控制器可以通过信道同步进行互动(见规则(ChnSync))。此外,通过规则(TimeSync),它们可以在时间上进化,只有当通道同步可能不发生时(我们的控制器不允许有Zeno行为)。这就保证了最大的进度[30],在为实时系统建模时,这是一个理想的时间属性:通道通信将永远不会被推迟。在下文中,元变量的范围与 ,以及无声动作的范围相同。.它用于表示被监控的现场网络的行动。

在这里插入图片描述

图3 简化的工业水处理系统。

在这里插入图片描述

4 用例:SWAT系统

​ 在这一节中,我们描述了如何在TCMC中指定一个非琐碎的PLC网络来控制(一个简化版的)安全水处理系统(SWaT)[46]。

​ SWaT代表了一个现实世界中的工业水处理厂的缩小版。该系统由6个阶段组成,每个阶段都处理不同的处理方法,包括:化学计量、iltration、dechlorination和 reverse osmosis。为了简单起见,在我们的用例中,如图3所示,我们只考虑三个阶段。在第一阶段,原水被化学计量并通过两个泵1 和泵2 ,泵入水箱1 。一个阀门将1和一个过滤装置连接起来,将处理过的水释放到第二个水箱2 。在这里,我们假设1中的进水的低点大于通过阀门的出水的低点。2中的水进入一个反渗透装置,以减少无机杂质。在最后阶段,如果符合要求的标准,来自反渗透装置的水或者作为清洁水分配,或者储存在反冲洗水箱3 ,然后通过水泵3,泵回过滤装置。在这里,我们假设水箱2 ,其容量足以在任何时候接收水箱3 的全部内容。

​ SWaT系统已经被用来提供一个数据集,其中包含在11天活动中记录的物理和网络数据[27]。该数据集的一部分包含了关于系统单独执行的信息,而另一部分则记录了系统在遭受不同类型的网络物理攻击时的影响。

在这里插入图片描述

图4 PLC1,PLC2和PLC3的梯形图逻辑,分别控制图3中的系统。

​ 因此,例如,(i) 滴入激活泵的指令2,可能会影响水的质量,因为它们会影响化学计量泵的正确运作;(ii) 注入指令以关闭之间的阀门。1和2 ,如果油箱是满的,可能会引起油箱1 的溢出;(iii) 对来自油箱3传感器的信号的完整性攻击可能会导致泵3 的损坏,如果它在3 是空的时候被启动。每个罐子都由其自己的PLC控制。图4中给出了三个PLC的程序,用梯形逻辑表示。在下文中,我们用TCMC对其进行描述。让我们从管理水箱的控制器PLC1 的用户程序开始1 。它的定义在下面给出两个方程的条款来处理两个泵(泵1 和泵2 )分别为开和关的情况。直观地说,当泵开动时,1中的水位下降,直到达到低位(事件1);当这种情况发生时,两个泵都被打开,并保持这种状态,直到水箱被重新填满,达到高水位(事件ℎ1)。从形式上看。

在这里插入图片描述

​ 因此,例如,当泵在PLC1 ,等待一个时间段(以获得稳定的传感器信号),然后检查水箱的水位1,区分三种可能的状态。如果1 达到其低水位(信号1 ),那么泵被打开(命令1 和2),阀门被关闭(命令 close_req)。否则,如果水箱1,处于低位和高位之间的某个中间水平(例如,某个水平1 ),那么PLC1 ,听从PLC2,以打开/关闭阀门的请求到达。确切地说,如果PLC得到一个open_req请求,那么它就会打开阀门,让水从1 到2,否则,如果它得到一个close_req请求,那么它就会关闭阀门;在这两种情况下,泵都保持不动。如果水箱的水位很高(信号ℎ1 ),那么来自PLC2的水请求就会像以前一样,但两个泵最终会被打开(1 和2 的命令)。PLC2 管理水箱的水位2 。它的用户程序由两个方程组成,用来模拟起吊的情况(状态↑)和清空(状态↓)的坦克。从形式上看。

在这里插入图片描述

​ 这里,在一个时隙之后,检查2 的水位。如果水位低(信号2 ),那么 PLC2 通过通道 open_req 向 PLC1发出请求,打开阀门,让水从1 流向2 ,然后返回。否则,如果水箱2 的水位很高(信号ℎ2 ),那么 PLC2通过通道 close_req,要求 PLC1 关闭阀门,然后返回。

​ 最后,如果水箱2 在2 和 ℎ2之间的某个中间水平(例如,某个水平2),那么当水箱重新装满(分别是清空)时,阀门仍然打开(分别是关闭)。最后,PLC3 ,管理反冲洗水箱的水位3 。它的用户程序由两个方程式组成,分别处理水泵3的情况和开启的情况。从形式上看。

在这里插入图片描述

​ 在这里,在一个时间段后,检查水箱3 的水平。如果液位很低(信号3 ),那么PLC3 就会打开水泵3(3 的命令),然后返回。否则,如果3 的液位很高(信号ℎ3 ),那么泵就会被打开(3 的命令),直到3的 全部内容被抽回2 的过滤单元。

​ 正确性属性和攻击的例子。在一个类似于上述的系统中,人们期望有一些属性来捕捉系统组件的正确运作。让我们举几个这样的正确性属性的例子,以及一些有可能使这些属性失效的特殊攻击。第一个属性可以说,如果PLC1 收到打开油箱1 和2 之间的阀门的请求,那么同一阀门最终会提前关闭,以防止水箱中的水溢出2。当系统没有受到任何攻击时,这一特性当然成立。然而,注入PLC1的恶意软件可能试图通过篡改阀门专用的执行器或篡改PLC2的开/关阀门请求来破坏这一特性。特别是,被注入PLC2的攻击者可能会伪造一个打开阀门的恶意请求。另一个期望的正确性属性可能是,只要水箱2是满的,那么PLC2 就不会要求从水箱1。最后,另一个期望的属性可能会说,如果水箱中没有足够的水,泵3 将永远不会工作3。同样,注入PLC3的攻击者可能试图通过篡改泵的专用执行器或测量水箱水位的传感器来破坏这一属性3 。在第7.3节中,我们将为结构化正确性属性的模式模板提供正式的定义,这些模板适用于强制执行我们PLC的正确行为。

5 控制器属性的正式语言

​ 在这一节中,我们提供了一个简单的描述语言来表达正确性属性,我们可能希望在运行时在控制器中强制执行。正如在介绍中所讨论的,我们借助于(一个子类的)常规属性,因为它们允许我们表达有趣的属性类别,指的是控制器的一个或多个扫描周期。建议的语言区分了两种属性:(i)全局属性,e∈PropG,表达一般控制器的执行痕迹;(ii)局部属性, p∈PropG,表达与某一特定区域有关的痕迹。有一定数量的连续扫描周期。这两个系列的属性通过以下有规律的语法进行了形式化。

在这里插入图片描述

​ 其中 ∈ Events ≜ Sens ∪ Act ∪ Chn ∪ Chn ∪ {tick} ∪{end}表示原子属性,称为事件,可能作为一个属性的前缀出现。在滥用符号的情况下,我们用符号,同时表示空属性和空跟踪我们的逻辑语义自然是以满足给定属性的执行轨迹集来定义的;其正式定义见表3。

在这里插入图片描述

​ 然而,就我们的意图而言,我们逻辑的语法有点过于宽松,因为它允许我们描述部分扫描周期,即尚未完成的周期。因此,我们把自己限制在考虑建立在与完整扫描周期相关的局部属性之上的属性,即最后一个动作是结束动作的扫描周期。从形式上看。定义4.形式良好的属性定义如下。

​ • 形成了良好的本地财产端。

​ • 形式的局部属性p1;p2如果p2 ,则p2 ,形成良好。

​ • 如果p1和p2都是良好的,那么形式为 p1∩p2 的局部属性就是良好的形成。

​ • 如果p*,则全局属性p∗是良好形成的。

​ • 如果e1和e2 都是格式化的,则全局属性 e1∩e2 是格式化的。

​ 在本文的其余部分中,我们总是假设使用形式良好的属性来工作。此外,我们还采用了以下关于属性的记号和/或缩略语。

​ 符号2。我们省略尾部的空属性,写成 ,而不是.。对于 >0,我们写成 。 作为… 的缩写。,其中前缀连续出现 。给定一个局部属性 ,我们写 events( )⊆ Events 来表示发生在 的事件集合;同样,我们写events( )⊆ Events 来表示发生在全局属性 ∈IPir♦♣● 的事件集合。给定一个事件集合A⊆Events和一个局部属性 ,我们用A本身作为一个是属性u∈A的缩写。 ,A.是属性u∈A的缩写。给定一组事件A,与end ∉ A,我们写A≤ ,对于 ≥ 0,表示如下定义的良好形式的属性。(i) A≤0 ≜ end。(ii) A≤ ≜ end ∪A 。 A≤−1 ,为>0。因此,属性A≤ 捕获了A的所有可能的事件序列,其长度最多为 ,为∈N。我们写PEvents表示纯事件的集合,即,Events{end}。最后,我们写PUEvents表示纯无时间的事件集合,即Events{end, tick}。

​ 请注意,我们的属性一般都是非确定性的。然而,由于我们对确定性的执行者感兴趣,在下文中,我们将着重讨论确定性的执行属性。

在这里插入图片描述

5.1 本地资产

​ 如前所述,局部属性描述的是仅限于一定数量的扫描周期的执行轨迹。让我们介绍一些重要的局部属性,它们可以用我们的常规属性语言来表达。在下文中,我们假设在我们的控制器的一个扫描周期内,即在两个后续的结束动作之间,可能出现一个最大的动作数,即maxa。

5.1.1 基本属性。它们规定了有条件的、最终的和持久的行为。

在这里插入图片描述

图5 一个满足持久性条件属性PCndm(Π, p)的追踪。

​ 条件性的。这些属性说,当一个(纯)无时间的事件 在当前的扫描周期中发生时,那么一些属性应该被满足。更一般地说,对于 ∈PUEvents和 ∈PropL,我们写Case( ∈ {( ,)})来表示属性,对于 = maxa,定义如下。
在这里插入图片描述

​ 当只有一个触发事件 ∈ PUEvents和一个相关的本地属性∈PropL,我们有一个简单的条件属性,定义如下。Cnd(, p) ≜ Case({(, )})。条件属性Cnd(, p)定义了一种因果关系,其中触发事件 ,在当前的扫描周期;我们可以想到一个更普遍的属性PCndm (, p),其中因果关系持续了>0个连续的扫描周期,也就是说,对触发事件的搜索最多持续了连续扫描周期。当然,触发的局部属性可能跨越一定数量的扫描周期(见图5)。形式上,我们写PCndm (,p),对于 Π∈PUEvents,p∈PropL和 >0,为属性认定如下:

在这里插入图片描述

​ 显然,Cnd(Π, p) = PCnd1 (Π, p)。-1有界限的最终。在这种情况下,一个事件 最终必须在 扫描周期内发生。形式上,对于 ∈PUEvents和 > 0,我们写BEm (Π )来表示属性 认定如下:

在这里插入图片描述

​ 有界限的持久性。虽然在BEm (Π )中,事件最终必须在扫描周期内发生,但有界持久性规定,一个事件,必须在所有后续的 扫描周期内发生。正式地说,对于 Π∈PUEvents和>0,我们写BPm ( Π)来表示属性 认定如下:

在这里插入图片描述

5.1.2 复合条件属性

上面的属性可以组合在一起以表达更详细的PLC行为。让我们在第4节用例的帮助下看几个例子。

​ 有条件的最终约束。根据这个属性,如果一个触发事件Π1 ,那么第二个事件Π2 最终一定会在 和的扫描周期之间发生,1 ≤m ≤n 。 形式上,对于Π1,Π2 ∈ PUEvents and 1 ≤ m≤n , 我们定义CBE[m,n] (Π1 ,Π2 ) 如下。
在这里插入图片描述

​ 直观地说,如果事件1 ,那么事件2 最终必须发生在扫描周期 和 之间。如果我们希望2 不应该在 -第1个扫描周期之前发生,那么该属性将成为。Cnd(1 , BAm−1 (2 ); BEn−m+1 (2 )。作为一个例子,我们可以在第4节用例的PLC1 中执行一个有条件的最终属性,以防止由于连接水箱1和2 的阀门被滥用而导致水箱2 中的水溢出。2假设∈N是当阀门打开且水箱2,水箱过水所需的时间(用扫描周期表示)。我们可以考虑执行CBE[1,w] (open_req, close)形式的属性,其中w<<z。2表示如果PLC1 收到打开阀门的请求,那么阀门最终将在最多三个月内关闭。扫描周期(包括当前周期)。这将确保如果来自PLC2 的水请求被PLC1 收到,那么控制从1 到2的法则的阀门将在最多的扫描周期内保持开放,w<<z,防止2 的溢出。

​ 有条件的有界持久性。另一种可能性是将条件性与有界持久性结合起来,规定如果触发事件Π1,那么事件Π2 必须在 m-th第1个扫描周期和所有后续的 m-th 扫描周期中出现,1 ≤m ≤n 。形式上,对于Π1 ,Π2∈PUEvents和1 ≤m ≤n ,我们写CBP[m,n] (Π1 Π,2 ) 表示定义的属性。

在这里插入图片描述

​ 作为一个例子,我们可以在第4节用例的PLC3中执行一个有条件的有界持久性属性,以防止由于水箱缺水而导致泵3 的损坏3 。3假设∈N是在泵3,即在泵3 到ℎ3 ,所需的最小时间(以扫描周期计算)。我们可以考虑强制执行CBP[1,z] (l3 , of3)形式的属性,规定如果水箱达到低水位(事件3),那么泵3 ,必须在连续的扫描周期内保持(3 的事件) 。这将确保水箱中有足够的水3以防止对泵造成损害3。请注意,之前的所有属性都有一个单一的触发事件1 ;为了处理多个触发的事件,只需用case结构代替条件运算符即可。

​ 有条件有约束的缺失(也叫有时间的缺失[24])。最后,我们可以考虑将有条件有约束的缺失结合起来,正式确定一个属性,即如果一个触发事件1 ,那么另一个事件2 在 -第1个扫描周期和所有随后的 -扫描周期中不得发生,1 ≤ m≤n 。形式上讲,对于Π1,Π2 ∈ PUEvents 和 1 ≤m ≤n ,我们写 CBA[m,n] (Π1 ,Π2 )来表示如下定义的属性。

在这里插入图片描述

​ 直观地说,如果触发事件1 ,那么事件2 ,在这一时间间隔内不得发生。第-个和 -个扫描周期。作为一个例子,我们可以在第4节用例的PLC2中执行一个有条件的约束性缺失属性,以防止由于连接水箱1 和2 的阀门被误用而导致水箱2的溢出。假设∈N是当阀门关闭和油箱时,清空油箱所需的时间(以扫描周期表示)2 。2达到其高水平ℎ 。2然后,我们可以考虑执行CBA[1,w] (h2 , open_req)形式的属性,对于< ,规定如果水箱达到高水位(事件ℎ2 ),那么PLC2在随后的扫描周期中不能发送打开阀门的请求(事件open_req)。这确保了当2达到高水位时,至少在扫描周期内不会要求进水,从而防止水箱过高。

在这里插入图片描述

图6 满足最小持续时间属性MinD(Π1,Π2,m,n)的追踪
5.1.3 复合持久性条件属性

​ 现在,我们将Frehse等人在混合系统验证中使用的一些正确性属性[24]在我们的规则属性语言中正式化。更确切地说,我们正式化了他们属性的有界版本。有约束的最小持续时间。当一个触发事件Π1 ∈PUEvents发生时,如果在扫描周期内发生第二个事件Π2∈PUEvents,那么这个事件必须至少出现在所有后续的扫描周期中(见图6)。从形式上看,我们可以把这个属性表达如下。

在这里插入图片描述

​ 请注意,每次CBP[m,m+n] (Π1 ,Π2 ) 都满足MinD( Π1,Π2 , m, n) 的属性。反之则不成立,因为在CBP[m,m+n] (Π1 ,Π2)中,事件2 需要在整个时间间隔内发生[m,m+n],而根据MinD(Π1 ,Π2 , m, n),事件2 可能根本不会发生。有界限的最大持续时间。当一个事件Π1 ∈PUEvents发生时,如果第二个事件Π2 ∈PUEvents在扫描周期内发生,那么同一事件2 最多可能在随后的所有扫描周期内发生。从形式上看,我们可以把这个属性表示为:

在这里插入图片描述

​ 每次CBP[m,m+n] (Π1 ,Π2 ); BA1 (2 )的属性MaxD(Π1 ,Π2 , m, n) 都得到满足。同样,反之亦然的情况不成立。有界响应。当一个事件Π1∈PUEvents发生时,如果第二个事件Π2∈PUEvents在扫描周期内发生,那么第三个事件Π3 ∈PUEvents在扫描周期内出现。从形式上看,我们可以把这个属性表达如下。

在这里插入图片描述

​ 有界不变性。每当一个事件Π1∈PUEvents发生时,如果Π2∈PUEvents在扫描周期内发生,那么Π3∈PUEvents将至少在扫描周期内持续发生。从形式上看,我们可以把这个属性表达如下。

在这里插入图片描述

5.1.4 有限度的相互排斥

​ 一类不同的属性规定了事件可能发生的情况∈PUEvents,对于 ∈ ,在连续扫描周期内相互排斥。形式上,对于 Πi∈PUEvents。i∈I , m≥1,我们写BMEm ( u ∈{Πi} ),对于属性 , 定义为。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

​ 例如,我们可以在第4节用例的PLC1,以防止阀门的颤动,即快速打开和关闭,这可能导致长期的机械故障。特别是,我们可以考虑执行BME3 ({open, close})形式的属性,即在3个连续的扫描周期内,阀门的打开和关闭(分别是事件的打开和关闭)只能在相互排斥中发生。

​ 在表4中,我们总结了本节所代表和讨论的所有本地属性。

5.2 全球属性

​ 正如预期的那样,之前描述的局部属性通过应用克莱恩运算符∗成为全局属性。一旦变成这种形式,我们就可以把这些属性放在它们之间结合起来。在这里,我们展示了两个全局属性,第一个是建立在有条件约束的持久性属性之上的,第二个是建立在有条件约束的最终属性之上的。作为第一个例子,我们可以考虑一个全局属性,即只要一个事件 ,那么所有事件,对于 i∈I ,必须在m-th第1个扫描周期和所有随后的 n-m 扫描周期中出现,对于1 ≤ m≤ n。形式上,对于Π, Πi∈PUEvents,i∈ I,以及1 ≤ ≤ :∈(CBP[m,n] (Π,Πi ))∗ 。

​ 我们可以在第4节用例的PLC1 中强制执行这种属性。假设 ∈N是时间(用扫描周期表示),当水箱1 的水位较低,两个泵都开着,阀门关闭时,水箱1所需的过流。然后,该属性将是(CBP[1,w] (l1 , on1 ))∗∩(CBP[1,w] (l1 , on2 ))∗, < , 表示如果水箱1达到低水位(事件1 ),那么从当前周期开始的所有后续 扫描周期中,泵1和泵2都必须开启(事件 on1 和 on2 )。

在这里插入图片描述

图7 满足刚才提到的特性的跟踪

财产是以下:

在这里插入图片描述

​ 对于Π1 ,Π2 ∈PUEvents,1≤ m≤n , d≥1。直观地说,属性(CBE[m,n] (Π1 ,Π2 )∗ 要求 ,当Π1 发生时,事件Π2最终必须发生在 -第一个扫描周期和 -第一个扫描周期之间。该属性的其余部分说,如果事件Π2 发生在 n-th第1个扫描周期内(记得 m≤n ),那么d必须在扫描周期内持续存在。

​ 通过这种方式,我们可以加强第5.1节中给出的PLC 1 的条件有界最终属性,以防止水箱中的水溢出T2。T2让z∈N是当阀门打开且水箱T2 ,水箱过水所需的时间(用扫描周期表示) 。该属性如下。

在这里插入图片描述

​ 其中 w<<z ,d∈N是在3 中释放水箱2 在 扫描周期中可能积累的(最大)水量所需的时间(以扫描周期表示)。该属性的第一部分说,如果PLC1 收到当PLC收到打开阀门的请求(事件open_req)时,阀门必须在最多的扫描周期内最终被关闭(事件close必须最终 )。该属性的其余部分说,当PLC1 收到打开阀门的请求(事件open_req)时,如果阀门在w -th第1个扫描周期内被关闭(事件close),那么它必须在 连续的扫描周期内保持关闭。这里, 既取决于T2在 扫描周期内可达到的最大水位 ,也取决于从T2 到T3 的水位低的物理规律。

6 监控合成

​ 在这一节中,我们提供了一种算法,从规则属性中合成监视器,这些属性的事件包含在(与之相关的)可观察控制器动作的ixed集P 中 。更确切地说,给定一个全局 属性e∈PropG,该算法返回一个编辑自动机⟨| |⟩P ∈Edit,它能够在一个通用控制器的执行过程中执行属性,该控制器的可能动作与P中的动作是一致的。表5通过对输入的全局/局部属性的结构进行归纳,确定了合成算法; ,因为我们将全局属性与局部属性区分开来,所以我们的算法分两步进行。

​ 备注3 。我们回顾一下,根据表1中的操作语义,所有的控制器动作都是可观察的,而且它们基本上与用于建立第5节中的执行属性的 事 件集相吻合。因此,我们将合成强制监控器,它可以观察到被检查的控制器的任何行动,并可以相应地采取行动。

​ p∗与全局属性相关的监视器⟨|p∗|⟩P 是通过递归方程X = ⟨| p|⟩Px 确定的编辑自动机,以递归地执行局部属性。监控器⟨|e1∩e2 |⟩P 是由编辑自动机⟨|e1 |⟩P 和⟨|e2|⟩P 之间的交积得到的,只接受同时满足1 和2的轨迹;该定义两个编辑自动机之间的交叉乘积,让人想起了井喷状态自动机的情况,它被报告在,附录的表6。监视器⟨|p1 ∩p2 |⟩P 是由编辑自动机之间的交叉积给出的⟨|p1|⟩P 和 ⟨|p2 |⟩P 。监控器⟨|p1;p2 |⟩P 由自动机⟨|p1|⟩P ,其中Z = |p2|⟩P ;基本上X X X Z XZ将执行1 的自动机的初始状态与执行2 的自动机的初始状态联系起来(例如⟨|p2|⟩P = ||⟩PZ= Z,对于Z = | p2 |⟩P )。与联合属性u相关的监视器∈ 。 做到了以下。(i) 允许所有与事件相关的行动 ,(ii) 插入与一些可接受的行动相关的行动事件 ,只有当控制器希望过早地完成扫描周期时,即发出一个结束动作,和(iii) 抑制任何其他的行动,除了打勾和结束行动。

在这里插入图片描述

​ (iii) 抑制任何其他的行动,除了打勾和结束行动。因此,执行的缓解实际上是在由联盟属性合成的监视器中实现的。在实践中,当被检查的控制器符合监控器强制执行的属性时,监控器和控制器这两个组件就会以拴住的方式发展(通过应用规则(Allow)),在相关的正确状态中移动。然而,如果控制器以某种方式被破坏(例如,由于恶意软件的存在),那么这两个组件将被错位,达到不相关的状态。在这种情况下,执行者通过抑制控制器发出的剩余动作(通过应用规则(抑制))来减轻攻击,直到控制器达到扫描周期的终点,由 结 束 动 作的发出来表示。3.之后,如果监控器和控制器不一致,监控器将通过一次或多次应用规则(插入)命令插入一个安全跟踪,而不需要控制器的参与。我们的执行者在完全自主的情况下插入的安全轨迹总是以 结 束 来 结 束。因此,当控制器和监视器对准时,在扫描周期结束时,它们将通过应用规则(Allow)在行动 结 束时进行同步,从那时起,它们可以以拴住的方式继续。

​ 请注意,根据备注1,即使控制器完全不可靠,监控器插入了整个安全轨迹,强制扫描周期总是在违反最大周期限制之前结束。现在,我们根据运算符∩在 中出现的次数和 的维度,dim(e),即在中出现的所有运算符的数量来计算合成算法的复杂性。一个属性的大小是由其中出现的运算符的数量决定的。

在这里插入图片描述

​ 命题1(复杂度)。让 e∈PropG是一个全局属性,P是一个行动集合,使得events(e)⊆P。合成⟨|e|⟩P 的算法的复杂性是O(|P| mk+1 ),其中 = dim(e),是运算符∩在e的出现次数。在下文中,我们将证明由我们合成的监控器所诱导的执行享有导言中所述的特性:确定性保持、透明、健全、无死锁、无发散和可伸缩性。在这一节中,略微滥用一下符号,给定一组可观察的行动P,我们将用P来表示相应事件的集合。给定一个确定性的全局属性 ,我们的合成算法会返回一个确定性的执行者(根据定义2),即,一个可以有效实施的执行者。从形式上看。

​ 命题2(确定性的保存)。给定一个确定性的全局属性e∈PropG在一组事件P上,编辑自动机⟨|e|⟩P是确定性的。让我们来谈谈透明度。直观地说,由一个确定性的属性e ∈ PropG引起的强制执行。应该保留任何满足 本身的执行轨迹([43]第5页的定义2)。

​ 定理1(透明性)。让e ∈ PropG 是一个确定性的全局属性,P是一个可观察行动的集合,使得事件( e)⊆P,并且 ∈ Ctrl是一个控制器。让 t=a1…an是控制器 的跟踪, t∈ [e ] 。那么,(1) 是编辑自动机⟨|e|⟩P的跟踪,(2)对于⟨|e|⟩P ,不存在跟踪t′ =a1…an,以便 0 ≤ k<n 和∈ {ak+1,ak≺ak+1 },对于某些 。基本上,结论(1)说,所有满足执行属性的执行轨迹 (控制器 )都被相关的执行者⟨|e|⟩P所允许,而结论(2)说,允许轨迹 是执行中唯一可能的选择(这由 的确定性得出)。我们执行的另一个重要属性是健全性[43]。直观地说,在监控者⟨| e|⟩P的监督下,控制器应该只产生满足强制属性 的执行轨迹,即符合其语义的执行轨迹[e](至于 -action)。

​ 定 理 2 ( 健全性 ) 。 让 e∈ PropG 是一个全局属性,P是一个可观察行动的集合,使得 事 件 (e)⊆P,并且 p∈ Ctrl 是一个控制器。如果 是被监控的控制器⟨|e |⟩P ⊲⊳ { P}的跟踪,那么tˆ是[e ]中某个跟踪的前缀(关于跟踪tˆ的定义,见记号1)。

​ 在这里,需要强调的是,一般来说,健全性并不能确保被监控的控制器无死锁。也就是说,某些属性的执行 ,可能会导致控制器的死锁。在审查中。特别是,在我们的控制器中,只有当初始睡眠阶段与执行属性不匹配时才可能发生这种情况(例如, P= tick.c end. P和 = (c. end)∗ )。直观地说,一个局部属性将被称为-睡眠属性,如果它允许 睡眠的初始时间瞬间。从形式上看。

​ 定义7。对于 k∈ N+ ,我们说e∈ PropG 是一个 - 睡眠的局部属性,只有当 [ p] = {|=t1…tn ,对于 > 0, s.t. = tick -′ - end, end ∉′t’, and 1 ≤i≤ n}。我们说,∗ 是一个 -sleeping 全局属性只有当 是,并且 12 是 -sleeping,只有当1 ,2 是 -sleeping。-sleeping属性的执行并没有在 -sleeping控制器中引入死锁。这是因为我们合成的监控器抑制了被检查的控制器的所有不正确的动作,将其驱动到其扫描周期的末端。然后,控制器保持待机状态,同时监控器产生一个安全的动作序列来模拟当前扫描周期的安全完成。

​ 定理3(死锁-自由)。让 e∈PropG 是一个 -睡眠的全局属性,P是一个可观察行动的集合,使得事件(e)⊆P。让P ∈ Ctrl是一个形式为P = tick 的控制器。其可观察动作集包含在 P 中。那么,⟨|e|⟩P ⊲⊳ {e}不会死锁。我们的执行机制的另一个重要属性是发散自由度。在实践中,强制执行并没有引入分歧:被监控的控制器总是能够通过执行一定数量的动作来完成他们的扫描周期。这是因为我们把我们的执行限制在形式良好的属性上(定义4)。其中总是以一个结束事件结束。特别是,局部属性的良好形式确保我们在形式为p∗ 的全局属性中,两个后续结束事件内的事件数量总是无限的。

在这里插入图片描述

图8 我们实施的一些物理组件

​ 定理4(发散-自由)。设 e∈ PropG是一个全局属性,P是一组可观察的行动,使得事件(e)⊆ P,并且P∈Ctrl是一个控制器。那么,存在一个 ∈ N+ ,这样,每当 ⟨|e|⟩ ⊲⊳ {P}。–→-E ⊲⊳{J}, 如果E⊲⊳{ J’}–→-E ⊲⊳ {t’}, with |t|≥K , then end ∈ .请注意,到目前为止,所有的属性都可以扩展到控制器的现场通信网络。这意味着,当被检查的控制器与同一现场通信网络中的其他控制器并行运行时,它们都被保留下来。作为一个例子,通过对定理1和2的应用,我们展示了透明度和健全性是如何扩展到现场网络的。类似的结果也适用于其余的属性。
在这里插入图片描述

7 执法机制的工作

​ 在这一节中,我们提出了一个执行机制的实施方案,其中运行在现场可编程门阵列(FPGA)上的监控器[65],执行运行在树莓派设备[25]上的开源PLC[8],并管理一个用Simulink[47]模拟的物理工厂。本节有如下结构。在第7.1节,我们论证了为什么FPGA是实现安全代理的良好候选者。在第7.2节,我们描述了我们如何为第4节的用例实现整个执行架构。在第7.3节中,我们测试了我们的实现,用五种不同的恶意软件注入被执行的PLC,旨在引起三种不同的物理扰动:油箱过低、阀门损坏和泵损坏。选择这些攻击是为了尽可能地覆盖第2节的攻击者模型。特别是,它们包括:阀门执行器指令的下降,对水位传感器的完整性攻击,阀门执行器指令的伪造,阀门开/关信息请求的伪造,以及泵执行器指令的伪造。第7.4节讨论了我们实现的性能。

在这里插入图片描述

图9 在Simulink中实现SWaT系统的工厂
7.1 FPGA作为ICS的安全代理机构

​ 现场可编程门阵列(FPGA)是可以通过编程来运行特定应用的半导体器件。FPGA由(逻辑)块、路由通道和I/O块组成。逻辑块可以被配置成执行复杂的组合功能,并进一步由晶体管对、逻辑门、查找表和多路复用器组成。应用程序是用硬件描述语言编写的,如Verilog[64]。因此,为了在FPGA上执行一个应用程序,其Verilog代码被转换为一个比特序列,称为比特流,并被加载到FPGA上。当对手没有对设备进行物理访问时,FPGA被认为是安全的,也就是说,位流不能被破坏[33]。最近的FPGA支持比特流的远程更新,依靠认证机制来防止恶意逻辑的未经授权的上传[33]。然而,正如介绍中所说的和McLaughlin和Mohan[48, 50]所倡导的,应该防止任何形式的运行时重新配置。综上所述,在假设对手没有对FPGA的物理访问,并且她不能进行远程更新的情况下,FPGA代表了实现安全执行代理的良好候选者。

7.2 第4节的SWaT系统的执行情况

​ 拟议的实施方案对工厂、控制器和执行者采用了不同的方法。

工厂。SWaT系统的工厂是在Simulink[47]中模拟的,Simulink是一个对网络物理系统进行建模、模拟和分析的框架,在工业和研究中被广泛采用。Simulink模型是由通过导线相互连接的块给出的。我们的Simulink模型包含模拟水箱、执行器(即泵和阀门)和传感器的块(见图9)。特别是,水箱块根据从[27, 46]中得到的物理约束实现了水箱的动态模型的差分方程。执行模块接收来自PLC的命令,而传感器模块将测量结果发送给PLC。为了简单起见,泵和阀门的状态变化不是瞬间发生的;它们需要1秒时间4.我们在一台装有2.8GHz英特尔i7 7700 HQ、16GB内存和Linux Ubuntu 20.04 LTS操作系统的笔记本电脑上运行我们的Simulink模型。

控制器。控制器是在OpenPLC[8]中定义的,这是一个开源的PLC,能够运行所有IEC61131-3定义的语言的用户程序[1]。此外,OpenPLC支持标准SCADA协议,如Modbus/TCP、DNP3和Ethernet/IP。OpenPLC可以在各种硬件上运行,从简单的Raspberry Pi到强大的工业板。我们在三个Raspberry Pi 4[59]上安装了OpenPLC;每个实例都运行图4中的三个梯形逻辑之一。

执法者。执行器是用三块NetFPGACML开发板实现的[70]。我们的合成算法是用Python实现的,以返回用Verilog编写的执行器,并使用以下方法检查正确性ModelSim[49]。然后Verilog代码被编译成比特流并在FPGA中执行。更确切地说,我们在Python中的算法将包含要合成的属性和其他相关信息的JSON文件作为输入,例如输入/输出信号的数量和可接受的输出信号中的优先级,以确保系统的安全性(例如,远离边界的水位)。然后,通过ANTLR解析器[52]对该属性进行解析。在解析之后,我们的算法实现了表5的合成,以推导出强制编辑自动机;这被写成JSON ile。在这个阶段,推导出的编辑自动机仍然是有些抽象的,因为 结 束 和 勾 选 动 作都是明确表示的。最后,该算法将编辑自动机编译成一个用Verilog编写的执行器,在那里实现了上述抽象的内容。特别是,时间的流逝通过时钟变量来表示和监测,而扫描周期的结束(即 结 束 动 作)则通过特定的代码来实现,以使执行器和控制器同步,并依靠时钟变量。因此,在每个扫描周期之前,执行者将当前输入(来自工厂)转发给控制器。然后,当扫描周期完成后,它从控制器接收所有的当前输出,并将它们转发给执行器。同时,执行器通过其时钟变量监测时间的流逝,当扫描周期完成时(即,控制器发送所有的输出),它移动到对应于下一个扫描周期的状态。最后,在我们的FPGA中,我们还编写了一些代码来实现一个基于UDP的网络,将执行者、PLC和模拟工厂连接在一起。
在这里插入图片描述

图10 水箱溢出。第一次(让PLC1)和第二次攻击(右PLC2 )中被破坏的梯形图逻辑。

​ 三个PLC的代码,Python中的算法,用Verilog编写的执行器,以及Simulink模拟可以在以下网站找到:https://bitbucket.org/formal_projects/runtime_enforcement。

7.3 受到攻击的强制SWaT系统

​ 在这一节中,我们考虑了针对SWaT系统PLC的五种不同的攻击,以实现三种可能的恶意目标。(i) 溢出水箱;(ii) 损坏阀门;(iii) 损坏水泵。为了模拟在PLC中注入恶意软件,我们用受损的PLC梯形逻辑重新安装原始的PLC,其中包含一些额外的逻辑,旨在破坏PLC的正常运行[28]。在下文中,我们将讨论这些攻击,按目标分组,说明如何通过保护受监控的PLC的正确行为来执行特定的属性来减轻攻击。

​ 罐体过流。我们的第一次攻击是针对PLC1的阀门的DoS攻击,通过丢弃关闭阀门的命令。在图10的左侧,我们展示了这种攻击在梯形逻辑中的可能实现。基本上,恶意软件在500秒内保持沉默,然后它设置一个恶意的下降变量为真(用黄色突出显示)。一旦下降变量为真,阀门变量就会被强制为假(红色突出显示),从而阻止阀门的关闭。

在这里插入图片描述

图11 水箱溢出。在执行e1,e2,e3 (向上)和e′,e2,e3 (向下)时对PLC1进行DoS攻击

​ 为了防止旨在溢出水箱的攻击,我们提出了三个执行属性,每个PLC一个。第一个属性1,通过确保泵1 和泵2 在油箱满的情况下,防止油箱溢出1 。第二个属性2 是为了防止水箱2的流量过大,确保当水箱满时,调节进水的阀门被关闭。最后,第三个属性3 是为了防止水箱3过度流动,确保水箱满时泵3 开启。

​ 让我们用我们的形式语言来定义这三个属性。

在这里插入图片描述

​ 现在,让我们分析一下由这三个属性引起的执行的有效性。例如,在图11的上图中,我们报告了之前描述的DoS攻击对坦克1 和2 的影响,当时在相应的PLC中执行了三个属性1 、 2 和3。这里,红色区域表示攻击变得活跃的时间。读者可能会注意到,尽管PLC2多次请求关闭阀门,但被攻击的PLC1 从未关闭阀门,导致水箱2 的流量过大。因此,强制执行的属性1是不能胜任的。
在这里插入图片描述

图12 水箱溢出

​ 为了防止这种攻击,我们必须保证PLC1 在PLC2 要求时关闭阀门。因此,我们应该在PLC1中强制执行一个更苛刻的属性′ , 其定义如下。e1 ∩CBE[1,1] ( close_req , close )。基本上,该属性的最后一部分确保每个关闭阀门的请求都是在同一扫描周期内实际关闭阀门的。在执行属性e1′,e2 ,e3 时,恶意软件对PLC1 的影响体现在图11的下图中。现在,PLC1的正确行为得到了保证,从而防止了水箱T2的溢出。在这些图中,绿色突出显示的区域表示监控器检测到攻击并减轻被攻击的PLC1的活动的时间。特别是,当PLC2 发出关闭阀门的请求时,监控器代表PLC1 插入关闭阀门的命令.

​ 在加强了PLC1 的执行属性后,人们可能会认为在PLC2 中执行T2 ,现在对防止T2中的水位过高是多余的。然而,如果攻击者能够破坏PLC2 ,情况就不是这样了。考虑对PLC2的第二种攻击,一种完整性攻击,在2的测量水位上增加一个-30的集合。我们在图10的右侧显示了这种攻击的梯形逻辑实现,为了简单起见,我们省略了持续500秒的初始沉默阶段。图12的上图显示了在强制执行属性′ 和3 的情况下,注入PLC2 的恶意软件对坦克1 和2的影响。同样,红色区域显示了攻击变得活跃的时间。读者可能会注意到,被攻击的PLC2从未发送过关闭阀门的请求,导致水箱的流量过大T2 。另一方面,当在三个PLC中执行三个属性e1′,e2 ,e3,图12的下图显示,水箱2的过流被阻止。同样,绿色突出显示的区域表示当监控器检测到攻击并减轻被攻击的PLC的命令时T2。在这里,当T2 达到一个高水位时,监控器代表PLC2 插入了关闭阀门的请求。

在这里插入图片描述

图13 阀门损坏

阀门损坏。我们现在考虑攻击的目的是通过颤动来破坏阀门,即阀门的快速交替打开和关闭,从长远来看,可能会导致机械故障。在图13的左侧,我们展示了第三种攻击的可能梯形逻辑实现,它对阀门的打开和关闭命令进行了注入。特别是,该攻击反复交替进行一个待机阶段,持续70秒。和注入阶段,持续30秒(黄色区域);然后,在注入阶段,阀门被快速打开和关闭(红色区域)。在没有强制执行的情况下,攻击对油箱1 和2的影响在图14的上图中表示出来,其中红色区域表示攻击变得活跃。从与执行1相关的图表中,读者可以很容易地看到阀门正在颤动。请注意,这是一个隐蔽的攻击,因为2的水位保持在正常运行范围内。

​ 为了防止这种攻击,我们可以考虑在PLC1 中执行一个有边界的互斥属性,其形式为e′′ ≜ (BME10000{open, close})∗ ,以确保在10000 个连续的扫描周期(10秒)内,阀门的打开和关闭只能发生在互斥中。当属性e′′ 被强制执行时,在PLC1,图14的下图显示,阀门的颤动被阻止了。特别是,绿色突出显示的区域表示当监控器检测到攻击并减轻了对被攻击的PLC1 的阀门的命令。

​ 交替要求打开和关闭阀门。这可以通过对油箱2的传感器进行完整性攻击来实现,即在低和高之间快速切换测量值。在图13的右侧,我们展示了对PLC2的这种攻击的部分梯形逻辑实现,为了简单起见,我们省略了处理相位交替的机制。同样,该攻击在持续70秒的待机阶段和持续30秒的激活阶段之间反复交替进行。当攻击处于活动阶段(红色区域)时,2 的测量水位在低位和高位之间迅速切换,因此,向PLC1发送请求,以迅速交替地打开和关闭阀门。

​ 在没有执行监控器的情况下,这种攻击目标对PLC2 的影响体现在上图中。图15的图表中,红色区域显示了攻击变得活跃的时间。请注意,来自PLC2的快速交替请求引起了阀门的颤动。另一方面,在PLC1 中执行属性e′′ ,图15的下图显示,水箱1和2的正确行为得到了保证。在该图中,绿色突出显示的区域表示当PLC1的执行者检测到攻击并减轻被攻击的PLC2 的命令(对阀门)时。请注意,在这种情况下,PLC2不需要执行。

泵的损害。最后,我们考虑以破坏水泵为目标的攻击,特别是水泵3。在这种情况下,攻击者可能会强迫水泵在水箱3是空的时候启动。这可以通过ifth攻击来实现,该攻击根据类似于图10中看到的梯形逻辑实现,注入开启水泵的命令。在没有强制执行的情况下,这种攻击对水箱3的影响表现在图16的左侧图形中,其中红色区域显示了攻击变得活跃的时间。读者可能注意到,当3 ,泵3被打开。
在这里插入图片描述

图14 阀门损坏:在没有(向上)和有(向下)强制执行的情况下,对PLC1 的注射攻击

在这里插入图片描述

图15 阀门损坏:在没有(向上)和有(向下)强制执行的情况下,对PLC2 的完整性攻击.

​ 现在,我们可以通过对PLC3 强制执行以下有条件的持久属性来防止泵T3 的损坏:e3′ ≜ (CBP[1,w] (l3 , of3 ))∗ 。这个属性的执行确保了当水箱T3 中的水位较低时,泵3在连续的扫描周期中是有的,对于w<z和z ∈N 是泵有的时候需要的时间(用扫描周期表示)ill up tank3 。因此,当执行e3′ 时,较低的图16的图表显示,3的正确行为得到了保证,从而防止了泵的损坏。在该图中,绿色突出显示的区域表示监控器检测到攻击并减轻被破坏的PLC 的 命令(泵)t3。更确切地说,执行者在连续的扫描周期内,当水箱是空的时候,抑制了开启泵的命令。

7.4 讨论

​ 在本节中,我们依靠Vivado Design Suite 15.2 [66]分析工具对我们的实现进行性能分析。至于我们的FPGA使用的硬件资源,我们以执行过程中使用的查找表和寄存器来衡量。它们的数量取决于FPGA中实现的执行器的状态数量。而这个数字与执行(本地)属性所涉及的扫描周期的数量成正比。特别是,对于每个扫描周期,执行器的状态数量,取决于监测的输入/输出信号及其可接受的值。例如,对于需要10毫秒(0.1kHz)的扫描周期,一个持续10秒的强制局部属性将涵盖1000个连续的扫描周期,合成的强制器将有 ∗ 1000个状态。在我们的实验中,当执行覆盖1000个扫描周期的属性时,硬件资源的使用达到了5%;对于10000个周期,由于执行器尺寸的增加,资源使用上升到13%。至于执行的速度,一般来说,所有的FPGA都能够以100MHz的速度运行。(或更高)。实际执行速度取决于底层代码的复杂性,在我们的案例中是执行者,加上一些额外的代码来实现网络通信协议(UDP)。在我们的实验中,FPGA的运行频率为1MHz,而PLC的运行频率为0.1-1kHz。因此,FPGA引入的开销可以忽略不计,这与FPGA中实现的执行者的规模(状态数量)无关。我们记得在备注1中,我们假设我们的强制控制器在最大周期限制的一半以下成功完成扫描周期(以防扫描周期被强制器完全纠正)。然而,由于FPGA引入的开销可以忽略不计,这个约束实际上是可以放松的。

​ 最后,关于执行器之间的通信延迟,许多FPGA支持高速和低延迟的通信,这是工业控制背景下使用的通信[51]。我们使用了具有支持1Gbps速度的以太网端口的FPGA,也就是说,具有100微秒的延迟。此外,由于我们的可扩展性结果(推论1),执行FPGA的网络在通信延迟和硬件资源方面的开销可忽略不计。

8 相关工作

​ 运行时执行的概念是由Schneider[60]提出的,通过截断自动机来执行安全策略,这是一种自动机,在违截断自动机只能执行安全属性。此外,所产生的执行结果显然可能导致被监控系统的死锁(实际上是终止),没有缓解的余地。

​ Ligatti等人[43]研究了一个执行机制的层次,每个机制都有不同的转换能力。Schneider的截断自动机、抑制自动机、插入自动机,最后是结合了抑制和插入自动机的能力的编辑自动机。编辑自动机能够强制执行安全和有效性属性的实例,以及其他属性,如更新属性[12, 43]。Ligatti等人定义了不同的执行概念,特别是所谓的精确执行(Deinition 2,第5页),它基本上对应于我们的透明度和健全性概念的组合,分别在定理1和2中证明。我们的执行者在以下三个方面与Ligatti等人的编辑自动机不同。首先,在一般情况下,编辑自动机具有可列举的状态数量,而在本文中,我们将自己限制在初始状态的编辑自动机。第二,Ligatti等人的编辑自动机可以在一个步骤中插入一串非空的符号,而在不损失表现力的情况下,我们的执行者每一步只能插入一个符号(也就是说,我们需要多个步骤来插入一串符号)。第三,Ligatti等人的编辑自动机是确定性的,也就是说,对于被审查系统的任何行动,执行者只允许有一个可能的输出。在我们的论文中,我们采用了Pinisetty at al.[54]的确定性执行者的概念,其中插入有一定程度的自由,因为插入的符号是在一组可接受的符号中选择的。尽管存在这些差异,我们相信,当关注初始状态执行者时,我们能够执行与Ligatti等人[43]相同的一套正确性属性。

​ Bielova和Massacci[12, 13]通过引入可预测性标准来防止监控器以任意的方式转换无效的执行,提供了一个更强大的可执行性概念。直观地讲,如果人们能够预测用于纠正无效执行的转换数量,就可以说监控器是可预测的。在我们的环境中,如果注入一个可能以不可预测的方式行事的恶意软件,这种方法似乎是不可行的。Falcone等人[21,22]提出了一种综合算法,依靠Streett自动机,将安全进展层次结构[44]中定义的大多数属性类转化为(编辑自动机的轻微变化)。在安全进展层次中,我们的全局属性可以被看作是保证属性,对于这些属性,所有满足属性的执行轨迹至少包含一个仍然满足该属性的前缀。然而,应该注意的是,它们只考虑了非定时属性;正如前面已经指出的,定时动作在我们的执行中起着特殊的作用,它们不能被视为非定时动作。

​ Beauquier等人[10]证明了初始状态编辑自动机(即我们实际感兴趣的那种执行者)只能执行正规属性的一个子类。实际上,他们可以执行所有的,也只有那些可以用初始自动机识别的规则属性,这些初始自动机的周期总是包含至少一个初始状态。这就是我们强制执行的规则属性的情况,因为IPir♦♣▲中形式良好的局部属性总是以 łinalž 原子属性结束。Pinisetty和Tripakis[55]研究了执行不同的规则属性的可组成性1, . . .,,同时,通过合成相关的执行监视器。我们的想法是用组合式的方法取代单片式的方法,即从属性1 ∩ . .∩ ,用一种组合式的方法,即把执行属性 的监控器 ,以某种方式组合起来,以执行1 ∩ . .∩。[55]的作者证明,对于一般的规则属性,运行时强制执行不是组合性的,对于串行或并行组合也不是。另一方面,对于安全(或共同安全)属性等常规属性的某些子类来说,组合性是成立的。在此,我们希望指出,我们的可扩展性概念与他们的组合性概念不同,因为我们的目标是在PLC网络上扩展我们的执行,而不是在同一个PLC上的多个常规属性上。

​ Bloem等人[14]设计了一种综合算法,给定一个安全属性,返回一个监视器,称为盾牌,以执行反应式系统(与控制系统有许多共同点)中的非定时属性。他们的算法依赖于一个叫做 -stabilization的概念:当设计达到一个违反属性的状态时对于某些可能的未来输入来说是不可避免的,屏蔽被允许最多偏离 ∈ N步;如果在 -步恢复阶段发生第二次违反,屏蔽进入故障安全模式,它只执行正确性,但不再使偏离最小。然而,对于许多安全关键系统来说, -稳定的盾牌合成问题是不现实的,因为不能保证一定数量的偏差。Humphrey等人[34]通过提出可接受屏蔽的概念来解决这个问题,Könighofer等人[35]通过假设系统对屏蔽有合作行为,即如果系统选择了某些输出,屏蔽可以确保一定数量的偏差。作者提出了一个综合程序,使系统和环境之间的合作最大化,以满足所需的强制属性。这种方法与我们的执行有一些相似之处,在一个扫描周期中,对一个属性的违反会引起对所有后续控制器动作的抑制,直到PLC达到扫描的终点,所以监控器可以在允许完成扫描周期之前插入一个安全的跟踪。

​ Pinisetty等人[54]为反应式系统提出了一种双向的运行时执行机制,更普遍的是依靠Berry和Gonthier的同步假说[11]为网络物理纠正输入和输出。Pinisetty等人用离散定时自动机(DTA)来表达安全属性,这比我们的常规属性类更有表现力。因此,只有当一个执行轨迹最终停留在相应的DTA的初始状态时,它才满足所需的属性。然而,由于不是所有的常规属性都能被执行[10],他们提出了一个更宽松的执行机制,只要仍有可能到达最终状态,就接受执行轨迹。此外,由于同步方法的即时性,他们的执行行动被应用在同一反应步骤中,以确保反应性。相反,在我们的方法中,强制执行是在扫描周期结束之前进行的,而扫描周期是通过结束动作明确划分的。我们的确定性执行者的概念取自Pinisetty等人[54]。此外,当插入安全动作时,我们合成的执行者遵循Pinisetty等人的随机编辑方法,其中插入的安全动作是从一个可接受的动作列表中随机选择。

​ Pearce等人[53]通过在PLC和受控物理过程之间引入智能I/O模块(类似于我们的安全代理),提出了对PLC的有价信号的双向运行执行,以作为一道有效的防线。作者用值离散定时自动机(VDTA)来表达安全属性,灵感来自Pinisetty等人的DTA[54]。与DTA不同,VDTA支持有值信号、内部变量和保护条件。与Pinisetty等人[54]一样,本文采用了同步假设[11]来修正输入和输出;因此,他们的执行行动是在同一反应步骤中应用的,以确保即时反应性。作者不考虑可能篡改控制器间通信的攻击:他们的攻击者只可能操纵传感器信号和/或执行器命令。最后,他们的语义要求每个执行者都知道特定系统中所有相关信号和命令的状态。因此,正如这些作者所写的,一个具有多个I/O模块的网络系统可能会使执行变得非常复杂,因为安全策略的相关I/O可能不是本地可用的。因此,与我们不同的是,他们的执行不能自然地扩展到控制器网络;我们认为这基本上是由于他们做双向执行的事实。最后但并非最不重要的是,和他们一样,我们通过FPGA来实现执行器,以确保效率和安全。特别是,当插入安全动作时,我们的实现在可接受的安全动作之间确定了一个优先级,这与他们选择的编辑方法类似。然而,我们的实现至少在以下方面与他们不同:(1) 我们的FPGA确实执行了PLC的传输(延迟可以忽略不计);(2)我们的执行是单向的,因此我们的FPGA只需要知道相应的被执行的PLC的信号和命令的状态;(3) 因此,我们的FPGA可以联网监测现场通信网络,在计算资源和通信延迟方面只支付可忽略的开销。

​ Aceto等人[6]开发了一个操作框架,以执行带有递归的HML逻辑(HML)中的属性,只依靠抑制。更确切地说,他们实现了对以下安全片段的执行通过提供一种线性自动合成算法,从公式中生成正确的抑制监控器。Martinelli和Matteucci[45]以前通过一种合成算法解决了模态 -calculus(HML的重述)的可执行性问题,该算法在可执行公式的长度上是指数级的。Cassar[18]设计了一个通用框架来比较不同的执行模型和不同的正确性标准,包括最优性。他的工作重点是HML的安全片段的执行,注意到单向和双向的执行概念。最近,Aceto等人[7]开发了一个双向执行的操作框架,并使用它来研究上述带有递归的HML安全片段的可执行性,通过一种特殊类型的双向执行监视器,即动作禁用监视器。

​ 至于与我们的目标更接近的控制系统安全方面的论文,McLaughlin[48]提出引入一个执行机制,称为C2 ,类似于我们的安全代理,以调解由PLC传输到工厂的控制信号。因此,与我们的安全代理一样,C2能够抑制命令,但与我们的代理不同,它不能在PLC没有及时采取正确行动的情况下自主地向物理设备发送命令。此外,C2不能应对控制器之间的通信,因此也不能应对在同一现场网络的PLC上运行的串通恶意软件。Mohan等人[50]提出了一个不同的方法,设计了一个临时的安全架构,称为安全系统简单架构(S3A),目的是概括正确的系统状态的概念,不仅包括工厂的物理状态,还包括系统中PLC的网络状态。在S3A中,每个PLC都在一个侧通道监控器的监视下运行,该监控器寻找与安全执行有关的偏差,并关注实时约束、内存使用和通信模式。如果通过监控器获得的信息与PLC的预期模型不同,决策模块将被告知,以决定是否将控制权从可能受到损害的PLC转移到安全控制器,以保持工厂在所需的安全范围内。正如这些作者所报告的,S3A有一些局限性,包括:(i)用于监测的侧面通道可能受到影响,(ii)状态机定时参数的调整,这仍然是一个手工过程。

​ 本工作是出现在[38]中的会议版本的修订扩展。在这里,我们提供了一个与该论文的详细比较。在第2节中,我们规范了攻击者模型和攻击者目标。在第3节中,我们采用了Martinelli和Matteucci[45]的风格,对编辑自动机进行了简化的操作语义学。在第5节中,我们用局部和全局属性的交叉来扩展我们的常规属性语言。通过这一扩展,我们表达了一个广泛的正确性属性系列,这些属性可以以模块化的方式组合;这些属性包括并扩展了会议论文中出现的三类属性。在第6节中,我们扩展了我们的合成算法以处理我们的扩展属性:属性的局部和全局交集都是以编辑自动机的交叉产物来合成的。请注意,与会议论文相比,我们的执行机制不再依赖于一个临时的语义规则(Mitigation)来在扫描周期的末尾插入安全动作,而是依赖于更标准的规则(Insert)以及合成的执行者的句法结构。如命题1所述,现在我们的合成算法取决于输入中属性的交叉运算符的大小和出现的次数。最后但并非最不重要的是,在这个期刊版本中,我们提供了我们的用例的实现,基于:(i)Simulink来模拟物理工厂,(ii)Raspberry Pi上的OpenPLC来运行开放式PLC,以及(iii)FPGA来实现执行器。然后,我们将我们的实现暴露在针对PLC的五种不同的攻击中,并讨论了所提出的强制机制的有效性。

​ 在一项初步的工作中[39],我们提出了对我们的过程计算的扩展,并对恶意软件代码进行了明确的表示。在那篇论文中,监控器是由PLC代码而不是正确性属性合成的。那篇论文的重点主要是:(i)无死锁执行,以及(ii)通过安全代理的入侵检测。这里,值得指出的是,[39]中的工作与监督控制理论[15, 58]有一些相似之处,监督控制理论是离散事件系统的控制器(监督器)自动合成的一般理论。给定一个工厂模型和受控行为的规格。Fabian和Hellgren[20]指出了在基于PLC的工业设施中采用监督控制理论时需要解决的一些问题,如因果关系、不正确的同步和替代路径的选择。然而,我们的合成是独立于工厂的,因为它从一个给定的逻辑属性中返回一个执行者(工厂不扮演任何角色)。最后,Yoong等人[69]提出了功能块的同步语义,这是一个面向组件的模型,是IEC 61499国际标准[2]的核心,用于设计分布式工业过程测量和控制系统。与本文所遵循的扫描周期模型(IEC 61131[1])相比,规定在每个扫描周期执行代码的顺序部分,功能块的事件驱动模型依赖于异步事件的发生来触发程序执行。Yoong等人[69]采用了一种同步方法,通过将功能块翻译成Esterel[11]的一个子集(一种著名的同步语言)来确定其执行语义。在此,我们希望指出,与[69]相比,我们的PLC规范是在一个更抽象的层次上给出的,它符合顺序扫描周期标准IEC 61131,而不是事件驱动标准IEC 61499。

9 结论和未来工作

​ 我们设计了一种正式的语言来表达受监控的控制器网络,这些控制器可能被串通的恶意软件破坏,这些恶意软件可能伪造/删除执行器的命令,修改传感器的读数,并伪造/删除控制器之间的通信。强制监控器是通过Ligatti等人的编辑自动机的初始状态子类表达的。通过这种方式,我们提供了一个野外通信网络的正式表述,其中控制器是通过安全监视器来执行的,如图2所示。攻击者的活动空间是通过一个适当的攻击者模型来确定的。然后,我们设计了一种简单的描述语言来表达定时的规则属性,这些属性被周期总是包含至少一个初始状态(通过一个 结 束 动 作表示)的独立自动机所识别。我们用这种语言为模式模板建立了正式的定义,适合于表达广泛的正确性属性,这些属性可以以模块化的方式组合起来,规定精确的控制器行为。例如,我们的描述语言允许我们捕捉Frehse等人研究的所有(有界的变体)控制器属性。[24].一旦确定了描述控制器属性的正式语言,我们就提供了一个合成函数⟨| -|⟩,给定一个可观察控制器动作的字母表P和一个与P一致的确定性规则属性,返回一个初始状态的确定性编辑自动机⟨| |⟩P 。由此产生的执行机制将确保导言中倡导的所需功能。透明度、健全性、无死锁性、无发散性、缓解性和可扩展性。

​ 作为最后的贡献,我们在工业水处理的背景下提供了一个非微不足道的案例研究的完整实现,其中执行者是通过FPGA实现的。在这种情况下,我们展示了我们的执行机制在受到精心设计的针对我们用例中的PLC的五次攻击时的完美性。

简单的描述语言来表达定时的规则属性,这些属性被周期总是包含至少一个初始状态(通过一个 结 束 动 作表示)的独立自动机所识别。我们用这种语言为模式模板建立了正式的定义,适合于表达广泛的正确性属性,这些属性可以以模块化的方式组合起来,规定精确的控制器行为。例如,我们的描述语言允许我们捕捉Frehse等人研究的所有(有界的变体)控制器属性。[24].一旦确定了描述控制器属性的正式语言,我们就提供了一个合成函数⟨| -|⟩,给定一个可观察控制器动作的字母表P和一个与P一致的确定性规则属性,返回一个初始状态的确定性编辑自动机⟨| |⟩P 。由此产生的执行机制将确保导言中倡导的所需功能。透明度、健全性、无死锁性、无发散性、缓解性和可扩展性。

​ 作为最后的贡献,我们在工业水处理的背景下提供了一个非微不足道的案例研究的完整实现,其中执行者是通过FPGA实现的。在这种情况下,我们展示了我们的执行机制在受到精心设计的针对我们用例中的PLC的五次攻击时的完美性。

​ 作为未来的工作,我们希望在不同的领域测试我们的执行机制,如工业和合作机器人手臂(例如,库卡,ABB,通用机器人等),它们被赋予了控制架构,以一个ixed rate工作[61]。更广泛地说,我们希望考虑具有明显不确定性的物理植物,包括测量噪声(可能是由于传感器设备的恶意改变)和物理过程的不确定性。为了应对这样的挑战,我们打算将我们的安全代理与基于物理学的攻击检测机制[17, 26]结合起来,基于众所周知的控制理论算法来正确估计物理工厂的状态。此外,请注意,在拟议的强制安全架构中,所有被监控的控制器的输出都通过专用的逻辑连接处理给相关的代理。因此,安全代理具有对控制器输出的完全可观察性。然而,来自工厂的测量结果的可靠性要低得多,因为传感器设备有可能发生故障。因此,我们希望扩展我们的执行机制在测量的部分可观察性假设下,从Yin和Lafortune的工作中得到启发[67, 68]。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值