PICKPLACE Hub

Krypto-Features moderner Mikrocontroller

Geschrieben von Hendrik Schnack | Jul 25, 2024 3:37:08 PM

Es ist vergleichsweise einfach, Linux-basierte Software gegen Cyberbedrohungen abzusichern, dank der robusten und ausgereiften Sicherheitsmechanismen, die im Betriebssystem integriert sind. Die Sicherung von Software auf Mikrocontrollern stellt jedoch eine einzigartige Herausforderung dar. Mikrocontroller-Software, oft in C geschrieben, fehlt es an inhärenten Sicherheitsfunktionen und sie bietet keine speicherschützenden Methoden, die Exploits verhindern. Diese Einschränkungen machen Mikrocontroller-Software besonders anfällig für Angriffe wie Buffer Overflows, Code Injection und andere Speicher-Manipulationstechniken.

Microcontroller sind integraler Bestandteil unzähliger eingebetteter Systeme, von Haushaltsgeräten bis hin zu kritischen industriellen Steuerungen, was ihre Sicherheit entscheidend macht. Im Gegensatz zu hochentwickelten Betriebssystemen haben Mikrocontroller-Umgebungen typischerweise minimalistische Designs, die auf spezifische Aufgaben zugeschnitten sind und wenig Raum für fortschrittliche Sicherheitsfunktionen lassen. Entwickler müssen eine Vielzahl von Techniken anwenden, von sorgfältigen Programmierpraktiken bis hin zu externen Sicherheitsmaßnahmen, um diese Systeme zu schützen. Dies unterstreicht die Bedeutung, die Feinheiten der eingebetteten Softwaresicherheit zu verstehen und rigorose Protokolle zu implementieren, um sich gegen ständig weiterentwickelnde Cyberbedrohungen zu schützen.

Die Einfachheit der Aufgaben und die üblicherweise geringe Anzahl von Ein- und Ausgabegeräten führen jedoch zu standardisierten Gegenmaßnahmen und reduzieren die Komplexität von Sicherheitssoftware. Mikrocontroller-basierte Systeme führen typischerweise spezifische, gut definierte Funktionen aus, die nur begrenzte Interaktionen mit der Außenwelt haben. Diese begrenzte Angriffsfläche bedeutet, dass potenzielle Angriffspunkte weniger sind, was die Entwicklung und Implementierung standardisierter Sicherheitsmaßnahmen erleichtert.

Standardisierte Gegenmaßnahmen können die Sicherheit von Mikrocontroller-Software erheblich verbessern. Diese Maßnahmen werden oft von der Mikrocontroller-Hardware unterstützt und bieten eine robuste Grundlage, auf der sichere Anwendungen aufgebaut werden können. Darüber hinaus sind viele moderne Mikrocontroller mit integrierten kryptographischen Modulen ausgestattet, die sichere Kommunikation und Datenverschlüsselung ermöglichen. Diese Hardwarefunktionen können genutzt werden, um kryptographische Sicherheitsmaßnahmen zu implementieren und die Datenintegrität und Vertraulichkeit auch in ressourcenbeschränkten Umgebungen zu gewährleisten.

Sicherheitsfunktionen moderner MCUs
TrustZone

Die ARM TrustZone-Technologie bietet eine robuste Lösung für hardwarebasierte Isolation, indem zwei getrennte Welten geschaffen werden: die sichere Welt und die nicht sichere Welt. Diese Trennung stellt sicher, dass kritische Operationen und sensible Daten vor potenziell unsicheren Anwendungen in der nicht sicheren Welt geschützt sind. Die wichtigsten Funktionen von TrustZone umfassen:

  • Stellt sicher, dass das System von einem authentifizierten und verifizierten Software-Image startet, wodurch nicht autorisierter Code von Anfang an verhindert wird.
  • Sicherer Speicher: Schützt sensible Daten, indem sie in einer isolierten Umgebung gespeichert werden, die für nicht sichere Anwendungen unzugänglich ist.
  • Sicherer Zugriff auf Peripheriegeräte: Kontrolliert den Zugriff auf Peripheriegeräte und stellt sicher, dass nur autorisierte Software mit sicheren Geräten interagieren kann.
  • Kryptographische Operationen: Erleichtert sichere kryptographische Operationen innerhalb der isolierten sicheren Welt und schützt Schlüssel und Operationen vor der nicht sicheren Welt.

Die ARMv8-M Architektur, die die TrustZone-Technologie integriert, teilt Speicher, Register, Code, Interrupts, Stacks und Peripherie in sichere und unsichere Bereiche auf. Dies ermöglicht die Isolation von Firmware und Middleware von Drittanbietern und die Implementierung sicherer Verschlüsselungsmechanismen für IoT-Anwendungen.

Sicherer und unsicherer Code laufen auf einer CPU, wobei die bekannten Modi „Handler Mode“ und „Thread Mode“ jeweils in sicheren und unsicheren Zuständen existieren. Im sicheren Modus gibt es einen eigenen Stapelzeiger, eine Stack-Begrenzungs-Überprüfung, einen eigenen SysTick-Timer und eine separate MPU. 

Im nicht sicheren Betriebszustand sieht der Programmierer einen Speicheradressraum ähnlich dem eines heutigen Cortex-M, jedoch mit „Löchern“, die zu einer Ausnahme führen, wenn auf sichere Bereiche zugegriffen wird. Es gibt eine neue Instruktion SG (Safe Gateway), die definierte Einsprungpunkte im sicheren Speicher auch von nicht sicherem Code aus zugänglich macht.

Im sicheren Betriebszustand hat der Entwickler Zugriff auf den kompletten Adressraum einschließlich sicherem Flash, sicherem RAM und sicherer Peripherie. Eine Security-Attribution-Einheit (SAU) definiert sichere und unsichere Speicherregionen mit einer Auflösung von 32 Byte. Die CPU-Zustände werden ausschließlich durch die zugegriffene Speicheradresse und deren Zustandsdefinition über die SAU bestimmt.

Das grundlegende Kernelement eines sicheren eingebetteten Systems ist somit die Sicherheit durch Isolation. Das Prinzip besteht darin, dass kritische Assets wie private Schlüssel, Benutzerdaten, sichere Funktionen usw. von generischen Daten und Funktionen wie grafischen Benutzerschnittstellen oder dem Echtzeitbetriebssystem (RTOS) isoliert werden sollten. Obwohl es Methoden gibt, softwarebasierte Isolation zu erreichen, sind sich Sicherheitsexperten einig, dass ein eingebettetes System hardwarebasierte Isolation nutzen muss, um wahre Sicherheit zu gewährleisten.

Die Architektur von TrustZone und ihre Integration in das Benutzerprojekt veranschaulicht diese Isolierung. Das "Benutzerprojekt" stellt die nicht sichere Welt dar. Dieser Teil des Systems umfasst nicht sichere Anwendungen und I/O-Treiber, die allgemeine Aufgaben übernehmen und mit dem Benutzer interagieren. Die TrustZone-Software enthält wesentliche Komponenten wie den Systemstart, die HSM-Firmware und kryptographische Funktionen. Diese Elemente sind von den nicht sicheren Komponenten isoliert, um sicherzustellen, dass sensible Operationen und Daten geschützt sind.

Typische Programmstruktur von User Project und TrustZone Software

 

Hardware Security Module (HSM)

Hardware Security Module (HSM) sind digitale IPs innerhalb eines Prozessors, die darauf ausgelegt ist, kryptographische Dienste und sicheres Schlüsselmanagement zu bieten. HSMs sind ein wesentlicher Bestandteil der Sicherheitsarchitektur eingebetteter Systeme und bieten robusten Schutz vor einer Vielzahl von Angriffen. Sie werden häufig in industriespezifischen Mikrocontroller-Kernen wie dem Aurix und dem NXP S32k verwendet. ARM-Cores wie der M23, M33, M55 und M85 verfügen über eingebaute HSMs.

HSMs bieten eine sichere Generierung und Speicherung kryptographischer Schlüssel, um sie vor Extraktion und unbefugter Nutzung zu schützen. Sie führen kryptographische Operationen wie Verschlüsselung und Entschlüsselung innerhalb der sicheren Umgebung des HSM durch, um die Exposition sensibler Daten zu verhindern. Darüber hinaus ermöglichen sie sichere und authentifizierte Firmware-Updates, um unbefugte Änderungen an der Systemsoftware zu verhindern. Moderne HSMs sind mit einem internen 32-Bit ARM Cortex Prozessor ausgestattet, der komplexe kryptographische Operationen effizient durchführt. Eine Memory Protection Unit (MPU) sorgt für zusätzlichen Schutz, indem sie unbefugte Zugriffe auf bestimmte Speicherbereiche verhindert. Ein True Random Number Generator (TRNG) ist ebenfalls integriert, um sichere kryptographische Verfahren zu gewährleisten.

Moderne HSMs implementieren Verschlüsselungsverfahren wie AES sowie einen TRNG in Hardware. Diese Funktionen ermöglichen eine schnelle und sichere Datenverschlüsselung und -entschlüsselung. Zudem bieten HSMs sicheren Schlüssel-Speicher in einem separaten HSM-Flash-Speicher, wodurch die Schlüssel vor unbefugtem Zugriff und Manipulation geschützt werden.

Ein HSM ist im Wesentlichen ein isolierter Core innerhalb des Mikrocontrollers. Daher benötigt man eine spezielle HSM-Firmware, die neben Treiber- und Speicherfunktionen vor allem die kryptographischen Hauptaufgaben erfüllt. Die HSM-Firmware kann updatebar sein, um sicherzustellen, dass kryptographische Verfahren in der Zukunft angepasst und verbessert werden können. Die HSM-Firmware ist dabei ebenfalls isoliert. In ARM-v8-Controllern geschieht dies über Trustzone-Speicher, HSMs in ARM-v7-Controllern haben zudem einen eigenen sicheren Programmspeicher-Bereich.

In der folgenden Grafik sieht man beispielhaft die Funktionsweise eines HSMs in einem Aurix Kern. Obwohl "nur" ein ARMv7-Controller, wird die Isolation des HSMs durch die eine "Firewall" erreicht, die Zugriffe nur über den Peripheral Bus erlaubt und den Adresszugriff kontrolliert. Innerhalb der HSM-IP operieren isolierte RAM- und ROM-Bausteine um den HSM-CPU.

 

HSM-Architektur in Infineon-Aurix-Controllern

 

Durch die Integration von HSMs in Mikrocontrollersysteme wird ein hohes Maß an Sicherheit durch hardwarebasierte Isolation und robuste kryptographische Fähigkeiten erreicht. Diese Kombination bietet umfassenden Schutz gegen physische und softwarebasierte Angriffe und gewährleistet die Integrität, Vertraulichkeit und Authentizität des Systems und seiner Operationen. Mit der TrustZone-Funktionalität rollt ARM in der ARM v8-M-Architektur die Eigenschaften Isolation und Protected Access global aus. Beide Eigenschaften in Kombination bilden ein robustes Fundament in der Cyber-Sicherheit von modernen Mikrocontrollern.