(Portabel) rechnereindeutige Hardwareinfos erhalten?
-
http://www.jagregory.com/writings/rhino-licensing/
https://github.com/ayende/rhino-licensingKommerziell:
http://www.softwareshield.com/Eventuell wäre das ja was.
Wobei aber DRM frei das bessere Feature wäre.
Verschwende deine Energie nicht auf Raubkopierer, denn die sind nicht deine Kunden.
Deine Kunden sind die, die es kaufen.
-
Ich wär mit solchen Nach-Hause-Telefonaktionen vorsichtig -- wenn jemand mal Baumaßnahmen vor der Tür und zwei Tage kein Internet hat, kriegst du damit schon Probleme. Zumal sich die Frage stellt, wie man im Fall des Falles mit einem Verdacht umgeht - am Ende hat ein Cracker aus Russland die Maschine eines Kunden übernommen und sich die Lizenzinfo geholt, oder er hat den Bubi von nebenan drangelassen, dann hast du den falschen an der Hand. Oder du hast nen Bug auf dem Server. So nen Fehler machst du einmal, dann spricht sich das rum, und keiner kauft mehr bei dir. Der Kunde ist König, das steht an erster Stelle. Du solltest den Anschein vermeiden, er müsse sich vor dir verantworten.
Man hat im Raubkopiefall realistischerweise keine sinnvolle Handhabe - seine prospektive Kundschaft zu verklagen, ist kein Geschäftsmodell, und für die tatsächliche Kundschaft gilt das erst recht. Zu wissen, wer wie oft wo deine Software installiert hat, ist daher gar nicht so sinnvoll -- es bist ja nicht du, der hier beeinflusst werden soll, etwas zu kaufen.
Stell Lizenzdateien auf echte Namen aus und zeig sie beim Programmstart an. Schreib groß in den Splashscreen "Lizensiert an Max Mustermann für Privatgebrauch" und pack ne RSA-Signatur dazu, damit das keiner fälschen kann. Dem pubertierenden Kind ist das egal, aber seinen Eltern und erwachsenen Anwendern schlägt so was auf den Magen, wenn es nicht ihr eigener Name ist. Wenn deine Preise fair sind, bringt das eher was als dieser ganze Überwachungsunfug.
-
seldon schrieb:
Ich wär mit solchen Nach-Hause-Telefonaktionen vorsichtig -- wenn jemand mal Baumaßnahmen vor der Tür und zwei Tage kein Internet hat, kriegst du damit schon Probleme.
Erstens würde sich das Programm nicht alle zwei Tage melden - so oft benutzt man es wahrscheinlich gar nicht. Zweitens wäre das nicht sofort ein Problem, schon gar nicht für den Kunden.
seldon schrieb:
Zumal sich die Frage stellt, wie man im Fall des Falles mit einem Verdacht umgeht - am Ende hat ein Cracker aus Russland die Maschine eines Kunden übernommen und sich die Lizenzinfo geholt, oder er hat den Bubi von nebenan drangelassen, dann hast du den falschen an der Hand. Oder du hast nen Bug auf dem Server. So nen Fehler machst du einmal, dann spricht sich das rum, und keiner kauft mehr bei dir. Der Kunde ist König, das steht an erster Stelle. Du solltest den Anschein vermeiden, er müsse sich vor dir verantworten.
Man hat im Raubkopiefall realistischerweise keine sinnvolle Handhabe - seine prospektive Kundschaft zu verklagen, ist kein Geschäftsmodell, und für die tatsächliche Kundschaft gilt das erst recht. Zu wissen, wer wie oft wo deine Software installiert hat, ist daher gar nicht so sinnvoll -- es bist ja nicht du, der hier beeinflusst werden soll, etwas zu kaufen.
Natürlich bietet so ein System keinen Schutz gegen vorsätzlichen Missbrauch. Es ist nur ein Kompromiss, der etwas weniger faul ist als andere Varianten. Man weiß aber zumindest ungefähr, wie viele "russische Cracker" so etwas machen und ob man die Maßnahmen ver- oder entschärfen kann.
Außerdem hat der Kunde etwas "in der Hand". So eine Nummer bindet stärker als ein reines Gewissen allein.seldon schrieb:
Stell Lizenzdateien auf echte Namen aus und zeig sie beim Programmstart an. Schreib groß in den Splashscreen "Lizensiert an Max Mustermann für Privatgebrauch" und pack ne RSA-Signatur dazu, damit das keiner fälschen kann. Dem pubertierenden Kind ist das egal, aber seinen Eltern und erwachsenen Anwendern schlägt so was auf den Magen, wenn es nicht ihr eigener Name ist. Wenn deine Preise fair sind, bringt das eher was als dieser ganze Überwachungsunfug.
Gute Idee, das kommt sogar ohne Überwachungs-Server aus.
-
Dravere schrieb:
LordJaxom schrieb:
2. Habe ich schon erlebt, dass mehrere PCs einer Serie im Auslieferungszustand die gleiche MAC-Adresse hatten (waren in dem Fall MEDION-PCs)
Toll, wenn man mit solchen PCs in einem gemeinsamen LAN unterwegs sein möchte

