第7期 李小勋等:基于STAMP的形式化安全性分析 283 NUSMV、SAL等。因为NuSMV进行建模时从初始值、当前状态 及状态转换的方法三个方面来表示系统的状态转换,所以通过 CTL(Computation Tree Logic)语言描述安全性约束。然后通过 模型检测,检测安全性约束是否被破坏 ,实现基于STAMP分 析的第5步,使得这种方法相比人工分析更加全面、客观且无 错。因此本文选择了NuSMV作为形式化分析工具。 2.1模型检查器NuSMV NuSMV进行建模时从初始值、当前状态及状态转换的方法 图1典型的控制结构图 三个方面来表示系统的状态转换。 当有多个控制者进行控制时,多个控制者之间重叠的控制 NuSMV用关键词VAR指示状态变量的定义,这决定了模 和多个控制者之间边界的控制很容易出现问题。这些问题的存 型检查器的状态空间的大小。用关键词ASSIGN指示变量的初 在是由于控制者对于控制模型没有充分的理解或控制者之间的 始状态和状态转换的定义,用一系列赋值表达式如init和next 控制模型不一致所导致的。只有控制者充分理解了控制模型中 表示变量的初始状态和状态转换 J。 各个部分的初始值、当前状态及改变状态的方法时,才能够采取 图3所示为一个NuSMV模型。 恰当的控制行为。因此基于STAMP的安全性分析,应从初始 值、当前状态及改变状态的方法这三方面来分析系统是如何达 到不安全状态的。 1.2分析步骤 基于STAMP的安全性分析步骤如图2所示。 2识 5确 1识 别系 统级 3.定 4识 别导 定这 别系 安全 义控 致危 些异 统危 -..--o 相关 —_ 制结 险的 --.-I 常控 险 需求 构图 异常 制发 及约 控制 生的 图3 NuSMV模型 柬 原因 2.2 CTL语言 图2基于STAMP分析步骤 计算树逻辑(CTL)是模型检测中用来描述时态逻辑约束的 (1)识别系统危险通过初步危险分析,可以获知系统存 一种常用逻辑。本文只介绍CTI_ 的一个子集,这个子集中包括 在的一些危险。这些危险能够造成人员的伤亡或设备的损坏或 时态算子AG,AF,AX,EG,EF,EXo可以这样递归地定义CTL 环境的污染。 公式子集:一个命题是定义在状态变量上的谓词的布尔组合,一 (2)-/g ̄,1系统级安全相关需求及安全性约束在识别出系 个公式或者是一个命题,或者是公式的布尔组合,或者是增加 统的危险之后,应该识别出用于防止这些危险发生的系统级安 AG,AF,EG算子的公式。表1为各个时态算子的解释。 全相关需求及安全性约束。这里所指的安全性约束与一般的功 能需求一样,即要求系统进行某种控制避免系统进入危险状态, 表1 CTL时态算子的解释 只不过安全性约束与系统危险有直接关系。 时态算子 解释 (3)定义控制结构图在有了系统需求及安全相关需求与 安全性约束后,可以根据这些需求及安全性约束进行初步的控 EX f 如果至少一个下一个状态中的f为真 制结构的设计以满足这些需求及安全性约束,并在系统设计不 EF f 在某些起始于当前状态的路径中,存在某些状态满足f 断细化的过程中,通过分析不断改进控制结构。 EG f 在某些起始于当前状态的路径中的所有状态满足f (4)识别潜在的异常控制通常来说一个控制者可以产生 AX f 在每一个下一个状态中f为真 四种类型的异常控制,我们可以根据不同的控制者给出各个控 制者的异常控制行为。 AF f 在每条起始于当前状态的路径中,存在某些状态满足f ・没有提供需要的控制行为; AG f 在每条起始于当前状态的路径中,每个状态都满足f ・提供错误的或不安全的控制行为; ・提供的控制行为延迟; 如果系统的每个可达状态都满足公式f,那么说这个系统满 ・提供的控制行为过早结束。 足公式f;否则,模型检测器会尝试找出一个反例。如果公式AG (5)确定这些异常的控制行为是如何发生的这步是用来 f为假,那么反例就是一条起始于初始状态并终止于不满足f的 分析破坏安全性约束(由(2)得出)的异常控制行为(由(4)得 状态的有限长路径 。 出)是如何发生的。再进行原因分析时可以从初始值、当前状 态、状态转换的方法这三个方面进行分析。分析时既可以采用 3基于STAMP的形式化安全性分析 人工分析方法也可以采用形式化方法。 前两节分别介绍了基于STlViAP的安全性分析的原理及步 2 形式化分析工具 骤与形式化分析工具NuSMV。这节将基于STAMP的安全性分 析与形式化分析相结合,在STAblP分析的第5步采用形式化方 进行形式化分析时,可以采用的形式化分析工具有SPIN、 法进行分析。 284 计算机应用与软件 由执行机构升温。 输入: 约 2012丘 基于STAMP形式化安全性分析的步骤如图4所示。 识别 系统 级安 全相 关需 求及 约束 l 识别 系统 危险 定义 控制 识别 导致 危险 束 识 别 ・Tem:由温度传感器感应的温度; ・Setpoint:由人进行温度设定。 输出: ・Tem_结构 图 的异 常控 制 l command:温度控制信号。 4.2安全性分析 (1)识别系统危险 —.I用NuSMV建慎I l执行模型检查I 大 <约柬被破坏?≥>— 通过 l 给出反例 l 上 经过初步危险分析,温控系统存在如下危险: 模 型 检 测 ・温控系统导致被控制区域温度过高; ・温控系统导致被控制区域温度过低。 这里只对温度过高进行安全性分析。 (2)识别系统安全性需求及约束 查找原因 II 工 l更改需求或Il 安全性约束l 针对温控系统造成被控制区域的温度过高这种危险,系统 安全性需求及约束如下: ・在有设定值且设定值合理的情况下,当温度高于设定值 图4基于STAMP的形式化安全性分析 时,温控系统必须采取降温措施; 3.1约束识别 在STAMP分析的前四步,分析出系统的安全性约束与可能 ・在有设定值且设定值不合理时,温控系统要进行异常处 理,即要求设定的温度值不能超过某一值,避免温度过高; ・在没有设定值的情况下,温控系统要按照默认值进行温 度控制,避免温度过高。 (3)定义系统控制结构图 存在的异常控制。在第二步提出的安全性约束是与危险相关的 功能需求,即要求系统执行某种操作以避免系统进入危险状态。 这种安全性约束在模型检测中可作为检测的内容,检测系统在 运行过程中是否破坏安全性约束。在第四步提出的异常控制行 为是与第二步提到的安全性约束相关的控制行为,这些控制行 为都破坏了安全性约束。进行模型检测时检测系统在运行的过 程中是否存在这些异常控制行为。 综上所述,在约束识别过程中应为模型检测提供安全性约 束和破坏这些安全性约束的异常控制行为,以检测这些异常控 制行为是否破坏了与之相应的安全性约束。 根据需求定义的控制结构图如图5所示。(注:T:温度; TC:温度控制器;Sensor:温度传感器;Actuator:执行机构;Set— point:设定值) 3.2模型检测 在进行模型检测时,需有模型及要检测的内容。模型指通 图5温控系统控制结构图 由于这个温控系统只是一个简单系统,人只是进行温度的 过系统需求建立起来的模型,即对控制结构图中每个控制单元 进行扩展,用形式化的方法描述各个控制者的初始状态、当前状 态及状态转换方法。要检测的内容指由约束识别得出的安全性 约束,这些安全性约束要用CTL语言进行表示,作为模型检查 器检测的内容。有了这两个条件后,就可以通过模型检查器自 设定,并不像典型的控制结构图中的监视者一样起到高级控制 者的作用,所以此处并没有将人在温控系统的控制结构图中 画出。 (4)识别导致危险的异常控制 针对温度过高这种危险,根据STAMP给出的四类典型的异 常控制可以给出各个控制者的异常控制。由于篇幅所限只列举 了TC的异常控制: ・TC没有发出降温信号; 动地对模型进行遍历,检测是否存在安全性约束被破坏的情况, 如果通过则证明安全性约束没有被破坏。如果安全性约束被破 坏,则给出这些安全性约束是达到被破坏状态的。给出了反例 后,应从各个控制者的初始状态、当前状态及状态转换方法三个 ・TC发出了错误的降温信号; ・TC延迟发出降温信号; ・TC发出的降温信号持续时间过短。 由前四步分析可得模型检测的内容: 方面查找原因,对需求或安全性约束进行更改,不断地反复,直 至所有的安全性约束都通过为止。 4 实例 ・安全性约束:在有设定值且设定值合理的情况下,当温 本文对一个温控系统进行了基于STAMP的形式化安全性 分析,给出了安全性分析的分析步骤及部分分析结果。 度高于设定值时,温控系统必须采取降温措施; ・异常控制行为:TC没有发出降温信号。 下面的模型检测过程就是检测这些破坏安全性约束的异常 控制行为是否存在。 (5)用NuSMV建模 4.1温控系统简介 温控系统的主要功能是对区域内的温度进行自动控制。当 采集的温度(Tem)高于设定的温度(Setpoint)时,温控系统要发 出降温信号(Active),由执行机构进行降温;当温度(Tern)低于 此步是在有了系统需求与安全性约束条件下,将需求与安 全性约束用NuSMV语言进行建模,对最初的控制结构图进行扩 展。扩展后的系统示意图如图6所示。 设定的温度(Setpoint)时,温控系统要发出升温信号(Deactive), 第7期 李小勋等:基于STAMP的形式化安全性分析 285 图6扩展后的温控系统控制结构图 图中,Tem:TC模块的输入温度;Tem—state:温度状态;Cold: 温度低于设定值;Hot:温度高于设定值;Atsetpoint:温度等于设 定值;None:空;Unknown:未知状态;Act—state:执行状态;Active: 降温;Deactive:升温;Tem—command:TC模块输出的温控命令; Work:工作状态;Idle:空闲状态;Tem—in:传感器的输入温度; Tern—out:执行温控操作后的温度。 由于篇幅所限,只对TC模块进行了详细分析。 图7列出了Tc模块的模型代码。Tc模块首先对传感器给 出的Tern与Setpoint进行比较,得出当前的Tem state,根据不同 的温度状态决定发送的是升温Deactive还是降温Active信号。 最后控制只有在信号发生变化时发送信号,其他隋况下都不发送。 . 图7 TC模型代码 (6)模型检测及结果 由于篇幅所限,本文只对温控系统在温度过高时有没有发 送降温信号做检测: AG((Setpoint_Receive—state=Have—received&Tern—Receive—state= Havereceived&TC.Ternstate=Hot) 一>!EF TC.Tem—command:Deactive) 即:在起始条件下,当收到(Have—received)Tenr与Setpoint 值时,且Tern—state为热(Hot)的情况下,不存在温控命令(Tern— command)Deactive。进行模型检测的结果显示,这种假设是错 的,即存在一条反例证明在起始条件下,当收到温度值与设定值 且温度状态为Hot的情况下,存在升温命令。模型检查器给出 的反例如下所示: 第一步: Temreceive—state=None _Setpointreceive——state:None TC.Temstate=None —TC.Tern—command=None TC.Command_lfag Noact Tern=25 Setpoint=25 第二步: Temreceive state=Have_—received Setpointreceivestate Have———received Tem=26 第三步: TC.Temstate=Hot —Tem=0 第四步: TC.Tern—state=Cold TC.Tern—command=Active TC.Command_flag=Send Tem=26 第五步: Temreceivestate:Havereceived ———Setpointreceive——state=Havereceived TC.Temstate=Hot TC.Tern_command=Deactive Tern=0 由上面的第五步可知,存在温度状态为Hot却升温的情况,这 种情况的存在会造成被控制区域温度过高的危险。通过上边的模 型检测结果可以看出,造成这种情况的原因是在第三步中Tem— command没有及时发送,导致第四、五步发送的Tern_command的命 令都有延迟。因此需要对安全性需求或安全性约束进行相应的更 改以保证每次发送的Tem_command与Tem_state一致。 5 结语 本文将基于STAMP的安全性分析与形式化的方法相结合, 给出了基于STAMP的形式化安全性分析方法。采用这种方法 不是仅强调失效引起的危险,因此能够更加有效地对系统进行 安全性分析,提高系统的安全性。结合形式化分析,可以减少由 于分析者经验不足引起的分析不充分或分析结果太主观等问 题。本文只是初步地对基于STAMP的形式化安全性分析进行 研究,今后将对其做更进一步的研究。 参考文献 [1]Leveson N G.A New Accident Model for Engineering Safer Systems [J].Safety Science,Elsevier,April 2004,42(4). [2]Trihble A C,Miller S P,Lempia D L.Software Safety Analysis of a FlJ ght Guidance System[C]//Diigtal Avionics Systems Conference, 2002.Proceedings.The 21st 2002,2:13C1一l-13C1—10. [3 j Meenakshi B,Barman K D,BabuL G,et a1.Formal Safety Analysis of Mode Trnasitions in Aircrfat Fligh【Control System[C]//Diigtal Avion— ics Systems Conference,2007.DASC 07.IEEE/AIAA 26 th. [4]黄光华,段川,蒋凡.基于Model Checking的系统脆弱性分析[J]. 计算机工程,2005,31(4).