具体实施方式
此处参考附图描述本公开的各种方案以及特征。通过下面参照附图对给定为非限制性实例的实施例的优选形式的描述,本公开的这些和其它特性将会变得显而易见。
本说明书可使用词组“在一种实施例中”、“在另一个实施例中”、“在又一实施例中”或“在其他实施例中”,其均可指代根据本公开的相同或不同实施例中的一个或多个。注意的是,在说明书全文中,相同的附图标记指代相同或相似的元件,并省略不必要的重复描述。此外,具体实施例中,以单数形式出现的元件并不排除可以以多个(复数个)形式出现。
本说明书中使用的术语“电连接”,可以指直接电连接,也可以指间接(例如,通过中间件:另一部件或元件或器件或模块)实现电连接。
图1为本实施例的一种智能锁装置(在下文中,也简称为“智能锁”)100的示意性框图。智能锁装置100包括:主控模块101、验证模块103、显示模块105、输入模块107和锁体控制模块109。
其中,主控模块101分别与验证模块103、显示模块105、和输入模块107电连接。验证模块103与锁体控制模块109电连接。
主控模块101可以控制显示模块105的显示并接收输入模块107的输入信号。具体地,主控模块101能够生成动态分组密码盘200(如图2所示),并控制显示模块105显示动态分组密码盘200。
动态分组密码盘200包括多个分组,每个分组包括大于两个以上的随机密码符号,各分组之间的随机密码符号不相同或不完全相同。
图2示出了动态分组密码盘200的一个示例性的图。动态分组密码盘200的数字分为4组,每组3个数字,共12个数字,其中包括0-9十位数字,及0-9内随机获取的两位数字,以确保每组数字中不存在重复数字的原则进行分组。组内的数字是随机生成的,确保了每一次生成的动态分组密码盘200都不一样,图中可以看出,组与组之间的数字不相同或不完全相同。
图2仅仅是示出了动态分组密码盘200的一个示例。在另一个实施例中,动态分组密码盘200的数字也分为4组,其中两组包括3个数字,另外两组仅包括2个数字,即总共10个数字。在这种情况下,将数字0-9以随机顺序分配到这样的动态分组密码盘200中,得到组与组之间数字完全不相同的4个分组。
虽然图示出了4个分组,然而,这仅仅是示例,分组的数量可以根据设计来确定。比如,极端情况下,分组最少为两组。理论上来说,在密码长度相同的情况下,分组个数越多,安全性越高。因此,当使用较少的分组时,需要增加密码的长度以提高安全性。在动态分组密码盘200中,每个分组中包含的字符数有很多选择,可以为2个,也可以为4个或者更多,甚至可以让不同分组所包含的字符数量不一样,只要能够达到抗偷窥的效果就可以。
在实施例的动态分组密码盘200中,密码字符的随机分组方式有很多选择,可以是前文的乱序随机动态分组,也可以让字符按固定顺序进行分组(便于用户输入),比如让阿拉伯数字始终按照从小到大的顺序进行显示,只令0的起始位置随机,这样包含数字0的分组就存在(8,9,0)、(9,0,1)、(0,1,2)三种可能,其它数字也一样。
在实施例的动态分组密码盘200中,分组表现形式可以有很多选择,除了图2所示的圆盘形式外,也可以用其它图形和布局来表现,只要显示模块105能够正常显示并且输入模块107能够提供所需的分组输入区就可以。
在一些实施例中,动态分组密码盘200中的密码符号不仅包括数字(例如0-9),而且包括字母(a-z)或一些特殊密码符号(例如,#、*、&等)或图形(例如圆形、三角形、正方形、绘图、照片等)中的任一种或多种。通过增加密码符号的变化性,能够使得动态分组密码盘200的安全性进一步提高。
在实施例中,主控模块101接收来自输入模块107的对于分组进行选择的输入信号序列,将输入信号序列所对应的分组序列发送至所述验证模块103。
验证模块103对所述分组序列进行验证,如果验证成功,则向所述锁体控制模块109发送开锁驱动信号。
由此,用户使用输入模块107进行输入时,其对密码的每一位所处的分组进行顺序输入而不是直接针对密码本身来输入,因此即使在用户进行输入操作时有旁观者,旁观者也无法看出真正的密码,提升了使用密码开锁过程的安全性。
在一个实施例中,验证模块103例如为安全芯片,其可以对分组序列所包括的各密码符号组合进行安全运算,将所得到的运算值与主控模块101内部存储的授权安全运算值进行匹配,如果一致,则验证成功,向锁体控制模块109发送驱动信号。
通过锁体控制模块109实现驱动锁体(图中未示出)开锁。在例如以外离合方式控制锁体的情况下,锁体控制模块109例如可以为离合器,通过控制离合器运动,实现把手与机械锁体之间的方轴传动使能,从而实现开锁;在例如以内离合方式控制锁体的情况下,锁体控制模块109例如可以包括加装在机械锁体内部的控制电机和离合器,开锁时先控制锁体内的控制电机运动,控制电机的运动推动离合器到位,实现把手方轴传动使能。以上仅为锁体控制模块109的示例,不作为对本发明的限制。
安全芯片是一个可独立进行密钥存储和加解密的装置,内部拥有独立的处理器和存储单元。安全芯片可存储密钥、特征数据和程序,并进行加解密运算,为其它设备提供加密和安全认证服务。
相比普通芯片,安全芯片能保证数据写入芯片后无法被非法读取,外界只能通过安全芯片提供的访问接口完成数字证书读取、数据加解密、数字签名、签名认证等操作。
安全运算例如可以是不可逆运算,比如哈希运算或模指数运算,也可以是智能锁开发商自己开发的加密运算。
在一个实施例中,安全运算为加盐哈希运算。
下面简述加盐哈希运算的原理。
加盐加密是一种对系统登录口令的加密方式,它实现的方式是将每一个口令同一个叫做“盐”(salt)的n位随机数按某种规则相关联。无论何时只要口令改变,随机数就会改变。其一般用于在原密码后面追加一些无关字符后再进行不可逆哈希运算(例如MD5、SHA),通过增加明文长度来加大通过密文反查破解的难度。
哈希(Hash),是一种将任意长度的输入(又叫做预映射,pre-image),转换成固定长度输出(散列值)的算法。这种转换是一种压缩映射,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。
哈希算法的主要特征是具备加密过程不需要密钥,并且经过加密的数据无法被解密,只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文。
加盐哈希运算即对获取的密码加盐后进行哈希运算,将密码转换为例如MD5的形式,并与安全芯片内存储的授权安全运算值(MD5值)比对,从而实现验证。
在一个实施例中,主控模块101可以生成多种密码盘中的一种。主控模块101可以控制显示模块105显示所生成的密码盘以及用于切换当前显示密码盘的切换选项(例如,触摸显示屏上的虚拟“切换”按钮),并且在接收到来自输入模块107的对应于切换选项的输入信号时生成多种密码盘中的除当前显示密码盘之外的另一种密码盘并由显示模块105显示。
多种密码盘中,除了动态分组密码盘200外,还可以包括但不限于标准密码盘300(如图3所示)、乱序密码盘400(如图4所示)以及图形密码盘500(如图5所示)。
在一个实施例中,主控模块101可以接收来自所述输入模块107的对于标准密码盘300、乱序密码盘400或图形密码盘500中的密码符号进行选择的输入信号序列,并且将该输入信号序列对应的密码符号序列发送至所述验证模块103;
所述验证模块103可对所述密码符号序列进行验证,如果验证成功,则向所述锁体控制模块109发送开锁驱动信号。
验证模块103例如为安全芯片,其对所述密码符号序列进行安全运算,并对所得到的运算值与其内部存储的授权安全运算值进行匹配,如果一致,则验证成功,向锁体控制模块109发送驱动信号。
对于图2所示的动态分组密码盘200,用户在进行开锁时,可以通过例如点击或按下数字组合按钮来完成输入。例如,如果第一位密码为“3”,用户只需点击“136”这个数字组合按钮即可,如果第二位密码是“2”,用户只需点击“294”这个数字组合按钮即可,当然用户也可以点击“258”这个数字组合按钮来完成“2”的输入。
用户例如连续点击6次数字组合按钮后,智能锁装置100便得到了18位的数字序列输入,在该示例中,智能锁装置100中的验证模块103,例如安全芯片,可以按每3个数字一组的方式对用户输入密码的各位数字情况进行概率组合,最多可以得到36=729种密码组合。依赖于芯片的高速运算能力,智能锁装置100可以在不到100ms的时间内完成对这729种密码组合的加盐哈希结果计算和比对,如果发现可能的密码组合中有与智能锁安全芯片存储的授权密码加盐哈希结果相匹配的,则向锁体控制模块109发送驱动信号以实现开锁。
如图3所示,显示了标准密码盘300的示例。
标准密码盘300与传统密码盘工作原理一致,数字位置固定。可选地,标准密码盘300还支持虚位密码的功能。
如图4所示,显示了乱序密码盘400的示例。乱序密码盘400在显示0-9的数字时,会随机变化各个数字的显示位置。进行开锁时,用户需要根据密码数字点击触摸显示屏的不同位置进行开锁验证。可选地,乱序密码盘400还支持虚位密码的功能。
如图5所示,显示了图形密码盘500的示例。图形密码盘500显示为例如3*3的图形点,用户依次按顺序滑动连接后,绘制成特定的密码图案(本质上还是一个数字序列)。
例如,验证模块103(例如安全芯片)可以将密码图案形成的数字序列(密码符号序列信号的示例)的加盐哈希结果与其内部保存的授权时记录的图形数字序列的加盐哈希结果(授权安全运算值)进行匹配,如果匹配,则验证通过,发送开锁驱动信号。
图2-图5所示的密码盘200、300、400、500均为示例,不应视为对本发明的限制。
下面说明实施例的智能锁装置100的一种可能的应用场景。
用户在使用具备动态分组密码盘200的智能锁装置100进行密码开锁时,可根据实际使用场景来选择不同的密码盘:
周围无人时,可选择使用标准密码盘300或图形密码盘500;
有人在旁边但无法直视密码盘时,可选择使用乱序密码盘400;
有人在旁边且直视密码盘时,可选择使用动态分组密码盘200。
由此,实施例的智能锁装置100减少了密码输入过程中被偷窥泄密的风险,同时也避免了朋友在附近时遮挡密码盘的尴尬,兼顾了密码输入的安全与便捷。
主控模块101例如可以由单片机、微处理器、微控制器或者状态机等具有信号处理能力的处理器实现,或者可以由专用电子芯片实现,例如数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件等。另外,主控模块101可以包括专用于控制显示模块的显示的GPU(图形处理单元)。在一些实施例中,主控模块101可以由特定于给定的功能的电路来实现。
在一些实施例中,验证模块103也可以一体地集成在主控模块101中。
在一些实施例中,输入模块107例如为实体按键或触摸电路板。例如用户可以通过实体按键或触摸电路板进行输入。
在一些实施例中,显示模块105为显示屏。在一些替代性实施例中,显示模块105采用显示屏以外其它形式动态显示技术以显示密码盘,例如激光投影、LED点阵、多个数码管组合等硬件制作的能够动态改变特定位置显示字符的密码盘。
在另一些实施例中,输入模块107和显示模块105可以整合为单个元件,例如由触摸显示屏实现。
在一些实施例中,用户可以通过主控模块101设置默认显示的密码盘(即首先显示的密码盘),默认显示的密码盘可以为动态分组密码盘200、标准密码盘300、乱序密码盘400以及图形密码盘500中的任一种。
图6示出了本发明另一个实施例的智能锁装置600。智能锁装置600中的主控模块601、触摸显示屏605(其同时具有显示模块和输入模块的功能)、锁体控制模块609与图1所示智能锁装置100的对应模块相同,并且省略对它们的描述。此外,如图6所示,智能锁装置600中的安全芯片603作为验证模块,并且智能锁装置600还包括报警模块610,其电连接到安全芯片603,安全芯片603当对分组序列和/或密码符号序列信号的验证失败在预定时间内达到预定次数时向报警模块610发出报警信号,报警模块610根据报警信号进行报警。
例如,报警模块610可以是语音报警模块,其发出各种警示音以警告用户。
对于本实施例的智能锁装置600的可能应用场景与前述实施例的智能锁装置100的应用场景是类似的,在此不再赘述。
下面,示意性说明实施例的智能锁装置的操作流程。
如图7所示,添加密码开锁授权的流程大致包括以下几个步骤:
首先,进入智能锁装置的管理模式,然后在智能锁屏幕上添加密码授权;
然后,输入6位数字密码后,再次重复输入进行确认,两次输入的密码一致时,选择密码所属的用户;
最后,智能锁将数字密码的加盐哈希结果存储在安全芯片603内,此时密码生效。
如图8所示,验证密码开锁的流程大致包括以下几个步骤:
首先,唤醒智能锁屏幕,选择密码盘类型(如图2-图5所示,点击左下角“切换”按钮即可在不同密码盘中依次切换);
然后,输入开锁密码,智能锁将获取的密码符号序列信号或者分组序列包含的各密码组合通过加盐处理后进行哈希运算,与安全芯片603内存储的密码加盐哈希结果进行匹配;
然后,如果发现匹配的密码加盐哈希结果,则开锁成功,否则开锁失败。
最后,如果密码验证连续失败三次,自动进行验证延时(即预定时间内停用验证功能)和报警。
需要说明的是,结合本文中所公开的实施例描述的各示例的单元以及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
以上实施例仅为本公开的示例性实施例,不用于限制本公开,本公开的保护范围由权利要求书限定。本领域技术人员可以在本公开的实质和保护范围内,对本公开做出各种修改或等同替换,这种修改或等同替换也应视为落在本公开的保护范围内。