如何将数据保护与核心数据一起使用?

App*_*Dev 4 sqlite encryption data-protection core-data ios

我正在开发使用的iOS 7及更高版本的应用程序Core Data,并且要求对加密的持久数据进行加密。我在SQLite后台使用数据库。

我一直在阅读有关Data Protection的功能的iOS技术概述应用程序编程指南适用于iOS,但我不知道这是否可以被用来Core Data对加密SQLite文件......可以吗?怎么样?

如果可以使用Data Protectionwith Core Data,是否满足加密存储数据的要求?我的意思是,够了吗?我还发现,有一些第三方处理SQLite数据加密,例如SQLCipher。我应该整合其中一种第三方吗?

提前致谢

fla*_*ixx 6

[...]但我不确定它是否可以与Core Data一起使用来加密SQLite文件...可以吗?

像在此答案中提到的那样,您应确保SQLite文件本身在创建时已加密。

使用NSPersistentStoreFileProtectionKeyNSFileProtectionComplete选项意味着“[...]文件存储在磁盘上的加密格式,不能被读出或写入在器件被锁定或启动”。查看所有可用选项的文档

像上面提到的DV_一样,这仅在设备获得密码后才有效。

如果可以将Data Protection与Core Data一起使用,是否满足加密已存储数据的要求?

这取决于存储数据的敏感性。苹果公司提供的“通常”硬件加密足以满足正常使用情况。

如果未设置密码或攻击者可以通过获得物理访问权限来解锁设备,则在越狱设备后可以访问数据库文件及其内容。

像SQLCipher这样的工具有助于防止这种情况的发生,因为您不依赖于系统提供的安全框架。即使设备受到威胁,数据库文件也会被加密,因为加密/解密将由应用程序本身来处理。

要使用其各个属性保护数据库文件的内容,可以将其Transformable AttributesNSValueTransformerdetails)一起使用。