我正在尝试为验证服务器软件完整性的问题集思广益。这个问题的领域是基于 Valve 的Source Dedicated Servers构建的游戏服务器。这些服务器用于竞技游戏,这些服务器的完整性对于举办锦标赛等非常重要。
Valve 的 Steam 系统已经通过多种方式很好地验证了游戏客户端。由于存在各种内容验证和反作弊系统 (VAC),我们可以相当确定没有客户端内容被修改。
但是,在服务器端,几乎没有保护方案来确保客户端在未修改的软件版本上运行。该软件本身是可配置的(通过配置变量和命令),它允许通过服务器插件扩展功能。此外,没有检查文件系统或内存中的服务器代码。SRCDS 服务器本质上可以在许多级别上进行修改。
这给 Source 引擎上的竞技游戏带来了问题。任何数量的 ConVar 修改、插件或服务器二进制修改都可能被用于“作弊”——让一个团队在游戏机制上优于另一个团队,或者一个玩家优于另一个团队。目前,客户端或第三方无法验证 SRCDS 服务器是否未修改。
这个问题的基本解决方案似乎是开放性。我们可以向客户端宣布对 ConVar 值的更改,使在服务器上运行的插件列表对客户端可用,甚至对磁盘和内存中的文件进行 CRC 检查,并为客户端提供结果值。然而,这一切都不能与伪造宣布/提供的信息的服务器区分开来。沿着这条路走下去的任何事情本质上都让人觉得晦涩难懂,而不是安全。
如何设计一个系统来仅使用对该服务器的质询/响应来验证服务器软件的完整性?
PS随时提出问题或询问更多规格。