一种电能表程序的现场保护方法与流程

文档序号:17479179发布日期:2019-04-20 06:19阅读:218来源:国知局
一种电能表程序的现场保护方法与流程

本发明属于电力系统电能表管理技术领域,具体涉及一种电能表程序的现场保护方法。



背景技术:

随着国家电网公司智能电能表系列标准的正式实施,电能表的功能明显增多,涉及到的重要信息比如剩余电费、电价等越来越多,电能表作为不允许现场升级软件的装置,程序的合法与否是保证电能表正常运行的重要因素。如果电能表在现场未经公司授权非法下载新程序、或程序下载版本有误,程序的不稳定性会导致信息泄露或是扣费等重要活动错误,在电能表供应量大的情况下损失难以估量。因此必须要设计相关电能表程序的现场保护方法。



技术实现要素:

为解决上述技术问题,本发明提出了一种电能表程序的现场保护方法,该方法根据程序内部flash特定地址的数据经过特定加密算法机制生成license(license是一种许可证号,是经过加密算法计算后若干个字节的十六进制整数),出厂之前下载到电能表中。程序运行时,会首先检测license是否正确,如果电能表程序错误或是被篡改,则表内默认的license必然是错误的。电能表一旦判定表内license不合法,有效时间过后电能表停止运行,避免程序问题造成损失。

本发明所采用的技术方案如下:

一种电能表程序的现场保护方法,包括以下步骤:

步骤1、将计算license的算法分别内嵌到上位机软件和电能表程序中,为防止算法泄露,算法分别封装成上位机软件和电能表可运行的库函数,且上位机软件和电能表中运行的库函数分别授权给不同权限的人员使用,提高安全性能;

步骤2、电能表获取与程序编译文件相关的若干个特征值,并通过算法计算得到codeid(codeid是经过算法运算后若干个字节的十六进制整数);

步骤3、上位机软件根据该codeid,通过算法计算得到固定长度字节license;

步骤4、将得到的license下载到表内的license结构体中,并重新编译电能表程序;

步骤5、编译成功的程序便是合法程序,可以下载到表内运行;

步骤6、电能表运行起来后,调用库函数中的校验模块判定电能表的合法性(即:表内license与计算得到的license是否一致),如果合法则正常运行,如果不合法则在有效时间过后停止运行。

本发明的有益效果:

1)该方法可以增强电能表程序运行的合法性,计算license的上位机软件由核心人员管理维护,现场电能表如果程序被重新下载,则因无法获取license,电能表会进入debug运行模式,有效时间过后会停止运行。

2)该方法既保证了程序下发的合法性,也保证了程序被篡改后电能表能够及时作出反应,避免造成计量或是扣费错误,进而保证了电能表的稳定性。

3)相比较于其他程序现场保护方法,该方法更适用于类似电能表的嵌入式领域。针对嵌入式系统要求运行快、资源占用率小的特点,该方法简便有效,几乎不占用cpu运行时间,既能保证电能表的运行效率,也能保证程序的合法性。

附图说明:

图1是codeid计算流程图;

图2是license校验及计算流程图。

具体实施方式

下面结合附图,具体说明本发明的实施方式。

一种电能表程序的现场保护方法,包括以下步骤:

步骤1、将计算license的算法(该算法是步骤2到步骤3的中描述算法的统称)分别内嵌到上位机软件和电能表程序中,算法分别封装成上位机软件和电能表可运行的库函数。

步骤2、电能表获取与程序编译文件相关的若干个特征值,本实施例中将电能表获取的与程序编译文件相关的4个特征值的数据存入verify_addr(verify_addr是一种计算codeid所需的特征值数据的存放位置,属于c语言中规定的局部变量)数组中,这4个特征值分别为芯片id、选项字节、程序结束地址、保护区结束地址,通过算法计算得到codeid。如果单纯地把verify_addr当成codeid,在verify_addr被泄露后容易造成license的机密性降低。该算法增强了codeid的隐蔽性,如图1所示,是codeid计算流程图。具体实现代码为:

步骤3、上位机软件获取codeid,通过算法计算得到10字节license,该算法的多重复杂运算可以保证license不会被破解。该算法在license的生成过程中有动态i变量参与运算,与其他常用算法相比有较高可靠性。具体实现代码为:

步骤4、将得到的10字节license复制到表内的license结构体中,并重新编译电能表程序。

步骤5、编译成功的程序便是合法程序,可以下载到表内运行。

步骤6、电能表运行起来后,调用库函数中的校验模块判定电能表的合法性。如图2所示,是license校验及计算流程图。电能表运行起来后判定表内license与计算得到的license是否一致,如果一致则正常运行,如果不一致则在电能表启动时显示“debug”字样3秒,程序进入debug(debug是一种电能表运行模式,在此模式下电能表的功能受限制且正常运行时间有限)模式,待程序运行1天的有效时间后停止运行,否则,程序进入正常运行模式。

本实施例中,int8u指该系统软件代码中的数据类型,表示无符号8位整型。文中代码所涉及的其他英文单词,均为其在业界的标准技术含义。



技术特征:

技术总结
本发明涉及一种电能表程序的现场保护方法,1、将计算License的算法分别内嵌到上位机软件和电能表程序中;2、通过算法计算得到CodeID;3、上位机软件根据该CodeID,通过算法计算得到固定长度字节License;4、将得到的License下载到表内的License结构体中,并重新编译电能表程序;5、编译成功的程序下载到表内运行;6、电能表运行起来后,调用库函数中的校验模块判定电能表的合法性,如果合法则正常运行,如果不合法则在有效时间过后停止运行。本发明可以增强电能表程序运行的合法性,既保证了程序下发的合法性,也保证了程序被篡改后电能表能够及时作出反应,避免造成计量或是扣费错误,进而保证了电能表的稳定性。

技术研发人员:徐龙剑;王强;徐法格;于光兴;徐健
受保护的技术使用者:积成电子股份有限公司
技术研发日:2018.12.10
技术公布日:2019.04.19
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1