生物特征识别开发概述
提供生物特征识别认证能力,可应用于设备解锁、支付、应用登录等身份认证场景。
当前生物特征识别能力提供2D人脸识别、3D人脸识别两种人脸识别能力,设备具备哪种识别能力,取决于设备的硬件能力和技术实现。3D人脸识别技术识别率、防伪能力都优于2D人脸识别技术,但具有3D人脸能力(比如3D结构光、3D TOF等)的设备才可以使用3D人脸识别技术。
基本概念
生物特征识别(又叫生物认证):通过计算机与光学、声学、生物传感器和生物统计学原理等高科技手段密切结合,来进行个人身份的鉴定。
人脸识别:基于人的脸部特征信息进行身份识别的一种生物特征识别技术,用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部识别,通常也叫做人像识别、面部识别、人脸认证。
运作机制
人脸识别会在摄像头和TEE(Trusted Execution Environment)之间建立安全通道,人脸图像信息通过安全通道传递到TEE中,由于人脸图像信息从REE(Rich Execution Environment)侧无法获取,从而避免了恶意软件从REE侧进行攻击。对人脸图像采集、特征提取、活体检测、特征比对等处理完全在TEE中,基于TrustZone进行安全隔离,外部的人脸框架只负责人脸的认证发起和处理认证结果等数据,不涉及人脸数据本身。
人脸特征数据通过TEE的安全存储区进行存储,采用高强度的密码算法对人脸特征数据进行加密和完整性保护,外部无法获取到加密人脸特征数据的密钥,保证用户的人脸特征数据不会泄露。本能力采集和存储的人脸特征数据不会在用户未授权的情况下被传出TEE,这意味着,用户未授权时,无论是系统应用还是三方应用都无法获得人脸特征数据,也无法将人脸特征数据传送或备份到任何外部存储介质。
约束与限制
- 当前版本提供的生物特征识别能力只包含人脸识别,且只支持本地认证,不提供认证界面。
- 要求设备上具备摄像器件,且人脸图像像素大于100*100。
- 要求设备上具有TEE安全环境,人脸特征信息高强度加密保存在TEE中。
- 对于面部特征相似的人、面部特征不断发育的儿童,人脸特征匹配率有所不同。如果对此担忧,可考虑其他认证方式。
生物特征识别开发
场景介绍
当前生物特征识别支持2D人脸识别、3D人脸识别,可应用于设备解锁、应用登录、支付等身份认证场景。
接口说明
BiometricAuthentication类提供了生物认证的相关方法,包括检测认证能力、认证和取消认证等,用户可以通过人脸等生物特征信息进行认证操作。在执行认证前,需要检查设备是否支持该认证能力,具体指认证类型、安全级别和是否本地认证。如果不支持,需要考虑使用其他认证能力。
接口名 | 功能描述 |
---|---|
getInstance(Ability ability) | 获取BiometricAuthentication的单例对象。 |
checkAuthenticationAvailability(AuthType type, SecureLevel level, boolean isLocalAuth) | 检测设备是否具有生物认证能力。 |
execAuthenticationAction(AuthType type, SecureLevel level, boolean isLocalAuth,boolean isAppAuthDialog, SystemAuthDialogInfo information) | 调用者使用该方法进行生物认证。 |
getAuthenticationTips() | 获取生物认证过程中的提示信息。 |
cancelAuthenticationAction() | 取消生物认证操作。 |
setSecureObjectSignature(Signature sign) | 设置需要关联认证结果的Signature对象,在进行认证操作后,如果认证成功则Signature对象被授权可以使用。设置前Signature对象需要正确初始化,且配置为认证成功才能使用。 |
getSecureObjectSignature() | 在认证成功后,可通过该方法获取已授权的Signature对象。如果未设置过Signature对象,则返回null。 |
setSecureObjectCipher(Cipher cipher) | 设置需要关联认证结果的Cipher对象,在进行认证操作后,如果认证成功则Cipher对象被授权可以使用。设置前Cipher对象需要正确初始化,且配置为认证成功才能使用。 |
getSecureObjectCipher() | 在认证成功后,可通过该方法获取已授权的Cipher对象。如果未设置过Cipher对象,则返回null。 |
setSecureObjectMac(Mac mac) | 设置需要关联认证结果的Mac对象,在进行认证操作后,如果认证成功则Mac对象被授权可以使用。设置前Mac对象需要正确初始化,且配置为认证成功才能使用。 |
getSecureObjectMac() | 在认证成功后,可通过该方法获取已授权的Mac对象。如果未设置过Mac对象,则返回null。 |
开发步骤
开发前请完成以下准备工作:
- 在应用配置权限文件中,增加ohos.permission.ACCESS_BIOMETRIC的权限声明。
- 在使用生物特征识别认证能力的代码文件中增加import ohos.biometrics.authentication.BiometricAuthentication。
开发过程:
1. 获取BiometricAuthentication的单例对象,代码示例如下:
BiometricAuthentication biometricAuthentication = BiometricAuthentication.getInstance(MainAbility.mAbility);
复制
2. 检测设备是否具有生物认证能力:
2D人脸识别建议使用SECURE_LEVEL_S2,3D人脸识别建议使用SECURE_LEVEL_S3。代码示例如下:
int retChkAuthAvb = biometricAuthentication.checkAuthenticationAvailability(
BiometricAuthentication.AuthType.AUTH_TYPE_BIOMETRIC_FACE_ONLY,
BiometricAuthentication.SecureLevel.SECURE_LEVEL_S2, true);
复制
3. (可选)设置需要关联认证结果的Signature对象或Cipher对象或Mac对象,代码示例如下
// 定义一个Signature对象sign;
biometricAuthentication.setSecureObjectSignature(sign);
// 定义一个Cipher对象cipher;
biometricAuthentication.setSecureObjectCipher(cipher);
// 定义一个Mac对象mac;
biometricAuthentication.setSecureObjectMac(mac);
复制
4. 在新线程里面执行认证操作,避免阻塞其他操作,代码示例如下:
new Thread(new Runnable() {
@Override
public void run() {
int retExcAuthretExcAuth = biometricAuthentication.execAuthenticationAction(
BiometricAuthentication.AuthType.AUTH_TYPE_BIOMETRIC_FACE_ONLY,
BiometricAuthentication.SecureLevel.SECURE_LEVEL_S2, true, false, null);
}
}).start();
复制
5. 获得认证过程中的提示信息,代码示例如下:
AuthenticationTips tips = biometricAuthentication.getAuthenticationTips();
复制
6. (可选)认证成功后获取已设置的Signature对象或Cipher对象或Mac对象,代码示例如下:
Signature sign = biometricAuthentication.getSecureObjectSignature();
Cipher cipher = biometricAuthentication.getSecureObjectCipher();
Mac mac = biometricAuthentication.getSecureObjectMac();
复制
7. 认证过程中取消认证,代码示例如下:
int ret = biometricAuthentication.cancelAuthenticationAction();
最后,为了能让大家更好的去学习提升鸿蒙 (Harmony OS) 开发技术,小编连夜整理了一份30个G纯血版学习资料(含视频、电子书、学习文档等)以及一份在Github上持续爆火霸榜的《纯血版华为鸿蒙 (Harmony OS)开发手册》(共计890页),希望对大家有所帮助。
纯血版鸿蒙 HarmonyOS 4.0 视频学习资料
需要以上视频学习资料小伙伴
《纯血版华为鸿蒙 (Harmony OS)开发手册》
这份手册涵盖了当前鸿蒙 (Harmony OS) 开发技术必掌握的核心知识点
纯血版鸿蒙 (Harmony OS)开发手册部分精彩内容
HarmonyOS 概念:
- 系统定义
- 技术架构
- 技术特性
- 系统安全
如何快速入门?
- 基本概念
- 构建第一个ArkTS应用
- 构建第一个JS应用
- ……
开发基础知识:
- 应用基础知识
- 配置文件
- 应用数据管理
- 应用安全管理
- 应用隐私保护
- 三方应用调用管控机制
- 资源分类与访问
- 学习ArkTS语言
- ……
基于ArkTS 开发:
- Ability开发
- UI开发
- 公共事件与通知
- 窗口管理
- 媒体
- 安全
- 网络与链接
- 电话服务
- 数据管理
- 后台任务(Background Task)管理
- 设备管理
- 设备使用信息统计
- DFX
- 国际化开发
- 折叠屏系列
- .……
获取以上文中提到的这份纯血版鸿蒙 (Harmony OS) 开发资料的小伙伴
🚀写在最后
- 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
- 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
- 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。
- 想要获取更多完整鸿蒙最新VIP学习资料,请点击→纯血版全套鸿蒙HarmonyOS学习资料