Laden...

Lizenzierungsmechanismus für Program selbst programmieren

Erstellt von sharpType vor 14 Jahren Letzter Beitrag vor 13 Jahren 9.777 Views
S
sharpType Themenstarter:in
228 Beiträge seit 2009
vor 14 Jahren
Lizenzierungsmechanismus für Program selbst programmieren

Hallo an die Profis,

ich möchte bzw habe einen Lizenzierungsalgorithmus für mein programmiertes C#Programm programmiert, bezweifel aber das es sicher ist. Es mag eine Hürde dar stellen, aber ich denke es ist recht unsicher. Aber eine Hürde ist besser als nichts.

Ich möchte es aber selbst programmieren, das ist wichtig. Und würde gerne mal fragen, wie ihr das System findet oder ob ihr ein paar Vorschläge habt es noch sicherer zu machen.

Ich mache es folgendermaßen:

Das nichtlizenzierte Program schickt eine Mail an mich, dort enthalten ist die MACAdresse des freizuschaltenden Rechners. Ich habe ein Program geschrieben das mir eine Textdatei mit AES 256bit verschlüsselt. In der txt Datei packe ich die freizuschaltenden MACAdressen rein. Daraus kommt dann eine verschlüsselte .dat Datei und eine .key Datei mit dem Initialisierungsvektor und dem Key der Verschlüsselung. Die .dat Datei und .key Datei werden an den "Kunden" geliefert und mit diesen beiden Dateien die nur zusammenpassen kann er sein Programm "freischalten". Zur laufwerk wird die .dat entschlüsselt und alle Einträge in eine Collection gepackt (also alle macadressen) und dann wird mit ContainsKey eben überprft ob die aktuelle MACAdresse vom Rechner dort enthalten ist.

Was sagt ihr dazu? Das dumme ist ja einfach, das man net Programme zurückkompilieren kann und in den Code gucken kann! 😦

C
114 Beiträge seit 2008
vor 14 Jahren

Also wenn es dir nur um Disassembling geht, dann nimm noch einen Obfuscator dazu. Das ist zwar auch nur eine weiter Hürde, aber doch eine recht große. Ich persönlich hab nur den Phoenix Protector ausprobiert, aber sonst benutz einfach mal die Suchfunktion.

„Heute back ich, morgen brau ich,
übermorgen cast ich die Königin nach int;
ach, wie gut dass niemand weiß,
dass ich Rumpelstilzchen heiß!“

"Bei Stylefragen sollteste nen Mac-User oder ne Frau fragen."

3.971 Beiträge seit 2006
vor 14 Jahren

(Derzeit) nicht knackbar ist eine Lizenzdatei auf Basis asymmetrischer Verschlüsselung. Du als Herausgeber des Programms verschlüsselst mit dem privaten Key (sign) die Lizenzdatei. Dein Programm hat als Ressource den dazupassenden öffentlichen Schlüssel und kann die Lizenzdatei entsprechend lesen.

Von symmetrischer Verschlüsselung würde ich abraten, da man sich beliebige Lizenzdateien oder Keys erstellen lassen kann (KeyGen).

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo sharpType,

ich würde kein Programm kaufen, das mit meiner konkreten Hardware verdongelt ist. Als Privatekunde nicht und als Firmenkunde erst recht nicht. Was mache ich denn, wenn mir die Netzwerkkarte aufraucht oder aus anderen Gründen gewechselt werden muss? Alle Backup-Strategien einer Firma werden dadurch zunichte gemacht. Selbst das vorhalten baugleicher Ersatz-Hardware nützt nichts mehr. Und wenn sich dann der Programmhersteller weigert mir einen neuen Key zu schicken oder gar nicht mehr schicken kann, weil er pleite ist oder sich aus anderen Gründen vom Markt zurückgezogen hat oder einfach nur das Produkt nicht mehr unterstützt, stehe ich mit meiner legalen und voll bezahlen aber trotzdem nicht mehr laufenden möglicherweise unternehmenskritischen Anwendung blöd da. Alleine schon wenn der Programmhersteller den Key mit einer Verzögerung schickt, kann schon empfindliche Schäden verursachen.

Bestraft werden mit solchen Mechanismen immer nur die ehrlichen Anwender. Die Raubkopierer, die ohnehin eine gecrackte Version einsetzen, sind besser gestellt als der ehrliche Anwender. Das sollte man seinen Kunden bei allem Misstrauen nicht zumuten.

Was ich ok finde, sind Maßnahmen, die den Betrieb der Software nicht einschränken, die es aber ermöglichen zu ermitteln, wer die Software illegal weitergegeben hat. Wasserzeichen oder eine (verschlüsselte) Lizenzdatei mit den Daten des Kunden, die weitergegeben werden muss, damit das Programm startet.

herbivore

EDIT: Siehe auch Software mit Registrierungsschlüssel schützen

T
381 Beiträge seit 2009
vor 13 Jahren

(Derzeit) nicht knackbar ist eine Lizenzdatei auf Basis asymmetrischer Verschlüsselung. Du als Herausgeber des Programms verschlüsselst mit dem privaten Key (sign) die Lizenzdatei. Dein Programm hat als Ressource den dazupassenden öffentlichen Schlüssel und kann die Lizenzdatei entsprechend lesen.

Das stimmt nicht ganz, die Verschlüsselung ist nicht knackbar. Dein Programm jedoch nicht vor änderungen geschützt. So beinhaltet das Programm den PublicKey. Wenn der durch einen Hacker ausgetauscht wird, oder die Verifizierungsmethode übergangen wird, ist auch der Schutz wirkungslos.

Aber es wird an vielen Stellen klar, dass ein 100%iger Schutz nicht möglich ist.

Was ich vermisse ist eine Freie Lösung für die Lizensierung von C# Software. Wenn es nach mir geht sollten die Keys dabei automatisch auf einem Webserver erstellt werden können.
Ich will nicht das sicherste der Welt, auch um das Obfuscaten muss man sich dann noch kümmern, aber eine freie Lösung für (sicherheitstechnisch einfache) Lizensierung wäre schon praktisch.

F
10.010 Beiträge seit 2004
vor 13 Jahren

http://installkey.codeplex.com/

Nur wozu?
Schreibe lieber eine SW die die Benutzer als Wertvoll genug empfinden bezahlt zu werden.
Ansonsten wird deine SW bei der Lizenzaufforderung gleich gelöscht, und nach freier gesucht.

S
443 Beiträge seit 2008
vor 13 Jahren

Falls ich mal ein Lizenzierungssystem haben sollte... würde ich eine FloatingLizenz einbauen welche sagt
5 Benutzer wurden gekauft, 5 dürfen sich anmelden, x User können angelegt sein.
und die Lizenzdatei liegt am Server, in der Datenbank oder am Server selbst ist in diesem Fall irrelevant. Besser in der Datenbank, dann kann der Kunde das Programm schon nicht mehr so leicht weitergeben, da er dann ja auch seinen Daten weitergeben würde.
Gegen Hacker zu schützen ist einen "sinnlose" arbeit, denn wenn einer reinwill kommt einer rein. Obfuscator hält mal schon 90% (inkl. mich) auf und gegen den Rest kann man eh nichts machen also wäre es verschwendete Zeit.

mbg
Rossegger Robert
mehr fragen mehr wissen

Montag morgen ist die beste Zeit um eine erfolgreiche Woche zu beginnen