移动端生物认证知多少?

移动开发
生物认证作为目前最为热门的身份校验方式被广泛使用到各类应用场景。在移动互联网场景,App搭载生物认证功能对于用户数据安全性和提升用户粘性有很大帮助。

Part 01、 主流生物认证方式及其优缺点 

本期内容介绍的生物认证方式包括:指纹识别和面部识别。

➢ 指纹识别:通过分析和比对人类手指上的细节和纹理来识别个体的身份。因为每个人的指纹都是独一无二的,且指纹易于提取,所以指纹识别方案的采用较为广泛。目前指纹识别系统使用光学或电容传感器来捕获指纹图像,并用算法来提取和对比指纹特征。

➢ 人脸识别:通过分析和比对人类面部特征来识别个体身份。人脸识别可以使用摄像头或图像传感器来捕获人脸图像,并使用算法来提取和比对面部特征。常用人脸识别分为3d人脸识别和2d人脸识别,目前除了iphone广泛搭载3d结构光外,少有厂商采用人脸识别的方案。3d结构光由于技术的先进性,使得这一方案下的安全性很高。但是由于技术难度较大,以及硬件成本较高,绝大多数硬件厂商都放弃了3d结构光的人脸识别,而是提供2d的人脸识别方案。作为应用的开发者,可以借助硬件设备的摄像头,通过连续采集不同角度的人脸来构建3d人脸模型来间接实现3d人脸识别方案。

两种识别技术都有其优点和局限性。指纹识别具有高度准确性和稳定性,适合用于大规模应用,但是指纹识别可能会受到指纹质量和损伤的影响。人脸识别具有非接触性和方便性,但是易受采集环境如光照、角度和遮挡等因素影响。

根据应用的使用场景选择适合的生物认证方式或者采用多种生物认证方式相结合的方式,可以克服单一生物认证方式存在的固有缺陷,使得生物认证的适应性更好。

图2 Treemaps图示意图

Part 02、  生物认证在移动设备上使用  

目前主流移动设备采用Android OS和IOS,受设备厂商硬件限制,生物认证的应用通常在Android OS上采用指纹识别,在IOS上采用人脸识别。市面上已经有大量的应用已经利用移动设备自带的生物认证硬件实现了各种级别的生物认证功能,包括安全性要求较低的生物认证登录,以及安全性要求较高的生物认证支付功能。

图1 Android设备指纹登录图1 Android设备指纹登录

图2 IOS设备人脸识别注册图2 IOS设备人脸识别注册

目前Andoid OS和IOS分别提供了金融级的指纹识别和人脸识别方案,使用起来非常简单。只需要在OS的设置中注册用户的指纹和人脸特征,当需要使用用户生物特征识别时只需要调用OS提供的相关接口即可,以Android OS为例:

图3 Android OS指纹识别框架


  • 应用层,App调用AOSP接口,通过接口与与Binder和Framework层的指纹服务进行操作和数据传输,最后获得App所需要的相关数据;
  • Framework层,承上启下的作用,分别与应用层和HAL层交互;
  • HAL层:这一层是手机厂商各自算法逻辑和结果反馈的体现,其结果来自于硬件抽象的结果。
  • Driver层:受HAL层请求驱动,直接控制指纹硬件。

在应用层获得指纹认证结果后,即可进行下一步操作。但是已添加的指纹是存储在手机上的,而指纹识别的结果只是返回true和false,一旦手机设备被用户获取root权限,即可劫持指纹验证结果。因此本地指纹识别的结果作为鉴权的依据存在一定的风险,如果指纹识别用于支付需要更高等级的处理手段。对于一般应用的身份识别,可以采用加密的方式增强指纹识别的安全性。

Part 03、实现一个简单的生物认证登录系统  

客户端统一采取生物认证管理器,封装各底层API细节,对上层应用透明,核心功能包括了对设备硬件支持判断、请求认证以及处理认证结果(包括过期认证凭证的判断移除)。

服务端为了达到保证用户登录流程严格按顺序执行,防止个别绕过流程,采取通用加密方式生成footprint随机码,并结合设备uuid唯一字符串进行md5加密,生成业务凭证,使每一步操作都有凭证校验,无法绕过或者串改。保证整个生物认证流程完整安全的进行。

服务端采用分布式部署,实现负载均衡,即使在业务高峰期(比如参加活动,强制重新登录等场景),也能很好提供稳定服务。

后期维护中,若账号在其他设备登录或者修改身份,服务端清空当前凭证,使该设备以外的其他设备自动登出,无法使用已过期凭证进行业务交互,确保了后期安全性。

图4  流程图

Part 04、总结 

生物认证在移动设备上的使用已经非常成熟,打造一套简单易用的生物认证系统已经没有太大的技术难度。将生物认证集成到我们的App中能够简化用户的登录操作,对提升用户的满意度有很大的帮助。

责任编辑:庞桂玉 来源: 移动Labs
相关推荐

2012-02-13 22:50:59

集群高可用

2010-08-16 09:15:57

2021-12-04 11:17:32

Javascript继承编程

2013-12-23 14:00:31

Windows 8.2Windows 8.1

2017-07-14 10:51:37

性能优化SQL性能分析

2010-12-29 10:28:53

2009-05-13 17:31:06

DBAOracleIT

2018-08-31 10:53:25

MySQL存储引擎

2012-09-10 16:38:40

Windows Ser

2020-09-08 10:56:55

Java多线程存储器

2021-07-22 07:20:24

JS 遍历方法前端

2018-11-27 11:23:38

数据中心等级认证

2021-12-09 06:41:56

Python协程多并发

2013-08-02 09:42:37

BYODBYOC云存储

2018-12-12 15:01:22

开源存储 软件

2010-09-29 09:28:04

DHCP工作原理

2022-01-06 16:20:04

Java排序算法排序

2009-03-06 19:19:55

2022-05-08 18:02:11

tunnel隧道云原生

2021-12-10 07:47:30

Javascript异步编程
点赞
收藏

51CTO技术栈公众号