Zum Inhalt springen
AutoST by Zyberum GmbH
Menü
GlossarUDSDiagnose

DID (Data Identifier)

Eine DID ist der 16-Bit-Identifier, mit dem UDS Datensätze adressiert, gelesen mit 0x22, geschrieben mit 0x2E. Bereiche nach ISO 14229-1 Anhang C und schreibbare DIDs.

Aktualisiert Diese Seite als Markdown

Kurz gesagt

Ein Data Identifier (DID) ist ein Zwei-Byte-Wert von 0x0000 bis 0xFFFF, der einen Datensatz im Steuergerät benennt: die VIN ist F190, die Seriennummer F18C, die aktive Diagnose-Session F186. ReadDataByIdentifier (0x22) liest ihn, WriteDataByIdentifier (0x2E) schreibt ihn, und auch 0x2A, 0x2C und 0x2F arbeiten mit DIDs. ISO 14229-1 Anhang C reserviert den Identifikationsblock 0xF180 bis 0xF19F und einige weitere Bereiche; alles andere definiert der Hersteller in ODX- oder CDD-Dateien.

Was ist eine DID?

Ein Data Identifier ist eine 16-Bit-Zahl, die für einen Datensatz im Steuergerät steht. Statt Speicher zu adressieren, fragt der Tester nach einer DID, und das Steuergerät liefert den Datensatz in der Länge und Kodierung, die der Hersteller festgelegt hat. 22 F1 90 liest die VIN, und das Steuergerät antwortet 62 F1 90 gefolgt von 17 Bytes; 22 F1 86 liefert die aktive Diagnose-Session als ein Byte, 62 F1 86 03 für die Extended Session.

Mehrere Services arbeiten mit DIDs: ReadDataByIdentifier (0x22) und WriteDataByIdentifier (0x2E), ReadScalingDataByIdentifier (0x24), ReadDataByPeriodicIdentifier (0x2A, das nur das untere Byte des Bereichs F2xx nutzt), DynamicallyDefineDataIdentifier (0x2C) und InputOutputControlByIdentifier (0x2F).

Wo ist es definiert?

ISO 14229-1:2020 Anhang C listet die Standard-Data-Identifier. Der Identifikationsblock 0xF180 bis 0xF19F enthält Boot- und Anwendungssoftware-Identifikation (F180 bis F182), die Fingerprints (F183 bis F185), die aktive Session (F186), Ersatzteil- und Softwarenummern (F187 bis F189), die Lieferanten-Identifier (F18A, F18B), die Seriennummer (F18C), die VIN (F190), die Hardwarenummer (F191), das Programmierdatum (F199) und die Werkstattcodes (F198, F19A). Weitere Bereiche sind reserviert für periodische Identifier (F200 bis F2FF), dynamisch definierte Identifier (F300 bis F3FF), OBD (F400 bis F8FF), Tachograph, Airbag und Safety-Systeme sowie lieferantenspezifische Nutzung (FD00 bis FEFF). Die Bereiche 0x0100 bis 0xA5FF und weitere sind herstellerspezifisch und stehen in der ODX- oder CDD-Datei des Steuergeräts.

Was es in der Praxis bedeutet

DIDs sind der Ort, an dem Informationen abfließen und unerlaubte Änderungen passieren. Am Prüfstand liest ein Tester zuerst den Identifikationsblock, weil er Softwarestand, Hardwarerevision und Programmierhistorie verrät und fast jedes Steuergerät ihn beantwortet. Als Zweites folgt ein Sweep über den ganzen Identifier-Raum pro Session, weil die interessanten DIDs die undokumentierten sind: Debug-Zähler, interne Zustände, manchmal Schlüsselmaterial oder Konfigurationsbytes.

Wir sehen regelmäßig Identifikations-DIDs, die in der Extended Session ohne SecurityAccess schreibbar sind, womit jeder die Fingerprints oder die Seriennummer überschreiben kann und die Nachvollziehbarkeit, wer das Steuergerät programmiert hat, verloren geht. Wir sehen auch DIDs, die beim Schreiben jede Länge akzeptieren, und Steuergeräte, die für dieselbe DID in verschiedenen Sessions unterschiedliche Daten liefern.

Wie AutoST es testet

AutoST liest standardmäßig den Identifikationsbereich 0xF180 bis 0xF19F und kann den vollen Raum 0x0000 bis 0xFFFF in jeder gefundenen Session durchlaufen, über CAN oder DoIP. Eine importierte ODX-, PDX- oder CDD-Datei benennt die gefundenen Identifier und liefert die erwarteten Längen, und die optionale Schreibtest-Phase prüft, welche DIDs ein 0x2E-Schreiben annehmen, mit Falsche-Länge- und Rücklese-Checks, standardmäßig aus und vor dem Start bestätigt.

Häufige Missverständnisse

Eine DID ist keine Speicheradresse; ReadMemoryByAddress (0x23) ist ein anderer Service mit anderem Risikoprofil. Und eine DID, die in der Default Session 0x31 antwortet, antwortet in der Extended Session vielleicht trotzdem, ein Sweep in einer Session sagt also nichts über die anderen aus.

FAQ

Häufig gestellte Fragen

Wie viele DIDs hat ein Steuergerät?

Alles zwischen einem Dutzend und mehreren Tausend. Die Norm reserviert Bereiche, zwingt ein Steuergerät aber zu keiner einzigen DID; das tut die Herstellerspezifikation. Ein kompletter Sweep von 0x0000 bis 0xFFFF mit ReadDataByIdentifier dauert über CAN etwa zehn Minuten pro Session und ist der einzige Weg, undokumentierte DIDs zu finden.

Welche DIDs sind sicherheitsrelevant?

Die, die ein Angreifer lesen oder ändern wollte: die VIN (F190), die Seriennummer (F18C), die Fingerprints F183 bis F185 und die Werkstattcodes F198 und F19A, die festhalten, wer das Steuergerät programmiert hat, dazu Hersteller-DIDs mit Kalibrierung, Schlüsseln oder Feature-Flags. Lesbar, wo nötig; schreibbar nur nach SecurityAccess, wenn überhaupt.

Warum antwortet ein Steuergerät mit 0x31 auf eine DID?

requestOutOfRange heißt, das Steuergerät unterstützt diese DID in der aktuellen Session oder gar nicht. Das ist die normale Antwort während eines DID-Sweeps und markiert die Identifier, die nicht existieren; 0x33 securityAccessDenied markiert die, die existieren, aber geschützt sind.

Quellen

Passende Seiten

Sieh es auf deinem ECU

Ein Begriff, der für dein Steuergerät zählt?

In 15 Minuten sagen wir dir, wie AutoST ihn testet, wie ein Finding aussieht und was er für deinen ISO/SAE-21434-Nachweis bedeutet.

  • Direkte Antwort von einem ECU-Security-Engineer
  • Welcher Test den Begriff abdeckt
  • Kostenlos und unverbindlich
Tom Zaubermann

Deine Demo ist mitTom ZaubermannGründer von Zyberum, früher Leiter des VW InCar Security Testing Lab

Bereits im Einsatz bei Tier-1-, Tier-2-Zulieferern und OEMs. Referenzen auf Anfrage.

Ruf uns an: +49 176 439 17074automotive@zyberum.com

Oder schreib uns eine Nachricht

Wir antworten innerhalb eines Werktags.

Ruf uns anAutoST-Team fragen

Wähle einen Termin, der dir passt

In neuem Tab öffnen