APP下载

DNP3安全认证功能的探索与实现

2023-09-12杨梅强胡绍谦尤小明周晓飞

湖北电力 2023年2期
关键词:传输层子站应用层

杨梅强,胡绍谦,尤小明,周晓飞,杨 越

(南京南瑞继保电气有限公司,江苏 南京 211102)

0 引言

随着通信环境的日益复杂,电力系统自动化领域中数据交互日益频繁,对控制系统和数据网络的安全性、可靠性提出了严峻挑战[1]。传统的主子站通信协议如IEC101/IEC104、DNP3 也面临着通信安全的风险[2-4],IEC62351 标准的颁布为这些协议实现通信安全提供了规范上的支撑[5]。近年来,国内外针对这些协议的通信安全也提出了多种解决方案[6-10],但方案大多基于网络通信加密或结合身份认证来实现。实际上,这些协议多年前已经颁布了基于通信协议本身的安全认证协议扩展[11-12],但并未出现积极响应通信协议安全实施和开展相关互操作性测试的状况。

IEC62351 通信协议安全采用应用层的“挑战-应答”机制[13],因而实施通信协议安全需要基于主子站之间应用层数据的交互。IEC101/IEC104 协议尽管存在较为完善的链路层确认机制,但子站响应的应用层数据却没有相应的应用层确认机制,其应用层数据交互的关联性较弱。DNP3协议的应用层存在“查询/应答”、“响应/确认”机制,应用层数据交互的关联性强,因而DNP3协议在实施通信协议安全存在一定的便利性。

DNP3 作为一种通信协议在海外电力领域有着广泛的应用,其不仅应用于主子站通信,也应用于变电站内部通信。近几年,海外电力领域关于DNP3 主子站通信安全的呼声逐渐加大,但实际的工程实施层案例很少[14]。

基于上述两点,本文尝试通过DNP3 协议来探索实现通信协议的安全功能。本文阐述了DNP3子站的安全认证功能的实现方法,并基于国际权威认证检测机构的认证测试情况,总结了DNP3 安全认证功能实现的一些细节。这些实现细节对以后实施IEC101/IEC104的通信协议安全也具备很好的参考价值。

1 DNP3安全认证功能介绍

早在2012年,DNP3发布的规范就已经推出了V5版安全认证的扩展规范,其按功能及实现可以分为两个部分,传输层安全和应用层安全。其中,传输层安全基于TCP/IP 通信,遵循了《IEC 62351-3:2023 Power systems management and associated information exchange-data and communications security-Part 3: Communication network and system security-profiles including TCP/IP》。应用层安全基于对DNP3应用层功能码、数据对象和处理流程的扩 展,遵 循 了《IEC 62351-5:2023 Power systems management and associated information exchange-data and communications security-Part 5: Security for IEC 60870-5 and derivatives》,适用于各种通信方式。DNP3安全认证功能的架构如图1所示。

图1 DNP3安全认证功能架构Fig.1 DNP3 secure authentication function architecture

1.1 DNP3传输层安全

DNP3 只有采用TCP/IP 通信时,才能实施传输层安全,关于传输层安全在电力系统中的应用和改进,已经有很多文献进行过探讨[15-16]。DNP3 实施传输层安全与其他协议并无太大的区别,可以采用开放的TLS接口,实施传输层安全不影响DNP3的数据链路层、传输层和应用层的处理。

1.2 DNP3传输层安全

DNP3 应用层遵循了IEC62351-5 的要求,并根据自身的特点,扩展定义了相应的功能码和数据对象,适用于各种介质进行通信方式,例如串口、UDP、TCP等。

DNP3应用层安全,按功能和作用主要可以分为以下几个部分[17]。

1.2.1 数据安全验证

数据安全验证的实质就是接收方对收到的ASDU的身份和数据完整性进行验证的过程,是应用层安全的核心。

IEC62351-5 采用“挑战-应答”(Challenge-Reply)机制对数据进行安全验证,即接收方对收到的ASDU发起验证挑战(Challenge);发送方根据已发送的ASDU 和验证挑战信息生成消息认证码(MAC:Message Authentication Code)并进行验证应答(Reply);接收方校验消息认证码是否有效,有效则处理ASDU,否则丢弃ASDU。

