Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial Internet of Things >> Cloud Computing

So nutzen Sie die Sicherheitsfunktionen von Arm TrustZone des LPC5500

Erfahren Sie, wie die Arm TrustZone-Erweiterung für die LPC5500-Serie funktioniert und wie Sie die Sicherheitsmaßnahmen in benutzerdefinierten sicheren und nicht sicheren Anwendungen einsetzen können.

Angesichts der zunehmend vernetzten Geräte und der zunehmenden Raffinesse von Hackern haben viele Unternehmen – wie NXP Semiconductors – die Notwendigkeit von Gegenmaßnahmen erkannt. NXP hat die LPC5500 MCU-Serie entwickelt, die über verbesserte Sicherheitsfunktionen verfügt, die zum Schutz eingebetteter Projekte verwendet werden können.

NXP hat einen FIPS-kompatiblen Zufallszahlengenerator verwendet, den Entschlüsselungsalgorithmus „Prince“ ausgewählt (der es dem Kern ermöglicht, symmetrisch verschlüsselten Code auszuführen) und einen ephemeren 4096-Bit-On-Chip-Schlüssel mit PUF-Technologie implementiert. In Kombination mit dem kryptografischen Hardwarebeschleuniger „CASPER“ auf dem Chip eignen sich LPC5500-MCUs für Edge-of-the-Network-IoT-Anwendungen, die robuste Cybersicherheits-Gegenmaßnahmen und die Bereitstellung von Schlüsseln über den gesamten Lebenszyklus erfordern.

Darüber hinaus nutzt der Chip die Arm TrustZone-Technologie für Cortex-M-basierte Geräte. In diesem Artikel erfahren Sie, wie die TrustZone-Erweiterung der LPC5500-Serie funktioniert und wie Sie die Sicherheitsmaßnahmen in benutzerdefinierten Anwendungen einsetzen können.

Was ist die Arm TrustZone-Technologie für Cortex-M?

Das Kernprinzip von TrustZone lässt sich am besten an einem Beispiel erklären. Der MCU-Hersteller stellt oft benutzerdefinierten proprietären Code wie Sicherheitsbibliotheken, einen Bootloader oder schnelle DSP-Algorithmen im ROM des Mikrocontrollers bereit. Die Autoren dieser Anwendungen haben jedoch oft gute Gründe, ihr geistiges Eigentum zu schützen – sie möchten möglicherweise nicht, dass Benutzer oder Konkurrenten die Binärdateien dekompilieren, um die Algorithmen zurückzuentwickeln.

Einerseits wollen Programmierer diese vordefinierten Softwarebibliotheken nutzen. Auf der anderen Seite möchte der Hersteller jedoch nicht, dass der Code einer möglicherweise böswilligen Partei ausgesetzt wird.

Abbildung 1. Der unsichere Benutzercode und der sichere ROM-Inhalt befinden sich auf derselben physischen MCU.

Der Anbieter möchte Implementierungsdetails verbergen und gleichzeitig sicherstellen, dass Entwickler auf die Funktionen zugreifen können. Der Benutzercode kann die exponierten Methoden der versteckten Software aufrufen, hat jedoch keinen direkten Zugriff auf den Speicher des sicheren ROMs. Das Ergebnis ist eine Struktur, die aus zwei isolierten Teilsystemen besteht. Übergänge zwischen diesen beiden Welten werden durch die TrustZone-Sicherheitserweiterung geregelt.

Dies bedeutet, dass ein Mikrocontroller, der TrustZone verwendet, als zwei separate Projekte konzipiert wird. Das erste Projekt startet im sicheren Zustand. Es konfiguriert dann die Sicherheitsattribute für On-Chip-Ressourcen und kann sichere Funktionen in einer Tabelle veröffentlichen, auf die aus dem nicht sicheren Zustand zugegriffen werden kann. Der zweite enthält den unsicheren Code und hat eingeschränkten Zugriff auf die exponierten Funktionen der sicheren Welt.

Unterschiede zu früheren Architekturen

Die Cortex-M3- und -M4-Kerne kennen zwei Prozessormodi:den Thread-Modus und den Handler-Modus. Anwendungssoftware läuft im Thread-Modus und der Handler-Modus behandelt Ausnahmen. Code kann entweder auf einer privilegierten oder unprivilegierten Ebene ausgeführt werden, die den Zugriff auf bestimmte CPU-Funktionen steuert.

Mit der TrustZone-Erweiterung in Cortex-M33-Kernen wurden, wie oben beschrieben, zwei neue Zustände eingeführt. Diese Änderung führte zu vier verschiedenen Prozessormodi:nicht sicherer Handler, sicherer Handler-Modus, nicht sicherer Thread und sicherer Thread.

Abbildung 2. Die TrustZone-Erweiterung im M33-Core erstellt vier Prozessormodi.

Neben anderen Updates wurden mit den neuen Zuständen auch neue SysTick-Timer eingeführt. Daher gibt es jetzt separate Timer für den sicheren und den nicht sicheren Zustand.

Speicherpartition

