Kleiner, intelligenter, funktionaler: Wie die STM32L5-Serie hilft, IoT-Herausforderungen zu meistern - TrustZone von ARM stellt Sicherheit in den Mittelpunkt vernetzter Geräte

19.11.2020 Know-How

Auf Grundlage der Isolation von Hardware-Bereichen ermöglicht die ARM TrustZone-Technologie eine CPU-basierte Sicherheitsphilosophie in einem systemübergreifenden System-on-Chip-Ansatz. So lassen sich sichere IoT-Endpunkte und ein vertrauenswürdiger Gerätekern realisieren. Die ARMv8-M-Architektur erweitert die TrustZone-Technologie auf Cortex-M-basierte Systeme.

Immer mehr Gegenstände sind kabellos über das Internet miteinander verbunden. Damit steigt der Bedarf an zuverlässigen Sicherheits-Features in den IoT-Knoten, vor allem in den Bereichen Consumer, Industrie und "Weiße Ware" im Haus. Denn solche Internetverbindungen dienen als Einfalltor für Hackerangriffe - von DDoS (Distributed Denial of Service)-Angriffen bis zu unbefugten Zugriffen auf interne Netzwerke.

Priorität haben Maßnahmen, welche die Manipulationssicherheit in systemintegrierter Hardware - also in vernetzten, eingebetteten Geräten - erhöhen. Dabei sollten Systeme auf der physischen Ebene als Erstes in Bezug auf den Startvorgang abgesichert werden, da Hacker häufig den Neustart von Systemen anvisieren. Um dieser Bedrohung zu begegnen, werden verschiedene Softwarelösungen eingesetzt, die Hardware-Sicherheitsmechanismen verwenden. Eine davon ist die TrustZone-Technologie von ARM. Auch mit TrustZone lässt sich - wie mit allen heute verfügbaren Techniken - kein Gerät auf Dauer perfekt gegen Attacken von außen absichern. Doch TrustZone erhöht die Hürde für das Eindringen in ein System ganz erheblich.

Zuverlässige Sicherheits-Features auf Chip-Ebene

Herzstück des TrustZone-Ansatzes sind zwei durch Hardware getrennte Bereiche: ein sicherer und ein nicht sicherer Bereich ("secure world" bzw. "non secure world"). Sie können gleichzeitig auf einem einzigen Kern ausgeführt werden. So kann nicht sichere Software nicht direkt auf sichere Ressourcen zugreifen. Die Isolierung zwischen beiden Bereichen erstreckt sich innerhalb eines System-On-Chip (SoC) über den Prozessor hinaus auch auf Speicher, Busaktivitäten, Interrupts und Peripheriegeräte.

So stellt die TrustZone-Technologie eine Grundlage für die systemweite Sicherheit und die Schaffung einer vertrauenswürdigen Plattform dar, bei dem sich jeder Part des Systems flexibel als Teil der Secure-World konzipieren lässt. Durch das Erstellen eines Sicherheitssubsystems können Assets vor Software- und Hardwareangriffen geschützt werden.

TrustZone kann sowohl eine Softwarebibliothek als auch ein gesamtes Betriebssystem für die Ausführung im sicheren Bereich absichern. Eine "nicht sichere" Software ist bei einem Zugriff auf die sichere Seite (engl. secure page) und für dort befindliche Ressourcen nicht zugänglich.

TrustZone-Technologie in Cortex-M-Mikrocontrollern

Die ARMv8-M-Architektur erweitert die TrustZone-Technologie auf Cortex-M-basierte Systeme und liefert robusten Schutz bei niedrigeren Kosten als bei einem dedizierten IC.

Sie reduziert den Kosten- und Entwicklungsaufwand für prozessorbasierte Sicherheit ganz erheblich, so dass Security-Hardware keinen relevanten Kostenfaktor mehr darstellt.

Cortex-M- und Cortex-A-Prozessoren bieten dabei prinzipiell dieselben Sicherheitskonzepte, es gibt jedoch wichtige Unterschiede: Der entscheidende Vorteil von Cortex-M ist, dass der Kontextwechsel zwischen sicheren und nicht sicheren Bereichen in der Hardware erfolgt. So werden schnellere Übergänge und eine höhere Energieeffizienz erreicht. Im Gegensatz zu Cortex-A ist keinerlei sichere Überwachungssoftware erforderlich. Dafür ist allerdings der erreichte Sicherheitslevel in den Cortex-A-Prozessoren wesentlich höher.

TrustZone basiert auf dem Prinzip der geringsten erforderlichen Berechtigung. Das heißt, Systemmodule wie Treiber und Anwendungen erhalten nur dann Zugriff auf eine Ressource, wenn dies erforderlich ist. Software wird im Allgemeinen sowohl in einer sicheren als auch in einer nicht sicheren Umgebung ausgeführt. Die Übertragung von Inhalten zwischen beiden Bereichen erfolgt über eine Routine, die als "Core Logic" (Cortex-M-Prozessoren) oder als "sicherer Monitor" (Cortex-A-Prozessoren) bezeichnet wird.

TrustZone für ARMv8-M ist eine ideale Technologie für eine Platform Security Architecture (PSA), da die Hardware zwischen dem normalen Code und der vertrauenswürdigen Codebasis isoliert wird. Sie bietet eine flexible Grundlage, aus der SoC-Designer innerhalb der Sicherheitsumgebung bestimmte Funktionen auswählen und so kosteneffiziente und energiesparende Lösungen entwickeln können. TrustZone enthält Prozeduren, die vertrauenswürdige Hardware für hardwaregestützte sichere Speicher, Zufallsgeneratoren (Random Number Generators, RNG) und eine Referenz-Quelle für die sichere Zeitangabe bereitstellt.

Der Low-Power-Mikrocontroller Cortex-M23 ist der kleinste und in dieser Kategorie zugleich leistungsstärkste Mikrocontroller mit implementierter TrustZone-Technologie. Die Cortex-M33-Serie ist optimiert hinsichtlich Kosten- und Stromverbrauch. Cortex M-33 ist ausgelegt auf Mixed-Signal-Anwendungen, insbesondere solche, die eine effiziente Sicherheit und ggf. digitale Signalsteuerung erfordern.

Standardisiertes Regelwerk im Rahmen des Software-Programmentwurfs

TrustZone entfaltet jedoch nur dann effizient seine Wirkung, wenn anerkannte Regeln für die Datensicherheit bereits beim Softwareprogrammentwurf eingehalten werden. Hier kommt der C CERT-Standard ins Spiel, der "guten Programmierstil" vorschreibt und u.a. dazu dient, dass:

  • die Lebensdauer von Variablen (local, global, auto,...) eingehalten wird,
  • die Anweisungen des Präprozessors eindeutig sind, z.B. durch Include-Guards,
  • der Wertebereich der Variablen eingehalten wird,
  • Speichergrenzen (z.B. am Array) geprüft und eingehalten werden.
     

Die Implementierung erfolgt, indem ein Tool in die Entwicklungsumgebung integriert wird, das während der Entstehung des Programms bei jedem Kompilieren die Regelkonformität prüft. Eine nachträgliche Implementierung in den bestehenden Code wird analog zu MISRA-C (C-Programmierstandard aus der Automobilindustrie) aufwendig, da bei Verletzungen des Standards weite Programmteile neu entworfen und programmiert werden müssen.

Sowohl bei C CERT als auch bei MISRA-C wird der Code statisch analysiert und gegen bestimmte Programmier-Regeln geprüft. Der Unterschied liegt darin, dass die Regeln von MISRA-C funktionale Gerätesicherheit abbilden, die von C CERT hingegen Datenschutz und Datensicherheit.

Die STM32L5-Familie folgt der STM32L4+ Cortex-M-Familie und ist die erste ST-Produktfamilie, die auf der ARMv8-M-Architektur mit TrustZone basiert. Sie erleichtert Entwicklern die Realisierung vertrauenswürdiger Geräte auf Basis des PSA-Frameworks mit dem Cortex-M33-Prozessor, der TrustZone-Technologie und aufgewerteten SoC-Security-Features erheblich. Mit ihrem großen Umfang an integrierten digitalen und analogen Peripherals sowie Schnittstellen, wie CAN FD, USB Type-C und USB Power Delivery bieten die STM32L5 Mikrocontroller eine ideale Plattform für Produkte wie Industriesensorik sowie Steuerungen, Geräte für Hausautomation (Home Automation, Smart Home), Smart Meter, Fitness Tracker, Smart Watches, Anwendungen in der Medizintechnik, wie Pumpen und Messtechnik und viele andere.

Durch ein Upgrade auf den Cortex-M33-Prozessor und einen Cache für interne und externe Programmspeicher verbessert der STM32L5 die Leistung gegenüber seinem Vorgänger. Eine optimierte Stromversorgung reduziert die Stromaufnahme auf 33nA im Shutdown-Modus und bietet höchste Energieeffizienz für lange Laufzeiten.

