Securitate pentru dispozitivele din rețea

by donpedro

Creată pe principiul izolării hardware, tehnologia ARM TrustZone oferă o filozofie de securitate bazată pe CPU, într-o abordare de tip SoC (System on chip – sistem pe cip), care cuprinde o varietate de sisteme. Acest lucru permite crearea de noduri terminale sigure în IoT și a unui nucleu de încredere al dispozitivului. Arhitectura ARMv8-M extinde tehnologia TrustZone la sistemele bazate pe Cortex-M. 

Tot mai multe obiecte se conectează unul la altul, fără fir, prin internet. Acest lucru a sporit necesitatea unor caracteristici de securitate fiabile în nodurile IoT, în special pentru produsele de larg consum, dispozitivele industriale și electrocasnicele din locuințe, deoarece astfel de conexiuni la internet oferă un vector de atac în viziunea hackerilor – de la atacurile DDoS (Distributed Denial of Service − blocarea distribuită a serviciului) la accesul neautorizat la rețelele interne.
Se acordă prioritate măsurilor care asigură securitatea anti-tamper (detecția acțiunilor externe de pătrundere forțată în sistem) în hardware-ul integrat în sistem − și anume, dispozitivelor integrate în rețea. În primul rând, sistemele, la nivel fizic, ar trebui să aibă procese de inițializare securizate, deoarece hackerii vizează frecvent mecanismele de repornire ale sistemelor.

Pentru a combate această amenințare, sunt utilizate o varietate de soluții software care folosesc mecanisme de secu­ritate hardware. Una dintre aceste soluții este tehnologia de la ARM − TrustZone. Ca orice altă tehnologie disponibilă în prezent, nici măcar TrustZone nu este capabilă să ofere o apărare perfectă și perpetuă împotriva atacurilor din exterior, dar reușește să îngreuneze substanțial penetrarea în sistem.

Caracteristici de securitate fiabile la nivel de cip
Elementul central al abordării TrustZone are la bază două domenii izolate la nivel hardware: “o zonă securizată” și “o zonă nesecurizată”. Acestea pot fi implementate simultan pe un singur nucleu. Astfel, software-ul securizat este împiedicat să acceseze direct resurse nesigure. Izolarea celor două zone dintr-un SoC cuprinde nu numai procesorul, ci și memoria, activitățile pe magistrală, întreruperile și dispozitivele periferice.
Aceasta este fundația pe care tehnologia TrustZone stabilește o bază pentru securitate la nivelul întregului sistem și creează o platformă de încredere pe care orice parte a sistemului poate fi percepută în mod flexibil ca parte a zonei sigure. Crearea unui subsistem de securitate permite protejarea bunurilor împotriva ata­curilor bazate pe software și hardware.
TrustZone poate securiza atât o bibliotecă software, cât și un întreg sistem de operare pentru a fi executate în zona sigură. Software-ul vulne­rabil nu este disponibil atunci când este accesată pagina securizată și resursele localizate în ea.

