Pular para o conteúdo

BlogPrivacidade e segurança6 min de leitura

MD5 ou SHA-256: qual hash você deve usar?

O MD5 e o SHA-256 transformam um arquivo em uma impressão digital curta, mas só um deles ainda é confiável quando alguém pode estar tentando enganar você. Cronometramos sete funções de hash e vimos o que «quebrado» realmente significa.

Um arquivo, uma impressão digital e dois hashes, o MD5 marcado como quebrado e o SHA-256 como seguro.

Páginas de download, ferramentas de backup e relatórios forenses citam hashes: às vezes MD5, às vezes SHA-256, às vezes os dois. Eles parecem iguais, longas sequências de letras e dígitos, mas não são intercambiáveis. Cronometramos sete funções de hash no navegador e vimos o que «quebrado» realmente significa para o MD5, para saber quando cada uma é a escolha certa.

O que é um hash

Uma função de hash transforma qualquer quantidade de dados numa impressão digital curta e de tamanho fixo. Os mesmos dados sempre dão a mesma impressão digital, e a menor mudança dá uma completamente diferente. Basta trocar uma maiúscula:

MD5     Tooloat  dc73decfa67455e9850e5c5436f0f352
MD5     tooloat  3cf2985ef86fe54d497628b19ec2ffa3

SHA-256 Tooloat  593679c12c57025648598e66c6fdd88b1dcbf8b58543a3c150817e8dd48be2db
SHA-256 tooloat  31f0fbc2bb921f2f1083df2e23a4dd3bdc2a626ae71b6b8cd90849a5efc831ef

É isso que torna os hashes úteis para verificar arquivos. Se o SHA-256 do seu download bate com o que o autor publicou, o arquivo é o que ele publicou, até o último bit.

O que «quebrado» significa para o MD5

Um hash seguro precisa tornar praticamente impossível encontrar duas entradas diferentes com a mesma impressão digital, uma colisão. Para o MD5 isso deixou de ser verdade em 2004, quando pesquisadores publicaram as primeiras colisões. Desde então os ataques só melhoraram:

  • 2008: pesquisadores usaram colisões de MD5 para criar uma autoridade certificadora falsa em que os navegadores teriam confiado.
  • 2012: o malware de espionagem Flame usou uma colisão de MD5 para falsificar um certificado de assinatura de código da Microsoft, de modo que parecia uma atualização do Windows.
  • Hoje: ferramentas gratuitas geram em segundos, num notebook comum, um par de arquivos diferentes com o mesmo MD5.

O SHA-1 veio em seguida. Em 2017, uma equipe do Google e do CWI de Amsterdã publicou dois arquivos PDF diferentes com o mesmo SHA-1, e em 2020 o ataque já era prático contra formatos do mundo real. O SHA-256, da família SHA-2, não tem nenhuma colisão conhecida, nem o SHA-512 ou o BLAKE3.

O ataque tem um limite importante. Uma colisão significa que alguém criou dois arquivos que batem entre si. Ela não permite criar um arquivo novo que bata com um MD5 que você já tem, um problema muito mais difícil que ninguém resolveu para o MD5. Essa distinção decide quando o MD5 ainda é aceitável.

Velocidade

Hash de um arquivo de 512 MB no navegador
  • CRC-32222 MB/s
  • MD5186 MB/s
  • BLAKE3171 MB/s
  • SHA-1157 MB/s
  • SHA-512135 MB/s
  • SHA-256104 MB/s

O gerador de hash do Tooloat num Intel Xeon de 2013, lendo o arquivo em pedaços de 2 MB. Só a leitura rodou a 325 MB/s.

Aqui o MD5 foi 1,8 vez mais rápido que o SHA-256. Na prática, um vídeo de 4 GB leva uns 22 segundos com MD5 e uns 40 com SHA-256. A diferença diminui nos processadores mais novos, muitos dos quais têm instruções próprias para SHA-256. O SHA-256 do próprio navegador, em código nativo e não em WebAssembly, já chegou a 228 MB/s na mesma máquina antiga. Com arquivos grandes, o disco costuma ser o limite de qualquer forma.

