Paquete de software X-CUBE-SAFEA1

Presupuesto

  • Nombre del producto: Elemento seguro STSAFE-A110
  • Versión: X-CUBE-SAFEA1 v1.2.1
  • Integrado en: paquete de software STM32CubeMX
  • Características principales:
    • Establecimiento de canal seguro con host remoto que incluye
      protocolo de enlace de seguridad de la capa de transporte (TLS)
    • Servicio de verificación de firma (arranque y firmware seguros)
      mejora)
    • Monitoreo de uso con contadores seguros
    • Emparejamiento y canal seguro con el procesador de aplicaciones host
    • Envolver y desenvolver sobres de host local o remoto
    • Generación de pares de claves en chip

Instrucciones de uso del producto

1. Información general

El elemento seguro STSAFE-A110 está diseñado para proporcionar
Servicios de autenticación y gestión de datos a nivel local o remoto.
Hospedadores. Es adecuado para diversas aplicaciones, como dispositivos IoT,
sistemas de hogar inteligente, aplicaciones industriales y más.

2. Primeros pasos

Para empezar a utilizar el elemento seguro STSAFE-A110:

  1. Consulte la hoja de datos disponible en el STSAFE-A110 oficial.
    web página para obtener información detallada.
  2. Descargue el paquete de software middleware STSAFE-A1xx desde
    Página de internet STSAFE-A110 o STM32CubeMX.
  3. Garantice la compatibilidad con IDE compatibles como STM32Cube IDE o
    Banco de trabajo del sistema para STM32.

3. Descripción del software intermedio

3.1 Descripción general

El middleware STSAFE-A1xx facilita la interacción entre
el dispositivo de elemento seguro y una MCU, lo que permite varios casos de uso.
Está integrado en los paquetes de software ST para mejorar la seguridad.
características.

3.2 Arquitectura

El middleware consta de diferentes componentes de software,
incluido:

  • API STSAFE-A1xx (interfaz principal)
  • CRIPTOGRAFÍA NÚCLEO
  • MbedTLS Interfaz de servicio criptográfico SHA/AES
  • Interfaz de servicio de hardware X-CUBECRYPTOLIB

Preguntas frecuentes (FAQ)

P: ¿Dónde puedo encontrar la hoja de datos STSAFE-A110?

R: La hoja de datos está disponible en el STSAFE-A110 web Pagina para
información adicional sobre el dispositivo.

P: ¿Cuáles son los entornos de desarrollo integrados admitidos?
para el middleware STSAFE-A1xx?

R: Los IDE compatibles incluyen STM32Cube IDE y System Workbench
para STM32 (SW4STM32) en el paquete X-CUBE-SAFEA1 v1.2.1.

UM2646
Manual de usuario
Primeros pasos con el paquete de software X-CUBE-SAFEA1
Introducción
Este manual del usuario describe cómo comenzar con el paquete de software X-CUBE-SAFEA1. El paquete de software X-CUBE-SAFEA1 es un componente de software que proporciona varios códigos de demostración, que utilizan las funciones del dispositivo STSAFE-A110 desde un microcontrolador host. Estos códigos de demostración utilizan el middleware STSAFE-A1xx integrado en la tecnología de software STM32Cube para facilitar la portabilidad entre diferentes microcontroladores STM32. Además, es independiente de la MCU para su portabilidad a otras MCU. Estos códigos de demostración ilustran las siguientes características: · Autenticación · Emparejamiento · Establecimiento de claves · Envoltura de sobre local · Generación de pares de claves

UM2646 – Rev 4 – marzo de 2024 Para obtener más información, comuníquese con su oficina de ventas local de STMicroelectronics.

www.st.com

1
Nota: Nota:

UM2646
información general
información general
El paquete de software X-CUBE-SAFEA1 es una referencia para integrar los servicios de elementos seguros STSAFE-A110 en el sistema operativo (SO) de una MCU host y su aplicación. Contiene el controlador STSAFE-A110 y códigos de demostración para ejecutar en microcontroladores STM32 de 32 bits basados ​​en el procesador Arm® Cortex®-M. Arm es una marca registrada de Arm Limited (o sus subsidiarias) en los EE. UU. y/o en otros lugares. El paquete de software X-CUBE-SAFEA1 está desarrollado en ANSI C. Sin embargo, la arquitectura independiente de la plataforma permite una fácil portabilidad a una variedad de plataformas diferentes. La siguiente tabla presenta la definición de siglas que son relevantes para una mejor comprensión de este documento.
El paquete de software STSAFE-A1xx está integrado en X-CUBE-SAFEA1 v1.2.1 como middleware y está integrado como BSP para el paquete de software para STM32CubeMX.

UM2646 - Rev 4

página 2/23

UM2646
Elemento seguro STSAFE-A110

2

Elemento seguro STSAFE-A110

El STSAFE-A110 es una solución altamente segura que actúa como un elemento seguro proporcionando servicios de autenticación y gestión de datos a un host local o remoto. Consiste en una solución completa llave en mano con un sistema operativo seguro que se ejecuta en la última generación de microcontroladores seguros.

El STSAFE-A110 se puede integrar en dispositivos IoT (Internet de las cosas), aplicaciones industriales y de hogares inteligentes, ciudades inteligentes, dispositivos electrónicos de consumo, consumibles y accesorios. Sus características clave son:

·

Autenticación (de periféricos, dispositivos IoT y USB Type-C®)

·