为了提高通信效率,主子站对ASDU进行了约定,区分为关键ASDU 和非关键ASDU。接收方只对关键ASDU 发起验证挑战。为了简化流程,发送方可以采用主动验证模式(Aggressive)的同时发送ASDU和消息认证码,接收方收到ASDU 和消息认证码即可校验ASDU的有效性。通信时,主子站都可以对关键ASDU发起验证挑战。安全验证的流程如图2和图3所示。

图2 挑战应答验证流程Fig.2 Flow of challenging response verification

图3 主动验证模式流程Fig.3 Flow of using aggressive mode

1.2.2 会话密钥协商

在数据安全验证过程中,验证的双方都需要利用会话密钥(Session Key)来计算消息认证码,以达到验证和保密的目的。为了保证通信双方会话密钥一致,在通信的初始化阶段主站会发起会话密钥握手协商;另外为了防止密钥泄露产生安全问题,在通信过程中,主站会周期向子站发起会话密钥协商。会话密钥协商过程如图4所示。

图4 会话密钥协商流程Fig.4 Session key initialization and periodic update

1.2.3 用户管理及更新密钥协商

数据安全验证和会话密钥协商都是基于相应的用户。如果实施DNP3应用层安全时不支持用户管理及更新密钥(Update Key)协商,可以采用默认的用户“Common”和预配置的更新密钥;如果支持,则在通信初始化阶段需要进行用户管理及更新密钥协商流程处理,如图5所示。

图5 用户管理及更新密钥协商流程Fig.5 Flow of user status change and key change update

1.2.4 安全统计数据

主子站实施DNP3 应用层安全时,需要对安全认证过程中的事件进行统计,以监视当前的运行状态;如果这些统计数据开始频繁超过事件报告阈值,表明该站正在遭受某些类型的安全攻击。子站可以将安全统计数据上送给主站,以便于主站监视子站是否遭受到了安全攻击。安全统计数据和前面3个部分一起构成了DNP3应用层安全。

2 DNP3安全认证功能实现方法及细节

DNP3 安全认证功能的实现,主要依赖于两点:加密算法的支持和安全认证流程的实现。关于第一点加密算法本文不做阐述,只从子站的角度探讨安全认证流程的实现方法及细节。

2.1 DNP3传输层安全的实现

如前面所述,DNP3传输层安全与DNP3协议的应用数据处理是完全独立,在实施时仅需要在TLS 握手协商、报文接收和报文发送3个方面做兼容处理,主要流程如下(流程如图6和图7所示):

图6 DNP3主子站TLS握手示意图Fig.6 TLS handshake diagram of DNP3 master-sub station

图7 DNP3主子站调用TLS收发数据Fig.7 DNP3 master-sub station invoking TLS request and response data

1) 主子站建立TCP 连接,调用TLS 接口进行初始化握手协商;

2) 调用TLS 接口接收数据,得到DNP3 协议的原始链路数据;

3) 进行DNP3的请求处理,依次进入链路层、传输层、应用层流程,处理应用请求;

4) 进行DNP3 的响应处理,将应用响应进行应用层、传输层、链路层组帧和封装,准备发送;

5) 调用TLS接口进行数据发送。

仅实施传输层安全时,不影响DNP3协议的链路层、传输层、应用层处理流程,对DNP3整体的实现影响较小,实施时相对简单,但其仅仅适用于TCP/IP通信方式[18]。

2.2 DNP3应用层安全的实现

DNP3 应用层安全通过扩充功能码和数据对象来实现,需要对DNP3 原有的处理流程进行调整,其中,会话密钥协商、用户管理及更新密钥协商、安全统计数据对DNP3 原有的处理流程影响较小,而数据安全验证过程对原有的处理流程影响较大。本文在实现时将应用层安全按如下方式进行处理。

2.2.1 应用层处理请求数据流程

