STM32 Security: Secure Boot und Firmware-Verschlüsselung

STM32 Security: Secure Boot und Firmware-Verschlüsselung sind heute zentrale Bausteine, wenn Embedded-Geräte in vernetzten Produkten, Maschinen oder Messsystemen eingesetzt werden. Sobald Firmware Updates „over the air“ (OTA) oder über Service-Schnittstellen möglich sind, entsteht ein realer Angriffsweg: Manipulierte Software kann Funktionen verändern, Daten abgreifen oder Geräte unbrauchbar machen. Secure Boot stellt sicher, dass nur autorisierte Firmware überhaupt startet, während Firmware-Verschlüsselung den Inhalt von Images und Updates vor unbefugtem Auslesen schützt – etwa bei Zugriff auf Flash-Bausteine, Debug-Schnittstellen oder Update-Dateien. Für STM32-Controller ist das Thema besonders relevant, weil sie in Industrie, Medizintechnik, Smart Home und IoT sehr verbreitet sind und häufig in Serienproduktion landen. Dieser Artikel erklärt verständlich, wie ein belastbares Sicherheitskonzept für STM32 aussieht, welche Mechanismen STMicroelectronics bereitstellt (von TrustZone bis Secure Firmware Update), welche Schlüssel- und Zertifikatsmodelle in der Praxis funktionieren und wie Sie typische Fehler vermeiden. Ziel ist nicht „Security durch Marketing“, sondern ein nachvollziehbares Design, das sich testen, warten und über Jahre sicher betreiben lässt.

Bedrohungsmodell: Was Secure Boot und Verschlüsselung wirklich absichern

Security beginnt nicht beim Kryptografie-Algorithmus, sondern beim Bedrohungsmodell. Für Embedded-Geräte sind zwei Klassen besonders wichtig: Manipulation der Firmware und unbefugtes Auslesen von geistigem Eigentum oder Secrets. Secure Boot und Firmware-Verschlüsselung adressieren diese Risiken, aber nur, wenn Sie klar definieren, wovor geschützt werden soll.

  • Firmware-Manipulation: Angreifer spielt modifizierte Software ein, um Funktionen zu verändern oder Sicherheitsprüfungen zu umgehen.
  • Rollback-Angriffe: Ein altes, verwundbares Firmware-Image wird installiert, um bekannte Lücken wieder zu öffnen.
  • IP-Diebstahl: Firmware wird aus Flash extrahiert, analysiert oder kopiert.
  • Secret-Exfiltration: Schlüssel, Tokens oder Zertifikate werden aus Speicher oder Debug-Schnittstellen entnommen.
  • Supply-Chain-Risiken: Programmierung/Produktion wird kompromittiert; falsche Images landen im Feld.

Secure Boot schützt primär gegen das Starten nicht autorisierter Software. Verschlüsselung schützt primär gegen das Lesen von Firmware-Inhalten. Beide Maßnahmen ersetzen jedoch keine sichere Update-Logik, keine Härtung von Debug-Interfaces und keine robuste Schlüsselverwaltung.

Grundprinzip Secure Boot: Vertrauenskette vom ROM bis zur Applikation

Secure Boot bedeutet, dass das System beim Start eine Chain of Trust aufbaut: Ein unveränderlicher Vertrauensanker (typischerweise ROM-Code oder ein geschützter Bootloader) prüft kryptografisch, ob der nächste Boot-Schritt authentisch und unverändert ist. Erst wenn diese Prüfung erfolgreich ist, wird weiter ausgeführt. Im Embedded-Kontext ist entscheidend, dass der Startpunkt möglichst schwer manipulierbar ist.

  • Root of Trust (RoT): Startcode/Keys in einer Zone, die nicht durch normale Updates überschrieben werden kann.
  • Authentizität: Nachweis, dass das Image vom Hersteller stammt (Signaturprüfung).
  • Integrität: Nachweis, dass das Image nicht verändert wurde (Hash/Signatur).
  • Policy: Regeln, welche Versionen erlaubt sind (Anti-Rollback).