Establecimiento de canal seguro con host remoto, incluido el protocolo de enlace de seguridad de la capa de transporte (TLS)

·

Servicio de verificación de firma (arranque seguro y actualización de firmware)

·

Monitoreo de uso con contadores seguros

·

Emparejamiento y canal seguro con el procesador de aplicaciones host

·

Envolver y desenvolver sobres de host local o remoto

·

Generación de pares de claves en chip

Consulte la hoja de datos STSAFE-A110 disponible en el STSAFE-A110 web página para obtener información adicional sobre el dispositivo.

UM2646 - Rev 4

página 3/23

UM2646
Descripción del middleware STSAFE-A1xx

3

Descripción del middleware STSAFE-A1xx

Esta sección detalla el contenido del paquete de software middleware STSAFE-A1xx y la forma de utilizarlo.

3.1

Descripción general

El middleware STSAFE-A1xx es un conjunto de componentes de software diseñados para:

·

interconectar el dispositivo de elemento seguro STSAFE-A110 con una MCU

·

implementar los casos de uso más genéricos de STSAFE-A110

El middleware STSAFE-A1xx está completamente integrado en los paquetes de software ST como un componente de middleware para agregar características de elementos seguros (por ejemploample X-CUBE-SBSFU o X-CUBE-SAFEA1).

Se puede descargar desde la página de Internet STSAFE-A110 a través de la pestaña Herramientas y software o se puede descargar desde STM32CubeMX.

El software se proporciona como código fuente según un acuerdo de licencia de software ST (SLA0088) (consulte Información de licencia para obtener más detalles).

Se admiten los siguientes entornos de desarrollo integrados:

·

Banco de trabajo integrado IAR® para Arm® (EWARM)

·

Kit de desarrollo de microcontrolador Keil® (MDK-ARM)

·

STM32CubeIDE (STM32CubeIDE)

·

System Workbench para STM32 (SW4STM32) compatible solo con el paquete X-CUBE-SAFEA1 v1.2.1

Consulte las notas de la versión disponibles en la carpeta raíz del paquete para obtener información sobre las versiones de IDE compatibles.

3.2

Arquitectura

Esta sección describe los componentes de software del paquete de software middleware STSAFE-A1xx.

La siguiente figura presenta una view de la arquitectura de middleware STSAFE-A1xx e interfaces relacionadas.

Figura 1. Arquitectura STSAFE-A1xx

API STSAFE-A1xx (interfaz principal)

CENTRO

CRIPTO

MbedTM TLS

Interfaz de servicio criptográfico SHA/AES

SERVICIO

zona aislada
Adecuado para protección mediante funciones de seguridad de MCU
(MPU, cortafuegos, TrustZone®, etc.)

Interfaz de servicio de hardware

X-CUBECRYPTOLIB

UM2646 - Rev 4

página 4/23

Nota:

UM2646
Descripción del middleware STSAFE-A1xx

El middleware presenta tres interfaces diferentes:

·

API STSAFE-A1xx: Es la principal interfaz de programación de aplicaciones (API), que proporciona acceso completo a todos

los servicios STSAFE-A110 exportados a las capas superiores (aplicación, bibliotecas y pilas). Esta interfaz es

También se la conoce como interfaz principal porque todas las API exportadas se implementan en el módulo CORE.

Las capas superiores que necesitan integrar el middleware STSAFE-A1xx deben acceder al STSAFE-A110

características a través de esta interfaz.

·

Interfaz de servicio de hardware: Esta interfaz es utilizada por el middleware STSAFE-A1xx para alcanzar el nivel más alto.

Independencia de la plataforma de hardware. Incluye un conjunto de funciones genéricas para conectar la MCU específica, bus IO

y funciones de sincronización. Esta estructura mejora la reutilización del código de la biblioteca y garantiza una fácil portabilidad a

Otros dispositivos.

Definidas como funciones débiles, estas funciones genéricas deben implementarse a nivel de aplicación siguiendo el examparchivo proporcionado dentro de la plantilla stsafea_service_interface_template.c proporcionada para una fácil integración

y personalización dentro de las capas superiores.

·

Interfaz de servicio criptográfico: esta interfaz la utiliza el middleware STSAFE-A1xx para acceder

funciones criptográficas de plataforma o biblioteca como SHA (algoritmo hash seguro) y AES (algoritmo avanzado

estándar de cifrado) requerido por el middleware para algunas demostraciones.

Definidas como funciones débiles, estas funciones criptográficas deben implementarse a nivel de aplicación.

siguiendo al example proporciona dos plantillas diferentes:

stsafea_crypto_mbedtls_interface_template.c si se utiliza la biblioteca criptográfica Arm® MbedTM TLS; stsafea_crypto_stlib_interface_template.c si se utiliza la biblioteca criptográfica ST;

·

Se pueden utilizar bibliotecas criptográficas alternativas simplemente personalizando la fuente de la plantilla. filees. El

plantilla fileSe proporcionan s para una fácil integración y personalización dentro de las capas superiores.

Arm y Mbed son marcas comerciales registradas o marcas comerciales de Arm Limited (o sus subsidiarias) en los EE. UU. y/o en otros lugares.

UM2646 - Rev 4

página 5/23

UM2646
Descripción del middleware STSAFE-A1xx
La siguiente figura muestra el middleware STSAFE-A1xx integrado en una aplicación STM32Cube estándar, ejecutándose en una placa de expansión X-NUCLEO-SAFEA1 montada en una placa STM32 Nucleo.
Figura 2. Diagrama de bloques de la aplicación STSAFE-A1xx

Middleware STSAFE-A1xx en una aplicación STM32Cube

Diagrama de bloques de X-CUBE-SAFEA1 para STM32CubeMX
Para proporcionar la mejor independencia de hardware y plataforma, el middleware STSAFE-A1xx no está conectado directamente al STM32Cube HAL, sino a través de una interfaz. fileSe implementa a nivel de aplicación (stsafea_service_interface_template.c, stsafea_interface_conf.h).

UM2646 - Rev 4

página 6/23

UM2646
Descripción del middleware STSAFE-A1xx

3.3

Módulo principal

El módulo CORE es el núcleo del middleware. Implementa los comandos llamados por las capas superiores (aplicación, bibliotecas, pila, etc.) para utilizar correctamente las funciones de STSAFE-A1xx.

La siguiente figura presenta una view de la arquitectura del módulo CORE.

Figura 3. Arquitectura del módulo CORE

Capas superiores externas (aplicaciones, bibliotecas, pilas, etc.)

CENTRO

Módulo interno CRYPTO

Módulo interno de SERVICIO

El módulo CORE es un componente de software de interfaz múltiple conectado a:

·

Capas superiores: conexión externa a través de las API exportadas que se describen en las dos tablas siguientes;

·

Capa criptográfica: conexión interna al módulo CRYPTO;

·

Capa de servicio de hardware: conexión interna al módulo SERVICIO;

El paquete de software middleware STSAFE-A1xx proporciona una documentación API completa del módulo CORE en la carpeta raíz (consulte STSAFE-A1xx_Middleware.chm file).

Consulte la hoja de datos STSAFE-A110 para obtener una breve explicación del conjunto de comandos con el que están relacionadas las API de comandos enumeradas en la siguiente tabla.

Categoría API Configuración de inicialización
Comandos de propósito general
Comandos de partición de datos

Tabla 1. API exportada del módulo CORE
Función StSafeA_Init Para crear, inicializar y asignar el identificador del dispositivo STSAFE-A1xx. StSafeA_GetVersion Para devolver la revisión del middleware STSAFE-A1xx. StSafeA_Echo Para recibir los datos pasados ​​en el comando. StSafeA_Reset Para restablecer los atributos volátiles a sus valores iniciales. StSafeA_GenerateRandom Para generar una cantidad de bytes aleatorios. StSafeA_Hibernate Para poner el dispositivo STSAFE-Axxx en hibernación. StSafeA_DataPartitionQuery

UM2646 - Rev 4

página 7/23

UM2646
Descripción del middleware STSAFE-A1xx

categoría API

Comando de consulta de función para recuperar la configuración de la partición de datos.

StSafeA_Decrement Para disminuir el contador unidireccional en una zona de contador.

Comandos de partición de datos

StSafeA_Read Para leer datos de una zona de partición de datos.

StSafeA_Update Para actualizar datos a través de la partición de zona.

StSafeA_GenerateSignature Para devolver la firma ECDSA a través de un resumen de mensaje.

Comandos de clave pública y privada

StSafeA_GenerateKeyPair Para generar un par de claves en una ranura de clave privada.
StSafeA_VerifyMessageSignature Para verificar la autenticación del mensaje.

StSafeA_EstablishKey Para establecer un secreto compartido entre dos hosts mediante criptografía asimétrica.

StSafeA_ProductDataQuery Comando de consulta para recuperar los datos del producto.

StSafeA_I2cParameterQuery Comando de consulta para recuperar la dirección I²C y la configuración del modo de bajo consumo.

StSafeA_LifeCycleStateQuery Comando de consulta para recuperar el estado del ciclo de vida (nacido, operativo, terminado, nacido y bloqueado u operativo y bloqueado).

Comandos administrativos

StSafeA_HostKeySlotQuery Comando de consulta para recuperar la información de la clave del host (presencia y contador C-MAC del host).
StSafeA_PutAttribute Para colocar atributos en el dispositivo STSAFE-Axxx, como claves, contraseña, parámetros I²C según el atributo TAG.

StSafeA_DeletePassword Para eliminar la contraseña de su ranura.

StSafeA_VerifyPassword Para verificar la contraseña y recordar el resultado de la verificación para futuras autorizaciones de comandos.

StSafeA_RawCommand Para ejecutar un comando sin formato y recibir la respuesta relacionada.

StSafeA_LocalEnvelopeKeySlotQuery Comando de consulta para recuperar información de clave de sobre local (número de ranura, presencia y longitud de clave) para las ranuras de clave disponibles.

Comandos de sobre local

StSafeA_GenerateLocalEnvelopeKey Para generar una clave en una ranura de clave de sobre local.
StSafeA_WrapLocalEnvelope Para envolver datos (normalmente claves) que son administrados completamente por el host, con una clave de sobre local y el algoritmo [envoltura de clave AES].

StSafeA_UnwrapLocalEnvelope Para desenvolver un sobre local con una clave de sobre local.

UM2646 - Rev 4

página 8/23

UM2646
Descripción del middleware STSAFE-A1xx

categoría API
Comando de configuración de autorización de comando

Tabla 2. API del módulo STSAFE-A110 CORE exportadas
Función StSafeA_CommandAuthorizationConfigurationQuery Comando de consulta para recuperar las condiciones de acceso para comandos con condiciones de acceso configurables.

3.4

módulo de SERVICIO

