UKT se pronuncia sobre as Assinaturas do Kernel!

Entramos em contato com o Ubuntu Kernel Team, que explicou detalhes sobre a recente ausência de assinaturas do kernel Linux que acompanha o sistema Ubuntu.

| Se você apoia nosso site, desative o AdBlock quando visitá-lo, inclusive em Mobile!
Os anúncios são poucos e não invasivos. Se quiser contribuir com nosso trabalho, clique em qualquer banner de sua preferência, exceto dos Parceiros. 
Mais detalhes clicando aqui.

Conforme inicialmente teorizado aqui, e posteriormente explicado aqui, em no site, o Ubuntu Kernel Team (UKT), a equipe por trás do desenvolvimento do kernel dos Ubuntu’s – e de todos os seus sabores – explicaram em detalhes sobre a recentemente mudança no desenvolvimento e na relatada ausência de assinaturas do núcleo do sistema.

Enviei um e-mail para a equipe de desenvolvimento do Kernel do Ubuntu pedindo explicações. Afinal, em um desenvolvimento de um sistema open source, a transparência por parte dos desenvolvedores é de fundamental importância para esclarecer pontos para com os usuários.

Quem me respondeu foi Seth, um dos desenvolvedores por trás do UKT. E a explicação dele foi muito satisfatória, dando um ponto final nessa história! Leia na íntegra a explicação dele, devidamente traduzida:

Nomenclatura e Assinatura do Kernel

Por vários motivos nós fizemos mudanças nos nomes dos pacotes do 18.04.
Anteriormente, o pacote source do Linux era criado, produzindo o linux-image que NUNCA teve assinatura! Então, quando criávamos o pacote linux-signed, ele era assinado e despachado dentro do pacote linux-signed-image.

Com a chegada do 18.04, para as arquiteturas cuja assinatura era suportada, inicialmente o pacote source do kernel Linux passou a gerar o linux-unsigned-image com um kernel sem assinatura.
Então o pacote source linux-signed construía o pacote linux-image, que contém um kernel assinado.
Note que por padrão o Ubuntu NUNCA instala o linux-unsigned-image, somente o linux-image, que possui assinatura. Entenda, nós não instalamos kerneis não-assinados em nossos sistemas – novamente, somente o fazendo para os sistemas que suportam serem assinados posteriormente á instalação!

Entenda que, antes do Ubuntu 18.04 ser lançado, o pacote assinado se chamava linux-signed-kernel. E agora, com o 18.04, temos o pacote renomeado para linux-image!
Na realidade nada mudou sobre como os pacotes de kernel são assinados, só a maneira como os nomes e a organização são feitos é que mudaram.

Agora, falando um pouco sobre as mainline builds deste endereço.
Estas NUNCA foram assinadas! O pacote mudou de nome de linux-image para linux-image-unsigned, não significa que deixou de ser assinado; na verdade nunca possuíram uma assinatura.
Isso é apenas um reflexo das mudanças que trouxemos para o Bionic Beaver.

Por que o Kernel Mainline não é Assinado?

Você sabe bem que o kernel assinado deve ter uma chave privada muito bem protegida. E só é possivel criar assinaturas válidas de pacotes construídos sob a infraestrutura do Ubuntu.
As construções Mainline não são possuidores de pacotes oficiais – lembre-se, nós somente fornecemos estes pacotes para propósitos de testes, eles não são voltados para uso cotidiano e/ou servidores de produção. – Conforme relatado aqui: Esses kerneis não são apropriados para uso em produção. São produzidos com a infraestrutura tradicional e não podem ser assinados.

Você pode criar sua própria chave pública com acesso ao Shim e assinar qualquer kernel com ela. Isso te dá a mesma segurança de um modelo confiável, mas somente com sua chave, não com a nossa!
Aqui dou detalhes de como criar sua própria chave em kerneis não assinados.

Lembrando novamente que nenhuma arquitetura da árvore Mainline possui assinatura!
O Ubuntu 18.04 trouxe assinaturas para PowerPC, mas mesmo o amd64 que possui assinaturas oficiais pelo repositório, não possui assinaturas no Mainline.

A parte confusa

Você deve estar se perguntando: Por que algumas builds do Mainline possuem o nome “signed” e outros estão como “unsigned”? Essa é a parte mais confusa. Isso ocorre porque nós sempre queremos liberar o pacote chamado linux-image para os usuários finais.

Para arquiteturas sem assinatura, o pacote source do Linux produz o pacote linux-image diretamente, igualmente sem assinatura. Se a arquitetura suporta assinatura, o processo cria o linux-image-unsigned, depois é gerado o linux-signed, de onde surge o linux-image final, com um kernel assinado. Isso ocorre com todos os kerneis da linha Mainline. Talvez a gente possa produzir pacotes linux-image para evitar qualquer confusão.

Como Seth me disse, talvez eles possam voltar atrás na nomenclatura para evitar confusão com os atuais desenvolvedores e usuários finais.

Questionei-o também acerca do novo pacote linux-modules, que surgiu juntamente dos pacotes linux-image-unsigned. Seth foi direto:

Inicialmente o kernel e os módulos vinham em um único pacote chamado linux-image. Na nossa recente mudança de estrutura, nomenclatura e organização internas para o lançamento do Ubuntu 18.04, houveram mudanças na forma de assinar o pacote; para isso separamos o kernel dos módulos justamente para não haver conflitos; e criar um pacote image-modules soou mais sensato nesse caso.

Conclusão

Bom, chegamos ao fim desta matéria. As conclusões que tiramos da informação dada por Seth são quase as mesmas já mencionadas na postagem anterior sobre o tema.

Considerações:

  • Qualquer kernel Ubuntu Mainline nunca foi assinado. Apenas mudou de nomenclatura.
    Portanto nada mudou para quem o usa.
  • A mudança de nome também implica que os módulos agora estão vindo separados, no pacote image-modules. Tenha ciência de que você precisa desse pacote caso use algum kernel da Mainline!
  • As assinaturas servem somente para assinar módulos e garantir a segurança do SecureBoot. A ausência deles pode representar uma sutil ameaça á segurança do seu sistema desde que você tome cuidado com as fontes dos pacotes que você instala. Um pacote .deb infectado com malware pode injetar um módulo malicioso no kernel e você não terá qualquer respaldo quanto a isso.
  • Usar módulos proprietários do VirtualBox, NVIDIA, Intel, Java e outros automaticamente anulam os efeitos das chaves assinadas. Portanto quem os usa, seja um kernel unsigned ou signed, o resultado será o mesmo.

Agradeço a todos que acompanharam o desenrolar dessa história!

#UrbanCompassPony

Deixe um comentário