1. februarja, 2020

Kako serija STM32L5 pomaga obvladovati izzive IoT

Revija logo rutronik - Kako serija STM32L5 pomaga obvladovati izzive IoTRutronik GmbH
Avtor: Dipl. Ing. Martin Motz
2020_282_31

Tehnologija ARM TrustZone, ki temelji na ločevanju strojnih območij, je varnostna filozofija na ravni CPE s celovitim sistemom na integriranem vezju (SoC). Tako je mogoče realizirati varne terminale IoT in zaupanja vredna jedra naprav. Arhitektura ARMv8-M razširja tehnologijo TrustZone na sisteme, ki temeljijo na arhitekturi Cortex-M.

SE280 24 02 200x300 - Kako serija STM32L5 pomaga obvladovati izzive IoTVarnost za naprave v omrežjih
Vedno več stvari je medsebojno brezžično povezanih po internetu. Zaradi tega je vedno večje povpraševanje po zanesljivih varnostnih funkcijah vozlišč IoT, zlasti na področju elektronike za široko potrošnjo, industrijo in belo tehniko. Takšne internetne povezave so namreč dostopna točka za napade hekerjev – od napadov DDoS (Distributed Denial of Service) do nepooblaščenega dostopa do notranjih omrežij.

Prednost imajo ukrepi, ki povečujejo varnost pred posegi v sistemsko integrirano strojno opremo – torej v omrežja povezane naprave z vgrajenimi krmilniki. Pri tem je treba sisteme najprej zaščititi na fizični ravni že pri zagonu, saj hekerji pogosto ciljajo na ponovni zagon sistemov. Za spopad s to grožnjo se uporabljajo različne programske rešitve, ki uporabljajo strojne varnostne mehanizme. Ena je tehnologija TrustZone iz podjetja ARM. Tudi s tehnologijo TrustZone (kot pri vseh trenutno razpoložljivih tehnologijah) naprav ni mogoče trajno v celoti zaščititi pred zunanjimi napadi, vendar pa poseganje v sistem bistveno oteži.

Zanesljive varnostne funkcije na ravni integriranega vezja
Središče pristopa TrustZone sta dve strojno ločeni območji: zavarovano in nezavarovano (angl. »secure world« ter »non-secure world«). Hkrati se lahko izvajata na istem jedru. Nezavarovana programska oprema tako ne more neposredno dostopati do zavarovanih virov. Ločitev teh območij znotraj sistema na integriranem vezju (SoC) ni izvedena le na procesorju, ampak tudi pomnilniku, vodilu, prekinitvah in perifernih napravah.

Tehnologija TrustZone tako postavlja temelj za sistemsko varnost in vzpostavitev zaupanja vredne platforme, kjer je mogoče vsak del sistema prilagodljivo zasnovati kot del zavarovanega območja. Z vzpostavitvijo varnostnega podsistema je mogoče sredstva zaščititi pred programskimi in strojnimi napadi.

282 31 01 300x213 - Kako serija STM32L5 pomaga obvladovati izzive IoTTehnologija TrustZone lahko za izvajanje v varnem območju zavaruje le programsko knjižnico ali pa kar celoten operacijski sistem. Nezavarovana programska oprema pri dostopu do varne strani (angl. »secure page«) in tamkajšnjih virov ni dostopna.

Tehnologija TrustZone in mikrokrmilniki Cortex-M
Arhitektura ARMv8-M razširja tehnologijo TrustZone na sisteme, ki temeljijo na arhitekturi Cortex-M in zagotavljajo robustno zaščito za nižjo ceno kot pri namenskih integriranih vezjih.

Z njo je mogoče bistveno zmanjšati stroške in delo pri razvoju, tako da varnostna strojna oprema ni več stroškovno relevanten faktor.

Procesorji Cortex-M in Cortex-A imajo načeloma enake varnostne koncepte, vendar s pomembnimi razlikami: Odločilna prednost arhitekture Cortex-M je, da se preklop konteksta med zavarovanim in nezavarovanim območjem izvaja strojno. To omogoča hitrejše prehode in večjo energetsko učinkovitost. Za razliko od arhitekture Cortex-A ni potrebna zavarovana nadzorna programska oprema. Vendar pa je zato s procesorji Cortex-A mogoče doseči bistveno višjo raven varnosti.
Tehnologija TrustZone temelji na načelu najmanjših potrebnih pooblastil. To pomeni, da sistemske enote, kot so gonilniki in aplikacije, dobijo dostop do določenega vira le, ko je to potrebno. Programska oprema se na splošno izvaja v zavarovanem in tudi v nezavarovanem okolju. Prenos vsebin med tema območjema poteka s podprogramom, ki ga imenujemo »Core Logic« (procesorji Cortex-M) ali zavarovani nadzornik (procesorji Cortex-A).

TrustZone za ARMv8-M je idealna tehnologija za varnostno arhitekturo platforme (angl. »Platform Security Architecture« – PSA), saj je strojna oprema med običajno kodo in zaupanja vredno osnovno kodo ločena. Predstavlja prilagodljivo podlago, kjer lahko načrtovalec izbere določene funkcije znotraj varnostnega okolja in tako razvije stroškovno ter energetsko učinkovite rešitve. Tehnologija TrustZone vsebuje postopke za zagotavljanje zaupanja vredne strojne opreme za strojno podprte zavarovane pomnilnike, generatorje naključnih števil (angl. »Random Number Generators« – RNG) in referenčni vir za zavarovano zagotavljanje točnega časa.

Mikrokrmilnik z nizko porabo Cortex-M23 je najmanjši in v tej kategoriji hkrati tudi najmočnejši mikrokrmilnik z izvedeno tehnologijo TrustZone. Serija Cortex-M33 je optimizirana za nizko ceno in porabo ter prilagojena načinom uporabe z mešanimi signali, zlasti tistim, kjer sta potrebna učinkovita varnost in morda še digitalna obdelava signalov.

Standardizirana pravila za razvoj programske opreme
Tehnologija TrustZone je seveda učinkovita le, če se priznana pravila za doseganje varnosti podatkov upoštevajo že pri razvoju programske opreme. Tu je pomemben standard C CERT, ki predpisuje »dober slog programiranja« in med drugim pomaga:

  • upoštevati življenjsko dobo spremenljivk (krajevne, globalne, samodejne …),
  • zagotavljati nedvoumna navodila za predprocesor, na primer z varovali za vključitev (angl. »include guard«),
  • upoštevati dovoljeno območje vrednosti spremenljivk,
  • preverjati in upoštevati omejitve pomnilnika (npr. za polja).
  • Izvaja se z vključitvijo orodja v razvojno okolje, ki med nastajanjem programa pri vsakem prevajanju preveri skladnost s pravili. Naknadna izvedba v obstoječi kodi je podobno obsežna kot pri standardu MISRA-C (programskemu standardu C za avtomobilsko industrijo), saj je treba pri obstoječih kršitvah standarda na novo zasnovati in programirati velike dele programa.

Tako pri C CERT kot tudi pri MISRA-C se koda statično analizira in preverja glede na določena pravila programiranja. Razlika je v tem, da pravila MISRA-C zagotavljajo funkcionalno zanesljivost naprav, pravila C CERT pa varovanje in varnost podatkov.

Družina STM32L5 sledi družini STM32L4+ Cortex-M in je prva družina izdelkov ST, ki temelji na arhitekturi ARMv8-M s tehnologijo TrustZone. Razvijalcem olajša razvoj zaupanja vrednih naprav, ki temeljijo na arhitekturi PSA s procesorjem Cortex-M33, tehnologijo TrustZone in izboljšanimi varnostnimi funkcijami sistema SoC. S široko paleto integriranih digitalnih in analognih perifernih naprav ter vmesnikov, kot so CAN FD, USB-C in USB Power Delivery, ponujajo mikrokrmilniki STM32L5 idealno platformo za izdelke, kot so industrijska tipala in krmilniki, naprave za avtomatizacijo doma (pametna hiša), pametni števci, sledilne naprave za fitnes, pametne ure, medicinska tehnologija, kot so črpalke in merilna tehnika, ter številni drugi.

S posodobitvijo na procesor Cortex-M33 in medpomnilnikom za notranji ter zunanji programski pomnilnik ponuja STM32L5 večjo zmogljivost od predhodnika. Optimiziran napajalni sistem zmanjša porabo energije na 33 nA v načinu zaustavitve (angl. »Shutdown«) in zagotavlja najboljšo možno energetsko učinkovitost za dolgotrajno delovanje.

STM32L5 izpolnjuje tudi potrebo po večji varnosti z dodatnimi varnostnimi funkcijami, ki jih običajno ne najdemo na mikrokrmilnikih, kot sta kriptografski soprocesor in šifriranje zunanjih pomnilnikov. Dodatne izboljšave so še izolacija programske opreme, posebej zavarovan zagonski postopek (angl. »secure boot«) in posebej zavarovano pomnilniško območje za kriptografske ključe.

Sledijo konkretna pojasnila za različne primere periferne opreme, tj. integriranih funkcijskih enot, in njihovo izvedbo po konceptu varnosti TrustZone pri tej seriji mikrokrmilnikov.
Vmesniki za vodila
Konfigurabilne enote za določitev varnostnih atributov (angl. »Security Attribution Unit« – SAU) podpirajo do osem območij pomnilnika, ki jih je mogoče določiti kot zavarovana ali nezavarovana. Procesor Cortex-M33 podpira vmesnike vodil System-AHB (S-AHB) in Code-AHB (C-AHB). S-AHB se uporablja za vsak ukaz in vsak podatkovni dostop do preslikanega pomnilnika SRAM (angl. »memory-mapped SRAM«), pa tudi za ukaze ter dostop do periferne opreme sistema SoC, zunanjega pomnilnika RAM in zunanje strojne opreme. C-AHB se uporablja za vsak ukaz in podatkovni dostop do območja kode v pomnilniku.

Ura realnega časa
Tehnologija TrustZone zagotavlja uro realnega časa (angl. »Real-Time Clock« – RTC), ki jo je mogoče v celoti zavarovati, za časovnika za bujenje (angl. »Wake-up-Timer«) A/B in individualno časovno označevanje za zavarovano ali nezavarovano konfiguracijo.

Pregled globalnega krmilnika TrustZone
Globalni krmilnik TrustZone (angl. »Global TrustZone Controller« – GTZC) obsega tri podsklope:

  • Varnostni krmilnik TrustZone (TZSC) določa zavarovano in privilegirano stanje nadrejenih/podrejenih perifernih naprav ter velikost nezavarovanega območja v krmilniku pomnilnika periferne opreme s sledenjem obsega (angl. »Watermark based memory protection controller« – MPCWM). Izbranim integriranim perifernim napravam v okviru skupne uporabe logike za RCC in V/I zagotavlja informacije o stanju varnosti perifernih naprav z možnostjo zavarovanja (angl. »securable peripherals«), kot sta RCC in GPIO.
  • Blokovni krmilnik za zaščito pomnilnika (MPCBB) krmili varne načine stanja vseh blokov (strani s po 256 B) za pripadajoči pomnilnik SRAM.
  • Krmilnik dostopa TrustZone za neveljavne dogodke dostopa (TZIC) zbira vse neveljavne dogodke dostopa v sistemu in proži varno prekinitev za krmilnik za vektorske prekinitve z gnezdenjem (angl. »Nested Vectored Interrupt Controller« – NVIC). Arhitektura TrustZone in privilegirani atributi znotraj celotnega sistema se konfigurirajo s podbloki.

Najpomembnejše značilnosti GTZC so:

  • trije neodvisni 32-bitni vmesniki AHB za TZSC, MPCBB in TZIC,
  • MPCBB in TZIC sta dostopna samo z zavarovanimi transakcijami,
  • glede na zavarovan/nezavarovan dostop je podprto zasebno in nezasebno območje v TZSC.

Podpora za TrustZone v registru za manipulacije in varovanje (TAMP)
Za konfiguracijo, zaščiteno pred manipulacijo/nezavarovano konfiguracijo, ima TAMP varnostno kopijo konfiguracije registrov v več konfigurabilnih pomnilniških območjih: zavarovano območje za zapisovanje in branje, nezavarovano območje za branje ter zapisovanje in monotoni števec.

Tehnologija TrustZone v vgrajenem bliskovnem pomnilniku
Tehnologija TrustZone za bliskovni pomnilnik, integriran v integriranem vezju (angl. »Embedded Flash Memory«), zagotavlja 512 kB za programe in podatke ter omogoča delovanje z enojnim ali dvojnim nizom (angl. »single/dual bank«) oz. način branja med zapisovanjem (angl. »Read-While-Write« – RWW) v načinu z dvojnim nizom.

Za bliskovni pomnilnik so na voljo štiri stopnje zaščite.
Stopnja 0.5 je na voljo samo za vklop tehnologije TrustZone. Tu so mogoči vsi postopki branja/zapisovanja iz oz. v nezavarovano območje bliskovnega pomnilnika, pod pogojem, da je tehnologija TrustZone vključena in ni nastavljena zaščita proti zapisovanju. Razhroščevalni dostop do zavarovanega območja je izključen, še vedno pa je mogoč do nezavarovanih območij.

  • Raven 0: brez zaščite pred branjem
  • Raven 1: Zaščita pomnilnika pred branjem: Bliskovnega pomnilnika ni mogoče brati oz. zapisovati, kadar so povezane funkcije za razhroščevanje oz. sta nastavljena zagon iz pomnilnika RAM (angl. »Boot in RAM«) ali zagonski nalagalnik (angl. »Bootloader«). Če je tehnologija TrustZone vključena, je mogoče nezavarovano razhroščevanje (angl. »non-secure debug«), zagon iz pomnilnika SRAM pa izključen.
  • Raven 2: Zaščita integriranega vezja pred branjem

Način delovanja TrustZone Security
Če je vključena funkcija TrustZone Security, je po ponastavitvi zavarovan celotni bliskovni pomnilnik in so na voljo naslednji zaščitni ukrepi:

Brezizgubno zavarovano območje bliskovnega pomnilnika z vgrajenim preverjanjem (angl. »Watermark proofed«): Tukaj poteka dostop do varnega območja samo v zavarovanem načinu (angl. »secure mode«). Za naslavljanje je mogoče niz pomnilnika naslavljati v načinu enega niza (angl. »Single Bank«) z razdaljo skoka 1 kB ali pa je celotni niz pomnilnika razdeljen na bloke po 4 kB.

Zaščita pred branjem lastniške kode (PCROP): Zavarovano območje bliskovnega pomnilnika omogoča zaščito pred nepooblaščenim branjem in zapisovanjem s strani tretjih oseb. Zavarovano območje se šteje kot območje samo za izvajanje (angl. »execute only«) in ga lahko CPE STM32 uporablja samo z ukazno kodo. Vse druge vrste dostopa (neposredni dostop do pomnilnika (angl. »Direct Memory Access« – DMA), razhroščevanje, branje podatkov s CPE, zapisovanje in brisanje) so izključene. V načinu enega niza (angl. »Single Bank«) je mogoče izbrati dve območji z obema varnostnima območjema. V načinu dvojnega niza (angl. »Dual Bank«) je mogoče z varnostnim območjem izbrati eno območje na niz pomnilnika.

Zavarovano skrito območje (angl. »Secure hide protection area«) je del varnostnega območja bliskovnega pomnilnika, ki ga je mogoče zaščititi, da je preprečen dostop do njega z branjem, zapisovanjem in priklicem podatkov.

V enem blokovnem varnostnem območju izgubnega bliskovnega pomnilnika (angl. »volatile block-based secure Flash area«) je mogoče vsako stran v realnem času programirati kot zavarovano ali nezavarovano.

Vklop in pooblastila za dostop
Varnostna arhitektura temelji na tehnologiji ARM TrustZone z razširitvijo ARMv8-M Main Extension.
Funkcija TrustZone Security se vklopi z bitom možnosti TZEN (omogoči TrustZone, angl. »TrustZone Enable«) v registru FLASH_OPTR. Takrat dodelitvene enote SAU (Security Attribution Unit) in IDAU (Implementation Defined Attribution Unit) določajo pooblastila za dostop za zavarovano ter nezavarovano stanje.

SAU predstavlja enoto za dodelitve za varnost in je namenjena za upravljanje varnostnih atributov strojne opreme. Do osem konfigurabilnih območij SAU je na voljo za dodeljevanje za varnost.

IDAU je enota za dodeljevanje, ki se nanaša na pooblastila za dostop. Obsega prvo particijo pomnilnika za nezavarovane oz. z nezavarovanim priklicem dostopne atribute, kjer je mogoče shraniti kodo ali podatke. To se nato kombinira z rezultati varnostne dodelitve SAU in se izbere višje stanje varnosti. IDAU dvojno zasede pomnilnik za bliskovni pomnilnik, sistemske pomnilnike SRAM in periferno opremo, da zagotovi zavarovano ter nezavarovano stanje. Za zunanji pomnilnik pa se ta postopek ne izvede.

Poleg navedenega učinkuje TrustZone s strojnimi rešitvami tudi na druga območja mikrokrmilnika.

Obsežne informacije o varnosti (manipulacije, napadi) za mikrokrmilnike so pregledno zbrane v beli knjigi Rutronik »Varnostni vidiki« (strani 74/75): www.rutronik.com/security-aspects

Rutronik GmbH,Podružnica v Ljubljani
Motnica 5, 1236 Trzin, Slovenia
rutronik_si@rutronik.com
Tel. +386 1 561 09-80
www.rutronik.com
Tags: