Lennart Pottering propôs uma nova arquitetura de inicialização verificada pelo Linux

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

Adicionar um comentário