Utilice una EEPROM cifrada externa para proteger los datos en sistemas integrados

Por Bill Giovino

Colaboración de Editores de Digi-Key de América del Norte

Algunos microcontroladores cuentan con EEPROM en chip. Esto proporciona una memoria de datos no volátil al mismo tiempo que ahorra espacio en la placa. Sin embargo, a medida que la seguridad de datos se vuelve más importante, muchos sistemas integrados modernos necesitan almacenar los datos de manera fácil y segura utilizando una memoria no volátil que también brinde protección contra los piratas informáticos externos.

Este artículo describirá cómo las EEPROM seguras de un solo chip proporcionan un almacenamiento seguro de datos no volátiles y protección contra los piratas informáticos, sin adentrarse en el fondo del cifrado. En su lugar, presentará un ejemplo adecuado de una EEPROM segura de un conocido proveedor y describirá cómo funciona y cómo aplicarla.

La necesidad de una EEPROM segura

Muchos sistemas integrados se beneficiaron de una memoria de datos no volátil, que normalmente fue una EEPROM. La EEPROM se puede leer y escribir bajo el control del firmware y conserva el estado cuando se interrumpe alimentación del sistema, en comparación con la RAM, que pierde el estado cuando se interrumpe alimentación.

Si bien la EEPROM en microcontroladores siempre fue útil para almacenar los datos del programa que deben conservarse al interrumpir la alimentación, generalmente presenta las mismas vulnerabilidades de seguridad que la RAM. En algunos microcontroladores modernos de 8, 16 y 32 bits, existen métodos de seguridad que pueden evitar que un área de la memoria de datos se lea bajo el control del firmware o bloquear la lectura de datos mediante una interfaz externa como un depurador. En el pasado, esta seguridad podría considerarse adecuada, pero ahora existen situaciones en las que los piratas informáticos pueden poseer el dinero, el tiempo, la motivación y los recursos necesarios para burlar esta adecuada seguridad y obtener así acceso a sistemas críticos.

Los sistemas integrados modernos evolucionaron a tal punto que muchas aplicaciones ahora requieren una protección de datos más sólida. Esto es especialmente cierto en algunos sistemas de seguridad, comunicaciones de vehículo a vehículo, dispositivos médicos modernos, vehículos autónomos y nodos de IoT. La seguridad de datos también puede ser necesaria para simplemente evitar la clonación del sistema. Estas son aplicaciones en las que los datos de la EEPROM comprometidos por un ataque exitoso de piratas informáticos maliciosos pueden causar daños a la propiedad o algo peor.

En estas situaciones, se requiere una EEPROM que brinde una alta protección contra los piratas informáticos que cuentan con importantes recursos. Para tales situaciones, está disponible una EEPROM de alta seguridad que puede cifrar fácilmente información confidencial como contraseñas, hashes de clonación y datos biométricos y de huellas dactilares y calibración de sensores.

La tecnología Microchip resolvió este problema de diseño con una línea de dispositivos CryptoAuthentication™. Si esto le suena familiar, es porque Microchip heredó la línea como parte de la adquisición de Atmel. Uno de estos dispositivos de la línea es la EEPROM segura ATAES132A de 32 Kbytes (Figura 1).

Imagen de la EEPROM serial ATAES132A de 32 Kbytes de Atmel

Figura 1: La EEPROM serial ATAES132A de 32 Kbytes se diseñó específicamente con características de seguridad para proteger los datos y los registros internos. (Fuente de la imagen: Digi-Key Electronics)

La ATAES132A puede usarse como cualquier EEPROM serial de 32 Kbytes estándar. Utiliza un patillaje estándar SPI e I2C, por lo que puede reemplazar las EEPROM seriales estándar en diseños existentes sin modificaciones de hardware. Esto permite que los diseños existentes se actualicen fácilmente con seguridad adicional modificando solo el firmware de la aplicación.

Sin embargo, también cuenta con una importante protección física, cifrado y otras características de seguridad diseñadas que, cuando se habilitan, protegerán los registros internos y los datos de la EEPROM de todos, excepto de los piratas informáticos más determinados. Los datos se pueden proteger mediante el cifrado AES de grado militar con hasta dieciséis claves de 128 bits.

Protección física

Para comenzar, la ATAES132A cuenta con muchos mecanismos de seguridad mecánicos para evitar que el dispositivo se someta a ingeniería inversa física. El dispositivo es sensible a ciertos cambios en la temperatura ambiente, como los intentos de "congelar" el dispositivo para conservar el contenido de la memoria. El dispositivo puede detectar intentos de destapado para exponer la matriz. Un escudo de metal cubre la matriz y, si se retira, la matriz detecta la exposición a la luz, lo que puede iniciar un mecanismo para destruir el contenido de la memoria.

