Het schrijven van een eenvoudige inleiding over beveiliging en gegevensintegriteit in relatie tot internet en IoT is niet eenvoudig. Bij veel producten en applicaties wordt er geadverteerd met veiligheid en onveranderlijkheid van de gegevens. Maar wat daarachter zit en welke moeite het kost om producten te ontwikkelen die voldoen aan de eisen en verwachtingen van de gebruikers blijft vaak verborgen. Pas wanneer je als ontwikkelaar zelf voor de taak staat om dergelijke features in je producten te implementeren doemen de problemen op in al hun complexiteit. Ook is het niet altijd makkelijk om de firmware van het geleverde apparaat tegen ongewenste manipulatie te beschermen, vooral bij het ontvangen van updates en configuratiegegevens van een externe server.

Wanneer u zich gaat verdiepen in het thema veilige gegevensverbinding en -configuratie (vooral als het gaat om producten die voorgeconfigureerd voor cloudservices moeten worden geleverd) kunt u snel vastlopen in alle informatie en technische vereisten. De NXP EdgeLock SE050E Secure Element opent nieuwe mogelijkheden om dergelijke designs en producten eenvoudiger te implementeren en te beschermen tegen datamanipulatie.

NXP EdgeLock SE050E Secure Element

De EdgeLock SE050E Secure Element van NXP uit de familie van hun Plug & Trust Devices biedt geavanceerde beveiligingsfuncties conform Common Criteria EAL 6+. De exacte specificaties van de SE050E Secure Element zijn te vinden in tabel 1. Om de SE050E Secure Element op een systeem aan te sluiten is een I²C-interface voldoende. De voedingsspanning van de chip bedraagt 1,62 V tot 3,6 V, maar het maximum voor de chip is 6 V, wat ook het gebruik in 5 V systemen mogelijk maakt en het geheel ook geschikt maakt voor retrofitten. Inwendig is de NXP EdgeLock SE050E een kleine SoC (System on Chip) met een Java Card OS en een speciale IoT-applet die ervoor zorgt dat niet alleen cryptografische bewerkingen veilig worden uitgevoerd, maar ook om ongewenst gegevens uitlezen uit de chip te detecteren en tegen te gaan. De SE050E Secure Element kan zo als root-of-trust worden gebruikt om veilige en betrouwbare verbindingen tussen twee systemen tot stand te brengen en de systemen te authenticeren.

 
Das NXP EdgeLock™ SE050E Secure Element
De EdgeLock SoC.
Het voordeel van de NXP EdgeLock SE050E Secure Element is dat hij eenvoudig aan te sluiten is op een microcontroller (MCU) of System on Chip (SoC) met behulp van de I²C-bus. Daar komt bij dat de chip HX2QFN zeer weinig ruimte in beslag neemt en optioneel alleen een 100 nF afvlakcondensator nodig heeft als externe component, en afhankelijk van de MCU of SoC er nog twee pull-up weerstanden nodig kunnen zijn voor de I²C-bus.

 
EdgeLock™ SE050E Secure Element neben RP2040
Vergelijking van de afmeting: EdgeLock SE050E Secure Element naast een RP2040.
De vraag rijst in wat voor soort use cases de NXP EdgeLock SE050E toe te passen is en waarom de Secure Element in een project zou moeten worden gebruikt. Het kan geen kwaad een blik te werpen in het Essentials of Edge Computing eBook om beter te begrijpen hoe de NXP EdgeLock SE050E werkt.

 
Table Review NXP.jpg
Tabel 1: Specificaties van de EdgeLock SE050E Secure Element.
 

Certificaten graag!

Bij veilige communicatie tussen twee partners, in dit geval IoT-systemen, zullen de meesten denken aan cryptografie, echter een essentieel element ontbreekt dan nog. Om dergelijke communicatie echt veilig te maken moeten beide partijen elkaar namelijk vertrouwen en sleutels uitwisselen. Om dit te bereiken zijn er certificaten. Maar wat doet zo'n certificaat?
  
Stel u voor dat er twee nieuwe medewerkers zijn die elkaar nog nooit eerder hebben ontmoet en vanuit hun thuiskantoor werken. De twee medewerkers zijn Jim en Dave. Jim en Dave werken allebei voor Karen. Karen heeft als begeleider het vertrouwen van Jim en Dave, en heeft Jim een opdracht gegeven voor Dave.
  
