Linux não "decodifica" senhas. Ele usa um processo de 
 hashing  e 
 salga  Para armazenar senhas com segurança. Aqui está um colapso do algoritmo e conceitos relacionados:  
 1. A meta:armazenamento de senha segura    O princípio fundamental é que a senha de texto simples real é * nunca * armazenado em nenhum lugar. Se o banco de dados que contém senhas fosse comprometido, os invasores teriam acesso instantaneamente a todas as contas de usuário. Hashing e salga impedem isso.   
 2. Hashing:   * 
 Função unidirecional: O hashing é uma operação matemática que transforma a senha em uma sequência de caracteres de tamanho fixo chamado "hash". É uma função * unidirecional *, o que significa que é computacionalmente inviável (extremamente difícil e demorado) para reverter o processo e derivar a senha original do hash. 
 * 
 Resistência à colisão: Idealmente, senhas diferentes devem produzir hashes diferentes. Um bom algoritmo de hash minimiza a chance de uma "colisão", onde duas senhas diferentes geram o mesmo hash. 
 * 
 algoritmos comuns de hash no Linux:   * 
 bcrypt: Frequentemente considerado a escolha mais forte e preferida. Ele inclui um sal embutido e foi projetado para ser computacionalmente caro, tornando-o resistente a ataques de força bruta. 
 * 
 Argon2: Um algoritmo moderno de hash de senha que também é projetado para ser computacionalmente caro e com memória, aumentando ainda mais a resistência a ataques. Está se tornando mais popular. 
 * 
 scrypt: Outra função de derivação-chave projetada para ser resistente a ataques de força bruta. 
 * 
 SHA-512: (Menos comum * agora * para hash de senha direta, mas frequentemente usada como parte de uma função de derivação de chaves maior). Historicamente, era usado. Às vezes é usado como parte das configurações do PAM. 
 * 
 md5, sha-1, sha-256:  não use isso!  Estes são considerados desatualizados e vulneráveis para o hash de senha direta. Eles são muito rápidos e facilmente rachados com hardware moderno e mesas de arco -íris pré -computadas. Eles podem ser encontrados em sistemas mais antigos, mas devem ser atualizados.   
 3. Salga:   * 
 Adicionando aleatoriedade: Um "sal" é uma série aleatória de caracteres que é exclusivo para cada usuário. O sal é concatenado (adicionado) a senha * antes * é hash. 
 * 
 Prevenção de ataques de mesa de arco -íris: As mesas de arco -íris são tabelas de hashes pré -computadas para senhas comuns. Sem salgar, um invasor pode simplesmente procurar o hash em uma tabela de arco -íris para encontrar a senha correspondente. A salga torna as mesas de arco -íris inúteis porque cada senha possui um sal exclusivo, resultando em um hash exclusivo, mesmo para senhas comuns. 
 * 
 O sal é armazenado com o hash: Fundamentalmente, o próprio sal é armazenado ao lado da senha de hash no arquivo `/etc/shadow` (ou em algum banco de dados nos sistemas modernos). Isso não é * uma vulnerabilidade de segurança; O sal é * necessário * para verificar uma senha. 
 * 
 Por que armazenar o sal?  Para verificar a senha de um usuário, o sistema precisa:
 1. Recupere o sal armazenado para esse usuário. 
 2. Concatenar a senha inserida com o sal. 
 3. Hash o resultado usando o mesmo algoritmo * de hash de hash usado originalmente. 
 4. Compare o hash recém -gerado com o hash armazenado. Se eles corresponderem, a senha estará correta.   
 4. O arquivo `/etc/shadow` (abordagem tradicional)    Tradicionalmente, as senhas de usuário e suas informações associadas são armazenadas no arquivo `/etc/shadow`. (Nota:visualizar ou modificar diretamente esse arquivo geralmente requer privilégios root).  
 * 
 Permissões: O arquivo `/etc/Shadow` normalmente é legível pelo usuário` root`, garantindo que os usuários regulares não possam ver as senhas de hash de outros usuários. 
 * 
 Estrutura: Cada linha no arquivo `/etc/Shadow` representa uma conta de usuário e possui o seguinte formato (simplificado): 
 `` ` 
 Nome de usuário:hashed_password:last_change:min_days:max_days:warn_days:inactive_days:expire_date:sinalizadores 
 `` `  
 * 
 o campo `hashed_password`: É aqui que a senha salgada e hash é armazenada. O formato desse campo geralmente inclui um identificador para o algoritmo de hash usado, o sal e o hash real. Por exemplo: 
 * `$ 6 $ algum_random_salt $ averylonghashedPasswordSwordString` (isso usa SHA-512) 
 * `$ 2b $ 10 $ outro_random_salt $ parelonGerhashedPasswordString` (isso usa BCRYPT) 
 * `$ 6` indica SHA-512 
 * `$ 2b` indica bCrypt 
 *O número (por exemplo, `10 'em BCRYPT) indica o *fator de custo *ou *fator de trabalho *. Um fator de custo mais alto torna o processo de hash mais caro computacionalmente, aumentando o tempo necessário para quebrar a senha.   
 5. Sistemas modernos e Pam (módulos de autenticação flash)    * bancos de dados 
: Os sistemas modernos geralmente usam bancos de dados (por exemplo, LDAP, Active Directory) para armazenar informações da conta do usuário, incluindo senhas de hash. 
 * 
 Pam: O PAM é uma estrutura flexível que permite que os administradores do sistema configurem diferentes mecanismos de autenticação. É usado para lidar com o processo de autenticação, incluindo senhas de hash, verificando senhas e executando outras tarefas relacionadas à segurança. Os arquivos de configuração do PAM (por exemplo, em `/etc/pam.d/`) determinam quais módulos de autenticação são usados e como eles estão configurados.   
 Cenário de exemplo:verificação de senha do usuário    1. 
 Usuário insere senha: O usuário digita sua senha em um prompt de login ou aplicativo. 
 2. 
 sistema recupera sal: O sistema procura a conta do usuário e recupera o sal armazenado de `/etc/Shadow` (ou o banco de dados apropriado). 
 3. 
 Concatenação e hash: O sistema concatena a senha inserida com o sal recuperado. Em seguida, ele usa o algoritmo de hash indicado na entrada `/etc/Shadow` (por exemplo, SHA-512 ou BCRYPT) para hash a senha e o sal combinados. 
 4. 
 Comparação: O hash recém -gerado é comparado ao hash armazenado em `/etc/shadow`. 
 5. 
 Sucesso/falha de autenticação: Se os dois hashes corresponderem, a autenticação será bem -sucedida. Caso contrário, a autenticação falha.   
 Considerações importantes:   * 
 Complexidade da senha: Incentive os usuários a escolher senhas fortes que são longas, complexas e difíceis de adivinhar. 
 * 
 Alterações regulares de senha: Periodicamente, exigindo que os usuários alterem suas senhas pode ajudar a mitigar o risco de senha de compromisso. 
 * 
 Autenticação multifatorial (MFA): O uso do MFA adiciona uma camada extra de segurança, exigindo que os usuários forneçam várias formas de identificação, como uma senha e um código do telefone. 
 * 
 Auditorias de segurança: A audição regularmente a configuração de segurança do seu sistema pode ajudar a identificar e abordar possíveis vulnerabilidades. 
 * 
 permanecendo atualizado: Mantenha seu sistema operacional e software atualizados com os mais recentes patches de segurança.   
 em resumo: Linux não "decodifica" senhas. Ele usa uma forte combinação de salga e hash para armazenar representações de senha com segurança. Os algoritmos `bcrypt` e` argon2` são geralmente preferidos por sua resistência a ataques de força bruta. Configurar adequadamente o PAM e manter o sistema seguro é crucial para proteger as contas de usuário.