|
Quando desenvolvemos um sistema seguro, temos que
supor que todas as pessoas possuem o c�digo fonte do sistema. Assim, se seu programa est� seguro somente enquanto o
.class n�o for decompilado, ent�o n�o h� seguran�a nenhuma!
Falando em autentica��o de senha... o m�todo com
Message Digest (MD5, SHA-1, etc..) � muito interessante, pois o server pode
autenticar o cliente sem mesmo saber a senha... Mas cuidado! se o cliente
calcula o digest e envia ao servidor.. basta um usu�rio "malicioso" conhecer o digest do cliente (interceptando mensagens, etc..),
e ele (o usu�rio malicioso) pode simplesmente enviar diretamente o
digest pro servidor, conseguindo uma autentica��o, mesmo sem saber a
senha.
Isto pode ser resolvido se o servidor souber sim a
senha. Ent�o o cliente faz um digest com a senha junto com um n�mero aleat�rio
(por exemplo), e evia pro servidor o digest e o n�mero. O servidor por sua vez,
pega o n�mero aleat�rio que o cliente enviou e faz um digest com a senha do
cliente. Se o digest do servidor der igual ao digest do cliente, ent�o o cliente
estar� autenticado. O �nico problema � que o servidor vai ter que saber as
senhas dos clientes.. e a� vc teria que pensar num modo de garantir que as
senhas estejam seguras no lado servidor.
Luiz Felipe Molina.
----- Original Message -----
Sent: Sunday, May 12, 2002 12:26 AM
Subject: Re: [java-list] Password
Paulo,
o que exatamente voc� n�o pode gravar no .class?
A senha?
O que voc� poderia estar fazendo seria utilizar
um algoritmo de criptografia para cifrar a senha antes de grav�-la no
arquivo e decifr�-lo ao efetuar a conex�o com o banco de dados. Claro que n�o
poderia ser um algoritmo f�cil de ser descoberto, voc� poderia ofuscar a
classe para dificultar um pouco as coisas.
Algo mais sofisticado seria usar um algoritmo que
use chaves sim�tricas e al�m de guardar a chave usada no .class, guard�-la
tamb�m em um local seguro para ser usada sempre que a senha for trocada. O uso
de chaves assim�tricas n�o traz nenhuma real vantagem, fora a desnecessidade
de grande seguran�a para guardar a chave a ser usada para cifrar a
palavra.
Bem, tudo isso n�o vai te proteger totalmente,
nada impede que um bom conhecedor de Java decompile a sua classe e descubra
como funciona o mecanismo, mesmo que ela esteja ofuscada (para tal esfor�o
provavelmente seria algu�m mal intencionado). Mais do que uma criptografia, �
necess�ria uma pol�tica de seguran�a, que impe�a o acesso ao sistema nos
n�veis de hardware e software e que tamb�m involva as pessoas da
empresa.
Samuel
----- Original Message -----
Sent: Friday, May 10, 2002 10:01
AM
Subject: Re: [java-list] Password
ola ALL,
Obrigado pela ajuda. O meu
problema � que preciso gravar a senha de acesso ao banco em um arquivo
.properties por exemplo. Pois minha aplicacao lera desse arquivo para
conectar ao banco. Isso que vc falou est� correto para os demais usu�rios,
mas e o user que se logar� no banco como proceder? Eu nao posso deixar
gravado dentro do .class, pois trata-se de uma aplicacao comercial, entao
como fazer? Quero pegar a senha, criptografa-la, grava-la em um .properties,
e quando precisar acessar o banco, ler o arquivo, descriptografar a senha,
autenticar no banco.
Caso
vc tenha QUALQUER ajuda/exemplo agrade�o muito.
"Valeu ;) "
Atenciosamente PAULO BRANCO DIRETIVA DIGITAL
Garante sim.
A fun��o
hash funciona assim: Dado um texto de entrada, uma sa�da � gerada. A
partir da sa�da, � imposs�vel se chegar novamente ao texto da entrada.
Mas dada a mesma entrada, a mesma sa�da � gerada. Se vc aplica essa
fun��o na senha do usu�rio quando o est� cadastrando ou trocando de
senha, o que fica guardado � essa sa�da, que n�o significa nada
para ningu�m que venha a pegar esse arquivo. Quando o usu�rio vai
logar, vc aplica a fun��o na entrada dele e, se bater o resultado com o
que est� guardado, ele bateu a senha correta. Esse tipo de
autentica��o � usado no UNIX.
JP
---
[EMAIL PROTECTED] wrote: > Mas Marco, na realidade esse
algoritmo nao garante >
seguranca nenhuma, ou > nao? > Como gravar em um arquivo essa
"password" se quando > transformada em string > fica
identica? > > Atenciosamente > PAULO BRANCO >
DIRETIVA DIGITAL > > > > > "Marco Aurelio
Vilela Garcia" <[EMAIL PROTECTED]> > 06/05/2002 12:54 >
Please respond to java-list > > >
To: <[EMAIL PROTECTED]> >
cc: >
Subject: Re: [java-list] Password >
> > Caro Matheus; > No caso de criptografar uma senha,
eu sugiro que n�o > utilize nada para > criptografia. A
documenta��o ainda est� fraca, pois > a API de criptografia >
foi liberada para usu�rios fora dos EUA h� muito > pouco tempo. �
poss�vel > obter uma funcionalidade parecida usando um digesto >
de mensagem. > O procedimento � o seguinte: uma classe ir�, a >
partir da sua senha, criar > uma string que parece ser criptografada.
Mas n�o se > trata de criptografia, > � > apenas uma
forma de autentica��o. Eu estou usando > isso para armazenar >
senhas > numa base de dados. Estou satisfeito at� agora. >
> Logo abaixo escrevo um c�digo para vc experimentar. >
> Abra�os > Marco > > > > import
java.security.*; > > /** > * @author
Marco Aur�lio Vilela Garcia > * @version 1,0 >
*/ > public final class PasswordEncDec { > >
public static String cryptSenha(String senha){ >
try{ >
MessageDigest md = > MessageDigest.getInstance("SHA"); >
byte[] buf = senha.getBytes(); >
md.update(buf); >
byte[] digest = md.digest(); >
> return new
String(digest); > } >
catch(NoSuchAlgorithmException nsae){ >
> System.err.println("==============================================="); >
> System.err.println("==============================================="); >
System.err.println("
Erro > acontecendo no > PasswordEncDec"); >
System.err.println("
M�todo > cryptSenha "); >
System.err.println("Exce��o: "+
nsae); >
> System.err.println("==============================================="); >
> System.err.println("==============================================="); >
return null; >
} > } > } > > >
> ----- Original Message ----- > From: "MATHEUS Fabio O
CONFAB" > <[EMAIL PROTECTED]> > To:
<[EMAIL PROTECTED]> > Sent: Monday, May 06, 2002 8:54
AM > Subject: [java-list] Password > > >
Pessoall, > > Algu�m teria um exemplo simples de criptografia
de > uma string, ou > simplesmente s� o algoritimo?? >
Qquer ajuda seria importante.. > > Grato e boa semana! >
F�bio Oliveira Matheus > Confab Industrial S/A. - Depto.
Sistemas > Pindamonhangaba - S�o Paulo - Brasil > E-Mail:
[EMAIL PROTECTED] > Fone: 12-244-9316 Fax:
12-244-9304 > > > >
------------------------------ LISTA SOUJAVA >
---------------------------- > http://www.soujava.org.br -
Sociedade de Usu�rios > Java da Sucesu-SP > d�vidas mais
comuns: > http://www.soujava.org.br/faq.htm > regras da
lista: > http://www.soujava.org.br/regras.htm >
historico: > http://www.mail-archive.com/java-list%40soujava.org.br >
para sair da lista: envie email para >
[EMAIL PROTECTED] > ------------------------------------------------------------------------- >
> > > ------------------------------ LISTA
SOUJAVA > ---------------------------- >
http://www.soujava.org.br - Sociedade de Usu�rios > Java
da Sucesu-SP > d�vidas mais comuns: >
http://www.soujava.org.br/faq.htm > regras da lista: >
http://www.soujava.org.br/regras.htm >
historico: > http://www.mail-archive.com/java-list%40soujava.org.br >
para sair da lista: envie email para >
[EMAIL PROTECTED]
> ------------------------------------------------------------------------- >
> > > >
__________________________________________________ Do You
Yahoo!? Yahoo! Health - your guide to health and
wellness http://health.yahoo.com
------------------------------
LISTA SOUJAVA ---------------------------- http://www.soujava.org.br
- Sociedade de Usu�rios Java da Sucesu-SP d�vidas mais
comuns: http://www.soujava.org.br/faq.htm regras da lista:
http://www.soujava.org.br/regras.htm historico:
http://www.mail-archive.com/java-list%40soujava.org.br para sair da
lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------
|