Estoy intentando generar un esquema de seguridad para el problema de verificar la integridad del software del servidor. El dominio de este problema son los Servidores de Juego creados en los Servidores Dedicados de Origen de Valve. Estos servidores se utilizan en juegos competitivos, y la integridad de estos servidores puede ser increíblemente importante para ejecutar torneos y todo eso.
El sistema Steam de Valve ya ha verificado bastante bien a los clientes de juegos. Debido a los diversos sistemas de verificación de contenido y anti-trampas (VAC), podemos estar bastante seguros de que no se modifica el contenido del lado del cliente.
Sin embargo, en el lado del servidor, existen pocos esquemas de protección para garantizar que los clientes estén jugando en versiones no modificadas del software. El software en sí mismo es intrínsecamente configurable (a través de las variables de configuración y los comandos), y permite extensiones en la funcionalidad a través de Plugins de servidor . Además, no hay comprobaciones en el código del servidor en el sistema de archivos o en la memoria. Los servidores SRCDS son inherentemente modificables en muchos niveles.
Esto plantea un problema en los juegos competitivos en el motor Source. Es posible que cualquier número de modificaciones ConVar, complementos o modificaciones binarias del servidor se puedan usar para "hacer trampa", para dar una ventaja en la mecánica de juego a un equipo sobre otro, o un jugador sobre otro. Actualmente no hay forma de que un cliente o un tercero verifiquen que el servidor SRCDS no está modificado.
La solución básica a este problema parece ser la apertura. Podemos hacer que los cambios en los valores de ConVar se anuncien a los clientes, hacer listas de complementos que se ejecutan en los servidores disponibles para los clientes e incluso hacer verificaciones de CRC en los archivos en el disco y en la memoria y proporcionar a los clientes los valores resultantes. Sin embargo, nada de esto puede diferenciarse de un servidor que falsifica la información anunciada / proporcionada. Cualquier cosa en este camino se siente esencialmente como una oscuridad en lugar de seguridad.
¿Cómo puedo diseñar un sistema para verificar la integridad del software del servidor usando solo los desafíos / respuestas a ese servidor?
P.S. No dude en hacer preguntas o pedir más especificaciones.