Glossário

Sal (salt)

sal de senhasal criptográfico

Um sal é um valor único adicionado a cada operação de hash de senha ou derivação de chave para fazer entradas iguais produzirem saídas diferentes.

Definição

Um sal é um valor adicionado a uma senha ou outra entrada antes do hash de senha ou da derivação de chave. Sua principal função é tornar a saída derivada única mesmo quando dois usuários escolhem a mesma senha.

Um sal geralmente não precisa ser secreto. Ele é armazenado com o hash ou a saída codificada para que o verificador possa repetir o mesmo cálculo depois.

Como funciona

Para cada senha, o sistema gera um novo sal aleatório e passa a senha e o sal para uma função de hash de senha como Argon2id, bcrypt ou PBKDF2. Durante a verificação, o sal armazenado é reutilizado com a senha candidata.

Sais únicos impedem que senhas iguais produzam hashes armazenados iguais e tornam tabelas pré-calculadas muito menos úteis. Eles não transformam senhas fracas em fortes; a função de hash de senha ainda precisa de parâmetros de custo adequados.

Sal, chave, pepper e nonce

Um sal fornece unicidade pública, não uma chave secreta de autenticação. Um pepper é um valor secreto separado mantido fora do banco de senhas, e um nonce é um número usado uma vez em um protocolo ou operação de criptografia específica.

Em sistemas novos, gere sais com uma fonte aleatória criptograficamente segura e, quando possível, deixe a biblioteca de hash de senha armazená-los em seu formato codificado padrão.

Perguntas frequentes

Não. Ele deve ser único e preferencialmente aleatório, mas pode ser armazenado junto ao hash.

Não deveriam. Sais aleatórios tornam a reutilização improvável e impedem que senhas iguais apareçam como hashes iguais.

Não. Use uma função de hash de senha com parâmetros de custo adequados, sais aleatórios seguros, limitação de tentativas e monitoramento.

Veja também