Einen einfachen Einstieg in das Thema Sicherheit und Datenintegrität in Verbindung mit dem Internet und IoT zu finden, ist keine leichte Aufgabe. Bei vielen Produkten und Anwendungen wird mit Sicherheit und Unveränderbarkeit der Daten geworben, doch was dahinter steckt und welchen Aufwand es bedeutet, Produkte zu entwickeln, die den Anforderungen und Erwartungen der Anwender entsprechen, bleibt oft verborgen.  Erst wenn man als Entwickler selbst vor der Aufgabe steht, solche Features in seine Produkte zu implementieren, erscheint das Thema in seiner ganzen Komplexität. Auch der Schutz der Firmware des ausgelieferten Geräts vor ungewollter Manipulation ist nicht immer trivial zu bewerkstelligen, vor allem wenn es Updates und Konfiguration von einem externen Server erhalten soll.


Wenn man erst einmal in das Thema sichere Datenverbindung und Konfiguration eintaucht (vor allem wenn es um Produkte geht, die vorkonfiguriert für Cloud-Dienste ausgeliefert werden sollen) kann man sich sehr schnell in all den Informationen und technischen Voraussetzungen verlieren. Das NXP EdgeLock SE050E Secure Element ist eine Möglichkeit, solche Designs und Produkte einfacher zu realisieren und diese gegen Datenmanipulatidon zu härten.

NXP EdgeLock SE050E Secure Element

Das EdgeLock SE050E Secure Element von NXP aus der Familie der Plug & Trust Devices bietet erweiterte Sicherheitsfunktionen nach Common Criteria EAL 6+. Die genauen Spezifikationen des SE050E Secure Elements können aus Tabelle 1 entnommen werden. Um das SE050E Secure Element an ein System anzubinden, ist eine I²C-Schnittstelle ausreichend. Die Versorgungsspannung des Chips ist mit 1,62 V bis 3,6 V charakterisiert, jedoch liegt das Maximum für den Chip bei 6 V, was auch den Einsatz in 5-V-Systemen ermöglicht und das Ganze auch als Nachrüstoption interessant macht. Das NXP EdgeLock SE050E ist in seinem Inneren ein kleines SoC (System on Chip) mit einem Java Card OS und einem dedizierten IoT Applet, das dafür sorgt, dass nicht nur kryptografische Operationen sicher ausgeführt werden. Es wird auch der Versuch, Daten aus dem Chip ungewollt zu extrahieren, erkannt und abgewehrt. Als Root-of-Trust kann so das SE050E Secure Element genutzt werden, sichere und vertrauenswürdige Verbindungen zwischen zwei Systemen aufzubauen und die Systeme zu authentifizieren.
 
Das EdgeLock SoC.
Der Vorteil des NXP EdgeLock SE050E Secure Elements ist seine einfache Anbindung an einen Mikrocontroller (MCU) oder System on Chip (SoC) durch die Verwendung des I²C-Bus. Hinzu kommt, dass der Chip als HX2QFN sehr wenig Platz in eigenen Designs einnimmt und als externe Beschaltung optional einen 100-nF-Abblockkondensator benötigt; je nach MCU oder SoC kommen eventuell noch zwei Pull-Up-Widerstände für den I²C-Bus.
 
EdgeLock SE050E Secure Element neben einem RP2040 zum Größenvergleich.
Doch es stellt sich die Frage, welche Arten von Anwendungsfällen der NXP EdgeLock SE050E abdecken kann und warum das Secure Element in einem Projekt eingesetzt werden sollte. Einen Blick in das Essentials of Edge Computing eBook, um die Funktionsweise und den Einsatz des NXP EdgeLock SE050E besser zu verstehen, schadet sicher nicht.
 
