为了防止工业控制系统在通信过程中遭受各种威胁与攻击,需要使用多层安全措施完成对系统的保护。本文将以现有的研究成果为基础,从网络边界防护、安全协议和安全控制器方面,介绍控制系统信息安全解决思路。
1.网络边界防护
上文所述工业控制系统的系统威胁,一方面是由于系统采用传统IT技术,如操作系统、Web服务器、邮箱的漏洞等造成,另一方面控制系统与企业网实现互连,暴露于公共网络之中,面临更多的攻击。因此,为了保证工业控制系统的安全性,首先需要增强网络边界的防护,以降低由企业网引入的威胁风险。标准SP800-82《工业控制系统(ICS)安全指南》指出,在处理工业控制系统网络与其他应用网络的连接问题时,需要按照最小访问原则设计,具体分为两点建议:
1)工业控制系统部署网络时,建议隔离工业控制系统与其他企业网络。通常这两类网络的流量不同,且企业网对网络设备变更没有指定严格的控制规程;如果工业控制系统网络流量存在于企业网上,可能会遭受拒绝服务式攻击。网络隔离可以通过采用防火墙等技术实现。
2)如果工业控制系统网络与企业网之间必须建立连接,尽可能地只允许建立一个连接,且连接通过防火墙或非军事区实现。在具体的技术措施上,SP800-82从身份认证、访问控制、审计与核查、系统与通信保护等方面详细介绍了可用的技术措施。
(1)身份认证
通过PIN码或密码验证申请访问的设备或人员。在网络上传输密码时需要对密码进行加密,通过选取合适的加密哈希函数,可以阻止重播攻击。密码认证还可以辅以其他认证措施,如询问/应答或使用生物令牌或物理令牌。紧急情况下,工业控制系统使用密码和生物认证都存在一定危险。因此在不适合使用密码的情况下,可以采用严密的物理安全控制作为替代。
(2)访问控制
基于角色的访问控制(RBAC)可以用于限制用户的权限,使其能以最小的权限完成任务。系统管理员的通讯需要加以认证,并对其保密性和完整性加以保护,如使用SSHv2和HTTPS协议。这两个协议都使用公钥/私钥对进行用户认证。通信双方产生并使用对称密钥加密数据交互过程。
RADJUS远程认证拨号用户服务式目前使用最多的认证和授权服务。它使用IEEE802.1×和EAP协议,可以在网络的各个层实现用户认证。例如,防火墙和接入路由可以作为认证代理。
当无线设备或中断用户设备需要与其连接时,认证代理向设备发出询问,设备通过认证服务器返回认证信息,从而获得授权和接入许可。
调制解调器经常用于提供备份连接。回叫系统通过存储于数据库中的回叫号码,确认拨号者是否为合法用户。远程控制软件需要使用唯一的用户名和密码,加密和审计日志。链路层的邻居认证需要使用CHAP协议等实现。
无线用户接入和网络设备间的链接可以使用多种方式实现,如IEEE802.11b/g的网络接入点方式。所有的无线通信需要使用强加密,如IEEE802.11i中的AEP加密。无线接入需要使用IEEE802.1x认证客户。
(3)审计与核查
工业控制系统需要进行周期性的审计,验证内容包括:测试阶段的安全控制措施在生产系统中仍安装使用;生产系统不受安全破坏,如果受到安全破坏则提供攻击的信息;改动项目需要为所有的变动建立审查和批准的记录。
周期性的审计结果用一定的度量表示,用于显示安全性能和安全趋势。审计需要使用特定工具进行记录维护,需要工业控制系统中的组件支持。审计有利于维护工业控制系统在系统生命周期内的完整性。工业控制系统需要为审计工具提供可靠的同步时间戳。工业控制系统应用中维护的日志可以存储于多个地点,加密或不加密都是可以的。
(4)系统与通信保护
系统与通信的保护可以通过网络防护措施,如防火墙和入侵检测系统等,以及数据加密,如VPN等实现。网络防火墙控制不同安全等级的网络区域间的数据流量。NISTSP800-41为防火墙的选择和防火墙策略提供了指导。在工业控制系统环境下,需要在控制网和企业网之间部署防火墙。防火墙包含的特征功能包括:事件记录,入侵检测系统,基于非军事区的路由,访问列表等。
当系统被嗅探或攻击时,入侵检测系统发出警报。入侵检测系统通过在网络的各个关键点收集信息,分析数据包内容发现恶意流量,并发出警报、废弃无效数据、记录事件和活动并触发其他安全响应。对于多种工业控制系统中的应用协议所受到的攻击,如DNP和lCCP,入侵检测系统也会增加相应的攻击特征。
基于IPSec的VPN可以为网络边界的通信提供安全隧道,通常在相应的防火墙上执行。IPsec可以保证完整性、认证和数据保密性。在隧道入口处,IP包外增加额外的数据包头,路由器使用新的包头信息转发数据,到达隧道出口时,将原始IP包提取出来。在用户认证过程中,IPSec通常使用私钥和RSA签名。在消息认证和完整性保护时,使用MD5或SHA哈希函数。在数据加密时,使用AES或3DES。IPSec还使用Diffie-Hellman作为对称密钥推导。IPSec设备使用IKE协议认证其他设备、协商和分配对称加密密钥以及建立IPSec安全连接。
控制系统的安全管理包括检测、分析、提供安全和事件响应。具体内容包括动态调整安全要求,安全漏洞的优先级排序,以及安全要求到安全管理的映射:认证和授权服务器,安全密钥,流量过滤,IDS,登录等。SNMP用于管理IP网络资源,如路由,防火墙和服务器等。SNMP也可用于提供控制系统网络的集中管理。SNMPv3包括的安全特性有消息完整性,认证和加密。SNMPv3使用MD5和SHA哈希算法和DES以及AES加密算法。
(5)其他措施
为了保证网络操作的可靠性,工业控制系统需要设置冗余拓扑和功能。工业控制系统中大多使用以太网和IP网络作为通信协议。以太网层的冗余可以通过在局域网内使用RSTP协议中的网格拓扑而实现。IP层的冗余通过路由间的备份链接,如OSPF动态路由协议,和IP网络冗余接人,如VRRP协议等。MPLS可以为IP网络中的虚拟任意协议数据提供可靠的数据传输。隧道如L2TP协议等也可以为IP网络中的数据提供可靠传输。
在控制系统中的时钟和网络设备需要精确同步,事件日志记录时也需要记录下准确的时间。NTP协议和IEEEl588协议可以用于时间同步。NTP协议在因特网中广泛使用,IEEEl588协议则主要满足控制系统对于时钟同步的要求。这两种协议均可由独立设备提供服务,或者有其他网络设备的组件提供服务。
2.协议安全性
工业通讯协议,如MODBUS协议等,协议设计时未采取安全措施。然而随着控制系统与外部网络的连接增多,需要增加通信双方的认证过程。协议的安全性可以通过两种方式提高,一是直接修改协议,增加认证功能;二是在不修改现有协议的基础上,增加信息安全层。
文献设计了一种认证型Modbus协议,该协议通过对消息使用加密函数和哈希链,增强Modbus协议的认证功能,从而使攻击者无法伪装成主机。同时利用一个压缩函数,减少数据存储大小。这种方式可以增加协议对于通信双方的认证过程,但同时也会增加通讯负担,即每次通话传输的消息都需要经过加密认证,不一定能满足控制系统对于实时性的要求。因此在设计时需要同时考虑计算效率与计算消耗。
文献借鉴功能安全的概念,提出了一种在通信系统之上增加信息安全模块的方法。控制系统的功能安全在传输系统的基础上增加功能安全层,无需改变底层传输系统,即可实现系统的故障安全。类似地,文献设计一种信息安全模块,用于保护端到端通信的认证、完整性和保密性。所谓的安全模块不是指简单的物理模块,而是与PROFINETIO中的设备模型相对应,是一个软件实现。安全模块从应用层中获取过程数据,通过加密算法加密过程数据,利用MD5算法计算消息完整性编码,状态字节用于表示消息完整性和超时。安全模块通过参数化,可以适应不同的安全需求和不同的计算能力。消息完整性编码可以防止中间人攻击,例如,攻击者截取发送的消息并篡改过程数据,由于没有密钥,无法计算出准确的消息完整性编码,接受者在接收到消息后对MAC进行验证,如果无法验证其正确性,则会修改状态字节,用以汇报受攻击状态。
安全模块是置于PROFINETIO之上的软件层,只能用于防御基于网络的攻击,而不能保证设备安全。如果攻击者获取了设备的控制权,那么数据会被操控,而安全模块将无法产生作用。因此,可以将安全模块可以与设备安全措施相结合,解决设备和网络安全。
协议安全性主要是体现在对传输数据进行加密处理,保证消息的完整性和保密性,并实现对设备的安全认证。在实际应用中,需要考虑两个影响因素,一方面,由于加密措施的计算量大,对通信实时性和系统的可用资源都会产生影响,二是需要设计合理有效的密钥管理方法 。