验证服务器软件完整性?

信息安全 网络 验证 配置 远程服务器
2021-08-24 16:31:32

我正在尝试为验证服务器软件完整性的问题集思广益。这个问题的领域是基于 Valve 的Source Dedicated Servers构建的游戏服务器这些服务器用于竞技游戏,这些服务器的完整性对于举办锦标赛等非常重要。

Valve 的 Steam 系统已经通过多种方式很好地验证了游戏客户端。由于存在各种内容验证和反作弊系统 (VAC),我们可以相当确定没有客户端内容被修改。

但是,在服务器端,几乎没有保护方案来确保客户端在未修改的软件版本上运行。该软件本身是可配置的(通过配置变量和命令),它允许通过服务器插件扩展功能。此外,没有检查文件系统或内存中的服务器代码。SRCDS 服务器本质上可以在许多级别上进行修改。

这给 Source 引擎上的竞技游戏带来了问题。任何数量的 ConVar 修改、插件或服务器二进制修改都可能被用于“作弊”——让一个团队在游戏机制上优于另一个团队,或者一个玩家优于另一个团队。目前,客户端或第三方无法验证 SRCDS 服务器是否未修改。

这个问题的基本解决方案似乎是开放性。我们可以向客户端宣布对 ConVar 值的更改,使在服务器上运行的插件列表对客户端可用,甚至对磁盘和内存中的文件进行 CRC 检查,并为客户端提供结果值。然而,这一切都不能与伪造宣布/提供的信息的服务器区分开来。沿着这条路走下去的任何事情本质上都让人觉得晦涩难懂,而不是安全。

如何设计一个系统来仅使用对该服务器的质询/响应来验证服务器软件的完整性?

PS随时提出问题或询问更多规格。

3个回答

多么棒的问题。我认为这是分裂游戏行业的原因之一——你是集中你的服务器以保持对它们的控制,但随后却因缺乏灵活性而无法满足游戏玩家的需求,并被指责以铁腕统治,还是你给予控制权?到游戏玩家群体并冒着恶意或受污染服务器的风险。

我想到了三个想法——没有一个是理想的,但可能有用。

  1. 向客户端宣布配置 - 这不会推迟服务器的重大妥协,但会增加恶意方所需的工作量。

  2. 走信任和声誉的道路,让玩家对服务器进行评分,无论他们认为自己是否诚实。这也有问题,代表也可以被玩弄,但这是另一种选择。

  3. 将服务器软件作为一个模块提供,您可以查询(la punkbuster 和 Valve 自己的检查)并在不一致时禁用。再一次地证明,当有人分析代码以了解要发回的响应时,这种类型的事情会在某个时候被破坏,这会惹恼服务器所有者,但也会增加所需的工作量。恶意方。

您似乎不太可能对直接从您不信任的服务器获得的答案充满信心。好像需要第三方来担保。例如,找到一种方法让云服务提供商证明运营商已经在某些标准硬件上加载了给定的 iso 映像,并且随后仅通过某个端口与它进行通信,该端口绑定到一个受严格限制的配置接口。我以前想知道是否有任何云提供商这样做......

原则上,有技术解决方案。您可以确保您的服务器都包含TPM,并使用远程证明让服务器向每个客户端证明它正在运行合法的服务器端软件。

但是,在实践中存在重大的工程挑战,这可能会使这种方法不太现实,或者比您的环境中的价值更昂贵。例如,客户现在需要有一种方法来获取授权软件版本的主列表;需要对服务器进行编程以使用 TPM 硬件(这是一种特殊操作);需要设计方案以确保服务器软件的完整性在认证后不会受到损害;和其他挑战。这听起来像是一个很大比例的工程和管理麻烦。

不幸的是,TPM 的远程证明功能在今天并未得到广泛使用,因此您无法建立在他人的努力和经验之上。因此,如果您想采用这种方法,您将处于最前沿。听起来像是会让项目经理尖叫的那种东西。

因此,我可能不会向小型独立软件供应商推荐这种方法,尽管原则上我怀疑它可能会针对您提到的那种威胁提供相当不错的安全性(如果您有无限的资源)。