Pacchetto software X-CUBE-SAFEA1
Specifiche
- Nome prodotto: Elemento sicuro STSAFE-A110
- Versione: X-CUBE-SAFEA1 v1.2.1
- Integrato in: pacchetto software STM32CubeMX
- Caratteristiche principali:
- Creazione sicura del canale con host remoto incluso
Handshake TLS (Transport Layer Security). - Servizio di verifica della firma (avvio sicuro e firmware
aggiornamento) - Monitoraggio dell'utilizzo con contatori sicuri
- Associazione e protezione del canale con il processore dell'applicazione host
- Avvolgimento e scarto di buste di host locali o remoti
- Generazione di coppie di chiavi su chip
- Creazione sicura del canale con host remoto incluso
Istruzioni per l'uso del prodotto
1. Informazioni generali
L'elemento di sicurezza STSAFE-A110 è progettato per fornire
servizi di autenticazione e gestione dati in locale o in remoto
ospiti. È adatto per varie applicazioni come dispositivi IoT,
sistemi di casa intelligente, applicazioni industriali e altro ancora.
2. Per iniziare
Per iniziare a utilizzare l'elemento sicuro STSAFE-A110:
- Fare riferimento alla scheda tecnica disponibile sullo STSAFE-A110 ufficiale
web pagina per informazioni dettagliate. - Scaricare il pacchetto software middleware STSAFE-A1xx dal
Pagina Internet STSAFE-A110 o STM32CubeMX. - Garantisci la compatibilità con gli IDE supportati come STM32Cube IDE o
Workbench di sistema per STM32.
3. Descrizione del middleware
3.1 Descrizione generale
Il middleware STSAFE-A1xx facilita l'interazione tra
il dispositivo Secure Element e un MCU, consentendo vari casi d'uso.
È integrato nei pacchetti software ST per migliorare la sicurezza
caratteristiche.
3.2 Architettura
Il middleware è costituito da diversi componenti software,
tra cui:
- API STSAFE-A1xx (interfaccia principale)
- CENTRO CRIPTO
- MbedTLS Interfaccia del servizio crittografico SHA/AES
- Interfaccia di servizio hardware X-CUBECRYPTOLIB
Domande frequenti (FAQ)
D: Dove posso trovare la scheda tecnica STSAFE-A110?
R: La scheda tecnica è disponibile su STSAFE-A110 web pagina per
ulteriori informazioni sul dispositivo.
D: Quali sono gli ambienti di sviluppo integrati supportati
per il middleware STSAFE-A1xx?
R: Gli IDE supportati includono STM32Cube IDE e System Workbench
per STM32 (SW4STM32) nel pacchetto X-CUBE-SAFEA1 v1.2.1.
UM2646
Manuale d'uso
Iniziare con il pacchetto software X-CUBE-SAFEA1
Introduzione
Questo manuale utente descrive come iniziare con il pacchetto software X-CUBE-SAFEA1. Il pacchetto software X-CUBE-SAFEA1 è un componente software che fornisce diversi codici dimostrativi che utilizzano le funzionalità del dispositivo STSAFE-A110 da un microcontroller host. Questi codici dimostrativi utilizzano il middleware STSAFE-A1xx costruito sulla tecnologia software STM32Cube per facilitare la portabilità tra diversi microcontrollori STM32. Inoltre, è indipendente dall'MCU per la portabilità su altri MCU. Questi codici dimostrativi illustrano le seguenti funzionalità: · Autenticazione · Abbinamento · Creazione della chiave · Avvolgimento della busta locale · Generazione di coppie di chiavi
UM2646 – Rev 4 – Marzo 2024 Per ulteriori informazioni contattare l'ufficio vendite STMicroelectronics locale.
www.st.com
1
Nota: Nota:
UM2646
informazioni generali
informazioni generali
Il pacchetto software X-CUBE-SAFEA1 è un riferimento per integrare i servizi dell'elemento sicuro STSAFE-A110 nel sistema operativo (OS) di un MCU host e nella sua applicazione. Contiene il driver STSAFE-A110 e i codici dimostrativi da eseguire sui microcontrollori STM32 a 32 bit basati sul processore Arm® Cortex®-M. Arm è un marchio registrato di Arm Limited (o delle sue filiali) negli Stati Uniti e/o altrove. Il pacchetto software X-CUBE-SAFEA1 è sviluppato in ANSI C. Tuttavia, l'architettura indipendente dalla piattaforma consente una facile portabilità su una varietà di piattaforme diverse. La tabella seguente presenta la definizione degli acronimi rilevanti per una migliore comprensione del presente documento.
Il pacchetto software STSAFE-A1xx è integrato in X-CUBE-SAFEA1 v1.2.1 come middleware ed è integrato come BSP per il pacchetto software per STM32CubeMX.
UM2646 – Rev. 4
pagina 2/23
UM2646
Elemento sicuro STSAFE-A110
2
Elemento sicuro STSAFE-A110
STSAFE-A110 è una soluzione altamente sicura che funge da elemento sicuro fornendo servizi di autenticazione e gestione dei dati a un host locale o remoto. Consiste in una soluzione completa chiavi in mano con un sistema operativo sicuro in esecuzione sull'ultima generazione di microcontrollori sicuri.
STSAFE-A110 può essere integrato in dispositivi IoT (Internet delle cose), applicazioni industriali e per la casa intelligente, le città intelligenti, dispositivi elettronici di consumo, materiali di consumo e accessori. Le sue caratteristiche principali sono:
·
Autenticazione (di periferiche, IoT e dispositivi USB Type-C®)
·
Creazione sicura del canale con host remoto incluso l'handshake TLS (Transport Layer Security).
·
Servizio di verifica della firma (avvio sicuro e aggiornamento firmware)
·
Monitoraggio dell'utilizzo con contatori sicuri
·
Associazione e protezione del canale con il processore dell'applicazione host
·
Avvolgimento e scarto di buste di host locali o remoti
·
Generazione di coppie di chiavi su chip
Fare riferimento alla scheda tecnica STSAFE-A110 disponibile su STSAFE-A110 web pagina per ulteriori informazioni sul dispositivo.
UM2646 – Rev. 4
pagina 3/23
UM2646
Descrizione del middleware STSAFE-A1xx
3
Descrizione del middleware STSAFE-A1xx
Questa sezione descrive in dettaglio il contenuto del pacchetto software middleware STSAFE-A1xx e il modo in cui utilizzarlo.
3.1
Descrizione generale
Il middleware STSAFE-A1xx è un insieme di componenti software progettati per:
·
interfacciare il dispositivo Secure Element STSAFE-A110 con un MCU
·
implementare i casi d'uso STSAFE-A110 più generici
Il middleware STSAFE-A1xx è completamente integrato nei pacchetti software ST come componente middleware per aggiungere funzionalità di sicurezza (ad es.ample X-CUBE-SBSFU o X-CUBE-SAFEA1).
Può essere scaricato dalla pagina Internet STSAFE-A110 tramite la scheda Strumenti e software oppure può essere scaricato da STM32CubeMX.
Il software viene fornito come codice sorgente ai sensi di un contratto di licenza software ST (SLA0088) (vedere Informazioni sulla licenza per maggiori dettagli).
Sono supportati i seguenti ambienti di sviluppo integrati:
·
IAR Embedded Workbench® per Arm® (EWARM)
·
Kit di sviluppo microcontrollore Keil® (MDK-ARM)
·
IDE STM32Cube (STM32CubeIDE)
·
System Workbench per STM32 (SW4STM32) supportato solo nel pacchetto X-CUBE-SAFEA1 v1.2.1
Fare riferimento alle note sulla versione disponibili nella cartella principale del pacchetto per informazioni sulle versioni IDE supportate.
3.2
Architettura
Questa sezione descrive i componenti software del pacchetto software middleware STSAFE-A1xx.
La figura seguente presenta a view dell'architettura middleware STSAFE-A1xx e relative interfacce.
Figura 1. Architettura STSAFE-A1xx
API STSAFE-A1xx (interfaccia principale)
NUCLEO
CRIPTOVALUTAZIONE
MbedTMTLS
Interfaccia del servizio crittografico SHA/AES
SERVIZIO
Zona isolata
Adatto per la protezione tramite funzionalità di sicurezza MCU
(MPU, Firewall, TrustZone®, ecc.)
Interfaccia di servizio hardware
X-CUBECRYPTOLIB
UM2646 – Rev. 4
pagina 4/23
Nota:
UM2646
Descrizione del middleware STSAFE-A1xx
Il middleware presenta tre diverse interfacce:
·
API STSAFE-A1xx: è la principale interfaccia di programmazione dell'applicazione (API), che fornisce pieno accesso a tutti
i servizi STSAFE-A110 esportati nei livelli superiori (applicazione, librerie e stack). Questa interfaccia è
detta anche interfaccia core perché tutte le API esportate sono implementate nel modulo CORE.
I livelli superiori che devono integrare il middleware STSAFE-A1xx devono accedere a STSAFE-A110
funzionalità tramite questa interfaccia.
·
Interfaccia di servizio hardware: questa interfaccia viene utilizzata dal middleware STSAFE-A1xx per raggiungere il massimo
indipendenza dalla piattaforma hardware. Include una serie di funzioni generiche per collegare lo specifico MCU, bus IO
e funzioni di temporizzazione. Questa struttura migliora la riutilizzabilità del codice della libreria e garantisce una facile portabilità
altri dispositivi.
Definite funzioni deboli, queste funzioni generiche devono essere implementate a livello applicativo seguendo l'esample fornito all'interno del modello stsafea_service_interface_template.c fornito per una facile integrazione
e personalizzazione all'interno degli strati superiori.
·
Interfaccia del servizio crittografico: questa interfaccia viene utilizzata dal middleware STSAFE-A1xx per accedere
funzioni crittografiche della piattaforma o della libreria come SHA (algoritmo hash sicuro) e AES (advanced
standard di crittografia) richiesto dal middleware per alcune dimostrazioni.
Definite funzioni deboli, queste funzioni crittografiche devono essere implementate a livello applicativo
seguendo l'esample fornito con due diversi template:
stsafea_crypto_mbedtls_interface_template.c se viene utilizzata la libreria crittografica Arm® MbedTM TLS; stsafea_crypto_stlib_interface_template.c se viene utilizzata la libreria crittografica ST;
·
È possibile utilizzare librerie crittografiche alternative semplicemente personalizzando l'origine del modello files. Il
modello fileSono forniti per una facile integrazione e personalizzazione all'interno degli strati superiori.
Arm e Mbed sono marchi o marchi registrati di Arm Limited (o delle sue filiali) negli Stati Uniti e/o altrove.
UM2646 – Rev. 4
pagina 5/23
UM2646
Descrizione del middleware STSAFE-A1xx
La figura seguente mostra il middleware STSAFE-A1xx integrato in un'applicazione STM32Cube standard, in esecuzione su una scheda di espansione X-NUCLEO-SAFEA1 montata su una scheda STM32 Nucleo.
Figura 2. Diagramma a blocchi dell'applicazione STSAFE-A1xx
Middleware STSAFE-A1xx in un'applicazione STM32Cube
Schema a blocchi X-CUBE-SAFEA1 per STM32CubeMX
Per garantire la migliore indipendenza dall'hardware e dalla piattaforma, il middleware STSAFE-A1xx non è direttamente connesso all'HAL STM32Cube, ma tramite l'interfaccia files implementato a livello di applicazione (stsafea_service_interface_template.c, stsafea_interface_conf.h).
UM2646 – Rev. 4
pagina 6/23
UM2646
Descrizione del middleware STSAFE-A1xx
3.3
Modulo CORE
Il modulo CORE è il cuore del middleware. Implementa i comandi chiamati dai livelli superiori (applicazione, librerie, stack e così via) per utilizzare correttamente le funzionalità STSAFE-A1xx.
La figura seguente presenta a view dell'architettura del modulo CORE.
Figura 3. Architettura del modulo CORE
Livelli superiori esterni (applicazione, librerie, stack, ecc.)
NUCLEO
Modulo interno CRYPTO
Modulo interno SERVICE
Il modulo CORE è un componente software multi-interfaccia collegato a:
·
Livelli superiori: connessione esterna tramite le API esportate descritte nelle due tabelle seguenti;
·
Livello crittografico: connessione interna al modulo CRYPTO;
·
Livello di servizio hardware: connessione interna al modulo SERVICE;
Il pacchetto software middleware STSAFE-A1xx fornisce una documentazione API completa del modulo CORE nella cartella principale (vedere STSAFE-A1xx_Middleware.chm file).
Fare riferimento alla scheda tecnica STSAFE-A110 per una breve spiegazione del set di comandi a cui sono correlate le API di comando elencate nella tabella seguente.
Categoria API Configurazione di inizializzazione
Comandi di uso generale
Comandi di partizione dei dati
Tabella 1. API esportata del modulo CORE
Funzione StSafeA_Init Per creare, inizializzare e assegnare l'handle del dispositivo STSAFE-A1xx. StSafeA_GetVersion Per restituire la revisione del middleware STSAFE-A1xx. StSafeA_Echo Per ricevere i dati passati nel comando. StSafeA_Reset Per ripristinare gli attributi volatili ai loro valori iniziali. StSafeA_GenerateRandom Genera un numero di byte casuali. StSafeA_Hibernate Per mettere il dispositivo STSAFE-Axxx in ibernazione. StSafeA_DataPartitionQuery
UM2646 – Rev. 4
pagina 7/23
UM2646
Descrizione del middleware STSAFE-A1xx
Categoria API
Comando Funzione Query per recuperare la configurazione della partizione dati.
StSafeA_Decrement Per decrementare il contatore unidirezionale in una zona contatore.
Comandi di partizione dei dati
StSafeA_Read Per leggere i dati da una zona di partizione dati.
StSafeA_Update Per aggiornare i dati tramite la partizione di zona.
StSafeA_GenerateSignature Per restituire la firma ECDSA su un digest del messaggio.
Comandi a chiave privata e pubblica
StSafeA_GenerateKeyPair Per generare una coppia di chiavi in uno slot per chiave privata.
StSafeA_VerifyMessageSignature Per verificare l'autenticazione del messaggio.
StSafeA_EstablishKey Per stabilire un segreto condiviso tra due host utilizzando la crittografia asimmetrica.
StSafeA_ProductDataQuery Comando query per recuperare i dati del prodotto.
StSafeA_I2cParameterQuery Comando query per recuperare l'indirizzo I²C e la configurazione della modalità a basso consumo.
StSafeA_LifeCycleStateQuery Comando di query per recuperare lo stato del ciclo di vita (Nato, Operativo, Terminato, Nato e bloccato o Operativo e bloccato).
Comandi amministrativi
StSafeA_HostKeySlotQuery Comando di query per recuperare le informazioni sulla chiave dell'host (presenza e contatore C-MAC dell'host).
StSafeA_PutAttribute Per inserire attributi nel dispositivo STSAFE-Axxx, come chiavi, password, parametri I²C in base all'attributo TAG.
StSafeA_DeletePassword Per eliminare la password dal suo slot.
StSafeA_VerifyPassword Per verificare la password e ricordare l'esito della verifica per future autorizzazioni ai comandi.
StSafeA_RawCommand Per eseguire un comando grezzo e ricevere la relativa risposta.
StSafeA_LocalEnvelopeKeySlotQuery Comando di query per recuperare le informazioni sulla chiave della busta locale (numero di slot, presenza e lunghezza della chiave) per gli slot della chiave disponibili.
Comandi dell'inviluppo locale
StSafeA_GenerateLocalEnvelopeKey Per generare una chiave in uno slot per chiave della busta locale.
StSafeA_WrapLocalEnvelope Per avvolgere i dati (solitamente chiavi) che sono interamente gestiti dall'host, con una chiave di busta locale e l'algoritmo [AES key wrap].
StSafeA_UnwrapLocalEnvelope Per scartare una busta locale con una chiave della busta locale.
UM2646 – Rev. 4
pagina 8/23
UM2646
Descrizione del middleware STSAFE-A1xx
Categoria API
Comando di configurazione dell'autorizzazione al comando
Tabella 2. API del modulo STSAFE-A110 CORE esportate
Funzione StSafeA_CommandAuthorizationConfigurationQuery Comando di query per recuperare le condizioni di accesso per i comandi con condizioni di accesso configurabili.
3.4
Modulo SERVIZIO
Il modulo SERVICE è il livello inferiore del middleware. Implementa un'astrazione hardware completa in termini di MCU e piattaforma hardware.
La figura seguente presenta a view dell'architettura del modulo SERVICE.
Figura 4. Architettura del modulo SERVICE
Modulo interno CORE
SERVIZIO
Strati inferiori esterni (BSP, HAL, LL, ecc.)
Il modulo SERVICE è un componente software a doppia interfaccia collegato a:
·
Strati inferiori esterni: come BSP, HAL o LL. Le funzioni deboli devono essere implementate a livello esterno superiore
livelli e sono basati sul modello stsafea_service_interface_template.c file;
·
Strato Core: connessione interna al modulo CORE tramite le API esportate descritte nella tabella
sotto;
Il pacchetto software middleware STSAFE-A1xx fornisce una documentazione API completa del modulo SERVICE nella cartella principale (vedere STSAFE-A1xx_Middleware.chm file).
Tabella 3. API esportate dal modulo SERVICE
Categoria API Configurazione di inizializzazione
Funzioni operative di basso livello
Funzione
StSafeA_BSP_Init Per inizializzare il bus di comunicazione e i pin IO necessari per far funzionare il dispositivo STSAFE-Axxx.
StSafeA_Transmit Per preparare il comando da trasmettere e chiamare l'API del bus di basso livello da eseguire. Calcola e concatena un CRC, se supportato.
StSafeA_Receive Per ricevere dati da STSAFE-Axxx utilizzando le funzioni del bus di basso livello per recuperarli. Controllare il CRC, se supportato.
UM2646 – Rev. 4
pagina 9/23
UM2646
Descrizione del middleware STSAFE-A1xx
3.5
Modulo CRIPTO
Il modulo CRYPTO rappresenta la parte crittografica del middleware. Deve fare affidamento sulle risorse crittografiche della piattaforma.
Il modulo CRYPTO è completamente indipendente dagli altri moduli middleware e, per questo motivo, può essere facilmente incapsulato all'interno di un'area sicura isolata adatta alla protezione da parte di funzionalità di sicurezza MCU come un'unità di protezione della memoria (MPU), un firewall o una TrustZone®.
La figura seguente presenta a view dell'architettura del modulo CRYPTO.
Figura 5. Architettura del modulo CRYPTO
Modulo interno CORE
CRIPTOVALUTAZIONE
Livelli crittografici esterni
(MbedTM TLS, X-CUBE-CRYPTOLIB)
Il modulo CRYPTO è un componente software a doppia interfaccia collegato a:
·
una libreria di crittografia esterna: Mbed TLS e X-CUBE-CRYPTOLIB sono attualmente supportati. Debole
le funzioni devono essere implementate a livelli esterni superiori e si basano su:
modello stsafea_crypto_mbedtls_interface_template.c file per la libreria crittografica Mbed TLS;
modello stsafea_crypto_stlib_interface_template.c file per la libreria crittografica ST;
Ulteriori librerie crittografiche possono essere facilmente supportate adattando l'interfaccia crittografica
modello file.
·
il core layer: connessione interna al modulo CORE tramite le API esportate descritte nella tabella
sotto;
Il pacchetto software middleware STSAFE-A1xx fornisce una documentazione API completa del modulo CRYPTO nella cartella principale (vedere STSAFE-A1xx_Middleware.chm file).
Tabella 4. API esportate dal modulo CRYPTO
Categoria API
Funzione
StSafeA_ComputeCMAC Per calcolare il valore CMAC. Utilizzato sul comando preparato.
StSafeA_ComputeRMAC Per calcolare il valore RMAC. Utilizzato nella risposta ricevuta.
API crittografiche StSafeA_DataEncryption Per eseguire la crittografia dei dati (AES CBC) sul buffer di dati STSAFE-Axxx.
StSafeA_DataDecryption Per eseguire la decrittografia dei dati (AES CBC) sul buffer dei dati STSAFE-Axxx.
StSafeA_MAC_SHA_PrePostProcess Per pre- o post-elaborare il MAC e/o SHA prima della trasmissione o dopo la ricezione dei dati dal dispositivo STSAFE_Axxx.
UM2646 – Rev. 4
pagina 10/23
3.6
Nota:
UM2646
Descrizione del middleware STSAFE-A1xx
Modelli
Questa sezione fornisce una descrizione dettagliata dei modelli disponibili nel pacchetto software middleware STSAFE-A1xx.
Tutti i modelli elencati nella tabella seguente vengono forniti all'interno della cartella Interface disponibile al livello root del pacchetto software middleware.
Modello filesono forniti come examples da copiare e personalizzare negli strati superiori, in modo da poterli facilmente
integrare e configurare il middleware STSAFE-A1xx:
·
Modello di interfaccia files fornire esample implementazioni delle funzioni __weak, offerte come vuote o
funzioni parzialmente vuote all'interno del middleware. Devono essere adeguatamente implementati nello spazio utente o in
gli strati superiori in base alla libreria crittografica e alle scelte hardware dell'utente.
·
Modello di configurazione fileFornisce un modo semplice per configurare il middleware e le funzionalità STSAFE-A1xx
che possono essere utilizzati nell'applicazione utente, come ottimizzazioni o hardware specifico.
Categoria modello
Modelli di interfaccia
Modelli di configurazione
Tabella 5. Modelli
Modello file
stsafea_service_interface_template.c Esample modello per mostrare come supportare i servizi hardware richiesti dal middleware STSAFE-A e offerti dall'hardware specifico, dalla libreria di basso livello o dal BSP selezionato nello spazio utente. stsafea_crypto_mbedtls_interface_template.c Esample template per mostrare come supportare i servizi crittografici richiesti dal middleware STSAFE-A e offerti dalla libreria crittografica Mbed TLS (gestione delle chiavi, SHA, AES, ecc.). stsafea_crypto_stlib_interface_template.c Esample modello per mostrare come supportare i servizi crittografici richiesti dal middleware STSAFE-A e offerti dall'espansione software della libreria crittografica STM32 per STM32Cube (XCUBE-CRYPTOLIB) (gestione delle chiavi, SHA, AES, ecc.). stsafea_conf_template.h Esample modello per mostrare come configurare il middleware STSAFE-A (in particolare per scopi di ottimizzazione). stsafea_interface_conf_template.h Esample modello per mostrare come configurare e personalizzare l'interfaccia filecome elencato sopra.
I modelli sopra indicati sono presenti solo nella cartella BSP del pacchetto X-CUBE-SAFEA1.
UM2646 – Rev. 4
pagina 11/23
UM2646
Descrizione del middleware STSAFE-A1xx
3.7
Struttura delle cartelle
La figura seguente presenta la struttura delle cartelle del pacchetto software middleware STSAFE-A1xx v1.2.1.
Figura 6. Progetto file struttura
Progetto file struttura del middleware STSAFE-A1xx
UM2646 – Rev. 4
Progetto file struttura per X-CUBE-SAFEA1 per STM32CubeMX
pagina 12/23
3.8
3.8.1
3.8.2
UM2646
Descrizione del middleware STSAFE-A1xx
Come fare: integrazione e configurazione
Questa sezione descrive come integrare e configurare il middleware STSAFE-A1xx nell'applicazione utente.
Fasi di integrazione
Seguire questi passaggi per integrare il middleware STSAFE-A1xx nell'applicazione desiderata:
·
Passaggio 1: copiare (e facoltativamente rinominare) stsafea_service_interface_template.c file e uno dei due
stsafea_crypto_mbedtls_interface_template.c o stsafea_crypto_stlib_interface_template.c per l'utente
space in base alla libreria crittografica che è stata aggiunta all'applicazione (qualunque sia
libreria crittografica selezionata/utilizzata dagli utenti, possono persino creare/implementare la propria crittografia
interfaccia file da zero adattando l’apposito template).
·
Passaggio 2: copiare (e facoltativamente rinominare) stsafea_conf_template.h e stsafea_interface_conf_template.h
files allo spazio utente.
·
Passaggio 3: assicurati di aggiungere gli include corretti nella fonte principale o in qualsiasi altra fonte dello spazio utente file è necessario
interfacciare il middleware STSAFE-A1xx:
#include “stsafea_core.h” #include “stsafea_interface_conf.h”
·
Passaggio 4: personalizza il file fileViene utilizzato nei tre passaggi precedenti in base alle preferenze dell'utente.
Passaggi di configurazione
Per configurare correttamente il middleware STSAFE-A1xx nell'applicazione utente, la ST fornisce due diversi
modello di configurazione fileda copiare e personalizzare nello spazio utente in base alle scelte dell'utente:
·
stsafea_interface_conf_template.h: questo example template viene utilizzato e mostra come configurare il file
interfacce middleware crittografiche e di servizio nello spazio utente attraverso il seguente #define
affermazioni:
USE_PRE_LOADED_HOST_KEYS
MCU_PLATFORM_INCLUDE
MCU_PIATTAFORMA_BUS_INCLUDE
MCU_PLATFORM_CRC_INCLUDE
·
stsafea_conf_template.h: questo example template viene utilizzato e mostra come configurare STSAFE-A
middleware attraverso le seguenti istruzioni #define:
STSAFEA_USE_OPTIMIZATION_SHARED_RAM
STSAFEA_USE_OPTIMIZATION_NO_HOST_MAC_ENCRYPT
STSAFEA_USE_FULL_ASSERT
USE_SIGNATURE_SESSION (solo per STSAFE-A100)
Seguire questi passaggi per integrare il middleware STSAFE-A1xx nell'applicazione desiderata:
·
Passaggio 1: copiare (e facoltativamente rinominare) stsafea_interface_conf_template.h e stsafea_conf_template.h
files allo spazio utente.
·
Passaggio 2: conferma o modifica l'istruzione #define delle due intestazioni sopra menzionate filesecondo
la piattaforma utente e le scelte crittografiche.
UM2646 – Rev. 4
pagina 13/23
4
4.1
Nota:
4.2
Nota:
UM2646
Software dimostrativo
Software dimostrativo
Questa sezione illustra il software dimostrativo basato sul middleware STSAFE-A1xx.
Autenticazione
Questa dimostrazione illustra il flusso di comandi in cui STSAFE-A110 è montato su un dispositivo che esegue l'autenticazione su un host remoto (caso del dispositivo IoT), l'host locale utilizzato come pass-through per il server remoto. Lo scenario in cui STSAFE-A110 è montato su una periferica che esegue l'autenticazione su un host locale, ad es.ample per giochi, accessori mobili o materiali di consumo, è esattamente lo stesso.
Flusso dei comandi A scopo dimostrativo, qui gli host locali e remoti sono lo stesso dispositivo. 1. Estrarre, analizzare e verificare il certificato pubblico di STSAFE-A110 archiviato nella zona di partizione dati 0 del dispositivo
per ottenere la chiave pubblica: leggere il certificato utilizzando il middleware STSAFE-A1xx attraverso la zona 110 di STSAFE-A0. Analizzare il certificato utilizzando il parser della libreria crittografica. Leggere il certificato CA (disponibile tramite il codice). Analizzare il certificato CA utilizzando il parser della libreria crittografica. Verificare la validità del certificato utilizzando il certificato CA tramite la libreria crittografica. Ottieni la chiave pubblica dal certificato STSAFE-A110 X.509. 2. Genera e verifica la firma su un numero di sfida: Genera un numero di sfida (numero casuale). Affronta la sfida. Recupera una firma sulla sfida con hash utilizzando lo slot 110 della chiave privata di STSAFE-A0 tramite
Middleware STSAFE-A1xx. Analizzare la firma generata utilizzando la libreria crittografica. Verifica la firma generata utilizzando la chiave pubblica di STSAFE-A110 tramite la libreria crittografica. Quando ciò è valido, l'host sa che la periferica o l'IoT sono autentici.
Abbinamento
Questo codice esample stabilisce un accoppiamento tra un dispositivo STSAFE-A110 e l'MCU a cui è collegato. L'accoppiamento consente di autenticare (ovvero firmare e verificare) gli scambi tra il dispositivo e l'MCU. Il dispositivo STSAFE-A110 diventa utilizzabile solo in combinazione con l'MCU a cui è accoppiato. L'accoppiamento consiste nell'invio da parte dell'MCU host di una chiave MAC host e di una chiave di crittografia host al STSAFE-A110. Entrambe le chiavi sono archiviate nella NVM protetta del STSAFE-A110 e devono essere archiviate nella memoria flash del dispositivo STM32. Per impostazione predefinita, in questo example, l'MCU host invia chiavi note a STSAFE-A110 (vedere il flusso di comando di seguito) che se ne consiglia vivamente l'utilizzo a scopo dimostrativo. Il codice consente anche la generazione di chiavi casuali. Inoltre, il codice example genera una chiave di busta locale quando lo slot corrispondente non è già popolato in STSAFE-A110. Quando lo slot della busta locale è popolato, il dispositivo STSAFE-A110 consente all'MCU host di avvolgere/scartare una busta locale per archiviare in modo sicuro una chiave sul lato dell'MCU host. Il codice di abbinamento esample deve essere eseguito con successo prima di eseguire tutto il codice seguente exampmeno.
Flusso di comando
1. Generare la chiave della busta locale in STSAFE-A110 utilizzando il middleware STSAFE-A1xx. Per impostazione predefinita, questo comando è attivato. Tieni presente che decommentando le seguenti istruzioni define nel file p iring.c file disattiva la generazione della chiave della busta locale: /* #define _FORCE_DEFAULT_FLASH_ */
Questa operazione avviene solo se lo slot per la chiave della busta locale del STSAFE-A110 non è già popolato.
UM2646 – Rev. 4
pagina 14/23
UM2646
Software dimostrativo
2. Definire due numeri a 128 bit da utilizzare come chiave MAC host e chiave di crittografia host. Per impostazione predefinita, vengono utilizzate le chiavi conosciute d'oro. Hanno i seguenti valori: 0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xAA,0xBB,0xCC,0xDD,0xEE,0xFF / * Chiave MAC host */ 0x11,0x11,0x22,0, 22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88xXNUMX / * Chiave di cifratura host */
Per attivare la generazione di chiavi casuali, aggiungere la seguente istruzione define al filepairing.c file: #define USE_HOST_KEYS_SET_BY_PAIRING_APP 1
3. Memorizzare la chiave MAC host e la chiave di crittografia host nei rispettivi slot nel STSAFE-A110. 4. Memorizzare la chiave MAC dell'host e la chiave di crittografia dell'host nella memoria flash dell'STM32.
4.3
Stabilimento chiave (stabilire il segreto)
Questa dimostrazione illustra il caso in cui il dispositivo STSAFE-A110 è montato su un dispositivo (come un dispositivo IoT), che comunica con un server remoto e necessita di stabilire un canale sicuro per scambiare dati con esso.
In questo example, il dispositivo STM32 svolge il ruolo sia di server remoto (host remoto) che di host locale connesso al dispositivo STSAFE-A110.
L'obiettivo di questo caso d'uso è mostrare come stabilire un segreto condiviso tra l'host locale e il server remoto utilizzando lo schema Diffie-Hellman della curva ellittica con una chiave statica (ECDH) o temporanea (ECDHE) in STSAFE-A110.
Il segreto condiviso dovrebbe essere ulteriormente derivato da una o più chiavi funzionanti (non illustrate qui). Queste chiavi di lavoro possono poi essere utilizzate nei protocolli di comunicazione come TLS, ad esample per proteggere la riservatezza, l'integrità e l'autenticità dei dati scambiati tra l'host locale e il server remoto.
Flusso di comando
Figura 7. Flusso dei comandi per l'istituzione delle chiavi illustra il flusso dei comandi.
·
Le chiavi pubblica e privata dell'host remoto sono codificate nel codice examplui.
·
L'host locale invia il comando StSafeA_GenerateKeyPair a STSAFE-A110 per generare il
coppia di chiavi nel suo slot temporaneo (slot 0xFF).
·
Lo STSAFE-A110 restituisce la chiave pubblica (che corrisponde allo slot 0xFF) all'STM32 (che rappresenta
l'host remoto).
·
L'STM32 calcola il segreto dell'host remoto (utilizzando la chiave pubblica del dispositivo STSAFE e il telecomando
chiave privata dell'host).
·
L'STM32 invia la chiave pubblica dell'host remoto allo STSAFE-A110 e chiede allo STSAFE-A110 di
calcola il segreto dell'host locale utilizzando l'API StSafeA_EstablishKey.
·
Lo STSAFE-A110 restituisce il segreto dell'host locale all'STM32.
·
L'STM32 confronta i due segreti e stampa il risultato. Se i segreti sono gli stessi, il segreto
l'istituzione ha successo.
UM2646 – Rev. 4
pagina 15/23
Figura 7. Flusso dei comandi dell'istituzione chiave
UM2646
Software dimostrativo
Host remoto
STM32
Host locale
STSAFE
Calcolo del segreto dell'host remoto (utilizzando la chiave privata dell'host remoto e la chiave pubblica dell'host locale (STSAFE slot 0xFF))
Il segreto dell'host remoto
Genera coppia di chiavi
Genera coppia di chiavi sullo slot 0xFF
La chiave pubblica di STSAFE è stata generata il
Chiave pubblica di STSAFE generata
slot 0xFF
Chiave pubblica dell'host remoto
STM32 confronta il segreto dell'host remoto con il file
segreto dell'host locale e stampa il risultato
Stabilisci chiave (chiave pubblica dell'host remoto)
Invio del segreto dell'host locale
Calcolo del segreto dell'host locale (utilizzando la chiave privata dell'host locale (slot STSAFE 0xFF) e la chiave pubblica dell'host remoto)
Il segreto dell'host locale
4.4
Nota:
4.5
Avvolgere/scartare buste locali
Questa dimostrazione illustra il caso in cui STSAFE-A110 avvolge/svolge la busta locale per archiviare in modo sicuro un segreto in qualsiasi memoria non volatile (NVM). Le chiavi di crittografia/decrittografia possono essere archiviate in modo sicuro in una memoria aggiuntiva o nella memoria dei dati utente di STSAFEA110. Il meccanismo di avvolgimento viene utilizzato per proteggere un testo segreto o semplice. L'output del wrap è una busta crittografata con un algoritmo di wrap della chiave AES e che contiene la chiave o il testo normale da proteggere.
Flusso di comando
Qui gli host locali e remoti sono lo stesso dispositivo. 1. Genera dati casuali assimilati a un inviluppo locale. 2. Avvolgi la busta locale utilizzando il middleware di STSAFE-A110. 3. Conservare la busta avvolta. 4. Scartare la busta avvolta utilizzando il middleware di STSAFE-A110. 5. Confronta la busta non imballata con la busta locale iniziale. Dovrebbero essere uguali.
Generazione di coppie di chiavi
Questa dimostrazione illustra il flusso di comandi in cui il dispositivo STSAFE-A110 è montato su un host locale. Un host remoto chiede a questo host locale di generare una coppia di chiavi (una chiave privata e una chiave pubblica) sullo slot 1 e quindi di firmare una sfida (numero casuale) con la chiave privata generata.
L'host remoto è quindi in grado di verificare la firma con la chiave pubblica generata.
Questa dimostrazione è simile alla dimostrazione di Autenticazione con due differenze:
·
La coppia di chiavi nella dimostrazione di Autenticazione è già generata (sullo slot 0), mentre, in questo exampLui,
generiamo la coppia di chiavi sullo slot 1. Il dispositivo STSAFE-A110 può anche generare la coppia di chiavi sullo slot 0xFF,
ma solo per scopi chiave dello stabilimento.
·
La chiave pubblica nella dimostrazione di Autenticazione viene estratta dal certificato nella zona 0. In this
example, la chiave pubblica viene rispedita con la risposta di STSAFE-A110 al file
Comando StSafeA_GenerateKeyPair.
UM2646 – Rev. 4
pagina 16/23
UM2646
Software dimostrativo
Nota:
Flusso di comando
A scopo dimostrativo, qui gli host locali e remoti sono lo stesso dispositivo. 1. L'host invia il comando StSafeA_GenerateKeyPair allo STSAFE-A110, che restituisce il
chiave pubblica per l'MCU host. 2. L'host genera una sfida (numero casuale di 48 byte) utilizzando l'API StSafeA_GenerateRandom. IL
STSAFE-A110 restituisce il numero casuale generato. 3. L'host calcola l'hash del numero generato utilizzando la libreria crittografica. 4. L'host chiede a STSAFE-A110 di generare una firma dell'hash calcolato utilizzando il
API StSafeA_GenerateSignature. Lo STSAFE-A110 restituisce la firma generata.
5. L'host verifica la firma generata con la chiave pubblica inviata da STSAFE-A110 nel passaggio 1. 6. Viene stampato il risultato della verifica della firma.
UM2646 – Rev. 4
pagina 17/23
UM2646
Cronologia delle revisioni
Tabella 6. Cronologia delle revisioni del documento
Data
Revisione
Cambiamenti
09-dic-2019
1
Versione iniziale.
13-gen-2020
2
Sezione informazioni sulla licenza rimossa.
Elenco aggiornato delle funzionalità illustrate dai codici dimostrativi nell'Introduzione. Rimossa la tabella dell'elenco degli acronimi e inserito il glossario alla fine.
Piccola modifica al testo e colori aggiornati nella Figura 1. Architettura STSAFE-A1xx.
Figura 2 aggiornata. Diagramma a blocchi dell'applicazione STSAFE-A1xx.
Tabella 1 aggiornata. API esportata del modulo CORE.
07-feb-2022
3
Rimossi StSafeA_InitHASH e StSafeA_ComputeHASH dalla Tabella 4. API esportate dal modulo CRYPTO.
Sezione 3.8.2 aggiornata: Passaggi di configurazione.
Sezione 4.2 aggiornata: Associazione.
Sezione 4.3 aggiornata: Stabilimento chiave (stabilire segreto).
Aggiunta Sezione 4.5: Generazione di coppie di chiavi.
Piccole modifiche al testo.
Aggiunto il pacchetto software STSAFE-A1xx integrato in X-CUBE-SAFEA1 v1.2.1 come middleware
ed è integrato come BSP per il pacchetto software per STM32CubeMX. e i modelli di cui sopra
07-mar-2024
4
sono presenti solo nella cartella BSP del pacchetto X-CUBE-SAFEA1..
Sezione 3.1 aggiornata: Descrizione generale, Sezione 3.2: Architettura e Sezione 3.7: Struttura delle cartelle.
UM2646 – Rev. 4
pagina 18/23
Glossario
AES Standard di crittografia avanzato ANSI American National Standards Institute API Interfaccia di programmazione dell'applicazione BSP Pacchetto di supporto della scheda CA Autorità di certificazione CC Common Criteria C-MAC Codice di autenticazione del messaggio di comando ECC Crittografia a curva ellittica ECDH Curva ellittica DiffieHellman ECDHE Curva ellittica DiffieHellman – effimera EWARM IAR Embedded Workbench® per Arm® HAL Livello di astrazione hardware I/O Ingresso/uscita IAR Systems® Leader mondiale negli strumenti e servizi software per lo sviluppo di sistemi embedded. IDE Ambiente di sviluppo integrato. Un'applicazione software che fornisce servizi completi ai programmatori di computer per lo sviluppo di software. IoT Internet delle cose I²C Circuito interintegrato (IIC) LL Driver di basso livello MAC Codice di autenticazione del messaggio MCU Unità microcontrollore MDK-ARM Kit di sviluppo microcontrollore Keil® per Arm® MPU Unità di protezione della memoria NVM Memoria non volatile
Sistema operativo Sistema operativo SE Elemento sicuro SHA Algoritmo Secure Hash SLA Contratto di licenza software ST STMicroelectronics TLS Sicurezza del livello di trasporto USB Bus seriale universale
UM2646
Glossario
UM2646 – Rev. 4
pagina 19/23
UM2646
Contenuto
Contenuto
1 Informazioni generali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 2 Elemento di sicurezza STSAFE-A110. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 Descrizione del middleware STSAFE-A1xx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.1 Descrizione generale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.2 Architettura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.3 Modulo CORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.4 Modulo SERVIZIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.5 Modulo CRYPTO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.6 Modelli. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.7 Struttura delle cartelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.8 Come fare: integrazione e configurazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.8.1 Passaggi di integrazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.8.2 Passaggi di configurazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4 Software dimostrativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14 4.1 Autenticazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.2 Accoppiamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.3 Stabilimento chiave (stabilire segreto) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.4 Avvolgere/scartare buste locali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.5 Generazione di coppie di chiavi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Cronologia delle revisioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18 Elenco delle tabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21 Elenco delle figure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22
UM2646 – Rev. 4
pagina 20/23
UM2646
Elenco delle tabelle
Elenco delle tabelle
Tabella 1. Tabella 2. Tabella 3. Tabella 4. Tabella 5. Tabella 6.
API esportata del modulo CORE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 API del modulo STSAFE-A110 CORE esportate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 API esportate dal modulo SERVICE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 API esportate dal modulo CRYPTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 modelli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Cronologia delle revisioni del documento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
UM2646 – Rev. 4
pagina 21/23
UM2646
Elenco delle figure
Elenco delle figure
Figura 1. Figura 2. Figura 3. Figura 4. Figura 5. Figura 6. Figura 7.
Architettura STSAFE-A1xx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Schema a blocchi dell'applicazione STSAFE-A1xx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Architettura del modulo 6 CORE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Architettura del modulo SERVIZIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Architettura del modulo CRYPTO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Progetto file struttura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Flusso dei comandi per l'istituzione delle chiavi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
UM2646 – Rev. 4
pagina 22/23
UM2646
AVVISO IMPORTANTE LEGGERE ATTENTAMENTE STMicroelectronics NV e le sue controllate ("ST") si riservano il diritto di apportare modifiche, correzioni, miglioramenti, modifiche e miglioramenti ai prodotti ST e/o al presente documento in qualsiasi momento senza preavviso. Gli acquirenti devono ottenere le ultime informazioni rilevanti sui prodotti ST prima di effettuare ordini. I prodotti ST sono venduti secondo i termini e le condizioni di vendita ST in vigore al momento della conferma dell'ordine. Gli acquirenti sono gli unici responsabili della scelta, selezione e utilizzo dei prodotti ST e ST non si assume alcuna responsabilità per l'assistenza applicativa o la progettazione dei prodotti degli acquirenti. Nessuna licenza, esplicita o implicita, su alcun diritto di proprietà intellettuale è concessa da ST nel presente documento. La rivendita di prodotti ST con disposizioni diverse dalle informazioni qui stabilite invaliderà qualsiasi garanzia concessa da ST per tale prodotto. ST e il logo ST sono marchi di fabbrica di ST. Per ulteriori informazioni sui marchi ST, fare riferimento a www.st.com/trademarks. Tutti gli altri nomi di prodotti o servizi sono di proprietà dei rispettivi proprietari. Le informazioni contenute in questo documento sostituiscono e sostituiscono le informazioni precedentemente fornite in qualsiasi versione precedente di questo documento.
© 2024 STMicroelectronics Tutti i diritti riservati
UM2646 – Rev. 4
pagina 23/23
Documenti / Risorse
![]() |
Pacchetto software X-CUBE-SAFEA1 di STMicroelectronics [pdf] Guida utente STSAFE-A100, STSAFE-A110, Pacchetto software X-CUBE-SAFEA1, X-CUBE-SAFEA1, Pacchetto software, Pacchetto |