Pergunta

Minha empresa está olhando para começar a distribuir alguns softwares que desenvolvemos e gostaria de ser capaz de permitir que pessoas de experimentar o software antes de comprar.Também gostaríamos de certificar-se de que não podem ser copiados e distribuídos para os clientes dos nossos clientes.

Um modelo que vimos é amarrar uma licença para o endereço MAC de modo que o software irá funcionar apenas em uma máquina.

O que eu estou querendo saber é, o que é uma boa maneira de gerar uma chave de licença com diferentes informações incorporados, tais como data de expiração da licença, o endereço MAC, e diferentes restrições de software?

Foi útil?

Solução

Eu sugiro que você pegue os pedaços de informação que você deseja na chave, e o hash md5 e, em seguida, basta dar os primeiros caracteres X (onde X é o comprimento da chave que você acha que é administrável).

Criptograficamente, está longe de ser perfeito, mas é o tipo de área onde você deseja colocar a quantidade mínima de esforço que vai parar um casual invasor nada mais rapidamente se torna um buraco negro.

Oh, eu devo apontar também, você vai querer fornecer a data de validade (e quaisquer outras informações que você pode querer ler fora de si mesmo) em texto simples (ou um pouco ofuscado), como parte da chave de bem se você for por esse caminho, O md5 é apenas para deixar o usuário final de alteração, ele data de expiração para estender a licença.

A coisa mais fácil seria um arquivo de chave de como este...

# License key for XYZZY
expiry-date=2009-01-01
other-info=blah
key=[md5 has of MAC address, expiry date, other-info]

Outras dicas

Eu usei tanto FLEXlm da Macrovision (anteriormente Globetrotter) e o mais recente RLM da Reprise de Software (como eu entendo, escrito por FlexLM original autores).Ambos podem tecla desligar o endereço MAC físico ou um dongle, pode ser qualquer um de nós-bloqueado (ligada a uma máquina) ou "flutuante" (qualquer autorizado máquina da rede pode obter uma licença distribuía por uma central de servidor de licença, até um número máximo de simultaneamente check-out cópias determinado por quanto eles são pagos).Há uma variedade de maneiras flexíveis para configurá-lo, incluindo datas de vencimento, individual sub-licenciados recursos, etc.A integração de uma aplicação não é muito difícil.Estes são apenas os dois que eu usei, eu tenho certeza que existem outros que fazem o trabalho muito bem.

