Como obter um sistema de boot cada vez mais confiável no Linux? Esta foi uma questão levantada no blog do desenvolvedor líder do Systemd, Lennart Poettering. Ele escreveu um longo post no blog intitulado “admirável novo mundo de inicialização confiável”. Assim, Lennart Poettering descreve os problemas atuais com o processo de inicialização do Linux e como há uma trajetória para fornecer a experiência de inicialização do Linux com mais robustez, simplicidade e confiabilidade. Então, veja como melhorar o processo de inicialização confiável para Linux.
Entre os problemas vistos por Lennart e outros com a atual experiência de inicialização do Linux, os discos RAM iniciais (initrds) são gerados localmente. Portanto, não são assinados e falta uma assinatura de código para proteger o initrd. Além disso, não há nenhum componente de espaço do usuário é normalmente medido para medição cenários de processo de inicialização. Do mesmo modo, o processo de instalação do kernel pode ser complexo com uma variedade de scripts de inicialização.
Lennart também se refere às atualizações do sistema operacional como “frágeis”, as atualizações de um carregador de inicialização não são robustas, a falta de proteção contra reversão e outras proteções ausentes.
A previsão é ter um caminho de execução totalmente assinado e totalmente medido, proteções de reversão, atualizações mais simples e robustas, atestado remoto e construído em torno da funcionalidade TPM 2.0 – entre outras considerações.
Lennart Poettering fala sobre um “admirável novo mundo de inicialização confiável” para Linux
O design proposto baseia-se em uma “Unified Kernel Image” (UKI) que é uma combinação da imagem do kernel Linux, initrd e programa UEFI stub que, por sua vez, são distribuídos como um único arquivo UEFI PE que pode ser iniciado diretamente do firmware UEFI ou um carregador de inicialização. O processo de inicialização aprimorado do Linux e as imagens de kernel unificadas seriam construídas em torno de vários componentes do systemd.
Este documento pressupõe que o leitor tenha familiaridade abrangente com os chips de segurança TPM 2.0 e seus recursos (por exemplo, PCRs, medições, SRK), carregadores de inicialização, shim binários, Linux, initrds, Firmware UEFI, binários PE e SecureBoot.
Linux deve melhorar o processo de inicialização da seguinte forma:
- Forneça um caminho de execução totalmente assinado do firmware para o espaço do usuário, sem exceções;
- Forneça um caminho de execução totalmente medido do firmware ao espaço do usuário, sem exceções;
- Separe as atribuições de PCRs do TPM , por “proprietário” dos recursos medidos, para que os recursos possam ser vinculados a eles de maneira detalhada;
- Permite o pré-cálculo fácil dos valores de PCR esperados com base no kernel/initrd inicializado, configuração, identidade local do sistema.
Aqueles que desejam aprender mais sobre a arquitetura de inicialização Linux proposta do futuro por Lennart Poettering podem visitar seu blog para uma leitura detalhada na íntegra.