Kategorien: Software-Schutz
Lizenz Event-Handling in geschützten Applikationen
Die CodeMeter Protection Suite ermöglicht die einfache Verschlüsselung von Applikationen – doch was, wenn eine Lizenz fehlt? Mit der CPSEvents-Schnittstelle lassen sich Fehlermeldungen individuell anpassen und zusätzliche Funktionen wie Lizenzauswahl oder Fehlerbehandlung integrieren.
Dank der verschiedenen AxProtector-Tools der CodeMeter Protection Suite gelingt die Verschlüsselung einer Applikation einfach und schnell – sogar für Anfänger in wenigen Minuten. Technisch läuft alles reibungslos, solange die benötigte Lizenz für den Betrieb Ihrer Applikation verfügbar ist. Die Anwendung startet wie gewohnt, vielleicht minimal verzögert, aber sonst bemerkt der Nutzer keinen Unterschied. Doch was passiert, wenn die Lizenz nicht verfügbar ist?
In diesem Fall erscheint eine CodeMeter-Fehlermeldung. Allerdings unterscheidet sich diese oft von den üblichen Fehlermeldungen der Applikation, was zu Verwirrung bei den Nutzern führen kann. Verständlichkeit und einheitliches Erscheinungsbild sind hier entscheidend, damit CodeMeter als Bestandteil der ausgelieferten Software wahrgenommen wird.
UserMessage
Seit vielen Jahren bietet Wibu-Systems die „UserMessage“-Schnittstelle für alle AxProtector-Versionen an. Damit lässt sich die Anzeige von Fehlermeldungen in verschiedenen Sprachen über einfache Anpassungen in ini-Dateien konfigurieren. Auch eine benutzerdefinierte Hintergrundgrafik kann hinzugefügt werden, sodass die Fehlermeldung optisch in das Design Ihrer Applikation passt. Alternativ zur Standard-UserMessage-Bibliothek, deren Oberflächenanzeige auf Windows beschränkt ist, gibt es die Möglichkeit, eine eigene DLL zu erstellen. So können Sie weitere Funktionalitäten integrieren, etwa die Anzeige aller verfügbaren Lizenzen im Netzwerk zur Auswahl durch den Benutzer oder die Zuweisung von Lizenzen auf denselben CmContainer für Applikationen mit mehreren Komponenten.
CPSEvents in AxProtector NC
Die neue Generation der AxProtector-Tools, gekennzeichnet mit „NC“ für „Native Core“, verwendet einen ähnlichen, aber modernisierten Mechanismus. Hier übernimmt die CodeMeter Protection Suite Runtime (CPSRT) die Lizenzprüfung und Entschlüsselung in einem manipulationssicheren Umfeld. Dadurch wird nicht nur Schutz für Skriptsprachen möglich, sondern auch eine optimierte Verwaltung mehrerer parallellaufender, geschützter Applikationen.
In der CPSRT wird zudem die gesamte Fehlerbehandlung zentral verwaltet. Tritt ein Fehler auf, ruft die CPSRT über die CPSEvents-Schnittstelle eine zugehörige CPSEvents-Bibliothek auf. Auch hier stehen Ihnen zwei Varianten zur Verfügung:
Erste Variante: Komplettpaket
Wibu-Systems stellt eine fertige CPSEvents-Bibliothek zur Verfügung, die plattformübergreifend grafische Dialoge anzeigt. Diese Dialoge werden mithilfe eines minimalen Browsers (Webview) als HTML-Seiten dargestellt. Unter Linux müssen dafür die Bibliotheken libgtk-3 und libwebkit2gtk-4 auf dem System installiert sein.
Grafische Anpassung
In der yaml-Konfigurationsdatei zur Verschlüsselung der Applikation geben Sie einen Pfad zu einer separaten yaml-Konfigurationsdatei für die Dialoganpassung an. In dieser wiederum können Sie jetzt das Erscheinungsbild durch Angabe einer eigenen css-Definitionsdatei modifizieren und alle Texte über Definitionen anpassen. Weiterhin können Sie das Logo durch ein eigenes ersetzen, kurzum all das machen, was nötig ist, damit der Dialog exakt so aussieht, wie Ihre Kunden es von Ihren Applikationen gewohnt sind.
Sichere Auslieferung
Zum Verschlüsselungszeitpunkt wird die Standard-CPSEvents-Bibliothek neben Ihre verschlüsselte Applikation gelegt, und zwar unter einem Dateinamen, der am Ende Ihren Firm Code enthält. Damit sind CPSEvents-Bibliotheken eindeutig den jeweiligen Softwareherstellern zugeordnet und kommen sich zur Laufzeit nicht gegenseitig ins Gehege.
Die von Ihnen erstellte Konfiguration wird in die geschützte Applikation eingebettet. Damit können diese Einstellungen nicht manipuliert werden. Zur Laufzeit lädt die CPSRT die jeweilige CPSEvents-Bibliothek und übermittelt diese Konfigurationsdaten.
Zweite Variante: Marke Eigenbau
Als zweite Variante können Sie analog zur bisherigen UserMessage-Bibliothek eine eigene CPSEvents-Bibliothek schreiben. Die Schnittstelle ist offen dokumentiert und Sie können eigene Funktionalitäten für die Fehlerbehandlung oder Lizenzverwaltung integrieren. Sie implementieren auf allen von Ihnen unterstützten Plattformen diese Bibliothek und können dann im Rahmen der Fehlerbehandlung oder auch vor der Lizenzbelegung eigenen Code ausführen.
Über die Funktion CpsGetLicenseAccessFilter erhalten Sie eine Liste mit den für die aktuelle Anfrage relevanten Lizenzen. AxProtector verwaltet den Zugriff über sogenannte Lizenzlisten, die mehrere Lizenzen enthalten können. Ihre Bibliothek bekommt diese Liste übergeben und ermöglicht Ihnen, die Lizenzauswahl zu beeinflussen. Zum Beispiel können Sie sicherstellen, dass eine bestimmte DLL denselben CmContainer wie die ladende Applikation verwendet, indem Sie die Seriennummer speichern und den Filter entsprechend setzen. CPSRT wertet diese Filter aus und versucht, die Lizenz gemäß Ihren Vorgaben zu belegen.
Events
Nach jeder erfolgreichen Lizenzbelegung informiert die CpsOnEvent-Funktion über das Event LicenseAccessed und liefert detaillierte Informationen zur belegten Lizenz. Diese Informationen können Sie für weitere Lizenzabfragen nutzen, beispielsweise wie oben geschildert als Filterparameter für weitere Lizenzlisten. Sie können auch den Zugriff auf eine Lizenz ablehnen, falls bestimmte Kriterien nicht erfüllt sind.
Weitere Event-Typen der CpsOnEvent-Funktion sind unter anderem LicensingError, TamperingDetected und AccessFilterError. Beispielsweise können Sie bei einem Lizenzierungsfehler einen Dialog anzeigen lassen und dem Benutzer die Möglichkeit geben, eine erneute Lizenzanfrage zu starten.
Für Applikationen ohne Benutzerinteraktion können Sie eine CPSEvents-Bibliothek schreiben, die automatisch nach einer bestimmten Wartezeit erneut versucht, eine Lizenz zu belegen, oder alternative Systemrückmeldungen sendet. Oder Sie implementieren einen Callback und können dann die Dialoge in Ihrer Programmiersprache verwenden.
Sicher Daten übergeben
Auch bei der selbst erstellten CPSEvents-Bibliothek können applikationsspezifische Daten eingebunden werden, die dann zur Laufzeit an die CPSEvents-Bibliothek gegeben werden. Zum Verschlüsselungszeitpunkt geben Sie eine Datei als UserData an. Diese Daten werden als Binärblob in der verschlüsselten Applikation gespeichert und dann zur Laufzeit übergeben. Damit können Sie einer CPS-Events-Bibliothek applikationsspezifische Daten mitgeben.
Der Integritätsschutz von AxProtector NC verhindert Manipulationen und das Austauschen der CPSEvents-Bibliothek. Sollte dieser Schutz in bestimmten Fällen deaktiviert sein, lässt er sich gezielt nur für die CPSEvents-Bibliothek aktivieren.
Mit den neuen Mechanismen in AxProtector NC und der CPSEvents-Schnittstelle bietet die CodeMeter Protection Suite eine flexible und sichere Möglichkeit, Fehler- und Lizenzmanagement nahtlos in Ihre Applikation zu integrieren. Sie behalten die volle Kontrolle über das Design und die Funktionalität der Fehlermeldungen und können gleichzeitig sicherstellen, dass die Lizenzverwaltung reibungslos funktioniert.
KEYnote 48 – Herbst-/Winterausgabe 2024