Laden...

Lizenzierung / Key / Serial / Seriennummer

Erstellt von killer-gorilla vor 16 Jahren Letzter Beitrag vor 14 Jahren 19.363 Views
K
killer-gorilla Themenstarter:in
14 Beiträge seit 2006
vor 16 Jahren
Lizenzierung / Key / Serial / Seriennummer

Aloha!

Da ich selbst auch etwas länger auf der Suche war und im Forum hier einige Male Beiträge mit mehr oder weniger dem gleichen Problem gelesen habe, nämlich "Wie kann ich meine Software mit einem Key sicher schützen, etc bla bla bla", möchte ich hier einfach mal meinen Vorschlag posten 😁

Eins jedoch vorneweg: Einen wirklich 100% sicheren Schlüssel gibt es nicht!

So, nun zu meinen Überlegungen:

  1. Verifizierung des Schlüssels bei jedem Update !
  2. Updatezeitpunkt bestimmung durch Schlüssel!
  3. Userinformationen im Schlüssel enthalten
  4. und natürlich ein sicherer Schlüssel, den man nicht einfach so ändern kann!

Zu 1)

Jedes Mal wenn der User seine Software auf Updates prüft, findet einen Kommunikation mit einem speziellen Updateserver statt. Bevor jedoch auf das eigentlich Update geprüft wird, werden der Schlüssel, Username, etc. an den Server übertragen und dort mit einer Liste mit allen gültigen Schlüsseln, Usernamen etc. verglichen! Wenn das ganze irgendwie abweicht, sperrt sich das Programm bei dem User und eine Warnung wird an den Hersteller der Software geschickt!

Zu 2)

Man kann nicht manuell nach Updates suchen! Der Zeitpunkt wann die Software eigenständig nach Updates sucht wird durch den Schlüssel bestimmt! Das hat den Vorteli, dass wenn man an eine Firma 5 Lizenzen ausstellt auch wirklich nur 5 genutzt werden können! Wird der Schlüssel illegaler Weise weitergegeben kommt es zu 6 gleichzeitigen Anfragen für Updates - der Update Server bemerkt dies, sperrt alle Usersoftwares mit diesem Schlüssel und schickt eine Warnung an den Hersteller!

Zu 3)
Diese Methode ist nicht wirklich sicher, hemmt jedoch die User zur Weitergabe des Schlüssels!
Hierbei müssen bei der Übergabe des Schlüssels Infos wie Name, Adresse, Telefon genannt werden. Diese Informationen werden im Schlüssel eingebunden und bei jedem Start des Programms im SplashScreen angezeigt!

Zu 4)
So, kommen wir nun zu einen wesentlichen Hauptpunkt: der Schlüssel selbst!

Meine Schlüssel sind folgendermaßen aufgebaut:

aaaaa-bbb-ccccc-ccccc-ccccc-cccc-cccc-ddd

cccc = Userinfos mit Name str ort tel updatezeitpunkt
bbb = länge des gesamten c schlüssels
aaa = (c[x]+c[x+2] ..... (wobei x natürlich frei wählbar ist ^^)) * bbb
ddd = ((quersumme von erstem a bis zum letzten c)/y) + w /// y und w sind frei wählbar - sollte klar sein

die einzelnen infos sind natürlich alle verschlüsselt enthalten.

ein fertiger schlüssel sehe dann beispielsweise so aus (verändert natürlich ^^):
19478-xxxxx-4436401475405448583058-5825856420565628758920-8987878375365868- 80228681898778783-808375778868080-141

Die Schlüssel sind zwar lang, jedoch finde ich, dass dadurch die Software wirklich ausreichend geschützt ist!

So, und nun sagt mir bitte was ihr davon haltet, wo evtl. Schwachstellen sind!
Werde später auch mal ein kleines Programm, was sich noch in Entwicklung befindet, aber schon alle Lizensierungsmaßnahmen bis auf Punkt 1 enthält posten und einen gültigen Schlüssel und ihr könnt ja einfach mal testen, ob jemand einen neuen Schlüssel findet, etc 😁

Freaks in the morning, freak in the evening!
Ain't no other freak like me, that's breaving!

3.170 Beiträge seit 2006
vor 16 Jahren

Hallo,
was passiert, wenn der Rechner des Kunden zu dem festgelegten Update-Zeitpunkt gar keine Internetverbindung hat, oder jemand die Rechner, auf denen er das Programm installiert hat, nacheinander mit relativ großen Zeitabständen ins Internet bringt?
Wenn Du - wie geschrieben - nach gleichzeitigen Anfragen schaust, wäre es besser mitzuzählen wie oft mit einem Key geupdatet wurde der einen bestimmten Updatezeitpunkt enthält.

