加密字符串并阻止iOS中的逆向工程

gog*_*om3 1 iphone encryption reverse-engineering objective-c

我正在构建一个iPhone应用程序,我目前需要加密一个字符串,将其存储在一个文件中,以后能够解密它.据我所知,我可以使用对称加密来做到这一点,但我的加密/解密密钥可以反向设计.非对称加密可以解决这个问题,但似乎我需要一台服务器来发送数据以使用私钥解密.有谁知道我可以在一个独立的应用程序中安全地加密/解密字符串的方式?

谢谢!

Con*_*ltz 7

与所有与安全有关的问题一样,问题是:你是谁在防范?

如果您试图阻止随意窃贼(或脚本小子)阅读加密字符串,使用内置的iOS加密服务(如Keychain)可以提供足够好的安全性.显然,安全性的强弱部分取决于您无法控制的各种因素(特别是,用户为设备配置了什么类型的密码锁定,如果有的话).

下一级是使用对称加密密钥的对称加密(即由用户密码短语保护的密钥).正如@lukas所指出的那样,当然原则上可以破解,但从实际的角度来看,如果用户为足够大的密钥选择足够强大的密码短语,那么临时到中级攻击者将被有效地挫败.

另一方面,如果你需要保守秘密,正如布鲁斯施奈尔所说,不是来自你的孩子妹妹,而是来自世界主要政府,这些方法可能不够充分,你必须探索其他选择,包括但不是仅限于将字符串存储在多个位置,使用多个密钥和多个身份验证因素.

所有这些的主要Apple参考(保存最后一个选项)是安全编码指南,其在开始页面的末尾引用了其他更具体的编程指南(包括例如钥匙串和加密服务).我也衷心推荐Graham Lee的Professional Cocoa Application Security.如果你想要一个理论基础,黄金标准是施奈尔的应用密码学.