- O "salt" é uma sequência aleatória de caracteres que é adicionada à senha antes do hash para garantir hashes únicos para cada usuário.
- Linux Ele armazena o hash, o salt e o algoritmo em /etc/shadow, reforçando a segurança contra ataques de dicionário e tabelas rainbow.
- Boas práticas exigem salts longos, aleatórios e únicos, juntamente com algoritmos de hash robustos e bases de dados bem protegido.
- A aplicação de salt em senhas deve ser integrada a políticas de segurança mais abrangentes que incluam senhas fortes, autenticação multifator (MFA) e gerenciadores de senhas.

Se você trabalha com sistemas GNU/Linux ou simplesmente se preocupa com a segurança de suas contas, provavelmente já ouviu falar de sal no hash da senhaÉ um daqueles conceitos que são muito mencionados, mas frequentemente compreendidos apenas parcialmente: soa técnico, mas na realidade faz a diferença entre um sistema fácil de quebrar e um muito mais resistente a ataques.
Resumindo, o sal é um elemento chave para tornar os hashes de senha imprevisíveisO processo funciona adicionando dados aleatórios antes de aplicar o algoritmo de hash, de forma que, mesmo que dois usuários tenham a mesma senha, o resultado armazenado no banco de dados será diferente. A partir daí, a implementação específica no Linux, sua relação com o arquivo /etc/shadow, ferramentas como o mkpasswd e as melhores práticas de segurança modernas constituem um universo à parte, que exploraremos em detalhes.
O que exatamente é o "salt" em um hash de senha?

Em criptografia, um sal (sal) é um sequência aleatória de caracteres que é adicionada à senha do usuário antes da aplicação de uma função hash. O objetivo é que o hash resultante seja único, mesmo que a senha em texto simples seja a mesma para vários usuários.
Quando um usuário cria ou altera sua senha, o sistema gera uma sal aleatórioEle combina isso com a senha (antes, depois ou em um formato específico, dependendo do esquema) e aplica um algoritmo de hash a essa combinação, como: SHA-256 o SHA-512A senha não é armazenada no banco de dados, mas sim no hash de (senha + salt)E na maioria dos esquemas, o próprio sal também é armazenado junto com o haxixe.
Essa técnica torna muitos dos técnicas de ataque baseadas em hashes pré-computadosAssim como as tabelas rainbow, isso complica bastante os ataques de dicionário e de força bruta em larga escala. Um atacante não pode mais explorar o fato de que vários usuários compartilham uma senha, porque cada um terá um hash diferente.
É importante entender que o sal não é um segredo em si: Não se trata de uma senha nem de uma chave privada.Sua função é introduzir aleatoriedade e unicidade no processo de hashing. A segurança ainda depende do uso de senhas fortes y algoritmos de hash adequados, de preferência especificamente projetada para senhas (como bcrypt, scrypt, Argon2), embora muitos sistemas Linux clássicos usem variantes de SHA-256 ou SHA-512.
Como funciona o salting de senhas passo a passo

O processo de salga pode ser resumido em uma série de etapas bastante simples, mas com um enorme impacto na segurança:
Primeiramente, quando um usuário se cadastra ou altera sua senha, o sistema gera um sal único e aleatório para essa credencial. Esse salt geralmente tem comprimento suficiente (por exemplo, 16 bytes ou mais) e é obtido de um gerador de números aleatórios criptograficamente seguro.
Em seguida, a senha escolhida pelo usuário é combinada com esse salt para formar um cadeia intermediáriaEssa combinação pode ser tão simples quanto concatenar o salt + a senha, ou pode ter um formato mais complexo definido pelo esquema de hash. O importante é que cada usuário acabe com uma combinação diferente.
Então, um algoritmo de hash unidirecionalO resultado é uma sequência aparentemente aleatória, o hash, de comprimento fixo, que será armazenada no banco de dados juntamente com o salt. Em sistemas modernos, buscam-se algoritmos que produzam saídas longas e complexasIsso aumenta o espaço de busca e torna os ataques de força bruta mais dispendiosos.
Por fim, quando o usuário faz login, o sistema recupera novamente a senha inserida. sal associado A partir do banco de dados, o sistema repete exatamente o mesmo processo de combinação e hash e compara o resultado com o hash armazenado. Se coincidirem, ele sabe que a senha está correta sem precisar conhecer o texto original.
Esse mecanismo garante que, mesmo que o banco de dados vaze, o invasor só verá... haxixes individuais com seus próprios saisEm vez de um conjunto de hashes comparáveis, impedir um ataque não é mágica, mas torna-se significativamente mais dispendioso em termos computacionais.
Vantagens de usar salt em hashes de senha

