APP下载

面向电压监测终端的远程升级加密通讯方法

2019-05-27

计算机测量与控制 2019年5期
关键词:字节报文加密

(南京晓庄学院 信息工程学院,南京 211171)

0 引言

随着国民经济的迅速猛发展,电力负荷急剧增长,特别是非线性、冲击性负荷设备的的不断增长,导致了电网系统产生高次电压和电流谐波,引起线路损耗增加,甚至损坏电气设备, 对电网系统造成了严重的污染和干扰。为了对电能质量进行有效的监测与分析,改善电能质量,为了给供电和用电双方提供实时数据依据,需要有一种监测设备对电网质量进行实时监测。

电压监测终端是实时测量和分析电压和电压畸变率等电网质量数据的重要设备,该设备通过GPRS接口与主站进行通讯,实现远程监测功能。但是,电压监测终端作为一个监测设备,监测内容和电压质量分析功能会随着供电部门的不断需求而要经常改变和调整,也就需要对电压监测终端中嵌入式软件进行远程升级[1],传统的解决方法是生产厂家技术人员到现场人工重新烧写程序,或者通过串口ISP在线编程更新程序,也有通过切换到自己的升级平台进行远程升级的,但升级效率低,可靠性不高,有时异常情况还需到现场维护,特别对大量的地域分散的设备进行升级时,工作量非常大,系统很难管理。钍对这一情况,需要有一个的好的升级手段和升级平台,来提高远程升级的效率。

从前的远程升级,只是简单用密码对数据进行加密,如第三方在通讯时很容易通过监控设备捕获到通讯报文,进行解密,从面造成嵌入式软件被窃取,造成大量的经济损失。

本文通过分析电压监测终端系统总体结构,解析了烧写程序HEX文件,统一升级规范和平台,实现了一种远程在线升级的加密通讯方法DV_IAP。具有分布式断点续传[2]、容错、安全认证[3]功能,大大提高了远程升级效率和升级的安全性。

1 远程升级系统

1.1 系统架构

电压监测系统主要包括电压监测终端、前置机服务器、数据库和WEB服务器,远程监测和远程监测应用系统、WEB应用终端等,组成分布式系统[4],如图1所示。电压监测终端通过GPRS与具有固定IP地址的前置机服务器连接并实现数据通讯。但是,随着电压监测终端连接前置机数量的增多,达到几万台,就需要在系统中采用负载均衡[5]技术。电压监测终端与前置机的连接是动态的,通过任务调度[6]程序来完成。

远程监测与远程升级是通过SOCKET与前置机服连接、发送和接收报文数据。DV_IAP是分布式断点续传和安全论证的远程升级方法,需要升级时,只要将需要升级的电压监测终端CPU二制式文件(HEX文件)放入分布式系统中,系统自动将HEX文件解析,并按通讯规约打包成多帧分布发送到前置机,任务管理器进行调度再转发给电压监测终端,从而实现远程升级。

1.2 系统软件

如图2所示,系统软件主要分为二个部分:前置机服务器和主站应用平台,前置机服务器向上与主站平台通讯,接收主站发过来的报文,通过规约解析后,前置机服务器向下通过通讯任务调度和通讯接口与电压监测终端连接。

图2 系统软件结构

由于不同厂家生产电压监测终端在同一平台下运行,所以必须统一通讯规约和升级平台,主站应用平台在需要实现远程升级功能时,首先将不同厂家的待升级文件解析[7],按照统一的规约通过文件分解下发模块和远程升级数据控制模块发送至前置机服务器,并通过分布式断点续传,解决网络可靠性和多终端同时升级的问题,在安全性方面通过安全论证和报文中数据校验保证了升级文件的完整性。

主站应用平台上可以通过界面看到数据库中各个电压监测终端的升级情况,用户可以通过访问Webservice接口查看电压质量信息和电压质量分析结果,并能够对异常数据进行分析,对日志进行管理。

2 系统通讯

2.1 通讯规约

远程升级依靠标准协议《电力负荷管理系统数据传输规约》, 协议采用GB/T18657.1的6.2.4FT1.2异步传输[8]帧格式,规约也采用了类似“会话”的通信协议,每次由负责采集的系统(规约称为“主站”),以通知指定地址码的装置(称为“终端”)准备接收数据,然后向其发送含有不同控制码的数据帧,并等待从站的应答。规约指定的数据帧格式,如表1所示。

表1 帧格式

其中68H为起始字符,A为地址域,C表明消息的来源以及前后消息的关系,并控制消息的功能;L说明了数据域以双字节为单位的长度,设定2个L进行比较,增强可靠性,而CS则是从帧起始符到校验码之前所有字节模256的和,保证传输数据的正确性。

帧格式中链路地址域包含行政区位码+终端地址(电压监测终端地址),用于分布式发送数据和接收报的唯一标识;用户数据包含所有用户类型数据,通过功能码和数据单元标识来区分不同类型用户数据,如表2所示。

表2 链路用户数据帧格式

在远程升级中主要用到的应用功能码AFN如表3所示。

表3 应用层功能码含义

在AFN=0FH时,数据单元采用F1文件传输数据格式如表4所示。

表4 文件传输数据格式

2.2 HEX文件格式解析

电压监测终端采用ARM7的LPC2136,使用keil仿真及开发工具,生成烧写文件HEX文件,可用记事本可打开,它的每行格式如表5所示。

表5 HEX文件格式

LEN:记录中的数据字节数目,1个字节。

ADDR:起始地址,2个字节。

TYPE:记录类型,1个字节,04指HEX文件开始,00指HEX文件数据记录,01指HEX文件结束。

DATA:HEX文件数据,LEN个字节。

CS:是此行记录的校验和,1个字节。

例如:一个HEX文件

:020000040000FA

:1020000018F09FE518F09FE518F09FE510F09FE5A8

:102010000CF09FE5846FA0B80CF09FE50CF09FE5F5

:102020002C21000034200000382000009420000003

:0CBF90000000000040000040EC1F00001A

:00000001FF

(1)文件头。

:020000040000FA

02:是记录中的数据字节数目。

0000:这个域总是0000。

04:是记录类型,指文件开始。

0000:是该段的地址。

FA:是效验和。

(2)文件数据。

:1020000018F09FE518F09FE518F09FE510F09FE5A8

10:是此行记录数据的字节数目。

2000:是数据在内存(将要烧写的eprom地址)中的起始地址。

00:记录类型00,指是一条数据记录。

18F0-9FE5:是HEX文件数据。

A8:是此行记录的效验和。

(3)文件尾。

:00000001FF

00:是记录中的数据字节数目。

0000:这个域总是0000。

01:记录类型01,指文件结束。

FF:是效验和。

2.3 文件升级

烧写到电压监测终端的程序,合并了二个程序:boot.hex和main.hex。boot.hex是启动程序,编译时开始地址从0x0开始,主要功能是:上电时看启动标志位(4个字节),如全是0xAA,则进入主程序main.hex,如如全是0x55,则将通过GPRS传来的新的main.hex程序覆盖从前的main.hex。

main.hex是主程序,是待升级的程序,编译时开始地址从0x2000开始(假如不需要升级功能,开始地址从是0x0开始,不需要boot.hex),主要实现电压监测终端的功能,按照2.2的文件格式合并二个HEX文件boot.hex和main.hex成一个文件dy-main.hex,合并如下:

boot头

boot体 地址从0开始

main体 地址从0x2000开始

main尾

dy-main.hex是具有IAP功能的电压监测终端程序,要事先烧写到LPC2136中,远程升级其实是将main.hex通过主站传过来进行升级。

1)文件的传输。

(1)主站按照2.3读取main.hex,读取到总行数RowNum,计算总报文数TotalNum,16行打成一包。

(2)将每行数据ASC码字符转换成转成十六进制码,一包16行,按表格5的格式,文件数据存放16行数据,共16*16=256字节,最后一行可能不足256字节。

(3)按2.1文件通讯规约发送数据报文。

(4)最后一帧数据包后加上2个字节,是整个文件数据校验和CS。

(5)终端接收所有报文,计算所有报文数据的校验和CS1,如果CS1等于CS1,则文件传输正确。

2)文件的断点续传

由于数据传输通道是无线信道,难免会有信号干扰和丢包现象,所有升级过程中采用断点续传流程,如图3所示。

