Desde hace ya un par de años, la mayoría de los PCs incluyen el sistema UEFI en reemplazo del que por muchos años fuera el sistema de arranque tradicional BIOS. Además de ofrecer una interfaz gráfica con la posibilidad de utilizar el teclado y mouse, UEFI aporta criptografía, autenticación por red y la opción de Secure Boot.
Es importante aclarar que UEFI resulta de una alianza entre varias compañías buscando estandarizar y actualizar el proceso de arranque, y es un estándar que fue definido para las arquitecturas IA32, IA64, AMD64 y ARM. La última especificación lanzada en abril de 2015, UEFI 2.5, trae entre las muchas mejoras una que para los usuarios de Linux resulta interesante: el hecho de permitir la actualización de la BIOS/UEFI desde el escritorio de Linux como una característica real y estable sin importar el proveedor de la placa base.
Antes de explicar algunas de las características propias de UEFI que están incluidas en está última especificación 2.5, vale la pena recordar que con este firmware se establece una interfaz de comunicación entre el sistema operativo y el hardware y que por los cambios en la tecnología incluyendo nuevos dispositivos como las tablets o los smartphones fue necesaria su actualización.
Características de seguridad en UEFI
UEFI tiene un proceso de validación de firmware llamado Secure Boot el cual se puede activar fácilmente en Windows, que en pocas palabras sirve para gestionar los certificados de seguridad entre el firmware y el sistema operativo. Con la revisión de las últimas especificaciones de UEFI se ponen a disposición de los usuarios mecanismos que se pueden utilizar por el sistema operativo, independiente si es Windows o basado en UNIX, para prevenir entre otras cosas la ejecución de códigos maliciosos durante el arranque del equipo.
El funcionamiento de estos mecanismos de seguridad se basa en el uso de claves asimétricas, para impedir que los drivers y otras aplicaciones cargadas por el sistema operativo sean reemplazadas por malware o alteraciones de los mismos con errores que puedan presentar problemas de seguridad.
De esta manera se almacena en el firmware el valor correspondiente a la clave pública, de forma que se pueda verificar para cada ejecutable que trate de correr en la máquina que sea el correspondiente a un proveedor autorizado. Por lo tanto, al hacer la comprobación con la clave privada de cada desarrollador, si esta falla o está vencida, el proceso se puede interrumpir y evitar problemas de seguridad.
Para lograr que este proceso sea exitoso, los dispositivos que utilizan UEFI cuentan con un modo en el que solamente es posible cargar drivers y aplicaciones firmadas con claves confiables. Pero además es importante tener en cuenta que también existe un modo en el que el firmware no hace una verificación sobre el gestor de arranque o los drivers para estas firmas y que además permite registrar nuevas claves públicas.
Manejo de llaves en UEFI
UEFi utiliza dos tipos diferentes de parejas de claves asimétricas para llevar a cabo el proceso de Secure Boot. Las KEK (Key Exchange Keys) son las que establecen que la comunicación entre el sistema operativo y el firmware es confiable. Para esto cada sistema operativo o cualquier otra aplicación que necesite comunicarse con el firmware debe tener almacenada su clave pública tipo KEK. Por otra parte las PK (Platform Key) son las que se encargan de asociar de forma segura el dueño de la plataforma y el firmware. De esta manera, con la PK se puede establecer cuáles de las KEK que se van a utilizar son de confianza.
Esta medida de seguridad ocurre con cada nuevo arranque del sistema, de tal forma de ejecutar solamente aquellas aplicaciones o drivers que estén autorizadas. Para modificar la base de datos donde se almacenan las llaves es necesario contar con la parte privada de la llave PK o de alguna KEK.
Entender cómo opera estos mecanismos de seguridad es importante para tomar las medidas de protección adecuadas. Es evidente que ningún sistema de seguridad va a ser 100% infalible, pero entre más mecanismos de protección se adopten, mayor será la dificultad de que un atacante pueda comprometer exitosamente ese equipo informático.