Allerdings. Hat Stunden gedauert bis wir darauf gekommen sind, die MAC-Adressen zu vergleichen. _Zum Glück_ kann man die im Treiber recht einfach ändern...
-
seldons Idee gefällt mir auch sehr gut.
Dann mache ich Internet-Seriennummer-Check einfach nur, wenn derjenige im Internet ist. Falls nicht, melde ich auch nichts... man kann zwar über Firewall nach Aktivierung die Software vom Internet über Firewall trennen, aber ich will ja den Benutzer bei Offline-Betrieb nicht nerven, richtig?
Key erstelle ich dann irgendwie auf dem Server, Mal schauen. Ich kann den Key ja zusätzlich mit dem Namen des Käufers verschlüsseln. Dann wird Name + Key bei Aktivierung an den Server gesandt, der prüft, ob das übereinstimmt. Dann wird serverseitig bei Übereinstimmung der Key mit einem privaten Schlüssel verschlüsselt, sodass meine Software den mit dem öffentlichen Schlüssel entschlüsselt. Wenn das Ergebnis mit dem Key übereinstimmt, ist die Software aktiviert.
Denn dann müsste der Angreifer zum Aufbau des Proxys ja den privaten Schlüssel kennen, was ja schon Mal nicht reicht. Dann gibt es immer noch andere Sicherheitslücken, aber die ignoriere ich dann eben.
Denkt ihr, das langt?
Edit: Wo genau müsste ich jetzt noch die RSA-Signatur einbauen? Ich könnte den Key vom Server aus natürlich über RSA mit Namen verschlüsseln, aber das macht noch keine Signatur.
-
Eisflamme schrieb:
Denkt ihr, das langt?
Um zu nerven: Ja, auf jeden Fall.
Schutz vor begabtem Scriptkiddie: Ein paar Minuten. Mögliche Einfallstore, die mir direkt einfallen:
- Aktivierte Software kopieren
- Aktivierungscode einfach im Debugger umspringen, den Sprungbefehl dann permanent einpatchen.
- Internetverbindung für deine Software blocken. Das ist selbst bei DAU-Rechnern der Standard, sie müssten deiner Software explizit erlauben, sich überhaupt auszuwählen.
- RSA-Schlüssel in deinem Programm mit eigenem Schlüssel ersetzen, dann die Serverantwort mit dem zugehörigen privatem Schlüssel fälschen.
-
Nerven ist ja schon das Wichtigste. Und Deine begabten Skriptkiddies sind schon keine der Interessenten, glaub ich.
Was sind denn die Standardwege gegen diese vier Tore?
Code mit Debugger umspringen: Den Aktivierungscode kann ich halt an mehreren Stellen einpflanzen. Ist nicht besonders schön im Code, aber na ja.
Aktivierte Software kopieren: Aktivierte Software kopieren geht, wobei ich ja gleichzeitig in Registry und auf Dateisystem was anlegen kann. Da kommt aber das begabte Kiddy auch sofort durch. Da kann ich halt auch nur nerven, indem ich dann doch auf Maschinencode prüfe, was aber (s. drei Seiten Diskussion) ja nicht akzeptiert wird. Aber ich denke, hier reicht es eben doch online die Maschinencodes zu speichern und dann sehe ich halt, dass auf eine Serial sehr viele Anmeldungen laufen. Daraufhin kann ich dann alle per E-Mail verzeichneten Kunden neue Keys geben, wenn ich das System verschärfen will. Macht der gleiche Benutzer wieder Müll, muss ich mir halt bzgl. dem was überlegen.
Internetverbindung: Die auszustellen geht nur nach Aktivierung und dann ist der Drops schon gelutscht.
RSA: Muss man halt auch erstmal in Software finden, aber gut, kriegt Dein Superkiddy natürlich alles hin. Ich kann das einfache ersetzen halt schwieriger machen, indem der Schlüssel dann noch irgendwelchen Anforderungen genügen muss, die nicht RSA-typisch sind. Ich kann auch den md5-hash davon überprüfen oder so, dann muss kiddy den auch finden und ersetzen (und wissen, dass das auch md5 ist; liegt wohl nahe, aber ich kann ja noch einen anderen zusätzlich nutzen oder so)
Würdest Du wirklich so weit gehen?
-
Was soll die Sache mit dem Server? Wenn jemand die Software kauft, schickst du ihm halt ne Lizenzdatei, die dazu führt, dass das Programm im Splashscreen seinen Namen anzeigt. Bisschen Krypto drum, Schlüssel einkompiliert, dann kriegt der Durchschnittsnutzer es nicht hin, das was anderes angezeigt wird, und der Cracker ist unmotiviert, weil man ne Lizenzdatei kopieren kann. Nach Hause telefonieren muss da nichts.
Das macht die Software nicht unkopierbar, aber unkopierbare Software ist schlicht nicht machbar, selbst wenn man seine Kunden nerven will. Was du kriegst, ist der Effekt, dass ein hypothetischer Raubkopierer jedes mal, wenn er die Software startet, zu sehen kriegt, dass sie ihm nicht gehört. Und - was womöglich wichtiger ist - jeder, der ihm über die Schulter schaut, sieht es auch.
Alles, was hier an darüber hinausgehenden Maßnahmen besprochen wurde, halte ich ganz ehrlich für Firlefanz, der nichts bringt, Geld zu betreiben kostet und nach hinten losgehen kann.
-
SeppJs Cracker würde vermutlich den Splashscreen wegjumpen.
Aber seldon, die 30 Tage Nutzung könnte man nun wirklich zu einfach überlisten, das würde auch der Durchschnittsbenutzer hinbekommen. Wie kann ich das ohne Server regeln? WinRAR kauft auch keiner.
Oder die Servermaßnahme würde eben nur für die unlizensierte Version gelten. Sobald der Benutzer den Key eingibt, werden keine Zugriffe auf den Server mehr durchgeführt, was hältst Du davon?
-
Eisflamme schrieb:
Was sind denn die Standardwege gegen diese vier Tore?
Das ist es ja, wieso dieser Thread 5 Seiten im Kreis dreht: Es gibt keine sichere, lokale Schutzmethode. Deine Software müsste auf dem Server laufen und nur das Interface auf dem Client. Das ist dann ziemlich unumgänglich.
Code mit Debugger umspringen: Den Aktivierungscode kann ich halt an mehreren Stellen einpflanzen. Ist nicht besonders schön im Code, aber na ja.
Das kann Scriptkiddie 2.0 automatisiert suchen und finden lassen, denn das ist sowieso Standard in Kopierschützen. Also in denen, die immer ein Tag nach Release geknackt sind.
Aktivierte Software kopieren: Aktivierte Software kopieren geht, wobei ich ja gleichzeitig in Registry und auf Dateisystem was anlegen kann. Da kommt aber das begabte Kiddy auch sofort durch.
Eben.
Da kann ich halt auch nur nerven,
Und wieder willst du nerven, ohne dich zu schützen. Du kannst auch deinen zahlenden Kunden täglich einmal in die Fresse schlagen. Das nervt auch.
indem ich dann doch auf Maschinencode prüfe, was aber (s. drei Seiten Diskussion) ja nicht akzeptiert wird.
Es geht vor allem nicht. Das scriptkiddie fälscht dir die "Maschinencodes" in 5 Minuten, eben weil es keine Maschinencodes gibt. Das ist alles Software. Der DAU wird hingegen genervt.
RSA: Muss man halt auch erstmal in Software finden, aber gut, kriegt Dein Superkiddy natürlich alles hin. Ich kann das einfache ersetzen halt schwieriger machen, indem der Schlüssel dann noch irgendwelchen Anforderungen genügen muss, die nicht RSA-typisch sind. Ich kann auch den md5-hash davon überprüfen oder so, dann muss kiddy den auch finden und ersetzen (und wissen, dass das auch md5 ist; liegt wohl nahe, aber ich kann ja noch einen anderen zusätzlich nutzen oder so)
Kurz: Du kannst prinzipbedingt in einer Software lokal keine Geheimnisse sicher verbergen, bloß den Aufwand zum Finden kannst du erhöhen.
Würdest Du wirklich so weit gehen?
Nein, ich stehe mit den anderen, überhaupt keinen Kopierschutz oder bestenfalls eine Namensregisitrierung einzubauen.
-
Eisflamme schrieb:
SeppJs Cracker würde vermutlich den Splashscreen wegjumpen.
SeppJs Cracker würde alles hinbekommen. SeppJ sagt nichts anderes als seldon auch:
seldon schrieb:
Das macht die Software nicht unkopierbar, aber unkopierbare Software ist schlicht nicht machbar, selbst wenn man seine Kunden nerven will.
Eisflamme schrieb:
Aber seldon, die 30 Tage Nutzung könnte man nun wirklich zu einfach überlisten, das würde auch der Durchschnittsbenutzer hinbekommen. Wie kann ich das ohne Server regeln? WinRAR kauft auch keiner.
WinRAR kauft keiner, weil man den Dialog, dass man das Programm nun kaufen muss, simpel mit den X im Fenster wegklicken kann. Wenn sie das X im Fenster entfernen würden, sehe das bereits deutlich anders aus, da bin ich mir recht sicher.
Aber es würde wahrscheinlich einfach dazu führen, dass mehr Leute z.B. 7-zip einsetzen statt WinRAR. Daher glaube ich, haben die Entwickler von WinRAR bewusst dieses X nicht rausgenommen, weil sie dadurch eine gewisse Bekanntheit erhalten. Und ein Teil der Leute wird sich dann WinRAR kaufen.
Und ich würde wahrscheinlich tatsächlich die Systemzeit nehmen. Kann man ganz einfach umgehen. Aber wie gesagt, einen absoluten Schutz gibt es nicht. Und wer hat schon gerne eine andere Systemzeit? Oder wer möchte immer beim Start des Programmes die Systemzeit umstellen? Und solange nur eine Triallizenz vorhanden ist, schreibst du dies auf den Splashscreen, gleich neben den Namen: GÜLTIG BIS ...

