Imagine que podia pegar em quaisquer dados — uma única palavra, um romance, um vídeo de 4 GB — e reduzi-los a uma curta cadeia de caracteres de comprimento fixo que os identifica de forma única. Altere uma única vírgula no original e a cadeia torna-se completamente diferente. E não há forma de reverter o processo para recuperar os dados originais.
É exatamente isso que uma função hash criptográfica faz. É um dos blocos de construção mais fundamentais da segurança moderna, e protege silenciosamente quase tudo o que faz online.
A metáfora da impressão digital
Um hash funciona como uma impressão digital. A sua impressão digital identifica-o de forma única, mas ninguém consegue reconstruir o seu rosto a partir dela. De forma semelhante, um hash criptográfico identifica de forma única um conjunto de dados sem revelar o que são esses dados.
Introduza qualquer entrada numa função hash e obtém um digest (também chamado valor hash ou checksum) — uma cadeia de caracteres hexadecimais de comprimento fixo. O SHA-256, um dos algoritmos mais comuns, produz sempre uma saída de 64 caracteres independentemente do tamanho da entrada.
| Entrada | Digest SHA-256 (primeiros 16 caracteres) |
|---|---|
Hello |
185f8db32271fe25... |
hello |
2cf24dba5fb0a30e... |
| Dump completo da Wikipédia | (continua a ser 64 caracteres) |
As quatro propriedades essenciais
Uma função qualifica-se como hash criptográfico apenas se satisfizer estas propriedades:
- Determinístico. A mesma entrada produz sempre a mesma saída, em qualquer máquina, a qualquer momento.
- Unidirecional (resistência a pré-imagem). Dado um hash, é computacionalmente inviável encontrar a entrada original. Não se consegue "des-hashear" dados.
- Resistente a colisões. É praticamente impossível encontrar duas entradas diferentes que produzam o mesmo digest. Para o SHA-256, as probabilidades de uma colisão acidental são aproximadamente 1 em 2^128 — um número maior que os átomos no universo observável.
- Efeito avalanche. Alterar um único bit na entrada inverte aproximadamente metade dos bits na saída. Não há padrão detetável nem relação entre entradas semelhantes.
Distinção fundamental: Hashing não é encriptação. A encriptação é reversível com uma chave; o hashing é deliberadamente irreversível. Encripta dados para os proteger durante o trânsito. Hasheia dados para verificar a sua integridade ou armazenar uma prova sem manter o original.
Algoritmos hash comuns
MD5 (1991)
- Saída: 128 bits (32 caracteres hexadecimais)
- Estado: Criptograficamente quebrado. Os investigadores conseguem gerar colisões em segundos num portátil.
- Ainda visto em: Checksums não relacionados com segurança para downloads de ficheiros e sistemas legados.
SHA-1 (1995)
- Saída: 160 bits (40 caracteres hexadecimais)
- Estado: Descontinuado para segurança. A Google demonstrou uma colisão prática em 2017 (o ataque "SHAttered").
- Ainda visto em: Repositórios Git antigos, alguns certificados legados.
SHA-256 (2001)
- Saída: 256 bits (64 caracteres hexadecimais)
- Estado: Padrão atual. Sem ataques práticos conhecidos.
- Usado em: Certificados TLS, Bitcoin, hashing de palavras-passe, assinaturas digitais, verificação de integridade de ficheiros.
SHA-3 (2015)
- Saída: Variável (normalmente 256 bits)
- Estado: Padrão mais recente, baseado num design interno completamente diferente (construção esponja Keccak) da família SHA-2.
- Usado em: Sistemas orientados ao futuro, Ethereum, situações que requerem diversidade de algoritmos.
| Algoritmo | Tamanho da saída | Seguro? | Velocidade |
|---|---|---|---|
| MD5 | 128 bits | Não | Muito rápido |
| SHA-1 | 160 bits | Não | Rápido |
| SHA-256 | 256 bits | Sim | Moderado |
| SHA-3-256 | 256 bits | Sim | Moderado |
Onde o hashing criptográfico é usado
Armazenamento de palavras-passe
Quando cria uma conta, um sistema bem concebido nunca armazena a sua palavra-passe em texto simples. Armazena o hash. Quando faz login, o sistema hasheia o que digita e compara com o valor armazenado. Mesmo que a base de dados seja violada, os atacantes obtêm hashes — não palavras-passe.
Os sistemas modernos vão mais longe adicionando um salt aleatório (dados extra adicionados antes do hashing) e usando algoritmos intencionalmente lentos como bcrypt, scrypt ou Argon2 para tornar a adivinhação por força bruta impraticável.
Verificação de integridade de ficheiros
Os distribuidores de software publicam checksums SHA-256 ao lado dos seus downloads. Após descarregar, calcula o hash do ficheiro na sua máquina e compara. Uma correspondência prova que o ficheiro não foi corrompido nem adulterado durante o trânsito.
Assinaturas digitais
Quando assina digitalmente um documento, o sistema hasheia primeiro o documento, depois encripta o hash com a sua chave privada. O destinatário desencripta-o com a sua chave pública e compara-o com o seu próprio hash do documento. Isto é muito mais eficiente do que encriptar o documento inteiro e prova tanto a autoria como a integridade.
Blockchain
Cada bloco numa blockchain contém o hash do bloco anterior, criando uma cadeia imutável. Alterar qualquer transação passada muda o hash do seu bloco, o que quebra a cadeia desse ponto em diante, tornando a adulteração imediatamente visível.
Por que o MD5 e o SHA-1 são considerados quebrados
Um algoritmo hash está "quebrado" quando alguém consegue deliberadamente criar duas entradas diferentes que produzem o mesmo hash (uma colisão). Isto mina todos os casos de uso que dependem da unicidade.
- MD5: As colisões podem ser geradas em segundos. Os investigadores criaram dois ficheiros PDF diferentes com hashes MD5 idênticos.
- SHA-1: O ataque SHAttered em 2017 produziu dois PDFs diferentes com o mesmo hash SHA-1, requerendo aproximadamente 6.500 anos de computação numa única CPU (viável com recursos na nuvem).
Regra prática: Nunca use MD5 ou SHA-1 para nada relacionado com segurança — palavras-passe, certificados, assinaturas digitais ou verificações de integridade onde um adversário possa estar envolvido. Use SHA-256 ou SHA-3 em vez disso.
Para saber mais
O hashing é um daqueles conceitos que se torna intuitivo depois de experimentar. Tente hashear uma frase, depois mude um carácter e observe o efeito avalanche em primeira mão.
- Como gerar e verificar hashes — tutorial passo a passo
- Hash Generator — calcule SHA-256, MD5, SHA-512 e mais instantaneamente no seu navegador
- Hash Identifier — cole um hash desconhecido e identifique o seu algoritmo
