Zur Vermeidung von Programmfehlern

Formal Software-Engineering hilft bei der Qualitätssicherung

25.09.1992

Boris Mackrodt ist freier Fachjournalist in Wiesbaden.

Mehr als 22 Prozent aller Rechnerausfälle bei Großunternehmen gehen auf das Konto von fehlerhafter Software, so eine Untersuchung des amerikanischen Marktforschungsunternehmens Find/SVP. Einen Ausweg könnten Projekte auf Basis von Formal Software-Engineering sein. Boris Mackrodt beschreibt diese Methode sowie die Vorgehensweise des Bundesamts für die Sicherheit in der Informationstechnik (BSI).

Besondere Probleme bereitet erfahrungsgemäß die Zuverlässigkeit von Anwendungssoftware, die speziell für die Bedürfnisse eines Kunden geschrieben wurde. Betriebssysteme und Standardsoftware hingegen sind heutzutage in der Regel sehr viel stabiler, da bei einem Versionswechsel nicht nur der Leistungsumfang erweitert, sondern auch die Fehler im Programmcode beseitigt wurden. Der Einsatz diente immer auch als Testphase für die Nachfolgeversion - und die Zahl der "Tester" ging oft in die Hunderttausende.

Die Entwickler individueller Software haben diese Vorteile nicht. Ihre Produkte sollen im Idealfall auf Anhieb funktionieren und keinerlei unerwünschte Nebeneffekte erzeugen. Daß dies bislang so gut wie nie der Fall ist, hat zwei einfache Gründe: Mit den klassischen Methoden der Software-Entwicklung lassen sich ab einer gewissen Codemenge Inkonsistenzen nicht vermeiden - weder innerhalb des Programms noch im Verhältnis zur vorhandenen Zielumgebung. Der andere Grund ist, daß sich diese Inkonsistenzen oder Fehler in den Tests, die sich an die Entwicklung anschließen, nicht alle finden lassen, da es bei Programmen dieser Größe unmöglich ist, alle denkbaren Konstellationen und Ereignisse eines Realbetriebes durchzutesten.

Logische Beweise für die Schlüssigkeit der Vorgaben

Hilfestellung kann hier die Anwendung formaler Methoden während der Spezifikationsphase eines Softwareprojektes bieten. Mit der Übertragung der Anforderungen in ein formalmathematisches Modell ist ein Rahmen geschaffen, in dem mit logischen Beweisen die Schlüssigkeit der Vorgaben geprüft werden kann. Ausgehend von dieser widerspruchsfreien Spezifikation können alle weiteren Schritte während der Software-Entwickung wiederum als widerspruchsfrei gegenüber den Vorgaben bewiesen werden. Software, die auf diese Art entsteht, wird zur Zeit vor allem in äußerst sicherheitssensiblen Bereichen eingesetzt.

Die Entwicklung oder Verifizierung von Software nach formalen Methoden hat sich in Deutschland bislang noch nicht durchgesetzt wie in den angelsächsischen Ländern. Im kommerziellen Bereich sind nur wenige Unternehmen in der Lage, Projekte auf Basis des "Formal Software-Engineering" durchzuführen. Vermutlich wird jedoch das Interesse an dieser Entwicklungsmethode steigen. Diese Prognose gründet sich vor allem darauf, daß das Bundesamt für die Sicherheit in der Informationstechnik nun verstärkt auch im Bereich der Softwaresicherheit tätig werden will.

Am 17. Dezember 1990 beschloß der Deutsche Bundestag das BSI-Gesetz. Damit war die rechtliche Grundlage für eine neue Bundesbehörde geschaffen, die sich dediziert mit Fragen der Sicherheit von IT-Komponenten und IT-Systemen sowie deren Umfeld beschäftigen soll.

Die Aufgaben der Behörde sind reichhaltig. Das Gesetz weist ihr die Entwicklung von Kriterien, Verfahren und Werkzeugen für die Prüfung und Bewertung der Sicherheit von informationstechnischen Systemen oder Komponenten genauso zu wie die Unterstützung des Verfassungsschutzes und des Datenschutzbeauftragten.

