Supongamos que está diseñando un juego para PC que realiza un seguimiento de los puntajes más altos. Además de mantener puntajes locales, se configura un servidor de puntaje global al que accede el juego a través de Internet. Los jugadores deberían poder enviar sus puntajes más altos a la lista global de puntajes altos justo después de haber completado un juego, o más tarde, de su lista local de puntaje más alto. Este debe ser un problema común; Los juegos de arcade en las consolas de juegos modernas a menudo cuentan con una lista global de puntuaciones altas que funciona así.¿Cómo puede evitar que puntajes altos falsos aparezcan en una lista global de puntajes altos?
Mi pregunta se reduce a: ¿cómo se puede evitar que alguien presente puntuaciones altas falsas? O, dicho de otra manera, ¿cómo puede el servidor de puntaje global estar seguro de que un puntaje enviado realmente se produjo al recorrer el juego?
Cuanto más pienso en esto, más creo que puede ser un problema sin solución.
Lo que haría comúnmente para verificar que un mensaje provenga de una fuente determinada es hacer que la fuente firme digitalmente el mensaje. Ciertamente podría hacer eso en este caso, pero el problema real es que el jugador, al tener el software, también tiene la clave privada del software. No importa lo ofuscado que pueda ser, puede ser de ingeniería inversa, o incluso simplemente extraído de la memoria.
Otra opción sería enviar una repetición del juego del jugador al servidor de puntuación más alta, que ejecutaría rápidamente la repetición y verificaría que el puntaje enviado coincide con el resultado de la repetición. Esto no resuelve el problema, pero ciertamente hace que sea más difícil falsificar un puntaje alto si también tiene que producir una repetición muy compleja que lo "pruebe".
¿Es este un problema que tiene una solución, o es realmente insoluble? ¿Existen técnicas utilizadas por los desarrolladores de la consola de juegos local para evitar este tipo de exploits, o simplemente confían en la consola para evitar que se ejecute un código no autorizado?
La presencia de puntuaciones falsas es el resultado de personas jugando fuera de las reglas establecidas. Entonces, en cierto sentido, se trata de un problema de personas y no de un problema del sistema (o uno que puede resolverse a nivel del sistema). – rndmcnlly