Die Absicherung von Mikrocontroller-Software gegen Cyber-Bedrohungen stellt Entwickler vor spezifische Herausforderungen. Anders als Linux-basierte Software, die von integrierten Sicherheitsmechanismen und gängigen Libraries profitiert, fehlt es Mikrocontroller-Software, oft in C geschrieben, an grundlegenden Sicherheitsfunktionen.
Mikrocontroller sind essenziell für eine Vielzahl von eingebetteten Systemen, von Haushaltsgeräten bis zu kritischen industriellen Anwendungen. Ihre minimalistischen Architekturen, die auf spezifische Aufgaben ausgerichtet sind, lassen wenig Raum für Sicherheitsfeatures. Entwickler müssen daher sorgfältige Programmiertechniken und Hardware-basierte Maßnahmen einsetzen, um die Sicherheit zu gewährleisten.
Ein Vorteil ist dabei stets die reduzierte Angriffsoberfläche: Mikrocontroller-basierte Systeme führen oft spezifische Funktionen aus und interagieren nur begrenzt mit der Außenwelt. Dadurch können standardisierte Gegenmaßnahmen einfacher implementiert werden. Viele moderne Mikrocontroller verfügen zudem über integrierte kryptografische Module, die eine sichere Kommunikation und Datenverschlüsselung unterstützen.
ARM TrustZone bietet hardwarebasierte Isolation, indem es die Systemarchitektur in eine sichere und eine unsichere Welt unterteilt. Sensible Daten und kritische Funktionen werden in der sicheren Welt verarbeitet, während weniger sicherheitsrelevante Aufgaben in der unsicheren Welt verbleiben. Kernfunktionen von TrustZone umfassen:
HSMs sind dedizierte Sicherheitseinheiten, die kryptografische Operationen und Schlüsselmanagement übernehmen. Sie bieten Schutz vor physischen und softwarebasierten Angriffen und sind in modernen Mikrocontrollern wie ARM M23 oder M33 oft integriert. Eine grundlegende Designstrategie für sichere eingebettete Systeme ist die Isolation sicherheitskritischer Daten und Funktionen. Hardware-basierte Isolation durch TrustZone trennt sensible Aufgaben wie die HSM-Firmware von generischen Anwendungen und RTOS.
Der Host teilt die gesamte Firmware vor der Übertragung in mehrere Blöcke auf. Jeder dieser Blöcke wird mithilfe eines Verschlüsselungsalgorithmus verschlüsselt. Eine gängige Methode besteht darin, Rundschlüssel mithilfe von Key-Schedule-Algorithmen zu generieren. Ein initialer Schlüssel wird verwendet, um mehrere unterschiedliche Rundschlüssel zu erstellen, die in den jeweiligen Verschlüsselungsrunden eingesetzt werden. Diese Methode wird beispielsweise im Advanced Encryption Standard (AES) genutzt. Die verschlüsselten Datenblöcke werden anschließend für die Übertragung vorbereitet und über CAN-Frames verteilt. Jeder Datenblock wird dabei in mehrere CAN-Frames aufgeteilt und übertragen.
Hostseitige Übertragung eines Firmware-Images
Die über den CAN-Bus empfangenen Frames werden sequentiell während der Laufzeit der CPU gespeichert. Die CPU fordert das Hardware-Sicherheitsmodul (HSM) auf, jeden Datenblock zu entschlüsseln und erneut zu verschlüsseln. Jeder neu verschlüsselte Datenblock wird vorübergehend im Flash-Speicher abgelegt. Nach Abschluss des Prozesses speichert das HSM zusätzlich Metadaten der Firmware (z. B. vollständige Parameter, Länge, Hash) im TrustZone-Speicher. Diese Metadaten sichern den Update-Prozess ab, indem sie die Integrität des Firmware-Images gewährleisten.
Wiederverschlüsselung und Speicherung des Updates
Der Update-Prozess umfasst mehrere Schritte, um die Integrität und Authentizität der Firmware sicherzustellen. Die Update-Firmware in der CPU überwacht zunächst ein „New Data“-Flag und wartet darauf, dass die Datenübertragung abgeschlossen ist. Das Hardware-Sicherheitsmodul (HSM) fordert anschließend die Firmware-Metadaten aus der TrustZone an. Nachdem die CPU die Metadaten erhalten hat, überprüft sie die Gültigkeit der Firmware anhand dieser Informationen. Das HSM validiert die Firmware basierend auf den Metadaten, um sicherzustellen, dass keine Manipulation stattgefunden hat und die Firmware authentisch ist. Nach erfolgreicher Validierung fordert die CPU das HSM auf, die Firmware zu entschlüsseln.
Ablegen des Firmware-Updates im Textbereich
Der Flash-Speicher enthält die verschlüsselten Firmware-Blöcke. Das HSM entschlüsselt diese Blöcke schrittweise und übergibt sie an die CPU. Schließlich schreibt die CPU die entschlüsselte Firmware in den Speicherbereich des Mikrocontrollers, wo sie anschließend ausgeführt werden kann.
Die Absicherung eines Firmware-Updates auf Mikrocontrollern erfordert eine Vielzahl von Sicherheitsmaßnahmen, um Manipulationen und unbefugten Zugriff zu verhindern. Diese Komplexität ergibt sich aus mehreren essenziellen Anforderungen, die gleichzeitig erfüllt werden müssen:
Der Einsatz mehrerer Schlüssel ist notwendig, um unterschiedliche Sicherheitsstufen zu gewährleisten. Beispielsweise gibt es separate Schlüssel für die Verschlüsselung der Firmware während der Übertragung, für die erneute Verschlüsselung auf dem Mikrocontroller und für die Validierung der Firmware. Diese Schlüsselseparation verhindert, dass ein kompromittierter Schlüssel das gesamte System gefährdet. Das Schlüsselmanagement und die Synchronisation zwischen CPU und HSM erfordern jedoch eine hochgradig koordinierte Architektur.
Die Metadaten der Firmware – wie Länge, Hash und Parameter – sowie die verschlüsselte Firmware selbst werden im sicheren TrustZone-Speicher abgelegt. Dieser Bereich ist für reguläre Anwendungen unsichtbar und nur über autorisierte Zugriffe erreichbar. Das sorgt zwar für hohe Sicherheit, erschwert jedoch den Entwicklungsprozess, da jeder Zugriff speziell über sichere Mechanismen erfolgen muss. Änderungen oder Zugriffe außerhalb dieses geschützten Bereichs sind schlichtweg nicht möglich.
Die Kommunikation mit dem HSM erfolgt stets über festgelegte, sichere Protokolle. Der MCU in der main.c kann keine direkten, nicht autorisierten Zugriffe während der Runtime ausführen, um die Integrität des HSM zu gewährleisten. Jede Anfrage an das HSM, sei es zur Entschlüsselung, Re-Verschlüsselung oder Validierung, durchläuft eine strikte Sicherheitskette, die die Systemlaufzeit beeinflussen kann. Dieser Ansatz schützt zwar vor Manipulationen, erhöht jedoch den Aufwand für die Entwicklung und Implementierung.
Sichere Updates sind unverzichtbar, um eingebettete Systeme langfristig vor Manipulationen und Angriffen zu schützen. Sie gewährleisten, dass nur authentifizierte und verschlüsselte Firmware eingespielt wird, und schützen sensible Daten durch isolierte Speicherbereiche. In der Kombination mit wirksamen Krypto-Features, ob in Hardware oder Software, wird der gesamte Prozess technisch verschlüsselt. Sichere Updates und sicheres Booten ist damit Grundvoraussetzung für eingebettete Software in technischen Systemen und maßgeblich für die Daten- und Kommunikationssicherheit