Die Betriebssicherheit von softwareintensiven Embedded-Systemen ist eng mit dem Schutz vor unbefugtem Zugriff oder einem gezielten Angriff verbunden. Die dazu notwendigen Maßnahmen stellen Software- und Hardwareentwickler gleichermaßen vor hohe Herausforderungen.
Embedded-Systeme sind so strukturiert und in umgebende technische Systeme integriert, dass sie komplexe Steuerungs- und Datenverarbeitungsaufgaben übernehmen können. Dabei darf die Betriebs- und Datensicherheit durch äußere Einflüsse nicht gestört oder gar verhindert werden.
Das erreicht man einerseits mit Erhaltung der Betriebssicherheit (Safety), andererseits versteht man unter Sicherheit die Gesamtheit der Maßnahmen, um ein System vor Zugriffen bzw. Angriffen von außen zu schützen (Security). Das unterstreicht sowohl die Abgrenzung dieser Begriffe, zeigt aber auch, wie eng sie zusammenhängen.
Offenheit und Sicherheit unter einen Hut bringen
Angesichts des rasanten Fortschritts, der von zunehmendem Zeit-, Konkurrenz- und Erfolgsdruck zuverlässig begleitet wird, besteht die zentrale Herausforderung darin, neben Qualitätsforderungen auch ein angemessenes Sicherheitsniveau zu realisieren. Die Anforderungen, Offenheit (Vernetzbarkeit mit anderen Systemen) sowie Änderungsfreundlichkeit und Sicherheit sinnvoll unter einen Hut zu bringen, stehen auf den ersten Blick im Widerspruch zu einem gut geschützten Software Engineering.
„Verbauen und Vergessen“ gehört der Vergangenheit an
Bei Embedded-Software kann eine Verbesserung der Zugangssicherheit über Software-Updates erfolgen. Dies wiederum erfordert die Zugänglichkeit des Systems über Schnittstellen, z.B. zum Internet. So führt die Anforderung, die Sicherheit der Software durch Updates zu verbessern, zwangsläufig dazu, dass das System nicht vollständig gegen unbefugten Zugriff schützbar ist. Daraus ergeben sich gleichermaßen Aufgaben für die Entwicklung von Soft- und Hardware. In punkto Hardware werden dafür nämlich sichere Interfaces und Übertragungsprozeduren benötigt. Und die Software muss so aufgebaut sein, dass sie autorisiert korrigiert, aber nicht ohne Autorisierung manipuliert werden kann. Das Motto „Verbauen und Vergessen“ gehört damit der Vergangenheit an.
Bekannte und bewährte Algorithmen und Methoden nutzen
Bei der Entwicklung von Embedded-Systemen können durch die Anwendung kryptologischer Verfahren viele Prozesse sicher oder zumindest sicherer gemacht werden. Leider passieren immer wieder die gleichen Fehler bei der Implementierung von Kryptologie. Eindringlinge haben es dadurch oft unnötig leicht. Softwareentwickler gehen häufig davon aus, dass die von ihnen entwickelten Algorithmen niemand knacken kann, doch das Gegenteil ist der Fall. Ein gängiges Mittel ist hier das Schreiben unklaren oder scheinbar verworrenen Codes. Doch gerade bei der heutigen Vernetzung wird jedes Verfahren früher oder später bekannt. Der Selbsttest eines eigenentwickelten Algorithmus führt möglicherweise zu dem Ergebnis, dass es nicht einmal dem Autor selbst gelingt, ihn zu knacken. Dann gilt er als besonders sicher.
Letztlich sieht man es einem Algorithmus jedoch nicht an, ob er nun sicher ist oder nicht. Daher gilt die Empfehlung, konservativ zu entwickeln und dabei bekannte und altbewährte Algorithmen und Methoden zu nutzen.
Doch auch einer perfekt implementierten Kryptologie sind Grenzen gesetzt, wie z.B. Denial-of-Service-Attacken oder der immer Erfolg versprechende Versuch, stets das schwächste Element eines Walls von Maßnahmen für die Sicherheit zu instrumentalisieren: den User selbst.
So gilt letztlich, dass gesunder Menschenverstand niemals hinter Formalismen verschwinden darf. Für die Realisierung von Sicherheit gilt immer, dass etwas Sicherheit besser ist als gar keine.
Weiterführende Informationen
MicroConsult Training & Coaching zum Thema Safety & Security