Für die Anbieter von informationstechnischen Produkten dürfte ° 1, Abs. 3 des BSI-Gesetzes besonders interessant sein. Dort heißt es zu den Aufgaben des BSI: "Prüfung und Bewertung der Sicherheit von informationstechnischen Systemen oder Komponenten und Erteilung von Sicherheitszertifikaten". Auf der Grundlage von Prüfungen, die entweder das BSI selbst oder ein beauftragtes Prüflabor durchführt, werden seit etwa einem Jahr für Hard- und Software staatliche Gütesiegel vergeben.

Die Gründe hierfür sind angesichts der wachsenden Abhängigkeit der Gesellschaft von IT-Systemen einleuchtend: Zum einen wird der Faktor Sicherheit zu einem entscheidenden Kriterium bei der Auswahl neuer Systeme. Dies umfaßt sowohl den Schutz vor unbefugtem Zugriff als auch die allgemeine Zuverlässigkeit und Verfügbarkeit der Systeme.

Neutrale Instanz bewertet die Sicherheit

Zum anderen ist der Einsatz einer neutralen Instanz für die Bewertung der Sicherheit von Systemen und für die Erstellung von Bewertungsrichtlinien sinnvoll. So ist absehbar, daß zunächst öffentliche und halbstaatliche Stellen, dann aber sicherlich auch die Wirtschaft für sicherheitssensible Bereiche Produkte fordern werden, deren Sicherheitsfunktionalität das BSI zertifiziert.

Die Sicherheitsprüfung trägt Sorge für Vertraulichkeit (Verhinderung von unautorisiertem Zugriff), Integrität (Verhinderung von unautorisierter Modifikation) und Verfügbarkeit (Verhinderung von unautorisierter Verweigerung oder Zurückhaltung) der im System gehaltenen Daten. Typische Kandidaten für solche Sicherheitsprüfungen sind Betriebs- und Datenbanksysteme, aber auch spezielle IT-Sicherheitsprodukte wie Chip-Kartensysteme oder Virenscanner sowie Netzwerkprodukte.

Betriebssysteme und Datenbanken werden in erster Linie auf ausreichende Datenschutzmechanismen untersucht. Im Netzwerkbereich ist von besonderem Interesse, wie sich unberechtigter Zugriff über das Netz verhindern läßt und ob die Datenübertragung abhörsicher beziehungsweise zuverlässig erfolgt.

Die Evaluierung der Hard- und/oder Software richtet sich dabei entweder nach den deutschen vom BSI definierten IT-Sicherheitskriterien oder den europäischen Information Technology Security Evaluation Criteria (ITSEC), die auch in anderen EG-Staaten gültig sind. Diese Bestimmungen beschreiben Sicherheitsgrundfunktionen (generische Oberbegriffe), auf deren Basis beispielhaft zehn Funktionsklassen für IT-Produkte definiert sind.

Die Klassen sieben bis zehn kennzeichnen spezielle Sicherheitseigenschaften, die sich auf besonders hohe Verfügbarkeit, hohe Integrität bei der Datenübertragung in Netzwerken und Geheimhaltungsfunktionen beziehen.

Obgleich das BSI die Instanz ist, die letztlich die Zertifikate vergibt, werden nicht alle Prüfungen im Bonner Bundesamt durchgeführt, da hierfür die organisatorischen und personellen Ressourcen bei weitem nicht ausreichen. Deshalb akkreditiert das BSI Prüflaboratorien. Die Liste der akkreditierten Labors und der Antragsteller mit laufenden Akkreditierungsverfahren umfaßt zur Zeit 21 Firmen. Für die Evaluierungsstufen fünf und sechs, die Methoden aus dem Formal Software-Engineering verlangen, kommen in Deutschland nur zwei oder drei Organisationen in Frage.