Tabelle 1: EdgeLock SE050E Secure Element Spezifikationen.
Standards  
Security certification CC EAL6+ (HW+JCOP), FIPS 140-2
L3
JavaCard version 3.0.5
GlobalPlatform specification version GP 2.3.1
Cryptography  
ECC ECDSA, ECDH, ECDHE, ECDAA, EdDSA
MAC HMAC, CMAC, GMAC
HASH SHA-1, SHA-224, SHA-256, SHA-384,
SHA-512
Key derivation HKDF, PBKDF2, PRF (TLS-PSK), MIFARE®-AES-KDF
AES AES CBC/ECB/CTR/CCM/GCM (128 Bit, 192 Bit, 256 Bit)
3DES 2K, 3K
Key Derivation (KDF) TLS KDF, TLS PSK, MIFARE DESFire KDF, Wi-Fi KDF (PBKDF2), OPC_UA KDF)
TRNG NIST SP800-90B, AIS31
DRBG NIST SP800-90A, AIS20
Crypto curves  
ECC ECC NIST (192 to 521 bit), Brainpool (160 to 512 bit), Twisted Edwards Ed25519 /
Montgomery Curve25519, Koblitz (192 to 256 bit), Barreto-Naehrig Curve 256 bit, Montgomery (Curve448) [Goldilocks], Montgomery Curve25519
User memory  
Size 50 kB
Memory reliability up to 100 Mio write cycles / 25 year
Interfaces  
I2C Target Fast mode plus (Fm+)  (1 Mbit/s)
I2C Controller Fast mode (400 kbit/s)
Contactless Not available
 

Zertifikate bitte!

Bei sicherer Kommunikation zwischen zwei Partnern, in diesem Fall IoT-Systemen, werden die meisten an Kryptografie denken; jedoch fehlt dann noch ein wesentlicher Bestandteil. Damit eine solche gesicherte Kommunikation funktionieren kann, müssen beide Seiten sich vertrauen und Schlüssel austauschen. Um dies zu erreichen, gibt es Zertifikate. Doch was macht nun ein solches Zertifikat?

Nehmen wir an, es gibt zwei neue Mitarbeiter, die sich zuvor noch nie getroffen haben und aus ihrem Homeoffice heraus arbeiten. Die beiden Mitarbeiter sind Jim und Dave. Jim und Dave arbeiten beide für Karen. Karen als Vorgesetzte hat das Vertrauen von Jim und Dave, und hat Jim einen Auftrag für Dave gegeben.

Jim gibt Dave den Auftrag von Karen, der nun fragt, wie er sich sicher sein kann, dass der Auftrag wirklich von Karen kommt. Karen hat zusätzlich zu dem Auftrag noch einen Stempel auf ihm angebracht, den nur Karen besitzt und den Jim und Dave kennen. Mit einem Blick auf den Stempel kann Dave prüfen, dass es sich um einen Auftrag von Karen handelt. Hinzu kommt, dass sowohl Jim als auch Dave gegenseitig ihre Mitarbeiterausweise prüfen, um sicherzustellen, dass Jim wirklich Jim und Dave auch wirklich Dave ist. Auch auf diese hat Karen einen Stempel gemacht. In der Hoffnung, dass es nicht zu abstrakt war, transportieren wir dieses nun in die digitale Welt. Der Stempel, den Karen verwendet hat, entspricht einem kryptographischen Schlüssel. Wie bei einem solchen Stempel in einem Büro, muss auch dieser kryptographischen Schlüssel sicher aufbewahrt werden, idealerweise in einem Safe, sonst könnte jeder sich den Stempel nehmen und auf irgendwelchen Dokumenten anbringen. Für den kryptographischen Schlüssel übernimmt das NXP EdgeLock SE050E Secure Element die Funktion des Safes, vereinfacht dargelegt.

Aus Jim wird ein IoT-Sensor, der eine Temperatur überwacht, und aus Dave wird ein Cloud-Provider, hier Amazon AWS IoT. Die Karen aus dem Beispiel wird eine Certificate Authority (CA) die anstelle von Stempeln Zertifikate ausstellt.

