Sicherheitsmechanismen im Überblick
Sicherheit mit OPC UA
OPC UA ist einer der wichtigsten Standards für den industriellen Datenaustausch und kommt weltweit zum Einsatz. Die OPC Foundation hat OPC UA mit einem Fokus auf Sicherheit entwickelt und definiert zahlreiche Mechanismen für die sichere Kommunikation zwischen OPC UA Servern und Clients.
OPC UA ist ein Kommunikationsstandard, der den plattform- und herstellerunabhängigen Datenaustausch zwischen industriellen Geräten und Systemen ermöglicht. Er wurde 2008 von der OPC Foundation vorgestellt und hat sich heute weltweit in der industriellen Automatisierung und in verschiedensten Branchen etabliert.
In der Praxis wird OPC UA vor allem genutzt, um Feldgeräte wie Sensoren und speicherprogrammierbare Steuerungen mit OT-Systemen wie MES und IT-Systemen wie ERP zu vernetzen – einheitlich und ohne Abhängigkeit von proprietären Schnittstellen. Einerseits werden so Daten zu Steuerungszwecken an Automatisierungsgeräte übermittelt. Gleichzeitig lesen übergeordnete Systeme aber auch Sensor- und Maschinendaten aus, die visualisiert, überwacht oder analysiert werden.
Durch die Vielzahl der beteiligten Systeme und die zentrale Rolle der OPC UA-Kommunikation in der Steuerung kritischer Produktionsprozesse muss der Standard hohe Sicherheitsanforderungen erfüllen.
OPC UA gilt als Secure-by-Design: Bereits in der Entwicklung hat die OPC Foundation die Kompatibilität mit gängigen Sicherheitsstandards in den Mittelpunkt gestellt und auf verschiedenen Ebenen eigene Mechanismen definiert. Diese decken mögliche Bedrohungsszenarien ab und schützen u.a. vor unbefugtem Zugriff, Datendiebstahl und -manipulation sowie verschiedenen Arten von Cyberangriffen.
Die konkrete Unterstützung und Implementierung der einzelnen Sicherheitsmechanismen ist den Herstellern von OPC UA Server- und OPC UA Client-Anwendungen überlassen.
Sicherheitsmechanismen
Bestandteile des OPC UA-Sicherheitskonzepts
Grundlagen
OPC UA basiert auf einem Client-Server-Modell. Client-Anwendungen rufen Dienste (engl.: Services) eines OPC UA Servers auf, um Informationen über den Server abzurufen, Daten zu lesen, Daten zu schreiben oder Methoden aufzurufen. Auf diese Weise stellt ein OPC UA Server z.B. Informationen aus einer speicherprogrammierbaren Steuerung für ein ERP-System bereit, welches einen OPC UA Client integriert.
Viele moderne Steuerungen und andere Industriegeräte integrieren mittlerweile eigene OPC UA Server. Gleichzeitig bieten Softwaresysteme für die Industrie oft OPC UA Client-Funktionalität.
Das Transportprotokoll und die Datenkodierung bei der OPC UA-Kommunikation werden durch das verwendete Profil bestimmt, welches auch Einfluss auf bestimmte Sicherheitsmechanismen hat. Damit OPC UA Server und Client miteinander kommunizieren können, müssen sie mindestens ein gemeinsames Profil unterstützen. Eine Implementierung mehrerer Profile ist möglich.
Das am häufigsten verwendete Profil nutzt TCP als Transportprotokoll, während Daten mit dem OPC UA-Binärprotokoll (OPC UA Binary) kodiert werden. Als Sicherheitsprotokoll wird UA-SecureConversation (UA-SC) genutzt. UA-SC wendet Sicherheit auf OPC UA-Nachrichten an und regelt den Aufbau eines SecureChannel für den Nachrichtenaustausch.
Neben TCP-Verbindungen unterstützt OPC UA auch HTTPS für eine bessere Kompatibilität mit Webanwendungen. Daten können dabei mit JSON, XML oder UA-Binary kodiert werden. Als Sicherheitsprotokoll werden die TLS Transport Security Profiles verwendet.
Ablauf der Kommunikation – Anwendungs-Authentifizierung und Datenverschlüsselung
Eine OPC UA-Verbindung über TCP besteht aus drei aufeinander aufbauenden Schichten.
1. TCP-Verbindung
2. SecureChannel
3. Session
Zunächst baut ein OPC UA Client eine TCP-Verbindung zu dem Hostnamen und Port des OPC UA Servers auf.
Anschließend sendet der Client eine OpenSecureChannel-Anfrage an den Server. In diesem Schritt übermitteln beide Seiten ihre X.509-Zertifikate, die zur Authentifizierung und zur Validierung der Signaturen genutzt werden. In einem asmmetrischen Verschlüsselungsprozess ermitteln Client und Server einen gemeinsamen Sitzungsschlüssel. Dieser wird dann genutzt, um die darauffolgenden Nachrichten zu verschlüsseln (symmetrische Verschlüsselung).
OPC UA bestimmt drei Sicherheitsmodi für Nachrichten (auch als Message Security bezeichnet): „Sign & Encrypt“, „Sign“ und „None“. Wenn als Sicherheitsmodus „None“ verwendet wird, findet keine Verschlüsselung statt. Dies wird jedoch nur für Testsysteme und nicht für den Produktivbetrieb empfohlen. Bei „Sign“ werden Nachrichten signiert, bei „Sign & Encrypt“ zusätzlich verschlüsselt.
Wenn ein Secure Channel besteht, kann der Client über die CreateSession- und ActivateSession-Services eine Session für den Datenaustausch erzeugen und aktivieren, die auf dem SecureChannel und dessen Nachrichtenverschlüsselung aufbaut.
Hier findet auch die Authentifizierung des Nutzers statt (siehe nächster Abschnitt). Authentifizierungsdaten werden über den Secure Channel verschlüsselt verschickt.
Benutzerauthentifizierung und Rollenbasierte Zugriffskontrolle
OPC UA bietet verschiedene Möglichkeiten zur Authentifizierung von Benutzern. Hierbei handelt es sich um die tatsächlichen Benutzer der Client-Anwendung, die Authentifizierung der Anwendung selbst erfolgt bereits in einem früheren Schritt per Zertifikat.
Bei der Aktivierung einer Session sendet der OPC UA Client einen Token mit den Authentifizierungsdaten eines Benutzers an den OPC UA Server.
Dabei kann es sich um Benutzername und Passwort oder ein X.509-Zertifikat handeln, welches anschließend vom Server validiert wird.
Eine weitere Möglichkeit ist der anonyme Login, der keine zusätzliche Sicherheit bietet und wiederum nicht für den Produktivbetrieb empfohlen wird.
Ein OPC UA Server definiert verschiedene Benutzerrollen mit dazugehörigen Rechten. Bei der Authentifizierung prüft der Server, welche Rolle ein Benutzer hat und weist die entsprechenden Rechte der Session zu.
Jede Node eines OPC UA Servers kann eigene Berechtigungen wie Lesen, Schreiben und Methodenaufrufe für jede Benutzerrolle definieren. Damit ermöglicht OPC UA eine genaue Zugriffskontrolle bis hin zur Datenpunktebene.
Unter dem Blickwinkel der Sicherheit ist es empfehlenswert, Zugriffsrechte auf das Nötigste zu beschränken.
Unterstützung für Audit-Logging
OPC UA unterstützt die Protokollierung von Aktivitäten durch OPC UA Server.
Die Logeinträge geben Aufschluss darüber, welche Benutzer zu welchem Zeitpunkt bestimmte Aktionen durchgeführt haben.
OPC UA definiert eine Vielzahl an Audit-Events, die protokolliert werden können, darunter z.B. hergestellte Verbindungen, Sicherheitsereignisse wie ungültige Zertifikate oder vorgenommene Konfigurationen. Jedes Audit-Event enthält standardisierte Attribute wie Zeitstempel und Informationen zur Lokalisierung des Events (ClientUser- und Server-ID, betroffene Node).
Die konkrete Umsetzung des Audit-Logging ist den Herstellern und Anwendern von OPC UA-Applikationen überlassen. Die Audit-Einträge können z.B. in Logdateien geschrieben werden. Alternativ kann ein OPC UA Server Audit-Events über den OPC UA Events-Mechanismus veröffentlichen, sodass beliebige OPC UA Clients diese abonnieren und weiterverarbeiten können.
Zertifikate und OPC UA
Wie in den vorherigen Abschnitten beschrieben, nutzt OPC UA Zertifikate zur Authentifizierung von Anwendungen und Benutzern.
OPC UA unterstützt Zertifikate nach dem .X509-Standard. Die Zertifikate können entweder selbst signiert werden oder durch eine vertrauenswürdige Certificate Authority.
Beim ersten Austausch von Zertifikaten legt ein Benutzer in der OPC UA-Anwendung fest, dass dem Zertifikat der anderen Anwendung vertraut werden soll. Ein Zertifikat liefert Informationen über Ersteller, Einsatzgebiet, Gültigkeitsdauer etc. In komplexeren Umgebungen, wo häufig mit Zertifikaten gearbeitet wird, kann die Nutzung einer unternehmenseigenen Certificate Authority zur Ausstellung vertrauenswürdiger Zertifikate empfehlenswert sein.
Neben der Authentifizierung von Applikationen und Benutzern werden Zertifikate auch eingesetzt, um Nachrichten zu signieren und zu verschlüsseln.
Zertifikate besitzen ein Schlüsselpaar aus öffentlichem und privaten Schlüssel, wobei der private Schlüssel niemals weitergegeben wird. Nachdem Client und Server ihre öffentlichen Schlüssel ausgetauscht haben, können sie mithilfe des privaten Schlüssels eine Signatur generieren, die mit dem öffentlichen Schlüssel validiert werden kann. Auf diese Weise kann verifiziert werden, dass die Nachricht von der richtigen Anwendung stammt.
Die Modifizierung der Nachricht beim Transport führt dazu, dass die Signatur verändert wird und nicht mehr validiert werden kann. Das Signieren schützt damit die Integrität von Nachrichten.
Nach dem gleichen Konzept funktioniert auch die asymmetrische Verschlüsselung: Der Sender verschlüsselt eine Nachricht mit dem öffentlichen Schlüssel des Empfängers, sodass diese nur mit dem dazugehörigen privaten Schlüssel des Empfängers (und damit von diesem selbst) entschlüsselt werden kann.
Wie zuvor beschrieben, nutzt OPC UA diese Art der Verschlüsselung, um auf sichere Weise einen gemeinsamen Sitzungsschlüssel zu bestimmen, der anschließend für die (weniger ressourcenintensive) symmetrische Verschlüsselung genutzt wird.
Beispiele
OPC UA-Sicherheitsvorgaben – Implementierung in der Praxis
In der Praxis stellt ein OPC UA Server Informationen über seine verfügbaren Sicherheitskonfigurationen – bestehend aus dem Message Security Mode (None, Sign, Sign & Encrypt) und den Security Policies (verwendete Kryptografie-Algorithmen) – über den GetEndpoints-Service nach außen bereit.
Damit eine Kommunikation aufgebaut werden kann, müssen sowohl Server als auch Client dieselbe Kombination aus Security Policy und Message Security Mode unterstützen.
Das unten abgebildete Beispiel zeigt die Konfiguration einer OPC UA-Verbindung mit unserer Cloud-Plattform manubes.
Benutzer können zwischen den oben genannten Sicherheitsmodi „Signieren“ (Sign), „Signieren & Verschlüsseln“ (Sign & Encrypt) oder „Keine“ (None) auswählen. Ein weiteres Dropdown-Feld ermöglicht die Auswahl des verwendeten Verschlüsselungsalgorithmus.
Zudem kann die Art der Benutzerauthentifizierung gewählt und die entsprechenden Informationen eingegeben werden. Zur Auswahl stehen der anonyme Login, die Anmeldung über Benutzername und Passwort oder die Authentifizierung per Zertifikat.
Testen Sie manubes –
Kostenlos und unverbindlich
Testen Sie sämtliche manubes-Features in Ihrer persönlichen Cloud-Umgebung.