摘要

本文针对IEC 61850协议报文存在的安全问题,利用仿真软件模拟了IEC 61850通信过程,对其网络环境进行了重放攻击,验证了该协议的安全缺陷,为了增强报文的安全性,利用WINPCAP开发工具捕获IEC 61850数据报文,提出了一种基于SM2-SM3国密体系算法,对其报文进行了数字签名并验证,实验结果表明报文安全性得到了改善。

关键词:IEC 61850;重放攻击;SM2-SM3;报文安全

研究背景

IEC 61850是电力系统的一项国际标准,该标准能够解决不同厂商设备之间的通信问题,却没有为变电站网络系统提供相关的安全规范。随着通信技术的进步,越来越多的电力设备接入IEC 61850网络,虽然这种互联性带来了更高的效率,但同时也使得传统封闭性的电源组件以及通信协议更易遭受网络攻击。例如,2013年美国加州的一个智能变电站遭受网络攻击,攻击者使一个变压器的油量减少,温度升高,最终导致其停止运行。2015年,乌克兰的数据采集与监控(Supervisory Control And Data Acquisition,SCADA)系统里的关键主机被控制,违规下达了断电的指令,导致智能变电站出现了故障,80000多用户出现断电。

近几年网络安全事件频发。由于IEC 61850协议在设计之初更加注重功能和命令,对信息安全研究并不重视,因此报文很容易被非法截获、中断、篡改和伪造,对IEC 61850协议通信过程造成严重的威胁。变电站系统庞大且复杂,在现场实验并不实际,许多通信网络模拟器(如OPNET和OMNET++建模器)可以用于仿真IEC 61850网络通信。通过实验和模拟,可以进行大量关于IEC 61850协议的建模转换、协议测试、通信过程加密保护[1]。

王明辉等人针对IEC 61850通信过程中可能面临的风险,提出了基于AES-RSA算法的安全通信机制,不仅增强了数据传输的安全性,而且提高了完成一次通信认证的速度,满足IEC 61850通信对数据传输的实时性要求[1]。王飒等通过对IEC 60870-5-104和IEC 61850的信息模型进行深入研究,并与XML技术相结合,设计了两种协议的转换网关,通过以太网通信、IEC 61850信息建模、信息映射以及配合文档描述等方式对两种协议进行转换[2]。葛宏华等人利用对称加密算法高效且易于实现、非对称加密算法密钥分发和管理简单的特点,使用AES和ECC混合算法提高了报文传输的安全性和高效性[3]。叶小艳为了提高数据的保密性和完整性,最大限度地防止恶意用户攻击或用户的错误操作,提出一种基于AES算法和HASH认证相结合的文件加密机制,实现加密和消息认证的功能[3]。

上述方法针对IEC 61850协议安全性的研究,利用密码技术实现了建立远程安全加密信道、身份认证、访问控制等安全措施,虽然在一定程度上解决了协议的信息加密和身份认证问题,但是上述加密方式均是采用AES、RSA等国际加密算法,随着密码技术的发展和计算能力的提高,通用算法已不能满足当前电力系统信息的安全需求。为降低信息泄露和关键信息基础设施遭受攻击的风险,本文提出了基于SM2-SM3国密算法体系的IEC 61850报文加密算法,提高通信过程的安全性。

问题分析

2.1 GOOSE报文介绍

GOOSE协议即通用面向变电站对象事件,它属于一种快速通信报文。目前,国内外主流的IEC 61850设备均支持采用GOOSE协议,该协议反映了智能设备之间的信息传输,它可以通过原始数据来获取设备的特征量,并对其进行状态识别。GOOSE报文的帧结构包括源MAC地址、MAC目标地址、四字节优先标签、报文类型、标识(APPID)、报文长度、四字节保留、APDU。其中MAC目的地址的前三个字节固定为“01-0C-CD”,第四个字节为“01”时代表GOOSE。目的地址是GOOSE消息订阅机制的重要参数之一,它是GOOSE数据的唯一标识符。标识(APPID)即应用标识APPID,该值全站唯一。报文长度指的是协议数据单元的长度,长度为8+m,其中m为APDU的长度[5]。APDU最为重要,该部分由应用协议控制信息和应用服务数据单元组成,是变电站系统的重要信息主要集中域。APDU报文格式如图1所示。

图1 APDU报文格式

GoCBRef:GOOSE控制块索引,由分层模型中的逻辑设备名、逻辑节点名、功能约束和控制块名级联而成。

timeAllowedtolive(允许生存时间):一般设置为心跳时间T0值的2倍,如果接收端超过2T0时间内没有收到报文则判断报文丢失,在4T0时间内没有收到下一帧报文即判断为GOOSE通信中断,判出中断后装置会发出GOOSE断链报警。

