Frage

Es hat einige aktuelle Beiträge über IP-Sicherheit gewesen und dergleichen, aber keine, die ich, dass speziell einen Algorithmus Adresse finden. In einem meiner aktuellen Projekte haben wir beschlossen, die Route eines Offline-Registrierungsschlüssel-System zu gehen.

ich die meisten unserer eventuellen Nutzerbasis vorstellen wird ehrlich sein, so dass ich glaube nicht, dass wir haben zu viel zu befürchten. Auf der anderen Seite, würde ich lieber nicht den lässigen Cracker erhalten Zugang ohne viel Schweiß und Tränen.

Also, was sind einige Möglichkeiten, wie Sie den Schlüssel erzeugen (und überprüfen)? Hardware-Keying ist höchstwahrscheinlich, weil die Installation Modell ist von einer Samba-Freigabe auf einem Intranet-Server ausgeführt werden. Auch, wie lange soll der Schlüssel sein?

Zweitens: Wie groß ist die Gefahr des Überprüfungsalgorithmus einfach Reflektiert geführt wird, auch wenn es verschleiert wird? Wäre es besser, den Algorithmus in nicht verwalteten Code zu schreiben statt?

War es hilfreich?

Lösung

Meiner Meinung nach ist das Hauptproblem Sie stehen müssen, ist nicht mit dem Registrierungsalgorithmus und Niveau (oder das Fehlen) von Verschleierung.

Es ist vielmehr dies: An einem gewissen Punkt in Ihrem Code kommt es auf einfache binäre Entscheidung - zu laufen oder zu beenden. Hacking nur Ihr System erfordert zu finden und diesen Entscheidungspunkt zwicken.

Alles andere - Verschleierung, starke Unterzeichnung, Manipulationserkennung - orientiert sich dies schwieriger zu machen, aber es kann es nicht machen , die sehr viel schwieriger

.

Andere Tipps

Normalerweise, was Sie tun möchten, ist einige Daten auswählen, die Sie wie im Schlüssel enthalten sein sollen, der es besitzt, und wenn es abläuft, möglicherweise sogar einige kleine Teile des Codes benötigt Ihre Anwendung richtig funktioniert (so dass es schwer zu machen es funktioniert ohne Schlüssel). Verwenden Sie dann ein digitales Signatursystem wie RSA digital den Schlüssel mit Ihrer Firma privaten Schlüssel zu signieren. den öffentlichen Schlüssel mit ausführbaren Datei der Anwendung verteilen. Dann, wenn Sie den Schlüssel zu laden, überprüfen nur die Signatur gültig ist und dann die Daten in dem Schlüssel enthaltenen verwenden. A 1024 oder 2048-Bit-Schlüssel sollten für diese viel sein.

Natürlich, egal wie anspruchsvoll Ihr Code jemand ist immer in der Lage sein, es zu brechen oder um es zu bekommen. So ist die Frage, die Sie sich stellen sollten ist, wie schwierig wollen Sie es machen (unter Berücksichtigung der Tatsache schwieriger Systeme sind härter zu kodieren und für Sie zu halten)? Es gibt einen Punkt des abnehmenden Ertrags, in der Regel, dass ziemlich niedrig ist. Solange das Programm ohne Schlüssel nicht funktioniert, und der Schlüssel ist kompliziert genug, dass man nicht fälscht ein (oder das Ablaufdatum ändern usw.) mit einem Hex-Editor dann sind Sie wahrscheinlich in Ordnung.

Was den Schlüssel aus Refactoring, es in nicht verwalteten writting möglicherweise nicht helfen, wenn sie den Anruf Website töten aus auf nicht verwalteten verwaltet. Eine Option haben Sie mit Verschleierungs wenn Ihr mit Dotfuscator professionell ihre „Manipulationserkennung“ ermöglichen im Wesentlichen sie Ihre Montage markieren, und wenn jemand ändert können Sie Ihren Code zu tun verschiedene Dinge. Natürlich kann der Hacker entfernt dies aber seinen viel mehr Schweiß und Tränen.

Ich habe festgestellt, nur einen Weg, sehr gut zu sperren Code. Fast jede Form von serieller Validierung leicht durch Ihre durchschnittlichen zweites Jahr Programmierer geknackt werden.

So wie ich es getan habe, ist ein Lizenz-Objekt in .NET zu verwenden. In meinem home-grown Lizenzobjekt, liest es eine „Lizenz“ Datei, um herauszufinden, wo „zu Hause“ ist. Diese Lizenz ist eine verschlüsselte Zeichenfolge. Der private Schlüssel für die Zeichenfolge im Lizenz Objekt.

Das Lizenzobjekt ruft dann nach Hause mit einem geheimen Passwort, auch verschlüsselte. Der Server entschlüsselt das Passwort ein und bestätigt es ... auch die IP und den Benutzernamen bei Betrugsuntersuchung anzumelden. Wenn der Server das Passwort bestätigen kann, antwortet er mit einem geheimen Antwort, wieder verschlüsselt, so dass sie nicht gefälscht werden kann. Wenn es nicht validiert werden kann, wird die Verbindung abgebrochen. Keine Antwort gesendet wird, damit die Lizenz Objekt am anderen Ende nicht.

Wenn das integrierte Lizenz Objekt fehlschlägt, wird es automatisch eine Ausnahme aus, um die Anwendung zu zwingen an dem Punkt zu scheitern und Ausfahrt, dass die Lizenz genannt wird.

Es hat mich über zwei Arbeitstagen den Server und die Lizenz Objekt zu schreiben, so ist es ein bisschen wie ein Training, aber kein Hexenwerk.

Wenn Sie einige Beispiel-Quelle wollen, oder weitere Informationen erhalten, lassen Sie es mich wissen. Ich bin froh, Sie zu bekommen, was ich kann.

Sie können einen Blick auf die Antworten auf diese Frage

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