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

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:

  1. Fare riferimento alla scheda tecnica disponibile sullo STSAFE-A110 ufficiale
    web pagina per informazioni dettagliate.
  2. Scaricare il pacchetto software middleware STSAFE-A1xx dal
    Pagina Internet STSAFE-A110 o STM32CubeMX.
  3. 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

Riferimenti

Lascia un commento

Il tuo indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *