Eu tenho essa ideia de usar criptografia para impedir que os usuários descubram o conteúdo do meu programa fora do próprio programa. Como os usuários podem encontrar texturas nunca usadas no jogo para fazer parte de algum tipo de ovo de Páscoa enquanto analisam os dados do jogo. Isso pode, por exemplo, arruiná-lo para todos, se publicado online.
Imagine uma sala secreta onde o jogador deve pressionar os números corretos em uma porta de segurança do jogo, que, se correta, deve gerar a chave de descriptografia correta e, em seguida, descriptografar a parte do nível e abrir a porta. Assim, tornando o ovo de Páscoa inacessível, mesmo quando se olha através dos dados do jogo, uma vez que a chave não está realmente armazenada, é gerada com base na entrada do usuário.
Aqui está outro exemplo do que eu estava imaginando. Eu tenho um jogo de quebra-cabeça com, digamos, 20 níveis, cada um criptografado usando uma chave diferente. Em vez de armazenar a chave de descriptografia com o programa, permitindo que alguém descompile o programa e encontre-o, em vez disso, giro a chave de criptografia / descriptografia com base na solução do quebra-cabeça anterior. Dessa forma, o jogador teria que realmente descobrir o quebra-cabeça antes de obter qualquer informação sobre o próximo nível, mesmo ao examinar os dados do jogo.
O jogador, se tiver conhecimento, pode forçá-lo com força bruta "facilmente", uma vez que o número de soluções de quebra-cabeças é provavelmente menor que o número de chaves de descriptografia. É realmente uma questão de complexidade do quebra-cabeça e não é muito importante aqui. Embora eu tenha postado uma resposta sobre isso aqui
Hoje existem programas / jogos que fizeram algo assim? Armazenando conteúdo criptografado em seus jogos? E se não, por que? Existem muitas regras e regulamentos sobre isso, tanto na loja quanto no país? Alguém vê alguma armadilha óbvia que estou perdendo? Ignorando coisas como a experiência do usuário, a ideia parece sólida para mim e me deixa curioso por que não tinha visto isso antes.
Edit : Pode não estar claro exatamente o que estou dizendo, então aqui está um exemplo mais concreto.
Digamos que eu tenho uma função que recebe uma seqüência de 20 caracteres e gera uma chave simétrica que eu posso usar para criptografar / descriptografar algum conteúdo do jogo. A única maneira de o usuário acessar esse conteúdo é conhecer esses 20 caracteres e gerar a mesma chave. Essa chave nunca é armazenada diretamente e é gerada instantaneamente com base na entrada do usuário. Esses personagens estariam escondidos no jogo no que poderia ser livros, diálogo com os NPCs, talvez até mesmo fora do jogo na parte de trás da caixa.
Portanto, com 2 * 10 ^ 28 combinações possíveis para tentar, provavelmente seria mais provável que as pessoas encontrassem o conteúdo da maneira pretendida, em vez de olhar os dados do jogo.
Edição 2 : o conteúdo em questão seria criptografado com uma chave arbitrária e secreta antes de ser enviado ao consumidor. Obviamente, essa chave não será enviada com o jogo. Ele ou ela teria que, de alguma forma, reconfigurar a chave novamente, dada uma série de pistas feitas com base na chave e que estão ocultas ao longo do jogo ou em qualquer outro lugar. No entanto, esse sistema seria transparente para o usuário, pois você não saberia que o conteúdo foi criptografado, a menos que você realmente analisasse os dados do jogo.
Como muitos mencionaram, isso tem uma desvantagem óbvia, pois seu caso de uso é limitado. Uma vez que uma única pessoa tenha descoberto, ele / ela pode compartilhá-lo com todo mundo, se não a chave / solução, então o próprio conteúdo. No entanto, se sua intenção é manter algo tão secreto que uma única pessoa não consiga resolvê-lo e as pessoas tenham que trabalhar juntas para resolvê-lo, ou você tem medo de que seu ovo de páscoa esteja tão bem escondido (por design) que é mais provável que alguém o encontre no código durante o jogo. Então eu acho que isso poderia funcionar muito bem.
Pessoalmente, eu recomendaria usá-lo apenas uma vez por jogo e apenas para coisas que não afetam o jogo principal, como ovos de páscoa, um final secreto. Qualquer quebra-cabeça teria que ser tão complicado ou bem escondido para atrasar as pessoas o suficiente para fazer a criptografia valer a pena e se esse quebra-cabeça atrapalhasse o progresso das pessoas, provavelmente ninguém estaria se divertindo.