RSA Verschlüsselung für Aktivierunscode

beta20

Top Contributor
Hallo zusammen,

ich habe mir folgendes ausgedacht für die Aktivierung einer Software.
Zunächst hierzu auch die Frage: ist das Konzept verwendbar?

1) User bekommt eine Serial Key

2) Damit die Software läuft, muss er den Serial Key aktivieren: Hierzu schickt er den Serial Key an einen Webservice auf einem externen WebServer.
Nun wird:
Geprüft: Gibt es den Serial Key.
Wenn ja: Verschlüsselt er den Serial Key mit einem privaten Schlüssel.
Der private Schlüssel kennt nur der Webserver.

Der verschlüsselte Serial Key ist dann mein Aktivierungs Code. Dieser gibt der User dann in der Software ein und wird in der Datenbank gespeichert.


Wie kann ich das realsieren? Ich habe leider keine Beispiele mit dem privaten Schlüssel wirklich gefunden, sondern finde immer nur Beispiele in dem ein Zufallsschlüssel generiert wird.

Bitte um Hilfe.
 
Das ist doch z.B. in Java ist auch eine Insel relativ gut erklärt:
http://openbook.rheinwerk-verlag.de/java7/1507_22_006.html#dodtp44355202-8b70-416d-a198-9553468eed73

Den Key generierst Du natürlich nur einmal und sicherst diesen dann.

Da Du aber wohl Strings haben wirst und kein Stream, musst Du natürlich aus dem String ein Stream machen. Das kannst Du z.B. indem Du etwas machst wie new ByteArrayInputStream(myString.getBytes(charset)).

Und die Frage ist, wie Du das Byte-Array mit den verschlüsselten Daten dann sichern willst, damit Du das ggf. auch als Text übergeben kannst. Da wäre evtl. Base64 als Encoding interessant.

Ich hoffe, dass ich Dir mit den Informationen etwas helfen konnte.
 
Ist die Software dann auch mit dem verschlüsseltem Serial Key verschlüsselt???
Sorry, manchmal übertreibe ich es etwas. 😉
Ich kann mir das noch nicht so richtig vorstellen.
 
Ich erkläre es gerne nochmal - weiß jedoch nicht warum das unfreundlich klang?!
Anyway:

1) Kunde kauft Lizenz
2) Es wird automatisch ein z.B. 25 stellige Serial Key generiert. Die Serial Key wird in einer Datenbank auf einem Webserver gespeichert
3) Kunde erhält eine Email mit diesem 25 stelligen Serial Key

4) Kunde muss die Software nun noch aktivieren
5) Kunde gibt den 25 stelligen Serial Key in eine Maske ein und klickt auf "Aktivieren".
6) Nun wird per Internet ein Webservice aufgerufen, der prüft ob die Serial Key schon in der DB steht. Zusätzlich habe ich vor, dann noch ein paar Infos von dem Rechner, der die Software aktivieren möchte, mitzugeben und die dann zusätzlich in die DB des Webservers zu speichern.

7) Auf dem Webserver wird der Serial Key nun mit meinem privaten Key (der auf dem Webserver sich befindet) verschlüsselt und bildet mir den Aktivierungscode.
8) Der Aktivierungscode wird dann im gleichen Zuge zurück an den PC geschickt, der die Aktivierung vornimmt.
9) Der Aktivierungscode wird dann in die DB der nun aktivierten Software gespeichert.


In regelmäßigen Abständen kann dann von der aktivierten Software eine Methode aufgerufen werden, die auf meinem Webserver prüft, ob die übermittelten PC - Daten (der ja in der DB stehen) mit dem Aktivierunscode noch übereinstimmen. (um sicherzustellen, dass die Serial Key nicht mehrfach verwendet wird).

Ist es jetzt klar geworden?
 
Also ich sehe erst einmal nur eine einfache Nachfrage und keine Unfreundlichkeit. Und prinzipiell ist das Konzept ok. Nur eben sind bei diesen Themen immer die gleichen Punkte, die da einspielen:
a) Sowas ist leicht auszuhebeln. Das kann man natürlich erschweren (So kann man das z.B. mit Tools wie Jar2Exe in eine Binary packen, die nicht mehr ganz so trivial zu entpacken ist - was aber immer noch geht.)
b) Hacker hacken die Applikation immer noch - den Kunden, die bezahlt haben, macht man das Leben schwerer
c) Der Code ist bei Dir immer gleich. Also muss man nur Serial-Code + Aktivierungscode leaken und schon hat man eine Version. Wenn man das alles verhindert durch "online checks" oder so, dann hat man das Problem, dass Kunden, die nicht online arbeiten, Probleme kriegen ...
....

Da gibt es sehr viele Dinge, die da mit einspielen. Die Frage ist daher, wie schützenswert ist etwas? Ist die Gefahr so groß, dass Raubkopien das Geschäft zerstören? (Oft ist dem nicht so. So man gute Qualität und Support bietet wollen Leute das Produkt auch nutzen und geben durchaus Geld aus). Aber da ich keine Details kenne, ist das so nicht wirklich zu beantworten.

Mein Gefühl ist derzeit aber: Da Du ja noch nicht zu tief im Java drin steckst bezweifle ich etwas, dass Du da eine so schützenswerte Sache entwickeln wirst. Statt dich mit diesem Thema zu beschäftigen würde ich die Zeit und Ressourcen lieber in das Produkt selbst stecken. (Aber das ist auch nur ein einfacher Eindruck, der sich bei mir gebildet hat. Ich kenne Dich nicht und kann Dich nicht beurteilen. Daher mag dieser Eindruck auch komplett falsch sein! Und die Position, die ich hier einnehme ist garantiert auch nicht unbestritten. Da gibt es also garantiert auch andere Standpunkte mit vernünftigen Argumenten dafür!)
 

Zurück
Oben