实现常规DNP3 功能时,子站往往根据应用层功能码进行读、写、遥控等请求的处理和响应,而当实施DNP3安全认证功能后,子站会对读、写、遥控等请求进行安全验证,验证通过后才进行响应;而安全认证请求和常规的读、写、遥控都属于应用层请求,打乱了DNP3原本清晰的分层处理逻辑,导致应用层请求的处理存在嵌套处理的困扰。

为了避免这种嵌套对原有处理流程的大幅调整,可以将常规应用层请求之前的安全认证处理过程作为介于DNP3传输层和应用层之间虚拟的安全分层来考虑。

如图8 所示,该虚拟安全分层可以对原始的应用层请求进行区分处理,能很好地解决应用层请求的逻辑嵌套。同时,从协议分层处理的角度来看,构造虚拟安全分层后,可以用该分层的逻辑接收缓存来承载数据安全验证过程中的关键ASDU 数据,可以有效降低对原来的传输层和应用层处理流程的影响。

2.2.2 应用层发送响应数据流程

实施应用层安全对应用层响应的处理流程也会产生较大影响,主要体现在以下几个方面:

1) 应用层响应的安全验证处理。在实施安全认证功能前,应用层响应会直接进入到传输层响应处理流程,而实施后,应用层响应需要先进行安全验证处理(如增加主动验证模式数据对象、增加验证挑战信息对象等)后才能进入到传输层处理流程;

2) 应用层数据发送顺序的调整。在实施安全认证功能之前,DNP3子站发送应用层响应遵循先进先出的原则,而实施后,DNP3 子站需要优先对应用层安全验证请求进行处理和响应;

3) 应用层响应缓存清除策略的调整。在实施安全认证功能之前,DNP3子站应用层响应的缓存在发送后或收到应用层确认即可清除,而实施后,缓存的清除需要考虑主站是否进行验证挑战等因素。

为了应对这些情况,可以将应用层响应和传输层响应之间的安全验证处理纳入到虚拟安全分层来考虑。其中,将流程1)封装为“应用层响应安全验证处理”子逻辑(如图9所示),构成虚拟安全分层的响应处理。

图9 应用层响应安全验证处理流程Fig.9 Processing flow of application layer response to security verification

进行虚拟安全分层后,“应用层安全验证响应”在层级上要低于应用层响应,理应优先进行响应处理,能合理地解决上述流程2)导致的问题;而虚拟安全分层对应的逻辑发送缓存也能很好地处理上述流程3)中应用缓存的清除和配合问题。

将应用层接收处理和发送处理的虚拟安全分层逻辑整合,可以得到完整的虚拟安全分层,其逻辑如图10所示。

图10 虚拟安全分层逻辑示意图Fig.10 Hierarchical logic diagram of virtual security

虚拟安全分层处理有效减少了对原有应用层和传输层的请求/响应处理流程的调整,保持了原有分层的独立性,这一点在功能实现和一致性测试中得到了验证。

3 DNP3安全认证功能测试及分析

3.1 一致性测试介绍

实现DNP3安全认证功能后,为了便于工程实施,进行了DNP3安全认证功能的一致性测试。一致性测试的内容包含以下几个部分:

1) 验证请求测试。测试发起验证请求的一方处理流程是否满足规范要求,包括根据会话密钥正确对ASDU 发起验证请求并验证响应、处理主动验证模式的响应等。

2) 验证响应测试。测试响应验证请求的一方处理流程是否满足规范要求,包括根据会话密钥正确处理验证请求并进行响应、正确地发送主动验证模式的响应等。

3) 子站功能测试。测试子站特定功能是否满足规范要求,包括正确处理会话密钥协商请求并进行响应、正确处理用户管理及更新密钥协商请求并进行响应,正确根据用户角色处理应用层请求等。

4) 特定功能测试。测试子站是否满足传输层安全的要求等。

测试内容涵盖了应用层安全[19]和传输层安全的各项要求。

3.2 性能测试及分析

