Lennart Poettering publicó una propuesta para modernizar el proceso de arranque de las distribuciones de Linux, enfocándose en resolver las problemáticas existentes y simplificar la organización de un arranque verificado que confirme la validez del núcleo y del entorno del sistema base. Los cambios necesarios para aplicar esta nueva arquitectura ya están incluidos en la base de código de systemd y afectan a componentes como systemd-stub, systemd-measure, systemd-cryptenroll, systemd-cryptsetup, systemd-pcrphase y systemd-creds.
Las modificaciones propuestas se resumen en la creación de una única imagen universal de UKI (Imagen de Núcleo Unificado), que integra la imagen del núcleo de Linux, un controlador para el arranque del núcleo desde UEFI (UEFI boot stub) y un entorno del sistema cargado en memoria initrd, utilizado para la inicialización inicial antes de montar el sistema de archivos raíz. En lugar de la imagen de disco RAM initrd, en el UKI puede empaquetarse todo el sistema, lo que permite crear entornos del sistema completamente verificados, que se cargan en la memoria. La imagen UKI se presenta en forma de un archivo ejecutable en formato PE, que puede ser cargado no solo mediante cargadores tradicionales, sino también llamado directamente desde el firmware UEFI.
La capacidad de ser llamado desde UEFI permite utilizar la verificación de integridad y autenticidad por medio de firma digital, que abarca no solo el núcleo, sino también el contenido de initrd. Al mismo tiempo, el soporte para la llamada desde cargadores tradicionales permite mantener funciones como la entrega de varias versiones del núcleo y la reversión automática al núcleo operativo en caso de que surjan problemas con el nuevo núcleo tras la instalación de una actualización.
Actualmente, en la mayoría de las distribuciones de Linux, el proceso de inicialización utiliza una cadena "firmware → capa shim verificada por firma digital de Microsoft → cargador GRUB verificado por firma digital de la distribución → núcleo de Linux verificado por firma digital de la distribución → entorno initrd no verificado → sistema de archivos raíz". La falta de verificación de initrd en las distribuciones tradicionales genera problemas de seguridad, ya que entre otras cosas, en este entorno se realiza la extracción de claves para descifrar el sistema de archivos raíz.
La verificación de la imagen initrd no es compatible, ya que este archivo se genera en el sistema local del usuario y no puede ser firmado digitalmente por la distribución, lo que dificulta enormemente la organización de la verificación al usar el modo SecureBoot (para firmar initrd, el usuario debe generar sus propias claves y cargarlas en el firmware UEFI). Además, la organización actual de arranque no permite aplicar información de los registros TPM PCR (Platform Configuration Register) para controlar la integridad de los componentes del espacio del usuario, además de shim, grub y el núcleo. También se menciona la dificultad de actualizar el cargador y la falta de posibilidad de restringir el acceso a las claves en TPM para versiones antiguas del sistema operativo que se han vuelto obsoletas tras la instalación de la actualización.
Los principales objetivos de la implementación de una nueva arquitectura de arranque:
- Proporcionar un proceso de arranque completamente verificado, que cubra todas las etapas desde el firmware hasta el espacio del usuario, y que confirme la autenticidad e integridad de los componentes cargados.
- Vincular recursos controlados a los registros TPM PCR separándolos por propietarios.
- Posibilidad de realizar un cálculo previo de los valores PCR basado en los utilizados durante el arranque del núcleo, initrd, configuración e identificador local del sistema.
- Protección contra ataques de rollback relacionados con el retroceso a una versión vulnerable anterior del sistema.
- Simplificación y aumento de la fiabilidad de las actualizaciones.
- Soporte para actualizaciones del sistema operativo que no requieran reaplicación o preparación local de recursos protegidos por TPM.
- Preparación del sistema para la realización de una certificación remota para confirmar la corrección del sistema operativo y la configuración que se está cargando.
- Posibilidad de adjuntar datos confidenciales a etapas específicas de arranque, por ejemplo, la extracción de claves de cifrado para el sistema de archivos raíz desde TPM.
- Proveer un proceso seguro, automático y que funcione sin intervención del usuario para desbloquear claves para descifrar el disco que contiene la partición raíz.
- Uso de chips que soporten la especificación TPM 2.0, con posibilidad de retroceder a sistemas sin TPM.
Fuente: opennet.ru