Der STM32L5 erfüllt auch den Bedarf an mehr Sicherheit durch zusätzliche Sicherheitsfunktionen, die typischerweise nicht auf Mikrocontrollern zu finden sind, beispielsweise ein Krypto-Co-Prozessor und das Verschlüsseln von externen Speichern. Weitere Verbesserungen sind Softwareisolierung, ein speziell abgesicherter Startvorgang (secure boot) sowie ein speziell gesicherter Speicherbereich für kryptographische Schlüssel.

Im Folgenden werden konkrete Erläuterungen zu verschiedenen Beispielen von Peripherals, also integrierten Funktionseinheiten, und der Umsetzung in Zusammenhang mit dem TrustZone-Security-Konzept in der Mikrocontrollerserie angeführt.

Busschnittstellen

Konfigurierbare sichere Attributeinheiten (Secure Attribute Unit, SAU) unterstützen bis zu acht Speicherbereiche, wahlweise als sichere bzw. nicht sichere Bereiche. Der Cortex-M33-Prozessor unterstützt System-AHB-(S-AHB) und Code-AHB-(C-AHB) Busschnittstellen. Die S-AHB wird für jeden Befehlsabruf und jeden Datenzugriff auf das speicherabgebildete SRAM verwendet, dem sog. memory-mapped SRAM, sowie für Befehlsabrufe und Zugriffe auf die SOC-Peripherie, auf externe RAM und externe Hardware. Die C-AHB wird bei jedem Befehlsabruf und Datenzugriff auf den Codebereich des Speichers verwendet.

Real-Time Clock

TrustZone bildet eine vollumfänglich sicherbare Real-Time Clock (RTC) für einen Wake-up-Timer Alarm A / Alarm B sowie den individuellen Zeitstempel für sichere bzw. nicht sichere Konfiguration.

Übersicht zum Globalen TrustZone-Controller

Der sogenannte Globale TrustZone Controller (GTZC ) umfasst drei Untergruppen (subblocks):

  • Der TrustZone-Sicherheitscontroller (TZSC) definiert den sicheren, privilegierten Zustand der Master/Slave-Peripheriegeräte und bestimmt die Größe eines nicht sicheren Bereiches im Watermark Memory Peripheral Controller (MPCWM). Er gibt ausgewählten integrierten Peripherieeinheiten im Rahmen der gemeinsamen Nutzung der RCC und E/A-Logik Kenntnis über den sicheren Status der "securable peripherals", wie den RCC und GPIOs.
  • Der blockbasierte Speicherschutzcontroller (MPCBB) steuert sichere Zustandsmodi aller Blöcke (256 Byte Seiten) des zugehörigen SRAMs.
  • Der TrustZone-Zugriffscontroller für illegale Zugriffsereignisse (TZIC) sammelt alle illegalen Zugriffsereignisse im System und erzeugt einen sicheren Interrupt zum NVIC (Nested Vectored Interrupt Controller). Mit den Unterblöcken werden die TrustZone und privilegierte Attribute innerhalb des gesamten Systems konfiguriert.
     

Die wichtigsten Merkmale des GTZC sind:

  • drei unabhängige 32-Bit-AHB-Schnittstellen für TZSC, MPCBB und TZIC,
  • MPCBB und TZIC sind nur mit sicheren Transaktionen zugänglich,
  • der private wie auch der nicht private Bereich im TZSC wird in Bezug auf sicheren / nicht sicheren Zugriff unterstützt.
     

TrustZone-Unterstützung im Manipulations- und Sicherungsregister (TAMP)

Für die manipulationssichere / nicht sichere Konfiguration besteht im TAMP eine Backup-Registerkonfiguration in mehrere konfigurierbare Speicherbereiche wie folgt: ein sicherer Lese- zu Schreibbereich, ein sicherer Schreib- zu Lese-Bereich, ein nicht-sicherer Lese- zu Schreibbereich und ein Monotoner Zähler.

TrustZone im integrierten Flash-Speicher

TrustZone im on-Chip integrierten Flash-Speicher (Embedded Flash Memory) umfasst 512kByte zum Speichern von Programmen und Daten und ermöglicht "single / dual bank" Betriebszustände bzw. den Auslesemodus "Read-While-Write (RWW) im Dual-Bank-Modus.

