Por que a assinatura de pacotes / códigos é considerada mais segura e como funciona?

3

Uma espécie de pergunta noob, mas eu tenho lido sobre assinatura e como isso torna as distribuições Linux mais seguras. Docker recentemente adicionou assinatura de imagem, o que parece legal. Por que isso é tão importante? Só porque eu posso saber com segurança que se a pessoa A disser que eles fizeram algo, então quando eu baixar e instalar essa coisa, posso fazer algo para garantir que a Pessoa A de fato criou essa coisa?

Estou tendo dificuldade em entender por que isso torna o software mais inerentemente seguro. E se a pessoa A for mal-intencionada? Isso é apenas a seu critério? Isso não parece ser um ótimo sistema.

Como tudo funciona a partir de um alto nível? Eu também estava lendo sobre anéis de confiança GPG. O GPG está usando as mesmas chaves do ssh ou https? Se não, qual a diferença?

    
por duder_one 19.11.2015 / 01:56

2 respostas

3

Seu entendimento está correto. A assinatura de pacotes permite que você verifique se os pacotes baixados vieram dos desenvolvedores confiáveis. Isso elimina a possibilidade de um servidor de distribuição não autorizado alterar de qualquer maneira qualquer informação que tenha sido assinada.

Mas como você disse - What if Person A is malicious? Is that just up to your discretion? - Exatamente - o processo de assinatura não tem nada a ver com as intenções da pessoa. Isso só ajudará você a garantir que os dados vieram deles e não foi adulterado.

A assinatura digital é como um passaporte - prova a identidade de seu titular, mas não informa nada sobre suas intenções.

I'm having a hard time understanding why this makes software more inherently safe

Porque impede que pessoas não autorizadas alterem pacotes ou código-fonte nos servidores de distribuição. Por exemplo, se eu estiver hospedando um espelho público de uma distribuição Linux no meu próprio computador, posso substituir o pacote OpenSSL legítimo pelo meu próprio malicioso. Se alguém fizer o download e executar o processo de verificação de assinatura, ele falhará, já que eu mudei o pacote. Um usuário pode decidir não instalá-lo.

Para que esse esquema funcione, os usuários finais precisam baixar chaves criptográficas públicas de seus desenvolvedores e confirmar que confiam nelas. Depois disso, eles devem ativar o processo de verificação de assinatura em seu sistema operacional.

Aqui está um extrato da documentação do Gentoo referente a este assunto.

How does the whole thing work from a high level? I was also reading about GPG rings of trust. Are GPG using the same keys as ssh or https? If not, what's the difference?

Embora eu possa tentar explicar, duvido que possa fazer melhor do que as pessoas do link .

Além disso, o YouTube tem muitos vídeos sobre esse assunto.

    
por 19.11.2015 / 03:11
1

A ideia é que você saiba quem é a pessoa A e tenha uma razão para confiar neles. Milhares de outras pessoas também confiam na pessoa A, por isso, se fizerem uma construção maliciosa, haverá muitas pessoas que a conseguirão. Uma vez que a compilação maliciosa seria assinada, eles teriam provas de que foram traídos por A, em vez de apenas provar que há algum tipo de problema em algum lugar (poxa, talvez eles tenham feito o malicioso se construir).

Por outro lado, sem assinatura de código, você precisa confiar em todo o caminho pelo qual obtém o código. E se você receber um código malicioso, você não tem ideia de quem culpar ou de quem parar de confiar.

    
por 19.11.2015 / 02:57