Sobald der IoT-Sensor nun Daten an den Cloud-Provider senden will, wird zuerst das Zertifikat des Cloud-Provider-Severs vom Sensor geprüft. Der Server des Cloud-Provider an der Stelle fragt auch den Sensor nach seinem Zertifikat, um sicher zu sein, dass er mit der richtigen Instanz eine Kommunikation aufbaut. Wenn beide Seiten geprüft haben, dass die Identitäten korrekt sind, wird angefangen, eine verschlüsselte Verbindung aufzubauen und der Sensor kann seine Daten übertragen.

Vereinfacht ausgedrückt sind Zertifikate die Ausweisdokumente der digitalen Welt. Da ein Zertifikat aber eine Datei ist die sich leicht kopieren lässt, besitzen Zertifikate, wie auch Ausweise, Sicherheitsmerkmale die eine Fälschung verhindern sollen. Bei den Zertifikaten sind es die kryptographischen Schlüssel, die als Sicherheitsmerkmal, wie ein nicht fälschbarer Stempel, dienen. Denn wie im wahren Leben gilt es Identitätsdiebstahl und Urkundenfälschung auch in der digitalen Welt vorzubeugen. 

Zertifikate sicher verwalten

Wer einen Raspberry Pi verwendet und diesen für IoT-Anwendungen mit Cloud-Anbindung nutzt, sei es mit Google Cloud Platform, Amazon Web Services oder Microsoft Azure, wird gesehen haben, dass dort auch passende Zertifikate auf den Raspberry Pi installiert werden müssen. Es kann jedem Gerät ein eigenes Zertifikat zugewiesen werden, so dass bei der Kompromittierung eines Zertifikates nur ein Gerät betroffen ist und nicht die ganze Flotte. Amazon hat hierzu Dokumente bereitgestellt, die diesen Vorgang zeigen. Bei einem Raspberry Pi würde aber nun das Zertifikat und der kryptografische Schlüssel auf einer SD-Karte liegen. Die Zugangsdaten und das Zertifikat könnten so einfach kopiert werden.

Das EdgeLock SE050E Secure Element kann hier Abhilfe schaffen, da es eine sichere Umgebung für die Verarbeitung von kryptographischen Schlüsseln und Zertifikaten bereit stellt. Es können bis zu 50 kB an Speicher im Chip genutzt werden, um Zertifikate und Schlüssel zu hinterlegen. Auch wenn es in heutigen Zeiten nach nicht viel klingen mag, in Anbetracht von Gigabyte-großen USB-Sticks, bedeutet dies doch, dass eine große Menge an Zertifikaten in dem EdgeLock SE050E Secure Element gespeichert werden können. Doch der Chip ist mehr als nur ein sicherer Schlüsselspeicher. Wer sich nun die Anbindung des Chips anschaut, wird feststellen, dass diese per I²C realisiert ist. Mit dem EdgeLock SE050E Secure Element lässt sich auch die I²C-Kommunikation zwischen Chip und Host verschlüsseln, so dass der Chip und Host aneinandergebunden sind. NXP hat hierzu eine Application Note (AN12662) bereitgestellt. So kann das EdgeLock SE050E Secure Element nicht nur kryptographischen Schlüssel und Geheimnisse sicher verwahren und vor ungewollter Extraktion schützen, sondern auch eine gesicherte verschlüsselte Kommunikation bereit stellen. 
 
Aufzeichnung der I²C Kommunikation mit einem Logicanalyzer.
  Die Daten, die der Raspberry Pi anzeigt, lassen sich auch im Mittschnitt des Logicanalyzers wiederfinden.
NFC und I²C
Weitere Varianten der EdgeLock Familie bietet zusätzlich noch Anschlüsse für NFC sowie einem I²C Controller Interface und ermöglicht damit sehr interessante Anwendungen. NFC kann bei den entsprechenden Chip Varianten genutzt werden, um sehr spät während der Produktion oder aber auch erst kurz vor der Auslieferung Daten in Chips der EdgeLock Familie zu übertragen. Ein NFC-fähiges Gerät wie ein Smartphone erlaubt es so, Zertifikate und Konfigurationen in den Chip zu transferieren, ohne direkten elektrischen Kontakt zur Platine zu haben. Dazu wird der Chip durch das NFC-fähige Gerät mit Energie versorgt, das eigentliche System muss für die Konfiguration nicht aktiv sein.
 

