Aplicação java é segura?  XML
Índice dos Fóruns » Assuntos gerais (Off-topic)
Autor Mensagem
rocha
Virtual Machine Man
[Avatar]

Membro desde: 28/04/2003 10:23:56
Mensagens: 718
Localização: São José dos Campos e Poá - SP.
Offline

Olá pessoal, é o seguinte um amigo meu me questionou quanto a segurança do código de uma aplicação, dizendo que com progrmas que revertem os arquivos .class obtendo assim o código desta classe. Eu gostaria de saber como isso funciona.

Rocha

"As religiões formalistas tendem à fixação das crenças e à cristalização dos sentimentos; fossilizam a Verdade; desviam-se do serviço de Deus para o da Igreja; lutam entre si e entre os irmãos, em nome do amor, dando origem ao aparecimento das seitas e das divisões; estabelecem autoridades eclesiásticas pressivas; conduzem ao nascimento do falso estado mental aristocrático de povo eleito; mantêm ideias falsas e exageradas sobre a santidade; tornam-se rotineiras e petrificadas e acabam por venerar o passado, ignorando as necessidades do presente."

Rodrigo
http://www.rrochas.com.br
[Email] [WWW] [MSN]
Luca
Moderador
[Avatar]

Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline

Olá

Segura em que sentido? Com Java conseguimos fazer com relativa facilidade sistemas muito complexos com muitos milhares de instruções. Mesmo que um cara seja muito paciente para usar um decompiler e abrir o código fonte, ele ainda terá muitas dificuldades para usar. Aliás é assim que me sinto quando começo a trabalhar com código escrito por outros e sem documentação.

Há outras linguagens que a gente só consegue fazer uns sisteminhas simples que por serem compiladas são mais difíceis de abrir o código fonte. Mas na prática se consegue abrir o código do mesmo jeito.

Se tem preocupações quanto a segurança contrate um bom advogado e solicite um contrato adequado.

Este assunto já foi muito discutido aqui no GUJ, dê uma pesquisada.

[]s
Luca

Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."


CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/
[Email] [WWW]
andre_a_s
GUJ Ranger
[Avatar]

Membro desde: 23/02/2003 01:04:53
Mensagens: 755
Localização: Santo André(SP)
Offline

Use obfuscadores, eles "sujam" o codigo quando decompilado

Gosta de cerveja e de viagem?
Visite meu blog!
http://www.TravelAndBeer.com
[Email] [MSN] [ICQ]
smota
Moderador
[Avatar]

Membro desde: 21/02/2003 16:19:19
Mensagens: 1647
Offline

Funciona assim: vc pega um programinha desses, seleciona um .class ou vários e ele gera um arquivo(s) .java com o quase o código original.

Se você usar um obfuscador ele vai voltar o código tb, mas com nomes cabulosos e pequenas alterações, nada demais.

Por isso Java não é seguro, vou correndo tirar meu dinheiro do Banco do Brasil pq qualquer zé-mané pode fazer engenharia reversa no código deles e descobrir os ifs que tem por lá .. pensando bem vou tirar de qualquer banco porque a merda do banco central tb gosta de Java

"Perfection is reached not when there's nothing more to add but when there's no more to take out"
rocha
Virtual Machine Man
[Avatar]

Membro desde: 28/04/2003 10:23:56
Mensagens: 718
Localização: São José dos Campos e Poá - SP.
Offline

smota wrote:
Por isso Java não é seguro, vou correndo tirar meu dinheiro do Banco do Brasil pq qualquer zé-mané pode fazer engenharia reversa no código deles e descobrir os ifs que tem por lá .. pensando bem vou tirar de qualquer banco porque a merda do banco central tb gosta de Java

Smota eu não afirmei que java não é seguro estou querendo saber como isso funciona, pois me questionaram a seguinte situação, em um sw feito em java existe uma classe que cuida da validação do sistema, uma pessoa usa um decompiler conseguiria muito bem mudar o método q cuidada disso idaí como ficaria. Lembrando que qdo falamos da métodologia q hj é usada no planejamento das classes até facilia essa cituação pois provavelmente essa classe chamaria algo do tipo: Validacao ou tempoValidacao então a pessoa já teria um bom caminho bom onde começar, lembrando q este é apenas um exemplo.

Rocha

"As religiões formalistas tendem à fixação das crenças e à cristalização dos sentimentos; fossilizam a Verdade; desviam-se do serviço de Deus para o da Igreja; lutam entre si e entre os irmãos, em nome do amor, dando origem ao aparecimento das seitas e das divisões; estabelecem autoridades eclesiásticas pressivas; conduzem ao nascimento do falso estado mental aristocrático de povo eleito; mantêm ideias falsas e exageradas sobre a santidade; tornam-se rotineiras e petrificadas e acabam por venerar o passado, ignorando as necessidades do presente."

Rodrigo
http://www.rrochas.com.br
[Email] [WWW] [MSN]
Rubem Azenha
GUJ Master
[Avatar]

Membro desde: 28/06/2004 00:10:43
Mensagens: 1933
Localização: São Paulo, SP
Offline

eu tava pensando num jeito de criptografar um código fonte...



Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning
[WWW]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

rocha wrote:em um sw feito em java existe uma classe que cuida da validação do sistema, uma pessoa usa um decompiler conseguiria muito bem mudar o método


Até aí deve-se proteger as partes que fazem a validação. Por exemplo, se quer uma validação segura, ela deve ficar em um sistema central protegido, não na máquina do usuário.

