Sikring av integrerte systemer ved å bruke PSOC 64
Bidrag fra DigiKeys nordamerikanske redaktører
2022-07-27
Antall produkter som kobles til Internett fortsetter å vokse med eksponentiell hastighet. Problemet som mange produktteam står overfor, er at utviklere av integrert programvare ikke har tilstrekkelig sikkerhetserfaring. Mangel på erfaring kan føre til neglisjerte sikkerhetskrav, sikkerhetshull og mangelfull implementering. Resultatet er tilkoblede systemer som er dårlig beskyttet, noe som betyr at de er lavthengende frukt for tyveri av åndsverk, informasjon om enheter og brukerdata.
Utviklere av mikrokontrollerbaserte systemer har flere tilgjengelig løsninger som kan brukes til å forenkle sikkerhetsimplementeringer og levere verktøyene som trengs for å gjøre dette på en vellykket måte. Mikrokontrollere med én kjerne kan for eksempel bruke Arm sin TrustZone, som er en del av (blant annet) Armv8-M-arkitekturen. Det finnes også løsninger med flerkjernede mikrokontrollere.
Denne artikkelen viser hvordan utviklere kan bruke flerkjerneprosessorer til å sikre de integrerte løsningene sine. Den ser nærmere på den sikre mikrokontrolleren Cypress PSoC 64 og verktøyene den tilbyr for å implementere en sikker løsning.
Grunnleggende om integrert sikkerhet
Et av de grunnleggende prinsippene for å utvikle et sikkert produkt, er å utnytte maskinvarebasert isolasjon. Denne isolasjonen kan komme i mange forskjellige typer, for eksempel et isolert eksekveringsmiljø eller isolert minne basert på en minnebeskyttelsesenhet (MPU – memory protection unit). På høyeste nivå må en mikrokontroller være i stand til å dele opp eksekveringsmiljøet i et sikkert prosesseringsmiljø (SPE – secure processing environment) og et usikkert prosesseringsmiljø (NSPE – non-secure processing environment).
Et SPE-miljø er et isolert eksekveringsmiljø som holder eget minne, egne komponenter og egen programkode atskilt fra NSPE-miljøet. SPE-miljøet kan ses på som en sikkerhetsprosessor. SPE-miljøet kjører sikker kode og drift, for eksempel et sikkert operativsystem og/eller en RoT (root-of-trust). SPE-miljøet vil også utføre trygge tjenester (trusted services) som kryptografi, sikker lagring, attestering og sikker logging. Et begrenset antall trygge programmer (trusted programs) knyttet til sikker drift vil kjøre i SPE-miljøet.
NSPE-miljøet kan på sin side ses på som det funksjonsrike eksekveringsmiljøet som kjører alt, bortsett fra sikker drift. NSPE-miljøet er faktisk den kjente programmeringsmodellen som de fleste integrasjonsutviklere er vant til. Det har et RTOS (sanntidsoperativsystem) og flesteparten av programmets komponenter.
Maskinvarebasert isolasjon er en av de viktigste prinsippene, eller anbefalt fremgangsmåte, levert av Arm® Platform Security Architecture (PSA) for å bygge sikre systemer. De forskjellige isolasjonslagene som vi nettopp tok for oss vises implementert i figur 1, med PSOC 64 som eksempel. I dette eksempelet produserer SPE-miljøet og NSPE-miljøet (1) maskinvareisolasjon ved å ha kjøretidsmiljøene (run-time environments) på separate prosessorer. I tillegg til å skille kjøretid, er RoT og trygge tjenester ytterligere isolert (2). Til slutt isoleres også alle trygge programmer i SPE-miljøet ved å bruke verktøy som trygge partisjoner (trusted partitions) og MPU-er (3).
Figur 1: Et sikkert program bruker maskinvarebasert isolasjon for å skille eksekveringsmiljøer. 1) NSPE og SPE er isolert 2) RoT og trygge tjenester er isolert 3) trygge programmer er isolert. (Bildekilde: Arm/Cypress)
PSoC 64 er en tokjernet mikrokontroller der NSPE-miljøet eksekveres på en Arm Cortex®-M4-prosessor, og SPE-miljøet eksekveres på en Arm Cortex-M0+-prosessor. Arm Cortex-M0+ kjører alle sikkerhetsfunksjonene og kan kommunisere med Cortex-M4 via en IPC-buss (IPC – inter-processor communication). Arkitekturen begrenser tilgangen til SPE-miljøet, som er maskinvareisolert.
For å komme i gang med PSOC 64 kan utviklere velge å bruke PSOC 64 Secure Boot Pioneer Kit.
PSoC 64 Secure Boot Pioneer Kit
PSoC 64 Secure Boot Pioneer Kit (figur 2) har alt utviklere trenger for å komme i gang med sikring av programmene sine. For det første har den en PSoC 64-modul som har PSoC 64-mikrokontrolleren, eksternt minne og alle støttekretsene (vist i rødt). Det eksterne minnet kan brukes til å lagre programkode eller lagre nye fastvarebilder (firmwareimage) for sikre trådløse FOTA-oppdateringer (FOTA – firmware-over-the-air).
Figur2: PSoC 64 Secure Boot Pioneer Kit har alt utviklere trenger for å komme i gang med å sikre programmene sine. (Bildekilde: Cypress)
Deretter har den en Wi-Fi-modul som gjør det mulig for utviklere å koble kortet til et nettverk. Wi-Fi-modulen er spesielt nyttig for IoT-programmer der kortet vil kobles til skytjenester som AWS eller Azure. Utviklingskortet støtter Amazon FreeRTOS, som vi vil ta for oss i neste avsnitt.
Til slutt støtter Pioneer Kit et bredt spekter av utvidelsesmuligheter, for eksempel stiftlister med pinner, Arduino-stiftlister og et utvalg av sensorer. Utviklere kan dra nytte av den integrerte berøringsglidebryteren og berøringsknappene, trykknappene, potensiometeret og mye mer. Kortet er også konfigurert slik at det enkelt kan tilpasses til nesten alle typer bruksområder.
PSoC 64 Secure Software Suite
Det kan være tidkrevende og utfordrende å utvikle et sikkert integrert program. Utviklere bør være på utkikk etter løsninger som bidrar til å redusere kostnader og tiden det tar å få det endelige produktet ut på markedet, samtidig som de sørger for at konstruksjonen er sikker. For å hjelpe til med dette, tilbyr PSoC 64 et bredt spekter av programvare som gjør det mulig for utviklere å raskt utvikle et sikkert program.
For eksempel gir CySecureTools utviklere et verktøysett som muliggjør oppretting av nøkler og sertifikater, og som kommer med verktøy for signering av brukerprogrammer og klargjøring av Cypress-mikrokontrollere. Verktøyet gjør det mulig for utviklere å overføre Cypress RoT og deretter legge inn sine egne sikkerhetsressurser. Du finner informasjon om hvordan du konfigurerer og bruker CySecureTools i README-filen i github-programvarelageret.
Et verktøy som IoT-utviklere vil finne nyttig, er støtte for AWS ved å bruke FreeRTOS. Github-arkivet inneholder nyttige eksempler på bruk av FreeRTOS og AWS med PSOC 64. Det første eksemplet utviklerne vil være interessert i, er «Hello World»-programmet som sender MQTT-meldinger fra PSOC 64 til AWS-skyen. Dette eksemplet gir utvikleren muligheten til å gå gjennom klargjøringsprosessen, nøkkelgenereringen og distribusjonsfasene. På slutten av eksemplet har utviklerne en sikker integrert enhet som er koblet til AWS. Du finner informasjon om hvordan du kommer i gang i veiledningen for settet, Komme i gang med CY8CKIT-064S0S204343.
Sikre programmer med trygg fastvare TF-M (TF-M – Trusted Firmware-M)
PSoC 64 gir utviklere et bruksklart sikkerhetsrammeverk som enkelt kan tilpasses en konstruksjon. Utviklere kan finne det nyttig å forstå hva som foregår bak kulissene fra et programvareperspektiv. Nærmere bestemt utnytter PSoC 64-fastvaren et grunnleggende sikkerhetsrammeverk med åpen kildekode, kjent som Trusted Firmware-M, eller TF-M.
TF-M er en referanseimplementering av sikkerhetsrammeverket Arm PSA IoT Security Framework. Det gir utviklere nyttige sikkerhetsverktøy som enhetsbekreftelse, fastvareverifisering, kryptografitjenester, hemmelig administrasjon av enheter og sikker partisjonering, for å nevne noen. Cypress utnyttet TF-M til å bygge sitt sikkerhetsrammeverk, slik at utviklere så kan bruke det i programmene sine.
Utviklere kan endre sikkerhetsrammeverket sitt ved å legge til sin egen kode, legge til sikkerhetsprofiler og mye mer. Det er imidlertid viktig å huske på at jo mer SPE-programvaren modifiseres, desto større er sjansen for at en sårbarhet vil bli lagt til. Utviklere må være nøye når de veier risikoene forbundet med endringer, tilføyelser eller fratrekkelser på grunnleggende fastvare.
Tips og triks for sikring av integrerte programmer
Utviklere som ønsker å sikre de integrerte programmene sine for første gang, har mye å ta hensyn til. Her er flere «tips og triks» som kan forenkle og fremskynde utviklingen:
- Utfør en trusselmodell og sikkerhetsanalyse (TMSA) tidlig i utviklingssyklusen.
- Bruk et utviklingskort til å teste enhetens RoT, sikre oppstartslaster (bootloader), klargjøringsprosess for enheter og fastvareoppdateringer.
- Iverksett ikke sikkerhetstiltak alene! Utnytt eksisterende åpen kildekode og sikre fastvarestakker for å minimere bearbeiding.
- Sørg for å tenke gjennom enhetens livssyklus, inkludert hvordan den kan tas ut av drift på en sikker måte.
- Utforsk verktøy som CySecureTools. Slike verktøy kommer med eksempler på sikkerhetsmaler, programvare og eksempler.
- Når du kloner FreeRTOS github-arkivet, kloner du den nyeste merkede versjonen. Kloning av den aktive hovedlinjen resulterer ofte i funn av verktøyinkompatibilitet og feil som fortsatt pågår.
- Start et prosjekt ved å gå gjennom Kom-i-gang med Cypress CY8CKIT-064S0S2-4343W-settet. Dette gir all nødvendig informasjon som trengs for å komme i gang med et grunnleggende program, som deretter kan endres for spesifikke produktformål.
Utviklere som følger disse «tipsene og triksene» vil oppdage at de kan spare ganske mye tid og stress.
Konklusjon
Sikkerhet trenger ikke å være vanskelig. Integrasjonsutviklere bør fokusere på hvordan produktet skiller seg ut – den hemmelige ingrediensen. I de fleste tilfeller er ikke dette sikkerhet. Denne artikkelen så på hvordan PSOC 64 kan hjelpe utviklere med å sikre programmene sine raskt ved å ikke bare levere et maskinvarebasert isolasjonsmiljø, men ved å tilby et rammeverk av programvareverktøy. Når maskinvare- og programvareløsningene kombineres, gir de utviklere en akselerert sikkerhetsutviklingssyklus.
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.

