Lennart Poettering publicou uma proposta para modernizar o processo de inicialização das distribuições Linux, com o objetivo de resolver os problemas existentes e simplificar a organização de uma inicialização completa verificada que confirma a confiabilidade do kernel e do ambiente do sistema subjacente. As mudanças necessárias para implementar a nova arquitetura já estão incluídas na base de código do systemd e afetam componentes como systemd-stub, systemd-measure, systemd-cryptenroll, systemd-cryptsetup, systemd-pcrphase e systemd-creds.
As mudanças propostas se resumem à criação de uma única imagem universal UKI (Unified Kernel Image), combinando a imagem do kernel Linux, um manipulador para carregar o kernel do UEFI (UEFI boot stub) e o ambiente do sistema initrd carregado na memória, usado para inicialização inicial na fase anterior à montagem do FS raiz. Em vez de uma imagem de disco RAM initrd, todo o sistema pode ser empacotado em UKI, o que permite criar ambientes de sistema totalmente verificados carregados na RAM. A imagem UKI é formatada como um arquivo executável no formato PE, que pode ser carregado não apenas usando bootloaders tradicionais, mas também pode ser chamado diretamente do firmware UEFI.
A capacidade de chamar da UEFI permite usar uma verificação de integridade da assinatura digital que abrange não apenas o kernel, mas também o conteúdo do initrd. Ao mesmo tempo, o suporte para chamadas de gerenciadores de inicialização tradicionais permite manter recursos como entrega de várias versões do kernel e reversão automática para um kernel funcional se forem detectados problemas com o novo kernel após a instalação da atualização.
Atualmente, na maioria das distribuições Linux, o processo de inicialização usa a cadeia “firmware → camada de correção da Microsoft assinada digitalmente → carregador de inicialização GRUB assinado digitalmente pela distribuição → kernel Linux assinado digitalmente → ambiente initrd não assinado → root FS”. A falta de verificação do initrd nas distribuições tradicionais cria problemas de segurança, pois, entre outras coisas, neste ambiente são recuperadas as chaves para descriptografar o sistema de arquivos raiz.
A verificação da imagem initrd não é suportada, pois este arquivo é gerado no sistema local do usuário e não pode ser certificado com assinatura digital do kit de distribuição, o que complica muito a organização da verificação ao usar o modo SecureBoot (para verificar o initrd, o o usuário precisa gerar suas próprias chaves e carregá-las no firmware UEFI). Além disso, a organização de inicialização atual não permite o uso de informações dos registros TPM PCR (Platform Configuration Register) para controlar a integridade dos componentes do espaço do usuário, exceto shim, grub e kernel. Entre os problemas existentes, também são mencionadas a complexidade de atualização do bootloader e a impossibilidade de restringir o acesso às chaves no TPM para versões mais antigas do SO que se tornaram irrelevantes após a instalação da atualização.
Os principais objetivos da introdução da nova arquitetura de carregamento são:
- Fornece um processo de inicialização totalmente verificado que abrange desde o firmware até o espaço do usuário, confirmando a validade e integridade dos componentes que estão sendo carregados.
- Vinculando recursos controlados a registros PCR TPM, separados por proprietário.
- Capacidade de pré-calcular valores de PCR com base no kernel, initrd, configuração e ID do sistema local usado durante a inicialização.
- Proteção contra ataques de reversão associados à reversão para uma versão vulnerável anterior do sistema.
- Simplifique e aumente a confiabilidade das atualizações.
- Suporte para atualizações de sistema operacional que não exigem reaplicação ou provisionamento local de recursos protegidos por TPM.
- O sistema está pronto para certificação remota para confirmar a exatidão do sistema operacional e das configurações carregadas.
- A capacidade de anexar dados confidenciais a determinados estágios de inicialização, por exemplo, extraindo chaves de criptografia para o sistema de arquivos raiz do TPM.
- Fornece um processo seguro, automático e sem usuário para desbloquear chaves para descriptografar uma unidade de partição raiz.
- Utilização de chips que suportam a especificação TPM 2.0, com capacidade de rollback para sistemas sem TPM.
Fonte: opennet.ru