在后台使用 Core Data 加密

Posted

技术标签:

【中文标题】在后台使用 Core Data 加密【英文标题】:Encryption with Core Data in background 【发布时间】:2015-07-22 21:53:12 【问题描述】:

这个问题与here 的问题不同,因为应用程序大部分时间都在后台。

我们的应用程序要求我们对数据存储进行加密。

我们当前的实现是通过 SQLCipher 使用 SQLite。计划是迁移到 Core Data。

我正在寻找一种解决方案来保持数据加密,同时仍可在后台访问,并且在查询方面不受限制 - NSPredicates 和迁移(架构更改)。

以下是我一直在研究的所有选项:

NSFileProtectionComplete - 不允许在后台访问文件 encrypted-core-data - 这个库看起来确实是最新的。但是,在看到known issues 的列表后,我对在生产中使用它有了第二个想法。最近有人用过吗? NSIncrementalStore - 这是 Apple 工程师建议我们遵循的方式。 encrypted-core-data 正在使用这种方法。 Transformable Attributes 在核心数据中 - 此解决方案是否可扩展用于更大的数据集?

是否有人提出了符合所有标准并可用于生产应用的推荐?

【问题讨论】:

【参考方案1】:

我使用上述每个选项运行了一些概念验证应用程序。我运行了数字并针对我们现有的解决方案(SQLCipher)进行了基准测试。 看起来使用增量存储的核心数据 (encrypted-core-data) 是最好的。

在分析了小型和大型数据库上读取、写入和搜索的运行时性能时间后,encrypted-core-data 被证明是最高效且易于实现的。

【讨论】:

以上是关于在后台使用 Core Data 加密的主要内容,如果未能解决你的问题,请参考以下文章

加密或部分加密 Core Data 数据库?

如何测试 Core Data SQLite 文件是不是已加密?

加密通过 Core Data 访问的 Sqlite 数据库

如何加密/解密 Core Data 中的数据?

160303js加密跟后台加密对应

记录一个小问题,如果前端传递的参数是加密过的,需要在后台解密