想象一下,我有一个使用基于生物特征的身份验证(例如指纹)的应用程序。它获取其哈希并将其发送到服务器。服务器拥有哈希的副本并比较两者。
现在我破解了服务器并窃取了哈希值。现在我可以绕过指纹测试了。此外,假设哈希不是那么好(或者它是,现在计算机速度更快,所以我可以进行暴力攻击)。现在我知道了指纹,所以我可以登录任何需要它的系统。
如果这是一个密码,我们会被建议更改密码;但在这种情况下,受害者不能改变手指该怎么办?
想象一下,我有一个使用基于生物特征的身份验证(例如指纹)的应用程序。它获取其哈希并将其发送到服务器。服务器拥有哈希的副本并比较两者。
现在我破解了服务器并窃取了哈希值。现在我可以绕过指纹测试了。此外,假设哈希不是那么好(或者它是,现在计算机速度更快,所以我可以进行暴力攻击)。现在我知道了指纹,所以我可以登录任何需要它的系统。
如果这是一个密码,我们会被建议更改密码;但在这种情况下,受害者不能改变手指该怎么办?
您的问题实际上并未列出生物识别技术的主要安全问题,以及它们实际上并未用于保护任何有价值的东西的原因,除了作为正常 2 因素之后的附加机制。
1) 生物特征签名不是唯一的
您可以轻松地假设那里有很多人的指纹与您的指纹匹配到任何由生物特征指纹系统测量的程度。这就是为什么警察不能依靠指纹作为证据的原因。视网膜扫描等也是如此,因此所有生物识别系统都经过定制以假设误报和误报。
2)你不能轻易改变它们
想象一下,攻击者找到与您具有相同指纹的人,而您发现了这一点。您如何更改指纹以使他们无法访问但您可以?除了手术等,这真的是不可能的。
3)正如约翰在下面的评论中指出的那样,生物识别技术并不是秘密
所以你问题的第一行实际上是不正确的。生物特征认证系统并不安全。相反,例如,当与用户名和密码一起使用时,它们可以增加系统对您就是您所说的人的信心。
这实际上取决于生物特征认证系统使用的精度水平。过于精确,会触发错误的拒绝;太宽松了,它允许其他人以你的身份登录。
验证指纹的基本方法使用模式识别,例如:
然后定义主要模式的中心,并跟踪主要细节特征的相对位置,例如分叉、山脊末端和山脊岛:
使用中心为 5,5 的低精度 10x10 网格的简单示例将生成类似密码的编码,例如:
LB23E75
(循环模式;在 2,3 处分叉;在 7,5 处结束的山脊)
复杂的系统将使用高精度网格并提取次要细节特征以及主要特征,从而产生更长的类似密码的编码,例如:
LD2988B2336E7251X3011
(循环模式;三角洲在 29.88;山脊分叉在 23.36;山脊在 72.51 结束;交叉在 30.11)
然后将这些数据点加盐、散列并存储在数据库中。
由于每个指纹认证系统都是独一无二的,同一个指纹可以产生不同的编码。高精度编码与非常长的密码非常相似。密码越长,暴力破解就越困难。您是否尝试过强制使用 MD5 散列的 12 个字符的密码?
能够破解低精度认证系统的哈希并对低质量指纹进行逆向工程并不能让您访问更高精度的认证系统。无论如何,即使您能够提取哈希并破解它,您仍然必须通过身份验证(即产生“真实”指纹)。
一种更简单的方法是直接从一个人身上提取指纹,以便收集所有数据点。但是,其成功还取决于指纹传感器中使用的技术以及其他形式的身份验证。
到目前为止我还没有提到的是,一些系统(尤其是政府)确实存储了指纹的扫描图像,并通过覆盖并与捕获的指纹进行图形比较来进行身份验证。这样的系统在遭到破坏时,会使整个指纹认证方案变得无用。
现在我破解了服务器并窃取了哈希值。现在我可以绕过指纹测试了。
不,您的推理不正确:我们不能通过简单地使用(指纹的)散列来绕过身份验证机制,因为将散列引入机器会产生与服务器上的散列不同的另一个散列。
换句话说:
散列函数是可用于将任意大小的数字数据映射到固定大小的数字数据的任何函数,输入数据的微小差异会导致输出数据的巨大差异。
您的手触摸过的每个空间都会留下您的指纹,因此它不像您可能认为的密码那样是秘密的。
对于远程访问,您不能仅依靠生物特征进行身份验证,这与现场访问相反,在现场访问中,我们能够在他使用服务或设备时识别该人。