【问题标题】:How Should I Secure a SQLite Database in iOS?我应该如何保护 iOS 中的 SQLite 数据库?
【发布时间】:2011-05-16 14:25:08
【问题描述】:

我正在开发一款医疗保健 iOS 应用。我希望我的用户数据被加密,所以如果他们的 iPhone 被盗,小偷将无法访问他们的健康信息。合法所有者应该能够访问他们的信息(与this question 不同)。

我正在考虑使用SQLCipher 加密整个数据库,并将 SQLCipher 密码放入 Keychain。

这是个好方法吗?

另外,我是否正确理解——因为一切都在设备上——一个坚定的黑客无论如何都能够闯入?

【问题讨论】:

标签: iphone objective-c cocoa-touch security sqlite


【解决方案1】:

以双重加密为目标:您应该按照所述加密数据库,但要求用户在每次启动应用程序时输入密码。数据库的密钥将是密码的哈希,用随机数加盐。将密码盐存储在钥匙串中。

一个坚定的黑客可以通过文件系统访问访问加密的 SQLite 数据库。如果他们能够破解钥匙串加密,他们将很容易破解数据库,但通过要求用户输入密码(或密码),它有助于抵御这种攻击。

【讨论】:

    【解决方案2】:

    我认为您的解决方案是有道理的。它提供了很好的安全性,并使您的应用易于使用。

    您使用钥匙串获得的主要好处是用户备份是安全的,因为钥匙串内容没有使用 iphone 备份。 (但我想你已经知道了)

    但这是巨大的安全性,因为潜在的黑客将不得不物理访问 iphone。此外,如果 iphone 被 pin 阻止,那么获取数据的唯一快速方法可能是物理访问设备的闪存,这不是最简单的事情。

    老实说,如果您强制用户输入长密码,我不相信他们会使用您的应用。如果你让他们使用他们喜欢的任何密码,黑客将能够使用字典攻击来破解数据库加密。

    【讨论】:

      猜你喜欢
      • 2021-01-14
      • 2017-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-15
      • 2012-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多