存储解密文件的位置?

时间:2013-09-26 08:02:20

标签: ios objective-c encryption

我正在加密下载的文件并将其保存在app的文档目录中。

要阅读它们,您必须解密这些文件并暂时存储一些文件。

我的担忧是:

1.如果我将它们存储在doc目录中的时间正在使用它们,那个时间窗口就可以使用像iExplorer这样的工具来获取这些文件。

2.我的想法是将它们存储在内存中以供使用时间,并在使用后冲洗保险库。 此选项适用于小文件,但对于大文件说50 MB或100 MB的视频,我担心应用程序会收到内存警告,结果会突然终止。

我想知道这样做的最佳方法。

3 个答案:

答案 0 :(得分:1)

没有以安全的方式存储本地文件的完美安全性。如果一个人可以完全访问该设备,只要您的应用程序能够解密,他总能找到解密文件的方法。

唯一的问题是:解密文件需要多少工作量?

如果你唯一关心的是一个人可以使用iExplorer来复制和打开这些文件,那么简单的本地对称加密就可以解决这个问题。

只需在应用程序中嵌入随机对称密钥,并在下载时逐块加密数据。

您可以使用舒适的“安全转换”框架来执行对称加密。 Apple Documentation中有一些很好的例子。

加载文件时,可以使用相同的密钥在从文件系统加载文件时对其进行解密。

只是为了说清楚:这不是文件的完美保护。但要解密文件,可以访问您的应用程序二进制文件。在调试器中分析此二进制文件并搜索解密部分以提取对称密钥。为解密文件需要付出很多努力。

答案 1 :(得分:0)

在保存之前将文件拆分为较小的大小,然后在加载时解密。

稍后编辑:我注意到评论中提到了这一点。我同意拆分文件并不是世界上最容易的事情,但可能你只需要这个视频。大约100MB是很多文字或音频。如果您的PDF权重相同,则可能是扫描文本,如果图像可以将其更改为系列。

是的,拆分更好是在服务器端完成,不希望用户在视频处理中浪费电池。

答案 2 :(得分:-1)

解密它们,用玩具算法(例如带有常量块的XOR)对它们进行模糊处理,并将它们存储在文档中。需要时,加载并解密。

由于问题在理论上没有解决方案(确定的足够的攻击者毕竟可以读取你的进程内存),它就像任何解决方案一样好。

相关问题