Por que desativar a “Inicialização segura” é aplicada à política ao instalar módulos de terceiros

46

Ao instalar o 16.04 , me pediram para desativar a " Inicialização segura " se eu quisesse instalar módulos / drivers de terceiros .

Eu não cumpri.

E quando instalei manualmente os únicos drivers de terceiros que uso ( bcmwl-kernel-source ), fui solicitado novamente (durante a instalação do pacote) para desativar o "Secure Boot".

O uso do bcmwl-kernel-source funcionou perfeitamente com o Secure Boot na versão 15.10 . Isso não parece estar relacionado a um bug para mim.

Portanto, isso parece que o Ubuntu se recusa a assinar mais os drivers / módulos de terceiros para fazê-lo funcionar (??) com o "Secure Boot". Ou parece considerar os módulos de terceiros como inseguros e que quebram a "Inicialização segura", portanto, forçando a desativá-lo para deixar claro? Estou certo ?

solstício
fonte
6
Bem, IMO, é porque as pessoas (falsamente) assumem que a inicialização segura quebrará os módulos de terceiros ao dar conselhos. Informações técnicas sobre inicialização segura estão aqui - wiki.ubuntu.com/SecurityTeam/SecureBoot . Pessoalmente, não concordo com os conselhos aparentemente onipresentes para desativar a inicialização segura, funciona bem no meu hardware com a inicialização segura ativada. O IMO deixa a inicialização segura ativada, a menos que você tenha um problema, não há motivo para desativar cegamente os recursos de segurança.
Panther
8
Eu não examinei isso profundamente, mas, pelo que entendi, o 16.04 está migrando para uma aplicação mais rigorosa da Inicialização segura do que a 15.10 e as versões anteriores usadas. Especificamente, em 15.10 e versões anteriores, quando o Shim lança o GRUB, o GRUB lança qualquer kernel do Linux; as proteções de inicialização segura terminam com o GRUB. Meu entendimento é que, com o 16.04, a aplicação da política de Inicialização Segura se estende ao kernel, para que o GRUB do Ubuntu não inicie mais kernels não assinados. Se for além disso, os módulos do kernel não assinados também serão afetados, quando não eram antes. Mais uma vez, porém, não estudei isso em profundidade.
Rod Smith
1
Alguns bons antecedentes: bugs.launchpad.net/ubuntu/+source/grub2/+bug/1401532
dpb:
1
Com as pessoas mexendo com seus sistemas na tentativa de instalar módulos de terceiros, fico me perguntando se esse recurso não causará mais danos do que benefícios.
21716 Daniel
Existe alguma maneira de reativá-lo depois de desativá-lo?
precisa saber é o seguinte

Respostas:

38

Isso não é um bug, é um recurso.

Como Anthony Wong diz, quando você instala um pacote DKMS, você mesmo está compilando o pacote, portanto, a Canonical não pode assinar o módulo para você.

No entanto, você pode definitivamente usar o Secure Boot, no entanto, esse é exatamente o caso de uso em que o Secure Boot está tentando protegê-lo de si mesmo, porque ele não pode saber se confia em um módulo ou não.

Por padrão , existe uma Platform Key (PK) na sua máquina UEFI, que é a Autoridade de Certificação confiável para carregar o código no seu processador.

O GRUB, o shim ou outros mecanismos de inicialização podem ser assinados digitalmente por uma KEK confiável pela CA (PK) raiz e, portanto, o seu computador pode, sem nenhuma configuração, inicializar software como o Ubuntu Live USB / DVDs.

No Ubuntu 16.04, o kernel é construído com CONFIG_MODULE_SIG_FORCE = 1, o que significa que o kernel aplicará módulos a serem assinados por uma chave confiável na plataforma. Leve em consideração que a plataforma UEFI, por padrão, contém uma PK sobre a qual você não tem controle e, portanto, não pode assinar binários com uma chave reconhecida por sua própria máquina.

Algumas pessoas criticam isso, mas não há realmente nenhuma maneira melhor (do ponto de vista de segurança) do que ser você mesmo quem registra a nova chave desejada.

Se o seu sistema de inicialização usa shim, você pode usar algo chamado banco de dados de Chaves do Proprietário da Máquina e registrar sua chave como um MOK (você pode fazer isso com o mokutil). Caso contrário, você também pode registrar sua chave no banco de dados UEFI como uma chave de assinatura.

Depois de registrar sua chave, você pode assinar seu pacote criado pelo DKMS com o seu MOK (deve haver um script perl em /usr/src/kernels/$(uname -r)/scripts/sign-file) e, após a assinatura, você pode carregá-lo no kernel .

Concedido, alguém deve dar instruções mais visuais sobre isso e provavelmente até criar um assistente ou um padrão DKMS melhor para permitir que as chaves sejam levadas em consideração, mas é isso que temos agora.

Você pode consultar esta explicação sobre como assinar seus próprios módulos do kernel: https://askubuntu.com/a/768310/12049

ssice
fonte
1
Eu o desativei e agora recebo uma mensagem "inicializando em modo inseguro" irritante. Existe alguma maneira de desfazer isso? Não consigo explicar o problema nos fóruns aqui. @ ssice - Estou usando o UBUNTU 14.04, então não acho que isso seja relevante para mim. [
shaunakde 30/09/16
20

Em resumo, isso não é um bug, mas uma nova alteração introduzida na 16.04.

Porque o que você está instalando é um pacote dkms. Os módulos DKMS são compilados em sua própria máquina e, portanto, a Canonical não pode assinar o módulo para você. Se a Canonical não conseguir assinar, não há como verificar digitalmente. Se você tiver a inicialização segura ativada, isso significa que seu módulo não pode ser usado e, para usá-lo, será necessário desativar a inicialização segura, é por isso que você está sendo solicitado pela pergunta.

Por que isso acontece apenas em 16.04, mas não em versões anteriores, Rod Smith deu uma boa resposta. No Ubuntu 16.04, o Ubuntu começa a forçar a inicialização segura no nível do kernel. Antes do 16.04, o Ubuntu realmente não o impõe a usar o kernel assinado e os módulos do kernel assinado, mesmo que você tenha a inicialização segura ativada. Mas esse não é mais o caso em 16.04.

Este é o bug relacionado: https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1401532

Este é o projeto relacionado: https://blueprints.launchpad.net/ubuntu/+spec/foundations-x-installing-unsigned-secureboot

Anthony Wong
fonte
Eu ainda poderia carregar o módulo wl com 16.04 beta2 e após a atualização. Mas agora, com o lançamento, recebi o erro "modprobe: ERRO: não foi possível inserir 'wl': chave necessária não disponível"
solsTiCe 23/04/16
Você pode tentar executar: sudo apt install mokutil; sudo mokutil - validação de desativação
Anthony Wong
1

A resposta aceita é muito completa, mas eu gostaria de adicionar esta informação simples, extraída daqui:

https://askubuntu.com/a/843678/664391

A inicialização basicamente segura pode impedir que você carregue algum driver instalado, o que pode ser bastante frustrante. Eu já passei por isso: o driver instalado corretamente, tudo parecia bom, mas simplesmente não funcionou. Levei algum tempo para descobrir que era uma inicialização segura impedindo que o sistema operacional o carregasse.

Dhiego Magalhães
fonte