3

我正在使用 Core Data 来存储一些敏感信息。到目前为止,我已经对 Persistent Store Coordinator 使用的 SQLite 文件应用了硬件文件加密。我通过设置它的文件属性(NSFileProtectionKey 到 NSFileProtectionComplete)来做到这一点。

我将一些图像数据作为二进制数据存储在核心数据库中,并且我已经检查了“允许外部存储”和“存储在外部记录文件中”,以防止我的 SQLite 数据存储膨胀并提高性能。

我假设 Core Data 自动存储在 SQLite 数据库之外的数据文件不会被加密,我需要自己加密这些文件。有谁知道这是否正确?

谢谢

4

2 回答 2

0

幸运者777,

当用户使用屏幕锁定时,每个预装的 iOS 版本都会对每个文件进行硬件加密。关于你关于外部核心数据存储的问题,你为什么不看看文件呢?将数据从手机移动到您的开发系统非常简单。然后尝试打开其中一个外部文件。我希望它是加密的。(如果不是,那是 Core Data 加密政策中一个相当大且明显的漏洞。我怀疑它是否存在。)

安德鲁

于 2012-05-18T13:07:40.003 回答
0

隐藏,但未加密!它当前(iOS 11.2)保存数据的文件夹位于Documents/.SingleViewCoreData_SUPPORT/_EXTERNAL_DATA
那里,您可以看到所有文件,但它们的扩展名没有令牌名称。但是,所有数据都没有改变。您只需添加文件扩展名或使用正确的应用程序即可查看任何文件。

是的,屏幕锁定时设备数据被加密,但连接到 Xcode,您可以非常轻松地下载容器并访问所有数据。如果您的应用程序包含敏感数据,则“设备已加密”将根本不存在。只有SingleViewCoreData.sqlite文件似乎是加密的。

于 2018-01-17T14:45:58.173 回答