Software

Sichere Softwarearchitektur und sichere Programmierung

Zur Beurteilung von Sicherheit bei Software stehen sowohl die Common Criteria (CC) und eine entsprechende Zertifizierungskette als auch ISO EN 6150 und davon abhängige weitere internationale Normen bei bestimmten Aufgabenstellungen, z.B. Kraftwerkssteuerungen, zur Verfügung. Letztere orientieren sich meist an der vollständigen Anlagenkomplexität und stellen Anforderungskataloge gemäß SIL 1-4 auf. Im kommerziellen Internetgebrauch ist CC EAL 4 zumeist die höchste Stufe, für die ein Investor bereit ist zu zahlen. Höhere Qualifizierungen sind nur mit speziellen und genau dazu evaluierten Entwicklungstechniken zu erlangen, aufgrund der damit verbundenen höheren Kosten sind sie fast ausschließlich im Umfeld von Prozessleitsystemen und oberen Geheimhaltungsstufen anzutreffen. Detaillierte Planung und sorgfältige Prüfung von sicherheitsrelevanten Aspekten einer Software stehen also notwendigerweise bereits zu Beginn neben der Funktionalität im Zentrum jeder Softwareentwicklung, die während der Nutzungsphase bestimmte Sicherheiten versprechen und halten soll. Ein nachträgliches Hinzufügen oder Implementieren von Sicherheit ist normalerweise unmöglich und in jedem Falle unverhältnismäßig; unsichere Betriebssysteme verhindern wirksame Sicherheit a priori.

Dienstleistung

Wir schreiben Programme für ihre Systeme in Shell, C oder Python.

Wenn Sie es uns erlauben, gerne auch als Freie Software unter GNU/General Public License. Beispiele dazu siehe unten.

Getreu dem Motto: “Untested software is broken by design” entwickeln wir gerne testgetrieben, d.h. die erwünschte Funktionalität wird zuerst durch eine Testsuite möglichst exakt beschrieben. Danach entsteht die Lösung, bis alle Tests erfolgreich durchlaufen werden. Diese Vorgehensweise stellt die Erfüllung aller beschriebenen Anforderungen sicher und später werden Kollateralschäden von Änderungen oder Bugfixes selbst in großen Systemen schnell erkannt und können daher zuverlässig beseitigt werden.

Qualität ist wichtig, Zuverlässigkeit zählt! Drei Beispiele:

iptables-converter

Eine Datei aus validen iptables Kommandos wird vom iptables-converter gelesen. Daraus wird eine Ausgabe erzeugt, die mit iptables-restore in den laufenden Kernel geladen wird. Drastische Ladezeitverkürzung ist die erwünschte Folge. Der ip6tables-converter funktioniert ebenso.

iptables-optimizer

Lange NetFilter-Ketten im Linux-Kernel führen zu unnötigen Latenzen bei ein-, aus- und durchgehenden IP-Paketen. iptables-optimizer minimiert diese Latenzen durch Sortieren der Regeln anhand ihrer Nutzungshäufigkeiten. Regelmässiger Aufruf führt daher zu besserer Performanz der IP-Filter in der Firewall. Der ip6tables-optimizer funktioniert ebenso.

adm6

adm6 ist ein Generator zur Erzeugung von ip6tables Kommandos für beliebig viele Zielsysteme aufgrund deren Konfigurationen und einer gemeinsamen Policy, die in Textdateien vorgehalten wird und einfach strukturiert ist. Vorbild war die Eigenentwiklung sspe für IPv4.