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。我应该整合其中一种第三方吗?
提前致谢
[...]但我不确定它是否可以与Core Data一起使用来加密SQLite文件...可以吗?
像在此答案中提到的那样,您应确保SQLite文件本身在创建时已加密。
使用NSPersistentStoreFileProtectionKey与NSFileProtectionComplete选项意味着“[...]文件存储在磁盘上的加密格式,不能被读出或写入在器件被锁定或启动”。查看所有可用选项的文档。
像上面提到的DV_一样,这仅在设备获得密码后才有效。
如果可以将Data Protection与Core Data一起使用,是否满足加密已存储数据的要求?
这取决于存储数据的敏感性。苹果公司提供的“通常”硬件加密足以满足正常使用情况。
如果未设置密码或攻击者可以通过获得物理访问权限来解锁设备,则在越狱设备后可以访问数据库文件及其内容。
像SQLCipher这样的工具有助于防止这种情况的发生,因为您不依赖于系统提供的安全框架。即使设备受到威胁,数据库文件也会被加密,因为加密/解密将由应用程序本身来处理。
要使用其各个属性保护数据库文件的内容,可以将其Transformable Attributes与NSValueTransformer(details)一起使用。