Frage

Mein Unternehmen möchte mit dem Vertrieb einiger von uns entwickelter Software beginnen und möchte den Leuten die Möglichkeit geben, die Software vor dem Kauf auszuprobieren.Wir möchten außerdem sicherstellen, dass es nicht kopiert und an die Kunden unserer Kunden weitergegeben werden kann.

Ein Modell, das wir gesehen haben, besteht darin, eine Lizenz an eine MAC-Adresse zu binden, sodass die Software nur auf einem Computer funktioniert.

Ich frage mich: Was ist eine gute Möglichkeit, einen Lizenzschlüssel mit verschiedenen darin eingebetteten Informationen wie Lizenzablaufdatum, MAC-Adresse und verschiedenen Softwareeinschränkungen zu generieren?

War es hilfreich?

Lösung

Ich würde vorschlagen, dass Sie die gewünschten Informationen im Schlüssel nehmen, sie mit md5 hashen und dann einfach die ersten X Zeichen nehmen (wobei X eine Schlüssellänge ist, die Sie für verwaltbar halten).

Aus kryptografischer Sicht ist es alles andere als perfekt, aber das ist die Art von Bereich, in dem man den geringsten Aufwand betreiben sollte, um einen gelegentlichen Angreifer aufzuhalten – alles, was schneller geht, wird zu einem schwarzen Loch.

Oh, ich möchte auch darauf hinweisen, dass Sie das Ablaufdatum (und alle anderen Informationen, die Sie möglicherweise selbst lesen möchten) auch im Klartext (oder leicht verschleiert) als Teil des Schlüssels angeben möchten, wenn Sie diesen Weg einschlagen - Der MD5 dient lediglich dazu, den Endbenutzer daran zu hindern, das Ablaufdatum zu ändern, um die Lizenz zu verlängern.

Am einfachsten wäre es, eine Schlüsseldatei wie diese zu erstellen ...

# License key for XYZZY
expiry-date=2009-01-01
other-info=blah
key=[md5 has of MAC address, expiry date, other-info]

Andere Tipps

Ich habe sowohl FLEXlm von Macrovision (ehemals Globetrotter) als auch das neuere RLM von Reprise Software verwendet (soweit ich weiß, geschrieben von den Originalautoren von FlexLM).Beide können entweder über die MAC-Adresse oder einen physischen Dongle abgeschaltet werden, können entweder knotengesperrt (nur an einen Computer gebunden) oder „floating“ (jeder autorisierte Computer im Netzwerk kann von einem zentralen Lizenzserver eine Lizenz erhalten) sein bis zu einer maximalen Anzahl gleichzeitig ausgeliehener Exemplare, abhängig davon, wie viel sie bezahlt haben).Es gibt eine Vielzahl flexibler Möglichkeiten zur Einrichtung, einschließlich Ablaufdaten, einzelner unterlizenzierter Funktionen usw.Die Integration in eine Anwendung ist nicht sehr schwierig.Dies sind nur die beiden, die ich verwendet habe. Ich bin mir sicher, dass es andere gibt, die den Job genauso gut machen.

