如何存储/加密指纹?

信息安全 密码 哈希 生物识别
2021-08-13 17:07:31

存储密码很简单:使用密码哈希。但..

您如何继续在服务器上安全地存储指纹?这意味着即使您的服务器及其所有数据被盗,也有人无法检索指纹。

据我了解,扫描仪获得的指纹图片每次都不同,为了验证您是所有者,他们只需验证指纹匹配的百分比是否足够好。因此,不可能对扫描仪提供给您的图像进行直接密码哈希并将其与数据库中的图像进行比较。

是否有某种预处理来提取一些“从不”改变的数据,即使每次扫描手指时整个扫描都会改变一点?

相关链接:http ://www.extremetech.com/mobile/211985-htc-caught-storing-fingerprint-data-in-unencrypted-plain-text

2个回答

事实上,有一些研究解决了这个问题。我们应该承认,在客户端存储指纹信息(正如其他人所建议的那样)在特定情况下可能不是一个可行的解决方案。对于手机来说可能没问题,但对于企业或分布式服务来说还不够。

有(非加密)散列函数可以为相似的输入创建相同的散列。它被称为局部敏感哈希 (LSH),广泛用于搜索算法。该功能可以“以高概率减少相似数据之间发生的差异,而远距离数据应保持显着偏远”。然后你可以尝试对 LSH 进行加密哈希以获得更容错的结果。您可以将其与 Bloom filter 结合使用,如2009 年的文章中所述,如果您对该主题感兴趣,我强烈建议您阅读该文章。不幸的是,我不知道那里描述的方法的任何现有实现。

总而言之,答案是您可以使用容错加密方法(如上)来做到这一点,但如果您没有时间,最好使用单独的、专用的指纹 UID 转换安全提供程序(使用机枪手坐在上面)。

您无法将指纹模板安全地存储在服务器上。模板容易受到攻击。解决这些攻击的尝试没有找到类似于密码的平衡。试图改变这一点的领先研究实验室位于密歇根州立大学,http://biometrics.cse.msu.edu/pubs/secure_biometrics.html

此外,如果您正在远程读取指纹,您会受到硬件攻击、橡皮熊攻击等。因此您无法获得所需的安全性,并且被验证的人不能使用不同的验证器系统。