Beweisbare Sicherheit

Software-Schutz verhindert Kopieren und Reverse-Engineering

Beweisbare Sicherheit

Software hat einen immer größeren Anteil an der Wertschöpfung und muss daher besonders geschützt werden. Bisher mussten entsprechende Verfahren geheim gehalten werden, um sicher zu bleiben. Ein neues Verfahren nach dem Kerckhoffs’schen Prinzip ermöglicht hingegen einen beweisbar sicheren und korrekten Software-Schutz. Dabei beruht die Sicherheit auf der Geheimhaltung von Schlüsseln, einer geschützten Hardware und der inhärenten Komplexität der zu schützenden Software. Für diese Leistung wurden die Hersteller/Anbieter mit dem ersten Platz beim 5. Deutschen IT-Sicherheitspreis ausgezeichnet.
Weil Software prinzipiell kopier- und manipulierbar ist, verwendet das Blurry-Box-Verfahren mit dem CmStick eine sichere Hardware, die nicht kopiert oder verändert werden kann. Das Verfahren bindet nun den auszuführenden Programmcode so an den Stick, dass die Software ohne ihn nicht lauffähig ist. Dies geschieht aber nicht durch simple Aufrufe, die überprüfen, ob der CmStick antwortet. Denn solche Aufrufe könnten einfach aus dem Programm auskommentiert werden; auch wird nicht das Programm einfach verschlüsselt und dann vor der Programmausführung vom CmStick entschlüsselt. Denn dann läge das ausführbare Programm im Speicher und könnte wieder kopiert und manipuliert werden. Das Blurry-Box-Verfahren unterteilt das Programm in viele Funktionsblöcke, die jeweils Eingabe- und davon abhängige Ausgabeparameter umfassen, und verschlüsselt diese. Das Verfahren vervielfältigt jeden dieser Funktionsblöcke und verändert den Programmablauf so, dass die Auswahl aus den vervielfältigten Funktionsblöcken abhängig von den Aufrufparametern erfolgt. Die Auswahl des Funktionsblocks übernimmt dabei eine Wrapper-Funktion. Dadurch wird erreicht, dass die Codeabdeckung bei einem Durchlauf stark verringert wird und zusätzlich von den verwendeten Eingabeparametern abhängig ist.

Angriff unwirksam

Ein Hacker könnte versuchen, durch das Ändern der Wrapper-Funktion die Auswahlfunktion zu umgehen, sodass von den vervielfältigten Funktionsblöcken immer der gleiche ausgewählt wird. Das Blurry-Box-Verfahren macht einen solchen Angriff unwirksam, indem die vervielfältigten Funktionsblöcke jeweils so zu Varianten modifiziert werden, dass sie nur für den vorgesehenen Wertebereich korrekt funktionieren. Da das Programm über eine hinreichende inhärente Komplexität verfügt und dem Hacker das notwendige Fachwissen fehlt, ist nicht davon auszugehen, dass er bislang unbekannte Varianten oder den ursprünglichen Funktionsblock ableiten kann. Diese Annahme ist für den Sicherheitsbeweis des Verfahrens wichtig und wird Fachlichkeitsannahme genannt. Wird eine Variante mit den falschen Aufrufparametern benutzt, dann liefert diese Variante falsche Ergebnisse für die nicht vorgesehenen Parameterwerte. Gemäß der Fachlichkeitsannahme fehlt dem Angreifer das Fachwissen, um diese Ergebnisse zu korrigieren und er muss somit alle Varianten durch seinen Angriff erhalten, um eine vollständig funktionsfähige Kopie der Software zu erzeugen. Jede einzelne Variante wird vom Blurry-Box-Verfahren verschlüsselt und die Schlüssel für alle Varianten im CmStick sicher abgelegt. Die Entschlüsselung erfolgt über die API-Funktion des Sticks, indem die verschlüsselte Daten ins Stick-Innere übertragen werden und dort mit Hilfe der vorliegenden Schlüssel entschlüsselt werden. Der entschlüsselte Programmcode wird als Rückgabewert der CmDongle-API zurückgeliefert und in der Software als Code der Variante ausgeführt. Eine Variante kann nur mit dem CmStick entschlüsselt werden. Zur Verschlüsselung wird der Advanced Encryption Standard (AES) verwendet. Um Blöcke mit gleichem Inhalt auf unterschiedliche Chiffrate abzubilden, fließt in die Berechnung ein zufällig gewählter Wert mit ein.

