0

我想将敏感数据存储在 iPhone 应用程序中,但也可以通过触摸 ID 解锁。我已经想到了一些选项,但没有一个可以完全实现我的目标,并且想要一些关于实施的建议。

  1. 密码保护应用程序并加密数据 - 仅存储使用用户密码加密的数据。每次解密查看数据时都要求输入密码。我看不出 Touch ID 在这种情况下是如何工作的。每次都输入密码是安全的,但很痛苦。

  2. 仅密码保护应用程序 - 存储原始数据并仅在用户提供正确密码/触摸 ID 时才允许访问。这实现了我想要的用户体验,但这是不好的做法吗?苹果最终会因为敏感数据没有加密而拒绝这种方法吗?请记住,我只在本地存储数据,没有云/网络服务器。

  3. 带有缓存的场景 1 - 用户每天输入一次密码,获取数据,解密然后缓存。用户只需要在解密的数据保留在缓存中时对应用程序进行身份验证。如果应用程序关闭或达到时间限制,则清除缓存。

大家怎么看?

4

1 回答 1

1

你有几个选择。

  1. 假设用户启用了他们的密码,并且知道这意味着当设备被锁定时数据库是加密的。在某些情况下,这已经足够了。

  2. 使用加密核心数据加密核心数据。仅供参考,这确实有效,但它有很多限制和错误。我们在企业应用程序中使用它,我后悔使用它。

  3. 使用 SQLCipher 从核心数据迁移到 SQLite。这是我现在更喜欢的。

请记住,如果您进行每个应用程序加密,您仍然必须处理 DB 密钥。您可以通过多种方式做到这一点。

  1. 在许多情况下,您只需将密钥存储在钥匙串中就足够了。
  2. 您还可以在启动应用程序/访问钥匙串项目时要求密码/Touch ID/Face ID
  3. 最后,您可以要求用户输入密码
  4. 无论您的选择如何,都可以使用 PBKDF2 ~100,000 次等密钥派生函数来提高暴力破解的难度。永远不要存储实际的数据库密钥(派生的)。
于 2018-07-28T18:35:29.023 回答