• IT-Karriere:
  • Services:

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. Technische Universität Hamburg, Hamburg
  2. Computacenter AG & Co. oHG, verschiedene Standorte

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.  


Anzeige
Top-Angebote
  1. 39,90€ (Vergleichspreis 68€)
  2. 75,90€ (Bestpreis!)
  3. (u. a. Asus GeForce RTX 3060 ROG-STRIX OC für 764€)
  4. (u. a. The Sinking City für 42,99€, Devil's Hunt für 3,50€, Magrunner: Dark Pulse für 2...

TomZ 27. Jan 2021 / Themenstart

es ist LLVM. Für GCC gibt es nur etwas in der frühen Entwicklung.

Kommentieren


Folgen Sie uns
       


VW ID.3 Probe gefahren

Wir sind einen Tag lang mit dem ID.3 in und um Berlin herum gefahren.

VW ID.3 Probe gefahren Video aufrufen
    •  /