segunda-feira, 10 de junho de 2013

Salt password, salgando suas senhas para torná-las mais seguras

Uma das funções mais básicas e comuns a vários sistemas é a criação de contas com usuário e senha, que são armazenados em um banco de dados, é ai que se encontra o problema, se seu banco de dados for invadido o invasor vai ter acesso as senhas dos usuários. Existem algumas técnicas para dificultar que invasor consiga visualizar a senha do usuário, uma delas é criptografar utilizando alguma criptografia conhecida como md5, sha1, sha256, etc


Como funciona a criptografia 

Criptografias são algoritmos que transformam os dados em uma série de caracteres randômicos de tamanho fixo que não podem ser revertidos, então uma vez criptografado não é possível descriptografar (teoricamente, sera mostrado mais a frente que é possível fazer isso) e apenas uma pequena modificação no dado altera completamente o resultado da criptografia.

md5("aaa") = 2cf24dba5fb0a30e26e83b2ac5b9ea93f8146f337a69afe7dd238f3364946366
md5("aab") = c0e81794384491161f1777c232bc629e1b161e5c1fa7425e73043362938b9824

Como gravar uma senha criptografada

O usuário cria uma conta
A senha é criptografada
Senha criptografada é salva no banco
A senha sem criptografia não deve nunca ser armazenada

Como validar a senha criptografada

O usuário loga no sistema fornece seu login/senha
A senha fornecida é criptografada.
A senha do usuário fornecido é recuperada do banco de dados
É comparada a senha fornecida criptografada com a senha já criptografada recuperada do banco
Caso ambas as senhas sejam idênticas o usuário é autorizado a entrar no sistema, caso contrario retorne uma mensagem genérica do tipo login/senha invalida, nunca fale se é o login ou a senha que está invalido, isso previne que invasores tenham acesso aos usuários validos do sistema.

Criptografias seguras, só que não

Muitas vezes desenvolvedores acreditam que apenas criptografando um dado, principalmente utilizando criptografias mais fracas e antigas como md5 e sha estarão mantendo seus dados seguros, porem é possível quebrar essas criptografias facilmente, existem técnicas que tornam a tarefa de quebrar a senha fácil para um hacker como lookup Table, reverse lookup table, rainbow table.

Salgando as senhas e as tornando mais seguras

Salt é uma técnica que torna suas senhas mais seguras, consiste em gerar uma hash, concatenar com a senha e criptografar a string concatenada, abaixo sera mostrado os passos que devem ser feitos para adicionar salt a sua senha e a implementação.

Gravar o password
1- Gere uma hash
2- Concatene o password com a hash gerada e criptografe com uma criptografia forte como SHA256
3- Salve o password criptografado e a hash gerada em colunas separadas no banco

Validando o password
1- Recupere o password e a hash do banco.
2- Concatene o password fornecido pelo usuario com a hash recuperada do banco e criptografe.
3- Se a hash gerada for igual a hash recuperada do banco o password esta correto.

Nenhum comentário:

Postar um comentário