El módulo SERVICIO es la capa inferior del middleware. Implementa una abstracción de hardware completa en términos de MCU y plataforma de hardware.

La siguiente figura presenta una view de la arquitectura del módulo SERVICIO.

Figura 4. Arquitectura del módulo SERVICIO

Módulo interno CORE

SERVICIO

Capas inferiores externas (BSP, HAL, LL, etc.)

El módulo SERVICIO es un componente de software de doble interfaz conectado a:

·

Capas inferiores externas: como BSP, HAL o LL. Las funciones débiles deben implementarse en niveles superiores externos.

capas y se basan en la plantilla stsafea_service_interface_template.c file;

·

Capa central: conexión interna al módulo CORE a través de las API exportadas descritas en la tabla

abajo;

El paquete de software de middleware STSAFE-A1xx proporciona una documentación API completa del módulo SERVICIO en la carpeta raíz (consulte STSAFE-A1xx_Middleware.chm file).

Tabla 3. API exportadas del módulo SERVICE

Categoría API Configuración de inicialización
Funciones de operación de bajo nivel

Función
StSafeA_BSP_Init Para inicializar el bus de comunicación y los pines IO necesarios para operar el dispositivo STSAFE-Axxx.
StSafeA_Transmit Para preparar el comando que se transmitirá y llamar a la API del bus de bajo nivel para ejecutarlo. Calcule y concatene un CRC, si es compatible.
StSafeA_Receive Para recibir datos del STSAFE-Axxx utilizando las funciones de bus de bajo nivel para recuperarlos. Verifique el CRC, si es compatible.

UM2646 - Rev 4

página 9/23

UM2646
Descripción del middleware STSAFE-A1xx

3.5

módulo CRIPTO

El módulo CRYPTO representa la parte criptográfica del middleware. Debe depender de los recursos criptográficos de la plataforma.

El módulo CRYPTO es completamente independiente de los otros módulos de middleware y, por esta razón, se puede encapsular fácilmente dentro de un área segura aislada adecuada para la protección mediante funciones de seguridad de MCU, como una unidad de protección de memoria (MPU), un firewall o TrustZone®.

La siguiente figura presenta una view de la arquitectura del módulo CRYPTO.

Figura 5. Arquitectura del módulo CRYPTO

Módulo interno CORE

CRIPTO

Capas criptográficas externas
(MbedTM TLS, X-CUBE-CRYPTOLIB)

El módulo CRYPTO es un componente de software de interfaz dual conectado a:

·

una biblioteca de criptografía externa: actualmente se admiten Mbed TLS y X-CUBE-CRYPTOLIB. Débil

Las funciones deben implementarse en capas superiores externas y se basan en:

Plantilla stsafea_crypto_mbedtls_interface_template.c file para la biblioteca criptográfica Mbed TLS;

Plantilla stsafea_crypto_stlib_interface_template.c file para la biblioteca criptográfica ST;

Se pueden admitir fácilmente bibliotecas criptográficas adicionales adaptando la interfaz criptográfica

plantilla file.

·

la capa central: conexión interna al módulo CORE a través de las API exportadas descritas en la tabla

abajo;

El paquete de software middleware STSAFE-A1xx proporciona una documentación API completa del módulo CRYPTO en la carpeta raíz (consulte STSAFE-A1xx_Middleware.chm file).

Tabla 4. API exportadas del módulo CRYPTO

categoría API

Función

StSafeA_ComputeCMAC Para calcular el valor CMAC. Utilizado en el comando preparado.

StSafeA_ComputeRMAC Para calcular el valor RMAC. Se utiliza en la respuesta recibida.

StSafeA_DataEncryption API criptográficas Para ejecutar el cifrado de datos (AES CBC) en el búfer de datos STSAFE-Axxx.

StSafeA_DataDecryption Para ejecutar el descifrado de datos (AES CBC) en el búfer de datos STSAFE-Axxx.

StSafeA_MAC_SHA_PrePostProcess Para preprocesar o posprocesar el MAC y/o SHA antes de la transmisión o después de la recepción de datos del dispositivo STSAFE_Axxx.

UM2646 - Rev 4

página 10/23

3.6
Nota:

UM2646
Descripción del middleware STSAFE-A1xx

Plantillas

Esta sección proporciona una descripción detallada de las plantillas disponibles en el paquete de software middleware STSAFE-A1xx.

Todas las plantillas enumeradas en la siguiente tabla se proporcionan dentro de la carpeta Interfaz disponible en el nivel raíz del paquete de software middleware.

Plantilla files se proporcionan como examparchivos para copiar y personalizar en las capas superiores, para poder

integrar y configurar el middleware STSAFE-A1xx:

·

Plantilla de interfaz files proporcionar example implementaciones de las funciones __débiles, ofrecidas como vacías o

funciones parcialmente vacías dentro del middleware. Deben estar correctamente implementados en el espacio del usuario o en

las capas superiores según la biblioteca criptográfica y las elecciones de hardware del usuario.

·

Plantilla de configuración fileProporcionan una forma sencilla de configurar el middleware y las funciones del STSAFE-A1xx.

que se pueden utilizar en la aplicación de usuario, como optimizaciones o hardware específico.

Categoría de plantilla
Plantillas de interfaz
Plantillas de configuración