Als konzeptioneller Einstieg in Secure Boot und Vertrauensketten ist die Übersicht zu Secure Boot hilfreich. Für Industrie-Designs ist zusätzlich relevant, dass Secure Boot nicht nur „beim ersten Start“ gilt, sondern über den gesamten Lebenszyklus – inklusive Updates, Reparatur und RMA.

Signieren vs. Verschlüsseln: Zwei unterschiedliche Ziele

In Projekten wird Firmware-Verschlüsselung oft fälschlich als „Ersatz“ für Signaturen betrachtet. Das ist ein häufiger Designfehler. Verschlüsselung verhindert das Lesen, aber sie beweist nicht automatisch, dass der Inhalt vom Hersteller stammt. Umgekehrt schützt eine Signatur vor Manipulation, aber nicht vor dem Auslesen des Codes. In der Praxis kombiniert man beides.

  • Digitale Signatur: stellt Authentizität und Integrität sicher (typisch: asymmetrische Kryptografie).
  • Firmware-Verschlüsselung: schützt Vertraulichkeit (typisch: symmetrische Kryptografie).
  • Best Practice: „Sign-then-encrypt“ oder „Encrypt-then-sign“ je nach Bootloader-Design – entscheidend ist, dass beides verifiziert wird.

Für einen soliden Überblick zu Signaturen und Public-Key-Verfahren eignet sich Digitale Signatur. Für symmetrische Verschlüsselung und typische Betriebsarten ist AES eine gute Einstiegserklärung.

STM32-Sicherheitsbausteine: Welche Controllerfamilien was anbieten

STM32 ist keine einzelne Plattform, sondern eine große Familie. Security-Funktionen unterscheiden sich je nach Serie. Für „Secure Boot und Firmware-Verschlüsselung“ sind besonders interessant: Geräte mit TrustZone (Cortex-M33), Hardware-Krypto, Schlüssel-Storage und abgesicherten Boot-Mechanismen.

  • TrustZone-fähige STM32: z. B. STM32L5, STM32U5, STM32H5 (modellabhängig) für Trennung in Secure/Non-Secure.
  • Hardware-Krypto/Hash: AES, SHA, RNG (modellabhängig) für performante, side-channel-ärmere Implementierungen.
  • Option Bytes/Readout Protection: Schutz vor Auslesen/Debugging (in Grenzen, abhängig vom Angreiferprofil).
  • Secure Firmware Update (SFU): Referenz-Frameworks und Bootloader-Konzepte aus ST-Ökosystem.

Ein guter Ausgangspunkt für herstellernahe Informationen sind die ST-Ressourcen zu STM32Cube MCU Packages sowie die Dokumentation rund um STM32CubeProgrammer, weil dort Produktions- und Provisioning-Prozesse typischerweise ansetzen.

Schlüsselmanagement: Der wichtigste Teil der Architektur

Secure Boot steht und fällt mit Schlüsseln: Wie werden sie erzeugt, wo werden sie gespeichert, wer hat Zugriff, wie werden sie rotiert und wie wird Missbrauch erkannt? Ein häufiger Fehler ist, Schlüssel „einfach in die Firmware zu schreiben“. Das ist für Prototypen vielleicht akzeptabel, in Produkten aber riskant.

  • Asymmetrische Root-Schlüssel: Private Key bleibt offline (Build/Signing-Server); im Gerät liegt nur der Public Key oder ein Zertifikatsanker.
  • Gerätespezifische Secrets: pro Gerät individuelle Schlüssel für Verschlüsselung/Authentifizierung, idealerweise in geschütztem Bereich.
  • Rotation und Revocation: Möglichkeit, kompromittierte Schlüssel auszuschließen (z. B. über Key-Versionen oder Trust-Store-Updates).
  • Produktionstrennung: Fertigung darf im Idealfall keine Root-Private-Keys benötigen.

Wenn Sie Ihr Design an etablierten Security-Frameworks ausrichten möchten, ist die Referenz zu Arm PSA Certified hilfreich, weil dort Konzepte wie Root of Trust, Secure Storage und Threat Modeling standardisiert beschrieben werden.

Secure Boot auf STM32: Typische Bootloader-Modelle

