-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Argeu Carlos Thiesen wrote:
>Na m�quina X, o usu�rio root tem a senha 'exemplo', que gerou no arquivo
>/etc/shadow uma "senha" criptografada como '12345'

ok.

>Na m�quina Z, o usuario teste tem a senha 'exemplo', que gerou no
>arquivo /etc/shadow uma "senha" criptografada como 'qwerty'

ok, normal.

>Copiei  da maquina X, o '12345' do usuario root e colei para o usuario
>banana na maquina Z.
>
>Ao me autenticar como banana na maquina Z, usando a senha 'exemplo', me
>autentiquei sem problemas.

ok, normal.

>Realmente n�o conhe�o dos processos de criptografia, mas sendo que a
>mesma string que uso pra senha gera um resutado diferente depois da
>criptografia para o mesmo usu�rio pergunto... como pode uma string
>gerada por uma senha na maquina X para o usuario fulano, funcionar sem
>problemas para o usuario beltrano na maquina Z ?

Uma mesma senha pode gerar v�rios resultados criptografados. N�o h� 
segredo nenhum nisso.

Vamos pelo caso mais simples: senhas DES. O resultado que voc� v� da senha 
criptografada no /etc/shadow � mais do que a pr�pria senha que voc� 
digitou. O DES permite que voc� escolha uma de 4096 possibilidades de 
criptografias da senha.

A�, o que escolheram foi pegar dois caracteres que, juntos, formam 4096 
combina��es (64 possibilidades por caracter, 64 * 64 = 4096). Esses dois 
caracteres s�o chamados de "sal".

O processo de auto-criptografia da senha pega a senha e o sal e junta 
tudo, dando um resultado. Para verificar se a senha est� correta, voc� 
pega o mesmo sal e a senha digitada. Se o resultado for o mesmo, a senha 
est� digitada.

A� voc� me pergunta: onde � gravado o sal? A resposta: na pr�pria senha 
criptografada: s�o os dois primeiros caracteres.

Exemplos:
$ perl -e 'print crypt("senha","ab")'
abZuduP4nUHHM

$ perl -e 'print crypt("senha","cd")'
cdCDao1aS20CQ

$ perl -e 'print crypt("senha","ef")'
efF7y1Cz10DPw

$ perl -e 'print crypt("senha2","ab")'
abYqY77L1j2WA

$ perl -e 'print crypt("senha3","ab")'
abcjckdHH71m2

Verificar se "senha" � a senha correta para a senha criptografada 
"abZuduP4nUHHM":
$ perl -e 'print crypt("senha","abZuduP4nUHHM")'
abZuduP4nUHHM

Isso que expliquei acima vale para DES. Para senhas MD5, o sal � um pouco 
mais longo, mas � basicamente a mesma coisa:
$ perl -e 'print crypt("senha","\$1\$ab")'
$1$ab$qLsFqeuUdaC/dJ2DtRSRC0

$ perl -e 'print crypt("senha","\$1\$cd")'
$1$cd$i6jrfcmwRA.9iyHbzqUoU.

Exerc�cio: gerador de senhas (e sais) aleat�rio:
dd if=/dev/random bs=1 count=12 2>/dev/null | \
openssl base64 | \
perl -pe \
  '/^(......)(.*)$/; 
   print "Senha para $2 �: "; 
   print crypt($2, "\$1\$$1");'

Rodando cinco vezes:
Senha para f3iDyv �: $1$ORIYBW$QY/CvRSg36txhrHEgOCUX1ORIYBWf3iDyv
Senha para RGdTv+ �: $1$7UCr8p$blIyKplr3w2W4LcLmxIDS07UCr8pRGdTv+
Senha para 5mCtNf �: $1$NqznS+$AiHXbeUnEOVEGDIMbRuh00NqznS+5mCtNf
Senha para 45d/n6 �: $1$4oRTaT$PkHZKisVJcFSByYqAjKG5.4oRTaT45d/n6
Senha para LUKJqY �: $1$RLAtpW$TthlckYtoeqMRalyDZwM5/RLAtpWLUKJqY

Pode ser �til para gerar senhas para usu�rios.

- -- 
  Thiago Macieira  -  Registered Linux user #65028
   thiago (AT) macieira (DOT) info
    ICQ UIN: 1967141   PGP/GPG: 0x6EF45358; fingerprint:
    E067 918B B660 DBD1 105C  966C 33F5 F005 6EF4 5358
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.6 (GNU/Linux)

iD8DBQFBpSv4M/XwBW70U1gRApGQAJsE3LZT9QLWRgkdDBXFzxU//tOl7wCeMQYT
8PpBntU+DDKEnM/rZZu0HIc=
=p7GR
-----END PGP SIGNATURE-----
---------------------------------------------------------------------------
Esta lista � patrocinada pela Conectiva S.A. Visite http://www.conectiva.com.br

Arquivo: http://bazar2.conectiva.com.br/mailman/listinfo/linux-br
Regras de utiliza��o da lista: http://linux-br.conectiva.com.br
FAQ: http://www.zago.eti.br/menu.html

Responder a