MfG
MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo killer-gorilla,

zu 1. Ich halte das für ausgesprochen bedenklich. Software zu sperren, weil du als Hersteller meinst, sie sei illegal, ist ungefähr so, als wenn du einen Gegenstand, von dem du meinst, er wäre dir gestohlen worden, einfach an dich nimmst, wenn du ihn zufällig irgendwo siehst. Wenn du dich nämlich irrst (oder was fast noch schlimmer ist: es ist wirklich dein Gegenstand, du kannst das aber nicht beweisen), dann hast du einen Diebstahl begangen! Mit der Sperre greifst du eigennützig und eingenmächtig in die Rechte deiner Kunden ein. Du setzt dich Strafanzeigen und Schadensersatzforderungen aus, wenn du Software unberechtigt sperrst. Was du da vorhast, ist quasi so eine Art Selbstjustiz. Und Selbstjustiz ist bekanntermaßen in Deutschland nicht zulässig.

Ich kann nur dringend davon abraten!

Erst neulich hat Microsoft mit der Windows-Validierung, so dass massenhaft gültige Lizenzen als illegal eingestuft wurden: 12.000 Vista-Installationen fälschlich für unzulässig erklärt und Vistas Validierung ärgert die Kunden. Wenigstens wurden die Lizenzen nicht gesperrt, sondern "nur" ein Reboot durchgeführt, Aero abgeschaltet und ein Hinweis angezeigt.

zu 2. Das halte ich für sehr gewagt. Was ist, wenn es Probleme auf Seiten des Kunden gibt, so dass er das Update mehrfach wiederholen muss? Ich halte es für einen gewagten Schluss, auf dir Unrechtmäßigkeit der Lizenz zu schließen. Ist ist allenfalls ein kleiner Anhaltspunkt. Mal abgesehen davon, dass du den Kunden nicht zwingen kannst, innerhalb einer bestimmten Zeit ein Update durchzuführen.

herbivore

0
767 Beiträge seit 2005
vor 16 Jahren

Original von herbivore
Erst neulich hat Microsoft mit der Windows-Validierung, so dass massenhaft gültige Lizenzen als illegal eingestuft wurden:
>
und
>
. Wenigstens wurden die Lizenzen nicht gesperrt, sondern "nur" ein Reboot durchgeführt, Aero abgeschaltet und ein Hinweis angezeigt.

Windows zurückstufen ist dann aber genauso Diebstahl, wenns unberechtigt ist. Wenn ich für die Ultimate bezahlt hab, will ich die auch ultimativ nutzen.

loop:
btst #6,$bfe001
bne.s loop
rts

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo 0815Coder,

das sehe ich genauso wie du.

herbivore

K
killer-gorilla Themenstarter:in
14 Beiträge seit 2006
vor 16 Jahren

also, das ging ja schnell mit den antworten!

also:

zu der sperre (angesprochen in meinem ersten punkt): statt einer sperre kann man auch nur einen hinweis ausgeben lassen und eine benachrichtigung an den hersteller!
allerdings wüsste ich jetzt nicht genau, so das problem liegt ? wenn am schlüssel nichts verändert wird, (und darauf wird bei der installation hingewiesen, dass veränderungen am schlüssel sowie an registry dateien bzgl dem programm zur sperrung führen können) dann sperrt sich das programm auch nicht (bzw. es wird kein hinweis ausgegeben!) ...

das andere ist der automatisierte update ....
ich weiß leider selbst, dass das ganze auch direkt eine schwachstelle ist, da user vllt nicht immer online sind, und somit keine updates bekommen, allerdings musste ich hier einen kompromiss schließen.
folgende faktoren waren für mich überlegungswert:

  • wieviele leute haben heutzutage fast keine (mehr oder weniger) ständige inet verbindung sobald der rechner auch an ist
  • diese methode ist ziemlich gut zur überwachung der keys, bzw. damit keine falschen keys genutzt werden können

... wenn ich nun diese updatezeitpunkte auf 10 möglichkeinten am tag, und das jede woche setzte, sollte sich doch innerhalb einer woche ein termin finden lassen, an dem der rechner auch online ist! .... natürlich muss man dann die update zeitpunkte auch am besten auf seinen kunden zuschneiden (also wann er wohl am wahrscheinlichsten online ist!) ....

aber wieder zurück zu der verifizierung ....
sperren ist vllt zu hart - ein hinweis an den user und einen an den herteller reichen vllt shcon ... allerdings warum genau, sollte es, ohne das es illegale vervielfältigung (oder wie mans auch nennen mag) sein sollte, zu diesem problem kommen ?!

Freaks in the morning, freak in the evening!
Ain't no other freak like me, that's breaving!

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo killer-gorilla,

allerdings warum genau, sollte es, ohne das es illegale vervielfältigung (oder wie mans auch nennen mag) sein sollte, zu diesem problem kommen ?!

das ist ungefähr die Frage: Warum kann Software Fehler enthalten? Es gibt natürlich unzählige Möglichkeiten, was hier alles schiefgehen kann. Deinen Glauben an die mögliche Fehlerfreiheit eines solchen Systems (gerade in einer vernetzen heterogen Umgebung) muss man schon fast naiv zumindest aber blauäugig nennen.

Davon abgesehen gibt es ja auch Fehlerquellen in der Administration. Es kann z.B. einfach von dem Administrator fälschlich ein gültiger Key als zu sperren markiert werden. Menschen machen Fehler.

Und dann der wichtigste Punkt: Es steht eben nicht dem Softwarehersteller zu, zu entscheiden, ob eine bestimmte Installation illegal ist, sondern den Gerichten. Selbst wenn du der Meinung bist, dass eine bestimmte Installation illegal ist, musst du das erstens beweisen können und dann muss das Gericht auch deiner Argumentation folgen. Nur weil du der Meinung bist, im Recht zu sein, muss das noch lange nicht so sein. Und selbst wenn du im Recht wärst, würde das noch nicht heißen, dass du auch Recht bekommst. Und das ist das einzig ausschlaggebende. Du musst nicht nur meinen, im Recht zu sein, sondern ein Gericht musst das bestätigen.

Du willst doch, dass sich die Leute an die Gesetze halten. Du willst sie ja nachgerade dazu zwingen, sich an die Gesetze zu halten. Wenn sie es tun würden, müsste man nicht über Software-Schutz nachzudenken. Wenn du das aber von anderen verlangst, dann musst du dich aber auch selber an die Gesetze halten (egal ob die anderen es tatsächlich tun oder nicht).

Wenn jemand gegen Rechte von dir verstößt, dann kannst du ihn (im gewerblichen Verkehr z.B. durch eine Abmahnung) auffordern, das zu unterlassen. Wenn er das nicht tut, kannst du mit Klage drohen und wenn das nichts nützt, musst du klagen. Du kannst nicht einfach das Gesetz selbst in Hand nehmen und deine (vermeintlichen) Rechte selbst durchsetzen/erzwingen. Das ist genauso illegal wie Softwarepiraterie oder sogar noch schlimmer.

Also wenn überhaupt, dann kannst du den Mechanismus benutzen, um einen Anfangsverdacht gegen bestimmte Installationen und damit gegen die dahinterstehende Personen zu begründen. Das Gesetz selber in die Hand zunehmen und zu sperren, ist Selbstjustiz und mindestens genauso rechtswidrig, wie die Rechtswidrigkeiten, die du verhindern willst.

herbivore

K
killer-gorilla Themenstarter:in
14 Beiträge seit 2006
vor 16 Jahren

grr naja ok ... wie oben shcon geschrieben reicht es ja auch aus, einfach eine meldung an den user und eine an den hersteller zu schicken, kenntlich zu machen, etc. ....

naja finds irgendwie schade, dass ich eine hilfestellung zu etwas leisten wollte was sich mehrmals ohne konkrete antworten, wie ich finde, in diesem forum finden lässt - und dann erstmal direkt kritisiert (war ja wohl nicht nur konstruktiv ...) wird ...

natürlich bedanke ich mich für den hinweis, das sperrung ebenso illegal ist, allerdings hätt ein einfaches danke, für eine lösung auch mal recht gut getan .... naja lassen wir das ...

haltet ihr das ganze, besonders den schlüssel an sich für sicher ?
oder hat vllt jemand sogar noch ne bessere idee ?

Freaks in the morning, freak in the evening!
Ain't no other freak like me, that's breaving!

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo killer-gorilla,

So, und nun sagt mir bitte was ihr davon haltet, ...

Genau das, worum du gebeten hast, habe ich getan, nicht mehr und nicht weniger. 🙂 Ich halte von deinem Vorschlag nichts, weil ich solche Mechanismen aus prinzipiellen Überlegungen heraus ablehne. Deshalb war ich auch nicht dankbar, auch wenn ich grundsätzlich Engagement für die Community schätze.

Ich habe solche und ähnliche Meinungen hier im Forum auch in den in Frage kommenden Threads schon mehrfach vertreten. Du hättest es also wissen oder ahnen können. 🙂

... wo evtl. Schwachstellen sind!

Es war zwar keine technische, sondern eine rechtliche Schwachstelle, aber das spielt ja keine Rolle. Ich denke trotz allem, dir damit geholfen zu haben. Zumindest habe ich deine Bitte genau erfüllt.

