Skydda inbäddade system med PSoC 64
Bidraget med av DigiKeys nordamerikanska redaktörer
2022-07-27
Antalet produkter som är anslutna till internet fortsätter att öka i exponentiell takt. Problemet för många produktteam är att utvecklare av inbäddad programvara inte har tillräcklig erfarenhet av säkerhet. Bristande erfarenhet kan leda till förbisedda säkerhetskrav, säkerhetshål och dålig implementation. Resultatet är uppkopplade system som är dåligt skyddade och är enkla mål för stöld av immateriella rättigheter samt data om enheter och användare.
Konstruktörer av mikrocontrollerbaserade system har tillgång till flera lösningar som kan användas för att förenkla implementeringen av säkerhet och förse dem med verktygen för att lyckas. Mikrocontrollers med en kärna kan exempelvis använda TrustZone från Arm, som är en del av arkitekturen Armv8 (och senare). Det finns även lösningar för mikrocontroller med flera kärnor.
Artikeln visar hur utvecklare kan använda flerkärniga processorer för att skydda sina inbäddade lösningar. Den undersöker den säkra mikrocontrollern PSoc 64 från Cypress i synnerhet, och de verktyg som den tillhandahåller för att implementera en säker lösning.
Grunderna för inbäddad säkerhet
En av grundstenarna för att utforma en säker produkt är att utnyttja hårdvarubaserad isolering. Denna isolering kan ske på många olika sätt, t.ex. genom en isolerad exekveringsmiljö eller ett isolerat minne baserat på en minnesskyddsenhet (MPU). På den högsta nivån, måste en mikrocontroller kunna dela upp sin exekveringsmiljö i en säker bearbetningsmiljö (SPE) och en icke-säker bearbetningsmiljö (NSPE).
En säker bearbetningsmiljö är en isolerad exekveringsmiljö som håller sitt minne, sina komponenter och sin programkod åtskilda från den icke-säkra bearbetningsmiljön. En säker bearbetningsmiljö kan ses som en säkerhetsprocessor. Den säkra bearbetningsmiljön kör säker kod och säkra åtgärder, t.ex. ett säkert operativsystem och/eller en root-of-trust (RoT). Den säkra bearbetningsmiljön kommer även att utföra betrodda tjänster som kryptografi, säker lagring, attestering och säker loggning. Ett begränsat antal betrodda tillämpningar med anknytning till den säkra verksamheten kommer att köras i den säkra bearbetningsmiljön.
Den icke-säkra bearbetningsmiljön kan å sin sida ses som en funktionsrik exekveringsmiljö som kör allt utom säkra funktioner. Den icke-säkra bearbetningsmiljön är faktiskt den bekanta programmeringsmodell som de flesta utvecklare av inbäddade system är vana vid. Den innehåller ett RTOS och de flesta av applikationens komponenter.
Maskinvarubaserad isolering är en av de viktigaste principerna eller bästa metoderna i Arm® Platform Security Architecture (PSA) för att bygga säkra system. De olika isoleringslagren som vi just diskuterat kan ses i figur 1, med PSoC 64 som exempel. I exemplet skapar den säkra bearbetningsmiljön och den icke-säkra bearbetningsmiljön (1) en hårdvaruisolering genom att ha exekverningsmiljöerna på separata processorer. Förutom att exekveringstiden separeras är RoT och betrodda tjänster extra isolerade (2). Slutligen isoleras även varje betrodd applikation i den säkra bearbetningsmiljön med hjälp av verktyg som betrodda partitioner och MPU:er (3).
Figur 1: En säker applikation använder hårdvarubaserad isolering för att separera exekveringsmiljöer. 1) Den icke-säkra och den säkra bearbetningsmiljön är isolerade 2) RoT och betrodda tjänster är isolerade 3) betrodda tillämpningar är isolerade. (Bildkälla: Arm/Cypress)
PSoC 64 är en dubbelkärnig mikrocontroller där den icke-säkra bearbetningsmiljön exekveras på en Arm Cortex®-M4 processor och den säkra bearbetningsmiljön exekveras på en Arm Cortex-M0+-processor. Arm Cortex-M0+ kör alla säkerhetsfunktioner och kan kommunicera med Cortex-M4 via en IPC-buss (interprocessor communication). Arkitekturen begränsar åtkomsten till den säkra bearberningsmiljön, som är isolerad från hårdvaran.
För att komma igång med användningen av PSoC 64 bör utvecklare ta en titt på PSoC 64 Secure Boot Pioneer Kit.
PSoC 64 Secure Boot Pioneer Kit
PSoC 64 Secure Boot Pioneer Kit (Figur 2) innehåller allt som utvecklare behöver för att börja skydda sina applikationer. Den har först och främst en PSoC 64-modul som innehåller mikrocontrollern PSoC 64, externt minne och alla kringkomponenter (visas i rött). Det externa minnet kan användas för att lagra programkod eller för att lagra nya firmware-avbildningar för säker FOTA-uppdateringar (firmware-over-the-air).
Figur 2: PSoC 64 Secure Boot Pioneer Kit innehåller allt som utvecklare behöver för att börja utveckla säkra IoT-applikationer. (Bildkälla: Cypress)
Den har dessutom en WiFi-modul som gör det möjligt för utvecklare att ansluta kortet till ett nätverk. WiFi-modulen är särskilt användbar för IoT-tillämpningar där kortet ansluts till molntjänster som AWS eller Azure. Utvecklingskortet stöder Amazon FreeRTOS, som vi kommer att diskutera i nästa avsnitt.
Slutligen stöder Pioneer Kit ett brett utbud av expansionsmöjligheter, t.ex. stiftkontakter, Arduino-kontakter och en mängd sensorer. Utvecklare kan utnyttja den inbyggda pekreglaget och pekknappar, tryckknappar, potentiometrar och mycket mer. Kortet är även utformat så att det är lätt att anpassa för nästan alla tillämpningar.
Den säkra programvarusviten PSoC 64
Att utforma en säker inbäddad applikation kan vara tidskrävande och utmanande. Utvecklare bör leta efter lösningar som bidrar till att minska kostnaderna och tiden till marknaden samtidigt som de ser till att deras applikationer är säkra. För att underlätta detta har PSoC 64 ett brett utbud av mjukvara som gör det möjligt för utvecklare att snabbt bygga en säker applikation.
CySecureTools ger till exempel utvecklare en verktygslåda för att skapa nycklar och certifikat, samt verktyg för att signera användarprogram och driftsätta mikrocontrollern Cypress. Verktyget gör det möjligt för utvecklare att överföra Cypress RoT och sedan lägga in sina egna säkerhetstillgångar. Information om hur du konfigurerar och använder CySecureTools finns i README-filen i github-arkivet.
Ett verktyg som IoT-utvecklare kommer att finna användbart är stöd för AWS med FreeRTOS. Github-arkivet innehåller användbara exempel för att använda FreeRTOS och AWS med PSoC 64. Det första exemplet som utvecklare kan vara intresserade av är programmet "Hello World" som överför MQTT-meddelanden från PSoC 64 till AWS-molnet. Med det här exemplet kan utvecklaren gå igenom driftsättningsprocessen, nyckelgenereringen och installationsfaserna. I slutet av exemplet har utvecklaren en säker inbäddad enhet som är ansluten till AWS. Detaljer om hur du kommer igång finns i guiden Komma igång med CY8CKIT-064S0S204343.
Säkra applikationer med Trusted Firmware-M (TF-M)
PSoC 64 ger utvecklare ett färdigt ramverk för säkerhet som enkelt kan anpassas för en applikation. Utvecklare kan finna det användbart att förstå vad som händer bakom kulisserna ur ett programvaruperspektiv. Firmware i PSoC 64 drar nytta av ett säkerhetsramverk med öppen källkod som kallas Trusted Firmware-M, eller TF-M.
TF-M är en referensimplementation av säkerhetsramverket Arm PSA IoT. Den förser utvecklare med användbara säkerhetsverktyg som till exempel enhetsattest, firmware-verifiering, kryptografitjänster, hantering av enhetshemligheter och säker partitionering, för att nämna några exempel. Cypress använde TF-M för att bygga sitt säkerhetsramverk så att utvecklare kan använda det i sina applikationer.
Utvecklare kan ändra sitt säkerhetsramverk genom att lägga till egen kod, lägga till säkerhetsprofiler och mycket mer. Det är dock viktigt att komma ihåg att ju mer programvaran i den säkra bearbetningsmiljön ändras, desto större är risken för att en sårbarhet läggs till. Utvecklare måste noggrant överväga riskerna i samband med ändringar, tillägg eller borttagningar av baslinjens firmware.
Tips och tricks för att skydda inbäddade tillämpningar
Utvecklare som för första gången vill skydda sina inbyggda applikationer har mycket att tänka på. Här finns flera "tips och tricks" som kan förenkla och påskynda utvecklingen:
- Gör en hotmodell och säkerhetsanalys (TMSA) tidigt i utvecklingscykeln.
- Använd ett utvecklingskort för att testa enhetens RoT, Secure Bootloader, enhetens driftsättningsprocess och uppdateringar av firmware.
- Implementera inte säkerhet på egen hand! Utnyttja befintlig öppen källkod och säkra firmware-stackar för att minimera omarbetning.
- Tänk igenom enhetens livscykel, inklusive hur den ska tas ur bruk på ett säkert sätt.
- Utforska verktyg som CySecureTools; sådana verktyg innehåller exempel på säkerhetsmallar, programvara och exempel.
- När du klonar förrådet för FreeRTOS på github ska du klona den senaste taggade versionen. Kloning av den aktiva huvudlinjen leder ofta till att man hittar verktygsinkompatibilitet och programfel som fortfarande är under utveckling.
- Starta ett projekt genom att gå igenom Kom igång i Cypress CY8CKIT-064S0S0S2-4343W. Den innehåller all nödvändig information för att få igång en baslinjeapplikation som sedan kan ändras för specifika produktändamål.
Utvecklare som följer dessa "tips och tricks" kommer att upptäcka att de sparar en hel del tid och problem.
Sammanfatttning
Säkerhet behöver inte vara svårt. Utvecklare av inbäddade produkter bör fokusera på vad som skiljer deras produkter åt, deras hemliga trick. I de flesta fall är det inte säkerhet. Artikeln undersöker hur PSoC 64 kan göra det lättare för utvecklare att snabbt skydda sina applikationer genom att inte bara tillhandahålla en hårdvarubaserad isoleringsmiljö utan även ett ramverk av mjukvaruverktyg. Tillsammans ger hård- och mjukvarulösningarna utvecklare en snabbare utvecklingscykel för säkerhet.
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.

