文献标识码: A
文章编号: 0258-7998(2012)05-0087-04
工业控制系统包括数据采集与监控系统(SCADA)、分布式控制系统(DCS)、可编程逻辑控制器(PLC)、远程终端(RTU)、智能电子设备(IED)等,以及确保各组件通信的接口技术[1]。目前广泛应用于电力、水利、污水处理、石油化工、交通运输、制药以及大型制造行业,是国民经济的重要组成部分。
据权威工业安全事件信息库RISI(Repository of Security Incidents)统计[2],截止2011年10月,全球已发生200余起工业控制系统的严重安全事件。工业控制系统信息安全事关工业生产运行、国家经济安全和人民生命财产安全,一旦出现工业事故,将对正常生产运行和国家经济安全造成重大损害。
1984年12月3日凌晨,在印度的Bhopal,45吨甲烷异氰酸脂重毒气从联合炭化虫剂制造厂泄漏并扩散到附近居民区,造成至少2 500人死亡,25万人的健康受到影响。1986年4月,前苏联切尔诺贝利核电发生爆炸,导致世界上最严重的核事故。
分析以上事故原因发现,每起事故都涉及到控制系统的防危问题。印度毒气泄露事件调查报告显示[3],610号储槽的压力在15 min内由2 psig上升到10 psig。由于换班原因,新操作员并未察觉到压力突变异常,正常压力大约在2~25 psig之间。而当压力突升而未察觉时,则会导致毒气泄漏。1986年切尔诺贝利核电站爆炸事故调查报告显示[4],由于核电站人员多次违规操作,导致反应堆能量增加,发生爆炸。
随着高新技术的广泛应用,工业控制系统越来越复杂,错误越难检测和避免,由此带来的安全隐患也越多,对系统的防危要求越来越迫切。工控系统对防危性的要求包含以下几个方面[5]:
(1)整体性:工控系统中对关键设备的不同操作之间存在相互依赖关系,要将其视为一个整体考虑。
(2)通用性:为达到资源共享以及实现不同工控系统间的移植,需把系统功能实现与防危机制分离开,提高防危机制的通用性。
(3)自适应性:系统内部环境发生改变时,应采用某种自适应手段,适应新的环境来满足用户的需求。
(4)隔离性:监控对关键设备的操作,拒绝可能导致重大人身和财产损失的操作命令,实现应用软件与系统设备的隔离,保证工控系统的防危性。
面对越来越复杂的工控系统和愈来愈重要的防危性要求,开展针对现有工控系统的防危机制研究具有巨大的科学意义和应用价值。
1 相关研究介绍
近年来很多重大事故的发生都可以归结为工控系统在防危性方面的疏忽或缺失,事故主要来源于系统的设计缺陷及操作人员的误操作,也使工控系统失去了可信性。
1985年,Laprie提出了dependability(为与可靠性reliability相区别,译为可信性)概念,以此度量计算机系统的服务质量[6]。如图1所示,可信性是一个复杂的综合性概念,具有丰富的内涵,它所包含的特征有:可用性(Availability)、可靠性(Reliability)、防危性(Safety)、安全性(Security)和可维护性(Maintainability) 5个特征量。1995年Laprie把Security分解为Confidentiality和Integrity[7]。
防危性与可用性、可靠性、可维护性、安全性的区别[8]如表1所示。防危强调的是防止危险发生,即防止系统给生命财产及生态环境造成灾难性破坏。防危技术主要是对系统内部错误的侦测、异常处理以及误操作的避免,不同于可信性的其他特性。
目前实现防危的主要技术手段有防危核与防危壳两种。
防危核(Safety Kernel)最早由安全学家 Leveson[9]提出,其原理是根据实际系统的工作特点定制的一套防危策略,验证所有对关键设备的操作请求,只有通过验证的操作请求才可到达硬件进行操作,拒绝所有未经过验证的操作。防危核成功隔离了应用请求与关键设备,避免用户误操作引起的系统错误,达到对系统的防危保护。
防危壳(Safety Shell)是由Katwijk 和 Zalewski[10]提出的防危技术,其技术原理与防危核类似,是防危核技术的一种功能更为强大的扩展。防危壳的防危原理是在系统控制器与关键设备之间安插一个隔离层,所有操作请求都必须经过防危壳的验证。防危壳主要由状态监视器、时间监视器、异常处理子模块组成。状态监视器是保证系统防危性最重要的关键子模块,其作用是负责与底层I/O接口交互,验证所有操作请求,并负责实时监测设备的工作状态,一旦发现异常,则发送相应的操作命令来调整系统状态,同时报告错误。时间监视器用于检验设备命令是否在规定的时间内完成,保证了设备操作的实时性。异常处理器监视对设备的操作命令,拒绝错误的操作命令,并调用相应的错误处理程序。
防危核和防危壳是防危系统里最常用的两种技术手段,将防危核与防危壳技术进行比较,可以发现两种方式的基本原理都是相同的,即提供了设备操作与关键设备的隔离。不同点在于,防危核只提出了操作验证的基本功能,而防危壳将防危策略细分为三个子模块,子模块拥有了单独检查设备状态和保证命令时间限制等功能,降低了验证整个防危策略的开销。某种程度上,防危壳可以看作是防危核技术的一种扩展变型和另一种实现方式。
2 防危分析
无论防危核还是防危壳,都只是把关键设备进行隔离防危,而实际的工控系统是一个复杂的网络,各设备之间存在着相互依赖关系,对一个设备的操作势必会对其他设备造成影响,针对独立设备的防危往往达不到整体防危的要求。因此,针对整体性防危的要求,本文提出利用防危保护态以及有穷状态机实现防危,如图2实线所示。系统从正常工作状态发展为事故,一般经过多个状态,从警告、临界到危险,直至事故。为了实现防危,借鉴容错理论,引入防危保护状态(E),也就是在系统遇到危险或在临界情况下,通过防危机制进入保护模式,在保护模式下系统可以通过自我调节回归到正常模式。
用状态转化图表示如图2所示。图中,A:正常状态;B:警告状态;C:临界状态;D:危险状态;F:事故状态;E:防危保护态。
危险包括针对工业现场的和工控系统自身的,为了从危险状态(D)转化到防危保护状态(E),针对不同类型的危险,需要通过专家规则实时判断工业现场的危险状况,或者通过降级服务对工控系统实施保护。为了从防危保护态(E)转化为正常态(A),需要通过工控系统的合理调度,实现自身状态的回归,或者利用专家知识库推荐工业现场的补救方案。
为了从临界状态(C)转化为防危保护态(E),一方面需要对关键设备的情况进行主动预测和危险预报;另一方面,通过分析设备之间的相互影响关系,预测系统整体的风险。
针对出现报警(B)的情况,利用专家规则判断危险状况,并根据专家规则中的处理办法进行相应的操作,使得系统转化为正常状态(A)。
系统在正常运行(A)期间,通过对关键设备的情况进行预测,防患于未然,使系统维持在正常状态。
通过对状态之间的操作进行分析整理,可以得出下面一些主要的操作:
(1)通过分析设备之间的相互关系,预测系统整体风险,即全局防危(a);
(2)通过对关键设备的情况进行预测,防患于未然,即主动防危(b);
(3)利用专家规则进行实时判断和推荐,即实时防危(c);
(4)对工控系统实施保护并且实现状态回归,即自主防危(d)。
通过提供上面这些防危措施,就可以实现工控系统的防危,将工控系统从非正常状态转移到正常状态。同时结合防危技术,实现防危认证。
3 基于数据挖掘的工控防危机制
针对现有的工业控制系统,为加强其防危能力,本文提出以建立工控系统的全局防危机制为主线,通过数据预测技术实现对单点的主动防危;通过建立工控系统复杂网络模型,研究单点异常对其他节点的影响,实现对整个工控系统的全局防危;提供防危认证,从而实现工控系统的防危。防危的体系结构如图3所示。
3.1全局防危
工业控制系统是一个复杂网络,系统内各设备之间相互依赖和影响。根据工控系统现场环境、历史数据和经验,建立工控系统复杂网络模型,网络中的节点表示系统中的设备或者关键采集点,边表示设备之间的关联关系或风险传递关系。通过风险传递算法,此网络可以很快收敛,达到稳定状态,从而可以预测出某一个(或多个)设备出现风险后系统中所有相关设备受影响的情况。通过此网络模型可以做到对工控系统的整体风险预测和防危。
3.2 主动防危
为了提高系统的安全性,应该开展针对工控系统的趋势预测。针对工业控制系统中设备的差异性,实现数据预测的通用性,构造适合大部分实际应用环境输入向量的方法,使用迭代法最大限度地保留实时数据中的历史信息,并结合系统的闭环反馈实现精确的多步预测,实现满足工控系统的高效率、高准确率的预测算法。
3.3实时防危
工业控制系统对实时性要求很高,通过预设的规则和经验的学习建立专家规则库。由于专家规则的推理算法时间复杂度较高,为满足工控系统的实时性要求,可以采用GPU并行处理技术。使用GPU并行处理技术有两大好处:(1)降低计算时间,满足工控系统的实时性要求;(2)解放CPU,使实时防危子系统基本不占用CPU资源。通过专家规则可以及时发现系统的异常节点,通过预设的规则可以给出后续的补救方案,避免更大的损失,做到对系统的实时防危。
3.4自主防危
在系统处于超负荷情况下,采取合理的措施,在确保系统稳定的前提下,通过优化配置,实现系统的优化运行,确保系统自身的稳定安全。自主防危从大的方面分为两部分内容:(1)系统监控,监视系统的运行状态以及各关键模块的状态,包括进程的状态、优先级、对于CPU和内存的使用情况(包括数据采集模块中的数据,各个模块的内存,以及GPU的信息); (2)系统的自我管控,当系统发现监控的某些状态达到峰值,采取措施进行降级处理,避免系统在高负荷下运行发生故障或崩溃。
3.5 防危验证
防危验证不仅要考虑失效的频率,还要兼顾失效的代价,把重要性采样理论应用于防危验证,提出基于加速险剖面的防危验证测试方案。通过分析开发软件的运行剖面,得到软件运行的相对发生频率。然后,对可能导致灾难性事故的危险进行分析识别,得到危险剖面。再利用故障树分析得到安全关键运行。最后,生成软件的安全运行剖面。
测试过程中,如果系统进入危险状态,就认为软件存在风险,没有通过防危验证,测试不达标。如果所有的测试用例都没有进入危险状态,则证明通过了软件防危验证,测试达标。
在符合工程实践的条件下,本文以加强现有工业控制系统的防危能力为目标,针对传统工控系统防危技术的不足,提出了基于数据挖掘的工控防危机制。设计和综合出一套能够进行风险主动预测、故障实时检测、系统自适应调节的工控系统防危机制及其实现算法,并通过仿真实验和理论分析的手段,评估防危机制与算法的性能,最终实现对现有工业控制系统的防危保护。
参考文献
[1] STOUFFER K, FALCO J, SCARFONE K. Guide to industrial control systems (ICS) security[M]. National Institute of Standards and Technology, 2011:55-62.
[2] Client Company. Quarterly report on cyber security incidents and trends affecting industrial control systems[J]. Security Incidents Organization, 2009:35-77.
[3] Horng Jaojia, Lin Yishu, Shu Chimin. Using consequence analysis on some chlorine operation hazards and their possible effects on neighborhoods in central taiwan[C]. International Conference on the 20th Anniversary of Bhopal Gas Tragedy, The Indian Institute of Technology, 2004:3-12.
[4] KONSTANTIN I M, 夏光.切尔诺贝利事故:问题的实质[J]. 科学对社会的影响, 1992(03):2-6.
[5] FALCO J, STOUFFER K, WAVERING A, et al. IT security for industrial control systems[M]. National Institute of Standards and Technology, 2001:201-235.
[6] LAPRIE J C. On the dependability evaluation of high safety systems[C].Proceeding of the 15th International Sym posium on Fault Tolerant Computing, 1985:5-16.
[7] LAPRIE J C. Dependable computing: concepts, limits, challenges[J]. In Special Issue FTCS-25. Pasadera. CA.1995:42-54.
[8] LAPRIE J C. Dependability of computer systems: concepts, limits,improvements[C]. Proceedings 6th International Symposium on Fault Tolerant Computing, 1995:12-32.
[9] LEVESON N G. Murphy: expecting the worst and preparing for it[M]. The small computer evolution, Arlington,VA,1984:294-300.
[10] ZALEWSKI J, SAGLIETTIC F, et al. Safety of computer control systems: challenges and results in software development, Annual Reviews in control,2003,27(1):23-37.