Für den Flash-Speicher stehen vier Schutzstufen zur Verfügung.

  • Level 0.5 ist nur bei der TrustZone-Aktivierung verfügbar. Hier sind alle Lese- / Schreibvorgänge vom bzw. zum nicht sicheren Flash-Speicherbereich möglich, unter der Bedingung, dass "TrustZone" aktiviert und kein Schreibschutz eingestellt ist. Der Debug-Zugriff auf den gesicherten Bereich ist ausgeschlossen, auf nicht sichere Bereiche jedoch weiterhin möglich.
  • Level 0: keine Leseschutz
  • Level 1: Speicher-Leseschutz: Der Flash-Speicher kann nicht gelesen bzw. beschrieben werden, wenn die Debug-Funktionen verbunden sind bzw. "Boot in RAM" oder der Bootloader eingestellt sind. Ist TrustZone aktiviert, ist das "non-secure debug" - also das nicht sichere Debuggen - möglich, der Start im SRAM dagegen ausgeschlossen.
  • Level 2: IC-Leseschutz
     

Betriebsmodus TrustZone-Security

Ist die "TrustZone-Security"-Funktion aktiviert, ist der gesamte Flash nach dem Zurücksetzen sicher, und folgende Schutzmaßnahmen sind verfügbar:

Nichtflüchtiger, sicherer Flash-Bereich mit integrierter Verifikation (Watermark proofed): Hier erfolgt der Zugriff auf den sicheren Bereich nur im "secure mode". In Bezug auf die Adressierbarkeit kann eine Speicherbank im Single-Bank-Modus entweder mit einer Sprungweite von 1kByte adressiert werden oder die gesamte Speicherbank wird in 4-kByte-Blöcke unterteilt.

Proprietärer Code-Ausleseschutz (PCROP): Als Teil des Flash-Sicherheitsbereiches bietet er Schutz vor unbefugtem Auslesen und Schreiben durch Dritte. Der geschützte Bereich gilt als "execute only"-Bereich und ist seitens der STM32-CPU nur über Befehlscode ansprechbar. Alle anderen Zugriffsarten (DMA (Direct Memory Access), Debug, CPU Data Read, Write and Erase) sind ausgeschlossen. Im Single-Bank-Modus können zwei Bereiche mit beiden Sicherheitsbereichen ausgewählt werden. Im Dual-Bank-Modus kann mit dem Sicherheitsbereich ein Bereich pro Speicherbank ausgewählt werden.

Die "Secure hide protection area" ist Teil des Flash-Sicherheitsbereichs und kann geschützt werden, um den Zugriff auf diesen Bereich durch Lesen, Schreiben und Abrufen von Daten zu verhindern.

In einem blockbasierten Sicherheitsbereich im flüchtigen Flash-Speicher (volatile block-based secure Flash area) kann jede Seite Echtzeit als sicher oder nicht sicher programmiert werden.

Aktivierung und Zugriffsberechtigung

Die Sicherheitsarchitektur basiert auf der ARM TrustZone-Technologie mit der ARMv8-M Main Extension.

TrustZone Security wird durch das TZEN-Optionsbit (Trust Zone Enable) im FLASH_OPTR-Register aktiviert. In diesem Fall definieren die Zuordnungseinheiten SAU (Security Attribution Unit) und IDAU (Implementation Defined Attribution Unit) die Zugriffsberechtigungen in Bezug auf sicheren und nicht sicheren Status.

SAU stellt eine Zuordnungseinheit in Bezug auf Sicherheit dar und dient der Verwaltung von Hardware-Sicherheitsattributen. Bis zu acht konfigurierbare SAU-Bereiche stehen für die Sicherheitszuweisung zur Verfügung.

IDAU ist eine Zuordnungseinheit, die sich auf Zugriffsberechtigungen bezieht. Sie umfasst eine erste Speicherpartition für nicht sichere bzw. nicht sicher abrufbare Attribute, in welche Code oder Daten abgelegt werden können. Diese werden dann mit den Ergebnissen aus der SAU-Sicherheitszuweisung kombiniert und der höhere Sicherheitsstatus wird ausgewählt. IDAU belegt den Speicherplatz für Flash, System-SRAMs und Peripherals doppelt, um einen sicheren und nicht-sicheren Zustand zu gewährleisten. Für den externen Speicherplatz wird dieser Vorgang jedoch nicht durchgeführt.

Über die hier genannten wirkt sich TrustZone auch auf weitere Bereiche im Mikrocontroller aus, im Sinne von Hardware-Lösungen.

Umfangreiche Informationen zu Security (Manipulation, Attacken) in Mikrocontrollern finden sich übersichtlich zusammengefasst im Rutronik Whitepaper "Security Aspects" (S. 74/75): <link www.rutronik.com/security-aspects _blank - "open link in new window">www.rutronik.com/security-aspects</link>

 

 

Komponenten gibt es auf www.rutronik24.de.

Bleiben Sie auf dem Laufenden, indem Sie unseren Newsletter abonnieren.