Embedded Systems: Sicher entwickeln mit Rust und Ada

Viele eingebettete Systeme werden immer noch in C geschrieben. Entwickler sollten sich Gedanken über einen Umstieg machen.

Artikel von Karsten Lüth veröffentlicht am
Logo der Website Getadanow.com
Logo der Website Getadanow.com (Bild: Leah Goodreau/Public Domain via Wikimedia Commons / Montage: Golem.de)

Die fortschreitende Digitalisierung unserer Lebenswelt wird überwiegend durch eingebettete Systeme vorangetrieben. Immer mehr Geräte sind intelligent, vernetzt und mit einem leistungsfähigen Mikrocontroller versehen.

Selbst Glühbirnen sind inzwischen computerisiert und bieten bestenfalls viel Komfort in der vollautomatisierten Wohnung, können im Fehlerfall aber auch lästig oder sogar gefährlich werden und Hackern den Zugang auf das private Netzwerk ermöglichen. Eyal Itkin, Technology Lead der auf Sicherheit spezialisierten Firma Check Point Software Technologies Ltd., hat auf der Defcon 28 dazu eine sehr interessante Analyse präsentiert.

Traditionell werden eingebettete Systeme oft in der Programmiersprache C entwickelt, das zeigt auch die Tabelle der Top Programming Languages von IEEE Spectrum. Die Sprache C hat jedoch dermaßen viele Nachteile, dass es sich lohnt, über Alternativen nachzudenken. Zum Beispiel Rust oder Ada.

Ada ist seit rund 40 Jahren verfügbar und wird überwiegend für sicherheitskritische Anwendungen in der Luft- und Raumfahrt, der Verteidigung und in der Medizintechnik eingesetzt. Rust hingegeben ist vergleichsweise neu: Die erste stabile Rust-Version gibt es seit 2015. Dennoch ist Rust schon seit Jahren auf Platz eins der Most-Loved-Languages-Liste von Stackoverflow.

Stellenmarkt
  1. Ingenieur FH / Bachelor (m/w/d) der Fachrichtung Elektrotechnik, Nachrichtentechnik, Hochfrequenztechnik ... (m/w/d)
    Bayerisches Landeskriminalamt, Königsbrunn
  2. Embedded Software Developer / Engineer (m/f/d)
    OTT Hydromet GmbH, Kempten
Detailsuche

Der größte Vorteil der Programmiersprache C ist indes ihre enorme Verbreitung. Es gibt unzählige Entwicklerinnen und Entwickler, Werkzeuge, Bibliotheken und in C geschriebene Alt-Projekte. C ist leicht zu lernen, erlaubt hardwarenahe Programmierung und C-Compiler generieren effizienten Maschinencode.

Unter den am häufigsten auftretenden Fehlern sind allerdings auch viele, die typisch für C sind, beispielsweise die Benutzung freigegebener Speicherbereiche, Out-of-Bounds Reads/Writes, Integer Overflows oder Null-Pointer-Dereferenzierung. Um solche Fehler zu vermeiden, wurden viele Richtlinien für die sichere Programmierung mit C erstellt. Bekannt sind zum Beispiel der Misra-C Standard, die ISO/IEC TS 17961:2013 C Secure Coding Rules, oder der SEI Cert C Coding Standard.

C ist nur mit sehr viel Aufwand sicher zu machen

Diese Richtlinien zu studieren ist teilweise ähnlich aufwendig, wie eine komplett neue Programmiersprache zu lernen, und einige dieser Guidelines sind so lang, dass man sich fragt, warum die Autoren nicht einfach eine andere Programmiersprache empfehlen. Die AUTOSAR Guidelines for the use of the C++14 language in critical and safety-related systems zum Beispiel sind über 300 Seiten lang. Die Konsequenz ist, dass es zwar viele erfahrene C-Programmierer gibt, diese aber häufig dennoch geschult werden müssen, damit sie sicheres C programmieren.

Programmierung sicherer Systeme mit Rust: Eine Einführung

C ist nicht nur weniger sicher, sondern auch weniger produktiv als von den Entwicklern eingeschätzt:

  • Die Syntax von C ist sehr kompakt und benutzt nur sehr wenige Schlüsselwörter. Das beschleunigt zwar das Schreiben von Programmen, verringert aber auch die Lesbarkeit. Dadurch entstehen höhere Kosten für Code Review und Analyse.
  • C ist deswegen so leicht so lernen, weil viele wichtige Features fehlen. C kennt keine Pakete, hat nur ein einfaches Typsystem und besitzt keine Sprachelemente für die Beschreibung von Nebenläufigkeit.
  • Tendenziell führen C-Compiler weniger Überprüfungen zur Compile-Zeit durch als Ada- oder Rust-Compiler. Das freut die Entwickler, denn sie kommen so schnell zu einem ausführbaren Programm. Da aber die fehlenden Überprüfungen zu einer höheren Anzahl von Laufzeitfehlern führen, steigen insgesamt die Entwicklungskosten.

Viele diese Nachteile kennt Ada nicht. Ada ist extrem gut lesbar, hat ein umfassendes Typsystem und Tasks sind Bestandteil der Sprache.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
Rust hat das einzigartige Feature des Ownership-Modells 
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6.  


Aktuell auf der Startseite von Golem.de
Truth Social
Trumps soziales Netz bekommt Probleme mit Hackern und Lizenz

Hacker starten in Trumps-Netzwerk einen "Online-Krieg gegen Hass" mit Memes. Der Code scheint illegal von Mastodon übernommen worden zu sein.

Truth Social: Trumps soziales Netz bekommt Probleme mit Hackern und Lizenz
Artikel
  1. Arduino und Python: Bastler nimmt Audiokassette als Speichermedium für Retro-PC
    Arduino und Python
    Bastler nimmt Audiokassette als Speichermedium für Retro-PC

    Die Kassette kann nicht nur Lieder speichern, sondern auch Bitmuster. Ein Bastler baut dafür eine Schnittstelle mit 1,5 KBit/s Datenrate.

  2. Infiltration bei Apple TV+: Die Außerirdischen sind da!
    Infiltration bei Apple TV+
    Die Außerirdischen sind da!

    Nach Foundation wartet Apple innerhalb kürzester Zeit gleich mit der nächsten Science-Fiction-Großproduktion auf. Diesmal landen die Aliens auf der Erde.
    Eine Rezension von Peter Osteried

  3. Krypto: NRW versteigert beschlagnahmte Bitcoin
    Krypto
    NRW versteigert beschlagnahmte Bitcoin

    Nordrhein-Westfalen hat Bitcoin im achtstelligen Eurobereich beschlagnahmt und will diese jetzt loswerden - im Rahmen einer Auktion.

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Daily Deals • AOC CQ32G2SE/BK 285,70€ • Dell Alienware AW2521H 360 Hz 499€ • Corsair Vengeance RGB PRO SL 64-GB-Kit 3600 253,64€ • DeepCool Castle 360EX 109,90€ • Phanteks Glacier One 240MP 105,89€ • Seagate SSDs & HDDs günstiger • Alternate (u. a. Thermaltake Core P3 TG Snow Ed. 121,89€) [Werbung]
    •  /