Paquet de programari X-CUBE-SAFEA1

Especificacions

  • Nom del producte: Element segur STSAFE-A110
  • Versió: X-CUBE-SAFEA1 v1.2.1
  • Integrat a: paquet de programari STM32CubeMX
  • Característiques principals:
    • Establiment de canal segur amb host remot inclòs
      Encaix de mans de seguretat de la capa de transport (TLS).
    • Servei de verificació de signatura (arrencada segura i firmware
      actualització)
    • Supervisió d'ús amb comptadors segurs
    • Emparellament i canal segur amb el processador d'aplicacions host
    • Embalatge i desembolsatge dels sobres de l'amfitrió local o remot
    • Generació de parells de claus al xip

Instruccions d'ús del producte

1. Informació general

L'element segur STSAFE-A110 està dissenyat per oferir
serveis d'autenticació i gestió de dades a local o remot
amfitrions. És adequat per a diverses aplicacions com ara dispositius IoT,
sistemes domèstics intel·ligents, aplicacions industrials i molt més.

2. Primers passos

Per començar a utilitzar l'element segur STSAFE-A110:

  1. Consulteu el full de dades disponible al STSAFE-A110 oficial
    web pàgina per obtenir informació detallada.
  2. Baixeu el paquet de programari de programari intermedi STSAFE-A1xx des de
    Pàgina d'Internet STSAFE-A110 o STM32CubeMX.
  3. Assegureu-vos la compatibilitat amb els IDE compatibles com STM32Cube IDE o
    System Workbench per a STM32.

3. Descripció de middleware

3.1 Descripció general

El programari intermedi STSAFE-A1xx facilita la interacció entre
el dispositiu d'element segur i un MCU, que permeten diversos casos d'ús.
S'integra als paquets de programari ST per millorar la seguretat
característiques.

3.2 Arquitectura

El middleware consta de diferents components de programari,
incloent:

  • API STSAFE-A1xx (interfície principal)
  • CRYPTO CORE
  • Interfície de servei criptogràfic MbedTLS SHA/AES
  • Interfície de servei de maquinari X-CUBECRYPTOLIB

Preguntes freqüents (FAQ)

P: On puc trobar el full de dades STSAFE-A110?

R: El full de dades està disponible al STSAFE-A110 web pàgina per
informació addicional sobre el dispositiu.

P: Quins són els entorns de desenvolupament integrat compatibles
per al programari intermedi STSAFE-A1xx?

R: Els IDE admesos inclouen STM32Cube IDE i System Workbench
per a STM32 (SW4STM32) al paquet X-CUBE-SAFEA1 v1.2.1.

UM2646
Manual d'usuari
Com començar amb el paquet de programari X-CUBE-SAFEA1
Introducció
Aquest manual d'usuari descriu com començar amb el paquet de programari X-CUBE-SAFEA1. El paquet de programari X-CUBE-SAFEA1 és un component de programari que proporciona diversos codis de demostració, que utilitzen les característiques del dispositiu STSAFE-A110 d'un microcontrolador amfitrió. Aquests codis de demostració utilitzen el programari intermedi STSAFE-A1xx basat en la tecnologia de programari STM32Cube per facilitar la portabilitat entre diferents microcontroladors STM32. A més, és independent de la MCU per a la portabilitat a altres MCU. Aquests codis de demostració il·lustren les característiques següents: · Autenticació · Emparellament · Establiment de claus · Embolcall local de sobres · Generació de parells de claus

UM2646 – Rev 4 – març de 2024 Per obtenir més informació, poseu-vos en contacte amb l'oficina de vendes local de STMicroelectronics.

www.st.com

1
Nota: Nota:

UM2646
Informació general
Informació general
El paquet de programari X-CUBE-SAFEA1 és una referència per integrar els serveis d'elements segurs STSAFE-A110 en el sistema operatiu (SO) d'un MCU amfitrió i la seva aplicació. Conté el controlador STSAFE-A110 i els codis de demostració per executar-se en microcontroladors STM32 de 32 bits basats en el processador Arm® Cortex®-M. Arm és una marca registrada d'Arm Limited (o les seves filials) als EUA i/o a altres llocs. El paquet de programari X-CUBE-SAFEA1 es desenvolupa en ANSI C. No obstant això, l'arquitectura independent de la plataforma permet una fàcil portabilitat a una varietat de plataformes diferents. La taula següent presenta la definició d'acrònims que són rellevants per a una millor comprensió d'aquest document.
El paquet de programari STSAFE-A1xx està integrat a X-CUBE-SAFEA1 v1.2.1 com a programari intermedi i està integrat com a BSP per al paquet de programari per a STM32CubeMX.

UM2646 - Rev 4

pàgina 2/23

UM2646
Element de seguretat STSAFE-A110

2

Element de seguretat STSAFE-A110

El STSAFE-A110 és una solució altament segura que actua com un element segur que proporciona serveis d'autenticació i gestió de dades a un host local o remot. Consisteix en una solució completa clau en mà amb un sistema operatiu segur que funciona amb l'última generació de microcontroladors segurs.

El STSAFE-A110 es pot integrar en dispositius IoT (Internet de les coses), llars intel·ligents, ciutats intel·ligents i aplicacions industrials, dispositius electrònics de consum, consumibles i accessoris. Les seves característiques principals són:

·

Autenticació (de perifèrics, dispositius IoT i USB Type-C®)

·

Establiment de canals segur amb amfitrió remot, inclosa l'enllaç de mà de seguretat de la capa de transport (TLS).

·

Servei de verificació de signatura (arrencada segura i actualització del microprogramari)

·

Supervisió d'ús amb comptadors segurs

·

