All Systems Go 2017: Updating Embedded Systems
Auf der All Systems Go Konferenz in Berlin berichtete Michael Olbrich am 22.10.2017 über die Erfahrungen unseres Integration Teams, unter dem Titel "Updating Embedded Systems - Putting it all together".
Während noch vor ein paar Jahren Embedded Geräte fast nie geupdatet wurden, sorgen die vielen IoT Security Vorfälle in letzter Zeit dafür, dass das Thema Updating zunehmend auf der Agenda der Hersteller erscheint. Viele Embedded Linux Systeme folgen dabei einem "A/B" Schema, d.h. ein System-Slot ist aktuell gebootet, während ein zweiter geupdatet wird; mit diesem Mechanismus kann ein Update "atomar" durchgeführt werden, d.h. selbst eine Fehlfunktion führt nicht dazu, dass das System nicht mehr bootfähig ist.
Wie funktioniert der Update-Vorgang? Neben dem eigentlichen Schreibvorgang des Images, der mehr oder weniger generisch ablaufen kann, muss die Integrität des Images auf mögliche Fehler geprüft werden. Bei interaktiven Geräten kann z.B. der Benutzer (lokal oder remote hinter einem Rollout-Server) informiert werden, dass im Fehlerfall auf eine alte Version zurückgeschaltet wird. Schwieriger wird es bei nicht interaktiven Geräten: hier kann z.B. der Watchdog genutzt werden, um den Startvorgang zu überwachen; dabei wird im Userspace systemd als Watchdog-Handler genutzt. Allerdings müssen im Gegensatz zum Desktop-Usecase Maßnahmen ergriffen werden, damit systemd den erfolgreichen Start des Systems inklusive seiner Applikationen korrekt überwachen kann:
- Das System kann im Fehlerfall versuchen, neu zu booten. Dabei können die Reboot-Vorgänge vom Bootloader (meist barebox) mitgezählt werden und es kann bei Überschreiten einer Anzahl von Versuchen ein Fallback auf das alte System vorgenommen werden.
- Bei transienten Fehlern kann dieser Vorgang in einer Loop durchgeführt werden.
- Bei kritischeren Systemen kann das System im Fehlerfall aus Sicherheitsgründen heruntergefahren werden.
Welche Variante bei einem konkreten Gerät umgesetzt wird, ist oft projektspezifisch.
Für das Schreiben der Updates und die Verwaltung der Slots ist RAUC ein mächtiges Werkzeug, das neben der Prüfung von Signaturen auch die Synchronisation (z.B. mittels casync) vornehmen kann.
Weiterführende Links
Pengutronix at Electronica 2024 in Munich
Electronica trade fair in Munich, Germany is just around the corner and Pengutronix is currently gearing up to showcase some of our latest topics and developments. You find us in Hall B4 Booth 102 (map).
Pengutronix at FrOSCon 2024
Am 17. und 18. 08. 2024 ist es wieder soweit: Die FrOSCon findet an der Hochschule Bonn-Rhein-Sieg in Sankt Augustin statt - und Pengutronix ist wieder als Partner dabei.
Pengutronix auf der Embedded World 2024
Treffen Sie uns auf der Embedded World 2024 in Nürnberg! Sie finden uns wieder in Halle 4, Stand 4-261. Wie üblich zeigen wir auf unserem Messestand Demonstratoren zu aktuellen Themen.
Netdevconf 0x16
Nach längerer Zeit mit nur Online-Events findet 2022 auch die Netdev 0x16, eine Konferenz rund um die technischen Aspekte von Linux Networking, hybrid statt - online und vor Ort in Lissabon.
CLT-2022: Voll verteilt!
Unter dem Motto "Voll verteilt" finden die Chemnitzer Linux Tage auch 2022 im virtuellen Raum statt. Wie auch im letzten Jahr, könnt ihr uns in der bunten Pixelwelt des Workadventures treffen und auf einen Schnack über Linux, Open Source, oder neue Entwicklungen vorbei kommen.
Wir haben doch etwas zu verbergen: Schlüssel mit OP-TEE verschlüsseln
Moderne Linux Systeme müssen häufig zwecks Authentifizierung bei einer Cloud- basierten Infrastruktur oder einer On-Premise Maschine eigene kryptografische Schlüssel speichern. Statt der Verwendung eines Trusted Platform Modules (TPM), bieten moderne ARM Prozessoren die TrustZone-Technologie an, auf deren Basis ebenfalls Schlüssel oder andere Geheimnisse gespeichert werden können. Dieses Paper zeigt die Nutzung des Open Portable Trusted Execution Environments (OP- TEE) mit der Standardkonformen PKCS#11 Schnittstellen und i.MX6 Prozessoren von NXP als Beispiel.