水利自动化控制系统中现场总线安全技术研究
2020-11-12高祥涛王美玲曹晓宁吴立星
陈 宁 ,高祥涛 ,王美玲 ,傅 晓 ,朱 月 ,赵 峰 ,施 麟 ,曹晓宁 ,张 磊 ,王 培 ,吴立星
(1. 江苏省水文水资源勘测局,江苏 南京 210029;2. 河海大学,江苏 南京 210098;3. 江苏省秦淮河水利工程管理处,江苏 南京 210000;4. 江苏省财政厅,江苏 南京 210000)
0 引言
自动化控制系统在各种类型的水利工程项目中普遍被用于数据监测与信号采集、设备运行与管理、水资源调度等场景。其广泛应用,提高了运行管理效率,降低了人力管理成本,但同时也引入了新的技术风险。通过对自动化控制系统的渗透与攻击,可使相关基础设施的功能瘫痪,从而造成重大经济损失、人员伤亡或社会影响。
在水利自动化控制系统中,现场总线是构成PLC 网络的基本组成部分,传感器数据的采集与控制信号的反馈均通过下位机 PLC 实现。PLC 的电气结构简单可靠,通常不具有计算机网络通信能力,而是使用现场总线网络进行数据传输。
目前,广泛使用 Modbus 协议作为现场总线网络的串行通信协议,它通常通过 RS-232 或 RS-485等电气接口实现,部署方便,开发难度较低。Modbus 协议作为一种开放协议,设计之初并未考虑其安全机制,行业内对于 Modbus 现场总线通信协议缺乏访问控制、密钥管理、终端安全等措施造成的脆弱性,进行了具有前瞻性的研究。Liron Benbenishti[1]提出,Modbus 协议的脆弱性可总结归纳为以下5点:1)缺少机密性,数据以明文进行传输;2)缺少完整性,仅能依赖底层协议提供完整性校验;3)缺少身份认证,协议的每一层都不提供身份认证服务,甚至能够执行未被记录的编程指令;4)简单封装成帧,运输层的帧结构不足以提供完备的保障;5)缺少会话机制,攻击者可在会话中轻易插入攻击指令。
针对 Modbus 协议的脆弱性,国外提出过多个实验性的解决方案,具体如下:
1)Fovino[2]提出过一个 Secure Modbus 协议的设计。使用部署在现场总线和 PLC 接口之间的网关实现协议转换,总线上的数据帧都经过加密处理,并添加身份校验信息,以防止中间人攻击。该方案的实现需要的协议转换设备部署成本较高,且加密技术非国产自主可控,存在安全隐患,可行性较低。
2)Bryes Security 公司[3]提出基于硬件的解决方案。通过在 PLC 和上位机之间部署计算机网络及专用设备,将 Modbus 报文转换为 TCP/IP 报文,通过数据网络透明传输,以实现在非可信网络上的安全传输。引入心跳检测和异常处理机制,对 PLC进行周期式轮询检测。一旦发现异常事件,则由管理服务器进行统一处理,执行预设的动作并产生告警。该方案同样要求对原有的 PLC 网络进行改造,改造成本高于建设成本。且 TCP 网络传输介质的物理特性,如强度、防水、耐腐蚀等,与 RS-232 或RS-485 相比不具备优势,推广性不强。
3)Shahzad[4]提出一个使用对称加密算法实现Modbus 协议中 PDU 操作码及数据的语义层加密方案。为实现在不同拓扑结构和接口的网络中进行传输,每一个链路层上的数据帧的首部包含协议约定的地址域,尾部包含差错控制序列(通常是 CRC 校验)。首部包含协议约定的地址域的数据单元由1个控制代码和1段数据组成,控制代码和数据共同实现了 Modbus RTU 的功能、操作、数据请求、数据响应。但是,通过组态软件不可能完成这一工作,而在硬件层面对于 PLC 设备进行大规模改造的成本也无法接受,大多数 PLC 的硬件最初并不是为了实现安全传输功能而设计的。
4)Rohde & Schwarz Cybersecurity 公司[5]提出基于 DPI(Deep Packet Inspection,深度包检测)技术的物联网及自动化控制系统安全解决方案。通过在包交换设备上部署网络探针,对于分组中所封装数据进行检测,生成检测结果并进行反馈。该方案也需要先完成 PLC 网络的计算机网络化改造,在总线型现场总线网络中无法进行部署。
综合上述各解决方案,复用计算机网络中相关理论及技术,用以解决工业自动化控制系统网络,特别是现场总线中安全性问题的思路,在目前人员及技术条件下,具有相当高的局限性。
1 技术方案设计
根据上述问题,从安全可靠、自主可控的角度,考虑对原系统轻量化、低成本改造等因素,在现有的 PLC 与 Modbus 总线之间加装基于国产密码的安全网关。网关具有将明文通信数据转换为密文的能力,同时可通过内置的加密算法实现数据的保密性、完整性和身份验证:1)所有经过 Modbus 总线传输的数据字段都经过对称加密算法加密,而不使用明文,以防止总线上存在恶意的监听行为;2)数据字段中的所有内容在加密之前使用杂凑算法生成哈希值,以确保在传输过程中一旦受到非法篡改,即可被轻易发现;3)哈希值本身使用接收站设备的公钥通过非对称加密算法进行签名,生成校验序列,以防止自身受到中间人的篡改;4)校验序列同时也承担了身份验证的功能,接收站可使用自身的私钥对其进行验签,具有不可抵赖性;5)为防止重放攻击,数据字段中加入不重数,或使用一次性随机密钥进行加密,一旦发现相同的不重数或重复的随机密钥,即可认为受到重放攻击,立即丢弃可疑数据。
由于加密算法可通过硬件芯片实现,因此网关本身仅需要使用低功耗的廉价 SOC(单片机)实现,其成本远低于搭载以太网或无线以太网接口的 MCU。在原型设计与应用验证阶段,可以使用FGPA(现场可编程门阵列)芯片实现。而在小试与量产阶段,可以使用 STM,ACH 等成熟 SOC 方案进行生产,具有较高的性价比。
该技术方案不需要对自动化控制系统的网络拓扑结构、物理接口和电气特性进行改造,无需敷设线缆,无需为 PLC 配套价格较高的 MCU,仅需要在原有的 RS-232 或 RS-485 接口之上接驳协议转换器,即可实现 Modbus 协议的安全性改造。对于原有控制系统的软硬件没有特殊要求,亦不需要厂家或专业维护人员技术支持,成本较为经济,具有较高的实用价值。
由此为依据,硬件加密网关由2个串口通信、加密、密钥存储、供电等模块组成,其内部结构如图1所示。
图1 硬件加密网关内部结构图
2个串口通信模块均由串行通信芯片构成,分别通过 UART 总线接口连接加密模块,使用 RS-485接口连接外部设备。加密模块由1个有国产商用加密芯片的单片机系统构成,内部预置 SM1,SM2,SM3,SM4 算法的硬件实现,通过 UART 总线接口连接串口通信模块,通过地址总线接口连接密钥存储模块,通过二芯(VCC,GND)电源线接口连接供电模块。密钥存储模块由1块 Flashrom 芯片组成,存储目的地址编码,以及与之相对应的公钥、私钥。该模块通过 NAND Flash 接口连接加密模块。供电模块由1个稳压直流电路组成,将现场总线上的宽压直流电源输入转换为符合网关工况需求的电压、电流,由 RS-485 接口从现场总线上取电。
硬件加密网关的2个串口通信模块分别连接自动化控制设备和现场总线的网络物理接口,硬件加密网关上电启动后,对硬件加密网关的密钥存储模块进行初始化。初始化完成后,开始执行监听过程,监听过程包括2个部分:1)在连接现场总线端的串口通信模块上,对于所有传入硬件加密网关的串口通信应用数据单元 ADU 进行监听;2)在连接设备端的串口通信模块上,对于所有传入硬件加密网关的串口通信应用数据单元 ADU 进行监听。硬件加密网关的工作流程如图2所示,本研究方案与国外方案比较如表1所示。
图2 硬件加密网关的工作流程图
表1 本研究方案与国外方案比较
2 应用实例
原型系统开发成品后,为验证硬件加密网关原型设备的稳定性与兼容性是否符合设计要求,在某泵站现场进行了测试检验,对于该泵站的10台机组,分别从温度、电压、电流等方面巡检设备现场总线上加装加密网关原型设备,以测试本研究方案在实际水利工程控制系统中的可靠性与时效性。加密网关设备设备现场连接示意图如图3所示。现场10 台传感器以手挽手的 RS-485 接线方式传送到主机 PLC 端,在主控端安装1台加密网关设备,每个温度传感器端安装1台加密网关设备。
图3 加密网关设备现场连接示意图
经检验,在设备间传输距离为100m 左右,设备节点间单向传输 ADU 的平均时延为952ms。多次校验分析,当随机生成的对称密钥 RK 长度为16 Byte 时,使用SM2非对称加密算法加密后,得到的对称密钥密文 CK 长度将膨胀为112Byte。
通常情况下,现场总线上串行传输的波特率为9600 bit/s。为抵消数据膨胀带来的信道传输时延,修改设置硬件加密网关总线端波特率为115200bit/s(设备端为兼容现有自动化控制设备,仍为9600bit/s)。
改进后继续测试,在未对该泵站的工业控制系统及设备的硬件、软件进行任何修改的情况下,通过加密网关原型设备10台机组实现了相绕组温度、轴承温度、电压、电流、有功功率、无功功率、功率因数、频率等通过现场总线传输的数据报文的加密保护。测试共分4次进行,每次测试持续超过15个日历天。
通过查阅控制系统后台日志,确认系统状态正常,硬件加密网关未引起任何异常或告警,测试过程中未出现死机现象,未出现数据错误等现象,平均时延降为200ms 以内。完全符合设计要求。
3 结语
综上,通过在自动化控制设备与现场总线之间添加混合加密的硬件安全网关,能够在不对现有设备及现场总线网络进行替换的条件下,实现基于国产加密算法的设备身份识别与认证、报文数据保密、完整性校验等功能。同时,在信道延迟上性能损失较少,能够满足大多数对于实时性要求不高的自动化控制系统的需求。