Finalmente, se cifran los contenidos de la memoria interna. El dispositivo también puede incluir mecanismos de seguridad no divulgados que solo conocen los ingenieros de Microchip, ya que Microchip mantiene la confidencialidad de los detalles de estos mecanismos de seguridad. Esto proporciona una gran seguridad física a la memoria segura, lo que evita que el desarrollador construya recintos complicados que representen una barrera para la EEPROM.

En el encendido, la ATAES132A puede configurarse para conectarse a la mayoría de los microcontroladores utilizando la interfaz SPI o I2C. Cuando se usa en modo I2C, el pin de Chip Select no se usa y se debe conectar a la fuente de alimentación o a tierra. Cuando se configura en modo SPI, se utiliza Chip Select con total normalidad.

Cifrado de datos AES

El cifrado se implementa en la ATAES132A utilizando AES-CCM con una clave de 128 bits. En pocas palabras, los datos que deben cifrarse se someten a una serie de funciones matemáticas complejas en las que se combinan con un número de 128 bits programado por el desarrollador del firmware. La matemática compleja realizada durante las operaciones de cifrado y descifrado AES se realiza mediante la ATAES132A y, excepto para configurar algunas variables y seleccionar las claves de 128 bits, este proceso es transparente para el desarrollador de firmware, lo que facilita enormemente el desarrollo del producto.

Mapa de memoria de la ATAES132A

El dispositivo se puede usar simplemente como una EEPROM serial no cifrada estándar. Sin embargo, si un desarrollador utiliza las funciones de seguridad avanzadas, el dispositivo se estructura y usa de manera muy diferente. La forma más rápida de entender la ATAES132A es examinar el mapa de memoria, que es más profundo que el de una EEPROM estándar como se ve en la Tabla 1.

Rango de dirección de la ATAES132A Descripción
0000h-0FFFh Memoria EEPROM de 32 Kbytes de usuario (datos)
1000h-EFFFh Reservado
F000h-F05Fh Registros de configuración del dispositivo
F060h-F07Fh Registros de configuración de Cpimter
F080h-F0BFh Registros de configuración clave
F0C0h-F0FFh Registros de configuración de seguridad de la zona
F100h-F17Fh Registros del contador de la zona
F180h-F1DFh Memoria no cifrada FreeSpace de 96 bytes
F1E0h-F1FFh Memoria no cifrada SmallZone de 32 bytes
F200h-F2FFh Almacenamiento clave
F300h-FDFFh Reservado
FE00h Búfer de memoria de comando y respuesta
FE01h-FFDFh Reservado
FFE0h Registro de restablecimiento de direcciones de E/S (solo escritura)
FFE1h-FFEFh Reservado
FFF0h Registro de estado (solo lectura)
FFF1h-FFFFh Reservado

Tabla 1: El mapa de memoria de la ATAES132A es más profundo que el de una EEPROM serial estándar. (Fuente de datos: Microchip Technology)

La mayoría de las ubicaciones del mapa de memoria se leen o escriben usando los comandos estándar I2C o SPI.

La EEPROM y los registros de configuración de seguridad de la zona

La memoria EEPROM de 32 Kbytes de datos se divide en dieciséis zonas de 2 Kbytes. Cada zona de memoria puede configurarse individualmente con o sin seguridad. Los parámetros de seguridad para cada una de las 16 zonas de memoria se configuran en el área Registros de configuración de seguridad de la zona. Los siguientes son los parámetros de seguridad básicos que se pueden configurar individualmente para cada una de las dieciséis zonas de 2 Kbytes:

  • Activación/desactivación del cifrado para la lectura de datos
  • Activación/desactivación del cifrado para la escritura de datos
  • Activación/desactivación de la autenticación para la lectura de datos
  • Activación/desactivación de la autenticación para la escritura de datos
  • Establecimiento permanente de la zona en solo lectura

Estas configuraciones ofrecen una gran flexibilidad al configurar la seguridad de una aplicación. Se puede configurar una zona para que no use cifrado ni autenticación con acceso de lectura/escritura, lo que permite lecturas y escrituras como cualquier EEPROM estándar. Otra zona puede requerir cifrado y autorización completas, lo que proporciona alta seguridad para datos confidenciales.

Registros de configuración del dispositivo

El comportamiento general del dispositivo se configura en el área Registros de configuración del dispositivo. Esta área también contiene información de solo lectura sobre el dispositivo. Esto incluye un número serial de 32 bits exclusivo para el dispositivo que se usa con el fin de identificar el dispositivo. Otros registros permiten que las zonas de memoria u otros registros se configuren como de solo lectura. Esto se llama bloqueo de memoria. Una vez que un registro o una zona de memoria se bloquea, es permanente y ya no se puede desbloquear.