Auch wenn du es schon eingesehen hast, hier noch ein weiteres Beispiel, warum das eigenmächtige Sperren kritisch ist:

Angenommen man lässt seine Software in der klassischen (DVD-)Box in Geschäften verkaufen. Innen in der Box liegen die Lizenzbedingungen, so dass man sie vor der Installation auf all Fälle sieht. In denen steht ausdrücklich, dass die Software nur auf einem Rechner installiert werden darf. Soweit alles super.

Jetzt kauft jemand diese Software und installiert sie zu seinem persönlichen Gebrauch auf seinem PC und auf seinem Notebook. Jetzt kommt dein Verfahren ins Spiel, stellt das fest und sperrt die Software.

Nun kommt die Klage gegen dich, wegen der unberechtigten Sperre und das Gericht stellt fest, dass die Lizenzbedingungen gar nicht Vertragsbestandteil geworden sind, weil sie (innenliegend) erst nach Abschluss des (Kauf-)Vertrags zur Kenntnis genommen werden konnten. Das denke ich mir nicht aus, das ist in Deutschland so, zumindest, dass es zweifelhaft ist, ob die Lizenzbedingungen wirksam geworden sind.

So, nun stehst du plötzlich im Unrecht. Der Benutzer war berechtigt beide Installationen vorzunehmen, da die Lizenzbedingungen gar nicht wirksam vereinbart worden sind.

Es kommt also nicht darauf an, was man meint für Rechte zu haben, sondern welche man tatsächlich von einem Gericht zugesprochen bekommt.

Aus guten Grund ist Selbstjustiz in Deutschland verboten. Es muss bei einem Streit um das Recht eben immer durch einen unabhängigen Dritten bestimmt werden, wer im Recht ist, denn in der Regel fühlt sich jeder der Parteien vorher (und manchmal auch danach noch) im Recht. Es kann also nicht darauf ankommen, ob du dich im Recht fühlst.

herbivore

265 Beiträge seit 2006
vor 16 Jahren

Mir ist eine Schwachstelle aufgefallen. Wenn nun jemand herausfindet, wie der Schlüssel zusammengesetzt ist (v.a. wie das Updatedatum gespeichert ist), so kann man doch einfach nen eigenen Schlüssel mit einem Updatedatum in erst 100 Jahren erstellen. Somit wird der Schlüssel nie kontrolliert und man kann die Software -ohne Updates- nutzen.

-=MasterMax=-

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo MasterMax,

die Software kann man auch einfach ohne Updates nutzen, indem man per Firewall verbietet, dass sie auf das Internet zugreift.

Einen Update-Zwang wird man kaum durchsetzen können. Da gibt es Stand-Alone-Rechner und Rechner im Firmennetzwerk ohne Internetzugang und selbst wenn sie einen hätte, würde die DV-Abteilung wohl kaum zulassen, dass über diese Internetverbindung Updates eingespielt werden.

Das heißt, das Programm muss auch dann weiter funktionieren, wenn keine Updates eingespielt werden.

herbivore

K
killer-gorilla Themenstarter:in
14 Beiträge seit 2006
vor 16 Jahren

@ herbivore:

dein letztes beispiel war dann doch recht deutlich 😁
wie gesagt, man kann das ganze ja auch mit einfachen hinweisen machen und evtl kontaktaufnahmen, je nach situation 😉

@mastermax:

  1. natürlich sollte software auch komplett ohne updates funktionieren und das tuen meine auch in jeden fall! alles andere wäre ein halb fertiges produkt an den markt zu bringen (und nein, ich möchte keine diskusion über m$ anfangen ^^)

  2. natürlich kann man, wenn man jeden key knackt einfach daten und zumindest den key verändert .... das ist mir schon klar, nur ich habe euch ja im grunde beschrieben, wie mein key aufgebaut ist (und ganz oben hab ich sogar noch hingeschrieben, dass es keinen 100%igen Schutz geben kann) und frage damit auch gleichzeitig ob ihr das für sicher genug haltet 😁

Freaks in the morning, freak in the evening!
Ain't no other freak like me, that's breaving!

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo killer-gorilla,

so wie ich es verstehe, soll die Software den Key lesen und auf Korrektheit überprüfen können. Mindestens der Update-Zeitpunkt musst ja sogar im Klartext ausgelesen werden können. Die Schwachstelle bei diesem Vorgehen ist, dass der Code zum Entschlüsseln des Keys im Programm enthalten sein muss und somit der Algorithmus - egal wie komplex er ist -, dem Angreifer zur Verfügung steht. Jeder Angreifer mit Vernunft wird also nicht versuchen, anhand seines Keys das Verfahren herauszubekommen, sondern eben anhand des mitgelieferten Algorithmus. Deshalb ist es eigentlich egal, wie sicher man das Verfahren in sich macht. Jedes Verfahren, das nicht offensichtlich ist, bietet bezogen auf das Angriffsszenario daher ungefähr den gleiche Schutz.

herbivore

K
killer-gorilla Themenstarter:in
14 Beiträge seit 2006
vor 16 Jahren

also kann man den quelltext anhand der fertigen .exe lesen ?!

Freaks in the morning, freak in the evening!
Ain't no other freak like me, that's breaving!

230 Beiträge seit 2007
vor 16 Jahren

Original von killer-gorilla
...ob jemand einen neuen Schlüssel findet, etc

Hi! Der Hacker interessiert sich nicht für den Schlüssel, weil er für die illegale Lizenzerwerbung unerheblich ist! Es sucht nach der Adresse, wo die Schlüsselprüfung stattfindet... HTH - sarabande

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo killer-gorilla,

also kann man den quelltext anhand der fertigen .exe lesen ?!

bei .NET ist das quasi so. Siehe [FAQ] .net Assembly vor Disassembling schützen

Allerdings ist für einen geübten Angreifer der Quellcode entbehrlich. Wichtig ist, dass der Algorithmus ja in dem Programm - in welcher Form auch immer - steckt.

herbivore

664 Beiträge seit 2005
vor 16 Jahren
C
489 Beiträge seit 2007
vor 16 Jahren

Hallo

Du solltest dich doch freuen, dass du das ganze hier anonym gesagt bekommst. Ich konnte auch nicht erkenen, wo jemand unkonstruktiv kritisiert hat. Du hast halt einen Denkfehler gehabt. Das sit nicht schlimm und macht auch nicht alles kaputt. Du musst halt über manche Punkte noch einmal genauer nachdenken. Also steck den Kopf nicht in den Sand, sonder arbeite weiter an deiner Idee.

chrische

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo langalaxy,

ja, und das mit dem Entfernen der Prüfung ist deshalb besonders bitter, weil dann die ehrlichen, zahlenden Kunden den Restriktionen unterliegen, während die Piraten im wahrsten Sinne des Wortes "entfesselt" sind.

herbivore

664 Beiträge seit 2005
vor 16 Jahren

Und genau deshalb bin ich auch gegen (voreilige) Restriktionen. Diese erzeugen meist mehr Schaden (Image, Kundenunzufriedenheit, ...) als durch evtl. illegale Verbreitung entsteht.
Leider ist der Irrglaube in der Industrie noch weit verbreitet (z.B. DRM, etc.)

363 Beiträge seit 2007
vor 16 Jahren

Hi,

bei meiner Diplomarbeit arbeite ich im Prinzip an der gleichen Problematik.
Lizenzierung von Software, vorher war diese Arbeitsplatz gebunden und musste bei einem neuen Rechner immer wieder neu gemacht werden, weil andere Hardware usw.
Meine Strategie gegen "böse" Kunden ist das ich alle mitlogge was für mich wichtig erscheint. Will heißen ich speichere die IP und MAC, von der jeweils Aktiviert wurde und wie oft und wann der Schlüssel verwendet wurde in einer DB.
Wann und ob der Schlüssel dann gesperrt wird, entscheidet der Chef, Rechnung nicht gezahlt oder was auch immer, aber ganz sicher nicht die Software. Man muss sich halt immer vor Augen halten, wo hört Sicherheit auf und fängt die Gängelei des Kunden an.
Für die Leute ohne Internet, gibts von mir nen zeitlich limitierten Offlinecode. Mit diesem kann der Kunde dann sein Produkt innerhalb der Zeitspanne aktivieren.

Das Problem ist halt, online kann man zwar viel machen, aber man kann die Leute nicht zwingen online zu sein, sollte man auch nicht, will ich ja genauso wenig.

Gruß Cookiie

"Hail to the King, Baby!"

0
767 Beiträge seit 2005
vor 16 Jahren

Original von Cookiie
Für die Leute ohne Internet, gibts von mir nen zeitlich limitierten Offlinecode. Mit diesem kann der Kunde dann sein Produkt innerhalb der Zeitspanne aktivieren.

du meinst, der code muss innerhalb von zB 24 stunden eingegeben werden?
und nicht, dass das programm dann nur 3 monate läuft und dann neu aktiviert werden muss?

loop:
btst #6,$bfe001
bne.s loop
rts

L
333 Beiträge seit 2007
vor 16 Jahren

Da ich die relevanten Stichwörter in diesem Thread nicht gefunden hab, traue ich mich, diesen Link zu posten, ohne alle Beiträge gelesen zu haben:

http://www.codeproject.com/cpp/AESProductKey.asp
Product Keys Based on the Advanced Encryption Standard (AES)

Man kann die Benutzerinformationen mit einem privaten Schlüssel zu signieren und als "Product key" rauszugeben. Der Key wird von der Anwendung mit dem darin gespeicherten öffentlichen Schlüssel geprüft. So ist man relativ sicher gegen "Keygens" und Manipulationen am Schlüssel. Der genannte Artikel rät zwar glaub ich von RSA ab, aber ich hab es in einer meiner (noch nicht veröffentlichten) Anwendungen bereits verbaut und es scheint gut zu funktionieren. Ein Schlüssel ist Base64-kodiert z.B. 83 Bytes lang. Abtippen sollte man den nicht mehr, der wird gleich per Zwischenablage in ein Textfeld kopiert.

S
87 Beiträge seit 2008
vor 15 Jahren

Das Thema liegt nun schon eine Weile zurück, aber ich möchte dennoch meine Vorstellungen von einem nutzbaren System andeuten:

  1. Aktivierungsschluessel eingeben (brauch garnicht SO lang sein)

  2. Anfrage mit Schlüssel an den Produkthersteller

  3. Identifizierung des Rechners über die MAC Adresse oder irgendetwas anderes Rechnerspezifisches

  4. Assoziation Key - Rechner in Datenbank speichern

Sollte eine Installation fuer einen neuen Rechner angefordert werden, so kann man diese gleich abweisen. Unter anderem übersteht dieses System auch das Formatieren des Rechners (dies ist der Grund, weshalb ich viele Schlüsselverfahren so scheisse finde). Sollte dennoch eine Neuinstallation (vllt auf einem neuen Rechner) noetig sein. So könnte man beim hersteller anrufen und dies anfordern.

Kritik dennoch erwuenscht

N
98 Beiträge seit 2006
vor 15 Jahren

Das selbe Problem hatte ich vor nicht allzu langer Zeit selbst zu lösen. Man kommt schon nach kurzer Suche zu dem Schluss das ein sicherer Softwareschutz nicht gewährleistet werden kann und je komplexer und "sicherer" man die Software macht desto unbequemer wird es für den ehrlichen Käufer. Eine Software cracken ist doch vielmals einfacher als eine Software zu aktivieren(mit gültigen Key versteht sich).

Ein einfacher Schutz der Software sollte dennoch gegeben sein, die Leute sollen schon daran erinnert werden das sie die Software kaufen sollten.

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo syn87,

Softwareaktivierung ist weniger eine technische Frage. Siehe die Diskussion oben.

Insofern will ich zu deinem technischen System auch nicht viel sagen, außer dass ich so eine Software nicht einsetzen würde. Deine Software würde ja schon dann nicht mehr laufen, wenn eine defekte Netzwerkkarte getauscht werden müsste. Außerdem siehst du in Firmennetzwerken nicht die Netzwerkkarte des Rechners, sondern die des zentralen Routers. Wenn der ausgetauscht werden muss ...

Wie NovemberRain schon sagt:

Man kommt schon nach kurzer Suche zu dem Schluss das ein sicherer Softwareschutz nicht gewährleistet werden kann und je komplexer und "sicherer" man die Software macht desto unbequemer wird es für den ehrlichen Käufer.

Lass besser die Finger davon.

herbivore

3.971 Beiträge seit 2006
vor 15 Jahren

Ich bin dennoch der Meinung, dass in eine Software, die kommerziell vertrieben wird und der Preis über eine bestimmte Betragsgrenze hinweg, dann in der Software ein einfacher Serial-Key eingegeben wird, der anschließend einmalig mit dem Server verglichen wird.

Keinen Sinn macht es für mich, bei Software die weniger als (ich nenn jetzt mal irgendein Preis 😉) 50€ kostet.

So hält man Kleinkriminelle ab, die nur mal was von Cracken von Software gehört haben

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

S
87 Beiträge seit 2008
vor 15 Jahren

Zu meinen oben genannten vorstellungen: Man könnte ja auch auf Basis des Mainboards eine Registrierung vornehmen. Dies wird für gewöhnlich nicht so oft ausgetauscht. Sollte dies trotzdem passieren kann man immernoch bei der Hotline anrufen. Ich möchte an der Stelle auch nochma sagen, dass so ein System natuerlich nur bei Software mit hohen Entwicklungskosten Sinn macht (was natürlich mit der Qualität der Software einhergeht). In Anbetracht dessen halte ich es fuer einen vertretbaren Kopierschutz.

3.971 Beiträge seit 2006
vor 15 Jahren

Eine Kopplung von Key und Hardware/Software halte ich für Unsinn. Wie bereits schon geschrieben wurde, ist der Aufwand das zu Programmieren und der entsprechende Nutzen sehr gering. Große Softwarefirmen, Musik und Filmlabels verschwenden mehrere Millionen €/$ für einen Kopierschutz, der ein Monat später eh geknackt wurde. Mit solchen Kopierschützen ärgerst und vergraulst du nur die Leute, die das Produkt ehrlich erworben haben

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

L
333 Beiträge seit 2007
vor 15 Jahren

Mal vom Aufwand, die Hardware zu identifizieren, abgesehen (vielleicht gibt's da ja ein Windows-API für...), zwei Anmerkungen:

* Dass man anstatt der lokalen, im Computer verbauten Netzwerkkarte irgend einen Router/Switch/sonstwas auslesen würde, halte ich jetzt mal für ne sehr gewagte These. Bis jetzt hab ich mit ipconfig immer noch die MAC-Adresse des lokalen Netzwerk-Adapters rausbekommen, egal wie groß das (nicht) angeschlossene Netzwerk war.

* Anstatt sich auf ein einzelnes Gerät festzulegen könnte man ja auch mehrere alternativ auslesen. Wenn MAC oder Mainboard-Serial-Number oder CPU-Serial-Number oder sonstwas stimmt, ist gut, sonst nicht. Die Gefahr, dass die Hardware dann nicht mehr passt, reduziert sich dann fast auf den Austausch des kompletten Rechners. Da all diese Nummern für sich eindeutig sein sollten, seh ich darin auch keine Schmälerung des Schutzes.

Letztlich scheint es aber wohl zu stimmen: Das Umgehen der Prüfung ist oft einfacher als das Erfinden eines gültigen Schlüssels. Insbesondere bei .NET-Anwendungen. Wer hier noch nie was von Code Obfuscation gehört hat, braucht sich über Serial Keys erst gar keine Gedanken zu machen...

F
10.010 Beiträge seit 2004
vor 15 Jahren

Wie hier schon öfter geschrieben, das ist kein Problem von .NET.
Ich habe mit AFDPRO schon anfang der 90er solche abfragen ausgeschaltet,
deshalb sage ich immer:
"Seht zu, das ihr dem Kunden einen Mehrwert gebt, der ihn dazu veranlasst,
gerne das geld auszugeben."

230 Beiträge seit 2007
vor 15 Jahren

Zu meinen oben genannten vorstellungen: Man könnte ja auch auf Basis des Mainboards eine Registrierung vornehmen. Dies wird für gewöhnlich nicht so oft ausgetauscht.

Hi! Es gibt keinen wirklichen Schutz des geistigen Eigentums in der Programmiererei! Aber die meisten Menschen sind ehrlich und werden den Preis für Deine Software zahlen. Kannst Du einen zeitnahen Support leisten und mit innovativen Ideen Deine Kunden an Dein Produkt binden, wirst Du am Markt bestehen. Ausgetüftelte Verschlüsselungsmechanismen sind reine Zeitverschwendung. Ein einfacher Key ist vollkommen ausreichend. - sarabande

M
16 Beiträge seit 2009
vor 14 Jahren

hi ihr!

muss mich im Moment auch mit Lizensierung ausseinandersetzen und will zu diesem Zweck einen einfach Algorithmus zur überprüfung und generierung von Serials entwickeln....

das ganze sollte ungefähr so funktionieren:

string key = getKey(firstname, lastname);

der key sollte aus 5 blöcken a 4 Zeichen bestehen...

jetzt bin ich aber ein bisschen ratlos wie ich das ganze angehe... habe mir gedacht der erste 4er Block soll aus den input strings generiert werden und die restlichen blöcke über berechnungen in bezug auf den ersten Block bzw. andere Blöcke...

Meine Frage ist jetzt wie ich aus 2 strings unterschiedlicher Länge einen String mit 4 Zeichen bekomme bzw. aus einer z.B. errechneten zahl einen weiteren Block mit 4 Zeichen... ich weiß das dies der eigene algorithmus ist, den es zu entwickeln gilt, aber ich brauch einfach ein paar denkanstöße.... mein Problem ist vorallem die fixe größe des Keys, bei dynamischer Eingabe... evt. is mir auch einfach zu heiß um aufn grünen zweig zu kommen...

hoffe ihr könnt mir ein zwei beispiele vorschlagen...

danke schonmal

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo masterkey,

du kannst aus dem String die MD5 Summe (oder einen vergleichbaren Hashwert) berechnen und schon hast du eine konstante Eingabelänge.

Oder anders gesehen: Allen Hash-Funktionen gelingt es, aus einer beliebig langen Eingabe, eine konstante Ausgabe zu erzeugen. Daran kannst du dich orientieren.

herbivore

3.971 Beiträge seit 2006
vor 14 Jahren

Den Hash-Wert kannst du anschließend in ein lesbares Format konvertieren (5*5 Blöcke, Alphanumerische und numerische Zeichen).

Vorteil der Hash-Funktion, diese ist bereits auf die Gleichverteilung (kleine Änderung, große Auswirkung) und Verweidung von Kollisionen (ungleicher Input, gleicher Output) hinoptimiert.

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

M
16 Beiträge seit 2009
vor 14 Jahren

genau das is mein problem, wie schaff ich diese konvertierung von einem Hashwert in einen z.B. 4er Block?

ich würd den string gern erst in nen hash umwandeln und mir daraus irgendwie einen 4er Block aus alphanumerischen und numerischen zeichen generiern.

sitz n bissl aufm schlauch...

EDIT: weiters werde ich 3 arten von Keys benötigen... einen für das programm selbst, eines für das programm in form einer 30 tages version mit eingeschränkter funktionalität und für jede weitere Erweiterungsfunktionalität einen eigenen Key...

3.971 Beiträge seit 2006
vor 14 Jahren

weiters werde ich 3 arten von Keys benötigen... einen für das programm selbst, eines für das programm in form einer 30 tages version mit eingeschränkter funktionalität und für jede weitere Erweiterungsfunktionalität einen eigenen Key

Das funktioniert mit einem Hash allerdings nicht. Aus einem Hash-Wert lässt sich der Ausgangswert nicht zurückrechnen. Alternativ kann man für sowas die asynchrone Verschlüsselung verwenden (Signierung).

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

M
16 Beiträge seit 2009
vor 14 Jahren

genau das ist mein problem 😃 ich will einen block als hashwert berechnen und den rest aufgrund dieses hashwertes... zur überprüfung der gültigkeit muss ich natürlich den rest zurückrechnen können...

d.h. ich brauche eine möglichkeit z.B. die quersumme des hashs in einen 5er block umzuwandeln und diesen später wieder in die quersumme zurückrechnen zu können

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo masterkey,

genau das is mein problem, wie schaff ich diese konvertierung von einem Hashwert in einen z.B. 4er Block?

sorry, das ist wirklich elementar und damit wirklich keine Frage für das Forum. Mal davon abgesehen, dass du base64 o.ä. verwenden kannst. Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1.1. Auch bei weiteren Nachfragen.

Hallo kleines_eichhoernchen,

Das funktioniert mit einem Hash allerdings nicht. Aus einem Hash-Wert lässt sich der Ausgangswert nicht zurückrechnen. Alternativ kann man für sowas die asynchrone Verschlüsselung verwenden (Signierung).

Das ist ja auch nicht nötig. Wie bei einer Paswortüberprüfung reicht es ja, die Original-Daten zu nehmen und daraus erneut den den Key-zu berechnen und mit dem gespeicherten Key zu vergleichen. In den Original-Daten, die in die Key-Berechnung einfließen, muss dann also einfach die Information enthalten sein, welche Funktionen erlaubt sind.

herbivore

M
16 Beiträge seit 2009
vor 14 Jahren

hi,

sry wenn dir meine fragen zu elementar sind, aber es war auch eher die Frage dahinter ob C# diese Möglichkeit bereits bietet.

dein Ansatz weicht von meinem insofern ab, dass ich im moment nicht davon ausgehe, dass die original-daten bei der validierung des keys zur verfügung stehen, wäre aber durchaus in betracht zuziehen...

masterkey

EDIT: btw. danke für die schnellen antworten

3.971 Beiträge seit 2006
vor 14 Jahren

Das ist ja auch nicht nötig. Wie bei einer Paswortüberprüfung reicht es ja, die Original-Daten zu nehmen und daraus erneut den den Key-zu berechnen und mit dem gespeicherten Key zu vergleichen.

Eine Lizenzprüfung (oder Seriennummern-Prüfung) nur mithilfe einer Hash-Funktion hat den Nachteil, dass man sehr leicht eigene Keys und Lizenzdateien erstellen kann (KeyGenerator) - reicht aber vermutlich für jede kleinere Anwendung vollkommen aus.

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

M
16 Beiträge seit 2009
vor 14 Jahren

hm habs jetz als dummy version so, dass ich den Namen und das Expire Date in nen String pack, den dann ascii encodier, in dem byte array schieb ich bestimmte byte per bitshift und krieg so den key... der umgekehrte weg funktioniert somit ziemlich einfach, wenn man die operationen dahinter kennt...

so hab ich natürlich keys die in bezug auf den Namen unterschiedlich groß sind, so kann ich jedoch den key mit dem namen und dem expire date versehen....

mal guggn...