Implementierung von Lizenzmodellen in .NET

Text
0
Kritiken
Leseprobe
Als gelesen kennzeichnen
Wie Sie das Buch nach dem Kauf lesen
Implementierung von Lizenzmodellen in .NET
Schriftart:Kleiner AaGrößer Aa

Inhaltsverzeichnis
Teil I: Einleitung

Über den Autor

Einleitung

Teil II: Was ist eine Lizenz?

1. Lizenzierung – das unterschätze Thema

2. Softwarelizenzen

3. Warum Lizenzierungen?

4. Eckpunkte einer Lizenzierung

5. Policy Patterns (inklusive den Xamarin-Teil)

6. Lizenzierungs-Attribute

7. Deployment von Lizenzen

8. Lizenzierungs-Prozedur (inkl. Vorsicht vor Änderungen)

9. Nützliche Methoden und Bibliotheken

10. Closed vs. Open Source

Teil III: Bibliotheken und Methoden

1. Das .NET Lizenzmodell

2. Lizenzschlüssel generieren

3. Eindeutiger Fingerabdruck

4. SKGL und Software Protector

5. Rhino Licensing

6. Portable.Licensing

Teil IV: Vergleich der Bibliotheken und Methoden

1. Vergleich für Policy Patterns

2. Vergleich für Lizenzierungs-Attribute

3. Vergleich beim Deployment

4. Vergleich der Lizenzierungs-Prozeduren

5. Vergleich beim Lizenzmanagement und Gegenüberstellung

6. Anwendungsfälle sowie Einsatzgebiete

Teil V: Ausblick und Fazit

1. Eckpunkte für eine eigene Implementierung

2. Lektionen

3. Ausblick und Fazit

Imprint


Über den Autor


Fabian Deitelhoff lebt und arbeitet in Dortmund, der Metropole des Ruhrgebiets. Er studiert derzeit den Masterstudiengang Informatik. Seine Schwerpunkte liegen in der Entwicklung von Visual Studio Erweiterungen, der Analyse und Beschreibung von Open Source Frameworks sowie im Rapid Prototyping. Beruflich ist er als freier Autor, Trainer, Sprecher und Softwareentwickler im .NET Umfeld tätig. Sie erreichen Ihn über seinen Blog www.fabiandeitelhoff.de, per E-Mail unter Fabian@FabianDeitelhoff.de oder auf Twitter als @FDeitelhoff.

Einleitung

