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

时间:2016-03-14 03:10:02

标签: ios

我注意到社交网络中大多数主要参与者的几个教程都有一些示例,其中与您的帐户绑定的API密钥嵌入在源代码中(通常在计划文本中)。例如,Google Maps APIs Premium Plan。此密钥用于向贵公司收费。

我在Is it safe to put private API keys in your .m files when exporting to the appstore? 1中发现了一个类似的问题 - 值得注意的是,任何拥有越狱手机的人都可以看到未加密的可执行文件

这种做法实际上是否安全,如果是,为什么?

1 个答案:

答案 0 :(得分:2)

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

RE:“任何拥有越狱电话的人都可以看到未加密的可执行文件。”事实并非如此。只是越狱不会解密应用程序二进制文件,它只会被解密,因为二进制文件被加载到RAM中执行并且密钥将不可用,它将在硬件中在DMA路径中解密。需要添加调试工具并在将二进制文件加载到内存中后执行它来捕获二进制文件。

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

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

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

将API密钥放在源代码中可能会满足安全需求。