Tehnologia TrustZone în Microcontrolerele Cortex-M
Arhitectura ARMv8-M extinde tehnologia TrustZone la sistemele bazate pe Cortex-M și asigură o protecție robustă cu costuri mai mici decât cu un circuit integrat dedicat. Ea reduce substanțial costurile și volumul de muncă necesar dezvoltării securității bazate pe procesor, asigurând astfel că securitatea hardware-ului nu mai este un factor de cost relevant.
Procesoarele Cortex-M și Cortex-A au în principiu aceleași concepte de securitate, dar au, de asemenea, și câteva diferențe cheie. Avantajul esențial al procesorului Cortex-M este că schimbările de context între zonele sigure și cele nesecurizate sunt efectuate la nivel hardware, ceea ce permite comutarea mai rapidă și eficiență energetică mai mare. Spre deosebire de Cortex-A, nu este necesar absolut niciun software de monitorizare a securității. Cu toate acestea, nivelul de securitate atins în procesoarele Cortex-A este mult mai mare.
TrustZone se bazează pe principiul acordării mini­mului absolut de permisiuni necesare. Aceasta înseamnă că modulelor de sistem, cum ar fi driverele și aplicațiile, le este permis accesul la o resursă numai atunci când este necesar. Software-ul este executat în general atât în medii sigure, cât și în cele nesigure. Conținutul este transmis între cele două medii printr-o rutină denumită “logica nucleului” (la procesoarele Cortex-M) sau “monitorizare sigură” (la procesoarele Cortex-A).
TrustZone pentru ARMv8-M este o tehnologie ideală pentru arhitectura unei platforme de secu­ritate (PSA − Platform Security Architecture), deoarece locația alocată în hardware pentru zona de cod normal și zona TCB (Trusted Computing Base), acolo unde există sistemul de ope­rare și mecanismele care oferă securitate, este izolată. Tehnologia oferă o bază flexibilă, din care proiectanții de sisteme SoC pot selecta anumite funcții din mediul securizat, permițând dezvoltarea de soluții eficiente din punct de vedere economic și cu consum redus de energie. TrustZone include proceduri care garantează un hardware sigur pentru stocarea securizată bazată pe hardware, generatoare de numere aleatorii (RNG − Random Number Generators) și un ceas de referință pentru configurarea de funcții de temporizare securizate.
Microcontrolerul cu consum redus de putere Cortex-M23 este cel mai mic și totodată cel mai puternic microcontroler din această categorie, cu tehnologia TrustZone implementată.
Seria Cortex-M33 este optimizată în ceea ce privește costul și consumul de putere.
Seria Cortex-M33 este proiectată pentru aplicații de semnal mixt, în special pentru cele care necesită securitate eficientă și − dacă este cazul – un control digital al semnalului.

Reguli standardizate pentru dezvoltarea de software
Cu toate acestea, tehnologia TrustZone este utilizată la potențialul său maxim numai dacă sunt respectate regulile recunoscute de securitate a datelor în timpul procesului de dezvoltare a software-ului. Aici intră în discuție standardul C CERT, care specifică “bune practici pentru scrierea codului”, având scopul de a se asigura că:

sunt respectate convențiile privind ciclul de viață al variabilelor (locale, globale, auto etc.)
instrucțiunile preprocesorului sunt lipsite de ambiguitate (de exemplu, folosind construcții de securitate –”include guard”)
se respectă limitele valorice pentru variabile
limitele de memorie (de exemplu, pentru matrice) sunt monitorizate și respectate.

Acest lucru este implementat prin integrarea unei unelte în mediul de dezvoltare, care verifică respectarea regulilor, în timpul dezvoltării software, de fiecare dată când codul este compilat. Implementările retroactive în codul existent pot fi complicate, la fel ca la MISRA-C (standardul de programare C din industria auto), deoarece încălcările standardului necesită reproiectarea și rescrierea codului pentru porțiuni mari ale programului.
Atât în C CERT, cât și în MISRA-C, codul este supus unei analize statice și este verificat cu anu­mite reguli de codare. Diferența dintre cele două constă în faptul că regulile MISRA-C servesc la asigurarea securității funcționale a dispozitivului, în timp ce C CERT asigură protecția și securitatea datelor.
Familia STM32L5 este succesorul familiei STM32L4+ Cortex-M și este prima familie de produse ST care se bazează pe arhitectura ARMv8-M cu TrustZone. Acest lucru facilitează dezvoltatorilor să creeze dispozitive de încredere bazate pe framework-ul PSA cu procesor Cortex-M33, tehnologie TrustZone și pe caracteristicile îmbunătățite de securitate ale SoC. Cu gama sa largă de periferice și interfețe digitale și analogice integrate, printre care CAN FD, USB Tip-C și USB Power Delivery, microcontrolerele STM32L5 oferă o platformă ideală pentru produse precum senzori industriali, controlere, dispozitive de automatizare pentru casă (precum casele inteligente), dispozitive de măsurare inteligente, brățări de fitness, ceasuri inteligente, aplicații din ingineria medicală, cum ar fi pompe și dispozitive de măsurare și multe altele.

Trecerea la procesorul Cortex-M33 și adăugarea unei memorii cache pentru memoria de program internă și externă, îmbunătățesc performanța STM32L5 în comparație cu predecesorul său. O alimentare optimizată, reduce consumul de curent la 33nA în modul de oprire și oferă eficiență energetică maximă pentru perioade lungi de funcționare.
STM32L5 satisface, de asemenea, nevoia de mai multă securitate, datorită caracteristicilor suplimentare de siguranță, care de obicei nu sunt prezente pe microcontrolere, cum ar fi un coprocesor criptografic și criptarea mediului de stocare extern. Alte îmbunătățiri includ izolarea software-ului, inițializare securizată și o zonă de stocare special securizată pentru cheile criptografice.
Mai jos sunt prezentate explicații specifice cu privire la diferite exemple de periferice (unități funcționale integrate) și implementarea lor în conexiune cu conceptul de securitate TrustZone în seria de microcontrolere.

Interfețe de magistrală
Unitățile cu atribute de securitate configurabile (SAUs − Configurable Secure Attribute Units) suportă până la opt game de memorie, opțional atât game cu protecție de securitate, cât și fără protecție de securitate. Procesorul Cortex-M33 suportă interfețe de magistrală Sistem AHB (S-AHB) și Cod AHB (C-AHB). S-AHB este utilizat pentru fiecare instrucțiune apelată și fiecare acces la date în memoria SRAM, precum și pentru instrucțiunile apelate și accesul la perifericele SoC, la memoria externă RAM și hardware-ul extern. C-AHB este utilizat cu fiecare apelare de instrucțiune și acces la date în plaja de cod a memoriei.

Ceas de timp real
TrustZone oferă un ceas de timp real complet securizabil (RTC) pentru temporizatorul de activare Alarm A / Alarm B, precum și înregistrări de timp particularizabile pentru configurații sigu­re/nesigure.

Privire de ansamblu asupra controlerului global TrustZone
Controlerul global TrustZone (GTZC − Global TrustZone Controller) este compus din trei sub-blocuri:
Controlerul de securitate TrustZone (TZSC) definește starea de siguranță, privilegiată a perifericelor master/slave și determină dimensiunea zonei nesigure în controlerul MPCWM (Watermark Memory Peripheral Controller). Acesta notifică unitățile periferice integrate selectate în conexiune cu utilizarea partajată a RCC și logicii I/O privind starea de securitate a “perifericelor securizabile” precum RCC și GPIO.
Controlerul de protecție a memoriei bazate pe blocuri (MPCBB − block-based memory protection controller) controlează modurile de stare sigură al tuturor blocurilor (pagini de 256-byte) memoriei SRAM asociate.
Controlerul de acces TrustZone pentru evenimente de acces ilegal (TZIC) colectează toate evenimentele de acces ilegal din sistem și generează o întrerupere de securitate către NVIC (Nested Vectored Interrupt Controller). Utilizând sub-blocurile din TrustZone, atributele privilegiate sunt configurate prin întregul sistem.

Cele mai importante caracteristici ale GTZC sunt:
Trei interfețe independente AHB pe 32-biți pentru TZSC, MPCBB și TZIC
MPCBB și TZIC sunt accesibile numai cu tranzacții sigure
Zonele private și non-private din TZSC sunt suportate în termeni de acces sigur / nesigur.

Suport TrustZone în registrul de tamper și backup (TAMP)
Pentru configurații tamper sigure / nesigure, TAMP oferă o configurație de registru de backup în câteva zone configurabile de memorie, după cum urmează: o zonă sigură citire-scriere, o zonă sigură scriere-citire, o zonă nesigură citire-scriere și un numărător monotonic.

