【问题标题】:What is proper way to protect CoreData DB with pin-code or password?使用 pin 码或密码保护 CoreData DB 的正确方法是什么?
【发布时间】:2016-02-11 10:10:21
【问题描述】:

我在我的应用程序中使用 CoreData 保存了一些用户数据。应保护此数据以防止其他人访问。所有者应该能够轻松访问他的数据,例如使用 iPhone 锁定屏幕上的 4 PIN 码。

我在想CoreData DB文件的AES加密,它的密码是4位pin-code。

但这是可靠的方法吗?我猜 4digit pin 可以在 5 秒内被暴力破解。所以这是一种“对傻瓜的保护”,对吗? 然后我可以选择使用 4 位数字以外的强(6-8 个字母)密码。但是用户每次打开App都要输入,所以解决问题的方式不是很人性化。

谁能给我一些建议,我有哪些选择? 以及如何在这些方案中使用 Apple 的钥匙串?

【问题讨论】:

  • 是否可以使用LAContext 请求 TouchID 或密码授权?

标签: ios objective-c security core-data aes


【解决方案1】:

如何生成一个长的随机“盐”字符串并将其保存在钥匙串中?也就是说,您可以使用用户输入密钥(4 位数字)作为前缀并加密数据。这样,只有通过尝试应用程序中 4 位数字的所有组合或尝试该未知长密钥的组合来破解它从加密文件上的系统(如果他们可以从应用程序沙箱中提取它,虽然它不是很困难)。

注意:- 即使钥匙串也不是防黑客攻击的,而是更好的选择..

【讨论】:

  • 不错。我开始在钥匙串中使用困难的密码来包装/解包文件。而 4 位密码将成为随机用户的“接口保护”。你是这个意思吗?
  • 是的,我的意思几乎一样。我的意思是,如果用户密码是 1234 并且随机盐是 abcdefghijk,那么可以将两者结合起来(1234abcdefghijk)并使用它来加密文件。它是一种双重保护。但是更改用户 PIN(1234) 将是一个额外的头痛处理。
  • 是的,所以我认为没有必要在密码中添加 pin。如果 PIN 码可以作为屏幕锁使用就可以了。
猜你喜欢
  • 2014-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多