Pachetul software X-CUBE-SAFEA1
Specificații
- Nume produs: STSAFE-A110 Secure Element
- Versiune: X-CUBE-SAFEA1 v1.2.1
- Integrat în: pachetul software STM32CubeMX
- Caracteristici cheie:
- Stabilirea canalului securizat cu gazdă la distanță, inclusiv
strângere de mână pentru securitatea stratului de transport (TLS). - Serviciu de verificare a semnăturii (pornire securizată și firmware
actualizare) - Monitorizarea utilizării cu contoare securizate
- Împerecherea și canalul securizat cu procesorul aplicației gazdă
- Împachetarea și despachetarea plicurilor gazdă locale sau la distanță
- Generarea de perechi de chei pe cip
- Stabilirea canalului securizat cu gazdă la distanță, inclusiv
Instrucțiuni de utilizare a produsului
1. Informații generale
Elementul de siguranță STSAFE-A110 este proiectat să ofere
servicii de autentificare și gestionare a datelor la nivel local sau la distanță
gazde. Este potrivit pentru diverse aplicații, cum ar fi dispozitive IoT,
sisteme smart-home, aplicații industriale și multe altele.
2. Noțiuni introductive
Pentru a începe să utilizați elementul de siguranță STSAFE-A110:
- Consultați fișa de date disponibilă pe STSAFE-A110 oficial
web pagina pentru informații detaliate. - Descărcați pachetul software STSAFE-A1xx middleware de la
Pagina de internet STSAFE-A110 sau STM32CubeMX. - Asigurați-vă compatibilitatea cu IDE-urile acceptate, cum ar fi STM32Cube IDE sau
Sistem de lucru pentru STM32.
3. Descrierea middleware
3.1 Descriere generală
Middleware-ul STSAFE-A1xx facilitează interacțiunea între
dispozitivul element securizat și un MCU, permițând diverse cazuri de utilizare.
Este integrat în pachetele software ST pentru a spori securitatea
Caracteristici.
3.2 Arhitectura
Middleware-ul constă din diferite componente software,
inclusiv:
- STSAFE-A1xx API (interfață de bază)
- CRYPTO CORE
- MbedTLS Serviciu criptografic interfață SHA/AES
- Interfață de service hardware X-CUBECRYPTOLIB
Întrebări frecvente (FAQ)
Î: Unde pot găsi fișa de date STSAFE-A110?
R: Fișa de date este disponibilă pe STSAFE-A110 web pagina pentru
informații suplimentare despre dispozitiv.
Î: Care sunt mediile de dezvoltare integrată acceptate
pentru middleware-ul STSAFE-A1xx?
R: IDE-urile acceptate includ STM32Cube IDE și System Workbench
pentru STM32 (SW4STM32) în pachetul X-CUBE-SAFEA1 v1.2.1.
UM2646
Manual de utilizare
Noțiuni introductive cu pachetul software X-CUBE-SAFEA1
Introducere
Acest manual de utilizare descrie cum să începeți cu pachetul software X-CUBE-SAFEA1. Pachetul software X-CUBE-SAFEA1 este o componentă software care oferă mai multe coduri demonstrative, care utilizează caracteristicile dispozitivului STSAFE-A110 de la un microcontroler gazdă. Aceste coduri demonstrative utilizează middleware-ul STSAFE-A1xx construit pe tehnologia software STM32Cube pentru a ușura portabilitatea între diferite microcontrolere STM32. În plus, este independent de MCU pentru portabilitate către alte MCU. Aceste coduri demonstrative ilustrează următoarele caracteristici: · Autentificare · Împerechere · Stabilirea cheii · Ambalare locală a plicului · Generarea perechii de chei
UM2646 – Rev 4 – martie 2024 Pentru informații suplimentare, contactați biroul local de vânzări STMicroelectronics.
www.st.com
1
Notă: Notă:
UM2646
Informații generale
Informații generale
Pachetul software X-CUBE-SAFEA1 este o referință pentru integrarea serviciilor de elemente securizate STSAFE-A110 în sistemul de operare (OS) al unui MCU gazdă și în aplicația acestuia. Conține driverul STSAFE-A110 și coduri demonstrative pentru a fi executate pe microcontrolere STM32 pe 32 de biți bazate pe procesorul Arm® Cortex®-M. Arm este o marcă înregistrată a Arm Limited (sau a filialelor sale) în SUA și/sau în altă parte. Pachetul software X-CUBE-SAFEA1 este dezvoltat în ANSI C. Cu toate acestea, arhitectura independentă de platformă permite o portabilitate ușoară pe o varietate de platforme diferite. Tabelul de mai jos prezintă definiția acronimelor care sunt relevante pentru o mai bună înțelegere a acestui document.
Pachetul software STSAFE-A1xx este integrat în X-CUBE-SAFEA1 v1.2.1 ca middleware și este integrat ca BSP pentru pachetul software pentru STM32CubeMX.
UM2646 – Rev 4
pagina 2/23
UM2646
Element de siguranță STSAFE-A110
2
Element de siguranță STSAFE-A110
STSAFE-A110 este o soluție extrem de sigură care acționează ca un element securizat, oferind servicii de autentificare și gestionare a datelor unei gazde locale sau de la distanță. Constă într-o soluție completă la cheie, cu un sistem de operare securizat care rulează pe cea mai recentă generație de microcontrolere securizate.
STSAFE-A110 poate fi integrat în dispozitive IoT (Internet of Things), smart-home, smart-city și aplicații industriale, dispozitive electronice de larg consum, consumabile și accesorii. Caracteristicile sale cheie sunt:
·
Autentificare (a dispozitivelor periferice, IoT și USB Type-C®)
·
Stabilirea securizată a canalului cu gazdă la distanță, inclusiv acordarea de mână de securitate a stratului de transport (TLS).
·
Serviciu de verificare a semnăturii (pornire securizată și upgrade de firmware)
·
Monitorizarea utilizării cu contoare securizate
·
Împerecherea și canalul securizat cu procesorul aplicației gazdă
·
Împachetarea și despachetarea plicurilor gazdă locale sau la distanță
·
Generarea de perechi de chei pe cip
Consultați fișa de date STSAFE-A110 disponibilă pe STSAFE-A110 web pagina pentru informații suplimentare despre dispozitiv.
UM2646 – Rev 4
pagina 3/23
UM2646
Descrierea middleware STSAFE-A1xx
3
Descrierea middleware STSAFE-A1xx
Această secțiune detaliază conținutul pachetului software middleware STSAFE-A1xx și modul de utilizare al acestuia.
3.1
Descriere generală
Middleware-ul STSAFE-A1xx este un set de componente software concepute pentru:
·
interfață dispozitivul cu element securizat STSAFE-A110 cu un MCU
·
implementați cele mai generice cazuri de utilizare STSAFE-A110
Middleware-ul STSAFE-A1xx este complet integrat în pachetele software ST ca o componentă middleware pentru a adăuga caracteristici ale elementelor securizate (de ex.ample X-CUBE-SBSFU sau X-CUBE-SAFEA1).
Poate fi descărcat de pe pagina de internet STSAFE-A110 prin fila Tools & Software sau poate fi descărcat de pe STM32CubeMX.
Software-ul este furnizat ca cod sursă în temeiul unui acord de licență pentru software ST (SLA0088) (consultați informații despre licență pentru mai multe detalii).
Sunt acceptate următoarele medii de dezvoltare integrate:
·
IAR Embedded Workbench® for Arm® (EWARM)
·
Kit de dezvoltare pentru microcontroler Keil® (MDK-ARM)
·
STM32Cube IDE (STM32CubeIDE)
·
System Workbench pentru STM32 (SW4STM32) acceptat numai în pachetul X-CUBE-SAFEA1 v1.2.1
Consultați notele de lansare disponibile în folderul rădăcină al pachetului pentru informații despre versiunile IDE acceptate.
3.2
Arhitectură
Această secțiune descrie componentele software ale pachetului de software middleware STSAFE-A1xx.
Figura de mai jos prezintă a view a arhitecturii middleware STSAFE-A1xx și a interfețelor aferente.
Figura 1. Arhitectura STSAFE-A1xx
STSAFE-A1xx API (interfață de bază)
CORE
CRYPTO
MbedTM TLS
Interfață de serviciu criptografic SHA/AES
SERVICIU
Zona izolata
Potrivit pentru protecție prin caracteristicile de securitate MCU
(MPU, Firewall, TrustZone® etc.)
Interfață de service hardware
X-CUBECRYPTOLIB
UM2646 – Rev 4
pagina 4/23
Nota:
UM2646
Descrierea middleware STSAFE-A1xx
Middleware-ul are trei interfețe diferite:
·
STSAFE-A1xx API: Este interfața principală de programare a aplicațiilor (API), care oferă acces complet tuturor
serviciile STSAFE-A110 exportate în straturile superioare (aplicații, biblioteci și stive). Această interfață este
denumită și interfața de bază, deoarece toate API-urile exportate sunt implementate în modulul CORE.
Straturile superioare care trebuie să integreze middleware-ul STSAFE-A1xx trebuie să acceseze STSAFE-A110
caracteristici prin această interfață.
·
Interfață de service hardware: Această interfață este utilizată de middleware-ul STSAFE-A1xx pentru a ajunge la cel mai înalt
independența platformei hardware. Include un set de funcții generice pentru a conecta MCU specific, magistrala IO
și funcții de sincronizare. Această structură îmbunătățește reutilizarea codului bibliotecii și garantează o portabilitate ușoară către
alte dispozitive.
Definite ca funcții slabe, aceste funcții generice trebuie implementate la nivel de aplicație urmând exampfișierul furnizat în șablonul stsafea_service_interface_template.c furnizat pentru o integrare ușoară
și personalizare în straturile superioare.
·
Interfață de serviciu criptografic: această interfață este utilizată de middleware-ul STSAFE-A1xx pentru a accesa
funcții criptografice ale platformei sau bibliotecii, cum ar fi SHA (algoritm de hash securizat) și AES (avansat
standard de criptare) cerut de middleware pentru unele demonstrații.
Definite ca funcții slabe, aceste funcții criptografice trebuie implementate la nivel de aplicație
in urma exampfișierul este prevăzut cu două șabloane diferite:
stsafea_crypto_mbedtls_interface_template.c dacă este utilizată biblioteca criptografică Arm® MbedTM TLS; stsafea_crypto_stlib_interface_template.c dacă este utilizată biblioteca criptografică ST;
·
Bibliotecile criptografice alternative pot fi utilizate prin simpla personalizare a sursei șablonului files. The
șablon filesunt furnizate pentru integrare și personalizare ușoară în straturile superioare.
Arm și Mbed sunt mărci comerciale înregistrate sau mărci comerciale ale Arm Limited (sau ale filialelor sale) în SUA și/sau în altă parte.
UM2646 – Rev 4
pagina 5/23
UM2646
Descrierea middleware STSAFE-A1xx
Figura de mai jos prezintă middleware-ul STSAFE-A1xx integrat într-o aplicație standard STM32Cube, care rulează pe o placă de expansiune X-NUCLEO-SAFEA1 montată pe o placă STM32 Nucleo.
Figura 2. Diagrama bloc al aplicației STSAFE-A1xx
Middleware STSAFE-A1xx într-o aplicație STM32Cube
Schema bloc X-CUBE-SAFEA1 pentru STM32CubeMX
Pentru a oferi cea mai bună independență hardware și platformă, middleware-ul STSAFE-A1xx nu este conectat direct la STM32Cube HAL, ci prin interfață. fileeste implementat la nivel de aplicație (stsafea_service_interface_template.c, stsafea_interface_conf.h).
UM2646 – Rev 4
pagina 6/23
UM2646
Descrierea middleware STSAFE-A1xx
3.3
modulul CORE
Modulul CORE este nucleul middleware-ului. Implementează comenzile apelate de straturile superioare (aplicație, biblioteci, stivă și așa mai departe) pentru a utiliza în mod corespunzător caracteristicile STSAFE-A1xx.
Figura de mai jos prezintă a view a arhitecturii modulului CORE.
Figura 3. Arhitectura modulului CORE
Straturi superioare externe (aplicații, biblioteci, stive etc.)
CORE
Modul intern CRYPTO
Modul intern SERVICE
Modulul CORE este o componentă software multi-interfață conectată la:
·
Straturi superioare: conexiune externă prin API-urile exportate descrise în cele două tabele de mai jos;
·
Stratul criptografic: conexiune internă la modulul CRYPTO;
·
Stratul de service hardware: conexiune internă la modulul SERVICE;
Pachetul de software middleware STSAFE-A1xx oferă o documentație API completă a modulului CORE în folderul rădăcină (a se vedea STSAFE-A1xx_Middleware.chm file).
Consultați fișa de date STSAFE-A110 pentru o scurtă explicație a setului de comenzi, la care sunt legate API-urile de comandă enumerate în tabelul următor.
Categoria API Configurație de inițializare
Comenzi de uz general
Comenzi de partiție a datelor
Tabelul 1. API-ul exportat pentru modulul CORE
Funcția StSafeA_Init Pentru a crea, inițializa și aloca mânerul dispozitivului STSAFE-A1xx. StSafeA_GetVersion Pentru a returna versiunea middleware STSAFE-A1xx. StSafeA_Echo Pentru a primi datele transmise în comandă. StSafeA_Reset Pentru a reseta atributele volatile la valorile lor inițiale. StSafeA_GenerateRandom To generează un număr de octeți aleatori. StSafeA_Hibernate Pentru a pune dispozitivul STSAFE-Axxx în hibernare. StSafeA_DataPartitionQuery
UM2646 – Rev 4
pagina 7/23
UM2646
Descrierea middleware STSAFE-A1xx
Categoria API
Comanda Function Query pentru a prelua configurația partiției de date.
StSafeA_Decrement Pentru a reduce contorul unidirecțional într-o zonă de contor.
Comenzi de partiție a datelor
StSafeA_Read Pentru a citi date dintr-o zonă de partiție de date.
StSafeA_Update Pentru a actualiza datele prin partiția de zonă.
StSafeA_GenerateSignature Pentru a returna semnătura ECDSA peste un digest de mesaj.
Comenzi cu cheie privată și publică
StSafeA_GenerateKeyPair Pentru a genera o pereche de chei într-un slot pentru chei private.
StSafeA_VerifyMessageSignature Pentru a verifica autentificarea mesajului.
StSafeA_EstablishKey Pentru a stabili un secret partajat între două gazde prin utilizarea criptografiei asimetrice.
StSafeA_ProductDataQuery Comanda de interogare pentru a prelua datele despre produs.
StSafeA_I2cParameterQuery Comanda de interogare pentru a prelua adresa I²C și configurația modului de consum redus.
StSafeA_LifeCycleStateQuery Comanda de interogare pentru a prelua starea ciclului de viață (Born, Operational, Terminated, Born and Locked sau Operational and Locked).
Comenzi administrative
StSafeA_HostKeySlotQuery Comandă de interogare pentru a prelua informațiile cheii gazdei (prezență și contor C-MAC gazdă).
StSafeA_PutAttribute Pentru a pune atribute în dispozitivul STSAFE-Axxx, cum ar fi cheile, parola, parametrii I²C conform atributului TAG.
StSafeA_DeletePassword Pentru a șterge parola din slotul său.
StSafeA_VerifyPassword Pentru a verifica parola și a reține rezultatul verificării pentru autorizarea viitoare a comenzii.
StSafeA_RawCommand Pentru a executa o comandă brută și a primi răspunsul aferent.
StSafeA_LocalEnvelopeKeySlotQuery Comanda de interogare pentru a prelua informațiile locale ale cheii plicului (numărul slotului, prezența și lungimea cheii) pentru sloturile de cheie disponibile.
Comenzi pentru plicuri locale
StSafeA_GenerateLocalEnvelopeKey Pentru a genera o cheie într-un slot local pentru chei de plic.
StSafeA_WrapLocalEnvelope Pentru a împacheta datele (de obicei chei) care sunt gestionate în întregime de gazdă, cu o cheie de plic locală și algoritmul [AES key wrap].
StSafeA_UnwrapLocalEnvelope Pentru a despacheta un plic local cu o cheie de plic local.
UM2646 – Rev 4
pagina 8/23
UM2646
Descrierea middleware STSAFE-A1xx
Categoria API
Comanda de configurare a autorizației de comandă
Tabelul 2. API-urile pentru modulul STSAFE-A110 CORE exportate
Funcție StSafeA_CommandAuthorizationConfigurationQuery Comanda de interogare pentru a prelua condițiile de acces pentru comenzile cu condiții de acces configurabile.
3.4
modulul SERVICE
Modulul SERVICE este stratul inferior al middleware-ului. Implementează o abstractizare hardware completă în ceea ce privește MCU și platforma hardware.
Figura de mai jos prezintă a view a arhitecturii modulului SERVICE.
Figura 4. Arhitectura modulului SERVICE
Modul intern CORE
SERVICIU
Straturi inferioare externe (BSP, HAL, LL etc.)
Modulul SERVICE este o componentă software cu interfață duală conectată la:
·
Straturi inferioare externe: cum ar fi BSP, HAL sau LL. Funcțiile slabe trebuie implementate la superioare externe
straturi și se bazează pe șablonul stsafea_service_interface_template.c file;
·
Stratul de bază: conexiune internă la modulul CORE prin API-urile exportate descrise în tabel
de mai jos;
Pachetul software STSAFE-A1xx middleware oferă o documentație API completă a modulului SERVICE din folderul rădăcină (consultați STSAFE-A1xx_Middleware.chm file).
Tabelul 3. API-uri exportate pentru modulul SERVICE
Categoria API Configurație de inițializare
Funcții de operare la nivel scăzut
Funcţie
StSafeA_BSP_Init Pentru a inițializa magistrala de comunicație și pinii IO necesari pentru a opera dispozitivul STSAFE-Axxx.
StSafeA_Transmit Pentru a pregăti comanda care urmează să fie transmisă și a apela API-ul magistralei de nivel scăzut pentru a fi executat. Calculați și concatenați un CRC, dacă este acceptat.
StSafeA_Receive Pentru a primi date de la STSAFE-Axxx utilizând funcțiile magistralei de nivel scăzut pentru a le prelua. Verificați CRC, dacă este acceptat.
UM2646 – Rev 4
pagina 9/23
UM2646
Descrierea middleware STSAFE-A1xx
3.5
Modul CRYPTO
Modulul CRYPTO reprezintă partea criptografică a middleware-ului. Trebuie să se bazeze pe resursele criptografice ale platformei.
Modulul CRYPTO este complet independent de celelalte module middleware și, din acest motiv, poate fi încapsulat cu ușurință într-o zonă securizată izolată, potrivită pentru protecție prin caracteristici de securitate MCU, cum ar fi o unitate de protecție a memoriei (MPU), un firewall sau un TrustZone®.
Figura de mai jos prezintă a view a arhitecturii modulului CRYPTO.
Figura 5. Arhitectura modulului CRYPTO
Modul intern CORE
CRYPTO
Straturi criptografice externe
(MbedTM TLS, X-CUBE-CRYPTOLIB)
Modulul CRYPTO este o componentă software cu interfață duală conectată la:
·
o bibliotecă de criptografie externă: Mbed TLS și X-CUBE-CRYPTOLIB sunt acceptate în prezent. Slab
funcțiile trebuie implementate la nivelurile superioare externe și se bazează pe:
șablon stsafea_crypto_mbedtls_interface_template.c file pentru biblioteca criptografică Mbed TLS;
șablon stsafea_crypto_stlib_interface_template.c file pentru biblioteca criptografică ST;
Biblioteci criptografice suplimentare pot fi susținute cu ușurință prin adaptarea interfeței criptografice
șablon file.
·
stratul de bază: conexiune internă la modulul CORE prin API-urile exportate descrise în tabel
de mai jos;
Pachetul software STSAFE-A1xx middleware oferă o documentație API completă a modulului CRYPTO în folderul rădăcină (consultați STSAFE-A1xx_Middleware.chm file).
Tabelul 4. API-uri exportate pentru modulul CRYPTO
Categoria API
Funcţie
StSafeA_ComputeCMAC Pentru a calcula valoarea CMAC. Folosit la comanda pregătită.
StSafeA_ComputeRMAC Pentru a calcula valoarea RMAC. Folosit pentru răspunsul primit.
StSafeA_DataEncryption Cryptographic API-uri Pentru a executa criptarea datelor (AES CBC) pe tamponul de date STSAFE-Axxx.
StSafeA_DataDecryption Pentru a executa decriptarea datelor (AES CBC) pe tamponul de date STSAFE-Axxx.
StSafeA_MAC_SHA_PrePostProcess Pentru a pre-sau post-procesare MAC și/sau SHA înainte de transmitere sau după recepția datelor de la dispozitivul STSAFE_Axxx.
UM2646 – Rev 4
pagina 10/23
3.6
Nota:
UM2646
Descrierea middleware STSAFE-A1xx
Șabloane
Această secțiune oferă o descriere detaliată a șabloanelor disponibile în pachetul software middleware STSAFE-A1xx.
Toate șabloanele enumerate în tabelul de mai jos sunt furnizate în folderul Interfață disponibil la nivelul rădăcină al pachetului software middleware.
Șablon filesunt furnizate ca exampfișierele să fie copiate și personalizate în straturile superioare, pentru a putea fi ușor
integrați și configurați middleware-ul STSAFE-A1xx:
·
Șablon de interfață files oferi exampimplementări ale funcțiilor __weak, oferite ca goale sau
funcții parțial goale în interiorul middleware-ului. Acestea trebuie implementate corect în spațiul utilizatorului sau în
straturile superioare în funcție de biblioteca criptografică și de alegerile hardware ale utilizatorului.
·
Șablon de configurare fileoferă o modalitate ușoară de a configura middleware-ul și caracteristicile STSAFE-A1xx
care pot fi utilizate în aplicația utilizator, cum ar fi optimizări sau hardware specific.
Categorie șabloane
Șabloane de interfață
Șabloane de configurare
Tabelul 5. Șabloane
Șablon file
stsafea_service_interface_template.c Exampșablon de fișier pentru a arăta cum să susțină serviciile hardware cerute de middleware-ul STSAFE-A și oferite de hardware-ul specific, biblioteca de nivel scăzut sau BSP selectat în spațiul utilizatorului. stsafea_crypto_mbedtls_interface_template.c Exampșablon de fișier pentru a arăta cum să suporte serviciile criptografice cerute de middleware-ul STSAFE-A și oferite de biblioteca criptografică Mbed TLS (gestionarea cheilor, SHA, AES etc.). stsafea_crypto_stlib_interface_template.c Exampșablon de fișier pentru a arăta cum să susțină serviciile criptografice cerute de middleware-ul STSAFE-A și oferite de extensia software-ului bibliotecii criptografice STM32 pentru STM32Cube (XCUBE-CRYPTOLIB) (gestionarea cheilor, SHA, AES etc.). stsafea_conf_template.h Exampșablon de fișier pentru a arăta cum să configurați middleware-ul STSAFE-A (în special în scopuri de optimizare). stsafea_interface_conf_template.h Exampșablon de fișier pentru a arăta cum să configurați și să personalizați interfața filesunt enumerate mai sus.
Șabloanele de mai sus sunt prezente doar în folderul BSP al pachetului X-CUBE-SAFEA1.
UM2646 – Rev 4
pagina 11/23
UM2646
Descrierea middleware STSAFE-A1xx
3.7
Structura folderului
Figura de mai jos prezintă structura de foldere a pachetului de software middleware STSAFE-A1xx v1.2.1.
Figura 6. Proiect file structura
Proiect file structura middleware STSAFE-A1xx
UM2646 – Rev 4
Proiect file structura pentru X-CUBE-SAFEA1 pentru STM32CubeMX
pagina 12/23
3.8
3.8.1
3.8.2
UM2646
Descrierea middleware STSAFE-A1xx
Cum să: integrare și configurare
Această secțiune descrie cum să integrați și să configurați middleware-ul STSAFE-A1xx în aplicația utilizator.
Etape de integrare
Urmați acești pași pentru a integra middleware-ul STSAFE-A1xx în aplicația dorită:
·
Pasul 1: Copiați (și opțional redenumiți) stsafea_service_interface_template.c file şi oricare dintre
stsafea_crypto_mbedtls_interface_template.c sau stsafea_crypto_stlib_interface_template.c către utilizator
spațiu conform bibliotecii criptografice care a fost adăugată la aplicație (indiferent de tipul
bibliotecă criptografică selectată/utilizată de utilizatori, aceștia pot chiar să creeze/implementa propria lor criptografică
interfață file de la zero prin adaptarea șablonului potrivit).
·
Pasul 2: Copiați (și opțional redenumiți) stsafea_conf_template.h și stsafea_interface_conf_template.h
files la spațiul utilizatorului.
·
Pasul 3: Asigurați-vă că adăugați includerile drepte în sursa principală sau în orice altă sursă de spațiu utilizator file care trebuie
interfață cu middleware-ul STSAFE-A1xx:
#include „stsafea_core.h” #include „stsafea_interface_conf.h”
·
Pasul 4: Personalizați fișierul fileeste folosit în cei trei pași de mai sus în funcție de preferințele utilizatorului.
Pași de configurare
Pentru a configura corect middleware-ul STSAFE-A1xx în aplicația utilizator, ST oferă două diferite
șablon de configurare files să fie copiate și personalizate în spațiul utilizatorului în funcție de alegerile utilizatorului:
·
stsafea_interface_conf_template.h: Acest exampȘablonul de fișier este folosit și arată cum se configurează
interfețe criptografice și middleware de servicii în spațiul utilizatorului prin următorul #define
afirmatii:
USE_PRE_LOADED_HOST_KEYS
MCU_PLATFORM_INCLUDE
MCU_PLATFORM_BUS_INCLUDE
MCU_PLATFORM_CRC_INCLUDE
·
stsafea_conf_template.h: Acest exampȘablonul de fișier este folosit și arată cum să configurați STSAFE-A
middleware prin următoarele instrucțiuni #define:
STSAFEA_USE_OPTIMIZATION_SHARED_RAM
STSAFEA_USE_OPTIMIZATION_NO_HOST_MAC_ENCRYPT
STSAFEA_USE_FULL_ASSERT
USE_SIGNATURE_SESSION (numai pentru STSAFE-A100)
Urmați acești pași pentru a integra middleware-ul STSAFE-A1xx în aplicația dorită:
·
Pasul 1: Copiați (și opțional redenumiți) stsafea_interface_conf_template.h și stsafea_conf_template.h
files la spațiul utilizatorului.
·
Pasul 2: Confirmați sau modificați declarația #define a celor două antete menționate mai sus files conform
platforma utilizatorului și opțiunile criptografice.
UM2646 – Rev 4
pagina 13/23
4
4.1
Nota:
4.2
Nota:
UM2646
Software demonstrativ
Software demonstrativ
Această secțiune ilustrează software-ul demonstrativ bazat pe middleware-ul STSAFE-A1xx.
Autentificare
Această demonstrație ilustrează fluxul de comandă în care STSAFE-A110 este montat pe un dispozitiv care se autentifică la o gazdă la distanță (cazul dispozitivului IoT), gazda locală fiind utilizată ca transfer către serverul de la distanță. Scenariul în care STSAFE-A110 este montat pe un periferic care se autentifică la o gazdă locală, de exempluample pentru jocuri, accesorii mobile sau consumabile, este exact același.
Fluxul de comandă În scopuri demonstrative, gazdele locale și la distanță sunt același dispozitiv aici. 1. Extrageți, analizați și verificați certificatul public al STSAFE-A110 stocat în zona de partiție de date 0 a dispozitivului
pentru a obține cheia publică: Citiți certificatul utilizând middleware-ul STSAFE-A1xx prin zona 110 a STSAFE-A0. Analizați certificatul utilizând parserul bibliotecii criptografice. Citiți certificatul CA (disponibil prin cod). Analizați certificatul CA utilizând analizatorul bibliotecii criptografice. Verificați valabilitatea certificatului folosind certificatul CA prin biblioteca criptografică. Obțineți cheia publică din certificatul STSAFE-A110 X.509. 2. Generați și verificați semnătura peste un număr de provocare: Generați un număr de provocare (număr aleatoriu). Hash provocarea. Preluați o semnătură peste provocarea hashing folosind slotul 110 al cheii private al STSAFE-A0 prin
middleware STSAFE-A1xx. Analizați semnătura generată folosind biblioteca criptografică. Verificați semnătura generată folosind cheia publică a STSAFE-A110 prin biblioteca criptografică. Când acest lucru este valid, gazda știe că perifericul sau IoT este autentic.
Împerechere
Acest cod example stabilește o împerechere între un dispozitiv STSAFE-A110 și MCU la care este conectat. Împerecherea permite ca schimburile dintre dispozitiv și MCU să fie autentificate (adică semnate și verificate). Dispozitivul STSAFE-A110 devine utilizabil numai în combinație cu MCU cu care este asociat. Împerecherea constă în MCU gazdă care trimite o cheie MAC gazdă și o cheie de criptare gazdă către STSAFE-A110. Ambele chei sunt stocate pe NVM-ul protejat al STSAFE-A110 și ar trebui să fie stocate în memoria flash a dispozitivului STM32. Implicit, în acest example, MCU gazdă trimite chei bine-cunoscute către STSAFE-A110 (vezi fluxul de comandă de mai jos) care sunt foarte recomandate pentru utilizare în scopuri demonstrative. Codul permite, de asemenea, generarea de chei aleatorii. Mai mult, codul exampfișierul generează o cheie de plic local când slotul corespunzător nu este deja populat în STSAFE-A110. Când slotul pentru plic local este ocupat, dispozitivul STSAFE-A110 permite MCU gazdă să înfășoare/desface un plic local pentru a stoca în siguranță o cheie pe partea MCU gazdă. Codul de asociere exampchiul trebuie să fie executat cu succes înainte de a executa tot următorul cod de examples.
Fluxul de comandă
1. Generați cheia de plic local în STSAFE-A110 utilizând middleware-ul STSAFE-A1xx. În mod implicit, această comandă este activată. Fiți conștienți de faptul că anularea comentării următoarelor afirmații definește în asociere.c file dezactivează generarea locală a cheii de plic: /* #define _FORCE_DEFAULT_FLASH_ */
Această operațiune are loc numai dacă slotul cheii pentru plicul local al STSAFE-A110 nu este deja ocupat.
UM2646 – Rev 4
pagina 14/23
UM2646
Software demonstrativ
2. Definiți două numere pe 128 de biți pentru a le utiliza ca cheie MAC gazdă și cheie de cifră gazdă. În mod implicit, sunt folosite chei cunoscute de aur. Au următoarele valori: 0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xAA,0xBB,0xCC,0xDD,0xEE,0xFF / * Cheie MAC gazdă */ 0x11,0,x11,0, 22,0x22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88 / * Cheie de cifrare a gazdei */
Pentru a activa generarea aleatorie a cheilor, adăugați următoarea declarație define la împerechere.c file: #definiți USE_HOST_KEYS_SET_BY_PAIRING_APP 1
3. Stocați cheia MAC a gazdei și cheia de cifrare a gazdei în slotul respectiv din STSAFE-A110. 4. Stocați cheia MAC a gazdei și cheia de cifrare a gazdei în memoria flash a STM32.
4.3
Stabilirea cheii (stabilirea secretului)
Această demonstrație ilustrează cazul în care dispozitivul STSAFE-A110 este montat pe un dispozitiv (cum ar fi un dispozitiv IoT), care comunică cu un server la distanță și trebuie să stabilească un canal securizat pentru a face schimb de date cu acesta.
În acest exampDispozitivul STM32 joacă atât rolul serverului la distanță (gazdă la distanță), cât și al gazdei locale care este conectată la dispozitivul STSAFE-A110.
Scopul acestui caz de utilizare este de a arăta cum se stabilește un secret partajat între gazda locală și serverul la distanță folosind schema Diffie-Hellman cu curbă eliptică cu o cheie statică (ECDH) sau efemeră (ECDHE) în STSAFE-A110.
Secretul partajat ar trebui să fie derivat în continuare la una sau mai multe chei de lucru (nu sunt ilustrate aici). Aceste taste de lucru pot fi apoi utilizate în protocoale de comunicație precum TLS, de exampfișier pentru protejarea confidențialității, integrității și autenticității datelor care sunt schimbate între gazda locală și serverul la distanță.
Fluxul de comandă
Figura 7. Fluxul de comandă de stabilire a cheilor ilustrează fluxul de comandă.
·
Cheile private și publice ale gazdei de la distanță sunt codificate în cod, example.
·
Gazda locală trimite comanda StSafeA_GenerateKeyPair către STSAFE-A110 pentru a genera
perechea de chei pe slotul său efemer (slot 0xFF).
·
STSAFE-A110 trimite înapoi cheia publică (care corespunde slotului 0xFF) către STM32 (reprezentând
gazda la distanță).
·
STM32 calculează secretul gazdei de la distanță (folosind cheia publică a dispozitivului STSAFE și telecomanda
cheia privată a gazdei).
·
STM32 trimite cheia publică a gazdei de la distanță către STSAFE-A110 și îi cere STSAFE-A110 să
calculați secretul gazdei locale folosind API-ul StSafeA_EstablishKey.
·
STSAFE-A110 trimite înapoi secretul gazdei locale către STM32.
·
STM32 compară cele două secrete și tipărește rezultatul. Dacă secretele sunt aceleași, secretul
stabilirea are succes.
UM2646 – Rev 4
pagina 15/23
Figura 7. Fluxul comenzilor de stabilire a cheilor
UM2646
Software demonstrativ
Gazda la distanta
STM32
Gazdă locală
STSAFE
Calcularea secretului gazdei la distanță (folosind cheia privată a gazdei la distanță și cheia publică a gazdei locale (STSAFE slot 0xFF))
Secretul gazdei de la distanță
Generați pereche de chei
Generați perechea de chei pe slotul 0xFF
Cheia publică STSAFE generată pe
S-a generat cheia publică STSAFE
slot 0xFF
Cheia publică a gazdei de la distanță
STM32 compară secretul gazdei la distanță cu cel
secretul gazdei locale și tipărește rezultatul
Stabiliți cheia (cheia publică a gazdei la distanță)
Se trimite secretul gazdei locale
Calcularea secretului gazdei locale (folosind cheia privată a gazdei locale (slot STSAFE 0xFF) și cheia publică a gazdei la distanță)
Secretul gazdei locale
4.4
Nota:
4.5
Înfășurați/desfaceți plicurile locale
Această demonstrație ilustrează cazul în care STSAFE-A110 împachetează/desface plicul local pentru a stoca în siguranță un secret în orice memorie nevolatilă (NVM). Cheile de criptare/decriptare pot fi stocate în siguranță în acest mod în memorie suplimentară sau în memoria de date utilizator a STSAFEA110. Mecanismul de împachetare este folosit pentru a proteja un text secret sau simplu. Ieșirea împachetarii este un plic criptat cu un algoritm de împachetare a cheii AES și care conține cheia sau textul simplu care trebuie protejat.
Fluxul de comandă
Gazdele locale și la distanță sunt același dispozitiv aici. 1. Generați date aleatorii asimilate unui plic local. 2. Înveliți plicul local folosind middleware-ul STSAFE-A110. 3. Păstrați plicul împachetat. 4. Desfaceți plicul împachetat folosind middleware-ul STSAFE-A110. 5. Comparați plicul neîmpachetat cu plicul local inițial. Ar trebui să fie egali.
Generarea perechii de chei
Această demonstrație ilustrează fluxul de comandă în care dispozitivul STSAFE-A110 este montat pe o gazdă locală. O gazdă la distanță cere acestei gazde locale să genereze o pereche de chei (o cheie privată și o cheie publică) pe slotul 1 și apoi să semneze o provocare (număr aleatoriu) cu cheia privată generată.
Gazda la distanță este apoi capabilă să verifice semnătura cu cheia publică generată.
Această demonstrație este similară cu demonstrația de autentificare, cu două diferențe:
·
Perechea de chei din demonstrația de autentificare este deja generată (pe slotul 0), în timp ce, în acest example,
generăm perechea de chei pe slotul 1. Dispozitivul STSAFE-A110 poate genera și perechea de chei pe slotul 0xFF,
dar numai în scopuri de stabilire cheie.
·
Cheia publică din demonstrația de autentificare este extrasă din certificatul din zona 0. În aceasta
example, cheia publică este trimisă înapoi cu răspunsul STSAFE-A110 la
Comanda StSafeA_GenerateKeyPair.
UM2646 – Rev 4
pagina 16/23
UM2646
Software demonstrativ
Nota:
Fluxul de comandă
În scopuri demonstrative, gazdele locale și la distanță sunt același dispozitiv aici. 1. Gazda trimite comanda StSafeA_GenerateKeyPair la STSAFE-A110, care trimite înapoi
cheia publică a MCU gazdă. 2. Gazda generează o provocare (număr aleator de 48 de octeți) folosind API-ul StSafeA_GenerateRandom. The
STSAFE-A110 trimite înapoi numărul aleator generat. 3. Gazda calculează hash-ul numărului generat utilizând biblioteca criptografică. 4. Gazda solicită STSAFE-A110 să genereze o semnătură a hashului calculat folosind
API-ul StSafeA_GenerateSignature. STSAFE-A110 trimite înapoi semnătura generată.
5. Gazda verifică semnătura generată cu cheia publică trimisă de STSAFE-A110 la pasul 1. 6. Rezultatul verificării semnăturii este tipărit.
UM2646 – Rev 4
pagina 17/23
UM2646
Istoricul reviziilor
Tabelul 6. Istoricul revizuirilor documentului
Data
Revizuire
Schimbări
09-dec-2019
1
Lansare inițială.
13-ian-2020
2
Secțiunea de informații despre licență a fost eliminată.
Lista actualizată de caracteristici ilustrate prin coduri demonstrative în Introducere. Tabelul Lista de acronime a fost eliminat și glosarul inserat la sfârșit.
Modificare mică a textului și culori actualizate în Figura 1. Arhitectura STSAFE-A1xx.
Actualizată Figura 2. Diagrama bloc al aplicației STSAFE-A1xx.
Actualizat Tabelul 1. Modulul CORE exportat API.
07-feb-2022
3
S-au eliminat StSafeA_InitHASH și StSafeA_ComputeHASH din Tabelul 4. API-urile exportate de modulul CRYPTO.
Secțiunea actualizată 3.8.2: Pași de configurare.
Secțiunea 4.2 actualizată: Asociere.
Secțiunea 4.3 actualizată: Stabilirea cheii (stabilirea secretului).
S-a adăugat Secțiunea 4.5: Generarea perechilor de chei.
Mici modificări ale textului.
Pachetul software STSAFE-A1xx adăugat este integrat în X-CUBE-SAFEA1 v1.2.1 ca middleware
și este integrat ca BSP pentru pachetul de software pentru STM32CubeMX. și șabloanele de mai sus
07-mar-2024
4
sunt prezente doar în folderul BSP al pachetului X-CUBE-SAFEA1..
Secțiunea actualizată 3.1: Descriere generală, Secțiunea 3.2: Arhitectură și Secțiunea 3.7: Structura folderelor.
UM2646 – Rev 4
pagina 18/23
Glosar
AES Standard avansat de criptare ANSI American National Standards Institute API Interfață de programare a aplicației BSP Pachet de suport pentru bord CA Autoritate de certificare CC Common Criteria C-MAC Cod de autentificare a mesajului de comandă ECC Criptografie cu curbă eliptică ECDH Curbă eliptică DiffieHellman ECDHE Curbă eliptică DiffieHellman – efemer EWARM IAR® pentru Embedded Workbench Arm® HAL Strat de abstractizare hardware I/O Intrare/ieșire IAR Systems® Lider mondial în instrumente și servicii software pentru dezvoltarea sistemelor încorporate. IDE Mediu de dezvoltare integrat. O aplicație software care oferă facilități complete programatorilor de calculatoare pentru dezvoltarea de software. IoT Internetul lucrurilor I²C Circuitul inter-integrat (IIC) LL Drivere de nivel scăzut Cod de autentificare a mesajelor MAC MCU Unitate de microcontroler MDK-ARM Kit de dezvoltare microcontroler Keil® pentru Arm® MPU Unitate de protecție a memoriei NVM Memorie nevolatilă
OS Sistem de operare SE Element securizat SHA Algoritm Secure Hash SLA Acord de licență software ST STMicroelectronics TLS Securitate strat de transport USB Magistrală serială universală
UM2646
Glosar
UM2646 – Rev 4
pagina 19/23
UM2646
Cuprins
Cuprins
1 Informații generale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 2 Element de siguranță STSAFE-A110. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 Descrierea middleware STSAFE-A1xx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.1 Descriere generală. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.2 Arhitectură . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.3 Modulul CORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.4 Modulul SERVICE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.5 Modul CRYPTO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.6 Șabloane. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.7 Structura folderelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.8 Cum să: integrare și configurare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.8.1 Etape de integrare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.8.2 Etape de configurare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4 Software demonstrativ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14 4.1 Autentificare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.2 Împerechere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.3 Stabilirea cheii (stabilirea secretului) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.4 Înfășurarea/desfacerea plicurilor locale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.5 Generarea perechii de chei. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Istoricul reviziilor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18 Lista de tabele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21 Lista figurilor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22
UM2646 – Rev 4
pagina 20/23
UM2646
Lista de tabele
Lista de tabele
Tabelul 1. Tabelul 2. Tabelul 3. Tabelul 4. Tabelul 5. Tabelul 6.
Modulul CORE exportat API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 API-uri pentru modulul STSAFE-A110 CORE exportate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 API-uri exportate pentru modulul SERVICE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 API-uri exportate pentru modulul CRYPTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 șabloane. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Istoricul revizuirilor documentului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
UM2646 – Rev 4
pagina 21/23
UM2646
Lista figurilor
Lista figurilor
Figura 1. Figura 2. Figura 3. Figura 4. Figura 5. Figura 6. Figura 7.
Arhitectura STSAFE-A1xx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Schema bloc al aplicației STSAFE-A1xx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Arhitectura modulului 6 CORE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Arhitectura modulului SERVICE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Arhitectura modulului CRYPTO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Proiect file structura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Fluxul comenzilor de stabilire a cheilor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
UM2646 – Rev 4
pagina 22/23
UM2646
NOTIFICARE IMPORTANT CITIȚI CU ATENȚIE STMicroelectronics NV și filialele sale (“ST”) își rezervă dreptul de a face modificări, corecții, îmbunătățiri, modificări și îmbunătățiri produselor ST și/sau acestui document în orice moment, fără notificare. Cumpărătorii trebuie să obțină cele mai recente informații relevante despre produsele ST înainte de a plasa comenzi. Produsele ST sunt vândute în conformitate cu termenii și condițiile de vânzare ale ST în vigoare la momentul confirmării comenzii. Cumpărătorii sunt singurii responsabili pentru alegerea, selecția și utilizarea produselor ST și ST nu își asumă nicio responsabilitate pentru asistența la aplicare sau proiectarea produselor cumpărătorilor. Nicio licență, expresă sau implicită, pentru niciun drept de proprietate intelectuală nu este acordată de către ST prin prezenta. Revânzarea produselor ST cu prevederi diferite de informațiile prezentate aici va anula orice garanție acordată de ST pentru un astfel de produs. ST și sigla ST sunt mărci comerciale ale ST. Pentru informații suplimentare despre mărcile comerciale ST, consultați www.st.com/trademarks. Toate celelalte nume de produse sau servicii sunt proprietatea proprietarilor respectivi. Informațiile din acest document înlocuiesc și înlocuiesc informațiile furnizate anterior în orice versiuni anterioare ale acestui document.
© 2024 STMicroelectronics Toate drepturile rezervate
UM2646 – Rev 4
pagina 23/23
Documente/Resurse
![]() |
Pachetul software STMicroelectronics X-CUBE-SAFEA1 [pdfGhid de utilizare STSAFE-A100, STSAFE-A110, Pachet software X-CUBE-SAFEA1, X-CUBE-SAFEA1, Pachet software, Pachet |