指纹登录是怎么跑起来的( 四 )


关于SOTER详细介绍,可以看官方文档:
https://github.com/Tencent/soter/wiki
IFAA的应用过程和SOTER差不多,这里就不再赘述了 。另外国外还有一个FIDO联盟,也是解决这个问题的,国内是联想集团的子公司国民认证在推广这个,技术原理也都差不多 。
iOS中的密钥安全iphone的操作系统和硬件都是自己控制的,所以对于安全控制它可以做的很好 。
对于本机指纹认证,苹果也提供了Touch ID的API,可以在前端调用指纹认证,但是如果要发送到服务端去验证,基于各种安全考虑,就还是需要一个客户端密钥,这个客户端密钥有没有安全的产生方式呢?我没有找到官方的文档说明,很多基于这个方案的第三方应用可能都是自己生成的吧,尽量做到安全 。当然这个也是猜测 。
但是微信或者支付宝这种应用怎么能忍呢?SOTER曾经说要支持iOS,最后也是不了了之;IFAA宣传的是兼容支持iPhone 5s 以上所有 iOS 手机,不过它不开源 。可能苹果最终还是不想把这块放开,同时基于苹果的强势地位,最有可能是苹果专门给这种应用开放了特定的API,不许外传 。
如果是做指纹登录,其实可以直接使用苹果开放的Apple ID登录协议,支持指纹和刷脸认证,会给应用返回认证Token和授权码,应用后台拿着这两个再去找苹果验证 。从这个逻辑上看,苹果的后台必然能安全的确认发起请求的客户端身份,所以估计和Android的原理差不多,只不过前后端的每次认证都得苹果来验证 。
Web中的指纹认证上面提到过一个FIDO联盟,它和W3C搞了一个WebAuthn标准,它的目的是标准化用户对基于 Web 的应用程序和服务的公钥认证的接口,说人话就是定了一个Web程序中使用公钥认证的标准,所谓的公钥认证就是上文提到的客户端密钥认证技术 。这个国内产品好像使用的不多见,不过这件事挺牛的 。它可以在windows、linux、mac OS、Android、iOS、智能手表等各种设备中使用指纹识别、面部识别、虹膜识别、声音识别、实体密钥(USB连接、蓝牙连接、NFC连接)等多种方式进行认证,尽可能的摆脱对密码的依赖 。
【指纹登录是怎么跑起来的】这个技术标准和APP中的公钥认证技术是一脉相承的,主要区别在于APP换成了浏览器,认证模块除了操作系统本身支持,还增加了对专用硬件的支持 。有兴趣的可以去了解下 。


推荐阅读