Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Microcontroladores y sus principales medidas de protección

Fecha de publicación 25/05/2023
Autor
INCIBE (INCIBE)
Microcontroladores y sus principales medidas de protección

En los últimos años, debido a los grandes avances tecnológicos, se está apreciando una tendencia al desarrollo de dispositivos lo más pequeños posibles, destinados a funcionalidades muy específicas y con un rendimiento óptimo. Una parte esencial para lograr este propósito ha sido el uso de microcontroladores (o MCU), que fundamentalmente son circuitos integrados compactos diseñados para realizar una operación específica en un sistema embebido. 

microcontrolador

- Microcontrolador -

Un microcontrolador típico incluye un procesador, memoria y periféricos de entrada/salida (E/S) en un único chip. Además, soportan, diversos tipos de elementos de hardware que permiten adaptarse a las funcionalidades específicas que requiera la aplicación. Un ejemplo de estos elementos serían los controladores de pantalla y aceleración de gráficos 2D, lo que les permite controlar pantallas y aceptar entradas táctiles.

Asimismo, a diferencia de otros microprocesadores, como las CPU, los microcontroladores no están diseñados para ejecutar sistemas operativos pesados, como Linux o Windows ya que consumen demasiados recursos. Sin embargo, existen sistemas operativos más ligeros denominados sistemas operativos en tiempo real (Real-Time Operating System), los cuales dan soporte a una única aplicación que tiene acceso directo al hardware del chip y que dispone de la gran mayoría del tiempo de procesamiento. El acceso directo al hardware también ofrece otra ventaja: las comunicaciones en tiempo real. A diferencia de un sistema operativo abstraído del mismo, una aplicación que se ejecuta en un RTOS tiene menos abstracciones que ralenticen el acceso y, por lo general, ofrece una latencia de acceso al hw conectado mucho menor.

Los microcontroladores tienen infinidad de aplicaciones que no solo están muy presentes en la vida cotidiana de las personas, sino que también han adquirido gran importancia en el mundo industrial, sobre todo en las plantas de fabricación modernas, ya que están formadas por líneas de producción inteligentes que analizan la información y automatizan los procesos. Además, también toman un gran papel en IoT (Internet of Things) debido a que muchos microcontroladores reciben un soporte integrado destinado a la conectividad mediante Ethernet y Wi-Fi, entre otras.

Familias más comunes

En función de la complejidad y de los requisitos de las tareas que tenga que realizar el microcontrolador, se pueden utilizar diferentes familias de microcontroladores que optimicen los recursos y se adecuen mejor a las necesidades de la aplicación.  

Las familias de microcontroladores se basan en una arquitectura de procesador para su diseño, por lo que antes de describir las principales familias de microcontroladores y sus diferencias, es conveniente detallar cuáles son las dos arquitecturas que se utilizan en la actualidad:

  • Complex Instruction Set Computer (CISC). Los microprocesadores CISC se caracterizan por su versatilidad, ya que cuentan con un amplio conjunto de instrucciones y permiten realizar operaciones complejas entre operandos de la memoria o de registros internos.
  • Reduced Instruction Set Computer (RISC). Los microprocesadores RISC solo admiten un número fijo de instrucciones, y solo las instrucciones de carga y almacenamiento pueden acceder a la memoria de datos. De esta manera, se posibilita la segmentación y el paralelismo de la ejecución de las instrucciones, así como la reducción de accesos a memoria, logrando una mayor velocidad de ejecución.

    RISC vs CISC

    - RISC vs CISC. Fuente -

Se puede apreciar que no hay una arquitectura mejor que la otra, sino que cada una está diseñada para propósitos diferentes. La arquitectura del procesador, sumada a la elección de parámetros como la anchura de bus o la estructura de memoria, dan lugar a un gran número de familias de microcontroladores, siendo dos de las más importantes 8051 y ARM:

  • 8051. El microcontrolador 8051 fue diseñado por Intel en 1981. Es un microcontrolador de 8 bits, basado en la arquitectura CISC y que está construido con: 40 pines Dual Inline Package (DIP), 4kb de almacenamiento ROM, 128 bytes de almacenamiento RAM y 2 temporizadores de 16 bits. Consta de cuatro puertos paralelos de 8 bits, que son programables y direccionables según las necesidades, además de un oscilador de cristal que está integrado en el microcontrolador con una frecuencia de 12 MHz.
  • ARM. El microcontrolador Advanced RISC Machine (ARM) fue creado por Acron Computers en 1987. Es un microcontrolador de 32 bits basado en la arquitectura RISC y se divide en múltiples categorías como ARMv1 o ARMv2 en función de las características que lo formen.

    microcontrolador ARM

- Microcontrolador ARM -

Interfaces

