Armazenamento de senhas no Linux

Você sabe como são armazenadas as senhas no Linux? O que é e para que serve o salt number? O que é MD5? Este artigo não pretende ir muito a fundo no mundo da criptografia, mas sim explicar os conceitos necessários para entender o arquivo de senhas, os reais ataques. Quem programa para a WEB poderá achar este artigo além de curioso, muito útil!

[ Hits: 246.054 ]

Por: Elgio Schlemer em 08/02/2008 | Blog: http://gravatai.ulbra.tche.br/~elgio


Armazenando senhas com segurança



A solução é óbvia: ao invés de armazenar uma senha eu armazeno o HASH dela.
Jamais armazeno a senha.

As vantagens são muitas pois nem mesmo o root sabe a senha de um usuário. Ele tem poderes para sobrescrevê-la mas não para saber qual era.

Para exemplificar e antes de falar como isto realmente fora implementado no Linux, vou dar novamente um exemplo hipotético usando MD5 que todos podem reproduzir em seus Linux, em uma shell.

Meu arquivo de senhas é:

login:HASH:Nome:HOME:BASH

Usuário Elgio está cadastrado e vai cadastrar a sua senha:

Changing password for elgio
(current) UNIX password:

Elgio digita como senha "Ola345". O Sistema Operacional calcula o hash de “Ola345”. Vamos calcular assim:

$ echo "Ola345"|md5sum
2d3956215ec2d09484165c0d5261303c

Está ai o hash. O sistema armazena:

elgio:2d3956215ec2d09484165c0d5261303c:Elgio Schlemer:/home/elgio:/bin/bash

Em algum momento o Elgio vai se autenticar e fornecer a sua senha. Veja que nem o Linux sabe qual é a senha. A única coisa que ele sabe é que seja lá qual for a senha, o hash dela é 2d3956215ec2d09484165c0d5261303c!

Se elgio digitar como senha "Ola346" (senha ERRADA), o sistema calcula o HASH do que o usuário digitou:

$ echo "Ola346"|md5sum
23d863d17e7b64552104747ad3c30522

Veja que não é e nem passou perto do hash armazenado. Usuário errou a senha.

Este simples método já é muito bom e pode ser usado nos sistemas de autenticações de páginas WEB com muita facilidade. Qualquer um tem implementação de MD5. 128 bits lhe parecem pouco? Use o SHA1 então.

O Windows usava (desconheço o que usa o Vista) o fraco algoritmo RC4 para cifrar suas senhas e ainda com o agravante de não diferenciar letras minúsculas de maiúsculas no lampasswd (lam pode bem lembrar "lambança". Eu realmente não falo mal da Microsoft mas neste ponto eles realmente pisaram na bola. Quem administra Windows DESATIVE URGENTEMENTE senhas no formato lampasswd).

No NTpassword melhorou muito com o uso do MD4 armazenando-as em formato HEXA decimal. Trata-se de um HASH da senha em Unicode feita várias vezes (tive que implementar em PHP isto!! tsctsctsc)

Mas o Linux vai ainda além disto...

Antes de mostrar como o Linux trata suas senhas, vamos ver os possíveis ataques que este sistema pode sofrer.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Senha em um simples arquivo texto
   3. Senha em um arquivo criptografado
   4. Algoritmos de HASH
   5. Armazenando senhas com segurança
   6. Ataques ao Sistema de HASH
   7. Uso de salt number
   8. Como o Linux armazena
   9. Conclusões e referências
Outros artigos deste autor

A mágica do dc

Criptografia assimétrica com o RSA

Estrutura do Iptables

Iptables protege contra SYN FLOOD?

Introdução a criptografia

Leitura recomendada

Não precisamos de antivírus, eles sim

TOR: A Internet sem rastreabilidade

Segurança da Informação no Brasil, qual é nossa realidade?

Como conseguir um trampo de Analista de Segurança da Informação (SQN)

Mantendo a segurança no Linux

  
Comentários
[1] Comentário enviado por leandrorocker em 08/02/2008 - 10:26h

Legal o artigo, meu TCC quando me formei em ciência da computação foi um estudo sobre hashes, fiz um programa pra quebrá-los (md5,sha1,sha224,sha256,sha384 e sha512) e apresentei os resultados é uma área interessantíssima e como sempre tem o dedo do Ronald Rivest no meio, o cara é um gênio.

[2] Comentário enviado por tenchi em 08/02/2008 - 11:17h

Cara, simplesmente demais. Imagino quantos milhares de computadores deve ter um destes esteriótipos de hackers de filmes americanos que conseguem quebrar a criptografia de qualquer servidor do governo... hauahua
São artigos assim que fazem do VOL o site que é.

[3] Comentário enviado por everton3x em 08/02/2008 - 11:36h

Excelente o seu artigo.
Realmente, o maior problema no caso de senhas é o BIOS (Bicho Idiota Operando o Sistema).

[4] Comentário enviado por kabalido em 08/02/2008 - 11:42h

Cara,
Sem palavras! O artigo foi mais que sensacional.
Li seu artigo e gostei muito mesmo.
Esse tipo de artigo é aquele que dá prazer de ler.
Parabéns e "Viva o Linux".

