Beágyazott rendszerek biztonságossá tétele a PSoC 64 használatával

By Jacob Beningo

Contributed By DigiKey's North American Editors

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).

Hardveralapú elkülönítést használó biztonságos rendszer elvi rajza1. á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.

A PSoC 64 Secure Boot Pioneer Kit biztonságos indítókészlet képe2. á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.

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 Jacob Beningo

Jacob Beningo

Jacob Beningo is an embedded software consultant. He has published more than 200 articles on embedded software development techniques, is a sought-after speaker and technical trainer, and holds three degrees, including a Masters of Engineering from the University of Michigan.

About this publisher

DigiKey's North American Editors