Lennart Pottering propuxo unha nova arquitectura de arranque verificada de Linux

Lennart Poettering publicou unha proposta para modernizar o proceso de arranque das distribucións de Linux, destinada a resolver os problemas existentes e simplificar a organización dun arranque completo verificado que confirme a fiabilidade do núcleo e do entorno do sistema subxacente. Os cambios necesarios para implementar a nova arquitectura xa están incluídos na base de código systemd e afectan a compoñentes como systemd-stub, systemd-measure, systemd-cryptenroll, systemd-cryptsetup, systemd-pcrphase e systemd-creds.

Os cambios propostos redúcense na creación dunha única imaxe universal UKI (Imaxe unificada do núcleo), que combina a imaxe do núcleo de Linux, un controlador para cargar o núcleo desde UEFI (estub de arranque UEFI) e o ambiente do sistema initrd cargado na memoria, usado para inicialización inicial na fase antes de montar o FS raíz. En lugar dunha imaxe de disco RAM initrd, todo o sistema pódese empaquetar en UKI, o que lle permite crear ambientes de sistema totalmente verificados cargados na RAM. A imaxe UKI está formateada como un ficheiro executable en formato PE, que se pode cargar non só usando os cargadores de arranque tradicionais, senón que tamén se pode chamar directamente desde o firmware UEFI.

A posibilidade de chamar desde UEFI permítelle utilizar unha comprobación de integridade da sinatura dixital que abrangue non só o núcleo, senón tamén o contido do initrd. Ao mesmo tempo, a compatibilidade para chamar desde cargadores de arranque tradicionais permítelle conservar funcións como a entrega de varias versións do núcleo e a recuperación automática a un núcleo que funcione se se detectan problemas co novo núcleo despois de instalar a actualización.

Actualmente, na maioría das distribucións de Linux, o proceso de inicialización usa a cadea "firmware → capa shim de Microsoft asinada dixitalmente → cargador de arranque GRUB asinado dixitalmente pola distribución → kernel Linux asinado dixitalmente → ambiente initrd non asinado → root FS". A falta de verificación de initrd nas distribucións tradicionais xera problemas de seguridade, xa que, entre outras cousas, neste entorno se recuperan as claves para descifrar o sistema de ficheiros raíz.

Non se admite a verificación da imaxe initrd xa que este ficheiro xérase no sistema local do usuario e non se pode certificar cunha sinatura dixital do kit de distribución, o que dificulta moito a organización da verificación cando se utiliza o modo SecureBoot (para verificar o initrd, o o usuario debe xerar as súas propias claves e cargalas no firmware UEFI). Ademais, a organización de arranque actual non permite o uso de información dos rexistros TPM PCR (Platform Configuration Register) para controlar a integridade dos compoñentes do espazo de usuario que non sexan shim, grub e o núcleo. Entre os problemas existentes, tamén se menciona a complexidade da actualización do cargador de arranque e a imposibilidade de restrinxir o acceso ás claves no TPM para versións antigas do SO que se volveron irrelevantes despois de instalar a actualización.

Os principais obxectivos da introdución da nova arquitectura de carga son:

  • Proporcionar un proceso de arranque totalmente verificado que abarca desde o firmware ata o espazo do usuario, confirmando a validez e integridade dos compoñentes que se inician.
  • Vinculación de recursos controlados aos rexistros PCR de TPM, separados polo propietario.
  • Capacidade de precalcular os valores de PCR baseados no núcleo, initrd, configuración e ID do sistema local utilizados durante o arranque.
  • Protección contra ataques de retroceso asociados coa recuperación a unha versión vulnerable anterior do sistema.
  • Simplifica e aumenta a fiabilidade das actualizacións.
  • Compatibilidade con actualizacións do sistema operativo que non requiren a reaplicación ou a subministración local de recursos protexidos por TPM.
  • O sistema está preparado para a certificación remota para confirmar a corrección do SO cargado e a configuración.
  • A capacidade de anexar datos confidenciais a determinadas fases de arranque, por exemplo, a extracción de claves de cifrado para o sistema de ficheiros raíz do TPM.
  • Proporcionar un proceso seguro, automático e libre de usuarios para desbloquear claves para descifrar unha unidade de partición raíz.
  • Uso de chips compatibles coa especificación TPM 2.0, coa posibilidade de retroceder a sistemas sen TPM.

Fonte: opennet.ru

Engadir un comentario