由于电力需求侧管理系统所需监测的大用户点多、面广,现场情况复杂,主站和终端之间数据传输选用了目前较为经济实用的GPRS/CDMA无线信道。

由于无线信道在用户侧、公共无线网络、无线通信运营商服务器等几个环节安全性低,数据传输过程中容易被窃取,篡改和破坏,可能对电能计量准确性、负荷控制指令的安全下达造成严重的负而影响,对电网的安全稳定运行构成重大威胁。为确保数据传输的安全,必须选择一种可靠的加密算法对数据文件加密,既能够快速、简单地完成加密工作,又不影响数据的传输效率,保证正常的采集和处理。

一、电力需求侧系统现状

目前国内生产的大用户负控终端和配变监测终端基本上没有针对无线数据传输采用相关的安全措施。在终端中增加包含独立运算单元和存储器的加密模块,用于辅助终端CPU进行数据文件加密和解密运算,能够快速、简单的完成对数据文件加密、解密处理工作。

二、数据文件加密模块的加密算法

1、加密算法选择

一般加密和解密分为对称加密算法和非对称加密算法,对称密钥加密算法,又称传统加密算法、秘密密钥密码算法,加密和解密使用相同的密钥;非对称加密算法,又称公开密钥加密算法,加密和解密使用不同的密钥,把加密密钥公开,解密密钥保密。由于非对称加密算法密钥管理难度较大,且运算效率低,因此,数据文件加密模块主要加密算法采用对称加密算法。

对称加密算法用来对敏感数据等信息进行加密,常用的算法包括:

(1)DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合;

