黄信兵, 刘桂雄
(1.广东交通职业技术学院,广东 广州 510800;2.华南理工大学机械与汽车工程学院,广东 广州 510640)
基于SHA1的SCADA系统PLC固件完整性验证方法
黄信兵1,2, 刘桂雄2
(1.广东交通职业技术学院,广东 广州 510800;2.华南理工大学机械与汽车工程学院,广东 广州 510640)
针对SCADA系统面临的数据窃取、篡改等信息安全问题,基于固件、可信根完整性度量,研究SCADA系统PLC固件完整的必要性;采用安全性高的SHA1算法,提出一种PLC固件完整性验证方法。在SCADA系统外的验证计算机上开发完整性验证软件,通过网络侦听、协议分析实现固件二进制数据提取、待下载固件SHA1值匹配验证、下载固件SHA1值匹配验证等功能,完成PLC固件传输过程中的完整性验证。试验结果表明:该方法可有效验证PLC固件完整性,提高PLC运行可信度。
安全哈希算法;数据采集与监视控制系统;可编程逻辑控制器;固件;完整性
安全、可靠的SCADA系统为分布在各地站点的石油天然气管道、电网、铁路等重要基础设施提供关键的控制、通信和监视功能[1]。随着信息技术在工业控制系统中的广泛应用,越来越多SCADA系统暴露于Internet,网络攻击、信息篡改、病毒木马等问题越来越严重。2015年戴尔公司年度安全威胁报告指出,2014年针对SCADA系统攻击比2013年增加约2倍[2]。PLC作为SCADA系统核心现场设备,可直接监视和控制终端物理系统,正如Stuxnet攻击,一台处于恶意控制下的PLC会对重要基础设施工业控制系统产生毁灭性后果[3-4],PLC固件的完整性直接关系到SCADA系统的安全性。本文针对工业以太网环境下PLC固件传输,提出一种基于SHA1算法[5]的PLC固件完整性验证方法,以提高固件源可信性。
PLC架构主要包括应用程序、固件和硬件3部分,如图1所示。固件是存储在具有永久储存功能器件中的二进制代码,作为桥梁为硬件和应用程序提供接口[6]。固件一般加载到PLC设备后不能被修改,也不能直接被读取[7]。因此,若是在加载前或加载过程中固件被修改,PLC处于不安全工作环境中,所有数据都可能被监听或窃取,一旦满足其执行条件,将导致SCADA系统瘫痪,甚至SCADA系统能被攻击者操纵[8]。固件作为PLC的可信根,是保证PLC可信运行关键所在。可信计算的基本思想是在一个系统中首先建立一个信任根,再建立一条信任链,一级测量认证一级,一级信任一级,把信任关系扩大到整个SCADA系统,从而确保SCADA系统可信[9]。
图1 通用PLC架构
通过对ANSI/ISA-99等标准分析,PLC属于工业控制系统分层参考模型第1层(即本地或基本控制层),监控第0层(物理过程层)的执行器等现场设备[10]。若PLC由于攻击等原因导致发出不正确指令,则第0层现场设备可能会出现异常操作。本文基于PLC硬件和逻辑程序是在可信的前提下进行研究。
固件完整性是指在传输、储存固件过程中,确保固件不被未授权篡改或篡改后能被及时发现[11]。SHA1作为一种验证数据完整性方法,对接收消息会产生一个具有唯一性的消息摘要,但该消息摘要不能复原信息。工业控制系统中采用现场总线传输数据,其中使用以太网进行数据传输最为广泛。随着自动化水平提高,通过以太网可实现PLC固件版本更新等高级操作。以太网环境下基于SHA1算法的PLC固件验证包括待下载固件SHA1值验证、下载固件SHA1值验证、固件完整性验证等。图2为实现该方法PLC固件完整性验证系统模型,在控制计算机传输PLC设备固件外部增加验证工具,进行待下载固件传输(标号①)验证和下载固件传输(标号②)验证,完成固件完整性验证。
图2 PLC设备固件完整性验证系统模型
2.1 待下载固件验证
PLC厂家在向用户提供固件时还需要提供该固件的SHA1值(即安全固件SHA1值),用户从厂家获得固件(本文称为待下载固件)过程中可能会受到攻击,因此用户需要在下载固件或更新固件之前,对该固件进行完整性验证。
待下载固件不能直接载入PLC,而需要基于通信协议分析建立一个模拟PLC设备的通信软件,与控制计算机通信。图3为待下载固件SHA1值验证流程图。控制计算机通过网络等接口将待下载固件传输到验证工具中,得到传输过程的二进制数据,去掉数据中通信协议部分,对待下载固件二进制数据进行SHA1值计算。将待下载固件SHA1值与安全固件SHA1值进行匹配,若两者一致则通过验证,可下载到PLC中;否则说明在获取固件过程中受到非授权篡改,需要从厂家重新获得固件。
2.2 下载固件完整性验证
图3 待下载固件验证流程图
将验证后的PLC固件通过工业以太网方式下载到现场PLC中,为监控下载过程中PLC固件完整性,对网络侦听截获的下载固件建立SHA1值,并与安全固件SHA1值匹配对比,具体如图4所示。若两者一致则通过验证,下载到PLC中固件完整;否则说明下载过程中固件完整性受到破坏,需重新下载。
图4 下载固件验证流程图
利用Microsoft Visual Studio语言开发一款基于SHA1算法的PLC固件验证软件。采用罗克韦尔FlexLogix 5434 PLC及该公司提供的15.06.01版本安全固件,在控制计算机上需要安装RSLinx软件和固件更新软件Control Flash 9.00.015。
3.1 数据传输分析
利用网络侦听截获传输数据,通过对截获传输数据进行相关性、规律性分析,找出协议数据段、固件数据段,剖析其数据链路层传输协议,如图5所示。
图5 传输数据的分析
3.2 未知安全固件验证实验设计
本文将待下载固件和下载固件统称为未知安全固件。图6为未知固件验证实验软件界面图。点击“未知安全固件传输数据”按钮,固件传输数据将会得到显示;单击“提取固件”按钮,得到从获得数据中分离的固件数据;单击“计算固件SHA1”按钮,根据固件数据计算得到40位SHA1值;单击“安全固件SHA1”按钮,再单击“固件SHA1值验证”按钮,将截获固件SHA1值和安全固件SHA1值进行匹配对比,若匹配一致,则在对话框中显示“完整”,如图6(a)所示;否则显示“不完整”,如图 6(b)~图 6(d)所示。通过对比试验可看出,该方法能够验证PLC固件完整性,从而提高PLC数据的安全性、可信性。
1)在重要基础设施系统中建立针对SCADA系统的安全工具,对保持和建立信任非常有必要,基于SHA1的PLC固件完整性验证方法,对于增强SCADA系统PLC固件可信性是可行选择。
2)该方法是在现有SCADA系统外增加一套验证工具,其优势在于保证下载到PLC中的固件完整性,同时不会对原有SCADA系统进行更改,且与生产系统相隔离。
3)用Microsoft Visual Studio开发基于SHA1算法验证工具,在罗克韦尔FlexLogix 5434 PLC上实现固件验证,实验结果表明,该验证方法可有效验证固件完整性。
图6 未知安全固件验证实验软件界面
[1] 兰昆,饶志宏,唐林,等.工业SCADA系统网络的安全服务框架研究[J].信息安全与通信保密,2010(3):47-49.
[2]戴尔年度威胁报告揭示新兴的安全风险[EB/OL].(2015-04-14)[2016-08-12].http://server.51cto.com/News-472123.htm.
[3]MATROSOV A, RODIONOV E, HARLEY D, et al.Stuxnet under the microscope[R].ESET Technical Report,2011.
[4]ALBRIGHT D, BRANNAN P, WALROND C.Did stuxnet take out 1000 centrifuges at the natanz enrichm ent plant?[R].Institute for Science and Internat-ional Security,2010.
[5] 刘桂雄,张龙,徐钦桂.基于改进SHA-1物联网监测节点完整性验证与增强方法[J].中国测试,2013,39(1):80-83.
[6]SCHUETT C, BUTTS J, DUNLAP S.An evaluation of modification attacks on programmable logic controllers[J].International Journal of Critical Infrastructure Protection,2014,7(1):61-68.
[7]STRADLEY J,KARRAKER D.The electronic part supply chain and risks of counterfeit parts in defense applications[J].Components and Packaging Technologies,IEEE Transactions,2006,29(3):703-705.
[8]SRIDHAR S,MANIMARAN G.Data integrity attacks and their impacts on SCADA control system[C]//Power and Energy Society General Meeting,2010,2007(2009):1-6.
[9]沈昌祥,张焕国,王怀民,等.可信计算的研究与发展[J].中国科学,2010,40(2):139-166.
[10]彭勇,江常青,谢丰,等.工业控制系统信息安全研究进展[J].清华大学学报(自然科学版),2012(10):1396-1408.
[11]刘桂雄,钟森鸣,余中泼.一种PLC固件完整性验证装置及验证方法:103645672A[P].2014-03-19.
(编辑:商丹丹)
PLC firmware integrity verification method of SCADA system based on SHA1
HUANG Xinbing1,2, LIU Guixiong2
(1.Guangdong Communication Polytechnic,Guangzhou 510800,China;2.School of Mechanical and Automotive Engineering,South China University of Technology,Guangzhou 510640,China)
For data theft,data tampering and other information security issues of SCADA system and based on integrity measurement of the firmware and the trusted root,this paper aimed to research the necessity of integrity of PLC firmware for SCADA system,and proposed a PLC firmware integrity verification method by using SHA1 algorithm with high security.It developed an integrity authentication software on an authentication computer which was independent from SCADA system.Through the network listening and protocol analysis,the functions of the extraction of the firmware binary data, matched verification of SHA1 value of un-download firmware, and matched verification of SHA1 value of download firmware were realized,and completed the integrity test during PLC firmware transmission.The test results show that the method can effectively verify the integrity of PLC firmware,and improve the operation credibility of the PLC.
SHA1; SCADA system; PLC; firmware; integrity
A
1674-5124(2017)06-0114-04
10.11857/j.issn.1674-5124.2017.06.024
2016-09-20;
2016-11-15
2016年度省科技发展专项资金(2016B010113001)
黄信兵(1982-),男,河南濮阳市人,高级工程师,华南理工大学访问学者,研究方向为自动化与检测系统研发。