Grüssli
-
SeppJ:
Was heißt hier im Kreis drehen. Ich wollte gerade dazu einschwenken, den Schutz deutlich zu mindern und den Benutzer damit nicht mehr als nötig zu stören, dann kommst Du bei jedem einzelnen Punkt an und sagst mir, dass der unsicher ist. Mir war überhaupt nicht bewusst, dass Du komplett gegen Schutz bist. Das letzte, was ich vor Deinem Skriptkiddy-Gedöns im Kopf hatte, war, dass Du Internetaktivierung vorgeschlagen hattest. Und dass ich weiß, dass nichts unschützbar ist, habe ich auch schon mehrfach gesagt, deswegen beziehen sich Fragen wie "Reicht das?" auf ausreichend hohen Schutz. Wenn Du mir sagen wolltest, dass das sowieso nicht hilft, aber den Benutzer stört (und nicht das Kiddy, was ich meinte), dann würde ich mir wünschen, dass Du das auch explizit sagst, ich wäre dann auf keinen Punkt weiter eingegangen und wir hätten uns beide viel Zeit sparen können.Dravere:
Klar gibt es keinen vollständigen Schutz. Trotzdem würde in meinen Augen >50% der Nutzer ihr Datum einfach zurückstellen, wenn sie die Software dafür länger nutzen könnten. Findest Du eine Internetabfrage des Registrierungsdatums während der Trial-Phase ebenfalls zu störend? Mit Kauf fällt das ja alles weg.Edit: Mrrr... wobei das eigentlich auch zu viel Aufwand ist. Wenn ich das in die Registry schreibe, hilft Neuinstallation nicht und der normale Benutzer sucht glaub ich gerade so eben nicht in der Registry rum. Da ein Updatecheck bei Programmstart geschieht, kann ich dort jedoch trotzdem das Datum abgreifen, außer das Internet ist eben aus... ich denke, das reicht.
-
Eisflamme schrieb:
Mir war überhaupt nicht bewusst, dass Du komplett gegen Schutz bist. Das letzte, was ich vor Deinem Skriptkiddy-Gedöns im Kopf hatte, war, dass Du Internetaktivierung vorgeschlagen hattest.
Ich versuche unabhängig von meiner eigenen Meinung deine Fragen möglichst gut zu beantworten. Du möchtest einen möglichst sicheren Schutz ohne zu großes Nerven. Der aktuelle Stand der Technik ist die Onlinepflicht. Das scheinen viele Leute zu akzeptieren, solange es dafür technische Gründe gibt. Wenn es nur Zwecks Nerven eingebaut wird, gilt Onlinezwang hingegen als der große Satan.
-
Na ja, entweder Du vertrittst Deine Meinung oder eben nicht. Dieser Mischmasch hat mich jetzt etwas irritiert. Aber Du hast es ja gut gemeint, von daher danke für Mühe und Zeit!

