一种半离线环境下使用时效性密码访问智能设备的方法与流程

文档序号:21081738发布日期:2020-06-12 16:35阅读:323来源:国知局
一种半离线环境下使用时效性密码访问智能设备的方法与流程

本发明属于移动互联网与智能设备技术领域,提供一种半离线环境下使用时效性密码访问智能设备的方法。具体涉及移动互联网环境下对智能设备的权限访问控制。



背景技术:

随着移动互联网和物联网的快速普及,智能设备被广泛使用在各行各业当中。这些智能设备在工作过程中,往往需要同服务器进行通讯以完成数据交换,但由于物理条件限制,很多智能设备难以保证随时可以与服务器进行通讯,从而对使用者的身份识别带来困难。当用户对智能设备输入身份验证信息时,智能设备只能通过本地缓存的数据来完成验证,无法保证实时性和安全性。例如如果服务器为某台智能设备分配了一个新用户,在这个用户的信息被同步到智能设备端之前,该用户是无法认证成功的。而当这个用户在服务器端被删除,同样,在被删除的指令被同步到智能设备之前,这个用户仍然可以登录此设备。

传统的离线设备可以通过在设备中预设密码的方法来进行验证,但对于当今的智能设备,往往使用者的权限只是临时分配一小段时间的,一个永久不变的密码完全丧失了安全性。还有一种常见的解决方案是通过内置密码生成器或其它预置某种规则的硬件,根据预置的某种规则来生成单次使用的不可逆的密码,该密码使用一次后即告失效,当需要授权给某用户时即从服务器根据规则计算出密码给予用户。由于密码生成器往往和时钟或序列号挂钩,密码必须要即得即用,此种方案欠缺灵活性,只适合于单次实时验证的场景。

在部分场景中,人们希望智能设备在长期离线的状态下仍然能提供时效性身份识别的能力,例如酒店的智能门锁,当顾客入住时分配密码,而当顾客退房时密码失效。在这类场景中,往往不仅要求智能设备对密码具有时效性判断,还要求:1)密码不能过长导致用户记忆与使用困难;2)密码具备一定安全性不易被暴力破解。3)不能大幅增加智能设备的成本或功耗。

本文明公开了满足上述条件的一种使用时效性密码访问智能设备的方法。本方法要求该智能设备是半离线状态,即该设备只在必要时可以通过某种通信渠道与服务器同步信息,在此前提下即可达到上述场景的要求。



技术实现要素:

本发明目的在于提供一种半离线环境下使用时效性密码访问智能设备的方法,将本方法应用到智能设备与服务器连接的物联网环境中,即可实现在半离线环境下,对智能设备产生时效性密码的目标。

为了达到上述目标,本发明通过以下技术方案进行实现:

一种半离线环境下使用时效性密码访问智能设备的方法,该方法需在智能设备中添加一个时钟芯片,使智能设备在离线状态下保持与服务器的时钟同步,同时在智能设备中和服务器端维护三个值<年份基准值、密钥、日内偏移值>,当需要产生时效性密码时,在服务器端将有效时间按规则编码,加上密钥的签名组装成为不超过指定长度的密码,智能设备在收到此密码输入后,先使用密钥验证签名,再将密码解密得出有效时间的值,最后比较芯片当前时间与此有效时间完成验证。

对有效时间t进行编码时,编码规则如下:分别编码有效时间t的年份、月份和日期值,并将之转变为二进制的比特串再连接起来;有效时间的编码格式为“年份”加“月份”加“日期”,其中,年份的值域为0到15,月份为1到12,日期为1到31,有效时间编码后的比特串长度不超过13;即年份和月份不超过4比特长,日期不超过5比特长。

为了控制密码的长度,月份和日期的值能够直接转变为4位和5位的比特串;对年份的编码采用基准值加偏移量,基准值同时存储在智能设备端与服务器端,编码时只编入0到15的偏移量。

为了保证密码的安全,对有效时间比特串进行签名,签名是使用预先同步好的密钥对有效时间比特串进行哈希运算,再从运算结果中截固定长度的比特串作为签名比特串,截取的签名比特串长度可以视场景需求而定。

最后,将有效时间的比特串嵌入签名比特串,形成密码比特串,该密码比特串的十进制整数值即是最终密码。。

为了获得更高的安全性,本方法在将有效时间比特串嵌入签名比特串形成最终密码时,根据签名的前若干个比特的整型数值来决定有效时间比特串的嵌入位置。这使得时间比特串在整个编码比特串中的位置不可预知,降低了被暴力破解的风险。

由于受长度限制,编码的有效时间只能精确到日期。如果密码的有效时间需要与日内某个时间对齐(例如酒店每天中午12点前退房),则本方法通过在服务器端和智能设备中维护的日内偏移值来进行校正,具体描述如下:

本方法在服务器端和智能设备中维护一个一致的日内偏移值,当智能设备接收到验证密码并使用密钥验签通过后,将解密出来的有效时间加上日内偏移值后,得到最终有效时间,再通过检查时钟芯片中的当前时间和最终有效时间的值来完成验证,具体实现过程如下:

当智能设备接收到验证密码后,第一步是将验证密码分离成比特串和签名比特串;先将验证密码转化为密码比特串,根据密码比特串的前m个比特的十进制值计算出比特串的嵌入位置,将从该位置起的n位提取出来即是比特串,剩余的部分即是签名比特串;

第二步,用本地缓存的密钥k对比特串签名,得到签名s′,将签名s′转换成比特串,从固定位置开始,比较签名比特串是否与签名s′完全相等,如果完全相等,则签名验证通过;否则签名验证失败,拒绝用户登录;

