Arranque seguro

El arranque seguro (del  inglés  -  "secure boot") es un protocolo que forma parte de la especificación UEFI [1] . Consiste en verificar la firma digital electrónica de las aplicaciones EFI en ejecución mediante criptografía asimétrica con respecto a las claves almacenadas en el almacén de claves del sistema.

Historia

En 2011, Microsoft incluyó en los requisitos para la certificación de equipos que ejecutan Windows 8 la condición de entrega de dichos sistemas con arranque seguro habilitado mediante una clave de Microsoft. Además, los sistemas ARM (teléfonos inteligentes y algunas computadoras portátiles) requerían la incapacidad de deshabilitar el Arranque seguro. Esto provocó un gran clamor público y críticas hacia Microsoft, ya que tales requisitos hacían mucho más difícil, y en el caso de los sistemas ARM, instalar sistemas operativos distintos a Microsoft Windows [2] [3] [4] .

Descripción

Variables autenticadas

Variable autenticada: variables que requieren autenticación para cambiar. El arranque seguro implica almacenar claves públicas, firmas y hashes de aplicaciones en variables autenticadas almacenadas en memoria no volátil. Dichas variables se pueden sobrescribir de dos maneras [5] [6] [7] :

Variables utilizadas
  • Clave de plataforma (PK): la clave pública del propietario de la plataforma. Se requieren firmas con la clave privada correspondiente para cambiar el PK o cambiar el KEK, db y dbx (descrito a continuación). El almacén de PK debe protegerse contra la manipulación y el borrado [8] .
  • Clave de intercambio de claves (KEK): claves públicas de los sistemas operativos. Se requieren firmas con las claves privadas correspondientes para modificar las bases de datos de firmas (db, dbx, descritas a continuación). El almacén de KEK debe estar protegido contra manipulaciones [8] .
  • Bases de datos de firmas (db, dbx) - Bases de datos de firmas y hashes de aplicaciones confiables (db) y aplicaciones no confiables (dbx).
  • Clave de propietario de la máquina (MOK): implementación de la clave de arranque seguro específica para la familia de sistemas operativos Linux. Muchas versiones de Linux son compatibles con el Arranque seguro, pero crea problemas cuando se usan núcleos y módulos de sistema operativo no estándar. Para sortear este problema, se desarrolló el concepto del COI. El IOC se puede usar con un cargador de arranque Shim firmado para proporcionar administración de claves a nivel de usuario/administrador del sistema.

Modos de funcionamiento

Modo de configuración

La transición a este modo es posible desde el modo de usuario borrando el PK.

Este modo no requiere autenticación para escribir PK, KEK, db, dbx.

La entrada PK pone el sistema en modo de usuario. Escribir una unidad en la variable especial AuditMode (solo se puede escribir en el modo de configuración y en el modo de usuario) pone el sistema en modo de auditoría.

Modo de auditoría (modo de auditoría)

Es posible cambiar a este modo desde el modo de configuración o el modo de usuario escribiendo una unidad en la variable AuditMode. Cuando cambia el modo al modo de auditoría, el PK se borra.

Este modo no requiere autenticación para escribir PK, KEK, db, dbx. En el modo de auditoría, se pueden iniciar imágenes no verificadas y la información sobre todas las etapas de validación de imágenes se registrará en una tabla especial accesible desde el sistema operativo, lo que le permite probar combinaciones de claves y firmas guardadas sin temor a perder el sistema [9 ] .

La entrada PK pone el sistema en modo implementado.

Modo de usuario (modo de usuario)

Es posible cambiar a este modo desde el modo de configuración mediante la entrada de PK, o desde el modo implementado utilizando un método dependiente de la plataforma (no especificado en la especificación).

Este modo requiere autenticación para cambiar los almacenes de claves y valida las imágenes de inicio.

Quitar el PK pone el sistema en modo de configuración. Escribir 1 en la variable AuditMode pone el sistema en modo de auditoría. Escribir uno en la variable DeployedMode (solo se puede escribir en modo de usuario) pone el sistema en modo implementado.

Modo desplegado

Es posible cambiar a este modo desde el modo de auditoría escribiendo PK, o desde el modo de usuario escribiendo uno en la variable DeployedMode.

El modo más seguro [9] . Se diferencia del modo de usuario al establecer todas las variables de modo (AuditMode, DeployedMode, SetupMode) en modo de solo lectura.

El cambio a otros modos (modo personalizado o de configuración) solo es posible a través de métodos específicos de la plataforma o borrado de PK autenticado [9] .

Proceso de autorización

