Sicher ist ein System im Wesentlichen dann, wenn es sich weder kopieren, noch stören oder von nicht autorisierten Parteien vereinnahmen lässt. Obwohl Schutzfunktionen in der Regel Aufgabe der Firewall oder Software sein sollten, integrieren Hersteller von Mikrocontrollern (MCUs) zunehmend Hardware-Sicherheitsmaßnahmen, die beim Vermeiden und Erkennen von Angriffen oder im schlimmsten Fall beim Wiederherstellen nach Manipulationen von Embedded-Systemen helfen können.

Bild 1: Interrupt-Prioritäten des MSP430.

Bild 1: Interrupt-Prioritäten des MSP430. Texas Instruments

Bei Embedded-Entwicklungen sind drei Sicherheitsaspekte zu berücksichtigen:

  • Vertraulichkeit – Dies gilt für Daten wie Passwörter oder kryptografische Schlüssel. Hardware-basierte Verschlüsselungsmodule können die Vertraulichkeit von Daten erheblich steigern.
  • Integrität – Dies betrifft hauptsächlich die verarbeiteten Daten sowie die unterschiedlichen Komponenten der MCU – besonders den Flash-Speicher – sowie Stammtabellen und -strukturen.
  • Echtheit – Falls sich die Integrität der Daten nicht gewährleisten lässt, sollte zumindest ihre Echtheit gegeben sein. Dies heißt, dass sie nicht von einem Angreifer geändert wurden.

Nahezu jede MCU überprüft ihre Betriebsintegrität beim ersten Initialisieren oder nach einem Spannungsabfall. Diese Prüfungen erfolgen bei einem Rücksetzvorgang beim Einschalten oder einem Rest nach einem Spannungsabfall. Resets sind im Normalbetrieb auch durch Zugriffsverstöße auslösbar.

Eckdaten

Datensicherheit und der dauerhaft sichere Betrieb von Geräten und Systemen sind in zahlreichen Anwendungen entscheidend. Die Hersteller von Mikrocontrollern statten ihre Produkte mit einer Reihe von integrierten Funktionen aus, die bei korrektem Einsatz den Ausfall eines Systems sowie das Vorhandensein von nicht autorisiertem Code feststellen und entsprechend reagieren können.

Spezifische Sicherheitsfunktionen

Als Beispiel für spezifische Sicherheitsfunktionen ist der MSP430G2230IDR als Mitglied der Serie MSP430 von Texas Instruments zu nennen. Der Flash-Speicher-Controller des MSP430 meldet einen Zugriffsverstoß im Zuge fehlerhafter Schreibversuche zum Flash-Speicher. Außerdem meldet die MCU jeden Schreibvorgang in einem FCTLx-Register mit einem anderen Wert als 0A5h im oberen Byte als Verstoß gegen den Sicherheitsschlüssel.

Beim ersten Aktivieren erzeugt der MSP430 ein POR-Signal (Power-on-Reset), das wiederum ein PUC-Signal (Power-up-Clear) beziehungsweise eine Einschaltfreigabe auslöst. Falls das PUC-Signal aus einem POR-Signal resultiert, initialisiert der Chip wie üblich und aktiviert die CPU und die Peripheriekomponenten. Gibt jedoch der Watchdog Timer oder der Flash-Speicher-Controller das PUC-Signal aus, um einen Verstoß gegen den Sicherheitsschlüssel (Bild 1) zu melden, verbleibt der Baustein bis zur Beseitigung des Problems im Reset-Zustand.

Bild 2: Auswahlschema für Schutzeinstellungen beim 32-Bit-Mikrocontroller RX631.

Bild 2: Auswahlschema für Schutzeinstellungen beim 32-Bit-Mikrocontroller RX631. Renesas

Speicherschutz

Manipulationsversuche an Watchdog Timern oder Flash-Speicherinhalten zu erkennen ist wichtig, wenn ein Angriff auf ein Embedded-System oder das Verfälschen von Daten abzuwenden ist. Eine andere Möglichkeit besteht darin, Angreifer unmittelbar von jeglichem Zugriff auf den Bootcode abzuhalten. Der MSP430 enthält eine Sicherung, die den im Flash-Speicher programmierten Code schützt. Ein Nicht-Lesen oder -Beschreiben des Embedded-Flash-Speichers in einem Mikrocontroller hindert Dritte beim Manipulieren von Geräten oder Systemen.

