在iOS中保存加密密钥的安全方法

ani*_*hin 6 security iphone encryption objective-c ios

在我的iOS4 +应用程序中,我在几个地方使用AES加密,整个应用程序必须非常安全.为了做到这一点,我必须在这个应用程序中硬编码几个键,然后当我需要加密某些东西时随机选择...

我的问题是如何存储这些私钥?使用硬编码是否安全NSString?要么

#define SecretKeyString @"febd9a24d8b65c1c787d50a4ed3619a9"
Run Code Online (Sandbox Code Playgroud)

如果用户越狱iPhone安装了这个应用程序,他不能得到那些硬编码的密钥吗?我怎样才能最有效地隐藏它们?

谢谢你的任何建议......

mpr*_*vat 5

其他应用程序所做的是要求用户在使用该应用程序之前"登录".然后,您使用其用户ID /密码作为密钥来加密密钥或使用安全的Web服务来获取该用户的密钥.

如果你使用#define甚至是NSString,有办法猜测键.显然,您必须真正愿意花费大量时间在已编译的代码中找到这些密钥,但是根据您正在寻找的安全级别以及您要防范的人员,这可能是一个问题.

  • 如果您对于是否可以读取硬编码键非常偏执,那么其中一个选项就是存储已转换的键.然后有一种方法将存储的密钥转换回真实密钥.例如,一个平凡的变换将是反向字符串.因此,如果您的密钥是ABC,那么每次要使用密钥时,都需要对CBA进行硬编码并调用反向方法.当然,在真正的应用程序中,你需要的东西比反向更复杂.只是另外一个想法...... (2认同)