3.3 加密报文内容
在上述两种方法中,主要是对校验码和标识码进行了加密,而报文内容仍是明文,所以不具有防窃听的功能。为了防止入侵者窃听通信内容,可以进一步对报文加密。如果对DNP3.0报文的所有内容都加密,会严重影响SCADA系统的数据采集速度,所以仅对报文中的链路层报文头和应用层报文头中的功能码进行加密即可。
报文发出方使用接收方的公钥对报文进行加密,接收方在收到加密后的报文时,使用私钥对报文进行解密。由于入侵者无法得知接收方的私钥,所以入侵者无法对加密后的报文进行解析。
4 测试与结果验证
为了验证本文所提出的DNP3.0总线协议的安全应对策略的有效性,在如图 1所示的测试环境下对增加有安全策略的SCADA系统DNP3.0总线协议模块进行模拟仿真测试,并通过入侵实验验证防护效果。
入侵者计算机执行中间人攻击、拒绝服务攻击和窃听,同时可以作为测试机,截取总线上的数据包,与预期数据包进行对比分析,并观察入侵者的攻击结果,判断安全应对策略的防护效果。
4.1 中间人攻击及防护测试
主站发出链路复位报文,要求外站PC-1和外站PC-2复位链路。因为复位链路报文属于控制报文,满足产生校验报文的要求,所以主站在报文后附加校验字节,报文内容如表 1所示。
表 1 含校验字节的请求报文
其中第一行为符合标准DNP3.0总线协议的链路复位报文的内容,其中0x05、0x64表示起始字节,0x05表示报文长度,0xC0表示链路层报文头,0x05、0x00表示目的地址,0x01、0x00表示源地址。xx、xx表示CRC校验字节。第二行为主站发出的2个校验字节。合法外站的响应报文如表 2所示。
表 2 含校验值的响应报文
其中第一行为符合标准DNP3.0总线协议的链路复位响应报文内容。第二行为外站根据校验字节计算得到的校验值。校验算法是将校验字节的高4位与低4位互换。
由于入侵者不知道校验算法,所以不能对主站的控制报文进行正确响应,无法实现中间人攻击。
该安全策略的缺陷是,入侵者可以在收到含有校验字节的报文时,将被替换的合法外站重新激活,使其对主站的报文做出合法响应,然后再模拟外站设备与主站进行通信。