IEC 104 - verschlüsselte Kommunikation
Um mit dem IEC 104 Treiber eine sichere Kommunikation zu ermöglichen, kann das Kommunikationsprotokoll Transport Layer Security (TLS) nach IEC Standard 608070-5-7 Kapitel 9 aktiviert werden.
Bei Verwendung von TLS wird zur Verschlüsselung das Public-Key-Verfahren oder die asymmetrische Verschlüsselung herangezogen. Jeder Teilnehmer im System (IEC Client oder Server) benötigt ein Zertifikat und einen Private Key.
Das in IEC 60870-5-104 unterstützte Protokoll mit TLS verwendet X.509-Zertifikate.
Konfiguration
Betriebsmodus
Server-Modus
Wird der Treiber als Server betrieben, muss mit dem Config-Eintrag tlsServerPort ein sicherer Server-Port definiert werden. Per Default ist dieser Port 0, der Server-Modus ist also deaktiviert und es kann sich kein Client verbinden.
Mit dem Config-Eintrag tcpServerPort kann der Server-Port für unsichere Verbindungen definiert werden. Durch Setzen von tlsServerPort und tcpServerPort ungleich 0 sind beide Verbindungsarten gleichzeitig möglich. Der Eintrag tcpServerPort = 0 (Default) bedeutet dass keine unsicheren Verbindungen möglich sind.
Client-Modus
Für jede Verbindung die der Treiber als Client zu einem Server aufbaut, existiert ein interner Datenpunkt _IecConnection. Über das Datenpunktelement _IecConnection.Config.Flags wird definiert ob die Verbindung verschlüsselt werden muss.
Bei aktivierter Verschlüsselung baut der Client eine TLS-Verbindung auf und verschlüsselt die IEC-Kommunikation entsprechend.
Cipher Suites
Pro Treiber können mit dem Config-Eintrag iecTlsCertCipherSuite die Cipher Suites definiert werden die zur Verfügung stehen sollen. Beim Verbindungsaufbau werden die verfügbaren Cipher Suites von Server und Client miteinander abgeglichen. Der Server wählt die erste Cipher Suite die sowohl in seiner als auch in der Liste des Clients enthalten ist. Stimmt bei Client und Server keine Cipher Suite überein, kann keine Verbindung hergestellt werden.
Zertifikate
Pro Treiber muss ein Zertifikat vorhanden sein, welches für die Verbindungen zu den verschiedenen Servern verwendet wird. Für die Zertifikate und Private Key Files wird das PEM-Format verwendet.
Der IEC Treiber unterstützt nur filebasiertes Zertifikatshandling. Der Windows Certificate Store wird derzeit nicht unterstützt.
Der IEC-Treiber wird mit Default-Zertifikaten für Client und Server geliefert. Mit diesen Zertifikaten ist die Kommunikation zwischen einem IEC-Treiber im Client-Modus und einem IEC-Treiber im Server-Modus möglich. Die Zertifikate werden per Default im Verzeichnis <project>/data/iec104/PKI abgelegt. Das Verzeichnis für die Zertifikate kann mit dem Config-Eintrag iecTlsCertStore angepasst werden. In dem angegebenen Verzeichnis muss sich ein Ordner PKI mit folgenden Unterordnern befinden:
-
/certs - enthält die Zertifikate
-
/private - enthälte Private-Keys
-
/crl - enthält die Revocation List zur vertrauten CA (optional)
Zertifikat und Private Key müssen im oben definierten Verzeichnis im PKI-Verzeichnis abgelegt werden..
Mit WinCC OA können Applikationszertifikate erstellt werden (siehe WinCC OA - Übersicht der Zertifikate und SSL Zertifikate erstellen), die dem IEC-Treiber zugewiesen werden können.
Als Zertifikat für den IEC-Treiber (Config-Eintrag iecTlsCert) muss immer das Applikationszertifikat verwendet werden. Mit einem Rootzertifikat ist keine Kommunikation möglich. Ein Applikationszertifikat muss immer ohne Passwort generiert werden, da eine Passworteingabe zur Treiberlaufzeit nicht möglich ist.
Zertifikat vertrauen
Der IEC-Treiber kann auch gültige Zertifikate, die von anderen Tools erstellt wurden, verwenden. In diesem Fall muss das entsprechende Zertifikat in die Liste der vertrauenswürdigen Zertifikate ("trust list") des IEC-Treibers aufgenommen werden. Mit dem Config-Eintrag iecTlsCertCA kann die Datei definiert werden, die alle vertrauenswürdigen Zertifikate enthält.
Redundanz
Das Zertifikatsverzeichnis muss auf beiden redundanten Hosts entsprechend vorbereitet werden, da keine automatische Synchronisierung stattfindet.
Verschlüsselte und nicht verschlüsselte Verbindungen können innerhalb einer redundanten IEC 104 Verbindungsgruppe nicht vermischt werden.