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

技术编号:28383339 阅读:28 留言:0更新日期:2021-05-08 00:11
本发明专利技术公开了一种基于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算法计算一体化的随机数和通讯密钥获取,验证签名时电能表通过调用函数接口实现,所述函数接口为:boolhmac(constuint8_t*p_data,constuint16_tn_bytes,constuint8_t*p_mac,constuint8_t*p_key);其中p_data是根据电表内部时钟获取的32个字节的随机数,n_bytes代表随机数长度,p_mac是本文档来自技高网...

【技术保护点】
1.一种基于HMAC算法的电能表加密通讯方法,其特征在于,所述方法包括如下步骤:/n上位机和电能表建立通讯链接;/n电能表生成随机数并上传给上位机;/n上位机根据获取的随机数采用HMAC算法计算生成签名;/n电能表验证签名用于建立和上位机的数据交互。/n

【技术特征摘要】
1.一种基于HMAC算法的电能表加密通讯方法,其特征在于,所述方法包括如下步骤:
上位机和电能表建立通讯链接;
电能表生成随机数并上传给上位机;
上位机根据获取的随机数采用HMAC算法计算生成签名;
电能表验证签名用于建立和上位机的数据交互。


2.根据权利要求1所述的一种基于HMAC算法的电能表加密通讯方法,其特征在于,所述电能表获取电能表内实时时钟,并根据所述实时时钟生成所述随机数。


3.根据权利要求1所述的一种基于HMAC算法的电能表加密通讯方法,其特征在于,所述随机数占据32个字节内存。


4.根据权利要求1所述的一种基于HMAC算法的电能表加密通讯方法,其特征在于,判断上位机和电能表之间的通讯链接状况,若保持正常链接,则电能表向所述上位机发送随机数。


5.根据权利要求1所述的一种基于HMAC算法的电能表加密通讯方法,其特征在于,电能表内设置第一时间阈值,若检测到上位机和电能表的断连时间大于所述第一时间阈值,则上位机向所述电能表发送请求重新建立链接。


6.根据权利要求1所述的一种基于HMAC算法的电能表加密通讯方法,其特征在于,当电能表验证签名值成功后,所述电能表和上位机进行数...

【专利技术属性】
技术研发人员:孟卓王冰洁郭姗姗李双全朱程鹏
申请(专利权)人:杭州海兴电力科技股份有限公司宁波恒力达科技有限公司南京海兴电网技术有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1