S32K3xx Secure Debug Support

 

NXP hat eine neue, skalierbare S32K3xx-Gerätefamilie herausgebracht, die über einen fortschrittlichen "Secure-Debug-Mechanismus" verfügt, der auf secret Keys basiert, um Benutzeranwendungen während der gesamten Entwicklungsphase zu schützen. PEmicro-Debug-Tools, die tief in das S32 Design Studio von NXP und andere IDEs integriert sind, enthalten Python-Skripte, um die "Secure-Debug-Funktion zu aktivieren und zu verwenden.

 

Einführung

Die S32K3xx-Geräte von NXP können in einen Zustand versetzt werden, in dem der Benutzer zu Beginn einer Standard-S32DS-Debug-Sitzung eine Kennwortauthentifizierung oder eine Challenge & Response-Authentifizierung auf dem Debugger ausführen muss. Diese sicheren Debug-Modi verhindern unbefugten Debug-Zugriff, indem die richtigen Anmeldeinformationen zur Authentifizierung des Debuggers erforderlich sind, bevor mit einer sicheren Debug-Sitzung fortgefahren wird. Nach einem destruktiven Reset oder Power-On-Reset ist immer ein neuer Authentifizierungsvorgang erforderlich.

Um einen sicheren Debug-Zugriff für ein sicheres Gerät im Kennwortmodus zu erhalten, muss der Debugger mit einem Kennwort authentifiziert werden. Zum sicheren Debuggen eines Geräts im Challenge & Response-Modus muss der Benutzer vor der Debugger-Authentifizierung einen Application Debug Key/Password (ADKP) auf einer NXP-Smartcard registrieren.

PEmicro stellt Skripte zur Verfügung, um die Authentifizierung eines Debuggers im Passwortmodus zu erleichtern und auch bei der Registrierung eines vorhandenen Schlüssels auf einer NXP-Smartcard für sicheres Debuggen im Challenge & Response-Modus zu helfen.

Die folgenden Skripte können im PEmicro-Unterstützungsdateipaket heruntergeladen werden, das sich im Ordner NXP\S32K3xx befindet. Die Skripte von PEmicro erfordern zur Ausführung Python 3.5 oder höher.

  • authenticate_password_mode.py
  • register_adkp.py
  • authenticate_challenge_response_mode.py

Bevor eines der Skripts ausgeführt wird, muss die PEmicro-Schnittstelle (z. B. Multilink oder Cyclone) mit dem Debug-Header des Ziels verbunden werden und das S32K3xx-Gerät muss mit Strom versorgt und frisch aus- und wieder eingeschaltet werden. Es ist erwähnenswert, dass der Authentifizierungsstatus jedes Mal verloren geht, wenn das Teil einen destruktiven Reset durchläuft, sodass die Skripts zur Authentifizierung nach jedem Power-Cycle-Ereignis ausgeführt werden müssen.

 

 

 

 

 

Authentifizieren eines Debuggers für den sicheren Kennwortmodus

Das Skript authenticate_password_mode.py von PEmicro authentifiziert einen Debugger für die sichere Kommunikation mit einem Gerät im Passwortmodus, so dass es sicher debuggt werden kann (siehe Abbildung 1).

Die Eingaben für authenticate_password_mode.py sind:

hardwareid: die IP-Adresse, der Name, die Seriennummer oder der Portname der Debug-Hardware 
(z.B. -hardwareid=10.0.4.17 für Ethernet Cyclone oder USB1 für USB Multilink Schnittstellen)

password: das vorkonfigurierte 16-Byte-Hexadezimal-Passwort, das zur Authentifizierung des Geräts benötigt wird 
(e.g. -password=0123456789ABCDEF0123456789ABCDEF)

 
S32K3xx_authenticate
Abbildung 1: Beispiel für den Aufruf des Skripts authenticate_password_mode.py auf der Kommandozeile

 

 

Schlüsselregistrierung und Authentifizierung eines Debuggers im sicheren Challenge & Response-Modus

Der Schlüssel muss zuerst auf einer Smartcard von NXP registriert werden. Die Smartcard kann über einen PC/SC-kompatiblen Smartcard-Leser (normalerweise mit USB-Anschluss) mit einem PC verbunden werden. Nach der Registrierung muss der Schlüssel in einer Challenge & Response-Abfrage authentifiziert werden, um in den sicheren Debug-Modus zu gelangen.

 

Registrierung eines Schlüssels

Das Skript register_adkp.py von PEmicro registriert einen vorhandenen verpackten Application Debug Key/Password (ADKP) auf der NXP-Smartcard zur Verwendung mit bestimmten S32K3xx-Geräten mit erweiterter Challenge & Response-Sicherheit (siehe Abbildung 2 für Details). Weitere Informationen zum Erstellen eines ADKP finden Sie in der NXP-Dokumentation und im Support.

Die Eingaben für register_adkp.py sind:

hardwareid: IP-Adresse, Name, Seriennummer oder Portname der Debug-Hardware
(z. B. -hardwareid=10.0.4.17 für Ethernet Cyclone oder =USB1 für USB Multilink-Schnittstellen)

wraped_adkp: der hexadezimal umschlossene 256-Byte-ADKP-Wert
(zB -wrapped_adkp=0123456789ABCDEF...)

user_pwd: das Passwort, das den Smartcard-Benutzer authentifiziert
(zB -user_pwd=pwd123)

 

