Como o fornecimento de um arquivo asc garante o download do código-fonte pretendido?

2

Estou instalando o cmake no site cmake.org e eles fornecem dois arquivos que acredito terem a intenção de verificar o download do código-fonte cmake-3.11.0-rc3.tar.gz

Na mesma página, eles têm links para baixar um arquivo cmake-3.11.0-rc3-SHA-256.txt e um cmake-3.11.0-rc3-SHA- Arquivo 256.txt.asc

O que não entendo é:

  1. Como um arquivo asc da mesma fonte (cmake.org) garante a integridade do código-fonte? Se o código fonte oferecido pelo site fosse comprometido, o invasor não poderia comprometer o arquivo asc?
  2. Não preciso de uma chave pública para verificar verdadeiramente o download do código-fonte? E eu pensei que o arquivo asc deveria ser a chave pública. No entanto, quando tento importar o arquivo asc com

    gpg --import cmake-3.11.0-rc3-SHA-256.txt.asc
    

    Recebo um erro que diz "nenhum dado OpenPGP válido encontrado"

por Ryan Oliver Lanham 16.03.2018 / 02:36

1 resposta

3

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.

    
por 16.03.2018 / 04:16