Dê uma olhada no arquivo .asc
, você verá que começa com:
-----BEGIN PGP SIGNATURE-----
Portanto, esta é uma Assinatura do PGP. Significa que assina algum conteúdo com alguma chave PGP específica.
1) O conteúdo
Com base no nome, o conteúdo é o arquivo .txt
, é a lista de arquivos correspondentes ao software a ser baixado e cada arquivo tem seu hash correspondente.
2) A assinatura
Se você lançar gpg
em ambos os arquivos, aqui está o resultado:
$ gpg --verify cmake-3.11.0-rc3-SHA-256.txt.asc cmake-3.11.0-rc3-SHA-256.txt
gpg: Signature made Fri Mar 9 10:29:10 2018 EST
gpg: using RSA key 2D2CEF1034921684
gpg: Can't check signature: No public key
Então, como tudo funciona? Você deve ter a chave 2D2CEF1034921684
em seu chaveiro local. Como você consegue, e mais importante você se certifica de obter o apropriado? (o id por si só não é suficiente). Este é o lugar onde o modelo de web de confiança do OpenPGP ocorre. Seria muito longo para detalhar aqui, mas em suma, idealmente, você tem acesso às chaves fora da banda e você tem meios para autenticá-lo ... ou para autenticar alguma outra chave de alguém que você conhece que em si tenha autenticado a outra chave . E / ou você encontra on-line em um ou vários lugares, protegido por HTTPS (com um certificado e CA em quem você confia) e, idealmente, com o DNSSEC.
Se você tiver a chave pública e confiar que ela é boa e não falsificada (e que normalmente corresponde aos desenvolvedores de software da ferramenta que você está tentando baixar), o comando acima mostra que .txt
arquivos não foram adulterados. E, por sua vez, isso fornece o hash de todos os arquivos de arquivos, para que você possa fazer o download e executar novamente o algoritmo de hash (SHA256 como escrito no nome do arquivo) e compará-lo com o valor armazenado no arquivo.
Se alguém tiver comprometido o servidor e alterado alguns arquivos, você pode, como você mesmo disse, também alterar o arquivo .txt
com os novos hashes para que você acreditasse que os arquivos correspondam.
No entanto, esse terceiro não seria capaz de gerar o arquivo .asc
adequado com a assinatura PGP (sobre gpg --verify
você receberia um erro sobre assinatura inválida), porque para isso ele precisaria ter acesso à chave privada que é supostamente corretamente protegido e não armazenado no servidor da web de qualquer maneira.
E se gerar com outra chave, você a verá porque não confiará nessa chave desconhecida.
Mas é claro que todo o modelo entra em colapso se a chave em si estiver comprometida.