九、从华为HMS快速身份验证能力FIDO2看密码学知识
章节系列目录:点击跳转
你有没有发现支付宝、银行、淘宝、华为pay等等都是使用指纹支付,为什么指纹验证、面容验证通过它就能通过呢?本篇来说说背后的原理。
根据华为开发者文档介绍如下
FIDO2线上快速身份验证客户端:
提供基于WebAuthn标准的FIDO2线上快速身份验证客户端实现,为应用及浏览器提供安卓Java API
支持使用USB、NFC、蓝牙漫游认证器。
支持指纹和3D面容的平台认证器。
将系统完整性检测结果作为FIDO2认证的前置条件,保障认证结果更安全。
BioAuthn本地生物特征认证:
将系统完整性检测结果作为使用本地生物特征认证的前置条件,保证生物特征认证更安全。
基于密钥校验机制,保障认证结果安全可信。
用户登录和用户支付时,需要验证使用者是否是服务的合法用户,就需要FIDO2线上快速身份验证能力。
这些能力最常见的就是指纹验证。还有其他的蓝牙、NFC、USB验证,验证方式就是使用物理的安全密钥,这个可以在淘宝买到,比如Yubikey,是形状类似于U盾或者动态令牌的认证器。
采用该方式的手机既可以作为客户端,也可以作为认证器(比如手机中的指纹识别硬件),只要验证指纹,即可完成登陆。
流程介绍
我个人理解的图中的名词解释一下:
3rd App:第三方应用程序,理解为你公司的app
3rd FIDO Server:FIDO服务器,理解为华为服务器,当然也可以是小米服务器等等第三方厂商的服务器。
FIDO Client:FIDO客户端,是HMS的SDK能力的一部分
FIDO Authenticator:FIDO认证器,是HMS的SDK能力的一部分
BioAuthn:本地生物能力认证,是HMS的SDK能力的一部分,如果root设备,会提示不安全的设备环境,直接禁止该生物认证功能。
流程说明如下
官方晦涩难懂的解释如下:
1.应用程序集成FIDO2客户端SDK,向FIDO服务器发起注册请求。
2.FIDO服务器将随机生成挑战值返回给应用程序,应用程序将挑战值发给FIDO客户端,FIDO客户端连接认证器,发起注册。
3.认证器验证通过,生成一对用户公私钥,并将私钥保存在本地。然后用其预置的私钥将生成的公钥及挑战值进行签名。
4.认证器返回签名给FIDO客户端,FIDO客户端返回给应用程序。应用程序发给FIDO服务器进行注册。
5.FIDO服务验证签名,保存公钥,并将处理结果返回给应用程序。
我的通俗解释如下,以华为厂商为例:
1.付钱每次输入密码很麻烦,还容易被别人看到,现在我想输入指纹或者面容。app
客户端集成FIDO2
客户端(SDK
),向华为后台服务器发起注册请求,告诉后台你要录入指纹了,以后可能就是要指纹登陆和支付了,所以华为得负责其中的安全。
注意:
hms
已内置华为手机,SDK
直接按文档声明集成,实现能力在于hms
,不会在app
里,所以app
打包集成hms
的SDK
不像集成百度地图SDK
一样,集成hms
的SDK
时app
包几乎不增加,只是增加你调用的API
的代码的体积,达不到MB
级别,也许只有几十KB
。
2.华为后台服务器生成随机值给app
客户端,app
客户端就发送给FIDO
客户端,FIDO
客户端连接认证器,向指纹硬件或者面容硬件发起认证,认证通过就可以注册。
3.本地指纹验证通过,生成一对用户公私钥,并将私钥保存在本地。然后用厂商内置的私钥将生成的公钥及随机值进行签名。
4.认证器返回签名给FIDO
客户端,FIDO
客户端返回给app
客户端。app
客户端发给华为后台服务器进行注册。
5.华为后台用厂商公钥验证签名,公钥验证签名解密出来的随机值和最初发送的一样则验证成功。然后保存你的公钥,并将处理结果返回给app
。
这里app
客户端指纹或者面容开关就算是开启了。
上面开启指纹或者面容认证算是注册过程,下面说说每一次应用指纹和面容的认证过程
官方晦涩难懂的解释如下:
1.应用程序集成FIDO2 SDK,并向FIDO服务器发起认证请求。
2.FIDO服务器将随机生成挑战值返回给应用程序,应用程序将挑战值发给FIDO客户端,FIDO客户端连接认证器,发起认证。
3.认证器验证通过,用其保存的私钥对挑战值进行签名。 认证器返回签名给FIDO客户端,及应用程序。应用程序发给FIDO服务器进行认证。
4.FIDO服务验证签名,并将处理结果返回给应用程序。
我的通俗解释如下,以华为厂商为例:
1.我现在需要付钱了。APP
客户端向华为后台服务器发起认证请求,比如指纹验证。
2.华为后台服务器将生成随机值返回给app
客户端,app
又将随机值发给FIDO
客户端,FIDO
客户端连接指纹硬件,发起认证。
3.认证通过,用注册时生成的私钥对这个随机值进行签名。认证器把签名返回给FIDO
客户端,FIDO
客户端返回给app
,app
把这个签名发送给华为后台服务器认证。
4.华为后台服务器用我的公钥验证签名,公钥验证签名解密出来的随机值和最初发送的一样则验证成功。然后把结果返回给我的app
。
5.收到验证成功的消息,我的app
就能成功付钱了。
聪明的小伙伴已经发现了,注册过程和认证过程基本就是第3、5步不同,注册是用的华为厂商内置的私钥签名,这是每个华为手机通用的,后续使用的是你自己私钥签名随机值(这和数字证书原理一样),这就代表你就是你,不是别人要付款,是你要付款。
综上所述:
把敏感信息需要的验证交给华为,华为认证通过则可以处理接下来的逻辑。
关注、留言,我们一起学习。
----------------------Talk is cheap, show me the code-----------------------
九、从华为HMS快速身份验证能力FIDO2看密码学知识相关推荐
- .NET6之MiniAPI(九):基于角色的身份验证和授权
身份验证是这样一个过程:由用户提供凭据,然后将其与存储在操作系统.数据库.应用或资源中的凭据进行比较. 在授权过程中,如果凭据匹配,则用户身份验证成功,可执行已向其授权的操作. 授权指判断允许用户执行 ...
- 835 由于安全层无法对远程计算机进行身份验证_干货 | 看黑客都是这样远程桌面安全设置...
世界那么大,谢谢你来看我!!关注我你就是个网络.电脑.手机小达人 远程桌面经常用到,同时也是黑客经常扫描的端口. 这就需要更改远程桌面默认的端口: 以windows7 为例 1.远程桌面修改默认端口3 ...
- 华为HMS生态解析与移动生态盘点
导读:在今天的移动应用商业领域,我们常常谈及"生态"这个词语. "商业生态"(Business Ecosystem)的概念最早出现在1993年5月<哈佛商 ...
- 官方出品!手把手教你在华为HMS平台开发App
HMS Core是华为面向开发者提供的开放能力合集,包括账号.支付.Push.地图等核心能力.华为通过HMS Core全面开放"芯-端-云"的能力,帮助开发者实现高效开发.快速增长 ...
- 无密码身份验证如何保障用户隐私安全?
在互联网世界,验证用户身份是一个常见又重要的场景,应用最广泛的方式当属帐号密码验证.随着开发者对身份验证安全性要求不断提升,加之用户更加注重过程中的隐私与便捷,身份验证的方式逐渐多样化,有动态令牌.短 ...
- java对接华为推送服务_华为HMS Core 4.0版本即将来袭:包含新推送服务
据官方消息,在12月27日的HUAWEI Developer Groups(简称HDG)大连活动上,华为消费者云服务HMS运营经理透露HMS Core 4.0版本即将上线,由原来的14项增加至24项核 ...
- android core apps华为,华为HMS Core 4.0全面上线 让开发者专注于应用创新发
日前,华为面向全球发布了HMS Core 4.0.HMS Core是华为终端云服务开放能力的合集,汇聚了华为终端芯-端-云能力,包含一整套开放的HMS Apps和HMS Core.HMS Capabi ...
- 激光雷达 eai g6_如何配置TAMeb 6.0 EAI以实现复杂的身份验证要求
激光雷达 eai g6 本文介绍了如何使用TAMeb 6.0版来满足复杂的身份验证要求. TAMeb 6.0的一项新功能称为EAI,旨在提供身份验证的灵活性. 在本文中,使用TAMeb构建并配置了一个 ...
- Java支付宝身份验证接口接入指南(人脸验证)
Java支付宝身份验证接口接入指南 最近公司项目有人脸身份核验的需求,首先就想到了支付宝的身份验证接口,于是就需要看支付宝的开放api文档,这里就有些坑,然后就本次接入遇到的坑,做个整理.(基于web ...
最新文章
- zookeeper在搭建的时候,解决后台启动为standalone模式问题
- 记一次validator jar冲突导致的启动异常
- 代码动态创建checkbox
- 机制 linux_从一道面试题谈linux下fork的运行机制
- 电大计算机网考上机操作题,电大计算机上机考试模拟题及答案 (1)
- layui 如何去dom_常用元素操作 - layui.element
- linux nfs用的用户权限,权限 – Linux特定用户安装NFS
- 读书笔记 effective c++ Item 34 区分接口继承和实现继承
- 幽冥岛争霸 - 和女儿一起开发的游戏-单机版基本完成
- js excel 矫正
- webpack遇见的坑:Please install 'webpack-cli' in addition to webpack itself to use the CLI.
- Java对接西门子S7
- Function的用法
- PLSQL7配置免安装Oracle客户端
- 【odoo15】odoo中的fa-xxx小图标
- ABAP tRFC和qRFC
- 洛谷 Cantor 表
- http://www.blogjava.net/beansoft/archive/2007/03/09/102812.html
- 认识字符集、ASCII、GBK、Unicode、UTF-8
- 空间直角坐标系(XYZ)转经纬度(BLH)