Android应用程序的安全/受保护内容分发[关闭]

Posted

技术标签:

【中文标题】Android应用程序的安全/受保护内容分发[关闭]【英文标题】:Secure/protected content distribution for Android app [closed] 【发布时间】:2011-06-12 11:03:57 【问题描述】:

这是我的场景:我需要以安全/受保护的方式分发 android 应用程序的可选内容包,即防止从应用程序外部下载内容。内容由压缩后的 SQLite 数据库创建文件组成,最大大小为 4 MB。这些软件包将每年更新 4 次。我目前有大约 1000 个活动安装。这意味着在高峰时间下载内容包更新的流量每天可能会产生大约 4 GB。该应用的安装基数每天大约增长 100 个用户。

根据场景我想知道如何解决以下问题:

    分发内容的最佳方式是什么? HTTPS 传输?推荐的身份验证方式(例如密码、证书)是什么?我应该改用受密码保护的 Zip 文件吗?

    应使用哪种基础架构进行符合以下标准的内容交付:

    支持 1) 开箱即用的保护机制 易于设置和维护 欧洲和美国的可扩展和下载节点 相对便宜(每月不超过 30 美元)。理想的按需付费带宽。

我正在考虑使用 CDN,如 SoftLayer、Amazon CloudFront 等。有什么建议吗?

【问题讨论】:

“我需要以安全/受保护的方式分发 Android 应用程序的可选内容包,即防止从应用程序外部下载内容。” ——根据定义,这是不可能的。无论您使用什么方式,都可以从应用程序进行逆向工程并在其他地方使用。您可以使用代码混淆等来尝试使这变得更加困难,但仅此而已。 我知道不可能获得 100% 安全的解决方案。我仍然不希望任何人通过简单地浏览下载 URL 来获取数据。所以我会很高兴至少使用密码保护并将密码隐藏在应用程序中以使事情变得更难。有什么建议我该怎么做? 每天 100 个用户,而您有 1000 个用户?我认为您无法从中得出有意义的统计数据。 100用户是连续30天左右的增长速度。当然,很难做出估计,但这种情况很有可能发生。 【参考方案1】:

我认为您不需要花哨的服务器配置。据我了解,HTTPS 用于保护客户端和服务器之间的链接,并基本上确保您连接到您认为的服务器。但是任何支持 HTTPS 的客户端都可以连接到服务器并请求您的文件。所以它对你想要做的事情没有帮助。 (如果您试图阻止某人冒充您的服务器,那么您会使用它。)

要解决您描述的问题,您可能需要使用标准文件加密。这将使您的内容免受任何没有加密密钥的人的侵害。最终有人能够从您的应用中挖掘出密钥,但您可以更新到新密钥,并希望这会带来更多的痛苦。

【讨论】:

感谢您的回复。您会将加密密钥存储在应用程序中的什么位置?你能为此目的推荐任何图书馆吗?一个密码压缩文件就足够了吗? 除了密钥之外,您需要的所有东西都应该在 Android 中。在Android下查找javax.crypto。密钥应该存储在应用程序中,可能是一个字符串。 我不确定 Android 对受密码保护的 zip 文件有什么支持,但这些通常被认为不太安全。这两种解决方案都只是基本级别的“让诚实的人保持诚实”的保护类型。

以上是关于Android应用程序的安全/受保护内容分发[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

反编译受保护的 C# [关闭]

Android关闭ChromeCast Screen Mirroring功能

使用 converse.js 插件创建受密码保护的房间 [关闭]

win10想开测试模式,提示“设置元素数据时出错。 该值受安全引导策略保护无法

广播受保护的意图时出现 SecurityException

使用分发密钥保护 excel-vba 应用程序