Im Rahmen meiner Tätigkeit für Continental/Bertrandt entwickelte und betreute ich eine spezialisierte Toolchain zur Absicherung von Firmware-Images für Automotive-Steuergeräte. Der Fokus lag dabei auf der Integrität und Authentizität der ausgelieferten Softwarekomponenten.
Die Herausforderung
In modernen Fahrzeugen müssen Firmware-Updates über verschiedene Schnittstellen (OTA, Werkstatt-Tester) sicher eingespielt werden. Hierbei muss sichergestellt werden, dass:
- Die Firmware von einer autorisierten Quelle stammt (Authentizität).
- Die Firmware auf dem Weg zum Steuergerät nicht verändert wurde (Integrität).
- Sensible Code-Bereiche vor Reverse Engineering geschützt sind (Vertraulichkeit).
Die Lösung: adas_rbin_tools
Kern der Arbeit war die Entwicklung und Pflege der adas_rbin_tools, einer Python-basierten Suite zur Transformation und Signierung von Binärdaten.
1. elf2rbin: Strukturierte Absicherung
Das Tool transformiert ELF-Dateien (Executable and Linkable Format) in das proprietäre RBIN-Format.
- Sektionsbasierte Verschlüsselung: Mittels einer JSON-Konfiguration konnten gezielt einzelne Sektionen (z.B.
.text,.rodata) verschlüsselt werden. - Kryptographische Standards: Unterstützung von AES (128, 192, 256 Bit) in verschiedenen Modi wie CBC, CTR und OFB.
- Schlüsselmanagement: Integration von Profile-IDs zur Zuordnung der korrekten kryptographischen Schlüssel im Zielsystem (HSM).
2. rbins2muco: Multi-Component Images
Für komplexe Systeme mit mehreren Prozessorkernen (Multi-Core) wurde das MUCO-Format (Multi-Component) genutzt. rbins2muco erlaubt das Aggregieren mehrerer RBIN-Dateien zu einem konsistenten Gesamtimage inklusive globalem Header und Prüfsummen.
3. Diversität der Eingangsformate
Neben ELF-Dateien wurden auch andere Industriestandards unterstützt:
- xpar2rbin: Konvertierung von MOT-Dateien (Motorola S-Record).
- rprc2rbin: Unterstützung für Texas Instruments RPRC-Format.
Ergebnis
Die Toolchain wurde fest in den CI/CD-Prozess (Jenkins) integriert. Durch automatisierte Validierungsskripte (validate.py) wurde sichergestellt, dass jedes generierte Image den Spezifikationen entspricht, bevor es in die Release-Pipeline gelangt. Dies minimiert das Risiko von “Bricks” (unbrauchbare Hardware durch fehlerhafte Firmware) und erhöht die Sicherheit der gesamten Fahrzeugflotte.