Serial Key - Prüfung ob Software gekauft

beta20

Top Contributor
Hallo zusammen,

ich suche einen Weg meine Software zu schützen, sodass gewährleistet wird, dass die Software gekauft wurde. Also ob es
a) ein gültiger Lizenzschlüssel ist
b) der Lizenzschlüssel noch gültig ist

Hier ein paar Details zur Software:
- Meine Software wird direkt auf dem PC installiert.
- Die Software enthält eine Datenbank

Mein Lösungsansatz wäre folgender:
1. Kunde kauft Software im Internet
2. Kunde erhält eine Email mit einem automatisch und eindeutigen Serial Key. Der Serial Key wird in einer DB auf dem Webserver gespeichert.
Ebenfalls wird das createDate gespeichert (sodass man ev. später prüfen kann, ob die Lizenz noch gültig ist, z.B. nach einem Jahr)
3. Kunde gibt bei der Installation der Software auf seinem PC diesen Serial Key ein
4. Bei der Installation bzw. Prüfung ob Key stimmt, ist zwingend eine Internetverbindung erforderlich (sollte in der heutigen Zeit kein Problem mehr sein)
5. Der Serial Key wird nun geprüft. Hierzu wird eine Methode (Webservice) auf dem Webserver auf der auch das Programm vom Generieren des Keys aufgerufen und prüft nun ob es den Serial Key gibt.

Nun bin ich mir nicht sicher wie es weiter gehen soll, hier jedoch ein Ansatz:
6. Der Kunde erhält wiederum einen Code zurück, den er entweder bei sich nochmals eingeben muss oder direkt in die DB auf der Desktop Software gespeichert wird.
Dieser Code wird so erzeugt:
a) Auf dem Server gibt es einen privaten Key (den natürlich nur ich selbst weiß). Der Serial Key wird gehast mit dem privaten Key.
=> Vorteil von diesem zweiten Code ist, dass es schwieriger ist die Software zu hacken. Ich könnte eigentlich auch in der DB einfach true oder false setzen.

Der Nachteil ist aber natürlich:
Die Software wird mit samt Benutzername und Passwort für die DB ausgeliefert.
Hat nun jemand auch den zweiten Code, kann er natürlich in die DB gehen und in die entsprechende Tabelle diesen Code eintragen.

Allerdings:
Wie prüfe ich in der Software an sich selbst nochmal, ob der Code valide ist? Hier brauche ich ja dann in der nochmals eine Methode, die in der Desktop Software implementiert ist?
Also was ist, wenn jemand in der Tabelle in der DB, in der der zweite Code gespeichert wird, einen ausgedachten Code eingibt?
Denn im Mom prüfe ich ja dann nur, ob hier überhaupt ein Code drin steht.
Andernfalls müsste ich jedes Mal beim Starten des Programms via Internet abfragen, ob der Code valide ist (was ich nicht will)

Vielen Dank für jede Hilfe
 
K

kneitzel

Gast
Also Deine ganze Bemühungen sind gut und schön, aber es wird Dir sehr schwer fallen etwas zu schreiben, das eben nicht geknackt werden kann. Daher halte ich diese ganzen Mühen für relativ fruchtlos zumal Du damit ggf. zahlende Kunden vergraulst.

Wenn Du etwas mit Serial Key machen willst, der offline verifiziert werden kann, dann würde ich die empfehlen, Dir einmal die asynchrone Verschlüsselung anzusehen. Dann kannst Du mit einem private Key irgendwelche Daten vom Zielrechner nehmen und zusammen mit einem Usernamen verschlüsseln. Zur Kontrolle reicht dann der public key.
ABER:
- Woher nimmst du Werte, die den Rechner einwandfrei identifizieren?
- Wie willst Du verhindern, dass eine einmal freigeschaltete Version auf einer VM läuft, die dann problemlos kopiert werden könnte?
- Wie willst Du sicher stellen, dass Nutzer nicht schlicht von diesen Kontrollen zu genervt sind, dass sie nicht zu einem Konkurenzprodukt greifen? (Da Du hier schon fragst nach Möglichkeiten wird da bestimmt nichts professionelles wie z.B. bei Microsoft rauskommen mit kostenlosen Hotlines in sehr vielen Ländern ...)

Dann evtl. lieber die "immer Online" Methode - dann musst du "nur" einen Server bereit stellen, der dann von der Software kontaktiert wurde. Kann immer noch alles gehackt werden und so, aber da hättest Du dann mehr Kontrolle. Aber was willst Du wie erlauben? Wie oft darf ich als Kunde meinen Rechner neu aufbauen um dann das Produkt erneut zu registrieren?

Ein wichtiger Punkt ist dann noch, dass Java Compilate relativ gut decompilierbar sind. Damit ein cracken Deiner Software auch nicht zu schwer.

Sorry, selbst Software wie AutoCAD, die wirklich viel Gehirnschmalz reinstecken und Dongles (also eine physikalische Kontrolle) verwenden, wird ständig geknackt. Das sei mir bitte wirklich die Frage erlaubt, was Du hier erwartest, schreiben zu können, das sich wirklich lohnt ...

Wenn Du sowas brauchst, dann kannst Du aber auch erst einmal ansehen, was andere da bisher so gebaut haben. Da gibt es auch fertige Produkte. License4J habe ich z.B. direkt einmal gefunden. Aber wie an meiner Antwort leicht zu erkennen ist: Ich halte davon nicht ganz so viel.

Konrad
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Serial port abfragen Java Basics - Anfänger-Themen 18
B Serial Key prüfen -> String mit privatem Key und dann abgleichen; Summe = 0 Java Basics - Anfänger-Themen 8
I Serial Key speichern? Java Basics - Anfänger-Themen 8
E Programm - Serial etc? Java Basics - Anfänger-Themen 4
nrg Serial Version ID? Java Basics - Anfänger-Themen 16
ff eclipse ::--> serial version uid Java Basics - Anfänger-Themen 8
G @SuppressWarnings("serial") Java Basics - Anfänger-Themen 2
H Serial Java Basics - Anfänger-Themen 5
I Viereck / Rechteck Prüfung innerhalb einem bestimmten Bereich Java Basics - Anfänger-Themen 2
M Rekursive Prüfung ob ein Array sortiert ist... Java Basics - Anfänger-Themen 4
T Prüfung auf Existenz eines Dialogfensters Java Basics - Anfänger-Themen 5
J SVN Repository Prüfung ob leer ist Java Basics - Anfänger-Themen 23
E equals Prüfung fehlgeschlagen Java Basics - Anfänger-Themen 3
U Prüfung, ob Datei vollständig vorhanden Java Basics - Anfänger-Themen 8
T Eine kurze frage vor der prüfung bitte. Java Basics - Anfänger-Themen 5
T Prüfung in 2 Tagen Java Basics - Anfänger-Themen 4
B Object in Array nach Prüfung löschen Java Basics - Anfänger-Themen 13
J Prüfung einer Schleife mit Eingabefeldern Java Basics - Anfänger-Themen 3
B Prüfung auf erfolgreiche Connection? Java Basics - Anfänger-Themen 2
A ArrayList-iteration mit Prüfung auf instanceof durch switch case? Java Basics - Anfänger-Themen 13
F TicTacTo Prüfung + Ergebnisausgabe Java Basics - Anfänger-Themen 10
M Calendar-Prüfung funktioniert nicht korrekt Java Basics - Anfänger-Themen 6
D Prüfung zur korrekten Ausgabe einer Methode Java Basics - Anfänger-Themen 2
O String-Prüfung: Was ist besser/schneller? Java Basics - Anfänger-Themen 15
M Prüfung beim Erzeugen eines Objektes Java Basics - Anfänger-Themen 4
N Scanner next() oder nextLine() zur prüfung auf leere Eingabe... Java Basics - Anfänger-Themen 6
B instanceof Prüfung für generische Typen Java Basics - Anfänger-Themen 5
G Prüfung ob GUI möglich? Java Basics - Anfänger-Themen 2
M Prüfung simulieren Java Basics - Anfänger-Themen 4
Semox Ganzzahlentyp- morgen Prüfung Java Basics - Anfänger-Themen 2
S Ordner prüfung Java Basics - Anfänger-Themen 2
C Parameter rückgabe nach Prüfung an Klasse/Methode Java Basics - Anfänger-Themen 2
C Datum prüfung geht nicht? Java Basics - Anfänger-Themen 9
F Objekt vom Typ Interfaces: Prüfung von welcher Unterklasse? Java Basics - Anfänger-Themen 7
W vertrackst ? brauchbare prüfung auf NULL ? Java Basics - Anfänger-Themen 7
Z Prüfung auf existenz einer Variablen Java Basics - Anfänger-Themen 4
Z Problem der Prüfung auf ein leeres Formularfeld Java Basics - Anfänger-Themen 3
I Kommunikation "normaler PC" mit lokaler Software an "Cloud Service" und umgekehrt Java Basics - Anfänger-Themen 15
H software entwicklung Java Basics - Anfänger-Themen 139
B Email Client in der eigenen Software einbauen Java Basics - Anfänger-Themen 3
M JDK installieren Welche Software bei XP? Java Basics - Anfänger-Themen 5
S3CR3T Architektur der Software Java Basics - Anfänger-Themen 6
Mxxxt UML Software Java Basics - Anfänger-Themen 2
D Software per ssh downloaden und installieren Java Basics - Anfänger-Themen 2
A Software zum Umrechnen römischer Zahlen Java Basics - Anfänger-Themen 10
H Liste ausgeben (Spiel Hey Fisch (software-challenge) ändern Anzahl Fische) Java Basics - Anfänger-Themen 1
B Allgemein Frage zur Software Entwicklung Java Basics - Anfänger-Themen 3
OnDemand Software-Design Java Basics - Anfänger-Themen 1
B [Projekt] CyberCafé Software Java Basics - Anfänger-Themen 13
F Gültigkeitszeitraum von Software beschränken Java Basics - Anfänger-Themen 17
J Hosting Software Java Basics - Anfänger-Themen 2
A Welche UML Software benutzt ihr / ist empfehlenswert? Java Basics - Anfänger-Themen 2
F software engeneering --> dokumentation??! Java Basics - Anfänger-Themen 6
J Software problem unter VISTA Java Basics - Anfänger-Themen 3
K GUI Builder Software ? Java Basics - Anfänger-Themen 6
G Java Software Tuner Java Basics - Anfänger-Themen 6
G Versionierung von Software Java Basics - Anfänger-Themen 4
G Software Updates in Eclipse Java Basics - Anfänger-Themen 11
E software concept erstellen! Java Basics - Anfänger-Themen 4
N software die sich als hardware ausgibt? Java Basics - Anfänger-Themen 6
M Java-Software so anbieten, dass sie leicht zu starten ist Java Basics - Anfänger-Themen 16
D Java Software zeigen nichts mehr an Java Basics - Anfänger-Themen 2
A Good articles about software component technology? Java Basics - Anfänger-Themen 2
X Java Versionen und Software-Paketnamen Java Basics - Anfänger-Themen 4
N Welche software hab ich eigentlich ? Java Basics - Anfänger-Themen 17

Ähnliche Java Themen

Neue Themen


Oben