Emparellament i canal segur amb el processador d'aplicacions host

·

Embalatge i desembolsatge dels sobres de l'amfitrió local o remot

·

Generació de parells de claus al xip

Consulteu el full de dades STSAFE-A110 disponible al STSAFE-A110 web pàgina per obtenir informació addicional sobre el dispositiu.

UM2646 - Rev 4

pàgina 3/23

UM2646
Descripció del programa intermedi STSAFE-A1xx

3

Descripció del programa intermedi STSAFE-A1xx

Aquesta secció detalla el contingut del paquet de programari de programari intermedi STSAFE-A1xx i la manera d'utilitzar-lo.

3.1

Descripció general

El programari intermedi STSAFE-A1xx és un conjunt de components de programari dissenyats per:

·

connecteu el dispositiu d'element segur STSAFE-A110 amb una MCU

·

implementar els casos d'ús més genèrics de STSAFE-A110

El programari intermedi STSAFE-A1xx està totalment integrat als paquets de programari ST com a component de programari intermedi per afegir funcions d'element segur (per exempleampel X-CUBE-SBSFU o X-CUBE-SAFEA1).

Es pot descarregar des de la pàgina d'Internet STSAFE-A110 a través de la pestanya Eines i programari o es pot descarregar des de STM32CubeMX.

El programari es proporciona com a codi font en virtut d'un acord de llicència de programari ST (SLA0088) (vegeu la informació de la llicència per a més detalls).

S'admeten els següents entorns de desenvolupament integrats:

·

IAR Embedded Workbench® for Arm® (EWARM)

·

Kit de desenvolupament de microcontroladors Keil® (MDK-ARM)

·

STM32Cube IDE (STM32CubeIDE)

·

System Workbench per a STM32 (SW4STM32) només compatible amb el paquet X-CUBE-SAFEA1 v1.2.1

Consulteu les notes de la versió disponibles a la carpeta arrel del paquet per obtenir informació sobre les versions IDE admeses.

3.2

Arquitectura

Aquesta secció descriu els components de programari del paquet de programari de programari intermedi STSAFE-A1xx.

La figura següent presenta a view de l'arquitectura de programari intermedi STSAFE-A1xx i les interfícies relacionades.

Figura 1. Arquitectura STSAFE-A1xx

API STSAFE-A1xx (interfície principal)

CORE

CRYPTO

MbedTM TLS

Interfície de servei criptogràfic SHA/AES

SERVEI

Zona aïllada
Adequat per a la protecció mitjançant funcions de seguretat MCU
(MPU, tallafoc, TrustZone®, etc.)

Interfície de servei de maquinari

X-CUBECRYPTOLIB

UM2646 - Rev 4

pàgina 4/23

Nota:

UM2646
Descripció del programa intermedi STSAFE-A1xx

El middleware inclou tres interfícies diferents:

·

API STSAFE-A1xx: és la principal interfície de programació d'aplicacions (API), que proporciona accés complet a tots

els serveis STSAFE-A110 exportats a les capes superiors (aplicació, biblioteques i piles). Aquesta interfície és

també es coneix com a interfície principal perquè totes les API exportades s'implementen al mòdul CORE.

Les capes superiors que necessiten integrar el programari intermedi STSAFE-A1xx han d'accedir a l'STSAFE-A110

funcions mitjançant aquesta interfície.

·

Interfície de servei de maquinari: aquesta interfície la utilitza el programari intermedi STSAFE-A1xx per arribar al màxim

independència de la plataforma de maquinari. Inclou un conjunt de funcions genèriques per connectar l'MCU específic, el bus IO

i funcions de cronometratge. Aquesta estructura millora la reutilització del codi de la biblioteca i garanteix una fàcil portabilitat

altres dispositius.

Definides com a funcions febles, aquestes funcions genèriques s'han d'implementar a nivell d'aplicació seguint l'exampfitxer proporcionat dins de la plantilla stsafea_service_interface_template.c proporcionada per facilitar la integració

i personalització a les capes superiors.

·

Interfície de servei criptogràfic: aquesta interfície la utilitza el programari intermedi STSAFE-A1xx per accedir-hi

funcions criptogràfiques de la plataforma o biblioteca com SHA (algoritme hash segur) i AES (avançat).

estàndard de xifratge) requerit pel programari intermedi per a algunes demostracions.

Definides com a funcions febles, aquestes funcions criptogràfiques s'han d'implementar a nivell d'aplicació

seguint l'exampel fitxer proporcionat amb dues plantilles diferents:

stsafea_crypto_mbedtls_interface_template.c si s'utilitza la biblioteca criptogràfica Arm® MbedTM TLS; stsafea_crypto_stlib_interface_template.c si s'utilitza la biblioteca criptogràfica ST;

·

Es poden utilitzar biblioteques criptogràfiques alternatives simplement personalitzant la font de la plantilla files. El

plantilla files es proporcionen per a una fàcil integració i personalització dins de les capes superiors.

Arm i Mbed són marques comercials registrades o marques comercials d'Arm Limited (o les seves filials) als EUA i/o en altres llocs.

UM2646 - Rev 4

pàgina 5/23

UM2646
Descripció del programa intermedi STSAFE-A1xx
La figura següent mostra el programari intermedi STSAFE-A1xx integrat en una aplicació estàndard STM32Cube, que s'executa en una placa d'expansió X-NUCLEO-SAFEA1 muntada en una placa STM32 Nucleo.
Figura 2. Diagrama de blocs de l'aplicació STSAFE-A1xx

Programari intermedi STSAFE-A1xx en una aplicació STM32Cube

Diagrama de blocs X-CUBE-SAFEA1 per a STM32CubeMX
Per proporcionar la millor independència de maquinari i plataforma, el programari intermedi STSAFE-A1xx no està connectat directament a l'STM32Cube HAL, sinó a través d'una interfície. files'implementa a nivell d'aplicació (stsafea_service_interface_template.c, stsafea_interface_conf.h).

UM2646 - Rev 4

pàgina 6/23

UM2646
Descripció del programa intermedi STSAFE-A1xx

3.3

Mòdul CORE

El mòdul CORE és el nucli del middleware. Implementa les ordres trucades per les capes superiors (aplicació, biblioteques, pila, etc.) per tal d'utilitzar correctament les característiques STSAFE-A1xx.

La figura següent presenta a view de l'arquitectura del mòdul CORE.

Figura 3. Arquitectura del mòdul CORE

Capes superiors externes (aplicació, biblioteques, piles, etc.)

CORE

Mòdul intern CRYPTO

Mòdul intern SERVEI

El mòdul CORE és un component de programari multiinterfície connectat a:

·

Capes superiors: connexió externa mitjançant les API exportades descrites a les dues taules següents;

·

Capa criptogràfica: connexió interna al mòdul CRYPTO;

·

Capa de servei de maquinari: connexió interna al mòdul SERVEI;

El paquet de programari de middleware STSAFE-A1xx proporciona una documentació completa de l'API del mòdul CORE a la carpeta arrel (vegeu STSAFE-A1xx_Middleware.chm file).

Consulteu el full de dades STSAFE-A110 per obtenir una breu explicació del conjunt d'ordres, amb les quals estan relacionades les API d'ordres enumerades a la taula següent.

Configuració d'inicialització de categoria API
Ordres d'ús general
Ordres de partició de dades

Taula 1. API exportada del mòdul CORE
Funció StSafeA_Init Per crear, inicialitzar i assignar el controlador del dispositiu STSAFE-A1xx. StSafeA_GetVersion Per retornar la revisió del middleware STSAFE-A1xx. StSafeA_Echo Per rebre les dades passades a l'ordre. StSafeA_Reset Per restablir els atributs volàtils als seus valors inicials. StSafeA_GenerateRandom To genera un nombre de bytes aleatoris. StSafeA_Hibernate Per posar el dispositiu STSAFE-Axxx en hibernació. StSafeA_DataPartitionQuery

UM2646 - Rev 4

pàgina 7/23

UM2646
Descripció del programa intermedi STSAFE-A1xx

Categoria API

Ordre de consulta de funció per recuperar la configuració de la partició de dades.

StSafeA_Decrement Per disminuir el comptador unidireccional en una zona de comptador.

Ordres de partició de dades

StSafeA_Read Per llegir dades d'una zona de partició de dades.

StSafeA_Update Per actualitzar les dades mitjançant la partició de zona.

StSafeA_GenerateSignature Per retornar la signatura ECDSA sobre un resum del missatge.

Ordres de clau privada i pública

StSafeA_GenerateKeyPair Per generar un parell de claus en una ranura de clau privada.
StSafeA_VerifyMessageSignature Per verificar l'autenticació del missatge.

StSafeA_EstablishKey Per establir un secret compartit entre dos amfitrions mitjançant la criptografia asimètrica.

StSafeA_ProductDataQuery Ordre de consulta per recuperar les dades del producte.

StSafeA_I2cParameterQuery Ordre de consulta per recuperar l'adreça I²C i la configuració del mode de baix consum.

StSafeA_LifeCycleStateQuery Ordre de consulta per recuperar l'estat del cicle de vida (Born, Operational, Terminated, Born and Locked o Operational and Locked).

Comandes administratives

StSafeA_HostKeySlotQuery Ordre de consulta per recuperar la informació de la clau de l'amfitrió (presencia i comptador de C-MAC de l'amfitrió).
StSafeA_PutAttribute Per posar atributs al dispositiu STSAFE-Axxx, com ara claus, contrasenya, paràmetres I²C segons l'atribut TAG.

StSafeA_DeletePassword Per eliminar la contrasenya de la seva ranura.

StSafeA_VerifyPassword Per verificar la contrasenya i recordar el resultat de la verificació per a una futura autorització d'ordres.

StSafeA_RawCommand Per executar una ordre en brut i rebre la resposta relacionada.

StSafeA_LocalEnvelopeKeySlotQuery Ordre de consulta per recuperar la informació de la clau del sobre local (número de ranura, presència i longitud de clau) per a les ranures de clau disponibles.

Comandes de sobres locals

StSafeA_GenerateLocalEnvelopeKey Per generar una clau en una ranura de clau de sobre local.
StSafeA_WrapLocalEnvelope Per embolicar dades (normalment claus) que són gestionades completament per l'amfitrió, amb una clau d'embolcall local i l'algorisme [AES key wrap].

StSafeA_UnwrapLocalEnvelope Per desembolicar un sobre local amb una clau de sobre local.

UM2646 - Rev 4

pàgina 8/23

UM2646
Descripció del programa intermedi STSAFE-A1xx

Categoria API
Ordre de configuració d'autorització d'ordres

Taula 2. API del mòdul STSAFE-A110 CORE exportades
Funció StSafeA_CommandAuthorizationConfigurationQuery Ordre de consulta per recuperar les condicions d'accés per a ordres amb condicions d'accés configurables.

3.4

Mòdul SERVEI

El mòdul SERVEI és la capa baixa del programari intermedi. Implementa una abstracció de maquinari completa en termes de MCU i plataforma de maquinari.

La figura següent presenta a view de l'arquitectura del mòdul SERVEI.

Figura 4. Arquitectura del mòdul SERVEI

