我需要加密iOS核心数据吗?

时间:2018-07-28 18:13:05

标签: ios encryption sensitive-data

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

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

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

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

大家怎么想?

1 个答案:

答案 0 :(得分:0)

您有一些选择。

  1. 假定用户已启用其密码,并且知道这意味着在锁定设备时对DB进行加密。在某些情况下,这就足够了。

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

  3. 使用SQLCipher从核心数据移至SQLite。这就是我现在想要的。

请记住,如果进行按应用程序加密,则仍然必须处理数据库密钥。您可以通过多种方式执行此操作。

  1. 在许多情况下,您只需将密钥存储在钥匙串中就足够了。
  2. 启动应用程序/访问钥匙串项目时,您还可以要求输入密码/ Touch ID /人脸ID
  3. 最后,您可以要求用户输入密码
  4. 无论选择哪种方式,请使用诸如PBKDF2之类的密钥派生功能〜100,000次,以使暴力破解更加困难。永远不要存储实际的数据库密钥(派生的)。