Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial Internet of Things >> Cloud computing

Hoe u de Arm TrustZone-beveiligingsfuncties van de LPC5500 kunt benutten

Leer hoe de Arm TrustZone-extensie voor de LPC5500-serie werkt en hoe u de veiligheidsmaatregelen in aangepaste beveiligde en niet-beveiligde applicaties kunt gaan gebruiken.

Met steeds meer verbonden apparaten en de toenemende verfijning van hackers, hebben veel bedrijven, zoals NXP Semiconductors, de noodzaak ingezien van tegenmaatregelen. NXP heeft de LPC5500 MCU-serie ontwikkeld, die wordt geleverd met verbeterde beveiligingsfuncties die kunnen worden gebruikt om embedded projecten te beschermen.

NXP heeft een FIPS-compatibele generator voor willekeurige getallen gebruikt, het "Prince"-decoderingsalgoritme geselecteerd (waardoor de kern symmetrisch gecodeerde code kan uitvoeren) en ze hebben een 4096-bits kortstondige on-chip-sleutel met PUF-technologie geïmplementeerd. In combinatie met de on-chip cryptografische hardwareversneller 'CASPER', zijn LPC5500 MCU's geschikt voor edge-of-the-network IoT-toepassingen die robuuste tegenmaatregelen voor cyberbeveiliging en sleutelvoorziening voor de hele levenscyclus vereisen.

Bovendien maakt de chip gebruik van de Arm TrustZone-technologie voor op Cortex-M gebaseerde apparaten. In dit artikel leest u hoe de TrustZone-extensie van de LPC5500-serie werkt en hoe u aan de slag kunt gaan met de veiligheidsmaatregelen in aangepaste toepassingen.

Wat is Arm TrustZone-technologie voor Cortex-M?

Het kernprincipe van TrustZone kan het beste worden uitgelegd aan de hand van een voorbeeld. De MCU-fabrikant levert vaak aangepaste eigen code, zoals beveiligingsbibliotheken, een bootloader of snelle DSP-algoritmen in het ROM van de microcontroller. De auteurs van deze applicaties hebben echter vaak goede redenen om hun intellectuele eigendom te beschermen - ze willen misschien niet dat gebruikers of concurrenten de binaire bestanden decompileren om de algoritmen te reverse-engineeren.

Enerzijds willen programmeurs gebruik maken van deze voorgedefinieerde softwarebibliotheken. Aan de andere kant wil de fabrikant echter niet dat de code wordt blootgesteld aan een mogelijk kwaadwillende partij.

Figuur 1. De niet-beveiligde gebruikerscode en de beveiligde ROM-inhoud bevinden zich op dezelfde fysieke MCU.

De leverancier wil implementatiedetails verbergen, maar er toch voor zorgen dat ontwikkelaars toegang hebben tot de functies. De gebruikerscode kan de blootgestelde methoden van de verborgen software oproepen, maar heeft geen directe toegang tot het geheugen dat eigendom is van het beveiligde ROM. Het resultaat is een structuur die bestaat uit twee geïsoleerde subsystemen. Overgangen tussen die twee werelden worden beheerd door de TrustZone-beveiligingsextensie.

Dit betekent dat een microcontroller die TrustZone gebruikt, als twee afzonderlijke projecten wordt ontworpen. Het eerste project start in de Secure-status. Het configureert vervolgens de beveiligingsattributies voor on-chip-bronnen en kan beveiligde functies publiceren in een tabel die toegankelijk is vanuit de niet-beveiligde staat. De tweede bevat de niet-beveiligde code en heeft beperkte toegang tot de blootgestelde functies van de beveiligde wereld.

Verschillen met eerdere architecturen

De Cortex-M3- en -M4-cores kennen twee processormodi:thread-modus en handler-modus. Applicatiesoftware draait in thread-modus en de handler-modus behandelt uitzonderingen. Code kan werken op een geprivilegieerd of niet-geprivilegieerd niveau, dat de toegang tot bepaalde CPU-functies regelt.

Met de TrustZone-extensie in Cortex-M33-kernen werden twee nieuwe toestanden geïntroduceerd, zoals hierboven besproken. Die verandering resulteerde in vier verschillende processormodi:niet-beveiligde handler, beveiligde handler-modus, niet-beveiligde thread en beveiligde thread.

Figuur 2. De TrustZone-extensie in de M33-core creëert vier processormodi.

Naast andere updates zijn er ook nieuwe SysTick-timers geïntroduceerd met de nieuwe statussen. Dus nu zijn er aparte timers voor de beveiligde toestand en de niet-beveiligde toestand.

Geheugenpartitie