Jim geeft Dave de opdracht van Karen, die nu vraagt hoe hij er zeker van kan zijn dat de opdracht echt van Karen komt.  Karen heeft echter op de opdracht ook een stempel gezet die alleen Karen bezit en die Jim en Dave kennen. Met een blik op de stempel kan Dave dan controleren of het echt om een order van Karen gaat. Daarnaast controleren zowel Jim als Dave elkaars medewerkerspasjes om er zeker van te zijn dat Jim echt Jim is en Dave echt Dave. Karen heeft ook hier een stempel op gezet. In de hoop dat het niet te abstract was transporteren we dit voorbeeld nu naar de digitale wereld. De stempel die Karen gebruikte komt overeen met een cryptografische sleutel. Net als bij zo'n stempel op kantoor moet deze cryptografische sleutel ook veilig worden opgeslagen, idealiter in een kluis, anders zou iedereen het stempel kunnen pakken en aanbrengen op allerlei documenten. Kort door de bocht neemt de NXP EdgeLock SE050E Secure Element betreffende het bewaren van de cryptografische sleutel de functie van de kluis over.
 
In het voorbeeld zou Jim zou een IoT-sensor kunnen zijn die een temperatuur bewaakt en Dave een cloudprovider, hier Amazon AWS IoT. Karen zou een Certificate Authority (CA) kunnen zijn die certificaten uitgeeft in plaats van stempels.
  
Zodra de IoT-sensor data naar de cloudprovider wil sturen wordt het certificaat van de server van de cloudprovider eerst door de sensor gecontroleerd. De server van de cloudprovider vraagt op dit moment de sensor ook om zijn certificaat om er zeker van te zijn dat deze communicatie opzet met de juiste partij. Nadat beide partijen hebben geverifieerd dat ieders identiteit correct is wordt een gecodeerde verbinding gestart en kan de sensor zijn gegevens verzenden. 
 
Simpel gezegd zijn certificaten de identiteitsdocumenten van de digitale wereld. Aangezien een certificaat echter een bestand is dat gemakkelijk kan worden gekopieerd hebben certificaten, evenals ID-kaarten, beveiligingsfuncties die bedoeld zijn om namaak te voorkomen. In het geval van certificaten zijn het de cryptografische sleutels die dienen als beveiligingsfunctie, zoals bij een niet-vervalste stempel. Net als in de echte wereld moeten identiteitsdiefstal en valsheid in geschrifte ook in de digitale wereld worden voorkomen. 

Certificaten veilig beheren

Iedereen die een Raspberry Pi gebruikt en toepast bij IoT-toepassingen met cloudconnectiviteit, of het nu met Google Cloud Platform, Amazon Web Services of Microsoft Azure is, zal hebben gezien dat er   ook geschikte certificaten op de Raspberry Pi moeten worden geïnstalleerd. Aan elk apparaat kan een afzonderlijk certificaat worden toegewezen, zodat bij compromittering van een certificaat slechts één apparaat wordt getroffen en niet allemaal. Amazon heeft documenten verstrekt die dit proces uitleggen. Bij een Raspberry Pi zouden het certificaat en de cryptografische sleutel echter op een SD-kaart staan. De toegangsgegevens en het certificaat kunnen zo eenvoudig worden gekopieerd.
 
 
De EdgeLock SE050E Secure Element kan hierbij helpen door een veilige omgeving te bieden voor het verwerken van cryptografische sleutels en certificaten. In de chip kan tot 50 kB geheugen worden gebruikt om certificaten en sleutels op te slaan. Hoewel dit in de huidige tijd misschien niet klinkt als heel veel, gezien gigabyte-formaat USB-sticks, betekent dit toch wel dat er een groot aantal certificaten opgeslagen kan worden in de EdgeLock SE050E Secure Element. Maar de chip is meer dan alleen een veilige sleutelopslag. Als u naar de connectie met de chip kijkt dan zult u zien dat deze via I²C wordt gemaakt. Bij de EdgeLock SE050E Secure Element kan ook de I²C-communicatie tussen chip en host worden versleuteld, zodat de chip en host veilig met elkaar verbonden zijn. NXP heeft hierover een application note (AN12662) verstrekt. Zo kan de EdgeLock SE050E Secure Element niet alleen cryptografische sleutels en geheimen veilig opslaan en beschermen tegen ongewenst uitlezen, maar ook zorgen voor veilige versleutelde communicatie. 
 
EdgeLock™ SE050E Secure Element: I²C Communication
Opname van I²C-communicatie met een logic analyzer.
Unencrypted I2C COM_PiConsole.JPG
De gegevens die door de Raspberry Pi worden weergegeven zijn ook te vinden in de opname van de logic analyzer.

NFC en I²C

Andere varianten binnen de EdgeLock familie bieden ook koppelingen voor NFC en voor een I²C-controllerinterface en dat maakt zeer interessante toepassingen mogelijk. In die chipvarianten kan NFC worden gebruikt om opgeslagen gegevens in chips van de EdgeLock familie zeer laat tijdens de productie of zelfs kort voor levering over te dragen. Met een NFC-apparaat zoals een smartphone is het dus mogelijk om certificaten en configuraties naar de chip over te dragen zonder er direct elektrisch contact mee te hebben. Hierbij wordt de chip van energie voorzien door het NFC-apparaat, het complete apparaat hoeft voor deze configuratie dan ook niet aan te staan.
 
EdgeLock™ SE050E Secure Element: Interfaces

Interfaces van de EdgeLock SE05x familie (Bron: https://www.nxp.com/docs/en/data-sheet/SE050-DATASHEET.pdf)
De I²C-controllerinterface maakt het mogelijk om meerdere sensoren via I²C aan te spreken. Daarmee kan een cryptografische component aan de sensorgegevens van een aangesloten I²C-sensor worden toegevoegd. Daarnaast kan de host de sensor identificeren met behulp van varianten van de EdgeLock-familie en ervoor zorgen dat deze niet is vervangen door een niet-gecertificeerde replica. De toegang tot de sensor kan ook worden afgeschermd door de host en andere componenten op de bus door middel van authenticatie.

Een praktijkvoorbeeld 

In het volgende voorbeeld wordt de EdgeLock SE050E Secure Element gebruikt in combinatie met een Raspberry Pi 4. De SoC van de Raspberry Pi 4 heeft niet alleen als kleine single-board computer zijn weg gevonden in commerciële producten maar ook via de Compute Module 4. Hoewel het op dit moment misschien moeilijk is om Raspberry Pi producten te verkrijgen vormen ze een zeer goed en veel gebruikt platform om aan te sluiten op een EdgeLock SE050E Secure Element. Een Raspberry Pi Zero 2W is ook perfect te combineren met een EdgeLock SE050E Secure Element. Een application note hoe de EdgeLock SE050E Secure Element kan worden gebruikt met de Raspberry Pi is te vinden op AN12570
 
Ook wordt in dit voorbeeld het gebruik van een cloudservice beschreven, hier Amazon AWS IoT Core, die de EdgeLock SE050E Secure Element gebruikt voor authenticatie en onboarding. Omdat de Raspberry Pi gegevens moet uitwisselen met Amazon AWS logt hij in op een wifi-netwerk. Dit gebeurt hier echter niet met een vooraf gedeelde sleutel (WPA2-PSK) maar met een certificaat met WPA2-EAP. Zo wordt er geen wifi-sleutel op de SD-kaart van de Raspberry Pi opgeslagen die later zou kunnen worden uitgelezen. Hetzelfde geldt voor het certificaat dat wordt gebruikt voor Amazon AWS IoT Core. Nogmaals, dit wordt niet opgeslagen op de SD-kaart dus het kan niet eenvoudig worden gekopieerd door toegang te krijgen tot het bestandssysteem.
 

Hardware voor een test

Voor de testopstelling is een Raspberry Pi 4 uitgerust met een EdgeLock SE050 Arduino Compatible Development Kit (OM-SE050ARD-E) en een OM-SE050RPI ARDUINO to Raspberry Pi Adapter Board (OM-SE050RPI)

 
OM-SE050RPI-ADAPTER-BOARD.jpg
OM-SE050RPI (Bron: NXP)
OM-SE050ARD-E.png
OM-SE050ARD-E (Bron: NXP)

Er wordt gebruik gemaakt van een Raspberry Pi 4 met het huidige Raspberry Pi OS (32 bit). Voor WPA2-EAP is er een access point en een freeradius server beschikbaar (kan draaien op het access point). Veel hardware is dus voor de eerste eigen testen niet nodig.

 
Raspberry Pi mit EdgeLock™ SE050E Secure Element
Raspberry Pi met EdgeLock SE050E Secure Element.

WPA2-EAP instellen

De installatie is vergelijkbaar als in de video "Wi-Fi Credential Protection with EdgeLock SE050" van NXP. En alle stappen voor de configuratie kunnen worden nagelezen in de application note AN12661 van NXP. De details van de configuratie van de Raspberry Pi en het access point zijn te vinden in de video over WPA2-EAP en de EdgeLock SE050E Secure Element.

 
EdgeLock™ SE050E Secure-Element: WPA2-EAP Test Setup
WPA2-EAP testopstelling.

De Raspberry Pi gebruikt bij het tot stand brengen van een verbinding de EdgeLock SE050E Secure Element om in te loggen op het WLAN-netwerk. Het access point stuurt het connectieverzoek door naar de freeradius server, die controleert of deze Raspberry Pi met zijn certificaten betrouwbaar is.  De freeradius server informeert het access point vervolgens of de Raspberry Pi het recht heeft om in te loggen op het WLAN-netwerk, welke rechten het heeft in het WLAN, aan welke VLAN het is toegewezen en over andere optionele parameters. Deze procedure is vooral handig voor centraal beheerde wifi-netwerken omdat de Raspberry Pi dan kan inloggen op verschillende access points en er geen wachtwoorden voor het WLAN hoeven te worden opgeslagen op de SD-kaart.

 
EdgeLock™ SE050E Secure-Element: Zertifikatsaustausch
Certificaatuitwisseling

Helaas heeft de firmware van de wifi-module die op de Raspberry Pi 4 is geïnstalleerd in het verleden herhaaldelijk problemen veroorzaakt met WPA2-EAP. Als het niet mogelijk is om het voorbeeld met wifi aan de praat te krijgen hoeft dit niet te wijten te zijn aan een verkeerde configuratie. Afhankelijk van het type access point kan er ook een of andere WPA2-EAP gerelateerde bug zijn.

 
Wi-Fi Credential Protection with EdgeLock SE050

Video: Wi-Fi Credential Protection with EdgeLock SE050 (Bron: NXP).
 
De video van NXP laat stap voor stap zien hoe u WPA2-EAP instelt met een op OpenWRT gebaseerd access point en is een goede aanvulling op de application note AN12661.

Amazon AWS IoT Core

Eerst moet de juiste tijd en de bereikbaarheid van een NTP-server vanuit de Raspberry Pi worden gecontroleerd. Als de Raspberry Pi een NTP-server niet kan bereiken en de tijd niet is ingesteld kan er een TLS-fout optreden.

Met de EdgeLock SE050E Secure Element kan met beperkte inspanning en in weinig tijd een veilige verbinding van sensoren en actuators met een cloudplatform worden gemaakt. Hiervoor is de middleware van de EdgeLock SE050E Secure Element aws_eou demo beschikbaar om uit te proberen. Voor het configureren worden de benodigde stappen beschreven in de knowledge base voor de SE05x-familie.

 
Wi-Fi Credential Protection with EdgeLock SE050: PI AWS Connection
Raspberry Pi met AWS-verbinding.

Zodra de IoT-demo uit het voorbeeld is uitgevoerd verschijnen de berichten ook in de Amazon AWS IoT Core en worden ze vermeld onder het item Test, wat kan worden bekeken met behulp van de MQTT-client. Indien u de berichten wilt bekijken moet in de MQTT-client met een # op het thema worden geabonneerd. 
 
Hieronder een demonstratie van het veilig transporteren van gegevens naar de cloud met de EdgeLock SE050E Secure Element. Het hoeft niet eens AWS te zijn, andere cloudoplossingen kunnen ook worden gebruikt met de EdgeLock SE050E Secure Element.

 
Wi-Fi Credential Protection with EdgeLock SE050: AWS Data
Binnenkomende data in AWS IoT Core.

Meer use cases dan verwacht

Hoewel clouddiensten van grote providers een steeds belangrijkere rol spelen in de IoT-sector beperkt de EdgeLock SE050E Secure Element zich hier niet toe. NXP biedt een breed scala aan application notes voor de EdgeLock SE050E Secure Element, bijvoorbeeld voor gebruik als TPM-achtige module, device-to-device authenticatie, het beveiligen van de bootsequence van microcontrollers of voor configuratie via NFC. Met de EdgeLock SE050E Secure Element kan ook met weinig moeite ISA/IEC 62443 compliance worden bereikt.

Een metgezel voor microcontrollers en kleine computers

Het voorbeeld hier toont de EdgeLock SE050E Secure Element in combinatie met een Raspberry Pi 4 en enkele van zijn toepassingen. De EdgeLock SE050E Secure Element is echter ook een zeer goede aanvulling op kleinere microcontrollers, zoals een Raspberry Pi Pico met Ethernet shield of de Wiznet W7500. Deze microcontrollers zijn in staat om versleutelde verbindingen met clouddiensten tot stand te brengen. De cryptografische functies die nodig zijn voor authenticatie en dus voor het tot stand brengen van een verbinding zijn echter zeer rekenintensief. Wat binnen een paar milliseconden wordt gedaan met een Raspberry Pi 4 en zijn vier ARM Cortex kernen kan kleinere microcontrollers soms wel enige seconden kosten. Hier kan de EdgeLock SE050E Secure Element de kleine microcontrollers aanzienlijk ontlasten, wat niet alleen een beveiligingswinst is. Het is dan ook mogelijk om de rekentijd die nodig is voor gegevensuitwisseling aanzienlijk te verminderen, wat op zijn beurt het energieverbruik weer vermindert.

Eenvoudige integratie met enkele componenten

Zoals bij alle chips die in een project worden gebruikt rijst altijd de vraag hoeveel componenten er nodig zijn rond de eigenlijke chip. In het geval van de Raspberry Pi zijn dat drie passieve componenten, twee weerstanden als I²C pull-up en een optionele 100-nF afvlakcondensator. Dit maakt eenvoudige en ruimtebesparende integratie in nieuwe ontwerpen mogelijk, of het nu een Raspberry Pi of een MCU is. Een goedkope variant om mee te beginnen bij de ontwikkeling van een project dat gebruik maakt van een chip uit de EdgeLock SE05x familie zou de Plug & Trust Click van MikroElektronika kunnen zijn https://www.mikroe.com/plugtrust-click. Door de eenvoudige bedrading van de EdgeLock SE050E Secure Element zou het me niet verbazen als er een module met een Groove- of Qwiic-connector verschijnt die dan op de meest eenvoudige manier kan worden aangesloten op bestaande evaluatieboards.

Samenvatting

Als u nieuw bent op het gebied van IoT, certificaten, root-of-trust en secure elements, moet u zich eerst een weg banen door een beetje theorie. Plug and Trust voor de EdgeLock SE050E Secure Element is zeer goed toepasbaar, maar moet niet worden verward met Plug and Play. De EdgeLock SE050E Secure Element maakt het mogelijk om maximale beveiliging in IoT-toepassingen te implementeren met slechts enkele componenten. Voor configuratie en bediening biedt NXP de juiste documentatie die de gebruiker helpt zijn beveiligingsdoelen te bereiken door middel van de juiste configuratie, maar elk beveiligingselement is slechts zo goed als zijn koppeling met de eigen applicatie. Met de EdgeLock SE050E Secure Element heeft u niet alleen toegang tot de documentatie van NXP, maar kunt u ook om hulp vragen bij een in Europa gevestigde fabrikant.  

Gebruikt u een Raspberry Pi 4 of een Compute Module 4 dan is de EdgeLock SE050E Secure Element een perfecte aanvulling. De eenvoudige verbinding via I²C maakt hardware- en software-integratie in slechts enkele stappen mogelijk. Bij gebruik van een MCU kan niet alleen de veiligheid van de applicatie worden verhoogd, de EdgeLock SE050E Secure Element kan ook bijdragen aan het verminderen van het energieverbruik. Met de EdgeLock SE050E Secure Element zijn er meer opties voor het verhogen van de systeembeveiliging dan men op het eerste gezicht zou vermoeden en met minder componenten en moeite dan men in eerste instantie zou hebben gedacht.


Vertaling: Marc Gauw