In STM32-Projekten haben sich drei praxistaugliche Modelle etabliert, abhängig von Controllerfähigkeiten und Produktanforderungen:

  • Minimaler Secure Bootloader: ein kleiner, geschützter Bootloader prüft Signaturen und startet die App. Ideal, wenn Updates selten sind oder ein externes Update-System existiert.
  • Secure Boot + Secure Firmware Update: Bootloader prüft nicht nur Signatur, sondern verwaltet Update-Slots (A/B, Single-Slot mit Swap) und Anti-Rollback.
  • TrustZone-basiert: Secure World enthält Boot, Krypto und Schlüssel; Non-Secure World enthält Anwendung und UI/Netzwerk. Das erleichtert Trennung von sicherheitskritischem Code.

Für Updates im Feld ist ein A/B-Ansatz besonders robust: Sie haben zwei Firmware-Slots, booten standardmäßig die „known good“-Version und schalten nach erfolgreichem Update um. Das minimiert das Risiko, Geräte durch ein fehlerhaftes Update zu „bricken“.

Firmware-Verschlüsselung: Transportverschlüsselung vs. Speicherverschlüsselung

„Firmware-Verschlüsselung“ kann zwei unterschiedliche Dinge meinen. Es lohnt sich, diese sauber zu trennen, weil die Anforderungen an Schlüssel und Prozesse stark variieren:

  • Transportverschlüsselung: Update-Pakete sind verschlüsselt (z. B. auf SD-Karte, per Download, im Update-Server). Ziel: Niemand soll das Update-Paket offline analysieren können.
  • Speicherverschlüsselung (at rest): Firmware liegt verschlüsselt im Flash und wird erst zur Laufzeit entschlüsselt. Ziel: Auslesen des Flash bringt keinen Klartext.

Transportverschlüsselung ist oft relativ einfach und sehr effektiv gegen IP-Diebstahl über Update-Dateien. Speicherverschlüsselung ist komplexer, weil Schlüssel im Gerät vorhanden sein müssen und Boot-/Runtime-Entschlüsselung sorgfältig designt werden muss (inkl. Performance- und Side-Channel-Aspekten).

Anti-Rollback und Versionspolitik: Sicherheit über den Lebenszyklus

Secure Boot ohne Anti-Rollback ist häufig unvollständig: Wenn ein Angreifer eine alte, signierte Firmware installieren kann, die bekannte Schwachstellen hat, ist die Integritätsprüfung zwar korrekt, aber das Gerät ist trotzdem kompromittierbar. Deshalb braucht ein robustes Design eine Versionspolitik.

  • Monotone Versionen: Firmware-Versionen dürfen nur steigen, nicht fallen.
  • Version in Signatur/Manifest: die Version muss Teil der verifizierten Daten sein, nicht nur ein String in der App.
  • Persistent Store: ein geschützter Speicherbereich hält die „minimale erlaubte Version“ oder „letzte akzeptierte Version“.

Eine verbreitete Praxis ist ein signiertes Manifest, das Hashes, Größe, Version und Policy enthält. Der Bootloader prüft das Manifest und setzt dann die Regeln durch. Damit bleibt die Applikation schlanker, und die Sicherheitslogik ist zentral.

Debug- und Readout-Schutz: Notwendig, aber nicht allein ausreichend

STM32 bietet Mechanismen wie Readout Protection (RDP) und Debug-Lock über Option Bytes. Diese Maßnahmen sind wichtig, sollten aber nicht als „alleinige Security“ verstanden werden. Ein motivierter Angreifer mit physischem Zugriff kann je nach Modell, Angriffsklasse und Budget weiterhin Wege finden. Trotzdem gilt: In realistischen Industrieszenarien erhöhen Sie die Hürde deutlich.

  • RDP/Debug-Lock: reduziert triviales Auslesen über SWD/JTAG.
  • Sichere Produktion: Debug nach Provisioning deaktivieren, Testpunkte schützen, Zugriffe protokollieren.
  • Service-Strategie: definieren, wie Geräte im Feld diagnostiziert werden, ohne Security zu brechen (z. B. signierte Service-Firmware, zeitlich begrenzte Unlocks).

