Ratschläge zur Umsetzung einer Lizenzsierung

Status
Nicht offen für weitere Antworten.

sliwalker

Top Contributor
Hi,

ich schreibe seit einer Weile eine Anwendung in privatem Rahmen.
Ich möchte erreichen, dass nur Nutzer die Anwendung verwenden können, die ich persönlich auf "meiner Webseite" dafür bestimmt habe. Dazu sollen sie per Skript einen Lizenzschlüssel erhalten, den sie in die Anwendung kopieren können.

Ich habe schon etwas geplant und umgesetzt, aber trotz das es funktioniert, liegt es mir schwer im Magen. Es ist zu starr, kaum erweiterbar und irgendwie naja, ich weiß auch nicht, es gefällt mir so nicht. Deshalb erbitte ich von euch ein paar Vorschläge, wie man so etwas grob skizziert umsetzen kann. Best practice eben...

Was habe ich schon? (...und will es ändern...)
In meinem generierten Lizenzschlüssel steht die E-Mail, eine Kombination aus Rechten und eine Prüfsumme.
Dies wird mittels Cipher verschlüsselt.
Und Base64Encodiert.

Das ist alles in einer Datei gespeichert. Die kompletten Daten.
Wenn nun Berechtigungskombinationen hinzukommen, ist es aufwändig auch alte Lizenzen gültig zu halten.
Die E-Mail-Adresse ist nicht mehr änderbar. Ändert der User also seine E-mail auf der Seite, kann es bei Online-Funktionen der Anwendung zu Fehlern kommen. Denn bei Online-Funktionen werden die aktuellen Programm-Account-Daten mit dem Internet abgeglichen.

Was ich suche ist ein anderer Weg. Bin da sehr unschlüssig, was ich eigentlich suche, deswegen Frage ich euch.
Jeden Hinweis, wie man so etwas macht nehme ich dankbar auf :)

greetz
SLi
 

quivadis

Aktives Mitglied
Hallo sliwalker,

du möchtest also etwas programmieren, wo sogar die Musik- und Filmindustrie und auch die Softwareindustri scheitert. Die haben da schon ein paar Milarden Euro verpulvert. Auch wenn sie da einen Kopier und Abspielschutz bauen wollten.
Wenn ich Dich richtig verstanden habe planst du auch sowas. Ich denke mit Java wird das eh nix, da ja fast der Quelltext beiliegt. Konzentriere Dich lieber auf das eigentliche Programm, oder mache gleich eine Webservice, da sollte es funktionieren.
Denke immer daran du bsit allein, und Kämpfst gegen viele.

Mir fählt jetzt aber auch keine bessere Lösung ein als die, die du schon umgesetzt hast, schließlich soll Dein Programm ja auch noch benutzbar bleiben.

Ich würde es so lassen, oder es ganz vergessen.

Quivadis
 

sliwalker

Top Contributor
Hi,

danke für Deinen Beitrag.
Es ist mir bewusst, dass mein Vorhaben keine Garantie geben wird. Aus Deinen genannten gründen schon nicht.
Soll es auch nicht sein.

Gar keine Lizenzsierung einzubauen macht es für nicht fachkundige Nutzer jedoch zu einfach. Wer das Programm nutzen will und isch auskennt, wird eh einen Weg finden, das ist mir bewusst.
Jedoch möchte ich dennoch etwas derartiges einbauen, um zumindest 80% der Nutzer davon abzuhalten.
Die Notwendigkeit einer Online-Registrierung macht die Sache da noch ein wenig einfacher. Aber das programm soll eben auch lokal nutzbar sein und das nicht für jeden.

Hat jemand damit schon einmal Erfahrungen gesammelt?
Alles was ich bislang kommerziell mal umgesetzt habe, hatt mit einer Beschränkung auf datenbankeinträge zu tun und ist hier nicht angebracht, weil keine Datenbank.
 

Noctarius

Top Contributor
Von Alladin gibt es USB-Hardware Dongle. Ich mein mich erinnern zu können, das diese damals auch Java Connectoren dabei hatten. Würde mich dort mal umschauen.

