我有一个项目需要用 AES 加密一些数据。但是,我在我的项目中硬编码 AES 密钥,如下所示:
NSString *passwd = @"someStringAsKey";
NSData *encryptedData = [Encrypter encrypteData:unencryptedData];
如果有人想破解我的二进制文件以找到我硬编码的 AES 密钥,这容易吗?如果是,那么存储 AES 密钥的更好方法是什么?
编辑: 密钥用于加密和解密一大块数据,应用程序从服务器下载数据,然后应用程序对其进行加密并将加密数据保存在磁盘上。此密钥在每个设备上使用,这意味着每个设备都可以拥有自己的密钥,只要每次应用程序运行时,它都知道如何生成密钥。
EDIT2: 数据下载过程受到这种方式的保护:客户端每次登录时都会生成一个随机的私钥/公钥对。它将公钥发送到服务器,服务器使用公钥加密AES密钥,然后将加密的AES密钥发送给客户端。客户端解密 AES 密钥并将其放入内存。然后客户端和服务器传输由该 AES 密钥加密的数据。
我的目标是保护磁盘上的数据不被黑客解密。我假设黑客能得到的是我在磁盘上的二进制图像和数据。黑客也可以在他自己的设备上运行我的应用程序并分析内存。
我不需要保护这种攻击:黑客太聪明了,他编写了一个在越狱设备上运行的病毒,该病毒可以分析我的应用程序的运行内存以搜索内存中的某些密钥。所以我们不必担心网络传输的安全性。