Mòdul intern CORE

SERVEI

Capes inferiors externes (BSP, HAL, LL, etc.)

El mòdul SERVEI és un component de programari de doble interfície connectat a:

·

Capes inferiors externes: com BSP, HAL o LL. Les funcions febles s'han d'implementar a l'exterior superior

capes i es basen en la plantilla stsafea_service_interface_template.c file;

·

Capa central: connexió interna al mòdul CORE mitjançant les API exportades que es descriuen a la taula

a sota;

El paquet de programari de middleware STSAFE-A1xx proporciona una documentació completa de l'API del mòdul SERVEI a la carpeta arrel (vegeu STSAFE-A1xx_Middleware.chm file).

Taula 3. API exportades del mòdul SERVICE

Configuració d'inicialització de categoria API
Funcions d'operació de baix nivell

Funció
StSafeA_BSP_Init Per inicialitzar el bus de comunicació i els pins d'E/S necessaris per fer funcionar el dispositiu STSAFE-Axxx.
StSafeA_Transmit Per preparar l'ordre que s'ha de transmetre i cridar a l'API de bus de baix nivell que s'executa. Calcula i concatena un CRC, si és compatible.
StSafeA_Receive Per rebre dades del STSAFE-Axxx utilitzant les funcions del bus de baix nivell per recuperar-les. Comproveu el CRC, si és compatible.

UM2646 - Rev 4

pàgina 9/23

UM2646
Descripció del programa intermedi STSAFE-A1xx

3.5

Mòdul CRYPTO

El mòdul CRYPTO representa la part criptogràfica del middleware. Ha de dependre dels recursos criptogràfics de la plataforma.

El mòdul CRYPTO és completament independent dels altres mòduls de middleware i, per aquest motiu, es pot encapsular fàcilment dins d'una àrea segura aïllada adequada per a la protecció mitjançant funcions de seguretat MCU com ara una unitat de protecció de memòria (MPU), un tallafoc o una TrustZone®.

La figura següent presenta a view de l'arquitectura del mòdul CRYPTO.

Figura 5. Arquitectura del mòdul CRYPTO

Mòdul intern CORE

CRYPTO

Capes criptogràfiques externes
(MbedTM TLS, X-CUBE-CRYPTOLIB)

El mòdul CRYPTO és un component de programari de doble interfície connectat a:

·

una biblioteca de criptografia externa: actualment s'admeten Mbed TLS i X-CUBE-CRYPTOLIB. Feble

Les funcions s'han d'implementar en capes superiors externes i es basen en:

plantilla stsafea_crypto_mbedtls_interface_template.c file per a la biblioteca criptogràfica Mbed TLS;

plantilla stsafea_crypto_stlib_interface_template.c file per a la biblioteca criptogràfica ST;

Es poden suportar fàcilment biblioteques criptogràfiques addicionals adaptant la interfície criptogràfica

plantilla file.

·

la capa central: connexió interna al mòdul CORE mitjançant les API exportades que es descriuen a la taula

a sota;

El paquet de programari de middleware STSAFE-A1xx proporciona una documentació completa de l'API del mòdul CRYPTO a la carpeta arrel (vegeu STSAFE-A1xx_Middleware.chm file).

Taula 4. API exportades del mòdul CRYPTO

Categoria API

Funció

StSafeA_ComputeCMAC Per calcular el valor CMAC. S'utilitza a l'ordre preparat.

StSafeA_ComputeRMAC Per calcular el valor RMAC. S'utilitza a la resposta rebuda.

API criptogràfiques StSafeA_DataEncryption Per executar el xifratge de dades (AES CBC) a la memòria intermèdia de dades STSAFE-Axxx.

StSafeA_DataDecryption Per executar el desxifrat de dades (AES CBC) a la memòria intermèdia de dades STSAFE-Axxx.

StSafeA_MAC_SHA_PrePostProcess Per pre-processar o postprocessar el MAC i/o SHA abans de la transmissió, o després de rebre dades del dispositiu STSAFE_Axxx.

UM2646 - Rev 4

pàgina 10/23

3.6
Nota:

UM2646
Descripció del programa intermedi STSAFE-A1xx

Plantilles

Aquesta secció ofereix una descripció detallada de les plantilles disponibles al paquet de programari de programari intermedi STSAFE-A1xx.

Totes les plantilles enumerades a la taula següent es proporcionen a la carpeta Interfície disponible al nivell arrel del paquet de programari middleware.

Plantilla files es proporcionen com a exampels fitxers per ser copiats i personalitzats a les capes superiors, per tal de facilitar-los

integrar i configurar el programari intermedi STSAFE-A1xx:

·

Plantilla d'interfície files proporcionar exampimplementacions de les funcions __weak, que s'ofereixen com a buits o

funcions parcialment buides dins del middleware. S'han d'implementar correctament a l'espai d'usuari o a

les capes superiors segons la biblioteca criptogràfica i les opcions de maquinari de l'usuari.

·

Plantilla de configuració fileofereixen una manera senzilla de configurar el programari i les característiques de l'STSAFE-A1xx

que es poden utilitzar a l'aplicació d'usuari, com ara optimitzacions o maquinari específic.

Categoria de plantilla
Plantilles d'interfície
Plantilles de configuració

