Hashing
MD5, SHA, bcrypt
Hashing é uma aula grátis de Ethical Hacking Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Ethical Hacking Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Ethical Hacking Academy inclui 4 aulas no total.
O Que é um Hash?
Uma função de hash recebe uma entrada de qualquer tamanho e produz uma saída de tamanho fixo chamada resumo. A mesma entrada sempre produz o mesmo resumo.
Fundamentalmente, o hashing é uma operação unidirecional. Não é possível reverter matematicamente um resumo para obter a entrada original. É isso que diferencia os hashes da codificação e da criptografia.
Propriedades de um Bom Hash
Uma função de hash criptográfica deve ser:
- Determinística: a mesma entrada produz a mesma saída.
- Rápida de calcular (para hashing geral), mas idealmente lenta para hashing de senhas.
- Resistente à pré-imagem: dado um resumo, não é possível encontrar a entrada.
- Resistente a colisões: é difícil encontrar duas entradas com o mesmo resumo.
- Efeito avalanche: a alteração de um bit modifica aproximadamente metade dos bits da saída.
MD5
O MD5 produz um resumo de 128 bits (32 caracteres hexadecimais). Ele é rápido e historicamente comum, mas está criptograficamente comprometido: existem ataques práticos de colisão.
Nunca use MD5 para segurança. Você ainda o encontrará em somas de verificação de arquivos e sistemas legados, o que faz dele um alvo frequente durante avaliações.
echo -n 'password' | md5sum
# 5f4dcc3b5aa765d61d8327deb882cf99A Família SHA
A família SHA (Algoritmo de Hash Seguro) é mais robusta:
- SHA-1: 160 bits. Atualmente considerado comprometido (ataque de colisão 'SHADOW HAMMER' / SHAttered). Evite-o.
- SHA-2: inclui SHA-256 e SHA-512. É amplamente usado e atualmente seguro.
- SHA-3: um design mais recente baseado no Keccak, uma alternativa ao SHA-2.
echo -n 'password' | sha256sum
# 5e884898da28047151d0e56f8dc629...Hashing Não é Criptografia
A criptografia pode ser revertida com uma chave. O hashing não pode ser revertido de forma alguma. É exatamente por isso que o hashing é usado para armazenar senhas: o servidor nunca precisa da senha original.
Quando você inicia sessão, o servidor calcula o hash do que você digitou e o compara com o hash armazenado. Se forem iguais, você será autenticado. A senha em texto claro nunca é armazenada.
O problema: tabelas arco-íris
Como o hashing é determinístico, o resumo de «password» é igual para todos os utilizadores. Os atacantes pré-calculam enormes tabelas de consulta de resumo para texto claro chamadas tabelas arco-íris.
Se dois utilizadores partilharem a mesma palavra-passe, os seus resumos armazenados serão idênticos, revelando esse facto. Resumos rápidos simples, como MD5 ou SHA-256, não são adequados para palavras-passe.
Uso de salt
Um salt é um valor aleatório exclusivo adicionado a cada palavra-passe antes do hashing. Isto significa que:
- Palavras-passe idênticas produzem resumos diferentes.
- As tabelas arco-íris pré-calculadas tornam-se inúteis.
O salt é armazenado juntamente com o resumo; não é secreto. A sua função é tornar cada resumo único, obrigando os atacantes a quebrá-los individualmente.
stored = salt + hash(salt + password)
# salt is random and unique per userbcrypt: criado para palavras-passe
bcrypt foi concebido especificamente para armazenar palavras-passe. É intencionalmente lento e inclui um fator de custo configurável (fator de trabalho), que o torna mais lento à medida que o hardware melhora.
Um resumo bcrypt inclui o algoritmo, o custo e o salt numa única cadeia de caracteres. A lentidão é uma funcionalidade: limita a velocidade a que os atacantes podem tentar adivinhar.
$2b$12$R9h/cIPz0gi.URNNX3kh2OPST9/PgBkqquzi.Ss7KIUgO2t0jWMUW
# $2b$ = bcrypt, 12 = cost factor, then salt + hashOutros resumos lentos
Além de bcrypt, as opções modernas de hashing de palavras-passe incluem:
- scrypt: exige muita memória e resiste a ataques com GPU e ASIC.
- Argon2: vencedor da Competição de Hashing de Palavras-passe, configurável para tempo e memória. É a escolha moderna recomendada.
- PBKDF2: aplica um resumo rápido durante muitos milhares de iterações; é aceitável, mas mais fraco do que os anteriores.
HMAC e integridade
Os resumos também são usados para garantir a integridade, não apenas para palavras-passe. Um HMAC (Código de Autenticação de Mensagens baseado em Hash) combina um resumo com uma chave secreta para verificar tanto a integridade como a autenticidade de uma mensagem.
As somas de verificação de ficheiros (frequentemente SHA-256) permitem verificar se uma transferência não foi adulterada. Como hacker, somas de verificação incompatíveis podem revelar ficheiros modificados ou maliciosos.
Resumos no mundo real
Como hacker, encontrará resumos constantemente:
- /etc/shadow no Linux armazena resumos de palavras-passe com salt, com prefixos como
$6$(SHA-512) ou$2b$(bcrypt). - O Windows armazena resumos NTLM na base de dados SAM.
- As aplicações Web armazenam palavras-passe resumidas nas suas tabelas de utilizadores.
Reconhecer o prefixo indica imediatamente o algoritmo e a sua estratégia para quebrá-lo.
$6$rounds=5000$salt$hash # SHA-512 crypt
$2b$12$saltandhash... # bcryptVerificação rápida
Escolha a opção mais segura para armazenar palavras-passe de utilizadores.
Recapitulação
Agora compreende o hashing:
- O hashing é uma transformação unidirecional, de tamanho fixo e determinística, diferente da codificação e da encriptação.
- MD5 e SHA-1 estão comprometidos; utilize SHA-256 para garantir a integridade geral.
- Para palavras-passe, utilize algoritmos lentos com salt: bcrypt, scrypt ou Argon2.
- Os salts impedem as tabelas arco-íris; o HMAC acrescenta integridade baseada numa chave.
A seguir, explorará a encriptação simétrica e assimétrica com AES e RSA.
Perguntas Frequentes
A aula “Hashing” é grátis?
Sim — o texto completo de “Hashing” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Ethical Hacking Academy, atualize para CoddyKit PRO. O curso de Ethical Hacking Academy inclui 4 aulas no total.
O que vou aprender em “Hashing”?
MD5, SHA, bcrypt Você pratica Ethical Hacking Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Ethical Hacking Academy?
Nenhuma experiência prévia é necessária. Ethical Hacking Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Hashing”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Ethical Hacking Academy?
Sim. Cada aula de Ethical Hacking Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.