第三步,将比特串解码成年、月、日形式的时间值,再加上本地存储的日内偏移量,得到最终有效时间t;

第四步,读取时钟芯片中的当前时间,和最终有效时间t比较,若最终有效时间t比当前时间大,则说明当前时间在有效期内,用户验证通过;否则说明此密码的时效已经过期,用户验证失败。

当以下情况发生时,本方法需要智能设备和服务器再次同步信息,以确保方法正常可行:

1)智能设备掉电,时间芯片失准时;

2)智能设备的日内偏移值需要调整时;

3)智能设备的密钥需要更换时;

4)智能设备的年度基准值需要调整时。

在绝大多数场景中,以上事件都是小概率事件,一次同步即可保证数年内此方法均可以正常使用。

本发明有益效果如下:

本发明解决了在半离线环境下需要使用时效性密码访问智能设备的需求。智能设备的硬件只需要增加一个价格非常便宜的时钟芯片,对成本影响很小。智能设备在绝大多数时间内不需要保证与服务器的连接,在必要时可以通过管理人员的手机与服务器同步数据,同步后即可使用很长时间。基本满足绝大多数场景中的正常业务需求。

附图说明

图1是方法应用环境示意图。

图2是方法的服务端密码计算流程图。

图3是方法的流程图。

具体实施方式

图1给出本方法的应用环境示意图。系统中的智能设备本身与服务器无需保证稳定可靠的连接。当必须要同步数据时,可以通过管理人员的手机靠近设备去完成通信。当用户需要登录设备进行身份验证时,用户连接到服务器获取一个时限密码,并使用智能设备上的键盘输入此密码完成登录。

图2给出本方法的服务器端密码计算流程图。在应用本方法之前,智能设备和服务器已经同步好以下数据:年份基准值yb、密钥k、日内偏移值dv。其中,yb是一个整数值,代表年份的基准数值,例如2019;k是用于签名的密钥串,可以采用des/rsa等成熟的密码技术或者适合于嵌入式环境的哈希算法;dv也是一个整数值,代表时间在日内的日内偏移值dv,可以视应用的需求取精度到小时/分/秒。

当用户向服务器请求一个时限密码时,服务器按如下流程进行:

第一步,对目标时间t进行编码,编码规则为:分别编码目标时间t的年份、月份和日期值,将之转变为二进制的比特串再连接起来,得到比特串bt,其中,年份的值域为0到15,月份为1到12,日期为1到31,有效时间编码后的比特串长度不超过13。即年份和月份不超过4比特长,日期不超过5比特长。

月份和日期的值可以直接转变为4位和5位的比特串。为了控制密码的长度,对年份的编码采用基准值加偏移量,基准值dv同时存储在智能设备端与服务器端,编码时只编入0到15的偏移量。例如年份基准值为2019年,偏移量为4,则代表2023年,有效时间2023年8月14日在编码后的二进制值即为100100001110。

第二步,对比特串bt使用k签名,得到签名s。

第三步,将签名s转换成比特串,并从固定位置截取长度为n的子串bs。这个固定位置是和智能设备事先约好的,n可以根据安全性需求进行选择,在安全性要求高的场景中,可以多截取几位,这样形成的最终密码长度较长,反之少截取几位,形成的最终密码长度较短。

第四步,将比特串bt嵌入子串bs,形成最终的密码比特串bp。在这一步过程中,利用bs的前m个比特的十进制值来决定bt的嵌入位置。若前m个比特的十进制值小于等于m,则bt嵌入到bs的第m+1位起;若前m个比特的十进制值大于bs的长度n,则bs被拼接到bt的尾部;否则bt被嵌入到bs的第m位起。由于哈希算法不可逆,bs无法预知,采用此步骤后bt的嵌入位置同样无法预知,因此无法通过只暴力破解bs部分来猜测密码,提高了方法的安全性。

第五步,将密码比特串bp转化成十进制整数再传给用户,这个值就是最终密码。

设bt的长度n等于13,此时bp的长度为26,转成10进制整型数值的长度不超过8位,便于记忆和使用。同时密码的分布密度低于万分之一,基本无法通过暴力尝试进行破解。

图3给出了智能设备验证时效密码的过程。当智能设备接收到密码后,第一步是将之分离成时间比特串bt和签名比特串bs。具体计算方法是服务器端步骤四的逆过程,先将密码转化为比特串bp,根据bp的前m个比特的十进制值计算出bt的位置,将从该位置起的n位提取出来即是bt,剩余的部分即是bs。若长度n等于13,则将从该位置起的13位提取出来即是bt。

第二步,用本地缓存的密钥k对bt签名,得到签名s,将s转换成比特串,从固定位置开始,比较bs是否与s完全相等,如果完全相等,则签名验证通过;否则签名验证失败,拒绝用户登录。

第三步,将bt解码成年、月、日形式的时间值,再加上本地存储的日内偏移量dv,得到最终有效时间t。

解码过程是服务器端步骤一的逆过程,将13位的bt分解成4位的年份值、4位的月份值和5位的日期值,转换成10进制数后,年份值再加上本地存储的年度基准值yb,得到最终有效时间的日期值。这个值再加上本地存储的日内偏移量dv,得到最终的有效时间t。

第四步,读取时钟芯片中的当前时间,和t比较,若t比当前时间大,则说明当前时间在有效期内,用户验证通过;否则说明此密码的时效已经过期,用户验证失败。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1