ArtikelEntwicklung

Vertrauen ist gut, Verschlüsselung ist besser

Autor/Redakteur: Michael Zunke, Chief Technology Officer bei SafeNet/gg

No access[2]

Maßnahmen gegen Reverse Engineering blocken wertvolle Entwicklerressourcen, sind aber unerlässlich. Denn ist eine Nachkonstruktion erst einmal auf dem Markt, haben es die betroffenen Unternehmen schwer, sich dagegen zu wehren. Beim unerlaubten Nachbau von Hardware müssen sich die Unternehmen zum großen Teil auf zuverlässige Partner und das Patentrecht verlassen. Im Bereich Softwareentwicklung gibt es dagegen effektive Mittel, das geistige Eigentum zu verteidigen. Kryptographische Methoden sind hier das Mittel der Wahl. Bei der Auswahl des passenden Verschlüsselungsansatzes, sollte an erster Stelle die Frage stehen, welcher Teil der Applikation genau geschützt werden soll.

In vielen Einsatzszenarien ist es wichtig sicherzustellen, dass nur autorisierte Personen Prozessparameter oder Konfigurationen des Systems verändern können. In diesen Fällen greifen klassische kryptographische Verfahren wie die Verschlüsselung und das Signieren von Daten. Um dies zu bewerkstelligen, können zum Beispiel die kryptographischen Funktionen des Softwareschutzsystems eingesetzt werden. Um dagegen Algorithmen und logische Zusammenhänge in der Applikation zuverlässig gegen den Einblick durch Dritte schützen zu können, muss diese verändert werden. Es gibt hier zwei grundsätzliche Ansätze: Quelltextverschleierung (Obfusaction) und die Verschlüsselung des auszuführenden Codes.

Bei der Quelltextverschleierung wird der logische Fluss der Applikation so verändert, dass er für einen Menschen schwer nachvollziehbar ist. Zum Beispiel werden parallel zu den eigentlich relevanten Operationen zusätzliche Operationen durchgeführt, die alles Wichtige im “Rauschen” der zusätzlichen Operationen verschwinden lassen. Es können auch weitere Ausführungspfade hinzugefügt werden, die entweder redundant sind, oder nie einen relevanten Beitrag zur Ausführung leisten. Wenn dies geschickt durchgeführt wird, ist per statischer Analyse nicht entscheidbar, was relevant ist und was nicht. Der Nachteil: diese Art von Schutz beeinflusst das Laufzeitverhalten.