Wie bereits erwähnt, wird der Speicher der MCU in sichere und nicht sichere Bereiche unterteilt. Der CPU-Kern der MCU kann nur auf sichere Speicherbereiche zugreifen, wenn er in einem der sicheren Modi arbeitet. Es kann nicht auf Befehle zugreifen, die sich in anderen Speicherpartitionen befinden. Es kann jedoch sichere und nicht sichere Segmente des Daten-RAM lesen und schreiben. Wenn sich der CPU-Kern in einem unsicheren Zustand befindet, kann er nur auf die unsicheren Befehls- und Datenspeicherblöcke zugreifen.

TrustZone schmückt Adressbereiche in der Speicherkarte mit Sicherheitsattributen. Es gibt drei Sicherheitsattribute:sicher (S), nicht sicher (NS) und nicht sicher aufrufbar (NSC). Der Zugriff auf jeden Speicherbereich wird je nach aktuellem Sicherheitsstatus des Cores erlaubt oder verweigert.

Abbildung 3. Die CPU kann im sicheren und im ungesicherten Modus auf verschiedene Bereiche zugreifen.

Beim Gerät LPC55S69 wurde der Speicher basierend auf der Adresse in sichere und nicht sichere Segmente aufgeteilt. Wenn das Speicheradressenbit 28 NIEDRIG ist, ist der Speicher nicht sicher. Ansonsten ist es sicher. Einzige Ausnahme ist der Programmspeicher, der über die Security Attribution Unit konfiguriert werden kann.

Die Bausteine ​​einer sicheren Anwendung

Der nicht sichere Code kann keine direkten Aufrufe an den gesicherten Teil der Anwendung durchführen. Stattdessen stellt der gesicherte Teil eine Liste von Funktionen bereit, auf die ein Benutzer zugreifen kann. Diese Liste wird Furnier-Tisch genannt, weil es sich um eine sehr dünne Schicht handelt, die von außen sichtbar ist, aber die inneren Details verbirgt. Die Furniertabelle befindet sich in einem Speicherbereich mit dem TrustZone-Attribut NonSecure Callable.

Normalerweise ist die Quelle des gesicherten Teils nicht sichtbar. Stattdessen wird es kompiliert und liefert eine Objektbibliothek und die Furniertabelle als Header-Datei. Beachten Sie, dass keine dieser Dateien eine der echten Anweisungen enthält, aber zusammen enthalten sie die Informationen, die zum Aufrufen sicherer Funktionen erforderlich sind. Die Furniertabelle enthält nur ein Gateway und einen Verzweigungsbefehl zu dem sicheren Speicherort, an dem sich die echten Befehle befinden.

Übergang zwischen sicheren und nicht sicheren Funktionen

CPUs mit der TrustZone-Erweiterung unterstützen zwei neue Funktionen für den Übergang zwischen sicher und nicht sicher:den SG- und BXNS-Befehl.

Wenn der Benutzercode eine sichere Funktion wünscht, ruft er über die Furniertabelle auf, die sich im NSC-Teil des Speichers befindet. Der SG-Befehl wird dann verwendet, um die CPU in einen sicheren Modus zu schalten. Wenn die Ausführung abgeschlossen ist, wird die Kontrolle mit dem BXNS-Befehl an den Benutzercode zurückgegeben:

Abbildung 4. Der Benutzercode muss über den TrustZone-Gatekeeper eine sichere Funktion aufrufen.

Wenn der Benutzer eine illegale sicherheitsrelevante Operation versucht, wie beispielsweise den direkten Zugriff auf einen geschützten Bereich, wird eine Secure Fault-Ausnahme ausgelöst.

Ein sicheres Hello World-Beispiel

Das SDK für den LPCXpresso55S69 enthält einige TrustZone-Beispiele, die in MCUXpresso geladen werden können. Wie bereits erwähnt, bestehen diese Beispiele aus zwei separaten Projekten:dem sicheren Teil und dem nicht sicheren Benutzercode.

Der sichere Teil sieht fast genauso aus wie jedes andere MCUXpresso-Projekt. Es gibt jedoch einen Unterschied, nämlich den folgenden Funktionsaufruf:

Diese Funktion sollte so früh wie möglich aufgerufen werden. Danach liegt es in der Verantwortung des sicheren Projekts, den Speicher und das nicht sichere Projekt zu konfigurieren:

Da das sichere Projekt alle Setup-Aufrufe verarbeitet, muss das nicht sichere Projekt dies nicht tun, daher ist seine Hauptfunktion kurz:

Diese Anwendung ruft jedoch nur sichere Funktionen auf, die im anderen Projekt definiert wurden. Die folgende Definition für die Funktion PRINTF_NSE ist wie gezeigt:

Wenn dieser Definition gefolgt wird, zeigt sie auf die Furniertabelle, die im gesicherten Projekt definiert ist. Es ist wichtig, sich daran zu erinnern, dass das unsichere Projekt nur die Header-Datei kennt, die die Furniertabelle beschreibt. In diesem Fall können wir uns jedoch die entsprechende Funktion im Quellcode ansehen:

Die Dekoration „__attribute__((cmse_nonsecure_entry))“ erzwingt den Export der Funktion in die Objektdatei.

