He tenido esta idea de usar el cifrado para evitar que los usuarios descubran contenido en mi programa fuera del programa. Al igual que los usuarios, pueden encontrar texturas que nunca se usaron en el juego para ser parte de algún tipo de huevo de Pascua al revisar los datos del juego. Esto puede, por ejemplo, arruinarlo para todos si se publica en línea.
Imagina una habitación secreta donde el jugador tiene que presionar los números correctos en una puerta de seguridad en el juego, que si es correcto debería generar la clave de descifrado correcta y luego descifrar esa parte del nivel y abrir la puerta. Por lo tanto, hacer que el huevo de Pascua sea inaccesible incluso cuando se mira a través de los datos del juego, ya que la clave no está realmente almacenada, se genera en función de la entrada del usuario.
Aquí hay otro ejemplo de lo que estaba imaginando. Tengo un juego de rompecabezas con 20 niveles, cada uno encriptado con una clave diferente. En lugar de almacenar la clave de descifrado con el programa permitiendo directamente a alguien descompilar el programa y encontrarlo, en su lugar, genero la clave de cifrado / descifrado en función de la solución del rompecabezas anterior. De esta manera, el jugador tendría que descifrar el rompecabezas antes de obtener información sobre el siguiente nivel, incluso cuando revise los datos del juego.
El jugador, si está bien informado, podría forzarlo con fuerza bruta "fácilmente" dado que la cantidad de soluciones de rompecabezas es probablemente menor que la cantidad de claves de descifrado. Realmente es una cuestión de complejidad del rompecabezas y no es muy importante aquí. Aunque publiqué una respuesta al respecto aquí
¿Hay programas / juegos hoy que hayan hecho algo como esto? ¿Almacenar contenido encriptado en sus juegos? ¿Y si no por qué? ¿Hay muchas reglas y regulaciones al respecto, ya sea a nivel de tienda o país? ¿Alguien ve alguna trampa obvia que me falta? Ignorando cosas como la experiencia del usuario, la idea me parece sólida y me da curiosidad por qué no he visto esto antes.
Editar : Puede que no esté claro exactamente lo que estoy diciendo, así que aquí hay un ejemplo más concreto.
Digamos que tengo una función que toma una cadena de 20 caracteres y genera una clave simétrica que puedo usar para cifrar / descifrar parte del contenido del juego. La única forma en que el usuario puede llegar a ese contenido es conocer esos 20 caracteres y generar la misma clave. Esta clave nunca se almacena directamente y se genera sobre la marcha en función de la entrada del usuario. Estos personajes estarían ocultos en el juego en lo que podrían ser libros, diálogo con NPC, incluso incluso fuera del juego en la parte posterior de la caja.
Entonces, con 2 * 10 ^ 28 combinaciones posibles para probar, probablemente sea más probable que las personas encuentren el contenido de la manera prevista en lugar de mirar a través de los datos del juego.
Edición 2 : el contenido en cuestión se cifrará con una clave arbitraria y secreta antes de ser enviado al consumidor. Obviamente, esta clave no se enviará con el juego. Él o ella de alguna manera tendrían que volver a armar la clave dada una serie de pistas hechas en base a la clave, y que están ocultas en todo el juego o en otro lugar. Sin embargo, este sistema sería transparente para el usuario, ya que no sabría que el contenido estaba encriptado a menos que realmente revisara los datos del juego.
Como muchos han mencionado, esto tiene un inconveniente obvio en que su caso de uso es limitado. Una vez que una sola persona lo ha descubierto, puede compartirlo con todos los demás, si no es la clave / solución, entonces el contenido en sí. Sin embargo, si su intención es mantener algo tan secreto que una sola persona no debería ser capaz de resolverlo y las personas tienen que trabajar juntas para resolverlo, o tiene miedo de que su huevo de Pascua esté tan bien oculto (por diseño) que es más probable que alguien lo encuentre en el código más bien a través del juego. Entonces creo que esto podría funcionar muy bien.
Yo personalmente recomendaría usarlo solo una vez por juego y solo para cosas que no afecten el juego central, por ejemplo, huevos de pascua, un final secreto. Cualquier rompecabezas tendría que ser tan complicado o bien oculto para frenar a las personas lo suficiente como para que valga la pena cifrar el contenido y si este rompecabezas se interpuso en el camino de las personas que progresan, entonces probablemente nadie se esté divirtiendo.