Software-Verschlüsselung

Software-Verschlüsselung

Gegen den unerlaubten Nachbau von Hardware stehen wenige Mittel zur Verfügung. Unternehmen bleibt oft nur die Möglichkeit, sich auf zuverlässige Partner und das Patentrecht zu verlassen. Im Bereich Softwareentwicklung existieren dagegen effektive Mittel, das geistige Eigentum zu schützen. Kryptographische Methoden sind hier das Mittel der Wahl. Ein vielversprechender Ansatz besteht in der Verschlüsselung bestimmter Teile des Programme.
Um Zugriffsschutz sicher zu stellen, greifen Unternehmen häufig zu klassischen kryptographischen Verfahren wie der Verschlüsselung und das Signieren von Daten. Um dies umzusetzen, lassen sich u.a. kryptographische Funktionen des Softwareschutzsystems einsetzen. Um dagegen Algorithmen und logische Zusammenhänge zuverlässig gegen den Einblick durch Dritte zu schützen, müssen Programmierer die Anwendung verändern. Dazu existieren zwei Ansätze: Quelltextverschleierung oder Obfuscation und die Verschlüsselung des auszuführenden Codes. Bei der Quelltextverschleierung verändern Softwareentwickler den logischen Fluss der Applikation so, dass er für einen Menschen schwer nachvollziehbar ist. Zum Beispiel werden parallel zu den relevanten Operationen zusätzliche Operationen durchgeführt. Entwickler können aber auch weitere Ausführungspfade hinzufügen, die entweder redundant sind oder keinen relevanten Beitrag zur Ausführung leisten. Ist dies geschickt durchgeführt, ist per statischer Analyse nicht entscheidbar, was relevant ist und was nicht. Diese Art von Schutz beeinflusst jedoch das Laufzeitverhalten.

Gezieltes Lizenzmanagement

Bei dem zweiten Ansatz – der Verschlüsselung des auszuführenden Codes – werden bereits während des Software Build-Prozesses Teile der Applikation verschlüsselt und entsprechender Entschlüsselungscode eingebaut. Auch hier sind zwei Ansätze zu unterscheiden: Die Applikation liegt entweder verschlüsselt auf dem Speichermedium und wird zum Ladezeitpunkt entschlüsselt. Dieser Ansatz verändert das Laufzeitverhalten nicht, allerdings liegt bei der Ausführung die Applikation unverschlüsselt im Speicher vor. Ein Speicherabbild liefert dann die entschlüsselten Informationen. Die zweite Möglichkeit besteht darin, in der Applikation nur ausgewählte Bereiche zu verschlüsseln. Dabei erfolgt die Entschlüsselung erst beim Aufruf der entsprechenden Funktion. Diese Methode erfordert jedoch feine Auswahlmöglichkeiten, der zu verschlüsselnden Bereiche und Codezeilen. Bei dieser Methode ändert sich die Ladezeit nicht negativ, und das Speicherabbild liefert keine unverschlüsselte Applikation. Außerdem lassen sich auf dieser Ebene auch Lizenzierungsmaßnahmen einbauen. Entwickler können also nicht nur festlegen, welche Methode verschlüsselt werden soll, sondern auch, ob sie nur bei Vorliegen einer bestimmten Lizenz ausgeführt werden darf.

SafeNet Germany GmbH
www.safenet-inc.de

Das könnte Sie auch Interessieren