Die HASP-HL Dongle haben auch eine Hardware basierte Entschlüsselungslogik zum Echtzeitentschlüsseln von Software. Kannst also deine Applicationslogik ansich verschlüsseln. Nachteil (wie weit der noch gilt keine Ahnung): es gab eine Weile einen HASP-HL Softwareemulator.
 

sliwalker

Top Contributor
Ok danke für den Tipp.

Aber soweit möchte ich nicht gehen. Es ist ein privates Projekt das ich rudimentär sichern möchte.
Durch eine ganz simple Lizensierungstechnik. Ein USB-Dongle geht eindeutig zu weit.

Aber trotzdem Danke :)
Kann man für etwas anderes mal im Hinterkopf behalten.
 

quivadis

Aktives Mitglied
Die Schwierigkeit besteht ja gerade darin, zu verhindern das ein schon registriertes Programm einfach so kopiert werden kann. Oder ist es von Dir aus erwünscht, dass das funktionieren soll?

Mal ein paar Gedanken dazu:
Du musst den Schlüssel entweder an die Harderware des Rechners anpassen, da spielt die E-mail kein Rolle.
Quassi so wie bei Win-Xp.

Oder du musst Dir in Deiner Datenbank merken, wem du wann welchen Schlüssel gegeben hast. Das Programm müsste in Gewissen abstanden, mit deiner Datenbank einen Schlüsseltausch machen. Du musst Dir halt noch überlegn in welchen zeitlichen Abständen das passieren soll und was passiert, wenn der Zeitpunkt gekommen ist, das Programm aber keine Internetverbindung hat.

Was bessere fählt mir nicht ein.

Alle Lösungen die ohne Deinen Server funktionieren sind ja von Dir nicht gewollt, da du ja die Kontrolle behalten willst.
Der Austausch der Schlüsselpaare kannst du ja verschlüsselt machen.
Kannst ja versuchen die Regiestrierung zeitlich zu beschränken, wenn du die E-mail im Schlüsselpaar dynamisch machst, kann sie ja gewechselt werden. Musst Dir dann aber ein anderes Merkmal merken, damit es eineindeutig bleibt.

Quivadis
 

Noctarius

Top Contributor
Das einzig funktionierende System benutzt Steam / Halflife. Hier wird zur Laufzeit der Schlüssel als benutzt gekennzeichnet. Versucht ein zweites System GLEICHZEITIG den Key zu benutzen wird abgeblockt. Damit kannst du das Spiel zwar auch massig Rechnern gleichzeitig installieren, spielen lässt sich aber nur an einem.

Praktikabel ist sowas aber nur bei Software, welche auf Grund ihrer Funktion, sowieso eine Internetverbindung voraussetzt.
 

sliwalker

Top Contributor
Hi,

nochmals Danke für deine Antwort Nocarius.

Ich formluiere es nochmal, weil es zu unverständlich zu sein scheint.

- Ich brauche kein 100%iges System!
- Ich ziele nicht darauf ab, ein gänzlich sicheres System zu entwickeln.
- Wenn sich jemadan gut auskennt, wird er es "cracken" können.
- Die Wahrscheinlickeit ist gering, da das programm nur begrenzten Leuten überhaupt angeboten wird.

- Ich brauche eine Account-Serial Bindung (rudimentär). D.h. ich habe Lösungen, um einen Account an einen Serial zu binden. Dies geschieht per Online-Zugriff. Dort vergleiche ich Accountdaten und sende eine Antwort, ob die Daten kongruieren. Der mitgesendte Serial wird zu der E-Mail eingetragen. E-Mail deshalb, weil sie eindeutig ist...von Grund auf.

Das Problem an sich sind lokale Accounts. Eben jene, die niemals Online gehen. Dort kann man "mogeln" bzw. cracken. Es immer immer möglich ohne Onlinezugriff Programme zu cracken. Von Könnern ist mir das egal. Aber ich biete die Software nicht aus den Problemen der Programmierung heraus von Grund auf ohne Serial an.

Deshalb ein rudimentäres Verfahren, dass eine grobe Absicherung, auch im lokalen Bereich, schafft.
Meine Umsetzung habe ich ja geposted, ich hätte gedacht, jemand hat ein "Pattern" für mich auf Lager, wie sowas meistens gelöst wird.

Ich habe meine Variante noch einwenig modifiziert.
Es können zwar noch Berechtigungskombinationen in Zukunft hinzu kommen. Aber derzeit sage ich dazu GANZ unprofessionell. Darum kümmere ich mich dann!

Entweder bekommen alle einen neuen Serial oder ich bekomme es unter einen Hut. :)
Trotzdem interessiren mich natürlich weiterhin eure Ratschöäge...
 

Noctarius

Top Contributor
Also brauchst du einen simplen Key Algorithmus? Wie wär's einfach 2 UUIDs miteinander zu kombinieren und in der DB an nem Account zu hängen? :D
 

Drake

Bekanntes Mitglied
Hi

immer dieser Ärger mit Anwendungen die auch offline funktionieren sollen. :)

Folgende Möglichkeiten bieten sich (u.a. ergänzend zu bereits genanntem) :

1 a Seriennr., validierung durch Anwendung
b Seriennr., validierung durch Anwendung, komplette Freischaltung erst nach erfolgter (online) Aktivierung und Generierung von hardware gebundenem key (s. win xp, ps)

2 Dongle

Ergänzend kann man noch einen weiteren hashwert berechnen und diesen im Lan verfügbar machen, d.h. findet die Anwendung beim Start zufällig den eigenen hash im Netz, kann diese ihren Dienst quittieren (ich glaub poser macht es so ähnlich).

Meiner Meinung nach sind aber wichtige Fragen noch nicht gestellt / beantwortet worden.
Auf welchen wegen soll deine Software verteilt werden, z.B. reiner onlinevertrieb ? (wirklich relevant für erlaubte 'Beschneidung' des Nutzers).
Zielgruppe, privat oder gewerblich, oder gleich zwei Probleme auf einmal. Endverbrauchern werden immer so viele Rechte zugesprochen, welche sich nur schwerlich umgehen lassen, bei Unternehmen dagegen lässt sich zumindest die Art und Weise der Nutzung wesentlich genauer formulieren.

Abschließend noch ein Gedanke, in wie weit rechnet sich dein Aufwand / Unmut des Kunden im Vergleich zum Nutzen? Einzige relativ sichere Variante ist der Dongle, für jede andere Idee, mal den Zeitaufwand der implementierung notieren und rechts daneben einfach mal aufschreiben, was einem in einer einzigen 1/4 Std. zur Umgehung einfällt. Natürlich könnte man jetzt anführen, dass Otto-Normal-User nicht soweit denkt, aber hey, seid wann muss dieser deine Software selber knacken? Im worst case muss der keygen zwei nummern generieren und der user gebenenfalls noch Dateien ersetzen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I BLOB / CLOB und Hibernate... Ratschläge benötigt Java Basics - Anfänger-Themen 10
G Datentypen Tipps, Ratschläge erwünscht bzgl. Datentyp bestimmen über Wertebereich Java Basics - Anfänger-Themen 5
R Umsetzung von Formel Java Basics - Anfänger-Themen 2
D Budget Manager fragen zur Umsetzung Java Basics - Anfänger-Themen 9
E Umsetzung von Mehrfachvererbung in Java Java Basics - Anfänger-Themen 8
D [Concurrency/Threads] Code Umsetzung Schriftlich Java Basics - Anfänger-Themen 2
C Hilfe bei der Umsetzung Java Basics - Anfänger-Themen 1
R Tipps zur umsetzung eines Musters mit for-schleife Java Basics - Anfänger-Themen 1
kaoZ Input/Output Umsetzung einer Klasse Java Basics - Anfänger-Themen 8
U Serialisierung Probleme bei Umsetzung Java Basics - Anfänger-Themen 26
Z Switch umsetzung Java Basics - Anfänger-Themen 6
C OOP Umsetzung des MVC Java Basics - Anfänger-Themen 3
A Grafische Umsetzung von Aktienkursen Java Basics - Anfänger-Themen 2
eXistenZ Java-Boon kommt nicht zurrecht mit der Umsetzung einer Aufgabe... Java Basics - Anfänger-Themen 7
M JavaSpiel ohne grafische Umsetzung Java Basics - Anfänger-Themen 3
S Umsetzung von verschiedenen Anweisungen Java Basics - Anfänger-Themen 8
A Grafik2d Objekte drehen, Idee da, Problem in Umsetzung Java Basics - Anfänger-Themen 3
P Lagerverwaltung umsetzung Java Basics - Anfänger-Themen 10
L Falsche Umsetzung von MVC, brauche Hilfe Java Basics - Anfänger-Themen 6
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
D 2 ArrayListen gleich sortieren bzw. eine Liste anhand einer anderen Sortieren Java Basics - Anfänger-Themen 6
ixChronos Letzten 4 Ziffern einer großen Zahl ausgeben Java Basics - Anfänger-Themen 3
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
L Variablenwerte aus einer Methode übergeben Java Basics - Anfänger-Themen 2
E Arrays in einer ArrayList miteinander vergleichen Java Basics - Anfänger-Themen 12
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
Shadowrunner Variablen Gibt es eine Möglichkeit die Ziffern/Stellen einer Zahl fest zu legen? Java Basics - Anfänger-Themen 3
D remove Object von einer Liste von Obejcts Java Basics - Anfänger-Themen 3
FunkyPhil94 Wert in einer Lambda Funktion erhöhen Java Basics - Anfänger-Themen 3
T Aufruf der Methode einer Oberklasse, wenn sie in der Unterklasse überschrieben ist. Polymorphie. Java Basics - Anfänger-Themen 2
B Kommunikation mit Seriellen Schnittstellen + Integration einer lib Java Basics - Anfänger-Themen 1
A Daten aus einer HashMap aus einer DB speichern und mit neuen Werten vergleichen Java Basics - Anfänger-Themen 8
P Welches SDK für das erstellen einer ausführbaren Datei? Java Basics - Anfänger-Themen 4
D Länge einer Liste aufrufen. Java Basics - Anfänger-Themen 19
J Klassen Instanzen einer Klasse in einer anderen unabhängigen Klasse nutzen Java Basics - Anfänger-Themen 4
B Alle Strings bis zu einer Maimallänge aufzählen, die Bedingung erfüllen Java Basics - Anfänger-Themen 13
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
Soranix Erste Schritte Struktur als Anfänger // Von einer Klasse auf ein Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 6
MoxMorris Wie macht man String[] = String[] aus einer anderer Methode? Java Basics - Anfänger-Themen 18
T Fibonacci mit einer Hilfsmethode berechnen Java Basics - Anfänger-Themen 10
S Hilfe zu einer Aufgabe Java Basics - Anfänger-Themen 5
M Radius von einer ellipse bestimmen Java Basics - Anfänger-Themen 7
Say Fehlenden Code finden in einer while-Schleife? Java Basics - Anfänger-Themen 11
M Zufallszahl generieren mit einer linken und rechten Grenze Java Basics - Anfänger-Themen 3
N Was Passiert mit dem Namen einer Variable, wenn man diese einer Liste Hinzufügt Java Basics - Anfänger-Themen 16
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
W String einer Textdatei in einzelne Stringobjekte pro Zeile aufteilen Java Basics - Anfänger-Themen 14
W Objekte einer ArrayList in txt-datei schreiben mit Paths? Java Basics - Anfänger-Themen 2
S Best Practice Fragen zu Projektstruktur einer Datenbank-Abfrage-App (MVC) Java Basics - Anfänger-Themen 13
T Variable von Objekten in einer Methode überprüfen Java Basics - Anfänger-Themen 26
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
S Textausgabe in einer For-Schleife Java Basics - Anfänger-Themen 12
M Spezifischen Wert einer Zeile aus .txt Datei entnehmen Java Basics - Anfänger-Themen 15
B Popups mit Klicksabfangen zumAusfüllen einer .ods Datei Java Basics - Anfänger-Themen 0
M RandomAccessFile int und String gleichzeitig in einer Datei Java Basics - Anfänger-Themen 49
E Suchfunktion in einer Liste Java Basics - Anfänger-Themen 39
T ungeordnete Werte-Paare in einer Liste Java Basics - Anfänger-Themen 7
FireHorses Einen Command erst nach einer Chateingabe aktivieren Java Basics - Anfänger-Themen 1
frager2345 Singleton-Muster Java ->Nur eine Instanz einer Klasse erzeugen können Java Basics - Anfänger-Themen 45
F wie kann ich die Position des letzten Vokals innerhalb einer Zeichenkette ermitteln? Java Basics - Anfänger-Themen 5
H Kapselung protected aber in einer Kindklasse nicht zugänglich Java Basics - Anfänger-Themen 5
R Methoden Werte einer ArrayList als Parameter übergeben. Java Basics - Anfänger-Themen 4
B Den Dateipfad einer Java Datei durch Code in Selbiger finden? Java Basics - Anfänger-Themen 10
LilliCherry Array in einer Zeile ausgeben Java Basics - Anfänger-Themen 6
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
L Dauerhaftes Speichern einer Eingabe bei einer ArrayList Java Basics - Anfänger-Themen 26
V Hilfe bei Implementierung einer boolean Methode Java Basics - Anfänger-Themen 6
G Position einer unbekannten 3-stelligen-Zahl in einem String finden Java Basics - Anfänger-Themen 15
stormyark Fehler beim überschreiben einer Variable Java Basics - Anfänger-Themen 1
H Kompliziertes Sortieren einer ArrayList mit Objekten(Sortieren nach X und Y) Java Basics - Anfänger-Themen 11
T Permanentes speichern von Objekten in einer ArrayList Java Basics - Anfänger-Themen 6
Saiko Zeilen einer Datei einlesen Java Basics - Anfänger-Themen 3
H Erste Schritte Nach einer Zahl n soll n Mal der String untereinander ausgegeben werden Java Basics - Anfänger-Themen 3
G zwei Instanzen einer Klasse Java Basics - Anfänger-Themen 29
sserio Prüfziffer einer ISBN Nummer herrausfinden. Java Basics - Anfänger-Themen 14
J Benennung einer mir unbekannten Java - Ausdrucksweise Java Basics - Anfänger-Themen 5
LFB In einer For-Schleife alles in einer Zeile ausgeben Java Basics - Anfänger-Themen 14
sserio Wie kann man nach einer Klasse fragen? Java Basics - Anfänger-Themen 12
berserkerdq2 Wann soll ich den Stream schließen, wenn ich das in einer Methode habe? Java Basics - Anfänger-Themen 8
berserkerdq2 Wie gebe ich den Pfad zu einer Datei an, die in einem Ordner in Eclipse ist? Java Basics - Anfänger-Themen 1
M Variable in einer Schleife initialisieren Java Basics - Anfänger-Themen 46
D EinMalEins mithilfe einer for-Schleife und Array Java Basics - Anfänger-Themen 1
J int innerhalb einer Datei ändern Java Basics - Anfänger-Themen 1
D Hilfe bei einer Aufgabe mit for-Schleife Java Basics - Anfänger-Themen 6
Neuling47 Ich zerbreche mit den kopf an einer Aufgabe Java Basics - Anfänger-Themen 61
H Mit setter-Methode JLabel in einer andern Klasse ändern. Java Basics - Anfänger-Themen 40
J Zelleninhalt einer Jtable löschen Java Basics - Anfänger-Themen 2
Robert_Klaus Hamster java Simulation Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
stormyark 4 Bit in einer for-schleife funktioniert nicht Java Basics - Anfänger-Themen 3
F Werte in einer Arraylist Zählen Java Basics - Anfänger-Themen 2
M ArrayList mit einer Schleife befüllen Java Basics - Anfänger-Themen 2
A Ein Array bearbeiten und in einer anderen Methode nutzen Java Basics - Anfänger-Themen 6
A Ergebnis einer Methode bei einer anderen verwenden Java Basics - Anfänger-Themen 13
I Interface von einer EJB Klasse, um Code zu reduzieren Java Basics - Anfänger-Themen 1
M Interface als Parameter einer Klasse Java Basics - Anfänger-Themen 8
I Liste von Infos von einer eigenen Annotation in Liste speichern Java Basics - Anfänger-Themen 0
M Wie kann ich den Index i von einer LinkedList überprüfen? Java Basics - Anfänger-Themen 36
M Wie kann die Implementation einer Methode den Wert eines Attributs vermindern? Java Basics - Anfänger-Themen 3
M Wie verknüpfe ich eine Bedingung mit einer Methode ohne if-Verzweigung & Bedingungsoperator? Java Basics - Anfänger-Themen 2
P Doppelte werte in einer Liste zählen Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben