Kategorien: Software-Schutz
CodeMeter Protection Suite – Ein Tool für alle Fälle
Wie schütze ich meine Software gegen Reverse Engineering? Wie kann ich sicherstellen, für die Nutzung meiner Software auch die mir zustehenden Lizenzgebühren zu bekommen? Sie entwickeln für Ihre Zielgruppe eine tolle Software – und wir legen die Grundlagen dafür, dass Sie damit auch langfristigen und finanziellen Erfolg haben können.
CodeMeter Protection Suite ist eine Sammlung von Werkzeugen, um Anwendungen und Bibliotheken automatisch zu verschlüsseln. Damit werden die ausführbaren Dateien gegen Reverse Engineering geschützt und Ihr geistiges Eigentum wird so vor neugierigen Blicken der Konkurrenz bewahrt.
Die einzelnen Werkzeuge sind jeweils auf die Zielplattformen und Besonderheiten der verschiedenen Formate zugeschnitten, sodass ein bestmöglicher Schutz bei geringem Aufwand für Sie als Softwarehersteller erzielt werden kann. Die ausführbaren Dateien werden dabei so modifiziert, dass zu Beginn zusätzlicher Code für die Entschlüsselung geladen wird. Das Entscheidende bei der Entschlüsselung sollte immer der Schlüssel sein – und nicht der Algorithmus. Daher verwendet Wibu-Systems hier standardisierte Algorithmen – die Ermittlung des passenden Schlüssels ist der wichtige Teil. Der Schlüssel wird aus mehreren Teilen zusammengesetzt, von denen die meisten aus der verwendeten Lizenz stammen. Der in der Lizenz vorhandene und für die Kombination aus Firm Code und Product Code reproduzierbar abgeleitete Schlüssel fließt ebenso in den schlussendlich verwendeten Schlüssel ein wie von der zu schützenden Datei ermittelte Hash-werte.
IP Protection
Eine Ausnahme hiervon bildet die Variante „IP Protection“. Es handelt sich hierbei um reinen Schutz gegen Reverse Engineering; eine Lizenz ist nicht nötig. Diese Schutzlösung bietet sich an für Testversionen, Demosoftware oder, in Kombination mit lizenzbasierter Verschlüsselung, für Freemium-Geschäftsmodelle. In der KEYnote 38 widmet sich ein eigener Artikel dieser speziellen Variante und den dafür sinnvollen Einsatzzwecken.
AxProtector und IxProtector
Native Windows-, Linux- und macOS-Anwendungen und -Bibliotheken können mit AxProtector ohne großen Aufwand geschützt werden. Der ausführbare Code wird dabei komplett verschlüsselt. Nach der anfänglichen Entschlüsselung über den aus Lizenzeintrag und eingebetteten Werten errechneten Schlüssel läuft die Anwendung dann mit der gleichen Geschwindigkeit wie das ungeschützte Programm. Zusätzlich gibt es bei allen AxProtector-Varianten standardmäßig eine regelmäßige Überprüfung der Lizenz auf Vorhandensein sowie Sicherheitsmechanismen zur Abwehr von Angriffen durch Debugger und Hacker-Werkzeuge.
Mit IxProtector können einzelne Funktionen zusätzlich verschlüsselt werden, sei es über denselben Lizenzeintrag oder einen weiteren. Diese Funktionen werden zur Laufzeit dynamisch entschlüsselt und ausgeführt. Dies kann automatisch erfolgen oder durch expliziten Aufruf über das Softwareschutz-API (WUPI) im Rahmen des Programmflusses. Ein Aufruf der verschlüsselten Funktion ohne vorherige Entschlüsselung führt unweigerlich zum Absturz. Besonders schützenswerter Code kann nach spezieller Vorbereitung verschlüsselt in den CmDongle verschoben und nur dort ausgeführt werden.
AxProtector .NET
In C# oder anderen .NET-Sprachen geschriebene Programme, sogenannte Assemblies, werden in eine Zwischensprache übersetzt und in dieser Form ausgeliefert. Diese Kompilate sind einfach lesbar und dekompilierbar. Um hier ein gutes Schutzniveau zu erreichen, wurde ein anderer Verschlüsselungsansatz gewählt: Der Inhalt der Methoden wird separat in Form verschlüsselter Daten abgelegt, während in der eigentlichen Methode nur noch ein Stub-Code verbleibt, der beim Aufruf automatisch die Entschlüsselung anstößt. Somit ist das geschützte Programm weiterhin ein gültiges .NET Assembly, aber der eigentliche Code ist verschlüsselt.
Diese Schutzmethode benötigt beim Aufruf jeder Methode eine Entschlüsselung, was prinzipiell zu Lasten der Performance geht. Daher gibt es verschiedene Möglichkeiten, einzelne Methoden oder ganze Klassen von der Verschlüsselung auszunehmen, um das richtige Verhältnis zwischen Schutz Ihres geistigen Eigentums und benötigter Performance zu finden. Entweder über Quellcode-Annotationen oder durch die AxProtector-Konfigurationsdatei können diese Anpassungen vorgenommen werden.
Auf diesem Weg können auch in .NET für einzelne Methoden oder Klassen unterschiedliche Lizenzen gefordert und somit ein modularer Schutz realisiert werden.
AxProtector .NET Standard
Die Vereinheitlichung der verschiedenen .NET-Implementierungen wird als .NET Standard vorangetrieben und sorgt für ein einheitliches API, das dann auch plattformübergreifend verfügbar ist. Ein auf Basis von .NET Standard geschriebenes Assembly kann ohne Neukompilierung in den verschiedenen Frameworks verwendet werden. Wibu-Systems unterstützt die automatische Verschlüsselung von .NET Standard Assemblies seit längerem und erweitert diese jeweils für die neuen .NET-Standard-Versionen. So wird auch das aktuelle .NET Standard 2.1 unterstützt. Das Schutzprinzip gleicht dem AxProtector .NET.
AxProtector Java
Java-Quellcode wird, ähnlich wie .NET-Code, zunächst in eine Zwischensprache, den so genannten Java Byte Code, übersetzt. Dieser ist plattformunabhängig und wird dann von der Java Virtual Machine (JVM) in Bytecode übersetzt und ausgeführt. Um hier ein hohes Schutzniveau erreichen zu können, wird analog zu .NET jede Methode einzeln verschlüsselt und erst zur Laufzeit dynamisch geladen und ausgeführt.
Einfache Handhabung
Alle AxProtectoren sind als Kommandozeilenwerkzeuge verfügbar und können so optimal in automatisierte Buildumgebungen eingebunden werden. Die Steuerung des jeweiligen AxProtectors erfolgt über die Angabe von Konfigurationsdateien. Zur einfachen Generierung dieser Konfigurationsdateien und auch zum Einstieg in die automatische Verschlüsselung gibt es eine graphische Oberfläche, in der die Optionen einfach ausgewählt werden können. Diese Oberfläche unterstützt auch die jeweiligen Besonderheiten der verschiedenen Schutz-mechanismen. So werden zum Beispiel die .NET-Methoden aufgelistet und können dann von der Verschlüsselung ausgenommen oder einer anderen Lizenz zugeordnet werden.
Wenn einmal die passende Lizenz nicht zur Verfügung steht oder für die Lizenzierung vorab Vorgaben wie z.B. die Verwendung eines bestimmten Servers gemacht werden sollen, kann man dies mit Hilfe der UserMessage-Schnittstelle realisieren, die für alle AxProtectoren verfügbar ist. Darüber können Meldungen an den Anwender geschickt werden oder auch angeboten werden, die fehlende Lizenz zunächst zu aktivieren. Dazu gibt es von Wibu-Systems vorgefertigte User-Message-Bibliotheken, die einfach über Konfigurationsdateien mit individuellen Texten versorgt werden können. Oder Sie nutzen diese Schnittstelle, um im eigenen Design gehaltene Bibliotheken bereitzustellen.
Kontinuierliche Weiterentwicklung
Alle Bestandteile der CodeMeter Protection Suite werden von den Spezialisten von Wibu-Systems kontinuierlich weiterentwickelt. Neben neuen mechanismen zur Verbesserung der Sicherheit wird immer auch auf die Performance Wert gelegt. Auch die Angreifer nutzen den technischen Fortschritt und daher ist der Schutz von vor drei Jahren heute leichter zu überwinden. Daher werden auch bei Wibu-Systems die neuen Technologien verwendet, um immer wieder bessere, individuellere Möglichkeiten zum Schutz zu entwickeln und dann in die Produkte einfließen zu lassen. Vertrauen Sie hier auf unsere Expertise!
KEYnote 40 – Ausgabe Herbst 2020