Gestión de firmware para MCUs: El enfoque del cargador de arranque Quark
Tabla de contenidos
- Introducción
- Visión general del cargador de arranque Quark
- Funcionalidad de gestión de firmware
- Extensión de seguridad
- Gestión de datos persistentes
- Protocolo de gestión de archivos Quark (QFM)
- Actualizaciones de firmware autenticadas
- Funcionalidad de gestión de claves
- Implementación y herramientas
- Conclusiones
Introducción
En este artículo, vamos a hablar sobre el cargador de arranque Quark y su funcionalidad de gestión de firmware. El cargador de arranque Quark es el cargador de arranque de referencia para la familia de controladores de materia Quark de Intel, que incluye los microcontroladores Quark T2000 y Quark AC C1000. El cargador de arranque se desarrolla como parte de la pila de software para esta familia de microcontroladores y está disponible en GitHub bajo una licencia BSD de árbol. El cargador de arranque proporciona características como la inicialización del sistema, restauración del contexto después del modo de suspensión profundo y procesos de instalación de primer uso. Además, también ofrece funcionalidad de gestión de firmware, que incluye actualizaciones de firmware y gestión de claves. En este artículo, exploraremos en detalle todas estas características y la implementación del cargador de arranque Quark.
1. Visión general del cargador de arranque Quark
El cargador de arranque Quark es el cargador de arranque de referencia para los microcontroladores Quark T2000 y Quark AC C1000. Estos microcontroladores son sistemas en chip basados en la arquitectura x86, con el Quark T2000 siendo más básico y el Quark AC C1000 siendo más potente y ofreciendo funciones adicionales, como un núcleo ARC para el subsistema de sensores. Ambos microcontroladores tienen limitaciones de recursos, especialmente en cuanto a memoria RAM. El cargador de arranque se almacena en una región de OTP (One-Time Programmable) en la memoria flash y tiene una limitación de 8 KB debido a las restricciones de espacio. A pesar de esta limitación, el cargador de arranque adopta un enfoque modular para lograr la extensibilidad y la posibilidad de agregar nuevos transportes en el futuro. El cargador de arranque también admite múltiples protocolos de comunicación, como UART y USB, para facilitar la transferencia de imágenes y solicitudes de gestión de firmware.
2. Funcionalidad de gestión de firmware
La funcionalidad de gestión de firmware del cargador de arranque Quark incluye dos aspectos principales: actualizaciones de firmware y funciones de gestión de claves. Las actualizaciones de firmware son una parte fundamental para mantener los dispositivos actualizados y seguros. El cargador de arranque Quark admite actualizaciones de firmware a través del protocolo DFU (Device Firmware Upgrade), que es un estándar de la industria ampliamente adoptado. El DFU permite la transferencia de datos en bloque y el cargador de arranque Quark aprovecha esta funcionalidad para transferir imágenes de firmware. Además de las actualizaciones de firmware, el cargador de arranque Quark también proporciona funciones de gestión de claves. Estas funciones permiten la provisión y actualización de claves criptográficas para garantizar la autenticación y la seguridad del firmware.
2.1 Actualizaciones de firmware
Las actualizaciones de firmware se realizan a través del protocolo DFU, que se adapta para que sea compatible tanto con UART como con USB. Esto permite la transferencia de imágenes de firmware a través de ambos transportes. El formato de imagen utilizado es específico del cargador de arranque Quark, y está diseñado para transferirse en bloques utilizando el protocolo DFU. La imagen de firmware se divide en bloques y se autentica mediante un mecanismo HMAC (Hash-based Message Authentication Code). Este mecanismo asegura que la imagen de firmware no se haya modificado durante la transferencia. El cargador de arranque Quark también maneja la gestión de particiones, lo que permite la instalación de múltiples aplicaciones y la conmutación entre ellas.
2.2 Funciones de gestión de claves
Las funciones de gestión de claves del cargador de arranque Quark permiten la provisión y actualización de claves criptográficas utilizadas para autenticar el firmware. El cargador de arranque Quark utiliza un esquema de clave simétrica, donde la misma clave se utiliza tanto para firmar como para verificar el firmware. Esto asegura que solo el firmware auténtico y autorizado se pueda cargar en el dispositivo. La clave de firma se almacena en el dispositivo y se actualiza utilizando un mecanismo de doble firma. Esto proporciona una capa adicional de seguridad al permitir que la clave de firma se actualice sin comprometer la integridad del firmware. Además, el cargador de arranque Quark también proporciona una clave de revocación, que se utiliza para revocar claves comprometidas o filtradas.
3. Extensión de seguridad
En la próxima versión del cargador de arranque Quark, se introducirá una extensión de seguridad que permitirá actualizaciones de firmware autenticadas. Esta extensión proporcionará una verificación adicional para asegurar la integridad del firmware durante las actualizaciones. Desafortunadamente, debido a las limitaciones de recursos de los microcontroladores Quark, no es posible utilizar un esquema de clave pública para la autenticación. En su lugar, se utiliza un esquema de clave simétrica HMAC, donde la misma clave se utiliza tanto para firmar como para verificar el firmware. Esto significa que la clave debe estar presente en el dispositivo y se debe proporcionar de forma segura durante la provisión inicial. La extensión de seguridad también proporciona funciones de gestión de claves, lo que permite la actualización de claves comprometidas o filtradas.
4. Gestión de datos persistentes
El cargador de arranque Quark debe gestionar datos persistentes de forma segura para garantizar su confiabilidad y protección contra posibles ataques. Los datos persistentes incluyen claves criptográficas, información sobre particiones y otra información relevante para el Correcto funcionamiento del cargador de arranque. Para garantizar la integridad de estos datos, se utiliza una estrategia de duplicación y verificación. Los datos persistentes se almacenan en dos copias idénticas en diferentes páginas de memoria flash. Cada copia tiene un CRC que se utiliza para verificar su integridad. En cada inicio del dispositivo, se realiza una verificación de los datos persistentes para garantizar su consistencia. Si se detecta una corrupción en una de las copias, se recupera la copia válida. En caso de corrupción en ambas copias, se considera un error grave y el dispositivo entra en un bucle infinito para evitar posibles problemas de seguridad.
5. Protocolo de gestión de archivos Quark (QFM)
El cargador de arranque Quark utiliza un protocolo de gestión de archivos denominado Quark File Management (QFM) para proporcionar funcionalidad adicional más allá de las actualizaciones de firmware. Este protocolo permite la recuperación de información del dispositivo, como la versión del cargador de arranque, la información del sistema y la lista de aplicaciones instaladas. Utiliza transacciones basadas en el protocolo DFU para enviar solicitudes y recibir respuestas desde el dispositivo. Las solicitudes incluyen operaciones como la recuperación de información del sistema, la gestión de claves y la gestión de particiones. Las respuestas se envían en uno de los estados de transferencia de DFU y se pueden extraer utilizando transacciones de carga de DFU. El protocolo QFM aprovecha la capacidad de alternar configuraciones proporcionada por el protocolo DFU para distinguir entre las transferencias de paquetes de QFM y las actualizaciones de firmware, lo que facilita la gestión de archivos en el cargador de arranque Quark.
6. Actualizaciones de firmware autenticadas
En la próxima versión del cargador de arranque Quark, se introducirá la posibilidad de realizar actualizaciones de firmware autenticadas. Estas actualizaciones garantizan que el firmware que se carga en el dispositivo no haya sido modificado o comprometido. Para lograr esto, se utiliza un mecanismo de doble firma que verifica tanto el firmware como la clave utilizada para firmarlo. El firmware se divide en bloques y se autentica en bloque utilizando un mecanismo HMAC. Durante la actualización de firmware, el cargador de arranque primero autentica el encabezado del firmware y luego verifica cada bloque individualmente. Si se detecta alguna discrepancia, se considera que la actualización de firmware ha fallado y se toman medidas para corregir la inconsistencia, como eliminar la partición afectada y marcarla como inconsistente. Las actualizaciones de firmware autenticadas proporcionan un nivel adicional de seguridad y garantizan que solo el firmware autorizado se pueda cargar en el dispositivo.
7. Funcionalidad de gestión de claves
El cargador de arranque Quark proporciona funciones de gestión de claves para garantizar la seguridad de las claves utilizadas en el proceso de autenticación de firmware. El cargador de arranque utiliza un par de claves para la autenticación de firmware. Una de estas claves es la clave de firma, que se utiliza para firmar el firmware y garantizar su integridad. La otra clave es la clave de revocación, que se utiliza para revocar claves comprometidas o filtradas. Ambas claves se almacenan en el dispositivo y se actualizan utilizando un mecanismo de doble firma. La actualización de las claves se realiza mediante una solicitud especial de actualización de clave, que se envía a través del protocolo QFM y se autentica utilizando las claves existentes. La gestión de claves garantiza que solo las claves autorizadas se utilicen para autenticar el firmware y proporciona una capa adicional de seguridad para el cargador de arranque Quark.
8. Implementación y herramientas
La implementación del cargador de arranque Quark se realiza en C y se basa en una arquitectura modular para permitir la extensibilidad y la reutilización de código. Se utilizan bibliotecas externas, como el protocolo DFU, para aprovechar el trabajo existente y garantizar la interoperabilidad con otros dispositivos y herramientas. Además del código del cargador de arranque, también se proporcionan herramientas en Python para la creación y gestión de imágenes de firmware. Estas herramientas permiten la conversión de imágenes RAW en imágenes DFU, así como la realización de solicitudes de gestión de firmware utilizando el protocolo QFM. La implementación del cargador de arranque Quark se basa en estándares abiertos y se ofrece como software de código abierto bajo una licencia GPL 2.
9. Conclusiones
En este artículo, hemos explorado en detalle el cargador de arranque Quark y su funcionalidad de gestión de firmware. El cargador de arranque Quark es un componente clave en los microcontroladores Quark T2000 y Quark AC C1000, y proporciona características como la inicialización del sistema, restauración del contexto después del modo de suspensión profundo y actualizaciones de firmware autenticadas. El cargador de arranque Quark utiliza un enfoque modular y una arquitectura basada en estándares abiertos para garantizar la extensibilidad y la reutilización de código. También se proporcionan herramientas en Python para facilitar la creación y gestión de imágenes de firmware. En general, el cargador de arranque Quark ofrece una solución robusta y segura para la gestión de firmware en los microcontroladores Quark.
Destacados
- El cargador de arranque Quark es el cargador de arranque de referencia para los microcontroladores Quark T2000 y Quark AC C1000 de Intel.
- Proporciona funcionalidad de gestión de firmware, incluyendo actualizaciones de firmware y gestión de claves.
- El cargador de arranque utiliza el protocolo DFU para la transferencia de imágenes de firmware a través de los transportes UART y USB.
- Se implementa una extensión de seguridad que permite actualizaciones de firmware autenticadas utilizando un esquema de clave simétrica HMAC.
- El cargador de arranque gestiona datos persistentes de manera segura utilizando una estrategia de duplicación y verificación.
- Se utiliza el protocolo de gestión de archivos Quark (QFM) para solicitudes y respuestas relacionadas con la gestión de firmware.
- Se proporcionan herramientas en Python para crear y gestionar imágenes de firmware.
Preguntas frecuentes
¿El cargador de arranque Quark admite actualizaciones de firmware a través de OTA?
No, el cargador de arranque Quark actualmente no es compatible con actualizaciones de firmware a través del Aire (OTA). Sin embargo, la arquitectura modular del cargador de arranque permite la adición de nuevas funcionalidades en el futuro, como soporte para OTA.
¿Puedo utilizar el cargador de arranque Quark en otros microcontroladores que no sean los Quark T2000 y Quark AC C1000?
El cargador de arranque Quark se desarrolla específicamente para los microcontroladores Quark T2000 y Quark AC C1000 de Intel. No se garantiza su compatibilidad con otros microcontroladores, aunque algunos componentes, como el protocolo DFU, pueden ser reutilizables en diferentes plataformas.
¿Cómo puedo asegurarme de que las claves usadas en el proceso de autenticación de firmware no sean comprometidas?
El cargador de arranque Quark utiliza un esquema de clave simétrica HMAC para la autenticación de firmware. Es importante almacenar de manera segura las claves utilizadas y mantener un control estricto sobre su distribución. Además, el cargador de arranque proporciona funcionalidad de gestión de claves para permitir la actualización de claves comprometidas o filtradas.
Recursos