Bildergalerie
Das Wind River Embedded Development Kit enthält drei CodeMeter-Komponenten von Wibu-Systems.
So werden die CmDongles, der Entwicklungsrechner und das Target-Board verbunden.
Alle Einstellungen des Wibu-Systems AxProtector erfolgen über ein Plug-In in der Wind River Workbench.
Prüfung des öffentlichen Schlüssels der Codesignatur über eine Zertifikatskette.
Auswahl-Optionen beim Start des Wind River Embedded Development Kits.
Ablaufdiagramm beim Start des Systems: VxWorks Image (VIP), Downloadable Kernel Moduls (DKM) und Real-Time-Processes (RTP).

Dabei verhindern sie Manipulationen ihres Codes, booten sicher das VxWorks-Betriebssystem und führen ihre Anwendungen sicher aus. Flexible Abrechnungsmodelle wie Pay-per-Use oder Feature-on-Demand sind weitere Optionen, die Herstellern neue Geschäftsmodelle für ihre Geräte und Maschinen ermöglichen.

Die Softwareschutzlösung CodeMeter von Wibu-Systems wurde speziell für VxWorks erweitert. Wind River-Kunden nutzen das Verschlüsselungstool AxProtector für VxWorks. Dabei wurde CodeMeter so in die Eclipse-basierte Wind River-Workbench integriert, dass der Anwender ohne zusätzliche externe Tools sofort seinen Code schützen kann.

  • Die Schritt-für-Schritt-Anleitung und vorbereitete Beispiele mit passenden CmDongles zeigen dem Entwickler die unterschiedlichen Einsatzmöglichkeiten der folgenden Funktionen:
  • Softwareschutz gegen Kopieren der Software auf andere Systeme durch Verschlüsselung des Programmcodes und sichere Speicherung der Schlüssel.
  • Know-how-Schutz gegen Reverse-Engineering und Verstehen der implementierten vorteilhaften Algorithmen durch Codeverschlüsselung.

Integritätsschutz gegen unberechtigtes Verändern des Programmcodes, zum Beispiel durch Cyberangriffe mit Codesignaturen und ausgefeilter Prüfung. Feature-on-Demand als Business Enabler für neue Geschäftsmodelle.

Zum Lieferumfang des Embedded Development Kits gehören ein Emerson NITX-315-Board und die folgenden CmDongles: CmStick/M für USB mit 8 GB Speicher, ein kleiner CmStick/C und eine winzige CmCard/µSD. Die komplette VxWorks-Entwicklungsumgebung wird direkt vom Speicher des CmStick/M (LiveUSB Drive) vom Host-Computer gestartet. Die CmCard/µSD wird in die MikroSD-Schnittstelle des Target-Boards gesteckt und enthält das VxWorks-Boot-Image sowie die dazu notwendigen CodeMeter-Lizenzen. Der CmStick/C wird optional an der USB-Schnittstelle des Target-Boards angeschlossen und enthält eine Lizenz, um weitere Features der Software, die bereits im Image enthalten ist, nutzen zu können.

Der AxProtector als Eclipse-Plug-In schützt verschiedene Projekte wie VxWorks Image (VIP), Downloadable Kernel Moduls (DKM) und Real-Time-Processes (RTP) und führt mit passendem CmDongle sowohl die Ver- und Entschlüsselung als auch die Lizenzierung durch. Alle Einstellungen des Schutzes erfolgen bequem innerhalb der Workbench: Schutz gegen Reverse-Engineering und Lizenzmanagement und/oder Schutz gegen Verändern durch Codesignaturen, Parameter für das Lizenzmanagement und die Codeverschlüsselung sowie Schlüsselquelle für den privaten Schlüssel zur Codesignatur.

Um die Sicherheits- und Lizenzmanagementfunktionen nutzen zu können, wird der Standard-VxWorks-Loader durch den CodeMeter-VxWorks-Loader ersetzt. Dies stellt sicher, dass nur korrekt signierte Projekte auf dem Zielsystem ausgeführt und entschlüsselt werden. Nicht passend signierter Programmcode wird nicht ausgeführt.

Zusätzlich zu diesen ohne Quellcodeänderung nutzbaren Funktionen können aus der Anwendung heraus auch Funktionen des CodeMeter Compact Runtime aufgerufen werden, was sehr hohe Flexibilität bietet. Dabei kann auf Lizenzen zugegriffen werden, genauso wie auf in der Lizenz gespeicherte Daten, und es können kryptografische Funktionen genutzt werden.

Signaturen und Zertifikate

Sobald das verschlüsselte Projekt auf das Zielsystem übertragen wurde, prüft CodeMeter die Richtigkeit des Projekts vor Manipulationen und zwar über asymmetrische Verschlüsselung, Signaturen und Zertifikate.

Ein Schlüsselpaar bestehend aus Public-Key und Private-Key wird entweder über ein separates Tool erzeugt oder im CmDongle der Entwicklungsumgebung erzeugt. In diesem wird der Private-Key sicher als „Product Item Option“ gespeichert, der später zum Signieren benutzt wird.

