首页> 中国专利> 一种基于HMAC算法的电能表加密通讯方法

一种基于HMAC算法的电能表加密通讯方法

摘要

本发明公开了一种基于HMAC算法的电能表加密通讯方法和系统,所述方法包括如下步骤:上位机和电能表建立通讯链接;电能表生成随机数并上传给上位机;上位机根据获取的随机数采用HMAC算法计算生成签名;电能表验证签名用于建立和上位机的数据交互,所述方法采用HMAC算法生成加密的签名值,可提高电能表通讯的可靠性,不易被破解,所述方法无需在电能表终端设置加密芯片,只要设置程序即可实现,可降低电能表的制造和维护成本。

著录项

说明书

技术领域

本发明涉及电能表领域,特别涉及一种基于HMAC算法的电能表加密通讯方法。

背景技术

现有的智能电能表上一般设有近红外、RS485等通讯端口与上位机等通讯软件进行数据交互,其中上位机指的是电能表厂家开发的与电能表配套使用的通讯软件,为电力企业提供能够管理和读取电能表数据的接口。目前现有的电能表虽然都已设有密码保护功能,要求上位机在通讯时必须输入正确的密码,否则无法进行通讯,在一定程度上确保了电能表数据的可靠性和安全性,从而避免电能表数据的盗取和篡改;但是现有的密码保护机制一般设置为固定密码,在多次重试后被破解的风险很大,安全性较低。

发明内容

本发明其中一个发明目的在于提供一种基于HMAC算法的电能表加密通讯方法,所述方法采用HMAC算法生成加密的签名值,可提高电能表通讯的可靠性,不易被破解。

本发明另一个发明目的在于提供一种基于HMAC算法的电能表加密通讯方法,所述方法无需在电能表终端设置加密芯片,只要设置程序即可实现,可降低电能表的制造和维护成本。

本发明另一个发明目的在于提供一种基于HMAC算法的电能表加密通讯方法,所述方法根据电能表自身的时钟生成随机数,建立和上位机的通讯链接后将上传随机数采用HMAC算法进行加密计算获取所述签名值,签名值在随机数不同的情况下是不同的,可避免采用重试的方式破解签名值。

为了实现至少一个上述发明目的,本发明进一步提供一种基于HMAC算法的电能表加密通讯方法,所述方法包括如下步骤:

上位机和电能表建立通讯链接;

电能表生成随机数并上传给上位机;

上位机根据获取的随机数采用HMAC算法计算生成签名;

电能表验证签名用于建立和上位机的数据交互。

根据本发明其中一个较佳实施例,所述电能表获取电能表内实时时钟,并根据所述实时时钟生成所述随机数。

根据本发明其中一个较佳实施例,所述随机数占据32个字节内存。

根据本发明其中一个较佳实施例,判断上位机和电能表之间的通讯链接状况,若保持正常链接,则电能表向所述上位机发送随机数。

根据本发明其中一个较佳实施例,电能表内设置第一时间阈值,若检测到上位机和电能表的断连时间大于所述第一时间阈值,则上位机向所述电能表发送请求重新建立链接。

根据本发明其中一个较佳实施例,当电能表验证签名值成功后,所述电能表和上位机进行数据交互,电能表将自身检测的数据上传给上位机,上位机向所述电能表发送检测指令。

根据本发明其中一个较佳实施例,所述随机数的获取方法包括:

定时器高字节取反后将数值填充第1字节;

定时器高字节异或实时时钟的秒值填充第2字节;

将实时时钟的秒值填充第3字节;

定时器高字节与实时时钟的秒值取反相加填充第4字节;

将上述4个字节循环7次填充形成32个字节的随机数。

根据本发明其中一个较佳实施例,单个随机数根据定时器获取相同的实时时钟生成,电能表保存该随机数,并同时向上位机上传随机数。

根据本发明其中一个较佳实施例,上位机根据获取的随机数和电能表内部通讯密钥采用HMAC算法计算生成具有哈希值的签名,并下发给电能表,电能表获取签名后计算存储于电能表自身的随机数和通讯密钥计算哈希值,并与上位机下发的签名进行比对,若哈希值相同则签名成功。

为了实现至少一个上述发明目的,本发明进一步提供一种基于HMAC算法的电能表加密通讯系统,所述系统采用上述一种基于HMAC算法的电能表加密通讯方法。

附图说明

图1显示的是本发明一种基于HMAC算法的电能表加密通讯方法。

具体实施方式

以下描述用于揭露本发明以使本领域技术人员能够实现本发明。以下描述中的优选实施例只作为举例,本领域技术人员可以想到其他显而易见的变型。在以下描述中界定的本发明的基本原理可以应用于其他实施方案、变形方案、改进方案、等同方案以及没有背离本发明的精神和范围的其他技术方案。

可以理解的是,术语“一”应理解为“至少一”或“一个或多个”,即在一个实施例中,一个元件的数量可以为一个,而在另外的实施例中,该元件的数量可以为多个,术语“一”不能理解为对数量的限制。

请结合图1显示的一种基于HMAC算法的电能表加密通讯方法,所述方法无需在电能表设置加密芯片,只要通过软件控制程序即可完成可靠的加密通讯,可减少电能表的通讯成本。

具体的,首先通过上位机和电能表建立通讯连接,上位机和电表可采用包括但不仅限于TCP通讯协议建立通讯链接,其中电能表自身具有实时时钟,所述电能表将根据所述实时时钟生成用于HMAC算法加密的随机数,所述随机数的生成方法包括如下步骤:

上位机向电能表下发一个随机数请求,电能表定时器获取当前的时钟时钟信息,所述实时时钟信息包括年、月、日、时、分、秒,电能表内部预留32个字节的存储空间,对定时器高字节取反,将取反的数值填充第1字节,进一步获取定时器高字节异或实时时钟的秒值,将该秒值存储于第2字节中;获取实时时钟的秒值,并将实时时钟的秒值存储于第3字节中;进一步获取定时器高字节与实时时钟秒值分别取反后的相加值,将该相加值保存于第4字节中;进一步根据上述4个字节的数值填充方式循环7次,填充剩余的存储空间,用于形成32个字节的随机数,所述随机数存储于电能表的RAM中,并将所述随机数上传至上位机。

所述上位机在获取随机数后,根据随机数和预先保存的电能表通讯密钥采用HMAC算法对所述随机数和通讯密钥进行加密,形成签名,所述签名中具所述随机数的哈希值,该哈希值用于验证数据包是否合法,若合法则所述电能表和所述上位机进行数据交互。

所述电能表获取上位机发送的数据包,该数据包具有上位机生成的签名,所述电能表获取签名中的哈希值,并且采用HMAC算法计算电能表内部存储的随机数和通讯密钥,生成哈希值,对比数据包中签名的哈希值,若哈希值相同,则判定该签名为合法签名,电能表或上位机可执行数据包中的指令。若哈希值不同,则判断该数据包为非法数据包,不再执行该数据包的相关指令。

在本发明其中一个较佳实施例中,上位机监控和电能表的通讯链接状况,所述电表可通过包括但不仅限于向上位机发送心跳数据的方式,用于上位机监控和电能表之间的通讯连接。所述上位机可设置第一时间阈值,当上位机未接收到电能表发送的心跳数据大于所述第一时间阈值时,可判断该电能表和上位机断连,所述上位机在电能表断连后向所述电能表重新发送链接请求,用于重新建立链接。

需要说明的是所述通讯密钥存储于电能表内部非易失性存储器,比如EEPROM中,哈希值是通过HMAC算法计算一体化的随机数和通讯密钥获取,验证签名时电能表通过调用函数接口实现,所述函数接口为:

bool hmac(const uint8_t*p_data,const uint16_t n_bytes,const uint8_t*p_mac,const uint8_t*p_key);

其中p_data是根据电表内部时钟获取的32个字节的随机数,n_bytes代表随机数长度,p_mac是上位计算机的签名值,p_key为电能表内部存储的通讯密钥,该密钥长度为32个字节,若该函数接口验证后的返回值为1,则表示上位机和电能表之间建立的通讯密码是正确的,对应的数据包为合法数据包,可基于该合法数据包执行相关指令。若该函数接口验证后的返回值为零,则表示上位机和电能表之间建立的通讯密码错误,电能表或上位机不再执行数据包中的指令。

特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理单元(CPU)执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线段、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线段的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线段、电线段、光缆、RF等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

本领域的技术人员应理解,上述描述及附图中所示的本发明的实施例只作为举例而并不限制本发明,本发明的目的已经完整并有效地实现,本发明的功能及结构原理已在实施例中展示和说明,在没有背离所述原理下,本发明的实施方式可以有任何变形或修改。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号