Secure Firmware Update: Update-Formate, Slots und Ausfallsicherheit

Ein sicheres Update-System muss drei Ziele gleichzeitig erfüllen: Authentizität/Integrität (Signatur), Vertraulichkeit (optional Verschlüsselung) und Robustheit gegen Abbruch (Stromausfall, Funkabbrüche). Für STM32 werden häufig folgende Slot-Modelle verwendet:

  • Single-Slot mit Swap: Update wird in temporären Bereich geschrieben und dann in die App-Region kopiert (fordert sorgfältige Fail-Safe-Logik).
  • Dual-Slot (A/B): neue Firmware wird in den inaktiven Slot geschrieben; Bootloader schaltet nach erfolgreichem Test um.
  • External Storage: Update liegt in externem Flash/SD, Bootloader lädt/verifiziert/entschlüsselt.

Gerade im IoT ist A/B meist die verlässlichste Basis, weil ein Abbruch nicht das „known good“ Image überschreibt. Ergänzend empfiehlt sich ein „Boot-Count“-Mechanismus: Wenn die neue Firmware nach X Bootversuchen nicht als „healthy“ markiert, fällt das Gerät automatisch auf die alte Version zurück.

Kryptografie richtig einsetzen: Hashes, Signaturen und AEAD

In sicheren Boot- und Update-Systemen kommen meist Hashfunktionen (z. B. SHA-256), digitale Signaturen (z. B. ECDSA/EdDSA – abhängig vom Ökosystem) und symmetrische Verschlüsselung (AES) zum Einsatz. In modernen Designs wird für verschlüsselte Update-Pakete häufig ein AEAD-Verfahren genutzt (Authenticated Encryption with Associated Data), weil es Vertraulichkeit und Integrität kombiniert.

  • Hash: schnelle Integritätsprüfung großer Images (wird dann signiert).
  • Signatur: schützt vor Manipulation und stellt Herstellerherkunft sicher.
  • AEAD: verschlüsselt und authentifiziert in einem Schritt; reduziert Fehler durch „falsche Kombination“.

Als Hintergrund zu AEAD und warum „verschlüsseln ohne Authentifizierung“ riskant ist, ist der Überblick zu Authenticated Encryption hilfreich.

Provisioning in der Produktion: Wie Schlüssel sicher ins Gerät kommen

Provisioning ist der Moment, in dem ein Gerät „identitätsfähig“ wird: Es erhält Schlüsselmaterial, Zertifikate oder Unique IDs, und Sicherheitsoptionen werden final gesetzt. Hier passieren die kritischsten Fehler, weil Produktion und Logistik oft nicht als Security-Prozess gedacht sind.

  • Trennung von Rollen: Fertigung programmiert, aber signiert nicht mit Root-Private-Key.
  • Geräteindividuelle Daten: pro Gerät eindeutige Keys/IDs, nicht ein globaler „Master-Key“.
  • Auditierbarkeit: Logs, Seriennummern, Key-Versionen und Produktionschargen nachvollziehbar halten.
  • Secure Defaults: Debug-Lock, RDP-Level, Boot-Policy und Update-Policy setzen und verifizieren.

Ein praxistaugliches Ziel ist: Selbst wenn ein einzelnes Gerät kompromittiert wird, darf das nicht automatisch alle Geräte kompromittieren. Das erreichen Sie durch per-device Secrets und durch eine klare Kette von Zertifikaten/Schlüsseln.

TrustZone in STM32-Projekten: Trennung, die wirklich hilft

Bei TrustZone-fähigen STM32 (Cortex-M33) können Sie die Anwendung in Secure und Non-Secure Bereiche trennen. Das ist besonders sinnvoll, wenn Sie Secrets, Kryptografie oder sichere Kommunikation vom restlichen Anwendungscode isolieren möchten. Typische Aufteilungen:

  • Secure World: Bootloader, Key-Store, Kryptografie, Attestation, Secure Services.
  • Non-Secure World: Netzwerk-Stack, UI, Applikationslogik, Treiber, die keine Secrets brauchen.

