Beágyazott rendszerek biztonságának megvalósítása digitális jelvezérlők és mikrovezérlők használatával

By Stephen Evanczuk

Contributed By DigiKey's North American Editors

A dolgok internetére (IoT, Internet of Things) való áttéréssel a biztonság jóval túlmutat azon, hogy a beágyazott alkalmazások egy nem kötelezően választható funkciója legyen, mára a rendszer épségének biztosításához szükséges elengedhetetlen funkcióvá vált. Az egyre növekvő számú biztonsági előírásnak való megfelelés érdekében a fejlesztőknek olyan megoldásokra van szükségük, amelyek nemcsak a készülékek kis fogyasztására vagy nagy teljesítményére vonatkozó követelményeknek felelnek meg, hanem hardveralapú biztonsági funkciókat is kínálnak, beleértve a hitelesítést, a titkosítást, a biztonságos tárolást és a biztonságos rendszerindítást.

Ez a cikk röviden ismerteti a beágyazott biztonság alapelveit. Ezután bemutatja, hogy a fejlesztők hogyan használhatják a Microchip Technology nagy teljesítményű digitális jelvezérlőit (DSC, digital signal controller) és kis fogyasztású PIC24F mikrovezérlő egységeit (MCU), valamint a Microchip speciális biztonsági eszközeit az erős beágyazott biztonság iránti egyre növekvő igények kielégítésére.

A beágyazott biztonság négy fő alapelvre épül

A nyilvános internetre csatlakoztatva az okoseszközök olyan kifinomult rendszerekké állíthatók össze, amelyekkel kevés önálló termék ér fel. Az ugyanezen csatlakozási módokat használó számítógépes (kibernetikai) támadások veszélye azonban nemcsak hogy nagy valószínűséggel korlátozza az intelligens termékek értékét, de végtelennek tűnő veszélyforrásoknak is kiteszi ezeket a termékeket, a hozzájuk kapcsolódó alkalmazásokat és mindezek felhasználóit.

A rendszerszintű kiberbiztonság iránti folyamatos fogyasztói igények mellett a fejlesztőknek egyre inkább meg kell felelniük az országos és regionális szervezetek biztonsági előírásainak is. A két legtekintélyesebb előírás, az európai ETSI EN 303 645 (Cyber Security for Consumer Internet of Things: Baseline Requirements – Kiberbiztonság a dolgok internetének használói számára: alapkövetelmények), valamint az Amerikai Egyesült Államokban a NIST IR 8259 (Foundational Cybersecurity Activities for IoT Device Manufacturers – Kiberbiztonsági alaptevékenységek a dolgok internetére kapcsolódó eszközök gyártói számára) című dokumentum szerint a kiberbiztonság gyakorlati megvalósítása négy kulcsfontosságú alapelvtől függ:

  • egyedi jelszavak használata
  • biztonságos tárhely az eszközön a kényes biztonsági paraméterek számára
  • biztonságos kommunikáció kölcsönös hitelesítéssel és titkosított kommunikációval
  • képesség a firmware (belső vezérlőprogram) épségének és hitelességének garantálására biztonságos indítás és biztonságos firmware-frissítés révén

Az ezeken az alapelveken nyugvó rendszerek megvalósításához olyan megbízható platformra van szükség, amely megakadályozza, hogy a számítógépkalózok (hackerek) olyan feltört kódot juttassanak be a rendszerbe, amely megváltoztatja a kommunikációt, a tárolást, a firmware-t vagy akár magukat a biztonsági mechanizmusokat.

A megbízható platformok megváltoztathatatlan hardveralapú biztonsági mechanizmusokat használó rendszerszintű biztonság nulláról történő kiépítésével segítik a kellő mértékű biztonság megteremtését. Bár az elgondolás egyszerű, a rendszerszintű biztonság megvalósítása mégis komoly feladatot jelent, mivel a rendszer bármelyik részének biztonsági hiányossága lehetőséget adhat a kibertámadásra. A Microchip Technology nagy teljesítményű dsPIC33C digitális jelvezérlőit (DSC) és kis fogyasztású PIC24F mikrovezérlőit a Microchip kiegészítő biztonsági IC-ivel kombinálva a fejlesztők könnyebben valósíthatják meg a rendszerszintű biztonságot garantáló beágyazott eszközöket.

A teljesítmény- és áramellátási követelmények teljesítése

A felhasználási módok széles skálájának támogatására tervezett Microchip dsPIC33C digitális jelvezérlő és PIC24F mikrovezérlő termékcsalád minden tagja hatékony végrehajtási platformot kombinál alkalmazásspecifikus képességekkel, beleértve a beépített analóg, hullámforma-szabályozó és kommunikációs perifériák kiterjedt készletét. Valójában a dsPIC33C digitális jelvezérlők többszörös impulzusszélesség-modulációjának (MPWM, multiple pulse-width modulation), állítható erősítésű erősítőinek (PGA, programmable gain amplifier), analóg-digitális átalakítóinak (ADC) és egyéb perifériáinak használatával a fejlesztők összetett rendszereket valósíthatnak meg minimális mennyiségű további alkatrészt használva – jellemzően csak a minden ilyen készülékhez szükséges tápegységekre van szükség. Egy példa erre a DSPIC33CK512MP608 egymagos digitális jelvezérlő használata egy internetre nem kapcsolódó szünetmentes tápegység (UPS, uninterruptible power supply) kialakításában (1. ábra).

A Microchip DSPIC33CK512MP608 egymagos digitális jelvezérlő kapcsolási rajza (nagyításhoz kattintson az ábrára)1. ábra: A többi dsPIC33C digitális jelvezérlőhöz hasonlóan a DSPIC33CK512MP608 egymagos digitális jelvezérlő is kiterjedt perifériakészletet tartalmaz beépítve, ami egyszerűsíti az olyan összetett rendszerek tervezését, mint az ábrán látható, az internetre nem kapcsolódó szünetmentes tápegység (ábra: Microchip Technology)

A valós idejű vezérlési képességeket és digitális jelfeldolgozást egyaránt igénylő felhasználási területeken a dsPIC33C digitális jelvezérlők ötvözik a mikrovezérlő és a digitális jelvezérlő képességeit utóbbi célorientált utasításaival és hardverfunkcióval. A biztonság szempontjából kritikus készülékekben is használható dsPIC33C digitális jelvezérlők alkalmasak az IEC 60730 szerinti funkcionális biztonság megvalósítására, ISO 26262-kompatibilisek, és számos hardverfunkciót kínálnak, amelyek célja a gépjárműipari B biztonságjósági szintű (ASIL-B, Automotive Safety Integrity Level B) funkcionális biztonsági tanúsítás megszerzésének egyszerűsítése, valamint a gépjárműipari és ipari biztonság szempontjából kritikus készülékek esetében a SIL-2 biztonságjósági minősítés megszerzésének egyszerűsítése.

Míg a dsPIC33C digitális jelvezérlőket olyan felhasználási területekre tervezték, ahol a teljesítmény a legfontosabb, a PIC24F mikrovezérlők egyensúlyt kínálnak a teljesítmény és a hatásfok között az általános célú beágyazott rendszerek, a fogyasztói elektronika, az ipari automatizálás, a gyógyászati eszközök és más olyan készülékek esetében, amelyeknél vezérlésre és csatlakoztathatóságra szükség van, ellenben digitális jelfeldolgozási (DSP) képességekre nincs. A dsPIC33C digitális jelvezérlőkhöz hasonlóan a PIC24F mikrovezérlők is az IEC 60730 szerinti funkcionális biztonság megvalósítására alkalmas eszközök, B osztályú biztonságdiagnosztikai könyvtárakkal háztartási készülékek létrehozásához.

Amint azt korábban említettük, a firmware épsége a beágyazott kiberbiztonság egyik alapelve. A Microchip a dsPIC33C digitális jelvezérlőkben – amilyen például a DSPIC33CK512MP608 egymagos és a DSPIC33CH512MP508 kétmagos digitális jelvezérlő, valamint a PIC24F mikrovezérlőkben, amilyen például a PIC24FJ512GU405 mikrovezérlő, illetve sok más, különböző alkalmazásspecifikus perifériakészletet tartalmazó eszköz – a firmware épségének és a kód általános védelmének biztosítása érdekében egyszer programozható (OTP, one-time programmable) flashmemóriát kínál a fejlesztők számára ICSP (In-Circuit Serial Programming, áramkörön belüli soros programozás) Write Inhibit (írásletiltás) és CodeGuard Flash (kódvédő flashmemória) biztonsági funkcióval.

A készülék firmware-ének védelme

A Flash OTP by ICSP Write Inhibit lehetővé teszi a fejlesztők számára, hogy a flashmemória egyes részeit OTP memóriaként állítsák be, és a flashmemóriát írás/olvasás elleni védelemmel lássák el. A Microchip saját fejlesztésű ICSP-képessége lehetővé teszi ezen eszközök soros programozását egy lábpáron keresztül, miközben használatban vannak a végkészülékben. Ennek a képességnek köszönhetően a készülékgyártók fejezhetik be a sorozatban gyártott kártyák programozását. Míg az ICSP külső programozóeszköz használatát igényli a Flash OTP folyamat vezérléséhez, addig az Enhanced ICSP lehetővé teszi a Flash OTP folyamatnak a kártyán elhelyezett rendszerbetöltővel (bootloader) való vezérlését. Ezek az eszközök lehetőséget adnak a futásidejű önprogramozásra (RTSP, run-time self-programming) is, amely azt teszi lehetővé, hogy a flashmemória a felhasználói alkalmazáskód futtatása közben frissítse a saját tartalmát.

A sorozatgyártású eszköz programozása után a fejlesztők bekapcsolhatják az ICSP Write Inhibit funkciót, amely megakadályozza a további ICSP-programozást és -törlést. Mindazonáltal ha a megfelelő flashmemória-frissítési kódot az írásletiltás bekapcsolása előtt beprogramozták az eszközbe, a flashmemória-törlési és -programozási RTSP-műveletek akkor is tovább használhatóak, amikor az ICSP írásletiltás be van kapcsolva. Ennek eredményeképpen a fejlesztők megbízható rendszerbetöltőt használhatnak a flashmemória módosítására még akkor is, ha az ICSP Write Inhibit írásletiltás be van kapcsolva, így biztonságosan frissíthetik a firmware-t, miközben a flashmemória frissítésére irányuló külső kísérleteket mérsékelhetik a sorozatgyártású rendszerekben.

A CodeGuard Flash biztonsági funkció különálló indító- és általános szegmensek használatával biztosítja a programot tartalmazó flashmemória kifinomult védelmét. A fejlesztők ezeknek a szegmenseknek a méretét az indítószegmens (BS, boot segment) határcímének (BSLIM, boot segment limit) beállításával határozzák meg az eszköz BSLIM regiszterében. A fennmaradó memóriaterületet az általános szegmens (GS, general segment) foglalja el. A kényes adatok még erősebb védelme érdekében minden szegmens további partíciókat tartalmaz. Az indítószegmens tartalmazza például a megszakítási vektortáblát (IVT, interrupt vector table), a nem kötelezően használandó helyettesítő megszakítási vektortáblát (AIVT, alternate interrupt vector table) és egy további utasításszó- (IW, instruction word) területet. A beállításszegmens (CS, configuration segment), amely az eszköz kritikus felhasználói beállítási adatait tartalmazza, az általános szegmens felhasználói címtartományában található (2. ábra).

A Microchip dsPIC33C digitális jelvezérlő és PIC24F mikrovezérlő termékcsalád szegmenseinek felépítését mutató ábra2. ábra: A dsPIC33C digitális jelvezérlő és a PIC24F mikrovezérlő termékcsalád támogatja a különálló partíciókkal – például indítószegmens és általános szegmens – megvalósított kódvédelmet (ábra: Microchip Technology)

A szegmenspartíciók beállítása után a fejlesztők az eszköz firmware-biztonsági (FSEC, firmware security) regiszterét használhatják az írásvédelem engedélyezéséhez (nem kötelező) és az egyes szegmensek szükséges kódvédelmi szintjének beállításához. Futás közben az eszköz megakadályozza, hogy az alacsonyabb kódvédelmi szintű szegmensben lévő kód hozzáférjen a magasabb kódvédelmi szintű szegmensben lévő kódhoz. Egy jellegzetes rendszerben a fejlesztők írásvédelmet állítanak be az indítószegmensre, és magas szintre állítják a kódvédelmét, így mérsékelve az indítószegmens és benne a rendszerbetöltő megváltoztatására irányuló külső kísérleteket.

Rádiós úton történő biztonságos firmware-frissítés végrehajtása

A szoftverfejlesztők elkerülhetetlenül szembesülnek azzal, hogy az újonnan felfedezett szoftverhibák, a versenyképes fejlesztések vagy a felmerülő biztonsági fenyegetések miatt frissíteniük kell a szoftvereket. A mobilalkalmazások frissítéseitől eltérően a beágyazott rendszerek firmware-frissítéseinek biztonságos elvégzése a legjobb esetben is azzal a kockázattal jár, hogy zavarja az éppen futó alkalmazásokat, rosszabb esetben pedig akár használhatatlanná („téglává”) is teheti a készüléket. A Microchip dsPIC33C digitális jelvezérlő termékcsaládja és kis fogyasztású PIC24F mikrovezérlő termékcsaládja kétpartíciós particionálási mechanizmust is lehetővé tesz, amelynek célja, hogy segítsen a fejlesztőknek elkerülni ezeket a problémákat.

Normál üzemmódban ezek az eszközök a teljes rendelkezésre álló fizikai memóriát egyetlen összefüggő partíció alkotta memóriaterületként használják (3. ábra, balra), amelyen külön indítószegmensek és általános szegmensek alakíthatók ki. Kétpartíciós üzemmódban a fejlesztők a fizikai memóriát külön aktív és inaktív partícióra osztják (3. ábra, jobbra).

A Microchip dsPIC33C digitális jelvezérlő termékcsalád és PIC24F mikrovezérlő termékcsalád egy- és kétpartíciós üzemmódját szemléltető ábra (nagyításhoz kattintson az ábrára)3. ábra: A fejlesztők a dsPIC33C digitális jelvezérlő termékcsaládot és a PIC24F mikrovezérlő termékcsaládot használhatják az alapértelmezett egypartíciós üzemmódban vagy kétpartíciós üzemmódban (ábra: Microchip Technology)

A kétpartíciós üzemmódban működő eszközök az inaktív partíció programozása közben folytathatják az aktív partícióban az alkalmazáskód futtatását. A programozás befejezése után az eszköz a rendszerindító partíció cseréje (BOOTSWP, boot swap) futásidejű utasítás végrehajtásával megcseréli a rendszerindító partíciókat, és a frissített partíciót állítja be rendszerindító partícióként. Ha a frissített partíción lévő kód hibás, vagy valami egyéb hibája van a partíciónak, az eszköz alaphelyzetbe állítása automatikusan az eredeti partíciót állítja be az eszköz rendszerindító partíciójaként (4. ábra).

A Microchip dsPIC33C digitális jelvezérlők és PIC24F mikrovezérlők kétpartíciós üzemmódját szemléltető ábra (nagyításhoz kattintson az ábrára)4. ábra: Kétpartíciós üzemmódban a dsPIC33C digitális jelvezérlők és a PIC24F mikrovezérlők az egyik partícióba betölthetik az alkalmazáskódot, miközben a másik partícióban folytatódik az alkalmazáskód futtatása (ábra: Microchip Technology)

Miután megbizonyosodott arról, hogy a frissített partíció működőképes, a frissített partíció flashmemóriából való indítási sorrendben elfoglalt helyét (FBTSEQ, flash boot sequence) alacsonyabb értékűre állíthatja az eredeti partícióénál. Az ezt követő újraindításkor az eszköz az alacsonyabb FBTSEQ-értékű frissített partícióból tölti be a rendszert (5. ábra).

Ábra: a kétpartíciós üzemmód lehetővé teszi a fejlesztők számára, hogy a kívánt partícióból való rendszerindításnak megfelelő indítási sorrendet adjanak meg (nagyításhoz kattintson az ábrára)5. ábra: A kétpartíciós üzemmód lehetővé teszi a fejlesztők számára, hogy az eszköz újraindításához a kívánt partícióból való rendszerindításnak megfelelő indítási sorrendet adjanak meg (ábra: Microchip Technology)

A Flash OTP by ICSP Write Inhibit és a CodeGuard Flash biztonsági funkció létfontosságú támogatást nyújt a statikus és a futásidejű kód biztonságossá tételéhez, de az átfogó beágyazott biztonság további mechanizmusokat tesz szükségessé, beleértve a biztonságos kulcstárolást, a kódhitelesítést és a biztonságos kommunikációt.

A beágyazott rendszerek biztonságának megteremtése kiegészítő biztonsági eszközökkel

A dsPIC33C digitális jelvezérlőket és a PIC24F mikrovezérlőket a Microchips ATECC608 CryptoAuthentication vagy a TrustAnchor100 (TA100) CryptoAutomotive biztonsági IC-vel kombinálva a fejlesztők könnyebben tudják felhasználni a hardveralapú biztonsági funkciók teljes készletét.

Ezek a biztonsági IC-k az illegális módosításokat megakadályozó hardveralapú biztonsági mechanizmusokat kínálnak, beleértve a biztonságos tárolást, a hardveresen gyorsított titkosítómotorokat, a valódi véletlenszám-generátorokat és a titkosítóalgoritmusok által megkövetelt egyéb mechanizmusokat. Ezeket a kifejezetten kiegészítő eszköznek tervezett IC-ket könnyen hozzá lehet adni a digitális jelvezérlőt vagy mikrovezérlőt használó rendszerekhez, hogy meg lehessen valósítani a beágyazott rendszerek teljes körű biztonságát (6. ábra).

A Microchip ATECC608 és TA100 biztonsági IC belső felépítését mutató szerkezeti rajz (nagyításhoz kattintson az ábrára)6. ábra: Az olyan biztonsági IC-k, mint az ATECC608 és a TA100, kiegészítik a dsPIC33C digitális jelvezérlők és a PIC24F mikrovezérlők biztonsági funkcióit, egyszerűsítve a biztonságos beágyazott rendszerek létrehozását (ábra: Microchip Technology)

Egy olyan kritikus művelet végrehajtásával, mint a biztonságos firmware-frissítés, jól lehet szemléltetni a dsPIC33C digitális jelvezérlők és a PIC24F mikrovezérlők, valamint ezen IC-k egymást kiegészítő biztonsági funkcióit. A fejlesztők kódaláírási technikákat használnak a kód hitelességének és épségének a firmware-frissítési műveletek befejezése előtti ellenőrzésére. Ekkor a fejlesztők a fejlesztőrendszerük segítségével létrehoznak egy frissítőcsomagot, amely tartalmazza a kódot, a kód metaadatait és az ellenőrzéshez használt aláírást (7. ábra).

A létfontosságú protokollt biztosító kódaláírás kialakítását szemléltető rajz7. ábra: A kódaláírás olyan létfontosságú protokollt biztosít, amelyet rutinszerűen használnak a kód hitelességének és épségének a célrendszer frissítése előtti ellenőrzésére (ábra: Microchip Technology)

A célrendszeren használt hardveralapú aláírás-ellenőrzés megszünteti a ellenőrzési protokollok feltörésének kockázatát, amire a korábban használt szoftveralapú aláírás-ellenőrzés esetében volt lehetőség. Ehelyett az olyan kiegészítő biztonsági IC-k, mint a Microchip ATECC608 és TA100, gyorsan és biztonságosan, a feltörés veszélye nélkül végzik el az aláírás-ellenőrzési műveleteket (8. ábra).

A hardveralapú ellenőrzés felépítését mutató rajz8. ábra: A célrendszerben az ATECC608-hoz és a TA100-hoz hasonló biztonsági IC-k által kínált hardveralapú ellenőrzés elengedhetetlen ahhoz, hogy a firmware-nek a rendszerbetöltő általi frissítése előtt el lehessen végezni a kód ellenőrzését (ábra: Microchip Technology)

A biztonságos rendszerek létrehozásának felgyorsítása érdekében a Microchip szoftver- és hardverfejlesztő eszközök kombinációját kínálja.

Gyors szoftver- és hardverfejlesztés

Míg az MPLAB X beépített fejlesztőkörnyezet (IDE, integrated development environment) teljes szoftverfejlesztési környezetet kínál a fejlesztőknek, addig az MPLAB XC C fordító a meglévő eszközláncok fejlesztését segíti. A fejlesztés mindkét környezetben való felgyorsítása érdekében a Microchip MPLAB Code Configurator (MCC) kódbeállító az teszi lehetővé a fejlesztők számára, hogy egy grafikus felület segítségével automatikusan inicializáló utasításokat alkossanak, illesztőprogramokat készítsenek, kiosszák az IC-k lábait, könyvtárakat hozzanak létre, és más egyéb módokon segítsenek felgyorsítani a minden beágyazott szoftverfejlesztési projekthez kapcsolódó számos kritikus alacsony szintű beállítási eljárást és folyamatot.

A megfelelő biztonságos rendszerbetöltők létrehozásának felgyorsítása érdekében a Microchip dsPIC33 digitális jelvezérlőkhöz és PIC24 mikrovezérlőkhöz való rendszerbetöltője olyan grafikus felületet kínál, amely segít a fejlesztőknek gyorsan beállítani és létrehozni a készülékükhöz szükséges egyéni rendszerbetöltőket. Egy kapcsolódó rendszerbetöltő gazdaalkalmazás még tovább egyszerűsíti az alkalmazáskód céleszközre történő átvitelét.

A hardverfejlesztés segítésére a Microchip több kapcsolódó fejlesztőkártyát is kínál a dsPIC33C digitális jelvezérlőkön és PIC24F mikrovezérlőkön alapuló rendszerek építéséhez. A Microchip PIC-IoT EV54Y39A kártya és a PIC-IoT AC164164 kártya (9. ábra) olyan biztonsági IC-ket tartalmaz, amelyek gyárilag el vannak látva az Amazon Web Services (AWS), illetve a Google Cloud felhőhöz való kapcsolódáshoz szükséges hitelesítő adatokkal.

A Microchip PIC-IoT AC164164 kártya képe9. ábra: Az olyan kártyák, mint a PIC-IoT AC164164, amely az AWS vagy a Google Cloud felhőhöz való kapcsolódáshoz szükséges hitelesítő adatokkal gyárilag ellátott biztonsági IC-ket tartalmaz, felgyorsítják a beágyazott biztonság fejlesztését (ábra: Microchip Technology)

Az egyedi tervekhez a Microchip egy dsPIC33CH Curiosity fejlesztőkártyát (DM330028-2) kínál, amely a dsPIC33CH512MP508 kétmagos digitális jelvezérlőn alapul. Egy másik megoldásként a fejlesztők a biztonságos beágyazott rendszerek fejlesztésének felgyorsítása érdekében csatlakoztathatják a Microchip Explorer beágyazott fejlesztőkártyához (DM240001-2) a Microchip dsPIC33CH128MP508 digitális jelvezérlőn alapuló rádugható modulját (MA330040).

Összegzés

A beágyazott rendszerek biztonsága arra épül, hogy kaphatóak olyan hardveralapú mechanizmusok, amelyek képesek támogatni a kiberbiztonsági alapelveket, többek közt a firmware épségének megóvását, a hitelesítést, a titkosítást és a biztonságos tárolást. Miközben a Microchip dsPIC33C digitális jelvezérlői és PIC24F mikrovezérlői egyszerűsítik a kódok védelmét, az ATECC608 és a TA100 biztonsági IC-k a hatékony biztonsági platform létrehozásához szükséges további biztonsági mechanizmusokat kínálnak. Ezen eszközök együttes használatával a fejlesztők kielégíthetik a dolgok internetéhez készült beágyazott eszközök, valamint a gépjárműipari, ipari, fogyasztói és gyógyászati készülékek által a rendszerszintű biztonság iránt támasztott igényt.

DigiKey logo

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.

About this author

Image of Stephen Evanczuk

Stephen Evanczuk

Stephen Evanczuk has more than 20 years of experience writing for and about the electronics industry on a wide range of topics including hardware, software, systems, and applications including the IoT. He received his Ph.D. in neuroscience on neuronal networks and worked in the aerospace industry on massively distributed secure systems and algorithm acceleration methods. Currently, when he's not writing articles on technology and engineering, he's working on applications of deep learning to recognition and recommendation systems.

About this publisher

DigiKey's North American Editors