Fallen für den Angreifer

Ein Teil der verschlüsselten Daten gehört nicht zum Programm und werden in einem normalen Programmlauf nie verwendet. Diese Daten entsprechen Varianten, die für keinen möglichen Aufrufwert vom Wrapper ausgewählt werden. Wird der CmStick aufgefordert solch eine Variante zu entschlüsseln, so wird diese erkannt. Der Stick markiert die Lizenz als ungültig und ermöglicht damit keine weiteren Entschlüsselungen. Solche sogenannten Fallen hindern einen Angreifer, alle verschlüsselt vorliegenden Varianten unabhängig vom Programmlauf durch den CmStick zu entschlüsseln. Werden im Programm zusätzlich Sprünge auf solche Fallen eingefügt, die bei einem normalen Programmlauf nie auftreten, so wirken die Fallen sowohl bei einem statischen Angreifer, dessen Angriff unabhängig vom Programmlauf ist, als auch bei Angreifern, die den Code durch Decompilierung analysieren und allen Sprungadressen folgen. Das Code Moving, also das Ausführen von Programmcode in einer geschützten Hardware, verlangsamt im Allgemeinen die geschützte Anwendung und ist somit in der Regel nicht praktikabel. Auch eine Auswahl von besonders wichtigen Funktionsblöcken, die per Code Moving im Dongle ausgeführt werden sollen, ist nicht praktikabel, da diese wichtigen Funktionsblöcke dadurch stark verlangsamt würden. Sehr sinnvoll ist das Code Moving dagegen für den Code zur Berechnung der Variantenauswahl, denn dieser ist sehr kurz und essentiell für die korrekte Programmausführung. Diese Form des Code Moving kann sogar größtenteils automatisiert werden und ist dann nur auf wenig Interaktion mit dem Programmentwickler angewiesen. Ein Angriff, der von einer normalen Programmausführung abweicht, kann nicht nur über Fallen erkannt werden, sondern auch an der Reihenfolge, in der Blöcke vom CmStick entschlüsselt werden. Während eines regulären Ablaufs des Programmcodes ist diese Reihenfolge nicht beliebig und auf einen Block kann nur eine kleine Teilmenge aller Blöcke folgen. Ein Gedächtnis des CmSticks ermöglicht es der Blurry Box-Technologie, gültige von ungültigen Abfolgen zu unterscheiden und eine Sperre auszulösen, sobald eine ungültige Abfolge versucht wird.

Seiten: 1 2Auf einer Seite lesen

WIBU-Systems AG
www.wibu.de

Das könnte Sie auch Interessieren

Bild: Wittenstein SE
Bild: Wittenstein SE
Veränderungen in Aufsichtsrat und Vorstand bei Wittenstein

Veränderungen in Aufsichtsrat und Vorstand bei Wittenstein

Im Vorstand und Aufsichtsrat von Wittenstein gibt es Änderungen: Dr. Manfred Wittenstein, der als bisheriger Aufsichtsratsvorsitzender mit Ablauf der regulären Amtsperiode auf der Hauptversammlung aus dem Aufsichtsrat ausgeschieden ist, wird das Gremium weiterhin als Ehrenvorsitzender unterstützen. Dr. Anna-Katharina Wittenstein wechselt nach gut sieben Jahren im Vorstand in den Aufsichtsrat des Unternehmens.