图3 文件传输和断点续传流程图

实现过程:传输一个文件共有n个报文,报文从S1-Sn,报文传送标志从F1-Fn,初始标志Fi=0(i=1,n);升级平台从S1开始通过GPRS启动下发报文,下发报文Si,如接收到正确响应报文,则启动下发下一个报文,并置标志Fi=1;如接收到错误响应报文或接收超时(10秒),则重新传相同的报文,重传最多三次后如还不能收到正确响应报文,则继续下传下一个报文,并置标志Fi=0;直至下发最后一个报文Sn,如接收正确响应报文后,升级平台检查所有报文标志Fi(i=1,n)是否为1,如Fi为0则Si是断点。重复上述过程,进行断点续传,直至所有报文标志为1;最后比对一下校验和,如正确则更新升级程序。

3 加密通讯方法

3.1 Diffie-Hellman加密方法

传统的加密方法采用对称密钥来加密和解密数据,很容易被第三方破解,采用Diffie-Hellman非对称加密技术又称公开密钥加密技术,通过公开密钥加密数据, 抗攻击能力强[9],可有效防止中间人破译和攻击。Diffie-Hellman加密方法DHKE基本原理和加密过程, 即:双方约定一个整数g,一个素数N。首先,各自产生一个私有密钥x和y,并计算出各自的公开密钥X和Y,X和Y相互交换。其次,公开密钥交换后,双方计算出用于加密和解密的密钥K1和K2,结果是相同的。这样,通讯双方通过密钥K1和K2来加密和解密报文[10-12],从而实现数据的加密传输。

它的理论基础是:离散对数计算的复杂性, 已知X= modN,直接求x是不可行的,例如:已知,X=146,g=15,N=197,求x=43是不可能的。

3.2 基于Fibonacci和Diffie-Hellman加密

无线数据传输难免会有误码,如系统具有容错性,即具有矫正误码能力,可提高升级效率,减少续传频率,而通过斐波那(Fibonacci)矩阵和Diffie-Hellman加密方法FBDH可实现容错性加密,即:双方约定:公开一个整数g,一个素数N,一个Fibonacci矩阵Fn序列n,首先,各自产生一个私有密钥向量x(x1,x2,x3)和y(y1,y2,y3),并计算出各自的公开密钥向量X和Y,双方对X和Y进行交换。其次,公开密钥向量交换后,双方计算出用于加密和解密的密钥向量K和G,结果K和G是相同的。发送方通过密钥K加密数据,并通过Fibonacci矩阵Fn变换,最终获得加密数据向量;接收方接收数据,通过Fibonacci逆矩阵变换,再经过G解密报文,最终获得三列原文向量;对原文三列向量进行比较,三列中有二列相等,如相同获得原文。通过以上过程,数据获得容错能力,从而实现了数据的加密容错传输。

Fibonacci数列:又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=1,F(1)=1,F(n)=F(n-1)+F(n-2)(n>=2,n∈N*),在现代物理、准晶体结构、化学等领域,Fibonacci数列都有直接的应用,为此,美国数学会从1963年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。Fibonacci数列是使用最为广泛应用的数列,Fibonacci递推矩阵使Fibonacci数列计算容易,使用较多的有二阶Fibonacci递推矩阵和三阶Fibonacc递推矩阵。

在FBDH中,使用三阶Fibonacc递推矩阵Fn矩阵[13]:

(1)

三阶Fibonacc逆递推矩阵Fn-1矩阵[14]:

(2)

从(1) (2)看出,利用Fibonacc矩阵和逆矩阵,一方面增强中间人解密的难度,另一方面自身加密解密计算的复杂度低。

3.3 加密算法实现

在传输升级文件时,主站对数据进行加密,终端对数据进行解密。

3.3.1 加密过程

主站做下列步骤:

Step1:公开约定三个参数g,N,Fn;

Step2:选择自己的私有密钥向量(x1,x2,x3),并计算:

X= (gmodN, gmodN,modN)

X作为公有密钥向量;

Step3:选择终端的公有密钥:

Y=(gy1modN,gy2modN, modN)

并计算加密密钥向量:

K=Yx=(gx1*y1modN,gx2*y2modN, modN)

