为什么我们不应该在iPhone应用程序的源代码中存储用于加密的密码或密钥?

时间:2011-07-20 08:23:25

标签: ios security

为什么我们不应该在iPhone应用程序的源代码中存储用于加密的密码或密钥?

人们是否有可能对代码进行逆向工程并找到存储的密钥?或者如果硬编码值存储在易于访问的位置?

2 个答案:

答案 0 :(得分:3)

如果您将密钥存储在源代码中,是的,它们可以进行逆向工程。你可以通过生成函数“生成”密钥来使这更难,但这仍然是一个额外的混淆级别。一个真正有动力的攻击者可以通过它。这种方法的另一个缺点是,相同的密钥将适用于您的应用程序的所有实例,除非生成器函数生成从某些硬件常量派生的密钥。

同样,您必须分析您希望应用程序的安全性以及您希望为安全性付出多少努力。安全始终是一种权衡。当攻击的可能性或成本极不可能时,在安全性上花费大量精力是不值得的。

更安全的方法是创建随机密钥,然后将其存储在设备上的安全存储中。我对iOS Api并不十分熟悉,如果提供了这样的功能。例如,在Windows上有一些名为DPAPI的东西可以提供此功能。

答案 1 :(得分:1)

任何进入用户手中的东西都可以访问。密钥的混淆是部分工作,但并不能完全消除问题。