Zoals eerder vermeld, wordt het geheugen van de MCU opgedeeld in beveiligde en niet-beveiligde gebieden. De CPU-kern van de MCU heeft alleen toegang tot beveiligde geheugenregio's als deze in een van de beveiligde modi werkt. Het heeft geen toegang tot instructies die zich in andere geheugenpartities bevinden. Het kan echter veilige en niet-beveiligde segmenten van het gegevens-RAM lezen en schrijven. Als de CPU-kern zich in een niet-beveiligde staat bevindt, heeft deze alleen toegang tot de niet-beveiligde instructie- en gegevensgeheugenblokken.

TrustZone verfraait adresbereiken in de geheugenkaart met beveiligingsattributies. Er zijn drie beveiligingsattributen:beveiligd (S), niet-beveiligd (NS) en niet-beveiligd oproepbaar (NSC). Toegang tot elk geheugengebied is toegestaan ​​of geweigerd, afhankelijk van de huidige beveiligingsstatus van de kern.

Figuur 3. De CPU heeft toegang tot verschillende gebieden in beveiligde en niet-beveiligde modus.

Op het LPC55S69-apparaat was het geheugen gesplitst in beveiligde en niet-beveiligde segmenten op basis van adres. Als het geheugenadresbit 28 LAAG is, is het geheugen niet beveiligd. Anders is het veilig. De enige uitzondering is het programmageheugen, dat kan worden geconfigureerd via de Security Attribution Unit.

De bouwstenen van een veilige applicatie

De niet-beveiligde code kan geen directe oproepen doen naar het beveiligde deel van de applicatie. In plaats daarvan geeft het beveiligde deel een lijst met functies weer waartoe een gebruiker toegang heeft. Die lijst wordt fineertafel genoemd omdat het een heel dunne laag is die van buitenaf zichtbaar is, maar de innerlijke details verbergt. De fineertabel bevindt zich in een geheugengebied met het TrustZone-attribuut NonSecure Callable.

Meestal is de bron van het beveiligde deel niet zichtbaar. In plaats daarvan wordt het gecompileerd, waardoor een objectbibliotheek en de fineertabel als een headerbestand worden weergegeven. Merk op dat geen van deze bestanden de echte instructies bevat, maar samen bevatten ze de informatie die nodig is om beveiligde functies aan te roepen. De fineertabel bevat alleen een gateway en een vertakkingsinstructie naar de beveiligde geheugenlocatie waar de echte instructies zich bevinden.

Overgang tussen beveiligde en niet-beveiligde functies

CPU's met de TrustZone-extensie ondersteunen twee nieuwe functies voor de overgang tussen beveiligd en niet-beveiligd:de SG- en BXNS-instructie.

Wanneer de gebruikerscode een beveiligde functie wil, belt deze via de fineertabel, die zich in het NSC-gedeelte van het geheugen bevindt. De SG-instructie wordt dan gebruikt om de CPU in een beveiligde modus te schakelen. Wanneer de uitvoering is voltooid, wordt de besturing teruggestuurd naar de gebruikerscode met de BXNS-instructie:

Figuur 4. De gebruikerscode moet een beveiligde functie aanroepen via de TrustZone-gatekeeper.

Als de gebruiker een illegale beveiligingsbewerking probeert, zoals directe toegang tot een beveiligd gebied, wordt een uitzondering voor een beveiligde fout gegenereerd.

Een veilig Hello World-voorbeeld

De SDK voor de LPCXpresso55S69 wordt geleverd met een paar TrustZone-voorbeelden die in MCUXpresso kunnen worden geladen. Zoals eerder vermeld, bestaan ​​deze voorbeelden uit twee afzonderlijke projecten:het beveiligde deel en de niet-beveiligde gebruikerscode.

Het beveiligde gedeelte ziet er bijna precies hetzelfde uit als elk ander MCUXpresso-project. Er is echter één verschil, namelijk de volgende functieaanroep:

Deze functie moet zo vroeg mogelijk worden aangeroepen. Daarna is het de verantwoordelijkheid van het beveiligde project om het geheugen en het niet-beveiligde project te configureren:

Omdat het beveiligde project alle setup-aanroepen afhandelt, hoeft het niet-beveiligde project dat niet te doen, dus de hoofdfunctie is kort:

Deze toepassing roept echter alleen beveiligde functies aan die in het andere project zijn gedefinieerd. De volgende definitie voor de functie PRINTF_NSE is zoals weergegeven:

Als die definitie wordt gevolgd, verwijst het naar de fineertabel, gedefinieerd in het beveiligde project. Het is belangrijk om te onthouden dat het niet-beveiligde project alleen het headerbestand kent dat de fineertabel beschrijft. In dit geval kunnen we echter de bijbehorende functie in de broncode bekijken:

De "__attribute__((cmse_nonsecure_entry))" decoratie dwingt de functie om te worden geëxporteerd naar het objectbestand.