Partitionieren des Speichers

Sicherheitsattribute definieren, welche Teile des Speichers gesichert, NSC oder ungesichert sind. Diese werden bei jedem Zugriff überprüft. Zu diesem Zweck wurde die MCU um eine Hardware erweitert, die diese Prüfungen abwickelt und aus drei Logikblöcken besteht:

  1. Sicherheitszuordnungseinheit (SAU)
  2. Implementation Defined Attribution Unit (IDAU)
  3. Sicherheitszuordnungslogik

Die SAU wird vom sicheren Projekt innerhalb der Funktion BOARD_InitTrustZone() programmiert. Dadurch kann der Speicher in acht Regionen mit unterschiedlichen Sicherheitseinstellungen unterteilt werden. Beachten Sie, dass jede nicht explizit festgelegte Region standardmäßig sicher bleibt.

Die IDAU ermöglicht es dem MCU-Hersteller – in diesem Fall NXP –, mehr benutzerdefinierte Regionen zu definieren. Hier hängen die Regionen vom 28. Bit der Adresse ab. Auf der LPC55S69-MCU ist der untere Bereich der Speicherkarte (0x0000_0000 bis 0x2FFF_FFFF) standardmäßig nicht sicher, sodass er mit der SAU frei konfiguriert werden kann.

Der Arbiter stellt sicher, dass die IDAU- und SAU-Einstellungen übereinstimmen. Damit ein Speicherbereich als ungesichert markiert werden kann, müssen beide Logikblöcke auf nicht sicher gesetzt werden. Andernfalls fällt der Speicher in den standardmäßigen gesicherten Zustand zurück. Gleiches gilt für die NSC-Speicherbereiche. Damit ein Abschnitt NSC ist, muss die SAU als NSC markiert und die IDAU auf nicht sicher gesetzt werden.

In MCUXpresso gibt es ein Tool, mit dem der Benutzer schnell und einfach Speicherbereiche definieren kann. Um auf das Tool zuzugreifen, verwenden Sie die Hauptmenüleiste der IDE und öffnen Sie die TEE-Perspektive:

Abbildung 5. Mit diesem MCUXpresso-Tool kann der Benutzer die Speicherkarte der MCU anzeigen und bearbeiten.

Die Tabelle auf der linken Seite des Tools kann die Sicherheitsstufe von Speicherbereichen ändern. Die Memory-Map auf der rechten Seite zeigt, wie der Speicher partitioniert wird.

TrustZone bietet eine notwendige Sicherheitskomponente

Bei der MCU-Serie LPC5500 mit TrustZone-Technologie ist der Speicher in eine sichere und eine unsichere Welt unterteilt — es ist möglich, Benutzern den Zugriff auf Teile des unsicheren Speichers zu ermöglichen, und es kann auch eine sichere Anwendung geschrieben werden, die von Andere. TrustZone fungiert als Gatekeeper zwischen den beiden Welten und verwaltet, wie der Kern zwischen ihnen übergeht.

Dazu wurden zwei neue Anweisungen eingeführt. Die sichere Anwendung stellt eine Furniertabelle bereit, die die Funktionen bereitstellt, die aus dem nicht sicheren Kontext aufgerufen werden können. Die Hardware in der MCU stellt sicher, dass keine illegalen Speicherzugriffsoperationen ausgeführt werden. Diese Hardware kann auch verwendet werden, um die Regionen in der Speicherkarte zu konfigurieren. Dafür bietet MCUXpresso die TEE-Perspektive. Ein tieferes Verständnis der Sicherheit der MCUs der LPC5500-Serie ermöglicht ein besseres Designerlebnis. Weitere Informationen zu TrustZone finden Sie unter TrustZone:Calling the Secure World.

Branchenartikel sind eine Inhaltsform, die es Branchenpartnern ermöglicht, nützliche Nachrichten, Nachrichten und Technologien mit All About Circuits-Lesern auf eine Weise zu teilen, für die redaktionelle Inhalte nicht gut geeignet sind. Alle Branchenartikel unterliegen strengen redaktionellen Richtlinien, um den Lesern nützliche Neuigkeiten, technisches Know-how oder Geschichten zu bieten. Die in Branchenartikeln zum Ausdruck gebrachten Standpunkte und Meinungen sind die des Partners und nicht unbedingt die von All About Circuits oder seinen Autoren.


Cloud Computing

  1. Cloud und wie sie die IT-Welt verändert
  2. Cloud-Sicherheit ist die Zukunft der Cybersicherheit
  3. Wie man ein Cloud-Sicherheitsingenieur wird
  4. Warum die Zukunft der Datensicherheit in der Cloud programmierbar ist
  5. Wie sichert man die Cloud-Technologie?
  6. Verwaltung von Cloud-Sicherheitsrisiken
  7. Wie Hacker die Cloud hacken; Erhöhen Sie die Sicherheit Ihrer Cloud mit AWS
  8. Wie besteht die Prüfung zum Google Cloud Engineer?
  9. So stellen Sie DevOps in der Cloud bereit
  10. So migrieren Sie ERP in die Cloud