基于智能手机生物特征识别功能实现门禁系统控制的方法转让专利

申请号 : CN202110760144.7

文献号 : CN113487783B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 朱嘉诚马艺新王省欣谭静胡伟

申请人 : 西北工业大学

摘要 :

本发明提供了一种基于智能手机生物特征识别功能实现门禁系统控制的方法,使用智能手机作为门禁控制器,解决了现有门禁控制存在的磁卡容易丢失、被复制等问题。除包含已有的门禁系统功能之外,还可以在不获取生物特征信息的情况下,使用手机自带的生物特征识别功能解锁门禁;通过为每个用户生成独立的生物特征解锁令牌,从而达到在不获取用户生物特征信息的情况下,完成生物特征信息的识别与验证、控制门禁系统的解锁与关闭的目的,很大程度上降低了个人信息泄露的风险。

权利要求 :

1.基于智能手机生物特征识别功能实现门禁系统控制的方法,其特征在于:所述门禁系统包括客户端、服务器端以及门禁,所述服务器端包括数据库及后台程序;

具体控制步骤如下:

1)搭建数据库

在数据库中建立n个分表以及每个分表对应的RSA公钥pubkey_c;

分表的名称为所述门禁系统负责的所有社区的名称CM1、CM2、…,CMn,其中,n是为所述门禁系统管理的社区数量;

每个分表用于存放各自社区中住户的数据,且所有分表拥有相同格式的表头;

所述表头包含手机号PN、用户姓名UN、登陆密码PL、解锁密码PU、登录用令牌TL以及指纹解锁令牌TF;其中,手机号PN代表用户身份,在每个分表中唯一,作为主键用于检索;

初始数据库建立时,预填手机号PN和用户姓名UN列的值,其他列的值置空;

2)用户注册

步骤1)搭建数据库后,在客户端,用户向服务器端后台程序上传注册数据,后台程序进行验证完成用户注册;

所述注册数据包括手机号pn、社区名称cm、用户姓名un和登陆密码pl;

3)用户登录

步骤2)用户注册成功后,在客户端,用户向后台程序上传登录数据,后台程序进行验证完成用户登录;

所述登录数据包括手机号pn、社区名称cm和登陆密码pl;

4)生成用户登录令牌

步骤3)用户登录成功后,所述后台程序生成用户登录令牌tlm发送至客户端,作为用户后续操作的身份标识,同时将其本地保存为tl;

具体为:

步骤3)用户登录成功后,后台程序采用登录令牌生成算法生成用户登录令牌发送至客户端,作为用户后续操作的身份标识,所述登录令牌生成算法如下:首先将pn、cm和pl进行JSON格式编码,生成字符串A,A={"PN":pn,"CM":cm,"PL":pl};

然后调用开源的openssl生成1024位RSA公钥pubkey_a和对应私钥prikey_a;

使用pubkey_a对A进行公钥加密,生成密文tlm并保存至数据库Lpn行TL列对应值中,tlm即作为用户的唯一身份标识;

最后,后台程序将tlm发送至客户端,客户端将其在本地保存为tl;

5)身份验证

步骤4)生成用户登录令牌后,客户端进行所有操作的同时,会自动将步骤4)中保存的tl发送至后台程序进行身份认证,后台程序对其进行身份验证;

具体为:

步骤4)生成用户登录令牌后,客户端进行所有操作的同时,会自动将步骤4)中保存的tl发送至后台程序进行身份认证,后台程序对其进行验证,具体验证方法为:使用私钥prikey_a对tl进行1024位RSA解密,生成字符串B,正确的字符串格式应为{"PN":pn,"CM":cm,"PL":pl};

后台程序从B中提取出关键信息pn、cm、pl;

字符串格式不正确代表该tl系伪造,身份验证失败,不进行后续操作;

后台程序首先在CM1、CM2、…,CMn中匹配cm,在数据库中找到该用户对应的分表CMm,CMm∈{CM1、CM2、…,CMn},且CMm=cm,后续操作均在分表CMm下执行;

后台程序在CMm分表中通过主键pn检索找到对应的数据行Lpn,并检索该数据行中TL列保存的值tlm;判断tlm与tl是否相等进行身份验证,相等则验证通过,后台程序执行后续操作;

6)设置解锁密码

步骤5)身份验证通过后用户登陆成功,用户在客户端设置门禁的解锁密码;

具体为:

步骤5)身份验证通过后用户登录成功,向后台程序上传数据,后台程序进行验证并设置门禁系统解锁密码,具体步骤如下:用户在客户端中输入用户姓名un和解锁密码pu,确认后将以上数据和步骤4)保存的tl发送至服务器;

后台程序按照步骤5)进行身份验证,身份验证通过后检索数据行Lpn中UN列保存的值unm,之后判断unm与un是否相等,二次验证用户身份是否正确;

