Verificando a integridade de arquivos

Caso você baixe algum arquivo da internet ou receba-o diretamente de alguém, é possível verificar sua integridade para saber se ele é o mesmo que o original ou foi modificado. Se você é quem está enviando o arquivo, então isso irá garantir que o que você mandou é o que foi recebido. Mostraremos duas formas de fazer isso.

Arquivos assinados

Usaremos o GnuPrivacyGuard para assinar arquivos. É preciso ter previamente um par de chaves GPG. Seu par de chaves mais recente será usado por padrão para criar uma assinatura. Caso deseje assinar com outro usuário, utilize o marcado -u. Todos os comandos de assinatura requerem a senha de acesso à chave privada do usuário assinante.

Assinando

Digite o seguinte comando para criar uma assinatura separada do arquivo:

$ gpg -b arquivo

O resultado será a assinatura chamada:

arquivo.sig

Também é possível criar um novo arquivo assinado, dois em um:

$ gpg -s arquivo

O resultado será o seguinte:

arquivo.gpg

Para criar uma assinatura separada em texto claro, execute:

$ gpg --clearsign arquivo

O resultado será um arquivo de mesmo nome com a extensão .asc. O uso desse tipo de assinatura, entretanto, é limitado pois você pode apenas conferir se a assinatura é válida e não o arquivo em si. Utilize as duas primeiras opções.

Verificando

Para verificar um arquivo corretamente, é preciso ter a chave pública do remetente no seu conjunto de chaves públicas.

Se você recebeu o arquivo e sua assinatura separados, execute:

gpg --verify arquivo.sig arquivo

O resultado positivo será algo assim:

gpg: Signature made Sex 19 Mai 2017 14:52:06 -03 using RSA key ID ####
gpg: Good signature from "usuario <usuario@email.org>"
gpg: AVISO: Esta chave não está certificada com uma assinatura confiável!
gpg:        Não há indicação de que a assinatura pertence ao dono.
Impressão da chave primária: #### #### #### ####

Caso você receba algo assim:

gpg: Signature made Fri 09 Oct 2015 05:41:55 PM CEST using RSA key ID 4F25E3B6
gpg: Can't check signature: No public key

Isso significa que ou você não possui a chave pública da pessoa ou a assinatura foi gerada por outra pessoa e o arquivo deve ser tratado como suspeito.

Se você recebeu um único arquivo com a terminação .gpg, então execute apenas:

$ gpg --verify arquivo.gpg

Comparando os CHECKSUMs

Outra forma de verificar a integridade de um arquivo é comparar o checksum ou hash (resumo) de SHA1 do arquivo recebido com o do original. A função SHA1 é uma função de dispersão criptográfica que gera um código de 160 bits que resume o arquivo.

Se você baixar o arquivo de instalação do GnuPG do site do GnuPG, execute:

$ sha1sum gnupg-2.0.30.tar.bz2

e compare o resultado com o hash anunciado no site. A cara do hash do SHA1 é a seguinte:

a9f024588c356a55e2fd413574bfb55b2e18794a  gnupg-2.0.30.tar.bz2

Esse não é tido como um método tão seguro quanto a assinatura, dado que se alguém consegue alterar um arquivo em trânsito, é possível que também consiga alterar o hash anunciado no site. Mas mesmo assim, comparar os valores de checksum é muito mais confiável do que nada.

Exercícios:

Aqui vão dois exemplos para você exercitar o que aprendeu. Lembre-se de baixar as chaves públicas de quem estiver assinando o arquivo que você deseja baixar.

  1. Baixe a instalação do GnuPG. Verifique a assinatura e compare o checksum.
  2. Baixe a última versão do TailsOS. Verifique o arquivo .ISO com a assinatura disponibilizada no site.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *