配电网自动化DTU终端的103规约的安全性分析①

2021-05-21 07:22鹏,王勇,王相,王
计算机系统应用 2021年5期
关键词:规约中间人校验

余 鹏,王 勇,王 相,王 敏

1(上海电力大学 计算机科学与技术学院,上海 201306)

2(国家电网 上海市电力公司检修公司,上海 200063)

IEC 60870-5-103 规约(以下统称为103 规约)是国际电工委员会根据IEC 60870-5 系列基本标准而制定的,是用于继电保护设备信息接口的配套标准[1].103 规约对变电站自动化系统、厂站自动化系统中的控制系统以及继电保护设备或者间隔单元的信息传输做出了明确规范,可以用于配电网自动化主站和站所终端单元(Distribution Terminal Unit,DTU)之间的数据传输.由于103 规约主要考虑的是信息交换数据格式的统一,不同地区和不同的厂家有着不同的具体实现方式,有的采用串口通讯,有的采用以太网TCP/IP或者是采用以太网UDP/IP,甚至可以采用二者结合的方式[2].

103 规约在设计之初并没有考虑到其安全性,使得攻击者很容易利用规约的漏洞进行攻击,拦截甚至篡改通信内容,一旦通信主站接收错误指令或者通信系统崩溃将会给电力系统带来巨大损失.文章针对基于TCP/IP的以太网103 规约存在的明文传输、易受中间人攻击等漏洞进行分析,并进一步搭建具体的实验环境进行验证,最后设计了一种数据安全传输机制,能很好地抵挡中间人攻击以及明文传输存在的威胁,一定程度上可以增强该以太网103 规约的安全性.

本文做以下工作:

(1)针对103 规约进行了安全性分析,指明其存在的若干安全隐患.并采用PMA 通信协议分析及仿真软件进行了仿真实验,获得了103 规约的通信报文,验证了该规约的明文传输特性.

(2)搭建了真实的通信实验环境,构建基于以太网103规约的DTU 设备与主站的硬件连接,通过软硬件结合可以遥测到DTU 设备所采集的电压电流等真实数据.

(3)使用中间人攻击的方式对系统进行了安全性测试,可以成功对主站与DTU 设备通信的网关进行欺骗,证明该规约存在中间人攻击隐患.

(4)为增加规约的通信安全性,提出了一种基于RSA非对称密码算法的双向身份认证机制,并运用高级加密标准(Advanced Encryption Standard,AES)和安全散列算法1(Secure Hash Algorithm 1,SHA-1)保证传输数据的机密性和完整性,最后通过socket 编程进行实现.

1 研究现状

针对103 规约的研究,国内外学者做了诸多研究.姬希娜等[3]针对国家电网以太网103 规约设计了一种可用于测试规约子站的工具,该工具既能作为TCP 连接的客户端,还可实现LPCI 测试和基于测试 用例集的应用功能的自动测试,能有效提高用例错误检测能力.张磊等[4]针对日渐复杂和受到限制的装置人机接口,针对103 规约的功能不足,在其基础上扩展了装置菜单读取、权限控制、装置命令等功能,有效弥补了人机交互功能差,并在保护装置中进行实际使用.李鹏等[5]为解决当前牵引变电站综合自动化系统在高精度实时负荷录波方面存在的诸多不足,提出一种基于103 规约扩展的实时负荷录波设计实现方案,并在实际使用中获得了很好的效果.韦宇等[6]采用103 规约结合UDP 报文和TCP 报文建立发电机原有的主保护装置与上位机的通信,用于保护装置的数据传输,对发电机实施计算机控制,经过改造后可实现少人值守甚至无人值班的目标.雷林绪等[7]针对输电线路的故障诊断,为了在修复过程中提高故障定位的准确性,提出一种应用103 规约将行波故障测距装置连接到继电保护信息管理系统和变电站监控系统的设计方案,并介绍了实现的方法和思路.余梦泽等[8]对103 规约在110 kV 裂心式高压并联可控电抗器控制装置中的一些应用进行介绍,并对可控电抗器的运行数据结构进行分析,最后给出在可控电抗器的控制装置中的具体实现方法.刘亮亮等[9]肯定了以太网103 规约对提高继保装置效率和可靠性的作用,同时浅析了以太网103 规约在实际中的优点和不足,并给出一些以太网103 规约在实际使用中的建议.

