Touch ID身份验证概念

时间:2014-12-30 21:14:24

标签: encryption ios keychain

我目前正在开发iOS应用,并使用用户选择的密钥加密某些用户数据。数据可以存储在本地或存储在iCloud中或两者中。我还希望允许更快的访问,例如4位密码或绘制图案。

在这两种情况下,我都可以在iOS钥匙串中存储加密密钥,并使用4位代码或模式字符串对其进行解密。基本上,我不会将主密钥以明文形式存储到钥匙串中。

问题是Touch ID。目前我将主密钥以明文形式存储到钥匙串中,因为我无法弄清楚如何不这样做。如果有人能给我一个想法,概念,伪代码或其他什么,我会非常感激。

1 个答案:

答案 0 :(得分:0)

问题是PIN和模式不包含足够的信息来创建安全密钥。它们只能用于解锁事物(因为您可以在X尝试后拒绝登录,并且您可能无法自动执行登录过程。)

如果我没弄错,iOS已经使用PIN或模式来保护密钥链; this article seems to concur with this。由于Apple 似乎使用PIN或模式进行加密,因此iOS钥匙串保护很容易破解也就不足为奇了。但是按照相同的原则构建自己的方案并不会有所帮助,所以你不妨坚持使用密钥链。

正确处理此问题的唯一方法是向用户询问强密码,在其上使用PBKDF2或bcrypt并使用生成的密钥进行加密。