Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O que é sal quando relacionado ao MYSQL sha1?


Um salt é um valor que é adicionado a uma senha (ou outro segredo) que você deseja fazer hash de uma maneira. Isso significa que pode ser antes, depois ou em algum lugar dentro da senha, desde que sua posição e valor sejam consistentes para uma determinada senha fornecida.

O que isso faz é mitigar os ataques de dicionário - basicamente dicionários de senhas comuns pré-hash sem sal - de serem usados ​​para "adivinhar" uma senha unidirecional, desde que o invasor não conheça o hash. Se cada senha tiver um hash diferente então será muito difícil para um invasor criar um dicionário otimizado para quebrar suas senhas (eles precisariam de um dicionário para cada sal separado e também precisariam saber onde o sal foi colocado em cada senha ).

É claro que para que tudo isso seja aplicável, um invasor deve ter os hashes de suas senhas em primeiro lugar. Isso não tem nada a ver com atacar senhas adivinhando-as por meio de algum prompt de entrada.

Em relação ao MySQL especificamente, se você fornecer um sal ao fazer o hash de uma senha, certifique-se de registrar o que esse sal estava em algum lugar. Então, quando um usuário tenta a autenticação, você combina esse valor salt gravado com a senha (durante a chamada para crypt por exemplo) e se o hash resultante corresponder, eles inseriram a senha correta. (Observe que em nenhum momento o hashing de uma senha é revertido; portanto, de uma maneira.)