Interfaces der EdgeLock SE05x Familie (Quelle: https://www.nxp.com/docs/en/data-sheet/SE050-DATASHEET.pdf)
Das I²C-Controller-Interface erlaubt es, weitere Sensoren per I²C anzusprechen. Damit lassen sich einerseits den Sensordaten eines angeschlossenen I²C-Sensors eine kryptografische Komponente hinzufügen. Zusätzlich kann der Host den Sensor durch Varianten der EdgeLock Familie identifizieren und sicherstellen, dass dieser nicht durch eine nicht zertifizierte Replik ausgetauscht wurde. Auch kann so der Zugriff auf den Sensor vom Host und anderen Busteilnehmner durch eine Authentifizierung abschirmt werden.

Ein praktisches Beispiel 

In dem folgenden Beispiel wird das EdgeLock SE050E Secure Element in Verbindung mit einem Raspberry Pi 4 eingesetzt. Das SoC des Raspberry Pi 4 hat nicht nur als kleiner Einplatinenrechner seinen Weg in kommerzielle Produkte gefunden, sondern auch durch das Compute Module 4. Auch wenn es momentan schwierig sein mag, Raspberry Pi Produkte zu bekommen, so bilden diese eine sehr gute, da weit verbreitete Plattform, um sie mit einem EdgeLock SE050E Secure Element zu koppeln. Auch ein Raspberry Pi Zero 2W lässt sich mit einem EdgeLock SE050E Secure Element bestens kombinieren. Eine Application Note, wie das EdgeLock SE050E Secure Element mit dem Raspberry Pi in Betrieb genommen werden kann, findet sich in AN12570.

Was in diesem Beispiel gezeigt werden soll ist die Verwendung eines Cloud-Dienstes, hier Amazon AWS IoT Core, bei dem das EdgeLock SE050E Secure Element für die Authentifizierung und das Onboarding genutzt wird. Da der Raspberry Pi Daten mit dem Amazon AWS austauschen muss, wird dieser sich in ein WLAN-Netzwerk einbuchen. Das geschieht hier aber nicht mit einem Preshared Key (WPA2-PSK), sondern durch ein Zertifikat mit WPA2-EAP. So wird auf der SD-Karte des Raspberry Pi kein Wi-Fi-Schlüssel gespeichert, der später ausgelesen werden könnte. Das gleiche gilt für das Zertifikat, das für Amazon AWS IoT Core genutzt wird. Auch dieses ist nicht auf der SD-Karte hinterlegt, so dass es nicht einfach durch einen Zugriff auf das Dateisystem kopiert werden kann.
 

Hardware für einen Testlauf

Für den Testaufbau wird ein Raspberry Pi 4 mit einem EdgeLock SE050 Arduino Compatible Development Kit (OM-SE050ARD-E) und dem OM-SE050RPI ARDUINO to Raspberry Pi Adapter Board (OM-SE050RPI) ausgestattet.

 
OM-SE050RPI (Quelle: NXP)
OM-SE050ARD-E (Quelle: NXP)

Es kommt ein Raspberry Pi 4 mit aktuellem Raspberry Pi OS (32 Bit) zum Einsatz. Für WPA2-EAP steht noch ein Accesspoint und ein FreeRadius-Server (kann auf dem Accesspoint laufen) bereit. Viel Hardware ist also nicht nötig für die ersten eigenen Tests.
 
Raspberry Pi mit EdgeLock SE050E Secure Element.

WPA2-EAP Setup

Das Setup ist ähnlich wie beim Video „Wi-Fi Credential Protection with EdgeLock SE050“ von NXP und alle Schritte für die Konfiguration können in der Application-Note AN12661 von NXP nachgelesen werden. Die Details der Einrichtung für den Raspberry Pi und den Accesspoint können dem Video zu WPA2-EAP und dem EdgeLock SE050E Secure Element entnommen werden.
 
WPA2-EAP Test-Setup.

Der Raspberry Pi nutzt hier beim Verbindungsaufbau das EdgeLock SE050E Secure-Element, um sich in das WLAN-Netz einzubuchen. Der Accesspoint leitet die Verbindungsanfrage an den FreeRadius-Server, der prüft, ob dieser Raspberry Pi mit seinem Zertifikaten vertrauenswürdig ist. Daraufhin teilt der Free-Radius-Server dem Accesspoint mit, ob der Raspberry Pi berechtigt ist, sich in das WLAN-Netz einzubuchen, welche Rechte dieser im WLAN hat, welchem VLAN er zuzuordnen ist, sowie weitere optionale Parameter. Dieses Vorgehen ist vor allem für zentral verwaltete Wi-Fi-Netzwerke sehr praktisch, da sich so der Raspberry Pi an verschiedenen Accesspoints anmelden kann und auf der SD-Karte für das WLAN keine Passwörter gespeichert werden müssen.
 
Zertifikatsaustausch

Leider hat in der Vergangenheit die Firmware des Wi-Fi-Moduls, das auf dem Raspberry Pi 4 verbaut wurde, immer mal wieder für Probleme mit WPA2-EAP gesorgt. Sollte es nicht gelingen, das Wi-Fi-Beispiel lauffähig zu bekommen muss dieses nicht an einer Fehlkonfiguration liegen. Auch kann je nach Accesspoint-Modell noch der eine oder andere Bug in Verbindung mit WPA2-EAP vorhanden sein.
 

Video: Wi-Fi Credential Protection with EdgeLock SE050 (Quelle: NXP).
 
Das Video von NXP zeigt Schritt für Schritt, wie die Einrichtung von WPA2-EAP mit einem OpenWRT-basierten Accesspoint möglich ist und bildet eine gute Ergänzung zur Application Note AN12661.

Amazon AWS IoT Core

Etwas das zuerst geprüft werden sollte ist die korrekte Uhrzeit und die Erreichbarkeit eines NTP-Servers vom Raspberry Pi aus. Sollte der Raspberry Pi keinen NTP-Server erreichen können und die Uhrzeit nicht gestellt sein, kann es zu einem TLS-Fehler kommen.

Die sichere Anbindung von Sensoren und Aktoren an eine Cloud-Plattform lässt sich mit dem EdgeLock SE050E Secure Element mit überschaubarem Aufwand und in überschaubarer Zeit erledigen. Hierzu kann aus der Middleware des EdgeLock SE050E Secure Elements die aws_eou Demo ausprobiert werden. Für die Konfiguration sind die nötigen Schritte in der Knowledge Base zur SE05x-Familie hinterlegt.
 
Raspberry Pi mit AWS-Anbindung.

Sobald die IoT-Demo aus dem Beispiel ausgeführt wird, erscheinen auch die Nachrichten im Amazon AWS IoT Core und sind unter dem Punkt Test mit Hilfe des MQTT-Clients einsehbar. Um die Nachrichten zu sehen, muss in dem MQTT-Client das Thema # abonniert werden.

Dieses ist eine Demonstration, wie man Daten mit dem EdgeLock SE050E Secure Element sicher in die Cloud transportieren kann. Es muss nicht einmal AWS sein, auch andere Cloud-Lösungen lassen sich mit dem EdgeLock SE050E Secure Element verwenden.
 
Ankommende Daten in AWS IoT Core.

Mehr Anwendungsfälle als vermutet

Auch wenn Cloud-Dienste großer Anbieter eine immer größere Rolle im Bereich IoT spielen, so ist das EdgeLock SE050E Secure Element nicht drauf beschränkt. NXP liefert für das EdgeLock SE050E Secure Element eine große Palette an Application Notes, z.B. für den Einsatz als TPM-ähnliches Modul, Device-to-Device-Authentifizierung, Absicherung der Bootsequenz von Mikrocontrollern oder aber für die Konfiguration per NFC. Auch ISA/IEC 62443 compliance lässt sich mit dem EdgeLock SE050E Secure Element mit wenig Aufwand erreichen.

Ein Begleiter für Mikrocontroller und Small Board Computer

Das Beispiel hier zeigt das EdgeLock SE050E Secure Element in Verbindung mit einem Raspberry Pi 4 und einige seiner Anwendungsmöglichkeiten. Das EdgeLock SE050E Secure Element bildet jedoch auch eine sehr gute Ergänzung zu kleineren Mikrocontrollern, wie einem Raspberry Pi Pico mit Ethernet-Shield oder dem Wiznet W7500. Diese Mikrocontroller sind in der Lage, verschlüsselte Verbindungen zu Cloud-Diensten aufzubauen. Die kryptografischen Funktionen, die für die Authentifizierung und damit für den Verbindungaufbau nötig sind, sind jedoch sehr rechenintensiv. Was mit einem Raspberry Pi 4 und seinen vier ARM-Cortex Kernen innerhalb weniger Millisekunden erledigt ist, kann kleinere Mikrocontroller Zeiten bis in den Sekundenbereich kosten. Hier kann das EdgeLock SE050E Secure Element den kleinen Mikrocontrollern erhebliche Arbeit abnehmen, was nicht nur ein Sicherheitsgewinn ist. Es lässt sich auch die nötige Rechenzeit für den Datenaustauch merklich reduzieren, was wiederum den Energieverbrauch senkt.

Einfache Integration mit wenigen Bauteilen

Wie bei allen Chips, die in ein Projekt eingeführt werden, stellt sich immer die Frage, welche Menge an Bauteilen um den eigentlichen Chip benötigt werden. Im Fall des Raspberry Pi sind es drei passive Komponenten, zwei Widerstände als I²C-Pull-Up und ein optionaler 100-nF-Abblockkondensator. Das erlaubt eine einfache und platzsparende Integration in neue Designs, sei es ein Raspberry Pi oder aber eine MCU. Eine preiswerte Variante mit der Entwicklung eines Projektes zu starten das einen Chip aus der EdgeLock SE05x Familie nutzt wäre das Plug&Trust Click von MikroElektronika. Duch die einfache Beschaltung des EdgeLock SE050E Secure Element würde es nicht verwundern wenn auch ein Modul mit Groove- oder Qwiic-Konnektor erscheint, das sich mit einfachsten Mitteln an bestehende Evaluationsboards anbinden lässt.

Zusammenfassung

Wer sich neu in das Thema IoT, Zertifikate, Root-of-Trust und Secure Elements begibt, sollte sich zuerst einmal durch ein wenig Theorie arbeiten. Plug and Trust für die EdgeLock SE050E Secure Element ist sehr zutreffend, jedoch sollte man es nicht mit Plug and Play verwechseln. Das EdgeLock SE050E Secure Element erlaubt es höchste Sicherheit in IoT-Anwendungen mit wenigen Bauteile zu realisieren. Für Konfiguration und Betrieb stellt NXP passende Dokumentation bereit, die dem Anwender hilft seine Sicherheitsanforderungen durch passende Konfiguration zu erreichen, jedoch ist jedes Sicherheitselement nur so gut wie seine Anbindung in die eigene Anwendung. Mit dem EdgeLock SE050E Secure Element hat man so nicht nur Zugriff auf die Dokumentation von NXP sondern kann auch bei einem in Europa ansässigen Hersteller nach Hilfestellung fragen.  

Wer ein Raspberry Pi 4 oder ein Compute Module 4 verwendet, für den stellt das EdgeLock SE050E Secure Element eine sinvolle Ergänzung dar. Die einfache Anbindung per I²C machen die Hardware- und Softwareintegration in wenigen Schritten möglich. Bei Verwendung einer MCU kann nicht nur die Sicherheit der Anwendung erhöht werden, das EdgeLock SE050E Secure Element kann auch zur Verringerung des Energieverbrauchs beitragen. Mit dem EdgeLock SE050E Secure Element stehen mehr Optionen zur Erhöhung der Systemsicherheit bereit als man zuerst vermuten mag, und das mit weniger Bauteilen und Aufwand als man zuerst vermuten würde.