KEYnote 26 Deutsch - Ausgabe Herbst 2013 | Page 7

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????