gpt4 book ai didi

ios - 在 iOS 上使用 Touch ID 加密数据

转载 作者:技术小花猫 更新时间:2023-10-29 10:17:46 24 4
gpt4 key购买 nike

我想做什么

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

遗憾的是,我还没有找到使用 Touch ID 创建加密 key 的方法,因为 LAContext API 仅返回是/否响应。


我为什么要尝试

我在应用程序中实现不同的登录方法。支持的登录方法是密码PIN 码Touch ID。用户可以自由选择任何他/她想要的登录方式。
然而,只有密码被发送到服务器,服务器将对用户进行身份验证。因此,只有密码存储在钥匙串(keychain)中。

encryptionKey,用于首先加密并然后将密码存储在钥匙串(keychain)中,使用用户选择的任何方法创建为日志在方法中。
如果用户选择使用 PIN 码,则 encryptionKey 从该 PIN 码派生,当用户选择密码作为登录方法时也是如此。


我的问题是:

如何在这张图片中放置 Touch ID?

我在网上搜索过,但只找到了我已经害怕的东西。
由于 iOS 仅从 Secure Enclave 返回 truefalse,因此无法创建 encryptionKey

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


编辑:

将数据加密存储在钥匙串(keychain)中的原因是因为越狱设备可能会破坏钥匙串(keychain)。由于我正在开发的应用程序允许用户查看(大部分)公司敏感数据,因此我什至需要考虑越狱。

最佳答案

使用kSecAccessControlTouchIDCurrentSetkSecAccessControlTouchIDAny 钥匙串(keychain)访问控制属性来保护钥匙串(keychain)中的加密 key 。如果用户未启用 Touch ID(或设备不支持),使用此 API 将失败,如果用户修改指纹集,使用 kSecAccessControlTouchIDCurrentSet 将失败。如果失败,您可以回退到正常的身份验证 UI,例如 PIN 码或密码输入。

参见 WWDC 2014 711 Keychain and Authentication with Touch ID谈话和 WWDC 2015 706 Security and Your Apps获取更多信息。

作为一般说明,不要将数据存储在钥匙串(keychain)中。您应该只存储密码、加密 key 或凭据,并使用它们来解密存储在磁盘上的数据。

关于ios - 在 iOS 上使用 Touch ID 加密数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31984319/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com