Linux: o que é inicialização segura?
No início, um computador executa um programa específico para detectar e inicializar seus componentes de hardware. Tradicionalmente, os PCs compatíveis com IBM usam o Basic Input Output System (BIOS). Em contraste, os Macs usam OpenFirmware, o Android tem um carregador de boot, apenas, e um Raspberry Pi começa a partir de um firmware mantido no System on a chip (SoC). Esta etapa inicial inclui verificações de hardware, bem como pesquisa de sistemas operacionais disponíveis na mídia de armazenamento que faz parte do computador como um disco rígido, CDROM / DVD ou um cartão SD, ou conectado a ele via rede (Network File System (NFS) , Inicialização PXE).
A ordem de pesquisa real depende das configurações do BIOS do computador. A Figura 2 mostra uma lista de dispositivos disponíveis para inicializar.
No final, uma lista de sistemas operacionais disponíveis com parâmetros específicos (chamados de “opções de inicialização disponíveis”) é exibida em um menu a partir do qual você escolhe o sistema operacional desejado para iniciar.
Desde 2012, o Secure Boot está em uso. Este artigo irá explicar o que é, qual é a intenção por trás disso e como funciona. Além disso, responderemos à pergunta se a inicialização segura é necessária para máquinas baseadas apenas em Linux e como as distribuições Linux lidam com este caso.
O que é inicialização segura?
Inicialização segura é sobre confiança. A ideia geral por trás disso é iniciar a máquina de forma segura, a fim de evitar que o computador funcione com malware desde o início. Em geral, um começo limpo com um sistema confiável é uma abordagem a ser fortemente apoiada.
O Secure Boot faz parte da Unified Extensible Firmware Interface (UEFI) - uma interface central entre o firmware, os componentes individuais do computador e o sistema operacional [3]. Por um período de cerca de cinco anos, foi desenvolvido pela Intel e Microsoft como um substituto para o BIOS. Em 2012, versão 2.3.1 de UEFI foi introduzido com o Microsoft Windows 8. A Microsoft tornou obrigatório para os fabricantes de computador implementarem UEFI se desejassem obter uma certificação do Windows 8 para suas máquinas recém-construídas [15].
Mas por que a inicialização segura é chamada de inicialização segura? O que o torna uma opção de inicialização segura? A inicialização segura só permite a inicialização a partir de carregadores de inicialização atribuídos anteriormente e, portanto, destina-se a impedir a inicialização de malware ou outros programas indesejados. Um BIOS tradicional inicializaria qualquer software. Ele até permitiria que malware, como um rootkit, substituísse seu carregador de boot. O rootkit seria então capaz de carregar seu sistema operacional e permanecer completamente invisível e indetectável em seu sistema. Enquanto com a inicialização segura, o firmware do sistema primeiro verifica se o carregador de inicialização do sistema está assinado com uma chave criptográfica. A chave criptográfica é uma chave que foi autorizada por um banco de dados contido no firmware. Somente se a chave for reconhecida permitirá que o sistema inicialize. Essa assinatura válida deve seguir uma especificação da Autoridade de Certificação (CA) da UEFI da Microsoft.
Perspectivas diferentes
À primeira vista, isso parece muito bom, mas sempre há dois lados da moeda. Como as vantagens e desvantagens habituais coexistem. As críticas da imprensa elogiam ou demonizam a inicialização segura, dependendo de quem está escrevendo a crítica.
Em primeiro lugar, tenha em mente que a autoridade sobre as chaves criptográficas está nas mãos de um único player global - a Microsoft. Fornecer energia a milhões de máquinas para uma única empresa nunca é uma boa ideia. Dessa forma, a Microsoft garante a si mesma o controle total de sua máquina. Com uma única decisão, a Microsoft é capaz de bloquear todo o mercado com um único golpe e barrar seus concorrentes e você como cliente. E.g. se desejar instalar hardware de um fabricante diferente em um estágio posterior, você precisará garantir que a chave do novo componente foi armazenada no sistema de banco de dados. Deixando você com flexibilidade e escolhas restritas - especialmente se você for um desenvolvedor.
Em segundo lugar, não apenas suas escolhas de hardware são restritas, mas também as escolhas de seu sistema operacional devem ser limitadas devido à tecnologia UEFI introduzida pelo Windows. Isso significa que está dificultando a vida da comunidade Linux. Antes de seu uso em hardware baseado em UEFI, os carregadores de boot do Linux, como o GRUB, precisam primeiro ser certificados e, portanto, ele retarda o desenvolvimento bastante rápido, pois a comunidade Open Source é conhecida por. Ninguém sabe o que acontece se o validador central cometer um erro durante a validação ou bloquear o lançamento de um software atualizado.
Terceiro, o que o termo malware significa hoje e amanhã? Inclui sistemas operacionais de concorrentes [5] ou eles são excluídos? O processo de validação é executado por trás das cortinas e ninguém pode provar isso.
Em quarto lugar, existem reservas quanto à segurança. De acordo com os desenvolvimentos atuais, o comprimento das chaves criptográficas é relativamente curto. A inicialização segura permite apenas certificados X509 e chaves RSA com um comprimento fixo de 2048 bits [16]. Em um futuro próximo, com o uso de paralelização em massa e mais poder de computação com base na virtualização, esse nível de segurança deverá ser quebrado. Hoje, as chaves criptográficas com comprimento de 4096 bits são recomendadas.
Quinto, parece que o software, oferecido por um grande fornecedor e certificado, é seguro e sem erros. Como mostra a história, todos sabemos que isso não é verdade, o software sempre contém bugs. Uma certificação apenas o ilumina com uma falsa sensação de segurança.
Soluções para código aberto
Mas onde há um problema, também há uma solução. A Microsoft oferece generosamente a oportunidade para os distribuidores Linux acessarem seu portal Microsoft Sysdev, a fim de ter seus carregadores de boot assinados [17]. No entanto, este serviço vem com uma etiqueta de preço.
Distribuições Linux têm apenas um “shim” [11] assinado no portal da Microsoft. O shim é um pequeno gerenciador de inicialização que inicializa o gerenciador de inicialização GRUB principal da distribuição Linux. A Microsoft apenas verifica o shim assinado e, a partir daí, sua distribuição Linux inicializa normalmente. Isso ajuda a manter o sistema Linux normalmente.
Conforme relatado por várias fontes, (U) EFI funciona bem com Fedora / RedHat, Ubuntu, Arch Linux e Linux Mint. Para Debian GNU / Linux não há suporte oficial em relação ao Secure Boot [9]. De qualquer forma, há uma postagem interessante no blog sobre como configurar isso [18], bem como uma descrição no Debian Wiki [14].
Alternativas para UEFI
UEFI não é o único sucessor do BIOS do PC - existem alternativas. Você pode dar uma olhada mais de perto no OpenBIOS [4], libreboot [7], Open Firmware [8,9] e coreboot [10]. Para este artigo, não os testamos, mas é útil saber que existem implementações alternativas e estão funcionando perfeitamente.
Conclusão
Como mencionado antes, a questão principal é a confiança. Com relação aos computadores, pergunte a si mesmo em quais partes do seu sistema você confia - os componentes de hardware (firmware, chips, TPM) e / ou os componentes de software (carregador de boot, sistema operacional, software que está em uso). Você não pode depurar todo o sistema. Pode ser útil saber que seu sistema operacional não funciona contra seus interesses e que você realiza as coisas para as quais comprou o sistema - de maneira segura, sem ser controlado por um monopolista.
Links e referências
- [1] Kristian Kißling: Debian 9 Stretch ohne Secure Boot, Linux-Magazin
- [2] UEFI Nachbearbeitung
- [3] EFI e Linux: o futuro está aqui e é terrível - Matthew Garrett
- [4] OpenBIOS, https: // openbios.info / Welcome_to_OpenBIOS
- [5] Hendrik Schwartke, Ralf Spenneberg: Einlaßkontrolle. UEFI-Secure-Boot e Alternative Betriebssysteme, ADMIN-Magzin 03/2014
- [6] Bootvorgang eines Apple Mac
- [7] Libreboot, https: // libreboot.org /
- [8] Firmware aberto (Wikipedia)
- [9] Firmware aberto, https: // github.com / openbios
- [10] Coreboot, https: // www.coreboot.org / Welcome_to_coreboot
- [11] SHIM (Github), https: // github.com / rhboot / shim
- [12] Thorsten Leemhuis: UEFI Secure Boot und Linux, FAQ
- [13] Bom Cromwell: como o Linux inicializa? Parte 3: UEFI para Shim para o próximo elo na cadeia
- [14] SecureBoot no Debian, https: // wiki.debian.org / SecureBoot
- [15] Chris Hoffman: Como funciona a inicialização segura no Windows 8 e 10, e o que isso significa para o Linux
- [16] James Bottomley: O significado de todas as chaves UEFI
- [17] Microsoft Hardware Developer Center, UEFI Firmware Signing
- [18] Inicialização segura com teste Debian
Reconhecimentos
Frank Hofmann e Mandy Neumeyer são co-autores do artigo. Os autores gostariam de agradecer a Justin Kelly por sua ajuda e comentários críticos ao escrever este artigo.