首页 > 其他分享 >指纹面容识别登录流程概述

指纹面容识别登录流程概述

时间:2024-01-26 11:58:05浏览次数:29  
标签:登录 验证 账号 用户 指纹 鉴权 概述 面容

 

  近来在帮忙处理一个IOS端,指纹/面容登录的需求。 独立的原生IOS开发人员,已经被优化掉了,我是革命一块儿砖,哪里需要哪里搬,-_-|| 。在此,对期间遇到的一些实践问题,做一个梳理备忘,也希望可以给其他产品及码农提供参考。

  本文主要侧重于,整体的移动端指纹/面容实现用户登录的解决方案逻辑的概述,并不叙述指纹识别技术原理, 或者API具体编码过程等具体技术细节。

 

  一、移动端指纹识别API能力

  虽然实际参与开发的是IOS端,但从最终安卓iOS都能完整实现相关需求的角度推测, 安卓也应当具有相同的 API接口能力。

  主要的接口能力应该能支持实现:

  1. 判断设备是否支持/开启了指纹识别功能。

  2.判断指纹数据是否发生了变化。

  3.进行指纹验证过程,验证用户指纹。

  用途上来说:

  1 比较好理解, 设备是否已启用了指纹识别功能。

  3 同样好理解,通俗的说,就是弹出个框,提示用户按指纹,识别成功,失败,取消之类,会有对应的回调通知给应用。

  关于2 ,主要考虑的是一个安全场景。提供一种机制,让程序能够判断,设备的指纹识别数据是否发生了变化。具体来说,例如增加了几个指纹, 删除了一些指纹等。安全角度来说,可能是设备更换/增加了一个新的使用用户。应用应该考虑这个场景对其本身账号安全的影响。

   一些感觉应该可以,但实际可能并不支持的能力:

  1 无法取得具体的指纹数据, 这属于用户隐私

  2 无法取得指纹设置,验证的具体信息,例如设置了几个手指,用哪个手指验证成功之类。可能你会认为判断指纹数据变化会依赖于此,但起码在IOS的角度,系统只是提供了一个类似数据签名的机制,你只能比较签名是否发生了变化。而不能取得具体的设置变化信息。

  一个重要的概念变化:

  区别于账号,手机验证码等登录方式,指纹登录的一个重要概念变化在于,指纹登录鉴权的是对设备有使用权的生物特征,这些特征可能属于一个或多个人,并不与应用的账号一一对应。

  用户角度,具体来说,你的pad,设置了通过你和你老婆的指纹可以对设备进行指纹解锁。 你pad 上安装了一个银行app,里边存着你的私房钱,同时登录这个App后按照APP的提示,设置了指纹登录。以后就可以方便的使用指纹来登录这个APP,查看你的私房钱余额。很多人没有意识到,如此一来,你老婆也可以通过她的指纹,来登录这个应用,方便的查看你的余额了。

  因为对于系统而言,你录入指纹在同一个当前系统用户时(通常是这样),系统是无法区别,是你的两个手指,还是一个是你的,一个是你老婆的。根据账号独占原则,系统的理解是, 这两个指纹是你的两根手指,都代表了你。

  这个概念的变化,会需要一些app,基于此做出一些安全上和功能上的考虑。

 

  二、简陋而基本的指纹登录流程

  1. 使用账号/密码,鉴权方式登录应用,应用内激活指纹登录功能。  

    2. 应用记录了指纹登录功能的开启, 同时记录指纹登录对应的账号/密码于本地。

  3. 登录界面调用API的指纹验证过程。验证通过则取出记录的账号/密码信息,进行自动登录。

 

  上面的流程虽然简陋,忽略了很多问题。但是他体现了实现指纹登录的基本原理。   

  原理来说,在启用指纹登录时,记录用户的日后可用于登录鉴权的凭证于本地(上述而言是密码),当用户交互通过指纹验证后,使用保存的鉴权凭证进行登录鉴权。

 

  三、较完善的方案

  前面简述的简陋流程,忽略遗留的问题。

  1.如果用一个新的账号密码,登录系统后,也同样启用了指纹登录,第一个账号的指纹登录对应凭据会被覆盖,只能支持一个应用账号启用指纹。

  2.如果账号修改了密码,指纹登录将会失效。

  3.如果设备的指纹数据发生变化,设备更换了使用者,或者录入了新的指纹。没有做安全上的考虑。

  4.其他安全考虑。启用指纹登录功能的身份核验,抵抗重放等。

  完善如下:

  1. 如前所述,指纹验证仅鉴权,使用者是否有权使用设备,与应用账号并非一一对应,因此一对多的情况必须人为选择。UI上可能是通过指纹验证后,显示一个开通指纹用户的列表,用户自行选择要登录哪一个。简陋的方案中描述的其实是限定了,指纹登录,只绑定最后一个开通的账号信息。

  2. 指纹登录的凭据使用密码引起的耦合,因此要为指纹登录提供独立的鉴权凭证。并可能需要提供类似密码的对应配套管理机制,如重置,过期之类。具体实践,可以用UUID,由服务器生成进行发送之类。

  3. 通常应对数据变化做出对应处理,禁止登录,并清空指纹凭证。可以使用API提供的对应机制能力进行判断。

    4. 其他一些细节的安全考虑。通信要加密;启用指纹登录功能时,应当验证是否为账号拥有者(验证账号密码),以确保其知情;登录凭据可以配合挑战码签名使用,以避免被重放攻击。 

 

  拜了个拜~

   

