03 / GUIAS
Verifique downloads e integridade de arquivos com checksums
O que um hash criptográfico realmente prova, por que MD5 e SHA-1 hoje servem só para integridade, uma verificação de instalador passo a passo e como gerar hash de texto sensível sem enviá-lo.
Integridade, não autenticidade
Um hash criptográfico transforma uma entrada em impressão digital de tamanho fixo. Mudar até um bit quase certamente altera o resumo; um resumo moderno e confiável é forte evidência de que duas cópias têm os mesmos bytes.
- Evidência de integridadeUm SHA-256 correspondente obtido de fonte confiável é forte evidência de que sua cópia tem os mesmos bytes do arquivo calculado pelo publicador; não prova a identidade dele.
- Autenticidade à parteA autenticidade, não: um checksum impresso ao lado do download não diz nada sobre quem escreveu o arquivo — um atacante que substitui o download também pode substituir o checksum impresso.
- Assinaturas são outra ferramentaAutenticidade precisa de um mecanismo diferente: uma assinatura verificada contra uma chave em que você já confia, ou um checksum entregue por um canal em que você confia mais do que no próprio download.
MD5 e SHA-1 hoje são só para integridade
MD5 produz um digest de 128 bits escrito como 32 caracteres hexadecimais; SHA-1 produz 160 bits como 40 caracteres. Ambos são rápidos e bons para detectar corrupção acidental — e ambos têm colisões publicamente demonstradas, então nenhum resiste a um atacante criando um arquivo malicioso com digest igual.
A regra prática: uma correspondência de MD5 ou SHA-1 ainda pega um download truncado ou um disco falhando, porque acidentes não calculam colisões. O que esses algoritmos não conseguem mais fazer é inocentar um arquivo em que você tem motivo para desconfiar — esse juízo agora pertence ao SHA-256 ou melhor.
- MD5 está quebradoColisões de MD5 são práticas há anos: dois arquivos diferentes com o mesmo digest MD5 podem ser construídos deliberadamente, então o MD5 não consegue mais distinguir acidente de ataque.
- SHA-1 está quebradoSHA-1 seguiu o mesmo caminho: uma colisão demonstrada encerrou sua vida como primitiva de segurança, e navegadores, autoridades certificadoras e hosts de código já seguiram em frente.
- SHA-2 é a baseA família SHA-2 é a base atual: SHA-256 (64 caracteres hex) é o padrão para checksums de download publicados, com SHA-224, SHA-384 e SHA-512 (56, 96 e 128 caracteres) como irmãos para restrições diferentes.
Verifique um instalador, passo a passo
A verificação inteira leva menos de um minuto e usa ferramentas que já estão na sua máquina. A sequência importa: obtenha o digest esperado na página oficial do publicador, gere o hash da sua cópia local e compare caractere por caractere.
Uma divergência nem sempre é malícia — downloads truncados e proxies de cache corrompem arquivos rotineiramente —, mas a resposta é a mesma de qualquer forma: o arquivo falha na verificação, e o único próximo passo correto é uma cópia nova da fonte.
- Obtenha o valor esperadoEncontre o checksum publicado na página oficial de download ou de release do fornecedor — de preferência via HTTPS num domínio para o qual você mesmo navegou, não num mirror nem num trecho de resultado de busca.
- Gere o hash localmenteGere o hash do arquivo baixado localmente: shasum -a 256 no macOS ou Linux, ou Get-FileHash no PowerShell do Windows. Ambos rodam contra o seu disco; nada é enviado.
- Compare exatamenteCompare o digest completo caractere por caractere, sem distinguir maiúsculas. Um único caractere diferente significa descartar o arquivo e buscar uma cópia nova da fonte — não instale na esperança.
Gere hash de texto sensível sem enviá-lo
Muitas verificações reais são texto, não arquivos: um trecho de configuração, uma chave de licença, um fragmento de token, um valor que um colega ditou pelo telefone. Colar isso num site qualquer os entrega aos logs de outra pessoa, então o hash precisa acontecer localmente.
O SHA-256 Hash e Verificação cobre o padrão atual de 64 caracteres para checksums publicados. A verificação ali é comparação, não descriptografia: seu texto recebe hash, e os dois valores são comparados dentro do navegador.
- Local por designTexto recebe hash como UTF-8 sem normalização (1 MiB). Arquivos recebem hash como bytes originais em blocos de 1 MiB (limite de 256 MiB), incluindo arquivos vazios. Uma correspondência de digest não autentica sua fonte; MD5 e SHA-1 são inadequados para verificações de integridade adversariais. O processamento roda num Worker local cancelável com um orçamento de execução de 15 segundos.
- Comparação explícitaO modo Verificar é uma comparação explícita: cole o digest esperado e o espaço de trabalho relata correspondência ou divergência, rejeitando valores malformados de antemão — exatamente 32 caracteres hex para MD5, 64 para SHA-256.
- Mão única por construçãoUm resumo não pode ser descriptografado, mas entradas curtas ou previsíveis podem ser adivinhadas e calculadas novamente. Não use hash genérico sem salt para proteger senhas ou outros segredos de baixa entropia.
Incorpore a comparação na rotina
Checksums só funcionam quando compará-los é um hábito, e não uma reflexão tardia. Algumas pequenas disciplinas tornam a verificação confiável todas as vezes.
Crie ou compare um digest hexadecimal a partir de texto UTF-8 ou de bytes originais de arquivo. A verificação compara digests da entrada selecionada localmente; ela não descriptografa um digest nem autentica sua fonte.
- Comparação completaCompare todos os caracteres. Verificar só alguns enfraquece o teste; MD5 e SHA-1 também podem sofrer colisões do resumo inteiro, mesmo que você compare todos os caracteres.
- Nomeie o algoritmoGuarde o nome do algoritmo junto ao digest: 64 caracteres hex podem vir de vários algoritmos, e um checksum sem seu rótulo convida ao palpite.
- Refaça o hash a cada saltoRefaça o hash depois de mover um arquivo por pendrives, clientes de sincronização ou e-mail; cada salto é uma nova chance de corrupção, e o digest viaja de graça.
Publique checksums para os seus próprios arquivos
Se você distribui arquivos — um binário de release, um conjunto de dados, uma ferramenta interna — publique checksums junto a eles. Custa um comando por artefato e dá a cada destinatário um jeito de verificar a integridade sem falar com você.
O SHA-512 Hash e Verificação produz o digest de 128 caracteres localmente quando você precisa da forma mais longa, e os irmãos SHA-224 e SHA-384 cobrem o resto da família SHA-2 — mesmo motor, mesma aba, mesmo limite.
- SHA-256 no mínimoPublique SHA-256 no mínimo; adicione SHA-512 ao lado quando seu público verifica em plataformas onde ele é mais rápido, e rotule cada digest com seu algoritmo.
- Mesmo nível de confiançaSirva os checksums do mesmo nível de confiança do próprio download, de preferência de uma página ou repositório que seus usuários já consideram autoritativo.
- MD5 como rótulo legadoMantenha linhas MD5 apenas como rótulos de compatibilidade legada, claramente marcadas como verificações de integridade contra corrupção acidental — nunca como verificação de segurança.
Verificação é uma parte de confiar numa ferramenta.
Aprenda a conferir o caminho de dados de qualquer ferramenta online antes de entregar um arquivo a ela — o mesmo ceticismo que um checksum recompensa.