Datset字符串:即GOOSE控制块所对应的GOOSE数据集引用名。报文中Data部分传输的就是该数据集的成员值。

GoID:该参数是每个GOOSE报文的唯一性标识。

t:即Event TimeStamp,事件时标,其值为GOOSE数据发生变位的时间,即状态号StNum加1的时间。

StNum:即StateNumber,状态序号,用于记录GOOSE数据发生变位的总次数。

SqNum:即Sequence Number,顺序号SqNum,用于记录稳态情况下报文重复发出的帧数,装置每发出一帧GOOSE报文,SqNum应加1;当有GOOSE数据变化时,该值归0,从头开始重新计数。

test:布尔型变量,检修标识,用于表示发出该GOOSE报文的装置是否处于检修状态。

2.2 安全问题

IEC 61850是一个支持多种协议的标准,该协议的GOOSE和SMV报文采用的是组播技术,通过以太网实现变电站设备间的互联和通信,使其网络安全问题十分突出。IEC 61850协议所存在的安全问题包括如下几个方面:

(1)窃听

IEC 61850协议传输报文采用的是明文传输方式,没有对应用数据单元进行任何加密,所有功能的传输内容都是明文的。报文信息在传输过程中被直接或间接地窃听IEC 61850的数据包,通过分析得到重要的信息,数据包并不会丢失。

(2)截获

攻击者通过在传输过程非法截获报文信息,并且目的节点没有接收到消息,即信息中途丢失了。

(3)伪造

源节点本没有任何报文消息传输,但是攻击者冒充源节点发出伪造的报文消息,目的节点也收到了伪造报文消息。

(4)篡改

攻击者故意修改截获的IEC 61850网络上传送的报文,从而破坏了数据的完整性,然后攻击者再将篡改后的IEC 61850数据包发送到目的节点。在接收者看来,数据似乎是完整的,但其实已经被攻击者恶意篡改过。

2.3 实验环境

本实验系统通过在终端电脑安装运行力通的IEC61850 domo仿真软件,来模拟服务器和客户端之间的通讯过程,在客户机端输入服务器端的IP进行互联,并选择通信节点,其中的Send和Recieve表示连接成功,本实验决定使用Wireshark抓取IEC 61850报文。可以通过抓取到IEC 61850的数据包分析,发现IEC 61850协议是通过明文进行数据传输,没有进行任何加密,其通信过程很容易被重放攻击,如图2所示。接下来本文通过重放实验进行验证。

图2 IEC 61850报文

重放攻击实验分析

重放攻击,简单来说就是重复的会话请求。攻击者通过截获并记录了从服务端到客户端的数据,然后又从记录的报文数据中提取出重要信息重新发往客户端。攻击机的IP地址为192.168.189.100。VMnet1、VMnet2是虚拟机软件提供的虚拟交换机,这些虚拟设备经过配置后可以直接使用,具体设备实验环境如表1所示,网络拓扑结构如图3所示。

表1 实验环境表

图3 重放攻击流程图

本次攻击实验使用Burp Suite安全测试平台,成功安装运行且配置好该软件后,利用Burp Proxy通过拦截,查看和修改所有的请求和响应目标服务器之间传递拦截,然后配置浏览器的代理,所有工作完成后就可以进行重放攻击了。结果如图4所示。

图4 重放攻击截图

查看结果,通过Length来判断攻击是否成功,将原始回执包和重放回执包进行比较,发现两者Length一样,说明重放攻击成功了。

SM2-SM3算法

电力网络作为国家最重要的关键基础设施,一直受到国家重视。近年来国家密码管理局从国家信息安全角度制定并发布了SM1、SM2、SM3、SM4、SM7、SM9等一系列密码算法标准。其中SM1、SM4、SM7是对称算法;SM2、SM9是非对称算法;SM3是哈希算法。SM2+SM3算法体系主要由SM2椭圆曲线公钥密码算法和SM3杂凑算法组成。与国际算法相比,256位SM2安全性能更强,加密速度更快,且内存空间更小,也没有国际算法被解密的风险大[6]。

4.1 算法基本介绍

(1)非对称加密算法SM2

国密SM2是国内版的ECC椭圆曲线密码体制,SM2算法是多倍点运算,属于椭圆曲线离散对数问题。与大多数的有限离散对数问题比,多倍点的离散问题要难得多,因此常使用SM2数字签名算法来验证报文的不可抵赖性。

(2)散列算法SM3算法

SM3算法是目前国家商用密码算法中唯一的散列算法,可应用于验证和数字签名。SM3算法可用于生成随机数、生成消息认证码等。SM3对输入长度小于264bit的消息,经过填充和迭代压缩,生成长度为256bit的散列值,其中使用了异或、模、模加、移位、与、或、非运算,由填充、迭代过程、消息扩展和压缩函数所构成。SM3算法的压缩函数与SHA-256的压缩函数具有相似的结构。

