12 Stimmen

Software-Schutz durch Verschlüsselung

Für unsere Software verwenden wir Hardware-Dongles, um die Software zu schützen. Kein Schutz ist perfekt, aber diese kommerzielle Lösung ist bezahlbar und hält ehrliche Menschen ehrlich (wie in einem anderen Thread erwähnt). Der Vorteil ist der 128-Bit-Schlüssel, der "unreadable" auf dem Hardware-Dongle gespeichert ist.

Wir möchten diesen Hardware-Dongle entfernen und mit Software-Schutz beginnen. Grundsätzlich können wir ein kommerzielles Produkt verwenden, aber andererseits wird das auch nicht unknackbar sein. Ich weiß nicht viel über Verschlüsselung und deshalb poste ich das hier. Wie kann ich einen Schlüssel auf einem Windows-Computer speichern, der nicht mit Reflector oder etwas anderem gelesen werden kann? Allerdings sollte ich in der Lage sein, den Schlüssel für die Prüfung des Lizenzcodes zugreifen zu können.

Ich hätte gerne eine einfache Lösung, die nicht einfach durch die Verwendung von Reflector gehackt werden kann.

Oder stelle ich eine sehr dumme Frage?


Vielen Dank für eure schnellen und nützlichen Antworten. Ich möchte keine Lizenzierung über das Internet verwenden, da die Anwendung nicht immer auf verbundenen Computern läuft. Ich werde dann wahrscheinlich mehr Probleme bekommen, als sie zu lösen. Wir werden wahrscheinlich jetzt für eine kommerzielle Lösung gehen. Es scheint, dass der Schutz nicht so trivial ist.

Vielen Dank!!

1 Stimmen

Könnten Sie uns mehr darüber erzählen, welche Art von Verhalten Sie verhindern möchten? Möchten Sie verhindern, dass Leute das Programm ohne Schlüssel starten? Piraten-Installationsversuche blockieren? Etwas anderes? Möchten Sie einen Schlüssel pro Kunde zuweisen oder mehrere Schlüssel, die alle funktionieren, oder einen Schlüssel für jede Kopie? usw.

17voto

Es gibt keine Möglichkeit, den Schlüssel vollständig zu sichern. Wenn es von Ihrem Programm gelesen werden kann, kann es auch von einem anderen Programm gelesen werden.

14voto

Mark Brittingham Punkte 28280

Ich leite ein Softwareunternehmen, das sich seit fast 20 Jahren mit diesem Problem befasst hat. Als Entwickler und Geschäftsinhaber möchte ich Sie zunächst ermutigen, Ihre Ziele etwas zu erweitern. Es ist beispielsweise ein Fehler, Ihr Problem als "Piraterie verhindern" zu definieren. Ihr Ziel sollte sein, den Umsatz zu maximieren.

Das gesagt, gibt es einige Menschen, die Ihre Software einfach nie kaufen werden, aber die sich möglicherweise erhebliche Mühe machen werden, sie kostenlos zu erhalten. Es ist nicht "fair", dass sie eine kostenlose Kopie erhalten, aber es ist weitgehend verschwendete Zeit, viele Ressourcen in den Versuch zu stecken, dies zu verhindern. Tatsächlich "legalisieren" diese Leute oft einfach, um auf unsere Update-Liste zu kommen, Unterstützung zu erhalten oder weil sich ihr Geschäft so weit entwickelt hat, dass sie sich jetzt unsere Lizenz leisten können. In diesen Fällen trägt die ursprüngliche Piraterie letztendlich zu unserem Umsatz bei.

Also, wie Lizenzieren wir?

Wir generieren eine zufällige Lizenznummer bei jeder neuen Installation (eine Nummer zwischen 10K und 99K eignet sich gut). Wir haben dann einen Algorithmus zur Erzeugung einer entsprechenden Nummer (alles nicht Triviale funktioniert). Wir verwenden übrigens eine Zufallszahl, so dass jeder Versuch, die Software auf einem anderen Computer neu zu installieren, zu unterschiedlichen Lizenz-/Match-Nummern führt.

Dann bitten wir die Benutzer, uns anzurufen, um die passende Nummer für ihre Lizenz zu erhalten (das ist wichtig). Die Software prüft die eingegebene Übereinstimmungsnummer und vergleicht sie mit dem auf Benutzerseite generierten Wert. Bei Übereinstimmung wird die Software vollständig aktiviert.