O principal motivo para usar a salga é que Reforça a segurança das senhas armazenadas. contra uma ampla variedade de ataques. Mas vale a pena detalhar os benefícios específicos.
Em primeiro lugar, a salga proporciona resistência a ataques de dicionárioSem um salt, um atacante pode preparar uma enorme lista de senhas comuns e seus respectivos hashes, e simplesmente compará-los com o banco de dados roubado. Com um salt exclusivo para cada usuário, esses hashes pré-calculados se tornam inúteis, pois cada combinação de senha e salt gera um valor diferente.
Em segundo lugar, o uso de sal reduz a eficácia do mesas arco-írisEssas são simplesmente bases de dados pré-calculadas com hashes de senhas populares para acelerar a recuperação. Novamente, como o resultado depende do salt específico, essas tabelas projetadas para hashes sem salt tornam-se inúteis ou, no mínimo, altamente ineficientes.
Outra clara vantagem é que melhora a Privacidade em caso de vazamentoMesmo que um invasor consiga acessar a tabela de usuários com seu hash e salt, ele não conseguirá identificar rapidamente quem tem a mesma senha que outros ou lançar ataques em massa com facilidade. Cada conta exige atenção individual, o que geralmente é impraticável em grande escala.
Além disso, a salga adiciona complexidade ao ataques de força brutaEm vez de poder testar uma senha candidata contra todos os hashes simultaneamente, o atacante é forçado a considerar o salt de cada usuário, multiplicando a carga de trabalho total. Se isso for combinado com um algoritmo de hash lento e parametrizável (como bcrypt ou Argon2), o custo do ataque aumenta ainda mais.
Por fim, a técnica de "salting" se adapta bem à evolução tecnológica. Mesmo com o aprimoramento dos equipamentos de informática e o surgimento de novos ataques, a combinação de haxixe robusto e sal único Mantém um nível de dificuldade elevado e escalável: é possível aumentar o comprimento do sal, fortalecer o algoritmo, aumentar o custo computacional, etc.
Como o Linux implementa o salting de senhas (/etc/shadow)
Em sistemas Linux e outras variantes *NIX, as senhas dos usuários não são armazenadas em /etc/passwd, mas sim no arquivo / etc / shadowEste arquivo, acessível apenas ao superusuário, armazena os hashes das senhas juntamente com informações adicionais, e é onde o uso do salt e do algoritmo de hash é claramente visível.
As linhas em /etc/shadow têm uma estrutura semelhante a:
usuário:$id$sal$hash:campos_adicionais…
O símbolo $ Separe as diferentes partes. A primeira parte após o nome de usuário indica o tipo de algoritmo usado. Por exemplo, $ $ 1 geralmente representa MD5, $ $ 5 SHA-256 e $ $ 6 O SHA-512 é o algoritmo mais comum nas distribuições modernas porque oferece maior segurança do que os esquemas mais antigos baseados em DES ou MD5.
Após o identificador do algoritmo aparecer, sale então o hash resultanteTudo isso ocorre no mesmo campo. Quando uma senha é validada, o sistema lê esse identificador, o salt, aplica o algoritmo correspondente à senha inserida e compara o hash calculado com o hash armazenado.
Se você quiser verificar rapidamente quais usuários têm senhas criptografadas e qual algoritmo está sendo usado, você pode usar um comando como grep '\$' /etc/shadowNeste contexto, o cifrão ($) é usado para localizar linhas com hashes no formato moderno. O símbolo deve ser escapado com uma barra invertida porque, em expressões regulares, significa "fim de linha".
Contas sem senha ou contas bloqueadas geralmente exibem um valor como este nesse campo. ! o * Em vez de um símbolo de hash com dólares, indicando que não pode ser autenticado usando uma senha padrão. Essa estrutura deixa uma coisa clara: O Linux integra o uso de sal em seu formato de armazenamento senhas nativamente.
Diferença entre hash de senha e salting
É importante distinguir claramente entre dois conceitos que às vezes são confundidos: Hashing y salgaO hash de senha é o processo pelo qual uma senha é transformada em um valor irreconhecível usando um algoritmo unidirecional. O servidor nunca precisa saber a senha original, apenas verificar se o usuário sabe a senha correta, pois isso produz o mesmo hash.
O problema é que, se duas senhas forem idênticas, O haxixe sem sal também será idêntico.Isso permite que um atacante compare e agrupe usuários por senha ou utilize tabelas pré-calculadas. Além disso, se o algoritmo de hash for rápido e projetado para integridade de dados (como o simples SHA-256), ele se torna mais vulnerável a ataques de força bruta em larga escala.
A técnica de salga surge precisamente para resolver essa fraqueza: trata-se de Adicionar dados aleatórios à senha antes de aplicar o hash. O resultado é que, mesmo que dois usuários escolham “casa” como senha, os hashes no banco de dados serão completamente diferentes, porque um terá, por exemplo, “casa+7Ko#” e o outro “casa8p?M” como string pré-hash.
Assim, o hashing e o salting não competem entre si, mas sim se complementam. O hashing proporciona a propriedade de unidirecionalidade e facilidade de verificação; o sal proporciona singularidade e resiliência contra ataques massivosUma implementação de armazenamento seguro de senhas combina ambas as técnicas, idealmente utilizando um algoritmo desenvolvido para esse fim, com custo configurável.
Utilizando o salt no Linux com mkpasswd
Em ambientes GNU/Linux e outros sistemas UnixUma forma muito prática de experimentar a salga é com a ferramenta. mkpasswdEste comando é usado para gerar senhas criptografadas de forma segura, e é comumente integrada aos processos de criação de usuários, scripts de administração, etc.
A sintaxe básica do mkpasswd permite especificar a senha a ser criptografada e uma série de opções, como o tipo de algoritmo (por exemplo, des, md5, sha-256, sha-512) usando a opção -mNos sistemas modernos, o mais sensato é optar por SHA-512 No mínimo, ou por meio de esquemas ainda mais robustos, caso a distribuição os suporte.
A opção particularmente interessante no contexto da salga é -S, o que permite adicione sal para a senha antes de criptografá-la. Se não for especificada manualmente, o mkpasswd pode gerar um sal aleatório em cada execuçãoAssim, mesmo usando a mesma senha de login, o hash resultante será diferente a cada vez.
Isso pode ser facilmente verificado: se você criptografar “password123” várias vezes com o mkpasswd, usando SHA-512 e um salt aleatório, obterá hashes completamente diferentes. No entanto, se você passar o mesmo valor de salt usando -S, o hash será sempre idêntico, porque a combinação senha + salt não muda.
Graças a esta ferramenta, é muito fácil. Prepare senhas criptografadas com salt. Para adicionar conteúdo aos arquivos de configuração, gerenciar usuários manualmente ou testar o comportamento de "salting" sem precisar programar nada.
Escritor apaixonado pelo mundo dos bytes e da tecnologia em geral. Adoro compartilhar meu conhecimento por meio da escrita, e é isso que farei neste blog, mostrar a vocês tudo o que há de mais interessante sobre gadgets, software, hardware, tendências tecnológicas e muito mais. Meu objetivo é ajudá-lo a navegar no mundo digital de uma forma simples e divertida.