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!
E se dois usuários colocarem a mesma senha "Teste"? E se alguém já tem em seu banco de dados o hash da palavra "Teste"? Danou-se!
Dois usuários tendo a mesma senha significa que seus hashes seriam idênticos. No mínimo um dos usuários mais atentos veria no arquivo de senhas que o HASH do outro é igualzinho ao seu. Isto é INADMISSÍVEL! E a Microsoft não usa salt numbers... tsctsc
Salt number consiste em misturar ao hash caracteres aleatórios. Por serem aleatórios não são escolhidos pelo usuário, mas sim pelo programa que cadastra senha. Veja que se eu introduzir apenas um número de 0-9 como salt já crio 10 possibilidades diferentes para a palavra "Teste". Se eu colocar 3 caracteres como hash e eles podendo ser apenas números (000 a 999) crio mil possíveis hashes.
Qual a implicação disto?
Se alguém quiser pré-compilar e armazenar o hash da palavra "Teste" terá que armazenar 1000 deles.
Mas o Linux usava para o hash DES DOIS caracteres e não precisavam ser apenas números. Podiam ser letras, números e alguns símbolos. Deixemos os símbolos de lado e fiquemos com as letras e números. De A-Z temos 26 possibilidades, de a-z mais 26 e de 0-9 temos 10. Cada posição pode ser uma dentre 62 possibilidades. Como temos duas letras, tem-se um total de 62^2 hashes possíveis o que nos dá 3844 possíveis hashes. Isto que deixei símbolos de lado.
O que isto quer dizer?
Quer dizer que se alguém quiser armazenar o hash da palavra "Teste" terá que computar todos os possíveis 3844 hashes dela e armazenar todos. E tudo outra vez para a palavra "TEste" que já não é a mesma.
Quer saber do melhor? Hashes DES tá depreciado. Caiu! Até o MD5 já está
depreciado, contudo é o atualmente usado. No MD5 o salt number pode ter vários caracteres!
Com QUATRO caracteres o número de hashes pula para algo perto de 14 milhões. Atualmente se usam OITO caracteres. É uma estupidez que inviabiliza por completo o ataque por comparação.
[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 é.
[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.
[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.
[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!
[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
[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