El cifrado no es autenticación.
Proteger el contenido de un archivo para que no se lea y proteger el contenido de un archivo para que no se modifique son dos tareas separadas. Esto es particularmente evidente cuando se trata de proteger el contenido de los archivos de su juego: el juego necesita descifrarlos, por lo que debe tener el secreto ... lo que significa que el usuario, que tiene control total sobre su propia máquina, también tiene el secreto. ! Incluso ignorando eso, los archivos aún deben cargarse en la memoria sin cifrar en algunos puntos, para que se puedan ver los datos.
La autenticación, por otro lado, se puede hacer firmando los archivos del juego con una clave privada (que nunca deja las garras del desarrollador), y luego verificándolos con una clave pública (que se distribuye junto con el juego).
Ahora un adversario que puede ver todo no puede modificar los archivos del juego. Ni siquiera necesitan estar encriptados; cualquier cambio hará que la firma se invalide.
... Desafortunadamente, por supuesto, el usuario final puede simplemente remendar la rutina que verifica los archivos del juego en primer lugar.
Esto se convierte en un juego del gato y el ratón. En última instancia, es una batalla perdida para el desarrollador; es como tratar de mantener alejados a los ladrones pidiéndoles que se mantengan alejados.
Entonces, ¿qué hacer?
El cliente es totalmente indigno de confianza. El cliente puede mentir y engañar y robar hasta que las vacas regresen a casa. Si la lógica de tu juego vive del lado del cliente, la lógica del juego puede ser subvertida.
Por otra parte, si su juego está alojado en un sistema que usted controla, tiene algo de poder. Puedes decidir "hey, JimBob se ha movido cincuenta millas en dos segundos; tal vez eso no esté bien". El cliente todavía puede ser un mentiroso horrible, y aun así abusar de la información que no debería tener (como ver a los enemigos a través de las paredes), pero al menos puede verificar que sus acciones son válidas.
El mismo inquilino aparece en todo tipo de lugares. Los desarrolladores web validan todas las entradas de , incluso si la interfaz de usuario no te permite decir que tienes años.
Al final del día, confía en el cliente lo menos posible .