Sua senha é armazenada de forma segura?
September 25, 2007 Dicas, Segurança No Comments Autor: Cícero Rolim
Quanto tempo você acha que seria necessário para um método computacional descobrir a sua senha pessoal? Pode ser aquela senha do Gmail, que está atrelada a todos os outros serviços prestados pelo Google, integrando desde o seu e-mail até o seu perfil no Orkut.
Depende, é a resposta. Antes de saber como sua senha é armazenada no computador, é necessário saber como ela é armazenada. Quando uma senha á armazenada em um sistema ela é convertida para uma função hash. Um hash é um resumo da sua senha, e que não pode voltar ao estado original. Na tabela abaixo é apresentado uma comparação de como ela seria armazenada utilizando algumas funções hash:
|
Função Hash |
Resultado |
|
Text/Plain |
teste123! |
|
MD5 |
aa1bf4646de67fd9086cf6c79007026c |
|
SHA1 |
e0f68134d29dc326d115de4c8fab8700a3c4b002 |
Como podem ser observadas, as funções hash retornam uma seqüência de caracteres alfanuméricos, isto é, o resumo de sua senha. Este resumo não é único, ou seja, podem existir duas senhas com o mesmo resumo, mas esta é uma probabilidade muito pequena, e varia conforme o número de caracteres representados no resumo.
Uma função hash não pode ser retornada para o seu estado anterior. Ou seja, se alguém tiver acesso ao hash de uma senha, não conseguirá descobrir qual a senha exata que foi atribuída. Mas existe uma série de ferramentas que permitem a reversão do hash. A reversão é o processo na qual se tem o hash e tenta-se descobrir qual a seqüência de caracteres de sua origem.
Uma delas é o site http://www.md5encryption.com que propõe uma resolução de senhas baseada na web. Este site possui uma tabela de hash’s que foram processados pelo site. Se você pesquisar por um hash que já foi processado pelo sistema o resultado será instantâneo. Caso contrário, não haverá “mágica”. Cuidado ao testar a sua própria senha pessoal, pois o hash dela ficará disponível para futuras consultas. Se você quiser fazer um teste, faça uma pesquisa com os valores da Tabela 1.
Outro tipo de resolução baseado em hash é por força-bruta. Para isso, basta utilizar um programa OphCrack e uma Rainbow Table, que nada mais é do que uma lista de passwords/hashs. Existem uma série de Rainbow Tables disponíveis, e seu tamanho varia conforme o número de caracteres a serem utilizados nos cálculos de hash. Existem várias Rainbow Tables disponíveis, e abaixo segue uma comparação realizada pelo site Coding Horror, utilizando a menor Rainbow Table disponível ao programa OphCrack, com 388 MB de tamanho e que abrange os caracteres alfanuméricos:
| Senha | Encontrado? |
Tempo (segundos) |
| Password1! | Não | 700 |
| Fgpyyih804423 | Sim | 159 |
| Fgpyyih80442% | Não | 700 |
| saMejus9 | Sim | 140 |
| thequickbrownfoxjumpsoverthelazydog | Não | 700 |
Uma estratégia para tentar dificultar a utilização de uma Rainbow Table, é a concatenação de caracteres extras na senha do usuário, quando executada a função de hash. Por exemplo, se o usuário tem a senha “teste123″, você irá realizar o cálculo como md5(”teste123″ + “nomedomeusite.com”). Com esta técnica, o número de caracteres da senha será elevado consideravelmente, tornando mais complexa e lenta a identificação de senhas por Rainbow Tables.
* Imagem do site www.ze-games.net/blog