Klik hier voor de Engelse versie van de broncode.

Embedded systemen beveiligen met de PSoC 64

Door Jacob Beningo

Bijgedragen door De Noord-Amerikaanse redacteurs van DigiKey

Het aantal producten dat op het internet wordt aangesloten, blijft exponentieel toenemen. Het probleem van veel productteams is dat ontwikkelaars van embedded software niet voldoende ervaring hebben met beveiliging. Gebrek aan ervaring kan leiden tot over het hoofd geziene beveiligingseisen, leemten in de beveiliging en slechte implementatie. Het resultaat is dat aangesloten systemen slecht worden beschermd en laaghangend fruit zijn voor diefstal van intellectuele eigendom, samen met apparaat- en gebruikersgegevens.

Ontwerpers van op microcontrollers gebaseerde systemen hebben diverse oplossingen tot hun beschikking die kunnen worden gebruikt om de implementatie van beveiliging te vereenvoudigen en hun de instrumenten te verschaffen om dit met succes te doen. Zo kunnen single-core microcontrollers gebruik maken van Arm's TrustZone, dat deel uitmaakt van de Armv8-M-architectuur (en verder). Er zijn ook oplossingen met multicore microcontrollers.

Dit artikel laat zien hoe ontwikkelaars multicore processors kunnen gebruiken om hun embedded oplossingen te beveiligen. Specifiek wordt ingegaan op de Cypress PSoC 64 beveiligde microcontroller en de tools die deze biedt om een beveiligde oplossing te implementeren.

Grondbeginselen van embedded beveiliging

Een van de basisprincipes bij het ontwerpen van een veilig product is het gebruik van hardware-gebaseerde isolatie. Deze isolatie kan vele vormen aannemen, zoals een geïsoleerde uitvoeringsomgeving, of geïsoleerd geheugen op basis van een geheugenbeschermingseenheid (MPU). Op het hoogste niveau moet een microcontroller in staat zijn zijn uitvoeringsomgeving te scheiden in een beveiligde verwerkingsomgeving (SPE) en een niet-beveiligde verwerkingsomgeving (NSPE).

Een SPE is een geïsoleerde uitvoeringsomgeving die zijn geheugen, componenten en applicatiecode gescheiden houdt van het NSPE. De SPE kan worden beschouwd als een beveiligingsprocessor. De SPE voert beveiligde code en bewerkingen uit, zoals een beveiligd besturingssysteem en/of een root-of-trust (RoT). De SPE zal ook vertrouwde diensten uitvoeren, zoals cryptografie, veilige opslag, attestatie en veilige logging. Een beperkt aantal vertrouwde toepassingen in verband met veilige operaties zal in de SPE draaien.

Het NSPE van zijn kant kan worden beschouwd als een uitvoeringsomgeving met veel mogelijkheden waarop alles draait, behalve veilige operaties. In feite is het NSPE het vertrouwde programmeermodel waaraan de meeste embedded ontwikkelaars gewend zijn; het heeft een RTOS en de meeste componenten van de toepassing.

Hardware-isolatie is een van de kernprincipes, of beste praktijken, van de Arm® Platform Security Architecture (PSA) om veilige systemen te bouwen. De verschillende isolatielagen die we net besproken hebben, zijn geïmplementeerd in Afbeelding 1, met de PSoC 64 als voorbeeld. In dit voorbeeld zorgen de SPE en de NSPE (1) voor hardware-isolatie door de runtime-omgevingen op afzonderlijke processoren te plaatsen. Naast de scheiding van de runtime worden de RoT en de Trusted Services verder geïsoleerd (2). Ten slotte wordt elke vertrouwde toepassing in de SPE ook geïsoleerd met behulp van instrumenten zoals vertrouwde partities en MPU's (3).

Schema van veilige toepassing maakt gebruik van hardware-gebaseerde isolatieAfbeelding 1: Een veilige toepassing maakt gebruik van hardware-gebaseerde isolatie om uitvoeringsomgevingen te scheiden. 1) NSPE en SPE zijn geïsoleerd 2) RoT en vertrouwensdiensten zijn geïsoleerd 3) Vertrouwensapplicaties zijn geïsoleerd. (Bron afbeelding: Arm/Cypress)

