iPhone 的指纹签名是单向哈希吗?

信息安全 iPhone 生物识别 指纹
2021-08-28 18:02:04

我一直在考虑 iPhone 5S 指纹功能的安全性。我主要担心的是,不是有人可以在物理世界中复制我的指纹并绕过手机,而是有人可以根据手机中存储的数字签名重建我的指纹。

指纹是否存储为单向哈希(或等效)?逆向工程创建原始签名的可能性有多现实?

我想以今天的计算能力,一组指纹哈希签名的彩虹表几乎是不可能的。

3个回答

指纹不能被散列。好吧,您可以散列任何位序列,但这一点也不有趣。与所有生物识别应用程序一样,指纹读取器进行的物理测量永远无法精确再现。取而代之的是,阅读器必须检测手指图像上一些“特征点”的位置(大部分是脊相交的地方),然后寻找与手机中记录的指纹相匹配的位置。由于测量的精度有限和不可避免的阈值效应,匹配永远不会精确。

底线是手机必须以可逆的方式存储有关“特征点”位置的信息,而不是作为散列。这可能不是完整的手指图像,但足以设计一个可以欺骗您的 iPhone 的假手指。

现在这不应该是那么大的问题。iPhone可能包含一些关于你指纹的信息,但它的外壳上也覆盖着许多相同指纹的准确副本,这仅仅是因为你用手拿着手机。如果有人偷了你的手机,那么他甚至不用费心打开手机就可以得到你的指纹。

更一般地说,您会在任何地方留下指纹,例如在您经过的每扇门的把手上。你的指纹不能被认为是秘密的(相应地,它们用于解锁电脑或手机对我来说似乎一直是一个相当糟糕的主意,至少从安全角度来看是这样)。

不使用加密哈希 - 不。

但是您可以使用Fuzzy HashLocality-sensitive Hashing模糊散列不同于普通散列,因为它们允许相似的内容在散列冲突空间中聚集在一起*。

通常单向意味着您无法推断出什么被散列 - 但是对于模糊散列,如果您知道与散列匹配(碰撞)的类似文件(指纹图像),那么您知道通常被散列的内容。

模糊散列是否存在任何功能性单向属性取决于攻击者是否必须诉诸暴力猜测输入以找到匹配的模糊散列。这称为预像电阻。

考虑到存在许多独特的指纹,至少与当前地球人口(~2 33)一样多,并且存在一个指纹模糊散列,可以可靠地折叠(非常高的顺序)到这个碰撞空间或更大。您希望攻击者必须对 2 33个条目进行暴力破解,而不是简单地反转哈希。

如果存在这样的模糊散列,您可以通过将散列传递给辅助加密散列来防止直接反转。如果模糊哈希首先可靠且一致地崩溃,则在针对具有更大冲突空间的加密哈希进行重新哈希后,您将不会失去匹配的准确性。祝你好运知道临时模糊散列是什么,前提是二级散列附加了一个随机盐。

模糊分量使其成为非加密单向哈希,因为图像匹配的“模糊性”与强抗碰撞特性相矛盾。

fuzz() = Mythical_perfectly_consistent_fuzzy_hash_function_for_fingerprints();
salt = application's public random salt
hash_result = SHA-512(salt, fuzz(fingerprint.input))

*此时,房间里的所有密码学家都应该尖叫冷血谋杀并拿出他们的Uzis :-)

根据Apple 的官方文档,无法从存储的数据中取回您的指纹:

Touch ID 不会存储您的任何指纹图像。它仅存储指纹的数学表示。有人不可能从这个数学表示中对您的实际指纹图像进行逆向工程。

因此,如果可以信任 Apple,那么您的主要担忧似乎是没有根据的。