Aprovechando la Seguridad Arm TrustZone en la Serie de MCU LPC5500
Descubra cómo Arm TrustZone mejora la seguridad en los microcontroladores LPC5500 de NXP y cómo implementar aplicaciones seguras y no seguras.
A medida que proliferan los dispositivos conectados, también lo hacen las amenazas sofisticadas. NXP ha abordado esto integrando robustos primitivos de seguridad en la familia de MCU LPC5500, incluyendo un generador de números aleatorios conforme a FIPS, el motor de cifrado «Prince» para ejecutar código cifrado y una clave de 4096 bits en chip generada mediante tecnología PUF. Combinados con el acelerador criptográfico «CASPER» en chip, estos MCU son ideales para despliegues IoT en el borde de la red que exigen aprovisionamiento de claves de extremo a extremo y ciberseguridad resiliente.
Central a esta capacidad está Arm TrustZone para Cortex-M. Las siguientes secciones le guiarán por sus fundamentos y cómo aprovecharlos en sus proyectos.
Arm TrustZone para Cortex-M
TrustZone crea dos contextos de ejecución aislados: un mundo seguro que aloja código propietario o sensible, y un mundo no seguro para aplicaciones de usuario. Las bibliotecas propietarias del fabricante pueden residir en ROM, protegidas de ingeniería inversa, mientras siguen siendo invocables por el código de aplicación a través de una interfaz controlada.
La Figura 1 ilustra la coexistencia de ROM segura y código de usuario no seguro en el mismo silicio.
Las transiciones entre los dos mundos se rigen por la extensión de seguridad de TrustZone, asegurando que una aplicación no segura solo pueda invocar funciones seguras expuestas, nunca accediendo a memoria segura directamente.
Modos de Procesador con TrustZone
Mientras que los núcleos Cortex-M3 y M4 ofrecen modos hilo y manejador con niveles privilegiados/no privilegiados, el Cortex-M33 añade TrustZone, resultando en cuatro modos: hilo no seguro, hilo seguro, manejador no seguro y manejador seguro. Esta división también introduce temporizadores SysTick separados para cada dominio.
Particionado de Memoria
TrustZone asigna atributos de seguridad a rangos de direcciones: Seguro (S), No Seguro (NS) y No Seguro Invocable (NSC). El acceso a cada área depende del estado actual del núcleo. El LPC55S69, por ejemplo, trata las direcciones con el bit 28 bajo como no seguro y el resto como seguro, excepto la memoria de programa que es configurable mediante la Unidad de Atribución de Seguridad (SAU).
Construyendo una Aplicación Segura
El código seguro no expone sus interiores directamente. En su lugar, publica una tabla de véneres —una capa delgada de funciones invocables desde no seguro que reenvían llamadas al mundo seguro. La tabla de véneres reside en memoria NSC, mientras que las implementaciones reales viven en memoria segura.
Los proyectos seguros típicos se compilan en una biblioteca de objetos y un archivo de cabecera que declara las funciones de véneres. La aplicación no segura incluye solo la cabecera; en tiempo de ejecución la tabla de véneres media las llamadas a servicios seguros.
Transición entre Mundos
Dos instrucciones especiales gestionan el cambio de estado:
SG— cambia el núcleo a modo seguro.BXNS— retorna el control al modo no seguro.
Una secuencia de llamada no segura se ve así:
// Código no seguro
SG(); // Entrar al mundo seguro
SecureFunc(); // Llamar servicio seguro vía véneres
BXNS(); // Retornar a no seguro
Cualquier acceso ilegal dispara una excepción Secure Fault, preservando la integridad del sistema.
Ejemplo Hola Mundo Seguro
El SDK LPCXpresso55S69 incluye demos de TrustZone que dividen la compilación en un proyecto seguro y uno no seguro. El proyecto seguro comienza con una llamada de inicialización temprana:
__attribute__((cmse_nonsecure_entry)) void BOARD_InitTrustZone(void);
Esta función configura la SAU, IDAU y el particionado de memoria. La función main no segura permanece concisa porque toda la configuración se maneja en el dominio seguro:
int main(void) {
// Código no seguro mínimo
return 0;
}
Cuando el lado no seguro necesita un servicio seguro, invoca una función de véneres, p. ej., PRINTF_NSE():
void PRINTF_NSE(const char *format, ...) __attribute__((cmse_nonsecure_entry));
La implementación segura correspondiente reside en el proyecto seguro y se exporta a la tabla de véneres.
Herramientas de Particionado de Memoria
Dentro de MCUXpresso, la perspectiva TEE ofrece un editor visual para configuración de SAU e IDAU:
Use la tabla izquierda para establecer el nivel de seguridad de cada región, y el mapa derecho reflejará el particionado resultante.
Por Qué TrustZone Importa para LPC5500
TrustZone da al LPC5500 una clara separación de responsabilidades: el mundo seguro protege código propietario y claves criptográficas, mientras el mundo no seguro aloja aplicaciones de usuario. El hardware garantiza que accesos ilegales a memoria sean bloqueados, y la infraestructura de software (tablas de véneres, instrucciones SG/BXNS y herramientas TEE) simplifica el desarrollo de aplicaciones seguras.
Para más detalles, vea el seminario web de NXP TrustZone: Calling the Secure World o explore la documentación oficial.
Los Artículos de Industria son una forma de contenido que permite a socios industriales compartir noticias útiles, mensajes y tecnología con los lectores de All About Circuits de una manera que el contenido editorial no se adapta bien. Todos los Artículos de Industria están sujetos a estrictas directrices editoriales con la intención de ofrecer a los lectores noticias útiles, experiencia técnica o historias. Los puntos de vista y opiniones expresados en los Artículos de Industria son los del socio y no necesariamente los de All About Circuits o sus escritores.
Computación en la nube
- La revolución cloud: cómo el cloud computing transforma TI, seguridad y carreras
- Por qué la seguridad cloud es la piedra angular de la ciberdefensa moderna
- Ruta para convertirse en Cloud Security Engineer: habilidades, responsabilidades y certificaciones
- Por qué la seguridad de datos cloud se está volviendo programable
- Asegurando tecnología cloud: Mejores prácticas para protección de datos y mitigación de riesgos
- Dominando la seguridad en la nube: estrategias probadas para mitigar riesgos y proteger su organización
- Cómo los hackers atacan entornos Cloud: fortaleciendo tu seguridad en AWS
- Domina la certificación Google Cloud Engineer: Estrategias de estudio probadas y consejos internos
- Desplegando DevOps en la Cloud: Blueprint probado para transformación digital
- Migrando Planificación de Recursos Empresariales (ERP) a la Cloud: Hoja de ruta probada para el éxito
- Maximizando ROI y seguridad con adopción de Public Cloud