Also wenn ich den Namen auf meinem Server (der jetzt nur noch die Serial generiert) mit einem privaten Schlüssel verschlüssel und auf der Benutzermaschine dann mit einem öffentlichen entschlüssele und mit dem Namen vergleiche, sollte das in Ordnung gehen? Oder sollte ich das geschickter lösen? Erzeugt RSA nicht ziemlich lange Schlüssel, wie kann ich da eine gescheit lange Seriennummer erstellen, sodass auch die Rückverschlüsselung noch geht? DES erzeugt ja etwas sehr Kurzes und da ich ja eh nichts schützen kann, würde das doch z.B. reichen. Was denkt ihr?
-
Imho verschwendest du viel zu viel Energie in DRM.
Am Ende wird dein Programm trotzdem auf den einschlägigen Seiten landen, wenn es gut und nützlich ist. Egal was du tust. Die ehrlichen Kunden zu nerven, die dein Produkt bezahlt haben ist der total falsche Weg Eisflamme.
GoG hat das vor langer Zeit verstanden und machen einen riesen Reibach damit ihre Software DRM frei zu verkaufen.
Nur so als Beispiel: Der Witcher 2 wurde zum Release DRM frei verkauft. Auf den Torrentseiten fand man aber nicht die GOG.com Variante, sondern die gecrackte Retail die auf Wunsch des Publishers DRM enthielt.
Gib deinen Kunden einen personalisierten Key, den sie 1x auf deiner Webseite eingeben können und damit Zugang zum Support(forum) haben. Ignoriere den Rest, auch wenns schwer fällt. Wie schon gesagt, verkaufe DRM Freiheit als Feature.
Du wirst am Ende mehr Kunden mit weniger Aufwand haben.
-
Moment Mal, ich bin doch jetzt schon von allem Schutz weg. Ich will doch dem Benutzer jetzt nur eine personalisierte Serial schicken, die er einmalig eingibt und die dann ohne Internetaktivierung (und hier die Frage, wie ich das jetzt geschickt mache) geprüft wird. Dann ist aktiviert und nichts weiter passiert. Ist jetzt auch das zu viel?

Edit: Wobei mir die Idee mit Forenzugriff auch gefällt, aber man muss hier sehen, dass meine Software keine Community nach sich zieht. Und falls doch, ist die frei, denn wenn man frei mitlesen kann, was man mit der Software alles tun kann, aber derjenige die noch nicht hat, ist das doch die perfekte Werbung.

-
Achso, naja ich hab den Flamewar übersprungen :D.
Ne, das geht natürlich in Ordnung wenn du das so willst.Ich würde das mit der Webseite und dem Support dann trotzdem noch machen. So kannst du die Keys gegenprüfen mit einer DB wo alle legitimen Keys drinstehen, ohne den Nutzer damit groß zu nerven und dann Zugang zum Support und Updates gewähren. So kosten dich nur legitime Nutzer Supportzeit.
-
Achso, speziell für das Supportforum! Ja, das finde ich sehr gut.
Wobei mir Bugs sowieso per Mail supported werden, denn wenn ein Benutzer während einer bestimmten Zeit Bugs findet, kriegt er für jeden einen Rabatt von $1 für die Software (bis zu $10).
Hat jemand eine Antwort darauf, wie ich die Serial so erstelle, dass ich sie auch dekodieren und mit Namen gegenprüfen kann? Asymmetrisches Verfahren mit encrypt(Name, private key) nebst decrypt(Name, public key) wäre ja okay, nur welches nehm ich, damit der nicht zu lang ist und noch rückverschlüsselt werden kann? Einfach einer, der mir gerade passt? RSA ist ja wie gesagt sehr lang.
Edit: Oder denkt ihr, es reicht ein einfacher Hash mit eigenem einfachen Algo aus? Dann kann man zwar wieder einfach den Keygen erstellen, wenn man den Algorithmus kennt, aber na ja... Asymmetrische Verschlüsselung ist natürlich besser, nur muss ich dann erstmal wieder die Bibliotheken finden, die mir das sicher ermöglichen...
Seht ihr eine gute Variante, wie ich im Nachhinein das Verfahren ändern kann? Geht ja eigentlich nur durch Invalidierung aller bisherigen Keys und Bitte darum, einen neuen per E-Mail anzufordern bzw. ich schicke denen einfach automatisch die neuen Keys zu... ist aber nicht sehr freundlich.
-
Mach einfach ein signiertes Key File.
Dann ist wurst wie lange irgendwas ist, und du kannst bekannte und vor allem bekanntermassen sichere Algorithmen verwenden.
-
Das sagt mir so nichts. Erstellt man so eine Key File mit irgendwelchen kostenfreien Tools? Soll ich dem Benutzer dann so ein generiertes Ding per E-Mail zusenden? Oder hat jeder die gleiche Key-File und da geschieht noch ein anderer Abgleich?