如何通过 SecureEnclave 持久存储加密数据

Posted

技术标签:

【中文标题】如何通过 SecureEnclave 持久存储加密数据【英文标题】:How to store encrypted data by SecureEnclave persistently 【发布时间】:2020-07-28 05:12:42 【问题描述】:

我听说过 Secure Enclave。其中密钥生成后,可以通过 SecKeyCreateEncryptedData 方法对数据进行加密。

我的用例:我想永久存储一些敏感数据。出于安全考虑,我使用 Secure Enclave 通过上述方法对数据进行了加密。

现在只想知道将加密数据存储在 NSUserDefaults 或 Keychain 中是否合法。或者还有其他事情要做。

任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

由于数据已加密,因此您可以随意存储。如果没有 Secure Enclave 中的密钥,数据将毫无价值。

您可以采用多种方法:将其保存到 UserDefaults、在文档目录中创建 JSON 等。

假设您要将其保存到 UserDefaults 然后查看此链接: How can I use UserDefaults in Swift?

关于安全飞地和加密套件的有价值的文章: https://www.andyibanez.com/posts/cryptokit-secure-enclave/

【讨论】:

以上是关于如何通过 SecureEnclave 持久存储加密数据的主要内容,如果未能解决你的问题,请参考以下文章

存储在 RabbitMQ 持久存储中时加密消息

在 iphone/ipad 的持久存储上加密数据的最安全方法是啥?

核心数据 SQLite 加密?

存储的战争第六集——对称加密与非对称加密

备份恢复后 SecItemCopyMatching 返回 -26276

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