También en esta área se encuentra el registro I2CAddr, que se utiliza en la configuración si el dispositivo se usa en modo I2C o SPI. Al encender el dispositivo, se escribe el registro I2CAddr de un byte. El bit 0 de I2CAddr determina el modo de interfaz serial. Si el firmware escribe un 0, el dispositivo está configurado en modo SPI. Si escribe un 1, se selecciona el modo I2C. Si se selecciona el modo I2C, la dirección del dispositivo de 7 bits es 50h.

Búferes de memoria de comando y respuesta

Si bien se puede acceder a las ubicaciones de memoria en el dispositivo utilizando el direccionamiento estándar SPI o I2C, el dispositivo también acepta comandos similares a un microcontrolador. Un comando y los operandos, llamados bloque de comando, pueden tener uno o más bytes y siempre se escriben directamente en el Búfer de memoria de comando y respuesta en la dirección FE00h. Un bloque de comando se compone de una instrucción de un solo byte, uno o más bytes de operandos y una suma de comprobación de 2 bytes.

Los comandos disponibles incluyen autenticación de datos, lecturas en bloque de zonas de EEPROM, contadores incrementales y lectura directa de cualquier memoria protegida o registro que requiera autenticación. Las respuestas a los comandos se leen desde la misma ubicación FE00h. Todas las escrituras realizadas en FE00h son comandos enviados al Búfer de memoria de comandos. Todas las lecturas de FE00h se leen desde el Búfer de memoria de respuesta.

El Registro de restablecimiento de direcciones de E/S en FFE0h es un registro de solo escritura que se utiliza para restablecer los búferes de memoria de comando y respuesta. La escritura de cualquier valor en FFE0h realiza dos operaciones: elimina todos los datos del búfer de memoria de comando para que pueda aceptar un nuevo bloque de comando y restablece el búfer de memoria de respuesta en cero para que el contenido pueda leerse desde el principio.

El restablecimiento del búfer de memoria de respuesta permite que el firmware vuelva a leer la respuesta completa. Esto puede ser útil en el código donde se puede haber producido una interrupción mientras el microcontrolador del host leía el búfer de la memoria de respuesta y, al regresar de la interrupción, los datos deben volver a leerse desde el principio.

También existen comandos para realizar el cifrado y descifrado AES para lecturas y escrituras en EEPROM. Estos cálculos son muy complejos y no se cubrirán aquí. Sin embargo, Microchip proporciona controladores y firmware para microcontroladores que realizan fácilmente todas estas funciones de manera que el programador necesite un conocimiento mínimo sobre el cifrado AES.

Registros del contador de la zona

Esta área de registro contiene 16 contadores de solo lectura asociados con cada zona. Cada zona de memoria se cifra o descifra mediante la clave de zona de 128 bits. Cada vez que se utiliza una clave de zona, un contador de zona de 32 bits asociado puede o no incrementarse según la configuración en los registros de configuración de contador de zona asociados. Por razones de seguridad, los contadores nunca pueden reducirse ni restablecerse.

El firmware puede escribir directamente en un contador de zona para incrementarlo a un valor inicial, pero nunca a un valor inferior al contenido del contador existente. Los contadores de zona se pueden escribir y bloquear durante la fabricación para limitar el número de conteos. Cuando el contador alcanza el valor máximo de 2,097,151, la clave asociada se puede deshabilitar permanentemente para evitar su uso en futuras operaciones de cifrado o descifrado. Esto puede ser útil para las claves de uso limitado, como permitir que el firmware del microcontrolador se vuelva a flashear un número limitado de veces.

Para mayor seguridad, se duplica cada contador de zona de 32 bits. Esto es para detectar la corrupción de los contadores de zona en el caso de que ocurra una falla de alimentación durante un incremento del contador de zona. En el encendido de la aplicación, el firmware debe leer ambos valores de contador para todos los contadores de zona. Si los valores son diferentes en una aplicación sólida, esto sería evidencia de un evento de interrupción de alimentación no autorizado, lo que podría indicar un intento no autorizado de deshabilitar la seguridad de la aplicación mientras está en funcionamiento.

Registro de estado

El registro de estado de ATAES132A es un registro de solo lectura que indica códigos de error, incluidas sumas de comprobación y errores de comando incorrectos. También indica si la ATAES132A está en modo I2C o SPI, así como el progreso de los comandos y la validez de las respuestas. Debe leerse antes y después de todas las lecturas, escrituras, comandos y respuestas. Los errores pueden indicar intentos externos de interferir con la conexión I2C o SPI entre el microcontrolador host y la ATAES132A. Depende del firmware del host tomar las medidas adecuadas, como alertar a un operador o hacer sonar una alarma.

Configuración de la ATAES132A durante la fabricación

