微信指纹支付从设备出厂到完成支付大致可以分成4个步骤、3对公私钥:

1.设备出厂公私钥及tee适配

手机厂商在手机tee的RPMB区域内置私钥A_priv及微信支付的特定ta和SoterKeyStore,然后厂商统一将该设备信息和设备公钥A_pub存储在腾讯服务器(校验设备签名时需要向腾讯服务器发起请求)。

2.生成应用公私钥

某app想在mobile上使用微信支付,则使用soter API向tee发出请求,tee中生成应用公私钥,私钥B_priv存储在tee中,公钥通过A_priv签名后发送给应用服务器,应用服务器向腾讯服务器发出请求校验签名,通过则存储B_pub。

3.生成业务公私钥

对于同一个设备的同一个应用可能存在多个用户(不同账号在同一设备登入),这时需要对每个用户生成独立的业务公私钥C,和第二个阶段类似,在tee中生成业务公私钥,C_priv仍然存在设备中,C_pub通过B_priv签名之后传给应用服务器。

4.使用微信指纹支付

客户端向服务器请求挑战因子challenge(实际为随机数,用于防止重放攻击),客户端在指纹识别通过后调用回调函数onAuthenticationSucceeded,然后在回调函数中将 challenge发送给tee中特定的ta进行签名(微信使用自定义的SoterKeyStore),签名之后从ta(SoterKeyStore)中返回challenge+fid+tee信息+使用C_priv签名后的签名值,发送回服务器进行校验,服务器使用C_pub验签,同时校验challenge值,都通过则表示请求合法。

这里要注意几点:


1)challenge值是用于防止重放攻击。
2)签名是在tee中执行(ta),用户态通过KeyStore向ta发出签名申请。
3)fid相当于每个指纹的hash,理论上每个指纹都不同。
4)tee中指纹认证通过与否都只会回调相关函数并在回调函数中发出签名请求,比如验证通过回调onAuthenticationSucceeded,验证不通过则回调onAuthenticationError,而回调函数在用户态,可能被任意篡改,攻击者可以将onAuthenticationError函数体篡改成onAuthenticationSucceeded函数体,然而由于只有指纹验证通过之后ta才会接受签名请求,所以即使直接篡改也无法欺骗ta签名。
5)指纹验证通过后发送challenge给tee,然后从ta中返回的数据格式如下:

5.微信指纹支付和支付宝指纹支付(ifaa)主要差别


1)手机tee中内置密钥数不同。腾讯soter框架在tee的RPMB中只内置了一个设备私钥;IFAA则需要在设备中内置设备私钥+IFAA根公钥。
2)微信的应用密钥相当于ifaa的服务端密钥,但是微信应用密钥是在设备中生成,而ifaa是直接通过ifaa认证中心给服务端颁发证书。
3)微信由于没有在手机中内置根公钥,所以每次生成应用密钥的时候需要向腾讯服务器发出请求校验签名,而ifaa通过内置根证书+ifaa认证中心颁发服务端证书的方式完成校验。
4)腾讯soter开源,对小商户而言接入方便(无需申请服务端证书);ifaa目前暂时没有开源。

6.总结


总而言之,不论是指纹、人脸、眼纹还是其他特征,生物授权的本质是密钥签名,只有认证通过才签名是生物授权能保证安全的根本原因。

无论使用那种指纹支付方式,都需要和设备厂商做适配(tee和应用层),微信指纹支付原理和支付宝ifaa本质上差别不大,但是对小商户而言接入成本更低;安全性上,

由于微信soter生成应用密钥时需要向微信服务端发出申请,所以存在被记录应用用户状况的风险。

