解锁方法、实现解锁的设备及计算机可读介质
技术领域
本申请涉及信息技术领域,尤其涉及一种解锁方法、实现解锁的设备及计算机可读介质。
背景技术
智能门锁目前应用已经越多,其中一种操作智能门锁的方式是使用数字钥匙。具体方式是用户通过移动设备访问智能门锁服务器,在智能门锁服务器对用户身份进行验证后,下发一把数字钥匙存储在用户移动设备中。当需要开锁的时候,用户移动设备通过近场通讯技术(如NFC、蓝牙等)方式将数字钥匙发送给智能门锁,由智能门锁对其进行验证。如果验证通过,则智能门锁进行解锁。
在这种模式下,需要平衡数字钥匙的安全性和易用性。如果每次下发的数字钥匙只能使用一次就失效,则安全性可以得到大大提升,但用户每次开锁都需要重新申请一次钥匙,用户体验不好。但如果每次下发的数字钥匙可以使用多次,若在使用过程中被攻击者进行了中间人攻击,在近场传输信道中非法复制了该数字钥匙,则攻击者可能在数字钥匙的有效使用时间内通过该数字钥匙打开门锁,存在着较大的安全漏洞。由此可知,现有的解锁方案中无法在同时满足安全性和易用性。
申请内容
本申请的一个目的是提供一种解锁方法方案,用以解决现有解锁方案无法同时满足安全性和易用性的问题。
本申请实施例提供了一种在用户移动设备上实现的解锁方法,所述方法包括:
用户移动设备获取数字钥匙种子;
所述用户移动设备根据所述数字钥匙种子和对应于本次解锁操作的第一校验内容生成数字钥匙;
所述用户移动设备将所述数字钥匙发送至智能门锁,以使所述智能门锁对所述数字钥匙中的数字钥匙种子和第一校验内容进行验证,并在验证通过后进行解锁。
本申请实施例还提供了一种在智能门锁服务器上实现的解锁方法,所述方法包括:
智能门锁服务器生成数字钥匙种子,并将所述数字钥匙种子发送至用户移动设备,以使所述用户移动设备根据所述数字钥匙种子和对应于本次解锁操作的第一校验内容生成数字钥匙,并发送至智能门锁,由所述智能门锁对所述数字钥匙中的数字钥匙种子和第一校验内容进行验证,并在验证通过后进行解锁。
本申请实施例还提供了一种在智能门锁上实现的解锁方法,所述方法包括:
智能门锁从用户移动设备接收数字钥匙,其中,所述数字钥匙由所述用户移动设备根据所述数字钥匙种子和对应于本次解锁操作的第一校验内容生成数字钥匙;
所述智能门锁对所述数字钥匙中的数字钥匙种子和第一校验内容进行验证,并在验证通过后进行解锁。
基于本申请的另一方面,还提供了一种用于实现解锁的用户移动设备,该用户移动设备包括:
种子获取模块,用于获取数字钥匙种子;
钥匙生成模块,用于根据所述数字钥匙种子和对应于本次解锁操作的第一校验内容生成数字钥匙;
数据发送模块,用于将所述数字钥匙发送至智能门锁,以使所述智能门锁对所述数字钥匙中的数字钥匙种子和第一校验内容进行验证,并在验证通过后进行解锁。
本申请实施例还提供了一种用于实现解锁的智能门锁服务器,该智能门锁服务器包括:
种子生成模块,用于生成数字钥匙种子;
数据收发模块,用于将所述数字钥匙种子发送至用户移动设备,以使所述用户移动设备根据所述数字钥匙种子和对应于本次解锁操作的第一校验内容生成数字钥匙,并发送至智能门锁,由所述智能门锁对所述数字钥匙中的数字钥匙种子和第一校验内容进行验证,并在验证通过后进行解锁。
本申请实施例还提供了一种用于实现解锁的智能门锁,该智能门锁包括:
数据收发模块,用于从用户移动设备接收数字钥匙,其中,所述数字钥匙由所述用户移动设备根据所述数字钥匙种子和对应于本次解锁操作的第一校验内容生成数字钥匙;
验证处理模块,用于对所述数字钥匙中的数字钥匙种子和第一校验内容进行验证;
解锁动作模块,用于在验证通过后进行解锁。
此外,本申请的一些实施例还提供了一种计算设备,该设备包括用于存储计算机程序指令的存储器和用于执行计算机程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发所述设备执行所述的解锁方法。
本申请的另一些实施例还提供了一种计算机可读介质,其上存储有计算机程序指令,所述计算机可读指令可被处理器执行以实现所述的解锁方法。
本申请实施例提供的方案中,用户移动设备可以在获取数字钥匙种子后,使用数字钥匙种子和对应于本次解锁操作的第一校验数据,来多次生成数字钥匙,然后发送至智能门锁进行验证后解锁,由于数字钥匙中包含仅对应于本次解锁操作的第一校验数据,因此即使被攻击者获取到数字钥匙,攻击者无法使用该数字钥匙再次进行解锁,同时由于数字钥匙种子可以使用多次,无需在每次解锁时连接智能门锁服务器获取数字钥匙,因此同时满足了安全性和易用性。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1为本申请实施例中实现解锁时所涉及的多方设备的示意图;
图2为本申请实施例中智能门锁对数字钥匙进行验证时的处理流程图;
图3为采用本申请实施提供的解锁方案实现解锁过程中各方设备之间的交互流程图;
图4为本申请实施中一种数字钥匙的数据构成示意图;
图5本申请实施例提供的可用于实现解锁的计算设备的结构示意图;
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的装置或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
本申请实施例提供了解锁方法,该方法使用数字钥匙种子来多次生成数字钥匙,由于数字钥匙中包含仅对应于本次解锁操作的第一校验数据,因此即使被攻击者获取到数字钥匙,攻击者无法使用该数字钥匙再次进行解锁,同时由于数字钥匙种子可以使用多次,无需在每次解锁时连接智能门锁服务器获取数字钥匙,因此同时满足了安全性和易用性。
在实际场景中,可以基于如图1所示的多方设备之间的交互来实现解锁。图1中涉及的多方设备包括用户移动设备100、智能门锁200以及智能门锁服务器300。所述智能门锁服务器300用于生成数字钥匙种子,并将所述数字钥匙种子发送给用户移动设备使用。所述用户移动设备100在需要解锁时,根据获得的数字钥匙种子和对应于本次解锁操作的第一校验数据生成数字钥匙,然后生成的数字钥匙发送至智能门锁。而智能门锁200在从用户移动设备接收到数字钥匙后,对所述数字钥匙中的数字钥匙种子和第一校验数据进行验证,并在验证通过后进行解锁。
其中,所述用户移动设备可以是各类能够进行数据处理及收发的移动电子设备,例如手机、平板电脑、智能手表、智能手环、智能眼镜等设备;在实际场景中,也可以通过运行于用户移动设备的开锁应用程序,实现解锁方法中所涉及的数据处理和收发逻辑。智能门锁200可以是具有数据处理及收发功能,并且可以根据数据处理的结果控制门锁的设备,智能门锁服务器300包括但不限于如网络主机、单个网络服务器、多个网络服务器集或基于云计算的计算机集合等实现,可以用于实现设置闹钟时的部分处理功能。在此,云由基于云计算(Cloud Computing)的大量主机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟计算机。
为了提高解锁时的安全性,数字钥匙中包含的第一校验数据仅对应于本次解锁操作,即所述第一校验数据可以是与每一次解锁操作的特定参数相关,由此即使被攻击者获取到数字钥匙,攻击者无法使用该数字钥匙再次进行解锁。在本申请的一些实施例中,第一校验数据可以包括开锁计数信息,该开锁计数信息等于基于所述数字钥匙种子生成数字钥匙的次数。例如,当用户移动设备可以维护一个计数器,在获取到新的数字钥匙种子之后,可以将计数器将开锁计数信息初始化为0,每使用该数字钥匙种子生成一个数字钥匙时,该开锁计数信息都动态加1。
而智能门锁在基于该开锁计数信息进行验证的逻辑可以是:智能门锁可以保存前一次的解锁操作的开锁计数信息C1,在验证时将前一次解锁操作的开锁计数信息C1与本次解锁操作的开锁计数信息C2进行比较,若前一次解锁操作的开锁计数信息小于本次解锁操作的开锁计数信息,则验证通过,若前一次解锁操作的开锁计数信息不小于本次解锁操作的开锁计数信息,则未通过验证。
例如,智能门锁中保存的前一次的开锁计数信息C1为3,则表示是数字钥匙种子s1第3次被使用时所生成的数字钥匙k1-3,若该数字钥匙k1-3在使用(例如发送至智能门锁的过程中)时被攻击者获取,攻击者若直接使用该数字钥匙k1-3,将该数字钥匙k1-3发送至智能门锁试图再次解锁时,此时智能门锁通过解析收到的数字钥匙k1-3,发现本次解锁操作的开锁计数信息C2(即k1-3的开锁计数信息)为3。基于此时的C1和C2进行比较之后,发现C1=C2,未通过验证,不进行解锁。而在正常情况下,若用户在使用一次数字钥匙k1-3之后,需要再次解锁,会再次使用数字钥匙种子s1生成新的数字钥匙k1-4,该数字钥匙对应的开锁计数信息会在3的基础上加1,即为4。用户移动设备将数字钥匙k1-4发送至智能门锁之后,智能门锁通过解析收到的数字钥匙k1-4,发现本次解锁操作的开锁计数信息C2(即k1-4的开锁计数信息)为4,基于此时的C1和C2进行比较之后,发现C1<C2,通过验证,进行解锁。由此,本申请实施例提供的解锁方案利用对应于本次解锁操作的第一校验数据进行验证,提高了安全性。
在本申请的一些实施例中,用户移动设备可以从智能门锁服务器获取数字钥匙种子,此外也可以采用其它方式获得数字钥匙种子,例如由用户移动设备直接生成数字钥匙种子等。用户移动设备在从智能门锁服务器获取数字钥匙种子时,可以采用如下的方式:由用户移动设备向智能门锁服务器发送申请请求,智能门锁服务器根据申请请求生成数字钥匙种子,并将其提供给用户移动设备。
在实际场景中,当用户首次使用用户移动设备解锁智能门锁之前,需要先申请数字钥匙种子,申请时由用户移动设备向智能门锁服务器发送申请请求,所述申请请求中可以至少用户身份信息和用户公钥。而所述智能门锁服务器可以根据所述申请请求,生成与所述用户身份信息、所述用户公钥相关的数字钥匙种子,其中,用户公钥可以由用户移动设备生成,例如在申请之前用户公钥即可生成一组密钥对,该密钥对包括了用户公钥和用户私钥,而用户身份信息可以与数字钥匙种子绑定,提高安全性。
此外,为了进一步提高安全性,智能门锁服务器在根据所述申请请求,生成与所述用户身份信息、所述用户公钥相关的数字钥匙种子之前,还可以对用户身份信息进行验证。例如,当用户身份信息包括用户的手机号时,智能门锁服务器可以在收到申请请求时,向用户的手机号码发送验证码短信,要求用户输入验证码,由此完成用户身份信息的验证。
在本申请的一些实施例中,可以利用数字签名的方式进行验证,从而提高安全性。由此,所述数字钥匙中的数据可以包括第一待签名数据以及使用用户私钥对所述第一待签名数据进行签名所获取的第一签名。所述第一待签名数据包括所述数字钥匙种子、对应于本次解锁操作的第一校验数据作和第一动态参数,第一动态参数可以是在生成数字钥匙时可以获取到的数据元素,例如可以是生成数字钥匙时的时间戳、随机数等难以重复获取的参数,加入到第一校验数据之后,由于攻击者难以获知这些数据元素,可以提高攻击者进行重放攻击的难度。
在本实施例中,智能门锁对所述数字钥匙中的数字钥匙种子和第一校验数据进行验证,并在验证通过后进行解锁时,可以先对所述数字钥匙中的数字钥匙种子进行验证。在数字钥匙种子验证通过后,所述智能门锁使用用户公钥,对所述数字钥匙中的第一签名进行验证。进一步地,在第一签名验证通过后,所述智能门锁再对所述数字钥匙中的第一校验数据进行验证,并在验证通过后进行解锁。在实际场景中,所述智能门锁使用用户公钥,对所述数字钥匙中的第一签名进行验证时,会对使用用户公钥对第一签名进行解密,从而获得用户私钥加密的原文(即第一待签名数据),进而与数字钥匙中本身所携带的第一待签名数据进行比较,若完全一致,则说明第一签名验证通过。
此外,若用户移动设备用用户私钥处理第一待签名数据之前,对第一待签名数据进行过哈希计算,则智能门锁验证时获得的原文即为进行哈希计算后的摘要。此时,智能门锁需要对数字钥匙中本身所携带的第一待签名数据采用同样的哈希算法进行计算,获取到摘要之后,与通过用户公钥解密获得的摘要进行比较,若两者完全一致,则说明第一签名验证通过。
在本申请的一些实施例中,数字钥匙种子由智能门锁服务器生成,其中,所述数字钥匙种子中的数据可以包括第二待签名数据以及使用服务器私钥对所述第二待签名数据进行签名所获得的第二签名,所述第二待签名数据包括与用户身份信息、用户公钥相关的第二校验数据以及第二动态参数。第二校验数据与第一校验数据类似,同样是用于在解锁过程中进行验证的信息,由于包含第二校验数据的数字钥匙种子可以使用多次,因此,第二校验数据并非对应于当前的解锁操作,在数字钥匙种子的有效期内该第二校验数据始终有效。
在本实施例中,所述第二校验数据可以包括用户公钥、与用户身份信息绑定的种子标识和第二动态参数,其中,所述用户公钥与用户私钥匹配,种子标识与用户身份信息绑定,因此每个用户均具有唯一的用户公钥和种子标识,第二动态参数与第一动态参数类似,也可以是时间戳、随机数等难以重复获取的参数,加入到第二校验数据之后,可以用于提高攻击者进行重放攻击的难度。
基于本实施例中的第二校验数据,所述智能门锁对数字钥匙的验证过程可以包括:所述智能门锁使用服务器公钥,对数字钥匙种子的第二签名进行验证,对第二签名的验证过程方式可以参考第一签名,此处不再赘述。在第二签名验证通过后,所述智能门锁对所述数字钥匙种子的第二校验数据进行验证。在第二校验数据验证通过后,所述智能门锁对所述数字钥匙中的第一校验数据进行验证,并在验证通过后进行解锁。
结合前述实施例中对第一校验数据的验证过程,图2示出了本申请一些实施例中智能门锁对数字钥匙进行验证时的处理流程,包括以下验证步骤:
步骤S201,智能门锁使用服务器公钥,对数字钥匙种子的第二签名进行验证;
步骤S202,在验证通过后,智能门锁确认第二校验内容中的用户公钥,并对与用户身份信息绑定的种子标识进行验证。
步骤S203,在验证通过后,智能门锁使用用户公钥,对所述数字钥匙中的第一签名进行验证。
步骤S204,在验证通过后,智能门锁对所述数字钥匙中的第一校验内容进行验证,并在验证通过后进行解锁。在验证过程中,任意一步未验证通过,智能门锁均不会进行解锁。
此外,在本申请的另一些实施例中,所述第二校验内容中还可以包括种子有效时间,用以进一步提升本方案的安全性。所述种子有效时间用于表示数字钥匙种子的有效期限,因此,所述智能门锁进行解锁之前,会确认当前时间或者生成数字钥匙的时间处于种子有效时间内,当超出种子有效时间时,即使其它的验证均通过智能门锁也不会解锁。例如,可以将种子有效时间设定为生成后的一周,即该基于该数字钥匙种子所生成的所有数字钥匙,仅在数字钥匙种子生成后的一周有效,若超过一周,该数字钥匙种子所生成的数字钥匙均不可用于解锁,由此即使攻击者通过特定方式可以通过其它验证,也无法在超过种子有效时间之后成功开锁,进一步提高了方案的安全性。
在此,本领域技术人员应当理解,上述智能门锁对数字钥匙进行验证时的处理流程仅为举例,根据实际应用场景的需求也可以调整验证时的验证顺序,因此现有或今后出现的基于类似原理的其它验证形式如果能够适用于本申请,也应该包含在本申请的保护范围内,并以引用的形式包含于此。
图3示出了采用本申请实施提供的解锁方案实现解锁过程中各方设备之间的交互流程,且方案中数字钥匙中可以为如图4所示的数据构成。交互流程如下:
1、智能门锁中预置智能门锁服务器的服务器公钥,例如可以由智能门锁的厂家在智能门锁出厂时进行设置,或者由智能门锁服务器在智能门锁初始化或其它情况下洗啊啊发到智能门锁中。
2、用户通过用户移动设备上的应用程序申请数字钥匙种子,在该过程中应用程序可为用户生成一对用户密钥对,其中用户私钥只保存在用户移动设备中,用户公钥则在申请数字钥匙种子的过程中上传到智能门锁服务器。在用户申请数字钥匙种子时,智能门锁服务器会对用户身份信息进行验证,以确认用户的身份是否可以下发数字钥匙种子。
3、在用户身份信息验证通过后,智能门锁服务器会使用服务器私钥来生成数字钥匙种子。生成时,智能门锁服务器使用用户公钥、种子标识(用来标识数字钥匙种子,与用户身份信息绑定)、数字钥匙种子有效时间以及一些可能的动态参数(如生成时间戳等)等构成第二待签名数据,然后使用服务器私钥对这些待签名数据进行签名,获得第二签名,并将第二待签名数据和第二签名一起构成数字钥匙种子。
4、智能门锁将数字钥匙种子下发到用户移动设备中进行保存,同时可以将种子标识通过安全的方式传递到智能门锁中进行保存。
5、在用户使用用户移动设备上的应用程序进行解锁操作时,应用程序会使用数字钥匙种子、当前时间戳、开锁计数信息和一些可能的动态参数等构成第一待签名数据,然后使用用户私钥对这些第一待签名数据进行签名,获得第一签名,并将第一待签名数据和第一签名构成数字钥匙。生成数字钥匙后,用户移动设备上的应用程序使用近场通讯技术将数字钥匙传递给智能门锁。
6、智能门锁对动态数字钥匙进行验证。
智能门锁使用服务器公钥验证数字钥匙种子中服务器私钥所对应的第二签名的合法性,如果验证通过,则认为数字钥匙种子中的用户公钥是可信的,后续可以使用该用户公钥进行其它的验证。智能门锁还会比对数字钥匙种子中包含的种子标识与智能门锁中存储的种子标识是否可以匹配,如果无法匹配,则解锁失败;如果能够匹配,在进行后续的验证,即使用该用户公钥验证数字钥匙中的用户私钥所对应的第一签名的合法性,如果验证通过,智能门锁需要再比较此前保存的前一次解锁操作对应的开锁计数信息C1与此次获取的数字钥匙中的开锁计数信息C2的大小,如果C1不小于C2,则解锁失败。此外,还可以验证数字钥匙中的当前时间戳是否处于种子有效时间内,若已经超出种子有效时间,则解锁失败。在上述验证都通过后,才认为该数字钥匙有效,智能门锁进行解锁。
基于同一发明构思,本申请实施例中还提供了用于实现解锁的设备,所述用于实现解锁的设备可以分别是用户移动设备、智能门锁服务器和智能门锁,上述设备对应的方法是前述实施例中在各个设备上实现的解锁方法,并且其解决问题的原理与该方法相似。
本申请实施例提供了设备在实现解锁时,使用数字钥匙种子来多次生成数字钥匙,由于数字钥匙中包含仅对应于本次解锁操作的第一校验数据,因此即使被攻击者获取到数字钥匙,攻击者无法使用该数字钥匙再次进行解锁,同时由于数字钥匙种子可以使用多次,无需在每次解锁时连接智能门锁服务器获取数字钥匙,因此同时满足了安全性和易用性。
在实际场景中,可以基于如图1所示的多方设备之间的交互来实现解锁。图1中涉及的多方设备包括用户移动设备100、智能门锁200以及智能门锁服务器300。所述智能门锁服务器300用于生成数字钥匙种子,并将所述数字钥匙种子发送给用户移动设备使用。所述用户移动设备100在需要解锁时,根据获得的数字钥匙种子和对应于本次解锁操作的第一校验数据生成数字钥匙,然后生成的数字钥匙发送至智能门锁。而智能门锁200在从用户移动设备接收到数字钥匙后,对所述数字钥匙中的数字钥匙种子和第一校验数据进行验证,并在验证通过后进行解锁。
其中,所述用户移动设备可以是各类能够进行数据处理及收发的移动电子设备,例如手机、平板电脑、智能手表、智能手环、智能眼镜等设备;在实际场景中,也可以通过运行于用户移动设备的开锁应用程序,实现解锁方法中所涉及的数据处理和收发逻辑。智能门锁200可以是具有数据处理及收发功能,并且可以根据数据处理的结果控制门锁的设备,智能门锁服务器300包括但不限于如网络主机、单个网络服务器、多个网络服务器集或基于云计算的计算机集合等实现,可以用于实现设置闹钟时的部分处理功能。在此,云由基于云计算(Cloud Computing)的大量主机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟计算机。
在本申请的一些实施例中,所述用户移动设备可以包括种子获取模块、钥匙生成模块和数据发送模块,其中,种子获取模块用于获取数字钥匙种子;钥匙生成模块用于根据所述数字钥匙种子和对应于本次解锁操作的第一校验内容生成数字钥匙;数据发送模块用于将所述数字钥匙发送至智能门锁,以使所述智能门锁对所述数字钥匙中的数字钥匙种子和第一校验内容进行验证,并在验证通过后进行解锁。
智能门锁服务器可以包括种子生成模块和数据收发模块,其中,种子生成模块用于生成数字钥匙种子;数据收发模块用于将所述数字钥匙种子发送至用户移动设备,以使所述用户移动设备根据所述数字钥匙种子和对应于本次解锁操作的第一校验内容生成数字钥匙,并发送至智能门锁,由所述智能门锁对所述数字钥匙中的数字钥匙种子和第一校验内容进行验证,并在验证通过后进行解锁。
智能门锁可以包括数据收发模块、验证处理模块和解锁动作模块,其中,数据收发模块用于从用户移动设备接收数字钥匙,其中,所述数字钥匙由所述用户移动设备根据所述数字钥匙种子和对应于本次解锁操作的第一校验内容生成数字钥匙;验证处理模块用于对所述数字钥匙中的数字钥匙种子和第一校验内容进行验证;解锁动作模块用于在验证通过后进行解锁。
为了提高解锁时的安全性,数字钥匙中包含的第一校验数据仅对应于本次解锁操作,即所述第一校验数据可以是与每一次解锁操作的特定参数相关,由此即使被攻击者获取到数字钥匙,攻击者无法使用该数字钥匙再次进行解锁。在本申请的一些实施例中,第一校验数据可以包括开锁计数信息,该开锁计数信息等于基于所述数字钥匙种子生成数字钥匙的次数。例如,当用户移动设备可以维护一个计数器,在获取到新的数字钥匙种子之后,可以将计数器将开锁计数信息初始化为0,每使用该数字钥匙种子生成一个数字钥匙时,该开锁计数信息都动态加1。
而智能门锁在基于该开锁计数信息进行验证的逻辑可以是:智能门锁可以保存前一次的解锁操作的开锁计数信息C1,在验证时将前一次解锁操作的开锁计数信息C1与本次解锁操作的开锁计数信息C2进行比较,若前一次解锁操作的开锁计数信息小于本次解锁操作的开锁计数信息,则验证通过,若前一次解锁操作的开锁计数信息不小于本次解锁操作的开锁计数信息,则未通过验证。
例如,智能门锁中保存的前一次的开锁计数信息C1为3,则表示是数字钥匙种子s1第3次被使用时所生成的数字钥匙k1-3,若该数字钥匙k1-3在使用(例如发送至智能门锁的过程中)时被攻击者获取,攻击者若直接使用该数字钥匙k1-3,将该数字钥匙k1-3发送至智能门锁试图再次解锁时,此时智能门锁通过解析收到的数字钥匙k1-3,发现本次解锁操作的开锁计数信息C2(即k1-3的开锁计数信息)为3。基于此时的C1和C2进行比较之后,发现C1=C2,未通过验证,不进行解锁。而在正常情况下,若用户在使用一次数字钥匙k1-3之后,需要再次解锁,会再次使用数字钥匙种子s1生成新的数字钥匙k1-4,该数字钥匙对应的开锁计数信息会在3的基础上加1,即为4。用户移动设备将数字钥匙k1-4发送至智能门锁之后,智能门锁通过解析收到的数字钥匙k1-4,发现本次解锁操作的开锁计数信息C2(即k1-4的开锁计数信息)为4,基于此时的C1和C2进行比较之后,发现C1<C2,通过验证,进行解锁。由此,本申请实施例提供的解锁方案利用对应于本次解锁操作的第一校验数据进行验证,提高了安全性。
在本申请的一些实施例中,用户移动设备可以从智能门锁服务器获取数字钥匙种子,此外也可以采用其它方式获得数字钥匙种子,例如由用户移动设备直接生成数字钥匙种子等。用户移动设备在从智能门锁服务器获取数字钥匙种子时,可以采用如下的方式:由用户移动设备向智能门锁服务器发送申请请求,智能门锁服务器根据申请请求生成数字钥匙种子,并将其提供给用户移动设备。
在实际场景中,当用户首次使用用户移动设备解锁智能门锁之前,需要先申请数字钥匙种子,申请时由用户移动设备向智能门锁服务器发送申请请求,所述申请请求中可以至少用户身份信息和用户公钥。而所述智能门锁服务器可以根据所述申请请求,生成与所述用户身份信息、所述用户公钥相关的数字钥匙种子,其中,用户公钥可以由用户移动设备生成,例如在申请之前用户公钥即可生成一组密钥对,该密钥对包括了用户公钥和用户私钥,而用户身份信息可以与数字钥匙种子绑定,提高安全性。
此外,为了进一步提高安全性,智能门锁服务器在根据所述申请请求,生成与所述用户身份信息、所述用户公钥相关的数字钥匙种子之前,还可以对用户身份信息进行验证。例如,当用户身份信息包括用户的手机号时,智能门锁服务器可以在收到申请请求时,向用户的手机号码发送验证码短信,要求用户输入验证码,由此完成用户身份信息的验证。
在本申请的一些实施例中,可以利用数字签名的方式进行验证,从而提高安全性。由此,所述数字钥匙中的数据可以包括第一待签名数据以及使用用户私钥对所述第一待签名数据进行签名所获取的第一签名。所述第一待签名数据包括所述数字钥匙种子、对应于本次解锁操作的第一校验数据作和第一动态参数,第一动态参数可以是在生成数字钥匙时可以获取到的数据元素,例如可以是生成数字钥匙时的时间戳、随机数等难以重复获取的参数,加入到第一校验数据之后,由于攻击者难以获知这些数据元素,可以提高攻击者进行重放攻击的难度。
在本实施例中,智能门锁对所述数字钥匙中的数字钥匙种子和第一校验数据进行验证,并在验证通过后进行解锁时,可以先对所述数字钥匙中的数字钥匙种子进行验证。在数字钥匙种子验证通过后,所述智能门锁使用用户公钥,对所述数字钥匙中的第一签名进行验证。进一步地,在第一签名验证通过后,所述智能门锁再对所述数字钥匙中的第一校验数据进行验证,并在验证通过后进行解锁。在实际场景中,所述智能门锁使用用户公钥,对所述数字钥匙中的第一签名进行验证时,会对使用用户公钥对第一签名进行解密,从而获得用户私钥加密的原文(即第一待签名数据),进而与数字钥匙中本身所携带的第一待签名数据进行比较,若完全一致,则说明第一签名验证通过。
此外,若用户移动设备用用户私钥处理第一待签名数据之前,对第一待签名数据进行过哈希计算,则智能门锁验证时获得的原文即为进行哈希计算后的摘要。此时,智能门锁需要对数字钥匙中本身所携带的第一待签名数据采用同样的哈希算法进行计算,获取到摘要之后,与通过用户公钥解密获得的摘要进行比较,若两者完全一致,则说明第一签名验证通过。
在本申请的一些实施例中,数字钥匙种子由智能门锁服务器生成,其中,所述数字钥匙种子中的数据可以包括第二待签名数据以及使用服务器私钥对所述第二待签名数据进行签名所获得的第二签名,所述第二待签名数据包括与用户身份信息、用户公钥相关的第二校验数据以及第二动态参数。第二校验数据与第一校验数据类似,同样是用于在解锁过程中进行验证的信息,由于包含第二校验数据的数字钥匙种子可以使用多次,因此,第二校验数据并非对应于当前的解锁操作,在数字钥匙种子的有效期内该第二校验数据始终有效。
在本实施例中,所述第二校验数据可以包括用户公钥、与用户身份信息绑定的种子标识和第二动态参数,其中,所述用户公钥与用户私钥匹配,种子标识与用户身份信息绑定,因此每个用户均具有唯一的用户公钥和种子标识,第二动态参数与第一动态参数类似,也可以是时间戳、随机数等难以重复获取的参数,加入到第二校验数据之后,可以用于提高攻击者进行重放攻击的难度。
基于本实施例中的第二校验数据,所述智能门锁对数字钥匙的验证过程可以包括:所述智能门锁使用服务器公钥,对数字钥匙种子的第二签名进行验证,对第二签名的验证过程方式可以参考第一签名,此处不再赘述。在第二签名验证通过后,所述智能门锁对所述数字钥匙种子的第二校验数据进行验证。在第二校验数据验证通过后,所述智能门锁对所述数字钥匙中的第一校验数据进行验证,并在验证通过后进行解锁。
结合前述实施例中对第一校验数据的验证过程,图2示出了本申请一些实施例中智能门锁对数字钥匙进行验证时的处理流程,包括以下验证步骤:
步骤S201,智能门锁使用服务器公钥,对数字钥匙种子的第二签名进行验证;
步骤S202,在验证通过后,智能门锁确认第二校验内容中的用户公钥,并对与用户身份信息绑定的种子标识进行验证。
步骤S203,在验证通过后,智能门锁使用用户公钥,对所述数字钥匙中的第一签名进行验证。
步骤S204,在验证通过后,智能门锁对所述数字钥匙中的第一校验内容进行验证,并在验证通过后进行解锁。在验证过程中,任意一步未验证通过,智能门锁均不会进行解锁。
此外,在本申请的另一些实施例中,所述第二校验内容中还可以包括种子有效时间,用以进一步提升本方案的安全性。所述种子有效时间用于表示数字钥匙种子的有效期限,因此,所述智能门锁进行解锁之前,会确认当前时间或者生成数字钥匙的时间处于种子有效时间内,当超出种子有效时间时,即使其它的验证均通过智能门锁也不会解锁。例如,可以将种子有效时间设定为生成后的一周,即该基于该数字钥匙种子所生成的所有数字钥匙,仅在数字钥匙种子生成后的一周有效,若超过一周,该数字钥匙种子所生成的数字钥匙均不可用于解锁,由此即使攻击者通过特定方式可以通过其它验证,也无法在超过种子有效时间之后成功开锁,进一步提高了方案的安全性。
在此,本领域技术人员应当理解,上述智能门锁对数字钥匙进行验证时的处理流程仅为举例,根据实际应用场景的需求也可以调整验证时的验证顺序,因此现有或今后出现的基于类似原理的其它验证形式如果能够适用于本申请,也应该包含在本申请的保护范围内,并以引用的形式包含于此。
综上所述,本申请实施例提供的解锁方案中,用户移动设备可以在获取数字钥匙种子后,使用数字钥匙种子和对应于本次解锁操作的第一校验数据,来多次生成数字钥匙,然后发送至智能门锁进行验证后解锁,由于数字钥匙中包含仅对应于本次解锁操作的第一校验数据,因此即使被攻击者获取到数字钥匙,攻击者无法使用该数字钥匙再次进行解锁,同时由于数字钥匙种子可以使用多次,无需在每次解锁时连接智能门锁服务器获取数字钥匙,因此同时满足了安全性和易用性。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一些实施例包括一个如图5所示的计算设备,该设备包括存储有计算机可读指令的一个或多个存储器510和用于执行计算机可读指令的处理器520,其中,当该计算机可读指令被该处理器执行时,使得所述设备执行基于前述本申请的多个实施例的方法和/或技术方案。
此外,本申请的一些实施例还提供了一种计算机可读介质,其上存储有计算机程序指令,所述计算机可读指令可被处理器执行以实现前述本申请的多个实施例的方法和/或技术方案。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一些实施例中,本申请的软件程序可以通过处理器执行以实现上文步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。