Android生物识别
生物识别
借助生物识别因素,可在 Android 平台上实现安全的身份验证。Android 框架包含人脸和指纹生物识别身份验证方式。您可对 Android 进行自定义以支持其他形式的生物识别身份验证方式(例如虹膜)。所有生物识别实现都必须符合安全规范且具有较高的安全评级才能使用 BiometricPrompt 类。衡量生物识别的指标有冒名接受率 (IAR) 和欺骗接受率 (SAR)。
如需详细了解生物识别安全规范,请参阅衡量生物识别解锁模式的安全性。
来源
Android 10
- 引入了 BiometricManager 类,开发者可用其查询生物识别身份验证的可用性。
- 包含 BiometricPrompt 指纹和人脸识别身份验证集成
Android 9
- 仅包含 BiometricPrompt 指纹集成。
- 弃用了 FingerprintManager 类。如果您的捆绑式应用和系统应用使用此类,请更新这些应用以改用 BiometricPrompt 和 BiometricManager。
- 更新了 FingerprintManager CTS 验证程序测试,以使用 BiometricPromptBoundKeysTest 测试 BiometricPrompt。
实现
为确保用户和开发者获享无缝的生物识别体验,请将生物识别堆栈与 BiometricPrompt 集成。为任何模态(包括人脸、指纹和虹膜)启用 BiometricPrompt 的设备必须符合这些安全程度要求。如果它们不符合这些安全程度要求,就无法实现此类。
如需将生物识别堆栈与 BiometricPrompt 和 BiometricManager 集成,请执行以下操作:
- 确保您的 <Modality> 服务已正确挂接到 BiometricService 并挂接 authenticate() 方法。常见的模态(指纹、人脸)从共同的父类扩展。如果您需要集成不受支持的模态,请遵循指纹/人脸识别示例及针对生物识别的 CDD 指南。
- 确保您的新模态在 SystemUI 中得到了相应支持。系统提供了适用于指纹和人脸识别的 BiometricPrompt 默认界面。
- 更新框架,让添加的生物识别技术遵循 KEYGUARD_DISABLE_* 标记。
- 对于您已集成到 BiometricPrompt/BiometricManager 中的每种模态,确保您的设备可通过 CTS 和 CtsVerifier 测试。例如,如果您同时支持指纹和人脸识别身份验证,则必须通过针对每项身份验证方式的各项测试。
注意:请使用 androidx.biometric 支持库演示版应用来测试您的实现。该库会定期添加新的用例。
图 1. BiometricPrompt 架构
HAL 实现指南
遵循以下生物识别 HAL 准则,以确保生物识别数据不会泄露,并在从设备中移除用户时一并移除:
- 确保在任何情况下都无法从传感器驱动程序或安全隔离环境(例如 TEE 或安全元件)以外访问原始生物识别数据或衍生内容(例如模板)。
- 如果硬件支持,则限制硬件对安全隔离环境的访问权限,并使用 SELinux 政策对其进行保护。使用针对所有设备文件的明确 SELinux 政策,确保信道(例如 SPI、I2C 等)只能供安全隔离环境访问。
- 生物识别信息的采集、注册和识别必须在安全隔离环境内部进行,以防范数据泄露和其他攻击。此要求仅适用于安全程度高的生物识别技术。
- 仅在文件系统上存储加密形式的生物识别数据或衍生内容(即使文件系统本身已加密)。
- 如需防范重播攻击,请使用设备专用私钥对生物识别模板进行签名。对于高级加密标准 (AES),至少必须通过绝对文件系统路径、群组和生物识别 ID 对模板签名,使相应模板文件无法在其他设备上使用,也无法供同一设备上除注册者以外的任何其他用户使用。例如,您将无法复制同一设备上其他用户的生物识别数据,也无法从其他设备复制生物识别数据。
- 使用 set_active_group() 函数提供的文件系统路径,或提供另一种能够在移除用户时一并清空所有用户模板数据的方法。强烈建议将生物识别模板文件以加密形式存储在提供的路径中。如果因安全隔离环境的存储要求而导致这种做法不可行,请添加一些钩子,以确保在移除用户或清空设备数据时一并移除相关数据。
自定义
如果您的设备支持多种生物识别技术,用户应可以在设置中指定默认值。您的 BiometricPrompt 实现应该默认首选安全程度高的生物识别技术(除非用户明确替换该选项),并需要显示一条警告消息来说明与生物识别相关的风险(例如:“也许您的照片也能解锁设备”)
验证
您的生物识别实现必须通过以下测试:
- CTS BiometricManager
- CTS BiometricPrompt(健全性方面的深入测试依赖于验证程序)
- CtsVerifier BiometricPromptBoundKeysTest:必须通过针对设备支持的每种模态的各项测试
- CtsVerifier BiometricTest:必须通过针对设备支持的每种模态的各项测试
此外,如果您的设备支持具有 AOSP HIDL 的生物识别技术(fingerprint@2.1、face1.0),则必须通过与之相关的 VTS 测试(fingerprint、face)。
Android生物识别相关推荐
- Android生物识别 指纹识别面部识别,生物认证Biometric的简单使用
Android生物识别 指纹识别面部识别,生物认证Biometric的简单使用 生物认证Biometric 很多APP都要求免登录,银行什么的,要求指纹登录,密码登录,再不就是手势登录. Biomet ...
- android 生物识别_如何在android中设置生物特征认证
android 生物识别 本文的重点 (The Takeaway From This Article) Biometric authentication is an extension of fing ...
- Android Q 上的Biometric生物识别之Face人脸识别流程
第一部分,人脸识别身份验证HIDL 借助人脸识别身份验证功能,用户只需要将自己的面孔对准设备即可将其解锁.Android 10 增加了对一种新的人脸识别身份验证堆栈的支持,这种堆栈可安全处理摄像头帧, ...
- 支付宝推生物识别;Google 爆重大隐私问题;TensorFlow 2.0 即将发布 | 极客头条
「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道.风里雨里,我们将每天为朋友们,播报最新鲜有料的新闻资讯,让所有技术人,时刻紧跟业界潮流. 快讯速知 支 ...
- Android生物认证Biometric 四十行代码轻松实现面部识别、指纹认证
Biometric Biometric是谷歌官方提供的生物识别验证类库,能调用包括目前Android设备上搭载的指纹.人脸.虹膜等系统级的生物认证.(目前大多数的国内定制ROM可能因为安全问题,仅支持 ...
- Android指纹识别,看这一篇就够了
在Android6.0(Api23)的时候,Android系统加入了指纹识别的api接口,即FingerprintManager,定义了最基础的指纹识别接口.不过,在AndroidP(Api28)的时 ...
- Android - 指纹识别API示例
– 前言 需求说明:app经常要验证码验证用户手机号保证安全性,现在想接入指纹识别来代替验证码验证,不支持指纹识别的设备照常用验证码. 了解API Android在23(Android M 6.0)新 ...
- 人脸识别界面设计Android,人脸识别系统的设计及Android平台实现
摘要: 近些年来,随着人们对信息安全问题的日益重视,生物识别技术由于其自身具有传统身份技术所不具备的优势,被大量地用于身份认证中.人脸作为一种重要的生物特征,具有唯一性,随身携带的优点,而且人脸图像的 ...
- 指纹(生物识别)的软件框架
指纹(生物识别)HAL层以上的软件框架(注意跨进程通信的交界) 指纹验证的整体框架(应当结合第一张图片一起看,图中圈红的已被替换) Cryptographic key storage and serv ...
- android指纹识别真机,就等魅蓝了,全面屏时代指纹解锁该放在哪才不尴尬
[PConline 杂谈]全面屏手机来临,市面上的手机似乎在一夜之间都成为了长相相差无几的"表兄弟",除了Logo可以证明不是出自一家之手,相同的正面外观.机身背部毫无区别的双摄和 ...
最新文章
- hibernate hql语句 投影查询的三种方式
- Java多线程4:synchronized锁机制
- Vue之动态组件(二)
- tinymce vue 部分工具不显示_工具栏图标未在tinymce(4.0.1)文本编辑器中显示
- 小乐乐与二段数(2019哈理工新生赛第20题)
- kubelet源码分析(四)之 syncLoopIteration
- 搭建百万级别邮件发送平台
- oracle导出自增设置,教程方法;oracle中如何设置自增主键电脑技巧-琪琪词资源网...
- 互联网金融消费利用场景化带动行业发展趋势
- 系列个人网站上线一周年总结
- java二维数组货柜,装箱布局三维可视化控件开发sup*/sup
- 数字电子钟仿真软件中的电路测试,如何利用Multisim仿真软件进行数字电子钟设计...
- Git 学习进展 (补发)
- 安卓和苹果上线流程:
- 北京朝阳一互联网公司被端,警方上门,23人被带走…这种开发千万别干
- 《世界上最远的距离》——泰戈尔
- 啦啦外卖V45.9稳定运营独立版+公众号+小程序前端 +APP前端+新授权接口 源码安装测试教程
- VSE++: Improving Visual-Semantic Embeddings with Hard Negatives
- python的文件操作方法_python的文件操作方法汇总
- 监听实时生成的双声道wav文件转文字
热门文章
- python中断输入_在 Python 中接管键盘中断信号的实现方法
- 用计算机KADIO算方差,KADIO_KD-82TL__计算器.ppt
- html5 输入用户名和密码登陆网址,360路由器登录网址用户名和密码指南
- ffmpeg实例,fade淡入淡出效果
- Socket通讯连接常见错误代码
- oracle e18,ORACLE_10g_各版本下载地址大全
- 单片机中SDZ是什么意思_单片机里sp是什么意思啊
- number of lines annotated by git is not equal to number of linus in the file .check file encoding an
- 经常被问到的有深度有内涵的数据结构面试题
- Python带我飞:50个有趣而又鲜为人知的Python特性