Hashes


A notícia já não é nova, mas a divulgação de quase 6,5 milhões de hashes das passwords de contas do Linkedin veio trazer novamente para as conversas técnicas a necessidade de implementação das melhores soluções no que diz respeito à salvaguardar das passwords dos utilizadores.

Mas o que é uma hash?
Uma hash pode ser caracterizada como uma impressão digital de um pedaço de dados. É uma função matemática unidirecional, não revertível, que pega num conjunto de dados e converte-o numa string de tamanho fixo. É impossível recuperar o texto/dados originais depois de convertidos, mas existem inúmeros sites com extensas base de dados de hashes e o texto que o deu origem:

Salted hashes?
Se a hash de um texto dará sempre o mesmo resultado, a solução para tornar essa hash sempre única poderá passar por adicionar-lhes um texto aleatório – o chamado salt. Este deverá ser guardado conjuntamente com a hash para se conseguir futuramente comparar o resultado da hash da password com o salt.

Um exemplo rápido:
A hash SHA-1 da string ‘changeme’ é fa9beb99e4029ad5a6615399e7bbae21356086b3 e será sempre esta.
Se adicionarmos o texto/salt ‘random’ à string ‘changeme’ (ficando ‘randomchangeme’) a hash será 7df51186f50d1bcd11df64a7db86cafc19ddddff.
Se em vez de ‘random’, o texto adicionado for ‘qqcoisa’ (ficando ‘qqcoisachangeme’) a hash já será 0e84f7268b565d884d48af9f3b38b53415c3330e.

E o que podemos aprender com a divulgação das hashes do Linkedin?
A utilização de sha1 já à muito que não é suficiente para garantir a segurança das passwords armazenadas. E mesmo que um site ainda utilize sha1 ou md5, não há razões para que essa alteração não se consiga efetuar sem interrupção no serviço e sem constrangimentos para os utilizadores. Aqui fica o meu fast and darty hack para essa migração: quando o user se validar, guardar a sua password temporariamente, passá-la pela nova solução (sha2 + salt, bcrypt, scrypt, PBKDF2, …), apagar a velha hash e somente utilizar a nova solução para autenticações futuras.
Esperemos que o Linkedin tenha aprendido a lição e que isto tenha também servido de alerta para outras empresas que ainda utilizam unsalted sha1.

Leave a Reply

Your email address will not be published. Required fields are marked *