如何在Client-Side-Binary中保留敏感信息?

时间:2012-01-02 14:53:42

标签: android iphone reverse-engineering client-side binary-data

我期待开发Android / iPhone应用程序,这些应用程序将使用带有嵌入式客户端密钥的私有API(非免费)。

现在,因为可以对应用程序二进制文件进行反向工程并废弃字符串。我担心丢失我的客户端密钥,然后将私有API暴露给攻击者。

如何管理?你能提供链接到讨论这种情况的文章吗?

考虑到我对私有API有开发访问权限,我可以使用什么机制来保护整个系统的隐私。

1 个答案:

答案 0 :(得分:0)

如果您有权访问应用程序代码,则始终可以使用私有API(请参阅this thread)。但是你可以让它变得更难。您可以使用以下选项限制API的使用

1)如果它不是“你的”API,请不要将密钥放入应用程序,而是放入正在运行的服务器中作为外部服务的代理(您可能仍希望服务器的另一个密钥进入应用程序然后)

2)对密钥进行加密/加密,使其不易被抓取:

  • 加扰的简单示例:将密钥放入文件中;生成一个相同长度的随机文件; xor带有随机文件的密钥文件(并再次将其写入磁盘);每当你需要密钥读取两个文件并再次xor时(任何可逆操作而不是xor都会这样做 - 更复杂的操作,遍布你的代码将使逆向工程师更难)
  • 使用密码扩展到你的应用程序加密你的密钥(部署Android应用程序无论如何都被混淆了,所以发现它变得有点困难)

3)如果是您的服务或您设置了代理,则限制每个客户端/ IP的使用次数或仅通过代理提供部分服务

注意,如果您的合同禁止将密钥公开,则甚至可能需要选项1.