Der RX631 von Renesas bietet verschiedene Sicherheitseinstellungen, um einen unerlaubten Zugriff auf den internen Flash-Speicher zu vermeiden (Bild 2). Der Hersteller stellt drei Schutzarten bereit:

  • ID-Codeschutz. Nach dem Start der MCU im Bootmodus und dem Verbinden der seriellen Kommunikationsschnittstelle (SCI) mit der Host-Komponente erfolgt eine ID-Authentifizierung, um Dritte an Zugriff und Programmierung sowie am Lesen oder Löschen des internen Flash-Speichers zu hindern.
  • ID-Codeschutz mit chipeigenem Debugger. Nach dem Start der MCU im Einzelchip-Modus oder im Benutzer-Bootmodus und dem Verbinden mit einem internen Debugger erfolgt eine ID-Authentifizierung, um Dritte am Zugriff und der Programmierung sowie am Lesen oder Löschen des internen Flash-Speichers zu hindern.
  • ROM-Codeschutz. Ein PROM-Writer hält nicht autorisierte Personen vom Programmieren, Lesen oder Löschen des internen Flash-Speichers ab.
Bild 3: Trust-Zone-Hardware-Architektur von ARM mit Trennung von Normal und Secure World.

Bild 3: Trust-Zone-Hardware-Architektur von ARM mit Trennung von Normal und Secure World. ARM

Aktivieren lassen sich die verschiedenen Schutzfunktionen durch Zuweisung eines Steuer-, ID- oder ROM-Codes. Die ID-Authentifizierung erfolgt bei einem Verbindungsversuch. Ein Fehlschlag der Authentifizierung untersagt die Verbindung. Dies verhindert das Lesen, Programmieren oder Löschen des chipeigenen Flash-Speichers.

Die Mikrocontroller der Familie PIC24H von Microchip bieten sowohl Boot- als auch Programmschutz (Code-Guard) für den Programm-Flash-Speicher. Sie unterstützen Funktionen zum Schutz von Daten im RAM, die es ermöglichen, zusätzlich zum Sichern von Boot- und Codesegmenten RAM-Segmente zu schützen. In Verbindung mit Software-Verschlüsselungsbibliotheken erlaubt Code-Guard-Security mehreren Parteien das sichere Teilen von Ressourcen wie Speicher, Interrupts und Peripherie auf einem Chip.

ARM Cores

Ein Großteil der Mikrocontroller basiert auf einem ARM Core, der eine Vielzahl von Hardware-Sicherheitsfunktionen bereitstellt, auf denen Chip-Anbieter aufsetzen können. Größere MCUs können Prozessoren der Serie ARM Cortex-A mit Trust-Zone-Sicherheitserweiterungen nutzen. Die Trust-Zone-Hardware-Architektur (Bild 3) teilt Hard- und Software-Ressourcen so auf, dass sie in zwei Bereichen existieren können. Diese sind die sogenannte „Secure World“ für sensible Ressourcen und die „Normal World“ für alle übrigen. Beide Bereiche kommunizieren über den Trust-Zone-gesteuerten AMBA3-AXI-Bus, der die Bereiche voneinander trennt und sicherstellt, dass Komponenten der Normal World nicht auf Ressourcen der Secure World zugreifen können.

Die Trust-Zone-Architektur gestattet einem einzelnen Kern das Betreiben zweier virtueller Prozessoren – eines in jedem Bereich – mithilfe eines als Monitor Mode bezeichneten Kontext-Switches. Der Zugriff auf den Monitor Mode erfolgt streng kontrolliert, um die Datensicherheit beider Bereiche zu gewährleisten.

Bild 4: Blockdiagramm des ARM Cortex-M4.

Bild 4: Blockdiagramm des ARM Cortex-M4. ARM

Ein weiterer Mikrocontroller ist der SAMA5D3 von Atmel mit 536 MHz. Er basiert auf dem Cortex-A5-Core und enthält 128 KB RAM, 128 KB Flash-Speicher und eine Architektur mit hoher Datenbandbreite. Mit seinem sicheren Bootmechanismus, hardware-beschleunigten Verschlüsselungsengines (AES, TDES) und einer Hash-Funktion (SHA) bietet der SAMA5D3 Klon- sowie Codeschutz und ermöglicht sichere externe Datenübertragungen.

Betriebssysteme abgrenzen

Zwei Betriebssysteme abzugrenzen, kann zwar einen guten Schutz bieten, aber auch zu Problemen hinsichtlich Kosten, Komplexität und Codeumfang führen. Mikrocontroller nutzen vermehrt Prozessoren der Serie Cortex-M mit Vorteilen hinsichtlich Kosten, Leistungsaufnahme und Mixed-Signal-Integration.

Cortex-M4, Cortex-M3 und Cortex-M0+ Mikrocontroller enthalten als Option eine Speicherschutzeinheit (Memory Protection Unit oder MPU), die eine feinmaschige Kontrolle erlaubt, indem sie Anwendungen das Implementieren von Sicherheitsberechtigungsstufen und die aufgabenweise Trennung von Code, Daten und Stack ermöglicht.

Cortex-M4-Prozessoren (Bild 4) enthalten eine als Option verfügbare Acht-Bereichs-MPU als Maßnahme für Datensicherheit. Erfolgt ein Zugriff auf einen Speicherbereich ohne die erforderliche Berechtigung, wird ein Berechtigungsfehler gesetzt, der einen nicht maskierbaren Interrupt (NMI) auslöst. Dieser initiiert Schutzmaßnahmen durch das RTOS oder den Anwendungscode.

Integritätsprüfung

Neben einer MPU enthält der auf dem Cortex-M4 basierende Mikrocontroller STM32F2 von STMicroelectronics eine CRC-Berechnungseinheit zur Integritätsprüfung beim Übertragen und Speichern von Daten. Die CRC-Berechnungseinheit unterstützt das System beim Berechnen einer Software-Signatur während der Laufzeit, die das System mit einer Referenzsignatur vergleicht. Die Referenzsignatur wird während des Linkvorgangs erzeugt und an einem bestimmten Speicherort hinterlegt.

Cortex-M3-Prozessoren entsprechen im Prinzip dem Typ Cortex-M4, enthalten jedoch keinen DSP-Befehlssatz oder den als Option verfügbaren Gleitkommaprozessor. Die Baureihe Stellaris M3 von Texas Instruments enthält die Cortex-M3-MPU sowie Systemsteuerblockregister (SCB), auf die das System nur im Berechtigungsmodus zugreifen kann. Zudem gestattet der Flash-Speicher-Controller (FMC) die Anwendung eines Flash-Speicherschutzes zu Blöcken von je 2 KB.

Bild 5: Peripheriesperrkonzept der 32-Bit-Mikrocontroller Precision32.

Bild 5: Peripheriesperrkonzept der 32-Bit-Mikrocontroller Precision32. Silicon Labs

Auf dem Cortex-M3 basieren die Mikrocontroller SiM3C167 Precision32 von Silicon Labs. Diese MCUs verfügen über einen Lock- und Key-Mechanismus, der unerwünschten Zugriffe der Firmware auf die Peripherie verhindert (Bild 5). Zum Modifizieren von Bits in Periphlock-x muss das System eine Schlüsselsequenz in das Key-Register schreiben. Jeder weitere Schreibvorgang zu Key unterbindet daraufhin den Zugriff auf Periphlock-x bis zur erneuten Freigabe über Key. Wenn die Register einer Peripheriekomponente gesperrt sind, ignoriert das System sämtliche Schreibversuche. Das Register ist unabhängig vom Sperrzustand der Peripherie immer lesbar.

Flash-Security inklusive

Auch die energiesparenden Cortex-M0+-Prozessoren enthalten die optionale Acht-Bereichs-MPU. Der auf dem Cortex-M0+ basierte Kinetis KL02 von Freescale verfügt über Security-Schaltkreise, um den nicht autorisierten Zugriff auf RAM- und Flash-Inhalte zu verhindern. Bei aktivierter Flash-Security kann der SWD-Port nicht auf die Speicherressourcen des Mikrocontrollers zugreifen.

Einen Cortex-M4-Prozessor und einen Cortex-M0-Koprozessor vereint der LPC4350 von NXP in einem Chip. Dabei gleicht der große Kern die fehlenden Sicherheitsfunktionen des kleinen Cortex-M0 wieder aus. Neben der MPU bietet der LPC4350 Hardware, die gespeicherte Daten schützt und die Verarbeitungszeit zum Entschlüsseln, zum Prüfen der Integrität und zum Herkunftsnachweis beschleunigt.