Seminararbeit Name: Dominique Lärz Matr.-Nr.: 845816 Software-Lizensierung durch Hardlocks Erstbetreuer: Prof.Dr. Wilhelm Hanrath Zweitbetreuer: Dipl.-Ing. Björn Christian Höper Aachen, den 14.05.2016 Error! Use the Home tab to apply Überschrift 1 to the text that you want to appear here. I Inhaltsverzeichnis I Inhaltsverzeichnis......................................................................................................... i 1 EINLEITUNG ................................................................................................................. 1 2 1.1 Motivation .............................................................................................................. 1 1.2 Was ist ein Dongle ................................................................................................. 1 HARDWARE ................................................................................................................. 4 2.1 2.1.1 Gängige Hardware-Varianten ......................................................................... 4 2.1.2 Zusätzlicher Speicher ..................................................................................... 5 2.1.3 Netzwerk-Dongle ............................................................................................ 5 2.2 3 4 Dongle-Varianten ................................................................................................... 4 Der ASIC-Chip ....................................................................................................... 6 DONGLE-HERSTELLUNG ........................................................................................... 8 3.1 Darstellung einer Dongle-Herstellung bei Aladdin .................................................. 8 3.2 Vor- und Nachteile beim Einsatz von Dongles ....................................................... 9 SCHUTZ .......................................................................................................................11 4.1 Wie sehr kann ich meine Software schützen .........................................................11 4.2 Schutzmaßnahmen ...............................................................................................12 4.2.1 Möglichkeiten des Dongle-Einsatzes .............................................................12 4.2.2 Vorgehensweise bei Erkennung einer nicht-aktivierten Programmversion .....14 4.3 Lizenzmanager-Software Flexera..........................................................................15 4.3.1 Vor- und Nachteile einer Lizenzmanager-Software........................................16 5 AUSBLICK ...................................................................................................................17 6 LITERATUR .................................................................................................................20 1 Error! Use the Home tab to apply Überschrift 1 to the text that you want to appear here. 1 EINLEITUNG 1.1 Motivation Heutzutage ist es sehr einfach raubkopierte Software illegal über das Internet zu verbreiten. Zur Sicherung der Software verwendet man einen Kopierschutz oder auch, durch Hardware unterstützten Schutz, um die Verwendung kopierter Software zu unterbinden. Da am Werkzeugmaschinenlabor der RWTH Aachen – kurz WZL - Softwarelizenzen vertrieben werden, ist es notwendig sich durch ein solches Verfahren abzusichern. Damit die Software nicht nach dem ersten Verkauf beliebig oft vervielfältigt und von unautorisierten Personen benutzt werden - wodurch viel Umsatz bei den Software-Herstellern verloren geht ist es nötig die Software zu schützen. An dieser Stelle kam bei uns bisher immer ein bestimmter Kopierschutz zum Einsatz: Ein sogenannter Dongle oder auch Hardlock. Ich werde in meiner Seminararbeit beide Begriffe verwenden, jedoch das Gleiche meinen. Es handelt sich dabei um eine Hardware, die mit der Lizenz zusammen ausgeliefert wird und dafür sorgt, dass die Lizenz überhaupt genutzt werden kann. Mit der Zeit entwickeln sich die Verfahren zum Schützen von lizenzierter Software weiter. Der aktuelle Trend ist es, Software über bestimmte Lizenzserver abzusichern und hier liegt das Problem. Immer mehr Firmen steigen auf diese Methode um, unter anderem auch die Firma Aladdin, die bislang für die Versorgung des WZLs mit Dongles verantwortlich war. Das Konzept wird insofern umgestellt, dass man sich auf Lizenzserver also eine Lizenz-Verwaltung über das Internet spezialisiert. Dadurch wird die Entwicklung neuer Versionen der Standard-Dongles eingestellt und aktuelle Betriebssysteme werden durch fehlende Updates nicht mehr unterstützt. Da uns das Konzept jedoch sehr gefällt und jährliche Kosten vermieden werden könnten, ist die Überlegung groß, ein eigenes Dongle-System zu entwickeln, das zum Schutz der WZLSoftware verwendet werden soll. In meiner Seminararbeit werde ich daher allgemein auf das Thema Lizenzschutz eingehen und im speziellen den Wirkmechanismus eines Harlocks darstellen. Hieraus kann anschließend ein Anforderungsprinzip für unser neues HardlockKonzept abgeleitet werden. 1.2 Was ist ein Dongle „Als Raubkopie wird die rechtswidrige Vervielfältigung eines Musikstückes, Filmes, einer Software oder einer Datenbank bezeichnet. Die Raubkopie verletzt das Urheberrecht und 1 Error! Use the Home tab to apply Überschrift 1 to the text that you want to appear here. enthält dem Rechtsinhaber die ihm zustehende finanzielle Leistung vor.“ [RAUB00] Ergebnisse einer Umfrage des BSA zur Nutzung von Nicht-Lizensierter Software [BSA00] Eine Studie der BSA (Business Software Alliance) zeigt, dass im Jahr 2011 über 50% der befragten Menschen zugeben, illegal kopierte Software zu verwenden. Die befragten Personen verteilen sich über die ganze Welt. Es wird geschätzt, dass mittlerweile durch Raubkopien bereits mehr als 63 Milliarden US$ verloren gegangen sind (Stand 2011). [BSA00] Um das verhindern zu können, muss die zu verkaufende Software Kopiergeschützt werden oder die Verwendung von illegalen Kopien von Software unterbunden werden. Eine Möglichkeit das zu lösen ist der Einsatz eines Dongles. Ein Dongle ist ein hardware-basierter Kopierschutzstecker, der verhindern soll, dass illegal kopierte Software verwendet werden kann. Die Software ist also nur in Verbindung mit dem Dongle-Modul lauffähig. Dongles werden in verschiedenen Variationen angeboten, die sich in den Schnittstellen zum Anwender-Gerät (USB, seriell, parallel,…) und einigen Eigenschaften unterscheiden, später mehr. Auch die Verbindung zwischen Dongle und Software kann dabei stark variieren. Wo manche Software den Dongle nur auf Anwesenheit prüft, verschlüsseln andere Systeme ganze Codeblöcke oder Datensätze der zu sichernden Software. Das ist abhängig von der Wichtigkeit des Schutzes. Da Software nicht hundertprozentig gesichert werden kann, gilt es den Schutz so hoch wie möglich und nötig zu setzen. 2 Error! Use the Home tab to apply Überschrift 1 to the text that you want to appear here. 3 Error! Use the Home tab to apply Überschrift 1 to the text that you want to appear here. 2 HARDWARE 2.1 Dongle-Varianten 2.1.1 Gängige Hardware-Varianten Dongles werden, je nach Einsatzgebiet oder auch benötigter Schnittstellen in verschiedenen Bauformen hergestellt. Die folgende Tabelle gibt einen Überblick über die üblichsten DongleModelle: Modell Eigenschaften Einfache Nutzung Plug & Play USB heute häufigste Schnittstelle Meist kein USB-Treiber nötig E-Y-E (StandardDongle) Standard Dongle mit ParallelSchnittstelle Mehrere Dongles hintereinander schaltbar USB-Dongle Twin-Dongle Internal PCI-Dongle 4 Erweiterung zum Standard-Dongle Enthält zusätzlich eine serielle Schnittstelle Kopierschutz als Rechnerkomponente Anbindung über einen PCI-, PCIExpress- oder ISA-Anschluss Darstellung Error! Use the Home tab to apply Überschrift 1 to the text that you want to appear here. PCMCIA 2.1.2 Schmale Hardlock-Variante für Unterwegs Ideale Lösung für Notebooks/ Laptops Zusätzlicher Speicher Jeder Dongle kann zusätzlich noch mit programmierbarem Speicher ausgeliefert werden, was heute eigentlich zum Standard gehört. Der Speicher liegt im Byte-Bereich, ist also nicht sonderlich groß, dennoch aber mehr als ausreichend um bei Bedarf die zu schützende Software zusätzlich zu sichern. Es wäre beispielsweise möglich zusätzliche Daten im Speicher abzulegen, die zur Sicherung der Software dienen können oder andere Funktionalitäten bieten. Der Vorteil dabei ist, dass niemand auf diesen Speicher zugreifen kann, außer der Person, die den sogenannten Master-Dongle bzw. die Crypto-ProgrammerCard besitzt, dazu später mehr. 2.1.3 Netzwerk-Dongle In großen Firmen kommt es häufig vor, dass viele Mitarbeiter die gleiche Software verwenden und so kann es sein, dass sie mit dem selben Dongle arbeiten müssen. Beim Transport des Dongles von einem zum anderen Rechner könnte der Dongle verloren gehen und vor allem ist es auch sehr umständlich. Unter anderem wurde deswegen der NetzwerkDongle entwickelt. Im Falle eines USB-Dongles wird ein USB-Server an das Netzwerk angeschlossen, welches alle Dongles verwaltet. In diesen USB-Server werden nun alle USB-Dongles eingesteckt und sind somit über eine bestimmte IP erreichbar. 5 Error! Use the Home tab to apply Überschrift 1 to the text that you want to appear here. Abb.: USB-Server für die Nutzung von Dongles im Netzwerk [WEST00] Möchte man nun die Rechte für eine Software erhalten, verbindet man sich über einen Client mit dem Server und fragt nach der Erlaubnis den Dongle zu verwenden. Ist er als frei markiert, darf der Dongle verwendet werden. Wird der Dongle nicht mehr benötig, wird er im Server wieder freigegeben und kann von anderen Mitarbeitern verwendet werden. 2.2 Der ASIC-Chip ASIC steht für Application Specific Integrated Circuit. Es handelt sich hierbei um einen integrierten Schaltkreis aus einer elektronischen Schaltung und es ist ein wichtiger Bestandteil des Dongles. Heutzutage ist er in fast jedem Gerät vorzufinden, das entweder Batterien/Akkus oder ein Stromkabel verwendet. Es gibt sie in Fernsehern, Waschmaschinen, Toastern usw. Auch in unseren Dongles werden sie verwendet. In einem ASIC-Chip befindet sich die elektronische Schaltung, die aus vielen digitalen Bauelementen und Verbindungen zwischen diesen, besteht. Das Besondere daran ist, dass sie alle gleichzeitig eingebaut wurden. Beim ASIC handelt es sich um einen Chip, der speziell für eine Anwendung hergestellt wird, das heißt, dass der Hersteller vor der Herstellung genau wissen muss, was der Chip können soll. Ziel ist es bei der also möglichst alle Funktionalitäten des Dongles in einem einzigen Halbleiter-Chip zu implementieren. 6 Error! Use the Home tab to apply Überschrift 1 to the text that you want to appear here. Abb.: Obere Ansicht eines ASIC-Chips [ASIC09] Neben den benötigten Logikfunktionen werden hier auch Kundenspezifische Informationen gespeichert, die den Besitzer des Dongles identifizieren können. Dadurch wird besondere Sicherheit gewährleistet, da es ohne die Identifikation nicht möglich ist, Dongles zu brennen. Wurde also bei der Bestellung ein kundenspezifischer Prototyp eines ASIC-Chips entworfen, ist er von nun an auf allen Bestellten Dongles zu finden, jedenfalls solange es sich um den gleichen Kunden handelt. 7 Error! Use the Home tab to apply Überschrift 1 to the text that you want to appear here. 3 DONGLE-HERSTELLUNG 3.1 Darstellung einer Dongle-Herstellung bei Aladdin Davon ausgehend, dass man eine Software hat und diese sichern möchte, man sich für die Dongle-Variante entschieden hat und auch für die Firma Aladdin, möchte ich kurz die Vorgehensweise darstellen. Wir möchten nun einen Hardlock der Firma Aladdin verwenden, setzen uns zuerst mit der Firma in Verbindung und bestellen einen Kundencode. Dieser Code wird einmalig erzeugt um alle Kunden zu individualisieren. Es wird nun der Application Specific Integrated Circuit Chip – kurz ASIC-Chip - erstellt, auf den eine für uns spezifische Dongle Signatur gebrannt wird, welche wiederum ein bestimmtes Verschlüsselungsverhalten ergibt. Dieser Chip wird einzigartig für jeden Kunden von Aladdin angefertigt und ist von diesem Zeitpunkt an in jedem bestellten Dongle enthalten. Möchte man nun seine Dongles für die Kunden der eigenen Software implementieren, bestellt man sich die gewünschte Anzahl Raw-Dongles mit den eingebauten ASIC-Chips. Jetzt gibt es mehrere Möglichkeiten fortzufahren. Die Hardlock-Bistro-Software wird zusammen mit dem Hardlock Development Kit geliefert und ist in 4 Hauptteile gegliedert: Cappuccino, Latteccino, Espresso und Gazzetta. Diese Software-Module ermöglichen eine individuelle Entwicklung des eigenen Software-Schutzes. Man kann entweder mittels Cappuccino einzelne Dongle-API-Befehle einbauen oder mit Latteccino gesamte vorgefertigte Blöcke von Code einfügen. Ein Beispiel für einen API-Befehl ist der Login. Der Benutzer muss sich über die Software mit dem Dongle verbinden. Die Dongle API stellt also einen Befehl zur Verfügung, den man in die zu schützende Software einbaut. Man übergibt eine verschiedene Werte, die der Dongle verlangt und erhält die Antwort, ob der Dongle angeschlossen ist oder eben nicht. Je nach Rückgabewert kann nach Belieben gehandelt werden.Diese beiden Arten lassen sich natürlich auch untereinander kombinieren. Wie die Kommunikation mit dem Dongle aussehen kann werde ich später behandeln. Die Schnittstelle zwischen Dongle und der zu schützenden Software stellt die oben genannte Dongle-API dar, eine Standard-Library der Dongle-Hersteller um gleiche Zugriffe für jegliche Dongle-Modelle zu gewährleisten. Das Hardlock-Bistro bietet auch noch weitere Software, beispielsweise zur Verwaltung von Kunden- und Lizenzdaten um eine Übersicht über Updates und Support zu haben. Mit Gazzetta lässt sich der Lebenslauf aller Dongles lückenlos zurückverfolgen. 8 Error! Use the Home tab to apply Überschrift 1 to the text that you want to appear here. Um die Dongles nun zu brennen, benötigt man nun noch 2 Dinge. Einerseits den Dongle, der je nach Modell zwischen 10 und 50 Euro kostet und eine sogenannte Crypto-ProgrammerCard auch CP-Card oder Master-Dongle genannt, die bei der ersten Bestellung speziell für uns angefertigt wurde. Sie enthält, genau wie jeder andere Dongle auch unseren spezifischen ASIC-Chip. Was den Master-Dongle so besonders macht, ist, dass sie bei jedem Brennvorgang an den PC angeschlossen sein muss. Sie dient zur Identifizierung der Person, die den Dongle brennen möchte, also uns. Dadurch kann niemand, der nicht Besitzer dieses Dongles ist einen eigenen Dongle für die Software erstellen. Hat nun jemand unsere Software gekauft, so erhält er die Software und einen von uns gebrannten Dongle. 3.2 Vor- und Nachteile beim Einsatz von Dongles Hier die Vor- und Nachteile der Verwendung von Dongles. Inbegriffen sind Dongles für die Schnittstellen USB, Seriell, Parallel. Vorteile Durch Dongles kann ein Umsatzanstieg bewerkstelligt werden, da nicht viele Menschen ein Dongle-System umgehen können. (Vorteil aus der Sicht der SoftwareHersteller) Es müssen keine Passwörter verwaltet werden Software kann auch auf mehreren Rechnern benutzt werden, da lediglich der Dongle weitergereicht werden muss Die Software ist ohne Dongle-Modul nicht benutzbar (Schutz vor Fremdanwendern) Nachteile 9 Dongle-Modul kann leicht verloren gehen, falls man es oft mit sich herumträgt Eine Erhöhung der Kosten für die Software entsteht, da der Dongle auch bezahlt werden muss Pro Dongle-Modul wird eine Schnittstelle belegt. Beim Einsatz von mehreren Dongles kann es sein, dass weitere Schnittstellen in den Rechner eingebaut werden müssen Error! Use the Home tab to apply Überschrift 1 to the text that you want to appear here. 10 Verlangsamung von Prozessen, durch Datenaustausch mit dem Dongle (heutzutage liegt sie im Bereich von ms) Error! Use the Home tab to apply Überschrift 1 to the text that you want to appear here. 4 SCHUTZ 4.1 Wie sehr kann ich meine Software schützen „Jede Kette ist nur so stark wie ihr schwächstes Glied“ Ich erwähne dieses Zitat, um zu verdeutlichen, dass die Sicherheit der zu schützenden Software quasi äquivalent zur größten Sicherheitslücke im Kopierschutz ist. Es ist unmöglich eine Software komplett zu schützen. Es ist jedoch möglich den Aufwand, das Sicherheitssystem zu umgehen, dermaßen in die Höhe zu treiben, dass es sich nicht mehr lohnt, oder dem Angreifer bei der Systementwicklung stets einen Schritt voraus zu sein, indem man seine nächsten Vorhaben vorausgesehen, und es bereits im eigenen Sicherheitssystem berücksichtigt hat. Wie könnte so ein Angreifer nun vorgehen? Hier wären 3 Möglichkeiten den Schutz zu knacken. Die erst Möglichkeit wäre es, den Dongle so zu verändern, dass er jederzeit angibt, angeschlossen zu sein. Das reicht den meisten Schutzsystemen jedoch nicht, da heute hauptsächlich Verschlüsselungs-Mechanismen von Codeblöcken und verschlüsselte Abfragen mit eingehen. Die bloße Anwesenheit eines Dongles zu simulieren ist mit ein wenig Arbeit und einigen Suchbegriffen im Internet zu einfach zu bewerkstelligen. Eine weitere Möglichkeit wäre es, sich zwischen Dongle und Computer zu schalten, die gesendeten Daten abzufangen und sich einen Algorithmus dahinter zu erschließen. Dadurch kann man nun eigene Signale einfügen, welche dem System die erwarteten Ergebnisse liefern. Dieses Vorgehen ist jedoch sehr umständlich, da bei komplexen Verschlüsselungsalgorithmen viele Zufallsvariablen eingehen und sich die Rechnung nur sehr schwer zurückverfolgen lässt. Die letzte ist die meist verwendete Möglichkeit. Durch einen so genannten Disassambler, einen Debugger und weiterer Software wird das erworbene Programm in seinen Quellcode zerlegt und der Angreifer hat Zugriff auf alle Funktionen der Software, also auch auf die Dongle-Abfragen. Es ist nun einfach eine Frage der Zeit bis der Angreifer die eingebauten Sicherheitsabfragen findet und eliminiert. Um den Aufwand also für den Angreifer zu erhöhen, ist es sinnvoll die Sicherheitsabfragen so zu verstecken oder geschickt einzubauen, dass es dem Angreifer stark erschwert wird alle Abfragen zu finden und zu eliminieren. 11 Error! Use the Home tab to apply Überschrift 1 to the text that you want to appear here. 4.2 Schutzmaßnahmen 4.2.1 Möglichkeiten des Dongle-Einsatzes Hier sind nun einige Möglichkeiten aufgelistet, die man verwenden könnte, um die Arbeit einer Dongle-Umgehung zu erschweren: 4.2.1.1 Modulabfrage Beim Brennen des Dongles wird eine bestimmte Modulnummer festgelegt, die den Dongle identifiziert. Bei einer Dongle-Abfrage loggt man sich über die Dongle-API mithilfe dieser Nummer auf dem Dongle ein. Durch den erfolgreichen Login wird also geklärt ob der Dongle angeschlossen ist. Diese Abfragen kann man nun an beliebigen Stellen im Programm einbauen. Für diesen Vorgang ist es nicht nötig, auf dem Dongle zusätzlichen Speicher bereitzustellen, da die Modulnummer in den Dongle eingebrannt wird. 4.2.1.2 Datensatz-Verschlüsselung Da die alleinige Modulabfrage nicht sehr sicher ist, bevorzugen viele Leute eine Methode bei der man Programmteile, Rechenergebnisse oder bestimmte Datensätze, durch einen auf dem Dongle abgelegten Schlüssel ver- oder entschlüsseln lassen. Abb.: Schematische Darstellung eines möglichen Verschlüsselungsvorgangs zwischen Dongle und Software 12 Error! Use the Home tab to apply Überschrift 1 to the text that you want to appear here. Die Daten werden mittels Schlüssel, der auf dem Dongle vorhanden ist, entschlüsselt und können danach benutzt werden. Beispielsweise ist der verschlüsselte Datensatz im entschlüsselten Zustand ein Bestandteil einer wichtigen Berechnung, ohne den das Programm nicht weiter ausgeführt werden kann oder eben falsche Ergebnisse liefert. Es ist also absolut notwendig, dass der Dongle vorhanden ist. Es gibt auch Variationen dieses Models. Man könnte sich auch vorstellen, dass man einen bestimmten Datensatz auf den Dongle verlagert. Es werden Eingangsdaten zum Dongle gesendet, auf dem Modul berechnet und man erhält die Ergebnisse für die Software. Außerdem ist es auch möglich, einen Dongle für einzelne Programmerweiterungen zu verwenden. Gibt es beispielsweise 5 Tools für Zusatzberechnungen, die extra bezahlt werden müssen, könnte man für jeden Zusatzprogrammteil Flags (Ja/ Nein) im Dongle abspeichern um beim Programmstart zu wissen, welche Programmteile der Kunde erworben hat und dementsprechend freigeschaltet werden müssen. Das aufwändige Verwalten verschiedener Programmzusammenstellungen entfällt damit. Um so etwas jedoch zu ermöglichen, benötigt man zusätzlichen Speicher, der bei den meisten Dongles hinzugekauft werden kann. Heute wird fast außschließlich diese Variante verwendet. 4.2.1.3 Abfragen-Variation Modulabfragen (Abfrage, ob Dongle-Modul vorhanden ist oder jegliche Verschlüsselungsarten) sollten variieren. Falls der Angreifer eine Dongle-Abfrage entdeckt hat und weiß wie es geht diese zu entfernen, wären die ähnlichen Abfragen in anderen Stellen im Code sehr leicht zu entfernen. Ist die Abfrage jedoch anders formuliert als die Vorige, so muss der Angreifer erneut eine Lösung für die Umgehung finden. 4.2.1.4 Verwirrung stiften Durch Einbauen von unnötigen Dongle-Abfragen oder Verschlüsselungen kann dem Angreifer die Arbeit zusätzlich erschwert werden. Es ist nicht besonders aufwändig sie einzubauen, doch relativ umständlich sie wieder auszubauen. Als Argumente kann man beliebige Werte wie Zufallsvariablen, Zwischenergebnisse von Berechnungen oder die System-Zeit verwenden und „scheinbar“ wichtige Werte verrechnen. Oftmals ist es der Fall, dass der Angreifer Software Kopieren möchte, die nicht seinem Fachgebiet obliegt. Hat er beispielsweise eine Software vor sich, die die Buchhaltung einer Firma übernimmt und er keine Ahnung von Wirtschaftslehre oder Fachbegriffen dieses Gebiets hat, wird es sehr 13 Error! Use the Home tab to apply Überschrift 1 to the text that you want to appear here. schwer für ihn, zu überprüfen, ob die gewonnenen Ergebnisse nun stimmen oder nicht, wenn die Variablennamen nicht zu eindeutig formuliert wurden. Durch solch einen Vorgang kann man den Zeitanspruch für die Entfernung von Abfragen sehr stark in die Höhe treiben. 4.2.1.5 Verschachtelte Abfragen Wie oben schon erwähnt, kann man über die Dongle-API abfragen, ob ein Dongle angeschlossen ist. Wieso sollte man also nicht abfragen können ob die Abfrage nach dem Dongle noch vorhanden ist? Durch eine Verschachtelung unterschiedlicher Abfragen, kann man für zusätzliche Sicherheit sorgen. Der Angreifer wird sein Hauptaugenmerk auf die Entfernung der Sicherheitsabfragen für den Dongle legen und eventuell nicht auf die Unterabfragen achten. 4.2.1.6 Zeitfenster für bestimmte Rechnungen einbauen Es ist möglich die Zeit für einen bestimmten Programmablauf zu erfassen. Da bekannt ist, dass Debuggen um einiges langsamer ist, als wenn man das Programm normal ausführen würde, könnte man Zeitfenster für bestimmte Programmabschnitte festlegen. Wird ein Abschnitt nicht schnell genug abgearbeitet, kann man davon ausgehen, dass sich jemand über einen Debugger zwischen den Code gehängt hat und man kann somit weitere Eingriffe verhindern. 4.2.1.7 Code-Länge überprüfen Zu guter Letzt gibt es noch die Möglichkeit eine Variable für die Codelänge des Programms einzubauen und zu überprüfen oder zu verrechnen, ob eventuell Teile des Codes entfernt wurden. Diesen Test könnte man auch auf sequentielle Programmteile anwenden um die Manipulation am Quellcode zu erschweren. 4.2.2 Vorgehensweise bei Erkennung einer nicht-lizenzierten Programmversion Es werden nun ein paar Möglichkeiten aufgezeigt, wie sich ein Programm verhalten könnte, wenn erkannt würde, dass kein eigener Dongle mit der erworbenen Software verbunden ist. 14 Error! Use the Home tab to apply Überschrift 1 to the text that you want to appear here. 4.2.2.1 Scheinbare Vollversion Falls erkannt wird, dass kein Dongle mehr angeschlossen ist kann man, anstatt das Programm abzubrechen, das Programm weiterlaufen lassen, jedoch falsche Werte einfließen lassen, um so einige Werte falsch auszugeben. Der Vorteil hierbei ist, dass der Angreifer nicht direkt weiß, ob nun alle Sicherheitsabfragen korrekt ausgebaut wurden. Er wird mit hoher Wahrscheinlichkeit davon ausgehen, dass wenn das Programm lauffähig ist, die Ergebnisse schon stimmen werden. 4.2.2.2 Demo-Version simulieren Sollte erkannt werden, dass nicht der richtige Dongle oder gar keiner angeschlossen sein, so könnte man, anstatt das Programm nicht lauffähig zu machen, eine Demo-Version simulieren. Der Benutzer kann das Programm also benutzen, nur stehen ihm die Hauptfunktionen nicht zur Verfügung. Beispielsweise kann man bestimmte Fenster nicht öffnen oder man kann Berechnungen bis zum Ende ausführen, nur erhält man keine Ergebnisse. Hier stehen dem Entwickler viele Türen offen. 4.3 Lizenzmanager-Software Flexera Software kann man nicht nur über Hardware schützen, sondern auch über Software. Die Lizenzmanager-Software Flexera ist ein Beispiel dafür. Es ist eine Software zur Verwaltung nach dem Floating-, und dem Node-Locked-Lizenzmodell. Diese Verfahren werden oft in Firmennetzwerken verwendet. Das Floating-Lizenz-Modell sagt aus, dass eine bestimmte Anzahl von Lizenzen für eine Software gekauft wird und diese dann unter der folgenden Bedingung verwendet werden darf. Und zwar darf die Software beliebig oft installiert werden, doch zur gleichen Zeit nur so oft verwendet werden, wie Lizenzen vorhanden sind. Dieses Prinzip kennen wir schon von Dongle. Beim Kauf einer Lizenz wird von der Verkäuferfirma A also eine Lizenzdatei speziell für den Käufer Firma B angefertigt. Firma B installiert nun einen Lizenzserver entweder lokal auf einem Rechner, oder bei Verwaltung mehrerer Lizenzen im Netzwerk, zur globalen Verwaltung der Lizenzdateien. Dieser Server verwaltet nun alle erworbenen Lizenzen und verteilt je nach Anfragen, die Erlaubnis, die entsprechende Software zu benutzen. Bei Bedarf einer Lizenz verbindet sich ein Benutzer mit dem Server und fragt an, ob eine Lizenz für ihn frei ist. Das System prüft nun, wie viele Lizenzen in Verwendung sind und 15 Error! Use the Home tab to apply Überschrift 1 to the text that you want to appear here. erlaubt keine weiteren Benutzer, falls alle Lizenzen vergeben sind. Möchte ein weiterer Benutzer eine Lizenz benutzen, muss er also warten bis sich jemand ausgeloggt und die Lizenz wieder freigegeben hat. Flexera verwendet aber auch das Node-Locked-Lizenz-Verfahren, bei dem für spezielle Knotenpunkte im Netzwerk, also für bestimmte Rechner Lizenzen freigegeben werden, die jederzeit verwendet werden können. Das Schema ist im Grunde das Gleiche, wie beim Floating-Lizenz-Model, nur ist es nicht so flexibel, da die Lizenzen an bestimmte Netzwerkkarten oder Rechner-IPs gebunden sind. Das macht zum Beispiel Sinn bei Rechnern, die an Prüfstände angeschlossen sind und die Software ständig in Gebrauch ist. 4.3.1 Vor- und Nachteile einer Lizenzmanager-Software Vorteile Sehr sicher Durch zusätzliche Software sehr übersichtlich Lizenzen können nicht durch Transport verloren gehen oder geklaut werden Nachteile 16 Die Software ist sehr teuer. Für den Installer bezahlt man zwischen 500 und 8000€ und für jeden Lizenz-Platzhalter zusätzlich rund 300€. Bei einem Unternehmen, das etwa 80-140 Lizenzen verwaltet lägen die Kosten etwa bei 24000 – 42000€, plus die Lizenzgebühren der zu verwaltenden Software, also der eigentlichen Lizenzkosten. Lizenz kann nicht verwendet werden, wenn kein Netzwerk vorhanden ist. Bsp.: Vorführung der Software vor einem Kunden oder bei Netzwerkausfall. Kosten für die Lizenzen werden an die Kunden weitergereicht, macht die SoftwareLizenz teurer Error! Use the Home tab to apply Überschrift 1 to the text that you want to appear here. 5 AUSBLICK Wie bereits im Kapitel Motivation dargestellt, ergibt sich aus der Tatsache, dass für aktuelle Betriebssysteme, der von uns verwendete Hardlock nicht mehr supportet wird, die Notwendigkeit, die Lizensierung unserer Software neu zu organisieren. Der Grund für die Produktänderung seitens unseres Supporters ist im Wesentlichen in der Entwicklung aktueller Programmierkonzepte zu finden. Durch die Verwendung von Laufzeitkonzepten wie virtuelle Maschine oder .Net Framework ist das Schutzkonzept mittels Hardlock zwar weiterhin realisierbar, stellt jedoch an die Entwicklerseite für die Implementierung deutlich höhere Anforderungen und passt daher nicht in das vermarktbare „Simply Safe“ Konzept. Da wir mit unserer Lizensierung keinen breiten Markt, sondern allenfalls den Bereich UniAachen erreichen wollen, steht somit dem Verfolgen des grundsätzlichen HardlockKonzeptes nichts im Wege. In den vorigen Abschnitten wurden die Wirkmechanismen verschiedener Schutzkonzepte erläutert. Aus diesen Fakten können ein prinzipielles Anforderungsprofil für wirkungsvolle Verfahren abgeleitet und Möglichkeiten einer Realisierung diskutiert werden. Erste Überlegungen führten zu einem gewöhnlichen USB-Stick und diesem eindeutige Identifikationsmerkmale zuzuordnen oder bereits vorhandene für eine Identifizierung zu verwenden. Eine Abfrage der Fabrikations- und/oder Herstellernummer wäre einfach zu realisieren, erfüllt jedoch nur rudimentäre Sicherheitsanforderungen, da diese Hardwaremerkmale mit einfachen Hilfsmitteln ausgelesen und geändert werden können. Eine spezielle Art der Formatierung des Speichermediums wäre möglich und mittels einfacher Verfahren eruierbar. Wir sehen jedoch keine Möglichkeit den Speicherbereich eines Standard-Wechseldatenträgers gegen unerlaubtes sektorenweises Lesen und somit nachhaltig gegen kopieren zu schützen. Ein gemeinsamer Schwachpunkt aller aufgelisteten USB-Stick-Verfahren ist im resultierenden Abfragemechanismus zur eindeutigen Identifikation zu finden. Letztendlich endet jede Prüfung mit dem Szenario einer Frage „Bist du der oder die Richtige“. Wird das „Ja-Wort“ gegeben, so kann gemeinsam fortgefahren werden. Diese Abfrage ist, wie bereits im Kapitel Schutzmaßnahmen beschrieben, durch verschiedene Methoden emulierbar. 17 Error! Use the Home tab to apply Überschrift 1 to the text that you want to appear here. Eine weitere Möglichkeit wäre es einen Schwingkreis an den Hardlock anzubinden. Um kurz aufzugreifen, wie ein Schwingkreis funktioniert, gibt es einen kleinen Überblick. Ein Schwingkreis ist im Normalfall eine, aus einer Spule L und einem Kondensator C bestehende, resonanzfähige elektrische Schaltung. Bei dem Vorgang wird Energie zwischen dem magnetischen Feld der Spule und dem elektrischen Feld des Kondensators in einer bestimmten Frequenz ausgetauscht. Dadurch herrschen abwechselnd hohe Stromstärken und hohe Spannungen. Diese Frequenz kann man durch Änderung der Spannung variieren und dadurch einen bestimmten Frequenz-Wert als Prüfsumme im Hardlock verlangen. Da in der Praxis nicht immer alles so funktioniert, wie in der Theorie vorgesehen, muss sichergestellt werden, dass variierende Betriebsparameter (z.B. Temperatur oder Energieabnahme )keine unterschiedlichen Ergebnisse liefern, oder der Einfluss muss bekannt sein und bei der Abfrage berücksichtigt werden. Da die Spannung nicht bekannt ist, ist der Schwingkreis der Schlüssel selbst. Man würde schlussendlich nicht nur einen Wert sondern eine nicht lineare Funktion benötigen wenn das Ergebnis emuliert werden soll. Variierende Schwingkreise in zu verkaufenden USB-Stick zu verbauen und die Berücksichtigung von Umwelteinflüssen, ist leider mit zu viel Aufwand verbunden, und somit für uns nicht von Interesse. Unser kommerzielles Vorbild realisiert die Idee des Unikats durch Verwendung eines ASICs und umgeht das „Bist du der oder die Richtige“ Dilemma durch Anwendung kryptologischer Verfahren. Da die Herstellung dieser - in der Stückzahl, die wir benötigen – zu teuer ist, fällt diese Möglichkeit auch aus. Eine Alternative könnte die Verwendung eines intelligenten Bausteins (Mikro-Prozessor) mit zusätzlichen Speicherbereichen sein. So kann weitgehend an eine zu schützende Software adaptiert werden. Letzteres beinhaltet die Vorstellung, dass ein Programm nur dann richtige Ergebnisse liefert, wenn eine Lizensierung vorliegt, was letztendlich zu der Möglichkeit führt, Daten oder Programmfragmente zu verschlüsseln. (Kap. 4.2.1) Das Kopieren des internen Speichers wird dadurch verhindert, dass der Zugriff ausschließlich über den integrierten Mikro-Prozessor stattfindet. Die Kommunikation zwischen Rechner und USB wird mittels eines eigenen Treibers realisiert. Hierdurch wir ein unerlaubter Zugriff auf lesen/schreiben vereitelt, da nur der, der über die entsprechende API verfügt, diese auch verwenden kann. Exemplarische Grundfunktionen wären: 18 Anforderung des Inhalts einer bestimmten speicherstelle Lesen von Blöcken Schreiben an eine bestimmte Speicherstelle Error! Use the Home tab to apply Überschrift 1 to the text that you want to appear here. Schreiben von Blöcken Schreiben – Verschlüsseln – Lesen von Daten (Die Verschlüsselung ist abhängig vom individualisierbaren Speicherinhalt) Für die Entwicklung des beschriebenen Systems verwende ich das Experimenter Board MSP430 der Firma Texas Instruments mit folgenden Eigenschaften: 19 16 kB RAM 256 kB Flash-Speicher 18 MHz Prozessor USB zur Kommunikation mit dem Rechner Display, zur Kommunikation mit dem User SD-Karten-Slot Error! Use the Home tab to apply Überschrift 1 to the text that you want to appear here. 6 LITERATUR [BSA00] Global Piracy Study URL: http://portal.bsa.org/globalpiracy2011/ [Stand 2011] [DONGLE] Dongle URL: http://de.wikipedia.org/wiki/Dongle [SEH00] Tech?Update!: Was ist eigentlich ein Dongle? URL: http://www.seh.de/presse/techupdate-detailview/article/techupdatewhat-is-a-dongle.html [WUT00] Geschützter Betrieb von USB-Dongles im Netzwerk URL: http://www.wut.de/e-53641-11-apde-000.php [MSP] MSP430 Experimenter Board URL: http://www.ti.com/tool/msp-exp430f5438 [RAUB00] Was ist eine Raubkopie URL: http://www.raubkopierer.info/ 20 Error! Use the Home tab to apply Überschrift 1 to the text that you want to appear here. [ASIC00] ASIC, was ist das denn? URL: http://www.andreas-schwope.de/ASIC_s/index.html [ASIC09] Foto eines Mikrochips URL: http://www.ims.fraunhofer.de/en/news/detail/article/farbsensoren-fuerbessere-sicht.html [WEST00] Foto eines USB-Servers für Netzwerk-Dongles URL: http://www.west-gmbh.de/2012/07/dongles-im-netzwerk-verteiltnutzen_4.html [ALADDIN00] Hardlock-Übersicht URL: http://www3.de.safenetnc.com/hasp/hardlock/hardlock_uebersicht.aspx 21