假如我来设计iPhone 5s的Touch ID

方案1:

电容扫描的指纹图像存储到设备,校验时对比刚扫描的指纹图像特征与存储的指纹图像特征是否相同。

漏洞:

指纹图像如果泄露,科技足够发达的情况下,可以复制出一个生化指头。

方案1改进方案2:

如果只是为了对比特征,那只需存储指纹特征。校验时对比刚扫描的指纹特征与存储的指纹特征是否相同。

改进优点:

假如指纹特征通过特定算法变成字符串“蚂蚁的大拇指”,那么通过“蚂蚁的大拇指”这个串是无法还原原始指纹图像的。

漏洞:

指纹特征如果泄露,黑客可以简单复制指纹特征到另一台设备,这样这台设备就拥有对应的TouchID权限。

方案2改进方案3:

我们把指纹特征和TouchID芯片里的机密SECRET在芯片里通过算法组合后hash得到特征字符串“蚂蚁在iPhone5s xxx的大拇指”,用来对比。

改进优点:

黑客无法简单地复制指纹特征到另一台设备来攻陷TouchID。

漏洞:

如果在本设备特征字符串被泄露,对应的指纹就不能被用在安全认证上了,这样算上脚趾,我们只有20个可以变换的类似密码的TouchID。

方案3改进方案4:

把指纹特征和TouchID芯片里的机密SECRET组合某个应用的签名,在芯片里通过算法hash得到特征字符串“蚂蚁在iPhone5s xxx 对于应用A的大拇指”,再用来对比。

改进优点: 即使特征字符串被泄露,应用之间是隔离的。

漏洞:

如果系统越狱,对应应用的特征字符串的存储能够被泄露。

总结

说到底,还是一些基本的PKI安全策略:

  1. 不存储原始SECRET安全信息,而是加salt后的hash特征值。就是说无论是指纹图像还是特征,绝不能存储在设备里。类似CSDN那样保存明文信息的做法是不可饶恕的。
  2. TouchID芯片里的SECRET无法通过任何方式读出,hash算法在芯片里执行。
  3. 保证存储在芯片里的hash特征值无法通过软件方式写入,必须由硬件扫描时激发写入。这可以避免黑客远程改写。
  4. TouchID校验机制与软件环境完全隔离,无法通过软件方式进行中间人攻击。
  5. 每个应用不能简单地利用全局hash特征,而必须都加入自己的salt来互相隔离。每个应用都应该形成自己的安全堡垒。过于通用的系统通行证反而是最大的安全漏洞。当然这个苹果可能会做权衡。

说到底指纹和文本密码的安全是类似的,除了文本密码在变化的数量上超越指纹,其他方面没有任何区别。考虑到社会学意义上人们一生所用的文本密码数量有限,不超越手指脚趾数目。这两者的安全性是等价的。

喜欢这篇文章就分享到微博吧!
留言请发送到
微信公众帐号
“技术派”

修订历史:


知识共享许可协议

关注@好看簿的蚂蚁

探讨技术、设计、人文和商业
相关的创业话题