O que é uma função de hash?
Uma função de hash transforma qualquer conteúdo — uma frase, um software, um backup de vários gigabytes — em uma cadeia de tamanho fixo chamada hash ou digesto. Três propriedades a definem: a saída tem sempre o mesmo tamanho seja qual for a entrada, o mesmo conteúdo produz sempre o mesmo hash, e remontar do hash à entrada deve ser impossível na prática. É esse terceiro ponto que distingue um hash criptográfico de uma soma de verificação como o CRC32.
Na prática, dois usos ocupam a maior parte do terreno. Verificar a integridade : o autor publica o hash do seu arquivo, você o recalcula e a igualdade prova que o download não foi alterado. Comparar conteúdos : em vez de guardar os próprios documentos, guardam-se os hashes deles — idênticos, significam conteúdos idênticos, sem revelar nada sobre a sua natureza.
Qual algoritmo escolher hoje?
SHA-256 é a resposta padrão: padronizado pela NSA e depois adotado em todo lugar, implementado em todas as linguagens e sem colisão conhecida. SHA-512 serve para grandes volumes quando o processador é de 64 bits, muitas vezes mais rápido que o primo dele nesse tipo de arquitetura. SHA-384 não traz nada de especial além de uma variante mais longa. Para assinar mensagens com chave, o HMAC-SHA-256 é a referência: combina a chave secreta com o hash, de modo que apenas o detentor da chave pode produzir o mesmo valor.
O MD5 e o SHA-1 continuam úteis para verificações não sensíveis — um índice, um cache, uma detecção de duplicados — em que a rapidez conta mais que a resistência. O CRC32, por sua vez, não é um hash criptográfico: ele detecta alterações acidentais, mas uma alteração deliberada é fabricada em poucos segundos.
Por que MD5 e SHA-1 são considerados quebrados?
Porque pesquisadores fabricaram, para cada um deles, dois documentos diferentes que compartilham o mesmo hash. No caso do MD5, a demonstração remonta a 2004; no do SHA-1, uma colisão real foi produzida em 2017 com o nome de SHAttered. Uma colisão basta para quebrar uma assinatura: se o atacante escolhe o documento e o autor apenas o hasheia, ele pode acabar assinando um conteúdo diferente. É por isso que os certificados TLS, as atualizações de software e as assinaturas de pacotes abandonaram esses algoritmos.
O que o hash não faz
Hashear não é cifrar: um hash é irreversível por design, mas não protege o conteúdo deixando-o ilegível. O hash não cifra nada, não substitui nem o TLS nem uma chave de cifragem, e também não protege uma senha por si só — esse é o trabalho de bcrypt, scrypt ou Argon2, projetados para serem lentos. Por fim, hashear duas vezes não reforça nada: encadear algoritmos só acrescenta uma camada frágil onde basta uma única função não quebrada.
Recomendado para
Administradores de sistemas e diretores de TI que conferem somas de verificação de distribuições, desenvolvedores que selam artefatos ou autenticam webhooks, auditores e equipes de conformidade que verificam a integridade de backups, jornalistas e analistas que comparam documentos sem divulgá-los, estudantes de criptografia que manipulam os conceitos de hash, colisão e salt — e qualquer pessoa que queira hashear um conteúdo rápido e sem deixar rastro, com como complementos o gerador de senhas, o codificador e decodificador Base64, o decodificador JWT, o testador de regex e o contador de caracteres.