DNP3子站实施安全认证功能,对通信流量和计算耗时会产生影响。由于已经有文章对传输层安全的这些影响做过分析[20-21],本文的分析只针对DNP3 应用层安全。在DNP3应用层安全中,会话密钥协商、用户管理和更新密钥协商流程出现的频率较低,对整体通信的影响不大,本文的分析主要集中在数据安全验证环节。

在安全验证环节,MAC 算法一般采用HMAC[22-24]算法,MAC算法和安全验证模式的选择会对通信流量产生直接影响。采用挑战/应答模式,安全验证流程会增加88~98字节的通信流量;采用主动验证模式,会增加24~36 字 节 的 通 信 流 量[25-26]。具 体 情 况 如 表1所示。

表1 MAC算法和验证模式对流量增加的影响Table 1 Impact of MAC algorithm and authentication mode on traffic increment

DNP3 中子站响应只有0x81(请求响应)、0x82(非请求响应)、0x83(安全认证响应)3 个功能码,如果主站对子站响应进行安全验证,则功能码为0x81、0x82的响应都会进行安全验证。考虑DNP3 实际应用场景,主站是在进行多次CLASS1/2/3事件查询后才进行一次CLASS0 总查询或状态数据查询,当事件出现的频率较低时(无事件数据时,子站响应空数据帧的长度为17 个字节),安全验证流程导致流量增量的比例会比较明显。

安全验证环节的计算耗时主要体现在验证挑战时的Challenge 信息生成和MAC 计算。为了得到相对准确的数据,在认证测试过程中,针对性地修改程序,对Challenge 信息生成和MAC 计算的过程进行连续性测试。运行测试程序的CPU 为双核800 MHz,内存为2 G,程序按单线程运行,得到数据如表2和表3所示。

表2 生成Challenge信息耗时Table 2 Time-consuming of generating challenge information

表3 MAC校验计算耗时Table 3 Time-consuming of MAC check calculation

从表2 可以看出,生成Challenge 消息的耗时平均一次约为320 µs,实际测试中,生成Challenge 消息的耗时主要耗费在调用接口生成随机数上。

表3 列出了两种计算MAC 算法的耗时,平均下来采用HMAC-SHA-256 进行一次MAC 计算耗时约为55 µs,而采用HMAC-SHA-1 进行一次MAC 计算耗时约为26 µs。

从以上测试数据可以看出,实施应用层安全后,通信流量增加产生的影响会比计算耗时增加的影响更加显著。

4 DNP3安全认证功能测试及分析

在测试过程中,发现安全认证功能在工程应用中可能存在以下问题:

1) 安全认证过程中CSQ、KSQ 等序号的校验及失步风险。以CSQ 序号为例,挑战方和应答方都会校验CSQ是否连续,如果出现CSQ不匹配,则会导致通信出现问题。但DNP3的安全认证规范并未明确CSQ序号失步后如何再同步。在实际工程实施过程中,主子站需要对序号失步问题进行防范。

2) 对通信问题定位的影响。实际工程中通信问题涉及到很多方面,如通道延时、误码、主子站配合等;定位通信问题往往会借助报文和日志信息。实施安全认证功能后,对通信问题的分析、定位和处理会变得更加复杂。

5 结语

本文阐述了DNP3 实施安全认证功能的实施细节,在变电站通信终端上实现了DNP3安全认证功能。对测试流程和数据进行了整理和归纳,分析了测试过程中遇到的问题以及产生的原因,对DNP3 安全认证功能的实施和应用有重要意义。本文的实现方法和技术细节对实施IEC101/IEC104 安全认证功能也具备很好的参考价值。

猜你喜欢

传输层子站应用层
基于Python语言的网络传输层UDP协议攻击性行为研究
液压平推CNG子站改造为标准CNG子站的建议
ZnO电子传输层在有机无机杂化钙钛矿太阳能电池中的应用
物联网无线通信传输层动态通道保障机制
基于物联网GIS的消防智能巡检系统设计与实现
浅谈10kV配电自动化系统设计
基于分级保护的OA系统应用层访问控制研究
配电自动化建设方案研究
新一代双向互动电力线通信技术的应用层协议研究
物联网技术在信息机房制冷系统中的应用