Kategorien: Software-Schutz Software-Lizenzierung
CodeMeter und X.509-Zertifikate
Wenn man sich mit Sicherheit und Authentifizierung beschäftigt, stößt man zwangsläufig früher oder später auf das Thema Zertifikate. Für viele sind Zertifikate schwer zu greifen, denn meist ist es kompliziert und aufwändig, sie in der Praxis einzusetzen und zu verwalten.
Aus diesem Grund möchten wir etwas Licht ins Dunkel bringen und zunächst einmal Zertifikate erläutern und anschließend einen Weg aufzeigen, wie CodeMeter genutzt werden kann, um das Management und die Prozesse rund um Zertifikate zu vereinfachen und zu unterstützen.
X.509-Zertifikate und Public-Key-Infrastrukturen (PKI)
Mittels Zertifikaten werden Identitäten an öffentliche Schlüssel gebunden und somit auch an den zugehörigen privaten Schlüssel. Zertifikate werden ausschließlich mit Public-Key-Verfahren wie RSA oder ECC verwendet. Bei diesen Verfahren besteht der Schlüssel aus einem privaten und einem dazu passenden öffentlichen Schlüssel; daher spricht man immer von einem Schlüsselpaar.
Der Begriff Identität umfasst hier nicht nur die Identität von Personen, sondern auch die von Maschinen, Geräten und Rollen. Damit ein Zertifikat Identitäten mit Schlüsselpaaren verknüpfen kann, enthält es Informationen über die Identität, wie zum Beispiel den Gerätenamen oder die IP-Adresse, und über den öffentlichen Schlüssel.
Nun hat man zwar diese Verknüpfung hergestellt, aber noch keinen Nachweis darüber, dass die angegebene Identität tatsächlich zu dem Besitzer des angegebenen Schlüsselpaares gehört. Aus diesem Grund benötigt man eine dritte Stelle, welche überprüft und bestätigt, dass die angegebene Identität tatsächlich zu dem verwendeten Schlüssel gehört. Dafür werden die Public-Key-Infrastrukturen benötigt, die aus einem oder mehreren hierarchisch gegliederten Vertrauensankern (Certificate Authority, kurz CA) bestehen. Um also ein Zertifikat zu erhalten, muss ein Zertifikatsantrag (Certificate Signing Request, kurz CSR) an eine CA gestellt werden. Dieser Antrag ist mit dem zum Zertifikat passenden privaten Schlüssel signiert, sodass die CA prüfen kann, ob der Antragssteller im Besitz des privaten Schlüssels ist. Zusätzlich muss die CA prüfen, ob die angegebene Identität im Zertifikat mit der des Antragsstellers übereinstimmt. Bei Personen geschieht dies üblicherweise durch Vorlage eines Ausweises oder telefonische Überprüfung. Bei Zertifikaten für Geräte und Maschinen kann der Antrag entweder über den „Maschinenverant-wortlichen“, also wieder eine Person, deren Identität geprüft werden kann, gestellt werden oder vorzugsweise anhand eindeutiger Gerätemerkmale, die automatisiert von der CA geprüft werden können. Fallen die Prüfungen positiv aus, signiert die CA das Zertifikat und beglaubigt damit die Verknüpfung von Identität und Schlüsselpaar. Beim X.509-Zertifikatsystem liegt also alles Vertrauen in den CAs, da einem Zertifikat nur vertraut werden kann, wenn der ausstellenden CA vertraut wird. Eine CA stellt damit einen Single-Point-of-Failure dar.
Im Folgenden wird anhand von OPC UA erläutert, wie Zertifikate zur Authentifizierung genutzt werden können.
Sichere Kommunikation mit OPC UA und CodeMeter
Zur Kommunikation zwischen Maschinen und Geräten wird in Industrieanlagen vermehrt OPC UA eingesetzt. Da diese Kommunikation zumeist auch sensible Daten enthält, die nicht manipuliert und abgegriffen werden sollen, muss diese abgesichert werden. OPC UA sieht hierfür X.509-Zertifikate vor, mit denen sowohl der Client als auch der Server in der OPC-UA-Kommunikation authentifiziert werden sollen. Besitzt jedes Gerät ein Zertifikat und vertrauen die Geräte untereinander den Zertifikaten, kann über die im OPC UA Client/Server integrierte TLS-Implementierung eine sichere Kommunikation aufgebaut werden.
Die Herausforderung besteht allerdings darin, jedes Gerät mit einem OPC UA Server oder Client mit Zertifikaten und Schlüsseln auszustatten, sprich eine PKI aufzubauen und diese in OPC-UA-Prozesse zu integrieren. Hinzu kommt, dass die Schlüssel derzeit ohne besonderen Schutz im Dateisystem des Gerätes liegen. Letzteres lässt sich mithilfe von CodeMeter beheben. Die CmDongles verfügen über ein sicheres Speicherelement, welches dafür geeignet ist, Schlüssel zu speichern. Damit die Schlüssel, die in einem CmDongle abgelegt sind, von OPC UA genutzt werden können, wird die CodeMeter-Technologie in den OPC UA Client und Server integriert, was die nachstehende Abbildung zeigt.
Die Integration erfolgt über den CodeMeter Certificate Vault, welcher Schnittstellen zu gängigen TLS-Implementierung wie zum Beispiel OpenSSL anbietet. Der CodeMeter Certificate Vault nutzt wiederum die CodeMeter API, um auf die Schlüssel im CmDongle zuzugreifen. Möchte beispielsweise, wie in der Abbildung gezeigt, Maschine B mit Maschine A kommunizieren, greift der OPC UA Client bzw. Server zunächst auf seine TLS-Implementierung zurück. In der Abbildung ist dies OpenSSL. OpenSSL ist in diesem Beispiel wiederum so in den OPC UA Client integriert, dass es nicht auf die OpenSSL-eigene Softwareimplementierung der kryptographischen Algorithmen zugreift, sondern über CodeMeter Certificate Vault auf die Hardwareimplementierung von zum Beispiel RSA im CmDongle. Auf der Gegenseite läuft der gleiche Vorgang in Maschine A ab, damit diese sich gegenüber Maschine B authentifizieren kann.
Somit wäre die Frage, wie man Schlüssel sicher mit OPC UA verwenden kann, beantwortet. Bleibt noch zu klären, wie die Schlüssel auf die Geräte und woher die dazu passenden Zertifikate kommen.
Schlüssel- und Zertifikatsverteilung mit CodeMeter License Central
Aus Sicht der Softwarehersteller und Produktionsanlagenbetreiber besteht die Anforderung, die provisionierten Schlüssel und Zertifikate zentral zu verwalten und auszustellen. Gleichzeitig sollen dabei bereits etablierte Prozesse verwendet werden.
Mit der CodeMeter License Central und der Erweiterung CodeMeter Certificate Vault Extension bietet Wibu-Systems die Möglichkeit, Lizenzverwaltung sowie Schlüssel- und Zertifikatsveteilung an einer zentralen Stelle zu vereinen.
Zur Lizenzverwaltung kann die CodeMeter
License Central über Schnittstellen problemlos an bereits vorhandene CRM-, ERP- oder E-Commerce-Lösungen angebunden werden, womit dann eine Unterstützung der etablierten Prozesse erreicht wird. Für die Aktivierung von Lizenzen stehen einerseits browserbasierte Lösungen und andererseits Schnittstellen für die Integration in die eigene Software zur Verfügung.
Für das Ausstellen, Verwalten und Verteilen von Schlüsseln bzw. Zertifikaten wird mit der CodeMeter Certificate Vault Extension eine Erweiterung der CodeMeter License Central zur Verfügung gestellt, mit der diese Aufgaben ausgeführt werden können. Es besteht hierbei die Möglichkeit, die Zertifikate entweder bei der Auftragserstellung oder bei der Aktivierung der Lizenzen zu erzeugen. Die Extension bietet hierzu entsprechende Schnittstellen, die von externen Prozessen mit den jeweils zu verwendenden Daten für das zu erstellende Zertifikat aufgerufen werden können.
Die folgende Abbildung zeigt vereinfacht, wie über die CodeMeter License Central mit der Certificate Vault Extension Schlüssel und Zertifikate verteilt werden können. Zunächst kann in der CodeMeter License Central konfiguriert werden, welche Maschinen berechtigt sind, ein Zertifikat bzw. einen Schlüssel zu erhalten, das heißt, es wird ein Auftrag in der CodeMeter License Central angelegt.
Um ein Zertifikat zu erhalten, sendet eine Maschine eine WibuCmRaC-Datei und alle zusätzlichen Informationen, die für die Erstellung des Zertifikats benötigt werden, an die CodeMeter Certificate Vault Extension. Wenn kein extern erzeugter RSA-Schlüssel verwendet werden soll, kann von der Extension ein Schlüsselpaar erzeugt werden.
Für die eigentliche Generierung des Zertifikats gibt es einen definierten Übergang in eine kundenspezifische Implementierung. Damit kann der Softwarehersteller oder Produktionsanlagenbetreiber entscheiden, auf welchem Weg die Zertifikate erstellt werden. Hier stehen alle Möglichkeiten vom Selbstsignieren bis zu einer externen Zertifizierungsstelle offen, was in Schritt 3 der Abbildung beispielhaft dargestellt ist.
Wurde das Zertifikat erstellt, wird es zusam-men mit dem privaten Schlüssel von der Extension mit Hilfe der License Central in eine WibuCmRaU-Datei verpackt und zurück an die Maschine übermittelt, wie Schritt 4 in der Abbildung zeigt. Zugleich wird der Schlüssel in der Datenbank der CodeMeter License Central gespeichert, wodurch es immer ein Backup gibt. Nachdem die Update-Datei auf der Maschine eingespielt wurde, kann der Schlüssel über den CodeMeter Certificate Vault genutzt werden, um eine sichere Kommunikation aufzubauen.
KEYnote 39 – Frühjahrsausgabe 2020