Taula 5. Plantilles
Plantilla file
stsafea_service_interface_template.c Exampplantilla per mostrar com donar suport als serveis de maquinari requerits pel programari intermedi STSAFE-A i que ofereix el maquinari específic, la biblioteca de baix nivell o el BSP seleccionat a l'espai d'usuari. stsafea_crypto_mbedtls_interface_template.c Exampplantilla per mostrar com donar suport als serveis criptogràfics requerits pel programari intermedi STSAFE-A i que ofereix la biblioteca criptogràfica Mbed TLS (gestió de claus, SHA, AES, etc.). stsafea_crypto_stlib_interface_template.c Exampplantilla per mostrar com donar suport als serveis criptogràfics requerits pel programari intermedi STSAFE-A i que ofereix l'expansió del programari de la biblioteca criptogràfica STM32 per a STM32Cube (XCUBE-CRYPTOLIB) (gestió de claus, SHA, AES, etc.). stsafea_conf_template.h Exampplantilla de fitxer per mostrar com configurar el programari intermedi STSAFE-A (en particular amb finalitats d'optimització). stsafea_interface_conf_template.h Exampplantilla de fitxer per mostrar com configurar i personalitzar la interfície files enumerades més amunt.

Les plantilles anteriors només estan presents a la carpeta BSP del paquet X-CUBE-SAFEA1.

UM2646 - Rev 4

pàgina 11/23

UM2646
Descripció del programa intermedi STSAFE-A1xx

3.7

Estructura de carpetes

La figura següent presenta l'estructura de carpetes del paquet de programari de middleware STSAFE-A1xx v1.2.1.

Figura 6. Projecte file estructura

Projecte file Estructura de programari intermedi STSAFE-A1xx

UM2646 - Rev 4

Projecte file estructura per a X-CUBE-SAFEA1 per a STM32CubeMX

pàgina 12/23

3.8
3.8.1
3.8.2

UM2646
Descripció del programa intermedi STSAFE-A1xx

Com fer-ho: integració i configuració
Aquesta secció descriu com integrar i configurar el programari intermedi STSAFE-A1xx a l'aplicació d'usuari.

Passos d'integració

Seguiu aquests passos per integrar el programari intermedi STSAFE-A1xx a l'aplicació desitjada:

·

Pas 1: copieu (i, opcionalment, canvieu el nom) el fitxer stsafea_service_interface_template.c file i qualsevol de les

stsafea_crypto_mbedtls_interface_template.c o stsafea_crypto_stlib_interface_template.c a l'usuari

espai segons la biblioteca criptogràfica que s'ha afegit a l'aplicació (sigui quin sigui el

biblioteca criptogràfica seleccionada/utilitzada pels usuaris, fins i tot poden crear/implementar la seva pròpia criptografia

interfície file des de zero adaptant la plantilla adequada).

·

Pas 2: copieu (i, opcionalment, canvieu el nom) els fitxers stsafea_conf_template.h i stsafea_interface_conf_template.h

files a l'espai d'usuari.

·

Pas 3: assegureu-vos d'afegir les inclusions correctes a la vostra font principal o a qualsevol altra font d'espai d'usuari file això cal

interfície amb el programari intermedi STSAFE-A1xx:

#include “stsafea_core.h” #include “stsafea_interface_conf.h”

·

Pas 4: personalitza el files'utilitza en els tres passos anteriors segons les preferències de l'usuari.

Passos de configuració

Per configurar correctament el programari intermedi STSAFE-A1xx a l'aplicació d'usuari, ST en proporciona dos diferents

plantilla de configuració files per copiar i personalitzar a l'espai d'usuari segons les eleccions de l'usuari:

·

stsafea_interface_conf_template.h: Aquest exampLa plantilla de fitxer s'utilitza i mostra com configurar-lo

interfícies de programari intermedi criptogràfic i de servei a l'espai d'usuari mitjançant el següent #define

declaracions:

USE_PRE_LOADED_HOST_KEYS

MCU_PLATFORM_INCLUDE

MCU_PLATFORM_BUS_INCLUDE

MCU_PLATFORM_CRC_INCLUDE

·

stsafea_conf_template.h: Aquest exampLa plantilla de fitxer s'utilitza i mostra com configurar el STSAFE-A

middleware mitjançant les següents sentències #define:

STSAFEA_USE_OPTIMIZATION_SHARED_RAM

STSAFEA_USE_OPTIMIZATION_NO_HOST_MAC_ENCRYPT

STSAFEA_USE_FULL_ASSERT

USE_SIGNATURE_SESSION (només per a la STSAFE-A100)

Seguiu aquests passos per integrar el programari intermedi STSAFE-A1xx a l'aplicació desitjada:

·

Pas 1: copieu (i, opcionalment, canvieu el nom) stsafea_interface_conf_template.h i stsafea_conf_template.h

files a l'espai d'usuari.

·

Pas 2: confirmeu o modifiqueu la declaració #define de les dues capçaleres esmentades anteriorment files segons

la plataforma d'usuari i les opcions criptogràfiques.

UM2646 - Rev 4

pàgina 13/23

4
4.1
Nota:
4.2
Nota:

