Última actualización:
Tabela de Conteúdos
TogglePor trás de quase tudo o que faz na Internet—iniciar sessão num site, enviar uma mensagem, efetuar um pagamento ou descarregar um ficheiro—há um protagonista silencioso: as funções hash criptográficas. Embora o seu uso seja frequentemente associado quase exclusivamente ao Bitcoin e às redes blockchain, há décadas que são a infraestrutura invisível que sustenta a segurança digital do dia a dia.

Para entender o seu impacto, convém distinguir dois conceitos básicos: a função hash é o algoritmo matemático, enquanto o hash é o resultado obtido: uma impressão digital única e de comprimento fixo que representa os dados processados. Sem esta tecnologia, garantir a privacidade, a autenticidade e a integridade das informações na rede seria praticamente impossível.
Transforma qualquer conjunto de dados de entrada numa cadeia de caracteres de comprimento fixo, de forma determinista e praticamente irreversível.
Quando se regista num serviço web, uma plataforma séria nunca armazena a sua palavra-passe tal como a escreve. Em vez disso, o sistema calcula o hash da sua chave e guarda apenas essa cadeia de resultado.

Cada vez que inicia sessão, o servidor volta a aplicar a função hash sobre a chave inserida e compara o resultado com o valor armazenado. Se coincidirem, o acesso é concedido. Este método garante que, mesmo que a base de dados seja comprometida por um ataque informático ou revista por pessoal técnico, as palavras-passe originais permaneçam ocultas.
Para impedir que os atacantes adivinhem palavras-passe através de dicionários ou listas de hashes pré-calculados, os sistemas aplicam um salt: uma cadeia aleatória única que é adicionada à palavra-passe antes de a processar.
Deste modo, dois utilizadores com a mesma chave gerarão hashes totalmente diferentes. Além disso, são utilizadas técnicas de key stretching através de algoritmos concebidos para serem deliberadamente lentos e exigentes em recursos (como Argon2, bcrypt ou scrypt), dificultando a execução de ataques de força bruta em grande escala.
Um algoritmo é considerado criptograficamente quebrado quando são descobertas colisões práticas, ou seja, quando dois conjuntos de dados de entrada totalmente diferentes conseguem gerar o mesmo hash de saída.

Casos históricos como MD5 ou SHA-1 mostraram estas fraquezas ao longo do tempo. Em 2017, a vulnerabilidade do SHA-1 foi demonstrada ao gerar dois ficheiros PDF diferentes com um hash idêntico. Quando isto acontece, os padrões da indústria descartam o algoritmo e substituem-no por alternativas robustas como a família SHA-2 (SHA-256) ou SHA-3.
Quando descarrega software, imagens de sistema ou atualizações críticas, os fornecedores costumam publicar o valor hash oficial do ficheiro. Ao calcular localmente o hash do seu download e compará-lo com o publicado, pode validar instantaneamente que o ficheiro não foi corrompido durante a transferência nem alterado de forma maliciosa.
• Downloads verificados com SHA-256: É o padrão atual para verificar a autenticidade de software distribuído na rede.
• Deteção de duplicados no armazenamento: Os serviços na nuvem e os sistemas de ficheiros empresariais utilizam hashes para identificar ficheiros idênticos, poupando espaço de armazenamento sem necessidade de ler o conteúdo completo de cada documento.
Na assinatura de documentos eletrónicos e nos certificados de segurança SSL/TLS que protegem os sites, processar ficheiros extensos com chaves criptográficas revela-se ineficiente. A solução consiste em calcular primeiro o hash do documento ou certificado e aplicar a assinatura digital apenas sobre esse resumo.

Se um atacante modificar um único bit do documento original, o hash resultante muda completamente e a assinatura digital é imediatamente invalidada, garantindo o não repúdio e a autenticidade.
Fora do âmbito da segurança, as funções hash são pilares fundamentais do desenvolvimento de software. Estruturas como as tabelas hash ou dicionários permitem associar chaves a valores através de um índice numérico derivado. Isto possibilita a pesquisa, inserção e recuperação de dados em tempo quase instantâneo, otimizando o desempenho de motores de busca, bases de dados e sistemas de indexação massiva.
Nas redes blockchain, o hashing é o mecanismo que garante a imutabilidade do registo. Cada bloco da rede contém um conjunto de transações organizadas sinteticamente através de árvores de Merkle, o hash do cabeçalho do bloco anterior e um valor aleatório.

Ao incluir a impressão digital do bloco anterior no novo bloco, gera-se uma cadeia matemática inseparável: se alguém tentasse alterar uma única transação do passado, o hash desse bloco mudaria, quebrando a continuidade de toda a cadeia subsequente e tornando evidente a tentativa de manipulação.
• É possível reverter um hash? Não. É um processo estritamente unidirecional.
• Qual é a diferença entre MD5, SHA-1 e SHA-256? MD5: 128 bits, quebrado por colisões. SHA-1: 160 bits, obsoleto e inseguro. SHA-256: 256 bits, padrão atual e seguro.
• Por que o SHA-256 ainda é considerado seguro? Pela imensidão do seu espaço de chaves. Não existem colisões conhecidas nem capacidade de computação capaz de o vulnerabilizar.
• A computação quântica pode quebrar os hashes atuais? Não os quebra. O algoritmo de Grover reduz a sua segurança para metade, o que continua inalcançável para a tecnologia atual.
• Hash e cifra são a mesma coisa? Não. A cifra é bidirecional, o hash é unidirecional e irreversível.
As funções hash são os alicerces invisíveis que sustentam a confiança no mundo digital. Embora operem em silêncio por trás de cada palavra-passe guardada, assinatura eletrónica ou transação na rede, são a garantia de que a informação viaja segura, íntegra e sem manipulações.
Em suma, entender o hashing não é só para especialistas: é conhecer a impressão digital invisível que protege a nossa vida quotidiana na Internet.