ios - 使用 CloudKit 加密 CoreData
问题描述
在 CoreData 中加密值的最佳方法是什么?
当 Apple 已经在加密 App Container 时,为什么我需要加密数据?我想将数据同步到 iCloud。iCloud 中的数据也是加密的,但不是端到端加密的。[iCloud 安全]。
Apple 使用自己的密钥加密数据。CoreData 内部使用 SQLite 以明文形式存储数据库。如果此数据与 iCloud 同步,则在被 Apple 自己的密钥加密之前仍然容易受到攻击。有什么方法可以让 iCloud 中的数据也被加密而不用担心 Apple 自己的加密?
我尝试过的一种方法是使用 ValueTransformers:
我尝试过使用 ValueTransformers 来加密 DateOfBirth 和用户密码等字段。现在,由于信息以二进制形式写入 SQLite 数据库,因此它解决了其中一个问题。但是 ValueTransformer 的问题是属性的 dataType 变成了 Transformable ,我无法在该字段上使用 NSPredicate 。例如,我无法搜索某年出生的用户。看起来 NSPredicate 不适用于可转换数据,因为它在 CoreData SQL 中存储为二进制数据。
是否可以在同步到 iCloud 之前加密数据并在从 iCloud 接收回数据时将其解密?今年在 WWDC 2019 上,Apple 宣布通过 CloudKit 支持 iCloud。在与 CloudKit 同步数据之前,有什么方法可以进行加密吗?任何其他资源都会有所帮助。