Antes de ejecutar una imagen UEFI desconocida, debe pasar por un proceso de autorización.

  1. Reiniciar. En esta etapa, la plataforma se inicializa en el arranque.
  2. Inicialización del almacén de claves.
  3. Validación de imagen UEFI. Para una autorización exitosa, la firma o hash de la imagen debe estar contenida en el db y no debe estar presente en el dbx.
  4. Si la imagen UEFI no ha pasado la validación, el firmware puede usar otros métodos de validación (por ejemplo, preguntar a un usuario autorizado, el propietario de la clave privada, correspondiente a la clave pública que se encuentra en la KEK). El resultado en esta etapa puede ser una resolución (paso 8), una denegación (paso 6) o una demora.
  5. En caso de retraso, la información de la firma se agrega a una tabla especial accesible desde el sistema operativo.
  6. En caso de falla o retraso, se intenta la siguiente opción de arranque (paso 3).
  7. Si se resuelve, la firma de la imagen se almacena en la base de datos de firmas.
  8. Ejecutando la imagen.

La actualización de la base de datos de aplicaciones confiables también está disponible desde el sistema operativo [10] .

Teclas personalizadas

El usuario puede generar e instalar de forma independiente sus propias claves. Génelos usted mismo, fírmelos e instálelos en su computadora. El "ciclo completo" de generación de claves se implementa para los sistemas operativos Linux y Windows.

Como regla, la siguiente cadena de transformaciones se utiliza en el proceso de generación de claves:

PEM => DER => ESL => AUTORIZACIÓN

Para Windows, hay herramientas especiales de Microsoft, y en Linux, se utilizan OpenSSL y el conjunto de utilidades EfiTools. Existe un problema relacionado con la falta de una interfaz para configurar claves personalizadas en el BIOS de algunos fabricantes. Esto también requiere a veces una utilidad separada.

La complejidad adicional crea la necesidad de garantizar la compatibilidad con equipos de Microsoft en algunos casos. La verificación funciona en ambos sentidos y sin claves de Microsoft, su software y hardware (por ejemplo, controladores GOP para tarjetas de video externas y controladores PXE para tarjetas de red externas y, por lo tanto, las propias tarjetas) no funcionarán. Es decir, en un cierto nivel, deberá confiar en MS en cualquier caso.

El usuario deberá agregar la clave de Microsoft a la base de datos o KEK, lo que presenta riesgos de seguridad adicionales.

Puede haber varios KEK y db en una computadora. De esta manera, se pueden formar varias ramas de confianza. O viceversa, un db puede estar firmado por varios KEC (aunque esto no es obligatorio)

Desarrollo del mecanismo

HP Sure Start, una solución de Hewlett-Packard, es en realidad una SDZ de hardware y software integrada. Implementa la función de protección de clave de arranque seguro. Microsoft ofrece el arranque seguro en su forma actual como un estándar de seguridad mínimo para la protección contra rootkits. Al mismo tiempo, algunos fabricantes desarrollan sus propias soluciones que brindan un arranque confiable junto con una solución de Microsoft, un ejemplo de tal solución es HP Sure Start [11] .

Ventajas y desventajas

Ventajas

  • Protección de malware

Cuando los rootkits interfieren con los componentes críticos del sistema operativo, las firmas de los componentes correspondientes se vuelven inválidas. Tal sistema operativo simplemente no se cargará [12] .

  • Políticas de seguridad locales

Si es necesario, limite la lista de posibles sistemas operativos para ejecutar, esto se puede hacer ingresando las firmas apropiadas en la base de datos de firmas [12] .

Desventajas

  • Selección de equipos

Los controladores de dispositivos que requieren soporte en la etapa de arranque del sistema deben tener una firma que pase correctamente la verificación en todas las plataformas donde se pueden usar dichos dispositivos. Para ello, todos los fabricantes de dichos equipos tendrán que ponerse de acuerdo con todos los fabricantes de plataformas para añadir sus claves a las tiendas del sistema. O dichos controladores deberán firmarse con una clave que ya está incluida en la mayoría de las plataformas, pero luego los fabricantes tendrán que confiar completamente en el propietario de dicha clave (por ejemplo, Microsoft firma el gestor de arranque shim [13] [14] ) . También es posible crear firmas en una cadena que termine con una clave contenida en la mayoría de las plataformas, pero incluso este enfoque tiene un inconveniente: cuando la clave correspondiente se elimina del almacén de claves (por ejemplo, para prohibir la carga de un determinado sistema operativo) , las firmas de los controladores también se vuelven inválidas [12] .

  • Selección del sistema operativo

