Programmiersprachen: Ada und Spark sind sicherer als C

Bei der Programmierung von sicherheitsrelevanter Software ist C immer noch beliebt. Sollte es aber nicht, denn Ada und Spark sind gerade für diesen Bereich viel besser geeignet.

Artikel von Johannes Kanig veröffentlicht am
Wenn es um den Schutz vor Angriffen geht, sind einige Programmiersprachen besser geeignet als andere.
Wenn es um den Schutz vor Angriffen geht, sind einige Programmiersprachen besser geeignet als andere. (Bild: Pixabay)

Bei der Auswahl einer bestimmten Programmiersprache für ein Projekt spielen oft Faktoren wie die Vertrautheit mit der Sprache, die verfügbaren Werkzeuge sowie die Community eine große Rolle. Viel zu selten wird aber die Eignung der Sprache selbst für die Aufgabe zur Entscheidungsfindung hinzugezogen. Dabei hat jede Programmiersprache Vor- und Nachteile und bestimmte Anwendungsgebiete, in denen sie einfach eine bessere (oder schlechtere) Wahl wäre.

Inhalt:
  1. Programmiersprachen: Ada und Spark sind sicherer als C
  2. Warum nicht einfach C?
  3. ... und was ist jetzt Spark?

In diesem Artikel wollen wir speziell darauf eingehen, wie Programmiersprachen in sicherheitsrelevanter Software helfen können, bestimmte Ziele der Software zu erreichen. Dabei konzentrieren wir uns auf Ada und Spark, weil wir sie in diesem Kontext für besonders geeignet halten, und stellen sie C gegenüber, das in der Praxis (leider noch) zu oft die Wahl ist.

Was sind Ada und Spark?

Ada ist eine prozedurale Programmiersprache, sie wurde in den 1970er Jahren entwickelt und zuerst 1983 standardisiert. Seitdem wurde sie kontinuierlich weiterentwickelt; die letzte Version ist Ada 2012, die nächste wird wohl kommendes Jahr erscheinen.

Die Sprachfeatures ähneln auf den ersten Blick jenen von C++ oder Java: Es kann auf Objekte sowie Generics zugegriffen werden, es gibt ein umfangreiches Modulsystem. Ein großer Unterschied ist die Syntax. Ada legt großen Wert auf Lesbarkeit und Fehlervermeidung und benutzt auch nicht die für C typischen geschweiften Klammern.

Stellenmarkt
  1. Senior-Berater:in Projektmanagement (m/w/d)
    parameta Projektmanagement GmbH, Erding
  2. WLAN Administrator (m/w/d)
    willy.tel GmbH, Hamburg
Detailsuche

Spark ist eine Schwestersprache von Ada, die einige zusätzliche Einschränkungen einführt. Diese Einschränkungen ermöglichen weitreichende Analysen von Spark-Code und garantieren mehr Sicherheit.

Der einfachste Weg, einen Eindruck von Ada zu bekommen, ist die Adacore-Learn-Webseite: Auch ohne Installation können Interessierte gleich mit Ada und Spark loslegen. Für eigene Projekte sollten die nötigen freien Werkzeuge von der Webseite von Adacore heruntergeladen und installiert werden. In der Entwicklungsumgebung mit dem Namen GNATStudio können Interessierte entweder ihr eigenes Programm schreiben (Create New Project im ersten Dialog) oder die vielen Beispiele ansehen (im Menu Help -> GNAT -> Examples).

"Security" ist nicht gleich "Safety"

Immer mehr Software hat heutzutage große Auswirkungen auf unser Leben. Sei es, weil menschliche Leben direkt davon abhängen, etwa bei der Steuerungssoftware eines Flugzeugs oder Pkw, oder sei es, weil große Geldbeträge im Spiel sind, etwa in Bankensystemen. Im Englischen wird hier der Begriff "Safety" verwendet.

In manchen Anwendungsszenarien muss auch die Software selbst vor böswilligen oder unbefugten Eingriffen geschützt werden. Oder sie muss auch dann funktionieren, wenn den Eingaben nicht vertraut werden kann. Hier hat sich im Englischen der Begriff "Security" durchgesetzt. Im Deutschen wird meistens für beides der Begriff "Sicherheit" verwendet.

Moderne Ansätze des Softwaredesigns insbesondere in der Security gehen von einer modularen Architektur aus: Die Software wird in kleine Einheiten geteilt, die unterschiedliche Aufgaben haben und unterschiedlich kritisch sind. Jedes Modul hat andere Anforderungen, die die Software möglichst gut erfüllen soll.

Programming in Ada 2012

Die Sprache nach den Anforderungen aussuchen

Zum Beispiel soll ein Modul eine Benutzereingabe validieren und zur weiteren Verarbeitung weiterleiten. Dieses Modul wird also eine Reihe von Anforderungen zur Validation enthalten sowie Informationen, wohin die Daten befördert werden sollen. Zusätzlich sollte das Modul aber frei von Programmierfehlern sein und insbesondere keine Angriffsflächen wie Pufferüberläufe bieten. Denn das Modul liest direkt Eingaben von potenziell böswilligen Benutzern.

Es gibt eine Klassifizierung von Softwarebugs, genannt CWE, mit Hunderten von Einträgen wie Pufferüberlauf, Dereferenzierung von Nullzeigern und so weiter. Für ein sicherheitskritisches Modul wie das der Eingabevalidierung würde man sie gerne alle vermeiden. Oder zumindest die meisten. Oder wenigstens die häufigsten.

Nach der Einteilung der Software in Module und der Erstellung von Anforderungen für jedes Modul kann im Prinzip mit der Programmierung angefangen werden. Vorher aber sollte man sich fragen: Wie können die Anforderungen am besten und effizientesten eingesetzt werden? Und: Spielt dabei die Wahl der Programmiersprache eine Rolle?

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
Warum nicht einfach C? 
  1. 1
  2. 2
  3. 3
  4.  


amagol 03. Sep 2020

Eine C/C++ library kann man in den meisten Faellen auch von anderen Sprachen aus...

TheNX 02. Sep 2020

Ich habe mich mal für Ada im kommerziellen Bereich interessiert. Kurzum, die Situation...

igor37 02. Sep 2020

Jede gefundene Lücke basierend auf ungültigen Pointerzugriffen, data races...

captain_spaulding 02. Sep 2020

Dann eben neu. Von Pascal hab ich schon lang nichts mehr gelesen und hab es im Job oder...

captain_spaulding 02. Sep 2020

Ist aus Safety/Security-Sicht quatsch. Es kommt auf die Fehlerhäufigkeit an. Fehler in...



Aktuell auf der Startseite von Golem.de
Fälschung
Wieder Abmahnungen wegen Youporn-Streaming

Diesmal hat sich ein besonders dummer Betrüger an Abmahnungen zum Streaming bei Youporn versucht. In dem Brief stimmt fast keine Angabe.

Fälschung: Wieder Abmahnungen wegen Youporn-Streaming
Artikel
  1. Deutsche Telekom: Netflix, Facebook und Amazon sollen für Netzausbau zahlen
    Deutsche Telekom
    Netflix, Facebook und Amazon sollen für Netzausbau zahlen

    Deutsche Telekom, Vodafone und 11 weitere große europäische Netzbetreiber wollen jetzt Geld von den Content-Konzernen aus den USA sehen.

  2. Telekom-Internet-Booster: Feldtest bringt über 600 statt 50 MBit/s ins Haus
    Telekom-Internet-Booster
    Feldtest bringt über 600 statt 50 MBit/s ins Haus

    Die Telekom beginnt mit 5G DSL. Dafür wird im Haushalt eine Außenantenne benötigt.

  3. 800 MHz: Bundesnetzagentur dürfte nächste Auktion absagen
    800 MHz
    Bundesnetzagentur dürfte nächste Auktion absagen

    1&1 wird sich das neue Vorgehen nicht gefallen lassen. 800 MHz bietet wichtige Flächenfrequenzen auf dem Lande.

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 • Heute ist Cyber Monday • AMD Ryzen 7 5800X 348€ • 3 für 2: Star Wars & Marvel • Bis 300€ Direktabzug auf TVs, Laptops uvm. • Bis 50% auf beyerdynamic + Gratis-Kopfhörer • Cyber Monday bei MM/Saturn (u. a. Xiaomi 11 Lite 5G 299€) • Alternate (u. a. be quiet CPU-Kühler 29,99€) [Werbung]
    •  /