• IT-Karriere:
  • Services:

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. Börse Stuttgart GmbH, Stuttgart
  2. IT-Servicezentrum der bayerischen Justiz, verschiedene Standorte

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.  


Anzeige
Top-Angebote
  1. (u. a. PC-Gehäuse bis -50% und Weekend Sale)
  2. (u. a. Surviving Mars - First Colony Edition für 5,29€, Monopoly - Nintendo Switch Download Code...
  3. (u. a. Patriot Viper 4 8-GB-Kit DDR4-3000 für 38,99€ + 6,99€ Versand statt 55,14€ inkl...
  4. 139,90€ (Bestpreis mit Cyberport. Vergleichspreis ca. 160€)

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...


Folgen Sie uns
       


Razer Kyio Pro Webcam - Test

Webcams müssen keine miese Bildqualität haben, wie Razers Kyio Pro in unserem Test beweist.

Razer Kyio Pro Webcam - Test Video aufrufen
Programm für IT-Jobeinstieg: Hoffen auf den Klebeeffekt
Programm für IT-Jobeinstieg
Hoffen auf den Klebeeffekt

Aktuell ist der Jobeinstieg für junge Ingenieure und Informatiker schwer. Um ihnen zu helfen, hat das Land Baden-Württemberg eine interessante Idee: Es macht sich selbst zur Zeitarbeitsfirma.
Ein Bericht von Peter Ilg

  1. Arbeitszeit Das Sechs-Stunden-Experiment bei Sipgate
  2. Neuorientierung im IT-Job Endlich mal machen!
  3. IT-Unternehmen Die richtige Software für ein Projekt finden

Weclapp-CTO Ertan Özdil: Wir dürfen nicht in Schönheit und Perfektion untergehen!
Weclapp-CTO Ertan Özdil
"Wir dürfen nicht in Schönheit und Perfektion untergehen!"

Der CTO von Weclapp träumt von smarter Software, die menschliches Eingreifen in der nächsten ERP-Generation reduziert. Deutschen Perfektionismus hält Ertan Özdil aber für gefährlich.
Ein Interview von Maja Hoock


    Fiat 500 als E-Auto im Test: Kleinstwagen mit großem Potenzial
    Fiat 500 als E-Auto im Test
    Kleinstwagen mit großem Potenzial

    Fiat hat einen neuen 500er entwickelt. Der Kleine fährt elektrisch - und zwar richtig gut.
    Ein Test von Peter Ilg

    1. Vierradlenkung Elektrischer GMC Hummer SUV fährt im Krabbengang seitwärts
    2. MG Cyberster MG B Roadster mit Lasergürtel und Union Jack
    3. Elektroauto E-Auto-Prämie übersteigt in 2021 schon Vorjahressumme

      •  /