Skip to content
Latchkey

O Que É um Hash MD5? Explicado

O MD5 é uma função de hash criptográfico legada que produz um fingerprint de 128 bits, hoje considerada quebrada para segurança mas ainda vista como um checksum rápido.

O MD5 já foi a forma padrão de fazer fingerprint de dados, e você ainda vê seus digests hexadecimais curtos em toda parte. Mas o MD5 está quebrado para fins de segurança há anos - atacantes podem produzir duas entradas diferentes com o mesmo hash. Entender quando o MD5 é inofensivo e quando é perigoso importa para qualquer um que revise ferramentas de CI e segurança.

O que é o MD5

O MD5 (Message Digest 5) é uma função de hash que recebe qualquer entrada e produz um valor fixo de 128 bits, normalmente mostrado como 32 caracteres hexadecimais. Como todos os hashes, é determinístico - a mesma entrada sempre gera o mesmo digest - e uma pequena mudança na entrada embaralha toda a saída.

Por que o MD5 é quebrado para segurança

O MD5 é vulnerável a ataques de colisão: um atacante pode deliberadamente criar duas entradas diferentes que produzem o mesmo digest. Isso significa que o MD5 não pode mais provar que os dados não foram adulterados por um adversário. Para assinaturas, certificados ou verificação de downloads não confiáveis, o MD5 não deve ser usado.

Onde o MD5 ainda é aceitável

Para fins não adversariais - detectar corrupção acidental, deduplicar arquivos ou gerar uma chave de cache rápida onde segurança não é o objetivo - o MD5 ainda é rápido e adequado. A linha divisória é se um atacante poderia se beneficiar de uma colisão; se sim, use SHA-256 no lugar.

O MD5 no CI

Você vai encontrar digests MD5 em ferramentas mais antigas e em alguns metadados de pacotes. No CI, trate um MD5 usado para verificar um download de terceiros como insuficiente e prefira um sum SHA-256. Um scanner de segurança pode sinalizar o uso de MD5 no seu código como uma fraqueza que vale a pena substituir.

Choosing SHA-256 over MD5
# Prefer SHA-256 over MD5 for verifying a download
steps:
  - run: |
      sha256sum -c tool.sha256   # good
      # md5sum -c tool.md5       # avoid for security

A conclusão

O MD5 é adequado como checksum sem segurança, mas inseguro em qualquer lugar onde um atacante esteja no escopo. Na dúvida em um pipeline, recorra ao SHA-256: é quase tão conveniente e não está quebrado.

Principais conclusões

  • O MD5 é um hash legado que produz um digest de 128 bits (32 caracteres hexadecimais).
  • Ele é quebrado para segurança porque atacantes conseguem forjar colisões; não o use para verificar dados não confiáveis.
  • O MD5 ainda é aceitável para checksums não adversariais, mas o CI deve preferir SHA-256 para integridade.

Guias relacionados