(Portabel) rechnereindeutige Hardwareinfos erhalten?
-
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?
-
http://de.wikipedia.org/wiki/X.509
Du hast einen privaten Schlüssel, mit dem erstellst du das Lizenz-File. Im Programm ist der öffentliche Schlüssel, welcher das File entschlüsselt und die darin vorhandenen Daten verwendet. Niemand anderes kann somit Lizenz-Files erstellen, da sie den privaten Schlüssel nicht haben.Grüssli
-
Okay, verstehe, das klingt eigentlich gut. Würdet ihr dem Benutzer diese Datei dann zusenden und er muss die in seinen Ordner stecken? Klingt aber nicht so gut automatisierbar. Und ich brauche irgendeine freie Bibliothek, die mir solche Dateien erstellen und lesen kann... Könnt ihr da was empfehlen?
-
Daten signieren + Signatur checken geht recht einfach mit der Crypto++.
Ein Beispiel wie man damit Daten signiert und die Signatur checkt findest du z.B. hier:
http://www.cryptopp.com/wiki/SignerFilter
-
Das sieht sehr gut aus, vielen Dank! Wobei ich die Lizenz nicht verstehe. Was genau ist denn jetzt nicht General Public? Ich habe mir ein paar Header der Bib angesehen, dort steht jedenfalls nichts von zusätzlicher Lizenz.
Und wie würdet ihr diese Datei dann dem Nutzer zukommen lassen? Eigentlich hatte ich auch Mal überlegt, dass ich doch jeden Namen auf 20 Zeichen (oder so) vergrößern könnte, dann RSA anwende... dadurch sind dann alle Seriennummern nachher gleich lang. Und dann kann ich solch einen String doch als Seriennummer nehmen, seht ihr darin irgendwelche Nachteile? Es ist halt einfacher für den Benutzer nur den String zu pasten statt eine Datei einzufügen (und Mails mit Dateianhang landen häufiger im Spam).
-
Eisflamme schrieb:
Das sieht sehr gut aus, vielen Dank! Wobei ich die Lizenz nicht verstehe. Was genau ist denn jetzt nicht General Public? Ich habe mir ein paar Header der Bib angesehen, dort steht jedenfalls nichts von zusätzlicher Lizenz.
Nach http://cryptopp.com/#license sind die sourcen von crypto++ public domain.
Nur wenn du die precompiled fassung verwendest (so verstehe ich zumindestens)
ist diese mit einem copyright versehen.siehe auch http://cryptopp.com/License.txt
Soweit ich das verstehe kann diese lib auch problemlos in kommerziellen Projekten verwendet werden.
-
Ja, bei der License.txt ist ja Punkt 6 zu beachten, da versteh ich nicht, wo ich jetzt nähere Infos zu den Teilen kriege.
-
Ich hab schon öfters in kommerziellen Spielen den Hinweis auf crypto++ gesehen, du kannst es denke ich gefahrlos verwenden.