Das reduziert die Angriffsfläche, weil ein Fehler in einem Non-Secure-Modul nicht automatisch Zugriff auf Schlüssel oder Secure Boot Policies bedeutet. Gleichzeitig erhöht sich die Architekturkomplexität; deshalb lohnt sich TrustZone vor allem, wenn Security-Anforderungen real sind (z. B. vernetzte Produkte, IP-Schutz, Compliance).

Typische Fehler und wie Sie sie vermeiden

Viele Secure-Boot-Designs scheitern nicht an Kryptografie, sondern an Details im Systemverhalten. Die folgenden Punkte sind in Reviews besonders häufig:

  • Schlüssel im Klartext in der Firmware: führt bei Debug-/Flash-Zugriff sofort zum Totalausfall des Modells.
  • Signaturprüfung ohne Anti-Rollback: alte, verwundbare Images bleiben installierbar.
  • Update ohne Fail-Safe: Stromausfall während Update bricked Geräte.
  • Zu viel Code im Bootloader: Bootloader wird groß und schwer zu auditieren; besser minimal halten.
  • Keine Recovery-Strategie: wenn etwas schiefgeht, fehlt ein definierter „Known-Good“-Pfad.
  • Debug im Feld offen: Service wird bequem, aber Security bricht unter physischem Zugriff schnell ein.

Test und Nachweis: Security ist erst real, wenn sie überprüfbar ist

Ein securityrelevantes Design sollte testbar sein. Dazu gehören funktionale Tests (Boot nur bei gültiger Signatur), negative Tests (Manipulation muss scheitern) und Prozess-Tests (Provisioning und Update-Pipeline). Sinnvolle Testfälle:

  • Manipuliertes Image: ein Byte im Firmware-Image ändern → Boot muss verweigern.
  • Falsche Signatur: mit anderem Key signieren → Boot muss verweigern.
  • Rollback: ältere signierte Version installieren → Boot muss verweigern (wenn Policy aktiv).
  • Update-Abbruch: Stromausfall simulieren → Gerät muss in einen bootfähigen Zustand zurückkehren.
  • Key-Rotation: neuen Public Key hinzufügen, alten sperren → Update-Pipeline muss funktionieren.

In vielen Teams wird zusätzlich ein „Security Checklist Review“ etabliert, damit nicht nur Code, sondern auch Prozesse (Signing, Key Storage, Zugriffskontrolle) überprüft werden.

Outbound-Ressourcen für STM32 Security und Secure Boot

IoT-PCB-Design, Mikrocontroller-Programmierung & Firmware-Entwicklung

PCB Design • Arduino • Embedded Systems • Firmware

Ich biete professionelle Entwicklung von IoT-Hardware, einschließlich PCB-Design, Arduino- und Mikrocontroller-Programmierung sowie Firmware-Entwicklung. Die Lösungen werden zuverlässig, effizient und anwendungsorientiert umgesetzt – von der Konzeptphase bis zum funktionsfähigen Prototyp.

Diese Dienstleistung richtet sich an Unternehmen, Start-ups, Entwickler und Produktteams, die maßgeschneiderte Embedded- und IoT-Lösungen benötigen. Finden Sie mich auf Fiverr.

Leistungsumfang:

  • IoT-PCB-Design & Schaltplanerstellung

  • Leiterplattenlayout (mehrlagig, produktionstauglich)

  • Arduino- & Mikrocontroller-Programmierung (z. B. ESP32, STM32, ATmega)

  • Firmware-Entwicklung für Embedded Systems

  • Sensor- & Aktor-Integration

  • Kommunikation: Wi-Fi, Bluetooth, MQTT, I²C, SPI, UART

  • Optimierung für Leistung, Stabilität & Energieeffizienz

Lieferumfang:

  • Schaltpläne & PCB-Layouts

  • Gerber- & Produktionsdaten

  • Quellcode & Firmware

  • Dokumentation & Support zur Integration

Arbeitsweise:Strukturiert • Zuverlässig • Hardware-nah • Produktorientiert

CTA:
Planen Sie ein IoT- oder Embedded-System-Projekt?
Kontaktieren Sie mich gerne für eine technische Abstimmung oder ein unverbindliches Angebot. Finden Sie mich auf Fiverr.

 

Related Articles