Beágyazott rendszerek biztonságossá tétele a PSoC 64 használatával
Contributed By DigiKey's North American Editors
2022-07-27
Az internetre csatlakoztatott termékek száma továbbra is exponenciális mértékben növekszik. Sok termékfejlesztő csapat szembesül azzal a problémával, hogy a beágyazott szoftverek fejlesztői a biztonsággal kapcsolatosan nem rendelkeznek elegendő tapasztalattal. A tapasztalat hiánya figyelmen kívül hagyott biztonsági követelményekhez, biztonsági hiányosságokhoz és rossz termékkialakításhoz vezethet. Az eredmény a rosszul védett összekapcsolt rendszerek, amelyek a szellemi tulajdon, valamint az eszköz- és felhasználói adatok ellopásának könnyű célpontjai.
A mikrovezérlő-alapú rendszerek tervezőinek számos olyan megoldás áll a rendelkezésükre, amelyekkel egyszerűsíthetik a biztonsági megoldások megvalósítását, és amelyek eszközöket kínálnak számukra a termék sikeres kialakításához. Az egymagos mikrovezérlők használhatják például az ARM TrustZone technikát, amely az ARMv8-M architektúra része (de túl is mutat azon). Vannak többmagos mikrovezérlőkre épülő megoldások is.
Ez a cikk bemutatja, hogyan használhatják a fejlesztők a többmagos processzorokat beágyazott megoldásaik biztonságossá tételére. Konkrétan a Cypress PSoC 64 biztonságos mikrovezérlőt és az általa a biztonságos megoldások megvalósításához nyújtott eszközöket vizsgálja.
A beágyazott biztonság alapjai
A biztonságos termékek tervezésének egyik legfontosabb alapja a hardveralapú elkülönítés kihasználása. Ez az elkülönítés többféle formában is megvalósulhat, lehet például egy elkülönített végrehajtási környezet vagy egy memóriavédelmi egységen (MPU) alapuló elkülönített memória. A legmagasabb szinten egy mikrovezérlőnek képesnek kell lennie arra, hogy a végrehajtási környezetét egy biztonságos (SPE, secure processing environment) és egy nem biztonságos feldolgozási környezetre (NSPE, non-secure processing environment) válassza szét.
A biztonságos feldolgozási környezet egy olyan elkülönített végrehajtási környezet, amely elkülöníti a memóriát, az összetevőket és az alkalmazáskódot az nem biztonságos feldolgozási környezettől. A biztonságos feldolgozási környezetet egyfajta biztonsági processzorként lehet elképzelni. A biztonságos feldolgozási környezet biztonságos kódot és műveleteket futtat, például biztonságos operációs rendszert vagy megbízhatósági alappontot (RoT, root of trust). A biztonságos feldolgozási környezet olyan megbízható szolgáltatásokat is futtat, mint a titkosítás, a biztonságos tárolás, a tanúsítás és a biztonsági naplózás. A biztonságos feldolgozási környezetben korlátozott számú, a biztonságos műveletekhez kapcsolódó, megbízható alkalmazás fut.
A nem biztonságos feldolgozási környezetet úgy lehet elképzelni, mint egy funkciókban gazdag végrehajtási környezetet, ahol minden fut, kivéve a biztonságos műveleteket. Valójában a nem biztonságos feldolgozási környezet a beágyazott programokat készítő legtöbb fejlesztő által használt és jól ismert programozási modell, ide tartozik a valós idejű operációs rendszer (RTOS) és a rendszer legtöbb összetevője.
A hardveralapú elkülönítés az egyik legfontosabb alapelv vagy bevált gyakorlat, amelyet az ARM® Platform Security Architecture (PSA) platfombiztonsági architektúra a biztonságos rendszerek építéséhez kínál. Az imént tárgyalt különböző elkülönítési rétegek az 1. ábrán láthatóak a PSoC 64 példáján. Ebben a példában a biztonságos feldolgozási környezet és a nem biztonságos feldolgozási környezet (1) hardveres elkülönítés révén van megvalósítva azáltal, hogy a futásidejű környezetek külön processzorokon futnak. A futásidejű szétválasztás mellett el vannak még különítve egymástól a megbízhatósági alappont és a megbízható szolgáltatások is (2). Végül pedig a biztonságos feldolgozási környezeten belül is minden egyes megbízható alkalmazás el van különítve egymástól olyan eszközökkel, mint a megbízható partíciók és a memóriavédelmi egységek (3).
1. ábra: A biztonságos rendszer hardveralapú elkülönítést használ a végrehajtási környezetek elkülönítésére. 1) A nem biztonságos feldolgozási környezet és a biztonságos feldolgozási környezet el van különítve 2) A megbízhatósági alappont és a megbízható szolgáltatások el vannak különítve egymástól 3) A megbízható alkalmazások el vannak különítve egymástól (kép: ARM/Cypress)
A PSoC 64 egy kétmagos mikrovezérlő, ahol a nem biztonságos feldolgozási környezet egy ARM Cortex®-M4 processzoron, a biztonságos feldolgozási környezet pedig egy ARM Cortex-M0+ processzoron fut. Az ARM Cortex-M0+ futtatja az összes biztonsági funkciót, és a processzorok közti kommunikációs (IPC) sínen keresztül tud kommunikálni a Cortex-M4-gyel. Ez a felépítés korlátozza a hozzáférést a biztonságos feldolgozási környezethez, amely hardveresen el van különítve
A PSoC 64 használatának megkezdéséhez a fejlesztőknek érdemes tanulmányozniuk a PSoC 64 Secure Boot Pioneer Kit biztonságos indítókészletet.
A PSoC 64 Secure Boot Pioneer Kit
A PSoC 64 Secure Boot Pioneer Kit (2. ábra) mindent tartalmaz, amire a fejlesztőknek szükségük van ahhoz, hogy elkezdhessék rendszereik védelmét. Először is található benne egy PSoC 64 modul, amely tartalmazza a PSoC 64 mikrovezérlőt, a külső memóriát és az összes támogató áramkört (piros színnel ábrázolva). A külső memória használható az alkalmazáskód tárolására vagy új firmware-képek tárolására a biztonságos FOTA (firmware-over-the-air, belső vezérlőkód interneten át) frissítésekhez.
2. ábra: A PSoC 64 Secure Boot Pioneer Kit biztonságos indítókészlet mindent tartalmaz, amire a fejlesztőknek szükségük van a biztonságos IoT-rendszerek fejlesztéséhez (kép: Cypress)
Emellett el van látva egy wifimodullal, amely lehetővé teszi a fejlesztők számára, hogy a kártyát a hálózathoz csatlakoztassák. A wifimodul különösen hasznos a dolgok internetére kapcsolódó (IoT-) rendszerek esetében, ahol a kártya olyan felhőszolgáltatásokhoz csatlakozik, mint az AWS vagy az Azure. A fejlesztői kártya támogatja az Amazon FreeRTOS operációs rendszert, amelyről a következő részben lesz majd szó.
Ezenkívül a Pioneer Kit a bővítési lehetőségek széles skáláját támogatja, mint például a tűs csatlakozók, Arduino csatlakozók, és számos érzékelőt is. A fejlesztők felhasználhatják a kártyán lévő érintőcsúszkát és az érintőgombokat, nyomógombokat, potenciométert és sok egyebet. A kártya úgy van beállítva, hogy a testreszabás szinte bármilyen berendezéshez könnyen elvégezhető legyen.
A PSoC 64 Secure Software Suite biztonsági szoftvercsomag
A biztonságos beágyazott alkalmazások tervezése időigényes és kihívást jelentő feladat lehet. A fejlesztőknek olyan megoldásokat kell keresniük, amelyek segítenek csökkenteni a költségeket és a piacra kerülési időt, miközben garantálják az alkalmazásuk biztonságosságát. Ennek elősegítésére a PSoC 64 olyan szoftverek széles választékát kínálja, amelyek lehetővé teszik a fejlesztők számára, hogy gyorsan hozzanak létre biztonságos alkalmazásokat.
A CySecureTools például kulcsok és tanúsítványok létrehozásához, valamint a felhasználói alkalmazások aláírásához és a Cypress mikrovezérlők használatához szükséges eszközökkel látja el a fejlesztőket. Az eszköz lehetővé teszi a fejlesztők számára, hogy átvegyék a Cypress megbízhatósági alappontot, majd beillesszék a saját biztonsági eszközeiket. A CySecureTools beállításával és használatával kapcsolatos tudnivalók a github tároló README fájljában találhatók.
Az IoT-fejlesztők számára hasznos eszköz az AWS támogatása a FreeRTOS használatával. A github tároló hasznos példákat tartalmaz a FreeRTOS és az AWS PSoC 64-gyel történő használatára. Az első példa, amely a fejlesztőket érdekelheti, a „Hello World” nevű alkalmazás, amely MQTT-üzeneteket továbbít a PSoC 64-ről az AWS felhőbe. Ez a példa lehetővé teszi a fejlesztő számára, hogy végigmenjen a rendelkezésre bocsátási folyamaton, a kulcselőállításon és a telepítési fázisokon. A példa végére a fejlesztőnek van egy biztonságos beágyazott eszköze, amely az AWS-hez kapcsolódik. A kezdéssel kapcsolatos tudnivalók A CY8CKIT-064S0S204343 készlet – az első lépések című útmutatóban találhatók.
Biztonságos alkalmazások a Trusted Firmware-M (TF-M) használatával
A PSoC 64 egy kész biztonsági keretrendszert kínál a fejlesztők számára, amely könnyen testreszabható az egyes alkalmazásokhoz. A fejlesztők számára hasznos lehet megérteni, hogy mi történik a színfalak mögött a szoftver szempontjából. A PSoC 64 belső vezérlőprogramja (firmware-e) egy nyílt forráskódú, Trusted Firmware-M (TF-M) néven ismert alapszintű biztonsági keretrendszert használ.
A TF-M az ARM PSA architektúrának a dolgok internetéhez (IoT) való biztonsági keretrendszerét bemutató referencia-vezérlőprogram. Olyan hasznos biztonsági eszközöket kínál a fejlesztők számára, mint az eszköztanúsítás, a firmware-ellenőrzés, a titkosítási szolgáltatások, az eszköztitok kezelése és a biztonságos particionálás, hogy csak néhányat említsünk. A Cypress a TF-M-et használta fel saját biztonsági keretrendszerének megalkotásához, hogy aztán a fejlesztők használhassák a keretrendszert az alkalmazásaikhoz.
A fejlesztők saját kódjuk és biztonsági profilok hozzáadásával és még sok mással módosíthatják a biztonsági keretrendszert. Fontos azonban szem előtt tartani, hogy minél többet módosítják az biztonságos feldolgozási környezet szoftverét, annál nagyobb az esélye annak, hogy valamilyen sebezhetőség is megjelenik. A fejlesztőknek gondosan mérlegelniük kell az alapszintű firmware módosításával, kódok ahhoz történő hozzáadásával vagy abból történő eltávolításával járó kockázatokat.
Tanácsok és trükkök beágyazott alkalmazások hibakereséséhez
Azoknak a fejlesztőknek, akik első alkalommal szeretnék biztonságossá tenni beágyazott alkalmazásaikat, sok mindent figyelembe kell venniük. Íme néhány tanács és trükk, amelyekkel leegyszerűsíthetik és felgyorsíthatják a fejlesztést:
- A fejlesztési ciklus korai szakaszában végezze el a fenyegetés modellezését és a biztonsági elemzést (TMSA).
- Az eszköz megbízhatósági alappontjának, biztonságos rendszerbetöltőjének, elérhetővé tételi folyamatának és firmware-frissítéseinek teszteléséhez használjon valamilyen fejlesztőkártyát.
- Ne egyedül valósítsa meg a biztonságot! Használja fel a meglévő nyílt forráskódú és biztonságos firmware-csomagokat, hogy minél kevesebbet kelljen utólag alakítania rajtuk.
- Mindenképpen gondolja át az eszköz életciklusát, beleértve az eszköz biztonságos megsemmisítésének módját is.
- Ismerje meg az olyan eszközöket, mint a CySecureTools. Ezekhez az eszközökhöz biztonsági mintasablonok, szoftverek és példák tartoznak.
- Amikor a github tárolóból klónozza a FreeRTOS operációs rendszert, mindig a legfrissebb címkéjű verziót klónozza. Az aktív változatok klónozása gyakran eredményezi egyes eszközök inkompatibilitását és ismert, de még meg ki nem javított hibák felbukkanását.
- Kezdje a projektet a Getting Started with the Cypress CY8CKIT-064S0S2-4343W kit (A CY8CKIT-064S0S204343 készlet – az első lépések) útmutató áttekintésével. Ez minden szükséges információt megad egy alapalkalmazás futtatásához, amely aztán módosítható a termék egyedi céljainak megfelelően.
Az ezeket a tanácsokat és trükköket megfogadó fejlesztők sok időt megtakaríthatnak, és sokkal kevesebb keserűségben lesz részük.
Összegzés
A biztonság megteremtésének nem kell okvetlenül nehéznek lennie. A beágyazott termékeket fejlesztőknek a termékük megkülönböztető jegyeire, a titkos „receptjükre” kell összpontosítaniuk, azonban a legtöbb esetben ez nem jelent kellő biztonságot. Ez a cikk azt vizsgálta, hogy a PSoC 64 hogyan segíthet a fejlesztőknek gyorsan megteremteni az alkalmazásaik biztonságát azzal, hogy nemcsak hardveralapú elszigetelt környezetet, hanem szoftvereszközök keretrendszerét is elérhetővé teszi. A hardveres és szoftveres megoldások együttesen a biztonságfejlesztési ciklus felgyorsítását teszik lehetővé a fejlesztők számára.
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.

