我寻找处理这一问题的最佳实践。
如果您尝试使用的API提供瞬态令牌(例如,AWS的令牌自动售卖机),请使用它,这样您就不会首先将长寿的密钥烧入应用程序中。或者,根据六项建议,请为此制作自己的计划,API密钥位于您的服务器上,并且您的应用程序使用您的服务器代表应用程序执行操作。
如果您正在使用的API有一种方法将API的使用与您的应用程序的签名密钥(例如Play Services)绑定,那么您的API密钥不能在没有您的签名密钥的情况下使用,它可以被发现是一个非问题。
欢迎您泉水为DexGuard,将在您的应用程序对数据进行加密。这并不能阻止一个确定的黑客,但它至少会减慢一个。偶尔的黑客可能只是绕过你的应用程序,并与较弱的猎物一起。
如果这些都不是一个选项,不要担心。例如,如果您是独立开发人员,并且被盗的API密钥是您的前100名关注点,那么您担心的太多了。只需定期轮换键(例如,每次应用程序更新),最终在不再使用旧键时退出,以便在某些攻击者获得您的密钥时将受损风险降至最低。你有更大的鱼来炒,就像你要如何推销应用程序一样。
特别是,滚动你自己的加密,而不是只购买DexGuard,是浪费时间。如果您无法承担DexGuard许可证费用,则无法绕过自己的加密技术。而且在保护你的密钥方面,你自己的加密算法值得花时间来写它,这是不大可能的。
嗨。我只想指向一个预览与我的答案类似的问题:http://stackoverflow.com/questions/21457794/securely-storing-credentials/21458465#21458465 – Budius