iOS Sandbox - 保护Documents目录中的数据

时间:2014-01-09 07:37:49

标签: ios

我想在沙盒中下载和存储一些文件。但是,它们必须始终保持安全(即加密)。现在,我可以在下载到文档本身时加密它们。但是当需要消耗文件时,我必须先解密它们。问题是在哪里放这些解密文件?

tmp - 看起来是一个保留它的好地方,但是如果在应用程序保持最小化几天后删除内容会怎么样。

文档 - 将解密文件保存在一个单独的位置可能不是一个好主意。当应用程序重新启动时,它不会自动清理,如果在应用程序仍在运行时设备电量耗尽,这些解密的文件将会暴露出来。

因此,有争议的问题是确保文档目录的数据安全性的最佳方法。

2 个答案:

答案 0 :(得分:0)

基于UNIX的系统的一个有用方面是您可以创建/打开文件,然后立即删除该文件。该文件将无法从应用程序外部访问,但应用程序将能够读取/写入文件数据,并且在文件句柄关闭之前,文件实际上不会被删除。

这意味着您可以在应用程序的可访问文件结构中的任何位置创建/打开解密文件。

虽然我没有在iOS下对此进行测试,但我认为它很有可能会起作用。

答案 1 :(得分:0)

我会将加密文件保存在Documents目录中,并使用NSData NSDataWritingFileProtectionComplete选项进行加密。

如果您觉得需要自己加密文件,然后根据需要解密,请将解密文件保存在Documents目录中,并使用NSData NSDataWritingFileProtectionComplete进行加密。将“不备份”扩展属性添加到文件中。在应用程序启动/唤醒等基础上,警察覆盖不再需要的文件并删除。使用AES,CBC模式和随机的iv随机密钥,并将密钥保存在Keychain中。

如果适用于您的应用,则可以选择以流形式打开并动态解密到缓冲区。

但是抓住的是我真的不明白你的用例。最佳实践:聘请iOS安全领域专家为我提供建议和审核解决方案。安全是否值得这个价格,这是一个有效的问题。

对我的评论的解释:我写了一个应用程序来恢复损坏的高清图像,而不是那么难。