验证通过后对pu采取SHA‑256加密算法进行散列加密,散列加密生成的字符串为pu_sha,生成密文pum,将其保存至Lpn行PU列对应值中;

7)开启生物特征解锁

步骤6)设置解锁密码后,用户在智能手机本地进行生物特征认证后向所述后台程序上传数据,后台程序验证完成后开启生物特征解锁;

具体为:

步骤6)设置解锁密码后,用户在智能手机本地进行指纹认证后向后台程序上传数据,后台程序进行验证完成用户生物特征解锁,具体步骤如下:用户输入解锁密码pu后,客户端调用智能手机系统中的生物识别接口BiometricPrompt对用户进行生物特征识别;

所述生物识别接口BiometricPrompt将用户的生物特征与智能手机系统中设置保存的生物特征信息进行匹配,之后该接口向客户端反馈识别结果;

客户端接收到反馈识别结果后,将pu和步骤4)中保存的tl发送至后台程序;

后台程序按照步骤5)首先进行身份验证,身份验证通过后检索数据行Lpn中PU列保存的值pum,之后判断pum与pu是否相等以验证解锁密码是否正确;验证通过后开启生物特征解锁功能;

8)生成生物特征解锁令牌

步骤7)开启生物特征解锁后,后台程序生成用户生物特征解锁令牌发送至客户端,作为用户后续操作的身份标识,同时将其本地保存为tf;

具体为:

步骤7)开启生物特征解锁后,后台程序采用生物特征解锁令牌生成算法生成用户生物特征解锁令牌发送至用户手机,作为用户生物特征解锁门禁系统的令牌,生物特征解锁令牌生成算法如下:

首先将pn、cm和pu进行JSON格式编码,生成字符串C,C={"PN":pn,"CM":cm,"PU":pu};

然后调用开源的openssl库生成1024位RSA公钥pubkey_b和对应私钥prikey_b;

使用pubkey_b对C进行公钥加密,生成密文tfm并保存至Lpn行TF列对应值中,tfm即作为用户生物特征解锁时的令牌;

最后后台程序将tfm发送至客户端,客户端将其在本地保存为tf;

9)生物特征验证

步骤8)生成生物特征解锁令牌后,用户通过智能手机生物特征识别功能进行验证;

具体为:

步骤8)生成生物特征解锁令牌后,用户通过生物特征识别功能进行门禁系统解锁,具体步骤如下:

客户端调用智能手机系统中的生物识别接口BiometricPrompt对用户进行生物特征识别;

所述生物识别接口BiometricPrompt将用户的生物特征与智能手机系统中设置保存的生物特征信息进行匹配,之后该接口向客户端反馈识别结果,客户端接收到接口反馈的验证成功的结果后,将步骤4)中保存的tl和步骤8)中保存的tf发送至后台程序;

后台程序按照步骤5)首先进行身份验证,身份验证通过后检索数据行Lpn中TF列保存的值tfm,之后判断tfm与tf是否相等验证指纹解锁令牌是否正确;

验证通过向门禁发送指令;

10)发送签名

步骤9)验证通过后,首先将cm进行JSON格式编码,生成字符串D,D={"CM":cm};然后使用RSA私钥prikey_c对D进行签名,生成签名td,发送给后台程序;

11)数据解析

后台程序将接收到的td进行解析,解析方式如下:使用公钥pubkey_c对td进行RSA解密,生成字符串E,正确的字符串格式应为{"CM":cm};

解析单元E中提取出关键信息cm;字符串格式不正确代表该td系伪造,验证失败,不进行后续操作;验证cm与CM是否相等,相等则验证通过,执行步骤12);

12)门禁开启

步骤11)验证通过后,门禁开启。

2.根据权利要求1所述方法,其特征在于:步骤1)中,每个分表对应的1024位RSA公钥pubkey_c,且1024位RSA公钥pubkey_c由开源的openssl生成;

步骤2)具体为:

步骤1)搭建数据库后,用户在客户端输入手机号pn、社区名称cm、用户姓名un和登陆密码pl,确认后将以上数据发送至服务器端;

后台程序首先在CM1、CM2、…,CMn中匹配cm,在数据库中找到该用户对应的分表CMm,CMm∈{CM1、CM2、…,CMn},且CMm=cm,后续操作均在分表CMm下执行;

后台程序在CMm分表下通过主键pn检索找到对应的数据行Lpn,并查询该数据行中UN列预保存的值unm;然后后台程序进行身份验证,判断un与unm是否相等,相等则通过验证;

验证通过后对pl采取SHA‑256加密算法进行散列加密,散列加密生成的字符串为pl_sha,生成密文plm,并将其保存至Lpn行PL列对应值中。

3.根据权利要求2所述方法,其特征在于,步骤3)具体为:步骤2)用户注册成功后,用户在客户端中输入手机号pn、社区名称cm和登陆密码pl,确认后将以上数据发送至后台程序;

后台程序首先通在CM1、CM2、…,CMn中匹配cm,在数据库中找到该用户对应的分表CMm,CMm∈{CM1、CM2、…,CMn},且CMm=cm,后续操作均在分表CMm下执行;

后台程序在CMm分表中通过主键pn检索找到对应的数据行Lpn,并检索该数据行中PL列保存的值plm,然后将pl采取SHA‑256进行散列加密,生成字符串pl_sha,最后验证pl_sha与plm是否相等;

相等则登录密码正确,通过身份验证,用户登录成功。

4.根据权利要求1‑3任一所述方法,其特征在于:所述生物特征为指纹。

说明书 :

基于智能手机生物特征识别功能实现门禁系统控制的方法

技术领域

[0001] 本发明属于门禁管理系统技术领域,具体涉及基于智能手机生物特征识别功能实现门禁系统控制的方法。

背景技术

[0002] 门禁系统一般用于社区、企事业单位、学校等场所的出入管理,通过可以控制人员的出入,解决以上场所的安全问题。现有的门禁系统采取在出入口处安装控制装置,例如门
禁控制器、密码键盘或生物特征采集器等。出入场所内的用户通过输入密码、刷卡或者输入
专用生物密码等方式才能解锁门禁,自由出入。
[0003] 最原始也是最常见的控制器采用输入密码的方式管理门禁的开启与关闭。与电脑键盘不同,门禁控制器的密码键盘只有0‑9十位数字,不包含字母、符号等。同时,解锁密码
一般只有6‑8位数字,密码长度短,安全性低。由于一个门禁控制器只能设置一个密码,因此
该门禁系统下的所有用户掌握同一个密码,门禁管理系统无法识别用户身份。另外,密码的
输入不仅繁琐,过程中还容易被窥探造成密码泄露。因此输入密码的管理系统只适合小范
围、用户少的场所,且密码安全性低,密码管理不便。
[0004] 另一种常见的门禁控制器采用刷磁卡的方式管理门禁的开启与关闭。磁卡相比密码而言,使用起来简单方便,同时可以识别用户身份,对使用场所拥有更安全的管理。但是,
磁卡拥有两方面不足:一方面,磁卡携带不便,容易丢失,丢失后可能被拾起者利用,存在安
全风险;另一方面,磁卡非常容易被复制,现有研究表明,常见的用于门禁系统的磁卡往往
没有进行加密,通过简单的设备即可在几秒钟内完成复制,只需要将设备靠近磁卡即可。而
像制作身份证、银行卡此类安全等级较高的磁卡面临成本问题,安全性越高,制造成本也就
越高。
[0005] 近年来出现了利用指纹或者面部特征的门禁管理系统,录入指纹或者摄入面部信息即可匹配用户,管理门禁的开启与关闭。生物特征信息为个人所独有,不会随时间改变,
而且随着识别技术的提升,生物特征仿制越加困难,安全性较高。现有的利用生物特征的门
禁系统首先需要用户录入自己的生物特征信息,管理方会对录入的信息进行保存,使用时
进行匹配。因此,管理方拥有大量的生物特征信息,严重危害了个人隐私安全。
[0006] 现有的使用智能手机控制门禁的管理系统将传统的输入密码这一过程转移到智能手机上,且每个用户能够拥有独立的账号和密码。该方法有很大的改进,在一定程度上解
决了传统密码输入的不足。但是,用户密码设置往往较为简单,容易被暴力破解,仍存在密
码输入被窥视的风险。
[0007] 并且,对于在多个小区均拥有住房的用户来说,管理密码或者门禁卡本身就是一件比较繁琐的事务。
[0008] 鉴于以上种种情况,有必研发一种更为安全且便捷的门禁控制方法及系统。

发明内容