(2)3DES(Triplc DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高;

(3)AES( Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高;

经过与3DES算法的比较(如表1),AES最为符合电力需求侧管理系统数据文件加密的需要。

数据文件加密模块在电力需求侧系统中的应用

2、加密算法的改进

虽然以当前的计算机和网络技术水平,要破解128位密钥几乎是不可能的,但是由于AES对称加密算法本身特性,在应用于电力需求侧管理系统时,主站和终端使用相同钥匙,分发过程中存在一定的安全漏洞,因此,加密算法在设计过程中,在AES基础上,补充结合了地址域拆解与拼接算法、随机数填充算法和CBC算法,进一步提高加密强度和实用性。

(1)地址域拆解与拼接算法

数据文件加密传送采用每终端一密钥的形式,密钥与终端地址相绑定,主站端通过终端地址获取密钥进行加密/解密,故地址域不参与加密。对用户数据进行加密前,将地址域从用户数据中拆分出来,另行保存;加密后,再将地址域与密文进行拼接。对用户数据密文进行解密时同样需要先将地址域进行拆解,解密后再与明文进行拼接。

(2)随机数填充算法

由于AES为块加密算法,要求的明文块长度为128位(16字节),而需求侧系统数据传输中大多数明文数据长度不满足加密算法的要求,需要填充一定长度的数据,使数据包长度为16字节的整数倍。填充规则描述如下:

计算明文长度为n,在明文数据前增加2字节,用于存储明文数据长度n,采用BIN编码,低字节在前,高字节在后。如果(n+2) mod 16 >0,在明文数据后增加16 - (n+2) mod 16字节,每字节均为OOH—FFH的随机数;如果(n+2) mod 16 =0时明文数据后不做填充。解密时根据此规则进行数据截取处理。

(3)CBC算法

加密时,每一个明文块进行加密运算之前跟上一个加密运算结果数据块进行XOR运算(如图1)。

数据文件加密模块在电力需求侧系统中的应用

解密时,每一个解密运算得到的解密结果数据块跟上一个密文块进行XOR运算(如图2)。

数据文件加密模块在电力需求侧系统中的应用

3、加密解密运算流程

(1)加密

首先把接受到的数据包通过地址域拆解与拼接算法,将数据包拆解成2部分,分别是地址域部分和控制域、链路用户数据部分。由于使用AES加密算法要求的明文块长度为128位(16字节),而大多数明文数据长度不满足加密算法的要求,需要填充一定长度的数据,所以需要使用填充算法将数据包填充到16字节的整数倍。然后用CBC和AES加密算法将填充好的数据进行加密处理,得到新的加密后的数据包和地址包,最后再使用地址域拆解与拼接算法将地址域填充到数据包里面,得到最后经过加密的数据包(如图3)。

数据文件加密模块在电力需求侧系统中的应用

由于每次加密处理时,均需要取上次数据的最后16字节数据作为初始化向量,这样就使得在整个通信过程中,每个报文之间具有逻辑关联性,从而避免了攻击者对指令报文的恶意拦截和伪造。

(2)解密

解密流程与加密流程相反。

三、电力需求侧系统工作流程简介

1、文件加密模块工作流程简介

加密模块安装在负控终端或配变监测终端中,从终端中获取共地的供电电源。模块与终端之间通过两根串行通讯线连接,采用全双工异步串行通信方式交换数据。模块内置独立CPU和存储器,执行加解密计算不影响终端正常运行。

终端通过串行接口连接到加密模块。终端CPU在对数据进行组包、发送之前,调用加密模块,执行数据加密;在接收到数据并对数据进行拆包处理后,调用加密模块,执行数据解密。数据按约定的串行通信规约在加密模块和终端之间传输。加密模块始终等待终端CPU向其发送数据帧,该数据帧申明需要加密模块执行何种计算(加密/解密)、需要计算的数据及其长度。加密模块计算完毕后立即向终端发送返回数据帧,此数据帧同样申明加密模块执行的计算类型、计算结果及其数据长度(如图4)。

数据文件加密模块在电力需求侧系统中的应用

2、主站工作流程简介

在系统档案的录入阶段,操作人员首先要将终端地址和其对应的通信密钥等数据事先录入主站数据库。

(1)解密

当需求侧系统主站接收到来自终端的报文时,首先进行拆包,得到终端地址和用户密文数据,然后根据地址到数据库中读取对应的密钥,最后通过密钥及调用解密程序对用户密文数据进行解密(如图5)。

数据文件加密模块在电力需求侧系统中的应用

(2)加密

当需求侧系统主站需要下发命令(如参数设置命令、负荷控制命令等)时,首先根据终端地址获取对应密钥,然后将密钥和主站事先组织好的数据明文一起通过调用加密程序将数据明文进行加密,最后将数据密文组包形成数据报文下发至对应的终端(如图6)。

数据文件加密模块在电力需求侧系统中的应用

3、系统容错处理

终端向加密模块发送数据后100ms应收到返回帧,如果未收到,应尝试重发1次,重发后仍无返回帧的应视为加密/解密失败。对于下行数据(主站向终端发送的报文)解密失败的,应向主站返回否认帧;对于上行数据(终端向主站发送的报文)加密失败的,应直接发送明文。加密/解密失败应向主站上报“加密/解密失败”事件,并使用明文传送。

四、数据文件加密模块在电力需求侧系统中的应用

电力需求侧管理系统的实际数据传输,每一帧数据最高不超过320字节,多数为160字节以下,模块完成每次加解密运算及与终端通信仅需时10至60毫秒,而终端与主站通信数据传输时间通常需要3至5秒,加解密过程占整个通信时长比例极低。

自2006年8月电力需求侧管理系统实施建设以来,数据文件加密模块已在全国各地获得了较大范围的应用,经历了各种复杂现场环境的考验,至今运行效果良好,总体性能满足设计指标要求,从未发生因模块质量和运行故障影响终端正常工作的现象,有效杜绝了数据被窃取、恶意修改和破坏,取得了良好的经济效益和社会效益。

数据文件加密模块采用国际上先进的、高强度的数据加密算法,通过提供唯一的终端身份识别及硬件级的密钥保护,大大提高了抗干扰能力和运算、通信效率。它易于安装使用,在实际应用中,有效的防止了电力需求侧管理系统数据传输过程中被窃取、篡改和破坏,保证了电能计量的准确性以及负荷控制指令的安全下达,对于保障电力需求侧管理系统的正常运行乃至电网运营的安全稳定具有重要的意义,创造了较好的经济效益和社会效益。模块将在实际运行过程中根据需要不断改进和完善,争取在今后的电力需求侧管理系统建设中继续发挥良好的作用和产生更大的效益。

小知识之电力需求侧管理

电力需求侧管理(Demand SideManagement,简称DSM)是指通过提高终端用电效率和优化用电方式,在完成同样用电功能的同时减少电量消耗和电力需求,达到节约能源和保护环境,实现低成本电力服务所进行的用电管理活动。