水杯上到处都是我的指纹,有点担心 iPhone 的指纹识别

知乎日报 林建入;季逸超 136℃ 评论

水杯上到处都是我的指纹,有点担心 iPhone 的指纹识别

图片:CPOA / CC BY-ND

为什么 Touch ID 存储在本地的指纹信息可以用来验证 Apple ID,是否存在安全隐患?

林建入,软件设计师
这并不新奇。类似的问题在密码学里早已经解决了。

首先我们需要明确,进行指纹匹配,事实上并不需要发送整个指纹图像到远程服务器,而只需要根据本地采集到的指纹图像数据提取出一些特征模式,汇总成一个描述结构,然后只发送这个描述结构即可。

所以,指纹识别的过程,本质上属于数字序列的一种广义匹配。因此,只要我们能基于密码学原理建立一种安全的远程数字序列匹配方法,就能够保护包括指纹识别、心跳识别、脑波识别等身份识别过程。

例如基于 HMAC (Hash-based Message Authentication Code) 的方法。如果苹果基于此类方法实现其指纹识别系统,那么苹果可以做到:

1、服务端只需存储用户指纹信息哈希后的摘要值,而不存储原始的指纹信息,因此服务器即使被入侵,也不会泄露用户的指纹信息。

2、验证指纹的过程中,用户的指纹信息不会在网络上传输,而只是传输指纹信息哈希后的摘要值。即使被窃取,也无法还原出原始指纹信息。并且由于 HMAC 具有的防重放攻击特性,攻击者也无法凭借该段摘要伪造用户身份执行其他操作。

当然,这只是安全体系的一小部分。但是也是至关重要和不可或缺的。由于在指纹识别方面我并没有做过太具体的工作(我有同学做这方面),因此说得不对还请大家见谅。

关于 HMAC 的应用,在另一篇文章里,我也曾经简单的讨论过:

阿北能不能看到我在豆瓣的账户对应的密码?

特别值得一提的是,对于基于指纹的身份验证需要特别重视其安全性。因为对于一般性的密码,我们如果发现泄漏,可以通过修改密码来补救。但是指纹基本是一生不变的,一旦泄漏,后果严重。

但遗憾的是,指纹又特别容易泄漏。我递杯水给你,你一握杯子,你的指纹就留下了。或者对于曾经服刑过的人员,指纹也许都加入了国家统一管理的指纹数据库,你的指纹就更加不是秘密了。

因此在我看来,基于指纹识别来完成身份验证,是不完整的。还需要和设备绑定,以及辅以其他增强手段。否则其功能形同虚设。当然苹果有最一流的相关领域人员,我相信他们能够做好安全性和易用性的平衡。

iPhone 5s 采用的指纹识别 (Touch ID) 会有哪些安全隐患?

季逸超,猛犸浏览器创始人、Rasgueado输入法作者

大家在讨论指纹信息能否hash,没原始数据怎么对比?当然可以hash,指纹不是位图那样对比,而是傅里叶变换后滤波得到特征数据再对比。

我的朋友 autopear 大大从代码上看苹果采用的方案确实和我下面说的Mapping一样,至少对于第一方软件是这样的。

本来以为苹果会在硬件层做更多安全措施,甚至可能让指纹数据完全不出现在软件层。但就在刚刚,以前WEIP技术组的朋友autopear说,已经找到保存指纹数据的位置,可加载为NSData...估计具体格式过一阵搞搞就出来吧,目前估计就是加了salt的hash。

最大的安全隐患是每个人只有一套指纹,而且不像密码那样可以随时换。

也就是说,如5S等设备/服务的任何一个指纹数据泄露就等于全盘泄露...

我觉得5S的指纹扫描绝不能让第三方软件获取raw数据,hash都不行,应允许用户保存一套Mapping:如食指指纹对应常用密码A,中指指纹对应网银密码B,第三方只能调用系统密码文本框控件来黑箱获取文本输入,软件代码不用改又安全 。该映射只有iOS知道,不同步或云端保存(感谢棱镜项目,苹果绝对不敢这么干)。

简单来说,就是iOS本身最好能有一个用户自行维护的本地“文本密码”库,而指纹只是这个库的钥匙。用户角度来看,他们会发现,每处密码输入文本框都会提示可以用指纹扫描,但他们不知道其实iOS只是以指纹为令牌获取了文本密码并填进去再确认。

这对开发者来说有三点好:

  1. 代码不用改,所有的secured文本框(***代替文本那种...)都自动支持了指纹

  2. 撇清责任,从逻辑上杜绝了自己泄露指纹的可能

  3. 交互不变,不用给指纹单独设计流程

这么做最多在API层面杜绝了安全隐患,但真正可怕的是越狱...

越狱后这些什么措施都是纸老虎了,像我这样不犀利可能研究下劫持,更犀利的直接驱动层搞起了啊!

转载请注明:微图摘 » 水杯上到处都是我的指纹,有点担心 iPhone 的指纹识别

喜欢 (0)or分享 (0)
发表我的评论