Pergunta

Eu gostaria de distribuir um aplicativo, mas tem chave de licença que eles podem entrar para desbloqueio. O que é um bom algoritmo para criar uma chave concisa que contém informações sobre qual versão de terem comprado, bem como as coisas adicionais, tais como duração da licença, etc.

Eu percebo essa proteção pode ser quebrada, mas ele mantém as pessoas honestas. I pode ou não implementar a ativação on-line, mas eu estou preocupado principalmente com uma boa maneira de gerar essas chaves.

Todos nós já vimos essa situação, o algoritmo funciona melhor? Devo pedir um nome de texto simples do usuário e usar isso para criar uma chave de produto único baseado fora de suas próprias informações?

Existe um sistema que pode ser usado para torná-lo quase impossível para gerar uma chave válida?

Talvez uma situação de criptografia / par de chaves público-privada onde apenas o fabricante tem a chave privada e os dados podem ser validados por uma chave pública, mas a chave pública não pode ser sequestrado para criar chaves válidas.

Como esta é uma chave de produto, seria ótimo se fosse bastante curto, 64 caracteres ou talvez 128 max, mas o mais curto melhor, 32 ou menos seria ótimo.

Foi útil?

Solução

Você não disse que plataforma você está, mas aqui está uma em Microsoft .Net:

http://jclement.ca/devel/dotnet/reallysimplelicensing.html

Esta página documenta uma forma muito simples licenciamento esquema que você pode usar com sua aplicação .NET. Pretende-se a ser bastante seguro, fácil de implementar e fácil de estender. A versão de amostra permite fornecer arquivos de licença com um nome de cliente embutido neles mas você pode facilmente estender-se adicionar outras informações de identificação, máquina ligações, datas de validade, etc.

Este esquema faz uso de Microsoft de biblioteca RSA e Assinatura XML. Basicamente você colocar o que quiser em um XML Documento e assinar esse documento. Então você pode fornecer o arquivo para o seu cliente eo aplicativo pode ler as informações de licença fora dessa Arquivo. Como o arquivo é digitalmente assinou o arquivo de licença não pode ser adulterado a menos que você liberar o seu chave privada (que você realmente não deve fazer).

Outras dicas

Acesso à Internet Sem e disparou Chaves

Com relação ao tamanho chave de série, há um trade-off entre as teclas legíveis curto / humanos ( menos segura ) e ter chaves longas ou possivelmente arquivos de licença ( mais seguro ).

Se você quiser teclas legíveis curtas e humanos que lhe permitem armazenar coisas, como data e características de vencimento, você poderia usar SKGL juntamente com Software Protector, que são ambos de código aberto ( https://help.cryptolens.io/faq/what-is-skgl ).

No entanto, a desvantagem é que eles provavelmente irão usar criptografia simétrica e / ou armazenar o algoritmo de geração de chaves dentro do aplicativo. Isso significa que o usuário final pode tentativa de encontrar a chave de criptografia e / ou o algoritmo (ver http://www.codeproject.com/Articles/764610/Licensing-systems-in-NET ).

Acesso à Internet (ou offline com arquivos de ativação)

A melhor alternativa é usar um sistema baseado em nuvem que mantém o controle de todas as chaves de licença e permite que você modificá-los a qualquer momento.

Se você tem um sistema de licenciamento baseado na web, você pode manter as chaves mais curto e não tem que armazenar informações dentro da chave real (que é o caso com a maioria dos sistemas baseados offline).

Além disso, você vai ser capaz de suportar modelos mais de licenciamento, por exemplo, o modelo baseado em assinatura.

As soluções são:

  • construir tal sistema se -., Que vai ter um monte de tempo e distraí-lo a partir do núcleo apresenta do aplicativo

  • usar um sistema de código aberto existente como ponto de partida - embora possa ser tentador, já que é de código aberto e gratuito, que vai levar tempo para trazê-los para a nuvem + configure -lo às suas necessidades particulares + mantê-lo. os sistemas de código aberto que eu observados tendem a ser muito amplo em termos de funcionalidade, o que contribui para a complexidade.

  • terceirizar a terceiros -. A desvantagem é que a maioria deles não são gratuitos

Em minha mente, todo o procedimento deve ser terceirizado para um terceiro que é especializada no desenvolvimento desse componente particular. Uma vez que você escala, pode ser necessário mudar a lógica de licenciamento. Em vez de desenvolvê-lo a si mesmo, as chances são de que o terceiro já suporta esse cenário.

Existem várias soluções lá fora ( certifique-se de olhar para aqueles que são baseadas na web ), Cryptolens é um exemplo. Se você estiver desenvolvendo um aplicativo .NET, aqui é exemplo passo a passo: https: // ajuda. cryptolens.io/examples/key-verification .


Aviso :. Eu sou o autor de SKGL / Software Protector, o artigo sobre sistemas de licenciamento, e Cryptolens

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top