top of page

Hashing – Assegurando a Integridade de Dados


Hashing - Assegurando a Integridade de Dados

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:

  1. 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

  2. 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

  3. O destinatário recebe o arquivo e o número da hash

  4. O destinatário passa o arquivo recebido por uma função de hash e anota a hash que foi calculada

  5. O destinatário compara a hash enviada pelo remetente com a hash que foi calculada ao receber o arquivo

  6. 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.

Esquematização simplificada do processo de hashing
Esquematização simplificada do processo de hashing

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):

2023 - Criado e Desenvolvido por TheWebGuardian - Blog Informativo sem fins lucrativos.

bottom of page