Diferença entre vmlinuz * -generic e * -generic.efi.signed

4

Em /boot , existem dois arquivos de kernel vmlinuz :

vmlinuz-4.8.0-37-generic
vmlinuz-4.8.0-37-generic.efi.signed

Qual é a diferença entre esses dois arquivos do kernel? Quem assina o segundo (se é realmente assinado, como o nome sugere), e como meu UEFI / BIOS saberá confiar e usar *-generic.efi.signed em vez de *-generic ?

    
por PJ Singh 16.02.2017 / 00:27

2 respostas

3

O kernel com um nome de arquivo terminando com .efi.signed é assinado pela Canonical para uso com o Secure Boot. A maioria dos computadores tem firmware que não confia na assinatura da Canonical; é apenas com a ajuda do programa Shim (o binário shimx64.efi no ESP ) que o kernel assinado é confiável.

Para elaborar um pouco, o caminho de carregamento para componentes assinados do Ubuntu com Secure Boot ativado é assim:

EFI -> Shim -> GRUB 2 -> Kernel -> Kernel modules
  • O EFI confia no Shim porque ele foi assinado pela Microsoft, cujas chaves estão incorporadas no firmware.
  • O Shim corrige o subsistema de inicialização segura da EFI e inclui a chave pública da Canonical. Shim confia no GRUB 2 porque foi assinado com a chave privada da Canonical.
  • O GRUB 2 chama o sistema de inicialização segura da EFI (agora corrigido pelo Shim) para verificar o kernel, que também é assinado com a chave privada da Canonical.
  • O kernel verifica se os módulos do kernel estão assinados pela chave privada da Canonical ou por alguma outra chave na cadeia de inicialização segura.
Antes do IIRC, o Ubuntu 15.10, o GRUB 2 do Ubuntu não aplicava a política de Inicialização Segura no kernel, e o kernel não impunha a política de Inicialização Segura nos módulos do kernel. Isso foi reforçado recentemente, no entanto. AFAIK, não há planos para exigir que os binários comuns do sistema sejam assinados.

Eu não sei de antemão porque há um arquivo de kernel não assinado no Ubuntu. O arquivo assinado funciona bem, mesmo em sistemas que não suportam inicialização segura (incluindo computadores com BIOS puro). Assim, o arquivo não assinado é bastante redundante, AFAIK.

Observe que cada um dos componentes do Shim em diante pode ser obtido em um formato não assinado ou com suas assinaturas removidas. Se você mesmo construir o Shim, poderá substituir a chave pública da Canonical por sua própria, ou com qualquer outra chave pública que desejar. (A maior parte das distribuições principais tem seus próprios binários Shim com suas próprias chaves embutidas.) Construir Shim a partir da fonte seria inútil, a menos que você faça a Microsoft assiná-lo, o que custaria US $ 100 e um lote de esforço. Se você precisar assinar as coisas sozinho, adicionar sua chave como uma Chave do Proprietário da Máquina (MOK) é mais fácil do que recriar o Shim e assiná-lo pela Microsoft. Você também pode ajustar os conjuntos de chaves suportados diretamente pelo EFI, o que pode evitar a necessidade de Shim. Assim, há muita coisa que você pode mudar sobre como todas essas peças se encaixam. Veja minha página principal em Secure Boot e minha página sobre assumir o controle total do Secure Boot para obter mais detalhes sobre como gerenciar o Secure Boot.

    
por Rod Smith 18.02.2017 / 00:56
1

A versão assinada é para inicialização segura de UEFI. Foi assinado usando criptografia assimétrica. Isso significa que a chave para descriptografá-lo é diferente daquela usada para criptografá-lo. A bios tem apenas uma chave pública e pode verificar se a assinatura está correta (não foi adulterada). A chave privada para criar tal assinatura é secreta e, portanto, você não pode criá-la por conta própria. É por isso que o bios confia e permite que ele comece.

Para mais informações: link

    
por E.F. Nijboer 16.02.2017 / 00:49