Témakör:
A beágyazott rendszerek biztonsága és a PSoC 64
Megjelent: 2022. október 03.
Az internetre csatlakoztatott termékek száma továbbra is exponenciális ütemben növekszik. Sok termékfejlesztő csapat azzal a problémával szembesül, hogy a beágyazott szoftverek fejlesztőinek nincs elegendő tapasztalatuk a biztonság megvalósítása területén. Ez a tapasztalathiány a biztonsági követelmények figyelmen kívül hagyásához, biztonsági rések kialakulásához és rossz megvalósításhoz is vezethet. Eredményként egy olyan, gyenge védelemmel rendelkező hálózatba kapcsolt rendszert kaphatunk, amely könnyű célpontja lehet a szellemi tulajdont, valamint az eszköz- és felhasználói adatokat eltulajdonítani kívánó személyeknek.
A mikrovezérlő-alapú rendszerek tervezőinek számos olyan megoldás áll a rendelkezésére, amelyekkel egyszerűsíthetik a biztonsági megvalósításokat, és amelyek eszközöket is kínálnak számukra a sikeres megvalósításhoz. Az egymagos mikrovezérlőknél például használható az Armv8-M architektúra (és az attól újabb verziók) részét képező Arm TrustZone. Léteznek többmagos mikrovezérlős megoldások is.
Ez a cikk bemutatja, hogyan tudják felhasználni a fejlesztők a többmagos processzorokat beágyazott megoldásaik biztonságossá tételére. Konkrétan a Cypress PSoC 64 biztonsági mikrovezérlőjét és a biztonságos megoldások megvalósításához szükséges eszközöket tárgyalja.
A beágyazott biztonság alapjai
Egy biztonságos termék tervezésekor az egyik legfontosabb, hogy a tervező kihasználja a hardveralapú különválasztás előnyét. Ez a különválasztás megvalósítható többféle módon is, például egy különválasztott végrehajtási környezet vagy egy memóriavédelmi egységen (MPU) alapuló különálló memória formájában. A legmagasabb szinten egy mikrovezérlőnek képesnek kell lennie arra, hogy a végrehajtási környezetét egy biztonságos feldolgozási környezetre (secure processing environment – SPE) és egy nem biztonságos feldolgozási környezetre (non-secure processing environment – NSPE) válassza szét.
Az SPE egy olyan különválasztott végrehajtási környezet, amely az általa használt memóriát, komponenseket és alkalmazáskódot elkülönítve tartja az NSPE környezettől. Az SPE-re úgy lehet tekinteni, mint egy biztonsági processzorra. Az SPE biztonsági kódot és műveleteket futtat, például egy biztonságos operációs rendszert és/vagy gyökérszintű megbízhatóságot tart fenn (root-of-trust – RoT). Az SPE olyan megbízható szolgáltatásokat is végrehajt, mint a kriptográfia, a biztonságos tárolás, a hitelesítés és a biztonságos naplózás. Az SPE-n belül a biztonsági műveletekhez kapcsolódó korlátozott számú megbízható alkalmazások futnak.
Ami az NSPE-t illeti, azt úgy lehet elképzelni, mint egy funkciókban gazdag végrehajtási környezetet, amely mindent futtat a biztonsági műveletek kivételével. Valójában az NSPE nem más, mint a legtöbb beágyazott fejlesztő által megszokott programozási modell. Rendelkezik egy RTOS rendszerrel és a legtöbb alkalmazáskomponenssel.
A hardveralapú különválasztás az egyik legfontosabb alapelv (vagy legjobb gyakorlat), amelyet az Arm biztonságos rendszerek kiépítésére szolgáló Platform Security Architecture (PSA) architektúrája nyújt. Az imént tárgyalt különböző elválasztási rétegek bemutatása az 1. ábrán látható, a PSoC 64-et használva példaként. Ebben a példában az SPE és az NSPE (1) hardveresen külön vannak választva egymástól azáltal, hogy a futtatókörnyezetek fenntartását külön processzorok végzik. A futtatókörnyezetek szétválasztása mellett a RoT és a megbízható szolgáltatások is el vannak különítve egymástól (2). Végül, az SPE-n belül is minden egyes megbízható alkalmazás el van különítve egymástól megbízható partíciók és MPU-k (3) segítségével.
1. ábra Egy biztonságos alkalmazásban a végrehajtási környezetek
hardveralapú elkülönítéssel rendelkeznek.
1) Különválasztott NSPE és SPE
2) Különválasztott RoT és megbízható szolgáltatások
3) Különválasztott megbízható alkalmazások
(Kép: Arm/Cypress)
A PSoC 64 egy kétmagos mikrovezérlő, ahol az NSPE futtatását egy Arm Cortex-M4 processzor, az SPE-jét pedig egy Arm Cortex-M0+ processzor végzi. Az Arm Cortex-M0+ futtatja az összes biztonsági funkciót, és egy processzorok közötti kommunikációs (IPC) buszon keresztül képes kommunikálni a Cortex-M4-gyel. Az architektúra korlátozza a hozzáférést a hardveresen különválasztott SPE-hez.
A fejlesztőknek érdemes a Cypress PSoC 64 Secure Boot Pioneer Kit kezdőkészlettel kezdeniük a PSoC 64-gyel való munka megkezdése előtt.
A Cypress PSoC 64 Secure Boot Pioneer Kit
A Cypress PSoC 64 Secure Boot Pioneer Kit (2. ábra) tartalmaz mindent, amire a fejlesztőknek szükségük van ahhoz, hogy megkezdjék saját alkalmazásaik biztonságossá tételét. Először is van rajta egy PSoC 64 modul, amely tartalmazza a PSoC 64 mikrovezérlőt, a külső memóriát és az összes kiegészítő áramkört (piros színben). A külső memória alkalmazáskódok vagy új firmware-képek tárolására használható FOTA (firmware-over-the-air) -alapú biztonságos frissítésekhez.
2. ábra A Cypress PSoC 64 Secure Boot Pioneer Kit tartalmaz mindent, ami a fejlesztők számára szükséges ahhoz, hogy a kifejlesztett alkalmazásaikat biztosítsák (Kép: Cypress Semiconductor)
Rendelkezik továbbá egy Wi-Fi modullal, amely lehetővé teszi a fejlesztők számára, hogy a panel kapcsolódni tudjon egy hálózathoz. A Wi-Fi modul különösen hasznos az IoT-alkalmazások esetében, ahol a kártya olyan felhőszolgáltatásokhoz csatlakozik, mint amilyen például az AWS vagy az Azure. A fejlesztői kártya kompatibilis az Amazon FreeRTOS rendszerrel, amelyet a következő részben tárgyalunk.
Végül, a Pioneer Kit széles körű bővítési lehetőségeket kínál, például tűsorok, Arduino foglalatok és számos érzékelő formájában. A fejlesztők sok más mellett kihasználhatják a kártyára integrált érintésvezérlő és érintőgombok, a nyomógombok és a potenciométer kínálta lehetőségeket. Az áramköri kártya úgy van beállítva, hogy a testreszabás szinte bármilyen alkalmazás esetében könnyen elvégezhető legyen.
A PSoC 64 biztonsági szoftvercsomag
A biztonságos beágyazott alkalmazások tervezése időigényes és problémákkal teli 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, és amelyek ugyanakkor biztosítják a kifejlesztett alkalmazásuk védelmét. Ennek elősegítésére a PSoC 64 olyan széles szoftverválasztékot kínál, amely segítségével a fejlesztők gyorsan létrehozhatnak biztonságos alkalmazásokat.
A Cypress CySecureTools például a fejlesztők számára 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 feltöltéséhez szükséges eszközöket kínál. Ezek az eszközök lehetővé teszik a fejlesztők számára, hogy a Cypress RoT átvétele után abba beillesszék a saját biztonsági eszközeiket. A CySecureTools beállításával és használatával kapcsolatos információk a github felületén lévő README fájlban találhatók.
Egy további eszköz, amely hasznos lehet az IoT fejlesztők számára, az AWS-hez kapcsolódó FreeRTOS. A github felületén hasznos példák találhatók arra, hogyan használható a FreeRTOS és az AWS a PSoC 64-gyel. Az első példa, amely a fejlesztők számára érdekes lehet a „Hello World” alkalmazás, amellyel MQTT üzenetek továbbíthatók a PSoC 64-ről az AWS felhőbe. Ez a példa lehetővé teszi számukra, hogy végigmenjenek az eszköz feltöltési folyamatán, a kulcsgeneráláson és a telepítési fázisokon. A példa végére a fejlesztők egy AWS-hez kapcsolódó biztonságos beágyazott eszközzel rendelkezhetnek. A kezdeti lépésekkel kapcsolatos részletek a fejlesztőkészlethez tartozó Getting Started with Cypress CY8CKIT-064S0S204343 útmutatóban találhatók.
Biztonságos alkalmazások a Trusted Firmware-M (TF-M) segítségével
A PSoC 64 a fejlesztők számára egy használatra kész biztonsági keretrendszert biztosít, amely könnyen adaptálható bármely adott alkalmazáshoz. Szoftveres szempontból a fejlesztők számára hasznos lehet ismerni, hogy mi történik a színfalak mögött. A Cypress PSoC 64 firmware-je egy nyílt forráskódú, Trusted Firmware-M (TF-M) néven ismert biztonsági keretrendszert használ.
A TF-M az Arm PSA IoT biztonsági keretrendszerének referenciaimplementációja. Hasznos biztonsági eszközöket kínál a fejlesztők számára, mint például eszköztanúsítás, firmware-ellenőrzés, kriptográfiai szolgáltatások, titkos kulcsok kezelése és 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, amelyet aztán a fejlesztők fel tudnak használni a saját alkalmazásaikhoz.
A biztonsági keretrendszert saját kódok, valamint biztonsági profilok hozzáadásával és még sok mással módosíthatják. Fontos azonban szem előtt tartani, hogy minél nagyobb mértékben módosítják az SPE-szoftvert, azzal arányosan növekszik a sebezhetőség veszélye is. A fejlesztőknek gondosan mérlegelniük kell az alapszintű firmware módosításával, illetve ahhoz való hozzáadással vagy részek törlésével járó kockázatokat.
Tippek és trükkök a beágyazott alkalmazások levédéséhez
A beágyazott alkalmazások levédése terén kezdő fejlesztőknek sok mindent figyelembe kell venniük. A következő néhány „tipp és trükk” segítségével a fejlesztés leegyszerűsíthető és felgyorsítható:
- Dolgozza ki már a fejlesztési ciklus korai szakaszában a fenyegetettségi modellt, és végezze el a biztonsági elemzést (threat model and security analysis, TMSA).
- Egy fejlesztői kártya segítségével tesztelje az eszköz RoT-t, a Secure Bootloader-t, az eszköz feltöltési folyamatát és a firmware-frissítést.
- Ne legyen magányos farkas a biztonság létrehozásában! Használja fel a meglévő nyílt forráskódú és biztonságos firmware stack-eket az utómunka minimalizálása érdekében.
- Mindenképpen gondolja át az eszköz életciklusát, beleértve a biztonságos üzemen kívüli helyezés módját is.
- Tanulmányozza át a Cypress CySecureTools-t és más hasonló eszközöket – ezekhez biztonsági példasablonok, szoftverek és példák tartoznak.
- A githubon lévő FreeRTOS klónozásakor a legfrissebb megjelölt verziót klónozza. Az aktív fővonal klónozása gyakran eszköz-inkompatibilitást eredményez és a még megoldatlan hibák bennmaradását.
- A projektet kezdje a Getting Started with Cypress CY8CKIT-064S0S204343 útmutató áttanulmányozásával. Ebben megtalálható minden szükséges információ egy alapvető alkalmazás futtatásához, amely aztán termékspecifikus célokra módosítható.