Java Direito de Distribuição e Uso... tem como?

Como proteger o direito de distribuição e uso de uma aplicação em java…

em VB e DELPHI existiam “n” componentes…

Existe alguma solução para isso em JAVA?

Eu pensei em criar uma CLASSE para comparar o número de série do HDD, assim eu compilava o projeto/web só para determinado HD…

Gostaria de saber se em java existe alguma solução para proteção dos direitos de distribuição e uso… existe???

up…

Será que alguém pode dar uma dica…

http://www2.safenet-inc.com/br/products_index.asp

Precisa obfuscar o código também, para que não seja tão fácil fazer engenharia reversa. Bytecodes são facilmente decompilados.

[quote=java]Como proteger o direito de distribuição e uso de uma aplicação em java…

em VB e DELPHI existiam “n” componentes…

Existe alguma solução para isso em JAVA?

Eu pensei em criar uma CLASSE para comparar o número de série do HDD, assim eu compilava o projeto/web só para determinado HD…

Gostaria de saber se em java existe alguma solução para proteção dos direitos de distribuição e uso… existe??? [/quote]

Não se iluda - e isto vale para todos - que algum código irá proteger a sua aplicação. Todo o código é hackeável. É só uma questão de tempo.
Em java, ofuscar o codigo atrapalha, mas não impede.

A única forma real e concreta de proteger os seus direitos é pela redação de um contrato em que ambas as partes concordam.
Não existe outra forma.

[quote=sergiotaborda][quote=java]Como proteger o direito de distribuição e uso de uma aplicação em java…

em VB e DELPHI existiam “n” componentes…

Existe alguma solução para isso em JAVA?

Eu pensei em criar uma CLASSE para comparar o número de série do HDD, assim eu compilava o projeto/web só para determinado HD…

Gostaria de saber se em java existe alguma solução para proteção dos direitos de distribuição e uso… existe??? [/quote]

Não se iluda - e isto vale para todos - que algum código irá proteger a sua aplicação. Todo o código é hackeável. É só uma questão de tempo.
Em java, ofuscar o codigo atrapalha, mas não impede.

A única forma real e concreta de proteger os seus direitos é pela redação de um contrato em que ambas as partes concordam.
Não existe outra forma.[/quote]

Na minha opinião o que impede alguém de hackear o produto é o custo benefício. Enquanto for caro para hackear(tempo, etc…) seu produto está protegido.

[quote=juliocbq][quote=sergiotaborda][quote=java]Como proteger o direito de distribuição e uso de uma aplicação em java…

em VB e DELPHI existiam “n” componentes…

Existe alguma solução para isso em JAVA?

Eu pensei em criar uma CLASSE para comparar o número de série do HDD, assim eu compilava o projeto/web só para determinado HD…

Gostaria de saber se em java existe alguma solução para proteção dos direitos de distribuição e uso… existe??? [/quote]

Não se iluda - e isto vale para todos - que algum código irá proteger a sua aplicação. Todo o código é hackeável. É só uma questão de tempo.
Em java, ofuscar o codigo atrapalha, mas não impede.

A única forma real e concreta de proteger os seus direitos é pela redação de um contrato em que ambas as partes concordam.
Não existe outra forma.[/quote]

Na minha opinião o que impede alguém de hackear o produto é o custo benefício. Enquanto for caro para hackear(tempo, etc…) seu produto está protegido.[/quote]

O que significa que ele nunca está realmente protegido. É cmo vc dizer que a sua casa está protegida porque a janela é alta. Ocara uma escada.
Vc poe a janela mais alta, o cara usa um gindastre. Vc poe ainda mais alta o cara usa uma asa-delta. Não ha limite para o quão alto vc pode por a janela, e não ha limite para as formas de chegar a ela.

O ponto é: assim que o cara tentar entrar ele está desrespeitando a lei. Ele não precisa conseguir para estar violando a lei.

Mecanismos de software podem evitar que o cara entre por um tempo, mas não que ele tente. é o tentar e não o conseguir que viola o acordo comercial.A licença (a lei) é a unica coisa que - independentemente das condições da sua janela ou do acesso dele - vai proteger vc contra a tentativa.

mecanismos de log sofisticados são muito mais importantes que mecanismos de licença “involável”. Porque vc quer provar que ele tentou.

É como a etiqueta que diz “Void if removed” que significa “se vc tirar isto, sua garantia expira automaticamente”. É apenas uma etiqueta de papel que testa se o cara tentou entrar. Se ele tentar, já era. Não importa se consegui.

Não existe forma programática de impedir o hack, apenas de o dificultar.
Mas a lei, é a forma sempre possivel de punir o hacker.

Acho que o ponto em questão do dono do topico não é proteção contra hakers, mas como licenciar um software, claro que todos sabemos que todo software pode ser hakeado. Eu mesmo tenho muitas duvidas sobre esse assunto, tipo criar um software que tenha limitações de licença, ou que seja instalado so em uma estação ou diversos outros tipos de controles. Se alguem puder nos dar uma dica sobre isso (Independente se vai ser hakeado ou não) eu ficaria grato.

Hackear = modificar, explorar

Portanto o seu software está sendo hackeado se você restringe o uso a 3 máquinas, por exemplo, e alguém o modifica para usar em 500 máquinas. Você e o Sérgio estão falando sobre a mesma coisa. Você só não percebeu ainda.

Vou repetir, não é por que o meu software pode ser hakeado que eu vou deixar ele livre sem nenhum tipo de controle feito por mim, eu faço a minha parte e o problema é de quem hakear, e apenas o que eu quero saber como fazer e colocar um controle para isso, tipo licença, serial ou etc… independente se vai ser hakeado ou não. Não me entenda mal mas é que isso é uma questão que eu procuro a um bom tempo e não consigo uma resposta clara e objetiva.

Uma resposta bem objetiva : faça uma API de controle de licença e use-a.

Eu tenho a mesma opinião. Muitas aplicações precisam de controle de licença. E portanto é preciso esse tipo de API em aplicações comerciais. É por isso que desenhei uma para o MiddleHeaven . A API de Licenciamento do MiddleHeaven está em desenolvimento, mas a ideia é criar uma classe que é um provedor de licença. Essa classe é serializada e encriptada. Para funcionar a empresa precisa ter duas coisas um arquivo com a chave da licença (que é uma chave de criptografia de 2 chaves) e o arquivo que é o provedor de licença. Um classloader especial usa a chave para carregar o arquivo.

O controle de licença do Middleheaven não usa boleanos, usa exceções. Isso porque é mais fácil driblar boleanos.
Uma licença corresponde a uma feature e vc pede pelas features ao provedor. Se ela não existir na licença uma exceção é lançada. As features podem ter controle de quantidade.
O controlede usuários, por exemplo, é feito pedindo por uma feature digamos “feature.login”. quando o usuário A pode isso, a licença diminui um das features “feature.login” disponiveis. Digamos que o sistema tem licença para 5 usuários. quando o sexto pedir a feature, dá exceção. Quando faz o logout, a licença da feature é devolvida ao provedor.

Como o provedor é uma classe, em tese ele pode manipular coisas como por exemplo deletar a chave criptografica quando a licença expira ou consultar com um provedor de licenças via rede , etc…
Até agora este é o modelo mais flexivel, mas ainda não o pus à prova.