Ich sage, dass es wichtig ist, dass sie uns anrufen, weil wir das als Gelegenheit nutzen, um mit ihnen über ihre Einrichtung zu sprechen, Fragen zu beantworten und sie darüber zu informieren, dass sie es mit echten Menschen zu tun haben. Nur sehr wenige Menschen haben den Mut, anzurufen und eine andere Firma zu imitieren (wir suchen nach ihnen und vergleichen ihre Informationen mit unserer Kaufdatenbank). Beachten Sie, dass unser Paket fast $2.000 kostet, daher sind Telefonanrufe angemessen. Wenn Ihr Paket weniger kostet und einen höheren Umsatz hat, könnten Sie dies per E-Mail tun. Schließlich verwenden wir den Anruf, um den Benutzern mitzuteilen, wie sie Upgrades und technischen Support mit ihrer neuen Lizenz erhalten.

Schließlich speichern wir den Schlüssel in der Datenbank der Anwendung (einer lokal installierten MSDE/SQL Express-Datenbank), sodass jeder Versuch, die App zu kopieren, A) nicht trivial ist und B) eine Menge organisationsbezogener Daten mitbringt, die zuerst die legale Version gekauft haben (was sie weniger wahrscheinlich macht, sie zu teilen). Der Lizenzschlüssel ist verschlüsselt und "aufgeteilt" in zwei verschiedene Schlüssel, die in zwei verschiedenen Tabellen aufbewahrt werden. Ein einfaches "Finde den Schlüssel und gib ihn in die geraubte Version ein" funktioniert also nicht.

Das Fazit? Wenn Sie das gesamte Paket mehr als nur die Software machen, einige grundlegende Schutzmechanismen einbauen und den menschlichen Faktor einführen, sollten Sie sehen, dass Sie nicht die Kosten und Mühen eines Dongles benötigen, um den Umsatz zu maximieren.

0 Stimmen

Aber wenn der Benutzer Ihre Software leicht dekompilieren kann, können sie entweder den Lizenzprüfalgorithmus deaktivieren oder ihn zum Generieren neuer Lizenzschlüssel verwenden. Schließlich sagen Sie, dass Ihre Software den Lizenzcode, den Sie bereitgestellt haben, mit dem "übereinstimmenden Wert, der auf der Benutzerseite generiert wurde", vergleicht. Dies impliziert, dass der Code zur Generierung dieser Lizenzcodes in Ihrem Code vorhanden ist.

5 Stimmen

Sie denken, meine Benutzer können meine Software "leicht dekompilieren"? Die überwältigende Mehrheit der Computernutzer kann kaum Software verwenden. Wahrhaftig würde 99,99% nicht einmal verstehen, was mit "Dekompilieren von Software" gemeint ist. Von den restlichen 0,01% würde sich vielleicht jeder 100. dafür interessieren. Von denen würde vielleicht die Hälfte erfolgreich sein. Ich werde nicht 99,99995% meiner Benutzer beeinträchtigen, um die letzten paar davon abzuhalten, die App zu knacken - das wäre eine furchtbare Geschäftsentscheidung.

2 Stimmen

@Mark Ich stimme im Allgemeinen mit deiner Perspektive überein, muss aber gegen dein Argument "99,99% sind keine Hacker" argumentieren. Entwickler nehmen fälschlicherweise an, dass, da die meisten ihrer Benutzer nicht in der Lage sind zu hacken, die Software gegen Diebstahl geschützt ist. Das eigentliche Problem ist jedoch nicht, dass deine Benutzer die Software brechen, sondern dass ein Hacker die Software bricht und sie für alle verteilt. Das ist ein weitaus häufigeres Szenario. Selbst Benutzer, die nicht geneigt sind, selbst zu stehlen, könnten über die gehackte Version auf einer der unzähligen kostenlosen Download-Seiten stolpern und vielleicht nicht einmal bemerken, dass sie eine gehackte Version verwenden.

4voto

codeinthehole Punkte 8487

Ich habe eine interessante Präsentation darüber gelesen, wie Skype die Aufgabe der Software-Sicherheit durch Verschlüsselung angeht.

2 Stimmen

Es ist ein fantastisches Dokument. Danke für den Link. +1

1voto

Marcin Punkte 46457

Im Grunde genommen musst du eine kommerzielle Lösung verwenden. Der Ansatz hier unterscheidet sich von einem Dongle, und du kannst nicht einfach einen Dongle replizieren.

Stattdessen besteht die Hauptlösung darin, einen Schlüssel zu verwenden, der teilweise aus Informationen über den Computer berechnet wird, auf dem die Software läuft. Keygens, die dasselbe tun, können von Crackern erstellt werden, aber so ist es eben. Sie hätten deine Software einfach patchen können, um nicht nach einem Dongle zu suchen.

0voto

Paul Nathan Punkte 38618

Im Allgemeinen kann Software auf einem nicht vernetzten Computer geknackt werden. Wenn Ihre Anwendung nicht spezialisiert genug ist, dass Piraten geknackte Kopien davon verkaufen können, werden Sie das dort draußen sehen. Eine Lösung, von der ich gehört habe, die anscheinend erfolgreich war, ist selbstmodifizierender Code.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X