[0065] 下面的描述被给出以使本领域技术人员能够实现并使用实施例,并且下面的描述是在特定的应用及其要求的情况下提供的。对所公开的实施例的各种修改对本领域技术人员来说应当是显而易见的,并且本文所定义的一般原理在不脱离本公开内容的精神和范围的情况下可以应用于其他实施例和应用。因而,本发明并不限于所示出的实施例,而是应当符合与本文所公开的原理和特征一致的最广泛的范围。
[0066] 在具体实施方式部分所描述的数据结构和代码通常存储于计算机可读存储介质上,该存储介质可以是能够存储由计算机系统使用的代码和/或数据的任意器件或介质。计算机可读存储介质包括,但不限于,易失性存储器、非易失性存储器、磁存储器件和光存储器件(例如,盘驱动器、磁带、CD(光盘)、DVD(数字通用盘或数字视频盘)或者现在已知的或以后开发的能够存储代码和/或数据的其他介质。
[0067] 在具体实施方式部分所描述的方法和处理能够被实现为代码和/或数据,该代码和/或数据能够存储于以上所描述的计算机可读存储介质内。当计算机系统读取并执行存储于计算机可读存储介质上的代码和/或数据时,计算机系统执行被实现为数据结构和代码并被存储于计算机可读存储介质内的方法和处理。
[0068] 而且,本文所描述的方法和处理能够包含于硬件模块或装置内。这些模块或装置可以包括,但不限于,专用集成电路(ASIC)芯片、场可编程门阵列(FPGA)、在特定的时间执行特定的软件模块或一段代码的专用的或共用的处理器、和/或现在已知的或以后开发的其他可编程逻辑器件。当硬件模块或装置被激活时,它们执行包含于它们之内的方法和处理。
[0069] 图1示出了根据一种实施例的后台系统100。后台系统100可以对应于服务器、集群、运行于虚拟机上的服务程序、运行于云系统容器中的服务程序,其中的各模块也可以是服务器、集群、运行于虚拟机上的服务程序、运行于云系统容器中的服务程序。参照图1,用户服务模块101处理来自用户终端300的请求:登录请求处理133、注册请求处理132、和虚拟钥匙相关请求处理131。当虚拟钥匙数据有更新时通过消息处理模块105发送虚拟钥匙更新消息给访问控制装置200,新的虚拟钥匙数据也被返回给用户终端300。用户服务模块101通过全局物体访问服务111接口访问物体访问权限表125和项目域信息访问服务110接口访问访问控制装置表122。用户的虚拟钥匙包和虚拟钥匙数据保存在用户钥匙包126数据库中,而用户账户数据库127只保存用于用户登录相关的数据;所有针对用户账户和虚拟钥匙包、虚拟钥匙的操作都被记录在数据库用户访问日志128中。系统管理模块104管理和监视后台系统100系统范围的运行状态,特别是,系统管理模块104管理多个项目域管理模块102的实例的启动、运行,而这些实例之间是隔离和独立的,互不干扰和影响,而且各实例间的数据库也是隔离和独立的。各项目域管理人员通过项目域管理人员用终端199登录项目域的后台管理130以完成物体所有者信息120、物体信息121和访问控制装置表122的录入和编辑管理。访问控制装置表中的信息包括:区域编号、装置编号、装置硬件标识、装置类型、关联装置列表、装置安装信息,该表应该在安装和配置访问控制装置时录入完成。全局项目域信息汇总136服务用于将不同项目域管理模块102的实例中数据进行自动汇总,汇总的结果保存在物体访问权限表125中。
[0070] 全局物体访问服务模块103中,还包括装置公私钥表129,记录所有服务控制装置的公钥和私钥,这些公钥和私钥在装置成功注册后由后台系统生成,并把装置私钥返回给访问控制装置。全局物体访问服务111为后台系统其它模块提供对包括装置公私钥表129的访问操作。
[0071] 用户账户127还被用于保存用户的公钥和私钥,这些公钥和私钥在用户注册时由后台系统生成,并将用户公钥返回给用户终端。
[0072] 如图1所示的实施例中,后台系统100的系统管理员使用系统管理员用终端198登录系统管理模块104进行系统层面的管理和维护。
[0073] 在一些实施例中,小区物业服务公司的管理人员在小区对应后台管理操作界面中录入好小区的房屋信息、业主信息、楼栋信息、门禁设备信息。
[0074] 在一些实施例中,服务公寓的管理人员在公寓项目对应后台管理操作界面中录入好公寓的房屋信息、楼层信息、智能锁装置信息。
[0075] 在一些实施例中,租车公司的管理人员在公司对应后台管理操作界面中录入好车辆信息、智能车锁装置信息。
[0076] 在一些实施例中,项目域管理模块还实现了装置、管理人员监控137。各项目域管理人员通过项目域管理人员用终端199登录项目域的后台管理130可以完成对管理人员识别信息123和物体分区编号列表124的录入和编辑管理。这些信息也会被自动汇总至物体访问权限表125中。
[0077] 在一些实施例中,小区物业服务公司的管理人员还在小区对应后台管理操作界面中录入好小区的物业服务人员信息、楼栋分区信息、物业服务人员分区服务信息。
[0078] 在一些实施例中,服务公寓的管理人员在公寓项目对应后台管理操作界面中录入好公寓的管理和服务人员信息、分区权限等信息。
[0079] 在一些实施例中,虚拟钥匙记录中包括:授权者、被授权者、授权有效期、授权类型、授权访问的访问控制装置信息。根据不同应用场景的实施例,可以设计更丰富的虚拟钥匙记录信息,以满足应用场景的要求。比如,在一些实施例中,单个访问控制装置可以管理和控制一组多个保管箱,这种情况下只要在虚拟钥匙记录中添加上子箱的编号做核对就可以控制具体的子保管箱的开启。
[0080] 图2示出了根据一种实施例的访问控制装置200。访问控制装置200可以实现为各种门禁设备、各种智能锁、各种出入闸。参照图2,中央处理单元212负责控制和管理处理器201所有处理单元的工作。网络模块204用于访问控制装置200连接后台系统100,通过登录注册处理单元204完成对后台系统100的登录后,就可以访问后台系统100的服务,并接收来自后台系统100的虚拟钥匙更新消息。如果接收到来自后台系统100的虚拟钥匙更新消息,消息处理单元213将消息交由虚拟钥匙处理单元210进行处理,虚拟钥匙处理单元210先对消息进行校验,校验成功后更新到装置本地存储器202加密保存的虚拟钥匙库中。输入模块
203接收来自用户终端300的虚拟钥匙相关数据,接收的虚拟钥匙相关数据交给输入识别处理单元211来处理,识别和处理完成后由虚拟钥匙处理单元210进行进一步的校验和处理。
如果收到的虚拟钥匙相关数据核验通过,中央处理单元212向电锁控制接口205发送锁命令,驱动电锁299进行锁命令操作。
[0081] 在一些实施例中,输入模块包括:NFC近场通讯单元、低功耗蓝牙通讯单元、二维码扫描单元。
[0082] 图3示出了根据一种实施例的用户终端300。用户终端300可以为各种移动终端、智能手机、平板电脑、笔记本电脑、智能手表、智能眼镜、车载电脑等。参照图3,中央处理单元313负责控制和管理处理器301所有处理单元的工作。网络模块303用于用户终端300连接后台系统100,通过登录注册处理单元316完成对后台系统100的登录后,就可以访问后台系统
100的服务,并接收来自后台系统100的虚拟钥匙更新消息。如果接收到来自后台系统100的虚拟钥匙更新消息,消息处理单元314将消息交由虚拟钥匙处理单元311进行处理,虚拟钥匙处理单元311先对消息进行校验,校验成功后更新到装置本地存储器302加密保存的虚拟钥匙库中。输入模块305接收用户的操作输入,输出模块304将反馈输出给用户,用户交互处理单元315通过输入模块305和输出模块304完成与用户的交互,比如虚拟钥匙包的选择和查看、成员管理、虚拟钥匙的管理和添加授权等交互操作,再经虚拟钥匙处理单元311、虚拟钥匙请求单元312、网络连接处理单元317、网络模块303向后台系统100发送虚拟钥匙请求。
登录后台系统100后从本地存储器302中解密保存的虚拟钥匙包数据,如果没有找到,就向后台系统100发送获取虚拟钥匙包请求。通过短距通讯模块306,可以把虚拟钥匙数据发送给访问控制装置200,进行锁命令操作。
[0083] 在一些实施例中,短距通讯模块306包括NFC近场通讯单元、低功耗蓝牙通讯单元。短距通讯处理单元319负责处理这些短距通讯的连接、通讯。
[0084] 在一些实施例中,可以通过用户交互处理单元315、附件处理单元310和短距通讯模块306完成与短距离无线附件装置399的绑定,然后通过虚拟钥匙单元311、虚拟钥匙请求单元312向后台系统100发送添加虚拟钥匙请求,授权该短距离无线附件装置可以进行虚拟钥匙开锁操作。
[0085] 在一些实施例中,虚拟钥匙可以以二维码的形式经输出模块304输出到显示屏幕上,供访问控制装置200的二维码识别单元识别或者摄像头单元拍摄后识别。
[0086] 图4给出了用于例示根据一种实施例的后台系统生成虚拟锁芯、虚拟钥匙缀的处理示意图。
[0087] 首先,对于已经存在的虚拟钥匙记录,取出其中用于校验核对所用的项目,这些项目包括(有效期、类型),形成第一锁芯(步骤400)。然后使用虚拟钥匙记录中的被授权者信息在用户账户127数据库中进行检索,取得被授权使用该虚拟钥匙用户的用户公钥和用户私钥(步骤402)。接着用刚获得的用户公钥作为密钥,使用非对称加密算法对第一锁芯数据进行加密(步骤404)。加密结果形成虚拟锁芯(步骤406)。
[0088] 继续,使用虚拟钥匙记录中的装置信息,调用全局物体访问服务111(步骤410),取得装置公钥(步骤412)。使用刚获得的装置公钥作为密钥,对在步骤402获得的用户私钥用非对称加密算法进行加密(步骤414)。加密结果形成虚拟钥匙缀(步骤416)。
[0089] 每次后台系统里的虚拟钥匙记录有变化时,都需要重新生成虚拟锁芯和虚拟钥匙缀(如果装置信息有变化)。更新后的虚拟锁芯数据被后台系统100以虚拟钥匙更新消息方式发送给访问控制装置200。虚拟钥匙缀一般作为用户虚拟钥匙包的一部分,在用户终端300向后台系统100发送获取虚拟钥匙包请求时返回给用户终端300。
[0090] 图5给出了用于例示根据一种实施例访问控制装置和用户终端间通过NFC或蓝牙通讯完成开锁操作时数据处理的示意图(注:忽略了签名校验处理,因为其实NFC、蓝牙通讯时本身带校验,实施时用普通的CRC16或者CRC32算法计算出一个简单的校验值即可,可以节约用户终端对NFC命令的响应时间)。参照图5:
[0091] 步骤S1、用户终端靠近访问控制装置的短距离输入模块,访问控制装置确认并开始接收输入;
[0092] 步骤S2、用户终端向访问控制装置发送用户标识;
[0093] 步骤S3、访问控制装置收到用户标识后在本地检索是否有该用户标识的钥匙权限记录,如果没有则操作终止;
[0094] 步骤S4、访问控制装置向用户终端发送包括装置标识、项目域密钥、第一时间戳数据,以进行认证;
[0095] 步骤S5、用户终端收到认证所需的包括装置标识、项目域密钥、第一时间戳数据,在用户的虚拟钥匙包中找到对应的虚拟钥匙缀和虚拟钥匙记录,所述虚拟钥匙记录加上命令类型形成第一钥匙,其中命令类型包括:开锁、上锁、反锁;
[0096] 步骤S6、向访问控制装置返回认证响应,响应参数中包括:虚拟钥匙缀、第一加密虚拟钥匙数据、第一签名数据,其中返回响应前的步骤包括:步骤S6-1通过散列算法对(第一时间戳、装置标识、项目域密钥、用户标识)计算得出第一对称密钥,步骤S6-2用第一对称密钥对第一钥匙使用对称加密算法加密出第一加密虚拟钥匙数据;步骤S6-3计算第一签名;
[0097] 步骤S7、访问控制装置收到认证响应后,执行以下步骤:
[0098] 步骤S7-1、校验第一签名数据,如果签名数据不符,则操作终止(图中未展示该步骤);
[0099] 步骤S7-2、使用装置私钥解密出虚拟钥匙缀中的用户私钥,如果解密失败则操作终止;
[0100] 步骤S7-3、使用解密出的用户私钥解密钥匙权限记录中的虚拟锁芯数据,得到第一锁芯数据,如果解密失败则操作终止;
[0101] 步骤S7-4、根据包括虚拟钥匙相关数据在内的数据计算出第一对称密钥;
[0102] 步骤S7-5、使用第一对称密钥解密第一加密虚拟钥匙数据,得到第一钥匙数据,如果解密失败则操作终止;
[0103] 步骤S7-6、对第一锁芯数据和第一钥匙数据中的具体参数进行核对,如果核对不正确则操作终止;
[0104] 步骤S7-7、核对全部正确后,根据第一钥匙数据中的命令类型参数向电锁控制接口发送相应的锁命令,如果没有命令类型参数默认发送开锁命令。
[0105] 在一些实施例中,可以在步骤S5中所述第一钥匙中不加命令类型,这样就只能做开锁操作。在一些实施例中,用户终端300上的交互操作界面可以指定下一步用户终端300靠近访问控制装置200时是要做开锁还是上锁或反锁。
[0106] 图6给出了用于例示根据一种实施例的后台系统为蓝牙附件装置生成虚拟附件锁芯和第二签名的处理示意图。
[0107] 首先,对于已经存在的虚拟钥匙记录,取出其中用于校验核对所用的项目,这些项目包括(有效期、类型),形成附件锁芯(步骤600)。然后生成第二时间戳(步骤602)。接下来使用数据指纹算法计算装置私钥的指纹,得到装置私钥指纹(步骤604)。然后在步骤606,计算(第二时间戳、装置标识、附件标识项目域密钥、装置私钥指纹)的散列值,其中的附件标识从虚拟钥匙中被授权者信息中得到。步骤606的计算结果就是第二对称密钥(步骤608)。以第二对称密钥为密钥,用对称加密算法对附件锁芯数据进行加密(步骤610)。加密结果就形成了虚拟附件锁芯(步骤612)。然后是计算签名数据,在步骤614,对(第二时间戳、装置标识、附件标识、附件锁芯第二锁芯、项目域密钥、装置私钥指纹)进行签名计算。计算结果得到第二签名(步骤616)。
[0108] 图7给出了用于例示根据一种实施例的访问控制装置,接收用户使用蓝牙附件装置进行开锁操作的处理示意图。首先,访问控制装置发现有蓝牙附件装置靠近,当进入一定的距离范围后,访问控制装置进行如下的处理步骤:
[0109] B1、把蓝牙附件装置的蓝牙地址标识转换为附件标识;
[0110] B2、用附件标识在附件权限表中检索是否有对应附件权限记录,如果没有则核对终止;
[0111] B3、取出附件权限记录中的第二时间戳;
[0112] B4、用数据指纹算法计算出装置私钥指纹;
[0113] B5、使用散列算法对(第二时间戳、装置标识、附件标识、项目域密钥、装置私钥指纹)计算出第二对称密钥;
[0114] B6、使用第二对称密钥对附件权限记录中的虚拟附件锁芯数据进行解密,得到附件锁芯数据;
[0115] B7、根据(第二时间戳、装置标识、附件标识、附件锁芯数据、项目域密钥、装置私钥指纹)数据进行签名计算,得到的第二校验签名;
[0116] B8、第二校验签名与对应记录中的第二签名数据进行核对,如果核对不符则终止;
[0117] B9、核对附件锁芯数据中的有效期时间和状态,状态包括:有效、失效;
[0118] B10、如果在有效期内且状态为有效,则核对成功,向电锁控制接口发送开锁命令;如果附件锁芯数据中的类型为仅限一次类型则开锁完成后,所述装置将此条记录从附件权限表中去除并发送第一通知消息给后台系统,消息参数中包括装置标识、用户标识、时间。
[0119] 图8给出了用于例示根据一种实施例的访问控制装置,与用户终端通过NFC通讯进行开锁操作的处理示意图。参照图8,其中的步骤与图5中的步骤可以对照来看。区别主要在于图5是基于数据结构的处理流程,而图8则是具体使用NFC通讯时的处理流程。
[0120] 首先,访问控制装置200启动后,输入识别单元211找到输入模块203中有NFC通讯单元,就启用NFC HCE模式的读卡器模式,等待识别做了NFC卡仿真的用户终端300靠近。当发现有NFC卡仿真的用户终端300靠近访问控制装置200后,向用户终端300发送SELECT FILE APDU的NFC命令。注意:相关NFC的APDU命令请参看ISO-IEC-7816-4规范,有关NFC HCE模式,请参看ISO14443-4规范。
[0121] 在用户终端300这边,短距通讯处理单元319中有NFC卡仿真处理程序,对从短距通讯模块306中NFC通讯单元接收到的NFC命令进行处理。在实施例中,只处理了来自访问控制终端200的SELECT FILE和INTERNAL AUTHENTICATE命令。
[0122] 用户终端300执行完步骤S6后,访问控制终端200就开始步骤S7的各子步骤。
[0123] 图9给出了用于例示根据一种实施例的访问控制装置,与用户终端通过蓝牙通讯进行开锁操作的处理示意图。参照图9,其中的步骤与图5中的步骤可以对照来看。区别主要在于图5是基于数据结构的处理流程,而图9则是具体使用蓝牙通讯时的处理流程。
[0124] 首先,访问控制装置200启动后,输入识别单元211找到输入模块203中有低功耗蓝牙通讯单元,就启用蓝牙的外设模式等待也使用蓝牙通讯的用户终端300靠近并连接。用户靠近访问控制装置200后,打开用户终端300,在通过交互操作开始进行蓝牙开锁。用户终端300中的短距通讯处理单元319中的蓝牙处理程序先搜索附近是否有指定类型的蓝牙外设(访问控制装置200所带),搜索到后查询是否有自定义蓝牙虚拟钥匙开锁服务(步骤S1),如果有就连接成功。这里的自定义蓝牙虚拟钥匙开锁服务是实施例自己定义的蓝牙服务,提供一系列的自定义的属性的读/写服务。然后,用户终端300发送写用户标识属性的命令(步骤S2)。访问控制装置200收到用户标识后检查是否存在此用户标识的记录(步骤S3),如果没有,就返回错误响应,否则返回成功响应。用户终端300收到成功响应后,向访问控制装置
200发送读认证凭证属性命令(步骤S4);访问控制装置200随后计算出时间戳,并返回用户终端300请求的属性数据(装置标识、项目域密钥、时间戳);后续的步骤就与图5中的处理流程基本一致,只是通讯用了蓝牙的写属性方式来实现。
[0125] 本领域的技术人员应该明白,上述的本发明实施例所提供的装置的各组成部分,以及方法中的各步骤,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上。可选地,它们可以用计算装置可执行的程序代码来实现。从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
[0126] 以上仅为本发明之较佳实施例,但其并不限制本发明的实施范围,即不偏离本发明的权利要求所作之等同变化与修饰,仍应属于本发明之保护范围。