Estes programas são facilmente quebradas, o que significa que há exploits conhecidos que permitem que as pessoas ignoram a segurança do seu aplicativo que usa-los, seja pelo corte de suas próprias licenças para falsificar o servidor de licenças, ou simplesmente consertar o seu binário para ignorar a verificação de licença (essencialmente substituir a chamada de sub-rotina para a sua biblioteca com o código que diz apenas "return 'true'".É mais complicado que isso, mas isso é o que a maioria se resume a.Você vai ver rachado versões de seu produto lançado para vários sites Warez.Pode ser muito frustrante e desmoralizante, tanto mais porque eles estão frequentemente interessados em fissuras de craqueamento de amor, e não tem qualquer uso para o seu produto ou o conhecimento do que fazer com ele.(Isso é óbvio, se você tem um suficientemente programa especializado.)

Devido a isso, algumas pessoas vão dizer que você deve escrever o seu próprio, talvez até mesmo alterar o esquema de criptografia com freqüência.Mas eu discordo.É verdade que a realização de sua própria significa que exploits conhecidos contra FLEXlm ou RLM não instantaneamente trabalho para a sua aplicação.No entanto, a menos que você é um total especialista neste tipo de segurança (o que claramente você não está ou você não estaria fazendo a pergunta), é altamente provável que, em sua inexperiência, você vai acabar escrevendo um muito menos seguro e mais crackable regime de líderes de mercado (fraco, pois eles podem ser).

A outra razão para não rolar sua própria é simplesmente que é um interminável jogo de gato e rato.É melhor para os seus clientes e suas vendas para colocar o mínimo de esforço em licença segurança e gastar esse tempo de depuração ou adicionar funcionalidades.Você precisa se entender com o regime de licenciamento meramente como "manter as pessoas honestas", mas não impedindo que determinado rachaduras.Aceitar que as bolachas não teria pago o software de qualquer maneira.

Nem todo mundo pode tomar esse tipo de atitude zen.Algumas pessoas não conseguem dormir à noite sabendo que alguém em algum lugar está recebendo algo para nada.Mas tente aprender a lidar com ele.Você não pode parar os piratas, mas você pode equilibrar o seu tempo/esforço/despesas tentando parar todos os pirataria versus tomar o seu produto melhor para os usuários.Lembre-se, às vezes, o mais pirateado aplicações também são os mais populares e rentáveis.Boa sorte e dormir bem.

Temos utilizado o seguinte algoritmo em minha empresa por anos, sem um único incidente.

  1. Decidir os campos que você deseja no código.Bit-pack tanto quanto possível.Por exemplo, as datas poderiam ser "número de dias desde 2007," e, em seguida, você pode começar afastado com 16-bits.
  2. Adicionar um extra de "checksum" de campo.(Você vai ver por que em um segundo). O valor deste campo é uma soma de verificação da repleto de bytes a partir de outros campos.Utilizamos "primeiro de 32 bits a partir de MD5."
  3. Criptografar tudo, usando CHÁ.Para a chave, use algo que identifica o cliente (por exemplo,empresa de nome + e-mail pessoal), maneira que, se alguém deseja postar uma chave na interweb eles têm de incluir as suas próprias informações de contato em texto sem formatação.
  4. Converter de hexadecimal para uma seqüência de caracteres em alguma maneira sensata.Você pode fazer direto dígitos hexadecimais, mas algumas pessoas gostam de escolher um conjunto diferente de 16 caracteres para torná-lo menos óbvio.Incluir também traços ou algo regularmente, de modo a facilitar a leitura por telefone.

Para decodificar, converter de hexadecimal para cadeia e descriptografar com CHÁ.Mas, então, há essa etapa extra:Calcule o seu próprio soma de verificação dos campos (ignorando o campo checksum) e comparar com o dado da soma de verificação. Este é o passo que garante que ninguém mexeu com a chave.

A razão é que o CHÁ, mistura os bits completamente, de modo que se mesmo um bit é alterado, todos os outros bits são igualmente susceptíveis de alteração durante o CHÁ de descriptografia, portanto, a soma de verificação não vai passar.

É esta vulnerável a hackers?Claro!Quase tudo o que é, mas esta é apertado o suficiente e simples de implementar.

Se amarrando para informações de contato não é suficiente, em seguida, incluir um campo para o "Nó" IDENTIFICAÇÃO e bloqueio de endereço MAC ou algo do tipo como você sugere.

Não utilizar endereços MAC.Em algum hardware que testamos - em especial, alguns Thinkpads da IBM - o endereço MAC pode mudar em reiniciar.Nós não se preocupou em investigar por este foi, mas aprendemos muito cedo durante a nossa pesquisa não confiar nele.

Obrigatória de isenção de responsabilidade e ficha:a empresa que co-fundou produz o OffByZero Cobalto licenciamento solução.Portanto ele provavelmente não vai se surpreender ao ouvir que eu recomendo a terceirização de seu licenciamento, e foco em suas competências principais.

Sério, esse material é bem complicado acertar, e as consequências de o fazer de errado pode ser muito ruim.Se você está com baixo volume de preços elevados, algumas cópias piratas, foi seriamente dent sua receita, e se você estiver alto volume de baixo preço, então não há incentivo para que warez d00dz para quebrar o seu software para a diversão e a reputação.

Uma coisa para ter em mente é que não há tal coisa como realmente crack-prova de licenciamento;uma vez que alguém tenha o seu código de bytes em seu hardware, você tem dado a capacidade de controlar completamente o que fazer com ele.

O que um bom sistema de licenciamento faz é elevar a fasquia tão alta que compra seu software é uma opção melhor - especialmente com o aumento dos infectados com malware software pirata.Nós recomendamos que você tomar uma série de medidas no sentido de garantir a sua aplicação:

  • obter uma boa terceiros sistema de licenciamento
  • pimenta o seu código com o escopo de constantes verificações (e.g.não há uma variável global como fIsLicensed, não verificar o status de um recurso de perto o código que implementa a funcionalidade)
  • empregar graves de ofuscamento no caso de .NET ou Java de código

A empresa que eu trabalhei para realmente usou uma dongle usb.Este foi útil porque:

  • Nosso software também foi instalado no USB Stick
  • O programa seria executado apenas se achou a (única) chave de hardware (de qualquer padrão de chave USB tem isso, então você não tem que comprar algo especial, qualquer stick vai fazer)
  • não estava restrito a um computador, mas pode ser instalado em outro sistema, se desejado

Eu sei que a maioria das pessoas não gostam de dongles, mas, neste caso, foi bastante útil como ele foi realmente usado para um propósito especial media player que nós também entregues as chaves USB que pode ser usado como uma demonstração em qualquer pc, mas também, e sem quaisquer modificações, ser usado na aplicação real (ou seja, os jogadores reais), uma vez que o cliente ficou satisfeito

Nós mantê-lo simples:armazenamento de todos os dados de licença para um XML (fáceis de ler e gerenciar), criar um hash de todo o XML e, em seguida, cripta com um utilitário (também própria e simples).

Este também está longe de ser perfeito, mas pode manter por algum tempo.

Quase todos os comerciais de licença de sistema tem sido rachado, temos usado a muitos anos todos, eventualmente, ficar rachado, a regra geral é a de escrever o seu próprio, alterá-lo a cada lançamento, uma vez que o seu happy tente quebrá-lo você mesmo.

Nada é realmente seguro, em última análise, olhar para os grandes jogadores do Microsoft etc, eles vão com o modelo de pessoas honestas vai pagar e outros copie, não colocar muito esforço para isso.

Se você está de aplicação vale a pena pagar por pessoas.

Eu tenho usado um número de diferentes produtos que a licença de geração e de ter criado a minha própria solução, mas ele vem para baixo para o que vai dar a você mais flexibilidade, agora e para baixo da estrada.

Tópicos que você deve se concentrar para gerar suas próprias chaves de licença são...

HEX formatação, criptografia de curva elíptica, e qualquer um dos algoritmos de criptografia, como o AES/Rijndael, DES, Blowfish, etc.Esses são ótimos para a criação de chaves de licença.

É claro que não é o suficiente para ter uma chave, você também precisa associar-se a um produto de programa e o aplicativo para bloquear com base em um sistema de chave que você criou.

Eu brinquei com a criação da minha própria solução, mas no final, quando ele veio a ganhar dinheiro com o software que eu tinha a caverna e obter uma solução comercial que iria me poupar tempo na geração de chaves e a gerir a minha linha de produtos...

O meu favorito até agora tem sido Licença Abóbada de SpearmanTech mas eu também tentei FlexNet (caro), XHEO (de forma demasiada necessidade de programação), e SeriousBit Ellipter.

Eu escolhi a Licença Vault no final, porque eu iria buscá-lo para muito mais barato do que os outros, e ele simplesmente tinha muito mais para me oferecer como nós fazemos a maior parte do nosso trabalho .NET 3.5.

É difícil fornecer uma boa resposta, sem saber nada sobre seu produto e seus clientes.Para a empresa de software vendidos para pessoas técnicas, você pode usar um sistema bastante complexo sistema de licenciamento e eles vão descobrir isso.Para o consumidor software vendido para o mal conhecimentos de informática, você precisa de um muito mais simples do sistema.

Em geral, eu já adotou a prática de fazer um sistema muito simples que mantém as pessoas honestas.Qualquer pessoa que realmente quer roubar o seu software vai encontrar uma maneira de contornar qualquer sistema DRM.

No passado eu usei Tatu (agora Software Passaporte) para projetos C++.Eu estou usando atualmente, XHEO para projetos C#.

Se o seu produto requer a utilização de internet e, em seguida, você pode gerar um id exclusivo para o computador e utilizar o que a seleção com uma licença de serviço da web.

Se não, eu acho que vai com um produto comercial, é o caminho a percorrer.Sim, eles podem ser hackeados, mas para a pessoa que está absolutamente determinado a atacá-lo, é improvável que alguma vez teria de pagar.

Temos usado: http://www.aspack.com/asprotect.aspx

Nós também usamos uma função chamada em seu sdk produto que nos dá um id único para uma máquina.

Boa companhia, embora claramente não falantes nativos de inglês desde o seu primeiro produto foi chamado de "AsPack".

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