Olá amigos do GUJ. Na empresa em que trabalho, fui solicitado a desenvolver um esquema para evitar a utilização indevida de um software desktop. Pensei em algumas possibilidades, e tirando a última, nenhuma seria muito difícil de implementar. O caso na verdade é sobre a viabilidade de cada uma delas. Sei que isso depende do projeto e do modelo de negócios sobre o sistema, mas se vcs puderem dar algumas idéias e sugestões ajudaria bastante. As formas que pensei foram as seguintes:
1 - Validar só uma vez ao instalar com uma chave única por cliente
Vantagens: O cliente não fica dependente do fornecedor, podendo reinstalar o software quando se fizer necessário (formatação, troca de máquina, etc.)
Desvantagens: extremamente fácil de piratear, bastando repetir a chave em cada instalação
2 - Validar só uma vez ao instalar com uma chave aleatória em cada instalação (o sistema gera uma chave e o cliente precisa contatar o fornecedor para obter a contra-chave)
Vantagens: usuários leigos terão um pouco mais de dificuldade em usar cópias piratas
Desvantagens: para piratear basta copiar a base de dados, replicar em outras máquinas e mudar o conteúdo de acordo com a empresa que estiver usando. Esta desvantagem também se aplica à primeira forma
3 - Validar todo mês de forma “silenciosa” pela Internet
Vantagens: não incomoda o cliente e este poderá reinstalar sua cópia sempre que precisar sem ficar dependente do fornecedor
Desvantagens: se ele não usar Internet na máquina na qual o sistema estará rodando, ou bloquear com um firewall o acesso do programa à Internet, poderá usar em diversas máquinas
4 - Validar todo mês (ou em outro intervalo de tempo) de forma obrigatória pela Internet
Vantagens: acredito que torne muito mais difícil o uso indevido, pois um servidor do fornecedor poderá validar se existem licenças duplicadas e no caso bloquear ambas, obrigando o cliente a entrar em contato para liberar o acesso
Desvantagens: requer que o cliente se conecte todo mês pelo menos uma vez na Internet para validar a licença e prende o cliente ao fornecedor mesmo após ele ter comprado o software. Nesse caso, acho que esse modelo se aplica bem apenas em caso de aluguel do sistema
5 - Validar todo mês com uma contra-chave (uma vez por mês o sistema gera uma chave aleatória e o cliente tem que contatar o fornecedor para obter a contra-chave)
Vantagens: acho tão eficiente quanto o anterior, e não requer Internet. Porém, só se aplica a uma quantidade pequena de clientes, pois com muitos seria difícil gerir
Desvantagens: também prende o cliente ao fornecedor, sendo mais interessante para o modelo de aluguel
6 - Validação por hardware
Detectar dados do hardware (HD ou MAC por exemplo) e não permitir a cópia para outra máquina após o sistema ter sido instalado na primeira máquina. Ex.: Comprei, instalei na minha máquina e entrei com a licença. A partir daí se eu tentar copiar a base de dados para outra máquina ela já terá o registro dos dados da máquina antiga e não permitirá a execução.
Vantagens: obriga o uso em apenas uma máquina por cada licença
Desvantagens: se o cliente trocar de HD ou placa de rede terá que contatar o fornecedor. Se fosse tratar pelo HD teria que usar JNI eu acho.
Bom, é isso! Sei que não há solução perfeita para esse assunto, se houvesse não haveria pirataria! rsrs
Mas se alguém puder dar opiniões a respeito, ou tiverem outras idéias ficarei muito agradecido.
[]'s
Fred