存储在“外部存储”中时,核心数据BLOB数据是否已加密?

时间:2012-05-17 05:55:19

标签: iphone ios core-data encryption

我正在使用Core Data存储一些敏感信息。到目前为止,我已将硬件文件加密应用于持久性存储协调器使用的SQLite文件。我通过将其文件Attributes(NSFileProtectionKey设置为NSFileProtectionComplete)来完成此操作。

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

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

由于

2 个答案:

答案 0 :(得分:0)

luckman777,

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

安德鲁

答案 1 :(得分:0)

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

是的,当屏幕被锁定时设备数据被加密,但是连接到Xcode,您可以非常轻松地下载容器并访问所有数据。如果您的应用持有敏感数据,则“设备已加密”将无法保留。 只有SingleViewCoreData.sqlite文件似乎是加密的。