在iOS上使用Touch ID加密数据

前端之家收集整理的这篇文章主要介绍了在iOS上使用Touch ID加密数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想要做什么

基本上我想要做的是找出一种使用Touch ID加密数据的方法.

不幸的是,我没有找到一种方法来创建一个带有Touch ID的encryptionKey,因为LAContext API只返回aye / nay响应.

为什么我在尝试

我正在应用程序中实现不同的登录方法.支持登录方法是密码,PIN码和触摸ID.用户可以自由选择他/她想要的任何登录方式.
然而,只有密码才能发送给将验证用户的服务器.因此,只有密码存储在钥匙串中.

用于首先加密然后将密码存储在钥匙串中的encryptionKey是使用用户选择的登录方法的任何方法创建的.
如果用户选择使用PIN码,则加密密钥是从该PIN码导出的,当用户选择密码作为登录方法时,可以这样说.

我的问题是:

如何在此图片中适合触摸ID?

我在互联网上搜索过,但只发现了我已经害怕了.
由于iOS只能从Secure Enclave返回真或假,因此无法创建一个encryptionKey.

我知道钥匙串本身是加密的,但出于安全考虑(请不要详细说明),我需要一个存储在钥匙串中的加密密码.

编辑:

存储加密在钥匙串中的数据的原因是因为钥匙串可以被越狱设备所破坏.
而且,由于我正在开发的应用程序允许用户查看(主要是)企业敏感数据,所以我需要考虑甚至越狱.

解决方法

使用kSecAccessControlTouchIDCurrentSet或kSecAccessControlTouchIDAny钥匙串访问控制属性来保护钥匙串中的加密密钥.如果用户没有启用Touch ID(或设备不支持),则使用此API将失败,如果用户修改了指纹集,则使用kSecAccessControlTouchIDCurrentSet将失败.如果发生故障,您可以回退到正常的身份验证用户界面,例如PIN码或密码输入.

有关更多信息,请参阅WWDC 2014 711 Keychain and Authentication with Touch ID演讲和WWDC 2015 706 Security and Your Apps.

一般来说,不要将数据存储在钥匙串中.您只应存储密码,加密密钥或凭据,并使用它们来解密存储在磁盘上的数据.

猜你在找的iOS相关文章