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

Yug*_*dle 6 iphone android reverse-engineering client-side binary-data

我期待开发一个android/iphone应用程序,那些将使用带有嵌入式客户端密钥的私有API(非免费).

现在,因为可以对应用程序二进制文件进行反向工程并废弃字符串.我担心丢失我的客户端密钥,并通过向攻击者公开私有API.

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

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

请帮忙 !

Chr*_*ian 0

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

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

2)加密/扰乱密钥,使其不易被窃取:

  • 简单的加扰示例:将密钥放入文件中;生成相同长度的随机文件;将密钥文件与随机文件进行异或(然后再次将其写入磁盘);每当您需要密钥时,请读取两个文件并再次对它们进行异或(任何可逆操作而不是异或都可以 - 更复杂的操作,分散在您的代码中将使逆向工程师变得更加困难)
  • 使用分布在您的应用程序上的密码来加密您的密钥(在部署时,Android应用程序无论如何都会被混淆,所以找到它会变得有点困难)

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

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