Existe uma maneira de saber se meu bootloader EFI aceitaria a assinatura do binário sem reinicializar?

Existe uma maneira de saber se meu bootloader EFI aceitaria a assinatura do binário sem reinicializar?

Suponha que eu tenha acabado de instalar um gerenciador de inicialização EFI assinado (por exemplo, grub2do Ubuntu 14.10 amd64 em um Lenovo IdeaPad U410 que só pode inicializar em EFI de inicialização segura ou modo legado) em uma máquina de dentro de um sistema Linux ou (mais especificado) baseado em Debian. Existe uma maneira de saber se a máquina inicializaria em execução sem reinicializar?

Responder1

Sim, mas você deve ter suas chaves de inicialização segura em mãos. Primeiro, esteja ciente de que existem pelo menos três formas que as chaves públicas de inicialização segura podem assumir:

  • .cer/ .derfiles – Esses arquivos são usados ​​pela maioria das implementações UEFI, bem como pela ferramenta MokManager emparelhada com o Shim.
  • .crt-- Esses arquivos são usados ​​nativamente pela maioria das ferramentas de segurança do Linux, como sbsigntoole sbverify.
  • .esl-- Esses arquivos combinam várias chaves em um arquivo. (Cada um dos outros arquivos contém uma única chave.) Se você usar uma interface de usuário de firmware ou KeyTool para salvar suas chaves, os arquivos resultantes estarão neste formato.

Se você instalou sua própria chave de proprietário da máquina (MOK) usando o MokManager, deverá ter o arquivo no formato .cer/ .der. Se você quiser testar se o binário funcionará quando inicializado com outra chave (como as chaves usadas para assinar a versão do GRUB do Ubuntu ou do Fedora), você terá que obtê-lo. Por conveniência, coletei vários com o rEFInd; você pode baixá-los aos poucosaqui.Se você tiverassumiu o controle total do Secure Boot em seu sistema,você também já deve ter as chaves que criou.

Para verificar um binário, você deve ter uma chave no .crtformulário. Se você tiver uma chave .derou .cerformulário, poderá convertê-lo:

openssl x509 -in mykey.cer -inform der -out mykey.crt

Então, você pode verificar se o binário está assinado corretamente:

sbverify --cert mykey.crt binary.efi

O resultado deve ser uma mensagem lendo Signature verification OKou Signature verification failed.

Observe que alguns UEFIs não conseguem iniciar nem mesmo binários assinados corretamente. Isso parece ser aleatório; O binário A iniciará OK, enquanto o binário B, assinado com a mesma chave, falhará. Acredito que seja um bug nas UEFIs afetadas, mas não investiguei detalhadamente. AFAIK, não afeta binários verificados via Shim, mas pode afetar o próprio Shim ou binários lançados sem a ajuda do Shim.

informação relacionada