2

我几乎是密码学的新手,但我正在尝试加密一些数据并将其保存在 iOS 3 中的文件中,因为我不希望用户只是进入并编辑文件。在 iOS 3 中安全(相对)加密数据的正确方法是什么?我在网上找到的大多数文档都是针对 iOS 5 的。

任何帮助,将不胜感激!

谢谢,亚历克斯

4

2 回答 2

0

“正确”的做法是在 IOS 中使用 Apple 的钥匙串。不幸的是,正如这篇文章所说,这对于 IOs3 来说并不是那么安全。对于 ios4,它工作正常。

有人可能有一个付费的解决方案,但你很可能最终自己写一个。你会想要

  1. 使用密钥派生函数(例如PBKDF2 )从用户提供的密码中派生您的密钥。实际上,您需要派生两个密钥,因此您将使用两种不同的RANDOM盐运行它两次。

  2. 将 AES 与RANDOM IV 和您的派生密钥之一一起使用(这部分很重要,而我看到的所有示例代码都没有)。在密文中添加盐和 IV

  3. 对上述所有数据使用带有其他派生密钥的 hmac。预先设置。

  4. 要解密,使用带有密码和前置盐的密钥派生算法重新派生密钥,重新生成 hmac,获取生成密钥的 sha1 哈希值,并分别获取消息中密钥的 sha1 哈希值,并验证它们是否相同(不要直接直接比较 hmacs),然后使用另一个派生密钥和附加的 IV 解密数据。

这对用户来说是一种痛苦和烦恼,因为他们需要输入一个单独的密码,但是没有办法安全地做到这一点。如果您将密钥存储在 iPhone 上,则有人可以读取它并解密数据。是的,您可以加密密钥,但是您如何存储该密钥?

我不相信苹果对此有体面的客观 c 绑定,因此您需要使用通用的加密 c API。它记录在这里。似乎没用的 Objective-c API 记录在这里

于 2012-04-08T16:23:36.680 回答
0

我对 iOS3 的了解不够好,无法建议已经内置的东西。如果你需要从头开始开发加密,那么RC4是非常容易编程的。它现在已经过时了,但仍然相当安全。从您的角度来看,它的主要错误是您需要使用良好的 KDF(密钥派生函数)选择安全密钥,例如PBKDF2

于 2012-04-06T15:16:47.097 回答