Los proveedores de sistemas no están obligados a implementar la capacidad de desactivar el Arranque seguro. El procedimiento para agregar claves de terceros a la bóveda debe ser inaccesible para software malicioso, lo que dificulta este procedimiento para los usuarios. Estos dos factores juntos hacen mucho más difícil el uso de sistemas operativos no firmados, así como aquellos firmados con una clave desconocida para la plataforma [12] .

  • Vulnerabilidades de implementación

Las implementaciones de firmware específicas de dispositivos de diferentes fabricantes pueden contener vulnerabilidades, cuya explotación puede conducir a la omisión del mecanismo de arranque seguro o su nivelación [15] [16] .

  • Trabajando con SDZ

El mecanismo de arranque seguro puede impedir que funcionen las herramientas de arranque de confianza. Dado que SDZ reemplaza el cargador de arranque del sistema operativo con su propio cargador de arranque, que generalmente no tiene una firma, Secure Boot puede bloquear el cargador de arranque SDZ y, por lo tanto, interferir con el funcionamiento de SDZ en su conjunto.

Hay dos soluciones para este problema.

El primero  es deshabilitar el arranque seguro en computadoras con SDZ instalado. Un ejemplo de este enfoque es SDZ SafeNode System Loader [17] .

El segundo  es la entrega de un conjunto de variables autenticadas junto con SDZ, certificando la validez de la firma del cargador. Después de configurar las variables, SDZ funcionará sin restricciones desde el arranque seguro. Un ejemplo de este enfoque es Dallas Lock SDZ. En este caso, la utilidad keytool.efi [18] también se suministra con las claves .

  • UEFI BIOS de algunos fabricantes tiene una interfaz mal desarrollada para administrar el Arranque seguro

Véase también

Notas

  1. Especificación UEFI .
  2. ¿El "Arranque seguro" de su computadora resultará ser un "Arranque restringido"?  (Inglés) . Fundación de Software Libre . Fecha de acceso: 23 de diciembre de 2016. Archivado desde el original el 28 de noviembre de 2013.
  3. ↑ Arranque seguro de Windows 8: la controversia continúa  . Mundo PC. Consultado el 23 de diciembre de 2016. Archivado desde el original el 31 de marzo de 2017.
  4. ¿Microsoft está bloqueando el arranque de Linux en hardware ARM?  (Inglés) . mundo informático Reino Unido. Fecha de acceso: 23 de diciembre de 2016. Archivado desde el original el 5 de abril de 2016.
  5. Especificación UEFI , pág. 1817.
  6. Especificación UEFI , pág. 1818.
  7. Especificación UEFI , pág. 1828.
  8. 1 2 Especificación UEFI , p. 1819.
  9. 1 2 3 Especificación UEFI , p. 1816.
  10. Especificación UEFI , págs. 1803-1834.
  11. White paper técnico HP Sure  Start . Consultado el 6 de abril de 2022. Archivado desde el original el 19 de noviembre de 2020.
  12. 1 2 3 4 Jeremy Kerr, Matthew Garrett, James Bottomley. Impacto del arranque seguro de UEFI en Linux  (inglés) (PDF). Consultado el 23 de diciembre de 2016. Archivado desde el original el 19 de julio de 2017.
  13. mjg59 | El gestor de arranque Secure Boot para distribuciones ya está disponible . Consultado el 25 de octubre de 2019. Archivado desde el original el 25 de octubre de 2019.
  14. Proteja el proceso de arranque de Windows 10 - Seguridad de Microsoft 365 | Documentos de Microsoft . Consultado el 25 de octubre de 2019. Archivado desde el original el 25 de octubre de 2019.
  15. Corey Kallenberg, Sam Cornwell, Xeno Kovah, John Butterworth. Configuración en caso de falla: vencer el arranque seguro  (inglés) (PDF). La Corporación MITRE. Consultado el 23 de diciembre de 2016. Archivado desde el original el 23 de diciembre de 2016.
  16. Luciano Constantino. Los investigadores demuestran exploits que eluden el  Arranque seguro de Windows 8 . mundo de TI. Fecha de acceso: 23 de diciembre de 2016. Archivado desde el original el 24 de diciembre de 2016.
  17. Guía del administrador de SDZ SafeNode System Loader . Consultado el 6 de abril de 2022. Archivado desde el original el 14 de agosto de 2020.
  18. Manual de funcionamiento de Dallas Lock SDZ . Consultado el 6 de abril de 2022. Archivado desde el original el 2 de abril de 2022.

Literatura