UM2646
Programari de demostració
Programari de demostració
Aquesta secció il·lustra el programari de demostració basat en el programari intermedi STSAFE-A1xx.
Autenticació
Aquesta demostració il·lustra el flux d'ordres on el STSAFE-A110 està muntat en un dispositiu que s'autentica a un host remot (cas del dispositiu IoT), s'utilitza l'amfitrió local com a pas al servidor remot. L'escenari en què el STSAFE-A110 està muntat en un perifèric que s'autentica a un host local, per exempleample per a jocs, accessoris mòbils o consumibles, és exactament el mateix.
Flux d'ordres Amb finalitats de demostració, els amfitrions locals i remots són el mateix dispositiu aquí. 1. Extraieu, analitzeu i verifiqueu el certificat públic de l'STSAFE-A110 emmagatzemat a la zona de partició de dades 0 del dispositiu
per obtenir la clau pública: Llegiu el certificat mitjançant el programari intermedi STSAFE-A1xx a través de la zona 110 de l'STSAFE-A0. Analitzeu el certificat mitjançant l'analitzador de la biblioteca criptogràfica. Llegiu el certificat CA (disponible mitjançant el codi). Analitzeu el certificat CA mitjançant l'analitzador de la biblioteca criptogràfica. Verifiqueu la validesa del certificat mitjançant el certificat CA a través de la biblioteca criptogràfica. Obteniu la clau pública del certificat STSAFE-A110 X.509. 2. Generar i verificar la signatura sobre un número de desafiament: generar un número de desafiament (número aleatori). Hash el repte. Obteniu una signatura sobre el repte hash mitjançant la ranura de clau privada 110 de l'STSAFE-A0 a través del
Programari intermedi STSAFE-A1xx. Analitzeu la signatura generada mitjançant la biblioteca criptogràfica. Verifiqueu la signatura generada mitjançant la clau pública de l'STSAFE-A110 a través de la biblioteca criptogràfica. Quan això és vàlid, l'amfitrió sap que el perifèric o IoT és autèntic.
Maridatge
Aquest codi example estableix un aparellament entre un dispositiu STSAFE-A110 i la MCU a la qual està connectat. L'aparellament permet autenticar (és a dir, signar i verificar) els intercanvis entre el dispositiu i la MCU. El dispositiu STSAFE-A110 només es pot utilitzar en combinació amb la MCU amb la qual està vinculat. L'aparellament consisteix en que l'MCU amfitrió envia una clau MAC de l'amfitrió i una clau de xifratge de l'amfitrió al STSAFE-A110. Les dues claus s'emmagatzemen a la NVM protegida de l'STSAFE-A110 i s'han d'emmagatzemar a la memòria flaix del dispositiu STM32. Per defecte, en aquest example, l'MCU amfitrió envia claus conegudes a l'STSAFE-A110 (vegeu el flux d'ordres a continuació) que es recomana utilitzar amb finalitats de demostració. El codi també permet la generació de claus aleatòries. A més, el codi exampgenera una clau de sobre local quan la ranura corresponent encara no està ocupada a l'STSAFE-A110. Quan s'omple la ranura del sobre local, el dispositiu STSAFE-A110 permet a l'MCU amfitrió embolicar/desembolicar un sobre local per emmagatzemar de manera segura una clau al costat de l'MCU amfitrió. El codi d'aparellament exampEl fitxer s'ha d'executar correctament abans d'executar tot el codi següent, examples.
Flux de comandaments
1. Genereu la clau de sobre local a l'STSAFE-A110 mitjançant el programari intermedi STSAFE-A1xx. Per defecte, aquesta ordre està activada. Tingueu en compte que descommentar les afirmacions següents defineixen a la parella.c file desactiva la generació de clau de sobre local: /* #define _FORCE_DEFAULT_FLASH_ */
Aquesta operació només es produeix si la ranura de clau del sobre local de l'STSAFE-A110 encara no està ocupada.

UM2646 - Rev 4

pàgina 14/23

UM2646
Programari de demostració

2. Definiu dos números de 128 bits per utilitzar-los com a clau MAC de l'amfitrió i com a clau de xifratge de l'amfitrió. Per defecte, s'utilitzen claus conegudes daurades. Tenen els valors següents: 0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xAA,0xBB,0xCC,0xDD,0xEE,0xFF / * Clau MAC de l'amfitrió */ 0x11,0x11,0, 22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88 / * Clau de xifratge de l'amfitrió */
Per activar la generació de claus aleatòries, afegiu la següent instrucció define a l'aparellament.c file: #definir USE_HOST_KEYS_SET_BY_PAIRING_APP 1
3. Emmagatzemeu la clau MAC de l'amfitrió i la clau de xifratge de l'amfitrió a la seva ranura respectiva a l'STSAFE-A110. 4. Emmagatzemeu la clau MAC de l'amfitrió i la clau de xifratge de l'amfitrió a la memòria flaix de l'STM32.

4.3

Establiment de claus (establir secret)

Aquesta demostració il·lustra el cas en què el dispositiu STSAFE-A110 està muntat en un dispositiu (com un dispositiu IoT), que es comunica amb un servidor remot i necessita establir un canal segur per intercanviar dades amb ell.

En aquest exampel dispositiu STM32 fa el paper tant del servidor remot (amfitrió remot) com de l'amfitrió local que està connectat al dispositiu STSAFE-A110.

L'objectiu d'aquest cas d'ús és mostrar com establir un secret compartit entre l'amfitrió local i el servidor remot mitjançant l'esquema Diffie-Hellman de corba el·líptica amb una clau estàtica (ECDH) o efímera (ECDHE) al STSAFE-A110.

El secret compartit s'hauria de derivar a més a una o més claus de treball (no s'il·lustra aquí). Aquestes claus de treball es poden utilitzar després en protocols de comunicació com TLS, per exempleample per protegir la confidencialitat, la integritat i l'autenticitat de les dades que s'intercanvien entre l'amfitrió local i el servidor remot.

Flux de comandaments

La figura 7. El flux d'ordres d'establiment de claus il·lustra el flux d'ordres.

·

Les claus privades i públiques de l'amfitrió remot estan codificades en dur al codi, p. example.

·

L'amfitrió local envia l'ordre StSafeA_GenerateKeyPair al STSAFE-A110 per generar el

parell de claus a la seva ranura efímera (ranura 0xFF).

·

El STSAFE-A110 envia de tornada la clau pública (que correspon a la ranura 0xFF) a l'STM32 (que representa

l'amfitrió remot).

·

