我期待开发一个Android/iPhone应用程序,这些应用程序将使用内置客户端密钥的私有API (Non-Free)。
现在,由于有可能对应用程序二进制文件进行逆向工程并丢弃字符串。我担心将私有API暴露给攻击者会丢失我的客户端密钥。
如何管理?你能提供讨论这些情况的文章的链接吗?
考虑到我有私有API的开发访问权,我可以在其中内置什么机制来保护整个系统的隐私
如果您可以访问应用程序代码,则始终可以使用私有API(参见此线程)。不过,你可以让它变得更难。您可以使用以下选项
限制API的使用1)如果它不是"你的"API,不要把密钥放在应用程序中,而是放在你正在运行的服务器上,作为外部服务的代理(你可能仍然想要另一个密钥让你的服务器进入应用程序)
2)加密/打乱密钥,使其不容易被抓取:
- 置乱的简单示例:将密钥放入文件中;生成一个相同长度的随机文件;将密钥文件与随机文件相匹配(并再次将其写入磁盘);当您需要密钥时,读取两个文件并再次对其进行xor操作(任何可逆转的操作都可以代替xor操作-更复杂的操作,分散在您的代码中会使反向工程师更难)
- 加密你的密钥使用一个密码短语散布在你的应用程序(在部署android应用程序是混淆的,所以发现它变得有点困难)
3)如果这是你的服务或你有一个代理设置,限制每个客户端/IP的使用数量或只提供部分服务通过你的代理
注意,如果你有一个禁止公开密钥的合约,选项1甚至可能是必需的。