Seguridad de los sistemas embebidos con el PSoC 64
Rolf Horn, Applications Engineer at Digi-Key Electronics
28/11/2022Los diseñadores de sistemas basados en microcontroladores tienen a su disposición varias soluciones que pueden utilizarse para simplificar las implementaciones de seguridad y proporcionarles las herramientas para hacerlo con éxito. Por ejemplo, los microcontroladores de un solo núcleo pueden utilizar TrustZone de Arm, que forma parte de la arquitectura Armv8-M (y posteriores). También hay soluciones con microcontroladores multinúcleo.
Este artículo muestra cómo los desarrolladores pueden utilizar los procesadores multinúcleo para asegurar sus soluciones integradas. En concreto, examina el microcontrolador seguro PSoC 64 de Cypress y las herramientas que ofrece para implementar una solución segura.
Fundamentos de la seguridad integrada
Uno de los fundamentos del diseño de un producto seguro es aprovechar el aislamiento basado en hardware. Este aislamiento puede adoptar muchas formas, como un entorno de ejecución aislado o una memoria aislada basada en una unidad de protección de memoria (MPU). Al más alto nivel, un microcontrolador debe ser capaz de separar su entorno de ejecución en un entorno de procesamiento seguro (SPE) y un entorno de procesamiento no seguro (NSPE).
Un SPE es un entorno de ejecución aislado que mantiene su memoria, componentes y código de aplicación separados del NSPE. El SPE puede considerarse como un procesador de seguridad. El SPE ejecuta código y operaciones seguras, como un sistema operativo seguro y/o una raíz de confianza (RoT). El SPE también ejecutará servicios de confianza como la criptografía, el almacenamiento seguro, la atestación y el registro seguro. Un número limitado de aplicaciones de confianza relacionadas con operaciones seguras se ejecutarán en el SPE.
El NSPE, por su parte, puede ser considerado como el entorno de ejecución rico en características que ejecuta todo, excepto las operaciones seguras. De hecho, el NSPE es realmente el modelo de programación familiar al que están acostumbrados la mayoría de los desarrolladores de sistemas embebidos; tiene un RTOS y la mayoría de los componentes de la aplicación.
El aislamiento basado en hardware es uno de los principios fundamentales, o mejores prácticas, que ofrece la Arquitectura de Seguridad de la Plataforma Arm® (PSA) para crear sistemas seguros. Las diferentes capas de aislamiento de las que acabamos de hablar pueden verse implementadas en la Figura 1, con el PSoC 64 como ejemplo. En este ejemplo, el SPE y el NSPE (1) producen aislamiento de hardware al tener los entornos de ejecución en procesadores separados. Además de la separación en tiempo de ejecución, el RoT y los servicios de confianza están más aislados (2). Por último, cada aplicación de confianza en el SPE también se aísla utilizando herramientas como las particiones de confianza y las MPU (3).
El PSoC 64 es un microcontrolador de doble núcleo en el que el NSPE se ejecuta en un procesador Arm Cortex®-M4 y el SPE en un procesador Arm Cortex-M0+. El Arm Cortex-M0+ ejecuta todas las funciones de seguridad y puede comunicarse con el Cortex-M4 a través de un bus de comunicación entre procesadores (IPC). La arquitectura limita el acceso al SPE, que está aislado por hardware.
Para empezar a utilizar el PSoC 64, los desarrolladores querrán consultar el kit PSoC 64 Secure Boot Pioneer.
El kit PSoC 64 Secure Boot Pioneer
El kit PSoC 64 Secure Boot Pioneer (Figura 2) tiene todo lo que los desarrolladores necesitan para empezar a asegurar sus aplicaciones. En primer lugar, tiene un módulo PSoC 64 que tiene el microcontrolador PSoC 64, la memoria externa y toda la circuitería de apoyo (mostrada en rojo). La memoria externa puede utilizarse para almacenar el código de la aplicación o para almacenar nuevas imágenes de firmware para actualizaciones seguras de firmware por aire (FOTA).
Figura 2: El kit PSoC 64 Secure Boot Pioneer tiene todo lo que los desarrolladores necesitan para empezar a desarrollar aplicaciones IoT seguras. (Fuente de la imagen: Cypress).
Además, cuenta con un módulo Wi-Fi que permite a los desarrolladores conectar la placa a una red. El módulo Wi-Fi es especialmente útil para aplicaciones IoT en las que la placa se conectará a servicios en la nube como AWS o Azure. La placa de desarrollo es compatible con Amazon FreeRTOS, del que hablaremos en la siguiente sección.
Por último, el kit Pioneer admite una amplia gama de posibilidades de expansión, como cabezales de pines, cabezales Arduino y una serie de sensores. Los desarrolladores pueden aprovechar el deslizador táctil incorporado y los botones táctiles, los pulsadores, el potenciómetro y mucho más. La placa también está preparada para facilitar la personalización de casi cualquier aplicación.
El paquete de software PSoC 64 Secure
El diseño de una aplicación integrada segura puede llevar mucho tiempo y suponer un reto. Los desarrolladores deben buscar soluciones que ayuden a reducir los costes y el tiempo de comercialización, al tiempo que garantizan la seguridad de su aplicación. Para ello, el PSoC 64 ofrece una amplia gama de software que permite a los desarrolladores crear rápidamente una aplicación segura.
Por ejemplo, CySecureTools ofrece a los desarrolladores un conjunto de herramientas para la creación de claves y certificados, así como herramientas para la firma de aplicaciones de usuario y el aprovisionamiento de microcontroladores Cypress. La herramienta permite a los desarrolladores transferir el RoT de Cypress y luego inyectar sus propios activos de seguridad. La información sobre cómo configurar y utilizar CySecureTools se puede encontrar en el archivo README del repositorio github.
Una herramienta que los desarrolladores de IoT encontrarán útil es la compatibilidad con AWS mediante FreeRTOS. El repositorio de github contiene ejemplos útiles para utilizar FreeRTOS y AWS con el PSoC 64. El primer ejemplo que interesará a los desarrolladores es la aplicación 'Hello World' que transmite mensajes MQTT desde el PSoC 64 a la nube de AWS. Este ejemplo permite al desarrollador recorrer el proceso de aprovisionamiento, la generación de claves y las fases de despliegue. Al final del ejemplo, los desarrolladores tienen un dispositivo integrado seguro conectado a AWS. Los detalles sobre cómo empezar se pueden encontrar en la guía del kit Getting Started with CY8CKIT-064S0S204343.
Aplicaciones seguras con Trusted Firmware-M (TF-M)
El PSoC 64 proporciona a los desarrolladores un marco de seguridad listo para usar que se puede personalizar fácilmente para una aplicación. A los desarrolladores les puede resultar útil entender lo que ocurre entre bastidores desde el punto de vista del software. En concreto, el firmware de PSoC 64 aprovecha un marco de seguridad básico de código abierto conocido como Trusted Firmware-M, o TF-M.
TF-M es una implementación de referencia del marco de seguridad IoT de Arm PSA. Ofrece a los desarrolladores útiles herramientas de seguridad como la atestación de dispositivos, la verificación del firmware, los servicios criptográficos, la gestión del secreto de los dispositivos y la partición segura, por nombrar algunas. Cypress ha aprovechado el TF-M para crear su marco de seguridad, de modo que los desarrolladores puedan utilizarlo en sus aplicaciones.
Los desarrolladores pueden modificar su marco de seguridad añadiendo su propio código, añadiendo perfiles de seguridad y mucho más. Sin embargo, es importante tener en cuenta que cuanto más se modifique el software SPE, mayor será la posibilidad de que se añada una vulnerabilidad. Los desarrolladores deben sopesar cuidadosamente los riesgos asociados a los cambios, adiciones o sustracciones al firmware de referencia.
Consejos y trucos para asegurar las aplicaciones integradas
Los desarrolladores que desean asegurar sus aplicaciones integradas por primera vez tienen mucho que considerar. A continuación, se presentan varios “consejos y trucos” que pueden simplificar y acelerar el desarrollo:
- Realice un modelo de amenazas y un análisis de seguridad (TMSA) al principio del ciclo de desarrollo.
- Utiliza una placa de desarrollo para probar el RoT del dispositivo, el cargador de arranque seguro, el proceso de aprovisionamiento del dispositivo y las actualizaciones del firmware.
- No implemente la seguridad solo. Aprovechar las pilas de código abierto y de firmware seguras existentes para minimizar el trabajo de repetición.
- Asegúrese de pensar en el ciclo de vida del dispositivo, incluida la forma de retirarlo de forma segura.
- Explore herramientas como CySecureTools; dichas herramientas vienen con plantillas de seguridad, software y ejemplos.
- Al clonar el repositorio github de FreeRTOS, clona la última versión etiquetada. La clonación de la línea principal activa a menudo da lugar a encontrar incompatibilidad de herramientas y errores que todavía están en curso.
- Inicie un proyecto recorriendo la guía de introducción al kit Cypress CY8CKIT-064S0S2-4343W. Proporciona toda la información necesaria para obtener una aplicación de referencia que puede ser modificada para fines específicos del producto.
Los desarrolladores que sigan estos “consejos y trucos” descubrirán que se ahorran bastante tiempo y disgustos.
Conclusión:
La seguridad no tiene por qué ser difícil. Los desarrolladores de sistemas integrados deberían centrarse en los elementos diferenciadores de sus productos, su salsa secreta. En la mayoría de los casos, eso no es seguridad. Este artículo explora cómo el PSoC 64 puede ayudar a los desarrolladores a asegurar rápidamente sus aplicaciones proporcionando no sólo un entorno de aislamiento basado en hardware, sino proporcionando un marco de herramientas de software. Juntas, las soluciones de hardware y software proporcionan a los desarrolladores un ciclo de desarrollo de seguridad acelerado.
El PSoC 64 proporciona a los desarrolladores un marco de seguridad listo para usar que se puede personalizar fácilmente para una aplicación. A los desarrolladores les puede resultar útil entender lo que ocurre entre bastidores desde el punto de vista del software. En concreto, el firmware de PSoC 64 aprovecha un marco de seguridad básico de código abierto conocido como Trusted Firmware-M, o TF-M
Un SPE es un entorno de ejecución aislado que mantiene su memoria, componentes y código de aplicación separados del NSPE. El SPE puede considerarse como un procesador de seguridad. El SPE ejecuta código y operaciones seguras, como un sistema operativo seguro y/o una raíz de confianza (RoT)