[5] Comentário enviado por kalib em 08/02/2008 - 17:06h

Parece até brincadeira mas ainda é bastante comum encontrar sites diversos que armazenam suas szenhas em arquivos, bancos de dados ou mesmo no próprio código da página toscamente implantados em java script por exemplo...Infelizmente ainda é comum encontrar este tipo de ingenuidade na internet...

Excelente o seu artigo Elgio, digno de destaque aqui no vol bem como suas demais contribuições.

obrigado pela colaboração.

[6] Comentário enviado por borgetha em 08/02/2008 - 19:35h

No FreeBSD, antigamente (anos 90 - não sei se ainda é assim), o sistema liberava login e senha, caso o usuário errasse a senha, o sistema esperava 1 segundo e liberava o login novamente. Então se o usuário errasse novamente a senha, o sistema esperava 2 segundos para liberar de novo o login, e a cada erro o tempo dobrava. Era uma forma interessante de se evitar ataques de força bruta, pois o tempo de espera começa a ficar looooongo rapidamente. Claro que só funciona para quem não está logado e nem conhece o hash.

[7] Comentário enviado por f_Candido em 08/02/2008 - 23:58h

Muito Bom. É um campo realmente interessante.
Parabéns.
Abraços

[8] Comentário enviado por removido em 09/02/2008 - 09:44h

Muito bom o artigo. Geralmente não leio um artigo todo, somente as partes mais interessantes (é uma forma de adquirir apenas as partes importantes e poupar tempo!), mas esse li todo e com prazer. Digno de figurar entre os melhores artigos destas revistas famosas que falam de informática.

... e ainda existe quem coloque a senha 0123456789!

huahuahua

Parabéns

[9] Comentário enviado por sombriks em 09/02/2008 - 15:22h

belo artigo, nota 10!

[10] Comentário enviado por arlindom.correa em 10/02/2008 - 04:48h

Um artigo bem interessante e claro. Parabéns Elgio.

[11] Comentário enviado por grodriguesq em 10/02/2008 - 18:25h

Excelente artigo.. adorei a parte.. em q o usuário coloca asenha embaixo do teclado...

Acho q vou até enviar isso por email para alguns usuários da minha rede...
Ou seria mais fácil... tacar os usuarios da minha rede pela janela... ..

[12] Comentário enviado por bitencourt em 10/02/2008 - 18:39h

Muito legal o artigo, parabéns!

[13] Comentário enviado por dailson em 11/02/2008 - 14:53h

Artigo de ótimo nível aqui no VOL.
Parabéns Elgio

[14] Comentário enviado por asterix-super em 29/09/2008 - 18:30h

Elgio

De repente, passei a gostar do assunto criptografia, depois de ler seu artigo, muito obrigado.

Pergunto: O hash é mais eficaz do que aquela criptografia que é feita inserindo informação dentro de imagens (esteganografia)?

[15] Comentário enviado por elgio em 12/05/2009 - 12:42h

Outros artigos que escrevi sobre criptografia:
http://www.vivaolinux.com.br/artigo/Introducao-a-criptografia
http://www.vivaolinux.com.br/artigo/Criptografia-chave-simetrica-de-bloco-e-de-fluxo

[16] Comentário enviado por removido em 19/05/2009 - 18:04h

Artigo excelente, bem claro para um assunto muitas vezes complicado.

Um paper interessante de cientistas chineses mostra exemplos de colisão em funções de hash MD4, MD5, HAVAL-128 e RIPEMD: http://eprint.iacr.org/2004/199.pdf

Parabéns!!!


[17] Comentário enviado por samuel.abeu em 01/06/2009 - 00:23h

Assunto me esclareceu muito, me despertou a curiosidade e dissernimento ao escolher uma senha.
agradeço.

[18] Comentário enviado por _d4rks1d3_ em 07/06/2009 - 22:49h

Um excelente artigo!!
nao sabia destas coisas nao, valeu pelo artigo, ajudo muito a entender como funciona o armazenamento das senhas no linux!!

Parabéns!!

[19] Comentário enviado por XimenesWambach em 09/06/2009 - 16:22h

Gostei muito do artigo, achei muito explicativo.
parabêns

[20] Comentário enviado por Lisandro em 07/07/2009 - 12:32h

Excelente!

[21] Comentário enviado por Daemonio em 22/07/2009 - 10:11h

Excelente!! Você já tem o meu apoio caso você queira fazer a parte II deste artigo.

[22] Comentário enviado por mdenison em 30/07/2009 - 20:46h

Muito bom o seu artigo. Dê continuidade ao tema.

[23] Comentário enviado por guidobert em 02/08/2009 - 18:42h

Parabens ....... go on .....

[24] Comentário enviado por hmacedo em 24/11/2011 - 10:52h

Elgio, o seu "Hash by Elgio" é utilizado no cálculo de checksum das mensagens trocadas através do protocolo FIX. Praticamente todas as bolsas de valores mundiais utilizam esta técnica. Já não é tão ruim assim hehehehe

[25] Comentário enviado por kabelovga em 19/05/2014 - 12:32h

Show demais !!! Valeu pelo artigo !!!

[26] Comentário enviado por brunotisatto em 25/09/2014 - 09:00h

Boa Prof!!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts