Drei Merkmale, die jeder sichere Mikrocontroller braucht
Jahrelang konnten sich Entwickler von eingebetteten Systemen den Luxus erlauben, die Sicherheit zu ignorieren. Eingebettete Systeme waren abgekoppelte, unabhängige Systeme, die nur vor physischen Manipulationen geschützt werden mussten. Das Internet der Dinge (IoT) hat diesen Luxus für immer abgeschafft. Die Sicherheit steht heute bei fast allen vernetzten Geräten im Vordergrund des Interesses. Um ihre Geräte richtig abzusichern, müssen Entwickler auf drei wichtige Merkmale des Mikrocontrollers (microcontroller unit, MCU) achten: hardwarebasierte Isolierung, Speicherschutzeinheiten (memory protection units, MPUs) und Krypto-Beschleuniger. Sehen wir uns diese drei entscheidenden Merkmale an.
MCU-Sicherheitsmerkmal Nr. 1: Eine sichere Verarbeitungsumgebung
Ein Schlüsselkonzept für die Sicherung eines eingebetteten Systems ist die Isolierung des Systems. Die Isolierung bildet eine Grenze oder einen Schutz um Speicher, Komponenten und Funktionen, die zusammenarbeiten, um ein gemeinsames Ziel zu erreichen. Wenn ein Angreifer einen Bereich des Systems ausnutzen kann, schützt die Isolierungsbarriere den zweiten Bereich, so dass der Angreifer nicht sofort darauf zugreifen kann.
Ein eingebettetes System wird häufig in zwei getrennte Hauptbereiche unterteilt: eine nicht sichere Verarbeitungsumgebung (non-secure processing environment, NSPE) und eine sichere Verarbeitungsumgebung (secure processing environment, SPE). Die beste Möglichkeit, diese beiden separaten Ausführungsumgebungen umzusetzen, ist die Verwendung einer hardwarebasierten Isolierung. Hierfür gibt es zwei Methoden - den Einsatz einer Mehrkern-MCU oder einer Einkern-MCU mit TrustZone von Arm.
Bei der Mehrkern-Lösung ist ein Prozessor für die SPE bestimmt, während der andere als funktionsreicher Prozessor in der NSPE eingesetzt wird. Die beiden Kerne sind physisch voneinander isoliert und kommunizieren nur über einen gemeinsamen RAM und eine Interprozesskommunikation (interprocess communication, IPC). Wenn die NSPE gehackt wird, sind alle isolierten Daten, Speicher und Funktionen im Sicherheitskern weiterhin isoliert und geschützt. Der Angreifer müsste einen Weg finden, den Sicherheitskern zu hacken. Ein Beispiel für eine MCU, die den Mehrkern-Ansatz nutzt, ist der PSoC 64 von Infineon Technologies.
Der PSoC 64 verfügt über einen Arm-Cortex-M4-Prozessor für die anwendungsreiche NSPE und einen Arm-Cortex-M0+-Sicherheitskern für die SPE. Die beiden Kerne können per IPC kommunizieren. Ein interessantes Entwicklungsboard für den Einstieg in das Experimentieren mit der Mehrkern-Sicherheitslösung ist das Wi-Fi- und Bluetooth-fähige PSoC 64 Pioneer Kit CY8CKIT-064S0S2-4343W (Abbildung 1).
Abbildung 1: Das Pioneer Kit CY8CKIT-064S0S2-4343W bietet eine sichere Entwicklungsplattform für Entwickler, die mit Mehrkern-Sicherheitslösungen arbeiten. (Bildquelle: Infineon Technologies)
Die TrustZone-Lösung unterscheidet sich vom Mehrkern-Isolierungsmodell dadurch, dass ein einziger Verarbeitungskern verwendet wird, die Verarbeitung jedoch weiterhin in eine NSPE und eine SPE aufgeteilt ist. Wenn eine sichere Funktion ausgeführt werden muss, wechselt der Prozessor auf deterministische Weise von der NSPE zur SPE, was in der Regel drei Taktzyklen oder weniger dauert. Ein Beispiel für eine TrustZone-fähige MCU ist der STM32L562CET6 von STMicroelectronics.
Hardware-basierte Isolierung ist das erste Merkmal, auf das Entwickler bei ihren sicheren MCUs achten müssen. Das nächste Merkmal sind MPUs.
MCU-Sicherheitsmerkmal Nr. 2: MPUs
Eine MPU ist eine Hardware-Peripherie, die zum Schutz des Speichers dient. Embedded-Entwickler brauchen eine MPU, weil sie damit weitere Bereiche der hardwarebasierten Isolierung innerhalb ihres Anwendungscodes schaffen können. So kann ein Entwickler beispielsweise eine SPE nutzen, die mit Hilfe einer MPU weiter in isolierte Bereiche aufgeteilt werden kann. Wenn ein Angreifer einen Weg in die SPE findet, muss er immer noch Zugang zu den einzelnen isolierten Speicherbereichen finden, die durch die MPU geschützt sind.
Die MPU kann man sich als eine abgespeckte Speicherverwaltungseinheit (memory management unit, MMU) vorstellen, die Entwicklern eine Methode bietet, ihre Software in isolierte Prozesse aufzuteilen. Die MPU kann auf jedem Speicherplatz verwendet werden, einschließlich Flash, RAM und Peripherie. Sie dient der Festlegung von Ausführungs- und Zugriffsberechtigungen. Auch hier gilt: Wenn ein Angreifer auf einen Prozess zugreifen kann, wird er durch die MPU-Einstellungen in seinen Zugriffsmöglichkeiten eingeschränkt. Wird versucht, auf einen Speicherbereich außerhalb der MPU-Einstellungen zuzugreifen, löst die MPU einen Fehler aus. Das System kann dann versuchen, sich wiederherzustellen oder zurückzusetzen. Das macht MPUs zu einer wichtigen Funktion, die Entwickler zum Schutz ihrer Systeme benötigen.
MCU-Sicherheitsmerkmal Nr. 3: Krypto-Beschleuniger
Das dritte Merkmal, auf das Entwickler bei einer sicheren MCU achten müssen, ist ein Krypto-Beschleuniger. Ein Krypto-Beschleuniger dient zur Beschleunigung komplexer Berechnungen, die die CPU ansonsten relativ viel Zeit kosten würden. Die CPU kann die Arbeit auf den Beschleuniger verlagern, so dass sie sich parallel an einem anderen Problem widmen kann. Im Ergebnis nehmen kryptografische Operationen weniger Zeit in Anspruch, CPU-Zyklen werden eingespart und bei batteriebetriebenen Geräten sogar den Energieverbrauch gesenkt.
Es gibt mehrere Operationen, für die Entwickler den Krypto-Beschleuniger verwenden können. Erstens lässt er sich zur Verschlüsselung von Kommunikation oder Daten nutzen. Ein gängiges Verschlüsselungsverfahren ist AES-256, aber je nach MCU werden auch andere unterstützt. Eine weitere Anwendung ist die Berechnung des Hash-Wertes eines Datensatzes. Das kann nützlich sein, um die Integrität von Anwendungscode oder Daten zu überprüfen.
Krypto-Beschleuniger sind leicht zu übersehen, aber jede gute sichere MCU sollte über einen verfügen. Der Trick für Entwickler besteht darin, zu prüfen, was sie unterstützt, und sicherzustellen, dass sie über die für den erwarteten Lebenszyklus der Anwendung erforderlichen Funktionen verfügt.
Fazit
Sicherheit ist nichts, was Entwickler einfach am Ende des Entwicklungszyklus in ihr System einbauen können. Es muss frühzeitig darauf geachtet werden, dass die Bedrohungen für das System bekannt sind und dass eine MCU ausgewählt wird, die alle für die Sicherheit erforderlichen Hardware-Merkmale besitzt.
Have questions or comments? Continue the conversation on TechForum, Digi-Key's online community and technical resource.
Visit TechForum




