【问题标题】:Securing string in APK在 APK 中保护字符串
【发布时间】:2013-07-30 23:36:09
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# android security xamarin.android xamarin


    【解决方案1】:

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

    如需更详细的讨论,请阅读:How to protect Google Play public key when doing InApp Billing

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

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

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

    编辑:

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

    【讨论】:

    • 感谢您的回复。但我仍然想知道解决这个问题的一些好的行业标准方法,因为 Google Play 密钥不是我的应用程序中唯一的密钥字符串(例如 Facebook 应用程序密钥,未来可能还有其他密钥)。跨度>
    • 使用商业混淆工具。这些工具会检查您的代码并使其更难反编译。商业的通常包括一个自动字符串加密功能,它确保你所有的硬编码字符串(如密钥)永远不会在你的应用程序中保存明文,并在运行时被解码。大量的混淆器可用于 c# / android。它们很容易集成到您的构建过程中,并且在保护代码方面为您完成所有繁重的工作。
    • 这里列出了商业混淆器用来惹恼潜在黑客致死的一些技术:ssware.com/cryptoobfuscator/features.htm。永远记住,一个坚定的黑客仍然能够克服这一切......但这对他来说会少很多乐趣;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 2020-07-15
    • 2011-05-18
    • 2011-04-16
    • 2023-03-29
    相关资源
    最近更新 更多