Het geheugen partitioneren

Beveiligingskenmerken bepalen welke delen van het geheugen beveiligd, NSC of onbeveiligd zijn. Deze worden bij elke toegang gecontroleerd. Voor dat doel werd de MCU uitgebreid met hardware die deze controles afhandelt en uit drie logische blokken bestaat:

  1. Security Attribution Unit (SAU)
  2. Implementatie Defined Attribution Unit (IDAU)
  3. Beveiligingsattributielogica

De SAU wordt geprogrammeerd door het beveiligde project binnen de BOARD_InitTrustZone()-functie. Hierdoor kan het geheugen worden gepartitioneerd in acht regio's met verschillende beveiligingsinstellingen. Merk op dat elke regio die niet expliciet is ingesteld, standaard veilig blijft.

Met de IDAU kan de MCU-fabrikant - in dit geval NXP - meer aangepaste regio's definiëren. Hier zijn de regio's afhankelijk van het 28e bit van het adres. Op de LPC55S69 MCU is de onderkant van de geheugenmap (0x0000_0000 tot 0x2FFF_FFFF) standaard niet-beveiligd, dus het is gratis te configureren met de SAU.

De arbiter zorgt ervoor dat de IDAU- en SAU-instellingen overeenkomen. Om een ​​geheugengebied als onbeveiligd te markeren, moeten beide logische blokken op niet-beveiligd worden ingesteld. Anders valt het geheugen terug naar de standaard beveiligde status. Hetzelfde geldt voor de NSC-geheugengebieden. Om een ​​sectie NSC te laten zijn, moet de SAU zijn gemarkeerd als NSC en moet de IDAU zijn ingesteld op niet-beveiligd.

Er is een tool binnen MCUXpresso waarmee de gebruiker snel en eenvoudig geheugenregio's kan definiëren. Om toegang te krijgen tot de tool, gebruikt u de hoofdmenubalk van de IDE en opent u het TEE-perspectief:

Figuur 5. Met deze MCUXpresso-tool kan de gebruiker de geheugenkaart van de MCU bekijken en bewerken.

De tabel aan de linkerkant van de tool kan het beveiligingsniveau van geheugenregio's wijzigen. De geheugenkaart aan de rechterkant illustreert hoe het geheugen wordt gepartitioneerd.

TrustZone biedt een noodzakelijke beveiligingscomponent

Op de LPC5500 MCU-serie met TrustZone-technologie is het geheugen opgesplitst in een veilige en een niet-beveiligde wereld - het is mogelijk om gebruikers toegang te geven tot delen van het niet-beveiligde geheugen, en een beveiligde applicatie kan ook worden geschreven om te worden gebruikt door anderen. TrustZone fungeert als poortwachter tussen de twee werelden en beheert hoe de kern tussen beide werelden overgaat.

Daartoe zijn twee nieuwe instructies geïntroduceerd. De beveiligde applicatie biedt een fineertabel die de functies blootlegt die kunnen worden aangeroepen vanuit de niet-beveiligde context. De hardware in de MCU zorgt ervoor dat er geen illegale geheugentoegangsbewerkingen worden uitgevoerd. Deze hardware kan ook worden gebruikt om de regio's in de geheugenkaart te configureren. Daarvoor biedt MCUXpresso het TEE-perspectief. Een beter begrip van de beveiliging van de LPC5500-serie MCU's zorgt voor een betere ontwerpervaring. Meer informatie over TrustZone is te vinden door TrustZone:Calling the Secure World te bekijken.

Industrieartikelen zijn een vorm van inhoud waarmee branchepartners nuttig nieuws, berichten en technologie kunnen delen met lezers van All About Circuits op een manier waarop redactionele inhoud niet goed geschikt is. Alle brancheartikelen zijn onderworpen aan strikte redactionele richtlijnen met de bedoeling de lezers nuttig nieuws, technische expertise of verhalen te bieden. De standpunten en meningen in brancheartikelen zijn die van de partner en niet noodzakelijk die van All About Circuits of zijn schrijvers.


Cloud computing

  1. Cloud en hoe het de IT-wereld verandert
  2. Cloudbeveiliging is de toekomst van cyberbeveiliging
  3. Hoe word je een cloudbeveiligingsingenieur
  4. Waarom de toekomst van gegevensbeveiliging in de cloud programmeerbaar is
  5. Hoe cloudtechnologie te beveiligen?
  6. Cloudbeveiligingsrisico's beheren
  7. Hoe hackers de cloud hacken; Voeg meer beveiliging toe aan uw cloud met AWS
  8. Hoe slaag je voor het Google Cloud Engineer-examen?
  9. DevOps implementeren in de cloud
  10. Hoe u ERP naar de cloud migreert
  11. Hoe profiteert u van de voordelen van de openbare cloud