L'STM32 calcula el secret de l'amfitrió remot (utilitzant la clau pública del dispositiu STSAFE i el

clau privada de l'amfitrió).

·

L'STM32 envia la clau pública de l'amfitrió remot a l'STSAFE-A110 i demana a l'STSAFE-A110 que

calculeu el secret de l'amfitrió local mitjançant l'API StSafeA_EstablishKey.

·

El STSAFE-A110 envia el secret de l'amfitrió local a l'STM32.

·

L'STM32 compara els dos secrets i imprimeix el resultat. Si els secrets són els mateixos, el secret

l'establiment té èxit.

UM2646 - Rev 4

pàgina 15/23

Figura 7. Flux d'ordres d'establiment de claus

UM2646
Programari de demostració

Amfitrió remot

STM32

Amfitrió local

STSAFE

Càlcul del secret de l'amfitrió remot (utilitzant la clau privada de l'amfitrió remot i la clau pública de l'amfitrió local (slot STSAFE 0xFF))
El secret de l'amfitrió remot

Genera parell de claus

Genera un parell de claus a la ranura 0xFF

Clau pública de STSAFE generada el

S'ha generat la clau pública de STSAFE

ranura 0xFF

Clau pública de l'amfitrió remot
STM32 compara el secret de l'amfitrió remot amb el
secret de l'amfitrió local i imprimeix el resultat

Establir la clau (clau pública de l'amfitrió remot)
S'està enviant el secret de l'amfitrió local

Càlcul del secret de l'amfitrió local (utilitzant la clau privada de l'amfitrió local (ranura STSAFE 0xFF) i la clau pública de l'amfitrió remot)
El secret de l'amfitrió local

4.4
Nota:
4.5

Embolicar/desembolicar sobres locals
Aquesta demostració il·lustra el cas en què l'STSAFE-A110 embolcalla/desembolica l'embolcall local per emmagatzemar de manera segura un secret a qualsevol memòria no volàtil (NVM). Les claus de xifratge/desxifrat es poden emmagatzemar de manera segura d'aquesta manera a la memòria addicional o a la memòria de dades d'usuari del STSAFEA110. El mecanisme d'embolcall s'utilitza per protegir un text secret o sense format. La sortida de l'embolcall és un sobre xifrat amb un algorisme d'ajustament de clau AES i que conté la clau o el text sense format que cal protegir.
Flux de comandaments
Els amfitrions locals i remots són el mateix dispositiu aquí. 1. Generar dades aleatòries assimilades a un sobre local. 2. Emboliqui el sobre local utilitzant el programari intermedi de l'STSAFE-A110. 3. Guardeu el sobre embolicat. 4. Desembolica el sobre embolicat amb el programari intermedi de l'STSAFE-A110. 5. Compareu el sobre no embolicat amb el sobre local inicial. Haurien de ser iguals.

Generació de parells de claus

Aquesta demostració il·lustra el flux d'ordres on el dispositiu STSAFE-A110 està muntat en un host local. Un amfitrió remot demana a aquest amfitrió local que generi un parell de claus (una clau privada i una clau pública) a la ranura 1 i després que signi un repte (número aleatori) amb la clau privada generada.

L'amfitrió remot pot verificar la signatura amb la clau pública generada.

Aquesta demostració és similar a la demostració d'autenticació amb dues diferències:

·

El parell de claus de la demostració d'autenticació ja està generat (a l'espai 0), mentre que, en aquest exampel,

generem el parell de claus a la ranura 1. El dispositiu STSAFE-A110 també pot generar el parell de claus a la ranura 0xFF,

però només per a finalitats clau d'establiment.

·

La clau pública de la demostració d'autenticació s'extreu del certificat de la zona 0. En aquesta

example, la clau pública es torna amb la resposta de l'STSAFE-A110 al

Ordre StSafeA_GenerateKeyPair.

UM2646 - Rev 4

pàgina 16/23

UM2646
Programari de demostració

Nota:

Flux de comandaments
Amb finalitats de demostració, els amfitrions locals i remots són el mateix dispositiu aquí. 1. L'amfitrió envia l'ordre StSafeA_GenerateKeyPair a l'STSAFE-A110, que envia de tornada la
clau pública per a l'MCU amfitrió. 2. L'amfitrió genera un repte (número aleatori de 48 bytes) mitjançant l'API StSafeA_GenerateRandom. El
STSAFE-A110 envia el nombre aleatori generat. 3. L'amfitrió calcula el hash del número generat mitjançant la biblioteca criptogràfica. 4. L'amfitrió demana a l'STSAFE-A110 que generi una signatura del hash calculat mitjançant el
API StSafeA_GenerateSignature. El STSAFE-A110 envia de tornada la signatura generada.
5. L'amfitrió verifica la signatura generada amb la clau pública enviada per l'STSAFE-A110 al pas 1. 6. S'imprimeix el resultat de la verificació de la signatura.

UM2646 - Rev 4

pàgina 17/23

UM2646

Historial de revisions

Taula 6. Historial de revisions de documents

Data

Revisió

Canvis

09-des-2019

1

Alliberament inicial.

13-gen-2020

2

S'ha eliminat la secció d'informació de la llicència.

Llista actualitzada de funcions il·lustrades per codis de demostració a Introducció. S'ha eliminat la taula Llista d'acrònims i s'ha inserit el glossari al final.

Petit canvi de text i colors actualitzats a la Figura 1. Arquitectura STSAFE-A1xx.

Figura actualitzada 2. Diagrama de blocs de l'aplicació STSAFE-A1xx.

Taula actualitzada 1. API exportada del mòdul CORE.

07-feb-2022

3

S'han eliminat StSafeA_InitHASH i StSafeA_ComputeHASH de la taula 4. API exportades del mòdul CRYPTO.

Secció actualitzada 3.8.2: Passos de configuració.

Secció 4.2 actualitzada: aparellament.

Secció 4.3 actualitzada: establiment de claus (establir secret).

S'ha afegit la Secció 4.5: Generació de parells de claus.

Petits canvis de text.

El paquet de programari STSAFE-A1xx afegit està integrat a X-CUBE-SAFEA1 v1.2.1 com a programari intermedi

i està integrat com a BSP per al paquet de programari per a STM32CubeMX. i Les plantilles anteriors

07-mar-2024

4

només estan presents a la carpeta BSP del paquet X-CUBE-SAFEA1.

Secció actualitzada 3.1: Descripció general, Secció 3.2: Arquitectura i Secció 3.7: Estructura de carpetes.

UM2646 - Rev 4

pàgina 18/23

Glossari
AES Estàndard de xifratge avançat ANSI API de l'American National Standards Institute Interfície de programació d'aplicacions Paquet de suport de la placa BSP CA Autoritat de certificació CC Common Criteria C-MAC Codi d'autenticació del missatge de comandament ECC Criptografia de corba el·líptica ECDH Corba el·líptica DiffieHellman ECDHE Corba el·líptica DiffieHellman – EWARM IAR efímer per a Embedded Workbench® Arm® HAL Capa d'abstracció de maquinari E/S Entrada/sortida IAR Systems® Líder mundial en eines i serveis de programari per al desenvolupament de sistemes encastats. Entorn de desenvolupament integrat IDE. Una aplicació de programari que proporciona facilitats completes als programadors informàtics per al desenvolupament de programari. IoT Internet de les coses I²C Circuit inter-integrat (IIC) LL Controladors de baix nivell MAC Codi d'autenticació de missatges MCU Unitat de microcontrolador MDK-ARM Kit de desenvolupament de microcontroladors Keil® per a Arm® MPU Unitat de protecció de memòria NVM Memòria no volàtil

SO Sistema operatiu SE Element segur SHA Algorisme Secure Hash SLA Acord de llicència de programari ST STMicroelectronics TLS Seguretat de la capa de transport USB Bus sèrie universal

UM2646
Glossari

UM2646 - Rev 4

pàgina 19/23

UM2646
Continguts
Continguts
1 Informació general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 2 Element de seguretat STSAFE-A110. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 Descripció del programari intermedi STSAFE-A1xx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.1 Descripció general. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.2 Arquitectura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.3 Mòdul CORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.4 Mòdul SERVEI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.5 Mòdul CRYPTO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.6 Plantilles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.7 Estructura de carpetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.8 Com: integració i configuració . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.8.1 Passos d'integració . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.8.2 Passos de configuració . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4 Programari de demostració . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14 ​​4.1 Autenticació . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.2 Vinculació . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.3 Establiment de claus (establir secret) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.4 Embolicar/desembolicar sobres locals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.5 Generació de parells de claus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Historial de versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18 Llista de taules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21 Llista de figures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22

UM2646 - Rev 4

pàgina 20/23

UM2646
Llistat de taules

Llistat de taules

Taula 1. Taula 2. Taula 3. Taula 4. Taula 5. Taula 6.

API exportada del mòdul CORE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 API del mòdul STSAFE-A110 CORE exportades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 API exportades del mòdul SERVICE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 API exportades del mòdul CRYPTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 plantilles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Historial de revisions de documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

UM2646 - Rev 4

pàgina 21/23

UM2646
Llista de figures

Llista de figures

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

Arquitectura STSAFE-A1xx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Diagrama de blocs de l'aplicació STSAFE-A1xx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Arquitectura del mòdul 6 CORE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Arquitectura del mòdul SERVEI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Arquitectura del mòdul CRYPTO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Projecte file estructura. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Flux d'ordres d'establiment de claus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

UM2646 - Rev 4

pàgina 22/23

UM2646
AVÍS IMPORTANT LLEGIU ATENCIÓ STMicroelectronics NV i les seves filials ("ST") es reserven el dret de fer canvis, correccions, millores, modificacions i millores als productes ST i/o a aquest document en qualsevol moment sense previ avís. Els compradors haurien d'obtenir la informació rellevant més recent sobre els productes ST abans de fer comandes. Els productes ST es venen d'acord amb els termes i condicions de venda de ST vigents en el moment del reconeixement de la comanda. Els compradors són els únics responsables de l'elecció, selecció i ús dels productes ST i ST no assumeix cap responsabilitat per l'assistència a l'aplicació o el disseny dels productes dels compradors. ST no concedeix cap llicència, expressa o implícita, a cap dret de propietat intel·lectual. La revenda de productes ST amb disposicions diferents de la informació que s'estableix aquí anul·larà qualsevol garantia concedida per ST per a aquest producte. ST i el logotip de ST són marques comercials de ST. Per obtenir informació addicional sobre les marques comercials ST, consulteu www.st.com/trademarks. Tots els altres noms de productes o serveis són propietat dels seus respectius propietaris. La informació d'aquest document substitueix i substitueix la informació proporcionada anteriorment en qualsevol versió anterior d'aquest document.
© 2024 STMicroelectronics Tots els drets reservats

UM2646 - Rev 4

pàgina 23/23

Documents/Recursos

Paquet de programari STMicroelectronics X-CUBE-SAFEA1 [pdfGuia de l'usuari
STSAFE-A100, STSAFE-A110, paquet de programari X-CUBE-SAFEA1, X-CUBE-SAFEA1, paquet de programari, paquet

Referències

Deixa un comentari

La teva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats *