【问题标题】:Passing untampered data from Flash app to server?将未经篡改的数据从 Flash 应用程序传递到服务器?
【发布时间】:2010-09-07 23:12:04
【问题描述】:

我正在寻找在运行 Flash 的客户端和服务器之间传递数据的安全方法。有问题的数据将由 Flash 应用程序生成,在这种情况下是您完成游戏后的分数。我想验证服务器上的数据是否未被篡改。有什么好的方法可以完成这项工作?

一种简单的方法是对数据执行一些操作,例如散列,然后将散列与数据一起传回服务器。然而,这很容易被能够访问客户端源代码的人破解。

编辑:我知道没有什么是不可破解的,但我想让它尽可能地困难。 @jcnnghm 使用公钥加密数据并可选择使用游戏日志进行完整性检查和/或重新计算的解决方案是我认为的最佳选择。 SSL 加密也是一个好主意,因为这使得破译实际发送回服务器的内容变得更加困难。

【问题讨论】:

    标签: flash security encryption


    【解决方案1】:

    使用存储在二进制文件中的公钥加密数据。这将提高攻击的进入门槛。除此之外,在数据到达服务器时对其进行完整性检查。这可以很简单,例如计算每个游戏单位实际可以获得的最大积分数,或者将游戏日志发送回服务器以确保得分正确。

    无论您做什么,都不会完全防黑客,但这将阻止除最坚定的人之外的所有事情。

    更新: @mark:Flash 原生支持 SSL。

    【讨论】:

      【解决方案2】:

      在不可信平台上运行的代码能否保持其完整性?不,几十年来被破坏的复制保护计划让我假设这是不可能的。在受信任的沙箱中运行的反向恶意代码是可行的,但您能解决问题的最好办法就是让人们不方便作弊。

      【讨论】:

        【解决方案3】:

        查看http://code.google.com/p/as3crypto/ 的 AS3Crypto 包。我没有尝试过,但这个包声称(部分)支持 TLS 1.0 协议。

        TLS 将在您的 Flash 应用程序和服务器之间提供安全隧道。 http://en.wikipedia.org/wiki/Secure_Sockets_Layer

        @jcnnghm 您通常不想使用公钥加密(RSA、DSA)进行批量数据加密,因为它的计算时间长。公钥加密应该用于安全协议的握手和密钥协商阶段,但是批量数据加密应该使用对称密码,例如 AES 和 TDES。 TLS 和 SSL 协议以这种方式工作。

        【讨论】:

          【解决方案4】:

          只要人们可以获取可执行文件 - 除非您想在锁定的信息亭上运行游戏,否则总是如此 - 没有绝对安全的方式来执行此操作。

          音乐和电影行业在 DRM 上花费了数千万美元,而家庭爱好者在几天/几周内就破解了它。如果他们不能保护他们的东西......

          【讨论】:

            【解决方案5】:

            我同意给出的答案没有任何东西是黑客证明的。因为一旦你可以阅读它,你就可以操作/复制它,从而反编译它。

            我一直在计划的另一种方法是生成唯一键 pr。玩家会话(包括某种时间/日期作为盐值)。

            然后在整个应用程序中,可能会定期提交/传输状态分数并获得新的有效密钥。如果此同步失败,则中断整个会话。

            这样做的缺点可能是太多的同时玩家降低了服务器的回复速度,因此造成“假超时”+ 让游戏服务器为 DoS 攻击打开。

            但是在用户拥有会话时更新“会话密钥”会要求额外的会话管理,但如果它会让作弊者更加努力,我一定会尝试:o)

            另一方面,没有什么是防黑客的,所以不要 100% 相信它 - 无论您想出多么聪明的解决方案。

            最后一个注意事项是将您的应用程序划分为模块/级别等,这样您就不必通过启动它来访问每一段代码。

            目前我的计划是构建一个大型的多层次世界,客户端/玩家只会获取附加到玩家所在部分的文件。

            希望这对您的想法有用。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-08-28
              • 1970-01-01
              • 1970-01-01
              • 2020-08-15
              相关资源
              最近更新 更多