gpt4 book ai didi

ios - 在 iOS 应用程序中存储包含的 AWS 凭证的最佳位置

转载 作者:可可西里 更新时间:2023-11-01 03:26:32 25 4
gpt4 key购买 nike

我计划在即将开展的项目中使用适用于 iOS 的 AWS 开发工具包。我需要使用打包的应用程序存储 AWS 的凭据。将它们放置在哪里最安全?我知道将它们存储在 pList 中不是一个好主意。将其“硬编码”到将要编译的类中是否更好?有什么风险吗?

最佳答案

我认为完全隐藏凭据在理论上是不可能的。也就是说,如果您的编译代码可以读取它们,那么理论上任何有权访问编译代码的人都可以。但是不完善的安全性仍然是值得的。我猜想大多数攻击者只会在二进制文件中寻找看起来像 key 的字符串,而不会去反编译代码并试图解释它是如何工作的,所以隐藏凭据的一种方法是存储它们以编码形式出现,然后根据需要对其进行解码。这样,解码算法就成为您的 key ,攻击者必须找到并理解它才能提取您的凭据。

这是使用随机 XOR 掩码执行此操作的相当简单的方法。将以下伪造密码替换为您的密码,并记住保留 NULL 终止符 (\0)。将此代码编译并作为独立程序运行:

#include <stdio.h>

#define PAD_LENGTH 32

int main() {
int i;
char c;

// start with the password
char password[PAD_LENGTH] = "My AWS Password\0";

// make a random pad to encrypt it
printf("PAD:\n{");
char pad[PAD_LENGTH];
for (i = 0; i < PAD_LENGTH; i++) {
c = arc4random() & 0xFF;
pad[i] = c;
printf("%#02x", c & 0xFF);
if (i < PAD_LENGTH - 1) printf(",");
}
printf("}\n");

// make an encrypted version of the password
printf("KEY:\n{");
for (i = 0; i < PAD_LENGTH; i++) {
c = pad[i] ^ password[i];
printf("%#02x", c & 0xFF);
if (i < PAD_LENGTH - 1) printf(",");
}
printf("}\n");

return(0);
}

然后将生成的 pad 和 key 复制到这样的代码中(实际上将包含在您的应用程序中):

#define PAD_LENGTH 32

char pad[PAD_LENGTH] = {0x83,0x26,0x8a,0x8b,0xee,0xab,0x6,0xed,0x2e,0x99,0xff,0x23,0x7f,0xef,0xc8,0x8,0x6b,0x8e,0xa4,0x64,0x6d,0xb,0x7,0xd2,0x6a,0x39,0x60,0xa4,0xa9,0xad,0xea,0xb8};
char key[PAD_LENGTH] = {0xce,0x5f,0xaa,0xca,0xb9,0xf8,0x26,0xbd,0x4f,0xea,0x8c,0x54,0x10,0x9d,0xac,0x8,0x6b,0x8e,0xa4,0x64,0x6d,0xb,0x7,0xd2,0x6a,0x39,0x60,0xa4,0xa9,0xad,0xea,0xb8};
for (int i = 0; i < PAD_LENGTH; i++) {
key[i] = key[i] ^ pad[i];
}
NSString *password = [NSString stringWithCString:key encoding:NSASCIIStringEncoding];

由于这是在公共(public)论坛上进行的,因此您可能想要更改一些内容,例如将 pad 设置为不同的长度、将它们分开并使用代码重新连接、重新排序等。您还可以存储 pad 和键在代码的遥远部分。一个真正熟练和敬业的攻击者无论如何都能够找到您的密码,但基本思想是大多数扫描二进制文件寻找密码的人不会找到密码。

关于ios - 在 iOS 应用程序中存储包含的 AWS 凭证的最佳位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7004766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com