Só para dar um exemplo: quando você se loga no mail.yahoo.com, por exemplo, todos sabem que o hash MD5 de sua senha é enviada via http (opcionalmente via https). É só ler o Javascript (não é nem Java, o código está lá pra todo mundo ver). Mas nem por isso o login é tão inseguro assim.
Para começar, a senha não é enviada em claro, nem criptografada com uma chave fixa; e o Yahoo guarda muito bem as senhas em alguma base bastante protegida.
Na verdade, o segredo não é esconder como é feita uma determinada coisa (alguém acaba sempre descobrindo...), mas sim esconder (proteger) apenas as partes que devem ser protegidas. Isso é um serviço para profissionais...


This message was edited 1 time. Last update was at 02/02/2005 17:14:23

[WWW]
rocha
Virtual Machine Man
[Avatar]

Membro desde: 28/04/2003 10:23:56
Mensagens: 718
Localização: São José dos Campos e Poá - SP.
Offline

thingol wrote:
Na verdade, o segredo não é esconder como é feita uma determinada coisa (alguém acaba sempre descobrindo...), mas sim esconder (proteger) apenas as partes que devem ser protegidas. Isso é um serviço para profissionais...


Ok concordo e nessa solução eu já tinha pensado só q existem profissionais e "profissionais", tem muita gente fq é mau carater e por qualquer merreca faria uma sacanagem de abriru um codio aleio para modificalo, imaginem eu aqui em SP vendo minha aplicação para um cara do RS daí o cara decide parar de me pagar um "profissional" (funcionário da empresa) vai decompila me código muda o método de validação daí como fica.

Rocha

"As religiões formalistas tendem à fixação das crenças e à cristalização dos sentimentos; fossilizam a Verdade; desviam-se do serviço de Deus para o da Igreja; lutam entre si e entre os irmãos, em nome do amor, dando origem ao aparecimento das seitas e das divisões; estabelecem autoridades eclesiásticas pressivas; conduzem ao nascimento do falso estado mental aristocrático de povo eleito; mantêm ideias falsas e exageradas sobre a santidade; tornam-se rotineiras e petrificadas e acabam por venerar o passado, ignorando as necessidades do presente."

Rodrigo
http://www.rrochas.com.br
[Email] [WWW] [MSN]
Luca
Moderador
[Avatar]

Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline

Olá

Este problema sempre existiu desde que apareceram os programas que editavam código binário nos primórdios do uso do PC. Mas como disse o Thingol, quem seria louco suficiente para deixar o código de validação aberto para olhos estranhos?

Mas há muitas maneiras de vc se defender.

Vou contar algumas que já usei:
- Esta usei há uns 10 ou 12 anos atrás. Calculei o CRC do total dos bytes do trecho da minha aplicação que não admitia modificação e coloquei dentro da aplicação uma verificação de CRC deste trecho. Isto era feito em vários lugares e da forma mais disfarçada possível.

- Como a solução anterior dava trabalho, em outras aplicações resolvi adquirir trava de hardware e lá fazer o controle.

- Em uma determinada aplicação que era alugada o cliente precisava solicitar mensalmente uma chave e um patch que era usado em um trecho do programa (isto hoje seria feito com java web start).

- Atualmente as aplicações web podem se autenticar no nosso servidor para obter a tal autorização.

[]s
Luca

Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."


CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/
[Email] [WWW]
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

Rocha, descompiladores existem para todas as grandes linguagem de programação que conheço.

E ofuscadores (obfuscator, google it) que já vi funcionam muito bem; ao descompilar as classes ofuscadas o código fica, além de ilegível, "errado". Nem compila de novo

Former LIPE.
[ICQ]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Só para você ter uma idéia. Algumas versões do JBuilder precisavam de uma chave de ativação, que era enviada via email (era uma chave enorme, acho que era uma assinatura digital.)

Um fulano qualquer simplesmente escreveu uma classe que você copia sobre a instalação do JBuilder e ele passa a não checar mais a chave de ativação. (Se bobear você também tem esse JBuilder piratado, não?)

Por isso é que o tal sistema tem de funcionar conectando-se periodicamente com um servidor seu, para pegar uma chave de ativação, e explodir se não conseguir se conectar. Tem gente também que vende aqueles "dongles", que são chaves de hardware que você liga na USB e que o software tem de ficar checando periodicamente se estão lá. (Obviamente já quebraram a segurança de muitos "dongles", portanto consulte antes de comprar)
[WWW]
Rubem Azenha
GUJ Master
[Avatar]

Membro desde: 28/06/2004 00:10:43
Mensagens: 1933
Localização: São Paulo, SP
Offline

acho que é por isso que o java pegou mesmo para a web e não para desktop...



Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning
[WWW]
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

Não acho não.

Na minha opinião não pegou porque Swing é difícil.
*lipe, que começou a tentar usar Swing*

Former LIPE.
[ICQ]
Rubem Azenha
GUJ Master
[Avatar]

Membro desde: 28/06/2004 00:10:43
Mensagens: 1933
Localização: São Paulo, SP
Offline

pow... nem é... só ter o javadoc na mão e mandar bala



Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning
[WWW]
Flin
Java Ninja

Membro desde: 10/12/2003 16:30:10
Mensagens: 263
Offline

Hey Luca, lembra do classloader que lia .class encriptografado?

Claro que dava pra desconpilar o classloader e etc.. etc.. etc... mas era algo bem complexo, foi divertido.

http://www.wayjobs.com.br - Busca de vagas e currículos 100% gratuito!
[WWW]
 
Índice dos Fóruns » Assuntos gerais (Off-topic)
Ir para:   
Powered by JForum 2.1.8 © JForum Team