5

我正在使用 Xamarin 的 Mono for Android 开发一个 android 应用程序。我目前正在使用 Google Play API 添加应用内购买功能。为此,我需要从我的应用程序中向 Google 发送公共许可证密钥。关于这个问题,谷歌建议如下:

安全建议:强烈建议您不要硬编码 Google Play 提供的确切公共许可证密钥字符串值。相反,您可以在运行时从子字符串构造整个公共许可证密钥字符串,或者从加密存储中检索它,然后再将其传递给构造函数。这种方法使恶意第三方更难修改您的 APK 文件中的公共许可证密钥字符串。

我从未处理过加密、黑客/破解或任何其他软件安全方面的问题,所以我不确定如何实施 Google 的建议。我的问题是如何充分保护使用 Mono for Android 制作的 Android APK 中的字符串,而无需成为安全专家?

4

1 回答 1

5

不要听起来太大胆,但我相信你可以放心地忽略他们的建议。他们所建议的安全优势充其量是微乎其微的。

有关更详细的讨论,请阅读:How to protection Google Play public key when doing InApp Billing

事实是,那里描述的方法都不是绝对安全的。如果有人决心找出你的公钥,他们会的。无论您做什么,公钥最终都会传递给 ctor,因此恶意用户始终可以在此时对其进行检查。他们建议的所有“游戏”只是让这变得更加困难,但绝对不是不可能的。

我认为你最好的选择是接受它的真实面目。这个密钥是公开的是有原因的,你需要接受它很容易被破坏的事实。由于其他人都知道这一点晚上睡得很好,我看不出你为什么不应该这样做:)

如果你真的晚上睡不着,想做点什么……把你的钥匙放在你的代码中,前两个字符交换。然后在运行时,在使用该键之前将这两个字符切换回来。这应该足以保护自己免受暴力自动攻击。智能攻击你无能为力。

编辑:

如果您正在寻找保护代码的行业标准方法,请使用商业混淆器。这些工具就是为此目的而设计的。一些例子是Android 的 Mono,代码混淆。确保使用包含字符串加密的功能齐全的商业版本。

于 2013-07-30T23:45:14.673 回答