Tres características que todo microcontrolador seguro necesita

Durante años, los desarrolladores integrados se han dado el lujo de ignorar la seguridad. Los sistemas integrados eran sistemas independientes desconectados en los que solo tenían que preocuparse por la manipulación física. El Internet de las cosas (IoT) ha eliminado este lujo para siempre. La seguridad es ahora una de las principales preocupaciones de casi todos los dispositivos conectados. Para asegurar sus dispositivos correctamente, los desarrolladores deben buscar tres características clave de la unidad de microcontrolador (MCU): aislamiento basado en hardware, unidades de protección de memoria (MPU) y aceleradores criptográficos. Exploremos estas tres características fundamentales.

Característica n.° 1 de la MCU segura: Un entorno de procesamiento seguro

Un concepto clave para asegurar un sistema integrado es diseñarlo utilizando aislamiento. El aislamiento proporciona un límite o una valla alrededor de la memoria, los componentes y las funciones que operan juntos para lograr un objetivo común. Si un adversario puede explotar una región del sistema, la barrera de aislamiento protege la segunda región para que el adversario no pueda acceder a ella inmediatamente.

Un sistema integrado a menudo se aísla en dos regiones principales: un entorno de procesamiento no seguro (NSPE) y un entorno de procesamiento seguro (SPE). La mejor manera de lograr estos dos entornos de ejecución es utilizar el aislamiento basado en hardware. Hay dos métodos para hacer esto: usar una MCU multinúcleo o una MCU de un solo núcleo con TrustZone de Arm.

En la solución multinúcleo, un procesador está dedicado al SPE, mientras que el otro está dedicado como un procesador rico en características en el NSPE. Los dos núcleos están físicamente aislados entre sí y solo se comunican a través de una memoria RAM compartida y una comunicación entre procesos (IPC). Si se hackea el NSPE, los datos, la memoria y las funciones aislados en el núcleo de seguridad seguirán estando aislados y protegidos. El adversario tendría que encontrar una forma de hackear el núcleo de seguridad. Un ejemplo de MCU que utiliza el enfoque multinúcleo es PSoC 64 de Infineon Technologies.

El PSoC 64 tiene un procesador Arm Cortex-M4 para el NSPE rico en aplicaciones y un núcleo de seguridad Arm Cortex-M0+ para el SPE. Los dos núcleos pueden comunicarse a través de un IPC. Una placa de desarrollo interesante para comenzar a experimentar con la solución de seguridad multinúcleo es el kit Pioneer PSoC 64 CY8CKIT-064S0S2-4343W habilitado para Wi-Fi y Bluetooth (Figura 1).

Figura 1: El kit Pioneer CY8CKIT-064S0S2-4343W proporciona una plataforma de desarrollo segura para que los desarrolladores trabajen con soluciones de seguridad multinúcleo. (Fuente de la imagen: Infineon Technologies)

La solución TrustZone es diferente del modelo de aislamiento multinúcleo en que utiliza un solo núcleo de procesamiento, pero el procesamiento aún se divide en un NSPE y un SPE. Cuando es necesario ejecutar una función segura, el procesador cambia del NSPE al SPE de una manera determinista que suele ser de tres ciclos de reloj o menos. Un ejemplo de MCU compatible con TrustZone es el STM32L562CET6 de STMicroelectronics.

El aislamiento basado en hardware es la primera característica que los desarrolladores deben buscar en sus MCU seguras. La siguiente característica son las MPU.

Característica n.° 2 de la MCU segura: MPU

Una MPU es un periférico de hardware diseñado para proteger la memoria. Los desarrolladores integrados necesitan una MPU porque les permite crear más regiones de aislamiento basado en hardware dentro de su código de aplicación. Por ejemplo, mientras que un desarrollador puede aprovechar una SPE, esa SPE se puede dividir aún más en regiones aisladas utilizando una MPU. Si un adversario encuentra su camino hacia el SPE, todavía necesita encontrar un camino hacia cada una de las regiones de memoria aisladas protegidas por la MPU.

La MPU se puede considerar como una unidad de administración de memoria (MMU) reducida que proporciona a los desarrolladores un método para dividir su software en procesos aislados. La MPU se puede utilizar en cualquier ubicación de memoria, que incluyen la memoria flash, la RAM y los periféricos. La MPU se utiliza para establecer permisos de ejecución y acceso. Nuevamente, si un adversario puede acceder a un proceso, estará limitado a lo que puede acceder según la configuración de la MPU. Si intenta acceder a una región de memoria fuera de la configuración de la MPU, la MPU producirá una falla. Luego, el sistema puede intentar recuperarse o reiniciarse. Esto la convierte en una característica fundamental que los desarrolladores necesitan para proteger sus sistemas.

Característica n.° 3 de la MCU segura: Aceleradores criptográficos

La tercera característica que los desarrolladores deben buscar en una MCU segura es un acelerador criptográfico. Se utiliza un acelerador criptográfico para acelerar cálculos complejos que, de otro modo, llevarían a la CPU un tiempo relativamente largo para procesar. La CPU puede liberar de trabajo al acelerador, lo que le permite trabajar en otro problema en paralelo. El resultado es que las operaciones criptográficas toman menos tiempo, ahorran ciclos de CPU e incluso potencialmente el uso de energía en dispositivos que funcionan con baterías.

Hay varias operaciones para las que los desarrolladores pueden utilizar el acelerador criptográfico. Primero, pueden usarlo para cifrar comunicaciones o datos. Un esquema de cifrado común para usar es AES-256, pero otros pueden ser compatibles según la MCU. Otra aplicación es calcular el hash de un conjunto de datos. Esto puede resultar útil al verificar la integridad del código de la aplicación o de un dato.

Los aceleradores criptográficos son fáciles de pasar por alto, pero cualquier MCU segura y buena tendrá uno. El truco para los desarrolladores es revisar qué es compatible y asegurarse de que tenga las capacidades necesarias para el ciclo de vida esperado de la aplicación.

Conclusión

La seguridad no es algo que los desarrolladores puedan simplemente agregar a su sistema al final del ciclo de desarrollo. Se debe tener cuidado desde el principio para comprender las amenazas al sistema y seleccionar una MCU que contenga todas las capacidades de hardware necesarias para protegerlo.

Acerca de este autor

Image of Jacob Beningo

Jacob Beningo es un consultor de software integrado que actualmente trabaja con clientes en más de una docena de países para transformar drásticamente sus negocios mejorando la calidad del producto, el costo y el tiempo de comercialización. Ha publicado más de 200 artículos sobre técnicas de desarrollo de software embebido, es un conferenciante y entrenador técnico muy solicitado y tiene tres títulos que incluyen una Maestría en Ingeniería de la Universidad de Michigan. No dude en ponerse en contacto con él en jacob@beningo.com, en su sitio web www.beningo.com, y suscríbase a su boletín mensual Embedded Bytes Newsletter.

More posts by Jacob Beningo
 TechForum

Have questions or comments? Continue the conversation on TechForum, Digi-Key's online community and technical resource.

Visit TechForum