Selbst Smartphone-Modelle im Einsteigerbereich um die 200 Euro verfügen heute bereits über einen Prozessor mit acht Kernen. Die neuen 32-Bit-Multicore-Mikrocontroller haben bei einer vergleichsweise geringen Taktzahl ein Vielfaches der Leistungsfähigkeit ihrer Singlecore-Vorfahren.
Insgesamt steigt die Leistungsfähigkeit des Prozessors mit jedem weiteren Rechenkern. In Multicore-Systemen kann ein einzelnes Programm in kürzerer Zeit auf mehreren CPUs verarbeitet werden, oder es lassen sich mehrere Softwareaufgaben parallel ausführen.
Auch spielt in mobilen Endgeräten die Ausdauer und damit die Energieeffizienz eine wichtige Rolle. Wie lange steht mir das Gerät mit nur einer Batterieladung zur Verfügung, bis ich es wieder ans Netzteil anschließen muss?
Mobile Endgeräte befinden sich zudem üblicherweise in unterschiedlichen Netzwerk-Umgebungen und empfangen ununterbrochen Daten von Cloud-Services über E-Mail, Social Media und Nachrichten-Apps. Essenziell ist deshalb auch die Datensicherheit. Das mobile Multicore-System bedarf einer Krypto-Hardware mit hohen Anforderungen an die Verschlüsselung von gespeicherten und gesendeten Daten. Je höher die Datensicherheit sein soll, desto aufwendiger sind die Verschlüsselungsmechanismen.
Zusammenfassend ist damit folgendes Dreigestirn für zuverlässige mobile Kommunikationssysteme von heute unabdingbar:
Leistungsfähigkeit + Energieeffizienz + Datensicherheit = moderne und zuverlässige Mobilität
Aufbau von Multicore-MCUs und Peripherie-Modulen
Wie ist nun ein moderne 32-Bit-Multicore-Mikrocontroller aufgebaut und welche Bereiche sind besonders mit Verschlüsselung zu schützen?
Die Bussysteme verbinden die CPU mit Programm- und Datenspeicher und Peripherie-Modulen.
Im Programmspeicher werden die Ablaufsteuerungssequenzen (Programme) der unterschiedlichen Prozesse gespeichert.
Im Datenspeicher werden die Daten, die während der Verarbeitung der Steuerungsabläufe entstehen, gespeichert.
Dazu kommen die Peripherie-Module:
Timer für die zeitliche Steuerung und Überwachung von Programm- und Signalabläufen
serielle Interfaces wie beispielsweise SPI-Interfaces zur Kommunikation mit Displayeinheiten sowie USB-Module für die Kommunikation zu anderen USB-Geräten zur Speicherung von Daten über das USB-Protokoll (etwa auf USB-Sticks)
PWM-Units zur Generierung von PWM-Signalen, zum Beispiel zur Steuerung von Motoren, Helligkeit von LEDs und so weiter
Richtige Speicher-Partitionierung als Schlüssel zum Erfolg
Ein fehlerfrei funktionierendes System, das unterschiedliche Aufgaben gleichzeitig bearbeiten und dabei ohne Datenverlust oder unbeabsichtigte Datenmanipulation auf gemeinsam verwendete Ressourcen (wie Programm-/Datenspeicher) zugreifen soll, benötigt strikt getrennte Speicherpartitionen beziehungsweise zeitlich gesteuerte Zugriffe auf gemeinsam verwendete Speicherbereiche oder Peripheriemodule, beispielsweise ein USB-Interface.
Die CPUs dürfen sich also bei der Verwendung gemeinsamer Speicher und anderer Ressourcen für unterschiedliche Aufgaben in einem Mikrocontroller nicht in die Quere kommen. Ein erfolgreiches Software-Projekt erfordert eine klare Aufteilung und Trennung der verfügbaren Ressourcen auf die zu lösenden Softwareaufgaben.
Die Speicher-Partitionierung ist die Basis für
konsistente Daten bei einer parallelen Datenverarbeitung
sichere Daten für die Gewährleistung der Funktionalen Sicherheit
verschlüsselte und damit geschützte Daten im Speicher und bei der Datenübertragung
Parallele Datenverarbeitung in Multicore-Mikrocontrollern
Multicore-Systeme machen es möglich, dass auf Smartphones oder Tablets gleichzeitig unterschiedliche Apps ausgeführt werden können. Damit dabei auch die „Privatsphäre“ der User-Daten sichergestellt wird, ist es zwingend notwendig, eine Speicherzugriffsteuerung in der Krypto-Hardware bereitzustellen.
Im Mensch-Maschine-Umfeld (zum Beispiel im Automobil) mit seinen sehr harten Realzeit-Anforderungen gilt das ebenso. Hier sind hohe Sicherheitsanforderungen zu erfüllen; bei einer parallelen Abarbeitung der Software-Steuerungsmodule erfordert dies die strikte Synchronisation von Speicherzugriffen.
Dazu stellt man sich folgende wichtige Fragen:
Wann darf auf gemeinsam verwendete Speicherpartition zugegriffen werden?
Wie kann der Zugriff auf diese Partitionen überwacht werden?
Für diese Echtzeit-Leistungsfähigkeit sind Mikrocontroller-Architekturen mit den folgenden wichtigen Merkmalen vonnöten:
Multicore-Implementierung (mehrere CPUs in einem Mikrocontroller)
Crossbar: Multi-Master/Multi-Slave-Bus-Matrix
globale und CPU-lokale Speicherimplementierung
Memory Protection Unit(s), kurz MPU(s)
Krypto-Hardware zur Datenverschlüsselung
Vermeidung unerlaubter Speicherzugriffe
Für die Datensicherheit sind folgende Aspekte essenziell:
Speicheraufteilung: Welche Applikation bekommt welche Speicherpartitionen zugewiesen?
Speicherzugriffssteuerung: Wer darf wann auf eine gemeinsame Speicher-Partition lesend oder schreibend zugreifen?
Jeder Lese- und Schreibzugriff muss während der Programmverarbeitung überwacht werden, damit nur zulässige Zugriffe durchgeführt werden. Werden verbotene Zugriffe erkannt, muss eine Fehlerbehandlungsroutine gestartet werden.
Die Memory Protection Unit verhindert via Speicherzugriffssteuerung unerlaubte Speicherzugriffe. Dazu bestimmt der Entwickler für jeden Teil der Applikation (zum Beispiel für jede Software-Task), welche Programmspeicher gelesen und welche Applikationsdaten in den Datenspeichern und Peripherie-Modulen nur gelesen, nur geschrieben oder gelesen und geschrieben werden dürfen (Read, Write und Read-Write-Protection). Will ein Programmteil beziehungsweise eine Task auf einen nicht freigegebenen Speicherbereich zugreifen, verhindert die MPU den Zugriff und ruft eine MPU-Fehlerroutine (Error Task) auf.
Security durch Datenverschlüsselung
Sollen Daten im Speicher und bei einem Datenaustausch zwischen verschiedenen Geräten geschützt werden, kommt die Datenverschlüsselung ins Spiel. Eine Applikation, die sensible Daten verarbeiten soll, muss Speicherinhalte vor unerlaubten Zugriffen (im Speicher und bei der Datenübertragung) durch Verschlüsselungstechniken schützen.
Dazu werden eigene Security-System-on-Chip-Strukturen eingesetzt und abgegrenzte Security-Bereiche auf einem Mikrocontroller definiert. Diese Bereiche sind mit einer Firewall geschützt, die unberechtigte Zugriffe verhindern sollen.
Die neuesten Multicore-Architekturen bieten ein Hardware-Security-Modul (HSM), um erweiterte Sicherheitsanforderungen zu erfüllen, zum Beispiel seitens der Kfz-Hersteller nach erweitertem Schutz ihrer Systeme gegen Manipulation und/oder gegen potenzielle Hackerangriffe. So wird die Sicherheit der Personen im Fahrzeug und die der Verkehrsteilnehmer außerhalb gewährleistet.
In der „sicheren Zone“ eines Mikrocontrollers verarbeitet eine eigene CPU Security-Applikationen. Diese geschützte CPU verfügt über verriegelte Speicher (ROM und RAM), auf die die anderen CPUs und Bus-Master (wie das DMA-Modul) des Multicore-Mikrocontrollers nicht zugreifen können.
Richtig sicher wird das High Security Module einerseits durch das Krypto-Hardwaremodul (beispielsweise Advanced Encryption Standard Modul AES) und andererseits durch den True Random Number Generator (TRNG), der gleich mehrere Funktionen hat:
Erzeugen von sicheren kryptographischen Schlüsseln (Secure Cryptographic Keys Generation)
sichere Speicherung kryptographischer Schlüssel (zum Beispiel Master Keys) in einem nichtflüchtigen Key-Speicher (Non-volatile Memory (NVM), zum Beispiel in einem Daten-Flashmodul)
Verwaltung der kryptographischen Schlüssel (Key Management)
Verarbeitung und Management kryptographischer Daten in Secure-Funktionen (Verschlüsselungs- und Signaturfunktionen)
MicroConsult bietet zahlreiche Trainings und Coachings rund um die Themen Multicore-Mikrocontroller, Safety, Security, Requirements Engineering und Softwarearchitektur an. Eine Übersicht aller Schulungsinhalte finden Sie hier.