De PSoC 64 is een dual-core microcontroller waarbij de NSPE wordt uitgevoerd op een Arm Cortex®-M4-processor, en de SPE wordt uitgevoerd op een Arm Cortex-M0+ processor. De Arm Cortex-M0+ voert alle beveiligingsfuncties uit en kan met de Cortex-M4 communiceren via een interprocessor communicatie (IPC) bus. De architectuur beperkt de toegang tot de SPE, die hardwarematig geïsoleerd is.

Om aan de slag te gaan met de PSoC 64, zullen ontwikkelaars de PSoC 64 Secure Boot Pioneer Kit willen uitproberen.

De PSoC 64 Secure Boot Pioneer Kit

De PSoC 64 Secure Boot Pioneer Kit (Afbeelding 2) heeft alles wat ontwikkelaars nodig hebben om aan de slag te gaan met het beveiligen van hun applicaties. Ten eerste is er een PSoC 64-module met de PSoC 64-microcontroller, extern geheugen en alle ondersteunende circuits (in rood afgebeeld). Het externe geheugen kan worden gebruikt voor de opslag van applicatiecode of voor de opslag van nieuwe firmware-images voor veilige firmware-over-the-air (FOTA) updates.

Afbeelding van PSoC 64 Secure Boot Pioneer KitAfbeelding 2: De PSoC 64 Secure Boot Pioneer Kit heeft alles wat ontwikkelaars nodig hebben om aan de slag te gaan met het ontwikkelen van veilige IoT-toepassingen. (Bron afbeelding: Cypress)

Verder heeft het een Wi-Fi-module waarmee ontwikkelaars het bord op een netwerk kunnen aansluiten. De Wi-Fi-module is vooral nuttig voor IoT-toepassingen waarbij het bord verbinding zal maken met cloud-diensten zoals AWS of Azure. Het ontwikkelingsbord ondersteunt Amazon FreeRTOS, dat we in de volgende sectie zullen bespreken.

Ten slotte ondersteunt de Pioneer Kit een brede waaier van uitbreidingsmogelijkheden, zoals pin-headers, Arduino-headers en een reeks sensors. Ontwikkelaars kunnen gebruik maken van de on-board touch slider en aanraaktoetsen, drukknoppen, potentiometer, en nog veel meer. De printplaat is ook zo geconstrueerd dat aanpassing aan vrijwel elke toepassing vrij eenvoudig is.

De PSoC 64 Secure Software Suite

Het ontwerpen van een veilige embedded applicatie kan tijdrovend en uitdagend zijn. Ontwikkelaars moeten op zoek gaan naar oplossingen die de kosten en de time-to-market verlagen en tegelijk de veiligheid van hun toepassing garanderen. Om hierbij te helpen, biedt de PSoC 64 een brede waaier aan software waarmee ontwikkelaars snel een veilige toepassing kunnen bouwen.

De CySecureTools biedt ontwikkelaars bijvoorbeeld een toolset voor het maken van sleutels en certificaten, evenals tools voor het ondertekenen van gebruikerstoepassingen en het voorzien van Cypress-microcontrollers. Met de tool kunnen ontwikkelaars de Cypress RoT overnemen en vervolgens hun eigen beveiligingsmiddelen injecteren. Informatie over het instellen en gebruiken van CySecureTools kan worden gevonden in het README bestand van de github-repository.

Een tool dat IoT-ontwikkelaars nuttig zullen vinden is ondersteuning voor AWS met behulp van FreeRTOS. De github-repository bevat nuttige voorbeelden voor het gebruik van FreeRTOS en AWS met de PSoC 64. Het eerste voorbeeld dat ontwikkelaars zou kunnen interesseren is de "Hello World" toepassing die MQTT-berichten verstuurt van de PSoC 64 naar de AWS-cloud. Met dit voorbeeld kan de ontwikkelaar het provisioneringsproces, de sleutelgeneratie en de uitrolfasen doorlopen. Aan het eind van het voorbeeld hebben ontwikkelaars een veilig ingebed apparaat dat verbonden is met AWS. Details over hoe u aan de slag kunt, vindt u in de Aan de slag met CY8CKIT-064S0S204343-kithandleiding.

Beveiligde toepassingen met Trusted Firmware-M (TF-M)

