(Portabel) rechnereindeutige Hardwareinfos erhalten?



  • 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?


  • Administrator

    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.



  • Hm... okay. Wobei bei GP ja eigentlich nicht Mal ein Hinweis notwendig ist, oder? Aber ich pack Derartiges trotzdem alles ins About oder irgendwohin, das kostet mich ja nichts.

    Und nochmals die Frage danach, wie ich die Datei verschicke... findet ihr es ok per Mail einfach die signierte Datei anzuhängen und zu sagen "steck das ins Verzeichnis"? Hab ich noch nie gesehen.


  • Administrator

    Zu Punkt 6 der Lizenz:
    http://www.mail-archive.com/cryptopp-users@googlegroups.com/msg05910.html

    Wei Dai schrieb:

    Clause 6 (about patents) was added to satisfy RSA Security's lawyers years ago back around version 1.1. (They were threatening to sue me at one point.) Of course the patent on the RSA algorithm has expired but I'm going to leave that clause there to be safe.

    Eisflamme schrieb:

    Und nochmals die Frage danach, wie ich die Datei verschicke... findet ihr es ok per Mail einfach die signierte Datei anzuhängen und zu sagen "steck das ins Verzeichnis"? Hab ich noch nie gesehen.

    Du kannst ja auch im Programm einen Dialog anbieten, worin man das File auswählen kann. Dort wird es dann auch gleich auf Gültigkeit geprüft und wenn man auf OK klickt, wird es an die richtige stelle geschrieben. Ich würde es jedenfalls nicht so machen, dass der User etwas verschieben muss, wobei ich das schon erlebt habe -> Maple.

    Grüssli



  • @Liczenz:
    Ah, perfekt, danke für den Hinweis. Dann schmeiß ich meine Sorgen vom Balkon. 🙂

    @FileDialog:
    Ja ok, jedoch habe ich auch die Variante noch nicht gesehen. Wäre es da nicht wieder fast einfacher, wenn der Benutzer zur Aktivierung kurz im Programm eine Nummer angibt und dann wird die signierte Datei dort heruntergeladen? Das hat die zertifizierte Sicherheit und für den Benutzer ist es insofern einfacher, als dass er nur eine Nummer eingibt.

    Natürlich sieht das dann wieder nach Online-Aktivierung aus. Das haben Benutzer nicht gern, weil die sich dann überwacht fühlen oder wo ist das Problem dabei? (das wäre jedenfalls mein Problem damit, wobei ich das nicht Mal als Problem bezeichnen würde) Durch den Updater bedingt will das Programm eh immer Internetzugriff. Ich als Nutzer würde es ihm daher auch erlauben, will doch über kostenlose Updates, die automatisch (höchstens zwei Klicks) installiert werden, informiert werden. 🙂

    Aber nicht, dass ihr denkt, ich will jetzt wieder einen Schritt zurückgehen, ich frage mich nur ernsthaft, was den Benutzer weniger stört! Wenn ihr sagt, ne Datei aus der Mail auf den Desktop zu schieben und über FileDialog auszuwählen ist für den Benutzer kein Problem, mach ich das lieber so.



  • Ein Problem mit Onlineaktivierung ist auch, dass ein Anbieter irgendwann vielleicht einfach vom Markt verschwindet. Ein Kunde kauft ein Programm, installiert es nach paar Jahren neu, weil er einen neuen Rechner gekauft hat, will es aktivieren und stellt fest, dass es den Anbieter schon lang nicht mehr gibt und er sein legal gekauftes Programm nicht mehr weiterbenutzen kann.



  • Keine Ahnung, meine Domain gibt es schon seit über 10 Jahren und ich sehe nicht, wieso ich die innerhalb der nächsten Jahrzehnte wegwerfen sollte... aber klar, es ist generell ein Problem.


  • Administrator

    Ein File bietet eine Menge an Unabhängigkeit. Der PC muss nicht mal ans Inet angeschlossen sein. Man kann die Lizenz über einen anderen PC holen und dann rüberschieben. Du könntest dem Nutzer aber natürlich auch mehrere Möglichkeiten anbieten. Vielleicht ist es für gewisse Leute einfacher, wenn es direkt vom Programm runtergeladen wird.

    Grüssli



  • Du kannst auch die Daten vor dem Signieren "normalisieren", so dass das ganze Lizenz-File unproblematisch als Text übertragen werden kann.
    D.h. der User bekommt ne Mail wo ca. sowas drinsteht

    Hallo Blablubb Blabla,
    ...
    viel lustiges trallalatrallali
    ...
    
    ========= License information - copy below this line =============
    
    Name: Blablubb Blabla
    Purchase Date: Dingsenbumms
    ...
    ...
    Key: .....
    
    ========= License information - copy above this line =============
    
    ...
    mfg.
    Ihre Superduper Firma
    

    Dann normalisierst du erstmal alle Newlines, ersetzt aufeinanderfolgende \n mit einem einzigen \n, löscht Whitespace am Beginn und Ende jeder Zeile weg. Wenn du vollen Unicode-Support für den Namen etc. willst bringst du das ganze dann noch in eine der Normalformen.

    Und dann hast du Daten die - ziemlich egal was irgendein Mailprogramm oder Mailserver angerichtet haben könnte - auf's Byte genau dem entsprechen was ursprünglich beim Signieren verwendet wurde.

    D.h. beim Check sollte auch wieder "OK" rauskommen.

    Der User kann das dann einfach aus der Mail rauskopieren und in den Lizensierungs-Dialog reinpasten.


Anmelden zum Antworten