O SHA-512 ser mais rápido que o SHA-256 não é erro: ele trabalha com números de 64 bits, que combinam com os processadores modernos, e processa mais dados por passo. O BLAKE3 é o mais novo do grupo e foi feito para ser ainda mais rápido com vários núcleos e instruções largas, que nosso teste de uma só thread não usa.

Quando o MD5 serve e quando não

UsoMD5 ou SHA-1Use no lugar
Conferir um download com um checksum do autorSó se for o único que ele publicaSHA-256
Detectar danos acidentais em backups ou transferênciasServeQualquer um, incluindo CRC-32
Encontrar arquivos duplicados no seu próprio discoServeQualquer um
Assinaturas digitais e certificadosInseguroSHA-256 ou mais forte
Provar que outra pessoa não alterou um documentoInseguroSHA-256 ou mais forte
Guardar senhasInseguroArgon2id, bcrypt ou scrypt

A regra prática: se alguém puder preparar de propósito um arquivo para enganar a verificação, use SHA-256. Se o único perigo for acidental, como um cabo, um disco ou uma rede trocando um bit, o MD5 ainda detecta, e o bem mais simples CRC-32 também.

Como conferir o hash de um arquivo

  1. Abra o gerador de hash e solte o arquivo. Ele é lido em pedaços pequenos no seu navegador, então até arquivos grandes funcionam e nada é enviado.
  2. Escolha os algoritmos de que precisa. Todos são calculados numa só passagem, então acrescentar mais custa pouco.
  3. Cole o checksum da página de download em Verificar com um checksum, ou todo o conteúdo de um arquivo SHA256SUMS. A ferramenta descobre o algoritmo pela correspondência e diz se bate.

Se o checksum não bater, não abra o arquivo. Baixe de novo, e se continuar diferente, o arquivo não é o que o autor publicou.

Perguntas e respostas

Ainda é seguro usar MD5?

Para detectar corrupção acidental, sim. Para qualquer coisa em que alguém possa preparar um arquivo de propósito, como assinaturas, certificados ou verificações de segurança, não: colisões de MD5 são criadas em segundos.

O SHA-256 é mais rápido que o MD5?

Não. No nosso teste no navegador o MD5 rodou a 186 MB/s e o SHA-256 a 104 MB/s. Processadores com instruções SHA diminuem a diferença, e o SHA-256 nativo do navegador chegou a 228 MB/s na mesma máquina.

Dois arquivos podem ter o mesmo hash SHA-256?

Em teoria sim, já que há mais arquivos possíveis que hashes, mas nenhum par assim foi encontrado, e encontrar um está muito além de qualquer método conhecido.

Qual hash devo usar para checksums?

SHA-256. É o padrão dos checksums publicados, todo sistema operacional consegue calculá-lo e ele é seguro contra adulteração proposital.

Ferramentas deste artigo

Mais do blog

Privacidade e segurança6 min de leitura

Como remover a localização e outros metadados das fotos

Toda foto carrega dados ocultos sobre a câmera, o horário e muitas vezes o lugar. Lemos o que nove fotos publicadas ainda revelavam, adicionamos uma localização para mostrar sua precisão e conferimos que removê-la deixa a imagem intacta.

Privacidade e segurança6 min de leitura

Quanto tempo leva para quebrar uma senha?

A força de uma senha vem de quantas senhas poderiam ter sido escolhidas, não de quão complicada ela parece. Calculamos quanto tempo os tipos comuns de senha resistem a uma placa de vídeo moderna, e por que as inventadas pelas pessoas caem primeiro.

Privacidade e segurança6 min de leitura

Os conversores online enviam seus arquivos?

A maioria dos conversores online envia seu arquivo para um servidor; alguns fazem o trabalho no seu navegador. Veja como saber em um minuto de que tipo é um site, e como foi cada requisição quando convertemos uma foto no nosso.

Esc