Para chaves de CD da velha escola, era apenas uma questão de criar um algoritmo para o qual as chaves de CD (que poderiam ser qualquer sequência) são fáceis de gerar e fáceis de verificar, mas a proporção de chaves de CD válidas e CD inválidas -keys é tão pequeno que é improvável que você adivinhe aleatoriamente as chaves do CD para obter uma válida.
MANEIRA INCORRETA DE FAZER:
Starcraft e Half-life usaram a mesma soma de verificação, onde o 13º dígito verificou os 12 primeiros. Assim, você pode inserir qualquer coisa para os 12 primeiros dígitos e adivinhar o 13º (há apenas 10 possibilidades), levando ao infame1234-56789-1234
O algoritmo para verificação é público e é algo como isto:
x = 3;
for(int i = 0; i < 12; i++)
{
x += (2 * x) ^ digit[i];
}
lastDigit = x % 10;
MANEIRA CORRETA DE O FAZER
O Windows XP pega um pouco de informação, criptografa e coloca a codificação de letra / número em um adesivo. Isso permitiu à MS verificar sua chave e obter o tipo de produto (residencial, profissional etc.) ao mesmo tempo. Além disso, requer ativação online.
O algoritmo completo é bastante complexo, mas bem delineado neste documento (completamente legal!), Publicado na Alemanha.
Obviamente, não importa o que você faça, a menos que você ofereça um serviço on-line (como World of Warcraft ), qualquer tipo de proteção contra cópia é apenas um empate: infelizmente, se houver algum jogo que valha valor, alguém irá quebrar (ou pelo menos contornar ) o algoritmo da chave do CD e todas as outras proteções de direitos autorais.
Real maneira correta de fazê-lo:
Para serviços on-line, a vida é um pouco mais simples, pois mesmo com o arquivo binário, você precisa se autenticar com seus servidores para utilizá-lo (por exemplo, ter uma conta WoW). O algoritmo de chave de CD para World of Warcraft - usado, por exemplo, na compra de cartões de brincadeira - provavelmente se parece com isso:
- Gere um número aleatório criptograficamente seguro muito grande.
- Armazene-o em nosso banco de dados e imprima-o no cartão.
Então, quando alguém digitar um número de cartão de reprodução, verifique se ele está no banco de dados e, se estiver, associe esse número ao usuário atual para que ele nunca possa ser usado novamente.
Para serviços online, não há razão para não usar o esquema acima; usar qualquer outra coisa pode levar a problemas .