综上所述内容,目前国内外研究人员针对103 规约的研究大部分还是在实际应用中,很少关注到安全性方面.本文通过实验环境的搭建,重点分析103 规约存在的安全隐患.

2 103 规约存在的安全问题

2.1 未采用加密通信

103规约的通信报文进行的是明文传输,未使用任何有效的加密措施和数字签名机制,这使得该规约存在一定的安全风险.攻击者可以通过嗅探方式很容易获得并轻松解析出其中的数据.如果遭受到中间人攻击,攻击者很容易对截获的报文进行篡改再转发,将导致系统的错误决策从而造成经济损失.

为验证103 规约采用的是明文传输,我们使用PMA 通信协议及仿真软件进行仿真实验,这个软件可以模拟主从站的通信过程.首先我们在软件中选取相应的规约并分别对通信的主从站进行相关设置,配置完成后主从站就可以进行通信,如图1所示.从图中我们可以看到该规约确实采用明文传输,其通信安全存在隐患.

图1 主从站通信报文界面

2.2 数据校验方式简单

数据校验是为了确保数据正确传输,检验数据是否完整的一种验证操作.首先发送方用指定的算法对原始的通信数据进行计算得出一个校验值,接收方接收数据后采用相同的算法计算出一个校验值,然后对比接收到的校验值和自己计算的检验值是否相同,如果校验值相同,则数据是正确传输,没有出现丢失情况.103 规约是采用简单的帧校验和的方式进行数据校验的.对于固定帧长格式,帧校验和为控制域与地址域算术和(不考虑溢出位,即256 模和);对于可变帧长,帧校验和为地址域、控制域及应用服务数据单元算术和(不考虑溢出位,即256 模和).这种校验和算法过于简单,虽然可以一定程度保证数据传输过程中的正确性,但是一旦攻击者篡改数据之后对校验位进行重新计算,很容易可以达到欺骗的目的.

2.3 缺少身份认证机制

以太网103 规约大都是基于TCP/IP 协议进行设计的,在103 规约的基础上使用TCP 协议进行数据传输,导致以太网103 规约缺乏身份认证机制.TCP 协议的可靠连接是进行以太网103 规约数据传输的前提,但是在进行TCP 连接的时候,只要知道目的IP 就可以发起请求从而确定目的MAC 地址.攻击者可以利用这一漏洞,通过伪造ARP 数据包把自己伪装成目的机,进而发起中间人攻击截获通信数据包,攻击者甚至可以对通信数据进行恶意转发和非法篡改操作.

3 安全性测试与分析

3.1 实验环境

本实验系统采用的是某品牌的DTU 设备、路由器和终端电脑构成,系统硬件连接图如图2所示.

在终端电脑安装DTU 配套软件并进行相关配置,将终端电脑IP 地址设置为198.120.0.100,网关设置为198.120.0.2,子网掩码为255.255.0.0.将DTU 设备IP地址配置为198.120.0.1,网关与子网掩码的配置与终端电脑是一样的.进行连接以后,使用wireshark 软件可看到电脑终端与DTU 设备的通信数据包如图3所示,从图中可看出该以太网103 规约是基于TCP 协议的.

图3 终端电脑与DTU 设备的通信数据包

3.2 中间人攻击测试

中间人攻击是一种历史悠久的网络入侵方式,并且由于它存在巨大的继续开发潜力,使得它一直以来都是信息安全领域的重要隐患.中间人攻击的具体攻击方式有SMB 会话劫持、ARP 欺骗、DNS 欺诈等.简单来说,中间人攻击就是在通信双方不知情的情况下,分别与通信的两方进行单独连接,拦截和获取网络通信数据,并可以对通信数据进行嗅探和篡改.

文章使用的是ARP 欺骗的方式实现中间人攻击,本实验的网络配置情况如下:

攻击者的IP 地址:198.120.0.101;MAC 地址:00-0c-29-b5-48-cc.

路由器的网关IP 地址:198.120.0.2;MAC 地址:48-0e-ec-0c-d7-b4.

目标主机的IP 地址:198.120.0.100.

网络拓扑结构如图4所示.

在进行攻击实验之前,在目标主机的cmd 窗口下使用arp-a 命令查看ARP 列表,如图5所示.

本次ARP 攻击测试实验所采用的工具是Kali Linux 操作系统中自带的ettercap 软件进行.攻击完成以后,再查看ARP 列表会发现网关的MAC 地址已经由原来的48-0e-ec-0c-d7-b4 变为攻击者的MAC 地址00-0c-29-b5-48-cc,结果如图6所示.这说明攻击者实施ARP 欺骗成功,成功地在目标主机与DTU 设备中间充当了中间人.当实现ARP 欺骗后,监控端与DTU设备不能继续通过网关建立正常的连接,从而导致系统的崩溃.

图4 网络拓扑连接图

图5 攻击前目标主机的ARP 列表

图6 攻击后目标主机的ARP 列表

4 数据安全传输机制

4.1 双向身份认证算法

通过以上实验,我们验证了采用以太网103 规约的DTU 设备存在中间人攻击的风险.现在的配电网终端设备通常都是在线自动注册的,这给不法分子有可乘之机,部分非法用户在系统重启时自动连接到系统,所以在主站和配电终端之间进行数据传输之前验证对方身份的合法性很有必要[10].针对冒充攻击、中间人攻击等威胁,文献[11]设计了一种基于身份密码体制的挑战/应答式双向身份认证协议,解决了使用数字证书的身份认证机制中的证书难管理、宽带消耗大等缺点.文献[12]针对传统的公钥基础设施(Public Key Infrastructure,PKI)中证书颁发、撤销以及难以实现交叉认证等缺陷,提出了基于智能合约的去中心化的身份认证机制,可以实现交叉认证以及满足不同场景下的实际需求.身份认证是网络安全的第一道防线,具有非常重要的作用.我们设计了一种基于RSA 密码算法双向身份认证机制,我们将双向身份认证的Server 端和Client 端程序部署到相应的终端设备上.在进行电力数据传输之前首先验证设备的合法性,从而保证接下来通信的可靠性.

(1)注册阶段

注册阶段是使Server 端和Client 端建立初始信任的过程,整个过程可以描述为Server 端和Client 端在离线过程中交互各自的公钥,这种直接信任的过程也是最简单直接的方式,具体注册过程如图7所示.

图7 离线注册过程

(2)双向身份认证过程

符号说明:

Kpubc表示Client 端公钥,Kpric表示Client 端私钥.

Kpubs表示Server 端公钥,Kpris表示Server 端私钥.

EK()表示使用密钥对括号内容进行加密.

DK()表示使用密钥对括号内容进行解密.

双向身份认证详细步骤如下:

① Client 端生成随机数N1,使用Server 端公钥Kpubs对N1进行加密后发送给Server 端.

② Server 端收到后进行解密得N1并随机生成N2,将N1与N2进行合并得N1||N2,使用Client 端的公钥Kpubc进行加密得EKpubc(N1||N2),将密文数据发送给Client 端.

③ Client 端接到数据以后,首先用自己的私钥Kpric对密文进行解密,查看第一个分量是否为N1,如果第一个分量为N1则Client 端对Server 端身份认证成功,否则身份认证失败.

④ Client 端解密得到的第二个分量N2使用Server 端的公钥Kpubs进行加密得EKpubs(N2)发送给Server 端.

⑤ Server 端对密文解密验证明文是否为N2,如果明文是N2则Server 端对Client 端身份认证成功,也就是双向身份认证成功,否则身份认证失败.

双向身份认证的流程图如图8所示.

图8 双向身份认证流程图

4.2 数据加密与签名

103 规约主要用于传输继电保护相关数据,对数据的完整性保护和来源可靠性具有较高要求[13],并且该规约采用的是明文传输容易被他人窃听[14,15].于是我们采用通信双方协商的规则来确定出后续用于数据加密的对称密钥[16],文章利用注册阶段互换的RSA 算法的公钥和SHA-1 散列算法协商出数据加密密钥key,协商具体过程如图9所示.首先由Server 端生成AES 加密密钥key 并利用对方的公钥将其加密发送给Client端,Client 端解密后利用自身私钥Kpric和SHA-1 散列算法对key 签名Sign1(key)发送给Server 端,Server验证签名正确则用自己的私钥Kpris和SHA-1 散列算法生成签名Sign2(key)发送给Client,如果两次签名都验签都正确,则双方成功协商出数据加密密钥key.Server 端和Client 端双方建立通信之前协商出会话密钥的目的是为了保证前向安全,同时也起到了功能隔离的作用,在Client 端和Server 端虽然存在注册密钥,如果用注册密钥进行加密通信数据,一旦密钥泄露将导致所有时间的会话内容泄露,恰当地使用会话密钥可以有效避免这一点.

图9 密钥协商过程

