Hashing – Assegurando a Integridade de Dados
- Time do TheWebGuardian
- 8 de ago. de 2024
- 3 min de leitura

O que significa Integridade de Dados?
A integridade é um dos 3 Pilares da Segurança da Informação, conhecido como CIA: Confidentiality, Integrity, Availability. Este último, em português, seria Disponibilidade.
Mas porquê a integridade é tão importante? Porque os dados precisam ser precisos e completos.
O que uma pessoa envia a outra não pode sofrer alteração no meio do caminho (ao menos, não deveria...).
O que é Hashing?
Hashing é uma das formas de reforçar a integridade de dados. Conhecido também como “Message Digest” ou “Digital Fingerprint”, é como se fosse um resumo da mensagem.
Usar uma função de hashing garante que os dados não foram alterados acidental ou intencionalmente, desde o momento em que o remetente os envia até o momento em que são recebidos pelo destinatário.
O processo de criar uma hash envolve complexos algoritmos matemáticos para comparar dados com o valor da hash.
Características da Função de Hash
O arquivo original pode ter qualquer tamanho
A hash calculada para o arquivo terá sempre um tamanho fixo – ou seja: gera-se um resumo de tamanho determinado, independente do tamanho do arquivo original
É um processo “one-way”: é impossível obter o arquivo original a partir da hash, revertendo o processo
Se houverem 2 documentos diferentes, haverão 2 hashes diferentes. Isto quer dizer que diferentes inputs gerarão diferentes outputs
Caso algo seja alterado no arquivo original (até mesmo uma simples vírgula), a hash será alterada
Entendendo o Processo de Hash
Vamos dar o passo-a-passo simplificado de como é o processo de hashing de um arquivo:
A fonte tem um arquivo que quer enviar para alguém. Ele passa esse arquivo por uma função de hashing, e anota a hash que foi calculada
Usando um meio seguro de transferência de arquivo, o remetente envia o arquivo e o número da hash (separadamente, e não salva dentro do arquivo) ao destinatário
O destinatário recebe o arquivo e o número da hash
O destinatário passa o arquivo recebido por uma função de hash e anota a hash que foi calculada
O destinatário compara a hash enviada pelo remetente com a hash que foi calculada ao receber o arquivo
Se as 2 hashes (remetente e destinatário) forem exatamente iguais, significa que o arquivo não sofreu alterações e que é integro. Acompanhe na imagem.

Outros Usos para a Função de Hash
O processo de Hashing é utilizado em diversas situações, como um recurso de proteção de integridade ou para garantir a autenticidade:
Armazenamento de Senhas: As senhas que criamos e usamos nunca são armazenadas como texto (plain text) nos databases, por motivos de segurança. Quando criamos uma senha, seu hash é automaticamente calculado e salvo no banco de dados. Portanto, a autenticação não é a verificação da senha, mas a comparação dos hashes.
Detecção de arquivos duplicados
Verificação de corrupção acidental de dados, ou alterações acidentais (não-intencionais)
Verificação de modificações nas versões de arquivos (file version)
Usada no processo de autenticação de entidades (como explicado acima sobre senhas), em protocolos como IP-SEC
Faz parte do processo de comprovação de autenticidade em Assinaturas Digitais. Aqui, além da função de Hash, usa-se a criptografia assimétrica (que garante autenticidade) – Leia nosso Post sobre Criptografia!
Funções de Hashing Mais Usadas
1. MD5: Produz um resumo de 128 bits. É considerada insegura e seu uso deve ser evitado
2. SHA-1 – Similar ao MD5, também é considerada uma função “legacy” (ultrapassada)
3. SHA-2 – Esta função é mais segura e produz resumos de 224, 256, 384 ou 512 bits. Deve ser usada sempre que possível
4. SHA-3 – É a mais recente versão, e a mais recomendada, mas ainda não está disponível em muitas situações. Deve substituir o SHA-2
Vulnerabilidades da Função de Hashing
Apesar do hashing ser usado para detectar alterações, não é imune à mudanças deliberadas feitas por hackers e cybercriminosos.
É um recurso usado para assegurar integridade. No entanto, é vulnerável aos ataques “Man-in-the-Middle” (On-Path).
Este tipo de ataque cibernético acontece quando o malfeitor intercepta o tráfego entre o remetente e o destinatário (dados em trânsito). Por isso, chama-se “homem no meio”.
Quando você envia dados do ponto A ao B usando uma rede, o malfeitor intercepta a comunicação, altera os dados e manda uma cópia modificada ao destino.
A integridade dos dados foi violada. Os dados que você enviou não são os mesmos que vão ser recebidos pelo destinatário.
O que se orienta é, além do uso de hash, fazer uso de criptografia. Desta forma, complicamos um pouco mais a vida do atacante e fazemos bom uso dos recursos de segurança disponíveis.
NOS VEMOS NOS PRÓXIMOS POSTS!
DICA do TheWebGuardian!
Sites para calcular hashes (não só de strings):