摘要
数据采集与监视控制系统(Supervisory Control And Data Acquisition,SCADA)是工业控制系统的核心,被用于实时收集现场数据,并实现对分散的现场设备的监控。SCADA系统中节点分布比较分散,且通信过程缺乏认证及安全措施,因此极易成为黑客的目标。攻击者通过伪造、篡改、重放指令,能够实现对系统的破坏。 本文在分析研究SCADA系统特征及Modbus/TCP工控以太网协议安全缺陷的基础上,基于密码学技术设计实现一种安全的Modbus协议;根据下位机节点在安全防护能力及访问控制能力上的差异性,设计实现一种适用于下位机系统的分层认证及密钥管理机制。主要工作如下: (1)分析Modbus/TCP协议的安全缺陷,设计实现一种安全的Modbus协议(Sec_Modbus协议)。Sec_Modbus协议在不改变原始协议结构及不额外增加通信过程的前提下,利用同步性原理和哈希函数的单向性设计基于哈希链的防重放方法;通过分析SCADA系统的特征以及密码学算法的性能,采用对称加密技术和数字签名技术实现保密性要求及认证。 (2)为了降低密钥协商带来的时间消耗,设计主从通信双方本地密钥的存储结构及本地存储密钥对的方法,并在Sec Modbus中利用Option字段实现密钥的动态选取。由于不同SCADA系统对安全性及实时性的要求不尽相同,同一系统对不同指令的安全及时间性能要求也有差异,因此为了提高Sec Modbus协议的可用性及通用性,设计了安全措施的动态选取方法。系统可根据实际需求,通过协议字段特定比特位置0的方法对Sec Modbus协议中的各安全认证策略进行裁剪。 (3)根据设计的Sec Modbus协议,研究数据包的构造及解析方法,同时利用OMNeT++仿真环境,实现上位机系统与下位机节点之间的通信,并在该环境中测试Sec_Modbus协议的时间性能与安全性能。由理论及实验分析结果可知:Sec_Modbus协议不仅符合可用性需求,且具有较好的安全性与实时性,满足常规SCADA系统的应用需求。 (4)针对下位机节点在安全防护能力及访问控制权限上的差异性,设计了基于安全防护能力的分层认证及密钥管理方法,且通过分析可知,该分层机制有效减轻了单个密钥管理中心管理密钥时的负担,不仅具有较好的安全性,且具有良好的存储性能和计算性能,适用于工控设备。