Tabla 5. Plantillas
Plantilla file
stsafea_service_interface_template.c ExampPlantilla de archivo para mostrar cómo admitir los servicios de hardware requeridos por el middleware STSAFE-A y ofrecidos por el hardware específico, la biblioteca de bajo nivel o BSP seleccionado en el espacio de usuario. stsafea_crypto_mbedtls_interface_template.c ExampPlantilla de archivo para mostrar cómo soportar los servicios criptográficos requeridos por el middleware STSAFE-A y ofrecidos por la biblioteca criptográfica Mbed TLS (administración de claves, SHA, AES, etc.). stsafea_crypto_stlib_interface_template.c ExampPlantilla de archivo para mostrar cómo admitir los servicios criptográficos requeridos por el middleware STSAFE-A y ofrecidos por la expansión del software de la biblioteca criptográfica STM32 para STM32Cube (XCUBE-CRYPTOLIB) (administración de claves, SHA, AES, etc.). stsafea_conf_template.h Exampplantilla de archivo para mostrar cómo configurar el middleware STSAFE-A (en particular con fines de optimización). stsafea_interface_conf_template.h ExampPlantilla de archivo para mostrar cómo configurar y personalizar la interfaz. files enumerados anteriormente.

Las plantillas anteriores solo están presentes en la carpeta BSP del paquete X-CUBE-SAFEA1.

UM2646 - Rev 4

página 11/23

UM2646
Descripción del middleware STSAFE-A1xx

3.7

Estructura de la carpeta

La siguiente figura presenta la estructura de carpetas del paquete de software middleware STSAFE-A1xx v1.2.1.

Figura 6. Proyecto file estructura

Proyecto file estructura STSAFE-A1xx middleware

UM2646 - Rev 4

Proyecto file estructura para X-CUBE-SAFEA1 para STM32CubeMX

página 12/23

3.8
3.8.1
3.8.2

UM2646
Descripción del middleware STSAFE-A1xx

Cómo: integración y configuración
Esta sección describe cómo integrar y configurar el middleware STSAFE-A1xx en la aplicación del usuario.

Pasos de integración

Siga estos pasos para integrar el middleware STSAFE-A1xx en la aplicación deseada:

·

Paso 1: Copie (y opcionalmente cambie el nombre) stsafea_service_interface_template.c file y cualquiera de

stsafea_crypto_mbedtls_interface_template.c o stsafea_crypto_stlib_interface_template.c para el usuario

espacio según la biblioteca criptográfica que se haya agregado a la aplicación (cualquiera que sea el

biblioteca criptográfica seleccionada/utilizada por los usuarios, incluso pueden crear/implementar su propia criptografía

interfaz file desde cero adaptando la plantilla adecuada).

·

Paso 2: Copie (y opcionalmente cambie el nombre) stsafea_conf_template.h y stsafea_interface_conf_template.h

files al espacio del usuario.

·

Paso 3: asegúrese de agregar las inclusiones correctas en su fuente principal o en cualquier otra fuente de espacio de usuario file que necesita

interconecte el middleware STSAFE-A1xx:

#incluye “stsafea_core.h” #incluye “stsafea_interface_conf.h”

·

Paso 4: personaliza el fileSe utiliza en los tres pasos anteriores según las preferencias del usuario.

Pasos de configuración

Para configurar correctamente el middleware STSAFE-A1xx en la aplicación de usuario, ST proporciona dos diferentes

plantilla de configuración files para copiar y personalizar en el espacio de usuario según las elecciones del usuario:

·

stsafea_interface_conf_template.h: Este exampLa plantilla del archivo se utiliza y muestra cómo configurar el

interfaces criptográficas y de middleware de servicios en el espacio del usuario a través del siguiente #definir

declaraciones:

USE_PRE_LOADED_HOST_KEYS

MCU_PLATFORM_INCLUDE

MCU_PLATFORM_BUS_INCLUDE

MCU_PLATFORM_CRC_INCLUDE

·

stsafea_conf_template.h: Este exampLa plantilla del archivo se utiliza y muestra cómo configurar el STSAFE-A.

middleware a través de las siguientes declaraciones #define:

STSAFEA_USE_OPTIMIZATION_SHARED_RAM

STSAFEA_USE_OPTIMIZATION_NO_HOST_MAC_ENCRYPT

STSAFEA_USE_FULL_ASSERT

USE_SIGNATURE_SESSION (solo para STSAFE-A100)

Siga estos pasos para integrar el middleware STSAFE-A1xx en la aplicación deseada:

·

Paso 1: Copie (y opcionalmente cambie el nombre) stsafea_interface_conf_template.h y stsafea_conf_template.h

files al espacio del usuario.

·

Paso 2: Confirme o modifique la declaración #define de los dos encabezados mencionados anteriormente files según

la plataforma del usuario y las opciones criptográficas.

UM2646 - Rev 4

página 13/23

4
4.1
Nota:
4.2
Nota:

UM2646
Software de demostración
Software de demostración
Esta sección ilustra el software de demostración basado en el middleware STSAFE-A1xx.
Autenticación
Esta demostración ilustra el flujo de comandos donde el STSAFE-A110 se monta en un dispositivo que se autentica en un host remoto (caso del dispositivo IoT), y el host local se utiliza como paso al servidor remoto. El escenario donde el STSAFE-A110 está montado en un periférico que se autentica en un host local, por ejemploampEl caso de juegos, accesorios para móviles o consumibles, es exactamente igual.
Flujo de comandos Para fines de demostración, los hosts locales y remotos aquí son el mismo dispositivo. 1. Extraiga, analice y verifique el certificado público del STSAFE-A110 almacenado en la zona de partición de datos 0 del dispositivo
Para obtener la clave pública: Lea el certificado utilizando el middleware STSAFE-A1xx a través de la zona 110 del STSAFE-A0. Analice el certificado utilizando el analizador de la biblioteca criptográfica. Lea el certificado de CA (disponible a través del código). Analice el certificado de CA utilizando el analizador de la biblioteca criptográfica. Verifique la validez del certificado utilizando el certificado de CA a través de la biblioteca criptográfica. Obtenga la clave pública del certificado STSAFE-A110 X.509. 2. Generar y verificar la firma sobre un número de desafío: Generar un número de desafío (número aleatorio). Hash el desafío. Obtenga una firma sobre el desafío hash utilizando la ranura de clave privada 110 del STSAFE-A0 a través del
Software intermedio STSAFE-A1xx. Analice la firma generada utilizando la biblioteca criptográfica. Verifique la firma generada utilizando la clave pública del STSAFE-A110 a través de la biblioteca criptográfica. Cuando esto es válido, el host sabe que el periférico o IoT es auténtico.
Emparejamiento
Este código exampEl archivo establece un emparejamiento entre un dispositivo STSAFE-A110 y la MCU a la que está conectado. El emparejamiento permite autenticar (es decir, firmar y verificar) los intercambios entre el dispositivo y la MCU. El dispositivo STSAFE-A110 solo se puede utilizar en combinación con la MCU con la que está emparejado. El emparejamiento consiste en que la MCU del host envía una clave MAC del host y una clave de cifrado del host al STSAFE-A110. Ambas claves se almacenan en la NVM protegida del STSAFE-A110 y deben almacenarse en la memoria flash del dispositivo STM32. Por defecto, en este examparchivo, la MCU host envía claves conocidas al STSAFE-A110 (consulte el flujo de comando a continuación) que se recomienda encarecidamente utilizar con fines de demostración. El código también permite la generación de claves aleatorias. Además, el código exampEl archivo genera una clave de sobre local cuando la ranura correspondiente aún no está ocupada en el STSAFE-A110. Cuando la ranura del sobre local está ocupada, el dispositivo STSAFE-A110 permite que la MCU host envuelva/desenvuelva un sobre local para almacenar de forma segura una clave en el lado de la MCU host. El código de emparejamiento exampEl archivo debe ejecutarse correctamente antes de ejecutar todo el siguiente código, por ejemplo.ampLes.
flujo de comandos
1. Genere la clave del sobre local en el STSAFE-A110 utilizando el middleware STSAFE-A1xx. Por defecto, este comando está activado. Tenga en cuenta que al descomentar las siguientes declaraciones definidas en el paring.c file desactiva la generación de claves de sobre local: /* #define _FORCE_DEFAULT_FLASH_ */
Esta operación ocurre sólo si la ranura de clave de sobre local del STSAFE-A110 aún no está ocupada.

UM2646 - Rev 4

página 14/23

UM2646
Software de demostración

2. Defina dos números de 128 bits para utilizarlos como clave MAC del host y clave de cifrado del host. De forma predeterminada, se utilizan claves conocidas de oro. Tienen los siguientes valores: 0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xAA,0xBB,0xCC,0xDD,0xEE,0xFF / *Clave MAC del host*/ 0x11,0x11,0x22,0, 22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88xXNUMX / * Clave de cifrado del host */
Para activar la generación de claves aleatorias, agregue la siguiente declaración de definición al emparejamiento.c file: #definir USE_HOST_KEYS_SET_BY_PAIRING_APP 1
3. Guarde la clave MAC del host y la clave de cifrado del host en sus respectivas ranuras en el STSAFE-A110. 4. Guarde la clave MAC del host y la clave de cifrado del host en la memoria flash del STM32.

4.3

Establecimiento de clave (establecer secreto)

Esta demostración ilustra el caso en el que el dispositivo STSAFE-A110 está montado en un dispositivo (como un dispositivo IoT) que se comunica con un servidor remoto y necesita establecer un canal seguro para intercambiar datos con él.

En este examparchivo, el dispositivo STM32 desempeña el papel tanto del servidor remoto (host remoto) como del host local que está conectado al dispositivo STSAFE-A110.

El objetivo de este caso de uso es mostrar cómo establecer un secreto compartido entre el host local y el servidor remoto utilizando el esquema de curva elíptica Diffie-Hellman con una clave estática (ECDH) o efímera (ECDHE) en el STSAFE-A110.

El secreto compartido debe derivarse a una o más claves de trabajo (no ilustradas aquí). Estas claves de trabajo se pueden utilizar en protocolos de comunicación como TLS, por ejemplo.ampArchivo para proteger la confidencialidad, integridad y autenticidad de los datos que se intercambian entre el host local y el servidor remoto.

flujo de comandos

Figura 7. Flujo de comando de establecimiento de claves ilustra el flujo de comando.

·

Las claves públicas y privadas del host remoto están codificadas en el código exampel.

·

El host local envía el comando StSafeA_GenerateKeyPair al STSAFE-A110 para generar el

par de claves en su ranura efímera (ranura 0xFF).

·

El STSAFE-A110 devuelve la clave pública (que corresponde a la ranura 0xFF) al STM32 (que representa

el host remoto).

·

El STM32 calcula el secreto del host remoto (utilizando la clave pública del dispositivo STSAFE y el servidor remoto).

clave privada del host).

·