De PSoC 64 biedt ontwikkelaars een out-of-the-box beveiligingsraamwerk dat gemakkelijk aan een toepassing kan worden aangepast. Ontwikkelaars kunnen het nuttig vinden te begrijpen wat er achter de schermen vanuit softwareperspectief gebeurt. Meer bepaald maakt de PSoC 64-firmware gebruik van een open-source basisbeveiligingsraamwerk dat bekend staat als Trusted Firmware-M, of TF-M.

TF-M is een referentie-implementatie van het Arm PSA IoT Security Framework. Het biedt ontwikkelaars handige beveiligingshulpmiddelen, zoals apparaatattestatie, firmwareverificatie, cryptografische diensten, apparaatgeheimbeheer en veilig partitioneren, om er maar een paar te noemen. Cypress heeft TF-M gebruikt om zijn beveiligingsraamwerk te bouwen, zodat ontwikkelaars het vervolgens in hun toepassingen kunnen gebruiken.

Ontwikkelaars kunnen hun beveiligingsraamwerk aanpassen door hun eigen code toe te voegen, beveiligingsprofielen toe te voegen, en nog veel meer. Het is echter belangrijk in gedachten te houden dat hoe meer de SPE-software wordt gewijzigd, hoe groter de kans is dat er een kwetsbaarheid wordt toegevoegd. Ontwikkelaars moeten zorgvuldig de risico's afwegen die zijn verbonden aan wijzigingen, toevoegingen of onttrekkingen aan de basisfirmware.

Tips en trucs voor het beveiligen van embedded applicaties

Ontwikkelaars die hun ingebedde toepassingen voor het eerst willen beveiligen, moeten met veel zaken rekening houden. Hier zijn enkele "tips and tricks" die de ontwikkeling kunnen vereenvoudigen en versnellen:

  • Vroeg in de ontwikkelingscyclus een dreigingsmodel en veiligheidsanalyse (TMSA) uitvoeren.
  • Gebruik een ontwikkelbord om de RoT van het apparaat, de veilige bootloader, het provisioneringsproces van het apparaat en firmware-updates uit te proberen.
  • Implementeer beveiliging niet alleen! Maak gebruik van bestaande open source en veilige firmware stacks om herbewerking te minimaliseren.
  • Denk goed na over de levenscyclus van het apparaat, en over de manier waarop het veilig buiten gebruik kan worden gesteld.
  • Verken tools zoals de CySecureTools; dergelijke tools worden geleverd met voorbeeldbeveiligingssjablonen, software en voorbeelden.
  • Bij het klonen van de FreeRTOS github-repository, kloon de laatste getagde versie. Het klonen van de actieve hoofdlijn resulteert vaak in het vinden van tool incompatibiliteit en bugs die nog in ontwikkeling zijn.
  • Begin een project door de Aan de slag met de Cypress CY8CKIT-064S0S2-4343W kit te doorlopen. Het verschaft alle nodige informatie om een basistoepassing in werking te stellen die vervolgens kan worden aangepast voor specifieke productdoeleinden.

Ontwikkelaars die deze "tips and tricks" volgen, zullen ondervinden dat zij heel wat tijd en verdriet kunnen besparen.

Conclusie

Beveiliging hoeft niet moeilijk te zijn. Embedded ontwikkelaars moeten zich concentreren op de onderscheidende kenmerken van hun product, hun geheime saus. In de meeste gevallen, is dat geen veiligheid. In dit artikel werd onderzocht hoe de PSoC 64 ontwikkelaars kan helpen hun toepassingen snel te beveiligen door niet alleen een hardware-gebaseerde isolatieomgeving te bieden, maar ook een raamwerk van softwaretools. Samen bieden de hardware- en softwareoplossingen ontwikkelaars een versnelde ontwikkelingscyclus voor beveiliging.

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.

Achtergrondinformatie over deze auteur

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo is een embedded software consultant. Hij heeft meer dan 200 artikelen over embedded software ontwikkelingstechnieken gepubliceerd, is een veelgevraagde spreker en technische trainer en heeft drie universitaire graden, waaronder een Masters of Engineering bij de University of Michigan.

Over deze uitgever

De Noord-Amerikaanse redacteurs van DigiKey