Die beiden Themengebiete Lizenzen und Lizenzmodelle sind untrennbar mit der Softwareentwicklung verbunden. Und doch werden die Themen häufig ignoriert oder zu lange beiseitegeschoben. Im Umkehrschluss bedeutet das, dass sich jeder, der Software entwickeln möchte, mit den Themengebieten auseinander setzen muss. Ganz gleich, ob es sich um ein kommerzielles Produkt oder um Open-Source-Software handelt. In den vergangenen Jahren hat sich die Art und Weise, wie über Lizenzen und Lizenzmodelle nachgedacht wird, grundlegend verändert. Es ist nicht mehr notwendig, klobige Disketten zu kopieren, die zudem nur wenige Daten enthalten können. Auch der Kopierschutz von anderen Datenträgern, wie beispielsweise CDs und DVDs, konnte in der Vergangenheit einfacher als gedacht umgangen werden. Zudem fördert die Technologie des Internets den Austausch – auch von großen Datenmengen – in kurzer Zeit. Nie war es einfacher und schneller möglich, Software zu kopieren. Die Cloud, also die zentrale Bereitstellung von Software als Dienst, galt lange als der Heilsbringer schlechthin. Viele Unternehmen setzen verstärkt auf diesen Faktor, bei den Anwendern und Anwenderinnen ist das aber noch nicht vollständig angekommen. Datenskandale, Einbruchaktionen in digitale Systeme, sowie der damit verbundene, massenhafte Diebstahl von beispielsweise Zugangs- und Zahlungsdaten sorgen zusätzlich nicht gerade dafür, die Akzeptanz für Dienste im Internet weiter zu steigern. Alles Gründe, warum die klassische Lizenzierung von Desktop-Systemen noch nicht ausgestorben ist. Die Vergangenheit hat vieles im Bereich der Softwarelizenzen geändert. Kunden und potenziell interessierte Anwender verlangen nach immer flexibleren Möglichkeiten zur Lizenzierung der eingesetzten Software. Damit die Konzeption und Implementierung eines Lizenzmodells so reibungslos wie möglich abläuft, muss einigen Eckpunkten Beachtung geschenkt werden. Dazu gehören beispielsweise verschiedene Policy Patterns, Überlegungen zu Lizenzierungs-Attributen, Deployment und Automatisierung, sowie die Frage, wie die Implementierung technisch auf Basis von .NET und C# realisiert werden kann. Neben der konkreten Realisierung sind auch die Konzepte hinter verschiedenen Lizenzierungsmustern, die gelegentlich als UML-Diagramme visualisiert werden, Gegenstand dieses Buches. Ein durchdachtes Lizenzierungskonzept hört bei der Implementierung aber nicht auf. Lizenzmanagement betrifft immer das ganze Unternehmen, da viele weitere Abteilungen und Mitarbeiter mit den Lizenzen in Berührung kommen. Daher werden auch organisatorische Aspekte betrachtet. Die .NET Welt hat in der Vergangenheit interessante und nützliche Open-Source-Bibliotheken hervorgebracht, mit denen sich Lizenzmodelle einfacher realisieren lassen, als wenn die Implementierung manuell erfolgen würde. Dieses Buch behandelt Themen rund um Softwarelizenzen sowie Lizenzierungsmodelle und zeigt, wie beide erfolgreich dazu genutzt werden können, die eigene Anwendung zu schützen. Große Teile des Inhalts sind vor circa einem halben Jahr als Video-Training bei Pluralsight erschienen. In einigen Teilbereichen ist dieses Buch eine Weiterführung der behandelten Themengebiete und wird zusätzlich dem vielfach geäußerten Wunsch gerecht, die Inhalte auch in gedruckter Form zur Verfügung zu stellen. Neben theoretischen Aspekten wird auch die Implementierung von Methoden und Frameworks gezeigt und daraufhin untersucht, ob deren Einsatz lohnenswert ist. Einige dieser Methoden und Frameworks sind der Unique Finger Print, der Software Protector und Portable.Licensing. Schwerpunktmäßig werden die Themengebiete rund um die Implementierung von Lizenzmodellen für Desktop- oder Netzwerkanwendungen behandelt. Die Lizenzierung von Cloud- oder Web-Diensten gehört nicht zum Fokus dieses devbooks. Viele der Themen sind dennoch allgemeingültig oder übertragbar, da auch bei den genannten Anwendungsgebieten lokale oder verteilte Lizenzen nützlich sind.

Beginnen möchte ich gerne mit einer Aussage, die ich vor einiger Zeit gelesen habe. Leider ist mir die Quelle abhandengekommen. Dennoch lassen mich die Sätze nicht mehr los, weil sie eindrucksvoll beschreibt, warum so viel Software illegal kopiert wird.

„Ich finde es nicht überraschend, dass soviel Software geklaut wird. Wir sind eine Kultur von anonymen Dieben. Wir mogeln bei den Steuern, rippen Filme und kopieren Spiele. Warum sollte das in anderen Bereichen des Softwarebusiness anders sein? Ich kenne Menschen, die ihren Lebensunterhalt mit dem Schreiben von Software verdienen und trotzdem die Software anderer klauen, es aber nicht als Diebstahl begreifen. Sie haben eher den Begriff des ‚Teilens‘ im Hinterkopf. Wenn Personen eine Software umsonst bekommen können, werden es einige tun. Immer. Legal oder nicht.“

Diese Aussage ist frei aus dem Englischen übersetzt und nicht von mir. Trotzdem kenne ich den beschriebenen Personenkreis. Vor allem diejenigen, die ihren Lebensunterhalt damit verdienen und dennoch kommerzielle Software von anderen stehlen. Es hat etwas Schizophrenes an sich, zu denken, sich so aus der Gleichung herausnehmen zu können.

Lizenzierung – das unterschätze Thema

Das Thema Lizenzen und Lizenzierungsmodelle treibt jeden Entwickler um. Nicht nur bei kommerzieller Software, sondern auch im Open-Source-Bereich. Wird ein Softwareprodukt verkauft, spielt der finanzielle Aspekt eine sehr große Rolle. Wer möchte schon, dass seine Software „einfach so“ kopiert und genutzt wird? Zum Beispiel bei der einen Ideen, die einen Businessbereich oder einen bestimmten Markt aufrollen könnte. Investitionen wollen geschützt werden. Und das bitte nicht über Softwarepatente, insbesondere wenn sie trivial sind, sondern über eine ausgereifte, durchdachte und kundenfreundliche Lizenzierung sowie ein gutes Lizenzmodell.

 

Im Open-Source-Bereich ist es eher die Frage, wo der eigene Quelltext zum Einsatz kommen darf und wo nicht. Zusätzlich zu der Frage, ob der eigene Name genannt werden muss und ob eine Veränderung des Source-Codes erlaubt ist.

Schwerpunkt dieses devbooks ist der kommerzielle Einsatz von Software. Denn die Entwicklung eines ausgereiften Softwareprodukts ist teuer. Insbesondere bei der Entwicklung eines vollständig neuen Produktes. Aber auch mit der Zeit fließt immer mehr Aufwand in eine Software. Diese Kosten müssen wieder hereingespielt werden, um die weitere Entwicklung zu finanzieren.

Bei den beschriebenen Frameworks zur Unterstützung und Implementierung von Lizenzmodellen wurde allerdings darauf geachtet, Bibliotheken und Komponenten auszuwählen, die als Open-Source-Software zur Verfügung stehen. Geld einzusparen ist nicht der Hauptgrund. Es geht auch oder vor allem darum, Einblick in die Implementierung nehmen zu können. Im Hinblick auf die Sicherheit ist das nicht zu unterschätzen.

Aus den genannten Gründen gibt es immer einen Zeitpunkt, zu dem die Frage aufkommt, wie das Produkt geschützt werden soll. Welche Lizenzierungsstrategie ist die beste? Welche Möglichkeiten gibt es überhaupt, die eigene Software zu schützen? Diese Fragen sind essentiell, wenn es um den Verkauf von Software geht. Ganz gleich, ob ein Team hinter der Entwicklung steht oder eine einzelne Person.

Lizenzierung im Wandel der Zeit

Die ganze IT-Branche ist ständig im Umbruch. Was auf Technologie im Allgemeinen zutrifft, gilt für Software im Speziellen umso mehr. Denn Software lässt sich leicht beziehungsweise leichter anpassen als andere Komponenten wie beispielsweise Hardware.

Durch den schnellen Wandel hat sich die Frage, wie Softwareprodukte lizenziert werden können, grundlegend geändert.

Bei Disketten in den 70er Jahren war das Unterfangen noch kein so großes Problem. Natürlich wurden auch diese schon kopiert, allerdings war der Markt deutlich kleiner und die Software meistens für größere Unternehmen und spezielle Situationen angepasst. Software in hohem Wert zu kopieren war zwar möglich, allerdings selten praktisch, da es nicht viel Verwendung dafür gab.

In den 80er Jahren änderte sich das schlagartig. Die Computertechnik war immer verbreiteter und auf dem Markt erschien immer mehr Standardsoftware. Und eine Eigenschaft von Standardsoftware ist es nun mal, in vielen Situationen eingesetzt werden zu können. So stieg auch die Verbreitung ebendieser Produkte, was sie zu einem deutlich lohnendere Ziel für Raubkopien machte. Disketten waren nach wie vor einfach zu kopieren und die aufkommende CD war gerade erst im Begriff, in der Musikindustrie als digitaler Speicher für Musik Fuß zu fassen. Vom einfachen Kopieren durch Endanwender ganz zu schweigen. Eine klassische Maßnahme war es damals, Hardware-Keys zur Sicherung der Software zu verwenden. Diese Keys sind vielleicht besser bekannt unter den Namen Hardware-Dongles beziehungsweise einfach nur Dongles. Der USB-Anschluss war zwar noch lange nicht erfunden – er kam erst gegen Mitte der 90er Jahre – doch auch serielle Anschlüsse eignen sich gut dazu, Dongles anzuschließen und über die Software abgefragt zu werden.

Die hohe Verbreitung der Personal Computer führte in den 90er Jahren dazu, dass sich die Art und Weise der Softwarelizenzierung das erste Mal grundlegend ändern musste. Hardware-Dongles sind zwar ein gutes Mittel, für Standardsoftware bedeuten sie aber einen hohen Aufwand und hohe Kosten. Denn jeder Anwender und jede Anwenderin brauchten ebenso einen Dongle. Alleine Windows 95, veröffentlicht im August 1995, wurde in den ersten drei Monaten nach Verkaufsstart 45 Millionen Mal verkauft [1]. OEM Versionen, also direkt beim Kauf von Computern vorinstallierte Versionen von Windows 95, noch gar nicht eingerechnet. All diese Installationen hätten mit einem Dongle abgesichert werden müssen. Dabei schlägt nicht nur die Produktion und der Versand mit hohen Kosten zu Buche, sondern auch die Wartung. Denn auch Hardware-Dongles können Defekte aufweisen und müssen dann ersetzt werden. Ein weiterer Grund, warum diese Art der Lizenzierung immer weiter in den Hintergrund gedrängt wurde. Eine weitere Fehlerquelle konnte und wollte man sich nicht ans Bein binden. Wer als Hersteller von Softwareprodukten also erfolgreich den Sprung von den 80ern in die 90er Jahre schaffen wollte, musste sich etwas anderes einfallen lassen. Herausgekommen ist, bei der überwiegenden Zahl der Hersteller, die sogenannte softwarebasierte Lizenzierung. Dabei sorgt das Produkt selbst dafür, dass der eingegebene Schlüssel den korrekten Erwerb bestätigt. Wie auch immer dieser Schlüssel aussehen mag. Mal sind es mehr, mal weniger Zeichen und auch die Komplexität schwankt, wenn nur Zahlen, nur Buchstaben oder eine Kombination von beidem zum Einsatz kommt.

Diese softwarebasierte Lizenzierung ist die am weitesten verbreitete Lizenzierungsart. Zumindest in der Hinsicht, dass ein – wie auch immer gearteter – Schlüssel bei der Installation der Software eingegeben werden muss. Hin und wieder, beispielsweise bei Windows, ist es auch möglich, den Schlüssel nach der Installation anzugeben. Dann läuft das Produkt in einer Art Testversion. Zwar ohne funktionelle Beschränkungen, aber zeitlich begrenzt.

Mit der immer stärkeren Verbreitung von Internetanschlüssen ist im neuen Jahrtausend eine weitere Lizenzierungsart hinzugekommen. Softwareschlüssel sind immer noch stark verbreitet und dominieren den Markt. Allerdings werden diese Schlüssel nicht mehr nur von der Software an sich – mithilfe von Algorithmen, überprüft – sondern auch bei Online-Servern verifiziert. Dieser Umstand wird von vielen Kunden gerne auch als Online-Zwang bezeichnet: Viele Produkte laufen ohne Internetverbindung gar nicht mehr. Entweder es wird eine Verbindung bei der Installation des Softwareproduktes benötigt oder sogar während der kompletten Laufzeit. Gerade Letzteres ist in der Spieleindustrie sehr stark verbreitet und führt zu regelrechten Anfeindungen der Spieler Community gegenüber den Herstellern. Ein eindringliches und gleichzeitig abschreckendes Beispiel ist hier die sogenannte Rootkit-Funktion [2] eines Kopierschutzes von Sony BMG, wobei es sich zwar um den Schutz von CDs handelt, dennoch eignet sich das Beispiel gut um aufzuzeigen, wieviel Unternehmen und Konzerne bereit sind zu unternehmen, um das Kopieren von Datenträgern und Produkten zu unterbinden. Der Online-Zwang führt auch regelmäßig dazu, dass Produkte nicht mehr installiert oder genutzt werden können. Das passiert dann, wenn die Online-Dienste vom betreffenden Hersteller abgeschaltet werden [3].

Nichtsdestotrotz hat dieses Vorgehen keinen signifikanten Einfluss auf die Möglichkeit gehabt, Produkte zu kopieren und sämtliche Schutzmaßnahmen zu umgehen. Gerade im Bereich der Computerspiele werden die Schutzmaßnahmen von Produkten sehr schnell nach der Veröffentlichung umgangen und ohne ebendiese Sicherheitsmaßnahmen von der Community veröffentlicht. Wie bei jeder Innovation beziehungsweise Investition kommt es also auch bei der Lizenzierung darauf an, wie hoch der Kostenaufwand gegenüber dem Nutzen ist. In diese Rechnung muss auch der Schaden einberechnet werden, der entstehen kann, wenn eine schlecht umgesetzte oder zu restriktive Sicherheitsmaßnahme ehrliche Käufer und Käuferinnen vom Einsatz des Produktes abhalten. Auch das ist eine Größe, die nicht unterschätzt werden darf.

Bedingt durch die großen Fortschritte in den Bereichen Rechenleistung, Speicherkapazität und Bandbreite, gab es in den letzten Jahren einen regelrechten Boom beim sogenannten Cloud-Computing. Damit werden eine ganze Reihe neuer Lösungen möglich. Zum einen ist es möglich, die Validierung von Software-Lizenzschlüsseln in die Cloud auszulagern. Dieses Vorgehen ähnelt den bereits erwähnten Online-Services, nur dass jetzt die Validierung nicht mehr zwingend auf selbst gehosteten Servern durchgeführt wird. Zugegeben, das ist ein kleiner Unterschied. Schon deutlicher fallen die Unterschiede auf, wenn andere Dienste in Betracht gezogen werden. Beispielsweise Software as a Service (SaaS) [4] oder Platform as a Service (PaaS) [5]. In beiden Fällen ist es möglich, je nach Ausgestaltung und Anforderungen des eigenen Produktes, die Dienstleistungen auch in der Cloud anzubieten. Die Themenbereiche Lizenzierung und Lizenzmodelle verschieben sich somit ebenfalls in die Cloud. Lizenzen können nun ganz einfach an Log-ins gebunden werden. Entweder für einzelne Arbeitsplätze oder für komplette Organisationen. Es ist kein Softwareschlüssel mehr notwendig. Von einem Dongle oder ähnlichem ganz zu schweigen. Zusätzlich sind weitreichende Analysen möglich. Welche Produkte in der Cloud werden am häufigsten genutzt? Welche Features am meisten und welche gar nicht? All diese Daten fallen natürlich auch bei Lizenzmodellen im klassischeren Desktopbereich an. Grundsätzlich ist es auch möglich, diese zu sammeln und auszuwerten. Der Aufwand, der hierfür getrieben werden muss, ist aber ungleich höher. Von einer Internetverbindung, die diese Daten auch nach draußen lässt, ganz abgesehen.

Welches Vorgehen beziehungsweise System in der Vergangenheit auch immer genutzt wurde. Sicher ist, dass gute Lizenzmodelle und ein mindestens ebenso gutes Lizenzmanagement vorhanden sein müssen, wenn mit dem direkten Verkauf der Software Geld verdient werden soll. Gute und auf das Produkt abgestimmte Dienstleistungen helfen dem Absatz sicherlich auch. Allzu häufig wird ein Produkt aber trotzdem über Umwege beschafft, um Lizenzkosten zu sparen und dieses Geld dann in die Einarbeitung ohne externe Hilfe zu stecken.

Ebenso wichtig ist es auch, für die Zukunft gerüstet zu sein. Wer mit seinem Softwareprodukt den erfolgreichen Sprung aus einem Jahrzehnt ins nächste schaffen möchte, muss auf die Veränderungen des IT-Marktes eingehen. Nicht selten bedeutet das, mehrere Strategien zur Lizenzierung zu verfolgen und anzubieten, um flexibler auf Kundenwünsche reagieren zu können.

Auf viele Aspekte davon geht dieses Buch ein und zeigt praktische Lösungsansätze, mit denen ein Lizenzmodell etabliert werden kann.

Was ist überhaupt eine Lizenz?

Bevor es konkret um die Realisierung von Lizenzmodellen mithilfe von .NET Bibliotheken und Frameworks geht, wird das Thema Lizenz aus Sicht von Software eingegrenzt.

Die Frage, was eine Lizenz überhaupt ist, lässt sich auf mehreren Ebenen beantworten. Zunächst einmal zum Wort an sich. Licentia kommt aus dem Lateinischen und bedeutet Freiheit oder Erlaubnis. Licere bedeutet erlaubt sein. Als typische Verbindungen listet der Duden zu „Lizenz“ Wörter wie neu, begehrt, teuer, gültig, erforderlich und staatlich auf. Alles Dinge, mit denen eine Lizenz häufig assoziiert wird.

Im Allgemeinen bezieht sich eine Lizenz auf eine erteilte Erlaubnis. Wie auch immer diese aussehen mag, was sie enthält und worauf sich dieses Erlaubte bezieht. Eine sehr bekannte Lizenz ist beispielsweise die „Lizenz zum Töten“ vom berühmten aber fiktiven Geheimagenten des britischen Geheimdienstes MI6 James Bond alias 007. Diese Lizenz besagt, dass der Geheimagent nicht gerade zimperlich mit seinen Gegnern umzugehen pflegt.

Aber unter der Lizenz wird auch das Dokument verstanden, welches diese Erlaubnis erteilt oder allgemein die Informationen enthält. Beispielsweise eine Datei, ein ausgedrucktes Dokument, eine Scheckkarte oder ähnliches. Die Lizenz zum Fahren eines Fahrzeuges kann zum Beispiel durch die PKW-Klasse B ausgedrückt werden, wie es die EU Führerscheinklassen vorsehen. Damit ist aber eben nicht nur die Erlaubnis gemeint. Diese Lizenz bezieht sich aber auch auf das Dokument, heute in Form des Scheckkartenführerscheins. Dieses muss beim Führen eines Fahrzeuges mitgeführt werden, wie es so schön heißt. Eine Lizenz ist demnach gleichzeitig eine Erlaubnis, in der Regel etwas tun zu dürfen, sowie ein bestimmtes Dokument, meistens in irgendeiner beglaubigten und damit anerkannten Form.

 

Zusammengefasst ist eine Lizenz also ein rechtliches Mittel, um bestimmte Nutzungsrechte zu erteilen. Zunächst völlig losgelöst von einer bestimmten Sache, einem bestimmten Medium oder Ähnlichem.