微信指纹支付原理浅析相关推荐

  1. 小米手机微信指纹支付上传服务器吗,为什么小米手机不支持微信指纹支付,客服这样回答...

    原标题:为什么小米手机不支持微信指纹支付,客服这样回答 小米手机用户都知道,早在2016年9月份,MIUI就发布官方微博称,在9月底要实现小米手机能够支持指纹支付.但已经到了2017年的1月,现在仅仅 ...

  2. invalid vcs root mapping 怎么解决_一加黑鲨华硕OPPO等手机root后微信指纹支付不可用怎么解决...

    微信指纹支付,是目前大家使用最多的一种支付方法,简单快速安全.但安卓玩机道路获取root,一直都是指纹支付的屏障.最常见的就是root后,微信指纹支付功能失效,设置指纹  支付的时候,手机会提示系统异 ...

  3. 黑鲨3/3Pro/3S解决微信指纹支付-回锁BL+刷magisk+获取root解账户锁密码锁指导教程

    黑鲨游戏手机root的非常多,从黑鲨1代开始,一直到黑鲨2黑鲨3/3S全机型都可以完美root 但安卓root 都依赖于解锁BL,只有解锁BL后才能刷入完美root权限.解锁BL有什么好处呢? 简单的 ...

  4. 微信指纹支付设置出现java6_怎么设置微信指纹支付-有微信钱包的一定要设置,这六把安全锁保护你的钱财安全...

    为了保证钱包的安全,今天我就给大家分享6个保障微信安全的小功能,不知道的朋友看完赶紧设置哟! 第一把锁:安全锁 为了防止微信被人盗用,最好就是给我们的微信钱包加上第一把锁--安全锁.这个功能设置后,想 ...

  5. 微信开启指纹支付功能 单账户每日限额5000元

    继支付宝钱包.京东钱包启用指纹支付之后,微信于8日晚也正式推出了"指纹支付"功能,可实现"秒付",不过单账户日累计额度不超过5000元.目前支付宝可用指纹支付的 ...

  6. 魅族16spro锁回BL(Bootloader) 恢复微信指纹

    这里写自定义目录标题 起因 回锁 前期准备 回锁操作 起因 购买了一台二手魅族16spro,发现无法开通微信指纹支付,提示"系统错误". 客服说可能是解锁了bootloader导致 ...

  7. 微信指纹服务器,华为公布10月底完成微信指纹适配,网友:等了三年终于有结果...

    原标题:华为公布10月底完成微信指纹适配,网友:等了三年终于有结果 虽然微信是可以支持指纹支付的,但在实际操作中却和理论上有点不一样,只有极少数手机支持微信的指纹支付,多数机型对微信的指纹支付功能视而 ...

  8. root后开启指纹支付,root之后不能用指纹支付

    ROOT后,微信,支付宝指纹支付可以用吗 若是支付宝或微信支持手机的指纹支付功能的话,是可以开启的,不过请用先在系统设置的安全与密码中对指纹进行设置. 希望可以帮助到你~望采纳哦-如满意给点赞一个哦- ...

  9. 这两款明星手机的指纹支付功能,为什么被支付宝微信紧急叫停

    号称最先进最安全的屏下指纹识别技术翻车了. 一对英国夫妇给三星S10手机套上硅胶套后,发现任何人的指纹都能轻易解锁手机,甚至可以用指纹登录到银行APP. 随后,三星官方承认S10和Note 10两款手 ...

  10. 微信支付宝关闭三星Galaxy指纹支付;乐视网回应贾跃亭破产;Chrome 78发布|极客头条...

    快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道.风里雨里,我们将每天为朋友们,播报最新鲜有 ...

最新文章

  1. SCA与spring集成(在spring中开发SOA)
  2. 【控制】《多智能体系统的协同群集运动控制》陈杰老师-第6章-参数不确定的高阶非线性多智能体系统一致性控制
  3. IEMLRN:基于图像增强的句子语义表示
  4. pytest的fixture传参数
  5. 数据结构与算法分析:算法分析
  6. 2020入侵防御系统(IPS)TOP10
  7. php英文随机验证码,PHP随机字母数字验证码
  8. java发送信息到通知栏
  9. html5 任务列表,《怪物猎人 世界:冰原》每周活动任务列表(不断更新中)
  10. Java 超全面试题
  11. 微信小程序--轮播图
  12. matlab控制机械手,单关节机械手最优轨迹控制算法优化
  13. 某数5代Cookies生成算法分析
  14. lombok @data 忽略属性_Lombok使用指南
  15. ffmpeg获取视频时长和分辨率
  16. quartus增量编译
  17. android提醒程序,设置Android闹钟 - 提醒应用程序
  18. win7字体_从零开始修电脑__如何在win7系统下分区
  19. dedecms切换模板css,dedecms更换模板教程
  20. “应用程序无法启动,因为应用程序的并行配置不正确”的问题解决

热门文章

  1. css 首行缩进两字符
  2. 学渣考深大计算机,江苏科技大学又出学霸宿舍,6名同学全部考上研究生
  3. 悉尼大学计算机科学与技术专业,墨尔本大学和悉尼大学计算机专业选哪个好?...
  4. scratch英语计算机,scratch 2怎么做计算器
  5. jquery查找指定id元素下的某个或某些元素
  6. 数字 IC 笔试面试必考点(1)FPGA 芯片架构
  7. GBASE数据库迁移(Oracle到GBase 8s的数据类型映射)
  8. Qt常用UI控件读取、写入方法
  9. 【AI简报20210625期】自动驾驶运动预测挑战赛、20美元的宜家台灯算力有多强?...
  10. NOWAIT及SKIP LOCKED的使用