register_adkp_S32K3xx

Abbildung 2: Beispiel für den Aufruf des Skripts register_adkp.py in der Befehlszeile

 

Authentifizieren eines Debuggers für den Challenge & Response-Modus

Das Skript „authenticate_challenge_reponse_mode.py“ von PEmicro authentifiziert einen Debugger für die sichere Kommunikation mit einem dedizierten Gerät im Challenge & Response-Modus (siehe Abbildung 3). Der Schritt ADKP registrieren muss abgeschlossen sein, bevor die Authentifizierung stattfindet.

Die Eingaben für authenticate_challenge_reponse_mode.py sind:

• hardwareid: IP-Adresse, Name, Seriennummer oder Portname der Debug-Hardware

(z. B. -hardwareid=10.0.4.17 für Ethernet Cyclone oder =USB1 für USB Multilink-Schnittstellen)

• user_pwd: das Kennwort, das den Smartcard-Benutzer authentifiziert

(zB -user_pwd=pwd123)

 

S32K3xx_authenticate

Abbildung 3: Beispiel für den Aufruf des Skripts authenticate_challenge_response_mode.py auf der Kommandozeile

 

 

Sicheres authentifiziertes Debuggen

Nachdem der Debugger authentifiziert wurde, kann der Entwickler das Gerät unter S32 Design Studio oder beliebigen IDEs von Drittanbietern mit dem PEmicro-Plug-in sicher debuggen.

HSE-fähige FLASH-Programmieralgorithmen (z. B. nxp_s32k344_1x32x980k_hse_enabled.arp) müssen beim Debuggen oder Programmieren bestimmter Geräte mit erweiterter Sicherheit ausgewählt werden, da der verfügbare Flash auf einem S32K3xx-Gerät auf HSE-Firmware zugeschnitten ist, wenn das Teil in einem mit erweiterter Sicherheit bereitgestellt wird Modi. Bitte beachten Sie, dass ein S32K3xx-Gerät mit installierter HSE-Firmware nicht unbedingt eine sichere Debugger-Authentifizierung benötigt. Bei der Installation von HSE befindet sich das Gerät zunächst im Lebenszyklus CUST_DEL, für den der Debug-Zugriff geöffnet ist. Erst mit fortschreitendem Lebenszyklus ist ein sicheres Debugging erforderlich.

Wenn ein Projekt unter S32DS IDE erstellt wird, verwendet das PEmicro-Plugin automatisch den FLASH-Programmiertreiber, um die Programmierung der gesamten P- und D-FLASH-Bereiche von Geräten zu unterstützen – vorausgesetzt, dass die Speichermodi HSE und AB Swap deaktiviert sind. Um zu einem FLASH-Programmieralgorithmus zu wechseln, der Geräte mit einem HSE-Firmware-Footprint unterstützt, muss der Benutzer: die PEmicro-Debug-Konfiguration öffnen und aus dem Dropdown-Feld „Flash-Algorithmus-Auswahl“ Folgendes auswählen:

    → Dialog Erweiterte Optionen öffnen → nxp_s32k344_1x32x980k_hse_enabled.arp

oder der Benutzer kann „Use Alternative Algorithm“ (Alternativen Algorithmus verwenden) markieren und nach einem HSE-fähigen FLASH-Algorithmus aus dem neuesten PEmicro-Plug-in suchen (siehe Abbildungen 4 und 5).

 

PEmicro-NXP-Debug-Configuration

Abbildung 4: PEmicro Debug-Konfiguration

 

PEmicro_Advanced_Options

Abbildung 5: Erweiterte Optionen von PEmicro

 

Die FLASH-Programmiertreiber von PEmicro finden Sie an der folgenden Stelle im S32DS-Layout:

S32DS-Installation: Verzeichnis}\eclipse\plugins\com.pemicro.debug.gdbjtag.pne_5.xxxxx\win32\gdi\P&E\supportFiles_ARM\NXP\S32K3xx

Das Gerät bleibt im sicheren Debugging bis zum nächsten destruktiven Reset oder Aus- und Wiedereinschalten zugänglich. An diesem Punkt muss das Teil erneut authentifiziert werden.

 

 

 

PEmicro-Toosl-min

PEmicros Programmier- & Debugwerkzeuge

 

PEmicro entwickelt und produziert Debug- und ISP-Programmierwerkzeuge für eine Vielzahl von Microcontroller Architekturen. Eine Übersicht über unterstützte Architekturen & Chip Hersteller erhalten Sie hier. Das Portfolio teil sich in zwei Geräteserien, die Cyclone Serie sowie die Multilink Serie, auf. Bei der Cyclone Serie handelt es sich um In-System-Programmer für die Serienfertigung, die eine sichere interne Speicherung von Programm-Images, die Stromversorgung für das Zielgerät, manuelle und automatisierte Programmierfunktionen, Serialisierung, dynamische Datenprogrammierung und eine benutzerfreundliche Touchscreen-Oberfläche bieten.

Durch die Verwendung der Multilink Serie kann der Benutzer den Background-Debug-Modus nutzen, um die normale Prozessorausführung zu stoppen und den Prozessor über einen PC zu steuern. Der Benutzer kann anschließend direkt die Ausführung des Zielprozessors steuern, Register und Speicherwerte lesen / schreiben, den Debug-Code auf dem Prozessor anzeigen und interne oder externe FLASH-Speichergeräte programmieren.