Das Ziel der Funktionalen Sicherheit ist die Verringerung des Risikos, dass von Fehlern in elektrischen Systemen ausgehen kann, für Menschen und Umwelt auf ein vernachlässigbares Maß. Plakativ gesprochen: Überall wo die Fehlfunktion eines Computers Menschenleben oder die Umwelt gefährdet, muss durch geeignete Methoden der funktionalen Sicherheit das Gefahrenrisiko minimiert werden.
Funktionen eines Systems, die der Minimierung des Risikos für Mensch und Umwelt dienen, nennt man Sicherheitsfunktionen. Beispiele für Sicherheitsfunktionen gibt es in vielen Feldern:
- Robotik: Wenn eine Person einem Roboterarm zu nahekommt, muss der Roboterarm entweder anhalten oder zumindest so langsam werden, dass die Person sehr leicht seiner Bewegung ausweichen kann.
- Automobil: Ein Airbag darf nur in einer Gefahrensituation auslösen, dann aber muss er zuverlässig auslösen. Ein unvermitteltes Auslösen eines Airbags stellt selber wieder eine Gefahrensituation dar, die vermieden werden muss.
- Bahn: Ein eingleisiger Streckenabschnitt darf niemals aus beiden Richtungen für entgegenkommende Züge per Signal freigegeben werden.
In all diesen Beispielen kommen Computer zum Einsatz, die mit Hilfe von Sensoren das System überwachen und bei Bedarf sicher abschalten.
Aus Sicht der Funktionalen Sicherheit gibt es zwei Risikoquellen in diesen Computern:
- systematische Fehler (Bugs) und
- zufällige Fehler (z.B. Bitflips).
Systematischen Fehlern, also Bugs in Software und teilweise auch in Hardware, wird mit sorgfältiger Entwicklungsarbeit begegnet, dazu gehört unter anderem:
- gründliches und systematisches Testen
- die Nachverfolgung von Sicherheitsanforderungen.
Zufällige Fehler äußern sich beispielsweise als Bitflips oder dadurch, dass ein Bit dauerhaft auf 0 oder 1 fest steht. Sie entstehen durch Temperaturschwankungen, Vibrationen und Spannungsschwankungen. Selbst sehr leichte Strahlung, die für Menschen vollkommen ungefährlich ist, kann auch Bitflips auslösen. Die zufälligen Fehler sind selten, aber nicht selten genug, um ihr Risiko zu vernachlässigen. Sie sind deutlich messbar. Zufällige Fehler gehen im Wesentlichen von Hardware aus. Jedoch können auch andere (nicht-sichere) Software-Komponenten, wie beispielsweise ein Linux-Kern, Fehler hervorrufen, die zufälligen Fehlern sehr ähnlich sind (beispielsweise Speicher willkürlich überschreiben).
SIListra Systems wendet die Methode Coded Processing an, um zufällige Fehler während der Ausführung einer Sicherheitsfunktion aufzudecken. Unsere Kunden setzen das – von uns entwickelte und vertriebene – Software-Werkzeug SIListra Safety Transformer ein, um Coded Processing automatisiert in den C/C++ Source-Code ihrer Sicherheitsfunktion einzufügen.
Für die funktionale Sicherheit gibt es internationale Normserien, die Verfahrensweisen definieren, um den vielfältigen Risiken für Sicherheitsfunktionen zu begegnen. Coded Processing ist eine dieser Methoden. Beispiele für solche Sicherheitsnormen sind:
Zu guter Letzt: Funktionale Sicherheit darf nicht mit Security (oder auch "Angriffssicherheit") verwechselt werden. Bei Security geht es um Risiken die durch menschliche Angreifer entstehen (umgangssprachlich "Hacker"). Bei der Funktionalen Sicherheit geht es um Risiken, die durch die Technologie an sich entstehen. Im Englischen lassen sich die beiden Begriffe leichter unterscheiden, da Funktionale Sicherheit mit "Safety" übersetzt wird. Beide Ausprägungen von Sicherheit sind wichtig und müssen zukünftig immer mehr zusammen gedacht werden.