为什么将密钥放入iOS二进制文件是安全的

为什么将密钥放入iOS二进制文件是安全的,ios,Ios,我注意到,社交网络中的大多数主要参与者都有一些教程,其中的示例是在源代码中嵌入与您的帐户相关的API密钥(通常在计划文本中)。例如这把钥匙是用来给你的公司开账单的 我发现了一个类似的问题,值得注意的是,任何拥有越狱手机的人都可以看到未加密的可执行文件 这种做法实际上安全吗?如果安全,原因是什么?在应用程序中嵌入API密钥是不安全的,通常不是一种好的做法,但确实需要大量的工作因素才能获得它们,这不是小事。除了要执行的操作系统之外,没有其他工具可以解密可执行文件 回复:“任何一个拥有越狱手机的人都可

我注意到,社交网络中的大多数主要参与者都有一些教程,其中的示例是在源代码中嵌入与您的帐户相关的API密钥(通常在计划文本中)。例如这把钥匙是用来给你的公司开账单的

我发现了一个类似的问题,值得注意的是,任何拥有越狱手机的人都可以看到未加密的可执行文件


这种做法实际上安全吗?如果安全,原因是什么?

在应用程序中嵌入API密钥是不安全的,通常不是一种好的做法,但确实需要大量的工作因素才能获得它们,这不是小事。除了要执行的操作系统之外,没有其他工具可以解密可执行文件

回复:“任何一个拥有越狱手机的人都可以看到未加密的可执行文件。”这不是真的。只是越狱不会解密应用程序二进制文件,只有当二进制文件加载到RAM中执行时才会解密,密钥将不可用,而是在DMA路径的硬件中解密。需要添加调试工具,并在二进制文件加载到内存中执行后捕获它

您需要确定攻击者是谁,攻击者将花费多少技能和时间以及您的成本

没有100%安全的解决方案,只会增加工作系数。 另一种方法是在登录到服务器时第一次运行时获取API密钥,然后将它们移动到密钥链。但这也只是工作量的增加,因为如上所述,当可执行文件被发送到服务时,可以在运行时检查它

只要密钥在执行的任何部分都必须在应用程序内存中,它就容易受到攻击


将API密钥放入源代码中可以满足安全需求。

对于链接的问题的评论中没有涉及到的问题,您还需要什么?在代码中放入纯文本键是不安全的,就像注释所述。理想情况下,您不应该有任何硬编码键。如果有,您需要对其进行模糊处理。@Krypton模糊处理是安全的吗?请解释。@rmaddy在任何时候将密钥存储在内存中都是不安全的,它们可以在执行时恢复。因此,始终存在一个漏洞,这完全是为了增加攻击者必须克服的工作因素,以达到安全目标。有两种类型的安全性:1)通过设计2)通过模糊处理-通过设计的安全性即使对确定的黑客也是有效的-通过模糊处理的安全性不能保证安全性。然而,它确实减慢了坚定的专业黑客的速度,并阻止了业余爱好者。你在应用程序中嵌入了你的密钥,所以这绝对是一个糟糕的设计。因此,您可能希望充分混淆您的应用程序。