Re: System für Lizenznummern?
10. Feb 2004, 10:06
@Sharky:
Man sollte erstmal zwischen Liezenznummer und Registrationsschlüssel unterscheiden.
Eine Lizensnummer enthät Informationen über den Lizensnehmer und die Lieznesierungsart. Damit ist diese Nummer nicht sicherheitsrelevant an sich.
Der Registrationskey ist ein Schlüssel der sich meistens aus der Lizensnummer berechnet. Das dahinterliegene Verfahren, der Algortihmus und die verwendeten versteckten Daten müssen geheim bleiben.
Generell würde ich nicht alltzuviel Aufwand betreiben, sprich Public Keys, Produkte wie TurboPower oder AVLock sind rausgeschmissenes Geld, da JEDES Lizenzierungsverfahren das auf kurzen Registrationskeys basiert und OHNE sichere Hardware funktioniert IMMER leicht geknackt werden kann. Da helfen auch nicht die besten Kryptographischen Verfahren wie Public Key Verschlüsselungen ua. Diese Systeme suggerieren nur eine Sicherheit wo keine sein kann, und sie benutzten die Kryptoverfahren als Verkaufsförderndes Argument.
Nun ich würde folgendes machen:
Der Lizenzcode besteht auf einer Prüfsumme über die Regustrationsdaten wie Name, Firma usw. plus die Lizenzierungsart plus 4 Zeichen Zufallsdaten.
Also NNNNNNNNNNNNNNN-XXXXX-RRRR, alles in Base32 codiert, d.h. Zahlen in [0..9, 'A..Z' - 'Q' - 'O' - 'J' - 'I'].
Groß-Klein Schreibung spielt keine Rolle dabei, also ist der Code auch leicht eingebbar. Leicht zu verwechselnde Zeichen wie 'I','J','1' oder 'O','0','Q' werden zugunsten der Ziffern entfernt. D.h. I,J,O,Q sind nicht im Set enthalten.
NNNNNNNN enthält eine Prüfsumme über den Name,Firma,Anschrift des Lizensnehmers. Dabei werden dessen Daten in Großbuchstaben umgeandelt, und alle Sonderzeichen, wie Punkt,Semikolon und Spaces vorher entfernt. Über die so becleanten Daten kann man nun eine Prüfsumme beerechnen. Zb. mit Hilfe von MD5 Hash.
In die Prüfsummenberechnung wird der Zufallswert RRRR mit einbezogen !
XXXXX enthält eine Codierte Form der Lizenzart.
RRRR sind einfach nur Zufallszahlen.
Der Lizenznehmer sendet seine Daten wie Name,Firma + Lizensnummer an dich. Du trägst diese Daten in deine Kundendatenbank ein und überprüfst natürlich die Lizenznummer mit dem gleichen Verfahren. Nun wird mit einem "geheimenen" Algorithmus aus der Lizenznummer der Registrationskey berechnet und an den Kunden verschickt.
Der Code zur Überprüfung des Registrationskeys muß immer in der Software stehen, was demzufolge bedeutet das ein Cracker diesen Code mit entsprechendenm Aufwand IMMER herausfinden kann. Egal welches Verfahren benutzt wird, es ist immer unmöglich ein System mit solchen verfahren zu schützen.
Wie sollte der RegCode Algo. aufgebaut sein ?
Am besten er ist polymorph, d.h. der Lizenzcode ist ein Input aus dem ein Programmcode erzeugt wird. Dieser Programmcode wird mit Daten gefüttert die dann durch diesen dynamischen Code in den Registrationsschlüssel umgewandelt werden. Zusätzlich sollten einige Programmteile ebenfalls verschlüsselt vorliegen, um einfache JMP Patches zu verhindern.
D.h. das eigentliche Problem bei solchen Verfahren kann technisch reduziert werden auf Methoden wie man einen Cracker daran hindert den Code zu entschlüsseln. Da dem Cracker aber grundsätzlich die komplette Software zur Verfügung steht hat er immer auch die nötige Basis um mit entsprechendem Aufwand den RegCode zu entfernen.
Somit ist es viel clever sich nicht zu sehr auf den Schutz der Software zu konzentrieren, sondern eher mit der Kundenbindung an die eigene Firma zu befassen. D.h. guter Support, unique Features in der Software, gutes Preis/Leistungsverhältnis sind viel stärkere Maßnahmen gegen Raubkopierer.
Gruß Hagen
PS: Produkte mit AVLock und auch TurboPower's Schutzmechanismen sind geknackt worden !
|