怎样指纹支付 指纹支付模块( 三 )

  • 服务端验证客户端的身份:也是通过非对称密钥的方式 , 客户端生成一对非对称密钥 , 私钥自己保存好 , 公钥发送到服务端 。指纹认证通过后客户端使用私钥对请求参数进行签名 , 然后再发送出去 , 服务端使用客户端公钥对接收到的数据签名进行验证 , 如果验证通过 , 则说明数据没有被篡改 , 可以处理客户端发起的业务请求 。
  • 开启指纹认证这里以登录为例 , 来看看如何使用指纹认证来做APP登录 。还是先要注册指纹 , 具体过程如下图所示:
    怎样指纹支付 指纹支付模块

    文章插图

    • 5开启指纹:开启指纹登录的时机 , 一般都是先用别的方式登录了APP , 然后再开启指纹登录 。但是也有一些例外 , 用户使用APP时直接使用第三方登录 , 第三方提供了指纹登录的方式 , 比如使用Apple Id登录 。上边图中是先用账号密码登录了系统 , 然后才开启的指纹认证 。
    • 12对比系统存在的指纹:指纹数据始终保存在手机本地 , 不会上传到远程 。目前市面上的手机都是这样做的 , Android和iOS提供的指纹认证API都只返回true或者false的认证结果 , 这样可以避免云服务被攻破时导致大规模泄漏的严重后果 , 最大限度的保护用户生物特征数据的安全 。
    • 13指纹验证成功:本地指纹认证通过就代表用户身份验证通过 , 不管是哪个手指 。早期的操作系统版本中可能能够获得是使用的哪个指纹 , 但是现在一般都不开放了 , 只能得知指纹集是否发生了变化(删除或者添加了指纹) , 此时App可以强制用户退出 , 再使用其它安全的方式登录 , 然后再让用户决定是否开启指纹 , 支付宝就是这样做的 。
    • 重放攻击问题:步骤16中的请求可能被人截获 , 虽然无法解密 , 但是可以多次发向服务端 , 造成重放攻击的问题 , 可以引入一个挑战码来解决这个问题 。步骤8初始化指纹注册请求时服务端可以生成这个挑战码 , 然后在步骤16中携带这个挑战码 , 然后在服务端进行验证 。
    使用指纹认证下面再来看下使用指纹登录的过程:
    怎样指纹支付 指纹支付模块

    文章插图