面对日趋严峻的工业控制系统安全威胁,通常采取主动隔离和被动检测的安全解决方案,然而这些方案仅能作为解决工业控制系统边界安全的一种手段,对于解决系统内部网络以及有效通信等问题作用不是太大,侵入者依旧可以利用各种手段侵入到内部网络进行链路数据破坏。该文从应用层信息安全需求出发,提出一种基于加密网关的工业控制系统通信数据加密防护方法,采用RC4加密算法有效保护上位机与PLC的通信数据安全。实践表明,该方案可靠、稳定、安全,能满足以太网环境下数据加密传输的需要。
0 引 言
工业控制系统(Industrial Control System,ICS)它已广泛用于国防军工、交通运输、科学研究、石油炼化、核能电力、污水处理等领域,用于控制生产设备的运行,系统在工业以太网技术大量应用下引发的病毒和木马攻击事件频发,直接影响公共基础设施的安全[1]。2010 年,网络超级武器“Stuxnet ”病毒通过针对性的入侵工业控制系统,使伊朗布什尔核电站核反应堆几近瘫痪;2011年,黑客通过侵入美国伊利诺伊州斯普林菲尔德市(Springfield)的公共供水SCADA系统网络,通过连续开关水泵阀门,导致水泵损坏,影响整个区域正常供水。
随着ICS安全形势的日趋严峻,国内外安全机构和公司对工业控制系统提出了一系列安全解决方案,广泛采用包括工业防火墙、IDS(入侵检测系统)、IPS(入侵保护系统)、VPN(虚拟专用网络)和网闸等防护设备。文献[2]从工控平台、网络、安全策略、管理流程等方面对ICS的安全性进行了分析,并针对ICS的不同层次提出了相应的解决方案。文献[3]提出运用“深度防御”思想,以ICS资产功能及重要性为安全域划分依据,从技术与管理两个维度设计适用于ICS的网络安全防护体系。文献[4]基于数据安全和管理安全两个维度来讨论了ICS安全防护技术的设计原则,从区域划分、终端防护、通信管控、安全设备选择方法、安全操作策略和流程,给出了典型工业控制系统的安全部署图。这些方案仅能作为解决工业控制系统边界安全的一种手段,对于解决系统内部网络以及有效通信等问题作用不是太大,侵入者依旧可以利用边界防护设备自身配置中的漏洞,进入内部网络,对通信数据进行截获分析,获取通信数据格式和通信时序,实现伪上位机设计,伪造时序数据对可编程逻辑控制器(PLC)进行攻击,达到欺骗通信、欺骗控制的攻击目的,进而对整个系统进行控制和破坏。
本文提出了一种基于加密网关的工业控制系统通信数据加密防护方法;该方法采用RC4加密算法,实现了上位机与PLC的通信数据保密。
1 工业控制系统网络安全隐患分析
1.1 工业控制系统结构模型
以典型的ICS应用为例,其基于工业以太网络,整个控制处理单元主要用于生产过程控制与调度自动化系统,同时可以对现场的运行设备进行监视和控制,以实现实时数据采集和处理、设备控制、参数调节以及各类信号监测等各项功能。以西门子工控系统为例,其简化结构模型如图1所示。该模型包括现场编程计算机(Step7)、可编程逻辑控制器(PLC)、智能电子设备(IED)和确保各组件通信的接口技术。其中,作为西门子PLC的专用编程软件,Step7可以通过多种通信模式完成硬件配置、参数设置、通信组态、编程、诊断等功能,实现工程文件的上装、下载等各种命令信息。PLC主要执行逻辑运算、顺序控制、定时、计数等操作命令,控制各种类型的IED设备[5]。
1.2 工业控制系统通信数据结构
基于上述简化模型,本文对现场编程计算机与PLC实时通信数据进行分析,得出以太网通信模式下工业控制系统的上位机与PLC的通信协议层次模型,如图2所示。其中,在数据链路层、网络层、传输层使用国际通行Ethernet+TCP/IP标准,而在应用层则使用基于工业以太网的现场总线协议PROFINET(PROcess FIeld NET)技术[6]。为进一步分析实时通信数据,本文利用wireshark抓包软件抓取链路上通信数据,对数据内容进行分析,获取了各层协议实际内容,如图3所示。
1.3 工业控制系统网络数据安全隐患
ICS网络像其他信息网络一样通常面临四大威胁:一是利用工业控制系统软硬件存在的漏洞,截获物理通道上传输的所有信息,并进行数据比对分析,甄别信息内容,获取重要资源;二是中断系统网络或者使服务器拒绝服务,数据无法送达接收方,无法继续执行相应的命令;三是非法用户冒充合法用户,并使用合法用户的口令以合法的用户身份加入到通信双方之间,实时监控双方通信内容,实施攻击时参与数据流的篡改替换,破坏应用系统的正常运行;四是攻击者伪装成另一台合法上位机来哄骗网络中的下位机误将其作为合法机器加以接收,诱使下位机向他发送据或接收他伪造的失真甚至完全破坏系统数据,促使系统瘫痪等。如图4所示
在ICS底层网络中,实时传送的信息主要来自于PLC、现场的变送器、过程量转换器、开关、控制阀、执行器等之间交互的数据,信息包括诸如设备型号、监测量、系统组态,报警标识等。这些数据报文的数据量一般不是很大,其所携带信息量也就少,经过工业以太网协议封装后的报文往往也不超过几百字节。另外,系统的生产控制过程一经设定,往往不能随意变动,所以涉及生产控制信息的总体数据量和信息量不大,对于攻击者来说,只需要截获一个生产运行周期的数据就可以掌握这条生产线的全部信息[7]。
攻击者可以利用高级隐遁技术(AET)手段,如字符串混淆、加密和隧道技术、碎片技术等骗过IPS的检查,穿透IPS成功进入ICS内部[8],识别PLC型号、硬件组态信息、外设属性等信息,如果上位机与PLC的通信内容不加任何保护措施,那么很容易侦测出包括通信数据格式和通信时序,攻击者可以建立伪上位机通过修改数据包头、净负荷等攻击PLC,致使PLC工作瘫痪,无法正常工作。要确保ICS控制网络数据安全,就必须确保上位机与下位机之间敏感数据的采集、传输、存储、执行过程中的信息安全问题。基于此目的,本文通过采用数据加密技术,将用户数据经加密算法加密成密文,然后再将密文发送到网络上进行传输,这样,即使发生数据被截获,也能够确保数据内容无法识别和执行,从而可以提高上位机与PLC数据传输的安全性、可用性和完整性,保证ICS的正常工作。
2 应用层数据传输安全方案
2.1 工业控制系统应用层数据加密模型
基于上述安全隐患和实际需求,本文提出一种应用层数据安全防护方法,其简化模型如图5所示。
在该模型中,编程上位机编写STL/LAD高级程序,由Step7编译成可执行代码,再将可执行二进制代码通过PROFINET协议对数据封包,使用加密网关对此数据包进行加密处理,通过以太网发送数据包,经由中间交换机对数据进行分发,在每一个PLC前由加密网关完成对交换机分发数据解密处理,然后由PLC解析并执行这些代码,这样就完成了上位主机对PLC的现场编程。
数据加密按加密途径分有链路加密与端?端加密两种。链路加密侧重在链路上而不考虑信源与信宿,是对保密信息通过各链路采用不同的加密密钥提供安全保护。端?端加密指信息由发送端自动加密,并且由通信协议进行数据包封装,然后作为不可阅读和不可识别的数据穿过局域网,当这些信息到达目的地,将被自动重组、解密,而成为可读的数据。考虑到非对称密钥密码体制相对于对称密钥密码体制运行速度慢,而ICS需要在很短的时间内处理大量的数据,对数据的传输要求精确、安全且快速,如果采用非对称密钥密码体制会引入较大的消息传输延迟,所以该模型把加、解密速度作为首选条件,综合考虑加密算法的安全性,本文采用RC4算法,其算法简单、速度快,不管是软件还是硬件,实现起来都十分容易。
2.2 RC4加密算法[9]
RC4算法包含2个部分:密钥调度算法(Key Scheduling Algorithm,KSA)以及伪随机数生成算法(Pseudo Random Generation Algorithm,PRGA)。 KSA算法用来设置数组S的初始排序,PRGA算法用来随机选取元素作为密钥K,与新的S序列字节间进行随机置换,产生最后的随机序列输出,即为加密密钥,用来与明文进行异或运算实现加密。RC4算法加密流程见图6。
2.2.1 KSA算法
从1~256 B(8~2 048 b)的可变长度密钥初始化一个256 B的状态矢量S,S的元素记为S[0],S[1],S[2],…,S[255],从始至终置换后的S包含从0~255的所有8 b的数。对于加密和解密,字节K由S中256个元素按一定方式选出一个元素而生成,每生成一个K的值,S中的元素就被重新置换一次。
2.2.2 PRGA算法
在KSA将数组S进行初始随机化排序的基础上,PRGA从数组S中随机选取元素作为密钥流字节,同时修改数组S的排序,以便下次密钥流的选取。选取过程取决于两个索引i和j,这两个索引都从0开始,选取时重复执行算法,直到产生与明文的长度相等的密钥流。矢量S一旦完成初始化,输入密钥就不再被使用,密钥流的生成为S[0]~S[255],对每个S[i],根据当前S的值,将S[i]与S中的另一个字节置换,当S[255]完成置换后,操作继续重复,从S[0]开始。其算法流程[10]如图7所示。
3 实验验证
基于图7数据加密传输模型,本文搭建了一个简单验证平台,平台以编程计算机、加密网关、可编程控制器(PLC)、交换机等组成局域网络。一个正常的数据包由用户包头和用户数据构成,如果加密网关对整个数据包不进行剥离就直接加密处理,交换机收到的数据包都是经过加密处理的,它没有密钥,不能解密加密包,也就不能正常读取报头内容,无法完成数据的路由,网络也就不能正常工作。在此模型中,本文只对包的用户数据进行加密,而留下明文的包头,使得数据可以被工业以太网阅读,完成数据交互功能。通过wireshark,本文对抓取的数据进一步分析,可以获取上位机与PLC传送的实时有效数据包全部内容,如图8、图9所示。
通过比对抓取的数据包可看出,除了数据内容Data不同外,其他报头的信息一样,这也验证了对于Ethernet+TCP/IP协议包头本文不需要进行加密,只需要对用户数据进行加密,然后对明文的包头和密文的数据进行封装传送。基于上文提出的数据加密传输模型,本文在对数据通信协议结构分析的基础上,编程实现用户数据提取,而后利用加密算法对用户数据进行加密处理。从图10可以看出,其中一个数据包,其用户数据是22 B,经过加密处理后变成了一个没有实际意义的44 B的字符串,然后本文对密文进行解密操作,又还原成相同的22 B用户数据。在整个加密处理过程中,本文的报头始终是明文,这样工业以太网就可以进行识别。
基于上文提出的模型,在节点A通过抓包软件,截获A发送给B的数据包和在C处截获B发送给C的数据包,发现其数据包内容是一样的,见图11。而在节点B通过抓包软件,截获由A发送B的数据包,见图12。通过比对发现,数据包内容已经完全失去了原来的意义。
上述实验中可以看出Step7编译之后的数据经过加密处理后,变成了不识别的乱码,只有经过正确的密钥解密后,才能还原成原始数据,执行相应的操作。所以,在该条数据链路上经加密后的数据传输是有安全保障的,即使在B处被非法截获也毫无实际意义,可以在实际应用中很好的起到保护关键数据传输的作用。
4 结 语
本文主要针对当前工业控制系统网络中存在的传输数据信息被截获、篡改、伪造等问题,提出了一个可以增强上位机与PLC传输过程中安全可靠性的方案,即设计一个对传输的数据进行加密和解密的模型,并搭建实验平台进行验证,实验表明该数据传输方案可靠、稳定、安全,能够满足工业以太网环境下数据加密传输的需要。
作者:鲍金鹏 梁光明 刘伟 来源:现代电子技术 2016年8期