Los microcontroladores, además de contar con los componentes mencionados hasta ahora, hacen uso de diferentes interfaces y protocolos de comunicación para transmitir la información. Las interfaces más utilizadas son las siguientes:

  • UART (Universal Asynchronous Reciber/Transmitter). 
  • SPI (Serial Peripheral Interface). 
  • I2C (Inter-Integrated Circuit). 
  • JTAG (Joint Test Access Group).

Estas interfaces son muy útiles para los proveedores y técnicos a la hora de llevar a cabo las comunicaciones y acceder a datos de memoria, el problema de estas interfaces es que se trata de un gran punto de acceso o foco para los ciberatacantes debido a la baja ciberseguridad de esta tecnología.  

Estos ataques se realizan mediante el uso de técnicas de hardware hacking y, aunque que si es cierto que ya existen medidas de protección físicas que sirvan para bloquear estos ataques, a veces no se pueden aplicar, ya que en algunos casos el uso de las interfaces es indispensable para los proveedores y técnicos.

Protecciones de los microcontroladores

Debido a los grandes problemas que puede producir esta tecnología, por su bajo nivel de ciberseguridad, ha provocado que se empiecen a buscar diferentes soluciones.

Como por ejemplo la solución para proteger los microcontroladores del hardware hacking. Esta solución reside en la implementación de medidas de seguridad vía software y en la eliminación de servicios innecesarios:  

  • Boot seguro. Es un mecanismo de protección diseñado por Espressif para su modelo ESP32 para salvaguardar al dispositivo de ejecutar cualquier código no autorizado. De esta forma, chequea que cada pieza de software que está siendo arrancada por el bootloader esté firmada mediante un esquema de verificación de boot seguro basado en el algoritmo criptográfico RSA. El proceso del boot seguro se realiza en dos pasos. 
    • Primero se realiza la verificación, es decir, si la firma RSA de la pieza es correcta, se ejecuta el software.   
    • El segundo paso se da cuando el bootloader trata de cargar una imagen particular de aplicación, en la que la firma RSA de la aplicación se verifica antes de ejecutarla.
  • Cifrado de la memoria flash. También diseñada por Espressif, esta funcionalidad se habilita mediante el uso de bits eFuse, que son campos de un bit que pueden programarse a 1, pero que no pueden volver a ponerse en 0, los cuales se utilizan para parámetros de sistema y de usuario. Esta funcionalidad permite proteger la lectura del contenido almacenado en la memoria flash, ya que se logran cifrar por defecto los tres componentes software principales del sistema: el bootloader, la tabla de particiones y las particiones de aplicación. De forma adicional, se puede cifrar cualquier sección de la memoria con distinto uso.
  • Servicios innecesarios. Además de las dos medidas de seguridad recién mencionadas, otro método efectivo, y que no requiere de componentes especiales ni elementos de cifrado, es la limitación de los servicios disponibles en un sistema a los mínimos necesarios. Esto reduciría significativamente la superficie de ataque en estos dispositivos. A continuación, se describen dos buenas prácticas que sirven para aumentar el nivel de seguridad de un microcontrolador:  
    • Supresión del mensaje emitido en el arranque por el bootloader: el bootloader emite un mensaje con información confidencial acerca del dispositivo. Este mensaje es fácil de interceptar y permitiría al atacante obtener información y elaborar ataques más complejos, por lo que es recomendable implementar configuraciones que bloqueen ese mensaje. Entre dichas configuraciones podemos encontrar la eliminación de la emisión de eventos y el bloqueo del uso de una consola en el puerto UART.  
    • Inhabilitación del puerto JTAG: para evitar que el atacante utilice los medios de depuración que permiten el control completo del dispositivo, se debe inhabilitar dicho servicio en la medida de lo posible. Si bien es cierto que los mecanismos de depuración son de utilidad para los diseñadores, es recomendable valorar la posibilidad de mantener el puerto deshabilitado, aunque esto suponga la necesidad de realizar un cambio en el dispositivo para realizar acciones de actualización o reprogramación.
microcontrolador ESP32

- Microcontrolador de la serie ESP32 de Espressi - 

Conclusiones

Los microcontroladores están más presentes que nunca y es raro encontrar un dispositivo electrónico que no disponga de uno de ellos, pero, al mismo tiempo, esta expansión y desarrollo en los microcontroladores implica un incremento de interés por parte de los ciberatacantes, sobre todo en entornos industriales.

Sin embargo, la concienciación respecto a la ciberseguridad en entornos OT está aumentando en los últimos años y el resultado se está materializando en un notable aumento de las medidas de seguridad en los diferentes aspectos de las plantas industriales. Esto incluye a los microcontroladores que, por muy pequeños que sean, pueden ser fuente de grandes problemas si no se configuran correctamente.