文献标识码: A
DOI:10.16157/j.issn.0258-7998.179018
中文引用格式: 丰大军,张晓莉,杜文玉,等. 安全可信工业控制系统构建方案[J].电子技术应用,2017,43(10):74-77.
英文引用格式: Feng Dajun,Zhang Xiaoli,Du Wenyu,et al. A method of construct a secure and trustable industrial control system[J].Application of Electronic Technique,2017,43(10):74-77.
0 引言
由于工业控制系统(Industrial Control System,ICS)的使用环境较为封闭,因此使用中往往更注重功能的实现,而对安全的关注相对缺乏。但是,伊朗的震网(Stuxnet)事件给了全世界一个警示,病毒可以感染看似物理隔离的工控系统,而且可以对控制对象进行物理破坏[1-5]。随着互联网和信息技术的发展,尤其是“工业4.0”的推进,工控系统固有的封闭性也被逐渐打破,随之的安全问题也日益暴露[6-9]。
可信计算作为一个信息系统新技术,这些年在国内有了很大的发展和应用[10-13]。本文从实际应用对象和实际运行过程的角度分析工控系统中的威胁,探讨可信计算与工控系统结合的可行性,最后给出一个整体的设计方案。
1 可行性分析
工业控制系统是由计算机软硬件与工业过程控制部件组成的自动控制系统,主要通过工业过程控制部件对实时数据进行采集、监测,在计算机的调配下,实施自动化和业务流程的管理与监控。
针对工控系统的典型攻击方式有:修改系统软件、绕过操作权限、篡改组态文件、伪装控制指令、伪造现场数据、拒绝服务、信息外泄等。
工业控制系统与普通计算机系统相比,具有一定的特殊性:
(1)可用性要求高,需要持续运行不能间断;
(2)实时性要求高,添加安全措施也必须满足实时性要求;
(3)一次启动长期运行,很少对系统进行重启;
(4)网络结构与行为稳定性高,投运之后基本不会发生改变;
(5)升级不方便,更新代价高,补丁难完善。
在这种特点下,传统的“封堵查杀”无法有效地保护工控系统与网络的安全,可信计算技术是解决工业控制系统安全问题的新思路。
按照ISO/IEC 15408给出的定义,可信是指参与计算的组件、操作或过程在任意条件下是可预测的,并能抵御病毒和一定程度的物理干扰。
可信计算通过为计算平台增加一个具有安全保护的密码芯片,并通过软硬件结合的方式构建出一个可信计算环境。利用可信计算环境进行逐级认证,建立可信链,确保运行程序和依赖数据的真实性、机密性和可控性等[10-13]。
计算机系统要面临各种系统补丁升级、应用软件安装等要求,所以在计算机中添加过多的认证和授权,会使计算机的可用性下降,从而可信计算机向日常使用方向推广会遇到一定的阻力。
工业控制的应用需求与这些严格的限制非常契合。工控系统具有稳定的使用环境、行为、功能。从项目建成投运之后,系统中的软硬件都基本保持不变,设备的使用流程和控制目的都符合原先的工艺设计。系统软件版本升级也只会由工控系统提供商来进行,所以系统内所有的程序版本的对应关系都是可知且固定的。从而所有相关程序进行认证和授权是具有可行性的,因此工控环境非常适合可信计算技术的实现。
2 系统模型
分析工控系统,可将关键数据和行为在软硬件之间找到对应关系。工控系统模型如图1所示。
工控系统有上位机和下位机两种运行环境:上位机运行环境是普通计算机和通用操作系统,在其中运行着组态软件;下位机运行环境是控制器和嵌入式软件,在其中运行着从上位机下装的组态逻辑。
可采用已较为成熟的可信计算机产品来保证上位机运行环境的可信;下位机嵌入式运行环境的可信则需要更改控制器的硬件结构和启动机制来保证。
整个控制过程围绕着两类数据进行。(1)组态逻辑:用户在上位机完成组态,编译后将可执行文件下装至控制器运行。(2)计算数据:数据从现场设备采集或从上位机接收,传输至控制器,根据组态逻辑计算出结果,再输出至设备进行动作。
以往典型的攻击方式都是针对组态逻辑文件,因为实时数据的突变很容易被历史趋势记录或触发保护逻辑,引起操作者的察觉,所以目前的工控病毒大都把目标集中在直接修改组态逻辑上。本文设计的安全机制着重在组态逻辑的生成、分发、执行过程。
本文将工控系统的工程生命周期分为启动、组态、运行3个阶段,分别利用可信计算的思想,以密码机制为手段,实现了安全加固。
3 功能设计
3.1 可信启动
工控系统中,工程的运行环境是指由嵌入式操作系统和实时控制系统软件组成的环境,保证控制器在初始启动时加载的是正确的系统文件,是工程安全运行的前提。常用的安全策略都是基于计算机网络的病毒查杀技术,不能对文件是否被篡改进行鉴别,也不能防止设备在物流传输过程中设备或系统文件被人为替换。
可信计算的应用,可增加对正确文件的鉴别能力以及对异常文件的抵御能力。电子六所开发的全国产化PLC系统,在国产CPU的基础上实现了可信启动技术。在国产化硬件芯片和不可改写的存储芯片结合的前提下,对将要运行的系统软件进行完整性度量,确保当前运行的版本未经篡改,与出厂版本保持一致。图2是经过可信改造的控制器内部结构图。
图2所示的控制器,控制器上有可读写的Flash,其中存放着嵌入式操作系统、实时控制软件等。由于Flash可读写的特性,有可能在未授权的情况下被人为替换,也有可能在运行过程中被病毒感染。所以需要对这部分系统代码进行完整性度量,保证其与出厂指定版本保持一致。
控制器启动时,先执行ROM中验证相关的逻辑,履行可信度量功能:CPU读Flash区存放系统文件的指定位置,传输给可信模块计算其摘要值,与预先存储的基准值相比较。验证结果回复给CPU,若验证通过,则跳转至正常执行启动嵌入式操作系统;若验证不通过则控制器拒绝启动,并产生报警。流程如图3所示。
上述设计,在CPU硬件芯片国产化的基础上杜绝了芯片后门,实现本体可信。利用ROM不可被改写的特性,实现启动时对整体运行环境的完整性度量,保证其与出厂时的版本保持一致,防止病毒感染系统文件、未经授权地修改系统文件、运输过程中的分发攻击等,为工业自动化构建了坚实可信的基础平台。
3.2 可信组态
工控系统运行过程中,可能受到以下方式的攻击:
(1)感染工程师站,通过病毒直接修改本地保存的工程组态文件,让使用者通过自己的合法途径正常下装至控制器运行。
(2)感染同一网络内的其他计算机,伪装成工程师站给控制器下装,或修改工程师站下装的数据包。
在传统的工控系统中,这种攻击是容易实现的,因为用户逻辑从组态到运行整个过程均是明文存储和传输,控制器对数据的发送方也不进行权限的鉴别和身份的认证。
可在传统组态逻辑分发过程中增加一定的安全机制,增强控制器中执行逻辑的可信程度。可信组态分发过程如图4所示。
在可信的工控系统中,有一套完整的PKI(Public Key Infrastructure)体系。每个物理节点都增加了密码模块硬件,均被分配属于自己的公钥和私钥;每个操作人员都持有预先配置了不同操作权限的物理介质,从而可将自然人身份转化为确定的数字信息。
(1)工程文件签名
逻辑组态软件在每次编译生成可执行文件时,需对文件进行签名,从而防止第三方伪装逻辑,或者在网络传输过程中被篡改。
(2)通信前权限鉴别
在可信工控系统中,根据操作权限,使用者被分类成系统管理员、工程师、操作员,对应权限烧写在UKEY等物理介质中。例如:更改密钥需系统管理员权限,下装工程需工程师权限等。
(3)接收前身份认证
在上下位机建立传输链接前,先使用“挑战-响应”机制对双方的身份进行验证,相互认证通过后,控制器才会接收传输过来的数据包。
(4)工程文件验签
控制器对接收到的数据包进行验签,验证通过后才执行。
3.3 可信运行
目前国内基于可信计算理论设计的工业控制系统,大多只实现了启动时对嵌入式运行软件的静态度量。然而不同于普通计算机系统,在实际使用中,工控系统并不会经常重启,具有一次启动长期运行的特点。另外在现场调试完成之后,也不会再频繁修改下装逻辑。
可信启动和可信组态保证了嵌入式运行环境以及用户逻辑可执行文件的安全性,但是对于运行结果正确与否并无法保证,这就意味着动态度量必不可少。
可信计算中强调行为结果的可预期,在实践中一般通过两种理念:对内存等嵌入式运行环境的动态度量和对运行结果的动态度量。两个方向有着不同的出发点,前者是为了保证环境不在运行中被改变,定时检查内存正文区、函数堆栈、中断向量表等关键数据结构;后者是通过审计系统,对所有行为与后果进行数据分析,判断系统状态与行为路径是否匹配。
本文提出的可信运行方案是对工程实现时增加了一种安全组态规范,使用类似于形式化的描述工程的安全属性,然后运行过程中对安全属性进行验证。可在组态软件中开发相关功能,支 持形式化语言描述,与IEC61131-3中的其他几种语言结合使用。
某些控制过程可以确定地描述为某几个状态之间的转换,每个状态执行具体的动作。以电梯的运行控制为例,将电梯的运行过程抽象成图5所示的7种状态,并且在正常运行时,状态之间的转移应满足图5所示路径。
在运行过程中,判断当前所处状态由一段确定的预设逻辑,通过对操作结果的计算得到。例如对电梯设备的控制结果是电梯所处的位置,可根据最近几个时刻的位置判断出当前所处的是加速还是减速,是上升还是下降。当状态转移路径与预设不符时,系统可按设置进行紧急处理,同时产生报警。
如果是典型的过程控制,例如火电机组,可根据不同负荷的工况提取出安全特征,例如在此负荷下,过热蒸汽的安全范围,甚至于汽轮机的分贝或震动强度等。
提取出系统的状态、状态的判定规则、状态之间的转换规则、状态的安全判定规则等,都要求工程设计者对控制对象有更深入的研究,抽象出科学的模型,精确计算出数字范围。
出于加强信息安全的考虑,安全验证逻辑应该独立于主运算任务,以另一个任务的形式运行,或者下装至另一个CPU核中独立运行,以实现运行与监控相隔离的设计准则。
4 结语
电力、交通、石油化工等关乎国家民生的重大基础设施中,工控系统的安全防护是非常必要的。在系统周边进行安全加固是很有效的措施,但是工控系统本身也需要具备一定的威胁识别与防护能力,从而实现纵深防御的安全体系。
工业控制中,实时性是需要严格保证的。以往的工控系统中很少采用密码体制,因为担心控制过程中数据量的增加,以及加解密带来的时间延迟。本文的方案着重在于工程生成、下装和通信建立时使用了密码机制,因为这些情况下,对响应时间没有太严格的要求。
关于过程数据的可信,常用的密码体制长秘钥的方式对实时性影响太大,在工控场合适用性不强。由于工控并不支持大量用户的并发操作,所以碰撞破解密码的可能性较低。密钥长度较短的对称加密体制配合定期同步更换密钥,也许更适合工控的实际应用。基于一次性密钥(OTP)理念的流密码可能是一种不错的选择。
参考文献
[1] KARNOUSKOS S.Stuxnet worm impact on industrial cyberphysical system security[C].Annual Conference on IEEE Industrial Electronics Society,2011:4490-4494.
[2] 赵炤,朱启超.从震网病毒分析“网络物理战”作用机理[J].国防科技,2014(2):11-13.
[3] 蒲石,陈周国,祝世雄.震网病毒分析与防范[J].技术研究,2012(2):40-43.
[4] 李战宝,潘卓.透视“震网”病毒[C].第26次全国计算机安全学术交流会,2011:230-232.
[5] 仇新梁,董守吉.“震网”病毒攻击事件跟踪分析和思考[J].保密科学技术,2011(5):35-37.
[6] 褚健.工业控制系统安全的盛世危言[J].中国信息安全,2012(3):32-36.
[7] 李鸿培.2014工业控制系统的安全研究与实践[J].计算机安全,2014(5):36-59.
[8] 沈昌祥,张焕国,冯登国,等.信息安全综述[J].中国科学:信息科学,2007(2):129-150.
[9] 张焕国,韩文报,来学嘉,等.网络空间安全综述[J].中国科学:信息科学,2016,46(2):125-164.
[10] 沈昌祥,张焕国,王怀民,等.可信计算的研究与发展[J].中国科学:信息科学,2010,40(2):139-166.
[11] 沈昌祥,陈兴蜀.基于可信计算构建纵深防御的信息安全保障体系[J].四川大学学报:工程科学,2014(1):1-7.
[12] 冯登国.可信计算理论与实践[M].北京:清华大学出版社,2013.
[13] 吴欢.工业控制环境计算节点安全防护技术研究[D].北京:北京工业大学,2016.
[14] David Kleidermacher,Mike Kleidermacher.嵌入式系统安全[M].北京:机械工业出版社,2015.
[15] 乔全胜,刑双云,尚文利,等.可信PLC的设计与实现[J].自动化仪表,2016(12):76-78.
作者信息:
丰大军1,张晓莉1,杜文玉2,徐一凤1,马保全1
(1.华北计算机系统工程研究所,北京100083;2.最高人民检察院,北京100726)