Auf der anderen Seite können Firewall- und
VPN-Lösungen Fehler und Hintertüren enthalten
oder Schlüssel können zu kurz gewählt sein,
speziell bei der Verwendung von RSA. Auch
zeigen aktuelle Enthüllungen, dass die
Sicherheit solcher Systeme nicht als ultimativ
angesehen werden kann. Die Kehrseite der
Veröffentlichungen ist das Risiko, dass sich mit
diesen Informationen potenzielle Angreifer auf
veröffentlichte Schwachstellen konzentrieren
können.
Aber auch Insellösungen sind betroffen:
Unterschiedliche Personen in einem
Unternehmen haben physikalischen Zugang
zu den Steuerungen. Servicetechniker verbinden
diese mit ihren Notebooks wenn sie vor Ort
sind. Backups der Steuersoftware und der
Prozessparameter liegen an unterschiedlichen
Stellen im Unternehmen.
Dies bedeutet, dass der Schutz schon auf dem
Zielsystem, also der Steuerung selbst, anfangen
muss. Auf der Steuerung darf nur Code laufen
und es dürfen nur Konfigurationen sowie
Prozessparameter verwendet werden, die von
der autorisierten Stelle genehmigt wurden.
Die meisten Steuerungen sind im Feld
aktualisierbar. Damit können neue Funktionen
nachträglich ausgeliefert oder Fehler behoben
werden. Diese Update-Fähigkeit ist gleichzeitig
die Schwachstelle, da ein Angreifer auf diesem
Weg eigenen, manipulierten Code auf die
Steuerung bringen kann sowohl remote als auch
lokal an der Steuerung. Um dies zu verhindern,
muss die Steuerung in einer sicheren Umgebung
booten und ablaufen. Alle Komponenten der
Steuerung, beginnend mit dem Pre-Bootloader
bis zur Applikation sollten kryptografisch
authentifiziert und somit vertrauenswürdig sein.
Man spricht hier von „Secure Boot“.
Wie funktioniert Secure Boot?
Die einzelnen Bestandteile auf der Steuerung
werden vom Hersteller oder Anlagenentwickler
Warum so kompliziert? Reicht nicht auch ein Hash?
Bei asymmetrischer Kryptografie wie ECC wird immer ein Schlüsselpaar aus einem privaten Schlüssel und einem öffentlichen
Schlüssel verwendet. Der Rückweg ist mathematisch unmöglich. Vom öffentlichen Schlüssel kann man nicht auf den
privaten Schlüssel zurückrechnen.
Der private Schlüssel wird geheim verwahrt. Am sichersten kann er in einem CmDongle verwahrt werden. Der öffentliche
Schlüssel ist, wie der Name bereits sagt, öffentlich für jeden verfügbar.
Und wozu sind jetzt die beiden Schlüssel? Mit dem privaten Schlüssel wird eine Signatur erzeugt, was nur die Person
kann, welche diesen Schlüssel besitzt. Mit dem öffentlichen Schlüssel kann jeder die Gültigkeit der Signatur überprüfen.
Aber niemand kann damit eine gültige Signatur erzeugen.
Im Gegensatz dazu hat man bei einer Hash-Funktion mit oder ohne Salt den gleichen Schlüssel zum Erzeugen des
Hashwertes wie beim Überprüfen. Somit kann jeder, der diesen Hash überprüfen kann, auch einen gültigen Hash erzeugen.
Eine Signatur sollte daher niemals durch einen Hash ersetzt werden. Die Sicherheit ist nur vorgegaukelt.
digital signiert. Doch wie funktioniert die
Überprüfung? Auf der einen Seite überprüft die
vorherige Stufe, ob die nächste Stufe gestartet
werden kann. Also der Pre-Bootloader der
Bootloarder. Der Bootloader das Betriebssystem.
Und so weiter bis zur Application, wie in der
Grafik dargestelt. Da es für die Sicherheit der
ganzen Kette essenziell ist, dass der öffentliche
Schlüssel bei den ersten Prüfung nicht
ausgetauscht wurde, das heißt der Schlüssel
muss authentisch sein. Die erste Stufe sollte
nicht änderbar sein. Hier spricht man von einem
sicheren Anker. Die höchste Sicherheit bietet hier
ein Pre-Bootloader, der als System-On-Chip (SOC)
fest eingebrannt ist. Ein zweiteiliger Bootloader,
bei dem der erste Teil nicht aktualisiert werden
kann, ist eine kostengünstige Alternative. Diese
bietet zumindest ausreichenden Schutz gegen
Remote-Angriffe.
Bin ich in einer sicheren
Umgebung?
Es ist eine zusätzliche Anforderung, dass die
nächste Stufe überprüft, ob die vorherige
Stufe korrekt durchgelaufen ist. CodeMeter
bietet beides: die Überprüfung vorwärts als
auch rückwärts. Die Rückwärtsüberprüfung
wird mittels einer State-Engine im CmDongle
und einer mit dieser State-Engine verknüpften
Verschlüsselung realisiert. Nur wenn eine Stufe
ordnungsgemäß ausgeführt wurde und damit
der richtige Zustand im CmDongle gesetzt ist,
kann die nächste Stufe entschlüsselt werden.
Dies verhindert, dass Teile der Software auf
einer Simulation des Gerätes im Labor eines
Angreifers laufen. Damit ist eine Analyse der
Software in dieser Umgebung unmöglich. Dies
verhindert Spionage, aber auch das Suche ??X?????X??[[?[?[\[Y[?Y\?[???Z\??Z]?[H??X??Z[?\??0?\?[?[??Y??\?[???????Z]?\???X??[H??]?\??\??\??ZK????^?]??X?\?H???[?[?Y?]0????]?\???Y?]\??[??\???0???[???[?Z[??\?[?X?\??[?Z[?ZH\??X?\?[??Z[?\??]Y\?[???YB?\????\?[?\?Z?[\??H]X??[??X?[Y[?XX?[??X?\?T\?X?[P]X????Z^?B?[?p???X?????SY]\??Y]]Z[?H0???[??YH?\?Z]?YY?[B??\??Z[??ZY?[??ZH\??X?[H??\?[?[???Y?[??Z]Y?0??\????[???\?X?Y?[????Y?[?????[??Z[??[?[\?Y?[?Y\?[?[?[??[???X?[?[?[??[?[???[[??\\????\?[????SY]\???0???Y?[??[?Y?K?X[?\[][?[??X??Y?K?BBBBBB????