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 1 kB adressiert werden oder die gesamte Speicherbank wird in 4-kB-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, 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 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 Bereiche hinaus 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) unter www.rutronik.com/security-aspects.