[0009] 本发明的目的在于解决现有门禁系统存在的问题,而提供一种基于智能手机生物特征识别功能实现门禁系统控制的方法。
[0010] 为实现上述目的,本发明所提供的技术解决方案是:
[0011] 基于智能手机生物特征识别功能实现门禁系统控制的方法,其特殊之处在于:
[0012] 所述门禁系统包括客户端、服务器端以及门禁,所述服务器端包括数据库及后台程序;数据库用以保存数据信息,后台程序对数据库进行管理,可以保存和获取数据库中的
数据,并进行一系列数据加解密、逻辑判断以实现本发明中的主要功能;
[0013] 具体控制步骤如下:
[0014] 1)搭建数据库
[0015] 在数据库中建立n个分表以及每个分表对应的RSA公钥pubkey_c;
[0016] 分表的名称为所述门禁控制系统负责的所有社区的名称CM1、CM2、…,CMn,其中,n是为所述门禁控制系统管理的社区数量;
[0017] 每个分表用于存放各自社区中住户的数据,且所有分表拥有相同的表头;
[0018] 所述表头包含手机号PN、用户姓名UN、登陆密码PL、解锁密码PU、登录用令牌TL以及指纹解锁令牌TF;其中,手机号PN代表用户身份,在每个分表中唯一,作为主键用于检索;
[0019] 初始数据库建立时,预填手机号PN和用户姓名UN列的值,其他列的值置空;
[0020] 2)用户注册
[0021] 步骤1)搭建数据库后,在客户端,用户向服务器端后台程序上传注册数据,后台程序进行验证完成用户注册;
[0022] 所述注册数据包括手机号pn、社区名称cm、用户姓名un和登陆密码pl;
[0023] 3)用户登录
[0024] 步骤2)用户注册成功后,在客户端,用户向后台程序上传登录数据,后台程序进行验证完成用户登录;
[0025] 所述登录数据包括手机号pn、社区名称cm和登陆密码pl;
[0026] 4)生成用户登录令牌
[0027] 步骤3)用户登录成功后,所述后台程序生成用户登录令牌tlm发送至客户端,作为用户后续操作的身份标识,同时将其本地保存为tl;
[0028] 5)身份验证
[0029] 步骤4)生成用户登录令牌后,客户端进行所有操作的同时,会自动将步骤4)中保存的tl发送至后台程序进行身份认证,后台程序对其进行身份验证;
[0030] 6)设置解锁密码
[0031] 步骤5)身份验证通过后用户登陆成功,用户在客户端设置门禁的解锁密码;
[0032] 7)开启生物特征解锁
[0033] 步骤6)设置解锁密码后,用户在智能手机本地进行生物特征认证后向所述后台程序上传数据,后台程序验证完成后开启生物特征解锁;
[0034] 8)生成生物特征解锁令牌
[0035] 步骤7)开启生物特征解锁后,后台程序生成用户生物特征解锁令牌发送至客户端,作为用户后续操作的身份标识,同时将其本地保存为tf;
[0036] 9)生物特征验证
[0037] 步骤8)生成生物特征解锁令牌后,用户通过智能手机生物特征识别功能进行验证;
[0038] 10)发送签名
[0039] 步骤9)验证通过后,首先将cm进行JSON格式编码,生成字符串D,D={"CM":cm};然后使用1024位RSA私钥prikey_c对D进行签名,生成签名td,发送给后台程序;
[0040] 11)数据解析
[0041] 后台程序将接收到的td进行解析,解析方式如下:
[0042] 使用公钥pubkey_c对td进行RSA解密,生成字符串E,正确的字符串格式应为{"CM":cm};
[0043] 解析单元E中提取出关键信息cm;字符串格式不正确代表该td系伪造,验证失败,不进行后续操作;验证cm与CM是否相等,相等则验证通过,执行步骤12);
[0044] 12)门禁开启
[0045] 步骤11)验证通过后,门禁开启。
[0046] 进一步地,步骤1)中,每个分表对应的1024位RSA公钥pubkey_c,且1024位RSA公钥pubkey_c由开源的openssl生成。
[0047] 进一步地,步骤2)具体为:
[0048] 步骤1)搭建数据库后,用户在客户端输入手机号pn、社区名称cm、用户姓名un和登陆密码pl,确认后将以上数据发送至服务器端;
[0049] 后台程序首先在CM1、CM2、…,CMn中匹配cm,在数据库中找到该用户对应的分表CMm,CMm∈{CM1、CM2、…,CMn},且CMm=cm,后续操作均在分表CMm下执行;
[0050] 后台程序在CMm分表下通过主键pn检索找到对应的数据行Lpn,并查询该数据行中UN列预保存的值unm;然后后台程序进行身份验证,判断un与unm是否相等,相等则通过验证;
[0051] 验证通过后对pl采取SHA‑256加密算法进行散列加密,防止数据库被盗带来安全隐患;散列加密生成的字符串为pl_sha,并将其保存至Lpn行PL列对应值中。
[0052] 进一步地,步骤3)具体为:
[0053] 步骤2)用户注册成功后,用户在客户端中输入手机号pn、社区名称cm和登陆密码pl,确认后将以上数据发送至后台程序;
[0054] 后台程序首先通在CM1、CM2、…,CMn中匹配cm,在数据库中找到该用户对应的分表CMm,CMm∈{CM1、CM2、…,CMn},且CMm=cm,后续操作均在分表CMm下执行;
[0055] 后台程序在CMm分表中通过主键pn检索找到对应的数据行Lpn,并检索该数据行中PL列保存的值plm,然后将pl采取SHA‑256进行散列加密,生成字符串pl_sha,最后验证pl_
sha与plm是否相等;
[0056] 相等则登录密码正确,通过身份验证,用户登录成功。
[0057] 进一步地,步骤4)具体为:
[0058] 步骤3)用户登录成功后,后台程序采用登录令牌生成算法生成用户登录令牌发送至客户端,作为用户后续操作的身份标识,所述登录令牌生成算法如下:
[0059] 首先将pn、cm和pl进行JSON格式编码,生成字符串A,A={"PN":pn,"CM":cm,"PL":pl};
[0060] 然后调用开源的openssl生成1024位RSA公钥pubkey_a和对应私钥prikey_a;
[0061] 使用pubkey_a对A进行公钥加密,生成密文tlm并保存至数据库Lpn行TL列对应值中,tlm即作为用户的唯一身份标识;
[0062] 使用prikey_a对tlm进行解密即可获得pn、cm和pl,根据pn和cm可以查询到用户对应数据分表和对应的数据行,pl防止攻击者对身份标识进行仿造,提高安全性;因此tlm可
以作为用户的唯一身份标识;
[0063] 最后,后台程序将tlm发送至客户端,客户端将其在本地保存为tl。
[0064] 进一步地,步骤5)具体为:
[0065] 步骤4)生成用户登录令牌后,客户端进行所有操作的同时,会自动将步骤4)中保存的tl发送至后台程序进行身份认证,后台程序对其进行验证,具体验证方法为:
[0066] 使用私钥prikey_a对tl进行1024位RSA解密,生成字符串B,正确的字符串格式应为{"PN":pn,"CM":cm,"PL":pl};
[0067] 后台程序从B中提取出关键信息pn、cm、pl;
[0068] 字符串格式不正确代表该tl系伪造,身份验证失败,不进行后续操作;
[0069] 后台程序首先在CM1、CM2、…,CMn中匹配cm,在数据库中找到该用户对应的分表CMm,CMm∈{CM1、CM2、…,CMn},且CMm=cm,后续操作均在分表CMm下执行;
[0070] 后台程序在CMm分表中通过主键pn检索找到对应的数据行Lpn,并检索该数据行中TL列保存的值tlm;判断tlm与tl是否相等进行身份验证,相等则验证通过,后台程序执行后
续操作。
[0071] 进一步地,步骤6)具体为:
[0072] 步骤5)身份验证通过后用户登录成功,向后台程序上传数据,后台程序进行验证并设置门禁系统解锁密码,具体步骤如下:
[0073] 用户在客户端中输入用户姓名un和解锁密码pu,确认后将以上数据和步骤4)保存的tl发送至服务器;
[0074] 后台程序按照步骤5)进行身份验证,身份验证通过后检索数据行Lpn中UN列保存的值unm,之后判断unm与un是否相等,二次验证用户身份是否正确;二次验证的目的是在一
定程度上保证该步骤的操作人是用户本人,防止在手机丢失等情况下,由其他人设置解锁
密码,造成损失。
[0075] 验证通过后对pu采取SHA‑256加密算法进行散列加密,防止数据库被盗带来安全隐患;散列加密生成的字符串为pu_sha,将其保存至Lpn行PU列对应值中。
[0076] 进一步地,步骤7)具体为:
[0077] 步骤6)设置解锁密码后,用户可以在智能手机本地进行指纹认证后向后台程序上传数据,后台程序进行验证完成用户生物特征解锁,具体步骤如下:
[0078] 用户输入解锁密码pu后,客户端调用智能手机系统中的生物识别接口BiometricPrompt对用户进行生物特征识别;
[0079] 所述生物识别接口BiometricPrompt将用户的指纹与智能手机系统中设置保存的指纹信息进行匹配,之后该接口向门禁应用程序反馈识别结果;但不会将采集到的生物特
征信息返回给APP。APP不收集用户生物特征信息避免了生物特征信息泄露的风险,有助于
保证个人隐私安全。
[0080] 客户端接收到反馈识别结果后,将pu和步骤4)中保存的tl发送至服务器;
[0081] 后台程序按照步骤5)首先进行身份验证,身份验证通过后检索数据行Lpn中PU列保存的值pum,之后判断pum与pu是否相等以验证解锁密码是否正确;解锁密码验证通过可以
证明该操作的用户拥有解锁门禁系统的权利,验证通过后开启生物特征解锁功能。
[0082] 需要注意的是,生物特征解锁功能只能在具有生物特征识别功能的智能手机上才能实现,并且需要用户开启智能手机系统中的智能识别功能。
[0083] 进一步地,步骤8)具体为:
[0084] 步骤7)开启生物特征解锁后,后台程序采用生物特征解锁令牌生成算法生成用户生物特征解锁令牌发送至用户手机,作为用户生物特征解锁门禁系统的令牌,生物特征解
锁令牌生成算法如下:
[0085] 首先将pn、cm和pu进行JSON格式编码,生成字符串C,C={"PN":pn,"CM":cm,"PU":pu};
[0086] 然后调用开源的openssl库生成1024位RSA公钥pubkey_b和对应私钥prikey_b;
[0087] 使用pubkey_b对C进行公钥加密,生成密文tfm并保存至Lpn行TF列对应值中,tfm即作为用户生物特征解锁时的令牌;
[0088] 最后后台程序将tfm发送至客户端,客户端将其在本地保存为tf。
[0089] 进一步地,步骤9)具体为:
[0090] 步骤8)生成生物特征解锁令牌后,用户通过生物特征识别功能进行门禁系统解锁,具体步骤如下:
[0091] 客户端调用智能手机系统中的生物识别接口BiometricPrompt对用户进行生物特征识别;
[0092] 所述生物识别接口BiometricPrompt将用户的生物特征与智能手机系统中设置保存的生物特征信息进行匹配,之后该接口向客户端反馈识别结果,客户端接收到接口反馈
的验证成功的结果后,将步骤4)中保存的tl和步骤8)中保存的tf发送至后台程序;
[0093] 后台程序按照步骤5)首先进行身份验证,身份验证通过后检索数据行Lpn中TF列保存的值tfm,之后判断tfm与tf是否相等验证指纹解锁令牌是否正确;
[0094] 验证通过向门禁发送指令。
[0095] 进一步地,所述生物特征为指纹。
[0096] 本发明的优点是:
[0097] 1.采用本发明的方法,使用智能手机作为门禁控制器,解决了现有门禁控制存在的磁卡容易丢失、被复制等问题。除包含已有的门禁系统功能之外,还可以在不获取生物特
征信息的情况下,使用手机自带的生物特征识别功能解锁门禁;通过为每个用户生成独立
的生物特征解锁令牌,从而达到在不获取用户生物特征信息的情况下,完成生物特征信息
的识别与验证、控制门禁系统的解锁与关闭的目的,很大程度上降低了个人信息泄露的风
险。
[0098] 2.与现有技术相比,本发明通过在数据库中建立分表,提高检索效率,同时解决单个用户在多个小区有住房的问题;通过生成登录口令,减少用户操作流程,提高客户端
(APP)的执行效率和安全性;通过本发明的方法生成生物特征口令,用户在本地进行生物特
征验证,无需上传生物特征信息,降低个人信息泄露风险。