4.2 基于SM2和SM3算法的数字签名

在对IEC 61850报文进行安全加密过程中,对原始报文协议的保留字段进行安全利用,并扩展报文结构,如图5所示,较原始报文,扩展后的报文增加了拓展长度、校验码和数字签名。

图5

扩展后的报文结构

首先对IEC 61850报文内容进行循环冗余校验(CRC)运算。然后对报文内容进行哈希运算生成摘要,最后对摘要内容进行数字签名,实现报文信息的安全加密,之后服务器端发送数字签名后的报文,保护了IEC 61850报文的完整性,并且认证IEC 61850报文的信息源,防止了重放攻击。客户端接收到数字签名后的报文,需要对原始报文内容与数字签名进行对比认证,防止报文被纂改[7]。详细步骤如下:

(1)使用SM3算法对IEC 61850报文进行HASH运算,产生256位的信息摘要;

(2)使用私钥K对消息摘要进行SM2算法的安全加密,产生数字签名密文;

(3)将密文消息添加到报文扩展字段里,然后发送给接收端;

(4)接收端接收到扩展的报文之后,提取出不含数字签名的报文,对其进行HASH加密,这个环节用SM3算法,产生H1;

(5)利用公钥P对数字签名内容使用SM2算法进行解密,产生消息摘要H2;

(6)对比H1摘要和H2摘要是否相同,如果相同,报文安全,未收到重放攻击;如果不相同,说明报文内容受到修改,需舍弃。

报文数字签名与安全验证过程如图6所示。

图6 数字签名与安全验证过程

实验分析

本实验以SM2-SM3算法为基础,设计了能够对IEC 61850报文进行安全认证的Python程序,当且仅当报文通过安全认证后,才能继续发送,否则该报文将被废弃。IEC 61850协议采用基于SM2和SM3的混合算法,前后安全性对比如表2所示。运行结果运行截图如图7所示。

表2 安全性对比

图7 报文安全认证程序运行结果

可以发现与仅使用SM3加密算法相比,本文采用的基于SM2和SM3的混合算法增强了数据传输的安全性,攻击者由于无法通过窃听获得公私钥对,也就无法通过报文摘要认证,攻击无效。

图8为报文安全认证时间对比。可以看出,单独的SM2加密算法进行报文数据加密的时候,其加解密时间基本控制在50ms~80ms之间。本文设计的SM2-SM3算法加解密时间基本控制在60ms~90ms之间,同时从本文设计的SM2-SM3加密算法仿真结果来看,SM2-SM3加密算法在加解密过程中使用了两种混合算法,其性能并没有比只使用一种算法的效率低太多,数据处理时间也有效地控制在150ms之内。满足智能配电网远程通信报文传输延时在500ms内的时间要求,适合远程报文通信的加密。

图8 报文安全认证时间对比

结论

本文对IEC 61850报文通信的安全性问题进行了分析,通过搭建IEC 61850的仿真通信实验环境,针对IEC 61850存在的网络威胁,成功对其网络环境进行了重放攻击。为了增强IEC 61850通信报文安全性,提出了基于SM2-SM3国密算法的报文安全认证方法,并对此报文认证方法进行了测试分析。实验结果表明,基于SM2-SM3混合算法的IEC 61850的报文认证方法跟仅使用SM2加密算法相比,增强了报文的不可抵赖性,也满足远程报文通信的时间要求,验证了方法的有效性。电力行业关乎国计民生,国际密码算法的安全隐患越来越大,为了降低信息被泄露的风险,未来的关键信息基础设备应该逐步使用国家商用密码算法。

基金项目

国家自然科学基金面上项目(No.61772327); 上海自然科学基金面上项目(20ZR1455900);奇安信大数据协同安全国家工程实验室开放课题(No.QAX-201803); 上海市科委科技创新行动计划(No.18511105700),上海市科委电力人工智能工程技术研究中心项目(NO.19DZ2252800);浙江大学工业控制技术国家重点实验室开放式基金(No.ICT1800380)。

作者简介

谢敏敏(1994-),女,硕士,现就读于上海电力大学,主要研究方向为工业控制协议的安全性研究。

王勇,男,博士,现任上海电力大学信息安全系教授,研究领域为电力控制系统信息安全。

周林,男,硕士,现任上海电力大学信息安全系系主任,研究领域为计算机网络与安全。

为便于排版,已省去参考文献

摘自《自动化博览》2021年1月刊暨《工业控制系统信息安全专刊(第七辑)》

声明:本文来自工业安全产业联盟,版权归作者所有。文章内容仅代表作者独立观点,不代表士冗科技立场,转载目的在于传递更多信息。如有侵权,请联系 service@expshell.com。