Diese Programme sind leicht zu knacken, was bedeutet, dass es bekannte Exploits gibt, die es Benutzern ermöglichen, entweder die Sicherheit Ihrer Anwendung, die sie verwendet, zu umgehen, indem sie entweder ihre eigenen Lizenzen kürzen, um den Lizenzserver zu fälschen, oder indem sie einfach Ihre Binärdatei patchen, um die Lizenzprüfung zu umgehen ( Ersetzen Sie im Wesentlichen den Unterprogrammaufruf ihrer Bibliothek durch Code, der nur „return ‚true‘“ sagt.Es ist zwar komplizierter, aber darauf läuft es im Wesentlichen hinaus.Auf verschiedenen Warez-Websites werden geknackte Versionen Ihres Produkts veröffentlicht.Es kann sehr frustrierend und demoralisierend sein, vor allem, weil sie oft nur um des Knackens willen interessiert sind und nicht einmal eine Verwendung für Ihr Produkt haben oder wissen, was sie damit machen sollen.(Dies ist offensichtlich, wenn Sie über ein ausreichend spezialisiertes Programm verfügen.)

Aus diesem Grund werden einige Leute sagen, dass Sie Ihr eigenes Verschlüsselungsschema schreiben und das Verschlüsselungsschema vielleicht sogar häufig ändern sollten.Aber ich bin anderer Meinung.Es stimmt, dass die Einführung Ihrer eigenen Exploits dazu führt, dass bekannte Exploits gegen FLEXlm oder RLM nicht sofort für Ihre Anwendung funktionieren.Sofern Sie jedoch kein absoluter Experte für diese Art von Sicherheit sind (was Sie offensichtlich nicht sind, sonst würden Sie die Frage nicht stellen), ist es sehr wahrscheinlich, dass Sie aufgrund Ihrer Unerfahrenheit am Ende eine viel weniger sichere und knackbarere Version schreiben werden System als die Marktführer (so schwach sie auch sein mögen).

Der andere Grund, nicht selbst zu würfeln, ist einfach, dass es sich um ein endloses Katz- und Mausspiel handelt.Für Ihre Kunden und Ihren Vertrieb ist es besser, wenn Sie nur minimalen Aufwand in die Lizenzsicherheit stecken und diese Zeit mit der Fehlerbehebung oder dem Hinzufügen von Funktionen verbringen.Sie müssen sich damit auseinandersetzen, dass das Lizenzsystem lediglich dazu dient, „ehrliche Menschen ehrlich zu halten“, aber nicht, entschlossenes Knacken zu verhindern.Akzeptieren Sie, dass die Cracker sowieso nicht für die Software bezahlt hätten.

Nicht jeder kann diese Art von Zen-Haltung annehmen.Manche Menschen können nachts nicht schlafen, weil sie wissen, dass irgendwo jemand etwas umsonst bekommt.Aber versuchen Sie zu lernen, damit umzugehen.Sie können die Piraten nicht stoppen, aber Sie können ein Gleichgewicht zwischen Zeit, Mühe und Kosten schaffen, indem Sie versuchen, jegliche Piraterie zu stoppen, und Ihr Produkt für die Benutzer besser zu machen.Denken Sie daran, dass die am häufigsten raubkopierten Anwendungen manchmal auch die beliebtesten und profitabelsten sind.Viel Glück und schlaf gut.

Wir haben den folgenden Algorithmus verwendet meine Firma seit Jahren ohne einen einzigen Zwischenfall.

  1. Entscheiden Sie, welche Felder im Code enthalten sein sollen.Bitpack so viel wie möglich.Datumsangaben könnten beispielsweise „Anzahl der Tage seit 2007“ sein, und dann kommen Sie mit 16 Bits aus.
  2. Fügen Sie ein zusätzliches „Prüfsummen“-Feld hinzu.(Sie werden gleich sehen, warum.) Der Wert dieses Felds ist eine Prüfsumme der gepackten Bytes aus den anderen Feldern.Wir verwenden „die ersten 32 Bits von MD5“.
  3. Verschlüsseln Sie alles mit TEE.Verwenden Sie als Schlüssel etwas, das den Kunden identifiziert (z. B.Firmenname + persönliche E-Mail-Adresse). Wenn also jemand einen Schlüssel im Internet veröffentlichen möchte, muss er seine eigenen Kontaktinformationen im Klartext angeben.
  4. Konvertieren Sie Hex auf sinnvolle Weise in einen String.Sie können auch gerade hexadezimale Ziffern eingeben, manche Leute bevorzugen jedoch einen anderen Satz von 16 Zeichen, um es weniger offensichtlich zu machen.Fügen Sie auch regelmäßig Bindestriche oder ähnliches ein, damit Sie es am Telefon leichter lesen können.

Zum Entschlüsseln hexadezimal in einen String umwandeln und mit TEA entschlüsseln.Aber dann gibt es noch diesen zusätzlichen Schritt:Berechnen Sie Ihre eigene Prüfsumme der Felder (ignorieren Sie das Prüfsummenfeld) und vergleichen Sie sie mit der angegebenen Prüfsumme. Dies ist der Schritt, der sicherstellt, dass niemand den Schlüssel manipuliert.

Der Grund dafür ist, dass TEA die Bits vollständig mischt. Wenn also auch nur ein Bit geändert wird, ist die Wahrscheinlichkeit, dass sich alle anderen Bits während der TEA-Entschlüsselung ändern, gleich hoch, sodass die Prüfsumme nicht bestanden wird.

Ist das hackbar?Natürlich!Fast alles ist vorhanden, aber das ist eng genug und einfach umzusetzen.

Wenn die Verknüpfung mit Kontaktinformationen nicht ausreicht, fügen Sie ein Feld für „Knoten-ID“ hinzu und sperren Sie es auf die MAC-Adresse oder eine andere von Ihnen vorgeschlagene Adresse.

Verwenden Sie keine MAC-Adressen.Auf mancher Hardware, die wir getestet haben – insbesondere einigen IBM Thinkpads – kann sich die MAC-Adresse bei einem Neustart ändern.Wir haben uns nicht die Mühe gemacht, Nachforschungen anzustellen Warum Dies war zwar der Fall, aber wir haben bei unserer Recherche recht früh gelernt, uns nicht darauf zu verlassen.

Obligatorischer Haftungsausschluss & Stecker:Das von mir mitgegründete Unternehmen produziert das OffByZero Cobalt-Lizenzierungslösung.Daher wird es Sie wahrscheinlich nicht überraschen, wenn ich Ihnen empfehle, Ihre Lizenzierung auszulagern und sich auf Ihre Kernkompetenzen zu konzentrieren.

Im Ernst, es ist ziemlich schwierig, diese Sache richtig zu machen, und wenn man etwas falsch macht, kann es ziemlich schlimme Folgen haben.Wenn Sie in kleinen Stückzahlen und zu einem niedrigen Preis verkaufen, könnten ein paar Raubkopien Ihren Umsatz ernsthaft schmälern, und wenn Sie in großen Mengen und zu einem niedrigen Preis verkaufen, besteht für warez d00dz ein Anreiz, Ihre Software aus Spaß und wegen des guten Rufs zu knacken.

Bedenken Sie, dass es keine wirklich knacksichere Lizenzierung gibt;Sobald jemand Ihren Bytecode auf seiner Hardware hat, haben Sie die Möglichkeit verschenkt, vollständig zu kontrollieren, was er damit macht.

Ein gutes Lizenzsystem legt die Messlatte so hoch, dass der Kauf Ihrer Software eine bessere Option ist – insbesondere angesichts der Zunahme von mit Malware infizierter Raubkopien.Wir empfehlen Ihnen, eine Reihe von Maßnahmen zur Sicherung Ihrer Bewerbung zu ergreifen:

  • Holen Sie sich ein gutes Lizenzierungssystem eines Drittanbieters
  • Peppen Sie Ihren Code mit bereichsbezogenen Prüfungen auf (z. B.keine globale Variable wie fIsLicensed, überprüfen Sie nicht den Status einer Funktion in der Nähe des Codes, der die Funktion implementiert)
  • Verwenden Sie im Fall von .NET- oder Java-Code eine ernsthafte Verschleierung

Die Firma, für die ich gearbeitet habe, verwendete tatsächlich a USB-Dongle.Das war praktisch, weil:

  • Auf diesem USB-Stick war auch unsere Software installiert
  • Das Programm würde nur ausgeführt, wenn es den (eindeutigen) Hardwareschlüssel findet (jeder Standard-USB-Stick verfügt über diesen, Sie müssen also nichts Besonderes kaufen, jeder Stick reicht aus)
  • Es war nicht auf einen Computer beschränkt, sondern konnte bei Bedarf auch auf einem anderen System installiert werden

Ich weiß, dass die meisten Leute keine Dongles mögen, aber in diesem Fall war es ziemlich praktisch, da es eigentlich für einen besonderen Zweck verwendet wurde Media Player Die von uns ebenfalls gelieferten USB-Sticks konnten somit als Demo genutzt werden beliebig PC, sondern auch und ohne Änderungen in der realen Anwendung (dh den echten Spielern) verwendet werden, sobald der Kunde zufrieden ist

Wir halten es einfach:Speichern Sie alle Lizenzdaten in einem XML (einfach zu lesen und zu verwalten), erstellen Sie einen Hash des gesamten XML und verschlüsseln Sie ihn dann mit einem Dienstprogramm (ebenfalls eigenes und einfaches).

Auch das ist alles andere als perfekt, kann aber einige Zeit halten.

Nahezu jedes kommerzielle Lizenzsystem wurde geknackt, wir haben im Laufe der Jahre viele verwendet und irgendwann werden sie alle geknackt. Die allgemeine Regel lautet: Schreiben Sie Ihr eigenes, ändern Sie es bei jeder Veröffentlichung und versuchen Sie, wenn Sie zufrieden sind, es selbst zu knacken.

Nichts ist wirklich sicher, schauen Sie sich letztendlich die großen Player Microsoft usw. an, sie entscheiden sich für das Modell, das ehrliche Leute bezahlen und andere kopieren werden, geben Sie sich nicht zu viel Mühe.

Wenn Ihre Bewerbung es wert ist, Geld für die Leute zu zahlen, werden Sie es tun.

Ich habe eine Reihe verschiedener Produkte verwendet, die die Lizenzgenerierung übernehmen, und meine eigene Lösung erstellt, aber es kommt darauf an, was Ihnen jetzt und in Zukunft die größte Flexibilität bietet.

Themen, auf die Sie sich bei der Generierung Ihrer eigenen Lizenzschlüssel konzentrieren sollten, sind...

HEX-Formatierung, Elliptische-Kurven-Kryptographie und alle Algorithmen zur Verschlüsselung wie AES/Rijndael, DES, Blowfish usw.Diese eignen sich hervorragend zum Erstellen von Lizenzschlüsseln.

Natürlich reicht es nicht aus, einen Schlüssel zu haben, Sie müssen ihn auch einem Produkt zuordnen und die Anwendung so programmieren, dass sie basierend auf einem von Ihnen erstellten Schlüsselsystem gesperrt wird.

Ich habe mit der Erstellung meiner eigenen Lösung herumgespielt, aber am Ende, als es darum ging, mit der Software Geld zu verdienen, musste ich nachgeben und mir eine kommerzielle Lösung besorgen, die mir Zeit bei der Generierung von Schlüsseln und der Verwaltung meiner Produktlinie sparen würde ...

Mein bisheriger Favorit war License Vault von SpearmanTech, aber ich habe auch FlexNet (kostspielig), XHEO (viel zu viel Programmierung erforderlich) und SeriousBit Ellipter ausprobiert.

Ich habe mich letztendlich für das License Vault-Produkt entschieden, weil ich es viel günstiger bekommen würde als die anderen und es mir einfach mehr zu bieten hat, da wir den Großteil unserer Arbeit in .NET 3.5 erledigen.

Es ist schwierig, eine gute Antwort zu geben, ohne etwas über Ihr Produkt und Ihre Kunden zu wissen.Für Unternehmenssoftware, die an Techniker verkauft wird, können Sie ein ziemlich komplexes Lizenzsystem verwenden, und diese werden damit klarkommen.Für Verbrauchersoftware, die an Menschen verkauft wird, die kaum über Computerkenntnisse verfügen, benötigen Sie ein viel einfacheres System.

Im Allgemeinen habe ich die Praxis übernommen, ein sehr einfaches System zu entwickeln, das die ehrlichen Menschen ehrlich hält.Wer Ihre Software wirklich stehlen will, wird an jedem DRM-System vorbeikommen.

In der Vergangenheit habe ich Armadillo (jetzt Software Passport) für C++-Projekte verwendet.Ich verwende derzeit XHEO für C#-Projekte.

Wenn für Ihr Produkt die Nutzung des Internets erforderlich ist, können Sie eine eindeutige ID für die Maschine generieren und diese zur Überprüfung bei einem Lizenz-Webdienst verwenden.

Wenn dies nicht der Fall ist, denke ich, dass die Wahl eines kommerziellen Produkts der richtige Weg ist.Ja, sie können gehackt werden, aber für die Person, die absolut entschlossen ist, sie zu hacken, ist es unwahrscheinlich, dass sie jemals dafür bezahlt hätte.

Wir haben benutzt: http://www.aspack.com/asprotect.aspx

Wir verwenden in ihrem SDK-Produkt auch einen Funktionsaufruf, der uns eine eindeutige ID für eine Maschine gibt.

Gute Gesellschaft, auch wenn sie offensichtlich keine englischen Muttersprachler ist, da ihr erstes Produkt „AsPack“ hieß.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top