一种精简的基于时间同步的动态口令生成方法与流程

文档序号:21361106发布日期:2020-07-04 04:34阅读:681来源:国知局
本发明涉及电力信息系统
技术领域
,特别是指一种精简的基于时间同步的动态口令生成方法。
背景技术
:电力系统中,当主控单元需要对电表进行预付费充值,为了安全起见,在充值之前,主控单元必须先发送一串基于当前时间计算出来的哈希值(动态口令),电表收到动态口令后,也会基于当前时间计算出来一个动态口令,如果两个口令一致,那么主控单元就会获得一次授权,实施一次充值操作。采用动态口令是一种非常好的解决方案,密码随时间动态变化,就算密码被盗了,也会很快失效,因此它是一种高安全性和高可靠性的身份认证体系。基于时间同步的一次性口令算法totp(time-basedone-timepassword)本身是非常成熟的技术。我们基于嵌入式系统,设计了一种更加精简的方法,从而提高电力测控系统数据传递的安全性,避免误操作和非法入侵。技术实现要素:本发明提出一种精简的基于时间同步的动态口令生成方法,解决了现有技术中的问题。本发明的技术方案是这样实现的:一种精简的基于时间同步的动态口令生成方法,包括以下步骤:步骤1:选取时间作为动态的变化量,保证客户端与服务器端的时间同步;步骤2:约定哈希函数,采用循环冗余校验crc32,计算的到一个32比特的动态口令;步骤3:把crc32的多项式系数作为双方约定的秘钥,把所述多项式生成的查询数组做成lib文件,供双方使用;步骤4:某电表的序列号由sn1、sn2共四个字节组成,4g主控单元通过modbus协议查询序列号寄存器,获取序列号的值;步骤5:获取时间字节,包括日期的年、月、日各占一个字节长度,时间的小时、分钟各占一个字节长度,秒不参与计算;步骤6:将步骤4、5获得字节组装成报文;步骤7:计算基于时间的动态口令,计算步骤6组装报文的crc32;步骤8:通过约定协议,发送基于时间的动态口令totp。作为优选,所述步骤8中,4g主控单元要对电表进行充值,得通过扩展指令,把步骤7计算出来的totp发给电表,以获取一次充值授权,电表会计算3个totp,把分钟加1,减1的情况也考虑进去,只要与这个三个totp中的一个吻合,就认为主机发过来的totp是正确的,数据域返回0x0001给主控单元,通知主控单元已经获得充值一次授权。作为优选,所述电表负责验证主控单元发送的动态口令,并且自动更新授权状态,动态口令1分钟后自动失效。本发明的有益效果在于:提高电力测控系统数据传递的安全性,避免误操作和非法入侵。具体实施方式下面对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本实施例提供一种精简的基于时间同步的动态口令生成方法,包括以下步骤:步骤1:选取时间作为动态的变化量,保证客户端与服务器端的时间同步,否则算出来的口令就不一致了,因为是精简方法,所以时间只用到年月日时分,秒不参与运算;步骤2:约定哈希函数,采用循环冗余校验crc32,本质上,crc也是一种哈希算法,通过查表法,可以快速计算得到一个32比特的动态口令,4个字节,长度合适,运算效率高;步骤3:把crc32的多项式系数作为双方约定的秘钥,把所述多项式生成的查询数组做成lib文件,供双方使用;为了减少crc32运算输出碰撞概率,我们把设备序列号也作为运算输入,因此参与totp的输入由以下内容组成:计算内容序列号日期时间长度(字节数)432步骤4:某电表的序列号由sn1、sn2共四个字节组成,4g主控单元通过modbus协议查询序列号寄存器,获取序列号的值;序列号寄存器地址长度(字节)示例sn10x000020x1950sn20x000120x0001步骤5:获取时间字节,包括日期的年、月、日各占一个字节长度,时间的小时、分钟各占一个字节长度,秒不参与计算;日期长度(字节)示例sdate.year119(表示2019年)sdate.month112sdate.date128时间长度(字节)示例stime.hours116stime.minutes118stime.seconds1不参与计算步骤6:将步骤4、5获得字节组装成报文;报文数据内容示例ucdata[0]sn1高字节0x19ucdata[1]sn1低字节0x50ucdata[2]sn2高字节0x00ucdata[3]sn2低字节0x01ucdata[4]sdate.year19(0x13)ucdata[5]sdate.month12(0x0c)ucdata[6]sdate.date28(0x1c)ucdata[7]stime.hours16(0x10)ucdata[8]stime.minutes18(0x12)步骤7:计算基于时间的动态口令(uwtotp),计算组装报文ucdata的crc32(多项式系数约定为0x04c11db7)。uwtotp=uwcalccrc32(ucdata,9);crc32算法uwcalccrc32源代码见附录1。步骤8:通过约定协议,发送基于时间的动态口令totp,4g主控单元要对电表进行充值,得通过扩展指令,把步骤7计算出来的totp发给电表,以获取一次充值授权,电表会计算3个totp,把分钟加1,减1的情况也考虑进去,只要与这个三个totp中的一个吻合,就认为主机发过来的totp是正确的,数据域返回0x0001给主控单元,通知主控单元已经获得充值一次授权,电表负责验证主控单元发送的动态口令,并且自动更新授权状态,动态口令1分钟后自动失效。以上仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。附录1crc32计算方法当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1