没有指纹传感器的iPhone发布带来了一些关于使用指纹进行身份验证以及数据存储安全性的讨论。 棒极了。 即使你不关心它是如何完成的,你也需要关心很多其他人,这样你就不用担心了!
对于初学者来说,Apple使用类似的解决方案,如果您使用带有指纹传感器的旧型号,那么使用它就像以前一样安全。 对于在Marshmallow之前推出并使用三星自己的方法的旧款三星手机也是如此。
Google存储指纹数据的方式是当前技术最安全的方式。 一旦你了解它,整个事物的概述是多么简单,这也很有趣。 简单而安全始终是一个成功的组合。
从本质上讲,存储不是很安全。 这与在便利贴上写东西并将其放在文件柜中是一回事。 它就在那里,因为它需要在那里,你能做的最好的事情就是控制谁可以访问它。 对于文件柜,您使用锁,而对于您的手机,则使用加密。 对于您的指纹数据,事情更进了一步:可信执行环境(TEE)。
TEE是手机硬件中独立且隔离的区域。 TEE可能使用自己的处理器和内存,也可以使用主CPU上的虚拟化实例。 在这两种情况下,TEE都是完全隔离的,并使用硬件支持的存储器和输入/输出保护进行绝缘。 你要进入的唯一方法是TEE让你进入,它永远不会。 即使手机已植根或引导加载程序已解锁,TEE也是独立的,仍然完好无损。
具有自己的内存和操作系统的独立处理器用于分析和存储指纹数据。
谷歌使用他们所谓的Trusty TEE来支持这一点。 一个非常小而高效的操作系统,恰当地称为Trusty OS,在TEE硬件和内核驱动程序上运行,允许它与系统通信。 有些Android库(您猜对了:Trusty API)供开发人员使用,因此他们可以询问TEE的是或否问题。 不仅指纹数据存储在TEE中。 诸如DRM密钥和制造商的引导加载程序密钥之类的东西也存在于TEE中,其工作方式与指纹数据相同 - 回答应用程序提供给它的数据是否与它存储的已知良好数据相匹配。
其他制造商可以使用Trusty OS,或者可以使用不同的系统。 只要满足所有标准(下面列出)并且TEE是隔离和绝缘的,它将满足使用Pixel Imprint(以前的Nexus Imprint)所需的安全标准。
ARM TrustZone TEE框图。在Android手机上注册指纹时,传感器会从扫描中获取数据。 Trusty OS在TEE内部分析这些数据,然后创建两件事:一组验证数据和一个加密的指纹模板。 这似乎是除了TEE之外的所有东西的垃圾数据,TEE也有解密垃圾数据的关键。 此加密指纹模板存储在TEE或手机加密存储上的加密容器中。 三个加密层意味着获取数据几乎是不可能的,即使你没有办法解密它也可能没用。
Android要求使用唯一密钥保护您的指纹数据,您可以将其带到另一部手机或将其重新用于其他用户。
验证数据存储在TEE内。 当您将手指放在扫描仪上以尝试执行某些操作时,扫描仪会构建数据配置文件。 通过Trusty API,关联的应用程序要求内核询问TEE是否正确。 TEE使用其单独的处理器和内存检查存储的验证数据,如果有足够的数据匹配则表示是。 如果没有足够的匹配数据,则说不。 此传递或失败响应作为API可以读取以查看结果的软件令牌发送回内核。
虽然TEE本身使用独立的操作系统和硬件来保持安全,但指纹模板使用基于软件的加密。 它必须由非常具体的密钥签名才能生效。 此密钥是使用特定于设备的信息,特定于用户的信息和特定于时间的信息创建的。 换句话说,如果您删除用户,更改设备或尝试重新注册指纹(系统可以判断您是否覆盖现有指纹)密钥不再被识别,也不能用于解密指纹模板。
每个公司制作带有指纹传感器的Android手机的基本规则都必须遵循:
- 所有指纹数据分析必须在TEE内部执行
- 与指纹相关的所有数据必须存储在TEE或可信存储器中(主CPU甚至看不到的存储器)
- 即使存储在加密的电话存储中,指纹配置文件数据也必须是自加密的
- 删除用户帐户还必须安全地擦除与该用户指纹相关的任何数据
- 存储指纹配置文件的位置不得对任何应用程序,进程或用户(包括root用户)可见
- 任何类型的指纹数据都不得备份到任何其他来源,包括云或您的计算机或任何应用程序
- 指纹认证必须由请求它的进程使用(不共享任何指纹数据,即使只是是或否答案,看它是否正确)
如果您有一些明确的标准规格,那么满足它们并不困难。 这样可以确保无论您使用何种Android手机,您的指纹数据都将被安全存储,而其他任何系统进程或应用都无法访问它。 随着密码学的发展,特别是硬件支持的加密,这种保持指纹数据安全的方法也将如此。 一旦Android Z推出并回顾我们已经走了多远,回顾它会很有趣。