在我的 Android 设备上,我最多可以存储 3 个指纹,以使用内置于主页按钮的指纹扫描仪解锁手机。如果我没记错的话,在 iPhone 上是 5 个指纹。但是大多数人有 10 个手指,我无法想象通过 10 个指纹而不是 3 个指纹散列进行检查之间的性能差异是显着的。
智能手机是否出于安全原因限制用户只能记录 3 或 5 个指纹?
我最好的猜测是,允许用户记录更多指纹可能会增加误报的可能性,或者通过允许记录更多指纹可能存在侧通道漏洞,这是我没有想到的。
在我的 Android 设备上,我最多可以存储 3 个指纹,以使用内置于主页按钮的指纹扫描仪解锁手机。如果我没记错的话,在 iPhone 上是 5 个指纹。但是大多数人有 10 个手指,我无法想象通过 10 个指纹而不是 3 个指纹散列进行检查之间的性能差异是显着的。
智能手机是否出于安全原因限制用户只能记录 3 或 5 个指纹?
我最好的猜测是,允许用户记录更多指纹可能会增加误报的可能性,或者通过允许记录更多指纹可能存在侧通道漏洞,这是我没有想到的。
不,没有特定的安全理由来限制存储的指纹数量。
然而,鉴于这些指纹模块通常是 HSM,如智能卡,存储指纹,指纹模块可以存储的秘密的数量和大小是有限的。
请注意,指纹模板也可以变得非常大,因为存储指纹模板不像将密码哈希存储在密码数据库中。每次读取指纹时,都会得到与上次读取完全不同的结果,因为您没有像注册或“注册”自己时那样准确地放置手指。
现在,指纹识别器需要对输入的指纹图像和模板图像进行艰难的计算,得出一个结论,如果刚刚读取的指纹与当前注册的指纹足够相似,则可以成功认证。这种相似性可以表示为身份验证功能的输入,您可以在其中选择身份验证应该有多“敏感”(太敏感=它会经常拒绝您的手指,太弱=它可能允许未经授权的人登录像你一样)
这也是指纹读取器要求您多次输入手指以进行注册的原因,因为读取器使用这些来计算您的手指的最佳“灵敏度”值,该值存储在模板中。
像这样想:你拿出相机给你的房子拍张照片。您将这张照片放入您的投资组合并存储为“这是我的房子”。几天后,你看到一所房子,想知道是不是你的房子。你给房子拍张照片。正如您可能理解的那样,您不能只按位比较这 2 张图像,或者比较其 SHA256 哈希值,因为即使它们是同一所房子的图片,它们的角度、旋转和光线也会略有不同。如果你这样做了,“身份验证”总是会失败。
您需要对图片进行复杂的数学计算,以确定图片是否属于同一对象。
这意味着指纹读取器的“模板”可以变得相当大,具体取决于指纹读取器中使用的算法。
有指纹读取器,可以使用其内部密钥加密模板,然后将模板导出为 AEAD(带有关联数据的身份验证加密),然后存储在标准未受保护的内存中(它存在千兆字节)。但是请考虑一下这样做的安全后果。这意味着,您可以使用已注册的指纹图像“窃取”此 AEAD,然后,假设您在 Craigslist 上出售了该手机并且新所有者已注册了他的指纹,只需将被盗的 AEAD 与您的手指一起使用,解锁手机。
这就是手机必须将指纹模板存储在安全内存中的原因,这也是指纹模板数量有限的原因。
iOS 设备(可能还有 Android 设备)使用专用的硬件安全模块,直接与指纹读取器对话并自行比较指纹。手机的操作系统无法控制它——它只是得到一个验证是否成功的结果,以及受该验证保护的秘密(如果有的话)。
可能是设备没有那么强大,检查多个指纹确实会延长识别时间,或者,取决于阅读器和匹配算法的准确程度,以及有多大的容差(你永远不能扫描两位指纹的相同图像,它总是有点模糊,所以你需要一些容忍度,你也不能散列它们),确实存在误报的风险太大。
最后,只有参与开发这些解决方案的人才能告诉我们他们在这种限制背后的确切动机。可能只是某个工程师认为“5 个指纹就足够了”并硬编码了 HSM 固件中的限制,或者他们的公司对能够存储额外指纹的 HSM 收取更高的费用,而制造商不想进一步提高价格电话。
我相信这可能是因为有人可以用他们的指纹进入你的手机的机会是 50,000 分之一,如果它只允许 5 个指纹,那么有人伪造你的指纹的机会就会更少。