如何保护从用户设备上的服务器下载的数据?

How do I secure data downloaded from a server on the user's device?

我正在开发一个应用程序,它将从服务器下载一些图像并将其保存在用户的设备上。但我真正担心的是这些图像不应该被其他应用程序或用户轻易访问。

一种方法可能是我的应用程序加密图像并将它们保存在文档目录中,并在需要时解密它们,但我认为这会使将图像加载到 UIImageView 中的速度相当慢。

有很多游戏没有将大量资源包含到他们的 App-bundle 中,以保持较小的 App 大小并在以后下载大量资源。

他们将这些资源保存在哪里?

他们如何保护它们不被轻易地从它们存储的目录中复制?

可能是因为试图保护用户的文件,最好的选择是用 AES 加密它们并将它们保存在用户区域、Documents 或 Library 目录或其子目录中。

你最好使用 Common Crypto。如果 RNCryptor 适合您需要使用它,它会在后台使用 Common Crypto。否则,SO 上有大量使用 Common Crypto 进行加密的示例代码。

Key 和iv一样,key应该是随机字节,将key保存在Keychain中。在带有 PKCS7 填充的 CBC 模式下使用 AES。

如果您真的想要良好的安全性,请聘请密码领域专家,整体安全性并非易事。不要忘记服务器并至少对其使用双因素身份验证。

解密时间应该不是问题,比服务器快得多。