La seguridad del dispositivo ATAES132A debe configurarse durante la fabricación del producto final. Para reducir la posibilidad de errores de configuración, la ATAES132A debe configurarse mientras está en el sistema. Inicialmente, todos los valores de contador y las configuraciones de contador iniciales deben configurarse. A continuación, se deben programar las claves y los parámetros de cifrado. Por último, se deben programar todos los valores iniciales de la EEPROM. El número serial exclusivo del dispositivo de 32 bits se puede leer desde la ATAES132A para que pueda incorporarse en el firmware del microcontrolador del host.

Se recomienda que se lean todos los valores de la EEPROM programados para garantizar una configuración adecuada de la ATAES132A. Si alguno de los valores no se lee correctamente, o si el registro de estado indica un error en la suma de comprobación o un error de comando, el producto final se debe marcar y eliminar de la producción. Opcionalmente, si existe suficiente EEPROM de repuesto, se puede realizar una prueba de cifrado y descifrado.

Desarrollo de ATAES132A

Para ayudar al desarrollo, Microchip proporciona el kit de inicio CryptoAuthentication Xplained-Pro DM320109 (Figura 2). La ATAES132A se conecta a un microchip ATSAMD21J18A Arm® Cortex®-M0 + microcontrolador.

Imagen del kit de inicio y desarrollo CryptoAuthentication DM320109 Xplained de Microchip

Figura 2: El kit de inicio y desarrollo CryptoAuthentication DM320109 Xplained de Microchip proporciona una manera fácil de evaluar y desarrollar el código para la ATAES132A. Viene con numerosos ejemplos de código e interfaces para la mayoría de las PC compatibles con Windows, Linux o MacOS. (Fuente de la imagen: Microchip Technology)

El microcontrolador ATSAMD21J18A de Microchip tiene una interfaz USB para conectarse a un entorno de desarrollo de la PC. Es compatible con las interfaces I2C y SPI y se puede utilizar para interconectarse con la ATAES132A. Una vez conectada a la PC de destino con el cable USB suministrado, el kit se puede usar para configurar y monitorear todas las funciones de la ATAES132A.

Se proporciona un segundo cable USB para monitorear y registrar paquetes de datos entre la ATAES132A y el ATSAMD21J18A. Este cable se conecta entre la placa Xplained y un puerto USB disponible en la PC. El desarrollador puede luego monitorear las señales entre el microcontrolador y la EEPROM para observar los datos cifrados que pasan entre los dos dispositivos.

El kit Xplained incluye todas las bibliotecas de firmware y el código de ejemplo para la ATAES132A. Al entender el mapa de memoria de ATAES132A y los registros descritos aquí, el desarrollador puede personalizar fácilmente el código de ejemplo para que se ajuste a la aplicación de destino con un conocimiento mínimo del cifrado del dispositivo.

Conclusión

El cifrado AES de 128 bits es un tema complicado. A pesar de eso, los desarrolladores pueden proteger datos confidenciales en una EEPROM que se diseñó específicamente para ese propósito. Busque protecciones mecánicas, cifrado sólido, zonificación especial y mapeo de memoria y características personalizadas o confidenciales conocidas solo por la compañía o el usuario final.

Descargo de responsabilidad: Las opiniones, creencias y puntos de vista expresados por los autores o participantes del foro de este sitio web no reflejan necesariamente las opiniones, las creencias y los puntos de vista de Digi-Key Electronics o de las políticas oficiales de Digi-Key Electronics.

Información sobre el autor

Bill Giovino

Bill Giovino es ingeniero electrónico con un BSEE de la universidad de Syracuse y es uno de los pocos profesionales capaz de pasar de ingeniería en diseño a ingeniería de aplicación en campo a marketing tecnológico de forma exitosa.

Durante más de 25 años, Bill ha disfrutado promocionar las nuevas tecnologías a audiencias técnicas y no técnicas por igual en muchas empresas, entre ellas STMicroelectronics, Intel y Maxim Integrated. Mientras trabajó en STMicroelectronics, Bill ayudó a dirigir los primeros éxitos de la empresa en la industria de microcontroladores. En Infineon, Bill estuvo a cargo de que el diseño del primer controlador de la empresa tuviera éxito en la industria automotriz de EE. UU. Como consultor de marketing para CPU Technologies, Bill ha ayudado a muchas empresas a convertir sus productos con bajo rendimiento en casos de éxito.

Bill fue uno de los primeros en adoptar el Internet de las cosas, incluso colocar la primera pila de TCP/IP en un microcontrolador. Bill es un ferviente creyente de "Vender a través de la educación" y de la gran importancia de contar con comunicaciones claras y bien escritas a la hora de promocionar productos en línea. Es moderador del grupo en Linkedin denominado Semiconductor Sales & Marketing (Marketing y ventas de semiconductores) y habla sobre el concepto B2E (empresa-empleado) de manera fluida.

Información sobre la editorial

Editores de Digi-Key de América del Norte