我在我的android应用程序中使用parse.com。我很担心泄露秘密钥匙。如果密钥被泄露,有人可以在parse.com上自由访问我们的资源。
这些密钥保存在扩展应用程序类的Java类中。
我真的很想知道怎么把钥匙藏起来。现在最好的做法是什么?欢迎使用简单、低成本的解决方案。
谢谢。
最佳答案
我真的很想知道怎么把钥匙藏起来…
通常,您会尝试将敏感材料移到攻击者控制之外。通常这意味着将同样多的敏感代码和数据移动到服务器(并从客户机中移出)。
如果可能的话,在服务器上运行parse.com代码,这样客户端就不需要api密钥。密钥泄漏的风险很小,因为客户端上的攻击者无法使用它们。
如果您对用户进行身份验证,则将api密钥保留在服务器上。一旦用户进行身份验证,就将其提供给应用程序。密钥仍有泄漏的风险,但不会硬编码到应用程序中,而且使用APKTool这样的分析工具很容易找到。
你也可以采取其他措施。Proguard并且想到了api密钥的加密。在android 4.0及更高版本上,您还应该将它们存储在Keychain中。它将阻止无动机的攻击者,并减慢有动机的攻击者的速度。其中大部分在Best Practice for storing private API keys in Android中介绍。
您还可以加密二进制文件以供分发,但我知道这更多的是来自google play的drm控件(而不是应用程序/数据安全控件)。例如,请参见Questions about Google Play application assets encryption。