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.
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.
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.
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)
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)
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)
Abbildung 3: Beispiel für den Aufruf des Skripts authenticate_challenge_response_mode.py auf der Kommandozeile
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).
Abbildung 4: PEmicro Debug-Konfiguration
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 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.