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.
# Prefer SHA-256 over MD5 for verifying a download
steps:
- run: |
sha256sum -c tool.sha256 # good
# md5sum -c tool.md5 # avoid for securityA 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.