El STM32 envía la clave pública del host remoto al STSAFE-A110 y le pide al STSAFE-A110 que

calcule el secreto del host local utilizando la API StSafeA_EstablishKey.

·

El STSAFE-A110 devuelve el secreto del host local al STM32.

·

El STM32 compara los dos secretos e imprime el resultado. Si los secretos son los mismos, el secreto

el establecimiento es exitoso.

UM2646 - Rev 4

página 15/23

Figura 7. Flujo de comando de establecimiento de claves

UM2646
Software de demostración

Servidor remoto

STM32

Anfitrión local

STSAFE

Calcular el secreto del host remoto (usando la clave privada del host remoto y la clave pública del host local (ranura STSAFE 0xFF))
El secreto del host remoto

Generar par de claves

Generar par de claves en la ranura 0xFF

La clave pública de STSAFE generada el

Clave pública de STSAFE generada

ranura 0xFF

Clave pública del host remoto
STM32 compara el secreto del host remoto con el
secreto del host local e imprime el resultado

Establecer clave (clave pública del host remoto)
Envío del secreto del anfitrión local

Calcular el secreto del host local (usando la clave privada del host local (ranura STSAFE 0xFF) y la clave pública del host remoto)
El secreto del anfitrión local

4.4
Nota:
4.5

Envolver/desenvolver sobres locales
Esta demostración ilustra el caso en el que STSAFE-A110 envuelve/desenvuelve el sobre local para almacenar de forma segura un secreto en cualquier memoria no volátil (NVM). Las claves de cifrado/descifrado se pueden almacenar de forma segura de esa manera en una memoria adicional o dentro de la memoria de datos del usuario del STSAFEA110. El mecanismo de envoltura se utiliza para proteger un texto secreto o sin formato. El resultado del ajuste es un sobre cifrado con un algoritmo de ajuste de clave AES y que contiene la clave o el texto sin formato que se va a proteger.
flujo de comandos
Los hosts locales y remotos son el mismo dispositivo aquí. 1. Generar datos aleatorios asimilados a una envolvente local. 2. Envuelva el sobre local utilizando el middleware del STSAFE-A110. 3. Guarde el sobre envuelto. 4. Desenvuelva el sobre envuelto utilizando el middleware del STSAFE-A110. 5. Compare el sobre sin envolver con el sobre local inicial. Deberían ser iguales.

Generación de pares de claves

Esta demostración ilustra el flujo de comandos donde el dispositivo STSAFE-A110 está montado en un host local. Un host remoto le pide a este host local que genere un par de claves (una clave privada y una clave pública) en la ranura 1 y luego firme un desafío (número aleatorio) con la clave privada generada.

Luego, el host remoto puede verificar la firma con la clave pública generada.

Esta demostración es similar a la demostración de Autenticación con dos diferencias:

·

El par de claves en la demostración de autenticación ya está generado (en la ranura 0), mientras que, en este ejemploampel,

generamos el par de claves en la ranura 1. El dispositivo STSAFE-A110 también puede generar el par de claves en la ranura 0xFF,

pero sólo para fines clave de establecimiento.

·

La clave pública en la demostración de autenticación se extrae del certificado en la zona 0. En este

examparchivo, la clave pública se devuelve con la respuesta del STSAFE-A110 a la

Comando StSafeA_GenerateKeyPair.

UM2646 - Rev 4

página 16/23

UM2646
Software de demostración

Nota:

flujo de comandos
Para fines de demostración, los hosts locales y remotos son el mismo dispositivo aquí. 1. El host envía el comando StSafeA_GenerateKeyPair al STSAFE-A110, que devuelve el
clave pública para la MCU host. 2. El host genera un desafío (un número aleatorio de 48 bytes) utilizando la API StSafeA_GenerateRandom. El
STSAFE-A110 devuelve el número aleatorio generado. 3. El host calcula el hash del número generado utilizando la biblioteca criptográfica. 4. El host solicita al STSAFE-A110 que genere una firma del hash calculado utilizando el
API StSafeA_GenerateSignature. El STSAFE-A110 devuelve la firma generada.
5. El host verifica la firma generada con la clave pública enviada por el STSAFE-A110 en el paso 1. 6. Se imprime el resultado de la verificación de la firma.

UM2646 - Rev 4

página 17/23

UM2646

Historial de revisiones

Tabla 6. Historial de revisión del documento

Fecha

Revisión

Cambios

09 de diciembre de 2019

1

Lanzamiento inicial.

13 de enero de 2020

2

Se eliminó la sección de información de licencia.

Lista actualizada de características ilustradas por códigos de demostración en Introducción. Se eliminó la tabla Lista de acrónimos y se insertó un glosario al final.

Pequeño cambio de texto y colores actualizados en la Figura 1. Arquitectura STSAFE-A1xx.

Figura 2 actualizada. Diagrama de bloques de la aplicación STSAFE-A1xx.

Tabla 1 actualizada. API exportada del módulo CORE.

07 de febrero de 2022

3

Se eliminaron StSafeA_InitHASH y StSafeA_ComputeHASH de la Tabla 4. API exportadas del módulo CRYPTO.

Sección actualizada 3.8.2: Pasos de configuración.

Sección 4.2 actualizada: Emparejamiento.

Sección 4.3 actualizada: Establecimiento de clave (establecer secreto).

Se agregó la Sección 4.5: Generación de pares de claves.

Pequeños cambios de texto.

El paquete de software STSAFE-A1xx agregado está integrado en X-CUBE-SAFEA1 v1.2.1 como middleware

y está integrado como BSP para el paquete de software para STM32CubeMX. y las plantillas anteriores

07 de marzo de 2024

4

solo están presentes en la carpeta BSP del paquete X-CUBE-SAFEA1.

Se actualizó la Sección 3.1: Descripción general, la Sección 3.2: Arquitectura y la Sección 3.7: Estructura de carpetas.

UM2646 - Rev 4

página 18/23

Glosario
AES Estándar de cifrado avanzado ANSI Instituto Nacional Estadounidense de Estándares API Interfaz de programación de aplicaciones BSP Paquete de soporte de placa CA Autoridad de certificación CC Criterios comunes C-MAC Código de autenticación de mensajes de comando ECC Criptografía de curva elíptica ECDH Curva elíptica DiffieHellman ECDHE Curva elíptica DiffieHellman – efímera EWARM IAR Embedded Workbench® para Arm® HAL Capa de abstracción de hardware E/S Entrada/salida IAR Systems® Líder mundial en herramientas y servicios de software para el desarrollo de sistemas embebidos. IDE Entorno de desarrollo integrado. Una aplicación de software que proporciona instalaciones integrales a los programadores informáticos para el desarrollo de software. IoT Internet de las cosas I²C Circuito interintegrado (IIC) LL Controladores de bajo nivel MAC Código de autenticación de mensajes MCU Unidad de microcontrolador MDK-ARM Kit de desarrollo de microcontrolador Keil® para MPU Arm® Unidad de protección de memoria NVM Memoria no volátil

OS Sistema operativo SE Elemento seguro SHA Algoritmo Hash seguro SLA Acuerdo de licencia de software ST STMicroelectronics TLS Seguridad de la capa de transporte USB Bus serie universal

UM2646
Glosario

UM2646 - Rev 4

página 19/23

UM2646
Contenido
Contenido
1. Información General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 2 Elemento seguro STSAFE-A110. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 Descripción del middleware STSAFE-A1xx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.1 Descripción general. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.2 Arquitectura. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.3 Módulo NÚCLEO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.4 Módulo SERVICIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.5 Módulo CRIPTO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.6 Plantillas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.7 Estructura de carpetas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.8 Cómo: integración y configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.8.1 Pasos de integración. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.8.2 Pasos de configuración. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4 Software de demostración. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14 ​​4.1 Autenticación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.2 Emparejamiento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.3 Establecimiento de clave (establecer secreto) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.4 Envolver/desenvolver sobres locales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.5 Generación de pares de claves. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dieciséis
Revisión histórica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18 Lista de tablas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21 Lista de figuras. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22

UM2646 - Rev 4

página 20/23

UM2646
Lista de tablas

Lista de tablas

Tabla 1. Tabla 2. Tabla 3. Tabla 4. Tabla 5. Tabla 6.

API exportada del módulo CORE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 API del módulo STSAFE-A110 CORE exportadas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 API exportadas del módulo SERVICE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 API exportadas del módulo CRYPTO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 plantillas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Historial de revisión de documentos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

UM2646 - Rev 4

página 21/23

UM2646
Lista de figuras

Lista de figuras

Figura 1. Figura 2. Figura 3. Figura 4. Figura 5. Figura 6. Figura 7.

Arquitectura STSAFE-A1xx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Diagrama de bloques de la aplicación STSAFE-A1xx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Arquitectura de 6 módulos CORE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Arquitectura del módulo de SERVICIO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Arquitectura del módulo CRYPTO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 proyecto file estructura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Flujo de comando de establecimiento de claves. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . dieciséis

UM2646 - Rev 4

página 22/23

UM2646
AVISO IMPORTANTE LÉALO CUIDADOSAMENTE STMicroelectronics NV y sus subsidiarias ("ST") se reservan el derecho de realizar cambios, correcciones, mejoras, modificaciones y mejoras a los productos ST y/o a este documento en cualquier momento sin previo aviso. Los compradores deben obtener la información relevante más reciente sobre los productos ST antes de realizar pedidos. Los productos de ST se venden de conformidad con los términos y condiciones de venta de ST vigentes en el momento de la confirmación del pedido. Los compradores son los únicos responsables de la elección, selección y uso de los productos ST y ST no asume ninguna responsabilidad por la asistencia en la aplicación o el diseño de los productos de los compradores. ST no otorga ninguna licencia, expresa o implícita, sobre ningún derecho de propiedad intelectual en este documento. La reventa de productos ST con disposiciones diferentes a la información aquí establecida anulará cualquier garantía otorgada por ST para dicho producto. ST y el logotipo de ST son marcas comerciales de ST. Para obtener información adicional sobre las marcas comerciales de ST, consulte www.st.com/trademarks. Todos los demás nombres de productos o servicios son propiedad de sus respectivos dueños. La información de este documento sustituye y reemplaza la información proporcionada anteriormente en cualquier versión anterior de este documento.
© 2024 STMicroelectronics Todos los derechos reservados

UM2646 - Rev 4

página 23/23

Documentos / Recursos

Paquete de software STMicroelectronics X-CUBE-SAFEA1 [pdf] Guía del usuario
STSAFE-A100, STSAFE-A110, Paquete de software X-CUBE-SAFEA1, X-CUBE-SAFEA1, Paquete de software, Paquete

Referencias

Deja un comentario

Su dirección de correo electrónico no será publicada. Los campos obligatorios están marcados *