Kahuna API-秘密密钥/ API密钥是否应该保密?

时间:2018-11-28 05:08:08

标签: ios security mobile

我正在尝试为我的iOS应用设置Kahuna,但无法找到明确的答案-文档说该秘密密钥旨在与API密钥一起用于验证请求,但我可以找不到任何明确指出其中任何一个应保密/不包含源代码的内容。这些代码可以安全地放入我的代码中吗,还是应该保留在服务器端?

谢谢

1 个答案:

答案 0 :(得分:0)

  

这些内容可以安全地放入我的代码中吗,还是应该保留在服务器端?

简答是将它们保留在移动应用程序代码中,是将它们保留在服务器端。

为什么?

由于它们将成为您的移动应用程序代码中的静态机密,因此可以使用任何反向工程工具轻松提取它们,例如使用Mobile Security Framewrok(MSF)来反编译应用程序二进制文件。

替代品?

您可以尝试进行代码混淆,以在移动应用程序中动态生成机密信息,或将机密信息存储在iOS钥匙串中,但是可以再次在运行时对它们进行反向工程,再次使用MSF工具进行。

可能的解决方案?

最好的方法是使用移动应用程序证明服务来保护移动应用程序与API服务器之间的连接,这将确保在运行时您的应用程序不会受到攻击,被篡改,不在根植或越狱的设备中运行,并且与上传到应用商店中的原始设备相同。通过使用集成在您的App中的SDK和在云中运行的服务,可以在后台完成此操作,而不会影响用户体验。

有了此保证,我们就不再需要出于身份验证,真实性和完整性目的在移动应用中存储秘密,因此现在可以将对应用内第三方服务的任何访问委托给API服务器能够更好地保护访问第三方服务所需的所有机密,例如将其存储在保管库中。

您可以在Approov(我在这里工作)中找到一个移动应用证明服务,该服务提供了适用于多个平台(包括iOS)的SDK。集成还需要在API服务器代码中进行少量检查,以验证JWT令牌。对于API服务器来说,必须进行此检查才能决定要处理的请求和拒绝的请求。