Como verificar arquivos através de soma de verificação (checksum)

Quando baixamos arquivos de sites (como uma distribuição linux ou softwares de segurança), é necessário conferir se aquilo que chegou é o mesmo que foi enviado pelo servidor. É sabido que ataques de man-in-the-middle podem acontecer em redes monitoradas e assim informações podem ser modificadas ou substituídas por semelhante.

Uma forma de ter a confirmação de que o arquivo que você está baixando é de fato aquele oferecido pelo site é através da soma de verificação (checksum). Existem várias opções de geração de soma de verificação: MD5, SHA, etc. (Outra opção de verificação é a assinatura com GPG, ver essa postagem.) A ideia é o seguinte: após receber o arquivo, você rodará uma ferramenta que cria uma soma de verificação com base no arquivo. Compare esse resultado com a soma de verificação fornecida pelo site (que pode estar postada textualmente ou através de um arquivo, por exemplo, .md5). Se elas forem iguais, o arquivo é o mesmo. Caso contrário, algo pode ter dado errado.

 

 

Exemplo: verificando o arquivo de instalação do LineageOS:

Baixe o arquivo .zip de instalação do Lineage (por exemplo, para o Moto G falcon)

No site, temos o link para o arquivo e, logo abaixo, um link para a soma de verificação sha256 e outro para a sha1. Ao clicar no sha256, a seguinte informação apareceu:

9f772038b089bfefde5df76d69fee657a5b8a24048e3a73adf4159c244bfad46 lineage-14.1-20171107-nightly-falcon-signed.zip

Quando o arquivo tiver terminado de baixar, vá no terminal do linux, acesse a pasta onde foi salvo o arquivo e rode:

$ sha256sum lineage-14.1-20171107-nightly-falcon-signed.zip

Outras funções semelhantes são sha1sum e md5sum. Compare o resultado da linha de comando com aquilo fornecido pelo site. Se você baixou um arquivo .md5, por exemplo, peça para mostrar seu conteúdo com o comando:

$ cat lineage-14.1-20171107-nightly-falcon-signed.zip.md5

Lembrete: o Lineage não fornece soma de verificação MD5. Aqui é só um exemplo ilustrativo.

Ambas informações devem ser a mesma.

Adendos:

  • Se o site foi comprometido, esse método não serve.
  • Assinar um arquivo usando GPG é bem mais confiável.
  • A soma de verificação MD5 só confere o conteúdo do arquivo, ignorando o nome. Se você mudar as permissões do arquivo, a soma de verificação irá mudar também.
  • Vários linux já vêm com essas ferramentas de verificação, inclusive a GnuPG.
  • Você pode criar um arquivo com a soma de verificação e o nome do arquivo através do comando:
    $ sha256 arquivo.zzz > soma.sha256

    Onde arquivo.zzz é o arquivo sobre o qual será criada a soma de verificação e soma.sha256 é o resultado, gravado no seu disco.