【问题标题】:Validating client binaries in client/server handshake在客户端/服务器握手中验证客户端二进制文件
【发布时间】:2013-10-27 17:02:44
【问题描述】:

我正在构建一个连接到服务器的客户端程序。此客户端程序需要将源代码作为许可的一部分提供给用户(不是选项)。但是,我需要确保当用户使用该客户端程序连接到服务器时,它使用原始代码运行并且没有被更改和重新编译。

在连接到服务器期间,有什么方法可以检查他们使用的是未更改版本的程序吗?

【问题讨论】:

    标签: security client-server


    【解决方案1】:

    不,真的没有办法做到这一点。

    您基本上遇到了“受信任的客户”问题。客户端代码在用户的 PC 上运行,用户可以完全控制该 PC。他可以改变程序在磁盘甚至内存中的字节。如果您要尝试对代码执行哈希或校验和,他可以简单地更改进行验证的代码并使其返回“未修改”。

    您可以尝试让恶意用户的操作更加困难,但没有切实可行的方法来实现您的期望。

    【讨论】:

      【解决方案2】:

      您所描述的是视频游戏行业在过去 15 年中一直在努力解决的问题。简而言之,如何防止用户修改客户端(在他们的情况下,通常是为了防止作弊,尽管也出于版权原因)。如果这种努力教会了我们什么,那就是防止对客户端进行修改是一场持续的军备竞赛,你永远不会决定性地获胜。鉴于此,甚至不要尝试。

      遵循标准的客户端-服务器假设,即客户端掌握在敌人手中并且不可信。根据这个假设构建你的服务器端,你会没事的。

      【讨论】:

      • 我同意。你不能保护用户免受他们自己的伤害。但至少要签署申请,以保护他们免受他人伤害。
      • 即使防止您的游戏被破解的努力在科学上并不安全,但至少可以为您争取时间。希望足够长的时间能够在游戏的初始销售期(“商店保质期”)或大约在您的第一个补丁时(这使得它更加困难)持续。一年后,您的大多数客户将玩其他游戏,而黑客将继续前进。
      【解决方案3】:

      这是非常非常困难的,可能不值得。但是,如果您有兴趣追求它,则必须开发一些经过代码签名并由 Windows 内核监控的东西。

      几个主题将引导您了解问题的范围:

      Protected media path

      Driver signing

      媒体设备和设备驱动程序均由制造商进行数字签名,并由 Windows 持续监控。如果出现任何问题,它就会被关闭(这是技术术语)。看起来非常令人生畏。而且我不知道该技术是否可用于不是设备驱动程序且与 DRM 无关的桌面软件。

      祝你好运!

      【讨论】:

        猜你喜欢
        • 2011-12-26
        • 2014-11-13
        • 2012-11-11
        • 1970-01-01
        • 2010-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-13
        相关资源
        最近更新 更多