0

我正在开发一个包含用户数据的 Mac OS X 应用程序。核心数据/Sqlite 是存储用户数据库的好选择。但我想确保用户数据是高度安全的。那么我们在 Mac 平台上有哪些用于开发安全数据库的选项..

4

1 回答 1

1

您有几个可以与 Core Data 一起使用的选项。但是当软件正在运行并且解密密钥是“活动的”时,这些方法都不会保护您的数据。

第一种选择是使用加密的磁盘映像来存储您的数据库文件。这在 iOS 上不是必需的,默认情况下所有文件都是加密的,但您可以配置一些加密方面以进行更严格的安全设置(谷歌搜索NSFileProtectionKey)。在 OS X 上,等效的技术是 FileVault,但它大部分时间都不会激活,所以你不应该指望它。所以是的,一个磁盘映像,在您的软件启动时安装并提供正确的密码,在软件退出时卸载。您可能希望使用辅助进程监视主应用程序并在应用程序崩溃或退出时卸载映像而未正确卸载它,从而保护您的磁盘映像免受应用程序崩溃的影响。

第二个选项是编写一个NSValueTransformer来加密实体中的每个敏感属性。保护在这里是属性级别。它可能足够好,也可能不够好,它会影响获取请求的工作方式。

第三种选择是编写自己的持久存储(通过子类化NSAtomicStore)。这并非没有后果,但必须仔细评估该解决方案。

除此之外,不要忘记课程的基础:钥匙串,像 PBKDF2 这样的按键拉伸功能,密码盐,诸如此类。

于 2012-07-19T08:19:25.700 回答