一种基于NFC技术的物联网智能型酒店门禁系统
未命名
07-27
阅读:86
评论:0

一种基于nfc技术的物联网智能型酒店门禁系统
技术领域
1.本发明属于物联网应用领域,具体涉及一种基于nfc技术的物联网智能型酒店门禁系统。
背景技术:
2.我国对门禁系统的研究现处于起步阶段,控制方法于国外同期相比较为传统。从控制手段来看,国内的门禁系统主要有密码式门禁系统、射频卡门禁系统、生物特征门禁系统等,其中射频感应卡门禁系统应用最为广泛。我国高安全性和保密性ic卡制作和相关设备的制作水平和国外有一定的差距。目前国内大部分智能门禁还停留在对门进行简单控制的水平,没有形成对门进行全方位,实时控制的系统。这种简单的认证控制只能满足一般家庭和低安全性需求的场所,如体育场等场所的需求。对于一些高安全性需求的场所,例如实验室,银行等场所就需要更为安全的智能门禁系统。
3.android智能手机是当下人们不可或缺的通信工具,随着通信技术的不断完善,用户要求数据传输要更加快速可靠。近距离无线通信(nfc)技术由于其保密性高,数据传输快的特点,使其在移动支付,智能钥匙等方面拥有不少应用。鉴于nfc的特性,越来越多的智能移动终端加入了nfc功能,未来这种趋势会越来越强。非接触式射频识别(rfid)由于成本低、使用方便在门禁系统占据重要地位。作为短距离非接触式通信技术行业里的新星nfc技术,2003年被成功研发至今,受到了各行各业的广泛的关注,很大程度上促进了nfc技术的研究与应用的开发。
4.而现有的门禁系统在安全性、便捷性和普及性上都存在许多的缺陷,比如:
5.(1)安全性:当前密码门禁或感应门禁都存在一定的安全隐患,如密码门禁存在被窥视密码,根据手势记住密码等问题,而感应卡门禁存在卡片丢失、磨损等问题。
6.(2)便捷性:当前酒店管理中前台办理手续繁杂,缺少集中信息化管理,人力物力消耗较多。
7.(3)普及性:当前安全性较高的门禁系统普遍价格偏高,在多数酒店中难以普遍推广。
技术实现要素:
8.本发明的目的在于提供一种基于nfc技术的物联网智能型酒店门禁系统,以解决上述背景技术中提出的问题。
9.为了解决上述技术问题,本发明提供如下技术方案:
10.一种基于nfc技术的物联网智能型酒店门禁系统,包括用户鉴权服务器、密钥分发服务器、app和门锁,所述密钥分发服务器用于分别向用户鉴权服务器、app、门锁提供会话密钥支持,用户鉴权服务器与app相互传递数据请求并反馈处理结果,用户鉴权服务器与门锁相互传递数据请求并反馈处理结果,app向门锁传递开锁请求,app与用户鉴权服务器、密钥分发服务器中任何一个服务器交互时都经过加密,每一个门锁都内置一个基础密钥,在
门锁内部的数据库中存储了一个开锁次数的键值,门锁会对每一次用户通过nfc传入的密钥值进行比对,比对的范围为开门次数之外的五次,对于每次开门请求,无论成功或者失败,服务维护的开门次数都将增加一次,而门锁控件则对失败的开门次数则不会增加,开门次数和门锁基钥在门锁控件开锁次数达到20次时,门锁控件会主动向用户鉴权服务器请求更换密钥,当更新出现错误的时候,门锁控件的基钥和开门次数都不会更新,由于更换密钥操作为门锁主动请求,而非服务器主动更换,故不会存在因为密钥更新而导致门锁无法打开的情况。
11.进一步,密钥分发服务器向app提供会话密钥支持,具体的,初次启动app,app计算生成机器指纹,然后app计算生成自己的公钥和私钥,然后app向密钥分发服务器申请公钥,获取到密钥分发服务器公钥之后,app使用密钥分发服务器公钥向密钥分发服务器发送注册请求,成功后,将app公钥,私钥,密钥分发服务器公钥保存至本地数据库,密钥分发服务器接受到app的注册请求后,保存到密钥分发服务器的数据库。
12.进一步,app计算生成机器指纹,具体的,app在生成识别符时,会申请会申请获取手机的cpu序列号和mac地址,将两者连结成一个字符串m,采用sm3算法,计算生成唯一识别符,sm3算法可以将对任意长的消息计算出一个消息认证码,将最后输出的消息认证码作为所述手机的唯一识别符,并且该识别符不会保存在硬盘或数据库中,所述识别符被设定为运行时生成,每次需要使用指纹时该app都会对这个识别符重新计算。
13.进一步,app计算生成自己的公钥和私钥,具体的,在生成供rsa算法使用的公私钥对时,由java.security.keypairgenerator类负责初始化,使用keypairgenerator类的()initialize int keysize方法,生成一个长度为2048位的密钥对,将初始化函数生成的密钥对存放在java.security.keypair类的对象之中,,通过getpublic()方法和getprivate()方法获取到生成的公钥和私钥,生成的公钥和私钥将被保存在一个java.util.map对象之中。
14.进一步,app使用密钥分发服务器公钥向密钥分发服务器发送注册请求,成功后,将app公钥,私钥,密钥分发服务器公钥保存至本地数据库,密钥分发服务器接受到app的注册请求后,保存到密钥分发服务器的数据库,具体的,app在计算生成自己的公钥和私钥后,app将会检测本地是否存在用于保存密钥的数据库,若不存在则新建一个数据库,若存在则将上面生成的公钥和私钥使用一个随机字符串k作为密钥,使用aes-256加密算法加密后存入数据库中,然后使用d-h协议与密钥分发服务器协商会话密钥ks,当会话密钥协商完毕之后,app使用aes-256加密算法和会话密钥,加密“申请密钥分发服务器公钥”的请求并发往密钥分发服务器,密钥分发服务器使用相同的算法和会话密钥机密此消息后,将密钥分发服务器公钥加密后发送至app,当app获取到密钥分发服务器公钥之后,app使用密钥分发服务器的公钥将app的公钥,随机字符串k,当前手机的唯一识别符进行rsa加密,并使用app的私钥对消息进行签名,向密钥分发服务器注册当前手机,当app向密钥分发服务器注册完成后,用户可以进行登录、注册等操作,在用户未登录的情况下,app与密钥分发服务器之间的交互的消息都将使用对方的公钥加密,并使用自身的私钥进行消息签名。
15.进一步,所述密钥分发服务器用于向用户鉴权服务器提供会话密钥支持,具体的,用户在app上填写注册信息,app向密钥分发服务器申请用户注册,密钥分发服务器生成一个新用户,放到缓存中,并将新用户的id返回给app,app向密钥分发服务器请求新用户的共
享主密钥,app向密钥分发服务器申请与用户鉴权服务器的会话密钥,app向用户鉴权服务器注册用户。
16.进一步,用户填写注册信息包括用户昵称,登录密码,开门密码;app向密钥分发服务器申请用户注册,密钥分发服务器生成一个新用户,放到缓存中,并将新用户的id返回给app,app向密钥分发服务器请求新用户的共享主密钥,app向密钥分发服务器申请与用户鉴权服务器的会话密钥,app向用户鉴权服务器注册用户,具体的,app将使用密钥分发服务器的公钥加密“申请注册用户”的请求并用自己的私钥签名发送给密钥分发服务器,密钥分发服务器接收到这个消息后,生成一个新的用户存放在内存之中并对这个新用户初始化,生成这个新用户的id、与密钥分发服务器初始的共享密钥,在初始化完成之后,密钥分发服务器将使用app的公钥加密新用户的id,并用使用其私钥签名,随后发送给app,app使用自身私钥解密后得到新用户的id,随后将用户id,用户输入的登录密码一起,使用sm3进行消息摘要生成pl,同时对用户输入的开门密码进行同样的操作生成p0,当生成操作完成后,app使用密钥分发服务器的公钥加密用户id和“向密钥分发服务器请求该用户与密钥分发服务器的共享密钥”的请求并用app的私钥签名,密钥分发服务器在获取到消息后,使用app公钥加密请求用户的共享密钥并使用密钥分发服务器私钥签名,发送至app,app收到消息后,解密后得到用户的共享密钥并使用此共享密钥和aes-256加密算法加密“向密钥分发服务器申请与用户鉴权服务器的会话密钥”的请求,并使用该app的唯一识别符和sha-256算法进行签名,密钥分发服务器收到请求并确认无误后,生成一个新的会话密钥并生成一个由用户id和会话密钥组成的消息包并使用用户鉴权服务器和密钥分发服务器之间的共享密钥加密,将加密结果和会话密钥连结后由用户的共享密钥和aes-256算法加密后,用密钥分发服务器的私钥签名返回给app,app解密获取到共享密钥后,将用户id,用户昵称,p0,pl和密钥分发服务器要求app转发的消息包一并使用会话密钥加密并使用会话密钥签名,发送至用户鉴权服务器,用户鉴权服务器核对信息无误后,将用户保存至用户数据库,并告知密钥分发服务器此用户已注册完成,可以将用户存入数据库,假如密钥分发服务器没有在约定时间内收到用户鉴权服务器注册完成的请求的话,密钥分发服务器会将这个用户释放。
17.进一步,对于每次app重新启动,被其他程序覆盖时需要用户重新登录,具体的,用户提供用户名和密码,app向密钥分发服务器请求用户的共享主密钥,然后app向密钥分发服务器申请会话秘钥,然后app向用户鉴权服务器请求用户登录。
18.进一步,用户鉴权服务器与门锁相互传递数据请求并反馈处理结果,具体的,将用户购买的门的管理权限赋予用户,用户和门之间的权限关系包括管理员权限,普通权限,临时权限,临时权限包括基于时间的临时权限和基于次数的临时权限,对于一个基于nfc的安全智能型酒店门禁系统门锁来说管理员权限的用户只有一个,普通权限和临时权限的用户多个,对于每一个新生成的门,其默认的管理员权限应在管理系统或者在生产厂家手中,但门锁一旦被出售,其管理员权限转交至代理商手中,如果用户将门购买走,那么代理商应当使用自己的账号,将门锁管理员权限转至用户手中。
19.进一步,当用户拿到管理员权限后就可以为家人或者朋友添加一个相应的权限,具体的,用户点击app中门锁权限管理页面,app会按照用户的权限对门锁权限信息展示,当用户点击拥有管理员权限的门的按钮时,会让用户输入添加要添加的用户的id,并为这个用户选择一个权限,当点击确定的时候,app会向用户鉴权服务器发出权限修改的请求,用
户鉴权服务器得到请求后,查询该用户是否有这个门的管理员权限,并检查相关参数的合法性,验证完毕后将处理结果返回,当用户请求赋予的权限为管理员权限时,该门的管理员权限将会转移至新的用户,当用户请求赋予的权限为普通权限时,新用户将拥有这个门的开门权限,而其他权限将不被赋予,当用户请求赋予的权限为临时权限时,新用户将拥有这个门的临时开门权限,用户也可以为新用户选择基于时间的临时权限和基于次数的临时权限。
20.进一步,用户打开拥有管理员权限或者普通权限的门的过程是:当用户走到门前,用户点击想要打开的门的按钮,app会要求用户输入开门密码,待用户输入完成后,app向用户鉴权服务器发起开门请求,具体的,用户点击想要开的门输入开门密码,app向鉴权服务器发出开门请求,鉴权服务器根据app传入的消息进行鉴权,鉴权服务器确定用户拥有权限时,向数据库查询门锁信息,鉴权服务器根据查询的信息计算当前的开门密码,app获取到开门密码后提醒用户将手机靠近门锁感应区,门锁感应到后,根据自身信息验证传入的密码的正确性,门锁记录当前开门的日志并返回鉴权服务器;
21.用户打开临时权限的门时,用户鉴权服务器会根据当前用户所拥有的权限进行鉴权,如用户拥有该门的基于时间的临时权限时,用户鉴权服务器会鉴权用户开门的操作发起时间是否还在合法的时间范围内,如用户拥有基于次数的临时权限时,用户开门的操作发起时,用户鉴权服务器会鉴权用户的开门次数是否还在合法的次数之中,具体的,用户点击想要开的门输入开门密码,app向鉴权服务器发出开门请求,鉴权服务器根据app传入的消息进行鉴权,鉴权服务器确定用户拥有权限时,向数据库查询具体的权限信息,判断当前用户的开门时间或者开门次数是否在合法范围内,鉴权服务器根据查询的信息计算当前的开门密码,app获取到开门密码后提醒用户将手机靠近门锁感应区,门锁感应到后,根据自身信息验证传入的密码的正确性,门锁记录当前开门的日志并返回鉴权服务器,鉴权服务器更新用户权限。
22.有益效果
23.(1)安全性:针对密码门禁和感应卡门禁存在的安全性较低的问题,本发明计划使用nfc技术,用户通过得到指令后获得的密钥,可直接刷手机开锁入住,即使在手机没电的情况下也可正常刷卡。避免了被他人窥视密码,或感应卡丢失等问题。另有rsa和aes加密技术,对使用双方建立网络安全协议并进行双向验证从而保证通信双方的合法性和安全性。
24.(2)便捷性:针对酒店本身缺少集中信息化管理,本发明计划使用智能化app对用户的入住信息及门禁系统进行统一化管理检测,可同时满足实名认证、信息录入、密钥分配等多个步骤和功能,便于用户实现一键入住,大大简化入住手续,节约双方时间成本,进一步深化酒店的信息化管理。
25.(3)普及性:对于当前门禁系统成本高,难以普及的问题,本发明相较于生物识别门禁系统,在硬件要求上相对较低,在硬件方面的成本和造价远远低于生物识别门禁,还避免了ic卡的制作,另外相较于其他智能门锁,使用寿命也有所增长,可有效解决成本高难以普及等问题。
附图说明
26.图1为本发明的实施例的系统结构图;
27.图2为本发明的实施例中nfc智能门禁系统的用户使用流程图;
28.图3为本发明的实施例中新下载的app的启动流程图;
29.图4为本发明的实施例中用户注册流程图;
30.图5为本发明的实施例中用户登录流程图;
31.图6为本发明的实施例中用户获得购买门权限的流程图;
32.图7为本发明的实施例中用户打开管理员权限或普通权限门的流程图;
33.图8为本发明的实施例中用户打开拥有临时权限的门流程图;
34.图9为本发明的实施例中app向密钥分发服务器注册流程图;
35.图10为本发明的实施例中用户注册流程图;
36.图11为本发明的实施例中用户登录流程图;
37.图12为本发明的实施例中用户开门流程图;
38.图13为本发明的实施例中会话密钥生成流程图;
39.图14为本发明的实施例中门锁开门密钥生成流程图。
具体实施方式
40.下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
41.本发明基于nfc技术和物联网,通过使用spring boot架构的服务器、基于android的客户端与基于树莓派的硬件门锁实现了智能门禁的功能。在本发明使用了rsa或aes加密技术对系统的安全进行了保护,并通过使用双向认证的方式对用户和服务器进行了验证,从而保证通信双方的合法性。旨在开发出一套应用nfc技术,并与物联网紧密结合的高安全性智能门锁系统。
42.本发明主要包括鉴权服务器、app和门锁三个模块,三个模块之间的关系如图1系统结构图,包括用户鉴权服务器、密钥分发服务器、app和门锁,所述密钥分发服务器用于分别向用户鉴权服务器、app、门锁提供会话密钥支持,用户鉴权服务器与app相互传递数据请求并反馈处理结果,用户鉴权服务器与门锁相互传递数据请求并反馈处理结果,app向门锁传递开锁请求,app与用户鉴权服务器、密钥分发服务器中任何一个服务器交互时都经过加密,对于本发明的使用用户都将经历如图2的使用流程,包括经历注册,登录,权限管理,开门步骤,而在进行这几步之前,对于每个应用都将经历一个初始化过程,具体分析如下:
43.1.app初始化
44.对于app初次启动,app将会生成一个类似于机器指纹的识别符,唯一标识自身,生成自己的公钥和私钥,申请密钥分发服务器公钥,获取到密钥分发服务器的公钥后,使用rsa算法加密,使用sha-1算法签名,向密钥分发服务器注册自身并显示注册结果,如图3新下载的app的启动流程图,初次启动app,app计算生成机器指纹,然后app计算生成自己的公钥和私钥,然后app向密钥分发服务器申请公钥,获取到密钥分发服务器公钥之后,app使用密钥分发服务器公钥向密钥分发服务器发送注册请求,成功后,将app公钥,私钥,密钥分发服务器公钥保存至本地数据库,密钥分发服务器接受到app的注册请求后,保存到密钥分发
服务器的数据库。
45.2.用户注册
46.对于每一个用户来说,注册用户都是必须的一步,在本发明中,在用户注册时需要提供以下几个内容:用户昵称、登录密码、开门密码,其余工作都交由app自动完成,具体流程图4所示的用户注册流程图,由此方法注册的用户,在第二步的时候生成的用户的id将会在进行第三步的时候显示给用户,以后用户每一次登录都应使用这个id来登录。
47.3.用户登录
48.对于每次app重新启动,被其他程序覆盖都要让用户重新登录。用户应当使用注册时返回的用户id和注册时输入的密码来进行登录。具体流程图如图5所示的用户登录流程图。
49.4.用户权限管理
50.在上一节中,用户已经成功创建了一个用户,并且可以顺利登录到应用之中。此时要做的应该是将用户购买的门的管理权限赋予用户。
51.5.为用户自己添加一个门
52.用户和门之间的权限关系大致分为三种,管理员权限,普通权限,临时权限,临时权限有分为时间基于时间的临时权限和基于次数的临时权限。处于安全考虑,对于一个基于nfc的安全智能型酒店门禁系统门锁来说管理员权限的用户应该只有一个,而普通权限和临时权限在用户数量上应不做要求。对于每一个新生成的门,其默认的管理员权限应在管理系统或者在生产厂家手中,但门锁一旦被出售,其管理员权限应当被及时的转交至代理商手中,一旦有用户将门购买走,那么代理商应当使用自己的账号,将门锁管理员权限转至用户手中,如图6所示的用户获得购买门权限的流程图。
53.6.为用户的门上添加一个新的用户
54.当用户拿到管理员权限后就可以为家人或者朋友添加一个相应的权限。
55.用户点击app中门锁权限管理页面,app会按照用户的权限对门锁权限信息展示,当用户点击拥有管理员权限的门的按钮时,会让用户输入添加要添加的用户的id,并为这个用户选择一个权限。当点击确定的时候,app会向用户鉴权服务器发出权限修改的请求。用户鉴权服务器得到请求后,查询该用户是否有这个门的管理员权限,并检查相关参数的合法性。验证完毕后将处理结果返回。
56.当用户请求赋予的权限为管理员权限时,该门的管理员权限将会转移至新的用户。
57.当用户请求赋予的权限为普通权限时,新用户将拥有这个门的开门权限,而其他权限将不被赋予。
58.当用户请求赋予的权限为临时权限时,新用户将拥有这个门的临时开门权限,用户也可以为新用户选择按时间开门的权力或者按次数开门的权力,按时间开门的权利可以被用于例如酒店等场景,而按次数开门的权利,可用于诸如清洁人员等人员在房间无人时需要打开门的场景。
59.7.开门操作
60.对于一个门禁系统最重要的就是开门操作。本发明中对每一个门锁都内置一个基础密钥,简称为基钥,在门锁内部的数据库中存储了一个开锁次数的键值。门锁会对每一次
用户通过nfc传入的密钥值进行比对,比对的范围为开门次数之外的五次。在理论上,对于每次开门请求(无论成功或者失败),服务维护的开门次数都将增加一次,而门锁控件则对失败的开门次数则不会增加,这个开门次数和门锁基钥在门锁控件开锁次数达到20次时,门锁控件会主动向用户鉴权服务器请求更换密钥,当更新出现错误的时候,门锁控件的基钥和开门次数都不会更新。由于更换密钥操作为门锁主动请求,而非服务器主动更换,故不会存在因为密钥更新而导致门锁无法打开的情况。下面分情况讨论不同权限等级下,用户开门的情况:
61.打开拥有管理员权限和普通权限的门
62.用户打开拥有管理员权限或者普通权限的门的过程是一样的,当用户走到门前,用户点击想要打开的门的按钮,app会要求用户输入开门密码,待用户输入完成后,app向用户鉴权服务器发起开门请求。整体流程如图7用户打开管理员权限或普通权限门的流程图,用户点击想要开的门输入开门密码,app向鉴权服务器发出开门请求,鉴权服务器根据app传入的消息进行鉴权,鉴权服务器确定用户拥有权限时,向数据库查询门锁信息,鉴权服务器根据查询的信息计算当前的开门密码,app获取到开门密码后提醒用户将手机靠近门锁感应区,门锁感应到后,根据自身信息验证传入的密码的正确性,门锁记录当前开门的日志并返回鉴权服务器;
63.打开拥有临时权限的门
64.用户打开临时权限的门时,服务器会根据当前用户所拥有的权限进行鉴权,如用户拥有该门的基于时间的临时权限时,用户开门的操作发起时间是否还在合法的时间范围内,同样当用户拥有基于次数的临时权限时,用户开门的操作发起时,用户的开门次数是否还在合法的次数之中,具体的如图8所示的用户打开拥有临时权限的门流程图,用户点击想要开的门输入开门密码,app向鉴权服务器发出开门请求,鉴权服务器根据app传入的消息进行鉴权,鉴权服务器确定用户拥有权限时,向数据库查询具体的权限信息,判断当前用户的开门时间或者开门次数是否在合法范围内,鉴权服务器根据查询的信息计算当前的开门密码,app获取到开门密码后提醒用户将手机靠近门锁感应区,门锁感应到后,根据自身信息验证传入的密码的正确性,门锁记录当前开门的日志并返回鉴权服务器,鉴权服务器更新用户权限。
65.本发明创造的优点:针对密码门禁和感应卡门禁存在的安全性较低的问题,本发明计划使用nfc技术,用户通过得到指令后获得的密钥,可直接刷手机开锁入住,即使在手机没电的情况下也可正常刷卡。避免了被他人窥视密码,或感应卡丢失等问题。另有rsa和aes加密技术,对使用双方建立网络安全协议并进行双向验证从而保证通信双方的合法性和安全性。针对酒店本身缺少集中信息化管理,本发明计划使用智能化app对用户的入住信息及门禁系统进行统一化管理检测,可同时满足实名认证、信息录入、密钥分配等多个步骤和功能,便于用户实现一键入住,大大简化入住手续,节约双方时间成本,进一步深化酒店的信息化管理。对于当前门禁系统成本高,难以普及的问题,本发明相较于生物识别门禁系统,在硬件要求上相对较低,在硬件方面的成本和造价远远低于生物识别门禁,还避免了ic卡的制作,另外相较于其他智能门锁,使用寿命也有所增长,可有效解决成本高难以普及等问题。
66.在一个具体的实施例中,本发明提供的基于nfc技术的物联网智能型酒店门禁系
统,本发明当中主要涉及到两个服务器:密钥分发服务器和用户鉴权服务器,对于两个服务器来说最重要是会话的安全和密钥的产生和传递。
67.1.加密设计
68.在app和两个服务器中任何一个交互的时候都不应使用明文传输。在本发明中采用了多种加密算法,包括但不限于技术方案中所涉及的所有算法。
69.1.1.app初始化时的加密
70.参考图9所示的app向密钥分发服务器注册流程图,在app初次启动时,app会生成类似于机器指纹的识别符,唯一标识自身。
71.在本发明中,app在生成识别符时,会申请会申请获取手机的cpu序列号和mac地址,将两者连结成一个字符串m,采用sm3算法,计算生成唯一识别符。sm3算法可以将对任意长的消息计算出一个消息认证码(32字节),本发明中将最后输出的消息认证码作为这个手机的唯一识别符,并且该识别符不会保存在硬盘或数据库中,该识别符被设定为运行时生成,即每次需要使用指纹时该app都会对这个识别符重新计算。
72.在生成供rsa算法使用的公私钥对时,由java.security.keypairgenerator类负责初始化,使用keypairgenerator类的()initialize int keysize方法,生成一个长度为2048位的密钥对,将初始化函数生成的密钥对存放在java.security.keypair类的对象之中,,通过getpublic()方法和getprivate()方法获取到生成的公钥和私钥,生成的公钥和私钥将被保存在一个java.util.map对象之中。
73.app完成上述步骤之后app将会检测本地是否存在用于保存密钥的数据库,若不存在则新建一个数据库,若存在则将上面生成的公钥和私钥使用一个随机字符串k作为密钥,使用aes-256加密算法加密后存入数据库中。然后使用d-h协议与密钥分发服务器协商会话密钥ks,当会话密钥协商完毕之后,app使用aes-256加密算法和会话密钥,加密“申请密钥分发服务器公钥”的请求并发往密钥分发服务器。密钥分发服务器使用相同的算法和会话密钥机密此消息后,将密钥分发服务器公钥加密后发送至app。当app获取到密钥分发服务器公钥之后,app使用密钥分发服务器的公钥将app的公钥,随机字符串k,当前手机的唯一识别符进行rsa加密,并使用app的私钥对消息进行签名,向密钥分发服务器注册当前手机。当app向密钥分发服务器注册完成后,用户可以进行登录、注册等操作,在用户未登录的情况下,app与密钥分发服务器之间的交互的消息都将使用对方的公钥加密,并使用自身的私钥进行消息签名,具体的加密方法包括:
74.1.2.用户注册时的加密需求
75.参考图10所示的用户注册流程图,在本发明中,用户注册时将会被要求输入三个值:用户昵称,登录密码,开门密码。当输入完成时,用户需要点击注册按钮,随后app将使用密钥分发服务器的公钥加密“申请注册用户”的请求并用自己的私钥签名发送给密钥分发服务器。密钥分发服务器接收到这个消息后,生成一个新的用户存放在内存之中并对这个新用户初始化,生成这个新用户的id、与密钥分发服务器初始的共享密钥。在初始化完成之后,密钥分发服务器将使用app的公钥加密新用户的id,并用使用其私钥签名,随后发送给app。app使用自身私钥解密后得到新用户的id,随后将用户id,用户输入的登录密码一起,使用sm3进行消息摘要生成pl,同时对用户输入的开门密码进行同样的操作生成p0,当生成操作完成后,app使用密钥分发服务器的公钥加密用户id和“向密钥分发服务器请求该用户
与密钥分发服务器的共享密钥”的请求并用app的私钥签名。密钥分发服务器在获取到消息后,使用app公钥加密请求用户的共享密钥并使用密钥分发服务器私钥签名,发送至app。app收到消息后,解密后得到用户的共享密钥并使用此共享密钥和aes-256加密算法加密“向密钥分发服务器申请与用户鉴权服务器的会话密钥”的请求,并使用该app的唯一识别符和sha-256算法进行签名。密钥分发服务器收到请求并确认无误后,生成一个新的会话密钥并生成一个由用户id和会话密钥组成的消息包并使用用户鉴权服务器和密钥分发服务器之间的共享密钥加密,将加密结果和会话密钥连结后由用户的共享密钥和aes-256算法加密后,用密钥分发服务器的私钥签名返回给app。app解密获取到共享密钥后,将用户id,用户昵称,p0,pl和密钥分发服务器要求app转发的消息包一并使用会话密钥加密并使用会话密钥签名,发送至用户鉴权服务器。用户鉴权服务器核对信息无误后,将用户保存至用户数据库,并告知密钥分发服务器此用户已注册完成,可以将用户存入数据库。假如密钥分发服务器没有在约定时间内收到用户鉴权服务器注册完成的请求的话,密钥分发服务器会将这个用户释放。
76.1.3.用户登录时的加密需求
77.参考图11所示的用户登录流程图,用户在使用本发明的时都应先进行登录,故无论是用户新打开app还是从其他程序切换至正在运行的app的时候,都应当先进行登录操作。
78.用户打开登录页面时,app要求用户输入用户id和登录密码,当用户点击登录按钮的时候,app使用密钥分发服务器的公钥加密用户id和“向密钥分发服务器请求该用户与密钥分发服务器的共享密钥”的请求并用app私钥签名。密钥分发服务器在获取到请求后,使用app公钥加密用户的共享密钥并使用密钥分发服务器私钥签名,发送至app。app收到消息后,解密获得用户的共享密钥。随后app使用获取到的用户的共享密钥和aes-256加密算法,向密钥分发服务器申请与用户鉴权服务器的会话密钥并使用该app私钥进行签名。密钥分发服务器收到请求并确认无误后,生成一个新的会话密钥,并生成一个由用户id和会话密钥组成的消息包,使用用户鉴权服务器与密钥分发服务器的共享密钥加密后,将加密后的消息包和会话密钥一起,由用户的共享密钥和aes-256算法加密后,用密钥分发服务器私钥进行签名,随后将消息发送至app。app解密后,获取到共享密钥,将用户id,用户输入的登录密码连结,使用sm3算法进行消息摘要生成,将用户id,用户昵称,和密钥分发服务器要求app转发的消息包一并使用会话密钥加密,并使用会话密钥签名,发送至用户鉴权服务器。用户鉴权服务器核对信息无误后,返回确认的登录成功的消息。
79.1.4.用户开门时的加密需求
80.参考图12所示的用户开门流程图,在本发明中,开门业务是用户使用次数最多的业务。对于某个用户来说,每天都至少开关门两次,即当在本发明中有n个的用户的时候,每天处理开门业务的次数最少在n到2n次之间。
81.当用户需要使用开门服务的时,点击app的开门按钮,app首先会使用用户与密钥分发服务器的共享密钥加密一个“申请会话密钥”的请求发至密钥分发服务器。密钥分发服务器使用与用户的共享密钥加密新生成的会话密钥和上文提到的消息包,当消息返回到app的时候,app将解密出会话密钥来加密“向用户鉴权服务器申请当前用户门锁权限列表”的请求。当用户鉴权服务器收到请求后,将查询用户的权限列表,将列表序列化成一个
string类型后将这个字符串使用会话密钥进行aes-256加密并将加密结果返回。
82.app收到加密后的字符串后将字符串解密,随后将解密结果进行反序列化,将结果进行分类以门锁列表的形式展示,用户通过点击门锁列表中对应的特定的按钮来触发开门请求。
83.用户点击想要打开的门所对应的按钮后,app要求用户输入开门密码,待用户输入完成后,app将开门密码和用户id结合在一起计算一个摘要值,app再向密钥分发服务器申请会话密钥,然后将用户id和,想要打开门的id加密后发送至用户鉴权服务器。用户鉴权服务器对消息进行解密并对用户请求进行鉴权操作。鉴权成功后将门基钥和开门次数通过特定的函数计算出当前的开门密钥。将结果加密后返回给app。app获得开门密钥后,app向密钥分发服务器申请与该门的会话密钥,当app获取到与门锁的会话密钥后,使用此密钥将开门密钥加密并通过nfc发送至门锁。
84.门锁感应到nfc传入的消息后,使用与密钥分发服务器的共享密钥解密消息,得到会话密钥,随后使用会话密钥解密剩余消息,从而得到想要开门的用户id,传入的开门密钥,门锁使用存储的基钥和开门次数计算传入的开门密钥是否合法,随后向密钥分发服务器申请与用户鉴权服务器的会话密钥,当门锁获取到会话密钥后将门锁id、用户id加密后发送到用户鉴权服务器,用户鉴权服务器查询用户权限,记录开门记录并将鉴权结果返回给门锁。若上述所有环节均成功,则用户开门成功。具体流程图12。
85.2.密钥生成设计
86.对于本发明中,使用最频繁的业务是会话密钥请求,而是用最多的加密算法为aes-256算法,aes-256算法接收256位的密钥,即32字节长度密钥(1字节=8位),所以本发明中要求密钥生成算法应满足:高并发的场景下,同一时间的不同请求的密码不同,同一用户不同时间的密钥不同,不同用户在特定间隔内产生的密钥不同。对于门锁的基钥,本发明中要求为16字节(64位)长度的密钥。对于用户、门锁和用户鉴权服务器与密钥分发服务器之间的共享密钥。本发明的要求为32字节(256位)长度的密钥。
87.2.1.会话密钥生成
88.本发明中的会话密钥生成的要求是:长度为32字节且满足高并发无冲突。
89.在设计方案中介绍了ansi x.9 17伪随机数生成器,此种伪随机数生成器是当下密码强度安全最高的伪随机数生成器之一。在本发明中,将采用这种伪随机数生成器进行密钥的生成。ansi x9.17伪随机数生成器的输出为56位随机位,而本发明中会话密钥长度为256位。由于56和256的最小公倍数为1792(256的7倍,56的32倍),所以在本发明中,密钥分配中心的设计中单独的开辟了线程用来生成会话密钥。在此线程中运行密钥生成工厂函数,该工厂函数不断的向密钥缓存队列存放随机产生的位。当会话密钥请求到来时,密钥分发服务器向队列读取256位作为会话密钥返回给请求的发起方。在本文第七章中给出了对于此方法可用性的证明。具体流程图13所示的会话密钥生成流程图。
90.2.2.门锁开门密钥生成
91.门锁的开门密钥与门锁的基钥和开门次数息息相关,门锁的基钥为16字节(64位)的密钥,参考图14所示的门锁开门密钥生成流程图,每一次开门都将门锁的基钥使用sm3算法计算一次摘要值,由于sm3算法的摘要长度为32字节(256比特)长是本发明中门锁基钥长度的2倍,故应将sm3算法的结果进行二次压缩,在本发明中采用的压缩算法f如下:
92.■
计算传入字符串m的每个字符的用户鉴权服务器cii码之和s
93.■
判断s的奇偶性
94.◆
如果为偶数:
95.计算m中奇数位上的字符t1和其下一字符t2的用户鉴权服务器cii码之和s’96.计算在模25上,s模s’的值k
97.取出m中第k个字符t398.将t1,t2,t3进行异或
99.◆
如果为奇数:
100.计算m中字符t4和t4中心对称的字符的用户鉴权服务器cii码之和s”计算在模25上,s模s”的值k’101.取出m中第k’个字符t6102.将t4,t5,~t6进行异或
103.◆
得出结果16字节(64位)串。
技术特征:
1.一种基于nfc技术的物联网智能型酒店门禁系统,其特征在于,包括用户鉴权服务器、密钥分发服务器、app和门锁,所述密钥分发服务器用于分别向用户鉴权服务器、app、门锁提供会话密钥支持,用户鉴权服务器与app相互传递数据请求并反馈处理结果,用户鉴权服务器与门锁相互传递数据请求并反馈处理结果,app向门锁传递开锁请求,app与用户鉴权服务器、密钥分发服务器中任何一个服务器交互时都经过加密,每一个门锁都内置一个基础密钥,在门锁内部的数据库中存储了一个开锁次数的键值,门锁会对每一次用户通过nfc传入的密钥值进行比对,比对的范围为开门次数之外的五次,对于每次开门请求,无论成功或者失败,服务维护的开门次数都将增加一次,而门锁控件则对失败的开门次数则不会增加,开门次数和门锁基钥在门锁控件开锁次数达到20次时,门锁控件会主动向用户鉴权服务器请求更换密钥,当更新出现错误的时候,门锁控件的基钥和开门次数都不会更新,由于更换密钥操作为门锁主动请求,而非服务器主动更换,故不会存在因为密钥更新而导致门锁无法打开的情况。2.根据权利要求1所述的一种基于nfc技术的物联网智能型酒店门禁系统,其特征在于,密钥分发服务器向app提供会话密钥支持,具体的,初次启动app,app计算生成机器指纹,然后app计算生成自己的公钥和私钥,然后app向密钥分发服务器申请公钥,获取到密钥分发服务器公钥之后,app使用密钥分发服务器公钥向密钥分发服务器发送注册请求,成功后,将app公钥,私钥,密钥分发服务器公钥保存至本地数据库,密钥分发服务器接受到app的注册请求后,保存到密钥分发服务器的数据库。3.根据权利要求2所述的一种基于nfc技术的物联网智能型酒店门禁系统,其特征在于,app计算生成机器指纹,具体的,app在生成识别符时,会申请会申请获取手机的cpu序列号和mac地址,将两者连结成一个字符串m,采用sm3算法,计算生成唯一识别符,sm3算法可以将对任意长的消息计算出一个消息认证码,将最后输出的消息认证码作为所述手机的唯一识别符,并且该识别符不会保存在硬盘或数据库中,所述识别符被设定为运行时生成,每次需要使用指纹时该app都会对这个识别符重新计算。4.根据权利要求2所述的一种基于nfc技术的物联网智能型酒店门禁系统,其特征在于,app计算生成自己的公钥和私钥,具体的,在生成供rsa算法使用的公私钥对时,由java.security.keypairgenerator类负责初始化,使用keypairgenerator类的()initialize int keysize方法,生成一个长度为2048位的密钥对,将初始化函数生成的密钥对存放在java.security.keypair类的对象之中,,通过getpublic()方法和getprivate()方法获取到生成的公钥和私钥,生成的公钥和私钥将被保存在一个java.util.map对象之中。5.根据权利要求2所述的一种基于nfc技术的物联网智能型酒店门禁系统,其特征在于,app使用密钥分发服务器公钥向密钥分发服务器发送注册请求,成功后,将app公钥,私钥,密钥分发服务器公钥保存至本地数据库,密钥分发服务器接受到app的注册请求后,保存到密钥分发服务器的数据库,具体的,app在计算生成自己的公钥和私钥后,app将会检测本地是否存在用于保存密钥的数据库,若不存在则新建一个数据库,若存在则将上面生成的公钥和私钥使用一个随机字符串k作为密钥,使用aes-256加密算法加密后存入数据库中,然后使用d-h协议与密钥分发服务器协商会话密钥ks,当会话密钥协商完毕之后,app使用aes-256加密算法和会话密钥,加密“申请密钥分发服务器公钥”的请求并发往密钥分发
服务器,密钥分发服务器使用相同的算法和会话密钥机密此消息后,将密钥分发服务器公钥加密后发送至app,当app获取到密钥分发服务器公钥之后,app使用密钥分发服务器的公钥将app的公钥,随机字符串k,当前手机的唯一识别符进行rsa加密,并使用app的私钥对消息进行签名,向密钥分发服务器注册当前手机,当app向密钥分发服务器注册完成后,用户可以进行登录、注册等操作,在用户未登录的情况下,app与密钥分发服务器之间的交互的消息都将使用对方的公钥加密,并使用自身的私钥进行消息签名。6.根据权利要求1所述的一种基于nfc技术的物联网智能型酒店门禁系统,其特征在于,所述密钥分发服务器用于向用户鉴权服务器提供会话密钥支持,具体的,用户在app上填写注册信息,app向密钥分发服务器申请用户注册,密钥分发服务器生成一个新用户,放到缓存中,并将新用户的id返回给app,app向密钥分发服务器请求新用户的共享主密钥,app向密钥分发服务器申请与用户鉴权服务器的会话密钥,app向用户鉴权服务器注册用户。7.根据权利要求6所述的一种基于nfc技术的物联网智能型酒店门禁系统,其特征在于,用户填写注册信息包括用户昵称,登录密码,开门密码;app向密钥分发服务器申请用户注册,密钥分发服务器生成一个新用户,放到缓存中,并将新用户的id返回给app,app向密钥分发服务器请求新用户的共享主密钥,app向密钥分发服务器申请与用户鉴权服务器的会话密钥,app向用户鉴权服务器注册用户,具体的,app将使用密钥分发服务器的公钥加密“申请注册用户”的请求并用自己的私钥签名发送给密钥分发服务器,密钥分发服务器接收到这个消息后,生成一个新的用户存放在内存之中并对这个新用户初始化,生成这个新用户的id、与密钥分发服务器初始的共享密钥,在初始化完成之后,密钥分发服务器将使用app的公钥加密新用户的id,并用使用其私钥签名,随后发送给app,app使用自身私钥解密后得到新用户的id,随后将用户id,用户输入的登录密码一起,使用sm3进行消息摘要生成pl,同时对用户输入的开门密码进行同样的操作生成p0,当生成操作完成后,app使用密钥分发服务器的公钥加密用户id和“向密钥分发服务器请求该用户与密钥分发服务器的共享密钥”的请求并用app的私钥签名,密钥分发服务器在获取到消息后,使用app公钥加密请求用户的共享密钥并使用密钥分发服务器私钥签名,发送至app,app收到消息后,解密后得到用户的共享密钥并使用此共享密钥和aes-256加密算法加密“向密钥分发服务器申请与用户鉴权服务器的会话密钥”的请求,并使用该app的唯一识别符和sha-256算法进行签名,密钥分发服务器收到请求并确认无误后,生成一个新的会话密钥并生成一个由用户id和会话密钥组成的消息包并使用用户鉴权服务器和密钥分发服务器之间的共享密钥加密,将加密结果和会话密钥连结后由用户的共享密钥和aes-256算法加密后,用密钥分发服务器的私钥签名返回给app,app解密获取到共享密钥后,将用户id,用户昵称,p0,pl和密钥分发服务器要求app转发的消息包一并使用会话密钥加密并使用会话密钥签名,发送至用户鉴权服务器,用户鉴权服务器核对信息无误后,将用户保存至用户数据库,并告知密钥分发服务器此用户已注册完成,可以将用户存入数据库,假如密钥分发服务器没有在约定时间内收到用户鉴权服务器注册完成的请求的话,密钥分发服务器会将这个用户释放;对于每次app重新启动,被其他程序覆盖时需要用户重新登录,具体的,用户提供用户名和密码,app向密钥分发服务器请求用户的共享主密钥,然后app向密钥分发服务器申请会话秘钥,然后app向用户鉴权服务器请求用户登录。
8.根据权利要求1所述的一种基于nfc技术的物联网智能型酒店门禁系统,其特征在于,用户鉴权服务器与门锁相互传递数据请求并反馈处理结果,具体的,将用户购买的门的管理权限赋予用户,用户和门之间的权限关系包括管理员权限,普通权限,临时权限,临时权限包括基于时间的临时权限和基于次数的临时权限,对于一个基于nfc的安全智能型酒店门禁系统门锁来说管理员权限的用户只有一个,普通权限和临时权限的用户多个,对于每一个新生成的门,其默认的管理员权限应在管理系统或者在生产厂家手中,但门锁一旦被出售,其管理员权限转交至代理商手中,如果用户将门购买走,那么代理商应当使用自己的账号,将门锁管理员权限转至用户手中。9.根据权利要求8所述的一种基于nfc技术的物联网智能型酒店门禁系统,其特征在于,当用户拿到管理员权限后就可以为家人或者朋友添加一个相应的权限,具体的,用户点击app中门锁权限管理页面,app会按照用户的权限对门锁权限信息展示,当用户点击拥有管理员权限的门的按钮时,会让用户输入添加要添加的用户的id,并为这个用户选择一个权限,当点击确定的时候,app会向用户鉴权服务器发出权限修改的请求,用户鉴权服务器得到请求后,查询该用户是否有这个门的管理员权限,并检查相关参数的合法性,验证完毕后将处理结果返回,当用户请求赋予的权限为管理员权限时,该门的管理员权限将会转移至新的用户,当用户请求赋予的权限为普通权限时,新用户将拥有这个门的开门权限,而其他权限将不被赋予,当用户请求赋予的权限为临时权限时,新用户将拥有这个门的临时开门权限,用户也可以为新用户选择基于时间的临时权限和基于次数的临时权限。10.根据权利要求8所述的一种基于nfc技术的物联网智能型酒店门禁系统,其特征在于,用户打开拥有管理员权限或者普通权限的门的过程是:当用户走到门前,用户点击想要打开的门的按钮,app会要求用户输入开门密码,待用户输入完成后,app向用户鉴权服务器发起开门请求,具体的,用户点击想要开的门输入开门密码,app向鉴权服务器发出开门请求,鉴权服务器根据app传入的消息进行鉴权,鉴权服务器确定用户拥有权限时,向数据库查询门锁信息,鉴权服务器根据查询的信息计算当前的开门密码,app获取到开门密码后提醒用户将手机靠近门锁感应区,门锁感应到后,根据自身信息验证传入的密码的正确性,门锁记录当前开门的日志并返回鉴权服务器;用户打开临时权限的门时,用户鉴权服务器会根据当前用户所拥有的权限进行鉴权,如用户拥有该门的基于时间的临时权限时,用户鉴权服务器会鉴权用户开门的操作发起时间是否还在合法的时间范围内,如用户拥有基于次数的临时权限时,用户开门的操作发起时,用户鉴权服务器会鉴权用户的开门次数是否还在合法的次数之中,具体的,用户点击想要开的门输入开门密码,app向鉴权服务器发出开门请求,鉴权服务器根据app传入的消息进行鉴权,鉴权服务器确定用户拥有权限时,向数据库查询具体的权限信息,判断当前用户的开门时间或者开门次数是否在合法范围内,鉴权服务器根据查询的信息计算当前的开门密码,app获取到开门密码后提醒用户将手机靠近门锁感应区,门锁感应到后,根据自身信息验证传入的密码的正确性,门锁记录当前开门的日志并返回鉴权服务器,鉴权服务器更新用户权限。
技术总结
本发明具体涉及一种基于NFC技术的物联网智能型酒店门禁系统,包括用户鉴权服务器、密钥分发服务器、APP和门锁,所述密钥分发服务器用于分别向用户鉴权服务器、APP、门锁提供会话密钥支持,用户鉴权服务器与APP相互传递数据请求并反馈处理结果,用户鉴权服务器与门锁相互传递数据请求并反馈处理结果,APP向门锁传递开锁请求,APP与用户鉴权服务器、密钥分发服务器中任何一个服务器交互时都经过加密,每一个门锁都内置一个基础密钥,本发明具有较高的安全性、便捷性、普及性。普及性。普及性。
技术研发人员:谢飞 吴佳怡 魏仕荣 冯烁璇
受保护的技术使用者:西安电子科技大学
技术研发日:2023.04.20
技术公布日:2023/7/25
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/