K定义为 (K1,K2,K3)

Step4:想将数据M发给终端

M如有5个字节,M=(m1,m2,m3,m4,m5)

计算加密矩阵:C=MT+K

Step5:选择三阶斐波纳契数列的递推矩阵F5

计算加密变换矩阵:

E=C×F5 =(E1,E2,E3)

Step6:公开将E发送给终端

3.3.2 解密过程

终端做下列步骤。

Step1:公开约定两个参数g,N,Fn。

Step2:选择自己的私有密钥向量(y1,y2,y3),并计算。

Y=(gy1modN,gy2modN, modN)

Y作为公有密钥向量。

Step3:选择主站的公有密钥。

X=(gx1modN,gx2modN,modN)

并计算加密密钥向量:

G=Yy=(gx1*y1modN,gx2*y2modN, modN)

G定义为(G1,G2,G3)

Step4:公开接收主站的数据E。

E={E1,E2,E3}

Step5:选择三阶斐波纳契数列的递推矩阵逆。

计算T=E-G=(M1,M2,M3)

Step6:终端对数据进行比较。

K=G(根据Diffie-Hellman原理)

所以:T三列是相等,即:M1=M2=M3

比较三列,如三列相等, 最后获得M=(m1,m2,m3,m4,m5),结束。

如三列中有某一行不等,则进入容错处理。

Step7:容错处理。

一个数据通过密码向量加密 后形成三个加密数据,解密后也是三个数据, 如发现三个数据不等,采用循环枚举法,重复解密过程,直至三个数据相等,定位枚举值,就是正确值。选中这个列值,最后获得:M=(m1,m2,m3,m4,m5)。

3.4 加密算法实现举例

主站:

约定两个参数g=15,N=197,n=5

x=(x1,x2,x3) =(196, 46, 178)

X=(1, 53, 70)

K= (1, 105, 171)

M= (104, 101, 108, 108, 111)

终端:

约定两个参数g=15,N=197,n=5

y=(y1,y2,y3) =(45,180,8)

Y=(148,187,16)

G=(1,105.71)

M= (104, 101, 108, 108, 111)

上述数据分析:假设在没有干扰的情况下,主站欲将报文将M传送到终端。首先,主站对M加密加密和变换,生成E,然后通过2.1传输规约断点续传传输给终端,终端对E进行解密和容错处理还原成M。最终结果,通过此方法实现了终端远程升级的容错和安全。

4 测试对比

本文针对电压监测终端远程升级功能,采用了二种方法进行了测试,一种是传统的IAP方法,另一种是采用了新的加密通讯的方法DV-IAP。测试结果比较,如表6如示。

表6 远程升级方法测试结果比较

从测试结果可以看出,新方法电压监测终端DV_IAP,具有容错加密功能。测试中,升级50台终端只用了98分钟,而传统的电压监测终端IAP升级40台终端却用了200分钟,DV_IAP升级效率大幅度提高,更重要的是:成功率从95%到提高达到100%,而且安全性也很好,达到远程升级可靠安全的目标。

5 结束语

智能电网的不断发展,使得对配电网遥测终端要求不断提高,需要升级终端的功能。对面向电压监测终端的远程升级加密通讯方法进行了研究与实现,阐述了远程升级软件平台、芯片HEX文件的生成、通讯规约、断点续传,重点研究了组合Fibonacci矩阵和Diffie-Hellman技术的加密通讯方法。应用结果表明,系统不仅实现了文件远程升级功能,而且解决了在传输过程中的保密性和容错性,具备了矫正误码的能力和防止中间人破解的能力,提高了电压监测系统的可靠性与安全性。此外,本文所采用的DV_IAP升级方法对其他嵌入式系统远程升级有一定的借鉴和参考作用。

猜你喜欢

字节报文加密
基于J1939 协议多包报文的时序研究及应用
以太网QoS技术研究及实践
No.8 字节跳动将推出独立出口电商APP
保护数据按需创建多种加密磁盘
电力安全防护加密装置
浅析反驳类报文要点
No.10 “字节跳动手机”要来了?
加密与解密
SQL server 2005数据库加密技术
1588v2中的PTP报文格式及应用