双方协商出密钥key 后,发送方使用密钥key 对数据进行AES 对称加密,并同时利用SHA-1 散列算法和自身私钥生成签名.SHA-1是一种密码散列函数,可以将一段明文以不可逆的方式将它转换成一段固定长度的输出也就是消息摘要,只要原文被篡改将导致消息摘要发生巨大变化.数字签名是在消息摘要的基础上利用私钥进行再次加密从而形成数字签名,验签者则需要利用对方的公钥进行验签得到消息摘要,由于非法者不能拥有合法用户的私钥,所以这就能够保证数据来源的真实性,同时也能验证数据在传输过程中是否被篡改,具体的数字签名过程如图10所示.

图10 数字签名过程图

发送方对原始数据进行处理,进行对称加密得到密文并生成数字签名,随后将密文和数字签名一起发送给接收方,数据发送流程图如图11所示.

数据接收过程流程图如图12所示,接收方收到密文块和签名块.接收方使用对称密钥key 进行解密得到明文M 并使用与发送方相同的SHA-1 散列算法进行计算消息摘要,将计算的消息摘要与运用发送方公钥进行验签得到消息摘要进行对比,如果一致则认为消息是安全的未被篡改,同时也能确定数据发送方的身份真实性,否则数据通道存在不安全因素.

图11 数据发送流程图

图12 数据接收流程图

4.3 实验分析

本实验以socket为基础设计了能够进行双向身份认证以及数据加密和签名传输的Server 端和Client 端的Python3 程序,我们可以将相应的程序部署在相应的终端设备上.通信双方按照我们设定的规则进行数据的交换就可以保证系统通信的安全性,使得攻击者无法假冒身份进行接入系统,同时所传输数据的保密性和完整性得到很好的保证,能够及时发现数据传输过程中导致的误差,实验的网络环境配置如下:

Client IP:192.168.1.103.

Server IP:192.168.1.102.

网关IP:192.168.1.1.

非法Client IP:192.168.1.105.

仿真实验网络拓扑结构如图13所示.

图13 仿真实验网络拓扑结构

(1)双向身份认证仿真实验

当且仅当Client 端和Server 端互相通过身份认证,才可以建立连接进行数据的传输,一旦某一方对另外一方身份认证不通过则连接失败,通信断开无法进行后续的数据传输通信.Server 端与Client 端身份认证程序运行结果如图14、图15所示,当两端都认证成功才算是双向身份认证完成.

图14 Server 端对Client 认证结果

图15 Client 端对Server 端认证结果

当某个非法Client 端试图与Server 端进行连接,即使它获得合法Client 端的公钥但由于没有匹配的私钥进行解密,所以无法进行假冒身份接入系统,非法Client 端试图与Server 端连接结果如图16所示.

图16 非法Client 端对Server 端身份认证结果

(2)数据加密和签名传输仿真

为了保证数据传输过程中的机密性和完整性,我们采用对称加密和数字签名结合的方式进行保证数据的传输安全.使用文章的传输机制后攻击者就无法获知具体的内容同时也能够及时发现数据在传输过程中是否被篡改或者出现传输错误,具体的报文加密和签名以PMA 软件仿真得到的报文为例进行实验分析,对召唤用户2 级数据加密和签名的程序运行结果如图17、图18所示.

图17 数据发送端运行结果

图18 数据接收端运行结果

报文经过AES 加密算法前后数据的对比如表1所示,AES 算法密钥设为1234567890123456.

表1 AES 加密前后数据的对比

5 结论

文章首先对103 规约进行了安全性分析,分析其可能存在的安全威胁.针对采用以太网103 规约进行数据通信的DTU 设备进行ARP 攻击并成功.如果实际情况中发生这种事件,将给配电网自动化系统带来严重威胁.针对中间人攻击,本文设计了一个双向身份认证机制对设备的合法性进行辨认,并使用对称加密手段和数字签名技术对通信数据进行机密性和完整性保护.最后通过仿真实验验证了该方法的有效性.

猜你喜欢
规约中间人校验
复杂多耦合仿真模型校验工具研究
使用Excel朗读功能校验工作表中的数据
电能表在线不停电校验技术
精通文件校验的“门道”
无人值班变电站保护信号复归方式的改进
医学留学生汉语教学“规约—开放”任务教学模式探讨
跟杨绛学做“中间人”
变电站自动化系统通信结构及规约的研究
MOOC“中间人”:从课堂到网络