标签:登录,验证,账号,用户,指纹,鉴权,概述,面容
From: https://www.cnblogs.com/uncleguo/p/17988668

相关文章

  • Golang gRPC概述及入门示例
    1、概述1.1什么是gRPCRPC的全称是RemoteProcedureCall,远程过程调用。RPC是一种协议,它实际是提供了一套机制,使得应用程序之间可以进行通信,而且也遵从server/client模型。使用的时候客户端调用server端提供的接口就像是调用本地的函数一样。而gRPC又是什么呢?用官方的话来说:A......
  • 第一章 计算机网络概述——教案
    第一章计算机网络概述一、教学目标:了解计算机网络的定义和发展了解计算机网络的功能和应用了解计算机网络的系统组成掌握计算机网络的分类二、教学重点、难点网络的系统组成及分类三、技能培训重点、难点计算机网络的系统组成四、教学方法教师讲解、演示、提问;五、......
  • Linux基础46 ansible概述, 结构, 安装与配置文件, 主机清单配置
    Ansible学习一、Ansible概述1.什么是ansible?Ansible是一个自动化统一配置管理工具,自动化主要体现在Ansible集成了丰富模块以及功能组件,可以通过一个命令完成一系列的操作,进而能减少重复性的工作和维护成本,可以提高工作效率。2.自动化工具1.puppet学习难,安装ruby环境难,没......
  • 【大模型】—AI大模型总体概述
    大模型——AI大模型总体概述随着人工智能技术的迅猛发展,AI大模型一直被视为推动人工智能领域提升的关键因素,大模型已成为了引领技术浪潮研究和应用方向。大模型是指具有庞大规模和复杂结构的人工智能模型,它们具有数以亿计的参数和深层次的神经网络架构。这些模型通过学习海量数......
  • 深度剖析ja3指纹及突破
     前言是的,我重新发了,没想到一不小心就过了这么久了,发现这期间有天赋的大佬们现在对于tls指纹研究得比我还透彻了,真的强啊。有种感觉tls未来会出现一个单独的派系。文章较之前有部分改动,对理解ja3来说不影响的。因为某大佬看了我的文章后说我的方法其实不是完美突破,所以......
  • CS与BS架构模式概述
    ###CS(ClientServer):客户端服务器架构优点:利用客户端机器的资源,减轻服务器的负荷;一部分安全要求不高的计算任务、存储任务都会放在客户端执行,不需要把所有的计算和存储都放在服务器执行,减轻服务器压力,也减轻网络访问速度。缺点:需要安装本地客户端,后期升级维护成本高。适用......
  • 操作系统学习 第一章 概述
    操作系统第一章概述1.1操作系统的定义操作系统是一个控制软件-管理应用程序-为应用程序提供服务-杀死应用程序-资源管理-管理外设/分配资源(1)在操作系统下,进程\(\Longleftrightarrow\)CPU,文件\(\Longleftrightarrow\)磁盘,地址空间\(\Longleftrightarrow\)内存(2)操作系......
  • 机器学习第1章: 概述
    Chapter1:GeneralIntroductionAcknowledgment:MostoftheknowledgecomesfromYuanYang'scourse"MachineLearning".监督学习概况Supervisedlearningisanimportantsub-areaofmachinelearning.Input:\(X=(x_1,x_2,\ldots,x_N)\)Outpu......
  • [译] kubernetes:kube-scheduler 调度器代码结构概述
    本文翻译自https://github.com/kubernetes/community/blob/master/contributors/devel/sig-scheduling/scheduling_code_hierarchy_overview.md译者:胡云Troy调度器代码层次结构概述介绍调度器监视新创建的还没有分配节点的Pod。当发现这样的Pod后,调度器将Pod调度到最......
  • ES - 概述
      前言Q1:ElasticSearch是什么? 为什么要学习?ElasticSearch是一个分布式、可扩展、实时的搜索和分析引擎,基于Lucene构建。它可以用于全文搜索、结构化搜索、分析以及日志和事件数据的存储。在传统的数据库中模糊查询使用like%Harley%;但是海量数据中查询,十分慢,需要用......