附图说明

[0099] 图1是本发明的用户注册的流程示意图;
[0100] 图2是本发明的用户登录的流程示意图;
[0101] 图3是本发明的生成用户登录令牌的流程示意图;
[0102] 图4是本发明的身份验证的流程示意图;
[0103] 图5是本发明的设置解锁密码的流程示意图;
[0104] 图6是本发明的开启指纹解锁的流程示意图;
[0105] 图7是本发明的生成指纹解锁令牌的流程示意图;
[0106] 图8是本发明的指纹解锁的流程示意图。

具体实施方式

[0107] 以下结合附图和具体实施例对本发明的内容作进一步的详细描述:
[0108] 用于实施的硬件环境是:英特尔I7‑8700 CPU,@3.2G(6核处理器)计算机、16G内存,三星S10智能手机。运行的软件环境是:Windows10 64位操作系统,安卓10操作系统。客
户端代码采用JAVA语言编写;安卓客户端APP在Android Studio编译平台生成;服务器端代
码采用PHP语言编写;数据库采用MYSQL。在内网环境下检测本发明的方法。
[0109] 本发明具体实施如下:
[0110] 步骤1:数据库搭建
[0111] 数据库使用开源的MySQL。首先在数据库中建立n个分表以及每个分表对应的1024位RSA公钥pubkey_c;分表的名称为该门禁系统负责的所有社区的名称CM1、CM2、…,CMn,其
中n是该门禁系统管理的社区数量。CM1、CM2、…,CMn均不相同。每个分表分别存放各自社区
中住户的数据。每个分表拥有相同的表头,表头包含手机号PN、用户姓名UN、登陆密码PL、解
锁密码PU、登录用令牌TL和指纹解锁令牌TF。其中,PN代表用户身份,在每个分表中唯一,作
为主键用于检索。初始数据库建立时,预填PN和UN列的值,其他列的值置空。
[0112] 每个分表对应的1024位RSA公钥pubkey_c由开源的openssl生成。
[0113] 步骤2:用户注册
[0114] 参见图1,该步骤目的是为住户注册账号。住户输入手机号、社区名称、用户姓名、登陆密码和登陆密码确认后,点击注册Button。APP向服务器发送相关数据,服务器分析数
据做出相应回应后,APP再进行一次相应操作。
[0115] ①APP:
[0116] 创建包含四个EditText和一个Button的Active。
[0117] EditText分别为手机号pn、社区名cm、用户姓名un、登陆密码pl和登陆密码确认plc。
[0118] Button设计为点击后,判断pl是否等于plc。若不等,弹出提示“密码不一致”;若相等,将pn、cm、un、pl进行JSON格式封装后,生成字符串A,发送至服务器,A为{"PN":pn,"CM":
cm,"UN":un,"PL":pl}。
[0119] ②服务器:
[0120] 解析A获得pn、cm、un、pl。
[0121] 服务器首先在CM1、CM2、…,CMn中匹配cm,在数据库中找到该用户对应的分表CMm,CMm∈{CM1、CM2、…,CMn},且CMm=cm,后续操作均在分表CMm下执行;
[0122] 在数据库中进行查询,通过主键PN查询pn的值找到对应行Lpn,查询该行中UN列保存的值unm,判断unm与un是否相等。
[0123] 若不等,向APP返回错误信息{"SC":"101"};
[0124] 若相等,将pl进行SHA256加密后存储至Lpn行PL列对应值的中,并向APP返回{"SC":"100"}。
[0125] ③APP:
[0126] 解析返回值获得SC。
[0127] 若SC=101,弹出信息"用户不存在";
[0128] 若SC=100,弹出信息"注册成功"。
[0129] 步骤3:用户登录
[0130] 参见图2
[0131] APP:
[0132] 创建包含三个EditText和一个Button的Active。
[0133] EditText分别为手机号pn、社区名cm和登陆密码pl;Button设计为点击后,将pn、cm和pl封装为JSON格式字符串B后发送至服务器。B为{"PN":pn,"CM":cm,"PL":pl}。
[0134] 服务器:
[0135] 解析B获得pn、cm、pl。
[0136] 服务器首先在CM1、CM2、…,CMn中匹配cm,在数据库中找到该用户对应的分表CMm,CMm∈{CM1、CM2、…,CMn},且CMm=cm,后续操作均在分表CMm下执行;
[0137] 在数据库中进行查询,通过主键PN查询pn的值找到对应行Lpn,查询该行中PL列保存的值plm,判断plm与pl是否相等。若相等,向APP返回信息{"SC":"200"};否则向APP返回
信息{"SC":"201"}。
[0138] ③APP:
[0139] 若APP解析返回值,获得SC。
[0140] 若SC=200,弹出提示“登录成功”;
[0141] 若SC=201,弹出提示“登录失败”。
[0142] 步骤4:生成用户登录令牌
[0143] 参见图3,按照步骤3登录成功后,服务器采用本发明的登录令牌生成算法生成用户登录令牌发送至用户手机,作为用户后续操作的身份标识,生成算法如下:
[0144] 首先将pn、cm和pl进行JSON格式编码,生成字符串C,C={"PN":pn,"CM":cm,"PL":pl};
[0145] 然后调用开源的openssl生成1024位RSA公钥pubkey_a和对应私钥prikey_a。使用pubkey_a对C进行公钥加密,生成密文tlm并保存至数据库Lpn行TL列对应值中,tlm即作为
用户的唯一身份标识。使用prikey_a对tlm进行解密即可获得pn、cm和pl,根据pn和cm可以
查询到用户对应数据分表和对应的数据行,pl防止攻击者对身份标识进行仿造,提高安全
性。因此tlm可以作为用户的唯一身份标识。
[0146] 最后服务器将tlm发送至APP,APP将其在本地保存为tl。
[0147] 步骤5:身份验证
[0148] 参见图4,按照步骤4生成登录口令后,APP进行所有操作的同时,会自动将步骤四中保存的tl发送至服务器进行身份认证,服务器对其进行验证,验证方法为:
[0149] 使用私钥prikey_a对tl进行1024位RSA解密,生成字符串D,正确的字符串格式应为{"PN":pn,"CM":cm,"PL":pl}.服务器从D中提取出关键信息pn、cm、pl。字符串格式不正
确代表该tl系伪造,身份验证失败,不进行后续操作。
[0150] 服务器首先在CM1、CM2、…,CMn中匹配cm,在数据库中找到该用户对应的分表CMm,CMm∈{CM1、CM2、…,CMn},且CMm=cm,后续操作均在分表CMm下执行;
[0151] 服务器在CMm分表中通过主键pn检索找到对应的数据行Lpn,并检索该数据行中TL列保存的值tlm。之后判断tlm与tl是否相等进行身份验证,相等则验证通过,服务器执行后
续操作。
[0152] 步骤6:设置解锁密码
[0153] 参见图5
[0154] APP:
[0155] 创建包含三个EditText和一个Button的Active。
[0156] EditText分别为用户姓名un、解锁密码pu和确认解锁密码puc。
[0157] Button设计为点击后,判断pu是否等于puc。若不等,弹出提示“密码不一致”;若相等,将pu、un和步骤4中保存的tl进行JSON格式封装,生成字符串E,E为{"TL":tl,"UN":un,"
PU":pu},发送至服务器。
[0158] 服务器:
[0159] 首先解析E获得un、tl、pu。对tl进行RSA解密获得pn,pl。
[0160] 服务器按照步骤5进行身份验证,身份验证通过后检索数据行Lpn中UN列保存的值unm,之后判断unm与un是否相等二次验证用户身份是否正确。二次验证的目的是在一定程
度上保证该步骤的操作人是用户本人,防止在手机丢失等情况下,由其他人设置解锁密码,
造成损失。验证通过后对pu采取SHA‑256加密算法进行散列加密,防止数据库被盗带来安全
隐患。散列加密生成的字符串为pu_sha,将其保存至Lpn行PU列对应值中,并返回{"SC":"
300"};否则返回{"SC":"301"}。
[0161] ③APP:
[0162] 解析返回值获得SC。
[0163] 若SC=300,弹出提示“设置成功”;
[0164] 若SC=301,弹出提示“操作失败”。
[0165] 步骤7:开启指纹解锁功能
[0166] 参见图6
[0167] APP:
[0168] 调用安卓系统中的生物识别接口BiometricPrompt对用户进行指纹识别。该接口可以将用户的指纹与智能手机系统中设置保存的指纹信息进行匹配,之后该接口向APP返
回识别结果,但不会将采集到的指纹信息返回给APP。APP不收集用户指纹信息避免了生物
信息泄露的风险,有助于保证个人隐私安全。APP接收到接口返回的验证成功的结果后,创
建包含一个EditText和一个Button的Active。
[0169] EditText输入为解锁密码pu。
[0170] Button设计为点击后,将pu和步骤4中保存的tl进行JSON格式封装,生成字符串F,F为{"TL":tl,"PU":pu},发送至服务器。
[0171] ②服务器:
[0172] 解析F获得tl,pu。对tl进行解密获得pn,pl。
[0173] 数按照步骤5首先进行身份验证,身份验证通过后检索数据行Lpn中PU列保存的值pum,之后判断pum与pu是否相等验证解锁密码是否正确。解锁密码验证通过可以证明该操
作的用户拥有解锁门禁系统的权利,验证通过后开启指纹解锁功能。若验证通过,则返回{"
SC":"400"};若不等,否则返回{"SC":"401"}。
[0174] APP:
[0175] 解析返回值,若SC=400,弹出提示“设置成功”。
[0176] 若SC=401,弹出提示“设置失败”。
[0177] 步骤8:生成指纹解锁令牌:
[0178] 参见图7,按照步骤7开启指纹解锁后,服务器采用本发明的指纹解锁令牌生成算法生成用户指纹解锁令牌发送至用户手机,作为用户指纹解锁门禁系统的令牌,生成算法
如下:
[0179] 首先将pn、cm和pu进行JSON格式编码,生成字符串G,G={"PN":pn,"CM":cm,"PU":pu};
[0180] 然后调用开源的openssl库生成1024位RSA公钥pubkey_b和对应私钥prikey_b。使用pubkey_b对G进行公钥加密,生成密文tfm并保存至Lpn行TF列对应值中,tfm即作为用户
指纹解锁时的令牌。
[0181] 最后服务器将tfm发送至APP,APP将其在本地保存为tf。
[0182] 步骤9:指纹验证
[0183] 参见图8,APP:
[0184] APP调用安卓系统中的生物识别接口BiometricPrompt对用户进行指纹识别。该接口将用户的指纹与智能手机系统中设置保存的指纹信息进行匹配,之后该接口向APP返回
识别结果,但不会将采集到的指纹信息返回给APP。APP接收到接口返回的验证成功的结果
后,将步骤4中保存的tl和步骤8中保存的tf进行JSON格式封装,生成字符串H,H为{"TL":
tl,"TF":tf},发送至服务器;若接口返回验证失败的结果,则弹出“识别失败”。
[0185] 服务器:
[0186] 解析H获得tl,tf。对tl进行解密获得pn,pl。
[0187] 按照步骤5首先进行身份验证,身份验证通过后检索数据行Lpn中TF列保存的值tfm,之后判断tfm与tf是否相等验证指纹解锁令牌是否正确。验证通过后向门禁发送指令;
返回{"SC":"500"};验证失败返回{"SC":"501"}。
[0188] APP:
[0189] 解析返回值,若SC=500,弹出提示“验证成功”。
[0190] 若SC=501,弹出提示“验证失败”。
[0191] 10)发送签名
[0192] 步骤9)验证通过后,首先将cm进行JSON格式编码,生成字符串D,D={"CM":cm};然后使用1024位RSA私钥prikey_c对D进行签名,生成签名td,发送给后台程序;
[0193] 11)数据解析
[0194] 后台程序将接收到的td进行解析,解析方式如下:
[0195] 使用公钥pubkey_c对td进行1024位RSA解密,生成字符串E,正确的字符串格式应为{"CM":cm};
[0196] 解析单元E中提取出关键信息cm;字符串格式不正确代表该td系伪造,验证失败,不进行后续操作;验证cm与CM是否相等,相等则验证通过,执行步骤12);
[0197] 12)门禁开启
[0198] 步骤11)验证通过后,门禁开启。
[0199] 进一步地,步骤1)中,每个分表对应的1024位RSA公钥pubkey_c由开源的openssl生成。
[0200] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到各种等效的修改或替
换,这些修改或替换都应涵盖在本发明的保护范围之内。