首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iOS:在我的代码中硬编码AES密钥安全吗?

iOS:在我的代码中硬编码AES密钥安全吗?
EN

Stack Overflow用户
提问于 2013-03-04 05:04:28
回答 2查看 3.8K关注 0票数 8

我有一个项目,需要一些数据是加密的AES。但是,我在我的项目中硬编码AES密钥如下:

代码语言:javascript
运行
复制
NSString *passwd = @"someStringAsKey";
NSData *encryptedData = [Encrypter encrypteData:unencryptedData];

如果有人想破解我的二进制文件来找到我硬编码的AES密钥,这会很容易吗?如果是的话,有什么更好的方法来存储AES密钥呢?

编辑:密钥用于加密和解密数据块,应用程序从服务器下载数据,然后应用程序对其进行加密并将加密数据保存在磁盘上。这个键是在每个设备的基础上使用的,这意味着每个设备都可以拥有自己的密钥,只要每次应用程序运行,它就知道如何生成密钥。

EDIT2:通过这种方式保护数据下载过程:客户机每次登录时都会生成一个随机的私钥对/公钥对。它将公钥发送到服务器,服务器使用公钥加密AES密钥,然后将加密的AES密钥发送给客户端。客户端解密AES密钥并将其放入内存中。然后由AES密钥加密的客户端和服务器传输数据。

我的目标是保护磁盘上的数据不被黑客解密。我认为黑客可以得到的是我的二进制图像和磁盘上的数据。此外,黑客可以在自己的设备上运行我的应用程序并分析内存。

我不需要保护这种攻击:黑客非常聪明,他写了一个病毒运行在越狱设备上,病毒可以分析我的应用程序的运行内存,以搜索内存中的一些密钥。因此,我们不需要担心网络传输的安全性。

EN

回答 2

Stack Overflow用户

发布于 2013-03-04 05:37:11

作为一个字符串,如果没有任何其他保护,那么在二进制文件中查找键就很简单了。一个人所需要的只是一个符号调试器,并且/或大致地了解一个键应该是什么样子(它应该有多大,以及有效值的范围)。

显然,iOS内置了一些安全内容,可以将敏感数据存储在恶意应用程序无法访问的范围内。问题是,其中很大一部分似乎是假设设备按预期运行。运行在越狱设备上的代码可能仍然可以访问大多数(如果不是全部)数据。

票数 2
EN

Stack Overflow用户

发布于 2013-03-04 05:42:36

代码语言:javascript
运行
复制
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

在启动应用程序时只调用一次此方法,因此创建随机密钥:

代码语言:javascript
运行
复制
-(NSString) generateKey{
       char data[NUMBER_OF_CHARS];
        for (int x=0;x<NUMBER_OF_CHARS;data[x++] = (char)('A' + (arc4random_uniform(26))));
        return [[NSString alloc] initWithBytes:data length:NUMBER_OF_CHARS encoding:NSUTF8StringEncoding];
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15194898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档