TrustZone în memoria flash integrată
TrustZone în memoria flash embedded se bazează pe 512kByte pentru stocare programe și date, permițând stări de operare ”single / dual bank” și mod de ”citire în timpul scrierii” (RWW − read-while-write) în modul dual bank.
Pentru memoria flash sunt disponibile patru nivele de securitate.
Nivelul 0.5 este disponibil numai când este activat TrustZone. Toate operațiile de citire/scriere de la și către zonele de memorie flash nesigure sunt posibile cu condiția ca “Trust-Zone” să fie activată și accesul numai citire să nu fie activat. Accesul de depanare la zona sigură nu este posibil, fiind însă posibilă accesarea unor zone nesecurizate.
Nivel 0: Fără protecție la citire
Nivel 1: Protecție la citirea memoriei: Memoria flash nu poate fi citită sau scrisă în timp ce sunt conectate funcțiile de depanare sau când sunt activate “Boot in RAM” sau ”Bootloader” Dacă TrustZone este activată, este posibilă ”depanarea nesigură”, dar nu este posibilă inițializarea în SRAM.
Nivel 2: Protecție la scriere IC

Mod de securitate TrustZone
Dacă este activat modul “TrustZone Security”, întreaga memorie flash este securizată după reinițializare, fiind disponibile următoarele măsuri de securitate:
Zonă de memorie flash sigură, ne-volatilă, cu verificare integrată (watermark-proofed): Zona sigură este accesată aici numai în ”secure mode”. În termeni de adresabilitate, un banc de memorie poate fi adresat în modul ”single bank” cu salturi de 1 kByte sau întregul banc de memorie este divizat în blocuri de 4 kByte.
Protecție la citirea codului patentat (PCROP − Proprietary Code Read-Out Protection): Aceasta este o parte a zonei flash sigure, care oferă protecție la citirea neautorizată și la operații de scriere de către terți. Zona protejată este gândită ca zonă de tip “numai execuție” și poate fi adresată numai de procesorul STM32 prin codul de instrucțiuni. Nu este posibilă nicio altă metodă de acces (DMA [acces direct la memorie], depanare, citire, scriere sau ștergere date CPU). În modul ”single bank”, pot fi selectate două zone, ambele cu zone securizate. În modul ”dual bank”, o zonă per banc de memorie poate fi selectată de-a lungul zonei securizate.
“Zona ascunsă, securizată, de protecție” este o parte a zonei sigure flash, putând fi protejată pentru a preveni operații de citire, operații de scriere sau acces la date în această zonă.
Într-o zonă flash volatilă, securizată, bazată pe blocuri, fiecare pagină poate fi programată în timp real ca sigură sau nesigură.

Activare și permisie acces
Arhitectura de securitate este bazată pe tehnologia TrustZone de la ARM, cu extensia principală ARMv8-M.
Securitatea TrustZone este activată prin bitul TZEN (Trust Zone Enable) în registrul FLASH_OPTR. În acest caz, unitatea de atribuire securitate (SAU − Security Attribution Unit) și unitatea de implementare a atribuțiilor definite (IDAU − Implementation Defined Attribution Unit) definesc permi- siunile relative la starea de sigur și nesigur.

SAU este o unitate de atribuire relativă la securitate și este utilizată pentru managementul atributelor de securitate hardware.

IDAU este o unitate de atribuire relativă la permisiunile de acces. Ea acoperă o partiție de memorie primară pentru atribute de nesecurizat / accesibilitate nesecurizată, în care programul sau datele pot fi stocate. Acestea pot fi apoi combinate cu rezultatele atribuirii de securitate SAU, selectându-se nivelul de securitate superior. IDAU dublează memoria pentru flash, sistem SRAM și periferice pentru a permite stări de siguranță și nesiguranță. Acest proces nu este realizat totuși pentru stocare externă.

Utilizând mecanismele specificate aici, TrustZone afectează și alte zone din microcontroler în păstrarea principiului soluției hardware.
Un sumar extins și concis ale informațiilor de securitate (tamper, atacuri) în microcontrolere, este oferit în paginile “Security Aspects” de la Rutronik (pag. 74/75): https://www.rutronik.com/security-aspects

 

 

Autor: Dipl.-Ing. Martin Motz, Manager Produse Digitale
Rutronik | https://www.rutronik.com

 

S-ar putea să vă placă și