Der AxProtector nutzt für Signaturen asymmetrische Kryptografie und elliptische Kurven (ECDSA Elliptic Curve Digital Signature Algorithm) in drei Schritten:

  • Der AxProtector signiert eine Checksumme, genau genommen einen Hash-Wert über das Projekt oder den Programmcode, mit dem privaten Schlüssel. Der signierte Hash-Wert wird Signatur genannt und entspricht einem digitalen Fingerabdruck für dieses Projekt.
  • Gleichfalls errechnet der modifizierte VxWorks-Loader den Hash-Wert, um diesen mit der digitalen Signatur abzugleichen. Dabei wird der Public-Key benutzt, um den digitalen Fingerabdruck durch den Vergleich beider Hash-Werte zu prüfen.
  • Nach erfolgreicher Prüfung gilt das VxWorks-Projekt als unverändert, das heißt es wurde nicht verändert, seit es mit dem richtigen Private-Key signiert wurde.

Mit Hilfe von Zertifikaten wird sichergestellt, dass bei der Prüfung der richtige Public-Key verwendet wird. Zertifikate sind digitale Äquivalente zu Ausweisdokumenten im realen Leben. Sie ermöglichen die Prüfung, ob der gespeicherte Public-Key wirklich zum passenden Private-Key gehört.

Zertifikatskette

Zur Prüfung der Authentizität des Betriebssystem-Images oder der Anwendungen nutzt Wibu-Systems eine Kette an Zertifikaten, auch „Chain of Trust“ genannt, die die Richtigkeit des öffentlichen Schlüssels garantieren. Dieses Verfahren beruht auf dem Root-Zertifikat als „Anchor of Trust“ in einer Reihe verschiedener Zertifikatsabfragen, wobei das Vertrauen an die darüber liegende Schicht vererbt wird. Der Schlüsselwert liegt im jeweiligen Public-Key. Im Detail sieht eine Zertifikatskette wie folgt aus:

  • Die Einstellungen des AxProtectors erlauben dem Entwickler, über ein Plug-In ein Integritätszertifikat zu definieren, bestehend aus einem Hash-Wert, der Signatur und des Public-Keys.
  • Sobald das VxWorks-Projekt geladen wird, berechnet der VxWorks-Loader binär einen Hash-Wert und vergleicht diesen mit dem Hash-Wert, der vom AxProtector als Integritätszertifikat erzeugt wurde. Stimmen diese Werte nicht überein, wird das VxWorks-Projekt nicht geladen.
  • Sind beide Hash-Werte gleich, dann beginnt die Signatur-Prüfung über die Zertifikate. Bei jeder Ebene benutzt die Signatur-Prüfung den Public-Key der darunter liegenden Ebene, bis zum Root-Zertifikat.

Dieses auf den ersten Blick sehr komplex aussehende Verfahren ist so integriert, dass es für den Entwickler einfach zu handhaben ist. Es bietet den großen Vorteil, dass das wichtigste Geheimnis, nämlich der private Schlüssel des Root-Zertifikats, nur einmal zur Signatur der untergeordneten Zertifikate benötigt wird und dann im Safe verschwinden kann. Selbst wenn ein untergeordnetes Zertifikat aus welchem Grund auch immer einmal kompromittiert sein sollte, kann dieses über einen „Revocation-Mechanismus“, der jetzt hier nicht weiter ausgeführt werden soll, zurückgerufen werden. Dadurch bleibt die Sicherheit und Integrität des Gesamtsystems erhalten und die ausgerollten Systeme müssen auch dann nicht getauscht werden.

Erstellen, Verwalten und Ausrollen der Lizenzen

Neben den Sicherheitsfunktionen ist es auch wichtig, die Erstellung und Verteilung der Lizenzen und Schlüssel in die Vertriebs- und Herstellungsprozesse zu integrieren. Die CodeMeter License Central ist die Lösung dafür. Sie wird über einen Browser oder eine Webschnittstelle bedient und lässt sich leicht in bestehende ERP-Systeme wie SAP oder MS Dynamics, CRM-Systeme wie Sales Force oder Online-Shops integrieren. Die License Central kann beim Hersteller betrieben werden oder als Wibu-Cloud-Lösung genutzt werden.

Mit dem Wind River Embedded Development Kit sieht der Entwickler, wie verschiedene Funktionen in einer Anwendung so unterschiedlich geschützt werden, dass zu deren Ausführung später eine individuelle Lizenz erforderlich ist. Dies kann sinnvoll sein, um Gerätefunktionen separat zu verkaufen, auch After-Sales, oder um bestimmten Personen, zum Beispiel Servicetechnikern, die Nutzung spezieller Funktionen zu ermöglichen.

Sichere Anwendungen effizient entwickeln

Das Wind River Embedded Development Kit demonstriert, wie VxWorks 6.9.2, das Wibu-Systems CodeMeter Lizenzierungs- und Schutzsystem und das Emerson NITX-315 Board zusammenarbeiten. Das Evaluieren mit der Schritt-für-Schritt-Anleitung vermittelt einen Eindruck, wie sichere Anwendungen effizient entwickelt werden können. Dabei wird gezeigt, wie Verschlüsseln und Signieren eines VxWorks-Images und einer Anwendung im Kernel- und User-Mode erfolgt und der sichere Loader diese lädt und ausführt. Es wird gezeigt, wie einerseits die Signaturprüfung erfolgt, um Manipulation, zum Beispiel Cyberangriffe, zu erkennen und die Ausführung zu verhindern, und andererseits wie Lizenzmanagement funktioniert für verschiedene Funktionen von VxWorks-Anwendungen.